Blanc Degeorges
Blanc Degeorges
Blanc Degeorges
TECHNIQUES
DE
CRYPTOGRAPHIE
-1-
TABLE DES MATIERES
INTRODUCTION 3
2. CRYPTOSYSTEMES ACTUELS 7
3.1 RSA 20
3.2 DES 21
3.3 SSL 22
CONCLUSION 29
REFERENCES BIBLIOGRAPHIQUES 30
-2-
INTRODUCTION
Dès que les hommes apprirent à communiquer, ils durent trouver des moyens
d’assurer la confidentialité d’une partie de leurs communications : l’origine de la
cryptographie remonte sans doute aux origines de l’homme.
En effet, le mot cryptographie est un terme générique désigant l’ensemble des techniques
permettant de chiffrer des messages c’est-à-dire de les rendre inintelligibles sans une action
spécifique.
Du bâton nommé « scytale » au Vie siècle avant JC, en passant par le carré de Polybe ou
encore le code de César, on assista au développement plus ou moins ingénieux de techniques
de chiffrement expérimentales dont la sécurité reposait essentiellement dans la confiance que
leur accordaient leurs utilisateurs. Après la première guerre mondiale a lieu une première
révolution technologique.
Mais ce n’est qu’à l’avènement de l’informatique et d’Internet que la cryptographie prend tout
son sens. Les efforts conjoints d’IBM et de la NSA conduisent à l’élaboration du DES (Data
Encryption Standard), l’algorithme de chiffrement le plus utilisé au monde durant le dernier
quart du XXème siècle. A l’ère d’Internet, le nombre d’applications civiles de chiffrement
(banques, télécommunications, cartes bleues,…) explose. Le besoin d’apporter une sécurité
accrue dans les transactions électroniques font naître les notions de signature et
authentification électronique. La première technique de chiffrement à clef publique sûre
(intimement liée à ces notions) apparaît : le RSA.
Nous nous tournerons dans un premier temps vers les techniques cryptographiques qui ont
marqué l’histoire, suivis par les techniques actuelles du monde de l’informatique.
Par ailleurs, nous arrêterons également sur la sécurité des algorithmes les plus connus ainsi
que sur les notions de signatures, certificats et fonctions de hachage.
-3-
1. Techniques de cryptographie au cours de l’histoire
Contrairement à ce que l’on peut penser, la cryptographie n’est pas seulement une
technique moderne, ni un produit de l’ère informatique. En effet de tout temps, les hommes
ont ressenti le besoin de cacher des informations confidentielles. Bien évidemment depuis ses
débuts la cryptographie a grandement évolué. Au cours des siècles, de nombreux systèmes de
chiffrage ont été inventés, tous de plus en plus perfectionnés, et il est vrai que l’informatique
y a beaucoup contribué. Mais au commencement les algorithmes étaient loin d’être aussi
complexes et astucieux qu’à notre époque. La majeure partie des méthodes d’antan reposait
sur deux principes fondamentaux : la substitution (remplacer certaines lettres par d’autres) et
la transposition (permuter des lettres du message afin de le brouiller).
Texte
clair A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Texte
codé W X E H Y Z T K C P J I U A D G L Q M N R S F V B O
La méthode la plus ancienne admise par l’histoire (par substitution alphabétique) est le
non moins connu code de César, consistant en un décalage simple de lettres. Par substitution
si l’on remplace le A par le C, alors le B devient D, le D un F, etc.… César utilisait ce code
simple pour transmettre via un message des consignes à ces généraux d’armées sans qu’il
puissent être exploité par un quelconque ennemi dans le cas ou le message serait intercepté.
Malheureusement il n’y a que 26 façons différentes de chiffrer à l’aide de ce code ce qui en
fait un code très peu sûr. Mais ce qui est d’autant plus insolite, c’est le fait que ce code de
« César » est encore utilisé de nos jours sur Internet avec le ROT13 (rotation de 13 lettres) qui
consiste à cacher des messages afin qu’ils ne soient pas lus involontairement, comme par
exemple s’ils dévoilent le dénouement d’un film ou encore qui donne la réponse à une
devinette.
-4-
Il place également au dessus de ce carré, un alphabet pour la clef et à sa gauche un autre
alphabet pour le texte à coder. Il suffit alors, pour chiffrer un message, de choisir un mot de
longueur quelconque, de l’écrire sous le message à coder (de façon répétée s’il le faut) et de
regarder dans le tableau l’intersection de la lettre à coder et de la lettre de la clef.
Pour mieux comprendre le fonctionnement du Carré de Vigenère nous vous proposons cet
exemple :
Supposons que nous voulons coder le texte « CARRE DE VIGENERE » avec la clef
« MALICE ». On commence par écrire la clef sous le texte à coder :
C A R R E D E V I G E N E R E
M A L I C E M A L I C E M A L
-5-
1.4 Système ADFG(V)X
Mais même si la cryptographie était beaucoup utilisée de tout temps, jusqu’au début
du XXe siècle, elle gardait une importance mineure, et les méthodes utilisées étaient bien
souvent rudimentaires. Avec la 1e guerre mondiale, la cryptographie subit un véritable
« boum ». La communication entre état major et les troupes se fait par radio et il faut donc
empêcher les ennemis de comprendre les messages s’ils sont interceptés. C’est là que la
cryptographie intervient, permettant à l’armée française de stopper de nombreuses offensives
allemandes. Le chiffre ADFGVX en est un exemple concret. En effet ce code était utilisé par
l’armée allemande depuis mars 1918 et malgré leurs efforts et leur talent, l’équipe française
de cryptographie n’arrivaient pas à le déchiffrer. Pour réaliser ce
A D F G V X
code, qui mélange transpositions et substitutions, il faut ranger
A Q Y A L S E les 26 lettres de l’alphabet ainsi que les 10 chiffres dans un
D Z X R C H 0 tableau de 6 cases sur 6. Au dessus et à côté de ce tableau est
F F O 4 M 8 7 ajouté le fameux mot ADFGVX. Chacune des lettres du texte en
G 3 I T G U K clair est remplacée par le couple de lettres qui correspond à sa
V P D 6 2 N G ligne et sa colonne.
X 1 5 J 9 W B
Grâce à cette machine un texte pouvait être codé d’un million de façons différentes. La frappe
au clavier d'une lettre en allumait une autre sur l'écran de manière symétrique (si A donnait C
alors C donnait A). Ainsi pour chiffrer un message, une fois la clef fixée, il suffisait de le
-6-
taper sur la machine et pour le déchiffrer de mettre les rotors dans la même position initiale et
de taper le message chiffré. Chaque message commençait par la donnée de la clef choisie par
l'opérateur, qu'il cryptait elle aussi selon une liste de clef changeant tous les jours. La machine
ENIGMA a été utilisée pendant toute la seconde guerre mondiale par l'armée allemande qui
croyait en son inviolabilité. Une équipe de mathématiciens (spécialisée en cryptanalyse, art de
déchiffrer des messages) anglais dirigée par A.Turing finit par la décrypter.
On voit donc ici que la cryptographie est une technique de guerre à part entière et qu’elle joue
un vrai rôle dans l’ère moderne. En effet on se rend compte qu’en l’espace de quelques
années, la cryptographie et la cryptanalyse sont passées de simples techniques désuètes, à
véritables sciences. Cette progression des techniques et algorithmes de cryptage ne s’est pas
faite toute seule et c’est totalement à cause des attaques incessantes, visant à « casser » les
techniques adverses, que l’on a pu assister à un tel bond.
2. Cryptosystèmes actuels
2.1 Cryptographie à clefs privés
La cryptographie à clefs privées, appelée aussi cryptographie symétrique est utilisée
depuis déjà plusieurs siècles. C’est l’approche la plus authentique du chiffrement de données
et mathématiquement la moins problématique.
La clef servant à chiffrer les données peut être facilement déterminée si l’on connaît la clef
servant à déchiffrer et vice-versa. Dans la plupart des systèmes symétriques, la clef de
cryptage et la clef de décryptage sont une seule et même clef.
Les principaux types de cryptosystèmes à clefs privés utilisés aujourd’hui se répartissent en
deux grandes catégories : les cryptosystèmes par flots et les crytosystèmes par blocs.
Exemple:
XOR
-7-
=
Il a été démontré par le mathématicien Claude Elwood Shannon qu’il était impossible de
retrouver un message crypté par le principe de Vernam sans connaître la clef. Ce qui ferait en
théorie du chiffre de Vernam un cryptosystème incassable. Mais dans la pratique, le
cryptosystème par flots pose des problèmes délicats : canaux sûrs de distribution des clefs,
taille des clefs encombrantes car de même taille que le message et surtout caractère aléatoire
des générateurs de bits de clefs utilisés. En revanche, un des avantages du système est qu’il
est insensible aux phénomènes de propagation d’erreurs : un bit erroné donne une erreur à la
réception ou à l’émission, mais est sans incidence sur les bits suivants.
C1 = F (k1, M)
C2 = F (k2, C1)
...
Cr = F (kr, Cr-1)
Emetteur et destinataire se partagent une clé K secrète. L’algorithme qui engendre les clefs ki
à partir de K se nomme l'algorithme de cadencement des clefs.
La fonction F doit être inversible, ce qui veut dire qu'il faut pour toute clef k et message M
pouvoir recalculer M a partir de F (k', M), sinon le déchiffrement est impossible et on ne
dispose pas d'un algorithme utilisable. C’est-à-dire qu'il existe une fonction G vérifiant
G (k, F (k, M)) = M et que F est une permutation.
La sécurité d’un algorithme de chiffrement par blocs réside principalement dans la conception
de l'algorithme de cadencement des clefs et la robustesse de la fonction F. Si l'algorithme de
cadencement est mal élaboré, les ki peuvent être déductibles les unes des autres. La fonction F
doit donc être difficile à inverser sans connaître la clef k ayant servie dans le calcul de C = F
(k, M). En d'autres termes, connaissant seulement C, F et G, on ne doit pouvoir retrouver le
message M seulement en effectuant une recherche exhaustive de la clef.
Les caractéristiques de ces systèmes sont en général liées à leur très forte sensibilité à la
dépendance inter-symboles, ainsi qu’à leur mécanisme de propagation d’erreurs. Toute erreur
commise sur un bloc de texte clair ou chiffré peut perturber gravement le
chiffrement/déchiffrement de ses voisins.
-8-
2.1.3 Algorithme Data Encryption Standard (DES)
Publié en 1977 par le NBS (National Bureau of Standards), le DES est un algorithme de
chiffrement de données recommandé pour les organisations à caractère fédéral, commercial
ou privé. Le DES tire son origine des travaux menés par le groupe cryptographique d’IBM
dans le cadre du projet LUCIFER. Le DES a été l’objet de nombreuses implémentations, à la
fois en matériel et en logiciel, depuis sa publication. Après une décennie de succès, pendant
laquelle les moyens et techniques de cryptanalyse mis en œuvre pour en étudier les
caractéristiques n’ont pas permis d’en découvrir des faiblesses rédhibitoires, le DES a, depuis
peu, révélé des sensibilités à des attaques nouvelles et puissantes, parfois réalisées sur un
simple micro-ordinateur. Aussi l’ISO (International Organization for Standardization) a-t-il
récemment refusé la normalisation du DES, ce qui n’empêche pas cet algorithme d’être, de
loin, aujourd’hui encore comme le moyen de chiffrement le plus sûr (et le plus largement
utilisé) pour des données non militaires.
Le DES est un algorithme de chiffrement symétrique par blocs qui permet de chiffrer des
mots de 64 bits à partir d’une clef de 56 bits(56 bits servant à chiffrer + 8 bits de parité
servant à vérifier l’intégrité de la clef en réalité).
Fractionnement du message
Dans un premier temps le message en clair est découpé en blocs de 64 bits.
-9-
Transposition initiale
On remarque que G0 contient tous les bits pairs du message initial et D0 tous les bits impairs.
Rondes
Les blocs Gi et Di sont soumis à un ensemble de transformation appelées rondes.
Une ronde est elle-même composée de plusieurs étapes :
• Fonction d’expansion :
- 10 -
cadencement des clefs que nous décrirons plus bas. Nous appellerons D’’0 le résultat de
cette opération.
• Boîtes de substitution :
D’’0 est découpée ensuite en 8 blocs de 6 bits, noté D’’0i . Chacun de ces blocs passe par
des boîtes de substitution(S-boxes), notées généralement Si .
Les premier et dernier bits de chaque D0i déterminent la ligne de la fonction de
substitution, les autres bits déterminent la colonne. Grâce à cela la fonction de substitution
« choisit » une valeur codée sur 4 bits (de 0 à 15).
Voici la première boîte de substitution :
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 14 4 13 1 2 15 11 8 3 10 6 12 5 9 0 7
S1 1 0 15 7 4 14 2 13 1 10 6 12 11 9 5 3 8
2 4 1 14 8 13 6 2 11 15 12 9 7 3 10 5 0
3 15 12 8 2 4 9 1 7 5 11 3 14 10 0 6 13
Soit D0i égal à 010101, les premiers et derniers bits donnent 01, c’est-à-dire 1 en binaire.
Les bits autres bits donnent 1010, soit 10 en binaire. Le résultat de la fonction de
substitution est donc la valeur située à la ligne n°1, dans la colonne n°10. Il s’agit de la
valeur 6, soit 0110 en binaire.
Chacun des 8 blocs de 6 bits est passé dans la boîte de substitution correspondante.
Voici les autres S-Boxes :
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 15 1 8 14 6 11 3 4 9 7 2 13 12 0 5 10
S2 1 3 13 4 7 15 2 8 14 12 0 1 10 6 9 11 5
2 0 14 7 11 10 4 13 1 5 8 12 6 9 3 2 15
3 13 8 10 1 3 15 4 2 11 6 7 12 0 5 14 9
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 10 0 9 14 6 3 15 5 1 13 12 7 11 4 2 8
S3 1 13 7 0 9 3 4 5 10 2 8 5 14 12 11 15 1
2 13 6 4 9 8 15 3 0 11 1 2 12 5 10 14 7
3 1 10 13 0 6 9 8 7 4 15 14 3 11 5 2 12
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 7 13 14 3 0 6 9 10 1 2 8 5 11 12 4 15
S4 1 13 8 11 5 6 15 0 3 4 7 2 12 1 10 14 9
2 10 6 9 0 12 11 7 13 15 1 3 14 5 2 8 4
3 3 15 0 6 10 1 13 8 9 4 5 11 12 7 2 14
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 2 12 4 1 7 10 11 6 8 5 3 15 13 0 14 9
S5 1 14 11 2 12 4 7 13 1 5 0 15 10 3 9 8 6
2 4 2 1 11 10 13 7 8 15 9 12 5 6 3 0 14
3 11 8 12 7 1 14 2 13 6 15 0 9 10 4 5 3
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 12 1 10 15 9 2 6 8 0 13 3 4 14 7 5 11
S6 1 10 15 4 2 7 12 9 5 6 1 13 14 0 11 3 8
2 9 14 15 5 2 8 12 3 7 0 4 10 1 13 11 6
3 4 3 2 12 9 5 15 10 11 14 1 7 6 0 8 13
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 4 11 2 14 15 0 8 13 3 12 9 7 5 10 6 1
S7 1 13 0 11 7 4 9 1 10 14 3 5 12 2 15 8 6
2 1 4 11 13 12 3 7 14 10 15 6 8 0 5 9 2
3 6 11 13 8 1 4 10 7 9 5 0 15 14 2 3 12
- 11 -
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 13 2 8 4 6 15 11 1 10 9 3 14 5 0 12 7
1 1 15 13 8 10 3 7 4 12 5 6 11 0 14 9 2
S8
2 7 11 4 1 9 12 14 2 0 6 10 13 15 3 5 8
3 2 1 14 7 4 10 8 13 15 12 9 0 3 5 6 11
On obtient donc en sortie 8 blocs de 4 bits. Ces bits sont regroupés pour former un bloc de
32 bits.
• Permutation :
Le bloc de 32 bits subit une permutation dont voici la table :
16 7 20 21 29 12 28 17
1 15 23 26 5 18 31 10
2 8 24 14 32 27 3 9
19 13 30 6 22 11 4 25
• OU exclusif :
Le bloc de 32 bits ainsi obtenu est soumis à un OU exclusif avec le G0 de départ pour
donner D1 et le D0 initial donne G1.
40 8 48 16 56 24 64 32 Au bout des seize itérations, les deux blocs G16 et D16 sont
« recollés » pour reformer un seul bloc de 64 bits puis subit la
39 7 47 15 55 23 63 31 transposition initiale inverse selon l’arrangement du tableau ci-
38 6 46 14 54 22 62 30 contre.
37 5 45 13 53 21 61 29 On obtient alors le bloc initial chiffré.
36 4 44 12 52 20 60 28
35 3 43 11 51 19 59 27
34 2 42 10 50 18 58 26
33 1 41 9 49 17 57 25
- 12 -
Ce bloc subit une permutation puis est découpée en deux pour obtenir 2 blocs de 28 bits
décrits par les matrices ci-dessous :
40 8 48 16 56 24 64 40 8 48 16 56 24 64
39 7 47 15 55 23 63 39 7 47 15 55 23 63
38 6 46 14 54 22 62 38 6 46 14 54 22 62
37 5 45 13 53 21 61 37 5 45 13 53 21 61
Ces deux blocs subissent une rotation à gauche, c’est-à-dire que les bits en seconde position
prennent la première position, ceux en troisième position la seconde, celle en première
position la dernière…
14 17 11 24 1 5 3 28 15 6 21 10
Les 2 blocs sont regroupés pour faire un bloc
13 19 12 4 26 8 16 7 27 20 13 2
de 56 bits qui passe par une permutation
41 52 31 37 47 55 30 40 51 45 57 45 fournissant un bloc de 48 bits représentant la
44 49 39 56 34 53 46 42 50 36 29 32 clef ki. :
Des itérations de l’algorithme permettent de donner les 16 clefs utilisées dans l’algorithme du
DES.
- 13 -
Structure d’état dans l’AES
On appelle état un bloc vu comme un tableau de 4 x Nb octets où Nb est égal à
Taille du bloc / 32. On représente la clef de la même façon, le nombre de colonnes étant
Nk = longueur de la clef / 32.
Exemple d’état (avec des blocs de 128 bits, Nb = 4) et de clef (de longueur 128 bits, Nk = 4)
Nombre de tours
Le nombre de tours dans l’AES dépend à la fois de la taille des blocs et de la clef. Le nombre
r de tours est donné par le tableau :
Nb = 4 Nb = 6 Nb = 8
Nr
(128 bits) (192 bits) (256 bits)
Nk = 4 10 12 14
(128 bits)
Nk = 6 12 12 14
(192 bits)
Nk = 8 14 14 14
(256 bits)
Chaque tour utilise une sous-clef ki différente et est composée de quatre étapes :
ByteSub, ShiftRow, MixColumn et AddRoundKey.
ByteSub
ByteSub est une substitution qui agit isolément sur tous les octets ai,j d’un état en 2 étapes :
1. on regarde ai,j comme polynôme dans GF(28), et on prend son inverse a-1i,j.
2. on calcule l’image du résultat par la fonction y = f(x) suivante :
y0 1 0 0 0 1 1 1 1 x0 1
y1 1 1 0 0 0 1 1 1 x1 1
y 1 1 1 0 0 0 1 1 x2 0
2
y3 1 1 1 1 0 0 0 1 x3 0
y = ⋅ +
4 1 1 1 1 1 0 0 0 x 4 0
y5 0 1 1 1 1 1 0 0 x5 1
y6 0 0 1 1 1 1 1 0 x6 1
y 0 0 0 1 1 1 1 1 x 7 0
7
- 14 -
ShiftRow
ShiftRow effectue un décalage des lignes de l’état courant. La ligne 0 n’est pas décalée, la
ligne 1 l’est de C1 octets, la 2 de C2 octets et la ligne 3 de C3 octets. Les valeurs de C1, C2 et
C3 dépendant de la taille du bloc, selon la table suivante :
Nb C1 C2 C3
4 1 2 3
6 1 2 3
8 1 3 4
MixColumn
La transformation MixColumn consiste à prendre chaque colonne de l'état et à la multiplier
par la matrice suivante:
AddRoundKey
AddRoundKey consiste en un OU exclusif de l’état courant et de la clef du tour.
2.2.1 Principe
Tous les algorithmes évoqués jusqu’à présent sont symétriques en ce sens que la même clef
est utilisée pour le chiffrement et le déchiffrement. Le problème essentiel de la cryptographie
symétrique est la distribution des clefs : pour que n personnes puissent communiquer de
manière confidentielle il faut n (n-1)/2 clefs.
L’idée de base des cryptosystèmes à clefs publiques a été proposée dans un article
fondamental de Diffie et Hellman en 1976. Le principe fondamental est d’utiliser des clefs de
chiffrement et déchiffrement différentes, non reconstructibles l’une à partir de l’autre :
• une clef publique pour le chiffrement
• une clef secrète pour le déchiffrement
Ce système est basé sur une fonction à sens unique, soit une fonction facile à calculer dans un
sens mais très difficile à inverser sans la clef privée.
Pour faire une explication imagée, la clef publique joue le rôle d’un cadenas. Imaginons que
seul Bob possède la clef (clef secrète), Alice enferme son message dans une boîte à l’aide du
cadenas et l’envoie à Bob. Personne n’est en mesure de lire le message puisque seul Bob
possède la clef du cadenas.
- 15 -
Le gros avantage de ce système est qu’il n’y ait pas besoin d’avoir partagé un secret au
préalable pour s’échanger des messages cryptés. En revanche les implémentations de tels
systèmes (RSA, ElGamal,…) ont un inconvénient majeur : leur lenteur par rapport à leurs
homologues à clefs secrètes qui tournent eux jusqu’à près de mille fois plus vite.
2.2.2 RSA
L’algorithme le plus célèbre d’algorithme à clef publique a été inventé en 1977 par Ron
Rivest, Adi Shamir et Len Adleman, à la suite de la publication de l’idée d’une cryptographie
à clef publique par Diffie et Hellman. Il fut appelé RSA, des initiales de ces inventeurs.
RSA est basé sur la difficulté de factoriser un grand nombre en produit de deux grands
facteurs premiers. L’algorithme fonctionne de la manière suivante :
Imaginons que Bob souhaite recevoir d’Alice des messages en utilisant RSA.
1. génération des clefs :
a. p et q, deux grands nombres premiers sont générés au hasard grâce à un
algorithme de test de primalité probabiliste, avec n = pq.
b. Un nombre entier e premier avec (p-1)(q-1) est choisi. Deux nombres sont
premiers entre eux s’ils n’ont pas d’autre facteur commun que 1.
c. L’entier d est l’entier de l’intervalle [2, (p-1)(q-1)[ tel que ed soit congrue à 1
modulo (p-1)(q-1), c’est-à-dire tel que ed-1 soit un multiple de (p-1)(q-1).
2. distribution des clefs : le couple (n, e) constitue la clef publique de Bob. Il la rend
disponible à Alice en lui envoyant ou en la mettant dans un annuaire. Le couple(n, d)
constitue quand à lui sa clef privée.
3. chiffrement du message : Pour crypter le message Alice représente le message sous
la forme d’un ou plusieurs entiers M compris entre 0 et n-1. Elle calcule C= Me mod n
grâce à la clef publique (n, e) de Bob et envoie C à Bob.
4. déchiffrement du message : Bob reçoit C et calcule grâce à sa clef privée Cd mod n.
Il obtient ainsi le message initial M.
Exemple :
Bob choisit p = 17 et q = 19, n = p x q = 323 et e = 5.
Sa clef privée est alors d=173 car 173 x 5 = 1 (mod (16 x 18))
Supposons qu’Alice veuille lui envoyer le message « BONJOUR » en se servant du tableau
suivant pour transformer les lettres en nombre :
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
Cela donne :
B O N J O U R
2 15 14 10 15 21 18
Après avoir chiffré en remplaçant chaque nombre b par (be mod n) on obtient :
32 2 29 193 2 89 18
Qu’Alice envoie à Bob.
- 16 -
Bob réalise pour chaque nombre b du message bd mod n pour trouver :
2 15 14 10 15 21 18
B O N J O U R
2.2.3 SSL
Le protocole SSL (Secure Sockets Layers, que l’on pourrait traduire par « couche de
transport sécurisé »), est un procédé développé par Netscape ayant pour but de sécuriser les
transactions effectuées sur Internet. De nombreux sites de commerces de nos jours sont
sécurisés avec SSL (afin de communiquer sûrement avec leurs clients et d'obtenir le paiement
de leurs ventes). Ce système repose à la fois sur les algorithmes à clef publique (RSA, Diffie-
Hellmann), sur les algorithmes à clef privée et sur les certificats électroniques (que nous
traiterons plus tard) afin de garantir au maximum la sécurité de la transmission de données
avec un tel site. Cependant un utilisateur quelconque ignore en principe totalement qu’il
utilise SSL, car celui-ci agit de manière transparente. En fait SSL est indépendant des
protocole de communications, il agit directement entre la gestion des commandes et la gestion
du transport des données (il agit comme une couche supplémentaire de protection).
- 17 -
clef jaune : clef publique
clef rouge : clef privée
A la réception, le client doit alors vérifier la validité du certificat envoyé par le marchant
(serveur). Il choisi en suite une clef secrète (de manière aléatoire) et l’envoie au serveur sous
forme cryptée grâce à la clef publique du serveur (c’est la que RSA intervient). Cette nouvelle
clef est appelée clef de session. Le serveur est enfin capable de déchiffrer le reste des
transactions par le biais de la clef de session. Le serveur ainsi que le client sont donc tous
deux en possession d’une clef commune , permettant alors la confidentialité des données
échangées. Une dernière authentification est possible, celle du client. Elle permettrait encore
une plus grande sécurité, mais elle est en fait très rarement utilisée dans les utilisations
courantes de SSL.
L’utilisation du système SSL ne cesse de s’accroître. En outre il semble important de
rappeler que SSL est indépendant du protocole utilisé (couche supplémentaire), c’est-à-
dire qui peut non seulement sécuriser des transactions effectuées sur le Web mais aussi
des connexions par FTP, POP, TELNET, IMAP, SMTP, etc…
- 18 -
systèmes, de modifier les informations afin de tromper le destinataire ou de faire carrément
disparaître ces informations.
Les types d’attaques employés le plus couramment sont nombreux et diffèrent selon le type
du système (symétrique, asymétrique, fonction de hachage, etc…).
Nous vous présentons ici une liste des types d’attaques sur les algorithmes :
• L'attaque en force (ou Brute force attack, Exhaustive key search attack)
Le cryptographe essaie toutes les combinaisons de clefs possibles jusqu'à l'obtention
du texte clair. Avec des ordinateurs de plus en plus performants et des méthodes de
calculs distribués, l'attaque en force restera toujours un moyen de casser des systèmes
de chiffrement.
- 19 -
3.1 RSA
RSA est probablement une méthode de chiffrement assez sûre: il y a très certainement
plus de risques liés à une mauvaise utilisation qu'à une attaque, mais les risques issus de cette
dernière ne sont pourtant pas nuls. Nous rappelons que par exemple lors d’une attaque d’un
système de type RSA, l’objectif d’un attaquant n’est pas forcément de retrouver la clef privée
associée à la clef publique. Le plus souvent l’attaquant cherche seulement à retrouver le
message clair à partir d’un message chiffré ou même seulement un bit ou une partie du
message.
Bien que RSA soit un des cryptosystèmes les plus sûrs de nos jours, il n’en demeure
malheureusement pas moins vulnérable à certaines attaques comme l’attaque de «l’homme du
milieu» ou la Timing attack.
L’attaque de « l’homme du milieu » peut être employé de façon évidente pour casser cet
algorithme. Supposons dans notre cas qu’Edgar soit un espion et qu’il veuille intercepter les
conversations entre Alice et Bob. Il suffit alors à Edgar de choisir une clef privée b et une clef
publique qui convient (a, n) qu’il envoie à Alice en lui faisant croire que ce sont les nouvelles
clefs de Bob. Notre espion peut alors lorsqu’il intercepte les messages d’Alice, les déchiffrer
et les comprendre. Il lui reste donc à s’assurer que Bob ne se rende compte de rien en re-
chiffrant les messages d’Alice avec l’ancienne clef publique de Bob qui reçoit le message
comme si aucune opération n’avait été effectuée dessus. S’il le veut il peut effectuer la même
opération en sens inverse, pour récupérer les messages que Bob envoie à Alice. Pour contrer
cette attaque, il est très important pour Alice et Bob de toujours s'assurer que personne ne
tente de modifier leurs messages en effectuant plusieurs vérifications. Pour cela, les méthodes
les plus utilisées sont celles d'authentification et de signature que nous expliquerons plus en
détail dans un chapitre ultérieure. Ces méthodes permettent de s'assurer que le document reçu
n'a pas été modifié en cours de route, et qu'il provient bien de l'expéditeur initial.
De plus on a vu que le principe de base de RSA était la décomposition d’un nombre n en
produit de 2 nombres entiers p et q. Une attaque assez évidente serait de tenter de trouver la
factorisation de n. Cependant les plus puissants algorithmes existants ne peuvent effectuer
cette factorisation que pour des entiers inférieurs à 155 chiffres (soit une clef de 512 bits). Il
est donc évident que la sécurité du RSA repose sur la difficulté de factoriser de grands
entiers ; car il est simple, pour garantir une grande sécurité, de choisir de plus grandes clefs
(par exemple de 1024 ou 2048 bits). Malheureusement on ne peut pas affirmer que cette
simple protection suffise, car la constante amélioration des ordinateurs et des algorithmes de
factorisation permettront peut être plus tôt que prévu de casser RSA.
Enfin, il existe un nouveau type d’attaque qui semble plus percutante et plus novatrice que les
autres, la Timing attack. En effet comme nous l’avons vu, le fonctionnement de RSA est basé
sur la fonction yx mod n servant à déchiffrer le texte y codé reçu. L’entier n est rendu publique
et le texte y a pu être intercepté par un attaquant qui aura alors pour but de trouver la clef
secrète x. Pour chaque message y que reçoit la victime, elle devra donc calculé yx mod n. Il
est alors facile pour l’attaquant d’enregistrer les messages reçus par la cible et de mesurer le
temps mis pour répondre à chaque message codé y.
- 20 -
L’attaquant peut ensuite recueillir les temps de calcul pour un grand nombre de messages et
dresser un tableau associant un message avec le temps de décryptage associé (voir tableau ci-
dessous).
Y1 Y2 Y3 … Yi … Yn
137ms 154ms 132ms … 170ms … 147ms
Ainsi en dressant cette liste de mesure et en l’exploitant, l’on peut restreindre de beaucoup
l’intervalle dans lequel on recherche la clef, car il est évident que pour des clefs d’une telle
longueur, il faut explorer une immensité de cas différents. Cependant cette attaque n’est pas
infaillible, car il est sur que RSA ne serait pas encore si utilisé de nos jours si une attaque
avait d’aussi grandes chances de « casser » à chaque tentative ce système. La solution assez
évidente pour parer ce genre d’attaque est de choisir un nouvel exposant x pour chaque
opération, l’attaque ne fonctionne donc plus.
De nombreuses attaques maintenant assez répandues fonctionnent contre le cryptosystème
RSA, mais la grande sécurité de ce système permet d’y remédier. C’est pour cela que comme
nous l’avons dit précédemment les failles de RSA pourraient plutôt provenir de la manière de
l’utiliser et non de ces failles de sécurités en elle-même. RSA en demeure un des systèmes les
plus sûrs de nos jours.
3.2 DES
Le DES l’un des cryptosystèmes les plus connus à clefs privées, n’est tout autant que
RSA pas invulnérables à toutes les attaques qu’il peut subir régulièrement. En effet de
nombreuses attaques sont déjà arrivées par le passé à venir à bout des algorithmes qui
composent le DES, malgré le fait qu’il était considéré comme l ‘un des moyens de
chiffrement les plus sûrs. Mais les attaques incessantes qu’il subissait, ont eu raison de DES
et ont montré au grand jour ses faiblesses.
L’attaque qui fonctionne le mieux sur DES est l’attaque en force qui consiste, comme nous
l’avons vu, à essayer d’appliquer toutes les combinaisons de clefs envisageables sur le texte
chiffré, jusqu’à obtenir le texte en clair. Cette méthode semble assez « primaire », mais elle a
pourtant permis en 1999 à l’aide d’un grand nombre d’ordinateurs travaillant simultanément
de casser le DES en seulement 22 heures. Ceci dit l’attaque de type force brute ne se révèle
pas tout le temps aussi fructueuse que cela, et il faut dans certains cas plusieurs mois voire
plusieurs années pour passer toutes les clefs.
Les attaques par force brute ne sont pas les seuls à fonctionner contre DES. Les attaques à
l’aide du texte clair fonctionnent également comme contre beaucoup de cryptosystèmes
actuels. Cette attaque consiste en une « cryptanalyse linéaire », c’est à dire que l’attaquant
essai de modéliser sous forme d’approximation linéaire les algorithmes conduisant aux textes
chiffrés. Avec un grand nombre de textes clairs et de textes chiffrés, on peut obtenir certains
bits de la clef. Cette attaque est actuellement l’une des plus performante, puisqu’elle ne
nécessite que 243 couples de textes (clairs et chiffrés). Grâce à une telle cryptananalyse une
clef DES a été trouvée en seulement 50 jours avec l’aide d’une douzaine de machines.
- 21 -
3.3 SSL
- 22 -
4. Fonctions de hachage, signatures et certificats électroniques
4.1 Fonctions de hachage
Lors d’échanges de messages cryptés, il est important de pouvoir s’assurer que le
message n’a pas été altéré ou modifié par un tiers pendant l’envoi. Les fonctions de hachage
permettent alors de s’assurer de l’intégrité du message.
4.1.1 Principe
Une fonction de hachage calcule l’empreinte y (ou digest) d’un message x. Cette
fonction F doit être une fonction à sens unique c’est-à-dire qu’il doit être facile de trouver y à
partir de x, mais très difficile de trouver x à partir de y. Elle doit aussi être très sensible pour
qu’une petite modification du message entraîne une grande modification de l’empreinte. En
envoyant le message accompagné de son empreinte, le destinataire peut ainsi s’assurer de
l’intégrité du message en recalculant le résumé à l’arrivée et en le comparant à celui reçu. Si
les deux résumés sont différents, cela signifie que le fichier n’est plus le même que l’original :
il a été altéré ou modifié par une tierce personne.
Les fonctions de hachage les plus répandus sont MD5 et SHA-1 qui sont basés tous les deux
sur MD4, MD5 générant des empreintes de 128 bits et SHA-1 de 160 bits(seul MD5 sera
décrit, ces deux fonctions ayant un fonctionnement similaire).
Nous verrons plus en avant qu’une fonction de hachage joue un rôle dans la signature
électronique, méthode qui permet d’authentifier l’expéditeur.
4 .1.2 MD5
MD5 (« Message Digest ») est un des plus connus algorithme de hachage. C’est une
version améliorée de MD4 tous deux conçus par Ron Rivest, un des créateurs de RSA. MD5
fabrique une empreinte d’une taille de 128 bits.
Padding
Soit un message m d’une longueur de n bits. MD5 manipulant des blocs de 512 bits,
l’algorithme complète le message avec un 1 suivi d’autant de 0 que nécessaires jusqu’à ce que
la longueur de message soit congrue à 448 modulo 512. L’opération de padding a toujours
lieu même si la longueur du message est déjà congrue à 448 modulo 512.
Ajout de la taille
On ajoute à ce message la valeur de n, codée en binaire sur 64 bits. On obtient donc un
message dont la longueur est un multiple de 512 bits.
Chaque bloc de 512 bits est décomposé en 16 blocs de 32 bits.
Initialisation
MD5 prend 4 tampons de 32 bits en entrée initialisés de la manière suivante (en
hexadécimal) :
A=01234567
B=89abcdef
C=fedcba98
D=76543210
Rondes
MD5 est composé de quatre rondes qui exécutent chacune 16 opérations. Pour chaque ronde,
une seule fonction prenant 3 arguments codés sur 32 bits et renvoyant une valeur sur 32 bits
est utilisée pour les 16 opérations. Les 4 fonctions sont les suivantes :
- 23 -
F(X,Y,Z) = (X and Y) or (not(X) and Z)
G(X,Y,Z) = (X and Z) or (Y and not(Z))
H(X,Y,Z) = X xor Y xor Z
I(X,Y,Z) = Y xor (X or not(Z))
Pour chaque bloc de 512 bits, on effectue les opérations suivantes :
on sauvegarde les valeurs des tampons (A, B, C et D) dans des registres AA, BB, CC
et DD.
On calcule les nouvelles valeurs pour A, B, C et D à partir de leurs anciennes valeurs,
des bits du bloc qu’on étudie et une des quatre fonctions F, G, H ou I selon la ronde.
On effectue A=AA+A, B=BB+B, C=CC+C, D=DD+D
Ecriture de l’empreinte
L’empreinte sur 128 bits est obtenue en mettant bout à bout les quatre tampons finaux A, B, C
et D.
4.2 Signatures
4.2.1 Principe
Les fonctions de hachage permettent de s’assurer de l’intégrité d’un message mais un
autre problème se pose : comment être certain que personne n’a usurpé l’identité de
l’expéditeur pour vous envoyer un message ? Ou que l’expéditeur ne va pas nier vous l’avoir
envoyé ?
C’est le rôle de la signature numérique, celle-ci fournissant donc les services d’intégrité des
données, d’authentification de l’origine des données et de non-répudiation.
La façon la plus simple de signer un message est d’utiliser la cryptographie asymétrique pour
le chiffrer en utilisant sa clef privée : seul le possesseur de cette clef peut générer la signature
et toute personne ayant accès à la clef publique correspondante peut la vérifier. Mais cette
méthode est très lente et en pratique elle n’est que peu utilisée.
La méthode réellement utilisée repose non pas sur le chiffrement du message lui-même mais
sur l’empreinte (empreinte issue d’une fonction de hachage comme MD5 par exemple) de
celui-ci. En effet, cette méthode est beaucoup plus rapide du fait de la quantité réduite des
données à chiffrer.
Une signature numérique est plus sûre qu’une signature papier car la signature change à
chaque message. Elle est de ce fait inimitable (sans la connaissance de la clef secrète bien
entendue).
- 24 -
♦ p est un nombre premier de l’intervalle ]2L-1, 2L[ où L est un nombre compris entre
512 et 1024 et est un multiple de 64.
♦ q est un diviseur premier de p – 1 compris d’une longueur de 160 bits (2159<q<2160).
♦ g = h(p-1)/q (mod p), où 1<h<p-1 et g >1.
♦ x est un entier de l’intervalle ]0, q[ .
♦ y = gx (mod p)
♦ k est un entier aléatoire de ]0, q[ .
Les entiers p, q et g sont publics. Chaque utilisateur a une clef secrète x et une clef publique y.
Le nombre k doit être régénéré à chaque signature.
Si Alice souhaite envoyer le message M à Bob, alors Alice calcule r et s à partir des nombres
p, q, g(publics) et de sa clef privée (x , k) de la manière suivante :
• r = (gk mod p) mod q
• s = (k-1 (SHA (M) + xr)) mod q
avec k-1 l’unique entier de ]0,q[ tel que k-1k = 1(modulo q).
SHA (M) est la conversion en entier d’une chaîne de 160 bits empreinte du message M
issu de l’algorithme SHA-1.
Bob reçoit alors les quantités M’, r’, s’ et dispose de l’identité d’Alice et de sa clef publique y.
Pour vérifier la signature du message, Bob effectue les opérations suivantes :
♦ si 0 < r’ < q et /ou 0 < s’ < q n’est (ne sont) pas vérifiées alors la signature n’est
pas valide.
♦ Bob calcule ensuite :
o w = (s’)-1 mod q
o u1 = ((SHA(M’)) w) mod q
o u2 = ((r’) w) mod q
o v = ((gu1 yu2) mod p) mod q
Si v = r’, alors la signature est vérifiée et Bob est (quasi) sûr que le message a bien été envoyé
par Alice.
Dans le cas contraire, le message doit être considéré comme invalide et il y a 3 possibilités :
1. le message M a été modifié.
2. le message M a été signé de manière incorrecte par Alice.
3. le message a été signé par une autre personne (intrus).
- 25 -
• PKCS#10 : Certification Request Syntax Standard
• PKCS#11 : Cryptography Token Interface Standard
• PKCS#12 : Personal Information Exchange Syntax Standard
• PKCS#13 : Elliptic Curve Cryptography Standard
• PKCS#15 : Cryptography Token Information Format Standard.
Les documents PKCS#6 à PKCS#15 sont essentiellement des documents spécifiant des
syntaxes standards pour différentes opérations liées à la cryptographie. Nous ne décrirons ici
que la spécification PKCS#1 car elle est la seule à décrire un standard de signature.
Pour correspondre au standard PKCS#1, une signature numérique doit avoir été constituée de
la manière suivante :
1. Une empreinte du message doit être fabriquée en utilisant l’un des algorithmes de
compression MD2, MD4, MD5 ou SHA-1.
2. L’empreinte doit ensuite être chiffré avec la clef secrète RSA du signataire.
C’est l’ensemble formé du message et de l’empreinte chiffrée qui constitue la signature
digitale.
4.3 Certificats
4.3.1 Principe
Infrastructure à clef publique (ICP)
L’infrastructure à clef publique définit un ensemble de services de sécurité afin de
rendre les échanges électroniques fiables.
A l’intérieur de l’ICP, les éléments sont organisés hiérarchiquement dans le but de garantir un
niveau de sécurité élevé. Elle est composée de :
• une autorité d’enregistrement (Registration Authority)
• une autorité de certification
• un système de distribution des clefs
Les ICP sont évolutives et interopérables c’est-à-dire qu’elles sont capables de suivre la
croissance du nombre d’utilisateurs et doivent supporter l’ajout de nouvelles autorités de
certification et l’établissement de certification croisée entre plusieurs autorités.
Autorité de certification
pan-opérateurs
- 26 -
Le problème qui a amené à créer les certificats est l’opposé de celui qui a amené à créer les
signatures numériques. Un certificat permet d’attester l’identité du destinataire de la même
façon qu’un papier d’identité permet d’identifier une personne. En effet, les certificats
numériques fonctionnent sur le même principe : ils sont émis par un organisme supérieur
(l’Etat pour le papier d’identité) appelés autorité de certification.
Une autorité d’enregistrement est un organisme approuvé pour vérifier que les autres
organismes sont bien ce qu’ils prétendent être. Pour cela elle applique des procédures
d’identification conformes aux règles définies par l’autorité de certification.
Obtenir un certificat numérique
Pour obtenir un certificat d’une autorité d’enregistrement, il faut donc fournir à celle-ci des
informations (documents officiels) prouvant votre identité ou celle de votre organisation ainsi
que votre clef publique. L’autorité vérifie alors votre identité mais aussi que la clef fournie
est bien issue d’un algorithme de cryptage à clef publique particulier.
Il existe trois classes de certificats correspondant à différents niveaux de sécurité :
• certificats de classe 1 : Le demandeur ne fournit qu’une adresse e-mail.
• certificats de classe 2 : Ils requièrent une preuve d’identité du demandeur.
• certificats de classe 3 : Ces certificats ne peuvent être délivrés que si le demandeur est
présent physiquement.
- 27 -
4.3.2 Certificats X.509
Le format de certificats numériques X.509 de l’ISO (Organisation Internationale de
Normalisation) est le plus répandu. Un certificat X.509 est composé de la signature de
l’autorité de certification et d’informations.
Les informations contiennent :
la version de la norme X.509 désigné par un nombre entier : 0 pour la version 1, 1
pour la version 2 et 2 pour la version 3.
le numéro de série : chaque certificat a un numéro unique.
l’algorithme de signature utilisé par l’autorité : MD5, DSA,etc…
la période de validité du certificat
le nom de l’autorité de certification
le nom du sujet
renseignements sur la certification de la clef publique :
o algorithme utilisé
o chaîne de bits représentant la clef publique
informations optionnelles spécifiques à la version 3
La version 3 de X.509 est la version actuelle, mais toutes les versions sont utilisées. La
version 3 donne la possibilité d’ajouter des extensions personnalisées (optionnelles) aux
certificats.
- 28 -
CONCLUSION
- 29 -
REFERENCES BIBLIOGRAPHIQUES
1. http://www.commentcamarche.net/crypto/crypto.php3
2. http://www.bibmath.net/crypto/
3. http://www.securiteinfo.com/
4. http://www.iro.umontreal.ca/~crepeau/CRYPTO/
5. http://fr.wikipedia.org/wiki/Cryptographie
6. http://rootshell.be/~virgil/TPE/
7. http://cui.unige.ch/tcs/cours/crypto/
8. http://www.uqtr.ca/~delisle/Crypto/
9. http://developpeur.journaldunet.com/tutoriel/sec/020905_ssl3.shtml
- 30 -