Académique Documents
Professionnel Documents
Culture Documents
Cryptographie applique
Deuxime dition
Protocoles, algorithmes
et codes cource en C
xiii
xiv
xvii
p ro p o s de l au teu r
x ix
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
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
vii
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
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
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
281
281
286
296
302
. . 311
312
318
321
321
322
325
325
331
332
335
337
338
345
346
347
351
351
354
355
359
361
362
364
364
366
366
372
375
377
377
379
384
384
387
387
388
IX
389
391
391
395
402
403
412
413
413
414
414
416
417
417
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
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
509
509
520
522
523
525
526
527
527
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
IV
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
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
Prface
xv
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.
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.
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.
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 .
Chapitre 1
4
Clef de
chiffrement
Texte en clair
Principes de base
Clef de
dchiffrement
Texte chiffr
Chiffrement
Texte en clair
original
Dchiffrement
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.
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.
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
M i+ 1
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.
1.2
Steganographie
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
1.3
Substitution et transposition
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
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
1.3
Substitution et transposition
13
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
00 0 = 0
001 = 1
10=1
101 = 0
Remarquez les proprits suivantes:
a a= 0
a b b = a
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
Chapitre 1
16
Principes de base
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
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
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
1 r i2 6
annes
j
annes
Premire partie
Protocoles cryptographiques
Chapitre 2
Briques lmentaires
2.1
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.
2.1
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
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.
2.1
21
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.
Chapitre 2
28
Briques lmentaires
2.1
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.
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.
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
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
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
2.5
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.
2.5
Communications laide
dun cryptosystme clef publique
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.
2.5
35
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
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.
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
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 -
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.
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
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.
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.
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
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 )
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.
2.6
Signatures numriques
43
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.
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
2 Alice chiffre le message sign avec la clef publique de Bernard et lui envoie le
rsultat.
E b (Sa ( 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
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.
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 ) )
Chapitre 2
Briques lmentaires
2.8
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
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.
2.8
49
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.
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.
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.
Bernard dchiffre
Alice et Bernard
conversation.
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.
et dchiffre
message
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.
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.
Pour mieux se prmunir contre une attaque de lintercepteur, Alice peut signer
la transmission.
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 )
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
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.
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.
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.
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.
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.
Chapitre 3
60
Protocoles lmentaires
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.
tapes1 3 sontiden
3.3
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
T a b . 3.1
A
B
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
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
63
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.
(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)
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 )
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
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.
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)
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
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 )
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
67
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
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
3.3
69
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))
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
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
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
71
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 .
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
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
3.5
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
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
3.6
Secret morcel
75
T a b . 3 .3
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.
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.
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
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.
3.7
Secret rparti
79
80
3.8
Chapitre 3
Protocoles lmentaires
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
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 )
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.
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
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).
6 Bernard ignore le message innocent et, utilisant la clef secrte quil partage
avec Alice, il extrait le message subliminal.
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.
4-3
4.3
87
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
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
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
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
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.
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
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
Chapitre 4
92
Protocoles intermdiaires
Des dveloppements thoriques et des applications concernant les signatures FailStop sont dcrits dans [1249, 1251, 732, 733].
4.8
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
4-9
Mise en gage
93
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.
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)
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:
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.
(b) soit
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
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
Chapitre 4
96
Protocoles intermdiaires
4-10
97
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
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.
j .l l
Poker laveugle
99
4.11
Poker laveugle
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)
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.
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].
Chapitre 4
102
Protocoles intermdiaires
4.12
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
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
4.14
Dpt de clefs
M lC A U
104
Chapitre 4
Protocoles intermdiaires
4-If
Dpt de clefs
105
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.
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
Chapitre 5
Protocoles avancs
5.1
Chapitre 5
110
Protocoles avancs
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
5.1
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.
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.
Chapitre 5
112
Protocoles avancs
(b) soit
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
4 Patricia s excute :
{a) soit elle prouve que Gi et H sont isomorphes sans prouver que G 2 et H
sont isomorphes ;
5.1
11S
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.
Chapitre 5
U4
Protocoles avancs
(b) soit
5.1
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.
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 ;
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
117
- 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
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
5.2
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.
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.
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.
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
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
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.
5-4
123
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
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
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
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-
5.6
Signatures inconscientes
. 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
5.7
127
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.
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.
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.
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
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.
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.
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.
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.
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
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
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.
132
Chapitre 5
Protocoles avancs
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.
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
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
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
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
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.
Chapitre 6
136
Protocoles sotriques
lesvotants
Tous
lesvotants
Tous
lesvotants
L A C D dchiffre
rsultats publics.
de ZA C D .
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.
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
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
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.
Chapitre 6
138
Protocoles sotriques
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
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 .
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
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.
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)
6.1
lections sres
141
chiffrer le rsultat de
(d ) chiffrer le rsultat de
( e )
chiffrer le rsultat de
(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;
(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.
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.
6.2
Calcul rparti sr
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
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.
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
S -oui
S2
S- non
Ni
non
N2
non
N3
non
N4
oui
N5
oui
Chapitre 6
148
Protocoles sotriques
6.3
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
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.
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.
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.
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
Alice s excute.
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.
ln
2
(^nci^np)
Alice s excute.
6.4
Argent lectronique
155
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.
6.4
Argent lectronique
157
Chapitre 6
158
Protocoles sotriques
6.4
Argent lectronique
159
Deuxime partie
Techniques cryptographiques
Chapitre 7
164
Chapitre 7
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 !
7.1
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].
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.
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
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.
7.1
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
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
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
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
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
171
172
Chapitre 7
T a b . 7.3
Anne
1983
1985
1988
1989
1993
1994
Nombre de dcimales
des nombres factoriss
71
80
90
12 0
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.2
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.
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
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
contre un individu
768
1024
1280
1280
1536
contre un gouvernement
1536
1536
2048
2048
2048
7.2
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
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
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
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
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
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
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
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
7.5
179
7.5
180
Chapitre 7
Tab.
Type de trafic
Longvit
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
Chapitre 8
Chapitre 8
182
8.1
Gnration de clefs
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
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
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
(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
F ig.
8 .1
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).
( 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.
Chapitre 8
188
8.2
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.
190
Chapitre 8
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.
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
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
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.
8.6
193
directement aux clefs. Ce systme est abord plus fond dans les chapitres 24.1 et
24.8.
8.7
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
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
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
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
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
197
8.11
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
8.12
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.
8.12
199
200
Chapitre 8
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
202
9.1
Chapitre 9
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
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
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
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
205
Numro de bloc
1
Banque
Datation mettrice
Banque
bnficiaire
10
Nom du dposant
11
12
Compte du
dposant
13
Montant
Cham p
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
Chapitre 9
206
i-l
VI
M.
M. ,
1+1
Ci-l
i+J
M i-l
C:i+1
M.
' 'i
M.
'" i + l
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
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
n 1
C (j-bits de long)
208
Chapitre 9
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
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
210
Chapitre 9
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
F ig. 9.7
9.5
211
Chapitre 9
212
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.
bits
M.i = Ci EK(Ci~i).
F i g . 9 .1 0
Chapitre 9
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
9.7
215
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
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
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
; 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
F i g . 9.11
217
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
Chapitre 9
218
pour remplir les deux registres dcalage avec un nouveau (ou le mme) IV pour
resynchroniser.
F i g . 9 .1 3
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.
F i g . 9.14
Chapitre 9
220
9.10
Autres modes
Fi+i = Fz C%
M Z= FZ D k (Cz)
Fl+1 = Ft Ci.
M t- i D k (Cz)
9.10
Autres modes
221
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.
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.
222
Chapitre 9
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
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
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.
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.
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
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
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.
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.
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
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
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
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
228
Chapitre 10
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
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
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.
Chapitre 10
230
10.2
10.3
10.3
ab
. 1 0 .1 - C
lasses
Confidentialit
Algorithmes
Algorithmes
Algorithmes
Algorithmes
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
ig
Chapitre 10
232
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
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.
10.3
233
Chapitre 10
234
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
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
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
2S5
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
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].
10.5
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
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
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.
10.5
239
graphe 24.1.
Chapitre 10
240
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
10.7
Dtection du chiffrement
10.7
ig
241
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
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
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
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
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
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.
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)
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 .
T a b . 11.1
clef.
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
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
252
Chapitre 11
Rudiments mathmatiques
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.
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
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
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
Chapitre 11
256
Rudiments mathmatiques
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
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
(mod 12).
(a b) mod n
(a x b) mod n
(a x (b + c)) mod n
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
x a8 x a 16) mod n
ll.S
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].
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
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 * /
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).
4x = 7k + 1
(mod n).
Chapitre 11
262
Rudiments mathmatiques
11.3
263
>
// 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);
>
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.
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.
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.
11.3
265
(mod p)
et ensuite on calcule :
x = (((a b) x u) mod p) x q + b.
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).
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)
11.3
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) =
L(a,p) =
L(a,p)
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.
Jacobi :
Chapitre 11
268
3.
Rudiments mathmatiques
/* 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
>
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)
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
3 ( n - i )/2 m o d n
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
272
Chapitre tl
Rudiments mathmatiques
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 ))
11.4
Factorisation
273
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 .
11.5
11.5
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:
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
Chapitre 11
276
Rudiments mathmatiques
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
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
4. Effectuez le test
gnrez un autre
petite de a pour
choue lun des
277
de
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].
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
L exponentiation modulaire est une autre fonction sens unique frquemment utilise
en cryptographie. Evaluer lexpression suivante est facile :
ax mod n.
- le
- le
0(l))(ln
n ) i (ln(ln
n) ) i
11.6
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 .
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].
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
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.
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 .
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
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
~ 57
10
63
14
49
2
55
6
41
59
47
61
ab
33 25
51 43
39 31
53 45
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
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
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.
12.2
291
Description du DES
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
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.
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
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
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 .
12.2
295
Description du DES
ab
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
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
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
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
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
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 :
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.
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.
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
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)
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
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.
12-4
305
A=Y
A=X
A=X
T
A =Y
X = 0x60000000
Y = 0x00808200
A vec probabilit
64
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 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,
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].
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
12.J,
F ig .
309
310
Chapitre 12
17
A =[3,8,14,25]
B = [8 ,14,25]
Le D ES
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
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
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
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
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
12.6
Variantes du D E S
315
Tab.
12.15
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
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.
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
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
12.7
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
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
Chapitre 13
322
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
Il
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
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)
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
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
13.4
FEAL
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
fi3
B3
fi4
fi4
B5
fi5
B6
fi6
B1
B1
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 }
9,
10, K 1 1 )}
{}: Dchiffrement
(^Texte chiffr {Texte en clair}^)
Chapitre 13
328
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].
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
330
Chapitre 13
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
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
13.6
333
LO KI
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 .
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
Chapitre 13
336
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
13.9
IDEA
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
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
2.
Chapitre 13
340
^1
^2
ig .
13.9 - Squelette d l D E A
^3
^4
13.9
341
ID E A
et
(9) ;
12.
et
(9) ;
13.
et
(10);
14.
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
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 -
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
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
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?).
Xi
Ci- x
pour i
0 3.
xq
= Xq G ; si loctet le moins
Chapitre 13
346
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
Chapitre 13
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
Chapitre 14
GOST
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
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.
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.
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
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
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
14-3
355
B lo w fis h
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 :
l o w f is h
Chapitre 14
356
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
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
x r
bout bout.
F {
Chapitre 14
358
8 bits
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
t.
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-
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 .
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
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 ?
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.
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
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)
- 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
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 (-.>))
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
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
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
A {{A 0 B) <
B = ((B A) <
B ) + S2i
A) + S2i+ 1
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
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
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
14.10
14-10
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.
Ri
f{Ri
jff)
I~>ii
f(Ri-i,Ki)
/ ( R ^ ijKi) =
Li
-1
Chapitre 14
368
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
369
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
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
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.
Chapitre 14
372
14.11
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 )
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
C = Cgffd
14-11
373
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
Chapitre 14
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
(a ) F onction d e hachage
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
375
14.12
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
Algorithme
Vitesse de chiffrement
(kilo-octets/seconde) Algorithme
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
= 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
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
380
Chapitre 15
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)
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
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
C * _ i
(BD^-ffCi)
F ig .
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
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.
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
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
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].
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
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
385
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.
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
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
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
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
hafre
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
15.7
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
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
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
4- b) mod m
392
Chapitre 16
Tab
16.1
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
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].
s t a t i c lo n g s2 = 1
/ * Un " l o n g " d o i t
a v o ir 32 b i t s .
s = b * (s -a * q )
*/
c*q;
if
( s < 0 ) s+=m;
* 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
( 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
( 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;
* 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,
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
( in t I n it S l,
in t In itS 2 ,
In itS 3
16.2
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
bn
r
-------- -
bn-l
ir
bt
b3
b2
bi
1r
ir
ir
Fonction de 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
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
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.
398
Chapitre 16
(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
(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)
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
31)
I (S h iftR e g is te r
1 );
>
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.
16.2
401
-----
b32
h?
b6 b5 b4 b3 h2 b{
/p A
Eitde
ortie
1
/p A /p A /p A
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
> 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
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-
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].
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
404
Chapitre 16
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
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
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
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.
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
dans le cas gnral. Cependant, il est susceptible d une attaque par corrlation [1641].
ig
. 1 6 .1 0 -
408
Chapitre 16
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
16-4
409
RDRL
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 i g . 1 6 .1 4 -
Gnrateur auto-cadenc de
C hm bers
et
ollm ann
4 10
Chapitre 16
ig
. 1 6 .1 5
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
411
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
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
16.6
413
H ugues X P D / K P D
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 :
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
16.8
Rambutan
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
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
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
16.10
Gifford
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
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
Chapitre 16
418
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
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
Echanger Si et S j .
t = (S i + S j ) modulo 256
K = St
420
Chapitre 17
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.
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
17.2
SEAL
421
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
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
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)
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
17.2 - W A K E
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,
Registre dcalage
Som m e m odulo 2 h
bn-l
b,4
ae
2
bl
F i g . 17.3
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
Somme modulo 2
H h
u3
b_2 b,
ui
Bit de sortie
Somme
17.5
427
2b +
2 e +
2d -
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
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
avec des R D R R au
ollm an n
avec une al
Chapitre 17
428
ab
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
429
(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
(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.
17.5
F i g . 17.5
431
- Combinaison de gnrateurs
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.
Chapitre 17
F i g . 1 7 .7 -
17 6
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
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
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 :
________
ig
17.7
17.7
435
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 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 .
Chapitre 17
436
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
17.9
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
Chapitre 17
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.
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.
17.10
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
Chapitre 17
440
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
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
-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
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.
17.11
Chapitre 17
17.12
Tab.
33 MHz
17.13
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
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
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
17.14
Chapitre 17
17.14
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
17.14
449
*/
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
/*
* 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,
*/
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
451
Chapitre 18
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
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.
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.
18.2
455
Snefru
kr
'
Fonction de hachage
sens unique
hi
18.2
Sn e f r u 3
Snefru
est une fonction de hachage sens unique conue par Ralph
erkle
[1075].
456
Chapitre 18
arbitraire.
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
ash
eleg raph
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)
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
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.
18-4
459
MD4
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
fU p )
S0 et 5, : rsultats de 8 bits
rot 2 (7 ) : dcalage circulaire gauche de 2 bits de T
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.
F ig .
18.5
Boucle principale de M D5
( 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
Une opration de M D5
(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 ,
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)
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.
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
18.7
Chapitre 18
466
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 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
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
18.8
R IP E -M D
469
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
18.8
R IP E -M D
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
18.10
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].
18.11
18.11
471
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 -
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
H
H
H
H
H
= Ehx_ j (Af*) M i
=
( M i H i-x ) Al* l i -1
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
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 :
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
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 =
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 ,
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 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 ,
18.11
475
ir a u l t .
Go = Ig ,
Ho Ih ,
o
o
W t ? i , , g , i ( G i - 1 H i ) H , H i 1 ,
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
Go = Ig ,
H0 = I h ,
o
o
Hi = W i ffi H i-i.
D a v ie s - M
eyer
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 -
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
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
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 :
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
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
18.14
Chapitre 18
480
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.
18.14
481
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
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"
18.14
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].
Chapitre 19
Introduction
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
19.2
Algorithmes empilement
19.2
Algorithmes empilement
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
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
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
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
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.
62
93
81
88
102
37
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
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
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.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
(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
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.
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.
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
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 -
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.
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
t r 1 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.
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.
Chapitre 19
498
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 ]:
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
tel que :
ed = 1
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
Rabin
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
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
(m od 8)
q= 7
(mod 8)
et
N = pq.
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).
(mod N).
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
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.
19.5 - Signatures E l G a m a l
C l e f p u b liq u e :
x < p
S ig n a tu r e :
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
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 :
x < p
C h iff r e m e n t :
Vitesse
Le tableau 19.7 donne des exemples de vitesses de ralisations logicielles de E l G am al
[929].
Chapitre 19
504
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
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.
19.8
505
19.8
Chapitre 19
506
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.
19.9
LUC
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=
(mod n)
19.10
507
Automates finis
et pour dchiffrer :
M = V d(M ,l)
(mod n)
19.10
Automates finis
Chapitre 20
Algorithmes de signature
numrique clef publique
20.1
510
Chapitre 20
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
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,
di
512
Chapitre 20
20.1
513
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
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.
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
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].
et
H aber
20.1
515
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.
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
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.
20.1
517
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
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
519
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].
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
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
7 p = p (p mod q) + 1.
8 p = p + q.
522
Chapitre 20
20.3
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.
z2 = ((q r) x u) mod q
u = ((aZl x y 22) mod p) mod q.
20-4
523
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
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
r mod q)
Chapitre 20
524
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
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
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
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
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
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
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.
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
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
1. L e p r o b l m e d e s e m p ile m e n t s
(mod TV),
(mod TV),
d.
(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
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
532
Chapitre 21
Schmas didentification
/x .
Si 6 = 1 ,
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.
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.
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.
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
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\,
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.
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.
Chapitre 21
536
Schmas didentification
(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].
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
21.2
53 7
G u i l l o u - Q u is q u a t e r
Victor calcule T ' = D vJd mod n. Si T = T' (mod n)l authentification est
russie.
(mod n),
(mod n).
*
2.
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
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.
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
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.
3 Patricia calcule y = (r + s
Sch n o rr
Chapitre 21
540
Schmas didentification
signatures n ont que 212 bits de long, m oins de la m oiti de la longueur des
signatures
am al.
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
Chapitre 22
DiffieHellman
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
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.
Y x mod
n.
4 Bernard calcule:
z ~ j/-1 mod n
k' = X z mod n.
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
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)).
22.3
(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 ) .
(E b (Ea (A4))) = D
{Ea {E b {M ))) = E
{M ).
22.4
545
COM SET
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.
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
COM SET
546
Chapitre 22
22.5
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
22.5
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.
Voyez le paragraphe 19.6 pour les restrictions dans le choix des variables dELGAMAL.
Chapitre 22
548
ta
et envoie Bernard :
ellm an
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 )-
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 )
22.5
549
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).
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] :
550
Chapitre 22
22.6
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.
d id en tific a tio n p e r s o n n e l .
22.7
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
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
(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 .
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].
3 L utilisateur i diffuse :
22.7
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.
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.
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
Chapitre 23
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.
556
Chapitre 23
23.2
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].
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).
23.2
557
(mod 13)
(mod 13)
(mod 13).
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
m +3 ^ ^ ^n*
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.
23.2
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].
(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
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.
(mod n).
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.
23.3
561
Canal subliminal
(mod p).
(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.
( 7 x 7 ) mod 10 49 mod 10 = 9.
Chapitre 23
562
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.
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
2 Martin distribue ses puces Alice, Bernard, et toute autre personne qui en
veut.
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.
23.f
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
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.
mod p.
(mod p).
Chapitre 23
566
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.
S2 (c x gq) mod p.
ltape 1 .
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].
23.5
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.
(mod q).
23.5
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
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:
j = {H ( Ai) H (o , 6 ) ) 1 / 3 mod n,
et envoie a, b et j Bernard.
(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).
k guav m od p.
23.6
569
(mod p).
guav = k
5 David vrifie si
gw = 1
(mod p) y /h w = hubv
(mod p).
23.6
(mod p).
Elle calcule:
x' = xgr mod p.
(mod p).
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
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.
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.
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
ou
y tx mod p.
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
xq.
572
Chapitre 23
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.9
23.9
573
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.
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.
Chapitre 23
3 Bernard veut acheter S 7 et donc il chiffre C 7 avec la clef publique quAlice lui
a donne:
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
23.10
575
2 Bernard choisit son secret Cb, tire un nombre alatoire, et envoie Alice :
C Cbre 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 ,
s = (si + s2 + s3 + 54 + Sb) m od p
Chapitre 23
576
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.
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.
t = gAgB mod p,
et pour clef prive :
s = (A + B) m od (p 1).
2S.11
577
23.11
(mod p)
(r*
5 Pour tous les t bits, Victor vrifie lune des deux relations:
(mod p) ;
(mod p).
(mod p).
o j est la
Chapitre 23
578
(mod n).
2 Alice et Bernard engendrent un texte chiffr alatoire C. Une fois de plus ils
doivent utiliser un protocole de jeu pile ou face.
23.12
579
Signatures en aveugle
23.12
Signatures en aveugle
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
Chapitre 23
580
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
).
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.
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
Alice choisit x
1)
2)
3)
4)
=
=
=
=
26
18
2
39.
= 26 mod 31 = 26
= 18 mod 31 = 18
= 2 mod 31 = 2
= 39 mod 31 8.
582
Chapitre 23
23.15
Chiffrement probabiliste
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
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
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
------- \
"
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
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.
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
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
24-3
R N IS
591
24.3
RNIS
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.
244
S T U -III
593
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
24.5
Kerberos
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 ]
K e rb e ro s
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
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
598
Chapitre 24
Exemples de ralisation
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.
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
) ;
rypto
n ig h t
rypto
n ig h t
est similaire K
erberos.
Il y a
rypto
crs p o u r
n ig h t
24.7
SESAME
2f.8
601
24.8
Architecture
mune dIBM
cryptographique
com
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
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
Chapitre 24
604
Exemples de ralisation
ig .
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.
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 -
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
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.
606
Chapitre 24
17 Alice envoie
( R b
Exemples de ralisation
Bernard.
24.10
P E M est le standard
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.
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
LLrHB0eJzyhP+/fSStdW8okeEnv47jxe7SJ/iN72ohNcUk2jHEUSoHlnvNSIWL9M
8tEjmF/zxB+bATMtPjCUWbz8Lr9wloXIkjHUlBLpvXR0UrUzYbkNpk0agV2IzUpk
J6UiRRGcDSvzrsoK+oNvqu6z7Xs5Xfz5rDqUcMlKlZ6720dcBWGGsDLpTpSCnpot
dXd/H5LMDWnonNvPCwQUHt==
END PRIVACY-ENHANCED MESSAGE-----
ig
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
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
24-10
Privacy-Enhanced Mail / P E M )
611
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
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
24-i 2
24.12
613
Chapitre 24
Exemples de ralisation
ig
. 2 4 .7
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
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
24.14
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
dards ('PKCS )
617
Chapitre 24
618
Exemples de ralisation
24.15
24-15
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 ))-
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
24-16
621
C l ip p e r
Chapitre 24
622
Exemples de ralisation
Tab.
24.2 - A g e n c e s
p a r t ic ip a n t
l EES
24.17
Capstone
- Lalgorithme
S K IP J A C K
24-18
623
OFB;
- Un algorithme d change de clefs clef publique K E A , probablement D i f f i e H ellm an ;
24.18
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
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
25.2
adsen
627
[87]
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
628
Chapitre 25
range
ook
Politique
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
25.3
629
630
Chapitre 25
Politique
25.3
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
25.4
25.5
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
Ta
Numro de brevet
4200 770
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
634
Chapitre 25
Politique
25.6
International
Association
Cryptologie Research (IACR)
for
25.7
25.8
635
25.8
636
Chapitre 25
Politique
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
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
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
55.10
637
Chapitre 25
638
Politique
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
25.13
Brevets
25.13
639
Brevets
25.14
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
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
(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
645
646
Chapitre 25
Politique
25.15
- 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
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
Chapitre 25
648
Politique
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
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.
652
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 -
*
*
Graven Imagery,
1992.
*
* Copyright (c) 1988,1989,1990,1991,1992 by Richard Outerbridge
*
*/
#define D2_DES
#define D3_DES
#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 * /
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,
*/
extern void usekey(unsigned long *);
/*
c ookedkey[32]
*/
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]
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))
h e x k e y [16]
MODE
* Sets
the internai
* keyS
*/
extern void Ddes(unsigned char *, unsigned char *);
/*
from[8]
to[8]
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]
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]
659
DES
* string into an eight-byte random-looking key, suitable for use with the
* deskeyO
routine.
*/
#define makeDkey(a,b)
make2key((a),(b))
*password,
double-length k e y [16]
*/
#ifndef D3_DES
/ * D2_DES only */
#define useDkey(a)
use2key((a))
#define cpDkey(a)
cp2key((a))
c ookedkey[64]
*/
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))
h e x k e y [24]
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
*password,
triple-length key[24]
*/
#end^f
/* D3_DES */
#endif
/ * D2.DES */
d3des.c
/* D3DES (V5.0A) *
*
* 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 *);
long KnL[32] = { 0L };
static unsigned
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]
= {
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
>;
8,
1,
62, 54,
13,
5,
17,
35,
21,
20, 12,
3 };
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,
14,
1,
43, 48, 38, 55, 33, 52, 45, 41, 49, 35, 28, 31 };
void deskey(key, edf)
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;
1 =
j + totrot [i] ;
if(
>
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
) 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++
>
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
OxOlOlOOOOL,
0x00000400L,
0x01000004L,
0x00010404L,
0x01000404L,
0x01010400L,
OxOOOOOOOOL,
0x01010004L >;
0x00108020L,
0x80008020L,
0x80000000L,
0x80100020L,
OxOOOOOOOOL,
0x80100000L,
0x00108000L,
0x00008020L,
OxOOlOOOOOL,
0x00008000L,
0x80108020L,
0x80000000L,
0x80000020L,
0x00100020L,
0x00008020L,
0x00108000L };
0x08020008L,
0x08000200L,
0x00020000L,
0x00000208L,
0x00000200L,
0x00020208L,
0x08000208L,
0x08000000L,
0x00000208L,
OxOOOOOOOOL,
0x08000200L,
0x08020008L,
0x08020208L,
0x08000008L,
0x08020000L,
0x00020200L >;
0x00000080L,
0x0000200IL,
0x0080208IL,
0x00800001L,
0x0080200IL,
0x00002081L,
0x0080000IL,
0x00802000L,
0x00800080L,
0x00800000L,
665
DES
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 ,
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 " = 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 )
le ftt
2)
= w o rk ;
667
DES
leftt ~= work ;
right ~= (work 8);
right = ((right 1) 1 ((right
= ((leftt
for( round =
1)
I ((leftt 31)
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
fval
|= SPl[(work
24) & 0 x 3 f L ] ;
work
fval
1= SP8[ work
fval
& 0x3fL];
1= SP6[(work
8) & 0 x 3 f L ] ;
fval 1= SP4[(work
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
fval
|=
SPl[(work
24) ft 0 x 3fL];
work
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
8);
2);
work = ((right
leftt = work;
right = (work
work = ((right
leftt = work;
16);
4) " leftt) & OxOfOfOfOfL;
668
DES
}
#ifdef D2_DES
void des2key(hexkey, mode)
/ 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 c h a r [16] /
i
unsigned long right,
+11, 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 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 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
>
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];
return;
>
void use2key(from)
unsigned long *from;
unsigned long
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 */
{
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] */
endp =
&KnR[32];
w h i l e ( from
< endp
) *intc++ =*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 c h a r [24] */
/* unsigned
cha r [24] */
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
* P la in
: 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 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
LOKI 91
loki.i
/*
*
*
*
Modifications:
vl.O
original tables
v2.0
*
*
v2.1
v3.0
10/92 lpb
Aug 1989
*/
/ * 32-bit permutation function P */
/*
/*
char P[32] = {
31,
14, 6,
29,
12, 4,
27,
10, 2,
25,
>;
/*
*
and exponent
in
*/
typedef struct -{
short
gen;
this field */
short
exp;
s function */
} sfn_desc;
676
L O K I 91
/*
*
sfn - the table specifying the irreducible polys & exponents used
*/
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
/*
*
*
*
its output is
a complex
*
*
Authors:
Aug 1989
Sep 1991
*
*
*
*
Version:
vl.O -
v2.0 -
v3.0 -
*
*
*
*
Description:
to buy a
the author.
677
L O K I 91
*
*
lokikey(key)
char k e y [8];
in
*
*
enloki(b)
char b [8];
routine
*
*
deloki(b)
char b [ 8 ] ;
routine
*
*
The 64-bit d ata & key blocks used in the algorithm are specified as eight
*
*
[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
*/
#define ROUNDS
/* Ko of LOKI rounds
*/
16
lokikey[2];
STDC
*/
*/
*/
extern void e n l o k i O , d e l o k i O ,
setlokikey() ;
#endif __STDC__
loki91.c
/*
*
*
* Designed b y
Modifications:
10/92 lpb
*
*
L O K I 91
678
*
#define LITTLE_ENDIAN
routines
*
*
#define TRACE=n
*
*
these routines assume that the 8-byte char arrays used to pass
If this is
*/
#include <stdio.h>
#include "loki.h"
#include "loki.i"
/*
*
*/
char
*loki_lib_ver =
"L0KI91 library v3.0, Copyright (C) 1991 Lawrence Brown & UNSW";
Long
loki_subkeys[ROUNDS];
static Long
f ();
static short
sO;
/*
*
R0L12(b)
left by 12 bits
R0L13(b)
left by 13 bits
*/
#define R0L12(b)
b = ((b
12)
I (b
20));
#define R0L13(b)
b = ((b
13)
I (b
19));
/*
*
*/
#ifdef
LITTLE.ENDIAN
#define bswap(cb) -[
register char
\
c;
cb [2] = c ;
>
#endif
679
L O K I 91
/*
*
*/
void
setlokikey(key)
char
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) {
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);
#endif
/*
*
*
*
*
*
*
*
680
L O K I 91
*/
void
enloki
(b)
char
b [LOKIBLK];
{
register
i;
register Long
L, R;
*/
#ifdef LITTLE_ENDIAN
bswap(b);
#endif
#if
TRACE >= 1
fprintf (stderr, "
*/
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,"
#endif
>
/*
*
deloki(b) - main
L0KI91 decryption
*
*
*/
void
deloki(b)
char
b [LOKIBLK];
681
L O K I 91
register
i;
register Long
L, R;
*/
#ifdef LITTLE_ENDIAN
bswap(b);
#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;
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, "
#endif
/*
*
whose output
*
*
expanded into
4 x 12-bit
The 4 x 8-bit
outputs
which is returned.
32-bit value
*
*
*/
define M A S K 12
static Long
f (r, k)
OxOfff
L O K I 91
682
register Long
r;
Long
k;
/* Key
*/
K(i)
{
Long
a, b, c;
a = r ' k;
& MASK12))
((Long)s(((a
8) & MASK12))
8)
((Long)s(((a
16)
((Long)s((((a
24)
I (a
perm32(&c, &b, P ) ;
#if
) I
TRACE >= 2
24);
K(i))) */
fprintf (stderr,"
r, k, a, b, c ) ;
#endif
r e t u r n (c);
C */
/*
*
*/
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 =
c =
(i2)
t =
v =
& Oxff;
*/
s(Xlx= [*/,d,
/,d] ) = 7,x sup
/id m o d Xd =
/.x\n" ,
}
/*
*
control of a
which
683
L O K I 91
*/
ffdefine MSB
perm32(out,
0x80000000L
in
perm)
Long
*out;
to be permuted
Long
*in;
/* Input
after permutation
char
perm[32];
/* Permutation array
32-bit block
*/
*/
*/
{
Long
mask = MSB;
*/
register int
i, o, b;
register char
*p = perm;
*/
*out = 0;
b = (*in
i)
if (b)
*out
m ask =
|= mask;
/*
1;
OR in mask to output i */
*/
/*
*
*/
#define SIZE 256
a, b;
short
gen;
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);
/*
/*
/*
*/
684
L O K I 91
>
/*
*
*/
short exp8(base, exponent, gen)
short
short
base;
exponent;
/* base of exponentiation
/* exponent
short
gen;
short
accum = base;
short
resuit = 1 ;
if (base == 0)
r e turn(O);
while (exponent
+/
*/
*/
/ * resuit of exponentiation
*/
*/
*/
!= 0) { / *
/* multiply if exp 1 */
y
return(result);
>
1;
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
typedef
typedef
typedef
char *string;
*/
alpha
#else
typedef unsigned long word32;
#endif
#ifndef TRUE
#define FALSE 0
#define TRUE (!FALSE)
#endif
#ifndef min
#define min(a.b)
(((a)<(b))
? (a) :(b)
#define max(a.b)
(((a)>(b))
? (a) :(b)
#endif
already defined */
*/
#ifndef N0_V0ID_STAP.
ffdefine VOID
void
#else
#define VOID
char
#endif
/* Zero-fill the byte buffer.
#define fillOCbuffer,count)
*/
Many of the
686
ID E A
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
/*
*
*/
#include "usuals.h"
#define IDEAKEYSIZE 16
#define IDEABLOCKSIZE 8
#define IDEAROUNDS 8
#define IDEAKEYLEN (6*IDEAR0UNDS+4)
/*
* iv[] is used as a circular buffer.
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
*/
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]),
struct IdeaCfbContext *c f b ) ;
IDEA_H */
idea.c
/*
*
*
*
*
speed it up.
*
*
any conditional
to stay
ID E A
688
*
V a x i a b l es: normally,
so they do
necessary. On a SPARC,
performace
for example,
by 307..
*
*
Ascom-Tech AG.
use.
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.
Xuejia Lai,
3-89191-573-X.
1992.
ISBN
native CPU.
This
*/
#include idea.h"
#include randpool.h"
/ * Use > 16-bit temporaries */
#ifdef IDEA32
#define lowl6(x)
#else
#define lowl6(x)
(x)
const
*/
#define CONST
#else
const__
689
ID E A
#define CONST
#endif
/*
*
*/
#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;
tl = OxlOOOlL / x;
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.
*/
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.
*/
#ifdef SMALL_CACHE
#define ML(x,y)
(x = mul(lowl6(x),y))
#else /* !SMALL_CACHE */
#ifdef AV0ID_JUMPS
#define ML(x,y)
#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
/*
{
register uintl6 xl, x2, x3, x4, s2, s3;
wordl6 *in, * o u t ;
#ifndef SMALL_CACHE
register uintl6 tl6;
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
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:
);
", 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:
");
", 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
fflush(stdout);
start = c l o c k O ;
memcpy(YY, XX, 8);
for ( 1 = 0 ;
/ (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
/.3u
/,3u */,3u
XX [6] , XX [7]);
ZZ[6] , ZZ[7]);
695
ID E A
!= 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.
* CFB en/decryption is to say that you XOR the current 8 bytes with
* IDEA(previous 8 bytes of ciphertext).
*
* 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
*
* 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.
*/
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
*/
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++);
/*
* 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
*/
/*
* 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));
700
ID E A
c->internalbuf[i] = c->outbuf[i]
~ timestamp[i];
>
return c ->outbuf[ c->bufleft];
>
/* end of idea.c */
GOST
gost.c
/*
* The GOST 28147-89 cipher
*
"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.
*
(josef/leoScs.adfa.oz.au)
1409.
*
* This code is placed in the public domain.
*/
/*
* If you r ead the standard,
* of the 32-bit words that Eure manipulated in the algorithm is the first,
* lowest-numbered, in the bit string.
*/
alpha
GOST
102
#else
typedef unsigned long word32;
#endif
/*
* The standard does not specify the contents of the 8 4
bit->4 bit
network
t h e y re a parameter of the
In keeping
* 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,
2, 13, 12,
0,
5, 10 >
4,
2,
7, u ,
8,
5, 11, 12,
3, 15, 13,
0, 14,
3,
4, 14,
7,
9,
7,
3, 14,
/*
* 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]
k21[i]
= k2[i
4]
>
}
/*
* 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.
*
*/
#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
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
*
* 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];
/*
/*
temp[l] += Cl;
if (temp[l] < Cl)
temp[l]++;
/*
>
>
/*
* The CFB mode is just what y o u d expect.
GOST
707
* y[i] = x[i]
* gostcrypt (y [i-l])
*
* The IV is modified in place.
*/
void
gostcfbencrypt(word32 const *in, word32 *ont, int len,
word32 iv [2], word32 const k e y [8])
{
while (len ) {
gostcrypt(iv,
iv, key);
>
}
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]
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 ,
16
0
#define DATAERROR
#define KEYBYTES
-1
8
712
B l o w f is h
{
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
[
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;
-t
714
B l o w f is h
0x7c72e993,
0xb3eel411, 0x636fbc2a,
0xd6al00c6, 0x402c7279,
715
B l o w f is h
0x41cd2105,
0 x8d937e41, 0xd65fecfl,
0x6c223bdb,
0xc50c06c2,
0x5a04abfc, 0x800bcadc,
0xdb83adf7>;
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,
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,
0x50115e01, 0xa70683fa,
0xa002b5c4, 0xde6d027,
0x9af88c27, 0x773f8641,
0xc3604c06, 0x61a806b5,
0xf0177a28, 0xc0f586e0,
0x39720a3d, 0x7c927c24,
0xd79a3234, 0x92638212,
0x670efa8e, 0x406000e0>;
0xd3822740, 0x99bc9bbe,
0xb78clb6b, 0x21al9045,
0xc6a376d2, 0x6549c2c8,
0x2939bbdb, 0xa9ba4650,
0x63ef8ce2, 0x9a86ee22,
0x83c061ba, 0x9be96a4d,
0x4ba99586, 0xef5562e9,
0x80e4a915, 0x87b08601,
0x47b0acfd, 0xed93fa9b,
0x785f0191, 0xed756055,
0x5121ce64, 0x774fbe32,
0xdda26a7e, 0x3a59ff45,
0x8d6612ae, 0xbf3c6f47,
0x740e0d8d, 0xe75bl357,
111
B l o w f is h
0xcflllc3 , 0xale8aac7,
0xla908749, Oxd44fbd9a,
0x38abbd60, 0x2547adf0,
0xba38209c,
= 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
>
>
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
*/
#define
STRT_D
*/
#define
NMBR
#ifdef
alpha
11 / * number of rounds is 11
t
int i ;
word32 b[3]
{
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)
t
word32 b [3]
b[0]
= a[0] * (a[l]|(~a[2]))
b[l]
b[2]
= a[2] * (a[0]|('a[l]>)
*/
122
3 -W
a[0] = b[0]
; a[l] = b[l]
; a[2] = b[2]
>
{
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]
{
(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)
*/
{
thta(a)
pi_l(a)
;
;
;
gamma(a)
pi_2(a)
}
void rndcon_gen(word32 strt,word32 *rtab)
{
int i ;
for(i=0 ; i<=NMBR ; i++ )
{
rtab[i] = strt
strt = 1 ;
**
9
**
(a [2] 2 4 )
>
a[0]
ay
723
- W a y
[
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 )
(
int i ;
ord32 ki[3]
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]
* rcon[i]
>
atO] = kifO]
* (rcon[NMBR] <<16)
a[l] ~= ki[l]
>
#ifdef TEST
*/
724
3 -W
#include <stdio.h>
ttinclude <stdlib-h>
#define RAND32 ((word32)rand()
17 ' (uord32)rand()
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]
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
plaintext
Il
9 * randO)
ay
3 -W
725
ay
ciphertext
key
plaintext
ciphertext
key
plaintext
ciphertext
key
plaintext
ciphertext
RC5
rc5.c
/* RC5REF.C
*/
*/
#include <stdio.h>
#include <time.h>
typedef unsigned long int WORD; /* Should
be 32-bit = 4 bytes
*/
#define w
32
*/
#define r
12
/* number
of rounds
*/
#define b
16
/ * number
of bytes in key
*/
#define c
#define t
26
WORD S [ t ] ;
/ * number
*/
*/
/ * magic constants
*/
( ( (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)))))
*/
>
ct[0] = A; ct[l] = B;
>
void RC5_DECRYPT(W0RD *ct, WORD *pt) /* 2 WORD input ct/output pt
l
*/
y
pt[l] = B-S[l] ; pt[0] = A-S[0] ;
*/
728
RC5
>
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) ;
,key[j]);
>
>
time (&t0);
for (i=l;i<100000;i++)
R C5.ENCRYPT(ct,c t ) ;
time (fttl);
printf ("\n
\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
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
1) & 0 x7ffff;
if (feedback fe 0x01)
rl "= 0x01;
}
return (rl);
13);
A5
730
{
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;
}
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
if (ctl)
{
feedback = (r3
r3 = (r3
22) * (r3
21) * (r3
18) (r3
1) & 0x7fffff;
if (feedback ft 0x01)
r3 *= 0x01;
>
return (r3);
unsigned char
*key;
imsigned long
frame;
*/
unsigned char
*alice;
*/
unsigned char
*bob;
*/
C
unsigned long rl;
17);
A5_________________________________________________________________________ 731
*/
*/
int i;
*/
int clock_ctl;
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]
*/
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
byte = (byte
1)
21) * (r3
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 ) ;
{
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;
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
#define
Fl(x, y, z)
#define
F2(x, y, z)
#define
F3(x, y, z)
#define
F4(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;
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)
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])) ;
(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] ;
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++;
if(i&l) {
a += n3;
c += n4;
} else {
a += ni;
c += n2;
}
y
return (ALG_OK);
>
}
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 :
fonction dEuler
fonction dEuler
algorithme de hachage sr
standard de hachage sr
accrditation :
accrditation
pt
block chaining :
chanage de blocs
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 :
Lexique anglais-franais
encrypt (to) : chiffrer
encryption: chiffrement, encryption, codage
encryption algorithm : algorithme de chiffrement
end-to-end encryption :
amplification derreur
encadrement
signature collective
difficile, dur
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 :
gnrateur de codons
algorithme empilement
problme d empilement
Lexique anglais-franais
linear feedback shift register :
link-by-Iink encryption :
linking protocol :
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 :
mlange-et-broie
multiple encryption:
surchiffrement
nonce :
nombre alatoire
obfuscation :
dissimulation
oblivious transfer :
transfert inconscient
remplissage
mot de passe
chiffrement probabiliste
Lexique anglais-franais
public-key algorithm : algorithme clef publique, algorithme clef rvle
quadratic sieve :
random noise :
crible quadratique
bruit alatoire, bruit blanc
taux du langage
receiver: destinataire
relativized cryptography :
cryptographie relativise
reconstruction
sel, salage
secrecy : confidentialit
secret sharing :
partage de secret
secret splitting :
calcul rparti sr
seed : germe
self-decimated generator :
self-recovering :
gnrateur auto-cadenc
auto-rcuprant
self-shrinking generator :
gnrateur auto-rduction
gnrateur rduction
carte puce
stop-and-go generator :
Bibliographie
superincreasing :
super-croissant
squence de drivation
threshold generator :
threshold scheme :
timestamp :
gnrateur seuil
schma seuil
timestamping service :
service de datation
soluble
dpositaire, fidicommissaire
uncertainty :
incertitude
signature incontestable
distance dunicit
point dunicit
cadre courant
zero-knowledge proof :