Académique Documents
Professionnel Documents
Culture Documents
Email : christianhameni@gmail.com
CRYPTOGRAPHIE
Ce cours de cryptographie, a pour objectif de donner à l’étudiant la base de
la sécurité de l’information dans de nombreuses applications. Ceci à travers
la bonne connaissance des écritures secrètes et de l’analyse des
cryptogrammes
INTRODUCTION GENERALE
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ésignant 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 Vieme siècle avant JC, en passant par le code de César, on assista au développement plus
ou moins ingénieux de techniques de chiffrement expérimentales ou traditionnelles dont la sécurité reposait
essentiellement dans la confiance que leur accordaient leurs utilisateurs. Après la première guerre mondiale a eu 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. À 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 fait 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.
Depuis l’Antiquité, on cherche à envoyer des messages sans que des personnes extérieures ne puissent les intercepter. Le
plus vieux document chiffré date du XVIe siècle avant J. C. Ainsi, deux manières complémentaires de dissimuler
l’information existent :
- STEGANOGRAPHIE qui consiste à cacher le message pour que l’ennemi ne le trouve pas.
- CRYPTOGRAPHIE qui revient à rendre le message incompréhensible par l’ennemi.
Le mot cryptographie vient du mot grec « Kruptos » qui signifie cacher et de « Graphein » qui signifie écrire. Les
professionnels font une distinction entre chiffre et code. Un chiffre est une transformation caractère par caractère ou bit
par bit quel que soit la structure linguistique du message. Le code quant à lui remplace un mot par un autre mot ou par
un symbole. Depuis plusieurs années, la montée en puissance des technologies de l’information avec pour corollaire, la
dématérialisation des échanges a accentué le besoin de disposer d’une technologie fiable permettant à des utilisateurs de
signer des informations et de vérifier ces signatures.
Ing. Christian HAMENI © copyright Page | 4
Cryptographie
Le premier est de pouvoir assurer la confidentialité des communications, qu’il s’agisse de communications
d’ordre privées ou professionnelles,
Le second est d’authentifier l’émetteur d’une information et, le plus souvent conjointement, de faire en sorte
que l’émetteur ne puisse contester le fait qu’il l’ait émise. On parle alors de non répudiation et de signature
électronique.
Dans ces deux cas, la cryptologie s’est imposée comme un moyen de satisfaire ces deux besoins. Ce n’est pas la seule
technique mais c’est aujourd’hui la plus efficace. Nous ne considérerons que celle-là dans la suite de ce document.
Aujourd’hui la dématérialisation des processus a entraîné une explosion de l’utilisation de la cryptographie mais aussi
une extension de son champ d’applications tels que :
Dans le cadre de ce cours, nous nous tournerons dans un premier temps vers les techniques cryptographiques
traditionnelles qui ont marqué l’histoire, suivis par les techniques actuelles du monde moderne de l’informatique. Par
ailleurs, nous nous arrêterons également sur la sécurité des algorithmes les plus connus ainsi que les notions de
signatures, certificats et fonctions de hachage.
CHAPITRE : I
RAPPEL MATHEMATIQUE :
CONGRUENCES ET ARITHMETIQUE
MODULAIRE
1. CONGRUENCES
I.1 Définition :
Étant donné un entier n ≥2, l’arithmétique modulo n consiste à faire des calculs sur les restes dans la division
euclidienne des entiers par n.
Exemples :
(2) Aujourd’hui on est mardi (2e jour de la semaine). Quel jour sera-t-on dans 30 jours ?
(3) La mesure d’un angle est définie à 360° près. Cela veut dire que la différence entre deux mesures quelconques d’un
angle est un multiple entier de 360°.
Soit m, a, b entiers. On dit que a est congru à b modulo m si m divise a−b. (On dit aussi que “a et b sont congrus
modulo m”.).
Par exemple on a 2 ≡ 8 (mod 3) car 3 divise 2 − 8 = −6. On a a≡ 0 (mod 2) si et seulement si 2 divise a−0 = a, c’est à
dire ssi a est pair.
Donc les règles de manipulation des congruences contiennent la plupart des règles de manipulations d’égalités entre
entiers pour l’addition, la soustraction, et la multiplication. Mais pour la division (et la simplification des congruences),
c’est plus compliqué.
Exemple : 2≡16 et 3≡10 (mod 7) impliquent 2·3≡16·10 et donc 6≡160 (mod 7).
(e) a−a’ = kn, b−b’ = en ⇒ ab−a’b’ = ab−a’b + a’b−a’b’ = (a−a’) b + a’(b−b’) = (kb+ a’e)n.
Soit a, b ∈ N/a ≤ b deux entiers naturels non nuls et r le reste de la division euclidienne de a par b. Alors PGCD(a;b)
= PGCD(b;r). Idée de la démonstration : De l’égalité a = bq + r, on tire que D(a;b) = D(b;r)
Étienne Bézout, mathématicien français né en 1730, a établi que le PGCD de deux entiers est en fait une
combinaison linéaire de ces deux entiers.
Le sens direct découle du théorème précédent. Pour la réciproque, l’égalité au+ bv =1 entraîne que le PGCD de a
et b divise 1
Remarque :
Ce théorème est utilisé pour déterminer l’inverse d’un modulo dans les systèmes cryptographiques utilisant
les congruences arithmétique et modulaire pour la détermination des clés de chiffrements.
Le théorème de Bezout s’appuie fortement sur le théorème d’Euclide pour la détermination des coefficients de Bezout.
À partir de la suite (rn) des restes des divisions euclidiennes de l’algorithme d’Euclide, on construit deux suites (un) et
Exemple :
a. Inverse modulo n
Soit a∈Z, on dit que x∈Z est un inverse de a modulo n si ax ≡1 (mod n).
Trouver un inverse de a modulo n est donc un cas particulier de l’équation ax≡b (mod n). Proposition 1.
- a admet un inverse modulo n si et seulement si a et n sont premiers entre eux.
En d’autres termes, trouver un inverse de a modulo n revient à calculer les coefficients de Bézout associés à la paire
(a,n).
Le théorème de Fermat est ce petit théorème qui permet de déterminer la clé de chiffrement dans la cryptographie
asymétrique. Ce théorème n’est qu’une conséquence du théorème d’Euler.
Soient m1, m2, …, mr des entiers naturels deux à deux entre eux et a1, a2, .., ar des entiers relatifs. Le système de
congruences
a toujours une solution et deux solutions quelconques sont congrus modulo M = m1m2 . . . mr
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, seul le butin, six pirates et le
cuisinier sont sauvés, et le partage donnerait 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 ?
CHAPITRE : II
GENERALITE SUR LE CONCEPT DE
CRYPTOGRAPHIE
INTRODUCTION
Historiquement, quatre groupes ont utilisés l’art de la cryptographie et ont contribué à son développement : les
militaires, le corps diplomatique, ceux qui tiennent un journal intime, les amoureux. Parmi eux, ce sont les militaires qui
ont eu le rôle le plus important et qui ont donné le ton au cours des siècles. 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).
La cryptographie traditionnelle est l’étude des méthodes permettant de transmettre des données de manière
confidentielle. Afin de protéger un message, on lui applique une transformation qui le rend incompréhensible : c’est ce
qu’on appelle chiffrement qui à partir d’un texte en clair, donne un texte chiffré ou cryptogramme. Inversement, le
déchiffrement est l’action qui permet de reconstruire le texte en clair à partir du texte chiffré. D’autres parts, dans la
cryptographie moderne, les transformations en question sont des fonctions mathématiques appelées algorithmes
cryptographiques qui dépendent d’un paramètre appelé clé. La cryptanalyse à l’inverse est l’étude des procédés
cryptographiques dans le but est de trouver des faiblesses et en particulier de pouvoir décrypter les textes chiffrés. Le
décryptement est l’action consistant à retrouver le texte en clair sans connaitre la clé de déchiffrement. Le but de la
cryptographie est d’offrir un certain nombre de services de sécurité comme la confidentialité, l’authentification,
l’intégrité et la non répudiation des données. (CAIN)
Le message à chiffrer appeler texte en clair est transformé au moyen d’une fonction paramétrée par une clé. On obtient
ainsi un texte chiffré qui est transmis le plus souvent par un messager. On suppose que l’ennemi ou l’intrus écoute
scrupuleusement et en précarité. Cependant, à la différence du destinataire réel, l’intrus ne connait pas la clé de
déchiffrement et ne peut donc pas décoder facilement le texte chiffré.
N.B : Parfois, l’intrus peut non seulement écouter le canal de transmission (intrus passif) mais aussi enregistrer ce
message ou modifier le texte légitime avant que le message ne parvienne à son destinataire réel.
C=EK(P) signifie que le chiffrement du texte en clair P au moyen de la clé « K » donne le texte chiffré « C ». De la
même façon, P=DK(C) représente le déchiffrement de C pour rendre DK[EK(P)] =P.
Quelques définitions :
La sécurité en informatique vise un certain nombre d’objectifs à savoir la confidentialité, l’intégrité, authentification.
Nous pouvons donc affirmer que la cryptographie est une forme de sécurité car elle permet d’atteindre ces objectifs à
travers la cryptographie asymétrique et symétrique.
Dans un chiffre de substitution, chaque lettre ou groupe de lettre est remplacé par une autre lettre ou un autre groupe de
lettre. Un des chiffres les plus anciennement connus est le chiffre de César attribué à Jules César. Dans cette méthode, A
devient D, B devient E, C devient F ……. Z devient C.
En cryptographie classique, quatre types de chiffrement par substitution sont distingués :
Substitution simple
Dans une substitution simple, un caractère du message clair est substitué par un caractère unique du message
chiffré. Cela correspond le plus souvent à une permutation des caractères de l'alphabet des messages clairs
Substitution homophonique
Dans une substitution homophonique, un caractère du message clair correspond à plusieurs caractères du
message chiffré. Le principe est qu'à chaque caractère de l'alphabet des messages clairs soit associé une liste de
lettre dans l'alphabet des messages chiffrés (qui est en général beaucoup plus gros que celui pour les messages
clairs), l'ensemble de ces listes formant une partition de l'alphabet des messages chiffrés.
Substitution polygrammique
Le principe est de substituer des blocs de caractères, au lieu d'un seul caractère.
Substitution poly alphabétique
Il s'agit d'un ensemble de substitutions simples. Suivant la position du caractère dans le message clair, on applique une
des substitutions simples. Ce sont des sortes de « permutations à paramètres ». Le point culminant de ces méthodes a
été Enigma, la machine utilisée par les allemands durant la seconde guerre mondiale. Enigma : 1939−45, Allemagne.
1. Le chiffrement de César
L’un des systèmes les plus anciens et les plus simples est le codage par substitution mono alphabétique (ou alphabets
désordonnés). Il consiste à remplacer chaque lettre par une lettre différente. Il existe donc grâce à ces techniques 26
façons de coder un message, ce qui fait que ce système a été longtemps utilisé par les armées pendant l’antiquité. Il
consiste à une substitution mono-alphabétique c’est-à-dire que chaque lettre est remplacée par une seule autre (mono-
alphabétique) et ceci selon un certain décalage dans l’alphabet français. Dans le chiffre de CESAR, le décalage utilisé est
de 3 lettres. Le chiffrement de César entre dans la catégorie des « substitutions simples ».
Une légère généralisation du chiffre de César permet à l’alphabet chiffré d’être décalé de k lettres au lieu de 3. « K »
devient alors une clé pour la méthode générale de décalage circulaire des alphabets. L’amélioration suivante consiste à
faire correspondre chacun des symboles des textes en clair pour simplifier les 26 lettres de l’alphabet avec une autre
lettre. Le système général de substitution symbole pour symbole est appelé substitution mono-alphabétique. La clé a une
chaine de 26 caractères correspondant à l’ensemble de l’alphabet.
P 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
C D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
N.B : le texte en clair est généralement écrit en minuscule tandis que le chiffré est écrit en majuscule.
Le chiffre de César fonctionne par décalage des lettres de l'alphabet. Par exemple dans l'image ci-dessus, il y a
une distance de 3 caractères, donc B devient E dans le texte codé.
Le texte chiffré s'obtient en remplaçant chaque lettre du texte clair original par une lettre à distance fixe,
toujours du même côté, dans l'ordre de l'alphabet. Pour les dernières lettres (dans le cas d'un décalage à droite),
on reprend au début. Par exemple avec un décalage de 3 vers la droite, A est remplacé par D, B devient E, et
ainsi jusqu'à W qui devient Z, puis X devient A etc.
Il s'agit d'une permutation circulaire de l'alphabet. La longueur du décalage, 3 dans l'exemple évoqué, constitue
la clé du chiffrement qu'il suffit de transmettre au destinataire — s'il sait déjà qu'il s'agit d'un chiffrement de
César — pour que celui-ci puisse déchiffrer le message.
Remarque :
Ici, il n’existe que 26 façons différentes de crypter un message puisqu’on ne dispose que de 26 lettres, il n’y a
que 26 décalages possible
Le chiffrement de CESAR est très vulnérable à l’analyse des fréquences
Si on déchiffre le texte crypté, on obtient le texte clair
2. Le chiffrement de Vigenère
Un autre système de cryptographie des plus anciens est cette fois-ci, la substitution poly alphabétique, qui utilise
plusieurs alphabets décalés pour crypter un message. L’algorithme de substitution poly alphabétique le plus connu est le
chiffre de Vigenère, mis au point par Blaise de Vigenère en 1586, qui fut utilisé pendant plus de 3 siècles. Son chiffre
consiste à utiliser le chiffre de César, mais en changeant le décalage à chaque fois
A : décalage de 0
B : décalage de 1
Z : décalage de 25
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
0 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
Texte en Clair L A V I E E S T B E L L E
11 0 21 8 4 4 18 19 1 4 11 11 4
Clé de B O N J O U R B O N J O U
Décalage 1 14 13 9 14 20 17 1 14 13 9 14 20
= 12 14 8 17 18 24 9 20 15 17 20 25 24
Transcription M O I R S Y J U P R U Z Y
Carré de Vigenère
3. Chiffrement affine
On dit qu’une fonction est affine lorsqu’elle est de la forme x → a∗x + b, c’est-à-dire un polynôme de degré 1. Une
fonction linéaire est une fonction affine particulière.
L’idée est d’utiliser comme fonction de chiffrement une fonction affine du type y = (ax+b) mod 26, 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 chiffrement affine, la clé est constituée de (k1, k2) où k1, k2 ∈ [0,25] et telle que pgcd(k1,26) = 1. Le
Par le chiffrement 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 : k1−1 = 3−1 mod 26 = 9 [car 3∗9 mod 26 = 1]
mi = f−1(ci) = 9∗(ci −11) mod 26 Ainsi, pour une suite de lettres telle que ’NSA’ →13 18 0→24 13 11→’YNL’
Cryptanalyse
Il n'existe que 12 entiers compris entre 0 et 25 et premiers avec 26 (1, 3, 5, 7, 9, 11, 15, 17, 19, 21, 23 et 25). Il
n'existe donc que clés de chiffrement possible. Si l'on sait qu'un code affine a été utilisé, on peut
casser le code par force brute en essayant les 312 clés.
À la lumière du principe de Kerckhoffs, ce manque de variété rend ce système très peu sécurisé.
4. Le chiffrement de Hill
En cryptographie symétrique, le chiffrement de Hill est un modèle simple d'extension du chiffrement affine à un bloc.
Ce système étudié par Lester S. Hill, utilise les propriétés de l'arithmétique modulaire et des matrices. Il s'agit de chiffrer
le message en substituant les lettres du message, non plus lettre à lettre, mais par groupe de lettres. Il permet ainsi de
rendre plus difficile le cassage du code par observation des fréquences.
C’est une méthode de chiffrement qui utilise les matrices carrées. Les lettres sont d’abord remplacées par leur rang dans
l’alphabet suivant ce tableau
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
0 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
Les lettres PK et PK+1 du texte clair seront chiffré en Ck et Ck+1 avec la formule ci-dessous :
CK a b Pk
=
CK+1 c d Pk+1
Ceci signifie que les deux premières lettres du message clair P1 et P2 seront chiffrées (C1 et C2) selon les 2 équations
suivantes
Lettres J E V O U S A I M E
Rang (Pk) 10 5 22 15 21 19 1 9 13 5
Rang chiffrés (Ck) 6 7 24 7 5 4 19 16 7 22
Lettres Chiffrées F G X G E D S P G V
Le message chiffré sera donc « FGXGE DSPGV ». Par convention, le message chiffré s’écrit en lettres majuscules
groupées en 5. Si le nombre de lettres du message clair est impair, on ajoute une lettre arbitraire à la fin du message
originale.
On ne peut pas prendre n’importe quelle matrice comme matrice de chiffrement. Ses composantes doivent tout d’abord
être des nombres entiers positifs et il faut qu’elle ait d’abord une matrice inverse dans Z26. Cette matrice existe si et
seulement si (ad – bc) -1 mod 26 existe. Ce qui est le cas lorsqu’ad–bc et 26 sont premiers entre eux.
Le masque jetable, également appelé chiffre de Vernam, est un algorithme de cryptographie en décalage circulaire
inventé par Gilbert Vernam en 1917 et perfectionné par Joseph Mauborgne, qui rajouta la notion de clé aléatoire
(générateur de nombres aléatoires). Cependant, bien que simple, facile et rapide, tant pour le codage que pour le
décodage, ce chiffrement est le seul qui soit théoriquement impossible à casser, même s'il présente d'importantes
difficultés de mise en œuvre pratique.
Principe
Le chiffrement par la méthode du masque jetable est une Substitution poly-alphabétique avec une clé particulière, qui
consiste à combiner le message en clair avec une clé présentant les caractéristiques très particulières suivantes :
La clé doit être une suite de caractères au moins aussi longue que le message à chiffrer.
Les caractères composant la clé doivent être choisis de façon totalement aléatoire.
Chaque clé, ou « masque », ne doit être utilisée qu'une seule fois (d'où le nom de masque jetable).
L'argument théorique est le suivant, dans son principe : si on ne connaît que le texte chiffré, et que toutes
les clés sont équiprobables alors tous les textes clairs sont possibles et avec la même probabilité puisqu'il y a
bijection, une fois le chiffré fixé, entre clés et textes clairs. Même une attaque par force brute aidée par la
connaissance des caractéristiques statistiques du langage utilisé ne donnera aucune information.
Ce type d'impossibilité, appelé sécurité sémantique, ne repose pas sur la difficulté du calcul, comme c'est le
cas avec les autres systèmes de chiffrement en usage. Autrement dit, le système du masque jetable est
inconditionnellement sûr.
Il est véritablement très facile de construire un chiffrement incassable et cette technique est connue depuis des décennies.
On commence par choisir un masque constitué d’une chaine de bits aléatoires que sera la clé ; puis l’on convertit le texte
en clair en une autre chaine de bits. Généralement on utilise la représentation en ASCII (voir code Ascii). On termine en
effectuant un « ou exclusif » noté XOR sur ces deux chaines bits à bits. Le texte chiffré qui en résulte ne peut pas être
cassé car, dans un échantillon suffisamment grand du texte chiffré, chaque lettre apparait avec la même fréquence ainsi
que chaque digramme (deux lettres dont on se sert pour transcrire une seule) et ainsi de suite. Cette méthode est appelée
masque jetable ou One Time Pad. Elle est protégée contre toute attaque actuelle ou future quel que soit la puissance de
calcul qui soit mise en œuvre par l’intrus. Sa justification découle de la théorie de l’information : il n’y a tout
simplement aucune information dans le message car tous les textes en clair d’une longueur donné sont également
probables. La figure ci-dessous montre tout simplement comment l’on peut mettre en application cette méthode « I love
You ». Ce texte est d’abord converti en une chaine de bits en fonction du code Ascii à 7 bits ;
Les chiffres de substitution conservent l’ordre des symboles du texte en clair mais les déguisent à l’opposé. Les
chiffres de transposition modifient l’ordre des lettres mais ne les déguisent pas. La figure suivante montre un chiffre de
substitution courant avec « i » disposition en colonne. La clé consiste en un mot ou une phrase ne contenant aucune
lettre répétée. Dans cet exemple, la clé est « BRIQUES ». Son rôle est de numéroté les colonnes. La colonne 1 se
trouvant sur la lettre la plus proche du début de l’alphabet et ainsi de suite. Le texte en clair est écrit horizontalement et
complété au besoin pour remplir la matrice. Le texte chiffré est lu par colonne ; la colonne 1 se trouvant sous la lettre de
la clé la plus proche du début de l’alphabet et ainsi de suite. En d’autres termes, le texte chiffré est lu par colonne en
commençant par celle donc la lettre de la clé est la plus petite.
Exemple : transférez un milliard de francs à mon compte suisse numéroté zéro zéro sept
Clé : BRIQUES
B R I Q U E S
1 5 3 4 7 2 6
t r a n s f e
r e z u n m i
l l i a r d d
e f r a n c s
Clé
à m o n c o m
p t e s u i s
s e n u m é r
o t é z é r o
z e r o s e p
t
Ils consistent en un dictionnaire qui permet de remplacer certains mots par des mots différents. Ils sont très anciens et
ont été utilisés intensivement jusqu’au début du 20-ième siècle. Ils ont fait l’objet d’une critique sévère de A. Kerchkoffs
dans son article fondateur. On peut par exemple créer le dictionnaire suivant :
La phrase en clair :
Il faut donc disposer de dictionnaires qui prévoient toutes les possibilités. Donc, sauf si on se restreint à transmettre des
informations très limitées, la taille du dictionnaire s’accroit démesurément. Au 19e siècle on avait ainsi pour des usages
commerciaux ou militaires des dictionnaires de plusieurs milliers de mots de codes. Tout changement du code
nécessitait l’envoi de documents volumineux avec un risque d’interception non négligeable.
Ces codes manquent de souplesse ils ne permettent pas de coder des mots nouveaux sans un accord préalable entre
l’expéditeur et le destinataire. Pour cela il faut qu’ils échangent des documents ce qui accroît le risque d’interception du
code. Ils ne sont pas adaptés à des usages intensifs entre de nombreux correspondants. Ils ne sont pratiquement plus
utilisés pour les usages publics. En revanche ils peuvent rendre des services appréciables pour un usage unique.
CHAPITRE : III
La cryptographie moderne utilise les mêmes bases que la cryptographie traditionnelle (transposition et substitution)
mais de façon différente. Dans le passé, les cryptographes ont mis en œuvre des algorithmes simples. De nos jours, on
préfère à l’inverse. L’objectif étant de trouver des algorithmes suffisamment complexes pour que même si le
cryptanalyste parvient à acquérir les grandes quantités de texte chiffré de son choix, il soit incapable d’y trouver un sens
s’il n’en a pas de clé.
Les principales familles de cryptographies modernes sont :
La cryptographie par flot (registres à décalage) : M est traité bit par bit (Exemple d’algorithmes : RC4,
Bluetooth E0/1, GSM A5/1)
La cryptographie par blocs : M est traité par blocs de données (Exemple d’algorithmes : DES, AES, IDEA,
RC6, BLOWFISH…)
Les cryptographies symétriques (ou à clé secrète).
Les cryptographies asymétriques (ou à clé publique)
La cryptographie symétrique utilise des algorithmes à clé symétrique parce que c’est la même clé qui sert pour le
chiffrement et le déchiffrement.
Le concept fondamental en cryptographie symétrique est la clé. Il fonctionne suivant le principe de Kerchoffs :
l’algorithme doit pouvoir être divulgué. De plus, la clé prend suffisamment de valeur contre une attaque exhaustive.
Les algorithmes de chiffrement symétrique se fondent sur une clé unique pour chiffrer et déchiffrer un message.
Basée sur 2 approches :
Substitution
Permutation
Avantage :
Les algorithmes symétriques sont beaucoup plus rapides que les algorithmes asymétriques
Longueur réduite des clés (128 – 256 bits)
Inconvénients :
La distribution de la clé doit être confidentielle (Problème dans Internet !).
Si un grand nombre de personnes désirent communiquer ensemble, le nombre de clés augmente de façon
importante (une pour chaque couple de communicants).
Pour n partenaires, il faut (n*(n-1)) /2 clés
Service de non répudiation non assurée
Exemples :
DES (Data Encryption Standard), 3DES, AES (Advanced Encryption Standard), RC4 (RivestCipher 4), RC5,
Kerberos, Blowfish, IDEA (International Data EncryptionAlgorithm)
Devant l’explosion des besoins de cryptages pour des données non-classifiées (c’est à dire non militaires et non
diplomatiques) la National Bureau of Standards des Etats-Unis a lancé un appel d’offre avec un cahier des charges en
1973.Cet appel d’offre a donné naissance au crypto système DES (Data Encrytion Standard). Il a été publié en 1975 et
adopté par le NBS en 1977 comme standard de cryptage pour les applications non classifiées
a) Fonctionnement
C’est un système cryptographique produit, basé sur un schéma de Feistel. Il compose des opérations de cryptage,
autrement dit il effectue un produit d’opérations de cryptage. Il répète 16 fois un algorithme appelé la fonction d’étage
qui dépend d’un paramètre la clef d’étage. La répétition de cet algorithme mélange les bits du message en clair en
respectant les principes de C. Shannon : confusion et diffusion.
La confusion gomme les relations entre le texte clair et le texte chiffré pour éviter les attaques par analyse
statistique. Autrement dit un changement d’un seul bit dans le texte clair doit affecter un grand nombre de
bits (idéalement tous) du texte chiffré.
La diffusion disperse la redondance du texte clair dans le texte chiffré, par exemple deux lettres doublées ne
doivent pas rester côte à côte après cryptage
b) Schéma de Freistel
Un bon algorithme à clé secrète doit transformer le message clair en un message crypté qui ressemble autant que
possible à une suite aléatoire, pour limiter au minimum les risques d’une attaque par analyse statistique du texte chiffré,
de ses redondances, etc...
Le problème est que, si l’on sait depuis longtemps construire des fonctions qui ont l’air aléatoire, on ne savait pas avant
les travaux de Feistel construire des bijections aléatoires. La solution apportée par Feistel est très élégante : on suppose
par exemple qu’on a une fonction f presque aléatoire qui prend comme argument un mot de n bits, et renvoie un mot de
n bits (qui donne l’impression d’avoir été choisi au hasard). L’algorithme de chiffrement va procéder en chiffrant des
blocs de 2n bits, qu’on partage en 2, partie gauche G, partie droite D. L’image du bloc (G, D) par le schéma de Feistel
est le bloc (L, R), avec L = D, et R = G⊕f(D) où⊕ est l’opération XOR. Cette transformation est cette fois bijective,
car si on a un tel couple (L, R), on retrouve (G, D) par D = L et G = R⊕f(L).
En 1999 la clé a été cassée en moins d’une journée, 22 heures, grâce à un ordinateur dédié couplé avec un réseau de
plusieurs milliers d’ordinateurs. Afin de prolonger la durée de vie de DES en attendant AES on a introduit le triple
D.E.S.
2. Triple DES
Convaincu que la taille de la clé D.E.S était trop courte, IBM conçut un moyen de l’augmenter efficacement au moyen
d’un triple chiffrement. La méthode adoptée utilise deux clés et trois étapes. Dans le premier étage, le texte en clair est
codé à l’aide de D.E.S de la façon habituelle avec la clé K1. Dans le deuxième étage, D.E.S est exécuté en mode de
déchiffrement en utilisant la clé K2. Un chiffrement final est effectué au troisième étage avec la clé K1.
Le principe de l’AES est très proche du DES. C’est aussi un système cryptographique produit constituer d’une suite
d’opérations de permutation et de substitution. Contrairement à DES ce n’est pas un schéma de Feistel mais un réseau
de substitution-permutation. Il est issu d’un appel d’offre international lancé en janvier 1997 et ayant reçu 15
propositions. Parmi ces 15 algorithmes, 5 furent choisis pour une évaluation plus poussée en avril 1999 (Mars, RC6,
Rinjdael, Serpent,Twofish). Au cours de cette évaluation, ce fut finalement l’algorithme Rinjdael du nom de ses 2
concepteurs Joan Daemen et Vincent Rijmen. Ainsi le terme AES remplace ainsi celui de Rinjdaelpar abus de langage.
Précisément AES est un sous ensemble de Rinjdael parce qu’il ne travaille qu’avec les blocs de 128 bits alors que
Rinjdael offre des tailles de blocs et des clefs qui sont multiples de 32 bits (compris entre 128 et 256 bits).
N.B : De nos jours l’AES remplace le DES. Car le DES est devenu obsolète. Son utilisation est très pratique car il
consomme peu de mémoire. Sa complexité est moindre et il est plus facile à implémenter.
Dans la partie historique nous avons donné des exemples de chiffrement par blocs (code de Hill) et de
chiffrement par flots (code de César). Les systèmes de chiffrement par blocs agissent sur les données avec une
transformation fixe des grands blocs de données en clair ; les systèmes de chiffrement par flots (ou chiffrement par flux)
agissent avec une transformation variant avec le temps sur des données en clair individuelles.
Le chiffrement par blocs est le plus répandu et jouit d’une meilleure réputation que le chiffrement par flots plus facile à
analyser mathématiquement.
Le schéma général du chiffrement par blocs symétrique ou à clef secrète est le suivant :
1. Coder l’information source en binaire. On obtient ainsi une chaîne de caractères composée de 0 et de 1.
2. Découper cette chaîne en blocs de longueur donnée (par exemple 64 bits ou 128 bits ou 256 bits).
3. Chiffrer un bloc en faisant un OU exclusif (ou XOR) bit à bit avec une clé secrète, k, qui est une suite
de 0 et de 1 de même longueur, (un XOR est donc l’addition sans retenu en base deux).
4. Déplacer et permuter certains bits du bloc.
5. Recommencer un certain nombre de fois l’étape précédente, on appelle cela une ronde.
6. Passer au bloc suivant et retourner à l’étape 3 jusqu’à ce que tous les blocs soient chiffrés.
Le OU exclusif ou XOR entre deux blocs en binaire, m et n, est noté m⊕n, par exemple
m = 1001111010001111, n = 1011111000010111
m⊕n = 0010000010011000
Le schéma général de chiffrement par blocs asymétrique ou à clef publique est le suivant :
1. Coder l’information source en binaire. On obtient ainsi une chaîne de caractères composée de 0 et de 1.
2. Découper cette chaîne en blocs de longueur donnée (par exemple 1024 bits à 2048 bits pour RSA et El Gamal,
256 bits pour les codes elliptiques).
3. Chiffrer un bloc en utilisant la fonction de chiffrement (exponentiation modulaire pour RSA).
4. Passer au bloc suivant et retourner à l’étape 3 jusqu’à ce que tous les blocs soient chiffrés.
Le problème pratique qui se pose ensuite est le protocole d’envoi des blocs successivement obtenus. Il faut que ce
protocole ne diminue pas la sureté du crypto système.
Que ce soit pour DES ou des crypto systèmes symétriques plus récents comme IDEA ou AES ou pour des crypto
systèmes asymétriques comme RSA ou ElGamal les clés sont de longueur fixée. Les messages eux peuvent avoir une
longueur arbitraire. Pour adapter la taille du message à celle de la clef on décompose le message par blocs de taille fixe
correspondant aux tailles des clés que l’on chiffre ensuite un `a un et que l’on envoie successivement. Pour cela quatre
modes de chiffrement par blocs sont possibles : ECB, CBC, CFB et OFB
Le mode ECB, Electronic Code Book, est le mode le plus simple. Le message, M, est découpé en blocs, (mi)i≥1, et chaque
bloc est crypté séparément par ci = E(mi)où E = Ek dépend de la clé secrète k et ci est le bloc crypté correspondant.
Chiffrement : chaque bloc clair mi est chiffré indépendamment et donne un bloc chiffré Ci. Ci = Ek (Mi)
Déchiffrement : chaque bloc chiffré est déchiffré indépendamment pour donner le bloc clair correspondant.
Mi = Dk (Ci)
Conséquence de ce mode : deux blocs clairs identiques donnent toujours le même bloc chiffré pour une clé K
fixée. Il n’y a donc aucune sécurité ici et elle est très peu utilisée.
On transmet c1||c2||...||cn
II.2.2 Mode déchiffrement avec chainage de bloc ou Mode CBC (Cypher Block Chaining)
Le mode CBC, Cipher Block Chaining, a été introduit pour qu’un bloc ne soit pas codé de la même manière s’il
apparaît dans deux messages différents ou s’il apparaît deux fois dans un message. Le message, M, est découpé en blocs,
(mi)i≥1, et chaque bloc est crypté de la manière suivante. On commence par choisir un vecteur initial Co. Chaque bloc
clair mi est d’abord modifié en faisant un XOR de ce bloc avec le bloc crypté précédent, Ci−1 puis on crypte le résultat
obtenu par XORisation avec la clé.
Le mode CFB, Cipher Feed Back, a été introduit pour ne pas avoir à calculer la fonction inverse, Dk, de la fonction de
chiffrage Ek.
Le principe est le même que celui du mode CBC. Le message, M, est découpé en blocs, (mi)i≥1, et chaque bloc est crypté
de la manière suivante. On commence par choisir un bloc initial m0, choisi suivant les mêmes principes que le bloc C0 en
mode CBC. Chaque bloc clair mi est XORé avec le crypté du bloc de sortie précédent, ci−1, suivant le schéma
Ce mode de chiffrement de flot possède les mêmes avantages que le CFB. De plus, il est possible de précalculer en
chiffrant successivement le vecteur d’initialisation. Ce mode, est une variante de CFB qui permet d’avoir un cryptage et
un décryptage totalement symétrique :
On transmet le message C0||C1||...||Cn. Ce mode est utilisé par exemple pour les cryptages satellites et se déchiffre
par :
Ici on commence par chiffrer le IV auquel on a ajouté une constante. Ce texte chiffré est alors combiné avec le texte en
clair par un ou exclusif noté XOR. En incrémentant le vecteur d’initialisation d’une unité pour chaque nouveau bloc, il
est facile de déchiffrer un bloc quelconque quel que soit son emplacement dans le fichier et sans avoir besoin de
déchiffrer préalablement les blocs qui le précèdent
Encore appelé chiffrement de flux, il traite les données de longueur quelconque et n’a pas besoin de les
découper. On commence par chiffrer un vecteur d’initialisation au moyen d’une clé ce qui donne un bloc de sortie.
Celui-ci est à son tour chiffré au moyen de la clé pour obtenir en sortie un second bloc qui est également chiffré ce qui
donne un troisième bloc et ainsi de suite. La séquence de bloc de sortie est appelée keystream (flot avec clé ou flux de
clé). Elle est traitée comme s’il s’agissait d’un masque jetable et combiné par un ou exclusif (XOR) avec le texte clair
pour donner le texte chiffre.
N.B : certains modes opératoires permettent à des chiffrements par bloc de se comporter comme des chiffrements par
flux. Exemple : CFB (cipher feedback) et OFB (output feedback)
Boîte de IV
IV
chiffrement
Clé D
Clé E
Texte
+ Texte Chiffré Texte Chiffré +
Déchiffré
Comme le montre le schéma (a), on remarque que le vecteur d’initialisation n’est utilisé qu’à la première étape ensuite la
sortie est chiffrée. On remarque également que keystream est indépendant des données.
Le déchiffrement s’effectue en générant le même keystreamdu côté de la réception. Etant donné qu’il ne dépend que du
vecteur d’initialisation et de la clé, il n’est pas affecté par les erreurs de transmission.
N.B : il est essentiel de ne jamais utiliser 2 fois de suite le même couple d’initialisation clé pour ne pas générer à chaque
fois le même keystream.
Caractéristiques :
Avantage :
Inconvénients :
Propagation d’erreurs
Sécurité difficile à atteindre
CHAPITRE : IV
CRYPTOGRAPHIE ASYMETRIQUE A
CLE PUBLIQUE
INTRODUCTION
L’algorithme le plus célèbre des algorithmes à 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.
Les codes asymétriques les plus utilisés :
Quelques algorithmes conviennent pour tous les usages, d’autres sont spécifiques à un d’eux.
Dans les années 1970, la cryptographie n’est plus seulement l’apanage des militaires. Les banques, pour la sécurité de
leurs transactions, sont devenues de grandes consommatrices de messages codés. Les chiffrements disponibles alors sont
sûrs, eu égard aux possibilités d’attaques contemporaines. Le problème essentiel est alors la distribution des clés, ce
secret que l’envoyeur et le destinataire doivent partager pour pouvoir respectivement chiffrer et déchiffrer. Les armées et
les états ont recours aux valises diplomatiques pour ces échanges, mais ceci n’est pas accessible aux civils...
En 1976, Whitfield Die et Martin Hellman proposent une nouvelle façon de chiffrer, qui contourne cet écueil.
Commençons par expliquer leur procédé de façon imagée. Un ami doit vous faire parvenir un message très important
par la poste, mais vous n’avez pas confiance en votre facteur que vous soupçonnez d’ouvrir vos lettres. Comment être
sûr de recevoir ce message sans qu’il soit lu ? Vous commencez par envoyer à votre ami un cadenas sans sa clé, mais en
position ouverte. Celui-ci glisse alors le message dans une boîte qu’il ferme à l’aide du cadenas, puis il vous envoie cette
boîte. Le facteur ne peut pas ouvrir cette boîte, car la seule clé le permettant est en votre possession.
La cryptographie à clé publique repose exactement sur ce principe. Mais il s’agira de créer deux clés différentes :
une permettant de crypter (clé publique) et une deuxième, ne pouvant être déduire de la précédente permettant de
décrypter le message (clé privée).
On dispose d’une fonction f sur les entiers, qui possède un inverse g. On suppose qu’on peut fabriquer un tel
couple (f, g), mais que connaissant uniquement f, il est impossible (ou du moins très difficile) de retrouver g.
f est la clé publique, que vous pouvez révéler à quiconque. Si Alice veut vous envoyer un message M, elle le code à l’aide
de f et vous transmet M’, sans aucune précaution. g est la clé privée, elle reste en votre seule possession. Vous décodez le
message en calculant :
La connaissance de f par un tiers ne compromet pas la sécurité de l’envoi des messages codés, puisqu’elle ne
permet pas de retrouver g. Il est possible de donner librement f, qui mérite bien son nom de clé publique.
Le schéma général de chiffrement par blocs asymétrique ou à clef publique est le suivant :
1. Coder l’information source en binaire. On obtient ainsi une chaîne de caractères composée de 0 et de 1.
2. Découper cette chaîne en blocs de longueur donnée (par exemple 1024 bits à 2048 bits pour RSA et El Gamal,
256 bits pour les codes elliptiques).
3. Chiffrer un bloc en utilisant la fonction de chiffrement (exponentiation modulaire pour RSA).
4. Passer au bloc suivant et retourner à l’étape 3 jusqu’à ce que tous les blocs soient chiffrés.
Le problème pratique qui se pose ensuite est le protocole d’envoi des blocs successivement obtenus. Il faut que ce
protocole ne diminue pas la sureté du crypto système.
I. PRINCIPE DE FONCTIONNEMENT
Whitfield Die et Hellman n’ont pas eux-mêmes proposé de fonctions satisfaisantes, mais dès 1977, R. Rivest, A.
Shamir et L. Adleman trouvent une solution possible, la meilleure et la plus utilisée à ce jour, la cryptographie RSA.
Étant donné un nombre entier n= p.q produit de 2 grands nombres premiers, il est très difficile de retrouver les facteurs
p et q.
Alice doit envoyer un message à Bob, elle a donc besoin de la clé publique RSA de Bob. Voici les différentes étapes :
2) Il calcule n = p .q. Le nombre n, le modulo RSA, a environ 200 chiffres. Il est public alors que p et q sont gardés
secrets.
3) Il calcule Ф (n) = (p-1)(q-1) qui s’appelle la fonction d’Euler, et qui doit rester secret. Retrouver Ф (n) sans
connaître p et q est aussi difficile que de factoriser n.
4) Il choisit un nombre e en s’assurant que le PGCD (e, Ф (n)) =1. Il s’agira de l’exposant d’encryptage RSA.
5) Il calcule d, inverse de e modulo Ф (n) et garde secret le couple (n, d). Il s’agira de la clé privée RSA. Il la garde
secrète afin de pouvoir décoder par la suite le message transmis par Alice.
6) Il transmet (ou publie dans un annuaire) le couple (n, e). Ce couple s’appelle la clé publique RSA.
8) Elle calcule M ’=M e (mod n) et envoie ce message crypté M’. À l’aide d’un logiciel (comme Sage Math par
exemple).
9) Pour le décoder, il calcule M = (M’) d (mod n) à l’aide de sa clé privée d. Ceci lui permet de retrouver le message
e
d’origine, car : (M’)d= (M )d (mod n) =M e.d (mod n)= M (mod n).
Exemple :
Une personne Alice veut recevoir un message d'une autre personne Bob. Le crypto-système RSA comprend 3 étapes.
Alice choisit deux grands entiers naturels premiers p et q (100 chiffres chacun ou plus) et fait leur produit n = pq.
Puis elle choisit un entier e premier avec (p - 1) (q - 1). Enfin, elle publie dans un annuaire, par exemple sur le web, sa
clé publique RSA : (n; e).
Oscar connaît (eA, eB, n) et (cA, cB). Par l’algorithme d’Euclide étendu, il calcule facilement (en temps -presque- linéaire
du nombre de bits de n) les coefficients de Bezout r et s tels que reA + seB = 1. Oscar peut alors calculer (par
exponentiation rapide) crA .csB mod n = mr.eA+s.eB mod n = m
1.
2.
t2 = n + s2 > n donc t > √n, de plus s est petit dès que p et q sont proches.
Avec n = 3649574023, on démarre à t = 60412, on trouve s2 = 35721 = 1892, donc une seule itération suffit et
n = 60601×60223.
2. Complexité de l’algorithme : A varie dans le pire des cas de √n à = t. Le nombre d’itérations de la boucle est
majoré par (valeur d’arrivée - valeur de départ) :
Encryptage d’un message par blocs (digrammes). Supposons que la clé publique de Bob soit (1943,5).
Alice veut lui envoyer le message : OKPOURLUNDI en utilisant le code standard sur 26 lettres. Elle convertit ces
lettres en chiffres comme d’habitude :
Afin d’obtenir exactement 6 blocs de 2 lettres, elle ajoute deux zéros à la fin du chiffre. Elle obtient :
Elle enverra donc le message : CWI YL CQ CNP CT ZK Bob recevant ce message, il le décrypte à l’aide de sa clé
privée (n=1943, d=1109) :
EXERCICE D’APPLICATION : 2
Une PKI est un ensemble de technologies, organisations, procédure et pratiques qui supportent l'implémentation et
l'exploitation de certificats basés sur la cryptographie à clé publique.
L’une des problématiques dans la gestion des clés de chiffrement est la diffusion de ces clés, la garantie de la provenance
d’une clé (privée comme publique), la gestion de la durée de validité des clés, la mise en place d’un système de
normalisation pour l’échange des clés, et la reconnaissance des participants cryptographiques par une tierce partie.
Les fonctions d’une Infrastructure à Clé Publique à titre externe (réseau internet, inter entreprise, …) comme à titre
intra entreprise :
Etape 1
Bob souhaite chiffrer un message pour l’envoyer à Alice, ils vont faire appel à une PKI pour cette opération
1. Alice présente son identité auprès de l’Autorité de Certification (en fait cela devrait être l’Autorité
d’Enregistrement mais dans la pratique, ces rôles sont cumulés par l’AC)
2. L’Autorité de Certificat ou CA génère une paire de clé (avec un clé publique signée par la propre clé privée de
l’Autorité de Certification)
Etape 2
Bob souhaite chiffrer le document pour Alice. Il va contacter l’Annuaire (ou Alice) pour obtenir le certificat publié
d’Alice.
1 & 2 – Bob contacte l’Annuaire (ou Alice) pour obtenir le certificat idoine (qui contient la clé publique d’Alice signée
par l’Autorité de Certification, la CA).
3 – Bob doit pouvoir vérifier que le certificat obtenu est bien celui d’Alice.
Il va devoir vérifier la signature de la CA, donc devoir posséder la clé publique de la CA. C’est couramment chose
immédiatement possible : un certain nombre de CA externes (ou Autorités de Certification Principales) sont déjà
installées avec les OS et affichables facilement depuis son navigateur web. Ces certificats sont donc délivrés par des CA
connues et répandues donc nativement installées avec les outils classiques de communication Internet.
Bob va donc retrouver le certificat qui correspond à l’Autorité de Certification qui a signé la clé publique d’Alice et
valider cette clé publique.
4 – Bob chiffre le message avec la clé publique d’Alice contenu dans le certificat
Un avantage de ce système est la diffusion facilitée des clés publiques sans compromission et également la robustesse des
algorithmes basés sur des problèmes mathématiques complexes (factorisation, logarithme). De ce fait, un chiffrement à
clés asymétriques est considéré comme 1000 fois plus lent qu’un chiffrement à clé symétriques.
Un certificat est un élément d'information qui prouve l'identité du propriétaire d'une clé publique. X.509 est un
standard de cryptographie. Il définit le format des certificats numériques. Il repose sur un système hiérarchique
d’autorités de certifications.
Vous retrouvez toutes ces informations en clair lorsque vous affichez le contenu du certificat depuis votre navigateur. Il
existe par ailleurs un certain nombre de standards (ou spécifications) qui interviennent dans les systèmes d’échanges
cryptographiques à clé publique, les PKCS (Public Key Cryptography Standards) déposés par le laboratoire du RSA.
Lors d’une connexion à un site sécurisé, le navigateur vérifie le certificat présenté par le serveur :
V. OpenSSL
Standard X.509
PEM, DER, PKCS12, …
La distribution de clés publiques bien que simple et permettant la confidentialité et l’authentification, reste lente.
L’objectif restant de protéger le contenu d’un message, une solution plus rapide est d’utiliser un système hybride
permettant l’échange final d’une clé de session. Diffie-Hellman est une méthode pratique pour l’échange public d’une
clef secrète (ou de session). Contrairement à ce que beaucoup pensent, il ne peut pas être employé pour échanger
directement un message arbitraire. La méthode de Diffie-Hellman (DH) est basée sur l’élévation à une puissance dans
un champ fini, ce qui est facile à calculer. La sécurité se fonde sur la difficulté de calculer des logarithmes discrets,
problème difficile comme dans le cas d’El Gamal. La valeur de la clef dépend des participants (et de l’information sur
leurs clés privée et publique).
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).
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 p2. Une fois ces
deux valeurs rendues publiques, A et B génèrent chacun un nombre aléatoire :
CHAPITRE : V
FONCTION DE HACHAGE ET
SIGNATURES NUMERIQUES
I. 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. La cryptographie asymétrique assure certes la confidentialité des données, mais ne garantit
pas l’intégrité de ces dernières, qui constitue ici l’épicentre de la problématique que vient résoudre la fonction de
hachage. Il s’agit d’une fonction mathématique qui produit un résultat différent pour toute entrée de données.
hash = H (m)
m : Entrée de données de taille variable
hash : Code de hachage résultant
H : Fonction de hachage
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.
Utilisations courantes :
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). La fonction de hachage est une fonction prenant en entrée un message de longueur variable et générant une
empreinte de taille fixe. Cependant, l’empreinte : permet de s’assurer avec un certain niveau de vraisemblance qu’un
message n’a pas été altéré accidentellement (bits de parité, codes détecteurs d’erreurs).
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.
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.
Scénario d’attaque :
Paul envoie un message à Jean
Paul envoie le message + le résultat du hachage
Un attaquant modifie le message ET recalcule le hash
Jean vérifie la correspondance entre résumé et message et pense qu’il est n’a pas été altéré.
L’idée serait de combiner le chiffrement asymétrique avec les fonctions de hachage pour garantir une meilleure sécurité.
Solution possible :
Paul aurait pu chiffrer le résumé avec sa clé privée
Jean utilise la clé publique de Paul pour décrypter le hachage et vérifier la correspondance
L’attaquant ne peut pas changer le résumé
- Il ne possède pas la clé privée de Paul
- Même s’il peut connaître la clé publique de Paul
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).
La cryptographie asymétrique
Et du principe de hachage
Ainsi :
Principe :
Le crypto système RSA permet aussi facilement de réaliser l’authentification de l’expéditeur (en admettant que sa clef
privée n’est utilisée que par lui).
1. Alice commence par découper le message M en blocs M de taille bien choisie par rapport à na et nb. Elle crypte
chaque bloc du message avec sa clé secrète da, elle obtient à partir du texte en clair M un premier texte crypté,
M''
2. Avec la clé publique de Bob, elle crypte M'' et obtient un deuxième texte crypté, M'
3. Elle crypte alors le message M avec la clé publique de Bob en suivant le protocole précédent et obtient le texte
crypté du message fb(M)
Pour décoder et vérifier la signature qui authentifie l’expéditeur du message d’Alice, Bob effectue les opérations
suivantes :
Puis
(Si le choix de la taille des blocs M est bien choisi par rapport à na et nb, il n’y a pas d’ambiguïté au décodage)
3. Il compare les deux résultats obtenus. S’il constate que M = M, c’est à dire que les deux résultats sont les
mêmes, il est sûr alors que le message vient d’Alice car seule Alice connait.
C’est à dire sa clé secrète. De plus il est sûr que le message n’a pas été altéré.
Depuis toujours, le document papier est notre support privilégié dès lors qu’il nous est nécessaire de conserver le
témoignage d’un accord entre plusieurs parties. Traditionnellement, et à défaut de pouvoir en protéger l’intégrité, l’usage
de sceaux ou de signatures, permet de garantir l’authenticité de tels documents. Avec l’utilisation croissante des outils de
communication « immatériels », que sont le téléphone, le fax ou encore l’Internet, le problème de la protection de nos
échanges est devenu particulièrement critique. Les progrès conjugués des mathématiques et de l’informatique ont permis,
depuis les années 1970, de disposer progressivement d’un panel complet de solutions algorithmiques et de standards
adaptés à la certification de nos documents électroniques. Avec la criticité croissante de nos échanges et la disponibilité
de solutions techniques avérées, la mise en place progressive d’un cadre juridique adapté est venue compléter l’ensemble.
La signature électronique est un procédé technique dans lequel, une personne (signataire) apporte son accord à valeur
juridique sur un document électronique. Il y a donc réunion de 3 éléments : le document, le signataire et l’outil de
signature.
Si l’outil nécessaire à la signature manuscrite n’est ni plus ni moins qu’un stylo, les outils de signature électronique sont
multiples, autant que les moyens techniques nécessaires à leur réalisation. Il s’agit dans la majorité des cas, d’un certificat
numérique porté sur différents supports (carte à puce, clé USB, carte d’identité, PC, smartphone, etc.) qui a pour
fonction d’identifier le signataire d’une part, et de sceller le document pour en garantir l’intégrité d’autre part.
En résumé la signature électronique permet plusieurs choses, se montrant bien plus efficace que son pendant manuscrit :
Authentifier le signataire ;
Garantir l'intégrité du document ;
Assurer la non‐répudiation (l’émetteur du document ne peut nier l’avoir envoyé).
Véritable vecteur de performance et de croissance, la signature numérique est aujourd’hui au cœur de la transformation
numérique des processus métiers au sein des entreprises avec l’introduction tout récemment de la monnaie virtuelle : la
crypto monnaie qui fera l’objet d’une étude approfondit en master 1.