Crypto Resssource
Crypto Resssource
3.1 Introduction
• D’un algorithme de chiffrement, supposé connu de tous, dépendant d’un paramètre qui
est la clé de chiffrement. L’algorithme est fixé et public, seule la clé change.
• De la valeur de la clé de chiffrement, qui est secrète ou non suivant que l’on a affaire à
un code à clé secrète (symétrique) ou à un code à clé publique (asymétrique).
Propriétés :
• La séquence qui sert au chiffrement ne dépend pas du message clair, mais uniquement
de la clé.
• Il est possible de chiffrer des messages de tailles variables.
• Le chiffrement et le déchiffrement s’effectuent de la même manière (XOR)
• L’impact de la modification d’une partie du message chiffré pendant la transmission du
message est limité à cette partie du message déchiffré.
Chapitre 3 : Cryptographie moderne à clé secrète
21
Une des principales caractéristiques des algorithmes de chiffrement par flot est qu’ils permettent
d’atteindre un très haut niveau de performances. Ces performances s’expriment soit en termes
de vitesse de chiffrement soit en termes d’efficacité matérielle. On distingue deux principaux
types d’algorithmes par flot :
1. Les algorithmes adaptés à une implantation logicielle, qui peuvent atteindre des vitesses
de chiffrement très élevées (plusieurs Gbits/s).
2. Les algorithmes adaptés à une implantation matérielle, dont les implantations sont
efficaces en termes de taille ou de consommation électrique.
3
Chapitre 3 : Cryptographie moderne à clé secrète
Pour chiffrer un texte en mode CBC, on effectue par conséquent les opérations suivantes:
C1 = E (M 1 ⊕ VI)
Cn = E (Mn ⊕ Cn−1), pour n > 1.
Et pour le déchiffrement :
M 1= D (C1) ⊕ VI
MN = D (CN) ⊕ Cn-1, pour n > 1.
I1 = VI
In = (In-1 ≪ k) | Cn-1, pour n>1
4
Chapitre 3 : Cryptographie moderne à clé secrète
Cn = Mn ⊕ MSBk ( E( In )), pour n ≥ 1. Tel que MSBk sont les k bits les plus significatifs
Indication : ≪ est le symbole de décalage et | et celui de la concaténation
Et pour le déchiffrement :
I1 = VI
In = (In-1 ≪ k) | Cn-1, pour n>1 Mn =
Cn ⊕ MSBk ( E( In )), pour n ≥ 1.
• Pour chiffrer un texte en mode OFB à k bits, on effectue les opérations suivantes :
I1= VI
In = (In-1 ≪ k) | MSBk (E (In-1)), pour n > 1
Cn = Mn ⊕ MSBk (E(In)), pour n ≥ 1.
• Pour le déchiffrement:
I1= VI
In = (In-1 ≪ k) | MSBk (E (In-1)), pour n > 1
Cn = Mn MSBk (E(In)), pour n ≥ 1.
5
Chapitre 3 : Cryptographie moderne à clé secrète
Les primitives cryptographiques peuvent être classées en deux catégories, à savoir, primitives à
clé symétrique et primitives à clé publique. Dans ce chapitre, nous allons voir les méthodes
cryptographiques les plus répandues pour le chiffrement symétrique.
Dans la cryptographie symétrique, la clé de chiffrement est la même que la clé de déchiffrement.
De ce fait, la clé doit être un secret partagé uniquement entre l’émetteur et le destinataire. Il
existe plusieurs algorithmes qui fonctionnent sur ce principe : DES, IDEA, AES, RC4, RC5,
Blowfish,….
Principe de chiffrement :
Un bloc de texte en clair est découpé en deux, puis une transformation de ronde (fonction f) est
appliquée à la partie droite, et le résultat est combiné avec la partie gauche par le ou exclusif. Les
deux moitiés sont alors inversées pour l'application de la ronde suivante. Le déchiffrement est
structurellement identique au chiffrement.
6
Chapitre 3 : Cryptographie moderne à clé secrète
Exemple :
Pour un chiffrement Feistel à deux rondes d’un message constitué de quatre bits, nous
considérerons les fonctions de ronde suivantes:
a) Fonctionnement de DES
L'algorithme DES transforme un bloc de 64 bits en un autre bloc de 64 bits. Il manipule des
clés individuelles de 56 bits, représentées par 64 bits (avec un bit de chaque octet servant pour
7
Chapitre 3 : Cryptographie moderne à clé secrète
• Permutation initiale et fixe d'un bloc (sans aucune incidence sur le niveau de sécurité)
• Le résultat est soumis à 16 itérations d'une transformation, ces itérations dépendent à
chaque tour d'une autre clé partielle de 48 bits. Cette clé de tour intermédiaire est
calculée à partir de la clé initiale de l'utilisateur (grâce à un réseau de tables de
substitution et d'opérateurs XOR). Lors de chaque tour, le bloc de 64 bits est découpé
en deux blocs de 32 bits, et ces blocs sont échangés l'un avec l'autre selon un schéma de
Feistel. Le bloc de 32 bits ayant le poids le plus fort (celui qui s'étend du bit 32 au bit
64) subira une transformation.
• Le résultat du dernier tour est transformé par la fonction inverse de la permutation
initiale.
Rappelons ci-dessous la table de permutation initiale, elle est représentée par la matrice PI
8
Chapitre 3 : Cryptographie moderne à clé secrète
Cette matrice de permutation indique que le 58ème bit du bloc du texte de 64 bits se retrouve en
première position, le 50ème en seconde position, etc.
Une fois la permutation initiale appliquée, le bloc de 64 bits est divisé en deux blocs de 32 bits,
notés respectivement G et D (pour gauche et droite). On note G0 et D0 l’état initial de ces deux
blocs.
Les 32 bits du bloc D sont étendus à 48 bits grâce à une table (matrice) appelé table d’expansion
(notée E), dans laquelle les 32 bits sont mélangés et 16 d’entre eux sont dupliqués.
9
Chapitre 3 : Cryptographie moderne à clé secrète
Chaque bloc de 48 bits est découpé en 8 blocs de 6 bits. Le principe consiste à transformer 6
bits en 4 bits par l’application de la substitution via les 8 fonctions de sélection appelées aussi
des SBOX notées généralement Si. Ces SBOX sont représentées sous formes de matrices fixes.
Les premiers et derniers bits de chaque sous bloc détermine (en binaire) la ligne de la fonction
de sélection, les autres bits déterminent la colonne.
La sélection de la ligne se fait sur deux bits et la sélection de la colonne se fait sur 4 bits. Elle
s’applique sur des blocs de 6 bits pour obtenir en sortie une valeur codée sur 4 bits.
La première fonction de sélection ou SBOX est représentée par la matrice notée ci-dessous par
S1.
Etant donné un sous bloc égale à 110101. Le premier et le dernier bit donnent 11, soit 3 en
décimal. Il indique la ligne numéro 3 dans S1. Les 4 bits du milieu soient 1010 correspondent à
10 en décimal, ils déterminent le numéro de la colonne qui est 10. A, l'intersection de la ligne et
colonne, on trouve 3 qui correspond à 0011en binaire, c'est-à-dire les 4 bits de sortie.
10
Chapitre 3 : Cryptographie moderne à clé secrète
Cette opération est répétée pour les autres sous blocs de 6 bits faisant appeler dans l’ordre les
fonctions de sélection SBOX. Tous les résultats sont regroupés pour former un bloc de 32 bits.
A ce nouveau bloc, on additionne le bloc de gauche et de l’itération précédente.
A la fin des itérations, les deux blocs G16 et D16 sont recollés, puis soumis à la permutation
initiale inverse.
On fabrique à partir de la clé principale K de 64 bits, 16 sous-clés K1,...,K16 à 48 bits, pris dans
un certain ordre.
Dans un premier temps, les bits de parité de la clé sont éliminés afin d’obtenir une clé d’une
longueur de 56 bits. Les bits de la clé initiale sont d’abord stockés dans une matrice. La première
étape consiste en une permutation notée CP-1 dont la matrice est présentée cidessous.
Cette matrice peut s’écrire sous la forme de deux matrices Gi et Di où Gi est constitué des
premiers 28 bits et Di des derniers 28 bits. Notons G0 et D0 le résultat de cette première
permutation. Ces deux blocs subissent ensuite une rotation à gauche de telle sorte que les bits
en seconde position prennent la première position, ceux en troisième position prennent la
seconde, etc. Les bits en première position passent en dernière position. Les deux blocs de 28
bits sont ensuite regroupés en un bloc de 56 bits. Celui-ci passe à travers une permutation, notée
CP-2, fournissant en sortie un bloc de 48 bits, représentant la clé Ki.
11
Chapitre 3 : Cryptographie moderne à clé secrète
c) Cryptanalyse
Bien qu’aucune réelle faille n’ait été trouvée sur le DES, celui-ci utilise des clés de 64 bits,
dont seulement 56 apportent de la sécurité (il y a un bit de contrôle par octet), ce qui ne
résisterait pas plus de quelques heures à une machine récente. En 1990, l’algorithme DES a
été cassé par la cryptanalyse différentielle. La meilleure attaque différentielle connue exige 247
textes clairs choisis. Afin d’en relever simplement sa sécurité, le Triple-DES fut adopté en
1998.
d) Triple DES
12
Chapitre 3 : Cryptographie moderne à clé secrète
C’est un chiffrement symétrique itéré qui utilise des blocs de 128 bits, 192 bits ou 256 bits et
des clés de 128 bits, 192 bits ou 256 bits. Le nombre des itérations varie entre 10, 12 et 14 où
chaque ronde utilise une clé générée à partir de la clé principale.
L’état ou le bloc en clair est représenté par une matrice. Le nombre de ligne de cette matrice
égale toujours à 4 mais le nombre de colonne égale se change selon la taille du bloc : 4 colonnes
correspond à un bloc de 128 bits, 6 colonnes à un bloc de 192 bits et 8 colonnes à un bloc de
256 bits. La représentation des clés se fait de la même façon comme le montre la figure ci-
dessus.
Le nombre de rondes varie suivant la taille des blocs et la taille des clés à la fois. Si par exemple
la taille du bloc égale à 192et la taille de la clé égale aussi à 256 on aura 14 rondes à faire selon
la figue suivante :
Dans le reste de la description, nous supposons que la taille du bloc et la taille de la clé sont
égalent à 128 (16 octets) donc le chiffrement du bloc nécessite 10 rondes et 10 sous-clés.
La matrice en entrée est d’abord modifiée par un ou exclusif avec la matrice principale de la clé.
Les 16 octets en sortie vont passer par quatre transformations de ronde :
La dernière ronde (dans ce cas la dixième ronde) ne subit pas la transformation de mélange
(MixColumns).
13
Chapitre 3 : Cryptographie moderne à clé secrète
14
Chapitre 3 : Cryptographie moderne à clé secrète
Il est à noter que SubBytes() est une transformation bijective sur le corps GF(28).
Transformation ShiftRows():Elle correspond à une permutation cyclique des octets sur les
lignes de l’état. Le décalage des octets correspond à l’indice i de la ligne considérée (0<=i< 4)
15
Chapitre 3 : Cryptographie moderne à clé secrète
C’est une transformation linéaire : un produit matriciel utilisant les 4 octets d’une colonne. Les
colonnes sont traitées comme des polynômes dans GF(28) et multipliées modulo x4 + 1 avec
les polynômes fixes donnés figure suivante :
Transformation AddRoundKey(): C’est l’ajout de la clé de ronde (ou de la clé lors de la ronde
initiale) à l’état considéré (l’addition est un ou exclusif). Un XOR (au niveau bit) est appliqué
entre chacun des octets de l’état et de la clé de ronde.
16
Chapitre 3 : Cryptographie moderne à clé secrète
c) Déchiffrement AES
Les clefs de ronde sont utilisées dans l’ordre inverse de celui du chiffrement. On notera que
l’ordre des transformations diffère de celui du Cipher. Le déchiffrement consiste à appliquer
dans l’ordre inverse du chiffrement les transformations inverses correspondantes.
17
Chapitre 3 : Cryptographie moderne à clé secrète
Figure
3.24
InvShiftRows ()
InvMixColumns():
Le choix de cet algorithme répond à de nombreux critères que nous pouvons citer :
18
Chapitre 3 : Cryptographie moderne à clé secrète
Si l’on se réfère à ces critères, on constate que l’AES est également un candidat particulièrement
approprié pour les implémentations embarquées qui suivent des règles beaucoup plus strictes
en matière de ressources, puissance de calcul, taille mémoire, etc.
e) Cryptanalyse
Attaques par dictionnaires: En ce qui concerne l'AES, il y a 2128 clés possibilités (dans la
version minimale) pour cryptanalyser AES, chose qui est théoriquement possibles mais quasi
impossible à réaliser pratiquement.
Attaques par cryptanalyse différentielle: L’attaquant doit choisir des textes clairs présentant
une différence fixe, et calculer les chiffrés (en ayant accès au système) et Ieurs différences puis
assigne des probabilités à certains types de clés. Plus le nombre d'essais augmente, plus la
probabilité de découvrir la bonne clé devient grande. Dans le cas du DES simple, cette attaque
nécessite 247 textes clairs et 247 chiffrements pour retrouver la clé. Néanmoins, les textes clairs
doivent être soigneusement choisis. L'AES est lui résistant à ce type d’attaque.
Attaques par cryptanalyse linéaire: Pour ce type d’attaques, on utilise des approximations
linéaires pour décrire les opérations conduisant au résultat chiffré. Comme précédemment, plus
le nombre d’essais augmente, plus la probabilité de découvrir la bonne clé augmente. Cette
attaque est actuellement la plus performante puisqu’elle ne nécessite que 243 textes clairs et 243
chiffrements pour retrouver une clé DES (simple). L'AES est lui résistant à ce type d'attaque.
Distribution des clés : Les algorithmes de chiffrement symétrique se fondent sur une même
clé pour chiffrer et déchiffrer un message. L'un des problèmes de cette technique est que la clé,
qui doit rester totalement confidentielle, doit être transmise au correspondant de façon sûre.
Gestion des clés : La mise en œuvre peut s'avérer difficile, surtout avec un grand nombre des
intervenants car il faut autant de clés que des intervenants. Si N intervenants veulent s’échanger
des informations, chaque intervenant doit avoir une clé différente avec chacun des autres
intervenants donc le nombre de clés est N*(N-1)/2.
3.5 Exercices
Exercice 3.1
2. Combien de clés sont nécessaires pour que cinq personnes puissent communiquer via un
chiffrement symétrique?
Exercice 3.2
Soit Ek une fonction de chiffrement binaire par bloc de taille fixe (4 bits) tel que: A
tout message en clair mi on associe un chiffré ci = Ek (mi)
Exercice 3.3
On considère un chiffrement de Feistel à deux rondes sur des chaînes de 8 bits avec deux
fonctions f1 et f2. On pose: f1(x) := x ⊕ 1011 et f2(x) := 𝑥̅ ⊕ 0101 pour toute chaîne a de 4
bits.
L’algorithme MiniDES est un chiffrement par bloc suivant un schéma de Feistel. Il chiffre des
messages de 16 bits en un autre bloc de 16 bits avec une clé de longueur 12 bits. Il manipule des
clés individuelles de de rondes 12 bits.
Calculer le résultat de la première ronde du message M = A0E0 avec la clé de ronde K1=
07E
Exercice 3.5
1. L’algorithme AES est un chiffrement par bloc itératif qui repose sur 4 opérations, les
quelles ?
2. Donner le résultat de l’opération « SubBytes » de : 3d (code hexadécimal) 3. Quel est
le résultat de l’opération « ShiftRows » sur le bloc suivant ?
20
Chapitre 3 : Cryptographie moderne à clé secrète
Construire les deux premières clés de ronde suivant les formules suivantes :
21
Chapitre 4: Cryptographie à clé publique
4.1 Introduction
C'est en 1976 que Whitfield Diffie et Martin Hellman, de l'Université Stanford, proposent un
principe de chiffrement entièrement nouveau : la cryptographie à clé publique, ou
asymétrique.
Un système cryptographie à clé publique est en fait basé sur deux clés :
41
Exemple:
Alice doit recevoir un message de Bob, mais elle ne fait pas confiance au facteur qui pourrait
ouvrir sa lettre. Comment peut-elle être sûre de recevoir ce message sans qu'il soit lu ? Alice
va d'abord envoyer à Bob un cadenas ouvert, dont elle seule possède la clé. Ensuite, Bob va
placer son message dans une boîte, qu'il fermera à l'aide de ce cadenas, avant de l'envoyer à
Alice. Le facteur ne pourra donc pas ouvrir la boîte, puisque seule Alice possède la clé !
Etant donnée une fonction f, il est possible connaissant x de calculer «facilement» f (x) ; mais
connaissant un élément de l’ensemble image de f , il est «difficile» ou impossible de trouver
son antécédent.
Dans le cadre de la cryptographie, posséder une fonction à sens unique qui joue le rôle de
chiffrement n’a que peu de sens. En effet, il est indispensable de trouver un moyen efficace afin
de pouvoir déchiffrer les messages chiffrés. On parle alors de fonction à sens unique avec trappe
secrète.
f : x x3 (mod 100)
• Connaissant x, trouver y = f (x) est facile, cela nécessite deux multiplications et deux
divisions.
• Connaissant y image par f d’un élément x (y = f (x)), retrouver x est difficile.
• soit faire une recherche exhaustive, c’est-à-dire essayer successivement 1, 2, 3, ..., 99, on
trouve alors : 713 = 357 911 ≡ 11 (mod 100),
• soit utiliser la trappe secrète : y y7 (mod 100) qui fournit directement le résultat !
117 = 19 487 171 ≡ 71 (mod 100).
La morale est la suivante : le problème est dur à résoudre, sauf pour ceux qui connaissent la trappe
secrète.
Comment imaginer une fonction qui soit à sens unique pour tout le monde sauf pour son créateur
qui peut l'inverser grâce à la connaissance d'une information particulière (la clé) ?
Ce sont Diffie et Hellman qui ont les premiers donné une réponse à cette question.
23
Chapitre 4: Cryptographie à clé publique
Le but de l'algorithme Diffie-Hellman est de créer un secret commun aux personnes qui veulent
communiquer et d'utiliser ce secret pour chiffrer les données échangées.
Tout ce qui est en vert est publique (diffusé sur internet). Tout ce qui est en rouge est privé.
Exemple :
Alice et Bob ont calculé le même secret commun: 107. On se sert de 107 pour chiffrer les données
échangées (Dans la pratique, on utilise des nombres beaucoup plus grands).
Le système de chiffrement RSA a été inventé par trois mathématiciens : Rivest, Shamir et
24
Chapitre 4: Cryptographie à clé publique
Adleman, en 1977 (On retrouve le sigle RSA dans les noms des inventeurs) pour répondre aux
concepts de Diffie-Hellman. La sécurité repose sur la difficulté de factoriser un nombre qui est le
produit de deux nombre premiers très grands. Les clés publique et privée sont générées à partir de
deux nombres premiers très grands (plus de 100 chiffres)
4.5.1 Principe
a) Créer une paire de clés
• Soit deux grands nombres premiers p et q Soit n = p x q.
• Prendre un nombre e qui n'a aucun facteur en commun avec φ (N) =
(p-1)(q-1).
Calculer d tel que : e d mod (p-1)(q-1) = 1
Le couple (e,n) constitue la clé publique et le couple (d,n) constitue la clé privée.
b) Chiffrement de M
c) Déchiffrement de C
Exemple:
Prenons comme exemple p = 7, q = 13. Pour calculer n, il faut multiplier p et q, ce qui nous donne
n = 91. Pour calculer φ(n), il faut faire (7-1) * (13-1) ce qui donne 72.
Maintenant, il faut choisir l’exposant e, qui doit être premier avec φ(n). Prenons donc par
exemple e = 5 (PGCD (5, 72) = 1 donc premiers entre eux). Voici donc la clé publique e = 5 et
n = 91.
Pour calculer d, il suffit de faire 5-1 mod 72, ce qui donne 29. Voici donc La clé privée d=29 et
n=91.
Pour vérifier que d est correct, il suffit de calculer e * d mod φ(n) = 1. Dans cet exemple cela revient
à calculer 5 * 29 mod 72 = 1
Soit le message à crypter M = SECRET. Pour chiffrer M il faut d’abord le transformer en une suite
de chiffres, par exemple en remplaçant les lettres par des chiffres selon la position de la lettre dans
l’alphabet.
25
Chapitre 4: Cryptographie à clé publique
Alors : C= 803161443176
Pour déchiffrer C il suffit d’utiliser que la clé privée (d, N)= (29,91) dans la formule de
déchiffrement.
4.5.2 Discussion
Bien que l’algorithme soit simple, il est très coûteux en termes de ressources.
• Le message est chiffré rapidement grâce à une clé secrète DES ou AES, qui ne sert que pour
un message. C’est une clé de session.
• La clé de session est chiffrée grâce à un algorithme de cryptographie à clé publique tel que
RSA.
Problématique : Comment Bob peut être sûr que le message provient bien d’Alice ?
26
Chapitre 4: Cryptographie à clé publique
Elle permet d’assurer l’intégrité du message ainsi que la non-répudiation, c'est-à-dire qu'elle permet
de vérifier l’origine du message.
Il est possible de combiner le chiffrement et la signature numérique et, par conséquent, d'assurer la
confidentialité et l’authentification.
La signature du message M:
Puisque le signataire est le seul possédant sa clé privée, il est le seul pouvant signer.
La vérification de la signature:
Puisque tous les intervenants peuvent obtenir la clé publique, ils peuvent tous vérifier la signature.
• La confidentialité de la clé privée de celui qui l’utilise ; en effet la divulgation de cette clé
privée réduit à néant la protection offerte par le système.
• Les résultats de la théorie des nombres, ou plutôt l’absence de tels résultats, qui nous dit
que la factorisation de très grands nombres est un problème difficile, ainsi d’ailleurs que
le problème du logarithme discret (ici, le terme difficile doit être entendu comme insoluble
en pratique). C’est-à-dire que tous ces systèmes sont à la merci d’un progrès inattendu de
la théorie mathématique, qui viendrait par exemple offrir aux cryptanalystes un nouvel
algorithme de factorisation rapide.
Comme pour le chiffrement symétrique, les nombres choisis comme bases du système doivent
être suffisamment grands pour décourager les attaques par force brute, et la réalisation des
programmes doit être correcte.
27
Chapitre 4: Cryptographie à clé publique
4.9.1 Principe
• Une fonction de hachage calcule l’empreinte y d’un message x. Cette fonction doit être
une fonction à sens unique.
• 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 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
• Généralement pour toute fonction h avec entrée x, le calcul de h(x) est une opération rapide.
28
Chapitre 4: Cryptographie à clé publique
• Les fonctions de hash par calcul sont beaucoup plus rapides qu'un cryptage symétrique.
Pour être un outil cryptographique efficace, la fonction d’hachage doit avoir les propriétés suivantes
:
a) Principe de fonctionnement
29
Chapitre 4: Cryptographie à clé publique
• A chaque étape de chaque ronde une fonction non linéaire est effectuée sur 3 des variables
B,C,D, le résultat est ajouté à un des 16 mots du bloc de message et à un élément du tableau
T. Le résultat est décalé de s bits.
b) Algorithme MD5
r[ 0..15] := {7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22}
r[16..31] := {5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20, 5, 9, 14, 20} r[32..47]
:= {4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23} r[48..63] := {6,
10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21}
pour i de 0 à 63 faire
pour
var entier a := h0
var entier b := h1
var entier c := h2
var entier d := h3
//Boucle principale :
pour i de 0 à 63
31
Chapitre 4: Cryptographie à clé publique
faire si 0 ≤ i ≤
15 alors
f := (b et c) ou ((non b) et d)
g := i
sinon si 16 ≤ i ≤ 31 alors
f := (d et b) ou ((non d) et c)
g := (5×i + 1) mod 16 sinon si 32
≤ i ≤ 47 alors f := b xor c
xor d g := (3×i + 5) mod 16
sinon si 48 ≤ i ≤ 63 alors f
:= c xor (b ou (non d)) g :=
(7×i) mod 16 fin si
var entier temp := d
d := c
c := b
b := ((a + f + k[i] + w[g]) leftrotate r[i]) + b
a := temp fin pour
fin pour
c) La cryptanalyse
MD5 est actuellement considéré comme une méthode de hachage non sûre. En réalisant une
attaque par force brute, cela permet de retrouver un message original assez rapidement. La
complexité du message haché est de 264 calculs, or certains algorithmes permettent de réduire
les calculs à 230 opérations.
Les algorithmes à clé publique sont trop lents pour signer de longs documents. Pour gagner du
temps les protocoles de signature numérique sont souvent réalisés avec des fonctions de
hachage à sens unique.
Au lieu de signer le document Alice signe l’empreinte du document en suivant le protocole suivant:
32
Chapitre 4: Cryptographie à clé publique
Avantage de ce procédé:
Les infrastructures des systèmes à clef publique ou PKI (Public Key Infrastructure) consistent
en toutes les dispositions techniques et organisationnelles nécessaires pour gérer un système
cryptographique à clef publique.
Du fait que les clés publiques ne sont pas confidentielles, il n’est pas nécessaire de les crypter
pour les transmettre. Mais il est très important et même vital pour la sécurité des transmissions
de s’assurer de l’authenticité des clés ainsi transmises.
En effet si Alice désire transmettre sa clé publique à Bob, n’importe quel opposant, Martin par
exemple, peut intercepter le message la contenant. Martin peut ensuite envoyer un message à
33
Chapitre 4: Cryptographie à clé publique
Bob en se faisant passer pour Alice et contenant sa propre clé publique et donnant comme
adresse de retour sa propre adresse. Ainsi il est capable de lire les messages cryptés que Bob
envoie à Alice avec la soi-disant clé publique d’Alice que Bob croit posséder. Une fois qu’il les
a décryptés et lus il peut les envoyer à Alice dont il possède la clé publique en les modifiant s’il
l’estime nécessaire.
Il faut donc d’une certaine manière faire un lien entre chacun des participants au réseau et sa clé
publique. Pour cela on utilise les certificats.
Un certificat consiste en une clef publique et une identité digitale (par exemple une suite de
symboles contenant le nom du propriétaire de la clef, de la même manière qu’on met une
étiquette sur une clé ordinaire), le tout étant cacheté à l’aide de la signature digitale d’une
personne ou d’une organisation en laquelle on a confiance et appelée un Tiers de Confiance
(Trusted Third Party ou TTP) ou encore Certification Authority.
Pratiquement on peut par exemple concaténer, mettre bout à bout, la clé publique, le nom de
son possesseur et signer le message obtenu à l’aide de la clef privée du Tiers de Confiance (il
faut que personne ne puisse usurper l’identité du Tiers de Confiance).
Il existe plusieurs modèles de réseau avec Tiers de Confiance, avec deux modèles extrêmes, le
modèle hiérarchique qui repose sur des TTP distincts des utilisateurs et le modèle distribué où
chaque utilisateur est son propre autorité de certification. Un système très employé de système
hiérarchique de Tiers de Confiance est le modèle X.509
Il y a aussi des systèmes non hiérarchiques de PKI fondé sur des chaînes de certificats et une
distribution de clefs décentralisées.
4.10.1 Certificat
Un certificat est un élément d'information qui prouve l'identité du propriétaire d'une clé
publique. À l'instar d'un passeport, un certificat est une preuve reconnue de l'identité d'une
personne. Les certificats sont signés et transmis de façon sécuritaire par un tiers de confiance
appelé autorité de certification (AC).
Le rôle de l’AC est de s’assurer de la validité de la correspondance entre un nom d’une personne et
une clé publique.
Une personne faisant confiance à une AC devrait pouvoir identifier toutes les personnes
authentifiées par cette AC.
34
Chapitre 4: Cryptographie à clé publique
Certificat de l’AC :
– Le certificat est distribué de façon sécurisée (par exemple avec le système d’exploitation).
Certificat du client :
Chaque intervenant s’inscrit à l’AC afin qu’il puisse être identifié par un autre intervenant.
Chaque intervenant ayant un certificat peut « prouver » son identité à tout autre intervenant ayant
confiance à l’AC.
35
Chapitre 4: Cryptographie à clé publique
Bob peut posséder le certificat de plusieurs ACs afin de pouvoir identifier plusieurs intervenants.
Vérification :
En disposant d'un certificat au lieu d'une clé publique, le destinataire peut maintenant vérifier
un certain nombre d'aspects au sujet de l'émetteur pour s'assurer que le certificat est valide
et qu'il appartient bien à la personne à qui il est censé appartenir.
Il peut notamment :
Notez que les certificats sont signés par une AC, ce qui signifie qu'ils ne peuvent être altérés. La
signature de l'AC peut, à son tour, être vérifiée à l'aide du certificat de cette AC.
36
Chapitre 4: Cryptographie à clé publique
4.11 Exercices
Exercice 4.1
Exercice 4.2
Expliquer à travers un simple exemple comment obtenir une paire de clé (publique et privé) dans
un système RSA.
Exercice 4.3
Bob choisit comme nombre premier p = 17 et q = 19, comme exposant e = 5. Alice et lui se
fixent un protocole RSA dans lequel les messages sont des nombres en base 10 que l’on code par
bloc de 2 chiffres. Alice veut envoyer le message ”462739”.
Admettons qu’Alice choisisse eAlice= 5, dAlice=29, NAlice=91, de son côté, Bob a choisi eBob=3,
dBob=7 n=33.
Alice veut faire verser à Charles la somme de 111 euros. Le message en clair est donc m = 111.
37
Chapitre 4: Cryptographie à clé publique
L'espion, de son côté, peut espionner tout ce qui passe sur le réseau. Il souhaite se connecter à
distance au serveur en se faisant passer pour Alice.
Exercice 4.7
A quel problème répond une infrastructure de gestion de clefs (PKI) ? Décrivez sa structure.
38
Conclusion générale
Le présent polycopié a abordé des notions de base en cryptographie, il a mis l’accent sur les
principales méthodes de la cryptographie classique. Le polycopié a aussi présenté l’essentiel
sur la cryptographie moderne par la description des algorithmes les plus important pour le
chiffrement symétrique à savoir DES et AES ainsi que pour le chiffrement asymétrique en
abordant le système RSA et la signature numérique. Une étude sur les attaques et la
cryptanalyse des algorithmes a été discuté. Enfin, la fonction de hachage et le certificat ont été
présentés avec une description de leurs fonctionnements.
58
1. Chiffrement de César : avec un décalage des lettres d’alphabet avec 3 positions, les lettres
du message en clair correspondent au texte chiffré suivant : ERQMRXU
2. Chiffrement par décalage (généralisation de code de César) : En remplaçant les lettre du
message par leurs rang dans l’alphabet et en appliquant pour chacune la formule de
chiffrement :E = (x+k) mod 26, donc le message chiffré est JXKL.
3. Il n'y a que 26 décalages possibles pour le chiffrement par décalage. Un ordinateur ou un
humain (suffisamment patient) peut très facilement tester ces 26 possibilités et est sûr de
décrypter le cryptogramme.
Exercice 2.2
1. Dans la langue française c’est la lettre A et E qui sont les plus fréquentes et puisque dans
le texte chiffre c’est les lettres K et O qui apparaissent beaucoup donc on peut essayer les
combinaisons suivantes :
• La lettre A est remplacé par la lettre K et la lettre E est remplacé par la lettre O
• La lettre A est remplacé par la lettre O et la lettre E est remplacé par la lettre K
Dans le chiffrement par décalage toutes les lettres sont décalés avec le même nombre de
position donc en calculant le nombre de décalage dans les deux combinaisons, on constate
que la première combinaison est correcte car le nombre de décalage entre les lettres A et
K est le même que celui des lettre E et O donc la clé K=10.
Exercice 2.4
Pour remplacer le A, on dispose des 26 lettres de l'alphabet. Pour le B il n'y a plus que 25
possibilités, et ainsi de suite. Il y a donc 26 × 25 × 24 × · · · × 2 × 1 possibilités de cryptage
par permutation.
40
Exercice 2.5
1. Chiffrement Vigenère : Nous répétant autant de fois le mot clé selon la longueur du
message puis nous faisons l’intersection entre chaque lettre du message en clair et la lettre
qui lui correspond du mot clé en utilisant le carré de vigenère.
Message C H I F F R E D E V I G E N E R E
Clé B A C H E L I E R B A C H E L I E
Chiffré D H K M J C M H V W I I L R P Z I
2. Vigénère apporte un plus car une même lettre peut être chiffrée différemment dans le texte
ce qui complique l'analyse statistique.
Exercice 2.6
1. Chiffrement affine : E(a,b) (x) = ax+b mod 26 tel que (a,b)=(7,3). Alors me texte chiffré est
: RCF
2. Déchiffrement affine : D (y) = a-1 (y-b) mod 26. a-1est l’inverse modulo de a (mod 26) tel
que a. a-1=1 mod 26. L’inverse modulo de 7-1 est 15. Alors le message en clair est : CODE
Exercice 2.7
Chiffrement de Hill :
Exercice 2.8
1. Chiffrement par transposition simple : écrire le message ligne par ligne et le lire colonne
par colonne dans une matrice 5x5
T U E R L
E R O I D
E M A I N
A M I N U
I T X X X
42
Compléter les cases vides par la lettre X. Le texte chiffré est :
TEEAIURMMTEOAIXRIINXLDNUX
2. Chiffrement par transposition complexe : Chaque lettre du mot clé correspond à une
colonne puis numéroter les colonnes selon le rang de chaque lettre du mot clé. La lecture
commence par la colonne qui correspond au plus petit rang (ordre croissant).
1 5 3 4 2
C R I M E
T U E R L
E R O I D
E M A I N
A M I N U
I T X X X
Exercice 3.1
Inconvénient : La distribution des clés n’est pas sécurisée ainsi que la gestion des clés.
Exercice 3.2
43
a) Mode ECB
Ek(0001) = 1001
Ek(m1xor c0)
= Ek[(1011) (1010)]
= Ek (0001)
= 1001
= Ek[(0001 ) (1001)]
= Ek(1000)
= 0101
ci= mi EK (ci-1)
donc : c1 = m1 Ek(c0)
= (1011) Ek(1010)
= (1011) (0100)
= 1111 c2 = m2
Ek(c1)
= (0001) Ek(1111)
= (0001) (1110)
= 1111
44
d) Mode OFB (c0=1010)
: Z0=c0=1010
c1 = m1 Z1
= (1011) (0100)
= 1111
= m2 Z2
= (0001) (0011)
= 0010
Exercice 3.3
Exercice 3.4
2. Construire La sous-clé K1 :
On divise la clé principale Ken 2 blocs et on effectue un décalage cyclique sur les deux parties
puis on applique la permutation PC sur tout le bloc reconstitué, donc on aura :
45
K1= 110011010100
3. Chiffrement :
Permutation initiale : PI (M)= 1000110000001100
Première ronde :
Exercice 3.5
4. 66 + fa = 9c
02 * bf = 65
11* de + 02 * bf = f4
46
Exercice 4.1
Exercice 4.2
Exercice 4.3
1. La clé privée de Bob : e.d mod (p-1) (q-1)=1 alors d=5-1 mod 288 (calcul de l’inverse
modulo de 5)
d=173
2. Chiffrement : C= Me mod n tel que n=p.q et (e,n) est la clé publique de Bob
On découpe le message en bloc de 2 chiffres puis on les chiffre avec la formule précédant
:
3. Déchiffrement : M= Cd mod tel que n=p.q et (d,n) est la clé privée de Bob
M= 462739
Exercice 4.5
47
3. Envoyer cette clé chiffrée au destinataire et le destinataire déchiffre la clé symétrique
à l’aide de sa clé privée.
4. Les deux interlocuteurs disposent ensuite : une clé symétrique commune qu’ils sont
seuls à connaître ; et donc, de la possibilité de communiquer en chiffrant leur données
à l’aide d’un algorithme de chiffrement symétrique rapide.
Exercice 4.6
1. C'est une authentification solide car on ne peut déduire h10(g) à partir de h11(g). Alice est
donc seule à pouvoir fournir h10(g).
2. Ce n'est pas une authentification solide car l'espion a déjà vu passer h10(g).
On choisit g
authentification :
Évidemment, une fois qu'on a fourni g, il faut choisir un nouveau nombre g et transmettre
h11(g) au serveur de façon sûre. On peut bien sur choisir des valeurs plus grandes que 11
pour éviter d'avoir à refaire ça trop souvent.
Exercice 4.7
Les algorithmes à clefs publiques sont sûrs. Le problème est d'avoir la preuve qu'une clé
publique est bien la clé publique de la personne avec laquelle on veut communiquer. Une PKI
résout ce problème en mettant en place une autorité de confiance qui certifiera les clefs
publiques en précisant pour chaque clé de qui elle est la clé et si elle est valide.
48
Une PKI comprend trois éléments obligatoires :
49