Cours Crypto - Université de Liège (2009)
Cours Crypto - Université de Liège (2009)
Cours Crypto - Université de Liège (2009)
Notes de cours
provisoires
2008 - 2009
Renaud Dumont
Table des matières
1 Introduction 2
1.1 Motivation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Différents modèles de sécurité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2 Introduction à la cryptographie 8
2.1 Vocabulaire de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2 Notations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3 Principe de Kerckhoff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.4 La publication des algorithmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.5 Les principaux concepts cryptographiques . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3 La cryptographie classique 16
3.1 Substitution monoalphabétique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2 Chiffrement polygraphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.3 Substitutions polyalphabétiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.4 Transpositions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.5 Machines à rotor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.6 Ressources supplémentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
4 Compléments mathématiques 32
4.1 Théorie de Shannon - Entropie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.2 Complexité en temps et en espace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.3 Autres concepts utiles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
4.4 Ressources supplémentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
6 Chiffrement de flux 68
6.1 Les LFSR classiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
6.2 Utilisation moderne des LFSR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
6.3 RC4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
6.4 Comparaisons des chiffrements par blocs et par flots . . . . . . . . . . . . . . . . . . . . . 75
6.5 Ressources supplémentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
i
7 Le chiffrement par clé publique 76
7.1 Concept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
7.2 Merkle-Hellman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
7.3 RSA : Rivest - Shamir - Adleman . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
7.4 El Gamal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
7.5 L’utilisation des courbes elliptiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
7.6 Comparaisons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
7.7 Ressources supplémentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
8 Authentification et intégrité 91
8.1 Par chiffrement du message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
8.2 Fonctions de hachage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
8.3 MAC - Message Authentication Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
8.4 Signatures digitales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
8.5 Le Zero-Knowledge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
8.6 Ressources supplémentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
11 IPSEC 125
11.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
11.2 Architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
11.3 Les modes d’IPSec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
11.4 SPD et SA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
11.5 AH - Authentication Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
11.6 ESP - Encapsulation Security Payload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
11.7 Gestion des clés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
11.8 Ressources supplémentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132
ii
14 PGP 155
14.1 Principes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155
14.2 Format d’un message . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
14.3 Clés cryptographiques et anneaux de clés . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
14.4 Ressources supplémentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
15 S/Mime 163
15.1 SMTP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
15.2 MIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
15.3 S/MIME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164
17 La cryptanalyse 173
17.1 Les 4 attaques cryptanalytiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
17.2 Quelques techniques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
17.3 En guise de conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177
21 La biométrie 208
21.1 Fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208
21.2 Mode de fonctionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209
21.3 Mesures des performances . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210
21.4 Moyens biométriques physiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211
21.5 Moyens biométriques comportementaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 217
21.6 Moyens biométriques expérimentaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 219
21.7 La biométrie multimodale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
21.8 Avantages, inconvénients et conclusions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
21.9 Ressources supplémentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221
iii
22 La Stéganographie 222
22.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222
22.2 La stéganographie dans l’Histoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224
22.3 Principes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227
22.4 Les types de support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 229
22.5 La stéganalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
22.6 Les Anamorphoses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231
22.7 Ressources supplémentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232
23 Conclusions 233
iv
Remerciements
Dans la mesure du possible, les sources des autres illustrations ont été mentionnées. Certaines d’entre
elles me sont inconnues. Si vous en connaissez l’origine ou en êtes vous-même l’auteur, n’hésitez pas à
me le signaler.
1
Chapitre 1
Introduction
Remerciements
Merci à Messieurs William Stallings [1] et Didier Muller [2] pour la permission de copie sur les figures
leur appartenant.
Remarque générale
Ce document s’accompagne d’un cours ex-cathaedra. Ceci explique pourquoi certains passages peuvent
paraitre succincts.
1.1 Motivation
A l’heure actuelle, les besoins en matière de sécurité sont grandissants, et la tendance n’est certaine-
ment pas à la baisse. Mais pourquoi ?
Tout d’abord parce que le matériel informatique est omniprésent. En effet, d’une part le matériel est
accessible à un prix très abordable, et d’autre part, les logiciels tendent à se simplifier (au niveau de
l’utilisation !) et permettent une prise en main rapide.
D’un autre coté, les entreprises, elles aussi informatisées, nécessitent un réseau sécurisé pour le trans-
fert des données, que ce soit entre les machines de cette entreprise, ou avec des machines externes,
distantes de plusieurs milliers de kilomètres.
Si on observe la sécurité d’une manière plus générale, elle est d’ailleurs présente à plueiseurs niveaux,
qu’il s’agisse des différentes portées de l’information comme l’illustre la figure 1.1 ou les stades de vie de
l’information, tels qu’illustrés à la figure 1.2.
2
1. INTRODUCTION
On assiste également à une évolution constante des techniques, qu’il s’agisse des techniques visant
à sécuriser l’échange de ces données ou des techniques mises au point pour contourner ces systèmes
sécurisés.
D’une manière générale, la sécurité des données tend à s’améliorer. La raison principale est qu’aujour-
d’hui, l’étude des contournements possibles est simultanée à l’étude des protections. La tendance actuelle
veut que les résultats découverts, tous domaines confondus, soient publiés. Dans le cadre de la sécurité
informatique, cela permet de découvrir plus rapidement les failles et/ou avantages de certaines techniques.
A l’origine, c’est Shannon qui, en 1948 puis en 1949 avec Weaver, a le premier défini les base d’une
transmission de données entre deux parties. Son idée est illustrée à la figure 1.3.
Pour plus de facilités dans le cadre de ce cours de sécurité, nous simplifierons ce schéma en trois
entités, telles que représentées à la figure 1.4
Ajoutons que les signaux émis et reçu seront ici l’envoi et la réception de messages, mais nous préci-
serons la terminologie employée par la suite.
Avec la popularité grandissante des réseaux, des échanges de données, et donc des transmissions entre
individues, de nombreuses menaces émergèrent. Parmi celles-ci, on trouve diverses catégories :
Les menaces accidentelles ne supposent aucune préméditation. Dans cette catégorie, sont repris les
bugs logiciels, les pannes matérielles, et autres défaillances "incontrôlables".
Les menaces intentionnelles quant à elles, reposent sur l’action d’un tiers désirant s’introduire et re-
lever des informations. Dans le cas d’une attaque passive, l’intrus va tenter de dérober les informations
par audit, ce qui rend sa détection relativement difficile. En effet, cet audit ne modifie pas les fichiers, ni
n’altère les systèmes. Dans le cas d’une attaque active, la détection est facilitée, mais il peut être déjà
trop tard lorsque celle-ci a lieu. Ici, l’intrus aura volontairement modifié les fichiers ou le système en place
pour s’en emparer.
Les menaces actives appartiennent principalement à quatre catégories (illustrées à la figure 1.5) :
– Interruption = problème lié à la disponibilité des données
– Interception = problème lié à la confidentialité des données
– Modification = problème lié à l’intégrité des données
– Fabrication = problème lié à l’authenticité des données
Les auteurs de ces attaques sont notamment les hackers (agissant souvent par défi personnel), les
concurrents industriels (vol d’informations concernant la stratégie de l’entreprise ou la conception de
projets), les espions, la presse ou encore les agences nationales. Nous en reparlerons dans un prochain
chapitre.
Le triangle opposé existe également. Il porte le nom de DAD, pour Disclosure, Alteration, Disruption.
On parle du protocole AAA (les deux premières étapes sont fusionnées). Dans certaines situations,
on scindera la dernière étape. On parlera d’Accounting lorsque le fait de comptabiliser des faits sera
demandé, et d’Audit lorsque des résultats plus globaux devront être étudiés.
Notons également que l’authentification, visant à prouver l’identité d’un individu peut se faire de
plusieurs manières :
Ce modèle, initié par Donn Parker, ajoute la nuance d’utilité (une information chiffrée pour laquelle
on a perdu la clé de déchiffrement n’est plus d’aucune utilité, bien que l’utilisateur y ait accès, que cette
information soit confidentielle, disponible et intègre).
On y retrouve les trois piliers de la sécurité (CIA), mais deux autres dimensions apparaissent :
– L’état des données : le stockage, la transmission, l’exécution
– Les méthodes : les principes et règles à adopter pour atteindre le niveau de sécurité souhaité
Introduction à la cryptographie
Cryptographie : La cryptographie est l’étude des méthodes donnant la possibilité d’envoyer des don-
nées de manière confidentielle sur un support donné.
Chiffrement : Le chiffrement consiste à transformer une donnée (texte, message, ...) afin de la rendre
incompréhensible par une personne autre que celui qui a créé le message et celui qui en est le destinataire.
La fonction permettant de retrouver le texte clair à partir du texte chiffré porte le nom de déchiffrement.
Texte chiffré : Appelé également cryptogramme, le texte chiffré est le résultat de l’application d’un
chiffrement à un texte clair.
Clef : Il s’agit du paramètre impliqué et autorisant des opérations de chiffrement et/ou déchiffrement.
Dans le cas d’un algorithme symétrique, la clef est identique lors des deux opérations. Dans le cas
d’algorithmes asymétriques, elle diffère pour les deux opérations.
8
2. INTRODUCTION À LA CRYPTOGRAPHIE
Cryptanalyse : Opposée à la cryptographie, elle a pour but de retrouver le texte clair à partir de
textes chiffrés en déterminant les failles des algorithmes utilisés.
Cryptosystème : Il est défini comme l’ensemble des clés possibles (espace de clés), des textes clairs
et chiffrés possibles associés à un algorithme donné.
Remarque : On parle de "décryptage" pour désigner l’action permettant de retrouver le texte clair sans
connaître la clef de déchiffrement. On emploie également parfois les termes "cryptage" et "crypter" pour
qualifier l’action de chiffrer un message. Les mots "encryptage" et "(en)cryptement" sont des anglicismes
dérivés du verbe "to encrypt".
2.2 Notations
En cryptographie, la propriété de base est que
M = D(E(M ))
où
M = D(C) si C = E(M )
En d’autres termes, aucun secret ne doit résider dans l’algorithme mais plutôt dans la clé. Sans celle-ci,
il doit être impossible de retrouver le texte clair à partir du texte chiffré. Par contre, si on connaît K, le
déchiffrement est immédiat.
Remarque : Il faut distinguer les termes "Secret" et "Robustesse" d’un algorithme. Le secret de l’algo-
rithme revient à cacher les concepts de celui-ci, ainsi que les méthodes utilisées (fonctions mathématiques).
La robustesse quant à elle désigne la résistance de l’algorithme à diverses attaques qui seront explicitées
dans la suite de ces notes.
En conséquence, on préférera les algorithmes publiés, souvent plus sûrs pour les raisons explicitées
ci-dessus.
1 et donc, dans lequel le secret réside dans la clé.
Caractéristiques :
dans le sens inverse. La seule manière de pouvoir réaliser le calcul inverse est de connaître une
trappe. Une trappe peut par exemple être un faille dans le générateur de clés. Cette faille peut être
soit accidentelle ou intentionnelle de la part du concepteur.
– Les algorithmes se basent sur des concepts mathématiques tels que l’exponentiation de grands
nombres premiers (RSA), le problème des logarithmes discrets (ElGamal), ou encore le problème
du sac à dos (Merkle-Hellman).
– La taille des clés s’étend de 512 bits à 2048 bits en standard. Dans le cas du RSA, une clé de
512 bits n’est plus sûre au sens "militaire" du terme, mais est toujours utilisable de particulier à
particulier.
– Au niveau des performances, le chiffrement par voie asymétrique est environ 1000 fois plus lent que
le chiffrement symétrique.
– Cependant, à l’inverse du chiffrement symétrique où le nombre de clés est le problème majeur, ici,
seules n paires sont nécessaires. En effet, chaque utilisateur possède une paire (SK , PK ) et tous les
transferts de message ont lieu avec ces clés.
– La distribution des clés est grandement facilitée car l’échange de clés secrètes n’est plus nécessaire.
Chaque utilisateur2 conserve sa clé secrète sans jamais la divulguer. Seule la clé publique devra être
distribuée.
Il est bien entendu que le terme “impossible” n’est pas toujours à prendre au pied de la lettre ! Il s’agit
ici de concepts théoriques. La réalité est quelque peu différente. Ainsi, pour le caractère “sans collision”,
dans les faits, cela est “très difficile” dans le meilleur des cas, mais jamais impossible, comme le bon sens
le laisse penser.
Lorsque l’on parle de “sécuriser un échange”, on souhaite prêter attention aux 3 services suivants : la
confidentialité, l’intégrité et l’authentification.
Signalons la distinction entre “services” (confidentialité, intégrité, etc.) et “mécanismes” (les moyens
utilisés : chiffrement, signature, hachage, etc.).
2 Pour désigner un utilisateur, on emploiera également le terme "entité"
2.5.4.1 Confidentialité
Elle est amenée par le chiffrement du message. Dans le cas de systèmes à clés symétriques, la même
clé est utilisée pour EK (M ) et DK (C). Ce type de chiffrement nécessite un échange sûr préalable de la
clé K entre les entités A et B.
Comme dit précédemment, à l’aide d’un cryptosystème asymétrique, cet échange préalable n’est pas
nécessaire. Chaque entité possède sa propre paire de clés. On aura donc la paire PKA , SKA pour l’entité
A et la paire PKB , SKB pour l’entité B.
En marge de ces deux systèmes, existe également un système appelé "hybride" (figure 2.7), reposant
comme son nom l’indique sur les deux systèmes précédents. Par l’intermédiaire du système à clé publique,
on sécurise l’échange de la clé K. Ensuite, les deux parties ayant acquis de manière sécurisée cette clé de
chiffrement K3 , on utilisera le système à clé symétrique pour chiffrer le message.
2.5.4.2 Intégrité
Il faut ici vérifier si le message n’a pas subi de modification durant la communication. C’est ici
qu’interviennent les fonctions de hachage.
Dans la figure 2.8, on ne parle pas de l’envoi du message. On prête uniquement l’attention à la
vérification de l’intégrité.
2.5.4.3 Authentification
Elle a lieu à plusieurs niveaux.
– Au niveau des parties communicantes, dans le cas d’un système symétrique (figure 2.9) ou asy-
métrique (figure2.10). A la première figure, Ra est une nonce (p. ex. nombre aléatoire), propre à
l’utilisateur A. Les lettres A et B représentent des identificateurs personnels.
A la seconde figure, la clé de chiffrement utilisée est bien la clé privée. Comme le propriétaire de
cette clé est le seul à la connaitre, cela prouve qu’il est bien la personne ayant chiffré le message.
Attention, dans cet exemple, seule l’authentification est souhaitée. Le message envoyé pourra être
lu par toute personne possédant la clé publique, c’est-à-dire, n’importe qui. La confidentialité est
ici nulle.
– Au niveau du message
– Par l’utilisation d’un MAC (Message Authentication Code) généré à l’aide d’un cryptosystème
à clé symétrique où le MAC est constitué des derniers digits de C (figure 2.11), ou généré à
l’aide d’une fonction de hachage (figure 2.12), la clé secrète K utilisée étant partagée par les deux
entités A et B. Dans les deux cas, l’authentification repose sur l’utilisation de la clé K.
– Par l’utilisation d’une signature digitale. Parmi les propriétés remarquables de ces signatures, on
peut dire qu’elles doivent être authentiques, infalsifiables, non-réutilisables, non-répudiables, et
inaltérables. Dans la figure 2.13, on fait abstraction de la confidentialité. C’est l’authentification
qui importe.
La cryptographie classique
C = E(p) = (p + k) mod 26
16
3. LA CRYPTOGRAPHIE CLASSIQUE
p = D(C) = (C − k) mod 26
Si on connait l’algorithme utilisé (ici César), la cryptanalyse par force brute est très facile. En effet,
dans le cas du chiffre de César, seules 25 ( !) clés sont possibles.
Exemple : De Zanzibar à la Zambie et au Zaïre, des zones d’ozone font courir les zèbres en zigzags
zinzins.
Pour éviter ce type d’attaque sur un texte chiffré, il existe différents moyens :
L’idée est d’utiliser comme fonction de chiffrement une fonction affine du type
où a et b sont des constantes, et où x et y sont des nombres correspondant aux lettres de l’alphabet
(A=0,B=1,...). On peut remarquer que si a = 1, alors on retrouve le chiffre de César où b est le décalage
(le k du chiffre de César).
Propriété de neutralité : si b = 0, alors "a" est toujours chiffré "A" car il ne subit aucun décalage.
En effet, si aucun décalage n’a lieu, l’alphabet de départ se retrouve chiffré par lui même, et donc ne
subit aucune modification.
Pour le chiffre affine, la clé est constituée de (k1 , k2 ) où k1 , k2 ∈ [0, 25] et telle que
gcd(k1 , 26) = 1.
Par le chiffre affine, on obtient 312 clés possibles. En effet, pour obéir à la propriété de k1 , il n’y a
que 12 choix possibles. Et puisque k2 peut prendre n’importe valeur dans [0, 25], il vient 12 ∗ 26 = 312.
Transformation de chiffrement :
ci = f (mi ) = 3 ∗ mi + 11 mod 26
Transformation de déchiffrement :
On dénombre 10 fois la lettre G et 6 fois la lettre H. Supposons que le langage original du texte est
l’anglais.
2. Sur base de l’analyse de fréquences, il faut ensuite dériver les équations correspondantes. D’après
divers relevés statistiques, E et T sont les lettres les plus fréquentes en anglais.
On en déduit les équations suivantes :
E → G ⇒ f (E) = G
T → H ⇒ f (T ) = H
Il en découle que :
4 → 6 ⇒ f (4) = 6
19 → 7 ⇒ f (19) = 7
3. On peut maintenant résoudre les équations pour que retrouver k1 et k2 .
f (4) = 6, f (19) = 7
4 ∗ k1 + k2 ≡ 6(mod26)
19 ∗ k1 + k2 ≡ 7(mod26)
↓
15k1 ≡ 1 mod 26
↓
k1 = 7 ⇒ k2 = 4.
Il y a 4 règles à appliquer selon les deux lettres à chiffrer lors de l’étape de substitution. Pour le
déchiffrement, on procède dans l’ordre inverse.
1. Si les lettres sont sur des "coins", les lettres chiffrées sont les 2 autres coins.
Exemple : OK devient VA, RE devient XI ...
2. Si les lettres sont sur la même ligne, il faut prendre les deux lettres qui les suivent immédiatement
à leur droite.
3. Si les lettres sont sur la même colonne, il faut prendre les deux lettres qui les suivent immédiatement
en dessous.
4. Si elles sont identiques, il faut insérer une nulle (habitellement le X) entre les deux pour éliminer
ce doublon.
Exemple : "balloon" devient "ba" "lx" "lo" "on".
Pour former ces grilles de chiffrement, on utilise un mot-clef secret pour créer un alphabet désordonné
avec lequel on remplit la grille ligne par ligne. Ensuite, on comble la grille avec les lettres restantes de
l’alphabet.
pour chiffrer le message "je vous aime" qu’elle enverra à Bob. Après avoir remplacé les lettres par leur
rang dans l’alphabet (a=1, b=2, etc.), elle obtiendra
C1 ≡ 9 ∗ 10 + 4 ∗ 5(mod26) = 110(mod26) = 6
C2 ≡ 5 ∗ 10 + 7 ∗ 5(mod26) = 85(mod26) = 7
Elle fera de même avec les 3e et 4e lettres, 5e et 6e, etc. Elle obtiendra finalement le résultat de la
figure 3.6.
Pour déchiffrer, le principe est le même que pour le chiffrement : on prend les lettres deux par deux,
puis on les multiplie par une matrice
−1
P1 a b C1
= (mod26)
P2 c d C2
Cette matrice doit être l’inverse de matrice de chiffrement (modulo 26). Ordinairement, cet inverse
est
−1
a b 1 d −b
=
c d ad − bc −c a
Exemple de déchiffrement : Pour déchiffrer le message d’Alice, Bob doit calculer :
−1
9 4 1 7 −4 7 −4
= (mod26) = (43)−1 (mod26)
5 7 43 −5 9 −5 9
Comme gcd(43, 26) = 1, (43)−1 existe dans Z26 et (43)−1 = 23. Bob a la matrice de déchiffrement :
−1
9 4 7 −4 161 − 92 5 12
= 23 (mod26) = (mod26) = (mod26)
5 7 −5 9 −115 207 15 25
Bob prend donc cette matrice pour déchiffrer le message "FGXGE DSPGV". Après avoir remplacé
les lettres par leur rang dans l’alphabet (A=1, B=2, etc.), il obtiendra :
P1 ≡ 5 ∗ 6 + 12 ∗ 7(mod26) = 114(mod26) = 10
P2 ≡ 5 ∗ 6 + 25 ∗ 7(mod26) = 265(mod26) = 5
Il fera de même avec les 3e et 4e lettres, 5e et 6e, etc. Il obtiendra finalement le résultat de la figure
3.7
Exemple : chiffrer le texte "CHIFFRE DE VIGENERE" avec la clef "BACHELIER" (cette clef
est éventuellement répétée plusieurs fois pour être aussi longue que le texte clair)
La grande force du chiffre de Vigenère est que la même lettre sera chiffrée de différentes manières d’où
perte de la fréquence des lettres, ce qui rend inutilisable l’analyse de fréquence classique. La figure 3.9
illustre cette perte des fréquences dans une fable de Lafontaine, codée par substitution simple et par
Vigenère.
Pour utiliser le chiffrement de Vigenère, on a recours au Carré de Vigenère, illustré à la figure 3.10.
La lettre de la clef est dans la colonne la plus à gauche, la lettre du message clair est dans la ligne
tout en haut. La lettre chiffrée est à l’intersection des deux.
L’emploi du carré de Vigenère est souvent sujet à erreurs : la lecture en est pénible et, à la longue,
fatigante. Beaucoup de cryptologues préfèrent se servir d’une "réglette", facile à construire, et d’un
maniement plus rapide.
Exemple : Soit une séquence de 3 lettres répétée dans un message codé avec une distance d. On fait
donc l’hypothèse sensée qu’il s’agit d’une même séquence de 3 lettres du texte initial, codée avec la même
séquence de lettres de la clé. Par conséquent, si m est la longueur de la clé, pour que les 2 séquences
soient codées avec les mêmes lettres de la clé, il faut que m divise d.
On prend donc m comme pgcd des distances de séquences répétées → m est la longueur de la clé ! Il faut
toutefois baser ce raisonnement sur les valeurs significatives, comme cela est illustré par la suite FCS de
la figure 3.11.
Ce renseignement est capital. Cela signifie que les caractères de rang 1, 4, 7, 10, ..., 3k + 1, sont simple-
ment décalés à la manière du chiffre de César. On peut donc appliquer maintenant l’analyse de fréquence
à ces caractères et trouver la première lettre de la clef. Pour la deuxième lettre de la clef, on analysera les
fréquences des caractères de rang 3k + 2 et pour le dernière lettre les fréquences des caractères de rang
3k.
Le test de Friedman (aussi appelé Test Kappa) a pour premier objectif de déterminer si un texte a
été chiffré avec un chiffre monoalphabétique ou polyalphabétique. Comme second bénéfice, il suggère la
longueur du mot-clef si le chiffre est polyalphabétique. Pour réaliser ces buts, le test de Friedman s’appuie
sur l’IC.
Remarques importantes :
– Pour un langage de 26 lettres où chaque lettre a la même fréquence (1/26), l’IC vaut 0.038.
– Pour tout chiffre monoalphabétique, la distribution des fréquences est invariante, donc l’IC sera le
même que pour le texte clair (respect des fréquences).
– Donc, si on applique ce test à un texte chiffré avec un chiffre monoalphabétique, on devrait trouver
IC égal environ à 0.074 (en français). Si IC est beaucoup plus petit (p. ex. 0.050), le chiffre est
probablement polyalphabétique.
PERTQ UDCDJ XESCW MPNLV MIQDI ZTQFV XAKLR PICCP QSHZY DNCPW EAJWS ZG-
CLM QNRDE OHCGE ZTQZY HELEW AUQFR OICWH QMYRR UFGBY QSEPV NEQCS EE-
QWE EAGDS ZDCWE OHYDW QERLM FTCCQ UNCPP QSKPY FEQOI OHGPR EERWI EFSDM
XSYGE UELEH USNLV GPMFV EIVXS USJPW HIEYS NLCDW MCRTZ MICYX MNMFZ QASLZ
QCJPY DSTTK ZEPZR ECMYW OICYG UESIU GIRCE UTYTI ZTJPW HIEYI ETYYH USOFI
XESCW HOGDM ZSNLV QSQPY JSCAV QSQLM QNRLP QSRLM XLCCG AMKPG QLYLY DA-
GEH GERCI RAGEI ZNMGI YBPP
– ...
On calcule ensuite les IC pour toutes ces sous-chaînes, procédé illustré à la figure 3.13.
On remarque que quand l’intervalle est de 5, l’IC correspond plus ou moins avec l’IC caractéristique
du français (en tout cas, c’est cette ligne qui s’approche le plus de 0.074, les autres lignes étant plutôt
proches de 0.038). La longueur de la clef utilisée est donc probablement 5.
D’autre part, si un message en français de longueur n et d’indice de coïncidence IC est chiffré avec
un carré de Vigenère, alors on peut définir r, la longueur du mot-clef composé de lettres distinctes, qui
est donné par la formule suivante
Résultat : BONJOURLATERRE
Résultat : MASQUESJETABLE
3.4 Transpositions
Elles consistent, par définition, à changer l’ordre des lettres. C’est un système simple, mais peu sûre
pour de très brefs messages car il y a peu de variantes. Ainsi, un mot de trois lettres ne pourra être
transposé que dans 6 (=3!) positions différentes. Par exemple, "col" ne peut se transformer qu’en "col",
"clo", "ocl", "olc", "lco" et "loc".
Lorsque le nombre de lettres croît, il devient de plus en plus difficile de retrouver le texte original
sans connaître le procédé de brouillage. Ainsi, une phrase de 35 lettres peut être disposée de 35! = 1040
manières différentes. Ce chiffrement nécessite un procédé rigoureux convenu auparavant entre les parties.
Une transposition rectangulaire consiste à écrire le message dans une grille rectangulaire, puis à
arranger les colonnes de cette grille selon un mot de passe donné (le rang des lettres dans l’alphabet
donne l’agencement des colonnes).
Exemple :
A la figure 3.15, on a choisi comme clef GRAIN pour chiffrer le message SALUT LES PETITS POTS.
En remplissant la grille, on constate qu’il reste deux cases vides, que l’on peut remplir avec des nulles
(ou pas, selon les désirs des correspondants).
La machine Enigma
Enigma est la machine à chiffrer et déchiffrer qu’utilisèrent les armées allemandes du début des années
trente jusqu’à la fin de Seconde Guerre Mondiale. Elle automatise le chiffrement par substitution.
Cette machine ressemble à une machine à écrire. Quand on presse sur une touche, deux choses se passent.
1 Ce nombre représente la période des rotors, et ne tient pas compte des autres combinaisons possibles (connexions,
Premièrement, une lettre s’allume sur un panneau lumineux : c’est la lettre chiffrée. Deuxièmement, un
mécanisme fait tourner le rotor de droite d’un cran ; toutes les 26 frappes, le deuxième rotor tourne d’un
cran, toutes les 676 frappes (26 au carré), c’est le troisième rotor qui tourne d’un cran. Certaines Enigmas
avaient 3 rotors, celles de la Kriegsmarine en avaient 4 ou 5 (on peut apercevoir ces 4 cylindres gris sur
le dessus de la machine ci-dessus).
Ces rotors tournants modifient les connexions électriques dans la machine, ce qui fait que la touche
"A" allumera peut-être le "B" la première fois, mais le "X" la deuxième, le "E" la troisième, etc. Un
"tableau de connexions" et un "réflecteur" complique encore le système. Le côté génial de cette machine
est que même si elle tombe entre les mains ennemies, sa sécurité n’est pas compromise. En effet, c’est
le nombre faramineux de réglages de la machine qui fait sa force et les réglages changeaient évidement
chaque jour. On peut en effet changer l’ordre de rotors, leur orientation initiale et les branchement du
tableau de connexions. Par exemple, on pouvait spécifier la clef du jour ainsi :
Ainsi, connaître le fonctionnement de la machine n’aide (presque) pas à décrypter les messages qu’elle
produit. Tout le problème est de retrouver le bon réglage.
De plus, à chaque fois qu’une lettre est tapée au clavier, le rotor tourne d’un cran. Ainsi, b devient A
la première fois, mais b devient C la deuxième fois, puis b devient E, etc.
Le principe de base des machines Enigma conçues par Scherbius repose sur l’utilisation de rotors
qui transforment l’alphabet clair (noté en minuscules) en alphabet chiffré (en majuscules). Pour mieux
l’illustrer, nous nous limiterons à un alphabet de six lettres. Voici la représentation de l’un de ces fameux
rotors, ainsi que le schéma équivalent qui permet de mieux suivre l’opération "avec les doigts".
Dans notre exemple le mot bac est chiffré ADD (et non ABD si le rotor était resté immobile).
Pour augmenter le nombre de combinaisons possibles et déjouer les tentatives des cryptanalystes,
Scherbius a associé plusieurs dispositifs :
– Le tableau de connexions est utilisé pour brouiller les pistes en reliant deux lettres du clavier entre
elles.
– Les trois brouilleurs associés multiplient ainsi le nombre de combinaisons.
– Quant au réflecteur, il renvoie le courant dans le dispositif jusqu’au panneau lumineux où la lettre
cryptée s’affiche.
Ainsi, quand on tape b, le courant prend en fait le circuit prévu pour a. Le deuxième et le troisième
avancent respectivement d’un cran quand le premier et le deuxième ont fait un tour complet.
Le rôle du réflecteur n’est pas d’augmenter le nombre de combinaisons possibles, mais de faciliter
considérablement la tâche du destinataire. En effet, si b devient C dans notre exemple (en rouge), on a
aussi c devient B. Et c’est valable pour toutes les paires de lettres claire/cryptée. En conséquence, si le
mot "efface" est chiffré "ACBFEB" par l’émetteur, il suffira à l’opérateur qui reçoit le message crypté de
taper acbfeb sur son clavier pour voir les lettres E, F, F, A, C, E s’allumer. La seule condition est que
les deux opérateurs distants règlent leur machine Enigma de la même façon.
Au final, on a :
Avec le temps, les machines Enigma furent modifiées, et bientôt, les attaques exhaustives devinrent
trop lourdes. Mais deux méthodes furent encore utilisées :
– Test de mots courants (« wetter ») : certains termes revenaient régulièrement dans les envois de
message. Ainsi, le bulletin météorologique se transmettait tous les matins à la même heure. Le
terme "wetter" (= météo en Allemand) permettait d’obtenir des renseignements sur la façon dont
était chiffrer les lettres. Et ces dispositions pouvaient être testées avec les Bombes, ce qui réduisait
l’espace des clés possibles.
– Test de cillies : mois après mois, les envois devenaient répétitifs pour les Allemands. Certains des
transcripteurs finirent par utiliser des clés de moins en moins sophistiquées, la plupart du temps,
des suites de lettres au clavier (ex : azert, poiu, bhunji, etc.). Ces cillies permirent de retrouver les
clés de chiffrement plus facilement.
Compléments mathématiques
On la définit également comme le nombre de bits de texte clair qui doivent être retrouvés pour retrou-
ver le texte en clair en entier. Plus l’entropie est élevée, plus il y a d’incertitude et donc d’information
liée à la source.
En anglais, R = log2 26 = 4, 7 bits par lettre. Cependant, il s’agit d’une valeur théorique, le langage
réel est plus redondant.
D =R−r
32
4. COMPLÉMENTS MATHÉMATIQUES
On définit la notion de confidentialité parfaite par le fait que le texte chiffré ne doit fournir aucune
information concernant le texte clair :
– Shannon a prouvé que ce résultat est accessible uniquement si le nombre de clés possibles est aussi
grand que le nombre de messages possibles.
– En pratique, seul le masque jetable y correspond car la longueur de la clé est égale à la longueur
du texte et que la clé n’est pas réutilisée.
Le but des cryptanalystes est de déterminer la clef K, le texte clair M ou les deux. Souvent, ils possèdent
des indices au sujet de M (i.e. s’il s’agit d’un son, d’un texte français, de données pour un tableur, etc.).
Ils connaissent probablement le langage du texte en clair. Ce langage a une certaine redondance associée.
Si c’est un message destiné à Bob, il commence probablement par « cher Bob ».
Le but de la cryptanalyse est, par analyse, de modifier les probabilités associées avec tous les textes en
clair possibles. Finalement, un texte clair considéré comme certain émergera du paquet des textes clairs
possibles.
On a :
1 1
P (K = k) = = m
n 26
On veut prouver que la découverte du texte clair connaissant le texte chiffré est égale à la connaissance
du texte clair (propriété issue de Vernam), c’est-à-dire :
P (M = x|C = y) = P (M = x)
Par définition, on a
P (M = x, C = y)
P (M = x|C = y) =
P (C = y)
or on sait que C, K et M sont liés par la relation C=M+K (l’addition se faisant modulo 26). On obtient
donc :
P (M = x, C = y) = P (M = x, K = y − x)
= P (M = x)P (K = y − x)
P (M = x)
=
26m
où on a utilisé le fait que M et K sont indépendants. D’autre part,
X
P (C = y) = P (mi AN D ki )
i
X
= P (ki )P (mi )
i
X P (mi )
=
i 26m
1
= m
26
en utilisant le fait que M et K sont indépendants, et que la somme des probabilités de mi est égale à 1.
Ceci achève la démonstration.
De plus,
P (M |C) = P (M ) ⇒ P (C|M ) = P (C)
car I(C; M ) = 0 (ce qui signifie que C et M sont indépendants). On en déduit également que :
H(K) ≥ H(M )
L’interprétation de ce théorème est que dans un cryptosystème parfait, il y a au moins autant d’in-
certitude sur les clés que sur les messages. En conséquence, dans un tel système, les clés sont aussi
volumineuses que les messages.
Remarques :
La distance d’unicité indique la longueur minimale de texte chiffré pour laquelle il est probable qu’il
n’y ait qu’un seul texte clair plausible correspondant quand une attaque exhaustive est menée.
Des textes chiffrés significativement plus courts que cette distance ont des chances d’avoir plusieurs
déchiffrements également valables et donc augmentent la sécurité, car il est difficile à l’attaquant de choi-
sir le bon déchiffrement.
La distance d’unicité n’est pas une mesure de la quantité de texte chiffré qu’il faut pour la cryptana-
lyse mais bien de la quantité de texte chiffré nécessaire pour qu’il n’y ait qu’une solution raisonnable à
la cryptanalyse.
H(K|(C1 , ..., Cd )) = 0
D’autre part, on a :
La valeur de "d" désigne le nombre moyen de lettres du message chiffré qu’il faut connaître pour
pouvoir déterminer la clé. Connaître la clé et le message chiffré équivaut à connaître la clé et le message
en clair.
D’où :
On a donc :
H(K) + H(M1 , ..., Md ) − H(C1 , ..., Cd ) = 0
Par la définition de la redondance d’un langage, on constate que :
Par analyse statistique sur de nombreux textes français, on a obtenu une valeur pour r ≈ 3, 97.
et R ≈ 4, 67.
On en déduit que
H(K) log(26!)
U' = ' 126
R−r 4.67 − 3.97
En pratique, il faudra effectivement de l’ordre de ce nombre de lettres pour retrouver la clé.
Tab. 4.1 – Distance d’unicité et longueurs de clé pour un texte ASCII (D=6.8).
Remarques :
– Nous avons présenté la notion de distance d’unicité au départ des caractères. D’une façon plus
générale, on peut parler de textes chiffrés. Dans ce cas, les Mi correspondent à des textes clairs
distincts, et Ci aux textes chiffrés correspondants.
– U est donne le nombre de messages suffisants pour pouvoir retrouver la clé. Elle ne donne pas de
renseignements concernant la difficulté d’obtention de la clé.
Cette section exprime un autre point de vue sur le cassage des algorithmes de chiffrement. Jusqu’ici,
la théorie de l’information nous apprenait que tous les algorithmes peuvent être cassés. Avec la théorie
de la complexité, on apprend s’ils peuvent être cassés avant la fin du monde.
Fig. 4.1 – Temps nécessaire pour “casser” un algorithme selon son ordre.
La complexité des problèmes détermine les temps et espaces minimaux nécessaires pour résoudre
l’instance la plus difficile du problème sur un ordinateur théorique (appelée Machine de Turing). Il s’agit
d’une machine à états finis avec une mémoire en écriture et en lecture sous la forme d’un ruban infini.
Les problèmes qui peuvent être résolus avec des algorithmes polynomiaux en temps sont appelés so-
lubles, car ils peuvent généralement être résolus en un temps raisonnable. Les problèmes qui ne peuvent
être résolus en temps polynomial sont appelés non solubles car calculer leur solution devient vite impos-
sible. Il s’agit souvent des problèmes résolus par des algorithmes exponentiels.
Dans le cadre de ce chapitre, nous citerons deux ensembles de problèmes (appelés Classes).
– La classe P, qui contient les problèmes résolus en temps polynomial sur une MT.
– La classe NP, qui contient les problèmes résolus en temps polynomial sur une MTND.
Une MTND (Machine de Turing Non Déterministe) est une variante de la machine de Turing normale
qui devine les solutions. La machine devine une solution d’un problème, soit en faisant par chance une
bonne hypothèse, soit en essayant toutes les possibilités en parallèle. Elle vérifie son hypothèse en un
temps polynomial. Ainsi, la vérification du problème se fait en un temps polynomial, mais le fait d’essayer
toutes les possibilités apporte un nombre de cas à explorer très grand, ce qui rend l’algorithme inefficace.
Remarque importante : on n’a pas trouvé d’algorithmes polynomiaux résolvant ces problèmes mais
on n’a pas prouvé qu’il n’en existait pas.
A l’heure actuelle, on ne sait pas si SAT se situe dans P ou dans NP. On le place donc dans une
autre classe, incluse dans NP, appelée Classe NP-Complet. Les problèmes équivalents au problème SAT
forment cet ensemble des problèmes de la classe NP-Complet. Cette relation est issue du théorème de
Cook.
Théorème 2 (Théorème de Cook) Tout problème NP peut être réduit au problème de la satisfaisa-
bilité en un temps polynomial.
Objectifs en cryptographie :
Remarques :
12 = 1 = 1 mod 7
22 = 4 = 4 mod 7
32 = 9 = 2 mod 7
42 = 16 = 2 mod 7
52 = 25 = 4 mod 7
62 = 36 = 1 mod 7
Chaque résidu quadratique apparaît 2 fois dans la liste. Mais 3,6 et 5 ne satisfont pas cette équation.
ap−1 = 1 mod p
L’intérêt de ce théorème est de déduire un test de non-primalité, et qui, de plus, est très rapide.
Si n ∈ N est donné, soit a tel que (a,n)=1. On calcule alors an−1 . Si an−1 6= 1 mod n alors n n’est
pas premier. Il faut cependant remarquer que cette condition n’est pas nécessaire et suffisante.
avec (k,m)=1. Cela n’est qu’une réécriture mathématique de la définition du totient d’Euler pour un
nombre premier. Pour autant que k soit relativement premier à m, le totient d’Euler d’un nombre pre-
mier m est égal au nombre d’éléments inférieurs à m.
φ(n) = φ(pq)
= φ(p) ∗ φ(q)
= (p − 1)(q − 1)
Démonstration :
φ(n) = φ(p)φ(q)
Soit l’ensemble des résidus de n (Zn ) : 0, 1, ..., (pq − 1). Les résidus qui ne sont pas premiers à n sont les
ensembles p, 2p, ..., (q − 1)p, q, 2q, ..., (p − 1)q et 0.
De la sorte :
φ(n) = pq − [(q − 1) + (p − 1) + 1]
= pq − (p + q) + 1
= (p − 1) ∗ (q − 1)
= φ(p) ∗ φ(q)
C’est une nouvelle technique pour le calcul de l’inverse modulo : x = aφ(n)−1 mod n.
4.3.4.1 Exemple :
Quel est l’inverse de 5 mod 7 ?
Comme 7 est premier, sa fonction totient est φ(7) = 7 − 1 = 6. On a bien (5, 7) = 1, d’où 55 mod 7 =
(5 ∗ 52 ∗ 5) mod 7 = 3.
2
Le système d’équations :
x = a1 mod m1
...
x = an mod mn
admet une unique solution modulo M = m1 ∗ ... ∗ mn donnée par la formule :
x = a1 M1 y1 + ... + an Mn yn mod M
4.3.5.1 Exemple
Une bande de 17 pirates s’est emparée d’un butin composé de pièces d’or d’égale valeur. Ils décident
de se les partager également, et de donner le reste au cuisinier chinois. Celui-ci recevrait alors 3 pièces.
Mais les pirates se querellent, et six d’entre eux sont tués. Le cuisinier recevrait alors 4 pièces.
Dans un naufrage ultérieur, seuls le butin, six pirates et le cuisinier sont sauvés, et le partage donne-
rait alors 5 pièces d’or à ce dernier.
Quelle est la fortune minimale que peut espérer le cuisinier quand il décide d’empoisonner le reste
des pirates ?
x = 3 mod 17.
x = 4 mod 11.
x = 5 mod 6.
On applique alors le théorème chinois :
M = 17 ∗ 11 ∗ 6 = 1122,
M1 = 66,
M2 = 102,
M3 = 187.
L’inverse de chaque Mi donne y1 = 8, y2 = 4, y3 = 1.
Le nombre a porte le nom de témoin. Ce test doit être répéter pour plusieurs témoins.
C’est en utilisant ce type de test qu’on fabrique les entiers premiers nécessaires dans les algorithmes
de cryptographie comme le RSA.
Il existe d’autres tests de primalité. Citons par exemple le test de Miller-Rabin, ou plus simplement
le théorème de Fermat, qui est en réalité un test (simple) de primalité.
5.1 Introduction
La cryptographie symétrique utilise la même clé pour les processus de chiffrement et de déchiffre-
ment ; cette clé est le plus souvent appelée "secrète" (en opposition à "privée") car toute la sécurité de
l’ensemble est directement liée au fait que cette clé n’est connue que par l’expéditeur et le destinataire. La
cryptographie symétrique est très utilisée et se caractérise par une grande rapidité (opérations simples,
chiffrement à la volée) et par des implémentations aussi bien software que hardware ce qui accélère net-
tement les débits et autorise son utilisation massive.
– Chiffrement par substitution : Les substitutions consistent à remplacer des symboles ou des
groupes de symboles par d’autres symboles ou groupes de symboles dans le but de créer de la
confusion.
– Chiffrement par transposition : Les transpositions consistent à mélanger les symboles ou les
groupes de symboles d’un message clair suivant des règles prédéfinies pour créer de la diffusion. Ces
règles sont déterminées par la clé de chiffrement. Une suite de transpositions forme une permutation.
– Chiffrement par produit : C’est la combinaison des deux. Le chiffrement par substitution ou par
transposition ne fournit pas un haut niveau de sécurité, mais en combinant ces deux transforma-
tions, on peut obtenir un chiffrement plus robuste. La plupart des algorithmes à clés symétriques
utilisent le chiffrement par produit. On dit qu’un « round » est complété lorsque les deux transfor-
mations ont été faites une fois (substitution et transposition).
Ces successions des rondes portent également le nom de réseaux S-P de Shannon.
42
5. LE CHIFFREMENT PAR BLOCS
Effet d’avalanche
C’est une propriété des chiffrements par blocs composés de couches (layers) ou "rounds" caractérisés
par un petit changement à l’entrée. Le changement d’un simple bit d’entrée produit généralement de
multiples changements de bits après un round, plusieurs autres changements de bits après un autre
round jusqu’au changement éventuel de la moitié du bloc.
Dans une construction de Feistel (figure 5.4), le bloc d’entrée d’un round est séparé en deux parties.
La fonction de chiffrement est appliquée sur la première partie du bloc et l’opération binaire OU-Exclusif
(⊕) est appliquée sur la partie sortante de la fonction et la deuxième partie. Ensuite les deux parties sont
permutées et le prochain round commence.
L’avantage est que la fonction de chiffrement et la fonction de déchiffrement sont identiques. Ainsi la
fonction n’a pas à être inversible, c’est la structure qui l’est.
5.2.1 Exemple
A partir d’une table de correspondance, on peut déterminer le résultat du chiffrement d’un bloc après
passage dans une structure de Feistel. C’est ce qui est illustré aux figures 5.6 et 5.7
Particularités
Le DES comporte plusieurs avantages qui en ont fait l’algorithme de chiffrement symétrique standard
pendant longtemps, jusqu’il y a quelques années. En voici quelques-uns :
C’est un algorithme de chiffrement à clef secrète. La clef sert donc à la fois à chiffrer et à déchiffrer
le message. Cette clef a ici une longueur de 64 bits, c’est-à-dire 8 caractères, mais dont seulement 56
bits sont utilisés. On peut donc éventuellement imaginer un programme testant l’intégrité de la clef en
exploitant ces bits inutilisés comme bits de contrôle de parité.
L’entière sécurité de l’algorithme repose sur les clefs puisque l’algorithme est parfaitement connu de
tous. La clef de 64 bits est utilisée pour générer 16 autres clefs de 48 bits chacune qu’on utilisera lors de
chacune des 16 itérations du D.E.S.. Ces clefs sont les mêmes quel que soit le bloc qu’on code dans un
message.
Cet algorithme est relativement facile à réaliser matériellement et certaines puces chiffrent jusqu’à
1 Go de données par seconde. Pour les industriels, c’est un point important notamment face à des
algorithmes asymétriques, plus lents, tels que l’algorithme R.S.A.
1. Permutation initiale
2. Calcul médian (16 fois) : application d’un algorithme complexe appliqué en fonction de la clé
3. Permutation finale
Cette "matrice" permet d’effectuer des changements internes au bloc (i.e. il n’y a pas d’apport de
données extérieures). Le premier bit sera le bit 58, le second le bit 50, etc.
Itérations :
– Ln = Rn−1
– Rn = Ln−1 ⊕ F (Rn−1 , Kn )
– Kn = G(K, n)
avec
– Tn = Ln Rn
– Ln = t1 ...t32
– Rn = t33 ...t64
Le calcul médian s’effectue en 16 itérations. Le détail de la fonction F est donné à la figure 5.11. On
traite 2 blocs simultanément : un bloc de 32 bits (données) et un bloc de 48 bits (clés). Le résultat forme
un bloc de 32 bits.
Expansion : Les 32 bits sont étendus à 48 bits grâce à une table d’expansion (également appelée
matrice d’extansion). On retrouve ici un effet d’avalanche.
E(Ri−1 ) ⊕ Ki = B1 B2 . . . B8
B j = b1 b2 b3 b4 b5 b6 .
– b1 b6 = n˚ de ligne
– b2 b3 b4 b5 = n˚ de colonne
1. Réduction à 56 bits : les bits de parité sont enlevés. On procède ensuite à une permutation semblable
à celle de la figure 5.20.
2. Division en sous-clés de 28 bits : le résultat de l’étape précédente (56 bits) est scindé en deux
sous-clés de 28 bits.
3. Rotation de la clé : à chaque itération, chaque sous-clé de 28 bits subit une rotation d’1 ou 2 bits
vers la gauche selon la table de la figure 5.21,
4. Réduction : après concaténation des deux sous-clés précédentes, la clé résultante (56 bits) est réduite
à une sous-clé de 48 bits sur base de la matrice de la figure 5.22,
5.3.4 Déchiffrement
Il suffit d’appliquer le même algorithme mais inversé en tenant bien compte du fait que chaque itéra-
tion du déchiffrement traite les mêmes paires de blocs utilisés dans le chiffrement.
Il viendra
Rn−1 = Ln et Ln−1 = Rn ⊕ f (Ln , Kn )
– La recherche exhaustive par force brute : on teste toutes les clés possibles, l’une après l’autre, afin
de déchiffrer un bloc de données. On a besoin, en moyenne, de 255 essais.
– Une machine dédiée au calcul des clés (force brute) : Deep Crack (Des Cracker) a coûté moins de
210’000 dollars. Elle disposait de 1850 processeurs en parallèles pour un temps de recherche moyen
situé entre 4 et 5 jours (1998).
– Le calcul distribué (force brute) : un regroupement d’ordinateurs par Internet qui partagent leur
puissance de calcul. En 1997, Distributed.net a trouvé la clé en 96 jours. Le 19 janvier 1999, RSA
Labs (EFF et Distributed.net), a cassé une clé en moins de 23 heures.
– Cryptanalyse différentielle : il s’agit de la possibilité de produire au moyen de textes clairs choisis
les textes chiffrés correspondants avec une clé inconnue. On analyse les différences résultantes sur
les textes chiffrés et on donne des probabilités aux clés testées. En affinant, on trouve la clé la plus
probable. La meilleure attaque différentielle connue demande 247 textes clairs choisis
– Cryptanalyse linéaire : on dispose d’un dictionnaire de (M,C). On ne possède pas la « boite noire »
comme dans le cas différentiel. L’objectif est de déterminer une équation linéaire modélisant au
mieux les transformations du texte créés par l’algorithme de chiffrement.
– Il existe d’autres attaques spécifiques au DES (Davie’s attack, ou des attaques sur des versions
simplifiées du DES) mais qui n’entrent pas dans le cadre de ce cours.
Conclusion :
Le DES ne permet pas le chiffrement de données sensibles (militaires, politiques), mais peut être
utilisé pour chiffrer de simples données.
5.4.4 2DES
Suite aux failles du DES, quelques modifications ont été apportées, mais pas toujours avec succès. Ce
fut notamment le cas avec le 2DES.
Il faut tout d’abord choisir deux clefs k1 et k2 . Le principe du 2DES est de chiffrer deux fois le
message :
E(k2 , E(k1 , m))
Il a été prouvé que 2DES était équivalent à un DES avec une clé de 57 bits. Il faut donc seulement
deux fois plus de travail pour le briser (257 = 2 ∗ 256 ).
K3 = K1 et K4 = K2
5.4.5 3DES
Grâce à 2 clefs, on pratique 3 opérations :
C’est équivalent au fait de doubler la taille effective de la clé (ce qui est une longueur sûre actuellement).
Il existe deux versions : la première utilise deux clés (cas de figure présenté ici), la seconde trois (le dernier
chiffrement utilise une troisième clé).
Il est très robuste contre toutes les attaques faisables connues. Cependant, il est beaucoup plus lent
que le DES car on triple les opérations.
– Sécurité :
– Effacement des formats standards (ex. l’introduction d’un texte).
– Protection contre la modification de C.
– Chiffrement de plusieurs messages avec la même clé.
– Efficacité :
– L’utilisation d’un mode cryptographique ne doit pas pénaliser l’efficacité du cryptosystème.
– Limitation de la propagation des erreurs qui apparaissent dans M ou C.
5.5.1.1 Sécurité :
+/- indépendance des blocs
- conservation des formats m = m0 ⇒ c = c0
- clé non-réutilisable
5.5.1.2 Efficacité :
+ parallélisme possible
+ accès aléatoire possible
+ bonne vitesse de chiffrement
- pas de préprocessing
5.5.2.1 Sécurité :
+ IV unique et aléatoire
+ effacement des formats grâce à l’enchaînement (si IV différents)
+ il n’y a plus de risque de répétition de bloc
+ clé réutilisable (si IV différents)
+ si mi = m0i , alors ci 6= c0i (avec même K et IV différents)
5.5.2.2 Efficacité :
+ même vitesse de chiffrement que ECB
- pas de préprocessing
- pas de parallélisme
- IV connu des 2 cotés (problème pour sa communication)
Soit C1 perdu :
M1 = DK (C2 ) ⊕ IV
M2 = DK (C3 ) ⊕ C2
+ une erreur dans mi affecte tous les ci suivants mais ne se retrouve que dans le mi correspondant
- une erreur dans ci affecte un bloc entier de mi et le bit correspondant dans mi+1
- la perte ou l’ajout d’un bit de ci affecte tous les blocs mi , mi+1 , ... suivants (perte des limites de bloc)
5.5.3.1 Sécurité :
+ même fonction pour le chiffrement et le déchiffrement
+ pas de répétition de bloc si IV différents
+ effacement du format standard
5.5.3.2 Efficacité :
+ même vitesse de chiffrement que ECB
+ CFB peut débuter le chiffrement après réception de sous-blocs ⇒ utilisation réseaux
- pas de préprocessing
- pas de parallélisme
5.5.4.1 Sécurité :
+ IV unique et aléatoire
+ effacement du format de M
+ clé réutilisable
+ pas de répétition de blocs
- le chiffrement ne consiste qu’en un XOR
5.5.4.2 Efficacité :
+ même vitesse de chiffrement
+ préprocessing
- pas de parallélisme
5.5.5.1 Sécurité :
+ Sécurité démontrable
5.5.5.2 Efficacité :
+ Parallélisme
+ Accès aléatoire possible
+ préprocessing possible
Le Triple DES demeure toutefois une norme acceptée pour les documents gouvernementaux aux
U.S.A. Pour l’instant, il n’y a pas de projet ou d’obligation de rechiffrer les documents existants.
– La sécurité générale,
– Le coût en terme de calculs (rapidité),
– La simplicité de l’algorithme et ses facilités d’implémentation,
– Une lecture facile de l’algorithme, puisqu’il est destiné à être rendu public,
– La résistance aux attaques connues,
– Flexibilité - Portabilité : l’algorithme devant remplacer le DES, il est destiné à servir aussi bien
dans les cartes à puces, aux processeurs 8 bits peu puissants, que dans des processeurs spécialisés
pour chiffrer des miliers de télécommunications à la volée.
– Techniquement, le chiffrement doit se faire par blocs de 128 bits, les clés comportant 128, 192 ou
256 bits.
N b = Lbloc /32
N k = Lclef /32
Une colonne du tableau correspond à un mot de 32 bits. Ainsi, chaque petit bloc représente 8 bits, donc
1 octet. L’input et l’output sont donc gérés comme des séquences linéaires d’octets.
SubByte
Les octets sont transformés en appliquant une S-Box inversible (afin de permettre un déchiffrement
unique). Une seule S-Box est suffisante pour toute la phase de chiffrement.
ShiftRow
Cette étape augmente la diffusion dans la ronde.
Selon la taille des blocs de message (c’est-à-dire la valeur de Nb), les décalages ne seront pas toujours
identiques.
– La ligne 0 n’est jamais décalée,
– La ligne 1 est décalée de C1 ,
– La ligne 2 est décalée de C2 ,
– La ligne 3 est décalée de C3 .
MixColumn
Une différence sur 1 byte d’entrée se propage sur les 4 bytes de sortie. On a donc encore une étape
de diffusion. La matrice utilisée est définie par Rijndael. Elle contiendra toujours ces valeurs.
Nombre de rondes
Selon la taille des blocs à traiter et la taille de la clé, le nombre de rondes évolue.
Le nombre de sous-blocs ki dépendra bien sûr de la taille des clé et bloc du message.
Extension de la clé
Le calcul de l’expansion de la clé se fait de deux manières distinctes selon le sous-bloc de la clé
concerné, comme l’illustrent les figures 5.45 et 5.46.
L’ajout de "Rcon[x]" donne comme résultat un ⊕ sur les bits les plus significatifs. La table utilisée
pour donner les valeurs de Rcon[] est donnée à la figure 5.47.
RC[1] = 1
RC[j] = 2.RC[j − 1]
1 Il est à noter que la multiplication est définie sur le champs fini GF (28 ).
Chiffrement de flux
– Le chiffrement par blocs : l’opération de chiffrement s’effectue sur des blocs de texte clair (ex : le
DES avec des blocs de 64 bits).
– Le chiffrement par flots (ou par stream ou de flux) : l’opération de chiffrement s’opère sur chaque
élément du texte clair (caractère, bits). On chiffre un bit/caractère à la fois. La structure d’un chif-
frement par stream repose sur un générateur de clés qui produit une séquence de clés k1 , k2 , ..., ki .
En termes de propagation d’erreur, une erreur dans Ci n’affecte qu’1 bit de Mi . La perte ou l’ajout
d’un bit de Ci affecte tous les bits suivants de M après déchiffrement.
Le générateur de clés peut être considéré comme une machine à états finis. Un exemple de ce type de
générateur est le FSR (Feedback Shift Register), illustré à la figure 6.2.
La clé notée sur les schémas 6.1 et 6.2 contient les valeurs d’initialisation et les coefficients (voir
ci-dessous) du FSR.
68
6. CHIFFREMENT DE FLUX
La fonction de retour qui donne la valeur au flip-flop en position m-1 est la suivante :
Les bits de sortie du LFSR constitue la suite pseudo-aléatoire. La qualité du générateur est définie
par sa période de retour, c’est-à-dire la période après laquelle la même série d’output est répétée.
L’initialisation du LFSR (le contenu des flip-flops) et les valeurs des coefficients constituent ce qu’on
nomme communément la clé courte.
Les coefficients ci ont pour valeur 0 ou 1 et définissent les sections qui seront prises en compte par la
fonction. Les valeurs de ces coefficients ainsi que la valeur initiale des éléments du registre sont fixées à
l’avance. Ces valeurs sont représentées par la clé K des schémas 6.1 et 6.2.
Les valeurs des coefficients doivent restés secrètes, tout comme l’initialisation des registres. Dans le
cas contraire, on pourrait observer M bits consécutifs et calculer les suivants. En effet, si ces ci sont
connus, il n’y a que 2M suites différentes associées aux 2M possibilités d’initialisation pour le registre.
Le générateur rétrécissant
Soient deux LFSR dont un est "arbitre" de l’autre. Ainsi, sur la figure 6.6, le LFSR S est responsable
de la sortie du système.
– Si S vaut 1, la valeur de sortie du système est donnée par la valeur du LFSR A.
– Si S vaut 0, la valeur du bit de A est supprimé, et aucune sortie n’est validée.
Ce type de système possède le désavantage d’avoir une flux de sortie assez irrégulier puisque tout
dépend de l’arbitrage de S. Lorsque S supprime la sortie, il faut attendre le coup d’horloge suivant pour
espérer trouver une valeur en sortie.
Une attaque très commune porte le nom d’attaque par corrélation. Le principe est de trouver un LFSR
dont la sortie est corrélée avec la sortie des LFSR utilisés.
f (x1 , x2 , x3 ) = x1 x2 ⊕ (1 + x2 )x3 = x1 x2 ⊕ x2 x3 ⊕ x3
Ce générateur n’est pas sûr car des informations au sujet des LFSR 1 et 3 peuvent être découvertes
à partir d’une étude probabiliste sur le flot de sortie.
Ainsi, notons x1 (t), x2 (t), x3 (t) et z(t) comme étant les sorties respectives du LFSR 1, 2, 3, et du
système. On remarque rapidement que selon la valeur de x2 (t), on peut déduire les valeurs de x1 (t) ou
de x3 (t) avec une probabilité de 3/4.
En effet, il vient
P (z(t) = x1 (t)) = P (x2 (t) = 1) + P (x2 (t) = 0).P (x3 (t) = x1 (t))
= 1/2 + 1/2 ∗ 1/2
= 3/4
et réciproquement
P (z(t) = x3 (t)) = P (x2 (t) = 0) + P (x2 (t) = 1).P (x3 (t) = x1 (t))
= 1/2 + 1/2 ∗ 1/2
= 3/4
L’attaque consiste alors à analyser les valeurs de la clé du LFSR 1 (ou du LFSR 3), et de vérifier que
sa sortie correspond à celle de la sortie du système dans 75% des cas. Si on crée la table d’états pour les
valeurs de bit x1 , x2 et x3 , on voit que c’est bien le cas.
6.3 RC4
Il s’agit d’un chiffrement par flux créé en 1987 par Ron Rivest1 . Diverses analyses ont démontré que
la période du générateur est supérieure à 10100 .
Il s’agit probablement du chiffrement par flots le plus utilisé actuellement. On le retrouve notamment
dans le standard SSL/TLS, dans Oracle Secure SQL, ou encore dans le protocole WEP (Wired Equiva-
lent Privacy, de la norme 802.11). Ce dernier fut remplacé par le WPA (Wi-Fi Protected Access), mais
celui-ci utilise toujours le RC4.
Initialement gardé secret par la RSA, cet algorithme a été publié anonymement en 1994 sur Internet.
Il existe une version allégée du chiffrement RC4, portant le nom de ARC4 (Alleged RC4), utilisable lé-
galement. Le RC4 reste la propriété de RSA Labs.
Un chiffrement par RC4 est très rapide, comme le montre le tableau 6.1
6.3.1.1 Initialisation
Initialement, les cellules de S reçoivent une valeur égale à leur position (i.e., S[0]=0, S[1]=1, ...) Un
vecteur temporaire de longueur T (de longueur égale à S) est également créé destiné à recevoir la clé. Si
la longueur de la clé K est égale à 256 octets, K est simplement transféré dans T. Si K est inférieur à
256 octets, il est recopié dans T jusqu’à atteindre la taille de T. Ce procédé est illustré au point (a). On
peut également le représenter algorithmiquement comme suit :
FOR i = 0 TO 255 DO
S[i] = i;
T[i] = K[i mod keylen];
Le vecteur temporaire T est ensuite utiliser pour produire la permutation initiale de S. Pour chaque
cellule S[i] de S, celle-ci sera échangée avec une autre cellule de S selon un calcul basé sur la valeur
comprise dans la cellule T[i] correspondante. Le point (b) illustre cette phase. Tout comme l’initialisation
des vecteurs, on peut représenter la permutation initiale de S par un algorithme :
j = 0;
FOR i = 0 TO 255 DO
j = (j + S[i] + T[i]) mod 256;
SWAP(S[i], S[j]);
Ces deux portions de code portent le nom de KSA (Key Schedule Algorithm).
i, j = 0;
WHILE (true)
i = (i + 1) mod 256;
j = (j + S[i]) mod 256;
SWAP (S[i], S[j]);
t = (S[i] + S[j]) mod 256;
k = S[t];
La valeur de k est alors utilisée pour le chiffrement (⊕ avec le prochain octet de texte clair), ou pour
le déchiffrement (⊕ avec le prochain octet de texte chiffré).
Il semblerait que le RC4 soit toujours sûre pour autant que certaines conditions soient remplies au
niveau de la clé d’initialisation :
On utilisera par exemple la construction HMAC pour réaliser une telle procédure.
7.1 Concept
Dans le cas des systèmes symétriques, on utilise une même clé pour le chiffrement et le déchiffrement.
Le problème repose dans la transmission de la clé : il faut une clé par destinataire. Dans le cas des systèmes
asymétriques, chaque personne possède 2 clés distinctes (une privée, une publique) avec impossibilité de
déduire la clé privée à partir de la clé publique. De ce fait, il est possible de distribuer librement cette
dernière.
Le concept date officiellement de 1976 de Diffie et Hellman. Officieusement, les bases existent depuis
1969 par Ellis. La première implémentation a lieu en 1978 par Rivest, Shamir et Adleman sous la forme
de l’algorithme RSA bien que, là aussi, les fondements de ce système datent de 1973, par Cocks.
76
7. LE CHIFFREMENT PAR CLÉ PUBLIQUE
La recherche des clés par force brute est toujours théoriquement possible mais les clefs utilisées sont
trop grandes (> 512bits). La sécurité se fonde sur une assez grande différence en termes de difficulté entre
les problèmes faciles (déchiffrement) et difficiles (décryptement) :
– généralement le problème difficile est connu, mais il est trop complexe à résoudre en pratique,
– La génération des clés exige l’utilisation de très grands nombres.
7.2 Merkle-Hellman
7.2.1 Définition du problème
Soit un havresac de capacité T et un ensemble S d’objets occupant les espaces S =P{a1 , a2 , a3 , ..., an }.
Il faut trouver un vecteur de sélection V = {v1 , v2 , v3 , ..., vn } satisfaisant la relation (ai ∗ vi ) = T.
Ce problème n’a pas toujours une solution. Aussi, si T et S sont très grands, il est beaucoup plus
difficile de trouver le vecteur associé.
Exemple : Soit S = {17, 38, 73, 4, 11, 1} et T = 53 = 38 + 4 + 11. Donc V = {0, 1, 0, 1, 1, 0}.
Pour T = 45, il n’y a pas de solution.
Exemple :
M: 1 1 1 0 0 1 0 1 0 1 1 0
Tas : 1 5 6 11 14 20 1 5 6 11 14 20
C: 1+5+6+20 = 32 5+11+14 = 30
L’empilement facile peut être transformé pour créer un empilement difficile. Pour la clé publique, on
utilisera un empilement difficile qui servira à chiffrer. La clé privée quant à elle, utilisera un empilement
facile, qui donne un moyen simple de déchiffrer les messages. Bien sûr, ceux qui ne connaissent pas la clé
privée sont obligés de résoudre le problème d’empilement difficile, ce qui est infaisable en pratique.
– Si le poids total est inférieur à ce nombre, alors celui-ci n’est pas dans le tas. On recommence
l’opération avec le nombre suivant dans le tas (qui, par définition de la suite, sera plus petit)
– Si le poids total est supérieur à ce nombre, alors celui-ci est dans le tas
2. Réduire le poids du tas à créer de ce nombre et passer au plus grand nombre suivant de la suite.
3. Répéter jusqu’à ce que ce soit terminé.
4. Si le poids total a pu être ramené à 0 : il y a une solution.
Le cryptosystème de Merkle-Hellman exploite cette propriété. La clé privée est une suite de poids
super-croissante. A partir de celle-ci, on calcule la clé publique. Ce calcul consiste à prendre la suite
super-croissante, et à la multiplier par (n modulo m), avec m supérieur à la somme de tous les termes de
la suite, et n ne devant avoir aucun facteur commun avec m.
7.2.4 Algorithme
Le chiffrement consiste à additionner les termes où un 1 apparaît. Pour le déchiffrement, on calcule
n−1 tel que
n ∗ n−1 ≡ 1 mod m
Ensuite, on multiplie chaque valeur du texte chiffré par n−1 mod m.
En pratique, les sacs contiennent environ 250 éléments. Et chaque terme a une longueur de 200 à 400
bits. Le module a une longueur de 100 à 200 bits.
Exemple de calcul de la clé publique Soit S, une séquence super-croissante de h entiers : par
exemple S = {1, 2, 4, 9}.
– 1 ∗ 15 mod 17 ⇒ 15
– 2 ∗ 15 mod 17 ⇒ 13
– 4 ∗ 15 mod 17 ⇒ 9
– 9 ∗ 15 mod 17 ⇒ 16
Le havresac difficile est donc H = {15, 13, 9, 16}, et représente la clé publique.
Le message est ainsi traité comme une séquence de bits :
P = [p1 , p2 , p3 , ..., pk ]
Le message chiffré est donc {13, 40, 24, 29} en utilisant le havresac public (la clef publique) H = [15, 13,
9, 16].
Pour le déchiffrement, le destinataire légitime connaît le havresac simple S et les valeurs de n et de
m. Il peut donc déterminer n−1 .
et le texte en clair est 0100 1011 1010 0101 ⇒ 0100101110100101. On a donc bien retrouvé le texte
original.
7.2.5 Sécurité
Plusieurs failles ont été découvertes, qui ont rendu l’algorithme obsolète.
Herlestam a démontré en 1978 qu’un bit de texte clair pouvait souvent être retrouvé.
Malgré les modifications apportées à l’algorithme à la suite de ces découvertes, des travaux de Shamir
(1982-84) et Brickell (1985) ont poussé à l’abandon de cet algorithme.
C = M e mod n
2 Cette propriété sera à nouveau évoquée dans le chapitre portant sur l’authentification.
et le déchiffrement par
M = C d mod n.
La sécurité repose sur le coût nécessaire pour factoriser de grands nombres. Le nombre de factorisation
prend environ O(elog n log(log n)) ) opérations ce qui demande un temps de calcul trop important pour les
machines actuelles, dans un cadre privé. On l’utilise pour la confidentialité, l’authentification, ou encore
une combinaison des 2.
7.3.1 Principes
On possède une paire de clés, l’une publique (e,n) et une privée (d,n). La première étape revient à
choisir n. Il doit s’agir d’une valeur assez élevée, produit de 2 nombres premiers très grands p et q. En
pratique, si p et q ont 100 chiffres décimaux, n possèdera 200 chiffres. Selon le niveau de sécurité souhaité,
la taille de n peut varier : 512 bits, 768, 1024 ou 20483 .
Dans un second temps, on choisira un très grand entier e, relativement premier à (p-1)*(q-1). La clé
publique sera formée par (e,n). On choisira ensuite un d tel que
e ∗ d ≡ 1 mod (Φ(n)).
Dernière phase : on jette p et q. Le cryptanalyste devant retrouver ces valeurs, il faut les détruire
pour éviter les fuites.
aΦ(n) ≡ 1 mod n
et
aΦ(n) mod n = 1
où (a,n)=1.
Dans le RSA, on a n = p ∗ q. De plus, Φ(n) donne le nombre d’entiers positifs plus petits que n et
relativement premiers à n (si p est premier, Φ(p) = p − 1). Si n = p ∗ q, avec p et q premiers, il vient
pour un certain k.
7.3.2 Résumé
1. Génération de 2 nombres premiers p et q
2. Calcul de n = p*q
3. Déterminer e tel que 3 < e < Φ(n) et (e, Φ(n)) = 1
4. Calculer d tel que e ∗ d ≡ 1 mod Φ(n)
5. Clé publique : (e,n)
6. Clé privée : (d,n)
7. p et q doivent rester secrets, voire supprimés
8. C = M e mod n et M = C d mod n
Exemple :
Soient p = 31, q = 53 c’est-à-dire n=1643. Φ(n) = 1560 (nombre d’éléments relativement premiers à
n et < n).
Soit e = 11 (par exemple, et on a bien (e,Φ(n))=1 ).
On détermine que d = 851 (inverse modulaire de e sur ZΦ(n) ).
La clé publique est donc (11,1643) et la clé privée est (851,1643).
01 14 05 13 15 14 05
Lors du chiffrement, on a
et pour le déchiffrement,
Lors du déchiffrement, sachant qu’il faut obtenir des blocs de 2 éléments (grâce au codage particulier
de l’exemple), on a bien
01 14 05 13 15 14 05
A N E M O N E
7.3.2.1 Remarques
Il n’est pas très astucieux de choisir d’aussi petites valeurs car on peut retrouver d très facilement.
En pratique, il faut prendre de très grandes valeurs de p et q. Pour retrouver ces grandes valeurs, il
faudra alors utiliser le Jacobien et le test de Solovay-Strassen par exemple.
7.3.3 Sécurité
7.3.3.1 Attaques
Il existe trois approches pour attaquer le RSA :
– recherche par force brute de la clé (impossible étant donné la taille des données),
– attaques mathématiques (basées sur la difficulté de calculer Φ(n), la factorisation du module n) :
– factoriser n=p*q et par conséquent trouver Φ(n) et puis d,
– déterminer Φ(n) directement et trouver d,
– trouver d directement.
– attaques de synchronisation (sur le fonctionnement du déchiffrement).
A l’heure actuelle, la factorisation connait de lentes améliorations au cours des années. La meilleure
amélioration possible reste l’optimisation des algorithmes. Excepté un changement dramatique, le RSA-
1024 restera sûr pour les prochaines années. D’après les projections, une clé de 2048 bits est sensée tenir
jusque 2079 si on tient compte de la loi de Moore. Mais ces valeurs sont correctes uniquement si on
respecte les propriétés de e, d, p et q.
(re ∗ me )d mod n
Un concours, connu sous le nom de “RSA Factoring Challenge”, proposait une certaine somme d’argent
à tout groupe ayant réussi la factorisation d’une clé de taille donnée (la récompense étant proportionnelle
à la taille de la clé mise en défaut). La plus grande clé “cassée” atteignit 663 bits (2005). Le concours fut
stoppé fin 2007.
7.4 El Gamal
C’est un algorithme à clef publique présent à la base de la norme U.S. de signature électronique. Il
fut inventé par Taher ElGamal en 1984. Il est basé sur la difficulté de calculer des logarithmes discrets.
Le problème du logarithme discret consiste à retrouver un entier λ tel que
h = g λ mod p.
4 Voir chapitre "Le monde quantique".
P = as mod p
ak 6= 1 mod p
Soit un message M , avec M < p. On détermine un nombre aléatoire k qui n’est connu que de celui qui
chiffre et différent à chaque message. On calcule alors
C1 = ak mod p
C2 = M.P k mod p
On obtient alors le message chiffré C = (C1 , C2 ). Le message chiffré est alors deux fois plus long que
le message original.
R1 = (C1 )s mod p
= ask mod p
= P k mod p
Le destinataire possède la clé privée (s). Ayant P k , on divise C2 par cette valeur :
DK (C) = C2 /(R1 )
= M.P k mod p/P k mod p
=M
Pour décrypter le message, il faudra soit trouver directement un masque jetable, soit trouver la clé
privée s, solution de P = as mod p (et donc trouver le logarithme discret).
La recherche de la clé privée (s) à partir de la clé publique est équivalente au problème du logarithme
discret (NP). MAIS il n’est pas prouvé que la cryptanalyse d’un message chiffré avec El Gamal est
équivalente au logarithme discret. En d’autres termes, si le problème du logarithme est résolu polyno-
mialement, alors El Gamal sera cassé. Cependant, rien ne prouve qu’il n’est pas cassable par un autre
moyen.
y 2 = x3 + ax + b
dont le discriminant
−(4a3 + 27b2 )
est non nul.
Pour la dessiner, pour a et b fixés, on calcule y tel que
p
y = x3 + ax + b
Remarque Contrairement à ce que l’on peut croire à première vue, il ne s’agit pas de travailler à
partir d’ellipses. La raison en est que les équations utilisées (équations cubiques) sont similaires à celles
permettant de déterminer la circonférence d’une ellipse.
On note Ep (a, b) l’ensemble des couples d’entiers (x, y) qui satisfont cette équation. On parle de
groupe elliptique.
Exemple : Soient p = 23 et la courbe elliptique y 2 = x3 + x + 1. On est donc dans E23 (1, 1). Comme
nous travaillons dans Zp , les couples (x, y) répondant à l’équation sont donnés à la figure 7.6
yR = (λ(xP − xR ) − yP ) mod p
où
y Q − yP
x −x
mod p si P 6= Q
Q P
λ= 2
3xP + a mod p si P = Q
2yP
4. La multiplication est définie comme une répétition d’additions (ex : 3P = P + P + P )
Retour à l’exemple : Soient P = (3, 10) et Q = (9, 7) dans E23 (1, 1). Il vient
7 − 10 −3 −1
λ= mod 23 = mod 23 = mod 23 = 11
9−3 6 2
3(32 ) + 1
5 1
λ= mod 23 = mod 23 = mod 23
2 ∗ 10 20 4
xR = 62 − 3 − 3 mod 23 = 30 mod 23 = 17
Remarque La section précédente traite du problème dans ZP . Les équations sont différentes si nous
travaillons dans le champs fini GF (2m ).
Considérons l’équation
Q = kP
où Q, P ∈ Ep (a, b) et k < p.
L’échange d’une clé par ECC entre deux entités A et B se déroule comme suit :
– A choisit un nA inférieur à n qui sera sa clé privée. A génère alors sa clé publique PA = nA × G.
– B choisit un nB inférieur à n qui sera sa clé privée. B génère alors sa clé publique PB = nB × G.
– A génère la clé secrète K = nA × PB et B génère la clé secrète K = nB × PA .
– Soient p = 211, Ep (0, −4)(⇒ y 2 = x3 − 4) et G = (2, 2). On calcule que 240G = O et donc n = 240.
– A choisit nA = 121, ce qui lui donne PA = 121(2, 2) = (115, 48).
– B choisit nB = 203, ce qui lui donne PB = 203(2, 2) = (130, 203).
– La clé secrète K générée est 121(130, 203) = 203(115, 48) = (161, 69).
Pour chiffrer le message, A détermine aléatoirement un nombre entier positif k et produit Cm comme
un couple de points tel que
Cm = {kG, Pm + kPB }
On remarquera l’utilisation de la clé publique de B. Pour déchiffrer, B devra multiplier le premier
point par sa clé privée, et soustraire le résultat au second point reçu :
7.6 Comparaisons
Asymétrique(RSA) Asymétrique(ECC)
Avantages - Cryptosystème largement répandu - Taille de clé inférieure pour une sécu-
rité égale
- Nombreuses études au sujet de sa sé- - La taille des clés croit moins vite que
curité le RSA si on souhaite une meilleure sé-
curité
- Utilisation pour systèmes embarqués
- Calculs moins lourds que l’exponen-
tiation
- Utilisation mémoire moindre
- Cryptanalyse par algorithme exponen-
tiel
Symétrique Asymétrique
Avantages - Rapidité (jusqu’à 1000 fois plus ra- - Distributions des clés facilitées : pas
pide) d’authentification
- Facilité d’implantation sur hardware - Permet de signer des messages facile-
ment
- Taille de clé : 128 bits ( ⇒ 16 carac- - Nombre de clés à distribuer est réduit
tères : mémorisable) par rapport aux clés symétriques
Problèmes communs
Deux problèmes persistent dans les 2 modèles (symétriques et asymétriques).
En premier lieu, la gestion des clés ’secrètes’. La confidentialité reposant exclusivement sur ces dernières,
si elles sont égarées, divulguées ou oubliées, toute la sécurité s’effondre. Second point, la sécurité se
base sur des arguments empiriques plutôt que théoriques. On suppose (et on espère, même si on en est
pratiquement certain), que les problèmes NP le resteront. Cela n’a pas (encore ?) été démontré.
Authentification et intégrité
Jusqu’à présent nous avons considéré le chiffrement pour maintenir un secret. Cependant, d’autres
facteurs peuvent entrer en ligne de compte pour garantir une communication sûre. Dans ce chapitre
seront illustrées les notions d’authentification de l’expéditeur ainsi que d’intégrité de message.
– chiffrer le message
– utiliser une fonction de hachage
– utiliser un code d’authentification de message (MAC - Message authentication code)
Dangers à contrer
Plusieurs problèmes peuvent survenir lors de la transmission de messages, aussi bien entre les parties,
que face à un pirate. En voici quelques-uns :
– révélation : diffusion du contenu des messages à toute personne ou processus ne possédant pas la
clef cryptographique appropriée.
– mascarade : insertion des messages d’une source frauduleuse dans le réseau.
– modification du contenu : changements du contenu d’un message, y compris l’insertion, la suppres-
sion, la transposition, et la modification.
– modification de séquence (ou d’ordre) : toute modification à un ordre des messages entre les parties,
y compris l’insertion, la suppression, et commander à nouveau.
– modification de la synchronisation : retarde ou rejoue des messages.
– répudiation de la source : démenti de transmission de message par source.
– répudiation de la destination : démenti de la réception du message par la destination.
91
8. AUTHENTIFICATION ET INTÉGRITÉ
En ce qui concerne l’intégrité, il faut s’assurer que le contenu n’a pas pu être changé. Si le message
a la structure appropriée, on peut utiliser la redondance ou une somme de contrôle pour détecter un
changement. On peut également réaliser un contrôle d’erreur interne et externe, comme illustré à la
figure 8.1.
Il est possibilité d’identifier les messages corrompus mais au coût de deux utilisations de ce chiffrement
sur le message.
L’intérêt est que cela permet l’usage de la cryptographie asymétrique sans engendrer trop de ralentis-
sement, mais également d’assurer la provenance d’un fichier ainsi que son intégrité. Dans la majorité des
cas, elles seront utilisées pour créer une signature numérique. Enfin, la qualité principale de ces fonctions
est que les algorithmes sont publiques.
8.2.1 Propriétés
On parle de "haché", de "résumé", ou de "condensé" pour nommer la caractéristique d’un texte ou de
données uniques. La probabilité d’avoir deux messages avec le même haché doit être extrêmement faible.
Le haché ne contient pas assez d’informations en lui-même pour permettre la reconstitution du texte origi-
nal. L’objectif est d’être représentatif d’une donnée particulière et bien définie (en l’occurence le message).
En (b), seul le haché est chiffré, en utilisant le chiffrement symétrique. Ceci réduit le traitement pour
les applications qui n’exigent pas la confidentialité. Ce point illustre en réalité le principe d’une fonction
MAC (fonction de hachage + clé secrète).
En (c), à la figure 8.4, seul le code de hachage est chiffré, en utilisant le chiffrement par clef publique
et la clef privée de l’expéditeur. Comme (b), ceci fournit l’authentification. Il fournit également une
signature numérique, car seul l’expéditeur pourrait avoir produit le code de hachage chiffré.
En (d), toujours à la figure 8.4, si la confidentialité et la signature numérique sont désirées, alors le
message et le code de hachage chiffré avec la clé privée sont chiffrés en utilisant une clef secrète symétrique.
Enfin, à la figure 8.5, en (e), on emploie une fonction de hachage mais aucun chiffrement pour l’au-
thentification de message. La technique suppose que les deux parties communicantes partagent une valeur
secrète commune S. A calcule la valeur de hachage à la suite de la concaténation de M et de S et ajoute la
valeur de hachage résultante à M. Puisque B possède S, il peut recalculer la valeur de hachage à vérifier.
Puisque la valeur secrète elle-même n’est pas envoyée, un adversaire ne peut pas modifier un message
arrêté et ne peut pas produire un message faux.
On peut aussi, comme le montre (f), ajouter la confidentialité à l’approche de (e) en chiffrant le
message entier et le code de hachage de M et de S.
Ce paradoxe s’illustre par la question suivante : combien de personnes faut-il dans un groupe pour
que la probabilité d’avoir deux personnes ayant la même date de naissance atteigne 0.5 ? La réponse,
surprenante à première vue, est de 23.
Définition du problème
Pour ce problème, il faut ignorer le 29 février et les années bissextiles. Définissons P(n,k)=Pr[il y a au
moins deux éléments communs dans le sous-ensemble de k éléments, et la répartition est uniforme dans
l’intervalle 1 à n].
Dans un premier temps, cherchons la probabilité qu’il n’y ait pas d’éléments communs, ce que nous
noterons Q(365, k). Pour ce faire, nous notons par N , le nombre de manière de tirer k valeurs sans élément
commun. Plus explicitement, nous pouvons choisir n’importe quel objet sur 365 pour le premier élément,
n’importe lequel sur 364 pour le deuxième, etc. Ainsi, il vient
365!
N = 365 X 364 X 363 X ... X (365 − k + 1) =
(365 − k)!
Si on enlève la restriction comme quoi il n’y a pas de doublons, il y a 365k possibilités. Donc, la
probabilité de ne pas avoir de doublons est donnée par
N 365!
Q(365, k) = k
=
365 (365 − k)!(365)k
Par conséquent,
365!
P (365, k) = 1 − Q(365, k) = 1 −
(365 − k)!(365)k
Pour k = 23, on a P (365, k) = 0.5073.
Pour une valeur isolée y, la probabilité que H(y) = H(x) est de 1/n. A contrario, la probabilité que
H(y) 6= H(x) est de [1 − (1/n)]. Si on génère k valeurs d’entrées, la probabilité qu’il n’y ait aucune
correspondance est de [1 − (1/n)]k . Donc, la probabilité qu’il y ait au moins une correspondance est égale
à 1 − [1 − (1/n)]k .
Pour un haché de m bits, le nombre de code possible est 2m et une probabilité égale à 1/2 est obtenue
lorsque k = 2(m−1) .
Utilisation du paradoxe
Dans le cas qui nous occupe, le problème pourrait être adapter comme suit. Soit une fonction de
hachage dont la distribution est uniforme et possédant n sorties possibles. Soient deux ensembles de k
éléments (k ≤ n), X = {x1 , x2 , ..., xk } et Y = {y1 , y2 , ..., yk }. Quelle est la valeur de k pour que la
probabilité d’avoir au moins un élément commun dans les deux ensembles soit égale à 0.5 ?
Donc 2
P r[pas de correspondance entre Y et X] = [(1 − (1/n))k ]k = (1 − (1/n))k
Ainsi,
2
P r[au moins une correspondance entre Y et X] = 1 − (1 − (1/n))k
Comme (1 − x) ≤ e−x ,
2
P r[au moins une correspondance entre Y et X] > 1 − (e−1/n )k
2
P r[au moins une correspondance entre Y et X] > 1 − (e−k /n
)
Pour obtenir une probabilité égale à 0.5, il vient
2
1/2 = 1 − (e−k /n
)
k2
ln(2) =
n
et donc, √ √
k = 0, 83 n ≈ n
√
Pour une fonction de hachage produisant 2m sorties, on a k = 2m = 2m/2 .
– l’adversaire produit de 2m/2 variations d’un message valide tous avec essentiellement la même
signification
– l’adversaire produit également de 2m/2 variations du message frauduleux désiré
– les deux ensembles de messages sont comparés pour trouver une paire donnant les mêmes condensés
(la probabilité de trouver une paire est supérieure à 0.5 d’après le paradoxe d’anniversaire)
– faire signer à l’utilisateur le message valide, puis substituer le contrefaçon qui aura une signature
valide puisque les condensés sont semblables.
Tout comme les fonctions de hachage, les MAC n’ont pas besoin d’être réversibles. En effet, le récep-
teur exécutera le même calcul sur le message et le comparera avec le MAC reçu.
Le MAC assure que le message est inchangé (intégrité) et vient de l’expéditeur (authentification, par
l’utilisation de la clé secrète). Il peut également être employé comme un chiffrement supplémentaire (rare)
et peut être calculé avant ou après le chiffrement principal, bien qu’il soit généralement conseillé de le
faire avant.
La figure 8.7 illustre 3 techniques de base utilisant un MAC. Au point (a), seule l’authentification
du message (de la source A) a lieu. En effet, le message est envoyé en clair sur le réseau, et le MAC
lui est concaténé. Cependant, par l’utilisation d’une clé secrète, et comme seul A connait cette clé, le
destinataire B est sûr que l’expéditeur est bien A. A la réception du message, B applique la fonction
MAC sur le message en clair, et vérifie que le MAC résultant correspondant à celui concaténé au message
transmis.
Les points (b) et (c) ajoutent la confidentialité. Au point (b), le MAC est concaténé au message, et
le tout est chiffré et envoyé à B. Au point (c), seul le message est chiffré. Le MAC est concaténé par la
suite, et le tout est envoyé à B. Dans la majorité des cas, on préfèrera utiliser la technique illustrée au
point (b).
Une norme américaine lui a aussi donné le nom de DAA (Data Authentication Algorithm).
Son fonctionnement est illustré à la figure 8.8. Le vecteur d’initialisation (IV) du mode CBC est ici
nul. Les données à authentifier sont symbolisées par les blocs D1 à DN . Le DAC (Data Authentication
Code) est soit le bloc ON , soit les M bits les plus à gauche du bloc ON , avec 16 ≤ M ≤ 64.
Cet algorithme n’est plus guère utilisé aujourd’hui pour des raisons de sécurité (le MAC résultant est
trop petit). Il sera donc souvent couplé à d’autres algorithmes.
Sur un haché, la recherche de collisions demande 2m /2 opérations. Les hachés de 128 bits étant vul-
nérables (2005), il est conseillé d’utiliser des condensés de 160 bits.
Dans le cas des MAC, il faut attaquer sur des paires connues message/MAC. On attaquera l’espace
de clés (le pirate teste toutes les clés pour un texte donné et vérifie si le MAC obtenu est le même) ou
le MAC directement (générer un MAC valide pour un message, ou un message pour un MAC donné). Il
est actuellement conseiller d’utiliser des MAC d’une taille minimale de 128 bits.
– L’entité A pourrait forger un message donné et dire qu’il vient de B. Il lui suffit pour cela de créer
un message et lui appliquer un MAC en utilisant la clé qu’ils ont en commun.
– Le cas inverse peut également exister. B peut nier le fait d’avoir envoyer un message, pour la simple
raison que la construction expliquée au point pérécédent est possible. Il est donc impossible de
prouver qu’un tel message a été ou non envoyé par B plutôt que par A.
C’est ici qu’interviennent les signatures numériques. Elles permettent notamment de vérifier l’auteur,
la date et l’heure de la signature, d’authentifier le contenu d’un message et peuvent être vérifiées par des
tiers pour résoudre des conflits.
8.4.1 Propriétés
Une signature digitale doit
– dépendre du message signé
– employer une information unique propre à l’expéditeur pour empêcher la contrefaçon et le démenti
– être relativement facile à produire, à reconnaître et à vérifier
– être mathématiquement infaisable à forger (par construction de nouveaux messages pour une si-
gnature numérique existante, ou par construction d’une signature numérique frauduleuse pour un
message donné)
– être facile à stocker
8.5 Le Zero-Knowledge
L’appellation courante française est “Preuve à divulgation nulle de connaissance". Il s’agit d’une autre
méthode d’authentification/identification.
Mais que se passe-t-il si Alice est déjà dans le couloir demandé par Bob ? Alice n’a alors pas besoin
de connaître le mot de passe ! Il y a plusieurs possibilités :
En d’autres termes si Alice connaît le mot de passe, il n’y a jamais de problème. Si Alice ne le connaît
pas, il y a une chance sur deux que Bob soit trompé à la première expérience. Ainsi, plus Bob la répétera,
plus il pourra croire Alice : après n essais, il y a 1/2n chances que Bob soit trompé (autrement dit, que
Alice affirme posséder le secret sans le connaître en réalité).
Une seule erreur, et on peut déduire qu’Alice ne connaît pas le secret. Par contre, 100 bonnes arrivées ne
permettent aucune conclusion sûre à 100% bien que la probabilité d’erreur soit extrêmement faible.
Pour reprendre les trois propriétés citées en début de section, on peut dire que
Répondre correctement 100 fois à l’expérience n’offre aucune information sur le secret de la porte (ZK),
mais prouve (Consistante), avec une infime probabilité d’erreur (Significative), qu’Alice connaît ce
secret.
8.5.2 ZK en pratique
Le principe de ZK est utilisé en tant que schéma d’identification. On l’utilise notamment dans le cadre
des signatures digitales, souvent sur smart card.
On constate des similitudes dans l’évolution des fonctions de hachage et des chiffrements symétriques :
par la puissance croissante des attaques par force brute, les algorithmes évoluent constamment. On est
passé du DES à l’AES dans les chiffrements symétriques et de MD5 à SHA et à Ripemd-160 dans les
algorithmes de hachage. A noter que depuis les dernières attaques sur le SHA-1, il est conseillé d’utiliser
le SHA-256.
9.1 MD5
Conçu par Ronald Rivest (le R dans RSA), c’est le dernier d’une série (MD2, MD4). Cet algorithme
produit un condensé de 128 bits. Il était il y a encore quelques temps l’algorithme de hachage le plus
largement répandu. La cryptanalyse et l’attaque par force brute (2004) l’ont affaibli. Ses spécifications
sont disponibles sur Internet dans le RFC 1321.
9.1.2 Algorithme
La figure 9.2 schématise le détail de l’algorithme, dont voici les caractéristiques.
– CV0 = IVP
– CVq+1 = 32 [CV q, RFI (Yq , RFH (Yq , RFG (Yq , RFF (Yq , CVq ))))]
– MD = CVL
103
9. ALGORITHMES POUR L’AUTHENTIFICATION ET L’INTÉGRITÉ
– où :
IV : valeur initiale des registres ABCD
Yq : le q ème bloc de 512 bits du message
L : le nombre de blocs de 512 bits dans le message
CVq : variable chainée obtenue par la manipulation du q ème bloc
RFx : fonction primitive dépendante de la ronde en cours
MD
P : résultat final 32
32 : addition modulo 2
Les lettres a, b, c, d se rapportent aux 4 buffers, mais sont utilisés selon des permutations variables. Il
est à remarquer que cela ne met à jour qu’un seul des buffers (de 32 bits). Après 16 étapes, chaque buffer
a été mis à jour 4 fois. La fonction g(b, c, d) est une fonction non-linéaire différente dans chaque ronde
(notée F,G, H et I dans la figure 9.2). T[i] est une valeur constante dérivée de la fonction sinus. (≪ s)
représente un décalage circulaire à gauche (pour chaque buffer séparément) de s bits.
9.1.4 MD4
Précurseur du MD5, il produit également des condensés de 128 bits. Il ne possède que 3 rondes de
16 étapes contre 4 dans MD5. Les buts à réaliser lors de sa conception étaient de le faire résistant aux
collisions, et d’apporter une sécurité directe (c’est-à-dire qu’il n’a pas de dépendance envers des problèmes
mathématiques). Il devait de plus être aussi rapide, simple et compact que possible.
Le MD4 fut également optimisé pour les systèmes "little endian" tels que les PCs. Après plusieurs
tests, il s’est avéré que les stations SUN (qui sont "big endian") étaient assez puissantes pour compenser
les calculs nécessaires, ce qui décida les développeurs à l’optimiser pour les stations "little-endian".
Durant l’été 2004, des chercheurs chinois sont parvenus à casser le MD5 en quelques heures. En réalité,
ils ont réussi à créer deux messages possédant le même haché. Le même résultat est aujourd’hui obtenu
en quelques minutes, voire quelques secondes. En conclusion, le MD5 n’est plus sûr1 .
1 On parle ici de sureté au point de vue militaire : pour la protection de simples données personnelles "sans intérêt
majeur", le MD5 reste suffisant.
9.2 SHA-1
SHA (Secure Hash Algorithm) a été conçu par NIST et NSA en 1993, et révisé 1995 pour étendre ses
capacités en matière de sécurité. Ses spécifications sont publiées dans le RFC 3174. L’algorithme est le
SHA, la norme est SHS (Secure Hash Standard). Contrairement au MD5 qui produit des condensés de 128
bits, le SHA produit des valeurs condensées de 160 bits. Jusqu’à 2005, il était l’algorithme généralement
préféré pour le hachage, mais des rumeurs de cassage le font peu à peu évoluer vers des versions plus
sophistiquées. Le SHA-1 est basé sur le design du MD4.
Le calcul des Wt , dérivés des blocs de messages est donné à la figure 9.8. Pour ce calcul, il faut
remarquer qu’il introduit beaucoup de redondance, ce qui introduit une forte interdépendance des blocs.
En conséquence, il est donc relativement difficile de trouver deux messages avec le même haché. La
formule résumant le calcul de Wt est donnée à la figure 9.7.
quent la résistance à la cryptanalyse devrait être semblable (hormis l’attaque par force brute qui devient
plus longue).
La figure 9.10 compare les différentes versions du SHA. Toutes les tailles sont mesurées en bits. La
sécurité se rapporte au fait qu’une attaque d’anniversaire sur un condensé de message de taille n produit
une collision avec un facteur d’approximativement 2n/2 .
9.3.2 HMAC
Plusieurs objectifs devaient être réalisés tel que le fait d’utiliser sans modifications des fonctions de
hachage existantes, de permettre un remplacement aisé de la fonction de hachage au cas où des fonctions
plus rapides ou plus sûres seraient trouvées ou exigées, de préserver les performances initiales de la fonc-
tion de hachage et d’employer (et manipuler) les clefs de manière simple.
HMAC traite les fonctions de hachage comme des ’black box’. La fonction de hachage devient un
module. Il devient alors simple de la remplacer si on met au point une nouvelle fonction de hachage plus
rapide ou plus sûre, ce qui apporte une meilleure garantie de sécurité. De par cette modularité, il n’y
aura pas de modification à apporter à l’algorithme.
Il faudra choisir la fonction de hachage à utiliser en se basant sur des contraintes de sécurité et de vitesse.
La fonction f est le fonction de compression de la fonction de hachage. Elle prend en argument une
variable chaînée de n bits et un bloc de b bits et produit une variable chaînée de n bits. Ces quantités
ne sont calculées qu’à l’initialisation et quand la clé change. Ces quantités se substituent à l’IV dans la
fonction de hachage. Cette technique n’a d’intérêt que lorsque les messages à hacher sont relativement
courts.
y a ab mod p = g M mod p.
Pour assurer la sécurité de la méthode, il faudra utiliser un nouveau k à chaque signature ou chiffre-
ment. Si on utilise plusieurs fois le même k, il est possible de retrouver x aisément.
Exemple : Soit la clé privé x = 8 et les valeurs p = 11, g = 2. Il vient pour la clé publique
y = g x mod p = 28 mod 11 = 3 c’est-à-dire PK = (3,2,11).
– a = g k mod p = 29 mod 11 = 6
– Par Euclide :
M = (xa + kb) mod (p − 1)
5 = (8 ∗ 6 + 9 ∗ b) mod 10
b = 3 → signature = (a, b) = (6, 3)
Pour la vérification, il faudra alors s’assurer que 36 63 mod 11 = 25 mod 11, ce qui est bien le cas.
9.4.2.1 Algorithme
Ici aussi, différents éléments interviennent dans l’algorithme :
– r = (g k mod p) mod q
– s = (k −1 (H(M ) + xr)) mod q
– w = s−1 mod q
– u1 = (H(M ) ∗ w) mod q
– u2 = rw mod q
– v = ((g u1 ∗ y u2 ) mod p) mod q
9.5 Algorithme ZK
L’exemple donné ci-dessous concerne le protocole de Fiat-Shamir, datant de 1986.
Une autorité détermine aléatoirement un n (±1024 bits), produit de 2 grands nombres premiers.
Alice choisit un nombre s, avec (s, n) = 1. s sera la clé privée d’Alice. Alice calcule ensuite v tel que
v = s2 mod n. v sera la clé publique d’Alice. Ne connaissant pas les facteurs de n, il sera impossible à
un correspondant de retrouver la clé privée s à partir de v.
Un prouveur digne de confiance doit pouvoir répondre aux deux requêtes (b = 0 ou b = 1).
Si Alice ne connaît pas s, elle pourrait corrompre Bob en choisissant un r particulier. Mais comme Bob
va répéter l’opération T fois, le r ne pourra pas répondre correctement aux deux questions simultanément.
En contexte réel, on travaille avec des vecteurs de données de longueur K, ce qui augmente la sécurité.
La clé publique est (v1 , v2 , . . . , vK ), la clé privée est (s1 , s2 , . . . , sK ), et le vecteur de bits (b1 , b2 , . . . , bK ).
La probabilité que Bob soit trompé est de 1/2KT . En pratique, on conseille k=6 et T=5.
La figure 10.1 illustre le protocole Needham-Schroeder, dont nous reparlerons dans le chapitre consacré
à l’authentification des parties. Ce scénario suppose que les deux entités (A et B) possèdent chacune une
clé secrète avec le KDC (l’autorité de confiance du système).
114
10. LA GESTION DES CLÉS
Fig. 10.1 – Exemple d’une distribution de clés dans le cas symétrique (Needham-Schroeder).
– Annonce publique
– Annuaire publiquement disponible
– Autorité de clés publique
– Certificats de clé publique
Même si ce schéma est clairement plus sûr que les annonces publiques individuelles, il reste vulnérable.
Il est en effet nécessaire que l’annuaire soit sécurisé. Dans le cas contraire, un individu pourrait détourner
l’annuaire et fournir des clefs publiques contrefaites, voire à ne pas transmettre les clés correspondant
aux demandes des entités communicantes.
Pour mieux comprendre ce concept, illustrons le par un exemple : si vous commandez des cds sur
Internet, comment être sûr que vous envoyez bien votre numéro de carte bleue au commerçant, et non à
un pirate qui aurait usurpé son identité et donné sa propre clé publique ?
Pour passer un examen, il vous faut prouver votre identité grâce à une carte d’identité, un passeport
ou un permis de conduire. Un organisme supérieur (l’Etat) a signé ces certificats, s’assurant auparavant
1 Certificate Authority, CA.
Les certificats numériques fonctionnent sur le même principe. Alice veut certifier que sa clé publique
lui appartient. Elle envoie sa clé à un organisme de certification, ainsi que différentes informations la
concernant (nom, email, etc...). Cet organisme vérifie les informations fournies par Alice, et ajoute au
certificat son propre nom, une date limite de validité, et surtout une signature numérique. Cette signature
est réalisée grâce à sa clé privée et à un algorithme de hachage laissé au choix, bien que le RSA et le SHA
soit maintenant préféré. En résumé, l’autorité de certification fournit un certificat tel que
où EKRauth représente la signature apposée au certificat, T est un timestamp, IDA est l’ensemble des
informations propres à l’entité A et KUa est la clé publique de A.
Lorsque Bob veut envoyer un message à Alice ou simplement vérifier la validité du certificat que A
lui a envoyé, il applique la clé publique de l’autorité de certification. Cette action permet de vérifier que
le certificat est bien authentique :
DKUauth [CA ] = DKUauth [EKRauth [T, IDA , KUa ]] = (T, IDA , KUA )
La figure 10.4 illustre le format d’un certificat. L’exemple donné concerne un certificat signé par RSA
et MD5.
L’obtention des CRL sera réalisée auprès d’un CDP (CRL Distribution Point), sorte de serveur prin-
cipal maintenant les CRL à jour.
Notons au passage que pour faciliter les vérifications des certificats, il existe différents protocoles dont
le plus répandu est l’OCSP (Online Certificate Status Protocol ). Grâce à ce dernier2 , le serveur avec
lequel communique l’utilisateur (et responsable dans un premier temps de la vérification du certificat de
l’utilisateur) se voit en partie libérer des tâches de vérification, un serveur dédié s’en occupant à part
entière.
A côté de l’OCSP, précisons qu’il existe de nombreuses méthodes permettant de maintenir ces listes
de certificats à jour. On citera la CRL basique, la Delta-CRL, les CRL DP, etc3 .
Le message inclut l’horodateur (tA ), le nonce (rA ), l’identité de B (IDB ) et être signé par A (sgnData)
Two-Way Deux messages (A → b, B → a) sont utilisés. Le principe est le même que pour l’authentifi-
cation One-Way mais détermine plus de caractéristiques des entités :
– l’identité de B et que cette réponse est de B,
– la réponse est destinée à A,
– l’intégrité et l’authenticité de la réponse.
Cette nouvelle version apporte plus de flexibilité mais moins de compatibilité en contrepartie.
Merkle
Cette solution fut proposée par Merkle en 1979. Le déroulement est le suivant :
Le problème est qu’un adversaire peut arrêter et personnifier les deux moitiés de protocole (attaque
man-in-the-middle).
1. A produit une paire de clés publique/privée {KUa , KRa } et transmet un message destiné à B se
composant de KUa et d’une marque de A, IDA .
2. E arrête le message, crée sa propre paire de clés publique/privée {KUe , KRe } et transmet KUe ||IDA
à B.
3. B produit une clef secrète, Ks , et transmet EKUe (Ks ).
4. E arrête le message, et apprend Ks par DKRe (EKUe (Ks de calcul))
5. E transmet EKUa (Ks ) à A.
1. A utilise la clef publique de B pour chiffrer un message à B contenant une marque de A (IDA ) et
un nonce (N1 ), qui est employé pour identifier cette transaction uniquement.
2. B envoie un message à A chiffré avec KUa contenant le nonce de A (N1 ) ainsi qu’un nouveau nonce
produit par B (N2 ). Puisque seul B pourrait avoir déchiffré le message (1), la présence de N1 dans
le message (2) assure A que le correspondant est B.
3. A retourne N2 , chiffrés en utilisant la clef publique de B, pour assurer B que son correspondant est
A.
4. A choisit une clé de session Ks secrète et envoie M = EKUb [EKRa [Ks ]] à B. Le chiffrement de cette
clé avec la clef privée de A assure que seul A peut l’avoir envoyée.
5. B calcule DKUa [DKRb [M ]] pour récupérer la clef secrète.
10.2.1 Principe
Soient A et B, les deux parties de la communication. A génère un nombre premier p et un primitif a
(p et a sont publics).
Définition 1 (Primitif ) Soient p premier et a < p. On dit que a est un primitif de p si ∀b ∈ (1, p − 1),
∃g tel que ag ≡ b mod p.4
Une fois ces deux valeurs rendues publiques, A et B génèrent chacun un nombre aléatoire : xA (< p)
et xB (< p) (gardés secrets).
4 Exemple : Pour p=11, 2 est un primitif. En effet, 210 ≡ 1 mod 11, 21 ≡ 2 mod 11, 28 ≡ 3 mod 11, 22 ≡ 4 mod 11,
24 ≡ 5 mod 11, 29 ≡ 6 mod 11, 27 ≡ 7 mod 11, 23 ≡ 8 mod 11,26 ≡ 9 mod 11 et 25 ≡ 10 mod 11.
IPSEC
11.1 Présentation
IPSec n’est pas un protocole simple. Il fournit un cadre général qui permet à une paire d’entités
communicantes d’employer n’importe quel algorithme fournissant la sécurité appropriée pour la com-
munication. Cette technologie a pour but d’établir une communication sécurisée (un tunnel) entre des
entités éloignées, séparées par un réseau non sécurisé voire public comme Internet, et ce de manière
quasi-transparente si on le désire.
IPSec fournit trois types de services : l’authentification des deux extrémités, la confidentialité des
données par chiffrement, et la gestion des clés. On l’utilise notamment pour protéger la connectivité de
succursales au travers de l’Internet, établir la connectivité intranet et extranet avec des partenaires ou
encore augmenter la sécurité du commerce électronique.
– Authentification des données : IPSec permet de s’assurer que pour chaque paquet échangé, il a bien
été émis par la bonne machine et qu’il est bien à destination de la seconde machine
– Confidentialité des données échangées : On peut décider de chiffrer le contenu des paquets IP pour
empêcher qu’une personne extérieure ne le lise
– Intégrité des données échangées : IPSec permet de s’assurer qu’aucun paquet n’a subit une quel-
conque modification durant son trajet.
125
11. IPSEC
– Protection contre l’analyse de trafic : IPSec permet de chiffrer les adresses réelles de l’expéditeur et
du destinataire, ainsi que tout l’en-tête IP correspondant. C’est le principe de base du tunneling.
11.2 Architecture
L’architecture d’IPSEC est définie en détails dans les RFC 2401, 2402, 2046 et 2408. Il est constitué
de deux protocoles. Le premier, AH (Authentication Header), est responsable de l’authentification des
parties de manière sûre, mais ne garantit aucune confidentialité. Le second, ESP (Encapsulating Secu-
rity Payload), est responsable du chiffrement des données. Il peut également garantir l’authentification
des parties, mais apporte alors une certaine redondance avec AH. Ces protocoles peuvent être utilisés
séparément ou combinés.
Il peut être utilisé entre deux end-users. Il protège uniquement la zone de données du paquet. Ce
mode n’est utilisé que ponctuellement.
11.4 SPD et SA
La SPD (Security Policy Database) est une base de données présente sur chaque système capable d’uti-
liser IPSec. Elle permet de déterminer la politique de sécurité à appliquer à un certain trafic. Chaque
entrée de cette base est identifiée grâce à plusieurs "sélecteurs" tels que l’adresse IP source et destination,
le numéro de port ou le protocole de transport. Ce sont ces sélecteurs qui permettent de retrouver les
SAs associées à un type de trafic. On parle de granularité.
La SPD est consultée pendant tout transfert de données, entrant ou sortant, IPSec ou Non-IPSec.
Trois choix de traitement sont possibles :
– Appliquer les paramètres IPSec (c’est-à-dire protéger la connexion par une SA)
– Laisser passer le trafic
– Rejeter le trafic
Les SA (Security Association) sont le nom donné à toute communication protégée par l’intermédiaire
d’IPSec. C’est une relation à sens unique entre un expéditeur et un récepteur. Elle repose sur une unique
application de AH ou de ESP. Ainsi, pour une liaison protégée par AH entre 2 entités, il y aura 2 SA.
AH n’assure pas la confidentialité. En effet, les données sont signées, mais pas chiffrées.
La figure 11.7 illustre le mode Transport associé au protocole AH. On note la présence de la clé secrète
(SK). On utilise l’algorithme HMAC pour obtenir le MAC à partir de la fonction de hachage MD5 ou
SHA-1. La ligne noire continue représente ce qui est authentifié (ici, l’entièreté du paquet).
La figure 11.10 illustre le mode Transport avec le protocole ESP. La double flèche représente ce qui
est chiffré, la droite continue, ce qui est authentifié. On remarque à ce propos que l’authentification est
moindre que pour le protocole AH (où l’entête IP originale est également authentifiée). L’authentifica-
tion est donc présente, mais moins forte. Dans la majorité des cas, elle sera cependant suffisante, et on
préfèrera utiliser ESP plutôt que AH pour des raisons de confidentialité.
11.7.1 OAKLEY
C’est un protocole d’échange de clés basé sur la méthode de Diffie-Hellman. Il ajoute des dispositifs
pour contrer certaines faiblesses. Ces dispositifs peuvent prendre la forme de cookies, de groupes (para-
mètres globaux), de nonces, ou encore d’un échange de clé DH avec authentification. Il peut pour ce faire
employer des nombres premiers ou des courbes elliptiques.
11.7.2 ISAKMP
Cet acronyme représente l’Internet Security Association and Key Management Protocol. Il fournit
le cadre pour la gestion des clés et définit des procédures et le format de paquet pour établir, négocier,
modifier, et supprimer des SAs. Il est indépendant du protocole d’échange de clé, de l’algorithme de
chiffrement, et de la méthode d’authentification.
Protocoles d’authentification
Habituellement, on trouvera un centre de distribution de clés (KDC). Chaque partie partage une clé
principale avec lui. Il produit des clefs de session utilisées pour les communications entre les parties. Les
clés principales sont utilisées pour distribuer ces clés de session aux parties.
12.1.1.1 Needham-Schroeder :
Il s’agit d’un protocole de distribution de clé avec un tiers médiateur. Pour une session entre A et B,
négociée par le KDC, il vient la séquence suivante :
On l’utilise pour distribuer sûrement une nouvelle clé de session entre A et B. Il est cependant vul-
nérable à une attaque par rejeu1 si une vieille clé de session a été compromise.
Plusieurs modifications peuvent être apportées pour contrer ce risque : ce sont les méthodes de Denning
et de Neuman.
1 Rejeu du message 3 qui convainc B que A communique avec lui.
133
12. PROTOCOLES D’AUTHENTIFICATION
Solution pour la désynchronisation [Woo & Lam 92] : (on fonctionne avec des certificats)
1. A → KDC : IDA ||IDB
2. KDC → A : EKRauth [IDB ||KUb ]
3. A → B : EKUb [Na ||IDA ]
4. B → KDC : IDB ||IDA ||EKUauth [Na ]
5. KDC → B : EKRauth [IDA ||KUa ]||EKUb [EKRauth [Na ||Ks ||IDB ]]
6. B → A : EKUa [EKRauth [Na ||Ks ||IDB ]||Nb ]
7. A → B : EKs [Nb ]
Cela garantit un certain niveau d’authentification, mais ne protège pas du rejeu. On pourrait utiliser
des timestamps mais les délais des mails rendent ce système problématique.
12.3 Kerberos
Kerberos est un système de serveurs de distribution de clés proposé par le MIT. Il fournit une au-
thentification centralisée dans un réseau distribué et permet l’accès pour les utilisateurs aux services
distribués proposés par le réseau sans devoir faire confiance à tous les postes de travail mais plutôt en
faisant confiance à un serveur central d’authentification. Deux versions sont en service : v4 et v5.
– d’un serveur d’authentification (AS). Les utilisateurs négocient avec l’AS pour s’identifier. Celui-ci
fournit un ticket d’authentification non corruptible (Ticket Granting Ticket - TGT).
– d’un serveur de ticket (Ticket Granting Server - TGS). Les utilisateurs demandent un accès à des
services proposés par le TGS sur base de leur TGT.
1. L’utilisateur se loggue sur un poste de travail (le mot de passe est utilisé pour établir la clé secrète
KC par l’intermédiaire d’une fonction de hachage) et demande un service à l’AS.
2. L’AS vérifie les droits d’accès de l’utilisateur dans la base de données, crée un ticket (TGT) et une
clé de session. Ces résultats sont chiffrés en utilisant la clé KC .
3. Le client déchiffre le message venant du serveur, puis il envoie le TGT et un authentificateur qui
contient le nom de l’utilisateur, l’adresse réseau du poste de travail et un horodateur au TGS.
4. Le TGS déchiffre le ticket et l’authentificateur, vérifie la demande, puis crée le ticket pour le serveur
(service) demandé.
5. Le poste de travail envoie ce ticket et l’authentificateur au serveur concerné.
6. Le serveur vérifie que ce ticket et l’authentificateur correspondent et accorde alors l’accès au service.
Si l’authentification mutuelle est exigée, le serveur renvoie un authentificateur.
Dans la figure 12.2, KC représente la clé calculée à partir du mot de passe de C, et Kc,tgs est chiffrée
par KC . Seul C peut donc la lire.
– un serveur Kerberos,
– un certain nombre de clients, tous inscrits au serveur,
– et un ou plusieurs serveurs d’application, partageant des clés avec le serveur.
Un tel environnement est appelé domaine Kerberos (realm). En cas de domaines Kerberos multiples,
les différents serveurs Kerberos doivent partager des clés et se faire confiance, afin d’interagir comme sur
la figure 12.3.
12.3.4 Kerberos V5
Développé dans le milieu des années 90, il fournit des améliorations de v4. Il corrige et met à jour
quelques points clés du système tels que les algorithmes de chiffrement, l’utilisation de certains protocoles
réseau, le temps de vie du ticket, les transferts d’authentification ou l’authentification inter-domaines.
L’ensemble des caractéristiques est repris dans la RFC 1510.
Dans la figure 12.4, Realm représente le domaine de l’utilisateur, Options est utilisé pour demander
que certains ’flags’ soient levés dans le ticket obtenu en retour, Times permet de préciser les balises de
durée de vie du ticket (from, till, rtime) et Nonce est une valeur aléatoire assurant de la fraîcheur de
l’information obtenue.
La Subkey apparaissant dans la 6ème phase est une proposition du client pour l’utilisation d’une clé de
chiffrement à utiliser pour protéger les informations qui transiteront lors de cette session. Si le paramètre
est omis, c’est Kc,v qui sera utilisée. Dans cette même phase, le Sequence number précise le numéro
de séquence à partir duquel seront numérotés les messages échangés pendant la session (cela permet de
détecter les attaques par rejeu).
SSL est composé de 2 sous-couches : la première définit la façon dont seront traitées les données à
chiffrer et la seconde, gère l’établissement de la connexion sécurisée et la négociation des paramètres de
la session.
– la confidentialité : via un chiffrement symétrique avec une clef secrète partagée définie dans le
«Handshake Protocol». Les algorithmes pouvant être utilisés sont notamment IDEA, DES, 3DES
et RC4.
– l’intégrité des messages par l’utilisation d’un MAC avec la clef secrète partagée.
Le Record protocol est illustré à la figure 12.6. Chaque phase est définie ci-dessous :
4. Chiffrement symétrique : ne doit pas augmenter la longueur du contenu de plus de 1024 bytes et
donc la longueur totale ne doit pas excéder 214 + 2048 bytes (chiffrement + compression).
Elles sont représentées sur 2 octets, le premier donne le niveau d’alerte (Warning ou Fatal ), le second
donne le code de l’alerte.
Ces alertes peuvent survenir notamment lors d’un message inattendu, d’un mauvais MAC, d’un échec
de décompression, d’un échec durant la phase de handshake, ou encore d’un paramètre illégal. Mais une
alerte peut aussi être émise lors de la fin de l’envoi de message, lorsqu’aucun certificat n’est utilisé, en
cas de mauvais certificat ou de certificat non supporté, si le certificat est révoqué ou expiré, ou encore en
cas de certificat inconnu.
1. (HELLO) L’établissement des possibilités en matière de sécurité. Cette phase détermine entre autres
la version, la session, les algorithmes de chiffrement et compression ainsi que des nombres aléatoires.
2. L’authentification du serveur et échange de clé.
3. L’authentification du client et échange de clé.
4. (FINISH) La clôture.
Phase 1 : HELLO Au départ, les paramètres de chiffrement sont initialisés à 0 (c-à-d qu’aucun
algorithme de chiffrement, de hachage et de signature ne sont définis).
Server_hello comporte :
– N˚ de version SSL (en fonction de celui supporté par le client)
– N˚ aléatoire du serveur (ServerHello.random)
– N˚ de session
– Stratégie de chiffrement choisie (en fonction de celles du client)
– Algorithme de hachage choisi (en fonction de ceux du client)
– DH anonyme : il s’agit de l’algorithme de base. Il est sujet à l’attaque man-in-the-middle car les
paramètres DH ne sont pas authentifiés.
– DH fixé : les paramètres de DH sont établis et publiés au moyen d’un certificat. Il contre l’attaque
man-in-the-middle mais pas une attaque par force brute.
– DH éphémère : les paramètres DH peuvent changer d’une session à l’autre ce qui rend une attaque
par force brute bien plus difficile à réaliser. Les paramètres DH sont de plus signés grâce à la clé
RSA privée de l’expéditeur pour contrer l’attaque man-in-the-middle.
– RSA : la clé secrète est chiffrée grâce à la clé publique du receveur. Cela implique qu’un certificat
du receveur soit disponible afin d’obtenir sa clé publique de façon fiable.
’Server_key_exchange’ envoie les paramètres relatifs à la clé de session. Il n’est pas envoyé si on
utilise un DH fixé (car ils sont déjà fournis dans le certificat) ou RSA sont utilisés.
’Certificate_request’ demande le certificat du client. Il n’est pas envoyé si un DH anonyme est utilisé.
– S’il s’agit du RSA, le client génèrera une clé maîtresse primaire (PMK) représentée par un nombre
aléatoire de 48 octets, et l’envoie au serveur.
– En cas de DH éphémère ou anonyme, les paramètres de la clé publique du client sont envoyés.
– En cas de DH fixé, le contenu de ce message est nul, puisque ces paramètres ont été envoyés dans
le certificat.
Génération des clés : Selon qu’on utilise RSA ou DH, la gestion de la PMK sera différente :
– RSA : le client génère une valeur de 48 octets, la chiffre à l’aide de la clé publique du serveur et
l’envoie à ce dernier. Le serveur utilise alors sa clé privée pour obtenir la PMK.
– DH : Les deux parties (client et serveur) génère une clé publique DH. une fois ces clés échangées,
chaque partie calcule la PMK correspondante.
A ce moment, peu importe le mécanisme d’échange de clé utilisé, les deux parties disposent de la même
PMK. A cet instant, serveur et client détermine la valeur secrète maitresse. Soit X, le ClientHello.random
et Y, le ServerHello.random. La valeur secrète maitresse est donnée par
Phase 4 : FINISH Il s’agit des premiers messages utilisant la stratégie de chiffrement négociée au
cours du « handshake ».
’Change_cipher_spec’ fait partie du protocole Cipher Spec. Il a pour but de transformer la stratégie
temporaire en stratégie courante. Le message ’Finished’ vérifie que l’échange de clé et les processus
d’authentification se sont correctement déroulés.
3 HTTP over SSL, à ne pas confondre avec SHTTP (Secure HTTP) qui authentifie individuellement chaque page html
avec un certificat.
Le pourcentage d’internautes utilisant une carte de crédit pour effectuer leur paiement en ligne ne
cesse de progresser (36% en 2005). De nombreuses architectures de paiement électronique ont vu le jour.
La plupart n’ont pas survécu. Après le SET, c’est aujourd’hui 3D-Secure qui est le plus couramment
utilisé.
13.1 Le SET
Développé en 1996 par un ensemble de sociétés émettrices de cartes de crédit (MasterdCard, Visa,...),
le SET (Secure Electronic Transaction) est utilisé pour protéger des transactions liées aux cartes de crédit
sur Internet. Il ne s’agit pas d’un système de paiement, mais d’un ensemble de protocoles et de formats
de sécurité basés sur trois principes :
– Des communications sécurisées entre les parties,
– L’utilisation des certificats X.509v3,
– Une certaine "intimité" en restreignant l’information à ceux qui en ont réellement besoin.
Vue Générale
Le SET doit obéir à certaines contraintes, fixées par un cahier des charges :
– Fournir la confidentialité des paiements et des informations liées,
– Assurer l’intégrité des données transférées,
– Fournir l’authentification permettant de vérifier la légitimité de l’utilisateur d’une carte,
– Fournir l’authentification du marchand,
– Offrir une protection optimale de toutes les parties de la transaction,
– Etre indépendant des protocoles, plate-formes, OS, ...
Entités intervenantes
La figure 13.1 schématise les transferts de données entre entités. Les différents termes sont explicités
ci-dessous :
– Cardholder : consommateur : personne autorisée à disposer d’une carte de paiement (MC, Visa, ...)
fournie par un fournisseur (issuer)
145
13. LES ARCHITECTURES DE PAIEMENT ÉLECTRONIQUE
– Merchant : marchand : personne qui vend des biens ou des services au consommateur via un site
Web ou un mail électronique. Un marchand qui accepte les cartes de paiement doit être en relation
avec un acquéreur (acquirer)
– Issuer : fournisseur (banque de l’acheteur) : institution financière qui a fourni la carte au consom-
mateur. Typiquement les comptes sont ouverts par mail ou par la personne directement. C’est le
fournisseur qui est responsable du paiement de la dette du consommateur
– Acquirer : acquéreur (banque du marchand) : institution financière qui établit un compte avec
un marchand, fournit les autorisations de paiement et gère les paiements. Le marchand accepte
généralement plusieurs marques de carte de crédits mais préfère ne pas fonctionner avec de multiples
associations de banque ou de consommateurs individuels. L’acquéreur fournit les autorisations au
marchand lorsqu’une certaine carte est active et que la demande ne dépasse par la limite de crédit
qui lui est autorisée.
– Payment gateway (passerelle de paiement) : il s’agit d’une fonction opérée par l’acquéreur ou un
tiers désigné qui transmet les messages de paiement du marchand. Il s’agit d’une interface entre
SET et le réseau existant de paiement par carte. Le marchand échange des messages SET avec ce
gateway à travers internet, tandis que le gateway a une connexion directe vers l’acquéreur financier
manipulant le système
– Certification authority : autorité qui fournit les certificats pour les propriétaires de carte, les mar-
chands et les gateways de paiement
– Le banquier ne doit pas avoir accès à la nature de la commande passée par l’acheteur.
Le SET permet de vérifier l’authenticité des parties et l’intégrité des données grâce à l’utilisation de
plusieurs algorithmes et protocoles précédemment présentés :
– La confidentialité de l’information : on utilise un chiffrement RSA-1024 pour chiffrer les clés de
sessions DES ou 3DES, seule la banque peut lire le numéro de carte
– L’intégrité des données : par l’intermédiaire de signatures digitales RSA, SHA-1 et HMAC
– L’authentification du propriétaire de la carte : par des certificats X.509v3 et des signatures RSA
– L’authentification du marchand : par des certificats X.509v3 et des signatures RSA.
Pour garantir cette sécurité, et permettre une compatibilité entre toutes les entités, le choix des algo-
rithmes fut imposé.
Dans une signature duale, on trouvera donc deux messages destinés à deux receveurs distincts :
– l’information de commande (OI1 ) pour le négociant,
– l’information de paiement (PI2 ) pour la banque
Par l’intermédiaire de ce procédé, la sécurité est également garantie. D’une part, moins de données
sont divulguées aux diverses parties. D’autre part, imaginez qu’un marchand obtienne les informations
OI et PI de manière non liée. Le marchand passe alors le PI à la banque. Si le marchand obtient un autre
OI de ce client, il pourrait dire que ce dernier correspond au PI envoyé précédemment. La signature duale
1 Order Information
2 Payement Information
Le fonctionnement de la signature est donnée à la figure 13.2. Le client calcule en premier lieu indivi-
duellement le haché (par SHA-1) de son PI et celui de son OI. Le haché de leur concaténation est ensuite
chiffré avec sa clé privée, ce qui constitue la signature duale. On peut illustrer l’entièreté du procédé par
la formule suivante :
DS = EKRc [H(H(P I)||H(OI)]
Les principales sont "la Commande" (Purchase Request) , "l’Autorisation de paiement" (Payment
Authorization) et "le Paiement" (Payment Capture). Elles sont explicitées ci-dessous.
13.1.4.1 La Commande
La première phase consiste en l’envoi d’une demande d’achat (Purchase Request) au marchand. Elle
est illustrée par la figure 13.3.
L’enveloppe digitale représente le résultat du chiffrement de la clé de session Ks par la clé publique
de la passerelle de payement. Seule la passerelle possède la clé privée correspondante. Ainsi, seule la
passerelle pourra lire le PI.
A noter que le "cardholder certificate" représentant le certificat associé à la clé publique du client est
également transmise à la passerelle afin que cette dernière puisse vérifier la signature duale.
Lorsque le marchand reçoit la requête d’achat du client, il procède aux vérifications illustrées à la
figure 13.4. Le déroulement est le suivant :
1. Il vérifie la signature duale en utilisant la clef publique de signature du client pour s’assurer que
la commande n’a pas été manipulée pendant son transit et qu’elle a été signée en utilisant la clef
privée de signature du détenteur de la carte
2. Il transmet l’information de paiement à la passerelle de paiement pour l’autorisation (décrite ci-
après) et effectue la commande
3. Il envoie enfin une réponse d’achat au détenteur de la carte. Cette réponse confirme l’accord du
marchand et renferme une référence à la transaction en cours. Cette réponse est signée par la clé
privée du marchand.
Sur la figure précédente, on voit une partie des données transmises à la passerelle par le marchand. De
plus, ce dernier fournit des données supplémentaires : un bloc d’autorisation contenant un identificateur
de la transaction, signé avec sa clé privée, et chiffré avec une clé symétrique qu’il aura généré pour
l’occasion, ainsi qu’une enveloppe digitale protégeant cette clé symétrique.
1. Il déchiffre l’enveloppe numérique du bloc d’autorisation pour obtenir la clef symétrique et déchiffre
alors le bloc d’autorisation
2. Il vérifie la signature du négociant sur le bloc d’autorisation
3. Il déchiffre l’enveloppe numérique du bloc de paiement (originaire du client et transmis par le
marchand) pour obtenir la clef symétrique et déchiffre alors le bloc de paiement
4. Il vérifie la signature duale sur le bloc de paiement
5. Il vérifie que l’identificateur de transaction reçu du marchand correspond à celui reçu (indirecte-
ment) dans le PI du client
6. Il demande et reçoit une autorisation de l’institution financière
7. Il renvoie la réponse d’autorisation au marchand
13.1.5 Paiement
Cette dernière phase de paiement prend place en 4 étapes :
1. Le négociant envoie une demande de paiement au gateway de paiement
2. La passerelle vérifie la demande (vérification de la signature du marchand)
3. La passerelle effectue le transfert de fond vers le compte du négociant
4. Il informe enfin le négociant du transfert accompli.
13.2 3D-Secure
Le SET fut un échec, essentiellement dû au fait que les démarches à effectuer par le marchand sont
relativement complexes. Il devait en effet établir plusieurs communications spécifiques avec le client, mais
également avec sa banque et la passerelle de paiement. Au vu de ce désintérêt, un nouveau schéma de
paiement fut créé à l’initiative de Visa. Par comparaison au SET, 3D-Secure repose sur un schéma simpli-
fié, et permet une intégration et une utilisation plus simple pour le marchand et le client. La plupart des
responsabilités sont maintenant transférées aux banques. La principale nouveauté en terme de sécurité est
l’introduction du SSL/TLS (A l’origine, l’architecture 3D-Secure était nommé 3D-SSL). Il est maintenant
généralisé (depuis le 01/03/2003) et est supporté notamment par Visa, Mastercard, American Express, ...
Le schéma global de 3D-Secure est représenté par trois domaines (d’où le nom 3D pour 3-Domains) :
1. Domaine du client - Domaine émetteur (Issuer)
2. Domaine d’interopérabilité - Domaine interbancaire
3. Domaine du marchand - Domaine acquéreur (Acquirer)
Chaque entité du schéma doit supporter le protocole TLS pour assurer des connexions sécurisées. Il
en est de même pour les algorithmes RSA, 3DES et SHA.
Contrairement au SET, le marchand pourra ici disposer des informations bancaires du client.
– Le DS (Directory Server) :
Il détermine si un numéro de carte est valide ou non et transmet les requêtes d’authentifications
des clients à l’ACS. Lorsqu’il reçoit la réponse, il la transmet au marchand.
– L’Authentication History Server (AHS) :
Il reçoit et conserve chaque message reçu de la part de l’ACS pour chaque authentification de
paiement (réussie ou non). En cas de conflit entre la banque du client et celle du marchand, une
copie de cet historique est consultable.
– L’établissement de crédit (ici VisaNet) :
Il reçoit les requêtes d’autorisations de l’institution financière et les transmet au fournisseur (Is-
suer). C’est aussi lui aussi qui transmet la réponse reçue à la banque du marchand.
Un aperçu générale des 3 domaines est donné à la figure 13.6. Une vue plus détaillée des éléments
composant chaque domaine est illustrée par la figure 13.8.
13.2.2 Inscription
1. Le futur détenteur d’une carte se rend chez le fournisseur de service (sa banque) et fait la demande.
2. Il fournit les données nécessaires au Service d’inscription (Données d’identification, mot de passe,
PAM (Personal Assurance Message)).
La banque valide la demande du client si celui-ci est jugé apte à utiliser la carte de crédit.
3. Le serveur d’inscription (Enrollment Server) envoie la MAJ à l’ACS. Les informations y sont stockées
pour les transactions futures ; le client peut maintenant faire ses achats en ligne.
13.2.3 Achat
1. Le client finalise un achat sur le site internet d’un marchand. Ce dernier a maintenant toutes les
informations requises pour entamer la transaction : informations sur le client, numéro de compte
personnel (Personal Account Number), ...
2. Le MPI envoie le PAN au DS.
3. Le DS interroge l’ACS afin de savoir si l’authentification est possible pour ce client.
4. Si c’est le cas, l’ACS lui répond positivement
5. Le DS transmet cette réponse au MPI
6. Le MPI envoie une PAReq (Payer Authentication Request) à l’ACS en passant par le browser du
client.
7. L’ACS reçoit le PAReq
8. L’ACS authentifie le client en demandant des informations propres (mot de passe, code, etc.).
L’ACS crée ensuite le PARes (PAResponse) et la signe.
9. L’ACS envoie des données d’authentification au Serveur d’historique d’authentification (AHS).
10. L’ACS envoie le PARes au MPI en passant par le browser du client.
11. Le MPI reçoit le PARes et vérifie la signature.
12. Le MPI poursuit les transactions avec son institution financière (par VisaNet).
Le système requiert un lecteur de carte et un logiciel spécifique chez le client : la lourdeur de mise en
place imposée et le coût des lecteurs (25 euros) ont fait que cette architecture n’a pas rencontré le succès
souhaité.
13.3.2 SPA
C’est l’acronyme de Secure Payment Application, créé par Mastercard. Initialement destiné à concur-
rencer 3D-Secure, il nécessitait l’installation d’un applet, ce qui s’accompagnaient de certains problèmes
de compatibilité. Sans cet applet, il était impossible d’effectuer un paiement. L’incription était plus
fastidieuse et longue que celle du concurrent 3D-Secure.
En octobre 2002, ces deux principaux inconvénients ont poussé Mastercard à s’associer à Visa pour
obéir à la norme 3D-Secure.
PGP
L’email est l’un des services réseau les plus utilisés. Le contenu des messages n’est pas sécurisé, il
peut donc être inspecté durant son transit ou par les utilisateurs privilégiés sur le système de destination.
On souhaite donc la mises en place de services de sécurité tels que la confidentialité, l’authentification,
l’intégrité et la non-répudiation. Ces quatre services sont apportés par le logiciel PGP, que nous allons
décrire en détails.
Développé par Phil Zimmermann, PGP fournit un service de confidentialité et d’authentification qui
peut être employé pour des applications de type courrier électronique et stockage de dossiers. PGP repose
sur une sélection et un emploi des meilleurs algorithmes cryptographiques (RSA, DSA, DH, 3DES, IDEA,
CAST-128, SHA-1) disponibles intégrés dans un programme simple indépendant de l’OS. A l’origine libre,
il dispose maintenant de versions commerciales. Il reste cependant disponible librement sur une grande
variété de plateformes. Il possède un large éventail d’applicabilité, n’est pas développé ou commandé
par des organismes de normalisation gouvernementaux et est pourtant maintenant reconnu comme un
standard (RFC 3156).
14.1 Principes
PGP propose cinq services, qui seront explicités par la suite :
– Authentification
– Confidentialité
– Compression
– Compatibilité E-mail
– Segmentation
Notations utilisées
Diverses notations seront utilisées dans les schémas illustrant le principe de PGP :
– Ks : clé de session utilisée dans les schémas symétriques
– KRa : clé privée de A
– KUa : clé publique de A
– EP : chiffrement public
– DP : déchiffrement public
– EC : chiffrement symétrique
– DC : déchiffrement symétrique
– H : fonction de hachage
– || : concaténation
– Z : fonction de compression utilisant l’algorithme ZIP
– R64 : conversion au format ASCII Radix 64
155
14. PGP
14.1.1 Authentification
Lors de cette première phase, l’expéditeur crée tout d’abord son message. Un fois terminé, SHA-1
génère un condensé de 160 bits associé. Ce dernier est chiffré avec RSA ou DSS en utilisant la clé privée
de l’expéditeur, et le résultat est attaché au message.
Le récepteur utilise RSA ou DSS avec la clé publique de l’expéditeur pour déchiffrer et récupérer le
condensé. Il produit ensuite un nouveau condensé du message et le compare avec le condensé déchiffré.
S’ils correspondent, l’authenticité du message est démontrée. Le point (a) de la figure 14.1 illustre le
mécanisme d’authentification.
14.1.2 Confidentialité
L’expéditeur génère un message et un nombre aléatoire de 128 bits à employer comme clef de session
pour ce message seulement. Le message est chiffré, en utilisant Cast-128/IDEA/3DES avec la clef de
session. Celle-ci est chiffrée en utilisant le RSA avec la clef publique du destinataire, puis attachée au
message.
Comme le montre le (b) de la figure 14.1, le récepteur emploie le RSA avec sa clé privée pour déchiffrer
et récupérer la clé de session qui sera utilisée pour déchiffrer le message.
Confidentialité et authentification
Logiquement, on emploie les deux services sur le même message. On crée la signature que l’on attache
ensuite au message. On chiffre le message et la signature. On attache ensuite la clef de session chiffrée
par RSA. Cette association est illustrée à la figure 14.2.
14.1.3 Compression
Par défaut PGP compresse le message après la signature mais avant le chiffrement. Ainsi on peut
stocker le message et la signature non compressés pour une vérification ultérieure. L’algorithme de com-
pression utilisé est le ZIP. Son emplacement est critique (en raison de la redondance).
PGP emploie pour ce faire l’algorithme Radix-64 qui fait correspondre 3 bytes à 4 caractères impri-
mables. Il appose également un CRC. Si cela s’avère nécessaire, PGP procèdera également à la segmen-
tation des messages.
Identifiant de clé
Comme beaucoup de clefs publique/privée peuvent être en service (un utilisateur peut posséder plu-
sieurs paires), il y a nécessité d’identifier quelles sont les clés employées réellement pour chiffrer la clef
de session dans un message.
Il aurait été possible d’envoyer la clé publique complète avec chaque message, mais c’est inefficace
et moins sûr. PGP emploie plutôt un identifiant de clé basé sur cette clé. Il prend les 64 bits les moins
significatifs de la clé, ce qui permet avec une probabilité très élevée d’identifier de manière unique la clé
ayant été utilisée. La même méthode est employée dans les signatures.
Pour introduire la notion aléatoire de la clé, PGP utilise des données issues des utilisations précédentes
et de la dynamique de frappe de l’utilisateur (temps pris pour taper une séquence de lettres, le temps de
pression sur une touche ou encore le temps entre deux pressions successives sur une même touche).
Remarque : La clé privée n’est pas conservée en tant que telle mais chiffrée (avec CAST ou IDEA ou
3DES) au moyen d’un condensé (SHA-1) obtenu à partir d’une passphrase selon la méthode suivante :
1. L’utilisateur sélectionne une passphrase, un simple mot de passe n’étant plus suffisant pour garantir
une bonne sécurité.
2. Quand le système génère une nouvelle paire de clés RSA, il demande à l’utilisateur sa passphrase.
En utilisant le SHA-1, il génère un condensé de 160 bits à partir de cette passphrase et la passphrase
est effacée.
3. Le système chiffre la clé privée avec CAST en utilisant 128 bits du condensé. Le condensé est
ensuite supprimé et la clé privée chiffrée est stockée dans l’anneau des clés privée. C’est la raison
pour laquelle PGP demande la passphrase lorsque l’on désire obtenir sa clé privée.
– Récupération de la clé privée dans l’anneau de clés privées (obtention de l’ID de la clé dans le
composant de la clé de session)
– Utilisation de la passphrase pour déchiffrer la clé
– Récupération de la clé de session et déchiffrement du message
Authentification du message :
– Récupération de la clé publique de l’expéditeur dans l’anneau de clés publiques (utilisant l’ID de
la clé dans le composant de la signature)
à un utilisateur quelconque en qui vous n’avez pas confiance, cependant, la clé utilisée pour chiffrer
doit réellement être la clé de ce correspondant.
– Le noeud S est signé par deux utilisateurs inconnus (un tel cas peut avoir lieu si cette clé est obtenue
à partir d’un serveur de clés.) PGP ne considère pas cette clé comme valide, même si elle provient
d’un serveur certifié valide.
S/Mime
15.1 SMTP
Le protocole SMTP1 est le protocole de base pour les communications de type mail. Ses spécifica-
tions sont disponibles dans le RFC 822. L’inconvénient majeur de ce protocole est qu’il est relativement
limité pour les besoins actuels. Ainsi, il ne peut pas transmettre, ou en tout cas éprouve des difficultés à
transmettre :
15.2 MIME
On peut trouver ses spécifications dans les documents RFC 2045 à 2049. Elles consistent en 3 modi-
fications majeures :
– 5 nouveaux champs d’en-tête sont définis, donnant des informations sur le contenu du message,
– Un certain nombre de formats de contenu ont été définis, de manière à supporter en standard les
mails multimédia
– Plusieurs codages permettant de convertir n’importe quel format de contenu en un autre pour éviter
les altérations du message par les systèmes mails
163
15. S/MIME
15.3 S/MIME
Cet acronyme signifie Secure/Multipurpose Internet Mail Extension et concerne donc une amélioration
sécurisée du format MIME. Il est défini dans un grand nombre de documents dont principalement les
RFC 2630, 2632, 2633.
S/MIME va probablement devenir le futur standard de l’industrie, alors que PGP sera plutôt utilisé
pour la sécurité des mails personnels. Actuellement, S/MIME est reconnu par la plupart des architectures
mails.
Les certificats peuvent appartenir à une certaine classe selon le niveau de sécurité souhaité :
– Classe 1 : la vérification online est suffisante
– Classe 2 : la vérification se fait également par adresse postale
– Classe 3 : la vérification doit impliquer la personne physique (par signature manuelle notamment)
Le monde quantique
Le calcultateur quantique (ou ordinateur quantique) utilise les particules élémentaires (électrons, pro-
tons et photons) qui portent le nom de « quanta ». A la différence de l’ordinateur classique, utilisant
des bits et agissant de manière séquentiel, le calculateur quantique utilise les qubits (ou qbits). Un qubit
(QUatum Bit), ou bit quantique, est un état quantique représentant la plus petite unité de stockage
d’information quantique. A la différence du bit qui prend une valeur 0 ou 1, le qubit peut identifier une
valeur intermédiaire, un "mélange" des états 0 et 1. Par exemple, il peut représenté un état constitué de
25% de 1 et 75% de 0. On parle alors de superposition.
Le principe de superposition représente la possibilité pour une particule d’être en deux endroits en
même temps. Ainsi, pour déterminer ces qubits, toute particule pouvant avoir deux états simultanés peut
convenir. Il peut s’agir de photons présents en 2 endroits simultanément (telle l’expérience des fentes de
Young), ou encore des électrons et leurs orbitales. Par la propriété de superposition, les calculs peuvent
être réalisés en parallèle, d’où une puissance de calcul décuplée.
Prenons par exemple 3 bits. Un ordinateur classique utilisant 3 bits peut être dans 8 états différents
(23 ). Dans le cas d’un ordinateur quantique, les 3 qubits peuvent être une superposition de ces états : il
pourra donc traiter ces 8 états en parallèle. En général, des ordinateurs quantiques travaillant sur N bits
pourront gérer 2N informations en parallèle.
Théoriquement, un ordinateur quantique de 100 qubits pourrait simuler un cerveau humain. Un or-
dinateur de 300 qubits permettrait de simuler l’évolution de la planète depuis le Big Bang.
L’ordinateur quantique existe en théorie depuis le milieu des années 80 (Deutsch, Bennett, Benioff,
Feynman). Un algorithme est paru en 1994 par Peter Shor, permettant de factoriser de très grands
nombres en un temps polynomial à l’aide des ordinateurs quantiques. Ainsi, un nombre de 300 chiffres
serait factorisé en à peine 10 secondes ! Cet algorithme, faute de réel ordinateur quantique, ne reste que
théorique.
C’est Isaac Chuang (IBM) qui a établi le premier prototype. En 1996 il fonctionnait sur 2 qubits, en
1999 sur 3, en 2000 sur 5. Le meilleur résultat fut atteint en 2001 sur 7 qubits. Il permit de factoriser
166
16. LE MONDE QUANTIQUE
la valeur 15 = 5 * 3. Même si ce résultat peut paraître dérisoire, il doit être rapporté aux recherches
effectuées. Si des résultats plus significatifs peuvent être apportés, c’est toute la cryptographie classique
(de type chiffrement symétrique, asymétrique, protection par mot de passe, etc.) qui s’effondrera.
L’ordinateur de 2001 utilise des atomes de carbone et de fluor ainsi qu’une machine à résonance
magnétique (aimants supra-conducteurs plongés dans un bain d’hélium liquide à -269˚C. D’autres types
d’ordinateurs quantiques existent : intégrer des qubits dans un substrat solide (NEC), emprisonner des
photons dans des cavités optiques.
Il y a cependant des contraintes de construction. L’ordinateur doit être par exemple être totalement
isolé du monde extérieur, car ce dernier provoque la décohérence du système. De plus, il ne peut y avoir
aucune perte d’information.
16.1.2 Risques
Les calculateurs quantiques permettent donc d’obtenir beaucoup plus rapidement des solutions à cer-
tains problèmes. En cas de mise en oeuvre du concept à grande échelle, c’est la sécurité de la cryptographie
"moderne" qui est mise en jeu.
Cependant, malgré les recherches en cours, il ne semble plus y avoir aucune amélioration significative
depuis les expériences citées plus haut. Le fait de ne rien découvrir de neuf pourrait être dû à deux
raisons : le plafonnement (les techniques actuelles utilisées dans ce domaine ne permettent pas d’aller
plus loin), et l’aspect secret d’une telle découverte (la mise sur pied d’un ordinateur quantique puissant
donnerait un pouvoir énorme à celui le détenant).
Il existe tout de même une solution pour rendre les communications plus sûres, même face à l’ordina-
teur quantique : la cryptographie quantique. Celle-ci ne permet pas d’éviter l’interception, mais permet
de la détecter.
La conséquence de ce principe est qu’il est impossible de mesurer ces particules sans les modifier.
Il est donc possible de construire un canal de communication que nul ne peut espionner sans modifier
1 quantum database search : par l’algorithme de Grover (recherche exhaustive)
la transmission de manière détectable. Ainsi, il est possible de transmettre une clé secrète entre deux
personnes sans qu’elles disposent d’informations secrètes communes préalables.
Dans le cadre du transport d’une clé, la technique qui nous occupera ici consistera en l’envoi de
photons. On utilisera la technique dite de Polarisation de photons.
On parlera de polarisation rectiligne pour les angles de 0˚ et 90˚ (pour lesquelles on utilisera des
filtres ou bases “standards”), et de polarisation diagonale pour les angles de 45˚ et 135˚ (filtres ou bases
“diagonales”). Pour la détection, on aura recours à un filtre (ou base) polarisant(e) et un détecteur de
photons. Ce type de filtre permet la lecture de photons polarisés d’une certaine manière. En conséquence,
il bloque les photons polarisés dans la direction perpendiculaire.
Dans l’illustration 16.1, le filtre est positionné de telle sorte qu’il laisse passer les photons polarisés à
0˚et par conséquent, bloque les photons polarisés à 90˚. On est donc ici en présence d’un filtre standard.
Pour un filtre d’angle général, le raisonnement est semblable. Soit A, l’angle du photon et B l’angle
du filtre. On obtient une transmission avec une probabilité de COS 2 (A − B) et non transmission avec
une probabilité de SIN 2 (A − B).
Par convention, on considère qu’un photon polarisé à 0˚ou 45˚représentent un 0 et un photon polarisé
à 90˚ ou 135˚ représente un 1. Le problème intervient lorsqu’un photon polarisé diagonalement (45˚ ou
135˚) rencontre un filtre standard (et inversément). Il y a alors incertitude, comme on le voit sur la figure
16.3.
En moyenne, une mesure sur deux sera sans intérêt, puisque à priori, Bob ne connait pas l’orientation
des filtres utilisés par Alice. L’exemple est illustré par la figure 16.4.
A la fin de la transmission, Bob possède un ensemble de bits, formant la clé brute. Après vérification
sur la canal non protégé, seuls les bits 1,3,4 et 7 seront valables et constitueront la clé tamisée.
Pour réaliser une écoute sur la canal et ainsi intercepter la clé, il faut obligatoirement utiliser le même
type d’outils (filtre et photodétecteur).
A la suite d’une interception, le pirate doit réémettre un photon polarisé comme celui qu’il aura lu.
Bob ayant reçu l’entièreté des bits, il communique avec Alice pour connaître l’orientation des filtres.
Une fois les mauvaises mesures écartées, ils décident de tester au hasard quelques bits de leur clé. Par
"tester un bit", il faut entendre : communiquer la valeur du bit sur le canal non protégé. Ce canal étant
publique, les bits sont considérés perdus.
Dans l’exemple de la figure 16.5, en testant le troisième bit, ils se rendent compte de l’écoute. Pour un
nombre assez élevé de tests, la sécurité est absolue (ou tout du moins considérée comme telle).
En effet, la probabilité qu’Eve choisisse un filtre incorrecte est de 50%, et donc elle a 50% de chance
de se tromper en réémettant le photon. Si Bob lit ce photon réémis en utilisant le même filtre que celui
utilisé pour l’émission par Alice (dans le cas contraire, le bit n’est pas retenu pour la clé), il a aussi 50%
de chance de se tromper. La probabilité qu’un photon intercepté donne une erreur dans la clé est donc
de 50% x 50% = 25%. Autrement dit, il y a 75% de chance que l’interception ne provoque pas d’erreur,
ou encore, il y a 75% de chance qu’Eve ne soit pas détectée.
Si Alice et Bob comparent n bits de la clé sur le canal public, la probabilité qu’ils découvrent la
présence d’Eve est égale à n
3
Pd = 1 −
4
Pour n = 72, on obtient Pd = 0.999999999. Il est conseillé d’envoyer 4n bits pour obtenir une clé
tamisée de taille n.
En résumé, on peut représenter l’obtention d’un clé secrète en trois étapes, telles qu’illustrées à la
figure 16.6.
Cependant, les impulsions impliquaient par définition plusieurs photons, et donc plus de facilité pour
déterminer la polarisation des photons par le pirate.
A l’heure actuelle, pour travailler photon par photon, il faut utiliser un système muni de 4 lasers pos-
sédant chacun un filtre polarisant différent. Le puissance du laser est réduite de telle sorte qu’on n’émet
qu’un photon à la fois.
Un deuxième problème est qu’il peut arriver que certains photons soient corrompus, même en l’ab-
sence d’écoute pirate (par une notion différente de l’horizontal entre les deux entités communicantes par
exemple). Cela est dû à l’imperfection du matériel utilisé. Tout comme dans le cas classique, il existe une
série de codes correcteurs d’erreurs, regroupé dans le monde quantique sous la notion de QEC (Quantum
Error Correction).
Un autre domaine demande des recherches actives : la qualité du support du canal quantique. Il est
actuellement composé d’une fibre optique, avec les inconvénients que cela apporte :
– La réflexion des photons sur les parois de la fibre modifie la polarisation.
– La perte de photons si la distance est trop longue.
On trouve aujourd’hui des fibres optiques spécialement dédiées au transport de photons. On parle
dans ce cas de Fibres Optiques Photoniques (FOP).
16.2.4.3 En pratique
La première expérience de cryptographie quantique a eu lieu en 1991. Elle consista en l’envoi et à
la réception de 2000 bits. En tenant compte des erreurs durant le transfert, de l’espionnage et des bits
diffusés sur le canal public, la clé secrète finale aurait eu une taille de ±800 bits. Par manque de techno-
logie, cette expérience n’a permis que le transfert d’un bit par seconde sur une distance de 32 centimètres.
En 2003, Toshiba a réalisé une expérience similaire sur une centaine de kilomètres.
La technique décrite ici est aujourd’hui fonctionnelle et porte le nom de QKD (Quantum Key Distri-
bution). La première expérience “commerciale” eut lieu à Genève en 2007 lors des élections fédérales.
16.3 Conclusions
Bien que reposant sur des lois de Physique quantique relativement abstraites pour le commun des
mortels, la cryptographie quantique trouve ses fondements dans des concepts bien plus sûrs que la cryp-
tographie “classique". Cette dernière, se fiant uniquement à une puissance de calcul limitée ne permettant
pas de résoudre rapidement des problèmes complexes, pourrait bien disparaitre dans quelques décénnies
(années ?) si l’on parvient à mettre au point des ordinateurs quantiques à grande échelle.
La cryptanalyse
Il s’agit de l’étude des mécanismes théoriques ou techniques visant à briser (casser) un algorithme de
chiffrement, c’est-à-dire le fait de retrouver le message M à partir de C, sans connaître la clé K a priori.
Dans certains cas, il s’agira également de retrouver cette clé K.
On parlera d’"attaque" cryptanalytique. Il en existe 4 grands types, chacun pouvant utiliser diffé-
rentes techniques. Ce chapitre présentera ensuite quelques attaques souvent évoquées dans la littérature
spécialisée dans le domaine de la cryptologie.
173
17. LA CRYPTANALYSE
Sur la figure 17.2.6, la ligne rouge indique la limite actuelle conseillée. Un clé de 56 bits n’est plus à
utiliser aujourd’hui si l’objectif premier est la confidentialité. Les algorithmes symétriques actuels utilisent
en standard des clés variant entre 112 (3DES) et 256 bits (AES).
Remarques :
Un algorithme est dit cassé quand il est possible de retrouver la clé en effectuant moins d’opérations
qu’en utilisant la force brute.
Un algorithme cassé est “moins sûr”, mais pas inutile pour autant. Il faudra veiller à son utilisation si
on souhaite assurer la confidentialité des données, mais rien n’empêche de l’utiliser à d’autres fins.
Attention à bien distinguer les deux attaques : on teste tous les mots du dictionnaire mais celui-ci
ne contient pas toutes les possibilités. Par exemple, on pourra y trouver "unie", "unir" et "unis", mais
pas "unih" (pour autant qu’il s’agisse d’un dictionnaire de mots existant dans la langue française).
Remarques :
Cryptanalyses différentielle et linéaire sont des outils parfaits pour comparer la résistance de divers
chiffrements. Aucun algorithme cryptographique n’est dit valable s’il ne résiste pas à ce type de crypta-
nalyse.
La résistance à ces attaques ne signifie pas résistance contre toutes les autres méthodes inconnues.
Sans une connaissance approfondie des techniques de cryptanalyse, il n’est pas possible de créer un
algorithme de chiffrement performant, sûr et robuste.
17.2.6 Meet-In-The-Middle
Cette attaque est souvent illustrée par l’attaque ayant démontré les faiblesses du DES. Nous allons dès
lors reprendre les explications fournies dans le chaitre vu précédemment. Pour rappel, le 2DES fonctionne
de la manière suivante
C = EK2 (EK1 (M ))
On suppose que l’attaquant dispose d’un couple (M,C).
Il chiffre M avec les 256 clés f d’un coté et déchiffre C avec les 256 clés g de l’autre.
Lorsque Ef (M ) = Dg (C), il sait qu’il a découvert les 2 clés utilisées.
17.2.7 Man-In-The-Middle
Souvent confondue avec l’attaque précédente en raison de son acronyme (MITM), elle est pourtant
très différente dans les faits.
Son déroulement est illustré à la figure ci-dessous : le pirate se fait passer pour B auprès de A et pour
A auprès de B.
La liste établie précédemment n’est bien évidemment pas exhaustive. Il existe un très nombre d’autres
attaques, souvent plus spécifiques à un algorithme particulier.
Ces catégories ne sont pas exclusives : une attaque peut être active et invasive, ou inversément.
– Un (crypto)système est dit inconditionnellement sûr si le texte chiffré ne contient pas assez
d’information pour retrouver le texte clair correspondant, peu importe la longueur du texte chiffré à
disposition.
Signalons enfin que la cryptanalyse et la cryptographie ont évolué conjointement. Comme dans de
nombreux autres domaines, le jeu du chat et de la souris est bel et bien réel, même si la finalité de la
cryptanalyse est souvent d’aider à la conception de meilleurs algorithmes.
178
18. GESTION DES ACCÈS
On part du principe que tous les objets ont un propriétaire (qui sera souvent le sujet qui aura créé
cet objet).
Quelques variantes de ce type d’accès permettent un transfert de propriété ou la délégation d’un droit
entre utilisateurs non propriétaires.
Cette méthode d’accès est celle rencontrée la plupart du temps dans les systèmes d’exploitation
courants (Linux, Windows). Le principe est d’associer une liste de contrôle d’accès à chaque fichier. On
parle d’ACL (Access Control List).
Cette ACL renferme un certain nombres d’entrées (Access Control Entry - ACE). Le détail des accès
permis ou refusé est mentionné.
Cette méthode est beaucoup plus sûre, car elle ne dépend plus du propriétaire. Imaginez les pertes
potentielles si le propriétaire d’un objet “sensible” venait à donner l’accès (volontairement ou non) à tous
les utilisateurs. . .
Un exemple concret est le modèle dérivé LBAC : Lattice-Based Access Control. Une lattice est une
règle définissant un ensemble de niveaux de sécurité. Par exemple, la définition suivante, illustrée à la
figure 18.3 :
– Les sujets avec un label L ne peuvent lire que des objets de label L0 <= L (No Read-Up)
– Les sujets avec un label L ne peuvent écrire que des objets de label L0 >= L (No Write-Down)
Comme le voit, ce système est très contraignant. Peu adapté à un environnement commercial, il est
peu répandu dans les contextes non-militaires. On le réserve à des lattices simples.
Bien que très sûr, il reste sensible aux attaques par canaux cachés (dialogue interprocessus à partir
de l’utilisation du processeur par exemple).
Dans le contexte grand public, ce type de contrôle d’accès est rarement utilisé pour garantir la
confidentialité en tant que telle. Ainsi, le système SELinux l’utilise pour la vérification de l’intégrité des
données. Son modèle porte le nom de "Biba Model”, qui utilise une règle “no write-up”. Cette technique
est notamment utilise pour empêcher la modification des données de l’OS à partir de logiciels indésirables
circulant sur Internet.
Cette méthode est plus facile à mettre en oeuvre que le DAC pour la simple raison qu’il suffit de
changer de rôle lorsque cela s’avère nécessaire (au lieu de modifier les accès pour chaque fichier).
Ce type d’accès aux données apparait très proche de ce que nous connaissons sous Windows notam-
ment, par l’intermédiaire de la gestion des comptes utilisateurs. Cette filiation n’est pas anodine puisqu’il
est en effet possible de simuler un système RBAC en utilisant la notion de "groupes utilisateurs". En
réalité, il s’agit d’un DAC caché.
– A l’ouverture d’une session, l’utilisateur reçoit un jeton d’accès (Access Token). Ce jeton définira
les action qu’il peut effecturer.
– SID : Security Identifier (unique)
– SACL : System ACL utilisé pour l’Audit
– L’ordre établi dans la DACL est important : la première entrée correspondante est prise en compte.
– Comme on le voit, la notion de groupe est présente, mais ce sont bel et bien les droits définis par
le propriétaire qui détermine les actions possibles pour les autres utilisateurs (cf. Owner SID).
– Si un générateur de mots de passe est utilisé, il devra employé une grande variété de caractères
(pour le rendre plus robuste à la force brute).
– Il peut être utile d’utiliser un vérificateur de mots de passe afin de tester la vulnérabilité aux
attaques par dictionnaire. Dans le même temps, il pourra tester la taille des mdp face aux attaques
par force brute.
– Il est bon d’associer une durée de vie aux mdp. Un changement régulier permet une meilleure
protection contre la force brute.
– On peut aussi limiter le nombre d’essais.
Les besoins en sécurité étant ce qu’ils sont, la difficulté majeure aujourd’hui est que le nombre de mots
de passe ne cesse de croître. Leur mémorisation reste donc problématique. Quelques solutions existent
cependant :
1. Hardware : utiliser des clés usb comme accès aux données. Le problème est que c’est alors la clé
qui authentifie, et non l’individu. De plus, que faire en cas de perte de la clé ?
2. Software :
– utiliser un logiciel de gestion de mots de passe : un seul mot de passe (ou une phrase de passe)
pour stocker tous les autres. Mais que faire en cas d’oubli du mot de passe maitre ?
– utiliser la saisie semi-automatique. Mais quid en cas de formatage, virus, etc. ?
3. Au niveau de l’OS : une solution avancée est connue sous le nom de SSO (Single Sign On). Le fait de
se logguer sur une machine permet d’accéder à toutes les données. Une seule phase d’authentification
a donc lieu, et si elle réussi, l’utilisateur est libre d’agir avec les données et logiciels correspondant
à ses droits, sans avoir à donner son mot de passe à chaque accès. une application connue basée
sur un principe similaire porte le nom de Kerberos (authentification d’utilisateurs sur les machines
d’un réseau)
– Avantages :
– Les mots de passe de ces logiciels ne doivent plus être retenus (gain de mémoire)
– Les mots de passe de ces logiciels ne doivent plus être tapés (gain de temps)
– Un seul mot de passe à retenir
– Gestion administrateur en cas de perte
– Désavantages :
– Un seul mot de passe à retenir. A nouveau, que faire en cas de divulgation ou d’oubli ?
– Nécessite une authentification forte "à l’entrée" pour s’assurer de l’identité l’utilisateur loggué
Une autre possibilité, mais qui n’est pas utilisable dans toutes les conditions, porte le nom de One
Time Password (OTP).
18.3.3 Conclusions
Un bon mot de passe doit notamment (et principalement) être à la fois facile à retenir (pas besoin
de le noter), et utiliser des caractères spéciaux, de casse différente (ce qui rend rend la force brute plus
fastidieuse et l’attaque par dictionnaire presque impossible).
Notons toutefois qu’il existe d’autres attaques visant à casser les mots de passe. On citera par exemple
les attaques par compromis temps-mémoire et plus précisément les attaques par tables arc-en-ciel (Rain-
bow Tables)1
Sécurité logicielle
Avec Internet, de nombreux problèmes surgissent concernant la sécurité des utilisateurs, mais égale-
ment des données de ces utilisateurs. Nombreux sont les internautes n’ayant aucune notion de sécurité,
et qui, même s’ils connaissent les termes "Virus" ou "Trojan", ne savent comment s’en protéger.
Pour tout problème ayant trait à la sécurité, il faut d’abord comprendre comment fonctionnent ces
intrus, avant de pouvoir apporter une solution.
19.1 Introduction
Alors qu’Internet se démocratise et se popularise, de nombreux logiciels sont mis à la disposition des
utilisateurs pour réaliser ce type d’attaques. Les créateurs de ces logiciels ont souvent des raisons bien
précises. Parmi les plus courantes, on peut citer :
– Par défi personnel : nombreux sont les crackers n’agissant que par plaisir, afin de "prouver au
monde" leurs capacités
– Pour des raisons politiques
– Pour des raisons dogmatiques
– Pour voler de l’information (espionnage industriel)
– Pour modifier des informations
– Par vengeance
Il est toutefois primordial de préciser la tendance actuelle. On assiste à une véritable révolution dans
l’identité et l’objectif des hackers. Ainsi, aujourd’hui, d’après une étude de la société Kaspersky Labs, les
hackers issus des pays tels que le Brésil, la Chine ou la Russie agiraient plutôt comme de véritables cri-
minels, dans le but d’extorquer de l’argent ou des renseignements confidentiels. Au contraire, en Europe,
on assiterait plutôt à une simple étude des techniques de hacking, destinée à l’approfondissement global
184
19. SÉCURITÉ LOGICIELLE
Autre différence entre ces deux régions : la taille même des groupes. En Europe, les hackers semble-
raient isolés, ou agissant par petits groupes. En Chine, il s’agit de véritables organisations criminelles de
plusieurs dizaines voire centaines de personnes.
Dans le même temps, la difficulté pour mettre en place ces attaques décroit, comme le montre une
étude réalisée en 2002 présentée par la figure 19.2.
Une autre représentation, plus axée sur l’impact de ces attaques est donnée à la figure 19.3. Remar-
quons ici que la notion d’impact “global” représente la taille des réseaux visés. Ainsi, on attaque plus
aujourd’hui des réseaux bancaires de grandes envergures plutôt que le pc du voisin. On constate dans le
même temps que les attaques lancées au “hasard” (à destination de tout Internet, tel qu’un ver laché à
travers Internet par exemple) sont de moins en moins fréquentes.
Les systèmes ciblés peuvent prendre n’importe quelle forme, de l’université aux infrastructures mili-
taires, en passant par les FAI ou les banques.
Ces attaques (par virus ou par intrusion) provoquent souvent de nombreux problèmes, correspondant
à des pertes de données, de fonctionnalités, d’image de marque, ou plus simplement une perte de temps,
lorsqu’il s’agit d’un virus inoffensif.
Ces virus peuvent se propager de nombreuses manières, telles que par l’intermédiaire d’une disquette,
d’une pièce jointe à un mail, ou encore d’un fichier téléchargé sur Internet.
Historiquement, les virus sont nés d’un jeu entre concepteurs de l’entreprise Bell AT&T. Dans les
années 70, certains programmeurs avaient coutume de s’affronter à la "Core War". Le principe était que
chaque programmeur devait créer un mini-logiciel, afin que ceux-ci s’affrontent dans un espace mémoire
déterminé. A la suite de ce jeu, plusieurs articles sont parus expliquant les principes et les objectifs du
jeu. Certains programmeurs en herbe se sont alors mis en tête de réaliser le même type de logiciel, mais
à des fins moins ludiques.
– Les virus de boot : On parle aussi de virus de secteurs d’amorce. Leur objectif est de modifier le
secteur de démarrage du disque et de le remplacer par une copie d’eux-même de sorte que le virus soit
déjà en cours d’exécution dès le démarrage du système d’exploitation et de tout système d’éradication.
– Les virus lents : A la différence d’un virus rapide qui infecte les fichiers dès qu’ils sont manipulés
par le système, les virus lents n’infectent les fichiers qu’en cas de modification, ce qui rend leur détection
plus subtile.
– . . . (voir aussi la section consacrée aux anti-virus)
Trois principales techniques (modes d’action) sont utilisées par les virus :
– Contamination par recouvrement : le virus écrase les premières instuctions du fichier par ses propres
instructions. L’avantage est que la taille du fichier n’est pas modifiée. Cependant, il n’est plus utilisable
par la suite, le début de ses instructions ayant été supprimé.
– Contamination par ajout : le virus s’exécute avant le code original du fichier infecté, mais repasse
la main à ce dernier à la suite de son exécution. Dans ce cas, la taille du fichier est modifiée.
– Contamination par entrelacement : il s’agit ici d’insérer du code entre les blocs valides du pro-
gramme. Elle est plus difficile à mettre en place, mais est moins facilement détectée.
Le premier ver recensé en tant que tel fut créer par Robert Morris, fils du directeur de la NSA, en
1988. Nommé "Internet Worm", il posa énormément de problèmes sur Internet (qui n’en était qu’à ses
débuts). Bien qu’il ne fasse aucun dégât, tous les serveurs furent mis en quarantaine pour vérification.
Tout le réseau fut paralysé en moins de 24 heures. A la suite de cette attaque (si on peut véritablement
la considérer comme une attaque), apparut le CERT, groupe gérant les failles de sécurité d’Internet.
– Le ver créé par Morris n’avait d’autre but que d’explorer Internet. Il est vrai que ce réseau était
relativement restreint à l’époque. Aujourd’hui, cette application ne semble plus réalisable.
– Certaines entreprises utilisent également des vers pour tester la sécurité de leur réseau intranet.
Le ver tentant de s’infiltrer sur les machines distantes par l’intermédiaire des failles du réseau, s’il y
parvient, cela signifiera que le réseau de l’entreprise n’est pas sécurisé.
– sous forme de sources : la reproduction est beaucoup plus aisée, car le nombre de machines potentiel-
lement ciblées est beaucoup plus grand. L’inconvénient majeur de ce procédé est qu’un compilateur
est nécessaire sur la machine à infecter. Les données nécessaires à l’infection sont plus volumineux
et une compression des sources sera parfois opérée préalablement.
– sous forme binaire : la reproduction de ce type de ver n’est possible que sur une architecture compa-
tible avec les données binaires. Cependant, ce format ne nécessite pas de compilateur sur la machine
hôte et est souvent plus compacte que la version source.
Il est à remarquer qu’il existe des vers multi-formes, c’est-à-dire utilisant une archive en sources ou binaire
selon le système à infecter.
1. Initialisation : ce sont les premières instructions du ver. Il peut s’agir de la création de fichiers
temporaires, ou la compilation d’une partie de l’archive. A cet instant, le ver est toujours sur la
machine mère.
2. Recherche de l’hôte : Cette étape procède à un scan d’IP. Ce scan peut être aléatoire ou in-
crémental (on passe en revue des séries d’adresses IP). Pour chacune d’entre elles, on teste si le
système répond ou non ("up" ou "down").
3. Identification de l’hôte : une fois une victime potentielle détectée, le ver (la partie vecteur) va
tester le système en place sur la machine distante. Il s’agira de vérifier si le système possède des
failles pouvant être exploitées par le ver, si il possède un compilateur approprié, ... Si ce n’est pas
le cas, on retourne à l’étape précédente.
4. Attaque : c’est ici que le ver exploite les vulnérabilités mises au jour dans la phase précédente. Le
vecteur obtient alors un accès sur la machine cible.
5. Invasion : Le vecteur est maintenant présent sur la machine cible, mais n’est pas encore actif. Les
instructions sont toujours données par la machine mère. Dès cet instant, le vecteur va rappatrier la
partie archive sur le système à infecter. Deux techniques sont possibles :
– Soit le vecteur est toujours accompagné de sa partie archive, auquel cas l’archive est présente
sur la machine à tout moment, le vecteur uploadant son archive de machines en machines. Cette
technique est un peu plus complexe à réaliser car le vecteur doit avoir été programmé pour
transmettre cette archive.
– Soit le vecteur doit rappatrier la partie archive. Ce rappatriement se fait à partir de la machine
mère, ou depuis un serveur fixe (de type FTP) et unique pour toutes les machines (mais dans ce
cas, l’attaque se terminera si le serveur tombe en panne). C’est beaucoup plus facile à réaliser,
mais également plus dangereux car l’utilisateur piraté pourra plus facilement tracer le ver.
Si l’archive est sous forme de sources, le vecteur devra également procéder à la décompression et à
la compilation de ces sources avant de passer à la phase suivante.
6. Reproduction : ici aussi, deux possibilités existent pour permettre la reproduction du ver :
– Soit on tue le ver présent sur la machine mère. Le ver se déplacera alors de stations en stations.
– Soit on ne le tue pas et chacun des deux vers continue à se propager selon la méthode décrite
ci-dessus. Ce choix provoque une étendue exponentielle du ver et est logiquement plus dangereuse
que la précédente.
1. Intrusion sur l’ordinateur cible : les trojans se répandent souvent par pièce jointe (par exemple :
écran de veille).
2. Modification de l’OS : une fois introduit, il va modifier les fichiers systèmes nécessaires à son
fonctionnement. Les fichiers modifiés sont principalement ceux régissant la phase de démarrage de
l’OS. Le trojan sera alors chargé lors du prochain démarrage.
3. Phase d’écoute : le trojan en tant que tel n’est pas dangereux. Il ne fait qu’écouter les instructions
du pirate. Ainsi, une fois le système redémarré, le trojan passe à une phase d’écoute, dans laquelle
il attend les commandes du pirate distant.
4. Intéraction avec le pirate : le trojan sert de "porte d’accès" au pirate. Toutes ses commandes
passeront par son intermédiaire.
... ...
8685 Unin68
8732 Kryptonic Ghost Command Pro
8734 AutoSpY
8787 Back Orifice 2000
8811 Fear
8812 FraggleRock Lite
8821 Alicia
8848 Whirlpool
8864 Whirlpool
8888 Dark IRC
... ...
La bombe logique est une portion de code qui, comme son nom l’indique, explosera à un moment
voulu (après un temps déterminé suivant l’installation d’un logiciel, à une date précise, après une action
de l’utilisateur, ...). Dans le cas d’un cheval de Troie associé à un écran de veille, la bombe logique pourra
exploser après quelques heures de veille, ainsi, il y aura de fortes chances que l’utilisateur ne soit plus
présent devant son écran. L’idéal est que la bombe n’explose pas directement après l’installation du lo-
giciel, et ce pour éviter qu’elle ne soit trop rapidement détectée.
Certaines bombes logiques peuvent aussi exploser à un moment précis déterminé. Ainsi, la bombe
logique "Tchernobyl" était de ce type, et, après s’être répandue sur de nombreuses machines, a explosé
le 26 avril 1999, date du treizième anniversaire de la catastrophe du même nom. Une telle bombe porte
le nom de Bombe temporelle ou Bombe à retardement.
A la différence des virus, vers et trojans, les attaques basées sur les failles de système (ou du réseau)
sont souvent plus complexes à mettre en place. Elles serviront la plupart du temps à mettre en place une
attaque ultérieure.
Il existe des dizaines voire des centaines d’intrusions si on tient compte des modifications possibles. Les
conséquences peuvent être très variées, allant d’un simple redémarrage à une totale congestion du réseau
en passant par un plantage système.
On citera par exemple les attaques DoS, DDoS, PortScan, DNS Poisoning, Ping Flooding, ou encore
l’OS FingerPrinting2 .
2 Voir les annexes pour quelques informations complémentaires sur ces attaques.
Lorsque le virus est détecté par l’antivirus, plusieurs possibilités sont offertes pour l’éradiquer.
– Supprimer le fichier infecté
– Supprimer le code malicieux du fichier infecté
– Placer le ou les fichiers infectés en "quarantaine" pour un traitement futur.
Malgré tout, il existe plusieurs catégories de virus compliquant leur propre détection :
– Les virus polymorphes : Puisque les antivirus se basent sur la recherche de signature, les créa-
teurs de virus ont élaboré une méthode de camouflage. Celle-ci réside dans le fait de chiffrer la signature
inscrite dans le fichier infecté, de manière à rendre leur détection et leur identification plus complexe
pour les antivirus. Ainsi, pour chaque fichier infecté, la signature aura une apparence différente. L’an-
tivirus doit dans ce cas se baser sur la méthode de chiffrement utilisée et détecter les correspondances
dans cette méthode de chiffrement pour pouvoir identifier un fichier infecté par tel ou tel virus.
– Les virus défensifs ou rétrovirus : Ces virus ont la particularité de pouvoir modifier les signa-
tures de certains antivirus afin de rendre les détections impossibles par leur intermédiaire.
– Les virus mutants : La majorité des virus ne sont en réalité que des réécritures de virus originaux.
Ces réécritures, qui portent le nom de variantes, restent pourtant uniques pour l’antivirus, car ce dernier
doit toujours détecter la signature, qui elle, est différente pour chaque variante.
– Les virus furtifs : Ils peuvent restaurer la taille initiale des fichiers après leur infection.
– Le scanning des signatures : La détection des virus consiste en la recherche de ces signatures à
partir d’une base de données de signatures (on parle également de définitions de virus). Le principal
avantage de cette technique est qu’il est possible de détecter le virus avant qu’il ne soit en action. Ce-
pendant, il est nécessaire que sa signature soit présente dans la base de données afin qu’il soit détecté.
De plus, il est nécessaire de tenir la base régulièrement à jour afin de pouvoir détecter les nouveaux virus.
– Le contrôleur d’intégrité : Le principe est que l’antivirus maintienne une liste des fichiers exé-
cutables associés à leur taille, leur date de création, de modification, voire un CRC. L’utilisation du
CRC permet de vérifier qu’un exécutable n’a pas été modifié en comparant sa somme de contrôle avant
et après son exécution. En effet, en dehors d’une mise à jour explicite du fichier, un fichier exécutable
n’est pas sensé être modifié. Le même type de vérifications peut être instauré avec la date et l’heure
de modification. Cependant, il suffira aux virus de mémoriser ces valeurs afin de pouvoir les restaurer
par la suite.
– Le moniteur de comportement : Il s’agit ici de contrôler en continu toute activité suspecte telles
que les lectures et écritures dans des fichiers exécutables, les tentatives d’écriture dans les secteurs de
partitions et de boot du disque.
Il existe principalement deux techniques d’analyse du trafic, chacune ayant des avantages et des in-
convénients :
– L’analyse par scénario (misuse intrusion detection) : l’IDS utilise ici une base de données de
signatures d’attaques. Ces signatures peuvent être assimilées à des déroulements d’attaques. En ef-
fet, chaque attaque possède des caractéristiques propres (numéro de port, taille de paquet, protocole
employé, ...). Ces caractéristiques peuvent être collectées et placées dans une base de données qu’in-
terrogera l’IDS. Ce type d’IDS utilisent les fichiers journaux (log). Dès qu’il détectera des séquences
suspectes (relatives à une signature de sa base de données), il déclenchera une alerte.
– Avantage : on peut gérer les attaques de façon très précise.
– Inconvénient : on doit maintenir une base de données à jour.
Certains IDS analysent uniquement les fichiers systèmes (fichiers d’historique), et d’autres unique-
ment le trafic réseau. On les nomme respectivement HIDS pour "Host IDS" (protection des machines)
et NIDS pour "Network IDS" (protection du réseau).
Les IDS ne réagissent pas non plus de la même manière en présence d’une attaque. La plupart agissent
passivement, c’est-à-dire qu’une fois l’attaque détectée, ils émettent simplement une alerte. D’autres,
beaucoup moins répandus, tentent de contre-attaquer. On dit que ces derniers sont actifs.
Depuis quelques temps, les IDS actifs évoluent et se font appelés IDP ou IPS (respectivement Intrusion
Detection and Prevention et Intrusion Prevention System. Deux grandes différences existent entre les IDS
et les IPS. La première, comme il l’a déjà été mentionné, repose sur les capacités de l’IPS à répondre aux
attaques. De par ce position sur le réseau (figure 19.4), il peut stopper l’intrusion dès qu’il la détecte.
Le seconde grande différence est la gestion des débits importants actuels. Là où les IDS éprouvaient des
difficultés, les IPS, souvent associés à des composants hardware, peuvent gérer des flux beaucoup plus
importants.
3 Intrusion Detection System
Sans entrer dans le détail des possibilités de détection de SNORT, cette signature signifie que l’IDS
devra déclencher une alerte lorsqu’il détectera, sur le protocole TCP, une tentative de connexion d’une
IP externe (à spécifier dans REZO_EXT ERN E) provenant de n’importe quel port vers une IP interne
(à spécifier dans REZO_IN T ERN E) sur le port 21 (FTP). L’alerte ne devra toutefois être déclenchée
que si l’IDS repère les informations suivantes, spécifiées dans la suite de la signature :
– flags : demande à l’IDS de vérifier si le drapeau ACK est levé (A). SNORT peut tester tous les
drapeaux TCP.
– content :"|*****|" : vérifie que la chaîne indiquée est présente dans le paquet. En effet, la plupart
des attaques possèdent des caractéritisques représentatives.
– classtype-admin : est utilisé pour trier les attaques en sous-groupes.
– sid : identificateur de règle de SNORT (numérotation).
– rev : numéro de révision de la règle.
– msg : spécifie le nom de l’alerte qui devra être envoyée en cas de détection.
Il faut également remarquer que les IDS ne sont jamais robustes à 100%, et bien loin de là. Les
recherches sont très actives dans ce domaine. La majorité des attaques ne nécessitent qu’une modification
mineure pour ne pas être détectée.
On définit un tel système comme étant un système capable de garantir la confidentialité, l’intégrité
et la disponibilité des données, et ce même en cas d’intrusion dans une partie du système.
La technique "fragmentation-redundancy-scattering"
Le principe est de diviser les données en plusieurs parties et les répartir en plusieurs endroits afin
qu’en cas d’intrusion, le pirate n’ait pas accès au reste de l’information. Pour l’obtenir, il devra détermi-
ner les différents sites de stockage, ce qui ne lui sera à priori pas possible. L’information proprement dite
symbolise aussi bien les données, les droits d’accès, ou les programmes.
Grâce à cette méthode, on peut donc autoriser (tolérer ) un certain nombre d’intrusions dans le sys-
tème. Ainsi, on aura toujours un respect de la confidentialité et de l’intégrité. La disponibilité des données
à tout moment est garantie par le principe de duplication de l’information et de sa répartition en plusieurs
endroits.
Le principe du honeypot est qu’il représente une station accessible par les pirates, la plupart du temps
dépourvue de toute protection. Théoriquement, un honeypot ne devrait générer aucun trafic car aucune
activité ne lui est autorisée. Ainsi, tout intéraction avec lui ne peut être qu’illicite. On considérera donc
toute activité du honeypot comme suspecte. Par l’intermédiaire du honeypot, il est alors possible de lister
tous les accès et toutes les commandes qu’il subit ou reçoit afin, dans un second temps, d’analyser ces
accès et les résultats associés pour déterminer les méthodes d’attaques des pirates.
Les honeypots peuvent être de formes et de tailles très variables. Ils ont également des avantages et
inconvénients, comme toute technologie.
– des ensembles d’informations réduits mais de plus grande utilité : au lieu de générer des milliers
d’alertes par jour, un honeypot ne pourra générer qu’une petite dizaine d’alertes, mais dont la qualité et
l’utilité seront beaucoup plus grande. En effet, de par sa nature, le honeypot ne capture que l’activité
suspecte, ce qui d’une part réduit le taux de fausses alertes, et d’autre part, facilite l’analyse des
données recueillies.
– de nouveaux outils et de nouvelles techniques : comme un honeypot capture tout ce qu’il subit, il
capture également les nouvelles méthodes d’attaques. Il ne travaille pas à partir d’une base de données
comme la plupart des IDS.
– un consommation minimale de ressources : pour construire un honeypot, il n’est pas nécessaire
d’avoir une station puissante, un simple Pentium avec 128 Mb de RAM est amplement suffisant.
– la simplicité : les honeypots sont relativement simples à comprendre et à mettre en place. Ils ne né-
cessitent pas d’algorithmes complexes, de bases de données à maintenir à jour, ou de listes de signatures.
– une vue limitée : bien que les honeypots collectent toute intéraction avec eux-même, ils ne peuvent
relever les informations sur d’autres machines.
– le risque : il peut arriver qu’un pirate prenne entièrement le contrôle du honeypot cible. Si le
honeypot est isolé, cela ne posera pas énormément de problèmes, mais s’il s’agit d’une station spécifique
dans un réseau, le risque est plus élevé.
Les honeypots à basse intéraction travaillent en émulant des systèmes d’exploitation ou des services.
Relativement simples d’emploi, ils présentent un risque minimal. Il fonctionne à la suite d’une installation
software, et d’une sélection des services à émuler. L’avantage de ce type de honeypot est qu’il ne dispose
pas réellement d’un système d’exploitation, il ne fait que l’émuler. Le pirate n’a donc jamais la possibilité
d’attaquer ou d’affaiblir les autres sytèmes. L’inconvénient majeur est que ces honeypots ne peuvent
écouter que les attaques ayant traits aux services qu’ils émulent. Ils sont alors totalement insensibles aux
attaques basées sur d’autres services.
Les honeypots à haute intéraction sont des solutions beaucoup plus complexes, en ce sens qu’ils
n’émulent rien. Ils utilisent un système d’exploitation réel et de véritables applications. A la différence
des honeypots à basse intéraction, le pirate a ici accès à la réalité et non à l’émulation. Le principal
avantage est qu’il est alors possible de lister l’entièreté des accès qu’il subit, pour tous les services. De
plus, en donnant l’entièreté du sytème au pirate, on peut analyser l’attaque d’une manière beacoup plus
complète. En contrepartie, puisque le pirate a accès au système réel, le risque d’affaiblir d’autres stations
est plus grand.
Enfin, il faut noter qu’un honeypot à haute intéraction peut faire tout ce que fait un honeypot à basse
intération, et bien plus. Cependant, ils sont plus complexes à déployer et à maintenir en ordre.
Les tâches consistant à protéger une entreprise peuvent être explicitées comme suit :
– la prévention : le principe est de faire perdre du temps au pirate. Dans le cas d’un scan de ports,
le honeypot pourrait ralentir sa vitesse de scan4 . Grâce à ce ralentissement, l’entreprise aurait alors le
temps de réagir. Le honeypot se rapproche ici d’un IDS, avec la faculté supplémentaire de tenter de
"contrer" l’attaque. De plus, le simple fait d’utiliser un honeypot peut décourager le pirate. Comme ce
dernier ne sait pas à priori quelle machine est le honeypot, il ne risquera pas de s’y enliser.
– la détection : les honeypots réduisent le nombre de fausses alertes positives, et peuvent détecter
des attaques inconnues. Les honeypots à basse intéraction semblent les plus pratiques pour cette
détection, de par leur facilité de mise en place. Un honeypot à haute intéraction permet de mieux
étudier l’attaque, mais le risque que celle-ci s’étende est beaucoup plus grand, ce qui met en péril la
protection de l’entreprise.
– la réponse aux attaques : lors d’une attaque, le pirate ayant le champ libre pour opérer, il
laissera des traces sur son identité, sa localisation, comment il s’est introduit, ou les dommages qu’il a
causé. Toutes ses informations pourront être réutilisées par l’entreprise pour répliquer.
4 par l’intermédiaire de plages IP non utilisées par exemple.
Un firewall peut être software ou hardware. Pour protéger un système, il se placera à la frontière entre
Internet (ou un réseau) et la machine (ou les machines) du réseau. Il servira de filtre, et si un paquet ne
correspond pas aux filtres qu’il renferme, le paquet en question sera rejeté.
Lorsque le paquet arrive au firewall, celui-ci analyse les champs IP et TCP/UDP. Ils sont confrontés
à chacune des règles spécifiées dans la table des autorisations présente dans le firewall, et configurée par
l’administrateur du système. Selon les règles qui autorisent ou refusent la transmission des paquets, le
firewall obéira aux ordres. Si un paquet ne satisfait à aucune des règles, il est soit rejeté, soit accepté,
suivant la philosophie choisie par l’administrateur réseau :
La première de ces deux approches est beaucoup plus sûre. La seconde est plus risquée car elle suppose
que l’administrateur est certain d’avoir envisagé tous les cas pouvant engendrer des problèmes.
Rule Action Src Host Src H. Port Dst Host Dst H. Port Flags TCP/Options IP
1 Allow 124.234.184.74 * 154.214.217.1 * SYN
L’avantage du filtrage par paquet est sa rapidité. Il est de plus relativement simple à implanter dans
un réseau.
Cependant, la sécurité ne peut se baser uniquement sur le filtrage par paquet. D’une part, il est
difficile de maintenir un niveau suffisant de sécurité lorsque le nombre de règles augmente. D’autre part,
le type d’informations accessibles à ce niveau est limité, en l’occurence, il n’identifie que la machine et
non son utilisateur.
A la différence du filtrage de paquets, qui est considéré comme permissif, le filtrage de flux est restrictif.
En effet, il n’autorisera le flux entre deux entités que si la connexion entre ces deux entités existe. On
peut voir ce principe comme la création d’un tunnel entre deux machines. De ce fait, le circuit-filtering
ne sera souvent utilisé qu’en complément de l’application gateway.
La sécurité peut être ici très élevée. Agissant au niveau applicatif, on peut notamment la retrouver
dans l’authentification par mot de passe des utilisateurs.
En tant qu’inconvénient, ce principe de fonctionnement supposera que toutes les machines sont confi-
gurées pour communiquer avec ce proxy, ce qui impliquera probablement une configuration individuelle
de chaque machine ou l’installation de logiciels sur chacune d’elles.
– Avantages :
– Il n’est pas possible de l’éviter.
– Il est relativement peu coûteux.
– Il est transparent.
– Inconvénients :
– Pour le contourner, il "suffit" d’adapter l’attaque.
– Ses fonctionnalités sont souvent restreintes (il ne s’agit la plupart du temps que d’un filtrage de
paquets).
– Avantages :
– Il est facilement intégré au réseau.
– Son administration est souvent simplifiée.
– Le niveau de sécurité est assez élevé.
– Inconvénients :
– Ce type de firewall étant propriétaire, les mises à jour dépendent entièrement du constructeur.
– En raison de l’architecture hardware, peu de modifications sont autorisées.
Donnons-en tout d’abord une définition. Nous dirons qu’une vulnérabilité est une faiblesse inhérente
à un objet (software ou hardware). Elle a principalement deux origines :
– Faute de conception : un algorithme cryptographique qui présente une faiblesse qui peut être
volontaire (présence d’une trappe) ou involontaire (ce que l’on appelle vulgairement une faille)
– Faute d’utilisation : une méprise ou une inattention dans la procédure d’utilisation d’un logiciel
ou du système
Un terme souvent associé à la notion de vulnérabilité est le terme “exploit”. Cet exploit sera défini
comme attaque profitant d’une faille pour modifier le comportement du système ou en prendre le contrôle.
Il n’existe pas à proprement parler un classement des vulnérabilités selon leur degré de gravité. On
admet cependant couramment les catégories “Faible, moyenne et haute”.
– High : pas d’interaction de l’utilisateur, globale
– Medium : faible interaction
– Low : forte interaction, localisé
On trouve également parfois le qualificatif “critique". Toutefois, le fait de classer une vulnérabilité
dans telle ou telle catégorie est purement subjectif. Ainsi une faille classée “critique” par une société X
sera peut-être classée “moyenne” par une société Y. Un exemple est donné à la figure 19.7.
Remarquons tout de même que ce n’est pas parc’un patch existe qu’il est installé par l’utilisateur. Dans
la majorité des cas, le patch existera, mais par méconnaissance, ou inconscience, l’utilisateur ommettre
d’installer le correctif.
L’absence de vérification des données (“Format String”), permet notamment le XSS (Cross Site Scrip-
ting) : corruption de forums autorisant par exemple l’insertion de code dans les messages utilisateur
(HTML,. . . ), ou encore l’obtention d’accès cachés aux serveurs en envoyant les paramètres adéquats dans
les adresses URL.
Sur la figure 19.9, on aperçoit le comportement normal de la fonction strcpy(). A priori, sans avoir
été averti d’une utilisation malicieuse possible, on ne détecte pas directement pourquoi cette fonction
peut poser un quelconque problème. Toutefois, la mise en situation évoquée à la figure 19.10 montre
le contraire : si aucune vérification de la taille effective des données pointées par bar n’est faite, une
corruption est possible, pouvant permettre l’insertion de code.
Il existe un certain nombre de fonctions dont il est bon de se méfier. Une liste est donnée à la figure
19.11.
– Utiliser des canaris : il s’agit de placer sur la pile des nombres aléatoires pour chaque appel de
fonction à la suite de l’adresse de retour. Ainsi, après vérification de ces valeurs, on peut déterminer
si une erreur de type Buffer overflow a pu être commise (non concordance) ou non (concordance).
L’inconvénient principal dans l’utilisation de ces canaris est le fait qu’il soit nécessaire de recompiler
le code source.
– Utiliser des librairies “sécurisées” : certaines librairies fournissent des fonctions sûrs.
– Utiliser des langages autres que C et C++, ceux-ci facilitant la mise en place de telles vulnérabilités.
La figure 19.12 donne une liste de langage et leur éventuelle protection par rapport au problème du
buffer-overflow. Attention au fait que la présence d’un “Safe” dans ce tableau ne concerne que le buffer-
overflow, et pas d’autres types d’erreurs de programmation !
– Il est parfois possible d’empêcher l’exécution de code sur la pile ou sur le tas par l’intermédiaire de
19.4.2.2 Conclusions
En règle générale, la protection contre ces vulnérabilités devra avoir lieu à trois moments distincts.
– Avant : Se documenter, être attentif lors du choix du langage
– Pendant : Être attentif aux fonctions employées, réaliser un audit du code (que ce soit en interne,
ou par des sociétés spécialisées), utiliser des outils de scanning
– Après : Tester le programme et les entrées possibles (longueur, caractères aléatoires, etc.)
La sécurité d’une entreprise est très souvent attribuée au département IT de celle-ci. C’est pour cette
raison qu’en tant que futur ingénieur, il faut pouvoir gérer cette sécurité. Dans l’idéal, cette gestion devra
se faire avec le soutien d’instances supérieures de l’entreprise (p.e. le pouvoir organisateur).
Comme nous l’avons déjà mentionné, la sécurité est un compromis entre coûts, risques et contraintes :
– un système ultra-sécurisé mais très contraignant ne sera pas utilisable en pratique
– un système non sécurisé encore moins. . .
20.1 Définitions
Avant toute chose, définissons quelques termes, dont certains ont déjà été évoqués :
– Vulnérabilité : faiblesse inhérente à un objet (software ou hardware)
– Menace : danger (interne ou externe) tel qu’un hacker, un virus, etc.
– Risque : probabilité qu’une menace exploite une vulnérabilité
– Contre-mesure : moyen permettant de réduire le risque
205
20. LA GESTION DES RISQUES
Les deux premières étapes forment ce que l’on nomme communément la phase d’Analyse des risques.
Pour réaliser cette estimation, il existe des méthodes "mathématiques" permettant de quantifier ces
risques.
Une dernière remarque doit cependant être faite concernant les employés. Jusqu’ici, nous avons vu
qu’il fallait tenter d’obtenir le meilleur compromis de sécurité. Mais n’oublions qu’une faille béante peut
également exister en la personne des employés de l’entreprise. Si on ne les éduque pas aux notions de
1 Toutefois, en 2007, on remarque une remontée de la somme totale des pertes, due à la fraude financière.
Nous avons déjà cité ce thème dans l’introduction : le facteur humain. Il est beaucoup plus simple de
corrompre ce qui entoure l’utilisateur que l’algorithme mis en oeuvre :
– Méconnaissance des risques à conserver la liste des mots de passe utilisés à coté de l’ordinateur
– Retrouver le texte en clair sur son ordinateur (hacking, vol, . . . )
– Espionnage, délation, shoulder-surfing
– ...
Il ne s’agit donc pas ici d’expliquer comment fonctionne les algorithmes qu’il utilisera, mais plutot
comment et dans quelles conditions il devra les utiliser.
A méditer. . .
Il y a toujours un risque, aussi infime soit-il. Il faudra donc peser le pour et le contre lors de la mise
en place éventuelle d’une contre-mesure.
La biométrie
21.1 Fonctionnement
La biométrie est une méthode d’identification basée sur certaines données humaines, physiques ou
comportementales, qui peuvent aller de la rétine, à l’empreinte digitale en passant par la voix ou la forme
de la main. Chacune de ces méthodes est ce que l’on nomme un "Moyen Biométrique".
Les techniques biométriques furent avant tout mises au point pour pallier le problème des pertes de
mot de passe et autres vols de cartes à puce.
Comme cela vient d’être dit, on classe les moyens en deux catégories :
– Les moyens physiques (physiologiques) tels que l’iris, l’empreinte digitale, . . .
– Les moyens comportementaux tels que la voix, la dynamique de signature ou de frappe, . . .
Chaque moyen possède ses avantages, ses inconvénients et ses applications. Plusieurs questions devront
être posées telles que :
– Le mode de saisie est-il optimal ?
– Quel type d’analyse est-il permis d’opérer ?
– Quelles sont les capacités de stockage disponibles ?
– Quel est le type de vérification demandé ?
Les différents moyens n’ont pas le même niveau de sécurité, ni la même facilité de mise en oeuvre.
De plus, à la différence des systèmes travaillant à partir de mots de passe, les réponses ne seront jamais
fiables à 100%. Dans le cas des mots de passe, on peut tout de suite dire si la phase d’authentification a
réussi ou non. Avec la biométrie, il faudra travailler selon des taux de similitude prédéfinis.
Il faudra aussi veiller aus faits que les données humaines se modifient avec le temps, et que la manière
avec laquelle sont relevées ces mêmes données n’est jamais identique. Par exemple, le doigt n’est jamais
posé tout à fait de la même manière sur le support de saisie. Un problème similaire se produit avec
l’écartement des doigts de la main.
La figure 21.1 illustre les différents moyens biométriques, ainsi que les critères de référence utilisés
pour les classer. On définira ces derniers comme suit :
– Intrusiveness : indique à quel point l’utilisateur se sent "agressé" par la méthode d’identification
– Accuracy : indique l’efficacité du système pour identifier un utilisateur
– Cost : indique le coût de la mise en place d’un tel système (lecteurs, capteurs, stockage, ...)
– Effort : indique l’effort nécessité par l’utilisateur pour permettre la mesure
208
21. LA BIOMÉTRIE
2. Vérification : l’utilisateur fournit son PIN et se présente au capteur. Le système cherche l’entrée
correspondant au PIN dans sa BD et en extrait la référence associée. Le système compare la
mesure et le template. Lorsqu’elle est possible, cette phase est la plus rapide. On parle de "positive
recognition".
3. Identification : L’utilisateur se présente devant le capteur, sans fournir de code PIN. Le système
extrait les points d’intérêt de la mesure et cherche dans sa BD s’il y a une correspondance. En
conséquence, cette phase est plus lente que la précédente il est plus rapide d’extraire une donnée
en vue de la comparer que de comparer tous les templates. On parle de "negative recognition".
Fig. 21.5 – Minimisation des TFR et TFA et type des applications concernées
Un système sera fonctionnel lorsque son T.F.R. sera faible. Un système sera sûr lorsque son T.F.A.
sera faible. L’objectif sera de minimiser ces deux valeurs, comme on le voit sur la figure 21.5. Le x (EER)
représente la marge d’erreur autorisée. Plus il est grand, moins le système est sûr, mais plus on le réduit,
moins le système est utilisable pour identifier des personnes. La recherche tente de limiter cet EER afin
d’obtenir simultanément des TFA et TFR acceptables.
Galton a défini la notion de minuties des empreintes digitales comme étant l’arrangement particulier
des lignes des empreintes. Ces lignes forment des points caractéritiques permettant d’identifier de ma-
nière unique un individu. Ces points peuvent être des arrêts de lignes, des bifurcations, ou encore des îlots.
Il existe de nombreux types de capteurs pour obtenir l’image et les minuties associées :
– Optiques par contact, avec ou sans contact : Le capteur utilise un CMOS (anciennement un CCD).
Le scan est réalisé avec ou sans contact (doigt posé sur le capteur ou non). Si aucun contact n’a lieu,
la lecture des empreintes a lieu par réflexion.
– Par balayage : le doigt défile sur le capteur et l’image est reconstruite au fur et à mesure de façon
logicielle.
– Par capacité électrique : on mesure la capacité électrique existante entre la peau et le capteur. Elle
varie comme l’inverse de la distance le doigt et le capteur. Ainsi, en présence d’une crête, la capacité
électrique sera plus importante (car la distance est plus courte à cet endroit, puisque le doigt est posé
sur le capteur).
– Par ultrasons : cette technique permet d’éviter le problème des doigts salis qui ne permettrait pas
une bonne réflexion de la lumière.
– Par transmission de lumière : le capteur mesure l’intensité d’un faisceau traversant le doigt.
La technique d’extraction des empreintes porte le nom d’EDR : Empreinte Digitale Réduite. Le
processus est illustré par la figure 21.7.
21.4.1.1 Avantages
– C’est une technologie très connue du grand public, ce qui la rend moins intrusive
– La petite taille des nouveaux types de lecteurs permet une meilleure intégration dans de nombreuses
applications
– Ces nouveaux lecteurs possèdent un moindre coût
– Le traitement des données est relativement rapide
– Les T.F.R. et T.F.A. sont assez faibles (si le nombre de points caractéristiques est assez élevé).
21.4.1.2 Inconvénients
– L’aspect "policier" donne un caractère négatif à l’identification
– Il est difficile de lire les données en présence de doigts blessés ou sales, selon la technique employée.
– L’utilisateur doit poser correctement son doigt sur le capteur, au risque de se voir rejeté.
– Le lecteur est exposé aux dégradations dûes aux passages réguliers des doigts et aux pressions
exercées lorsqu’un contact est nécessaire.
– Il existe des techniques de contournement qui ne sont pas compliquées à mettre en oeuvre (ex :
gummy fingers).
21.4.1.3 Applications
– Les domaines d’applications sont très larges : gsm, contrôle du démarrage d’un véhicule, accès à
certains locaux,...
– Dans le domaine judiciaire, entre 8 et 20 points caractéristiques sont suffisantes pour une identifi-
cation.
21.4.2.1 Avantages
– C’est une technique simple à utiliser
– Elle est également très connue du grand public par l’intermédiaire du cinéma
21.4.2.2 Inconvénients
– La mise en place d’un tel système est parfois impossible au vu de la place nécessaire (il est impossible
d’utiliser un tel lecteur dans une voiture, ou pour un téléphone portable ...)
– Ce moyen biométrique est sujet aux modifications de forme dûes au vieillissement de l’individu
– Il est également peu robuste en ce qui concerne l’identification de jumeaux, ou de membres d’une
même famille
21.4.2.3 Application
– On l’utilise souvent dans les contrôles d’accès aux locaux
21.4.3.1 Avantages
– Il permet d’obtenir facilement des points caractéristiques supplémentaires
21.4.3.2 Inconvénients
– Cette méthode n’est pas utilisable seule
21.4.3.3 Application
– Utilisation en complément d’une autre technique
– Applications identiques à celle du Hand-Scan
– Eigenface (MIT, 1987) : le visage est décomposé en plusieurs images mettant chacune en évidence
une caractéristique du visage en question. Ces caractéristiques sont définies par une série de valeurs
(vecteurs propres, valeurs propres et matrice de covariance) permettant d’établir un ensemble de sta-
tistiques en vue d’identifier les individus avec plus ou moins de précision.
– Feature Analysis : basée sur la méthode Eigenface, elle calcule certaines distances entre éléments,
les positions relatives de ces éléments, et semble donc plus souple pour l’identification. En effet, en cas
d’inclinaison de la tête par exemple, la première méthode ne reconnaitra pas le visage, alors que le
calcul des positions relatives permettra l’identification de l’individu.
– Etudes des expressions et postures : à l’aide des réseaux de neurones, ce système permet, à partir
d’un nombre réduit de données sources, de déduire un nombre impressionnant d’images qui pourront
par la suite être comparées à la saisie du visage de l’individu désirant être identifier. La figure 21.10
illustre les possibilités de cette technique.
– Etude 3D : cela permet d’analyser la forme des éléments du visage tels que le creusement des joues,
la profondeur des orbites, etc.
– Etude de la texture de la peau : avec une précision assez grande, cette technique permet d’en étudier
certaines caractéristiques (pores, taches, défauts de peau, etc.)
21.4.4.1 Avantages
– Technique non invasive
– "user-friendly"
– Une des techniques les plus développées après les empreintes digitales
– Permet de sécuriser des organisations publiques de grande envergure
21.4.4.2 Inconvénients
– Selon les techniques : mauvaise adaptation au vieillissement, pilosité changeante, expression du
visage, mouvement du visage, etc.
21.4.4.3 Applications
– Entrées de casino
– Hall d’aéroports
Chaque oeil est unique. Dans l’iris de l’oeil, il est possible de compter plus de 200 paramètres indé-
pendants. Dès 1980, des opthalmologues ont remarqué que si la couleur de l’iris peut varier à travers le
temps, il n’en est pas de même pour le motif (voir firgure 21.12) qui reste constant.
Pour la capture, on procède à la prise de vue, souvent par infrarouge pour éviter la dilatation de la
pupille. On réalise ensuite un applatissement de l’image, et après traitements mathématiques (ondelettes
de Gabor), on obtient un code qui pourra prendre place dans une base de données. Le processus est
illustré à la figure 21.13.
Signalons aussi que cette mesure biométrique nécessite un nombre élevé de prises de vue. En effet,
ici, non seulement la distance entre le capteur et l’oeil peut varier, mais également la position de la tête,
l’ouverture de la paupière, l’éventuel maquillage des cils masquant une partie du motif, etc.
21.4.5.1 Avantages
– Grande quantité d’information présente dans l’iris
– Le capteur est moins exposé qu’un capteur tactile
– L’iris ne subit pas de modification à travers le temps
21.4.5.2 Inconvénients
– Le motif de l’iris peut être photographié en vue d’une usurpation. Tout dépend donc des mesures
de sécurité prises (utilisation d’infra-rouge).
– Caractère plus intrusif que l’empreinte ou que la main.
21.4.5.3 Applications
– Identification dans les distributeurs de billets de banque.
– Contrôle d’accès aux locaux et machines.
21.4.6.1 Avantages
– L’empreinte rétinienne est bien moins exposée aux blessures que les empreintes digitales
– Les T.F.R. et T.F.A. sont faibles
– On peut mesurer jusqu’à 400 points caractéristiques, contre "seulement" 30 à 40 pour une empreinte
digitale
21.4.6.2 Inconvénients
– Souvent mal accepté par le public, en raison de l’aspect sensible de l’organe
– Mise en place assez coûteuse car le système n’est pas produit en masse
21.4.6.3 Applications
– Utilisation dans certains distributeurs de billets
– Controle d’accès aux locaux "haute sécurité"
1. Text Dependent System : l’identification se fait sur des termes déterminés. Il existe 4 types de
systèmes dépendants du texte :
– A texte suggéré (text-prompted) : lors de chaque session d’identification, et pour chaque utilisa-
teur, le système affiche un texte aléatoire.
– A traits phonétiques (speech event dependent) : certains traits phonétiques doivent être mis en
avant dans le texte prononcé par l’individu.
– A vocabulaire limité (vocabulary dependent) : l’individu doit prononcer des mots issus d’un
langage limité prédéfini (par exemple, une suite de chiffres)
– A texte personnalisé (user-specific text dependent) : l’utilisateur possède un mot de passe, ou
une passphrase.
2. Text Independent System (ou Free-Text) : l’utilisateur parle librement.
La sécurité est bien entendu plus forte dans le cas d’une identification par texte dépendant qu’indé-
pendant.
La phase d’apprentissage nécessite souvent plusieurs phrases afin de prendre en compte les différentes
intonations de la personne. Après l’acquisition, le signal est découpé en unités qui peuvent être soit des
mots, soit des phonèmes.
Cette technique porte aussi le nom de AAL, pour Authentification Automatique du Locuteur.
21.5.1.1 Avantages
– Bien accepté par les utilisateurs, car il suffit de parler
– Il est facile de protéger le lecteur (par l’intermédiaire d’une grille, dans le cas d’un parlophone)
– C’est le seul moyen d’identifier les extrémités d’une communication téléphonique
21.5.1.2 Inconvénients
– Ce système est sensible à l’état physique de l’individu
1. selon son état : stress, fatigue, maladie, . . .
2. selon ses émotions : joie, peine, . . .
3. selon son âge
– La fraude est possible par l’intermédiaire d’un enregistrement de bonnne qualité
– Le système est sensible aux bruits parasites (environnement, usure du micro)
21.5.1.3 Applications
– Utilisé dans la reconnaissance téléphonique
– Identification des propriétaires dans des immeubles à appartements, dont les lecteurs peuvent être
protégés par une grille
Lors de la phase d’apprentissage, il sera demandé à l’utilisateur de taper un certain nombre de fois
un mot de passe ou une passphrase, et un algorithme sera chargé de moyenner les temps relevés. Par la
suite, et selon le niveau de ressemblance demandé, les utilisateurs seront acceptés ou refusés.
Fig. 21.14 – Moyenne obtenue pour la frappe du mot “password” par trois utilisateurs [13]
21.5.2.1 Avantages
– Pas de système hardware, seul le logiciel suffit, ce qui permet de réaliser des économies substancielles.
– Très pratique lorsque le nombre d’utilisateurs est élevé, de par sa simplicité de mise en place et
d’apprentissage.
– T.F.A. inférieur à 0.5% si le mot de passe dépasse 8 caractères.
21.5.2.2 Inconvénient
– Il faut faire attention au clavier utilisé (distinction d’emplacement des touches en QWERTY et en
AZERTY). Les vitesses de frappe changeant d’un type de clavier à l’autre, un profil d’identification
sera nécessaire pour chaque configuration.
21.5.2.3 Applications
– Il est régulièrement utilisé en complément de sécurité (notamment pour des cartes à puces)
21.5.3.1 Avantages
– La sécurité contre la copie est plus forte que pour un simple mot de passe
– Faible coût du matériel nécessaire
21.5.3.2 Inconvénients
– Dégradation du matériel avec le temps
– L’écriture change au cours de la vie de l’individu.
21.5.3.3 Applications
– E-Commerce : Validation de la signature avant toute transaction
– Gestion banquaire : toutes les opérations sont signées
– Sécurisation des sessions sur ordinateur : au lieu d’un simple mot de passe, l’utilisateur doit sou-
mettre sa signature, ce qui est beaucoup plus difficile à copier
– Verrouillage de fichiers : on protège les fichiers par signature, ce qui permettra de l’ouvrir, de le
modifier, de l’imprimer, de façon sécurisée
21.6.2 L’oreille
Peu répandue, cette technique consiste à comparer les empreintes d’oreille que peuvent laisser certains
individus dans le cadre d’un délit. Cette méthode est uniquement utilisée par la police, mais est admissible
devant une cour de justice.
21.6.3 L’ADN
Cette technique est la plus sûre car elle ne se base pas sur des points caractéristiques, mais sur
l’entièreté des données. Il donnerait des T.F.R. et T.F.A. nuls (si on fait exceptions des vrais jumeaux
monozygotes qui possèdent le même ADN). Cependant, sa mise en place pose énormément de problèmes
en raison de son caractère "intrusif". En effet, le relevé de cet ADN permettrait la création d’un répertoire
des utilisateurs, et ouvrirait la porte à de nombreuses dérives.
21.6.4 Autres
D’autres méthodes sont encore exploitables, telles que la dentition, l’odeur, les battements de coeur,
la démarche ou encore les pores de la peau.
– Plus de fiabilité car les vérifications sont indépendantes (moins de faux positifs et faux négatifs)
– Plus de compatibilité : un moyen biométrique pris seul n’est jamais utilisable par 100% de la
population.
– Plus de sécurité : la multiplication des moyens rend plus compliquée la tâche du pirate (plusieurs
mesures à contourner). Il est aussi possible de vérification le caractère “réel” de l’utilisateur en inter-
agissant avec lui, par exemple en testant plusieurs doigts dans un ordre précis inconnu à l’avance.
Remarques importantes :
– Les vrais jumeaux sont aujourd’hui distinguables avec à peu près n’importe quel technique biomé-
trique : rétine, iris et même la forme du visage. Signalons également que deux vrais jumeaux, même
monozygotes, non pas les mêmes empreintes digitales (elles ne dépendent pas de l’ADN qui lui est
identique).
– Aucune technique ne permet d’identifier quelqu’un avec 100% de certitude (au sens strict), de même
qu’aucun moyen n’est utilisable avec 100% de la population.
La Stéganographie
22.1 Définition
La stéganographie est l’art de "cacher" une information privée ou secrète dans un support, apparement
anodin. Le support peut être de plusieurs types tels qu’un fichier texte, image, audio, ou vidéo, mais peut
également être un système de fichier, ou un code source. La caractéristique principale est que le fichier
doit sembler ne contenir aucune information sensible, i.e. ne renfermer aucune information secrète. Le
support associé à son message porte le nom de "stégo-médium".
La stéganographie part du principe que la perception humaine n’est pas assez évoluée pour détecter
les petites modifications introduites dans les images et sont destinées à renfermer un message. De plus,
personne ne sait, à priori, qu’un fichier renferme un message stéganographié (en dehors des personnes
visées par le message).
On parle également de la stéganographie comme d’une possibilité pour établir un canal de commu-
nication secrète (cover channel ). En effet, par son intermédiaire, il est possible de communiquer avec
d’autres individus sans se faire remarquer. Il serait alors possible par exemple, de passer à travers un
firewall en se bornant aux protocoles et liens autorisés, mais en transmettant des messages cachés à
l’intérieur de ceux-ci.
222
22. LA STÉGANOGRAPHIE
– L’imperceptibilité : comme mentionné ci-haut, la stéganographie repose sur le fait qu’une tierce
personne ne peut percevoir la présence d’un message.
– La capacité : il s’agit du nombre de bits qu’il est possible de dissimulés dans le support.
– La robustesse : elle représente la manière avec laquelle le message dissimulé résiste aux modifications
apportées au support.
Si on désire transmettre le message "Jean arrêté à Paris. Mettre réseau en sommeil. Envoyer un
OPR2 .", on obtiendra
J’espère que tu voudras bien m’excuser, mais j’ai eu tellement de travail à la maison que je n’ai pas
pris le temps d’écrire aux amis. Cependant je t’envoie ce petit mot d’urgence pour te faire savoir que
si tu veux des pneus, tu ferais bien de te dépêcher ; en effet :
Hier, Jean est venu nous rendre visite, il descendait du train et s’est arrêté un moment chez nous pour
bavarder et donner des nouvelles à mon père de son Paris. En principe, il doit rester quelques jours ici
pour mettre en ordre ses affaires avant de repartir pour la capitale. A Paris, c’est calme, mais la veille
il avait été dérangé en plein sommeil par les sirènes deux fois dans la nuit ! Ceci mis à part, il doit nous
faire envoyer par un ami à lui des pneus neufs pour nos vélos. Il en a pour le moment, profitons-en ! A
bientôt de tes nouvelles.
P.-S. Nous irons au mariage de Simone et Henri, dimanche en quinze. Henri est un garçon sympathique
qui a connu Simone l’an dernier chez Xavier, notre vieil ami. Il a deux ans de plus qu’elle et nous
pensons que Simone va être très heureuse.
Bien que le texte chiffré soit beaucoup plus court, il est cependant beaucoup plus explicite quant au
fait qu’il renferme un secret.
On utilisera parfois la cryptographie en supplément de la stéganographie. Ainsi, même si le message
est découvert, il faudra encore le déchiffrer, ce qui apporte un gain de sécurité non négligeable.
1 Stéganographie vient du grec "steganos", signifiant "couvrir".
2 OPérateur Radio.
On trouve aujourd’hui régulièrement ce type de sécurité dans les images protégées par droits d’au-
teurs, dans certains supports audios et vidéos, ou encore sur des cds ou dvds. La détection du message
permettra alors de distinguer un original d’une copie, de valider un accès, ou encore de tracer l’utilisation
d’un média.
Hormis l’utilisation qui en sera faite, une autre différence majeure existe entre les deux concepts :
1. Dans le cadre de la stéganographie, le message doit être caché, imperceptible.
2. Dans le cadre du watermarking, le message devra être impossible à enlever, impossible à modifier
(mais peut éventuellement être visible).
Il est également fréquent de considérer la stéganographie comme une technique utilisée en deux per-
sonnes (one-to-one), le watermarking étant préféré pour les communications one-to-many.
En Chine ancienne, les messages étaient écrits sur de la soie, qui était ensuite roulée en boule, elle-
même recouverte de cire. Un messager devait enfin avaler cette boule.
Vers 1500, l’abbé Trithème utilisa des louanges afin de faire passer des messages de manière anodine.
Chaque lettre du message était associée à un groupe de mots, comme indiqué à la figure 22.3. Sa technique
se rapproche d’une technique cryptographique, mais le concept de "recouvrement du message" en fait un
exemple de stéganographie linguistique.
Enée le Tacticien, un historien de la Grèce Antique, imagina de percer de minuscules trous sous
certaines lettres d’un texte anodin. Une fois toutes les lettres ainsi marquées relévées, on pouvait lire
le message caché. Ces trous étaient invisibles pour une personne n’étant pas au courant de la méthode
employée.
Durant la seconde guerre mondiale, on utilisa l’encre invisible. Cette encre, pouvant être créée notam-
ment à partir de lait, de vinaigre, d’urine, de jus de citron ou encore de chlorure d’ammoniac, permettait
d’écrire sur du papier sans pour autant afficher les caractères ainsi notés.
Différentes méthodes linguistiques existent également. Pour cacher un message dans un texte, on peut
jouer sur l’espace entre les mots, la ponctuation, ou encore l’orthographe. A l’origine, c’est l’acrostiche
qui permettait de cacher ces messages. L’acrostiche est un poème dont la première lettre de chaque vers
compose un mot ou une phrase. Dès qu’un enfant commence à écrire, il pratique donc souvent l’acros-
tiche pour son premier cadeau de fête des mère ! Un des exemples les plus imposant fut sans doute le
livre Hypnorotomachia Poliphili publié en 1499 par un anonyme. On découvre en effet dans cet ouvrage
que si on regroupe la première lettre de chacun des chapitres, au nombre de 38, on peut recomposer la
phrase Poliam frater Franciscus Columna peramavit ce qui signifie Frère Francesco Colonna aime Polia
passionnément.
Mais il existe également des techniques plus évoluées où, pour pouvoir comprendre le message caché,
il faut savoir quels mots ou quelles lettres lire. Par exemple, ci-dessous, un texte à première vue innocent
envoyé par un espion allemand pendant la seconde guerre mondiale renfermait un message très important :
Apparently neutral’s protest is thoroughly discounted and ignored. Isman hard it.
Blockade issue affects pretext for embargo on byproducts, ejecting suets and vegetable
oils.
Dans la cas présent, en prenant la deuxième lettre de chaque mot, on voit apparaitre le message
suivant :
Pershing sails from NY June 1.
Parmi les exemples les plus célèbres illustrant le principe de stéganographie linguistique (ou littéraire),
on trouvera encore l’échange de courier entre George Sand et Alfred de Musset.
Votre poupée
Alfred de Musset
George Sand
Une autre méthode ingénieuse fut inventée par Gaspar Schott (1608 - 1666). Le principe, illustré à
la figure 22.4 était de coder le message selon des notes de musique. L’avantage du procédé était que le
message apparaissait comme une partition musicale, et donc passait totalement inaperçu. Cependant, si
la partition était jouée, il y avait très peu de chance pour que la mélodie soit agréable.
La ponctuation permit aussi d’identifier certains messages cachés. Au XV II e siècle, Sir John Treva-
nion fut arreté et emprisonné dans un chateau. Il reçut alors une lettre, que les gardiens avaient jugés
sans danger. Lorsque John lut celle-ci, il détecta la présence suspecte de certaines virgules étrangement
placées. Il repéra également qu’en prenant la troisième lettre de chaque mot suivant ces virgules, il pou-
vait former la phrase Panel at east of chapel slides ce qui signifiait Le panneau à l’extrémité Est de la
chapelle peut glisser. C’est ainsi qu’il demanda un instant de recueillement dans la chapelle et s’évada.
Dans les années 1940, la puissance des techniques stéganographiques était si crainte que les Etats-
Unis mirent en place un service de censure constitué d’environ 10.000 personnes, chargées d’étudier et de
détecter les messages cachés. On interdit les parties d’échecs internationnales, les dessins d’enfant accom-
pagnant les lettres pour les grands-parents, les diffusions de disques à la radio, ou encore les annonces
pour chiens perdus.
La stéganographie reste également un sujet d’actualité. Après les incidents du 11 septembre 2001,
beaucoup ont avancé l’hypothèse que des échanges entre terroristes avaient eu lieu afin de préparer les
attaques.
Remarque : Un autre "phénomène stéganographique" est apparu avec le livre "The Bible Code" de
Michael Drosdin. Ce dernier prétendait que la Bible renfermait des messages cachés, tels que l’assassinat
d’Yitzhak Rabin. Après plusieurs expériences, il s’avéra que ce "code" n’était rien d’autre que le fruit du
hasard. Ainsi, on découvrit notamment l’assasinat de JFK dans Moby Dick (fig. ??), ou encore le décès
accidentel de la princesse Diana.
L’explication prend sa source dans un théorème, portant le nom de Théorème de Borel. Celui-ci
indique que si on prend un nombre suffisant de combinaisons de lettres, il est possible de retrouver à peu
près n’importe quel sujet ayant trait au passé ou au futur. Ainsi, sur un texte d’environ 1000 lettres, il
est possible de trouver plusieurs millions de mots, selon leur agencement par la méthode appelée ELS
(Equidistant Letter Sequence).
22.3 Principes
Aujourd’hui, les messages cachés se transmettent de manière digitale et non plus par des techniques
manuelles (bien que le système du message écrit sur le crâne d’individus semblent encore avoir été utilisé
au début du XX e siècle par des espions allemands). Le schéma du processus stéganographique est illustré
à la figure 22.5.
Il est à remarquer que plus le message à dissimuler est long, plus la modification du fichier support
sera importante, et donc plus la détection sera facile.
Le LSB utilise comme son nom l’indique les bit de poids le plus faible pour transmettre un message.
Si on regarde le codage d’une image RGB, on remarque que chaque pixel est codé selon 3 octets (un
octet par couleur). En modifiant le bit de poids le plus faible, l’image sera effectivement modifiée, mais
les nuances résultantes seront tellement faibles que l’oeil humain ne pourra que très rarement s’en rendre
compte3 .
Le message caché pourra être d’autant plus important que l’on utilisera un grand nombre de bits pour
le cacher. En contrepartie, utiliser plusieurs bits modifiera plus fortement l’image de base, et donc rendra
la présence d’un message beaucoup plus détectable.
L’avantage du LSB est que la taille du fichier n’est pas modifiée, puisque le message est encodé dans
les parties peu ou pas utilisées du fichier. C’est également une méthode rapide et facile à mettre en
oeuvre. Cependant, le LSB possède un désavantage de taille, à savoir la perte du message lorsque des
changements importants ont lieu sur le support, comme par exemple une rotation, ou un redimmension-
nement de l’image.
Une amélioration du LSB consiste à introduire un paramètre aléatoire permettant de distribuer les
bits de faible utilisés. Ainsi, les modifications n’auront pas lieu "uniquement" dans les premiers octets de
l’image, mais seront au contraire répartis aléatoirement dans l’entièreté de l’image.
3 Si la modification avait eu lieu sur le bit de poids le plus fort, les différences auraient été très marquées, et on aurait
22.4.2 L’audio
Il existe 4 techniques principales permettant d’intégrer des données dans un flux audio :
– LBE (Low Bit Encoding) : les données sont stockées dans le flux audio d’une manière semblable
à celle utilisée dans le cas du LSB pour les images.
– SSE (Spread Spectrum Encoding) : cette méthode ajoute un bruit aléatoire au signal sonore.
Le message est ensuite dissimulé dans ce bruit additif.
– EDH (Echo Data Hiding) : dans la plupart des cas, un echo dans une mélodie permet de
grandement améliorer la qualité sonore. Plus le temps séparant le son original et son echo est réduit,
moins l’oreille humaine peut le détecter. La durée de ce délai peut alors être utilisée pour dissimuler
des bits d’information. Ces délais une fois mesurés, il est alors possible de recréer le message initial.
– Le masque de perception : l’idée est ici de cacher un son derrière un autre plus puissant, en
utilisant une fréquence identique à celle de celui-ci.
22.4.3 La vidéo
Plusieurs techniques existent, mais sont pour la plupart des améliorations ou modifications de la
technique de la transformée en cosinus discret (DCT). Celle-ci utilise la quantification des parties les
moins importantes des images (arrondies aux valeurs supérieures par exemple). L’oeil étant relativement
peu sensible aux hautes fréquences, la DCT pourra appliquer des modifications plus importantes dans
cette plage, sans pour autant créer de modifications visibles dans l’image. Le message est alors injecté
dans l’image en jouant sur les facteurs d’arrondi. Une compression sans perte est ensuite appliquée.
L’exemple de code assembleur suivant illustre le principe de l’insertion d’octets dans les trous du code.
L’insertion d’octets sera rendue possible grâce à la présence d’instructions inutiles (NOP, NO opera-
tion). On peut dès lors remplacer ce code “mort” par des octets de notre choix, sans que cela n’affecte le
déroulement du programme, pour autant que l’on soit certain de la non-utilité de cette partie du code.
Dans le cas contraire, il est très probable que le programme plante en tentant d’exécuter ces instructions.
Il existe également des techniques permettant de cacher des informations sur un disque dur en utilisant
des blocs non utilisés et donc non référencés dans la table d’allocations des fichiers. Ainsi, seul l’utilisateur
ayant connaissance de ces blocs pourra lire les informations cachées. Un amélioration consiste à placer
l’information cachée de manière redondante. En effet, le système d’exploitation n’ayant pas connaissance
du message dissimulé, il pourrait écraser certains blocs le contenant en partie.
22.5 La stéganalyse
La stéganalyse consiste à identifier la présence d’un message. Seule cette présence doit être déterminée.
Dans un second temps, le message lui-même pourra être retrouvé, mais ce n’est pas l’objectif principal
de la stéganalyse.
1. Les attaques passives : elles visent à identifier la présence d’un message, dans le but secondaire de
pouvoir le reconstituer par la suite. Ces attaques peuvent prendre plusieurs formes :
– la lecture ou l’écoute du fichier,
– la comparaison avec le fichier original (si il est disponible),
– certaines attaques statistiques (attaques sur le LSB),
– la détection des signatures des logiciels utilisés (étude du code hexadécimal)
2. Les attaques actives : elles consistent à détruire le message caché, sans prêter attention à ce qu’il
signifie. L’objectif est de supprimer le message, ou en tout cas, à le rendre inutilisable. Cette
destruction aura souvent lieu par l’intermédiaire de modifications du support (redimensionnement
(image, vidéo), filtrage (sons), compression, ...).
On trouve les premiers exemples au début du 17ème siècle, mais cette technique est toujours réguliè-
rement utilisée de nos jours dans la vie courante. On peut notamment citer les marquages routiers ou les
publicités marquées au sol dans les grands prix de F1 par exemple. Si on se tient à proximité de l’image,
elle apparait déformée, mais une fois une certaine distance respectée, ou selon un angle de vue précis,
l’image apparait "normalement" (comme on le voit sur la figure 22.8).
Cependant, alors que l’anamorphose n’est rien d’autre qu’une représentation particulière d’un dessin
(mais reposant tout de même sur une solide base mathématique), certains ont trouvé en cette technique,
une méthode originale pour transmettre une image tout en la cachant dans une autre. Il ne s’agit pas
à proprement parler d’une technique de stéganographie (puisqu’il n’y a pas d’écriture), mais l’idée de
dissimulation reste tout de même assez proche dans certains cas. Quelques exemples sont présentés ci-
dessous.
Conclusions
– Comment le protéger
1. Ne pas surprotéger ce qui n’en vaut pas/plus la peine
2. Protéger efficacement ce qui en vaut la peine
3. Assurer un niveau adéquat de sécurité
4. Placer la sécurité au bon endroit.
– Rester attentif aux nouvelles technologies, aux mises à jour de sécurité des logiciels, etc.
233
Chapitre 24
24.1 Entropie
On dit qu’une variable aléatoire X renseigne totalement sur le déroulement de l’expérience E si
H(X) = H(E)
Exemples :
– Jours de la semaine : 3 bits d’information → 000 = dimanche, 001 = lundi, ..., 110 = samedi
– Genre : 1 bit d’information → 1 = masculin, 0 = féminin
– On lance un dé non pipé et on considère les 3 variables aléatoires suivantes :
X1 qui vaut 0 si le nombre tiré est pair, 1 s’il est impair.
X2 qui vaut 0 si le nombre tiré est 1 ou 2, 1 si le nombre tiré est 3 ou 4, 2 si le nombre tiré est 5 ou 6.
X3 qui vaut le nombre tiré.
Il est intuitivement clair que la connaissance de X3 renseigne plus sur le déroulement de l’épreuve
aléatoire que la connaissance de X2 , qui elle-même renseigne plus que celle de X1
On a
H(X1 ) = log 2 < H(X2 ) = log 3 < H(X3 ) = log 6
– On vous présente 10 cartons sur lesquels sont inscrits sur la face cachée un nombre (tous les nombres
sont différents).
Vous pouvez poser des questions du type : "Est-ce que le nombre sur ce carton est plus élevé que sur
celui-là ?".
Vous payez un franc par question, et vous en recevez 15 lorsque vous savez réordonner les cartons.
Acceptez-vous de jouer ?
Il y a 10 ! façons d’ordonner les cartons. L’incertitude sur l’ordre dans lequel ils sont rangés vaut donc
log2 (10!) = 21, 8 bits environ. Chaque réponse apporte au plus un bit d’information. Il faudra, du point
de vue de la théorie de l’information, 22 questions en moyenne pour reconstituer l’ordre. Il ne faut pas
jouer !
234
24. ANNEXE 1 : RAPPELS MATHÉMATIQUES
p(x, y) = p(x).p(y)
h(x) ne dépend pas de la valeur de x mais seulement de la probabilité qui lui est associée.
Donc,
XX
H(X, Y ) = − p(xi , yj ) log(p(xi |yj ).p(yj ))
i j
XX
=− p(xi , yj )[log(p(xi |yj )) + log(p(yj ))]
i j
XX XX
=− p(xi , yj ) log(p(xi |yj )) − p(xi , yj ) log(p(yj ))
i j i j
Remarques :
– On suppose les choix successifs des xi indépendants.
– Le remplacement d’un symbole par un autre ne change pas la valeur de H (probabilités équidistri-
buées).
H(X|Y) est l’incertitude qu’il reste sur X lorsque Y est connu. L’information apportée par les 2 va-
riables X et Y vaut donc l’information apportée par Y seule plus l’information apportée par X connaissant
déjà la valeur de Y.
1
Remarque : Le maximum de H(X) est atteint pour n fixé, lorsque pi = n ∀i.
2H(K)−nD − 1
24.3.1 Diviseurs
Soient a, b et m ∈ N. b(6= 0) divise a si
a = mb
On dit que b est un diviseur de a.
Exemple : les diviseurs de 24 sont 1,2,3,4,6,8,12,24.
24.3.1.1 Propriétés :
– Si a|1 alors a = ±1
– Si a|b et b|a alors a = ±b
– Tout b différent de 0 divise 0
– Si b|g et b|h alors b|(mg + nh) pour m et n arbitraires
– Si a = 0 mod n alors n|a
24.3.2 Congruence
Soit n, un entier non nul (dans Z), et a, b des entiers. a et b sont dits congruents modulo n si
(a mod n) = (b mod n)
24.3.2.1 Propriétés :
1. a = b mod nssin|a − b
2. a = b mod n ←→ ca = cb mod (cn)
3. a = b mod n ←→ ac = bc mod n
4. a = b mod m ←→ b = a mod m
5. a = b mod netb = c mod n → a = c mod n
6. ((a mod n) + (b mod n)) mod n = (a + b) mod n
7. ((a mod n) − (b mod n)) mod n = (a − b) mod n
8. ((a mod n) ∗ (b mod n)) mod n = (a ∗ b) mod n
Propriété 1 :
23 = 8(mod5) car 23 − 8 = 15 = 5 ∗ 3
−11 = 5(mod8) car − 11 − 5 = −16 = 8 ∗ (−2)
Propriété 6 :
[(11 mod 8) + (15 mod 8)] mod 8 = (3 + 7) mod 8 = 2
(11 + 15) mod 8 = 26 mod 8 = 2
Propriété 7 :
[(11 mod 8) − (15 mod 8)] mod 8 = (−4) mod 8 = 4
(11 − 15) mod 8 = (−4) mod 8 = 4
Propriété 8 :
[(11 mod 8) ∗ (15 mod 8)] mod 8 = (3 ∗ 7) mod 8 = 5
(11 ∗ 15) mod 8 = 165 mod 8 = 5
Il existe une autre technique pour la propriété n˚8 : la décomposition par facteurs plus simples.
Exemple : Pour trouver 117 mod 13, on peut procéder comme suit
112 = 121 = 4 mod 13
114 = (112 )2 = 42 = 3 mod 13
117 = 11 ∗ 114 ∗ 112 = (11 ∗ 3 ∗ 4) = 132 = 2 mod 13
24.3.3 L’ensemble Zn
Soit Zn l’ensemble des entiers, Zn = {0, 1, ..., (n − 1)}. Zn représente l’ensemble des résidus ou
classes de résidu modulo n (chaque entier dans Zn est une classe de résidu). On peut écrire ces classes
[0], [1], ..., [n − 1] où [r] = {a : a ∈ Z et a = r mod n}
Exemple :
Classes de résidu modulo 4 :
De tous les nombres entiers dans une classe de résidu, le plus petit nombre entier non négatif est celui
habituellement utilisé pour représenter la classe de résidu. Trouver le plus petit nombre entier non négatif
pour lequel k est congruent modulo n s’appelle la réduction de k modulo n.
24.3.4 Le PGCD
Il s’agit du Plus Grand Commun Diviseur (c) de a et b et tel que c est un diviseur de a et de b.
Par cette définition, il vient que tout diviseur de a et b sera un diviseur de c.
On dit qu’un nombre est premier si les deux seuls diviseurs positifs qu’il admet sont 1 et lui-même.
Deux entiers sont relativement premiers si leur unique facteur commun positif est 1. On note lorsque a
et c sont relativement premiers :
(a, c) = 1 ou gcd(a, c) = 1
et il n’y a pas d’ensemble complet de résidus. On a plusieurs résidus identiques (plusieurs nombres
donnent le même résidu). Il n’y a donc pas d’inverse unique.
Comme on n’obtient pas un ensemble complet de résidus quand on multiplie par 6, plus de un entier
de Z8 donne le même résidu. Ainsi, 6 ∗ 0 mod 8 = 6 ∗ 4 mod 8, 6 ∗ 1 mod 8 = 6 ∗ 5 mod 8, etc.
1. A ←− a ; B ←− b
2. IF (B = 0) RET U RN A = gcd(a, b)
3. R = A mod B
4. A ←− B
5. B ←− R
6. GOT O 2
24.4.1.1 Exemple :
Soit le calcul de pgcd(1970,1066). Il vient
1. (A1 , A2 , A3 ) ←− (1, 0, m)
2. (B1 , B2 , B3 ) ←− (0, 1, b)
3. IF (B3 = 0) RET U RN A3 = gcd(m, b)
4. IF (B3 = 1) RET U RN B3 = gcd(m, b)
5. Q = bA3 /B3 c
6. (T1 , T2 , T3 ) ←− (A1 − Q.B1 , A2 − Q.B2 , A3 − Q.B3 )
7. (A1 , A2 , A3 ) ←− (B1 , B2 , B3 )
8. (B1 , B2 , B3 ) ←− (T1 , T2 , T3 )
9. GOT O 2
Remarques
– b c représente le nombre directement inférieur ou égal au nombre entre crochets
– Si la condition du point 3 est remplie, alors b n’a pas d’inverse modulo m
– Si la condition du point 4 est remplie, alors le pgcd vaut 1 et b−1 mod m = B2
9 = 26 − 1 ∗ 17
8 = 17 − 1 ∗ 9 → 17 − 1 ∗ (26 − 1 ∗ 17) = 2 ∗ 17 − 1 ∗ 26
1 = 9 − 1 ∗ 8 → 26 − 1 ∗ 17 − 1 ∗ (2 ∗ 17 − 1 ∗ 26) = 2 ∗ 26 − 3 ∗ 17
243
25. ANNEXE 2 : CONCOURS AES
Inconvénients :
– Marge de sécurité
Inconvénients :
Inconvénients :
26.1 Intrusions
26.1.1 Port Scan
Il existe de nombreuses manières de scanner des ports. Mais le principe général est d’envoyer un
paquet (TCP, IP, ...) et de regarder ce qu’il se passe. Selon la réaction, on pourra déterminer si le port
est ouvert, fermé, ou filtré.
Selon cette réponse, le pirate pourra savoir quels protocoles sont utilisés ou les services auxquels il a
accès. A la suite d’un port scan, le pirate aura donc plusieurs renseignements :
– l’adresse IP ayant répondu
– les services accessibles
– l’état des ports
– la liste des protocoles supportés par la machine (TCP, IP, SMTP, Telnet, ...)
La plupart du temps, cette attaque est un prémice à une autre attaque1 , visant à s’introduire sur la
machine.
Les attaques de ce type sont souvent facilement détectables. Une fois découverte, on peut bannir
l’adresse source ordonnant le scan.
26.1.2 OS Fingerprinting
Chaque OS possède sa propre gestion des protocoles réseaux. Il faut savoir que certains champs des
paquets de données sont laissées à l’OS, et ce dernier doit décider ce qu’il y place. D’autre part, ces mêmes
OS ne respectent pas toujours les documents RFC définissant les points importants. En conséquence, il
existe des bases de données référençant ces caractéristiques propres à chaque OS.
En récupérant les paquets qu’émet la machine ciblée, on peut en extraire certains champs tels que
le TTL (durée de vie du paquet) ou le ToS (permettant gérer la manière dont on traite la paquet, en
spécifiant sa priorité, son importance,...).
Selon les OS, tous ces paramètres changent. La base de données contenant leur valeur par défaut
permet alors de les identifier. Il suffit ainsi d’envoyer certains paquets différents à la machine pour tester
les réponses et ensuite comparer ces dernières à une base de signatures pour identifier l’OS.
1 On parle d’"étape de découverte".
246
26. ANNEXE 3 : SÉCURITÉ LOGICIELLE
26.1.3 DoS
Le but de l’attaque DoS, pour Denial of Service (ou Déni de Service), est de saturer une machine en
générant un gros trafic lui étant destiné. La conséquence de cette saturation pourra être la suppression
d’un accès à un service, ou plus grave, la destruction de serveurs ou de sous-réseaux.
Les attaques par déni de service consistent à envoyer des paquets IP de taille ou de constitution
inhabituelle, causant la saturation ou une mauvaise gestion de la part de la machine victime, qui ne peut
plus assurer les services réseaux qu’elle propose. Cette attaque ne profite pas d’une faille du système
d’exploitation, mais d’une faille de l’architecture TCP/IP.
On parlera de DDoS (Distributed Denial of Service) lorsque plusieurs machines sont à l’origine de
l’attaque. Pour obtenir ces machines secondaires (on parle aussi de zombies), le pirate aura dû en prendre
contrôle précédemment, en ayant acquis des droits administrateurs sur ces machines. Une fois qu’il les
aura toutes en sa possession, il pourra lancer une attaque commune vers une machine cible.
La détection de ce type d’attaque est problématique, et reste un des grands enjeux des firewalls
actuels.
26.1.4 IP Spoofing
Cette attaque consiste à modifier les paquets IP dans le but d’usurper l’identité d’une machine, et
de passer inaperçu aux yeux d’un firewall qui les considérera alors comme provenant d’une machine "de
confiance".
Les nouveaux firewalls utilisant les protocoles VPN (par exemple IPSec) contrent cette attaque. En
effet, le chiffrement des paquet permet d’éviter cette usurpation.
Au niveau de la couche Réseau, le firewall vérifiera 3 informations (illustrées sur la figure 26.1) :
– L’adresse IP de destination
– L’adresse IP de la source
– Quelques options présentes à ce niveau
Au niveau de la couche Transport, le firewall analysera d’autres informations (illustrées sur la figure
26.2) telles que :
– Le port de destination
– Le port source
– Le type de protocole utilisé (TCP ou UDP)
– Les flags TCP
[1] William Stallings. Cryptography and Network Security : Principles and Practice, 3rd ed. Prentice
Hall, 2003.
[2] Didier Müller. Les Codes secrets décryptés. City Editions, 2007.
[3] Alfred J. Menezes, Scott A. Vanstone, and Paul C. Van Oorschot. Handbook of Applied Cryptography.
CRC Press, Inc., Boca Raton, FL, USA, 1996.
[4] Travis Spann. Fault induction and environmental failure testing, 2005.
[5] Sergei P. Skorobogatov and Ross J. Anderson. Optical fault induction attacks, 2002.
[6] Adi Shamir and Aran Tromer. Acoustic cryptanalysis : On nosy people and noisy machines, 2004.
[7] Li Zhuang, Feng Zhou, and J. D. Tygar. Keyboard acoustic emanations revisited, 2005.
[8] B. Lampson. Computer security in the real world, 2001.
[9] Computer Security Institute. Csi/fbi 2007 computer crime and security survey, 2007.
[10] Anil K. Jain, Arun Ross, and Salil Prabhakar. An introduction to biometric recognition, 2004.
[11] Salil Prabhakary, Anil K. Jain, and Sharath Pankant. Learning fingerprint minutiae location and
type, 2001.
[12] Dr. Marios Savvides. Introduction to biometric recognition technologies and applications, 2006.
[13] Jarmo Ilonen. Keystroke dynamics, 2003.
[14] Jan C. A. van der Lubbe. Basic methods of cryptography. Cambridge University Press, 1998.
[15] Douglas R. Stinson. Cryptography : Theory and Practice, 2nd ed. CRC Press, Inc., 2002.
249