Cryptographie Paris 13
(version 2010/2011)
d’après un cours de Daniel Barsky & Ghislain Dartois
1 octobre 2010
Résumé
Le but de ce cours est une introduction à la cryptographie moderne utilisée
dans la transmission et le stockage sécurisé de données. L’accent mis sur les
principes et les outils mathématiques utilisés (arithmétique, algèbre, algo-
rithmique, complexité, probabilité, théorie de l’information,..), ainsi que sur
les protocoles.
Les problèmes informatiques, les produits et les normes sont décrits dans
des cours plus appliqués (réseaux, sécurité réseaux,...)
Table des Matières
1 Introduction et terminologie 7
1.1 Qu’est ce que la cryptographie . . . . . . . . . . . . . . . . . 8
1.2 Principes de Kerckhos . . . . . . . . . . . . . . . . . . . . . 10
1.3 Qualités d’un cryptosystème . . . . . . . . . . . . . . . . . . . 11
1.4 Attaques sur un chirement . . . . . . . . . . . . . . . . . . . 12
1.5 Diérentes notions de sécurité . . . . . . . . . . . . . . . . . . 14
2 Historique 15
2.1 Codes à répertoire . . . . . . . . . . . . . . . . . . . . . . . . 15
2.2 Codes de permutation ou de transposition . . . . . . . . . . . 16
2.2.1 Cryptanalyse des codes de permutation . . . . . . . . . . 18
2.3 Codes de substitution . . . . . . . . . . . . . . . . . . . . . . 19
2.3.1 Cryptanalyse des codes de substitution . . . . . . . . . . 20
2.3.2 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4 Le code de Vigénère . . . . . . . . . . . . . . . . . . . . . . . 21
2.4.1 Cryptanalyse des codes de Vigenère . . . . . . . . . . . . 22
2.4.2 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.5 Commentaires historiques . . . . . . . . . . . . . . . . . . . . 25
3 Quelques méthodes de codage 27
3.1 Modes de chirement . . . . . . . . . . . . . . . . . . . . . . . 28
3.1.1 Mode ECB . . . . . . . . . . . . . . . . . . . . . . . . 28
3.1.2 Mode CBC . . . . . . . . . . . . . . . . . . . . . . . . 29
3.1.3 Mode CFB . . . . . . . . . . . . . . . . . . . . . . . . 30
3.1.4 Mode OFB . . . . . . . . . . . . . . . . . . . . . . . . 31
3.1.5 Mode CTR . . . . . . . . . . . . . . . . . . . . . . . . 31
4 Les codes modernes 35
4.1 Objectifs des codes actuels . . . . . . . . . . . . . . . . . . . . 36
2
TABLE DES MATIÈRES 3
4.2 Les familles de codes modernes . . . . . . . . . . . . . . . . . 37
4.3 Codes symétriques . . . . . . . . . . . . . . . . . . . . . . . . 37
4.4 Codes asymétriques . . . . . . . . . . . . . . . . . . . . . . . 38
4.5 Les échanges de clefs . . . . . . . . . . . . . . . . . . . . . . . 39
4.5.1 Protocole d’échange de clefs . . . . . . . . . . . . . . . . 40
5 Applications de la cryptographie 42
5.1 Quel cryptosystème choisir . . . . . . . . . . . . . . . . . . . 43
5.2 Quelques utilisations de la cryptographie . . . . . . . . . . . . 44
5.3 Quelles mathématiques pour la cryptographie . . . . . . . . . 44
5.4 Lutte contre le brouillage . . . . . . . . . . . . . . . . . . . . 45
6 Codes à condentialité parfaite 47
7 Registres à décalage 49
7.0.1 Régistres à décalages . . . . . . . . . . . . . . . . . . . . 49
7.0.2 Cryptage avec un LFSR . . . . . . . . . . . . . . . . . . 53
7.1 Utilisation pratique des LFSR en cryptographie . . . . . . . . . . 54
7.1.1 Système A5/1 . . . . . . . . . . . . . . . . . . . . . . . 56
7.1.2 Système bluetooth/E0 . . . . . . . . . . . . . . . . . . 57
8 Codes à clefs secrètes 62
8.1 Réseaux de substitution-permutation . . . . . . . . . . . . . . 63
8.2 Cryptanalyse linéaire . . . . . . . . . . . . . . . . . . . . . . . . 66
8.3 Cryptanalyse diérentielle . . . . . . . . . . . . . . . . . . . . . 74
8.4 Description de DES . . . . . . . . . . . . . . . . . . . . . . . 80
8.4.1 Schéma de Feistel . . . . . . . . . . . . . . . . . . . . . 80
8.4.2 Quelques apects techniques de DES . . . . . . . . . . . . 81
8.5 Description d’AES . . . . . . . . . . . . . . . . . . . . . . . . 82
8.5.1 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . 84
8.5.2 Quelques apects techniques d’AES . . . . . . . . . . . . . 84
8.5.3 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . 90
8.5.4 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . 92
8.6 Infrastructure des systèmes à clef secrète . . . . . . . . . . . . 94
8.6.1 Exemple: protocole d’accès HTTP . . . . . . . . . . . . . 95
8.7 Attaques contre les codes symétriques . . . . . . . . . . . . . 95
8.7.1 Attaques par recherche exhaustive . . . . . . . . . . . . . 96
8.7.2 Attaques dictionnaires . . . . . . . . . . . . . . . . . . . 96
8.7.3 Attaques répertoires . . . . . . . . . . . . . . . . . . . . 97
4 TABLE DES MATIÈRES
9 Codes à clefs publiques 98
9.1 Principe des codes à clef publique . . . . . . . . . . . . . . . . 99
9.1.1 Fonctions à sens unique . . . . . . . . . . . . . . . . . . 99
9.2 Le cryptosystème Merkle-Hellman . . . . . . . . . . . . . . . 99
9.2.1 Le problème du sac-à-dos . . . . . . . . . . . . . . . . . 99
9.2.2 Description du cryptosystème Merkle-Hellman . . . . . . . 100
9.3 Le système RSA . . . . . . . . . . . . . . . . . . . . . . . . . 102
9.3.1 Description du cryptosystème RSA . . . . . . . . . . . . 102
9.3.2 Protocole d’envoi d’un message en RSA . . . . . . . . . . 103
9.3.3 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . 104
9.3.4 Protocole de signature RSA . . . . . . . . . . . . . . . . 104
9.3.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . 106
9.3.6 Exemple académique de codes RSA . . . . . . . . . . . . 107
9.3.7 Exemple de code RSA . . . . . . . . . . . . . . . . . . . 109
9.3.8 Sécurité du système RSA . . . . . . . . . . . . . . . . . 110
9.3.9 Attaques du système RSA . . . . . . . . . . . . . . . . . 111
9.4 Le cryptosystème El Gamal . . . . . . . . . . . . . . . . . . . 112
9.4.1 Description du cryptosystème El Gamal . . . . . . . . . . 113
9.4.2 Signature El Gamal . . . . . . . . . . . . . . . . . . . . 114
9.4.3 Sécurité du système EL Gamal . . . . . . . . . . . . . . . 116
9.4.4 Exemple académique de code El Gamal . . . . . . . . . . 116
9.5 Cryptosystème Elliptique Ménézès-Vanstone . . . . . . . . . . 118
9.6 Infrastructure des systèmes à clef publique . . . . . . . . . . . 119
9.6.1 Cryptographie basée sur l’identité . . . . . . . . . . . . . 122
9.6.2 Le protocole SSL . . . . . . . . . . . . . . . . . . . . . . 124
10 Fonctions de Hachage 127
10.1 Construction des fonctions de hachage . . . . . . . . . . . . . 128
10.1.1 Attaques des anniversaires . . . . . . . . . . . . . . . . . 129
10.1.2 Exemple académique de fonction de hachage . . . . . . . . 130
10.1.3 Fonction de hachage standard . . . . . . . . . . . . . . . 130
11 Protocoles cryptographiques 134
11.1 Protocoles de signature . . . . . . . . . . . . . . . . . . . . . 134
11.1.1 Protocole de signature à clef privée . . . . . . . . . . . . 134
11.1.2 Protocole de signature à clef publique . . . . . . . . . . . 136
11.2 Protocoles de datation . . . . . . . . . . . . . . . . . . . . . . 137
11.2.1 Protocole de datation . . . . . . . . . . . . . . . . . . . 137
11.3 Signature avec fonction de hachage . . . . . . . . . . . . . . . 138
11.4 Fonction de hachage et mot de passe . . . . . . . . . . . . . . 138
TABLE DES MATIÈRES 5
11.5 Preuve sans transfert de connaissance . . . . . . . . . . . . . 139
11.5.1 Preuve sans transfert de connaissances . . . . . . . . . . . 140
11.5.2 Transfert inconscient . . . . . . . . . . . . . . . . . . . . 142
12 La cryptographie et le droit 143
12.1 Textes juridiques sur la cryptographie . . . . . . . . . . . . . 143
12.1.1 LOI n◦ 96-659 du 26 juillet 1996 . . . . . . . . . . . . . 143
12.1.2 LOI n◦ 2004-575 du 21 juin 2004 . . . . . . . . . . . . . . 146
12.1.3 LOI n◦ 2006-961 du 1er août 2006 . . . . . . . . . . . . . 149
13 Rappels Mathématiques 151
13.1 Théorie de l’information . . . . . . . . . . . . . . . . . . . . . 151
13.1.1 Rappels de probabilités discrètes . . . . . . . . . . . . . . 151
13.1.2 Condentialité parfaite . . . . . . . . . . . . . . . . . . . 152
13.1.3 Entropie . . . . . . . . . . . . . . . . . . . . . . . . . . 154
13.2 Théorie de la complexité . . . . . . . . . . . . . . . . . . . . . 156
13.2.1 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . 158
13.2.2 Décidabilité . . . . . . . . . . . . . . . . . . . . . . . . 158
13.2.3 Complexité algorithmique . . . . . . . . . . . . . . . . . 159
13.2.4 Algorithmes polynomiaux . . . . . . . . . . . . . . . . . 160
13.3 Rappels d’arithmétique . . . . . . . . . . . . . . . . . . . . . 162
13.3.1 La division euclidienne . . . . . . . . . . . . . . . . . . . 162
13.3.2 Plus Grand Commun Diviseur . . . . . . . . . . . . . . . 166
13.3.3 Algorithme du PGCD . . . . . . . . . . . . . . . . . . . 167
13.3.4 Les Congruences . . . . . . . . . . . . . . . . . . . . . . 170
13.3.5 Exercices . . . . . . . . . . . . . . . . . . . . . . . . . 178
13.4 Tests de primalité . . . . . . . . . . . . . . . . . . . . . . . . 178
13.5 Méthode de factorisation . . . . . . . . . . . . . . . . . . . . . 181
13.6 Rappels d’algèbre . . . . . . . . . . . . . . . . . . . . . . . . . 183
13.6.1 Groupe, anneaux, corps . . . . . . . . . . . . . . . . . . 183
13.6.2 Anneau des polynômes . . . . . . . . . . . . . . . . . . . 187
13.7 Courbes elliptiques . . . . . . . . . . . . . . . . . . . . . . . . 197
13.7.1 Groupe des points d’une courbe elliptique . . . . . . . . . 197
13.7.2 Endomorphismes . . . . . . . . . . . . . . . . . . . . . . 201
13.7.3 Courbes Elliptiques sur un corps ni . . . . . . . . . . . . 202
13.7.4 Points de torsion sur une courbe elliptique . . . . . . . . . 204
13.7.5 L’accouplement de Weil . . . . . . . . . . . . . . . . . . 205
Bibliographie 207
6 TABLE DES MATIÈRES
Index 209
Chapitre 1
Introduction et terminologie.
L’objectif fondamental de la cryptographie est de permettre à deux person-
nes appelées traditionnellement, Alice et Bob de communiquer à travers
un canal peu sûr de telle sorte qu’un opposant passif Éve ne puisse pas
comprendre ce qui est échangé et que les données échangées ne puissent pas
être modiées ou manipulées par un opposant actif Martin.
Après un rapide historique de la cryptographie on examinera les princi-
paux systèmes cryptographiques modernes utilisés pour la transmission et
le stockage sécurisé de données.
On ne s’intéresse qu’aux systèmes cryptographiques destinés à transmettre
des ux importants et variés d’informations (paiement sécurisé par inter-
net, données bancaires, cartes de crédit, protection des conversations entre
téléphones mobile, WiFi,...) entre de nombreux interlocuteurs qui nécessi-
tent des systèmes cryptographiques structurés et rapides.
On ne décrira pas de systèmes cryptographiques reposant sur la dissimula-
tion de l’information secrète au sein d’un document, d’une image (stéga-
nographie,...). Par contre on s’intéressera à la stéganographie quand elle
est utilisée pout le marquage de document watermarking ou tatouage.
Le tatouage permet de protéger les possesseurs de copyright sur des docu-
ments numériques en cachant une signature dans l’information de sorte que
même une partie modiée du document conserve la signature et de découvrir
l’origine de fuites en marquant de façon cachée et unique chaque copie d’un
document condentiel.
Un système cryptographique ne se conçoit pas indépendamment des at-
taques dont il peut être l’objet. On indiquera donc pour chaque système
cryptographique quelques attaques et sa résistance à ces attaques.
L’accent sera mis sur les principes et les outils mathématiques utilisés (arith-
métique, algèbre, algorithmique, complexité, probabilité, théorie de l’infor-
7
8 CHAPITRE 1. INTRODUCTION ET TERMINOLOGIE
mation,..). Quelques protocoles seront décrits.
On évoquera rapidement les systèmes d’infrastructure pour les Systèmes à
Clef Publique (Public Key Infrastructures ou PKI) et les systèmes de Man-
agement des Clefs Secrètes (Symmetric Keys Management). On évoquera
aussi quelques grands types de menaces et d’attaques sur les systèmes cryp-
tographiques.
Les problèmes de mise en oeuvre informatique, les produits et les normes
sont décrits dans des cours plus appliqués (réseaux, sécurité réseaux,...).
On emploiera indiéremment les mots cryptographie, chirement et codage.
Les mots en gras gurent dans l’index à la n du volume avec un renvoi à
leur dénition.
Ce cours s’est beaucoup inspiré des cours de François Arnaux, [2], Jean-
Louis Pons, [21], et Guy Robin, [24], des livres de Douglas Stinson, [31],
Neal Koblitz, [18], John Daemen et Vincent Rijmen, [8], Serge Vaudenay,
[32], Lawrence Washington, [33], Benne de Weger, [34] et Gilles Zémor [37],
des deux tomes de l’ouvrage collectif édité par Touradj Ebrahimi, Franck
Leprévost, Bertrand Warusfel, [11], [12] et d’articles de WIKIPEDIA ainsi
que de l’ouvrage de Simon Singh, [29], pour la partie historique.
1.1 Qu’est ce que la cryptographie.
La cryptographie ou science du secret est un art très ancien, c’est
l’art de remplacer un secret encombrant par un secret miniature
Le secret encombrant est le contenu du message il est remplacé par un petit
secret qui est la clef de déchirement dont la taille est en général de quelques
centaines à quelques milliers de bits à comparer aux mégabits d’un message.
La cryptographie est l’art de rendre inintelligible, de crypter, de coder,
un message pour ceux qui ne sont pas habilités à en prendre connaissance.
Le chire, le code est le procédé, l’algorithme, la fonction, qui permet de
crypter un message.
La cryptanalyse est l’art pour une personne non habilitée, de décrypter,
de décoder, de déchirer, un message. C’est donc l’ensemble des procédés
d’attaque d’un système cryptographique.
La cryptologie est l’ensemble formé de la cryptographie et de la cryptanal-
yse.
1.1. QU’EST CE QUE LA CRYPTOGRAPHIE 9
La cryptologie fait partie d’un ensemble de théories et de techniques liées à la
transmission de l’information (théorie des ondes électro-magnétiques, théorie
du signal, théorie des codes correcteur d’erreurs, théorie de l’information,
théorie de la complexité,...).
Un expéditeur Alice veut envoyer un message à un destinataire Bob en
évitant les oreilles indiscrète d’Ève, et les attaques malveillantes de Martin.
Pour cela Alice se met d’accord avec Bob sur le cryptosystème qu’ils vont
utiliser. Ce choix n’a pas besoin d’être secret en vertu du principe de Ker-
ckhos, cf. section 1.2.
L’information qu’Alice souhaite transmettre à Bob est le texte clair . Le
processus de transformation d’un message, M , pour qu’il devienne incom-
préhensible à Ève est appelé le chirement ou la codage. On génère ainsi
un message chiré, C, obtenu grâce à une fonction de chirement ,
E, par C = E(M ).
Le processus de reconstruction du message clair à partir du message chiré
est appelé le déchirement ou décodage et utilise une fonction de
déchirement , D. On demande que pour tout message clair M
D(C) = D(E(M )) = M
Autrement dit on demande que tout message codé provienne d’un et d’un
seul message clair (D est une fonction surjective des messages codés vers les
messages clairs et E est une fonction injective des messages clairs sur les
messages codés).
Un algorithme cryptographique est l’ensemble des fonctions (mathémati-
ques ou non) utilisées pour le chirement et le déchirement. En pratique les
fonctions E et D sont paramétrées par des clés, Ke la clé de chirement
et Kd la clef de déchirement , qui peuvent prendre l’une des valeurs d’un
ensemble appelé espace des clefs. On a donc la relation suivante
EKe (M ) = C
DKd (C) = M
Le type de relation qui unit les clés Ke et Kd permet de dénir deux grandes
catégories de systèmes cryptographiques
• Les systèmes à clef secrètes ou symétriques: (DES, AES, IDEA,
Blowsh,...)
10 CHAPITRE 1. INTRODUCTION ET TERMINOLOGIE
• Les systèmes à clefs publiques ou asymétriques: (RSA, El-Gamal,
un cryptosystème elliptique,...)
En outre les fonctions de codage E et de décodage D peuvent fonctionner
de deux façons
• en continu: chaque nouveau bit est manipulé directement
• par bloc: chaque message est d’abord partitionné en blocs de longueur
xe. Les fonctions de chirement et déchirement agissent alors sur
chaque bloc.
Chacun de ces systèmes dépend d’un ou deux paramètres de taille as-
sez réduite (128 à 2048 bits) appelés la clef de chirement et la clé de
déchirement. Les clefs de chirement et de déchirement n’ont aucune
raison d’être identiques. Seule la clef de déchirement doit impérativement
être secrète.
1.2 Principes de Kerckhos.
En 1883 dans un article paru dans le Journal des sciences militaires, [17],
Auguste Kerckhos (1835-1903) posa les principes de la cryptographie mod-
erne. Ces principes et en particulier le second stipulent entre autre que la
sécurité d’un cryptosystème ne doit pas reposer sur le secret de l’algorithme
de codage mais qu’elle doit uniquement reposer sur la clef secrète du cryp-
tosystème qui est un paramètre facile à changer, de taille réduite (actuelle-
ment de 64 à 2048 bits suivant le type de code et la sécurité demandée) et
donc assez facile à transmettre secrètement.
Ce principe a été très exactement respecté pour le choix du dernier standard
de chirement, l’algorithme symétrique AES, par le NIST. Ce dernier a
été choisi à la suite d’un appel d’ore international et tous les détails de
conception sont publics. Ce principe n’est que la transposition des remarques
de bon sens suivantes:
• Un cryptosystème sera d’autant plus résistant et sûr qu’il aura été
conçu, choisi et implémenté avec la plus grande transparence et soumis
ainsi à l’analyse de l’ensemble de la communauté cryptographique.
• Si un algorithme est supposé être secret, il se trouvera toujours quel-
qu’un soit pour vendre l’algorithme, soit pour le percer à jour, soit pour
en découvrir une faiblesse ignorée de ses concepteurs. À ce moment là
c’est tout le cryptosystème qui est à changer et pas seulement la clé.
1.3. QUALITÉS D’UN CRYPTOSYSTÈME 11
Les systèmes conçus dans le secret révèlent souvent rapidement des défauts
de sécurité qui n’avaient pas été envisagés par les concepteurs.
1.3 Qualités d’un cryptosystème.
Les qualités demandées à un système cryptographique sont résumées par les
mots clefs suivants:
• Condentialité: seules les personnes habilitées ont accès au contenu
du message.
• Intégrité des données: le message ne peut pas être falsié sans
qu’on s’en aperçoive.
• Authentication:
– l’émetteur est sûr de l’identité du destinataire c’est à dire que
seul le destinataire pourra prendre connaissance du message car
il est le seul à disposer de la clef de déchirement.
– le receveur est sûr de l’identité de l’émetteur
• Non-répudiation qui se décompose en trois:
– non-répudiation d’origine l’émetteur ne peut nier avoir écrit
le message et il peut prouver qu’il ne l’a pas fait si c’est eective-
ment le cas.
– non-répudiation de réception le receveur ne peut nier avoir
reçu le message et il peut prouver qu’il ne l’a pas reçu si c’est
eectivement le cas.
– non-répudiation de transmission l’émetteur du message ne
peut nier avoir envoyé le message et il peut prouver qu’il ne l’a
pas fait si c’est eectivement le cas.
On peut regarder ces quatre qualités du point de vue de l’émetteur. Alice
veut être certaine
• qu’une personne non-autorisée (Ève) ne peut pas prendre connaissance
des messages qu’elle envoie, condentialité.
• que ses messages ne seront pas falsiés par un attaquant malveillant
(Martin), intégrité.
12 CHAPITRE 1. INTRODUCTION ET TERMINOLOGIE
• que le destinataire (Bob) a bien pris connaissance de ses messages et
ne pourra pas nier l’avoir reçu, non-répudiation.
de plus elle veut être certaine que son message ne sera pas brouillé par
les imperfections du canal de transmission (cette exigence ne relève pas du
cryptage mais de la correction d’erreur).
Bob veut être certain
• que personne d’autre que lui (et Alice bien sûr) n’a accès au contenu
du message, condentialité.
• que le message reçu vient bien d’Alice authentication, par exemple
qu’un attaquant malveillant (Oscar) ne puisse pas se faire passer pour
Alice, mascarade ou usurpation d’identité
• que le message n’a pas été falsié par un attaquant malveillant (Mar-
tin), intégrité des données
• que l’expéditeur (Alice) ne pourra pas nier avoir envoyé le message,
non-répudiation
1.4 Attaques sur un chirement.
La cryptanalyse est l’ensembles des procédés d’attaque d’un cryptosys-
tème. Elle est indispensable pour l’étude de la sécurité des procédés de
chirement utilisés en cryptographie. Son but ultime est de trouver un
algorithme de déchirement des messages. Le plus souvent on essaye de
reconstituer la clef secrète de déchirement.
On suppose, en vertu des principes de Kerckhos, pour toutes les évaluations
de sécurité d’un cryptosystème que l’attaquant connait le système cryp-
tographique utilisé, la seule partie secrète du cryptosystème est la clef.
Par exemple dans un cryptosystème basé sur des registres à décalage on
suppose que l’attaquant connait la forme des récurrences linéaires ainsi que
la fonction de combinaison mais pas les conditions intiales des récurrences
qui constituent la clef du code.
On doit distinguer entre les types d’attaques d’un adversaires et les buts
des attaques d’un adversaire.
Les principaux types d’attaques:
1.4. ATTAQUES SUR UN CHIFFREMENT 13
• attaque à texte chiré connu: l’opposant ne connait que le mes-
sage chiffré y.
• attaque à texte clair connu: l’opposant dispose d’un texte clair x
et du message chiré correspondant y
• attaque à texte clair choisi : l’opposant a accès à une machine
chirante. Il peut choisir un texte clair et obtenir le texte chiré
correspondant y, mais il ne connait pas la clef de chirement.
• attaque à texte chiré choisi : l’opposant a accès à une machine
déchiffrante. Il peut choisir un texte chiré, y et obtenir le texte clair
correspondant x, mais il ne connait pas la clef de déchirement.
En plus de ces attaques basées sur une étude de messages codés, il y a
aussi des attaques physiques. Le principe de ces attaques est d’essayer de
reconstituer la clef secrète par exemple en espionnant la transmission entre
le clavier de l’ordinateur et l’unité centrale ou en mesurant la consommation
électrique du microprocesseur qui eectue le décodage du message ou encore
en mesurant son échauement. Ensuite on essaye de remonter de ces données
physiques aux clefs de codage et décodage.
Une méthode pour résister à ce type d’attaque sont les protocoles de preuve
sans transfert de connaissance (zero-knowledge proof) dont on donne une
idée à la section 11.5.
Le but de l’attaque d’un adversaire peut être soit de découvrir la clef du
chirement et de pouvoir ainsi décrypter tous les messages de l’émetteur
ou plus modestement de décryter un message particulier sans nécessai-
rement disposer de la clef du code.
Garantir la condentialité des communications entre Alice et Bob suppose
donc qu’Ève ne peut pas
• trouver M à partir de E(M ) (le crypto-système doit être résistant aux
attaques sur le message codé)
• trouver la méthode de déchirement D à partir d’une famille de cou-
ples, {(Mi , E(Mi )}, (message clair, message codé correspondant).
• accéder à des données contenues dans le micro-processeur qui code et
décode et plus généralement ne puisse pas espionner les ordinateurs
d’Alice et de Bob
14 CHAPITRE 1. INTRODUCTION ET TERMINOLOGIE
1.5 Diérentes notions de sécurité d’un cryptosystème.
• La sécurité inconditionnelle qui ne préjuge pas de la puissance de
calcul du cryptanalyste qui peut être illimitée.
• La sécurité calculatoire qui repose sur l’impossibilité de faire en un
temps raisonnable, compte tenu de la puissance de calcul disponible,
les calculs nécessaires pour décrypter un message. Cette notion dépend
de l’état de la technique à un instant donné.
• La sécurité prouvée qui réduit la sécurité du cryptosystème à un
problème bien connu réputé dicile, par exemple on pourrait prouver
un théorème disant qu’un système cryptographique est sûr si un entier
donné n ne peut pas être factorisé.
• La condentialité parfaite qualité des codes pour lesquels un couple
(message clair, message chiré) ne donne aucune information sur la
clef.
Toutes ces notions de sûreté reposent sur la théorie de l’information de
Claude Shannon, cf. le chapitre 13.1.
Il a pu donner un sens précis basé sur les probabilités à la notion de sécurité
inconditionnelle si l’on précise le type d’attaques permises. Il a aussi donné
un sens précis à la notion de condentialité parfaite.
La notion de sécurité calculatoire repose sur la théorie de la complexité,
cf chapitre 13.2. Dans la pratique il faut préciser le type d’attaque. C’est
la sécurité calculatoire que l’on utilise dans la plupart des évaluations de
sécurité des systèmes cryptographiques. Elle repose sur la remarque suiv-
ante: même avec des ordinateurs faisant 109 opérations élémentaires par sec-
onde un calcul qui nécessite 2100 opérations élémentaires est hors de portée
actuellement car pour l’eectuer il faut environ 4 1013 années!
La sécurité prouvée consiste à ramener la sécurité d’un cryptosystème à
un problème que l’on sait ou que l’on espère être calculatoirement dicile
comme par exemple la factorisation des entiers en facteurs premiers. Ceci
permet de classier les diérents cryptosystèmes suivant leur sécurité et de
procéder à une veille technologique rationnelle.
Chapitre 2
Historique.
Il y a historiquement deux grandes familles de codes classiques avec des
hybrides
• Les codes à répertoire
• Les codes à clefs secrètes qui se subdivisent en deux familles
– les codes de transposition ou de permutation qui sont des codes
par blocs.
– les codes de substitution qui peuvent être des codes par blocs ou
par ots
On trouve des utilisations attestées par des documents historiques comme
par exemple
• Scytale à Sparte vers -450, (principe des codes de permutation).
• Code de Jules César vers -50, (principe des codes de substitution).
2.1 Codes à répertoire.
Ils consistent en un dictionnaire qui permet de remplacer certains mots par
des mots dié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. Kerchkos dans son article fondateur.
On peut par exemple créer le dictionnaire suivant:
rendez-vous ↔ 175 demain ↔ oiseaux
midi ↔ à vendre Villetaneuse ↔ au marché
15
16 CHAPITRE 2. HISTORIQUE
La phrase en clair:
RENDEZ VOUS DEMAIN MIDI VILLETANEUSE
devient avec ce code
175 OISEAUX À VENDRE AU MARCHÉ
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’inter-
ception 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. Par contre ils peuvent rendre des services appréciables pour
un usage unique.
2.2 Codes de permutation ou de transposition.
Dans les codes de permutation On partage le texte en blocs, on garde le
même alphabet mais on change la place des lettres à l’intérieur d’un bloc
(on les permute).
Un exemple historique dont le principe est encore utilisé est la méthode de
la grille (principe de la scytale utilisée par les spartiates vers -450 AJC).
On veut envoyer le message suivant:
RENDEZ VOUS DEMAIN MIDI VILLETANEUSE
L’expéditeur et le destinataire du message se mettent d’accord sur une grille
de largeur xée à l’avance (ici une grille de 6 cases de large).
L’expéditeur écrit le message dans la grille en remplaçant les espaces entre
les mots par le symbole . Il obtient:
2.2. CODES DE PERMUTATION OU DE TRANSPOSITION 17
R E N D E Z
V O U S
D E M A I N
M I D I
V I L L E T
A N E U S E
Il lit le texte en colonne et obtient ainsi le message crypté:
R
D
VAEVEMINNOMILEDUADLUESIIESZ
N
TEC
Pour pouvoir modier le code rapidement sans toucher à son principe et
pouvoir ainsi augmenter la sécurité les deux interlocuteurs peuvent décider
l’ajout d’une clef.
Le but est de pouvoir changer facilement le cryptage d’un message tout
en gardant le même algorithme de codage. Pour cela on rajoute une clé
secrète constituée par l’ordre de lecture des colonnes.
Exemple 2.2.1. On choisit la clé: CAPTER
On numérote les colonnes en fonction du rang des lettres du mot CAPTER
dans l’alphabet c’est à dire
2, 1, 4, 6, 3, 5
et on lit les colonnes dans l’ordre indiqué.
EVEMINR
D
DADUADLUZ
N
TENOMILEESIIES
On a 6! codes diérents.
Pour décoder le message précédent on range en colonne sur la grille en
suivant l’ordre des colonnes donné par le mot de code
E R E D
V V U
E D E A
=⇒ =⇒
M M D
I V I L
N A N U
18 CHAPITRE 2. HISTORIQUE
R E N D E Z
V O U S
D E M A I N
M I D I
V I L L E T
A N E U S E
On a aaire à un code à clef secrète ou code symétrique car la clef de
décodage est la même que la clef de codage ou s’en déduit facilement.
Pour éviter d’allonger démesurement la hauteur de la grille et pour éviter
d’avoir à coder la totalité du message avant de commencer la transmission,
on travaille sur des blocs de taille m = k × ℓ où k est la largeur de la grille
et ℓ sa hauteur. On a alors un système de codage par blocs, symétrique ou
à clef secrète.
Pour des raisons de sécurité il ne faut pas que ℓ et k soient trop petits. Il
faut aussi compléter les blocs incomplets d’une manière qui ne diminue par
la sécurité du code.
2.2.1 Cryptanalyse des codes de permutation.
Si l’on ne dispose que d’un texte chiré, on peut essayer d’attaquer ces codes
par force brute c’est à dire en essayant de manière exhaustive toutes les
permutations de colonnes possible. Rappelons qu’un calcul comportant plus
de 1080 opérations élémentaires est impraticable actuellement en un temps
raisonnable. Si la grille comporte n colonnes on aura n! permutations de
colonnes possibles.
n n √
D’après la formule de Stirling n! ∼ 2πn, donc dès que le nombre de
e
colonne dépasse 50 on a plus de 1085 permutations et on est assuré qu’une
attaque par force brute est impraticable. Mais ce n’est pas la seule attaque
possible.
Il y a par exemple des attaques à texte clair choisi. On prend un message
constitué d’un seul 1 et complété par des zéros et de regarde le résultat
en faisant varier la place du 1. On en tire rapidement des informations
non-triviales sur la permutation.
2.3. CODES DE SUBSTITUTION 19
2.3 Codes de substitution.
Dans les codes de substitution par ots ou par blocs l’ordre des lettres
est conservé mais on les remplace par des symboles d’un nouvel alphabet
suivant un algorithme précis.
Exemple 2.3.1. Code de César :
Pour coder on remplace chaque lettre par son rang dans l’alphabet.
A=1, B=2, C=3,....,M=13, N=14,...,S=20,...,X=24, Y=25, Z=26
D’après Suetone, dans son ouvrage “Vie des douze Césars”, Jules César
pendant la guerre des Gaules avait utilisé le code de substitution par ot
suivant
lettre codée=lettre claire+3 modulo 26
Le message en clair
RENDEZ VOUS DEMAIN MIDI VILLETANEUSE
devient
UHQGHC YRXV GHPDLQ PLGL YLOOHWDQHXVH
On peut considérer toute la famille des codes
lettre codée=lettre claire+n modulo 26
où n est un entier entre 0 et 25 appelé la clef du code.
Avec la clef n = 7 le texte codé du message précédent devient:
YLUKLG CVBZ KLTHPU TPKP CPSSLAHULBZLBZL
Le décodage se fait en utlisant la relation
lettre claire=lettre codée -n mod 26
On a aaire à un code en continu ou par ots symétrique ou à clef
secrète.
20 CHAPITRE 2. HISTORIQUE
2.3.1 Cryptanalyse des codes de substitution.
Un code substitution comme le code de César ne résiste pas à une attaque
à texte chiré connu. On considère un message codé avec une substitution
monoalphabétique:
JTVMNKKTVLDEVVTLWTWITKTXUTLWJERUTVTWTHDXATLIUNEWV.
JTVIEVWELOWENLVVNOEDJJTVLTPTXYTLWTWUT
SNLITTVQXTVXUJXWEJEWTONKKXLT.
Décodage par analyse de fréquence, cette méthode a été mise au point
au moyen âge par des lettrés arabes.
Analyse de fréquence
Lettre % français % texte Lettre % français % texte
A 9,4 1 N 7,2 5
B 1,0 0 O 5.1 2,5
C 2,6 0 P 2,9 1
D 3,4 2,5 Q 1,1 1
E 15,9 8 R 6,5 1
F 1 0 S 7,9 1
G 1 0 T 7,3 20
H 0,8 1 U 6,2 4,5
I 8,4 3,8 V 2,1 12
J 0,9 5,1 W 0 9,9
K 0 4,7 X 0,3 6
L 5,3 9 Y 0,2 1
M 3,2 1 Z 0,3 0
On peut donc faire l’hypothèse que T=E puis que V=S (à cause des lettres
doublées) puis que les voyelles A, I, O, U correspondent à D,E, N, X et
nalement on obtient la correspondance
A B C D E F G H I J K L M
D R O I T S H M E F G J K
N O P Q R S T U V W X Y Z
L N P Q U V W X Y Z A B C
Exercices. 1
2.3.1. Le message suivant a été codé avec un code de César, décodez-le.
YN PHEVBFVGR RFG HA IVYNVA QRSNHG
2.4. LE CODE DE VIGÉNÈRE 21
2.3.2. On choisit un alphabet à M ≥ 2 lettres, on associe à chaque lettre de
l’alphabet un entier entre 0 et M − 1. Un code ane sur cet alphabet est
un code dont la fonction de codage est
E :Z/M Z −→ Z/M Z
x −→ ax + b
avec a (mod M Z) et premier à M , b (mod M Z). On suppose qu’on utilise
l’alphabet latin avec 26 lettres. On considère le code ane avec M = 26,
a = 7, b = 5. Codez avec ce code le texte:
IL SEMBLERAIT BIEN QUE CE TEXTE AIT UNE SIGNIFICATION.
LE TOUR EST DONC JOUE
2.3.3. Le message suivant a été codé avec le code ane associé à l’alphabet
latin, M = 26:
NMDUGXP IDIIDHX AKVAVPD ZQX NKTAUAQDGTPX SZ
NMRCCKXLXQU SX ERHXQXKX IDPXX PZK GD KXAXURURVQ
SX GD NGX.
Décodez-le.
2.4 Le code de Vigénère.
La faiblesse des codes de César et des systèmes analogues est que la fré-
quence des lettres est conservée ce qui permet une cryptanalyse aisée par
analyse de fréquences.
Pour améliorer la sécurité on peut faire un code de César par blocs dans
lequel on change de substitution pour chaque lettre d’un bloc. On obtient
ainsi le code de Vigénère, mis au point par Leon Batista Alberti au 15-
ième siècle et développé par Blaise de Vigénère:
• On se xe une longueur de bloc m.
• On découpe le message en blocs de m-lettres.
• On chire par blocs de m lettres. On décide par exemple que la
première lettre d’un bloc de m est codée avec un code de César de
clef n1 , la deuxième avec un code de César de clef n2 et la m-ième par
un code de César de clef nm .
22 CHAPITRE 2. HISTORIQUE
Très sûrs pendant plusieurs siècles, ces codes ont été cryptanalysés ocielle-
ment par Charles Babbage et Friedrich Wilhelm Kasiski au 19-ième siècle.
Le code de César est un code monoalphabétique. Le code de Vigénère
est un code polyalphabétique ou par blocs.
Exemple 2.4.1. m = 5, n1 = 3, n2 = 14, n3 = 7, n4 = 22, n5 = 19, le
message en clair est:
M = Ce système de codage n’est pas sûr, mais plus que le code de César si
la clé est longue .
on partage en blocs de taille 5 en partant de la gauche
CESYS TEMED ECODA GENES TPASS URMAI SPLUS QUELE
CODED ECESA RSILA CLEES TLONG UEXXX
Les XXX ont été ajoutés pour compléter le dernier bloc. La manière de
compléter le dernier bloc peut être une faiblesse du code. Dans chaque
bloc on code la première lettre avec le code de César de clef n1 = 5,..., la
cinquième lettre du bloc avec le code de César de clef n5 = 19. Le message
codé devient:
e(M )= FSZUL WSTAW HQVZT JSUAL WDHOL XFTWB VDSQL
TILHX FCKAW HQLOT UGPHT FZLAL WZVJZ XSETQ
2.4.1 Cryptanalyse des codes de Vigenère.
La cryptanalyse du cryptosystème de Vigénère peut se faire à texte chiré
connu si le message est assez long, cf. le chapitre 1.4. On remarque que
des répétitions de lettres assez longues (en général on cherche des triplets
ou trigrammes) doivent correspondre dans le texte clair à des répétitions
de lettres aussi. Ceci permet de majorer la taille de la clé. On se ramène
alors à la cryptanalyse d’un chirement de César. Cette cryptanalyse a été
mise au point au 19e siècle.
Ici compte tenu de la faible longueur du texte on ne trouve que les doublets
ou digrammes AW et AL éloignés de 40 lettres et 45 lettres dont le PGCD
est 5 ce qui suggère une clef de longueur 5.
Une fois que l’on a déterminé la longueur de la clef, le décodage est le même
que celui de 5 codes de César.
2.4. LE CODE DE VIGÉNÈRE 23
Exercices. 1
2.4.1. Indice de coı̈ncidences Étant donné une suite x = x1 x2 . . . xn de
caractères xi d’un alphabet Z on dénit le nombre nc d’indices i tels que
xi = c et l’indice de coı̈ncidences, I qui est la probabilit pour que deux
caractres de la suite x soient identiques
I = Pr [xK = xL I < J]
K,J
où K et L des variables aléatoires indépendantes sur {1, . . . , n} équidistri-
buées.
nc (nc − 1)
1. Montrer que I = .
n(n − 1)
c∈Z
2. Montrer que l’indice de coincidence est invariant quand on substitue
l’alphabet Z ′ à l’alphabet Z.
3. Montrer que l’on peut utiliser l’indice de coı̈ncidences pour faire une
cryptanalyse du code de Vigenère si l’on connait une borne supérieure
de la taille des blocs.
2.4.2. On associe à chaque lettre de l’alphabet latin son ordre compris entre
0 et 25. Le message suivant a été codé avec un code de Vigénère associé à
l’alphabet latin:
CS AZZMEQM, CO XRWF, CS DZRM GFMJECV. X’IMOQJ JC LB
NLFMK CC LBM WCCZBM KFIMSZJSZ CS URQIUOU. CS ZLPIE
ECZ RMWWTV, SB KCCJ QMJ FCSOVJ GCI ZI ICCKS, MK QMLL
YL’CV ECCJ OKTFWTVM JIZ CO XFWBIWVV, IV ACCI CC
C’OCKFM, JINWWB U’OBKSVUFM.
Décodez-le.
2.4.3. Le chirement de Hill. Ce cryptosystème généralise celui de Vigé-
nère. Il a été publié par L. S. Hill en 1929.
• On choisit un alphabet de n lettres (on prendra dans nos exemples
n = 26) et une taille m pour les blocs, par exemple m = 2. Alors
P = E = (Z/26Z)2 , (en général (Z/nZ)2 ).
• La clef de codage est une matrice inversible K ∈ GLm (Z/nZ), si n = 26
et m = 2
a b
K= ∈ GL2 (Z/26Z)
c d
24 CHAPITRE 2. HISTORIQUE
2
Si (x1 , x2 ) ∈ Z/26Z est le message clair alors le message codé sera:
a b
(y1 , y2 ) = eK ((x1 , x2 )) = (x1 , x2 ) = (ax1 + cx2 , bx1 + dx2 )
c d
La clé de déchirage est la matrice inverse de K dans GLm (Z/nZ).
11 8 −1 7 18
Par exemple avec m = 2 et K = alors K = .
3 7 23 11
Comme pour le code de César on peut considérer des codes de Hill anes
constitués d’une matrice de GLm (Z/nZ) et d’un vecteur V de (Z/nZ)m .
L’algorithme de codage est donné par
M −→ KM + V
où M est un bloc de taille m du message clair identié à un vecteur de
(Z/nZ)m .
2.4.4. Montrer que le chirement de Hill ne résiste pas à une attaque à texte
clair choisi.
2.4.5. 1. En utilisant la correspondance
Alphabet −→ Z/26Z = {0, 1, . . . , 25}
Numériser le texte ci-dessous (du moins une partie)
Des chercheurs tentent de visualiser des raisonnements
mathématiques dans les émotions comme la honte ou la compassion.
2. Chirer le message précédent avec une méthode par décalage de clef
7.
3. Chirer le message avec une méthode par substitution en utilisant la
clef k : Z/26Z → Z/26Z dénie par
8λ + 1 si λ = 7 et 25
k(λ) = 0 si λ = 7
8 si λ = 25
Donner la fonction réciproque de k.
4. Chirer le message avec une méthode de Vigénère de clef k = (2; 19).
2.5. COMMENTAIRES HISTORIQUES 25
2.4.6. (Cryptanalyse par analyse de fréquence). On considère le message
chiré avec une méthode de substitution.
eohokrilppofoyvkesvsglomihisvsyoelkvije
ooyhiswzyqowgliyvsvowqoxicioppovqowohhohoeikroowmih
eikvsasvorlsyoqomlsweoqojlvqoeohosyqlwvhsoeeoeovi
lnqoxickihjzysgloowvisywsmiwwoqoqolnkoyvglivhoasyxvm
mfoyfseeowomvkoyvksygliyvoivhzswkoyvwzsniyvommltzlh
qrlsoveoqohysohhimmzhvqlxhzlmoqonmohvwsyvohxzlaohyofo
yviewlheoazelvszyqlkesvmhoazbisvoyqolnfseeolyglokov
ilnmzlhhisvivvosyqhoksygkoyvglihiyvoiyolpkoyvmmfqsksi
1. Donner le tableau des fréquence des lettres, et des fréquences des bi-
grammes les plus fréquents.
2. En déduire la clef de chirement et le message clair correspondant.
2.5 Commentaires historiques.
Les méthodes historiques pour authentier un message se retrouvent dans
les cryptosystèmes modernes
On utilisait des messagers qui devaient échanger des signes de reconnaissance
convenus (phrase de reconnaissance, lettres d’introduction, etc..) avec le
destinataire pour authentier le messager, l’expéditeur ou le destinataire,
an déviter les faux messages.
Pour éviter la falsication du message on le mettait dans une enveloppe
scellée revétue de cachets, le message lui-même était signé, l’écriture permet-
tait elle aussi l’authentication du message, etc...
Le destinataire pouvait parfois accuser réception en guise de protocole de
non répudiation.
La cryptanalyse a été pratiquée depuis la plus haute antiquité. Le code de
César a été cryptanalysé par les lettrés arabes du 9-ième siècle; Al Kindi a
décrit la méthode de l’analyse statistique.
Tous les rois avaient leurs cryptographes-cryptanalystes (les Rossignol pour
Louis XIV) et leur cabinet noir.
26 CHAPITRE 2. HISTORIQUE
Les rapports entre cryptographie et cryptanalyse sont analogues aux rap-
ports entre blindage et artillerie. Le code de César a tenu 9 siècle, celui de
Vigenère a tenu 4 siècles, le standard DES a tenu 20 ans. le standard RSA
est en passe d’être supplanté par les codes elliptiques.
Chapitre 3
Quelques méthodes de codage.
Dans la partie historique nous avons donné des exemples de chirement par
blocs (code de Hill) et de chirement par ots (code de César). Les systèmes
de chirement par blocs agissent sur les données avec une transformation
xe des grands blocs de données en clair; les systèmes de chirement par
ots (ou chirement par ux ) agissent avec une transformation variant
avec le temps sur des données en clair individuelles.
Le chirement par blocs est le plus répandu et jouit d’une meilleure réputa-
tion que le chirement par ots plus facile à analyser mathématiquement.
Le schéma général du chirement 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. chirer 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 chirés.
27
28 CHAPITRE 3. QUELQUES MÉTHODES DE CODAGE
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 chirement 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 ellip-
tiques).
3. chirer un bloc en utilisant la fonction de chirement (exponentiation
modulaire pour RSA).
4. passer au bloc suivant et retourner à l’étape 3 jusqu’à ce que tous les
blocs soient chiré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 cryptosystème.
3.1 Les modes de chirement.
Que ce soit pour DES ou des cryptosystèmes symétriques plus récents comme
IDEA ou AES ou pour des cryptosystèmes asymétriques comme RSA ou El-
Gamal les clés sont de longueur xé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 xe correspondant aux tailles des
clés que l’on chire ensuite un à un et que l’on envoie successivement. Pour
cela quatre modes de chirement par blocs sont possibles: ECB, CBC, CFB
et OFB.
3.1.1 Le mode ECB, Electronic Code Book.
Le mode ECB, Electronic Code Book , est le mode le plus simple. Le mes-
sage, M , est découpé en blocs , (mi )i≥1 , et chaque bloc est crypté séparément
par
ci = E(mi )
3.1. MODES DE CHIFFREMENT 29
où E = Ek dépend de la clé secrète k et ci est le bloc crypté correspondant.
On procède donc suivant le schéma suivant:
m1 m2 ... mn
↓ ↓ ↓ ↓
E E ... E
↓ ↓ ↓ ↓
c1 c2 ... cn
Figure 3.1: Diagramme du mode ECB
On transmet c1 ||c2 || . . . ||cn .
Sécurité du mode ECB
Un bloc de message mi sera toujours codé de la même manière, ce qui nuit à
la sécurité du codage. D’autre part un attaquant malveillant peut permuter
deux blocs ou remplacer un bloc par un autre sans que le destinataire s’en
aperçoive.
La procédure ECB n’est jamais utilisée en pratique.
3.1.2 Le mode CBC, Cipher 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
dié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 bloc initial c0 . Chaque
bloc clair mi est d’abord modié 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 clef
c1 = Ek (m1 ⊕ c0 )
c2 = Ek (m2 ⊕ c1 )
....
..
ci = Ek (mi ⊕ ci−1 )
....
..
30 CHAPITRE 3. QUELQUES MÉTHODES DE CODAGE
suivant le schéma donné à la gure 3.2 page 32.
On transmet le message c0 ||c1 || . . . ||cn .
Le bloc initial c0 peut être choisi de l’une des manières suivantes:
1. On génère c0 aléatoirement et on le transmet en clair avec le message
2. On génère c0 aléatoirement et on le transmet de manière condentielle
3. On utilise un c0 xe qui fait partie des constantes du cryptosystème
4. On utilise un c0 xe qui fait partie de la clé sécrète du cryptosystème
On recommande en général d’utiliser l’une des deux première solutions. Les
deux dernières font que si le premier bloc est identique dans deux messages
diérent il sera codé de la même manière ce qui nuit à la sécurité du code.
Le déchirement nécessite de connaı̂tre la fonction inverse de la fonction de
codage Dk = Ek−1 pour décrypter
mi = ci−1 ⊕ Dk (ci )
Sécurité du mode CBC
Ce système de transmission par blocs a une bonne sécurité et n’aaiblit pas
le crytosystème, mais il nécessite de connaı̂tre la fonction inverse Dk de Ek .
3.1.3 Le mode CFB, Cipher FeedBack.
Le mode CFB, Cipher FeedBack , a été introduit pour ne pas avoir à
calculer la fonction inverse, Dk , de la fonction de chirage 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 blocs 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:
c0 = Ek (m0 )
c1 = m1 ⊕ Ek (c0 )
c2 = m2 ⊕ Ek (c1 )
....
..
3.1. MODES DE CHIFFREMENT 31
ci = mi ⊕ Ek (ci−1 )
....
..
on fait donc un XOR du bloc d’indice i le crypté du bloc d’indice i − 1,
suivant le schéma donné à la gure 3.3 page 32.
On transmet le message c0 ||c1 || . . . ||cn .
Sécurité du mode CFB
Ce mode est moins sûr que le CBC et est utilisé par exemple pour les
cryptages réseaux. L’intérêt est que le déchirement ne nécessite pas de
calculer Dk , en eet:
mi = ci ⊕ Ek (ci−1 )
(se souvenir que l’on calcule modulo 2 sans retenue, bit à bit) d’où un gain
de temps.
3.1.4 Le mode OFB, Output FeedBack.
Le mode OFB, Output FeedBack , est une variante de CFB qui permet
d’avoir un cryptage et un décryptage totalement symétrique:
zi = Ek (zi−1 ); ci = mi ⊕ zi
en suivant le schéma donné à la gure 3.4 page 33
On transmet le message c0 ||c1 || . . . ||cn .
Ce mode est utilisé par exemple pour les cryptages satellites et se déchire
par
zi = Ek (zi−1 ); mi = ci ⊕ zi
Sécurité du mode OFB
Sa sureté est équivalente à celle du mode CFB.
3.1.5 Le mode CTR, Counter-mode encryption.
Le mode CTR, Counter-mode encryption . Ce mode de cryptage est
lui aussi totalement symétrique, mais en outre facilement parallélisable. Il
utilise pour le chirement un compteur de valeur initiale T
ci = mi ⊕ Ek (T + i)
32 CHAPITRE 3. QUELQUES MÉTHODES DE CODAGE
m1 m2 ...... mn
c0
Ek Ek Ek
c1 c2 cn
Figure 3.2: Diagramme du CBC
c0
m1 m2 mn
Ek Ek Ek ...
c1 c2 cn
Figure 3.3: Diagramme du mode CFB
3.1. MODES DE CHIFFREMENT 33
m1 m2 ...... mn
c0 Ek Ek Ek
c1 c2 cn
Figure 3.4: Diagramme du mode OFB
T +1 T +2 m2 ... T +n mn
m1
Ek Ek Ek
c1 c2 cn
Figure 3.5: Diagramme du mode CTR
34 CHAPITRE 3. QUELQUES MÉTHODES DE CODAGE
en suivant le schéma donné à la gure 3.5 page 33
Le déchirage est identique
mi = ci ⊕ Ek (T + i)
L’intérêt d’un tel mode est principalement que les diérents calculs de cryp-
tage et décryptage sont indépendants, comme pour le mode ECB, mais qu’un
même bloc n’est a priori jamais codé de la même façon.
Sécurité du mode CTR
Sa sureté est équivalente à celle du mode CFB.
Chapitre 4
Les codes modernes.
Tout d’abord nous donnons une description un peu formelle d’un cryptosys-
tème. Nous décrirons au chapitre 6, 7, 8, 9, des cryptosystèmes réels.
Dénition 4.0.1. Un cryptosystème est un dictionnaire entre les messages
en clair et les messages chirés.
An de travailler ecacement sur les codes et dénir de manière quantitative
leur sécurité on est amené à les modéliser et donc à dénir de manière
axiomatique un cryptosystème:
Dénition 4.0.2. Formellement un cryptosystème est un quintuplet
(P, C, K, E, D)
où
• P est un ensemble ni de blocs : les mots en clair
• C est un ensemble ni de blocs: les mots codés
• K est un ensemble : l’ espace des clefs
• Pour tout K ∈ K on a une règle de chirement eK ∈ E et une règle
de déchirement correspondante dK ∈ D. Chaque eK : P → C et
dK : C → P sont des fonctions telles que dK (eK (x))) = x pour tout
x∈P
Pour chaque K ∈ K (la clef du code) la transformation eK est appelée le
procédé de chiffrement, ou l’ algorithme de codage, entre les textes
en clair P et les textes codés C.
La fonction inverse dK de eK est appelée la fonction de décodage.
On exige que tout message codé puisse être décodé.
35
36 CHAPITRE 4. LES CODES MODERNES
Un code moderne est donc constitué
• D’un algorithme de chirement f = fKC , supposé connu de tous,
dépendant d’un paramètre KC , la clé de chirement. L’algorithme est
xé et public, seule la clé change, (on applique le principe de Kerck-
hos).
• De la valeur de la clé de chirement, KC qui est secrète ou non suivant
que l’on a aaire à un code à clef secrète ou à un code à clef publique.
• D’un algorithme de déchirement g = gKD = f −1 (supposé connu de
tous) dépendant d’une clé de déchirement, KD , diérente ou non de
KC .
• De la valeur de la clé de déchirement, KD , qui est toujours secrète.
4.1 Objectifs des codes actuels.
Rappelons les qualités attendues d’un cryptosystème, cf.chapitre 1.3. Tout
d’abord les qualités fonctionnelles:
1. Condentialité des données: Les messages ne peuvent être déchif-
frés que par le destinataire.
2. Intégrité des données: Ils ne peuvent être modiés par un tiers non
autorisé.
3. Authentication: L’identité des diérents participants peut être
vériée.
4. Non-répudiation: L’expéditeur ne peut nier avoir émis le message
et le destinaire ne peut nier l’avoir reçu.
Ensuite les qualités pratiques
1. Il doit résister aux attaques connues et si possible avoir une sécurité
prouvée.
2. Il doit permettre de coder et décoder rapidement (en temps réel pour
certaines applications).
Il n’existe pas de codes qui réunissent toutes ces qualités simultanément. Il
faut donc un compromis adapté à chaque situation.
4.2. LES FAMILLES DE CODES MODERNES 37
4.2 Les familles de codes modernes.
Les principales familles de codes modernes sont
• Les codes par ot (registres à décalage)
les codes symétriques (ou à clé secrète).
• les codes par blocs
les codes asymétriques (ou à clé publique)
Les codes à clef publique sont basés sur la notion de fonction à sens unique
dénie au chapitre 4.4.
4.3 Codes symétriques.
Les principes des codes symétriques commerciaux modernes du type DES
(Data Encrytion Standard), cf. chapitre 8, ont été mis au point dans les
années 1970 par IBM avec l’aide de la NSA (National Security Agency), ce
sont des hybrides de codes de substitutions et de codes de transpositions
basés sur un schéma de Feistel.
Ils restent très sûrs avec des clés assez courtes de 128 bits à 256 bits. Leur
sûreté est non prouvée. Leur cryptanalyse a fait des progrès (cryptanalyse
linéaire et diérentielle), ce qui permet de mieux cerner leur sûreté.
Les codes à clé secrète sont les plus employés actuellement car ils sont
éprouvés, résistants, rapides et assez facile à mettre en oeuvre. Actuellement
leur sécurité est garantie (mais non prouvée) avec des clés assez courtes de
128 à 256 bits pour le standard actuel AES.
Mais il faut échanger la clé secrète avec le destinataire d’où un risque. Ils
nécessitent un grand nombre de clés. Il faut
n(n − 1)
2
clés pour que n interlocuteurs puissent échanger des informations d’où un
problème de fabrication et d’échange de clefs ables.
Ils ont du mal à réaliser sans tiers de conance le partage des clefs, la
signature, l’authentication, et la non répudiation des messages transmis.
Ils s’adjoignent parfois un code asymétrique pour cela comme dans le cryp-
tosystème PGP .
La génération actuelle de codes symétriques est le cryptosystème AES, décrit
au chapitre 8, développé dans les années 2000 à la suite d’un appel d’ore
38 CHAPITRE 4. LES CODES MODERNES
international par John Daemon et Vincent Rijmen, [8]. Il utilise dans sa
conception nettement plus de mathématiques que son prédécesseur le DES,
ce qui permet une meilleure appréhension de sa sécurité.
4.4 Codes asymétriques.
Les principes des codes asymétriques ont été mis au point par Die et
Hellman en 1976. Ils ont dégagé la notion de fonction à sens unique.
Ce sont des fonctions qui sont faciles à calculer c’est à dire calculable en
temps polynomial en fonction de la taille des données mais tel que l’image
réciproque (les antécédents) d’un élément soit très dicile à calculer ex-
plicitement au moins calculatoirement, c’est à dire que le temps de calcul
soit prohibitif, voir la sous-section 13.2.3 et suivants. Autrement dit on de-
mande que la fonction inverse ne soit pas calculable en temps polynomial en
fonction de la taille des données.
Le premier exemple de fonction à sens unique du à Die, Hellmann et Merkle
était basée sur le problème du sac à dos, cf. section 9.2 page 99, dont il avait
été démontré qu’il appartenait à la classe des problèmes de type NP (NP
pour Non Polynomial), autrement dit il existe des instances (des réalisations)
de ce problème qui sont dans la classe N P (c’est un théorème). Attention
cela ne veut pas dire que toutes les instances de ce problème sont
de type N P .
Un problème de la classe NP est un problème dont la solution exige un
calcul en temps non polynomial en fonction de la taille des données, sous
réserve de la validité de la conjecture P= NP, cf. la sous-section 13.2.2.
On peut donc espérer qu’il permette de fabriquer un cryptosystème orant
une sécurité calculatoire élevée.
Malheureusement les instances connues du problème du sac à dos ne sont
pas de type NP. En particulier les réalisations pratiques de Die, Hellmann
et Merkle utilisaient des sacs à dos qui n’étaient pas dans la classe NP.
Leur cryptosystème a succombé à l’attaque des cryptanalystes (en particulier
Shamir).
Dans la solution suivante, 1978, le cryptosystème RSA (Rivest-Shamir
et Adleman) décrit au chapitre 9, la fonction à sens unique sous-jacente est
la multiplication des entiers qui appartient à la classe P (P pour Polynomial)
des problèmes polynomiaux en temps. Sa fonction réciproque la fac-
torisation des entiers est actuellement dans la classe NP des problèmes
non polynomiaux en temps, c’est un fait d’expérience pas un théorème.
4.5. LES ÉCHANGES DE CLEFS 39
D’autres solutions sont apparues peu après:
• le sytème El Gamal, cf. chapitre 9, qui repose sur l’exponention dans
Z/pZ avec p premier et sur l’application inverse qui est le logarithme
discret,
• les codes basés sur les courbes elliptiques. Ils reposent sur la
structure de groupe des points des courbes elliptiques sur un corps ni
cf. chapitre 9.
Les cryptosystèmes asymétriques reposent sur des structures mathématiques
élaborées. Leur sûreté est bonne mais non prouvée. Leur cryptanalyse
dépend beaucoup des progrès des mathématiques correspondantes.
Sauf pour les codes elliptiques, ils nécessitent des clés longues (1024 à 2048
bits) pour avoir une sûreté équivalentes à celle d’un cryptosystème à clef
secrète de 128 à 256 bits. Ils sont 1000 à 1500 fois plus lents. Mais ils
permettent de réaliser facilement les fonctionnalités suivantes
• partage des clefs,
• authentication
• intégrité
• non répudiation
et bien d’autres encore grâce au fait que la clef est en fait constituée de
deux clefs, la clef de codage et la clef de décodage, et que cette dernière est
attachée à une personne et la caractérise.
Ils ne nécessitent que n paires de clés (une clé secrète et une clé publique)
pour n interlocuteurs.
On les utilise souvent pour la transmission des clés secrètes des codes symé-
triques.
4.5 Les échanges de clefs.
Un problème important rencontré dans l’utilisation d’un cryptosystème est
l’échange des clefs entre des interlocuteurs. C’est un des moments où la
sécurité du cryptosystème est la plus vulnérable. Il faut trouver un protocole
sûr pour l’échange des clefs.
40 CHAPITRE 4. LES CODES MODERNES
Rappelons que dans un cryptosystème à clef secrète lorsque deux interlocu-
teurs veulent converser il leur faut échanger une clef. Il faut donc autant
de clefs qu’il y a
de paires non ordonnées d’interlocuteurs c’est à dire pour
n n(n − 1)
n interlocuteurs = . Le nombre de clefs à échanger entre n
2 2
interlocuteurs est donné par le tableau 4.1 page 40.
nombre d’interlocuteurs nombre de clés secrètes nombre de clés publiques
2 1 2
3 3 3
4 6 4
5 10 5
.. .. ..
. . .
10 45 10
.. .. ..
. . .
100 4950 100
.. .. ..
. . .
1000 499 500 1 000
.. .. ..
. . .
1 000 000 499 999 500 000 1 000 000
Figure 4.1: Nombre de clefs à échanger
Par contre dans un système à clef publique il faut autant de paires de clefs
qu’il y a d’interlocuteurs. Chaque interlocuteur dispose en eet d’une clef
publique qui gure dans un annuaire et que n’importe qui peut utiliser pour
crypter les messages qui lui sont adressés et d’une clef privée, strictement
personnelle, pour décrypter les messages qu’il reçoit.
4.5.1 Protocole d’échange de clefs.
Die, Hellmann et Merkle ont résolu vers 1974 le problème de partage d’une
clé secrète sans envoi physique de la clef.
Leur protocole utilise de l’arithmétique modulaire, cf. la sous-section 13.3.4.
Ils travaillent dans les entiers modulo un nombre premier p. Leur alo-
gorithme est le suivant:
1. Alice et Bob choisissent d’un commun accord sur une ligne non proté-
gée un grand nombre premier p. et α un générateur de (Z/pZ)∗
4.5. LES ÉCHANGES DE CLEFS 41
2. Alice choisit a et calcule αa = αa (mod p)
3. Bob choisit b et calcule αb = αb (mod p)
4. Alice et Bob échangent αa et αb sur un canal non nécessairement
protégé
5. Alice calcule αab (mod p) et Bob calcule αba (mod p)
On a
αab ≡ αab ≡ αba (mod p)
c’est la clef commune d’Alice et Bob.
Sureté du protocole d’échange de clefs.
Pourquoi ce protocole est-il sûr? Si Ève intercepte la communication entre
Alice et Bob, elle peut lire les nombres αa et αb .
Pour calculer la clef commune d’Alice et de Bob, il faut qu’Eve puisse cal-
culer αab à partir de αa et αb en connaissant α. La seule méthode connue
actuellement est de trouver a et b à partir de αa et αb , c’est à dire qu’elle
puisse calculer le logarithme discret dans Fp .
Pour l’instant il n’existe pas d’algorithme rapide, c’est à dire polynomial
en temps en fonction de la taille des données, pour calculer le logarithme
discret dans Fp . Les meilleurs algorithmes connus sont sous-exponentiels,
cf. la sous-section 13.4. Pour un premier p de l’ordre de 10500 il faut des
mois, voire des années, pour calculer un logarithme discret.
Par contre cet échange de clef peut-être soumis à d’autres types d’attaques.
Chapitre 5
Applications de la cryptographie.
Jusqu’au 20-ième siècle la cryptographie (légale) était essentiellement réser-
vée aux militaires et aux diplomates et accessoirement aux industriels et
banquiers.
Le développement des moyens de communications électromagnétiques facile
à intercepter, des stockages de données condentielles dans des sites assez
faciles à pénétrer et sur des supports (bandes ou disques, magnétiques op-
tiques) faciles à dupliquer ont généré une demande de cryptosystèmes sûrs,
faciles d’emploi et rapides pour des usages civils et commerciaux.
Les codes symétriques ou à clefs secrètes, type DES (Data Encryption Stan-
dard), IDEA (International Digital Encryption Algorithm), AES (Advanced
Encryption Standard) ont été créés pour couvrir ces besoins. L’application
première de la cryptographie reste encore la transmission sécurisée de don-
nées sensibles mais d’autres applications commencent à se développer.
Le commerce en ligne (e-commerce: paiement par carte bancaire...), les
transactions bancaires et boursière (e-banking:la consultation des données
bancaires, ordres de bourse, virements de compte à compte,...), l’adminis-
tration en ligne (e-administration: déclaration d’impôts, paiement de la
TVA pour les entreprise,...), la télévision payante (chaı̂ne payante, pay per
view,...), la protection des télécommunications (internet, WIFI, Bluetooth,
GSM, téléphonie mobile,...), l’identication automatique (avions, camions
suivi par GPS,...), le tatouage ou watermarking des données numériques
ainsi que la gestion des droits numériques (digital right management), etc.
ont entraı̂né une explosion de l’utilisation de la cryptographie mais aussi une
extension de son champ d’applications.
Cette extension a été facilitée par la mise au point des procédés de transferts
de clefs de Die et Hellman et des codes asymétriques ou à clefs publiques
42
5.1. QUEL CRYPTOSYSTÈME CHOISIR 43
de type RSA ou El Gamal.
Les codes à clef publique permettent de résoudre avec des protocoles légers
les questions de transfert de clefs, d’identication, d’authentication, de
signature entre correspondants.
Aujourd’hui les plus gros utilisateurs de cryptosystèmes sont les institu-
tions nancières (banques, bourses,...), les télécommunications (téléphonie
mobile, WIFI, Internet, télévision payante,...), les sites d’achats en ligne, ...
Il est probable que le tatouage ou watermarking des données numériques
ainsi que la gestion des droits numériques (digital right management
ou DRM ) vont entraı̂ner une demande accrue de cryptographie.
Le mariage de la cryptographie et de la théorie de la complexité aboutit à
des extensions spectaculaires du champ de la cryptographie classique. Ces
nouvelles applications sont développées au chapitre 11 page 134.
5.1 Quel cryptosystème choisir.
Chacun des cryptosystèmes existant codes par ots, codes par blocs à clé
secrète, codes à clés publiques ont leurs avantages et leurs inconvénients. Ils
ont chacuns des applications privilégiées et sont souvent utilisés en associa-
tion, cf. PGP.
Les codes par ots basés sur les registres à décalage sont utilisés dans les télé-
communications (télévision à péage, téléphones portables,...), à cause de leur
rapidité et leur facilité à être implémenté dans des circuits électroniques. Ils
permettent de faire du codage et du décodage à la volée en temps réel. Par
contre leur faible résistance aux attaques et l’augmentation de la puissance
de calcul font qu’ils seront probablement supplantés à terme par des systèmes
plus sûrs.
Les codes par blocs symétriques ou à clé secrète sont les plus employés car ils
réalisent un excellent compromis entre rapidité et sécurité. Ils ne nécessitent
que des clefs assez courtes pour un bon niveau de sécurité (128/256 bits). Par
contre ils nécessitent d’échanger de nombreuses clés secrètes ce qui constitue
un risque pour leur sécurité. On peut les associer à un cryptosystème à clef
publique pour échanger les clefs qui doivent être changées très régulièrement
pour garder une bonne sécurité et ausi pour réaliser les signatures et authen-
tications.
Les cryptosystèmes asymétriques ou à clefs publiques sont plus lents. Ils
nécessitent des clés longues (1024 à 2048 bits actuellement) sauf les codes
44 CHAPITRE 5. APPLICATIONS DE LA CRYPTOGRAPHIE
elliptiques (128 à 256 bits actuellement). Ils ne nécessitent pas d’échange
de clés secrètes et permettent de réaliser facilement des fonctionalités très
utiles (signature, authentication, non répudiation,...).
5.2 Quelques utilisations de la cryptographie.
La nécessité de pouvoir identier de manière sûre:
• le titulaire d’un compte en banque qui veut retirer de l’argent, ou qui
paye par carte bancaire,
• sur un champ de bataille ses propres troupes et celles de l’ennemi,...
a entraı̂né le développement des protocoles d’identication largement
basés sur les principes des codes asymétriques.
La recherche d’une sécurité accrue pour les sites sécurisés de paiement en
ligne prote du développement
• Des protocoles de preuves sans apport de connaissance.
• De la signature aveugle.
basés sur la théorie de la preuve sans apport de connaissance (zero-
knowledge proof ).
La nécessité de conserver l’anonymat dans certaines situations (secret médi-
cal par exemple, secret de la vie privée, etc..) peut être assuré grâce au
• Transfert inconscient .
Il y a encore bien d’autres applications.
5.3 Quelles mathématiques pour la cryptographie.
Actuellement tous les cryptosystèmes utilisent des mathématiques. Elles
sont utilisées aussi pour dénir et tester la sécurité des cryptosystèmes.
Parmi les disciplines mathématiques utilisées pour la cryptographie on a:
• Logique: théorie de la complexité.
• Probabilités pour la théorie de l’information.
• Analyse harmonique pour la théorie du signal
5.4. LUTTE CONTRE LE BROUILLAGE 45
• Combinatoire (théorie de graphes): construction de cryptosystèmes
asymétriques, preuves sans apport d’information, partage de secret à
seuil.
• Algèbre: théorie des corps nis, des polynômes sur un corps ni,...
pour les codes symétriques.
• Théorie des nombres (arithmétique modulaire, théorie algébrique des
nombres) : construction de cryptosystèmes asymétriques (RSA, El-
Gamal), générateurs de nombres aléatoires.
• Géométrie algébrique sur un corps ni: construction de cryptosys-
tèmes basés sur les courbes elliptiques sur un corps nis, cryptosys-
tèmes basés sur les codes correcteurs d’erreurs.
• Algorithmique (algèbre, théorie des nombres et géométrie eective):
mesure de la complexité algorithmique, réalisation pratique d’algo-
rithmes performants, évaluation de la sécurité des cryptosystèmes.
La réalisation pratique des cryptosystèmes repose sur une implanta-
tion informatique, leur degré de sécurité, leurs performances en
dépendent grandement.
5.4 Lutte contre le brouillage.
Le canal de transmission d’un message est souvent brouillé de manière na-
turelle (parasites dus aux activités humaines ou aux phénomènes naturels
dans les transmissions électromagnétiques, hertziennes ou laires).
Le stockage des données se dégrade naturellement avec le temps (action des
particules très énergiques, poussières, rayures sur les CD et DVD, etc.).
Pour lutter contre tous ces brouillages on dispose de la théorie des codes
correcteurs d’erreurs. Elle est basée
• sur la théorie des espaces vectoriels sur un corps ni.
• sur la théorie des polynômes sur un corps ni.
• plus généralement sur la géométrie algébrique sur un corps ni.
46 CHAPITRE 5. APPLICATIONS DE LA CRYPTOGRAPHIE
Exemples 5.4.1. Exemples de codes correcteurs d’erreurs
L’exemple le plus simple de code correcteur d’erreurs est la répétition du
message un certain nombre de fois en espérant que les parasites (supposés
aléatoires) n’aecteront pas toujours la même partie du message. Mais cette
méthode est lourde pour des messages longs et ralentit fortement la trans-
mission des données.
Autre exemple de code correcteur d’erreurs: on suppose que le message est
une suite de 0 et de 1 (des bits). On les groupe par paquets de 7 et on ajoute
dans chaque paquet de 7 bits un huitième bit (0 ou 1) de telle sorte que la
somme de ces 8 chires soit paire (code de Hamming). Ce code repère au
plus une erreur dans chaque groupe de 8 bits.
Chapitre 6
Codes à condentialité parfaite.
La théorie de l’information due à Claude Shannon, cf. chapitre 13.1, permet
de dénir un code à condentialité parfaite. Grossièrement il s’agit de
codes tels que la connaissance du texte crypté ne permette d’avoir aucune
information sur le texte en clair.
De tels codes existent, ce sont les codes de Vernam ou codes à masques
jetables, (1917). Ils reposent sur la fabrication de clefs au hasard aussi
longues que le texte à coder et qui ne servent qu’une fois.
La mise en oeuvre de ces codes est lourde et délicate. La fabrication de clefs
‘au hasard’ est un problème très dicile et mal résolu. Le stockage et la
transmission de ces clés posent un problème de sécurité.
Ils sont rarement utilisés.
Le principe de ces codes est le suivant. On tranforme le texte en une suite
de chires en base b (souvent b = 2). On fabrique ensuite une suite aléatoire
de chires de même longueur et l’on ajoute (on XORe) les deux suites ainsi
obtenues sans retenue, c’est à dire que l’on fait le calcul chire à chire
modulo b.
Exemple 6.0.2. On transforme les lettres de l’alphabet en nombres de 1 à
26 donc ici b = 26
lettre codée ≡lettre claire+lettre de la clé mod 26
On code le message chiens qui comporte 6 lettres avec la clef KZUTEG
(message=CHIENS) + (clef=KZUTEG) = NHDYSZ
On constate que si l’on avait envoyé le message cerise avec la clé KCNPZC
on aurait obtenu
47
48 CHAPITRE 6. CODES À CONFIDENTIALITÉ PARFAITE
(message=CERISE) + (clé=KCNPZC) =NHDYSZ
Il est donc impossible de remonter au texte clair si on change de clé aléatoi-
rement à chaque fois.
Cet exemple montre que la condentialité est parfaite. Ces codes sont très
sûrs. Mais leur mise en oeuvre est très délicate et ils sont très lents.
Chapitre 7
Registres à décalage.
On veut des codes par ots qui imitent les codes de Vernam mais qui soient
très rapides et très faciles à mettre en oeuvre an de pouvoir coder et décoder
à la volée en temps réel (Télévision, radio, DVD, cinéma, téléphones porta-
bles et mobiles,...).
Une famille de tels codes est basée sur les registres à décalage à rétroac-
tion linéaire, on abrégera souvent leur nom en registre à décalage, ou
suites récurrentes linéaires sur un corps ni ou encore dans la ter-
minologie anglo-saxone linear feedback shift register ) en abrégé LFSR.
On fabrique avec les registres à décalage des suites pseudo-aléatoires
pour générer la clef du code. Ces codes sont beaucoup moins sûrs que les
codes de Vernam mais ne nécessitent pas la fabrication et la transmission
d’une clef aléatoire de la longueur du message à transmettre. Ils sont aussi
très utilisés pour le codage par ots.
La méthode de codage est la XORisation du texte en clair par la suite
construite à l’aide du LFSR.
7.0.1 Régistres à décalage ou suites récurrentes linéaires sur un
corps ni.
On considère le corps ni à 2 éléments F2 ≃ Z/2Z, cf. chapitre 13.6.1
On xe un entier m, la longueur de la récurrence, et des éléments
k1 , . . . , km ∈ Z/2Z, les conditions initiales
c1 , . . . , cm ∈ Z/2Z les coecients de la récurrence
On construit une suite d’éléments (zi )i∈N de Z/2Z:
z1 = k1 , . . . , zm = km , zm+1 = cm z1 + + c1 zm
49
50 CHAPITRE 7. REGISTRES À DÉCALAGE
m−1
zm+i = cm zi + + c1 zm−1+i = cj+1 zm−1−j+i
j=0
On montre facilement que la suite ainsi construite est périodique (i.e. il
existe T ∈ N tel que zi+T = zi pour i assez grand); mais si on choisit bien
les cj la période est grande devant m.
Exemple 7.0.3. Exemple: m=4, (k1 , k2 , k3 , k4 ) = (1, 0, 0, 0) et
zi+4 = (zi + zi+1 ) mod 2
On vérie que la période est 15.
En eet les 15 premiers éléments de la suite sont
100010011010111
Ensuite on a z16 = 1, z17 = 0, z18 = 0, z19 = 0 et donc la suite se répètera
à l’identique.
Dénition 7.0.1. L’ensemble constitué par les conditions initiales et les co-
efficients de la récurrence est appelé un régistre à décalage à rétroaction
linéaire ou LFSR.
um+i−1
um+i−2
m
L’application de F2 dans lui même qui au vecteur ... associe le
ui+1
ui
um+i
um+i−1
vecteur ... est clairement F2 -linéaire.
ui+2
ui+1
Proposition 7.0.2. Soit (un )n∈N une suite récurrente linéaire de relation
de récurrence
m−1
zm+i = cm zi + + c1 zm−1+i = cj+1 zm−1−j+i
j=0
La matrice, T , associée à l’application linéaire
Fm m
2 −→ F2
51
ui ui+1
ui+1
ui+2
.. ..
. −→ .
um+i−2 um+i−1
um+i−1 um+i
est
0 1 0 ... 0
.. . .. . ..
.
T = .
.. ..
.
..
.
0 0 ... 0 1
cm cm−1 . . . c2 c1
Cette matrice est appelée la matrice de transition du LFSR
Démonstration: facile
À une suite récurrente linéaire donné par la relation de récurrence zm+i =
m−1
m−1 m
j=0 cj+1 zm−1−j+i on associe un polynôme, C(X) = X − cm−k X k ,
k=0
appelée le polynôme caractéristique de la récurrence. Les ck = 0 avec
1 ≤ k ≤ m sont appelé branchements pour une raison qui apparaı̂t sur le
schéma 7.1 page 52. On peut réaliser sous forme d’un circuit électronique
une suite récurrente linéaire de longueur m sur le corps F2 .
On dispose de m mémoires, (zi )0≤i≤m−1 , appelées bascules pouvant cha-
cune contenir un symbole binaire 0 ou 1. Ces cases sont contrôlées par une
horloge. À chaque pas d’horloge le contenu de la mémoire zi−1 est remplacée
par celle de la mémoire zi pour 1 ≤ i ≤ m − 1 le contenu de la mémoire z0
est envoyé à l’extérieur pour être utilisé et le contenu de la mémoire zm−1
est remplacé par la combinaison
zm = c1 zm−1 + c2 zm−2 + + ci zm−i + + cm−1 z1 + cm z0
conformément au schéma de la gure 7.1
Autrement dit dans le fonctionnement d’un LFSR, à chaque pas d’horloge
on sort le bit de plus petit poids; tous les bits sont décalés vers la droite et
le bit de plus grand poids est mis à jour par la formule de récurrence.
Il y a une deuxième manière de réaliser un LFSR qui correspond au schéma
7.2 page 52:
On considère les données suivantes:
52 CHAPITRE 7. REGISTRES À DÉCALAGE
zm−1 zm−2 ... z1 z0
c1 c2 cm−1 cm
⊕ ⊕ ⊕
Figure 7.1: Diagramme d’un LFSR (présentation de Fibonacci)
Q1 ⊕ Q2 ⊕ Q3 ⊕ Qm−1
cm−1 cm−2 cm−1
Figure 7.2: Diagramme d’un LFSR (présentation de Galois)
1. un entier m
(0) (0) (0)
2. m − 1 éléments de F2 Q1 ,..., Qi ,..., Qm , les conditions initiales
3. m nombres de F2 , a0 , a1 ,.., ai ,..., am−1 , am avec a0 = 0 et am = 0.
À partir de ces données initiales on construit pour 1 ≤ i ≤ m une suite
(k)
d’éléments de F2 , k → Qi , de la manière suivante:
(k) (k−1)
Qi = Qi−1 + ai−1 Q(k−1)
m pour i ≥ 2
(k)
Q1 = Q(k)
m
(k)
La suite k → Qm est un LFSR, appelé LFSR de Galois.
Exemple 7.0.4. C(X) = X 4 − X 3 − 1, zn+4 = zn+3 + zn . La suite de
condition initiale (0, 1, 1, 0) se complète en
(0, 1, 1, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 1)
et ensuite elle est périodique.
53
7.0.2 Cryptage avec un LFSR.
Pour crypter à l’aide d’un LFSR on commence par transformer le message,
M , en une suite binaire (par exemple à l’aide des codes ASCII des symboles),
c’est à dire en une suite, (mi )i∈N , d’éléments de F2 puis on XORise la suite
obtenue avec la suite récurrente linéaire fournie par le LFSR, (xi )i∈N pour
obtenir le message codé, (ci )i∈N sous forme d’une suite d’éléments de F2 :
m0 m1 m2 ... mi ...
⊕ ⊕ ⊕ ... ⊕ ...
x0 x1 x2 ... xi ...
c1 c2 c3 ... ci ...
Le décodage est symétrique c’est à dire que l’on XORise le message chiré
(supposé être une suite binaire) avec récurrente linéaire fournie par le LFSR.
L’exemple suivant on donne un exemple académique de cryptage et décryp-
tage à l’aide d’un LFSR
Exemple 7.0.5. (suite de l’exemple 7.0.3) On considère le LFSR sur F2 ,
déni par la relation de récurrence
un+4 = un+1 + un
et les conditions initiales (k0 , k1 , k2 , k3 ) ∈ F42 .
Montrer que pour tout choix de conditions initiales la période de la suite
récurrente linéaire (un )n∈N est majorée par 15.
On code par XORisation à l’aide du LFSR précédent avec les conditions
initiales (k0 , k1 , k2 , k3 ) = (1, 0, 0, 0). Chaque lettre de l’alphabet est codée
par le quintuplet (a0 , a1 , a2 , a3 , a4 ) tel que a0 + 2a1 + 4a2 + 8a3 + 16a4 soit le
rang de la lettre dans l’alphabet ordinaire compté entre 1 et 26, le quin-
tuplet (0, 0, 0, 0, 0) correspond à l’espace entre deux mots (exemples: A
la première lettre de l’alphabet est codée (1, 0, 0, 0, 0), M la treizième de
l’alphabet lettre est codée (1, 0, 1, 1, 0), T la vingtième lettre de l’alphabet
est codé (0, 0, 1, 0, 1).
Le début de la suite n → un est
u0 = 1, u1 = 0, u2 = 0, u3 = 0, u4 = u0 + u1 = 1, u5 = u1 + u2 = 0,
u6 = u2 + u3 = 0, u7 = u3 + u4 = 1, u8 = u4 + u5 = 1, u9 = u5 + u6 = 0, ...
Donc si on veut coder T A on le tranforme par le codage précédent en
(0, 0, 1, 0, 1, 1, 0, 0, 0, 0) on XORise cette suite ni avec la suite (u0 , . . . , u9 )
54 CHAPITRE 7. REGISTRES À DÉCALAGE
et il vient
0, 0, 1, 0, 1, 1, 0, 0, 0, 0
⊕1, 0, 0, 0, 1, 0, 0, 1, 1, 0
=1, 0, 1, 0, 0, 1, 0, 1, 1, 0
=EM
7.1 Utilisation pratique des LFSR en cryptographie.
Les LFSR sont facile à casser (algorithme de Massey-Berlekamp), d’où plu-
sieurs types d’améliorations consistant à utiliser plusieurs LFSR que l’on
combine par une fonction booléenne c’est à dire une fonction d’un en-
semble ni dans un ensemble ni. Cette fonction est appelée fonction de
combinaison ou fonction de ltrage. On lui demande de satisfaire cer-
tains critères cryptographiques.
Remarquons que le cardinal de l’ensemble, Bn , des fonctions boolénnes de
n
F2n dans F2 est 22 et qu’il croit donc extrèmement vite
n 4 5 6 7 8
Bn 216 232 264 2128 2256
Le choix de bonnes fonctions cryptographiques nécessite donc des études
mathématiques.
Les améliorations les plus utilisées sont:
• Non Linear Combining Generator en abrégé NLCG: combinai-
son booléenne en sortie de plusieurs LFSR.
• Non Linear Filter Generator en abrégé NLFG: ltrage des reg-
istres d’un même LFSR par une fonction booléenne.
• Clock Control Generator en abrégé CCG: contrôle d’horloge
Un NLCG utilise n LFSR dont les sorties sont les entrées d’une fonction
booléenne, f , à n variables: Fn2 −→ F2 , son diagramme est donné à la gure
7.9 page 61
Un NLFG de longueur m utilise un LFSR (de longueur m) dont les bits
sont les entrées d’une fonction booléenne, f , à m variables: Fm
2 −→ F2 , son
diagramme est donné à la gure 7.3 page 55
Nous allons donner trois exemples de fonctions booléennes.
7.1. UTILISATION PRATIQUE DES LFSR EN CRYPTOGRAPHIE 55
LFSR 1
LFSR 2
f
..
.
LFSR n
Figure 7.3: Diagramme d’un NLCG
zm−1 zm−2 ... z1 z0
c1 c2 cm−1 cm
⊕ ⊕ ⊕
Figure 7.4: Diagramme d’un NLFG
56 CHAPITRE 7. REGISTRES À DÉCALAGE
7.1.1 Le système A5/1.
Cet exemple est tiré de la documentation de la norme A5/1, les notations
sont donc un peu diérentes de celles qui précèdent. Le système A5/1 est
utilisé pour protéger les liaisons GSM. Il repose sur l’emploi de trois LFSR,
voir la gure 7.7, dont les polynômes associés sont:
• C1 (X) = X 19 + X 18 + X 17 + X 14 + 1
• C2 (X) = X 22 + X 21 + 1
• C1 (X) = X 23 + X 22 + X 21 + X 8 + 1 .
Remarquer que 19+22+23 = 64, c’est donc le nombre de conditions initiales
nécessaires pour pouvoir décrire complètement les trois LFSR.
La synchronisation de ces LFSR est xée par les bits de déclenchement, s1 ,
s2 , s3 situés en position 9, 11, 11 en partant de 0. Le registre est mis à jour
si son bit de déclenchement est en accord avec la majorité des trois bits de
déclenchement. La fonction de majorité s’écrit
Maj(s1 , s2 , s3 ) = (s1 ∧ s2 ) ⊕ (s1 ∧ s3 ) ⊕ (s2 ∧ s3 )
où les tables des opérations ∧ ou opération “et” (multiplication bit à bit
modulo 2 sans retenu) et ⊕ ou opération “ou exclusif ” (addition bit à
bit modulo 2 sans retenue) sont donnés par les gures 7.5 et 7.6:
s2 s2
s1 0 1 s1 0 1
0 0 0 0 0 1
1 0 1 1 1 0
Figure 7.5: table de ∧ Figure 7.6: table de ⊕
Donc au moins deux registres sont mis à jour à chaque unité de temps.
La mise à jour des registres est faite de la manière suivante: on calcule bi
par les formules suivantes
b1 = R1 [13] ⊕ R1 [16] ⊕ R1 [17] ⊕ R1 [18]
7.1. UTILISATION PRATIQUE DES LFSR EN CRYPTOGRAPHIE 57
b2 = R2 [20] ⊕ R2 [21]
b3 = R3 [7] ⊕ R1 [20] ⊕ R1 [21] ⊕ R1 [22]
Ensuite si le régistre i est mis à jour on supprime Ri [mi ] (m1 = 18, m2 = 21,
m3 = 22) on déplace le contenu de tous les régistres vers la gauche et on
insère bi dans le régistre Ri [0].
Le bit de sortie, b, est
b = R1 [18] ⊕ R2 [21] ⊕ R3 [22]
Il peut arriver que le registre i ne soit jamais actualisé.
R1 [18] R1 [16] R1 [0]
R1 [13] s1
R1 [17]
b1
⊕ ⊕ ⊕
R2 [21]
b ⊕ R2 [20]
s2 R2 [0]
b2
⊕
R3 [22] R [20]
3
s3 R3 [7]
R3 [21] R3 [0]
b3
⊕ ⊕ ⊕
Figure 7.7: Le cryptosystème A5/1
7.1.2 Le système bluetooth/E0.
Le système bluetooth/E0 est un système de sécurisation des communica-
tions radio entre une unité centrale et des périphériques (clavier, souris,
imprimante,...) reposant sur un système de chirage en continu (par ots),
E0.
Il utilise quatre LFSR donnés par les polyômes
58 CHAPITRE 7. REGISTRES À DÉCALAGE
• C1 (X) = X 25 + X 20 + X 12 + X 8 + 1
• C2 (X) = X 31 + X 24 + X 16 + X 12 + 1
• C3 (X) = X 33 + X 28 + X 24 + X 4 + 1
• C4 (X) = X 39 + X 36 + X 28 + X 4 + 1
dont les sorties sont notées x0 , x1 , x2 , x3 . Le ux de sortie du cryptosystème
est donné par la boucle suivante:
4
yt = xit ∈ {0, 1, 2, 3, 4}
i=1
zt = (⊕4i=1 xit )
⊕ c0t ∈ {0, 1}
y + z
t t
st+1 = (s1t+1 , s0t+1 ) = ∈ {0, 1, 2, 3}
2
ct+1 = (c1t+1 , c0t+1 ) = st+1 ⊕ T1 (ct ) ⊕ T2 (ct−1 ) ∈ {0, 1, 2, 3} Sortie : zt
avec T1 (x1 , x0 ) = (x1 ), T2 = (x0 , x0 + x1 ) et où (c1t+1 , c0t+1 ) désigne les deux
bits d’un nombre compris entre 0 et 3 écrit en base 2 (ici ⊕ désigne le “ou
exclusif” ou addition sans retenue modulo 2 bit à bit).
Remarque 7.1.1. Les xi appartiennent à {0, 1} considéré tantôt comme
des éléments de F2 ,tantôt comme des éléments de Z, même remarque pour
zt , alors que les yt , st et ct sont considérés comme des éléments de Z.
Exercices.
7.1.1. Montrer que le LFSR de Galois est eectivement un LFSR.
7.1.2. On considère le LFSR sur F2 , déni par la relation de récurrence
un+4 = un+1 + un
4
et les conditions initiales (k0 , k1 , k2 , k3 ) ∈ F2 .
1. Montrer que pour tout choix de conditions initiales la période de la
suite récurrente linéaire (un )n∈N est majorée par 15.
2. On code par XORisation à l’aide du LFSR précédent avec les condi-
tions initiales (k0 , k1 , k2 , k3 ) = (1, 0, 0, 0). Chaque lettre de l’alphabet
est codée par le quintuplet (a0 , a1 , a2 , a3 , a4 ) tel que a0 + 2a1 + 4a2 +
8a3 + 16a4 ) soit le rang de la lettre dans l’alphabet ordinaire compté
entre 1 et 26, le quintuplet (0, 0, 0, 0, 0) correspond à l’espace entre
deux mots (exemples: A la première lettre de l’alphabet est codée
(1, 0, 0, 0, 0), M la treizième de l’alphabet lettre est codée (1, 0, 1, 1, 0)).
7.1. UTILISATION PRATIQUE DES LFSR EN CRYPTOGRAPHIE 59
(a) Crypter avec ce LFSR le message suivants Les sanglots longs des
violons de l’automne bercent mon coeur d’une langueur monotone
(b) Décoder le message page 60.
7.1.3. Donner les suites récurrentes linéaires associées aux trois LFSR du
système A5/1.
7.1.4. Étude du système A5/1.
L’ensemble des LFSR R1 , R2 , R3 comprend 64 régistres. dont les remplis-
sage initial constitue la clef du cryptosystème A5/1.
1. Montrer qu’il existe des états initiaux de R1 tels que quels que soit les
états initiaux de R2 et R3 , R1 ne change pas au cours du temps.
2. Conrmer ou Inrmer la phrase suivante: Il existe des clefs diérentes
de A5/1 qui génèrent une suite constante de zéros (b = 0 toujours).
3. Donner une bonne inférieure du nombre de clefs de A5/1 qui génére
une suite constante de zéros.
60 CHAPITRE 7. REGISTRES À DÉCALAGE
1 1 0 0 0 1 0 0 1 0 1 1 0 0 1
1 0 1 0 1 1 0 0 1 0 1 1 1 0 0
1 0 0 0 1 0 0 0 1 0 0 0 0 1 1
0 0 1 1 1 1 0 1 1 0 0 0 1 0 1
1 1 1 1 1 0 0 1 1 0 0 0 0 0 1
0 0 0 1 1 0 0 0 1 0 0 0 1 0 1
Figure 7.8: décodage à l’aide d’un LFSR première partie
7.1. UTILISATION PRATIQUE DES LFSR EN CRYPTOGRAPHIE 61
1 0 0 0 1 0 1 0 1 1 0 0 1 0 1
1 0 1 1 1 0 0 0 0 0 0 0 0 1 1
1 0 1 0 0 1 0 1 1 0 1 1 0 0 1
0 0 1 0 1 1 0 0 1 1 0 1 1 1 0
0 0 1 0 1 0 0 1 1 0 1 0 1 1 1
Figure 7.9: décodage à l’aide d’un LFSR suite
Chapitre 8
Codes à clefs secrètes.
Devant l’explosion des besoins de cryptages pour des données non-classiées
(c’est à dire non militaires et non diplomatiques) le National Bureau
of Standards des Etats-Unis a lancé un appel d’ore avec un cahier des
charges en 1973.
Cet appel d’ore a donné naissance au cryptosystème DES (Data En-
crytion Standard ). Il a été publié en 1975 et adopté par le NBS en
1977 comme standard de cryptage pour les applications non classiées. Il
reprend les principes, schéma de Feistel, cf. sous-section 8.4.1, et une partie
du système de cryptage d’IBM denommé LUCIFER.
Il est à la base d’autres cryptosystèmes plus récents comme IDEA, FEAL,
CAST, RC5, BLOW-FISH.
Il est remplacé aujourd’hui par AES (Advanced Encrytion Standard )
de J. Daeme et V. Rijmen, basé sur un principe un peu diérent (Réseau de
substitution-permutation, cf. la section 8.1), avec une clé plus longue (128
à 256 bits), plus structuré et avec des fonctionnalités plus étendues. AES a
été retenu en 2000 après un appel d’ore international.
Nous allons tout d’abord décrire un modèle assez général de système cryp-
tographique à clef publique, les réseaux de substitution-permutation, qui
modélise assez bien et DES et AES ainsi que deux méthodes d’attaque con-
tre ce modèle, la cryptanalyse linéaire et la cryptanalyse diérentielle. Ces
deux attaques font partie des attaques classiques contre ce type de système
et elles ont démontré leur ecacité contre des systèmes proposés concurem-
ment à DES et AES.
62
8.1. RÉSEAUX DE SUBSTITUTION-PERMUTATION 63
8.1 Réseaux de substitution-permutation.
Nous allons décrire un schéma de chirement assez général les réseaux de
substitution-permutation qui couvrent des systèmes classiques de chire-
ment à clef secrète ainsi que deux méthodes d’attaques contre eux la crypt-
analyse linéaire et la cryptanalyse diérentielle.
Un réseau de substitution-permutation est un type particulier d’algorithme
de chirement itéré qui modélise bien les deux exemples de chirement itérés
que nous décrirons le DES et l’AES. C’est un algorithme de chirement itérés
par blocs. Il répète Ne fois un algorithme de chirement, g, appelé fonction
d’étage. On introduit une clef secrète K à partir de laquelle on construit
Ne + 1 sous-clefs, K 1 , K 2 ,..., K Ne +1 , appelées clefs d’étages. L’algorithme
qui permet de construire les K i à partir de K est appelé l’algorithme de
diversication des clefs
On se donne deux entiers ℓ et m. Un texte clair et un texte chiré seront
des vecteurs de Fℓm
2 donc des vecteurs de longuer ℓ.m constitués de 0 et de
1. On se donne aussi une permutation
πS : {0, 1}ℓ −→ {0, 1}ℓ
et une permutation
πP : {1, 2, . . . , ℓm} −→ {1, 2, . . . , ℓm}
Une chaı̂ne binaire x = (x1 , x2 , . . . , xℓm ) ∈ {0, 1}ℓm peut être considérée
comme la concaténation de m sous chaı̂nes de longueur ℓ
x = x(1) ||x(2) || . . . ||x(m)
et pour 1 ≤ i ≤ m on a
x(i) = (x(i−1)ℓ+1 , . . . , xiℓ ).
On notera we = (wie−1 )1≤i≤ℓm la chaine d’entrée à l’étage e qui est en fait
la chaı̂ne de sortie de l’étage e − 1. L’algorithme consiste dans les étapes
suivantes
1. XORiser we−1 avec la clef de l’étage e, K e ; on note le résultat
e (ue1 , ue2 , . . . , ueℓm )
u = avec ue(i) = (ue(i−1)ℓ+1 , . . . , ueiℓ )
ue(1) ||ue(2) || . . . ||ue(m)
64 CHAPITRE 8. CODES À CLEFS SECRÈTES
2. Appliquer la permutation πS à chacune des S-boı̂tes, ou chaı̂nes, ue(i) ,
on note le résultat
e (v1e , v2e , . . . , vℓm
e )
e e e
v = e e e
avec v(i) = (v(i−1)ℓ+1 , . . . , viℓ )
v(1) ||v(2) || . . . ||v(m)
3. Appliquer la permutation πP au indices de ve , On note we le résultat,
c’est à dire que
we = vπe P (1) , vπe P (2) , . . . , vπe P (ℓm)
4. À la sortie de l’étage Ne , XORiser v Ne avec K Ne +1 , c’est le message
codé y, donc y = vNe ⊕ K Ne +1 .
Exemple 8.1.1. . Cet exemple est tiré de [31] On suppose ℓ = m = Ne = 4.
On code l’héxadécimal sur des quadruplets de 0 où de 1 de la manière
suivante
0 → (0, 0, 0, 0), 1 → (0, 0, 0, 1), . . . , 9 → (1, 0, 0, 1),
A → (1, 0, 1, 0), F → (1, 1, 1, 1)
On dént πS de la manière suivante (l’entrée et la sortie sont en héxadécimal)
z 0 1 2 3 4 5 6 7 8 9 A b C D E F
πS (z) E 4 D 1 2 F B 8 3 A 6 C 5 9 0 7
À chaque étage 1 ≤ i ≤ 4 on 4 S-boı̂tes notée Sji avec 1 ≤ j ≤ 4 sur lesquelles
agit la permutation πS .
La permutation πP dénie de la manière suivante (l’entrée et la sortie sont
des nombres ordinaires)
z 1 2 3 4 5 6 7 8 9
πP (z) 1 5 9 13 2 6 10 14 3
z 10 11 12 13 14 15 16
πP (z) 7 11 15 4 8 12 16
agit donc sur le mot formé des sorties des 4 S-boı̂tes.
L’algorithme de diversication de la clef est le suivant. On part d’une clef
K = (k1 , . . . , k32 ) ∈ {0, 1}32 sur 32 bits et on dénit K e comme les 16 bits
consécutifs de K commençant par k4e−3 .
8.1. RÉSEAUX DE SUBSTITUTION-PERMUTATION 65
On suppose maintenant que la clef est
K = 0011 1010 1001 0100 1101 0110 0011 1111
Les sous-clefs sont alors
K1 = 0011 1010 1001 0100
K2 = 1010 1001 0100 1101
K3 = 1001 0100 1101 0110
K4 = 0100 1101 0110 0011
K5 = 1101 0110 0011 1111
Si on part du texte clair
x = 0010 0110 1011 0111
Le chirement s’eectue alors de la manière suivante : le texte en clair est
x = w0 = 0010 0110 1011 0111
w0 = 0010 0110 1011 0111
K1 = 0011 1010 1001 0100
u1 = 0001 1100 0010 0011
v1 = 0100 0101 1101 0001
w1 = 0010 1110 0000 0111
K2 = 1010 1001 0100 1101
u2 = 1000 0111 0100 1010
v2 = 0011 1000 0010 0110
w2 = 0100 0001 1011 1000
K3 = 1001 0100 1101 0110
u3 = 1101 0101 0110 1110
v3 = 1001 1111 1011 0000
w3 = 1110 0100 0110 1110
K4 = 0100 1101 0110 0011
u4 = 1010 1001 0000 1101
v4 = 0110 1010 1110 1001
K5 = 1101 0110 0011 1111
y= 1011 1100 1101 0110
y est le texte chiré. Tout ceci est résumé dans le diagramme 8.1 page 66
66 CHAPITRE 8. CODES À CLEFS SECRÈTES
X1 X2 texte clair y16
sous clef K1
étage 1
S1,1 S1,2 S1,3 S1,4
sous clef K2
S2,1 S2,2 S2,3 S2,4
étage 2
sous clef K3
S3,1 S3,2 S3,3 S3,4
étage 3
sous clef K4
étage 4
S341 S4,2 S4,3 S4,4
sous clef K5
y1 y2 texte crypté y16
Figure 8.1: Réseau de substitution permutation
8.2 Cryptanalyse linéaire.
La cryptanalyse linéaire peut être appliquée contre tout algorithme de chif-
frement itéré comme les réseaux de substitution-permutation (l’exposé ci-
8.2. CRYPTANALYSE LINÉAIRE 67
après est tiré de l’excellent tutorial de Howard M. Heys disponible sur inter-
net). Il s’agit d’un attaque à texte clair connu. On dispose donc d’un grand
nombre des paires de textes clairs et du texte correspondant chiré.
Nous montrerons seulement comment déterminer des parties de la clef du
dernier étage, la clef K 5 dans notre exemple, il faut ensuite tirer partie de
cette information.
On suppose qu’il existe une F2 -combinaison linéaire des bits d’entrée et de
sortie qui ait lieu avec une probabilité nettement supérieure ou nettement
1
inférieure à . Autrement dit qu’il existe i1 , i2 , . . . , iu et j1 , j2 , . . . , jv tels
2
que si x = (X1 , X2 , . . . XN sont les bits d’entrée (du message en clair) con-
sidérés comme des variables aléatoires dénies sur {0, 1} et Y1 , Y2 , . . . , Ym
sont les bits de la sortie (du message chiré) considérés comme des variables
aléatoires dénies sur {0, 1} on ait
1
Pr Xi1 ⊕ Xi2 ⊕ ⊕ Xin ⊕ Yj1 ⊕ Yj2 ⊕ ⊕ Yjm = 0 >>
2
Le principe est alors d’approximer une partie de l’algorithme de chirement
par cette combinaison linéaire sur F2 .
Le succès de cette méthode repose sur le lemme suivant qui nécessite des
hypothèses rarement vériée en pratique mais qui heuristiquement justie
la méthode.
Lemme 8.2.1 (Lemme d’empilement). Soit des variables aléatoires indé-
pendantes X1 , . . . , Xr dénies sur l’ensemble {0, 1} et on suppose que pour
1 ≤ i ≤ r il existe des nombres réels 0 ≤ pi ≤ 1 tels que
Pr Xi = 0 = pi
On dénit le biais ǫi de la variable aléatoire Xi par
1 1 1
ǫi = p i − , − ≤ ǫi ≤
2 2 2
alors le biais, ǫi1 ,i2 ,...,in de la variable aléatoire Xi1 ⊕ Xi2 ⊕ ⊕ Xin est
n
ǫi1 ,i2 ,...,in = 2n−1 ǫ ij
j=1
Démonstration: Voir [31].
68 CHAPITRE 8. CODES À CLEFS SECRÈTES
X1 X2 X3 X4 Y1 Y2 Y3 Y4
0 0 0 0 1 1 1 0
0 0 0 1 0 1 0 0
0 0 1 0 1 1 0 1
0 0 1 1 0 0 0 1
0 1 0 0 0 0 1 0
0 1 0 1 1 1 1 1
0 1 1 0 1 0 1 1
0 1 1 1 1 0 0 0
1 0 0 0 0 0 1 1
1 0 0 1 1 0 1 0
1 0 1 0 0 1 1 0
1 0 1 1 1 1 0 0
1 1 0 0 0 1 0 1
1 1 0 1 1 0 0 1
1 1 1 0 0 0 0 0
1 1 1 1 0 1 1 1
Figure 8.2: valeurs possibles des 8 variables aléatoires Xi , Yi
Exemple 8.2.1. On continue l’exemple 8.1.1 On considère la S-boı̂te de
l’exemple et on considère chacune des entrées xi ∈ {0, 1}, 1 ≤ i ≤ 4, de la S-
boı̂te comme une variable aléatoire que l’on note Xi et de même on considère
la sortie yj ∈ {0, 1}, 1 ≤ j ≤ 4, de la S-boı̂te comme une variable aléatoire
que l’on note Yj . Le tableau 8.2 page 68 enumère les valeurs possibles des
8 variables aléatoires X1 , X2 , X3 , X4 , Y1 , , Y2 , Y3 , Y4 :
Les entrées des quatres premières colonnes sont ligne par ligne simplement
les valeurs d’entrées rangées par ordre lexicographique. Les entrées des 4
dernières colonnes sont les valeurs correspondantes de πS .
On considère la variable aléatoire X1 ⊕ X4 ⊕ Y2 . La probabilité qu’elle
prenne la valeur 0 s’obtient par exemple en comptant le nombre de ligne du
tableau précédent pour les quelles
X1 ⊕ X4 ⊕ Y2 = 0
et en divisant par le nombre de lignes, soit 16 = 24 . On voit facilement que
1
(8.1) Pr X1 ⊕ X4 ⊕ Y2 = 0 = Pr X1 ⊕ X4 ⊕ Y2 = 1 =
2
Le biais de la variable aléatoire X1 ⊕ X4 ⊕ Y2 = 0 est donc 0.
8.2. CRYPTANALYSE LINÉAIRE 69
Par contre il est facile de voir que le biais de la variable aléatoire X3 ⊕ X4 ⊕
2
Y1 ⊕ Y2 vaut . Il n’est pas diciel de calculer les biais des 28 = 256
8
variables aléatoires de cette forme.
On utilise pour représenter tous ces biais la notion suivante. Chaque variable
aléatoire est écrite sous la forme
4
4
ai X i ⊕ bi Y i , ai , bi ∈ {0, 1}
i=1 i=1
Pour rendre la notation plus compacte on traite chacun des vecteurs binaires
(i.e. composés d’élements de F2 ) (a1 , a2 , a3 , a4 ) et (b1 , b2 , b3 , b4 ) comme des
nombres hexadécimaux (appelés somme d’entrée et somme de sortie).
De cette façon chacune des 256 variables aléatoires est nommé par une paire
unique de nombres hexadéimaux (a, b).
Par exemple la variable aléatoire X1 ⊕ X4 ⊕ Y2 a pour somme d’entrée
(1, 0, 0, 1) qui vaut 9 en hexadécimal et pour somme de sortie (0, 1, 0, 0) qui
vaut 4 en hexadécimal.
Pour une variable aléatoire possédant la somme d’entrée a = (a1 , a2 , a3 , a4 )
et b = (b1 , b2 , b3 , b4 ) pour somme de sortie on note NL (a, b) le nombre de
8-uplets binaires (x1 , x2 , x3 , x4 , y1 , y2 , y3 , y4 ) tels que
(y1 , y2 , y3 , y4 ) = πS (x1 , x2 , x3 , x4 )
et
4 4
ai x i ⊕ bi y i = 0
i=1 i=1
Le biais,ǫ(a, b), de la variable aléatoire ayant a et b comme somme d’entrée
et de sortie est donné par
NL (a, b) − 8
ǫ(a, b) =
16
La table qui contient toutes les valeurs de NL est appelée la table d’appro-
ximation linéaire. On donne à la page 70 la table d’approximation linéaire
8.3 pour le réseau de substitution-permutation étudié
Pour faire une cryptanalyse linéaire d’un réseau de substitution-permutation
il faut un ensemble d’approximations linéaires des S-boı̂tes qui pourront être
utilisé pour obtenir une approximation linéaire d’un réseau de substitution-
permutation moins le dernier étage. On montre comment marche le procédé
sur l’exemple 8.1.1.
70 CHAPITRE 8. CODES À CLEFS SECRÈTES
b 0 1 2 3 4 5 6 7 8 9 A B C D E F
a
0 16 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
1 8 8 6 6 8 8 6 14 10 10 8 8 10 10 8 8
2 8 8 6 6 8 8 6 6 8 8 10 10 8 8 2 10
3 8 8 8 8 8 8 8 8 10 2 6 6 10 10 6 6
4 8 10 8 6 6 4 6 8 8 6 8 10 10 4 10 8
5 8 6 6 8 6 8 12 10 6 8 4 10 8 6 6 8
6 8 10 6 12 10 8 8 10 8 6 10 12 6 8 8 6
7 8 6 8 10 10 4 10 8 6 8 10 8 12 10 8 10
8 8 8 8 8 8 8 8 8 6 10 10 6 10 6 6 2
9 8 8 6 6 8 8 6 6 4 8 6 10 8 12 6 10
A 8 12 6 10 4 8 10 6 10 10 8 8 10 10 8 8
B 8 12 8 4 12 8 12 8 8 8 8 8 8 8 8 8
C 8 6 12 6 6 8 10 8 10 8 10 12 8 10 8 6
D 8 10 10 8 6 12 8 10 4 6 10 8 10 8 8 10
E 8 10 10 8 6 4 8 10 6 8 8 6 4 10 8 8
F 8 6 4 6 6 8 10 8 8 6 12 6 6 8 10 8
Figure 8.3: table d’approximation linéaire
Exemple 8.2.2. Considérons le réseau de substitutions-permutations décrit
dans l’exemple 8.1.1 page 64. On veut en trouver une approximation linéaire
partielle de la forme
(8.2) x i1 ⊕ x i2 ⊕ ⊕ x iu ⊕ y j 1 ⊕ y j 2 ⊕ ⊕ y j v = 0
En fait on se contentera d’une appromation linéaire probabiliste, c’est à à
dire qu’on demande que les variables aléatoires correspondantes vérient
cette relations avec un biais impotant c’est à dire que l’on demande
1 1
(8.3) Pr Xi1 ⊕Xi2 ⊕ ⊕Xiu ⊕Yj1 ⊕Yj2 ⊕ ⊕Yjv = 0 >> ou <<
2 2
Par exemple dans la S-boı̂te de notre exemple la relation
X1 ⊕ X2 ⊕ Y1 ⊕ Y3 ⊕ Y4 = 0
1
a lieu avec un biais égal à , comme on le montre facilement en étudiant la
4
table d’approximation linéaire, ref. 8.3.
8.2. CRYPTANALYSE LINÉAIRE 71
À partir des approximations linéaires locales des S-boı̂tes on peut obtenir
une approximation linéaire globale du type de la relation 8.2. On utilise les
approximations linéaires suivantes des S-boı̂tes Si,j :
1
S1,2 :X1 ⊕ X3 ⊕ X4 = Y2 avec biais +
4
1
S2,2 :X2 = Y2 ⊕ Y4 avec biais −
4
1
S3,2 :X2 = Y2 ⊕ Y4 avec biais −
4
1
S3,4 :X2 = Y2 ⊕ Y4 avec biais −
4
On note Ui , respectivement Vi , les variables aléatoires correspondant aux
16 bits d’entrée de l’étage i, respectivement aux 16 bits de sorties de l’étage
i. La variable aléatoire correspondant au j-ème bit d’entrée de l’étage i,
respectivement au j-ème bit de sortie de l’étage i sera notée Ui,j , respec-
tivement Vi,j . Autrement dit Ui = (Ui,j )1≤j≤16 et Vi = (Vi,j )1≤j≤16 . On
note ausse X le texte clair et Y le texte crypté.
On ne cherche une approximation linéaire que pour les 3 premiers étages on
obtiendra ainsi quelques bits de la clef K5 .
On a U1 = X ⊕ K1 . On utilise l’approximation linéaire de S1,2 pour le
1
premier étage et il vient avec un biais de
4
V1,6 = U1,5 ⊕ U1,7 ⊕ U1,8
(8.4)
1
Pour l’approximation linéaire du 2-ième étage il vient avec un biais de −
4
V2,6 ⊕ V2,8 = U2,6
Comme U2,6 = V1,6 ⊕K2,6 on a alors une approximation linéaire de la forme
1
avec biais −
4
V2,6 ⊕ V2,8 = V1,6 ⊕ K2,6
En combinant avec 8.4 on obtient la relation
(8.5) V2,6 ⊕ V2,8 ⊕ X5 ⊕ X7 ⊕ X8 ⊕ K1,5 ⊕ K1,7 ⊕ K1,8 ⊕ K2,6 = 0
1
dont le biais est − .
8
72 CHAPITRE 8. CODES À CLEFS SECRÈTES
1
Au 3-ième étage on a l’approximation avec biais de −
4
V3,6 ⊕ V3,8 = U3,6
1
et aussi avec biais de −
4
V3,14 ⊕ V3,16 = U3,14
et comme U3,6 = V2,6 ⊕ K3,6 et U3,14 = V2,8 ⊕ K3,14 on a
(8.6) V3,6 ⊕ V3,8 ⊕ V3,14 ⊕ V3,16 ⊕ V2,6 ⊕ K3,6 ⊕ V2,8 ⊕ K3,14 = 0
1
avec biais + .
8
En combinant (8.5) et (8.6) il vient
V3,6 ⊕ V3,8 ⊕ V3,14 ⊕ V3,16 ⊕ X5 ⊕ X7 ⊕ X8 ⊕
⊕ K1,5 ⊕ K1,7 ⊕ K3,6 ⊕ K3,14 = 0
Remarquons que
U4,6 = V3,6 ⊕ K4,6
U4,8 = V3,14 ⊕ K4,8
U4,14 = V3,8 ⊕ K4,14
U4,16 = V3,16 ⊕ K4,16
il sut de regarder le diagramme 8.1 page 66.
1
Il vient alors avec biais −
32
U4,6 ⊕ U4,8 ⊕ U4,14 ⊕ U4,16 ⊕ X5 ⊕ X7 ⊕ X8 ⊕ ΣK = 0
avec
ΣK = K1,5 ⊕ K1,7 ⊕ K3,6 ⊕ K3,14 ⊕ K4,6 ⊕ K4,8 ⊕ K4,14 ⊕ K4,16
Donc ΣK est xé et vaut 0 ou 1 puisque que l’on suppose que l’on fait une
cryptanalyse avec des messages cryptés avec la même clef. Par conséquent
U4,6 ⊕ U4,8 ⊕ U4,14 ⊕ U4,16 ⊕ X5 ⊕ X7 ⊕ X8 = 0
15 15 17
avec probabilité ou 1 − = suivant que ΣK = 0 ou 1.
32 32 32
Donc nalement on a une approximation linéaire partielle des 3 premiers
1
étages avec un biais de ± . Tout ceci est résumé dans le diagramme 8.4
32
page 73.
8.2. CRYPTANALYSE LINÉAIRE 73
X5 X7 X8 texte clair
sous clef K1 K1,5 K1,7 K1,8
étage 1
S1,1 S1,2 S1,3 S1,4
sous clef K2 K2,6
S2,1 S2,2 S2,3 S2,4
étage 2
sous clef K3 K3,6 K3,14
S3,1 S3,2 S3,3 S3,4
étage 3
sous clef K4 K4,6 K4,8 K4,14 K4,16
étage 4
U4,6 U4,8 U4,14 U4,16
S341 S4,2 S4,3 S4,4
sous clef K5 K5,5 . . . K5,8 K5,13 . . . K5,16
y1 y2 texte crypté y16
Figure 8.4: Approximation linéaire
Nous montrons comment cette information peut-être utilisée pour calculer
quelques bits de la clef. On suppose que l’on a T paires de texte clair et de
74 CHAPITRE 8. CODES À CLEFS SECRÈTES
texte chiré. On va montrer comment cette attaque permet de récupérer 8
bits de la clef K5 , à savoir les bits
K5,5 , K5,6 , K5,7 , K5,8 , K5,13 , K5,14 , K5,15 , K5,16
Il y a 256 = 28 possibilités diérentes pour ces 8 bits.
On note T l’ensemble des T paires de texte clair et de texte chiré. Pour
chaque couple (x, y) ∈ T et pour chaque sous-clef K5 candidate il est pos-
sibleen XORisant y avec la clef K5 et en appliquant πP−1 et πS−1 de calculer
les quantités u4,6 , u4,8 , u4,14 , u4,16 et ensuite de calculer les valeurs
x5 ⊕ x7 ⊕ x8 ⊕ u4,6 ⊕ u4,8 ⊕ u4,14 ⊕ u4,16
prises par la variables aléatoire correspondante
T := U4,6 ⊕ U4,8 ⊕ U4,14 ⊕ U4,16 ⊕ X5 ⊕ X7 ⊕ X8
Pour chacune des 256 sous-clefs on a un compteur que l’on incrémente toute
les fois que la variable aléatoire T prend la valeur zéro pour un couple
(x, y) ∈ T . On s’attend, et c’est ce qui se produit en pratique, que pour la
plupart des sous-clefs la valeur du compteur soit à peu près T2 et que pour la
sous-clef correcte la valeur du compteur soit proche de T2 ± 32 T
. On identie
ainsi 8 bits de la sous-clef K5 .
Un calcul de complexité montre que si une approximation linéaire a un biais
de ǫ il faudra un nombre de paires de texte clair et de texte chirée de l’ordre
de cǫ−2 où la constante c est petite.
8.3 Cryptanalyse diérentielle.
La cryptanalyse diérentielle utilise la comparaison du XOR de deux entrées
avec le XOR des deux sorties correspondantes.
On considère x′ = (x′1 x′2 . . . x′n ) et x′′ = (x′′1 x′′2 . . . x′′n ) deux entrées et
y ′ = (y1′ y2′ . . . yn′ ) et y ′′ = (y1′′ y2′′ . . . yn′′ ) les sorties correspondantes. On
note
∆x = x′ ⊕ x′′ = (x′1 ⊕ x′′1 . . . x′n ⊕ x′′n )
∆y = y ′ ⊕ y ′′ = (y1′ ⊕ y1′′ . . . yn′ ⊕ yn′′ )
On traite les couples d’entrée et de sortie comme des variables aléatoires
que l’on note X, Y, ∆X, ∆Y. Si le système cryptographique était parfait la
8.3. CRYPTANALYSE DIFFÉRENTIELLE 75
1
probabilité pour qu’un ∆y provienne d’un ∆x devrait être de n où n est le
2
nombre de bits de X. La cryptanalyse diérentielle exploite le fait qu’il peut
arriver qu’un ∆y particulier arrive avec une très grande probabilité, pD >>
1
, d’un ∆x particulier. Le coupe (∆x, ∆y) est appelée une diérentielle.
2n
Il s’agit d’une attaque à texte clair choisi. On suppose que le cryptanalyste
dispose d’un grand nombre de quadruplets (x’,x”,y’,y”) où la valeur de ∆x
est xée et que tous les textes sont chirés avec la même clef inconnue K.
Pour chacun des quadruplets on commence par déchirer y′ et y ′′ en utilisant
toutes les sous clefs candidates pour le dernier étage.
On commence par regarder les caractéristiques diérentielles des S-boı̂tes.
On remarque que dans ce cas ∆y = πS (x′ ) ⊕ πS (x′′ ). On reprend l’exemple
8.1.1 et on examine les caractéristiques diérentielles de ses S-boı̂tes
Exemple 8.3.1. On considère la S-boı̂tes de l’exemple 8.1.1. On xe un
∆x = (1011). On peut réaliser ce ∆x à l’aide des couples (x′ , x′′ ) suivants
∆−1 (1011) = {(0000, 1011), (000, 1010), . . . , (1111, 0100)}
Pour chaque couple (x′ , x′′ ) de ∆−1 (1011) on calcule le ∆y = πS (x′ )⊕πS (x′′ )
correspondant, il vient :
x′ x′′ y ′ = πS (x′ ) y ′′ = πS (x′′ ) ∆y = y ′ ⊕ y ′′
0000 1011 1110 1100 0010
0001 1010 0100 0110 0010
0010 1001 1101 1010 0111
0011 1000 0001 0011 0010
0100 1111 0010 0111 0101
0101 1110 1111 0000 1111
0110 1101 1011 1001 0010
(8.7) 0111 1100 1000 0101 1101
1000 0011 0011 0001 0010
1001 0010 1010 1101 0111
1010 0001 0110 0100 0010
1011 0000 1100 1110 0010
1100 0111 0101 1000 1101
1101 0110 1001 1011 0010
1110 0101 0000 1111 1111
1111 0100 0111 0010 0101
La dernière colonne du tableau donne la distribution de ∆y
76 CHAPITRE 8. CODES À CLEFS SECRÈTES
0000 0001 0010 0011 0100 0101 0110 0111
0 0 8 0 0 2 0 2
1000 1001 1010 1011 1100 1101 1110 1111
0 0 0 0 0 2 0 2
Comme on le voit la distribution est très irrégulière. Comme on la fait
précédemment on peut dresser la table des ∆y en fonction des ∆x, c’est à
dire la table des
ND (∆x, ∆y) = Card (x′ , x′′ ) ∈ ∆(x) : πS (x′ ) ⊕ πS (x′′ ) = ∆(y)
ce qui est fait à la gure 8.5 page 76
∆y 0 1 2 3 4 5 6 7 8 9 A B C D E F
∆x
0 16 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8
1 0 0 0 2 0 0 0 2 0 2 4 0 4 2 0 0
2 0 0 0 2 0 6 2 2 0 2 0 0 0 0 2 0
3 0 0 2 0 2 0 0 0 0 4 2 0 2 0 0 4
4 0 0 0 2 0 0 6 0 0 2 0 4 2 0 0 0
5 0 4 0 0 0 2 2 0 0 0 4 0 2 0 0 2
6 0 0 0 4 0 4 0 0 0 0 0 0 2 2 2 2
7 0 0 2 2 2 0 2 0 0 2 2 0 0 0 0 4
8 0 0 0 0 0 0 2 2 0 0 0 4 0 4 2 2
9 0 2 0 0 2 0 0 4 2 0 2 2 2 0 0 0
A 2 2 2 0 0 0 0 0 6 0 0 2 0 0 4 0
B 0 0 8 0 0 2 0 2 0 0 0 0 0 2 0 2
C 0 2 0 0 2 2 2 0 0 0 0 2 0 6 0 0
D 0 4 0 0 0 0 0 4 2 0 2 0 2 0 2 0
E 0 0 2 4 2 0 0 0 6 0 0 0 0 0 2 0
F 0 2 0 0 6 0 0 0 0 4 0 2 0 0 2 0
Figure 8.5: table de distribution des diérences d’une S-boı̂te: valeurs de
ND (∆x, ∆y)
On constate que la somme des lignes vaut toujours 16.
8.3. CRYPTANALYSE DIFFÉRENTIELLE 77
On constate que la distribution des diérences d’une S-boı̂te n’est pas af-
fectée si on XORe l’entrée ou la sortie avec une clef K, en eet
x′ ⊕ x′′ = (x′ ⊕ K) ⊕ (x′′ ⊕ K), y ′ ⊕ y ′′ = (y ′ ⊕ K) ⊕ (y ′′ ⊕ K),
car K ⊕ K = 0 puisque nous sommes en caractéristique 2.
On dént le rapport de propagation, Rp (∆x, ∆y), pour un couple dié-
rentiel (∆x, ∆y) de la manière suivante:
ND (∆x, ∆y)
Rp (∆x, ∆y) = , m nombre de bits d’entrée
2m
en fait Rp (∆x, ∆y) est une probabibilité conditionnelle
Rp (∆x, ∆y) = Pr x′ ⊕ x′′ = ∆x y ′ ⊕ y ′′ = ∆ybig}
On utilise alors les S-boı̂tes
8
S1,2 :∆x = B −→ ∆y = 2 avec probabilité
16
6
S2,3 :∆x = 4 −→ ∆y = 6 avec probabilité
16
6
S3,2 :∆x = 2 −→ ∆y = 5 avec probabilité
16
6
S3,3 :∆x = 2 −→ ∆y = 5 avec probabilité
16
Toutes les autres S-boı̂tes auront des diérences d’entrée et de sortie égale
à zéro, voir la gure 8.6 page 78.
Comme le diérentiel d’entrée est ∆X = (000, 1011, 0000, 0000) le dié-
rentiel de sortie sera (avec les notations déjà utilisée pour la cryptanalyse
linéaire) d’après le tableau (8.7)
∆V1 = (0000, 0010, 0000, 0000)
Puis d’après les diérences demandées pour la S-boı̂te S2,3 on aura (car 4
en hexadécimal vaut 0100 en binaire)
∆U2 = (0000, 0000, 0100, 0000)
Maintenant on lit dans le tableau (8.7) que
∆V2 = (0000, 0000, 0110, 0000)
78 CHAPITRE 8. CODES À CLEFS SECRÈTES
∆X = (0000 1011 0000 0000) texte clair
sous clef K1 K1,5 K1,7 K1,8
étage 1
S1,1 S1,2 S1,3 S1,4
sous clef K2 K2,6
S2,1 S2,2 S2,3 S2,4
étage 2
sous clef K3 K3,6 K3,14
S3,1 S3,2 S3,3 S3,4
étage 3
sous clef K4 K4,6 K4,8 K4,14 K4,16
étage 4
∆U4,5 . . . ∆U4,8 ∆U4,13 . . . ∆U4,16
S341 S4,2 S4,3 S4,4
sous clef K5 K5,5 . . . K5,8 K5,13 . . . K5,16
texte crypté
Figure 8.6: Chemin dierentiel
Puis en suivant le chemin indiqué dans la gure 8.6 page 78, on voit que
∆U3 = (0000, 0010, 0010, 0000)
8.3. CRYPTANALYSE DIFFÉRENTIELLE 79
et toujours d’après le tableau (8.7) on aura
∆V3 = (0000, 0101, 0101, 0000)
et enn en regardant la gure 8.6 page 78
∆U4 = (0000, 0110, 0000, 0110)
Ce ∆U4 a une probabilité de
8 6 6 2 27
× × =
16 16 16 1024
Pendant la crypanalyse on va disposer de beaucoup de texte avec un diéren-
tiel d’entrée de la forme ∆X = (000, 1011, 0000, 0000). Avec une grande
27
probabilité, les diérents diérentiels intermédiaires auront lieu, ce
1024
seront les bonnes paires les autres seront les mauvaises paires. Nous
sommes maintenant en mesure d’extraire des bits de la clef K5 .
Rappelons tout d’abord la remarque importante: les diérentielles
.
(∆Ui , ∆Vi ) ne sont pas aectés par la clef Ki
Pour chaque paire de texte chiré on essaye les 256 valeurs des bits
K5,5 , K5,6 , K5,7 , K5,8 , K5,13 , K5,14 , K5,14 , K5,16
de la clef K5 . On déterminent ensuite les valeurs de
∆U4,5 . . . U4,8 et ∆U4,13 . . . U4,16
qui ne dépendent pas de la valeur de la clef K4 . On détermine aussi les
valeurs de ∆U4,5 . . . U4,8 et ∆U4,13 . . . U4,16 à partir le paire de texte clair
correspondante qui ne dépend pas des clefs intermédiares K1 , K2 et K3 . On
crée un compteur pour chacune des 256 sous-clefs possible et on l’incrémante
toutes les fois que les deux résultats coı̈ncident. OIn s’attend à ce que la
27
bonne clef donne une probabilité proche de de réussites.du test.
1024
Comme les diérences pour les S-boı̂tes S4,1 et S4,3 doivent être zéros on
peut ltrer et ne pas tester pour les paires de messages qui ne respectent
pas cette condition.
L’attaque marche dans cet exemple avec 5000 paires de textes clairs et
cryptés correspondants. La détermination du nombre de paires repose tou-
jours sur des hypothèses de variables aléatoires indépendantes qui ne sont
jamais vériées. Néanmoins il semble qu’un nombre de pair de messages de
c
l’ordre de donne un bon ordre de grandeur.
pD
80 CHAPITRE 8. CODES À CLEFS SECRÈTES
8.4 Description de DES.
C’est un système cryptographique produit, basé sur un schéma de Feis-
tel, cf. sous-section 8.4.1. Il compose des opérations de cryptage, autrement
dit il eectue un produit d’opérations de cryptage. Il répéte 16 fois un al-
gorithme 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 diusion.
• La confusion gomme les relations entre le texte clair et le texte chiré
pour éviter les attaques par analyse statistique. Autrement dit un
changement d’un seul bit dans le texte clair doit aecter un grand
nombre de bits (idéalement tous) du texte chiré.
• La diusion disperse la redondance du texte clair dans le texte chiré,
par exemple deux lettres doublées ne doivent pas rester côte à côte
après cryptage.
8.4.1 Schéma de Feistel.
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 chiré, 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 chirement va
procéder en chirant 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).
Bien sûr, la partie droite n’a pas été transformée (juste envoyée à gauche).
C’est pourquoi on répète le schéma de Feistel un certain nombre de fois (on
parle de tour - le DES en comporte 16).
La plupart des algorithmes à clé secrète de la n du XXè s. était des schémas
de Feistel. L’avénement de l’AES, qui n’en est plus un, marque la n de la
8.4. DESCRIPTION DE DES 81
G D
XOR f
L R
Figure 8.7: Schéma de Feistel
prédominance de tels algorithmes.
8.4.2 Quelques apects techniques de DES.
DES utilise une clé K de 56 bits utiles, en fait une clé de 64 bits dont les
bits 8, 16, 24, 32, 40, 48, 56 ne sont pas utilisés pour la clé mais participent
à un code correcteur qui permet de vérier que la clé n’a pas été altérée.
DES est un cryptosystème par blocs qui travaille sur des blocs de 64 bits.
La clé de DES est trop courte pour les puissances de calcul actuelles. La
taille de la clé secrète 56 bits le rend aujourd’hui vulnérable aux attaques
par force brute. En 1997 la clé a été cassée en 3 semaines par une fédération
de machines sur internet. Elle a été cassée en 56 heures en 1998.
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.
An de prolonger la durée de vie de DES en attendant AES on a introduit
le triple DES. Il consiste à appliquer successivement au message DES muni
de la clef K, à le décoder avec DES muni de la clef K’ et de le recoder avec
DES muni de la clef K. Au total tout se passe comme si on avait codé le
message avec une clé nettement plus longue.
C’est un système de chirement itéré à 16 étages
1. La clé K donne naissance à 16 sous-clés, les clefs d’étage, de 48 bits
K1 , K2 ,...,K16
82 CHAPITRE 8. CODES À CLEFS SECRÈTES
2. Etant donné un bloc de texte clair de 64 bits, X, on construit, grâce
à la fonction d’étage g0 , un nouveau texte, X0 , par permutation de
l’ordre des bits grâce à la permutation initiale IP .
g0 (X) = X0 = IP (X)
3. on sépare les 32 bits de gauche, L0 , et les 32 bits de droites, R0 , de
X0 , donc X0 = L0 R0
4. On eectue 16 itérations (ou tours ou étages). On calcule la valeur de
la fonction d’étage g(Xi−1 , K i ) = Li Ri , 1 ≤ i ≤ 16 suivant la règle
Li = Ri−1
Ri = Li−1 ⊕ f (Ri−1 , Ki )
où ⊕ est la somme bit à bit sans retenue ou ’ou exclusif’ ou ’XOR’
dans Z/2Z de Li−1 et f (Ri−1 , Ki ) et où f est une fonction non linéaire
qui participe à la diusion et qui est décrite par les S-boı̂tes
5. Pour nir on applique la permutation inverse de la permutation ini-
tiale, IP −1 , à R16 L16
Pour une description plus précise voir [31] ou [11].
le schéma 8.8 page 83 résume ce qui précède.
8.5 Description d’AES.
Le principe de l’AES est très proche du DES. C’est aussi un système cryp-
tographique produit constitué d’une suite d’opérations de permutation et de
substitution. Contrairement à AES ce n’est pas un schéma de Feistel mais
un réseau de substitution-permutation, cf. la section 8.1.
AES travaille sur des blocs de 128 bits avec des clefs de longueur 128, 192
ou 256 bits. À l’origine AES pouvait travailler sur des blocs de longueur
Nb × 32 bits où Nb variait de 4 à 8, nalement la taille de blocs d’AES a été
xée à 128 bits et donc Nb a été xé à 4.
Le passage à une clé de 128 bits minimum rend impossible dans le futur
prévisible les recherches exhaustives de clefs. Si on suppose que l’on a un
algorithme capable de comparer en une seconde 256 clefs (i.e de casser DES
en une seconde) il lui faudra 149 mille milliards d’années pour casser AES.
8.5. DESCRIPTION D’AES 83
message clair (64 bits)
permutation intiale
L0 (32 bits) R0 (32 bits)
f
K1 (48bits)
L1 (32 bits) R1 (32 bits)
f
K2 (48bits)
L2 (32 bits) R2 (32 bits)
L15 (32 bits) R15 (32 bits)
f
K16 (48bits)
R16 (32 bits) L16 (32 bits)
permutation nale
message chiré (64 bits)
Figure 8.8: Architecture du DES
84 CHAPITRE 8. CODES À CLEFS SECRÈTES
Exercices. 1
8.5.1. Justier cette armation.
AES résiste à toutes les attaques connues (attention ce n’est qu’un fait
d’expérience pas une preuve).
Le diagramme 8.9 page 85 décrit un tour d’AES le diagramme 8.10 page 86
décrit le codage en AES et le diagramme 8.11 page 87 décrit le décodage en
AES.
8.5.2 Quelques apects techniques d’AES.
Pour toute la partie mathématique on pourra consulter dans les compléments
mathématiques la section sur les extensions de corps et les anneaux de
polynômes sur un corps ni, section 13.6 page 183.
AES est un système de chirement itéré constitué d’un algorithme de
chirement sur des blocs de 128 bits, la fonction d’étage, répété Ne fois,
avec Ne allant de 10 à 14, et d’une clef secrète de 128, 192 ou 256 bits et
pour chaque étage d’une clef d’étage de longueur xe, 128 bits.
Un algorithme de diversication de clef , ExpandKey[i], permet de
créer une clef pour chacun des étages, i, à partir de la clef secrète K.
On notera Ne le nombre d’étages. La fonction d’étage, g, est l’ensemble des
opérations que l’on fait subir au texte qui arrive à l’étage i. Elle est la même
pour tous les étages sauf le dernier.
La fonction g consiste en l’application successive de 4 opérations SubBytes,
ShiftRows, MixColumns, AddRoundKey. Pour le dernier étage on
applique seulement les opérations SubBytes, ShiftRows et AddRound-
Key.
À partir de la clef secrète, K, on génére des sous clefs d’étage par l’algorithme
de diversication de la clef, ExpandKey[i]. On obtient les clefs d’étage:
K 1 ,...,K Ne .
On note x un bloc de 128 bits du texte initial (texte en clair), wi le texte
utilisé en entrée à l’étage i (c’est donc un bloc de 128 bits) et y sera le bloc
correspondant crypté nal.
Tous les textes sont supposés transformés en une suite de zéros et de uns.
Si K et L sont deux telles suites on note
K ⊕L
8.5. DESCRIPTION D’AES 85
entrée; bloc de 128 bits
algorithme de diversification
tour suivant
clef clef de tour
K K’
XOR XOR
brouillage sortie:
S des lignes bloc de
128 bits
brouillage ×
colonnes
sortie de
l’algorithme
Figure 8.9: Diagramme d’un tour d’AES
86 CHAPITRE 8. CODES À CLEFS SECRÈTES
TEXTE CLAIR
ROUND 1 ÉTAGE 1
ROUND 9 ÉTAGE 9
SUBBYTE
SHIFTROW
DERNIER ÉTAGE
MIXCOLUM
SUBBYTE
K1
SHIFTROW
ROUND 2 ÉTAGE 2 K10
TEXTE CODÉ
Figure 8.10: Diagramme du codage en AES
8.5. DESCRIPTION D’AES 87
TEXTE CODÉ
ROUND 1
MIXCOLUM−1
K10
SHIFTROW−1
PREMIER
SUBBYTE−1
SHIFTROW−1
SUBBYTE−1 K1
K9 ROUND 2
ROUND 9
TEXTE CLAIR
Figure 8.11: Diagramme du décodage en AES
88 CHAPITRE 8. CODES À CLEFS SECRÈTES
l’opération XOR entre le suite K et la suite L.
Avec ces notations la description schématique d’AES est la suivante. On
notera State l’écriture du ux d’entrée-sortie sur lequel opère chaque algo-
rithme. Donc on prend le bloc de 128 bits sur lequel opère AES que l’on
considère comme une suite de 16 octets que l’on range en une matrice 4 × 4.
Un octet étant confondu avec un élément de F256 de la manière suivante:
F256 est identié aux polynômes de F2 [x] de degré ≤ 7 par l’isomorphisme
F256 ≃ F2 [x]/(x8 + x4 + x3 + x + 1)
Donc State est une matrice de M4×4 (F256 ) construite suivant le schéma 8.12
page 88.
a0 a1 a2 a3 a4 ........ a9 a10 a11 a12 a13 a14 a15
représentation matricielle
a0 a4 a8 a12
a1 a5 a9 a13
a2 a6 a10 a14
a3 a7 a11 a15
Figure 8.12: La matrice State
L’algorithme se déroule de la manière suivante:
1. On initialise w0 à x et et on eectue l’opération AddRoundKey
W0 ⊕ K
8.5. DESCRIPTION D’AES 89
2. Pour chacun des 1 < i ≤ Ne − 1 étages suivants on eectue sur wi les
opérations suivantes
(a) l’opération de substitution SubBytes
(b) sur le résultat de SubBytes une permutation notée ShiftRows
(permutation circulaire sur les éléments des lignes de la matrice
des octets si,j )
(c) sur le résultat de ShiftRows une opération notée MixColumns
(application linéaire sur l’espace des matrices sur F28 )
(d) Sur le résultat de MixColumns l’opération AddRoundKey[i]
avec la sous-clé de l’étage i
3. Pour le dernier étage Ne on supprime l’opération MiXColumns
On va décrire maintenant chacune des opérations utilisées.
L’opération ExpandKey
L’opération ExpandKey dépend de la taille de clé choisie, Nk × 32, qui
peut être égale à 128, 160, 192, 224 ou 256 bits. On supposera dans la suite
que la longueur de la clef est de 192 bits, donc Nk = 6.
Extension de la clef secrète K. On écrit la clef K sous forme d’une matrice
de Nk colonnes de 4 bytes chacune (donc 4 lignes, l’élément d’une ligne étant
un mot de 8 bits), dénotées k0 ,...,k5
k0 k1 k2 k3 k4 k5
Ensuite cette matrice est étendue en une matrice de taille 4(Ne + 1) où Ne
est le nombre d’étages par l’algorithme suivant
• Si i n’est pas un multiple de Nk (la longueur de la clef) alors la colonne
d’indice i, ki , est la XORisation de la colonne d’indice i − Nk , ki−Nk ,
et de la colonne d’indice i− 1, ki−1 . C’est donc l’addition bit à bit sans
retenue de la colonne ki−Nk et de la colonne ki−1 , ki = ki−Nk ⊕ ki−1 .
• Si i est un multiple de Nk on applique à chacun des bytes de la colonne
ki−1 la permutation πS décrite au paragraphe suivant suivie d’une ro-
tation dans les bytes de la nouvelle colonne ki−1 , notée Rotword, et de
90 CHAPITRE 8. CODES À CLEFS SECRÈTES
l’addition d’une constante d’étage dénie en héxadécimal par [Fieldto
Binary(xj−1 ) 000000] pour l’étage j (autrement dit on ajoute Fieldto
Binary(xj−1 ) au premier byte de la clef d’étage après application de
Rotword, c’est à dire à a1 avec les notations ci-dessous). On XOR le
résultat obtenu avec la colonne ki−Nk .
On obtient ainsi
k0 k1 k2 k3 k4 k5 k6 k7 dots ki4 . . . k(i+1)4−1 . . .
clé d’étage 0 clé d’étage 1 ... clé d’étage i ...
La rotation Rotword est dénie comme suit
a0 a1
a1 a2
Rotword :
a2 −→ a3
a3 a0
Exercices. 1
8.5.2. Vérier que les constantes d’étages dénies ci-dessus ont pour valeur
(en hexadécimal)
étage 1 01000000 étage 2 02000000 étage 3 04000000
étage 4 08000000 étage 5 10000000 étage 6 20000000
étage 7 40000000 étage 8 80000000 étage 9 1B000000
étage 10 36000000
L’opération ExpandKey montre bien la réalisation des concepts de diu-
sion et de confusion de Shannon. Prenons la clef de 128 bits
K = 00000000000000000000000000000000
en hexadécimal et voyons ce que sont les clefs dérivées pour chacun des dix
étages, on trouve:
8.5. DESCRIPTION D’AES 91
RoundKey[00] = 00000000000000000000000000000000
RoundKey[01] = 62636363626363636263636362636363
RoundKey[02] = 9B9898C9F 9F BF BAA9B9898C9F 9F BF BAA
RoundKey[03] = 90973450696CCF F AF 2F 457330B0F AC99
RoundKey[04] = EE06DA7B87A1581759ED42B27E91EE2B
RoundKey[05] = 7F 2E2B88F 8443E098DDA7CBBF 34B9290
RoundKey[06] = EC614B851425758C99F F 09376AB49BA7
RoundKey[07] = 217517873550620BACAF 6B3CC61BF 09B
RoundKey[08] = 0EF 903333BA9613897060A04511DF A9F
RoundKey[09] = B1D4D8E28A7DB9DA1D7BB3DE4C664941
RoundKey[10] = B4EF 5BCB3E92E21123E951CF 6F 8F 188E
8.5.3. Vérier que la diversication de la clef (en hexadécimal)
K = 00000000000000000000000000000000
est bien celle donnée par le tableau précédent.
8.5.4. Construire la diversication complète de la clé (en hexadécimal)
2B7E151628AED2A6ABF 7158809CF 4F 3C
L’opération SubBytes
L’opération SubBytes est la seule opération non linéaire. On suppose que
le message wi est un nombre de 128 bits=16 octets, (si,j )0≤i,j≤3 , écrit en
base 2. On le réécrit sous la forme d’une matrice Si , où les si,j sont des
octets.
s0,0 s0,1 s0,2 s0,3
s1,0 s1,1 s1,2 s1,3
Si =
s2,0 s2,1 s2,2 s2,3
s3,0 s3,1 s3,2 s3,3
L’opération SubBytes consiste en une permutations πS sur {0, 1}8 , agissant
indépendamment sur chacun des octets si,j de l’étage i.
Pour décrire πS on travaille dans un surcorps du corps à 2 éléments, F2 ,
le corps ni à 256 éléments, F28 , que l’on identie avec les polynômes de
degré ≤ 8, munis de l’addition et de la multiplication modulo le polynôme
irréductible de F[x], x8 + x4 + x3 + x + 1, cf. paragraphe 13.6.2, page 187,
de rappel sur les anneaux de polynômes,
F28 ≃ F2 [x]/(x8 + x4 + x3 + x + 1)
92 CHAPITRE 8. CODES À CLEFS SECRÈTES
L’application BinarytoField associe à l’octet a7 a6 . . . a1 a0 l’élément
7
BinarytoField(a7 a6 . . . a1 a0 ) = ai x i
i=0
du corps F28 . L’application inverse est FieldtoBinary. On a dans le corps
F28 l’opération FieldInv qui à un élément z = 0 du corps associe z−1 et à
z = 0 associe 0.
Exemple 8.5.1. Calcul dans F28 . Calculons FieldInv(00000011) on a:
• FieldtoBinary(00000011)=x + 1
• FieldInv(x + 1)=x7 + x6 + x5 + x4 + x2 + x
car on a l’identité de Bézout
(x + 1)(x7 + x6 + x5 + x4 + x2 + x) + (x8 + x4 + x3 + x + 1) = 1
obtenue par l’algorithme d’Euclide ou directement,
donc dans F28 ≃ F[x]/(x8 + x4 + x3 + x + 1)
(x + 1)−1 = (x7 + x6 + x5 + x4 + x2 + x)
et donc
• BinarytoField(x7 + x6 + x5 + x4 + x2 + x)=(11110110)
Revenons à la description de l’opération SubBytes c’est à dire à la de-
scription de la permutation πS pour le mot de 8 bits (a7 a6 . . . a1 a0 ) consiste
en
• application de BinarytoField à (a7 a6 . . . a1 a0 ) qui donne a ∈ F28
• application FieldInv à a qui donne a−1 si a = 0 ou 0 si a = 0
• ajout de l’élément c = (c7 c6 . . . c1 c0 ) = BinarytoField(01100011) à
a−1 pour obtenir b = (b7 b6 . . . b1 b0 )
• application de FieldtoBinary à b
c est une constante d’AES.
Exercices. 1
8.5.5. Calculer SubBytes(00000011).
8.5. DESCRIPTION D’AES 93
L’opération ShiftRows
C’est la permutation cyclique dans les lignes de la matrice Si décrite par le
diagramme ci-dessous
a b c d a b c d
e f g h f g h e
−→
i j k l k l i j
m n o p p m n o
L’opération MixColumns
C’est une transformation linéaire dans les colonnes de la matrice State; la
colonne j est transformée de la manière suivante (les calculs sont faits dans
F28 )
b0 02 03 01 01 a0
b1 01 02 03 01 a1
=
b2 01 01 02 03 × a2
b3 03 01 01 02 a3
Polynomialement cette opération s’interprète de la manière suivante Cha-
cune des colonnes de la matrice State est considérée comme un polynôme
de degré 3 à coecients dans F256 .
L’opération MixColumns consiste alors à eectuer pour chaque colonne
une multiplication du polynôme correspondant à la colonne par un polynôme
xe c(x) = 03x3 + x2 + x + 02 suivie d’une réduction modulo le polynôme
x4 +1 de façon à obtenir un polyôme de degré inférieur ou égal à 3 de F256 [X]
qui est interprété comme une colonne d’une matrice de M4 (F256 ).
L’opération AddRoundKey
AddRoundKey[i] est l’addition de la clef obtenue à l’étage i par l’algori-
thme de diversication des clés, ExpandKey[i], au texte obtenu à l’issue
de l’étape MixColumns.
On écrit la clef ExpandKey[i], de 128 bits, sous la forme d’une matrice de
4 × 4 bytes et on l’ajoute au résultat de l’étape précédente par un XOR
a0,0 a0,1 a0,2 a0,3 k0,0 k0,1 k0,2 k0,3 b0,0 b0,1 b0,2 b0,3
a1,0 a1,1 a1,2 a1,3 k1,0 k1,1 k1,2 k1,3 b b1,1 b1,2 b1,3
= 1,0
a2,0 a2,1 a2,2 a2,3 k2,0 k2,1 k2,2 k2,3 b2,0 b2,1 b2,2 b2,3
a3,0 a3,1 a3,2 a3,3 k3,0 k3,1 k3,2 k3,3 b3,0 b3,1 b3,2 b3,3
94 CHAPITRE 8. CODES À CLEFS SECRÈTES
8.6 Infrastructure des systèmes à clef secrète.
Les infrastructures pour les systèmes à clef secrète consistent en
toutes les dispositions techniques et l’organisation nécessaires pour gérer un
système cryptographique à clef secrète.
Autant il est facile pour un ordinateur de retenir une clé secrète de 128 bits,
autant c’est dicile pour une personne. On utilise alors le système des mots
de passe. Mais pour ne pas aaiblir la sécurité du cryptosystème le mot de
passe doit obéir à certaines règles
• Avoir une entropie, cf. le paragraphe 13.1.3 page 154, au moins égale
à 128 bits. De manière approximative ceci signie que le mot de passe
doit être aussi dicile à deviner qu’une suite aléatoire de 128 zéros et
uns. Pour avoir une entropie de 128 bits il sut de choisir 22 caractères
au hasard dans un alphabet de 64 lettres (minuscules, majuscules,
chires, point et espace).
• Il doit résister aux attaques-dictionnaires.
• Un mot de passe ne doit pas être réutilisé
On peut prendre les mesures suivantes pour améliorer la sécurité d’un systè-
me de mots de passe
• On utilise le mot de passe pour calculer une clé de session qui change
à chaque fois.
• On rajoute des ingrédients pour éviter les attaques dictionnaires (sel).
• On itère la fonction de hachage, par exemple 1000 fois. Pour l’utilisa-
teur le temps de calcul est à peine aecté. Pour l’attaquant qui procède
par attaque-dictionnaire, c’est prohibitif.
On utilise aussi un système de gestion des clefs (Symmetric Keys
Management ) qui
1. émet les clefs
2. les authentie
3. les archive
4. les garde en dépôt
Un des systèmes les plus utilisés est Kerberos, cf. [34].
8.7. ATTAQUES CONTRE LES CODES SYMÉTRIQUES 95
8.6.1 Exemple: protocole d’accès HTTP
On décrit de manière succincte le système de controle d’accès par mot de
passe utilisé dans le protocole HTTP (norme RFC 2617). Ici le client est un
navigateur (browser) qui désire avoir accès à un document protégé appelé
Uniform Resource Identier (URI en abrégé) d’un site Web. Il y a
deux protocoles d’accès, nous ne décrivons que le protocole de base (basic
protocol en anglais). La faiblesse de ce protocole est que le password circule
en clair sur le réseau.
Dans le protocole de base le serveur garde en mémoire des triplets (realm-
value, userid, password) où realm-value est une partie du serveur HTTP,
userid est un identiant de l’utilisateur et où password est un mot de passe
attribué à l’utilisateur.
Lorsqu’un utilisateur envoie une requête pour accéder à un URI, le serveur
envoie la demande suivante
WWW-Authenticate: basic realm=‘‘realm-value’’
L’utilisateur doit répondre alors
Authentification basic: basic basic-credential
où basic-credential est la chaı̂ne de caractère
userid: password
Si le triplet (realm-value, userid, password) est correct le serveur répond à
la reque d’URI. Sinon il envoie le message d’erreur
HTTP/1.0 401 Unauthorized
et recommence le processus de demande.
8.7 Attaques par force brute contre les codes symétriques
On peut se demander quelle est la sécurité d’un cryptosystème symétrique
(DES, AES ou LFSR) face à une attaque par force brute (en anglais
brute force attack . on décrit trois types d’attaques par force brute
1. Les attaques par recherche exhaustive
2. Les attaques dictionnaires
3. Les attaques répertoires
96 CHAPITRE 8. CODES À CLEFS SECRÈTES
8.7.1 Attaques par recherche exhaustive.
Cette attaque consiste à essayer systématiquement toutes les clefs possibles
jusqu’à ce que l’on tombe sur la bonne clef. On peut simplier le modèle de
cette attaque en supposant que l’on a un oracle (un dispositif) qui répond
par oui ou par non à la question:
cette clef est-elle correcte?
On peut dénir la complexité par le nombre d’appels à l’oracle qui seront
nécessaire pour obtenir la bonne clef. On aura une notion de complexité
dans le pire des cas (worst case complexity en anglais), une notion de
complexité en moyenne (average complexity en anglais), etc...
Dans le cas d’un espace de clefs contenant N clefs qui sont générées uniformément on
peut montrer que la meilleure attaque a une complexité dans le pire des cas de N appels
N
à l’oracle et une complexité en moyenne de ∼ appels à l’oracle.
2
En eet la meilleure attaque consiste à ordonner sans répétition les clefs de l’espace des
clefs suivant un ordre aléatoire et à interroger l’oracle. Si on se place dans le pire des cas
la bonne clef est la dernière et il a donc fallu interroger l’oracle N fois.
Si la bonne clef est la i-ième dans la liste il a fallu interroger l’oracle i fois. Commme
1
la liste a été faite au hasard la probabilité que la bonne clef soit la i-ième est . Par
N
conséquent la complexité en moyenne, c’est à dire le nombre d’appels qu’il a fallu faire à
l’oracle en moyenne, est
N
X i N +1
=
i=1
N 2
8.7.2 Attaques dictionnaires.
Cette attaque est une attaque à texte clair choisi qui cherche à retrouver la
clef secrète..
On choisit un (ou plusieurs) texte clair x et on calcule les message codés,
EKi (x), correspondant pour M clefs Ki choisies au hasard dans l’espace des
clefs si leur distribution est équirépartie et plus généralement choisies en
accord avec leur loi de distribution. On range le s couples (EKi (x), Ki ) dans
un dictionnaire. Les EKi (x) jouent le rôle d’index de rangement, de mot à
dénir, et les Ki sont les dénitions correspondantes
Remarque 8.7.1. Il se peut qu’il y ait des clefs Ki et Kj telles que EKi (x) =
EKj (x).
Si maintenant on reçoit un message EK (x) on compare le résultat avec le
dictionnaire ce qui donne donne une indication sur la clef K.
8.7. ATTAQUES CONTRE LES CODES SYMÉTRIQUES 97
8.7.3 Attaques répertoires.
Cette attaque cherche à retrouver le message clair correspondant au message
codé sans se soucier de la clef secrète. C’est une attaque à texte chiré connu.
On choisit un (ou plusieurs) texte clair x et on calcule pour M clefs Ki de
l’espace des clefs et on calcule les couples (EKi (x), x). On range le tout
dans un répertoire. Les EKi (x) jouent le rôle d’index de rangement dans le
répertoire et x la rubrique correspondant.
Si on reçoit un message codé y on le compare avec les entrées du répertoire
c’est à dire les EKi (x) et si on a pour un i particulier EKi (x) = y alors x
peut-être un candidat pour le texte clair correspondant
Chapitre 9
Codes à clefs publiques.
Die et Hellman ont dégagé vers 1976 la notion de code à clef publique
ou code asymétrique fondé sur la notion de fonction à sens unique.
Les codes asymétriques les plus utilisés:
• RSA basé sur la diculté calculatoire de la factorisation des grands
entiers.
• El Gamal basé sur la diculté calculatoire de calculer le logarithme
discret dans un corps ni.
• Menezes-Vanstonne basés sur le logarithme associé au groupe des
points d’une courbe elliptique sur un corps ni. C’est une modication
d’autres cryptosystèmes, comme El Gamal. Sa sureté peut être mieux
analysée. La longueur de sa clé est bien inférieure à celle des systèmes
RSA et El Gamal pour une sureté équivalente. Ils orent des fonc-
tionnalités supplémentaires comme la possibilité de monter un crypto-
système basée sur l’identité.
Il existe d’autres codes asymétriques peu utilisés en pratique comme
• McEliece basé sur la théorie algébrique des codes correcteurs d’er
-reurs. Il repose sur la diculté calculatoire du décodage d’un code
linéaire (problème NP complet). Considéré comme sûr il nécessite des
clefs extrèmement longues 1019 bits.
• Chor-Rivest basé sur une instance du problème du sac-à-dos.
98
9.1. PRINCIPE DES CODES À CLEF PUBLIQUE 99
9.1 Principe des codes à clef publique.
9.1.1 Fonctions à sens unique.
On cherche une fonction f entre des ensembles P et E telle que
• le calcul de f (x) pour x ∈ P se fait en temps polynomial en fonction
de la taille des données, cf la sous-section 13.2.3.
• le calcul de f (−1) (y) pour y ∈ E ne se fait pas en temps polynomial
en fonction de la taille des données. Le plus souvent la fonction f
possède une porte dérobée (trapdoor) qui permet de calculer facile-
ment f −1 (y) lorsqu’on a une information supplémentaire comme la clef
secrète.
Autrement dit on cherche des fonction f : P → E appartenant à la classe
des problèmes P (calculables en temps polynomial en fonction de la taille
des données) et telle que la fonction réciproque (ou l’image réciproque si ne
suppose pas f bijective) f (−1) appartienne à la classe des problèmes N P ,
(non calculables en temps polynomial en fonction de la taille des données,
mais vériables en temps polynomial).
La mise au point de telles fonctions a révolutionné la cryptographie et élargi
son champ d’application.
9.2 Le cryptosystème Merkle-Hellman.
Ce cryptosystème qui fut historiquement un des premiers proposés (il a été
publié en 1978) repose sur le problème du sac-à-dos. Génériquement il a
une sécurité prouvée, car le problème du sac-à-dos est génériquement dans
la classe NP. Malheureusement comme l’a montré Shamir sa sécurité ne
repose pas sur un problème de sac-à-dos générique mais sur une instance
particulière de ce problème qui elle peut ne pas être dans la classe NP.
9.2.1 Le problème du sac-à-dos.
Le problème du sac-à-dos s’énonce de la manière suivante
• Soit a un ensemble d’entiers {a1 , a2 , . . . , an ; s}.
• Existe-t-il un sous-ensemble de {a1 , a2 , . . . , an } dont la somme soit s
100 CHAPITRE 9. CODES À CLEFS PUBLIQUES
Intuitivement on peut considérer que les ai représentent la taille de pa-
quets que l’on veut mettre dans un sac-à-dos de taille s, ou encore qu’ils
représentent des billets et des pièces monnaies destinées à payer un objet
dont le prix est s.
L’interêt de ce problème du sac-à-dos pour la cryptographie tient au théo-
rème suivant
Théorème 9.2.1 (Karp 1972). Le problème du calcul de la solution, sup-
posée exister, du sac-à-dos est un problème génériquement NP-complet
Pour la dénition de NP-complet voir la sous-section 13.2.2.
De manière un peu approximative ce théorème signie que génériquement
trouver une solution, que l’on sait exister, au problème du sac-à-dos est
dicile c’est à dire que la calcul de la solution nécessite un temps exponentiel
en fonction de la taille des données. Le mot générique signie qu’il existe
au moins un ensemble a ayant une solution tel que le calcul de la solution
ne se fasse pas en temps polynomial en fonction de la taille des données.
Le problème est de cacher une clef secrète, une porte dérobée, ou trapdoor
qui permette au destinataire du message de le décoder.
On choisit un entier M on dira que a = {a1 , a2 , . . . , an ; s} est un problème
de sac-à-dos modulo M s’il existe
{ak1 , . . . , akm } ⊂ {a1 , a2 , . . . , an }
tel que
ak1 + + akm ≡ s mod M
9.2.2 Description du cryptosystème Merkle-Hellman.
L’idée principale de Merkle et Hellman consiste à choisir un sac-à-dos par-
ticulier dont la solution est triviale et à cacher cette forme particulière du
sac-à-dos par une transformation secrète connue du seul destinataire du
message.
La forme retenue par Merkle et Hellman est le sac-à-dos super-croissant
(super-increasing knapsack ).
Une suite d’entier {b1 , b2 , . . . , bn , bn+1 } est dite super-croissante si l’on a
i−1
bi > bj ; pour 1 ≤ i ≤ n + 1
j=1
9.2. LE CRYPTOSYSTÈME MERKLE-HELLMAN 101
On remarque que si la suite {b1 , b2 , . . . , bn , bn+1 } est super-croissante et si
M = bn+1 alors tout problème de sac-à-dos {b1 , b2 , . . . , bn ; s} modulo M est
équivalent au problème de sac-à-dos {b1 , b2 , . . . , bn ; s} sur les entiers naturels.
Ce dernier est un problème facile. On remarque que bn est dans le sous-
ensemble de la solution si et seulement si bn ≤ s et on peut alors ramener
le problème initial au problème de sac-à-dos {b1 , b2 , . . . , bn−1 ; s′ } avec s′ =
s − bn
ou .
s
La transformation secrète destinée à cacher le fait que l’on a un sac-à-dos
super-croissant est simplement la multiplication par un nombre secret M .
Le crypto-système de Merkle et Hellman est donc le suivant
1. Paramètre public n.
2. fabrication de la clef: choisir un suite super croissante
{b1 , b2 , . . . , bn , bn+1 = M }
choisir un nombre W ∈ Z/M Z et une permutation π de {1, . . . , n}.
Calculer ai = W bπ(i) (mod M ) pour 1 ≤ i ≤ n.
3. Clef Publique: Kp = (a1 , a2 , . . . , an )
4. Clé sécrète: Ks = (b1 , b2 , . . . , bn , M, W, π)
5. Message: une suite de zéros et de uns de longueur n, m = m1 m2 . . . mn .
n
6. Codage: c = m i ai
i=1
7. Décodage: calculer CW −1 (mod M ), résoudre le problème de sac-
à-dos super-croissant x1 b1 + + xn bn = cW −1 (mod M ) et alors
mi = xπ(i) .
Le crypto-système Merkle-Hellman revient à trouver un vecteur dans un
réseau. Un réseau (lattice) est l’ensembles des combinaisons à coecients
entiers relatifs de vecteurs de Rn . Trouver un petit vecteur au sens de la
norme euclidienne est aussi un problème dicile. mais il y a des cas où
ce problème devient facile. Plus précisément l’algorithme LLL peut être
utilisé. En particulier il peut être utilisé pour casser des crypto-systèmes
comme celui de Merkle-Hellman.
102 CHAPITRE 9. CODES À CLEFS PUBLIQUES
9.3 Le système RSA.
Le système RSA est nommé d’après le nom de ses inventeurs: Rivest,
Shamir, Adleman.
Il est basé sur la fonction à sens unique produit de deux entiers
f: N × N −→ N
(n, m) −→ f (n, m) = n × m
sa fonction réciproque étant la décomposition d’un nombre entier en un pro-
duit de deux facteurs non-triviaux (c’est à dire diérents de 1 et du nombre
lui même) et donc nalement sur la décomposition en facteurs premiers d’un
entier, cf. la section arithmétique dans les compléments de mathématiques,
section 13.3 page 162.
Le calcul du produit de deux nombres entiers est une opération “facile”,
“rapide”, “calculatoirement facile” (c’est à dire faisable en temps polynomial
en fonction de la taille des données) alors que la décomposition en facteurs
premiers n’est pas “facile”, est “lente”, “calculatoirement dicile” (c’est à
dire qu’elle n’est pas faisable en temps polynomial en fonction de la taille des
données). En eet on montre, cf. la sous-section 13.2.3, que si les nombres
entiers n et m s’écrivent avec k ≤ max{[ln2 n], [ln2 m]} chires en base 2
alors le temps nécessaire pour calculer le produit m × n est proportionnel à
k2 .
9.3.1 Description du cryptosystème RSA.
On a un ensemble (Ai )i∈I de correspondants (personnes physiques ou ordi-
nateurs). Le principe du cryptosystème RSA est le suivant (pour toutes les
dénitions arithmétiques voir le paragraphe 13.3)
• Chacun des correspondants Ai choisit deux nombres premiers pi et qi
distincts. On note ni = pi qi , le module du cryptosystème de Ai et
ϕ(ni ) = (pi − 1)(qi − 1), l’indicatrice d’Euler de ni .
• Ai choisit ensuite un nombre ei l’exposant de la clé publique pre-
mier avec ϕ(ni ) (ce que l’on note ei ∧ ϕ(ni ) = 1). D’après le pe-
tit théorème de Fermat, théorème 13.3.18 page 173, on peut imposer
1 ≤ ei ≤ ϕ(ni ) − 1, ce que l’on fait toujours en pratique.
• Puis Ai calcule l’inverse di de ei modulo ϕ(ni ), di est appelé l’exposant
de la clé secrète. C’est à dire, d’après la dénition de l’inverse
9.3. LE SYSTÈME RSA 103
modulo ni , qu’on cherche di ∈ N tel qu’il existe ki ∈ N avec
di × ei = 1 + ki ϕ(ni ) et 1 ≤ di ≤ ϕ(ni ) − 1
Le calcul se fait par l’algorithme d’Euclide étendu, cf. la sous-sous-
section 13.3.3.
• Chacun des correspondants Aj publie dans un annuaire public les nom-
bres nj et ej qui forment sa clé publique de chirement et garde
secret pj , qj et dj qui forment sa clé secrète de déchiffrement .
En pratique on choisit les nombres premiers pi et qi de taille comparable de
telle sorte que leur produit ni = pi qi soit un nombre d’au moins 300 chires
en base 10 et plutôt 500 pour une protection longue.
Remarque 9.3.1. Bien distinguer entre e ne divise pas n et e est premier
avec n, (e, n sont des entiers positifs).
e ne divise pas n signie qu’il n’existe pas d’entier f tel que n = ef .
e est premier avec n signie qu’il n’existe aucun diviseur commun entre e et
n, c’est qu’il n’existe aucun entier d tel que d divise e et d divise n.
Exemple 9.3.1. 9 ne divise pas 15 mais 9 n’est pas premier à 15 car 3
divise à la fois 9 et 15.
9.3.2 Protocole d’envoi d’un message en RSA.
Alice veut envoyer un message M à Bob. La clef publique d’Alice (resp Bob)
est (na , ea ), (resp. (nb , eb )), sa clef secrète est (pa , qa , da ) (resp. (pb , qb , db )).
Elle suit le protocole suivant
1. Alice commence par transformer le message en une suite de chires,
par exemple en remplaçant les lettres et les diérents symboles utilisés
par des chires (de 0 à 255 dans le cas du code ASCII).
2. Alice regarde dans l’annuaire public la clé de chirement nb , eb de Bob.
Elle découpe le message M en blocs M de taille approximativement
nb .
3. Elle calcule
fb (M ) = M ′ ≡ M eb mod nb
et envoie M ′ = fb (M ) à Bob.
104 CHAPITRE 9. CODES À CLEFS PUBLIQUES
4. Pour récupérer le texte en clair Bob calcule
fb−1(M ′ ) = (M ′ )db = fb (M )db ≡ M eb db = M 1+kb ϕ(nb ) mod nb
D’après le théorème d’Euler (cf. théorème 13.3.23 page 176) on a
M ϕ(nb ) ≡ 1 mod nb
et par conséquent
fb−1 (M ′ ) ≡ M mod nb
Si la taille de M est adaptée à celle de nb , il n’y a pas d’ambiguité, et Bob
récupère donc bien le message d’Alice.
Exercices. 1
9.3.1. Bob choisit comme nombre premier p = 17 et q = 19, comme exposant
e = 5. donner sa clef publique.
9.3.2. Bob choisit comme nombre premier p = 17 et q = 19 et comme
exposant e = 5. Donner sa clé secrète de déchiffrement d.
9.3.3. Bob choisit comme nombre premier p = 17 et q = 19 et comme
exposant e = 5. Alice et lui décident d’un protocole RSA dans lequel les
messages sont des nombres en base 10 que l’on code par bloc de 2 chires
en base 10. Alice veut envoyer le message 462739.
1. Écrire le message codé qu‘elle envoie à Bob.
2. Décoder le message qu’a reçu Bob et vérier que c’est bien celui qu’a
envoyé Alice.
9.3.4 Protocole de signature RSA.
Le cryptosystème RSA permet aussi facilement de réaliser l’authentication
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 ′′
M ′′ = fa−1 (M ) ≡ M da mod pa qa
9.3. LE SYSTÈME RSA 105
2. Avec la clé publique de Bob, elle crypte M ′′ et obtient un deuxième
texte crypté, M ′
M ′ = fb (M ′′ ) = fb (fa−1 (M ))
qui constitue sa signature du message 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 )
fb (M ) = M eb mod nb
4. Elle envoie à Bob le couple
(fb (M ), M ′ )
qui constitue le message chiré et signé d’Alice à Bob.
Pour décoder et vérier la signature qui authentie l’expéditeur du message,
d’Alice, Bob eectue les opérations suivantes
1. Il calcule d’une part,
fb−1 (M ′ ) ≡ M ′′ mod nb
puis
fa (M ′′ ) mod na ≡ M mod na .
(Si le choix de la taille des blocs M est bien choisie par rapport à na
et nb , il n’y a pas d’ambiguité au décodage)
2. Il calcule d’autre part, en décodant comme au paragraphe 9.3.2,
fb−1fb (M ) ≡ M mod nb
3. Il compare les deux résulats 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
fa−1 ⇐⇒ da
c’est à dire sa clé secrète. De plus il est sûr que le message n’a pas été
altéré.
106 CHAPITRE 9. CODES À CLEFS PUBLIQUES
Sécurité de la signature RSA
Le protocole de signature RSA décrit ci-dessus soure de quelques failles de
sécurité dues aux propriétés de RSA.
Soit Kp = (n, e) et Ks = (n, d) des clefs publiques et privées utilisées pour
une signature. Le message codé signé est simplement un couple (σe , σ) où
σ est la signature du message.
On peut donc choisir un σ au hasard et construire un message m = σe
(mod n). La paire (m, σ) est un message signé parfaitement valable simple-
ment on n’a pas le contrôle du message crypté m.
Si on a deux messages signés (m1, σ1 ) et (m2 , σ2 ) on crée un autre message
signé parfaitement valide qui est (m1 m2 (mod n)), (σ1 σ2 (mod n)) .
On peut remédier à ces failles de sécurité en utilisant des fonctions de
hachage.
Exercices. 1
9.3.4. Bob choisit comme nombre premier pb = 17 et qb = 19 et comme
exposant eb = 5. Alice choisit comme nombres premier pa = 11 qa = 21
et comme exposant ea = 7. Calculer les exposants secrets d’Alice et Bob.
Alice et Bob utilisent un protocole RSA en base 10 par bloc de 2 chires.
Alice envoie et signe le message suivant 462739. Donner le message reçu par
Bob.
9.3.5. Bob et Charles utilisent un cryptosystème RSA avec le même module
n = pq mais avec des exposants diérents, l’exposant b pour Bob et c pour
Charles que l’on suppose premier entre eux. Alice leur envoie le même
message clair x qu’elle crypte avec leur clef publique. Elle envoie donc
yb ≡ xb (mod n) à Bob et yc ≡ xc (mod n) à Charles.
Ève intercepte les deux messages cryptés yb et yc . Montrer qu’Ève peut
retrouver le message clair x sans connaı̂tre les clefs secrètes de Bob et
Charles.
Calculer x avec n = 18721, b = 43, c = 7717, yb = 12677, yc = 14702.
9.3.6. Montrer que le cryptosystème RSA ne résiste pas aux attaques à texte
chiré choisi. En particulier étant donné un texte chiré y, montrer comment
choisir un deuxième texte chiré ỹ = y tel que la connaissance du texte clair
x̃ correspondant permette de calculer le texte clair x correspondant à y
(indication: utiliser le fait que si eK est la fonction de chirement on a
eK (x)eK (x̃) mod n = eK (xx̃ mod n)
9.3. LE SYSTÈME RSA 107
9.3.7. On suppose que Bob, Bernard et Bertrand utilisent un cryptosystème
RSA avec des modules diérents n1 ,n2 , n3 et le même exposant b = 3. On
suppose que les ni sont deux à deux premiers entre eux.
Alice chire un message x avec les clefs publiques de Bob, Bernard et
Bertrand et le leur envoie. Montrer qu’Éve qui intercepte les trois messages
peut récupérer x sans factoriser aucun des ni .
9.3.6 Exemple académique de codes RSA.
Alice publie sa clé publique (nA , eA ) = (65, 5), sa clef secrète est dA .
Bob publie sa clé publique (nB , eB ) = (77, 7), sa clef secrète est dB .
Pour trouver les clefs secrètes on décompose en un produit de facteurs pre-
miers nA et nB
nA = 13 5 et nB = 7 11
On calcule ensuite les indicatrices d’Euler correspondantes
ϕ(nA ) = 12 × 4 = 48 et ϕ(nB ) = 6 × 10 = 60
En utilisant l’algorithme de PGCD décrit au paragraphe 13.3.3 page 167 (ou
directement) on calcule dA
5 × 29 = 145 = 1 + 3 × 48 =⇒ dA = 29
respectivement dB
7 × 43 = 301 = 5 × 60 + 1 =⇒ dB = 43
Alice veut transmettre le message 3 à Bob. Elle calcule donc
37 ≡ 31 mod 77 = 7 × 11
et elle envoit 31 à Bob. Bob décode en calculant
3143 ≡ 311+2+8+32 ≡ 31 37 58 37 31 ≡ 3 mod 77
(remarquer la manière de calculer une puissance).
Si Alice veut signer le message elle n’envoie pas seulement 31, mais elle
calcule d’abord
fa−1 (3) = (329 mod 65) = 48
108 CHAPITRE 9. CODES À CLEFS PUBLIQUES
puis elle calcule
fb fa−1(3) = fb (329 mod 65) = (487 mod 77) = 27
puis elle envoie à Bob le couple
(31, 27)
constitué de la signature et du message.
Pour décoder Bob calcule
fa fb−1(27) = fa (2743 mod 77) = (485 mod 65) = 3 mod 65
et
3143 ≡ 3 mod 77
et il constate que les deux résultats coincident. L’expéditeur du message est
bien Alice.
Remarque 9.3.2. Pour signer le message Alice aurait pu aussi bien mener
les calculs dans l’ordre inverse, c’est à dire calculer d’abord avec la clé
publique de Bob
M′′ = f eb (M ) mod nb
b
′′ et obtienir un deuxième
puis crypter avec sa clé secrète da le résultat M
′
texte crypté, M
′ = f −1 (M
M ′′ ) = f −1 (fb ((M )) ≡ (M
′′ )da mod na
a a
qui constitue sa signature du message M .
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 )
fb (M ) = M eb mod nb
Elle envoie à Bob le couple
′ )
(fb (M ), M
Bob décode en calculant d’une part
′ ) ≡ M
fa (M ′′ mod na
′ )) = f −1 (fa (f −1 (fb (M )))) ≡ M
fb−1 (fa ((M mod nb
b a
Les deux protocoles ont leurs avantages et inconvénients. On préfère en
général le premier protocole car il suit de plus près la manière traditionnelle
de signer une lettre: on signe d’abord avant de la mettre dans l’enveloppe.
Le second protocole consiste à mettre la lettre dans l’enveloppe et à signer
l’enveloppe.
9.3. LE SYSTÈME RSA 109
9.3.7 Exemple de code RSA.
On choisit un alphabet à 40 lettres
A= 0, B= 1, C= 2, D= 3, E= 4, F= 5, ...,
..., X= 23, Y= 24, Z= 25, =26, .= 27, ?= 28,
euros= 29, 0= 30, 1= 31, ..., 8= 38, 9= 39,
On choisit comme clé publique le couple
n = 2047, e = 179
on a
402 ≤ 2047 ≤ 403
on choisit donc de découper les messages en clair en blocs de deux lettres et
les messages chirés en blocs de trois lettres.
On écrit chaque bloc de deux symboles clairs X1 X2 sous la forme 40x1 + x2
où xi est le nombre entre 1 et 39 correspondant à Xi .
On écrit chaque bloc de trois symboles codés Y1 Y2 Y3 sous la forme 402 y1 +
40y2 + y3 où yi est le nombre entre 0 et 39 correspondant à Yi .
Le message clair est
ENVOYEZ euros2500.
Pour le coder on considère les blocs
EN = 4 × 40 + 13 = 173, VO = 21 × 40 + 14 = 854,
YE = 24 × 40 + 4 = 964, Z = 1026,
euros2 = 1192, 50 = 1430,
0. = 1227
Codage du message
EN → (173)179 mod 2047 = 854 = 0 × 402 + 21 × 40 + 14 = AVO
VO → (854)179 mod 2047 = 1315 = 0 × 402 + 32 × 40 + 35 = A25
YE → (964)179 mod 2047 = 452 = 0 × 402 + 11 × 40 + 12 = ALM
Z → (1026)179 mod 2047 = 1295 = 0 × 402 + 32 × 40 + 15 = A2P
euros2 → (1192)179 mod 2047 = 511 = 0 × 402 + 12 × 40 + 31 = AM1
110 CHAPITRE 9. CODES À CLEFS PUBLIQUES
50 → (1430)179 mod 2047 = 1996 = 1 × 402 + 9 × 40 + 36 = BJ6
0. → (1227)179 mod 2047 = 88 = 0 × 402 + 2 × 40 + 8 = ACI
Le message codé est donc
AVOA25ALMA2PAM1BJ6ACI
Pour décoder on factorise
2047 = 23 × 89 =⇒ ϕ(2047) = 22 × 88 = 1936
et on déduit par l’algorithme d’Euclide que
d = 411.
Remarque 9.3.3. En fait les paramètres de ce code sont mal choisis car
22 divise 88 et donc on peut prendre pour d n’importe quel inverse de 179
modulo 88 comme par exemple 59. On constate que 411 = 59 + 4 × 88
9.3.8 Sécurité du système RSA.
La sécurité de RSA repose sur les faits suivants:
• on ne sait pas décoder sans connaı̂tre l’exposant d de la clé secrète
• trouver d équivaut à factoriser n = pq
• on ne connait pas d’algorithme polynomial en temps en fonction de la
taille des données (c’est à dire de la longueur des nombres n et e) pour
calculer d c’est à dire pour factoriser n, les meilleurs sont en
√
O eC ln2 n ln2 ln2 n opérations.
on dit que l’algorithme est sous-exponentiel
Ce sont des faits d’expérience pas des théorèmes.
Depuis sa création le système RSA a résisté à toutes les attaques de manière
satisfaisante si l’on choisit bien p, q et e, mais il faut constamment aug-
menter la taille de pq. On est partie de 512 bits, et même 389 bits pour
les cartes à puces, à 2048 bits. Cette augmentation de taille est neces-
sitée par l’augmentation de la puissance des ordinateurs et par les progrès
mathématiques des algorithmes de factorisations des entiers.
Pour construire et utiliser un code RSA on a besoin de savoir faire rapide-
ment (c’est à dire en temps polynomial au plus) les opérations suivantes:
9.3. LE SYSTÈME RSA 111
• construire des grands nombres premiers
• calculer des PGCD
• faire de l’arithmétique modulaire (addition, multiplication, exponen-
tiation)
Pour évaluer et tester la sécurité du code RSA, il faut en particulier
• évaluer la rapidité des algorithmes de factorisations de grands nombres
entiers
• Démontrer que la clef secrète de déchirement d ne peut pas être
obtenue sans factoriser n = pq et plus généralement qu’elle ne peut
pas être calculée en temps polynomial en fonction de n.
• montrer que l’on ne peut pas décoder un message sans la clef secrète
9.3.9 Attaques du système RSA.
Bien que le système RSA soit considéré comme sûr il y a de nombreuses
manières de mal l’utiliser et d’ouvrir des failles de sécurité.
Attaques sur les petits exposants I
On envoie le même message x à plusieurs destinataires qui ont pour clef
publique (e, n1 ), (e, n2 ),...,(e, nk ) avec le même exposant e. On envoie donc
yi = xe (mod ni ) pour 1 ≤ i ≤ k.
Si on suppose que le nombre de destinataires, k, est supérieur à l’exposant e
il devient facile à un opposant qui intercepte l’ensemble des messages codés
(yi )1≤i≤k de les décrypter.
Supposons pour simplier
que les (ni )1≤i≤k soient deux à deux premiers
entre eux. Soit n = ni . Le théorème des restes chinois (théorème
1≤i≤k
13.3.19 page 174, montre qu’il existe y avec y < n tel que
y ≡ yi mod ni , 1≤i≤k
Nous avons donc
y ≡ xe mod ni , 1≤i≤k
112 CHAPITRE 9. CODES À CLEFS PUBLIQUES
et par conséquent puisque les (ni )1≤i≤k sont deux à deux premiers entre eux
on a
y ≡ xe mod n
Comme l’entier naturel xe est plus petit que n car x est plus petit que chacun
des ni et que n est le produit de plus de e entiers ni (ici l’hypothèse que
l’exposant est petit, i.e. inférieur à k) est cruciale. Comme y < n on en
déduit que l’on a en fait
y = xe
Comme e est public il ne reste plus qu’extraire la racine e-ième de y pour
récupérer x.
Attaques sur les petits exposants II
Si l’exposant public e est petit il existe un algorithme polynomial en fonction
de la taille des données qui permet de trouver la racine d’une équation
polynomiale modulo n de degré e si au moins l’une des racines est de taille
1
inférieure à n e .
On peut utiliser cet algorithme pour décrypter ecacement un message cryp-
té en RSA avec un exposant public e = 3 si l’on connait les deux tiers des
bits en clair du message. De même si e = 3 et si l’on dispose de deux
messages dont les textes en clair ne dièrent que sur une fenêtre connue de
longueur 91 de celle du texte clair on peut décrypter les deux messages.
√
On a des résultats analogues si l’exposant secret d est petit < 4 n.
9.4 Le cryptosystème El Gamal.
Le cryptosystème El Gamal est basée sur la fonction à sens unique loga-
rithme discret. On considère un groupe cyclique ni, G, de cardinal n
engendré par un générateur, g. Donc
G = g i 0 ≤ i ≤ n − 1}
On suppose que le calcul de gi est “facile”, “rapide” “calculatoirement facile”
(c’est à dire faisable en temps polynomial en fonction de la taille des données)
mais que le calcul de i connaissant gi n’est “pas facile”, est “lent”, “calcu-
latoirement dicile” (c’est à dire: n’est pas faisable en temps polynomial
en fonction de la taille des données). Si a = gi , i est appelé le logarithme
discret de a.
9.4. LE CRYPTOSYSTÈME EL GAMAL 113
Autrement dit G est isomorphe au sous groupe additif de Z/nZ et la sécurité
du cryptosystème El-Gamal repose sur la diculté à calculer explicitement
cet isomorphisme en un temps raisonnable.
On utilise les deux réalisations suivantes de G. On considère un nombre
premier p et on choisit ∗
G = Z/pZ ≃ F∗p
c’est à dire que le G est le groupe des éléments inversible pour la mul-
tiplication de Z/pZ les entiers modulo p, pour la dénition voir dans les
compléments mathématiques, le paragraphe sur les congruences 13.3.4 page
170.
D’après un théorème de Gauss, théorème 13.3.17 page 173, le groupe multi-
plicatif de Z/pZ est cyclique et le calcul de gi mod p est rapide alors qu’on
ne connait pas d’algorithme en temps polynomial pour calculer i connais-
sant a = gi pour de bons choix de p. Plus généralement on peut considérer
le groupe multiplicatif des éléments inversibles d’un corps ni à q = ps
éléments, Fq .
Une autre réalisation est de prendre comme groupe G le groupe des points
d’une courbe elliptique sur un corps ni, E(Fq ) qui donne lieu aux cryp-
tosystèmes elliptiques, cf le paragraphe 9.5 page 118. Ils se développent
actuellement car ils possèdent des avantages en terme de taille de clé et de
sécurité prouvée.
9.4.1 Description du cryptosystème El Gamal.
On considère le cryptosystème suivant: Soit p un nombre premier tel que le
problème du logarithme discret dans Z/pZ soit dicile.
Soit g une racine primitive modulo p, cf. le théorème 13.3.17 page 173, c’est
à dire que g est un générateur du groupe cyclique (Z/pZ)∗ .
∗ ∗ ∗
Soit P = Z/pZ , les messages en clair, et soit C = Z/pZ × Z/pZ les
messages cryptés et enn soit l’espace des clefs
(p, g, β) est la clef publique
Kb = (p, g, α, β); β ≡ gα mod p où
α est la clef secrète
Alice veut transmettre un message, M, à Bob
1. Bob choisit un grand nombre premier pb , un générateur gb du groupe
cyclique multiplicatif Z/pb Z et un entier αb inférieurs à pb − 1
114 CHAPITRE 9. CODES À CLEFS PUBLIQUES
2. Bob calcule βb = gbαb ; alors le triplet (pb , gb , βb ) constitue sa clef
publique, αb est sa clef secrète.
3. Alice découpe le message M en blocs M de taille inférieure à pb , elle
choisit un entier ka (inférieur à pb − 1) pour chacun des blocs M et
calcule
y1 ≡ gbka (mod pb ) et y2 = βbka M
La paire eKb (M, ka ) = (y1 , y2 ) est le message codé qu’Alice envoie à Bob.
Pour décoder
1. Bob calcule
M ≡ y2 (y1αb )−1 mod pb
Comme y1αb = gbka αb (mod p) on a:
dK (y1 , y2 ) = y2 (y1αb )−1 ≡ βbka M (gbka αb )−1 ≡
≡ gbαb ka M gb−αb ka ≡ M mod p
et comme M est inférieur à pb il n’y a pas d’ambiguité dans le décodage.
Pour une bonne sécurité, Alice doit changer souvent ka .
9.4.2 Signature El Gamal.
On reprend les notations précédentes. Soit M un bloc d’un message M
qu’Alice veut transmettre en le signant à Bob.
1. Alice choisit elle-aussi un grand
nombre∗ premier pa tel que le problème
du logarithme discret dans Z/pa Z soit dicile.
∗
2. Elle choisit aussi un générateur ga de Z/pa Z et un entier 0 ≤ αa ≤
pa − 2 et elle calcule βa = gaαa .
Elle dispose ainsi elle aussi d’une clef publique (pa , ga , βa ) et d’une clef privée
(secrète) αa . Pour signer le message M , Alice réalise les opérations suivantes
1. elle choisit ka′ ∈ (Z/pa Z)∗ secret et premier à pa − 1.
2. elle calcule
′
γa ≡ gaka mod pa
−1
δa ≡ (M − αa γa )ka′ mod (pa − 1)
9.4. LE CRYPTOSYSTÈME EL GAMAL 115
3. la signature du bloc M est alors signKa (M, ka′ ) avec
signKa (M, ka′ ) = (γa , δa )
4. Puis elle envoie le couple
eKb (M, ka ), signKa (M, ka′ )
c’est à dire le quadruplet (y1 , y2 ), (γa , δa ) .
On constate que
βaγa γaδa ≡ gaM [pa ]
Remarque 9.4.1. La condition ka′ premier à pa − 1 est nécessaire car Alice
utilise pour calculer δa la quantité k′ −1
a (mod pa − 1).
Cette procédure réalise bien une signature du bloc M . Pour vérier la
signature et décoder Bob suit le protocole suivant:
1. Bob reçoit le couple constitué par le message crypté
par Alice de la
signature de ce message c’est à dire le quadruplet (y1 , y2 ), (γa , δa ) .
2. Il décode le message à l’aide de sa clé secrète et récupère M .
3. Il calcule
βaγa γaδa mod pa
et il vérie que
βaγa γaδa ≡ gaM
S’il en est ainsi il est sûr que l’expéditeur du message est bien Alice.
On constate que cette procédure réalise bien une signature du message M
car pour fabriquer le couple (γa , δa ) Alice a utilisé sa clef secrète et si l’on
remplace dans la formule donnant δa la clé secrète αa par un autre nombre
compris entre 0 et pa − 1 on n’aura plus l’égalité
βaγa γaδa ≡ gaM mod pa
116 CHAPITRE 9. CODES À CLEFS PUBLIQUES
9.4.3 Sécurité du système EL Gamal.
La sécurité du cryptosystème EL Gamal repose sur les faits suivants:
• on ne sait pas décoder sans connaı̂tre la clé secrète α
• trouver α équivaut à trouver le logarithme discret de β = gα dans
(Z/pZ)∗
• on ne connait pas d’algorithme polynomial en temps en fonction de
la taille des données (c’est à dire de la longueur du nombre p) pour
calculer α. Les meilleurs sont en
√
O eC ln2 (p) ln2 ln2 (p) opérations.
Ce sont des faits d’expérience pas des théorèmes.
9.4.4 Exemple académique de code El Gamal.
Alice et Bob veulent correspondre en employant le système El-Gamal. Alice
choisit comme paramètres
pa = 263, ga = 5, αa = 47
Bob choisit comme paramètres
pb = 257, gb = 5, αb = 67
On vérie facilement que pa et pb sont des nombres premiers, que ga et gb
sont respectivement des générateurs des groupes cycliques Z/pa Z et Z/pb Z.
Il sut pour cela de vérier (par exemple à l’aide d’une table ou d’un système
de calcul faisant de l’arithmétique modulaire) que
gae ≡ 1 mod pa ∀ 1 < e < pa − 1 divisant pa − 1
gbe ≡ 1 mod pb ∀ 1 < e < pb − 1 divisant pb − 1
En eet d’après le corollaire 13.3.24 le plus petit entier non nul e tel que
gae ≡ 1 (mod pa ) est un diviseur de pa − 1. Ici pa − 1 = 262 = 2 × 131, donc
il sut de vérier que ga131 ≡ 1 (mod 263) et pb − 1 = 256 = 28 , donc il
sut de vérier que gb128 ≡ 1 (mod 257).
Alice calcule βa = pαa a (mod pa ) = 40 et sa clef publique est
Ka = (pa = 263, ga = 5, βa = 40)
9.4. LE CRYPTOSYSTÈME EL GAMAL 117
sa clé secrète est αa = 47.
Bob calcule βb = pαb b (mod pb ) = 201 et sa clef publique est
Kb = (pb = 257, gb = 5, βb = 201)
sa clé secrète est αb = 67.
On suppose qu’Alice et Bob s’envoient des nombres de deux chires en base
10. Alice envoie à Bob le message M qu’elle code en (y1 , y2 ) = (76, 251) à
l’aide la clé publique de Bob et d’un ka qu’elle garde secret.
Bob décode le message en eectuant l’opération
y2 (y1αb )−1 (mod 257) = 251 × 76−67 (mod 257)
256−67
= 251 × 76 (mod 257)
= 251 × 76189 (mod 257) = 251 × 155 (mod 257)
= (−6) × 155 (mod 257) = 98
.Le message en clair d’Alice est M = 98.
On peut retrouver le paramètre ka à l’aide d’une table des puissances de gb
(mod 257). On sait que
y1 = gbka (mod 257) = 76, y2 = βbka M (mod 257) = 251
On trouve à l’aide d’une table ou d’un logiciel de calcul d’arithmétique
modulaire ka = 139.
Si Alice veut envoyer le message M = 87 à Bob avec les mêmes paramètres,
y compris ka , elle eectue le calcul
z1 = y1 = gbka (mod 257) = 76
z2 = βbka × 87 (mod 257) = 201139 × 87 (mod 257) = 173
Pour un bon choix de p le système El-Gamal resiste bien aux attaques.
Comme le système RSA il est assez lent et nécessite des clefs longues 1024
à 2048 bits actuellement). Il se transpose sans diculté à n’importe quel
groupe cyclique où le problème du logarithme discret est dicile, en parti-
culier pour le groupe des points d’une courbe elliptique sur un corps ni.
Avec ce groupe malgré les dicultés algorithmique on a de bons codes avec
des clefs courtes (128 à 256 bits actuellement) dont la sécurité peut être au
moins partiellement prouvée.
118 CHAPITRE 9. CODES À CLEFS PUBLIQUES
9.5 Le cryptosystème elliptique Menezes-Vanstone.
Ce système basé sur le groupe des points d’une courbe elliptique, cf. la
section 13.7 page 197, dénie sur un corps ni Fq est une variante du cryp-
tosystème El Gamal.
Soit E une courbe elliptique dénie sur le corps ni Fp ≃ Z/pZ (p > 3
premier) telle que E contienne un sous-groupe cyclique H, engendré par un
point B de E, dans lequel le problème du logarithme discret soit dicile.
Soit
P = F∗p × F∗p , les textes en clair
C = E × F∗p × F∗p , les textes chirés
Posons, |H| la cardinal de H, et posons
K = (E, α, a, β) : β = a α
l’espace des clefs où α ∈ E. Les valeurs α et β sont publiques et a ∈ Z/|H|Z
est secret et choisi au hasard.
Pour K = (E, α, a, β), et pour un nombre aléatoire secret k ∈ Z/|H|Z, et
pour x = (x1 , x2 ) ∈ P = F∗p × F∗p , on chire le message x à l’aide de la clef
K et du nombre aléatoire k en posant
EK (x, k) = (y0 , y1 , y2 ),
où
y0 = k α, (c1 , c2 ) = k β,
y1 = c1 x1 (mod p), y2 = c2 x2 (mod p)
Pour déchirer un message chiré
y = (y0 , y1 , y2 )
on eectue les opérations
DK (y) = y1 c−1
1 (mod p), y2 c−1
2 (mod p) ,
où a y0 = (c1 , c2 ).
9.6. INFRASTRUCTURE DES SYSTÈMES À CLEF PUBLIQUE 119
9.6 Infrastructure des systèmes à clef publique.
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.
On a un ensemble d’interlocuteurs en réseau qui se sont mis d’accord sur
un cryptosystème à clef publique (par exemple RSA), sur une fonction de
hachage (cf. le chapitre 10 page 127) et sur un protocole de signature. On
suppose que chacun d’entre eux dispose d’une paire (Ke , Kd ) (clé publique,
clé sécrète), (clé de chirement, clé de déchirement) et que chacun d’entre
eux est capable de chirer, déchirer et signer.
Du fait que les clés publiques ne sont pas condentielles, il n’est pas néces-
saire 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 eet si Alice désire transmettre sa clef publique à Bob, n’importe quel
opposant, Martin par exemple, peut intercepter le message la contenant.
Martin peut ensuite envoyer un message à 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 soit-disant clé publique d’Alice que Bob croit
posséder. Une fois qu’il les a décryptés et lu il peut les envoyer à Alice dont
il possède la clé publique en les modiant 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 certicats.
Un certicat consiste en une clef publique et une identité digitale (par ex-
emple 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 or-
ganisation en laquelle on a conance et appelée un Tiers de Conance
(Trusted Third Party ou TTP ) ou encore Certication Authority ou
CA.
Pratiquement on peut par exemple concaténer, mettre bout à bout, la clef
publique, le nom de son possesseur et signer le message obtenu à l’aide de
la clef privée du Tiers de Conance (il faut que personne ne puisse usurper
l’identité du Tiers de Conance).
120 CHAPITRE 9. CODES À CLEFS PUBLIQUES
Il existe plusieurs modèles de réseau avec Tiers de Conance, 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
CA.
Un système très employé de système hiérarchique de Tiers de Conance est
le modèle X.509 , [34].
Un autre système en voie de développement est le chirement basée sur
l’identité, ID-PKC , Identity Based Public Key Cryptography dont
l’idée est due à I. Shamir et dont la première réalisation pratique est due à
Boneh et Franklin, il est décrit au paragraphe 9.6.1 page 122. Leur solution
est basée sur l’accouplement de Weil sur les courbes elliptiques, cf. section
13.7.5 page 205.
Il y a aussi des systèmes non hiérarchiques de PKI fondé sur des chaı̂nes de
certicats et une distribution de clefs décentralisées.
Les fonctions principales d’un PKI sont
• Émission de paires de clefs (clé publique, clé privée)
• Attribution d’identiants uniques aux participants au réseau
• Conservation des clefs
1. Dépot de clefs, utile quand il s’agit de garantir la continuité d’un
service en cas de changement de titulaire
2. Archivage des clefs, utile pour pouvoir relire de vieux messages
3. Sauvegarde des clefs, utile en cas de perte de clef
4. Récuperation de clef perdues
ces fonctions ne sont pas très distinctes
• Émission et publication des certicats
• Révocation des certicats, maintien et émission des listes de certicats
révoqués, CRL.
• xer leur durée de validité
• Archiver les certicats expirés (important pour les problèmes de non-
répudiation)
• Donner une datation sécurisée
9.6. INFRASTRUCTURE DES SYSTÈMES À CLEF PUBLIQUE 121
Un certain nombre de règles doivent être respectées
a) [Axiome 1]: les clés secrètes doivent l’être et le rester. En pratique
personne, en dehors des propriétaires légitimes, ne doit y avoir accès;
la sécurité n’étant pas basée sur l’ignorance des cryptosystèmes mais
sur celle des clés, il est plus facile de changer une clef compromise
qu’un algorithme.
b) [Axiome 2]: les clés secrètes doivent exister seulement
1. en clair, à l’intérieur d’un module résistant (TRSM , Tamper
Resistant Security Module)
2. chirées ou au moins en morceaux à l’extérieur.
c) [Axiome 3]: limiter le déploiement des clefs: les clés doivent se trouver
en un nombre minimal d’endroits pour limiter les expositions et les
risques.
d) [Axiome 4]: séparer les clefs: les clés doivent être crées et utilisées pour
un seul objectif, le ranement dépendant de la politique de sécurité.
e) [Axiome 5]: synchroniser les clés: il faut vérier que toute clé a été
employée sans risque pour la sécurité des autres clés.
f) [Axiome 6]: journal des événements: tous les événements de gestion
de toutes les clefs sont transcrits dans un journal, lui même géré de
manière sûre.
Exemple 9.6.1 (Certicat PGP). Le certicat PGP, utilisé en PKI dis-
tribuée, contient les informations suivantes
• numéro de version PGP utilisée
• la clef publique du porteur du certicat ainsi que l’algorithme employé
(RSA, DH ou DSA)
• la signature digitale du propriétaire du certicat
• les informations sur l’identité du porteur du certicat
• la période de validité du certicat
• l’algorithme symétrique préféré du propriétaire du certicat qui sera
utilisé pour chirer l’information
122 CHAPITRE 9. CODES À CLEFS PUBLIQUES
Exemple 9.6.2 (Certicat X.509). Le certicat X.509, utilisé en PKI
hiérarchique, contient les informations suivantes
• Version: numéro de version X.509 utilisée
• Serial number : numéro de série du certicat (propre à chaque CA)
• Signature Algo ID :identiant du type de signature utilisée
• Issuer Name: Distinguished Name (DN) du CA qui émet le certicat.
• Validity period: la période de validité du certicat
• Subject Name: Distinguished Name du détenteur de la clef publique.
• Subject public key info: informations sur la clef publique de ce certi-
cat.
• Issuer unique ID : identiant unique de l’émetteur de ce certicat.
• Subject unique ID : identiant unique du détenteur de la clef publique.
• Extensions: Extensions génériques optionnelles.
• Signature: signature numérique du CA sur les champs précédents.
9.6.1 Cryptographie basée sur l’identité.
Dans ce schéma la clef publique d’un utilisateur, Alice, est indéniablement
lié à son identité (user ID), ce peut-être une concaténation de son adresse,
son numéro de sécurité, sociale, son numéro de téléphone...
Ensuite un algorithme public permet de calculer la clef publique d’Alice,
donc plus besoin de consulter des annuaires et pas de risque d’usurpation
d’identité à ce stade.
Un tiers de conance appelé KGC , Key Generator Center possède un
secret, la clé maı̂tre ou Master Key , qui lui permet de calculer la clé
privée d’Alice après vérication de son identité.
La sûreté du système repose sur la diculté de calculer la clé maı̂tre à partir
de couples (clé privée, clé publique).
Le point faible du système est que tout repose sur la conance envers le KGC
qui peut contrefaire toute signature et dispose de toutes les clefs privées.
Pour remédier à cette faiblesse on peut envisager d’avoir plusieur KGC dont
9.6. INFRASTRUCTURE DES SYSTÈMES À CLEF PUBLIQUE 123
chacun ne fabrique qu’un morceau de la clé privée qui est nalement as-
semblée par l’utilisateur, Alice, qui sera donc la seule à la connaı̂tre.
Un schéma de cryptographie basée sur l’identité (ou Identity Based En-
cryption en anglais, en abrégé IBE proposé par Boneh et Franklin [6] est
le suivant:
Le KGC dispose de deux groupes (G1 , +) et (G2, ∗) cycliques
d’ordre n et d’un couplage symétrique e, c’est à dire d’une ap-
plication
e : G1 × G1 −→ G2
telle que si on note 0 l’élément neutre de G1 et 1 celui de G2 on
ait
1. e(S1 + S2 , T ) = e(S1 , T ) ∗ e(S2 , T ), pour tous S1 , S2 , T ∈ G1
2. e(S, T1 + T2 ) = e(S, T1 ) ∗ e(S, T2 ), pour tous S, T1 , T2 ∈ G1
3. e(S, T ) = 1, pour tout S ∈ G1 , resp pour tout T ∈ G1
implique T = 0, resp. S = 0.
4. e(S, T ) soit calculable rapidement.
Il dispose d’un générateur P de G1 .
∗
Il choisit aléatoirement s ∈ Z/qZ , la clef maı̂tre, et calcule
Ppub = sP = P +P + + P.
s fois
Il choisit deux fonctions de hachage cryptographiques
H1 : {0, 1}∗ −→ G∗1
H2 : G2 −→ {0, 1}n
où {0, 1}∗ désigne les suites nies composées d’éléments de {0, 1},
autrement dit une suite arbitraire nie de 0 et de 1 et G∗1 désigne
les suites nies composées d’éléments de G1 , autrement dit une
suite arbitraire nie de S ∈ G1 et où n est un entier xé.
On note M = {0, 1}n l’espace des messages clairs et C = G∗1 × {0, 1}n
l’espace des messages chirés
La clef secrète de l’utilisateur est faite de la manière suivante.
Pour une chaı̂ne de caractère ID représentant la clef publique
d’Alice
124 CHAPITRE 9. CODES À CLEFS PUBLIQUES
1. le KGC calcule QID = H1 (ID) ∈ G∗1
2. il génère la clef secrète d’Alice: dID = sQID
Pour chirer un message M ∈ M avec la clef publique ID d’Alice, Bob
calcule
1. QID = H1 (ID)
∗
2. Il choisit aléatoirement r ∈ Z/qZ
r
3. C = rP, M ⊕ H2 gID ∈ G∗1 × {0, 1}n où ⊕ est l’opération XOR
habituelle sur les suites de 0 et de 1 et où gID = e(QID , Ppub ) ∈ G∗2 .
Pour déchirer le message chiré C = (U, V ) ∈ G∗1 × {0, 1}n Alice eectue
les opérations suivantes
1. Elle calcule M = V ⊕ H2 e(dID , U )
On a bien
e(dID , U ) = e(sQID , U = e(sQID , rP ) = e(QiD , P )sr
= eQID , sP )r = e(QID , PPUB = gIDr
r
et donc H2 e(dID , U ) = H2 gID et par conséquent, comme ⊕ est involutif,
Alice a bien récupéré le message en clair envoyé par Bob.
En pratique on choisit une courbe elliptique, E, sur un corps ni, Fq . Comme
groupe G1 on prend un sous-groupe, E[n] = G1 , cyclique de E(Fq ) d’ordre
élevé engendré par un point P ∈ E(Fq ) comme groupe G2 le groupe n = G2 .
On prend comme couplage e une modication de l’accouplement de Weil.
9.6.2 Le protocole SS.
SSL(Secure Socket Layer) est un protocole de sécurisation des échanges,
développé par Netscape. Il a été conçu pour assurer la sécurité des transac-
tions sur Internet (notamment entre un client et un serveur), et il est intégré
depuis 1994 dans les navigateurs.
Il existe plusieurs versions: la version 2.0 développée par Netscape; la version
3.0 qui est actuellement la plus répandue, et la version 3.1 baptisée TLS
(transport Layer Security, RFC 2246) et standardisée par l’IETF (Internet
Engineering Task Force).
SSL fonctionne de manière indépendante par rapport aux applications qui
l’utilisent; il est obligatoirement au dessus de la couche TCP et certains le
considèrent comme un protocole de niveau 5 (couche session).
SSL permet d’assurer les services de sécurité suivants:
9.6. INFRASTRUCTURE DES SYSTÈMES À CLEF PUBLIQUE 125
• condentialité : elle est obtenue par l’utilisation d’algorithmes à chire-
ment symétrique de blocs comme DES, FORTEZZA, IDEA, 3DES ou
RC2, ou par des algorithmes à chirement symétrique de ots comme
RC4 (la longueur des clés peut être limitée suivant les législations
propres à l’exportation, et le padding correspondant s’applique aux
algorithmes par blocs).
• intégrité : l’intégrité des données est assurée par l’utilisation de MACs
(Message Authentication Code) basés sur les fonctions de hachage
MD5 (16 octets) ou SHA-1 (20 octets).
• authentication : SSL permet l’authentication des 2 entités (authen-
tication client facultative) basé sur des certicats X.509, et l’authen-
tication des données grâce aux MACs.
126 CHAPITRE 9. CODES À CLEFS PUBLIQUES
Système hiérarchique de Tiers de Conance
Système non-hiérarchique de Tiers de Conance
Chapitre 10
Fonctions de Hachage.
Les procédures de signature précédentes ont un coût prohibitif pour signer
des longs messages car la signature est aussi longue que le message. On
double donc la longueur du texte à crypter.
Pour réduire la longueur de la signature on peut utiliser une fonction de
hachage cryptographique (hash function en anglais), h, ou fonction de
condensation. C’est une fonction à sens unique qui sera publique dans les
applications.
Les fonctions de hachage ont d’autres applications cryptographiques que la
signature, cf le chapitre 11 page 134 sur les protocoles cryptographiques.
Une fonction de hachage est une fonction rapide à calculer mais dont l’image
réciproque est dans la classe des problèmes calculatoirement diciles (la
classe NP). Elle transforme un message de longueur arbitraire en une em-
preinte numérique ou code d’authentication du message de taille
xée, 160 bits en général actuellement. Pour des raisons de sécurité on tend
à augmenter la taille de l’empreinte.
Le schéma de calcul d’une signature avec une fonction de hachage est le
suivant:
message x longueur arbitraire
↓
empreinte numérique z = h(x) 160 bits
↓
signature y = signK (z) 320 bits
127
128 CHAPITRE 10. FONCTIONS DE HACHAGE
En réalité une fonctions de hachage prend un message x de taille inférieure
à N xé qu’elle transforme en une empreinte de taille 160 bits (ou 256 ou
384 ou 512).
Il existe des techniques classiques, cf. [31], pour étendre les fonctions de
hachage de domaine de départ ni (fonction de compression ) ≤ N en des
fonctions de hachage dont le domaine de départ est constitué de messages
de longueur arbitraire. Elles sont appelées alors fonctions de hachage
itérées. La principe pour l’itération est le suivant. On suppose que la
fonction h peut recevoir deux entrées
• une empreinte hi−1
• un bloc M de taille N
et donner en sortie une empreinte hi .
M −→
f −→ hi
hi−1 −→
On peut supposer que cette extension des fonctions de hachage est déjà faite.
Lorsqu’Alice souhaite envoyer un message signé, x, elle calcule d’abord l’em-
preinte numérique, z = h(x), elle signe avec y = signK (z) et transmet le
couple (x, y) par le canal de communication.
Tout le monde peut vérier la signature en calculant l’empreinte z = h(x)
et en utilisant le procédé de vérication de la signature verK (z, y).
10.1 Construction des fonctions de hachage.
La fonction de hachage doit être construite avec soin pour qu’elle n’aaiblisse
pas le protocole de signature. Un opposant comme Martin ne doit pas
pouvoir forger la signature d’Alice.
Comme une fonction de hachage n’est évidemment pas injective, il existe
des couples de messages x′ et x tels que h(x′ ) = h(x). L’attaque la plus
évidente consiste pour Martin à partir d’un message signé (x, y) authentique
(y = signK (x)) précedemment calculé par Alice à calculer z = h(x) et à
chercher x′ = x tel que h(x) = h(x′ ). Si Martin y parvient (x′ , y) est un
message valide.
Donnons tout d’abord quelques dénitions de qualités que l’on peut exiger
d’une fonction de hachage.
10.1. CONSTRUCTION DES FONCTIONS DE HACHAGE 129
Dénition 10.1.1. Une fonction de hachage h est à collisions faibles dif-
ciles si étant donné un message x, il est calculatoirement difficile d’obtenir
un message x′ = x tel que h(x) = h(x′ ).
Dénition 10.1.2. Une fonction de hachage h est à collisions fortes
difficiles s’il est calculatoirement difficile d’obtenir deux messages différents
x et x′ tels que h(x) = h(x′ )
Dénition 10.1.3. Une fonction de hachage est une fonction de hachage
à sens unique si étant donnée une empreinte numérique z, il est calcula-
toirement difficile de trouver un message x tels h(x) = z
Si une fonction de hachage est à collisions fortes diciles elle est bien sûr à
collisions faibles diciles, mais aussi à sens unique.
10.1.1 Attaques des anniversaires.
Une fonction de hachage doit aussi résister aux attaques des anniver-
saires.
Une méthode simple pour obtenir des collisions, i.e. des messages x et x′
tels que h(x) = h(x′ ) est l’attaque des anniversaires décrite ci-dessous.
On a une fonction de hachage h : X → Z où |X| = m < +∞ et |Z| = n et
m ≥ 2n. Dans ces conditions il y a au moins n collisions.
On va trouver la borne inférieure de la probabilité de trouver une collision
en tirant k messages aléatoires distincts. Cette borne dépend de k et n mais
pas de m. On fait l’hypothèse simplicatrice que |h−1 (z)| ≈ m/n.
Il est alors facile de calculer la probabilité pour que k éléments zi ∈ Z soient
tous distincts si l’on tire au hasard k éléments xi ∈ X.
On ordonne les zi en z1 ,..., zk . Le premier tirage z1 est arbitraire; la proba-
1
bilité pour que z2 = z1 est 1 − ; la probabilité pour que z3 soit distinct de
n
2
z1 et z2 est 1 − , etc...
n
La probabilité de non-collision est donc
1 2 k − 1
k−1
i
1− 1− ... 1 − = 1−
n n n n
i=1
avec un peu d’analyse élémentaire on voit facilement en utilisant l’approxi-
mation
e−x ≈ 1 − x si x petit
130 CHAPITRE 10. FONCTIONS DE HACHAGE
que:
k−1
i −i
k−1
k(k−1)
1− ≈ e n = e− 2n
n
i=1 i=1
k(k−1)
La probabilité d’une collision est donc 1 − e− 2n . Si l’on veut que cette
probabilité soit inférieure à ε alors il sut de prendre
1
k ≥ 2n log
1−ε
Par exemple dans une assemblée de 23 personnes la probabilité d’avoir deux
dates d’anniversaire égales est supérieure à 1/2.
Une empreinte de 40 bits est vulnérable à une attaque des anniversaires avec
probabilité supérieure à 1/2 en utilisant seulement 220 messages aléatoires.
Pour une empreinte de 128 bits il faut 264 messages aléatoires. Le choix
d’une empreinte de 160 bits donne une bonne résistance aux attaques an-
niversaires. Mais l’augmentation de la puissance de calcul disponible pour
un attaquant pousse à augmenter la taille des empreintes, c’est pourquoi
AES prévoit des empreintes de 256 à 512 bits.
10.1.2 Exemple académique de fonction de hachage.
Fonction de hachage de Chaum-van Heijst-Ptzmann. Elle n’est pas utilisée
en pratique car trop lente.
Soit p = 1 + 2q un grand nombre premier tel que q soit aussi premier. Soit
α et β deux éléments primitifs de (Z/pZ)∗ . La valeur de logα β n’est pas
publique et l’on suppose qu’elle est calculatoirement dicile à obtenir.
On démontre que la fonction de hachage
h : {0, 1 . . . , q − 1} × {0, 1 . . . , q − 1} −→ (Z/pZ)∗
(x1 , x2 ) −→ h(x1 , x2 ) = αx1 β x2
résiste aux collisions si le calcul de logα β est dicile.
10.1.3 Fonction de hachage standard.
Un standard actuel en matière de fonction de hachage est SHA-1 (Secure
Hash Algorithm ) avec une empreinte de taille 160 bits, faisant suite aux
standard MD4 (1990), MD5 (1992), SHA (1995), cf. [31].
10.1. CONSTRUCTION DES FONCTIONS DE HACHAGE 131
Depuis 2001, une nouvelle version de SHA-1, SHA-2, ainsi que les versions
SHA-256, SHA-384 et SHA-512 sont en cours de validation (256, 384, 512
est la taille en bits de l’empreinte).
Description sommaire de SHA:
1. Le message est complété pour que longueur soit un multiple de 512
bits; pour cela on ajoute un bit à 1, un certain nombres de bits à
0, et un entier sur 64 bits représentant la longueur du message avant
remplissage.
2. On initialise les registres A, B, C, D et E avec des constantes xées
3. Pour chaque bloc de 512 bits du message
(a) on copie A, B, C, D et E respectivement dans AA, BB, CC,
DD et EE
(b) on applique la fonction de compression, donnée ci dessous, à AA,
BB, CC, DD et EE pour le bloc courant
(c) on ajoute les valeurs trouvées à A, B, C, D et E
4. le résultat est la concaténation de A, B, C, D et E
Fonction de compression
1. Les 512 bits du bloc courant sont scindés en 16 mots de 32 bits
(W (0) , . . . , W (15) )
2. on réalise une expansion par
∀ i ∈ {16, . . . , 79}, W (i) = ROL1 W (i−3) ⊕W (i−8) ⊕W (i−14) ⊕W (i−16)
où ROLk représente un décalage circulaire de k-bits vers la gauche et
⊕ l’addition modulo 2 bit à bit et sans retenue (=ou exclusif).
3. Ces 80 mots de 42 bits sont utilisés pour modier les 5 variables d’état
A(i) , B (i) , C (i) , D (i) , E (i)
• on initialise
A(0) , B (0) , C (0) , D (0) , E (0) = AA, BB, CC, DD, EE
132 CHAPITRE 10. FONCTIONS DE HACHAGE
• pour i variant de 0 à 79
A(i+1) = ADD W (i) , ROL5 (1(i) , f (i) (B (i) , C (i) , D (i) , E (i) , K (i)
B (i+1) = A(i)
C (i+1) = ROL30 (B (i) )
D (i+1) = C (i)
E (i+1) = D (i)
où
• ADD représente l’addition modulo 232
• Les K (i) sont des constantes xées et les fonctions f (i) sont dé-
nies par
i f (i) K (i)
0 − 19 (X ∧ Y ) ∨ (X ∧ Z) 5A827999
30 − 39 X ⊕Y ⊕Z 6ED9EBA1
40 − 59 (X ∧ Y ) ∨ (X ∧ Z) ∨ (Y ∧ Z) 8F 1BBCDC
60 − 79 X ⊕Y ⊕Z CA62C1D6
où ∨ représente le ou inclusif et ∧ le et
l’architecture est représentée par le schéma 10.1
10.1. CONSTRUCTION DES FONCTIONS DE HACHAGE 133
bloc (512 bits)
expansion
80 mots de 32 bits
A ROL5 ADD
ROL30
Ki
C f (i)
Figure 10.1: Architecture du SHA
Chapitre 11
Quelques protocoles cryptographiques.
11.1 Protocoles de signature.
Nous avons déjà décrit des protocoles de signature RSA et El Gamal. Nous
allons décrire un protocole de signature utilisable avec les cryptosystèmes
symétriques et nous allons rappeler le protocole de signature pour un cryp-
tosystème à clef publique déjà décrit.
11.1.1 Protocole de signature à clef privée.
Signature d’un document à l’aide d’un cryptosystème à clef secrète et d’un
arbitre ou tiers de conance.
Les utilisateurs d’un cryptosystème à clef publique se choisissent un arbitre,
Yvan, c’est à dire une entité (personne, organisation, machine) en qui ils ont
toute conance.
Yvan communique avec Alice et Bob. Il partage une clé secrète KA avec
Alice et une clé secrète KB avec Bob.
Le protocole de signature est alors le suivant
1. Alice chire son message pour Bob avec la clé KA et envoie le résultat
à Yvan.
2. Yvan déchire le message avec KA et garde l’original.
3. Yvan assemble le message avec un avis certiant que le message vient
d’Alice. Il chire le tout avec KB et l’envoie à Bob.
4. Bob déchire le message d’Yvan avec KB . Il lit le message et le certi-
cat d’Yvan.
134
11.1. PROTOCOLES DE SIGNATURE 135
5. Comme il a conance en Yvan, il admet que le message reçu est con-
forme à l’original et vient bien d’Alice.
Ce protocole est-il sûr?
Les 4 qualités que l’on demande à un cryptosystème sont-elles bien présentes:
• Condentialité
• Intégrité des données.
• Identités des diérents interlocuteurs.
• Non-répudiation.
Bien sûr on suppose qu’Alice garde bien secrète la clef qu’elle partage avec
Yvan et qu’Yvan est vraiment un tiers de conance.
1. La signature est authentique car Yvan est respecté et seul Alice et lui
connaissent KA donc la message vient bien d’Alice.
2. La signature est infalsiable. Seule Alice (et Yvan qui est insoupçon-
nable) connait KA , donc seule Alice peut envoyer le message codé avec
KA .
3. La signature n’est pas réutilisable pour un autre message. Si Bob
essaie de prendre le certicat d’Yvan et de l’associer à un autre message
censé provenir d’Alice, cette dernière crierait à l’imposture. L’arbitre
demandera alors à Bob de produire le texte en clair. Il le chirerait
avec KA et comparerait avec le message original d’Alice. Il verra qu’ils
sont diérents et en informera qui de droit.
4. Le document est immuable. Si Bob falsiait le message après l’avoir
reçu, Yvan pourrait dévoiler l’imposture comme ci-dessus.
5. La signature ne peut pas être reniée. Si Alice prétend ne pas avoir
envoyé le message, le certicat d’Yvan prouverait le contraire (tout le
monde a conance en Yvan).
Bob pourrait nier avoir reçu le message mais alors un système d’accusé de
réception permettrait d’éviter ce problème.
136 CHAPITRE 11. PROTOCOLES CRYPTOGRAPHIQUES
11.1.2 Protocole de signature à clef publique.
Le protocole est simple
1. Alice chire le document d’une part avec sa clé privée, signant ainsi le
document, et d’autre part avec la clé publique de Bob
2. Alice envoie les deux document à Bob.
3. Bob déchire le premier document avec la clé publique d’Alice et le
second avec sa clé privée. Si les deux sont identiques il est sûr qu’Alice
est l’expéditeur.
Ce protocole est-il sûr?
Les 3 qualités que l’on demande à un cryptosystème sont-elles bien présentes:
• Intégrité des données.
• Identités des diérents interlocuteurs.
• Non-répudiation.
Bien sûr on suppose que chacun des correspondants ne communique à per-
sonne sa clé secrète
1. La signature est authentique: quand Bob vérie le message avec la clé
publique d’Alice, il est sûr que seule Alice pouvait l’avoir crypté avec
sa clé privée.
2. La signature est infalsiable. Seule Alice connait sa clé privée.
3. La signature n’est pas réutilisable. La signature est une fonction du
document et elle ne peut pas être transférée sur n’importe quel autre
document.
4. Le document est immuable. Si Bob falsiait le message après l’avoir
reçu, il ne pourrait pas le signer car la clé privée d’Alice n’est connue
que d’elle seule.
5. La signature ne peut pas être reniée. Bob n’a pas besoin de l’aide
d’Alice pour vérier sa signature.
11.2. PROTOCOLES DE DATATION 137
11.2 Protocoles de datation.
Dans certaines circonstances Bob peut duper Alice.
Il peut réutiliser le document (par exemple un chèque signé) et le présenter
plusieurs fois à la banque. Pour l’éviter les signatures numériques compor-
tent souvent une datation (date+heure). Cette datation de la signature est
attachée au message et signée avec lui.
La banque stocke ces datations dans une base de données.
11.2.1 Protocole de datation.
On peut coner la datation des documents à un service ociel de datation.
Bob veut dater une signature du message x. Il dispose d’une fonction de
hachage à sens unique, h. Il suit alors le protocole suivant
1. Bob calcule z = h(x) et y = sigK (z)
2. Bob soumet (z, y) au service de datation.
3. Le service de datation ajoute la date D et signe le triplet (z, y, D)
Bob peut aussi dater un document, x, seul. Pour cela il collecte un cer-
tain nombre d’ informations publiques récentes (qui n’auraient pas pu être
prédites auparavant), notée pub. Par exemple les derniers résultats des
courses hippiques et les cours actuels de la bourse. Il dispose aussi d’une
fonction de hachage publique à sens unique, h. Bob suit alors le protocole
suivant:
1. Bob calcule z = h(x)
2. Bob calcule z ′ = h(z||pub)
3. Bob calcule y = sigK (z ′ )
4. Bob publie (z, pub, y) dans le prochain quotidien
La date de la signature de Bob est comprise entre la date des informations
pub et la date de parution du quotidien.
138 CHAPITRE 11. PROTOCOLES CRYPTOGRAPHIQUES
11.3 Protocole de signature à clef publique et fonction de
hachage.
Les algorithmes à clef publique sont trop lents pour signer de longs docu-
ments.
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:
1. Alice calcule à l’aide de la fonction de hachage à sens unique, l’em-
preinte du document.
2. Alice chire, à l’aide de l’algorithme de signature numérique, cette em-
preinte avec sa clef privée, signant par la même occasion le document.
3. Alice envoie le document et l’empreinte signée à Bob (à l’aide de la
clef publique de Bob).
4. Bob calcule, à l’aide de la fonction de hachage à sens unique, l’emprein-
te du document qu’Alice lui a envoyé. Ensuite à l’aide de l’algorithme
de signature numérique, il déchire l’empreinte signée avec la clef
publique d’Alice. La signature est valide si l’empreinte de la signa-
ture est la même que l’empreinte qu’il a produite.
Avantage de ce procédé:
• rapidité de la transmission et de la comparaison des empreintes car
une empreinte ne comporte que 160 bits ou au plus 512.
• condentialité car la signature peut être gardée à part du message. On
peut donc vérier l’existence du document sans stocker son contenu.
11.4 Fonction de hachage et mot de passe.
Pour accéder à un ordinateur (ou à un distributeur de billet) on utilise
souvent un mot de passe qui doit être reconnu par l’ordinateur. S’il est
stocké dans l’ordinateur il y a danger pour la sécurité car un ordinateur
peut être facilement inltré (virus). Grâce à la fonction de hachage on peut
résoudre à ce problème:
11.5. PREUVE SANS TRANSFERT DE CONNAISSANCE 139
On dispose d’une fonction de hachage à sens unique, h. L’ordinateur ne
stocke pas le mot de passe mp d’Alice mais le résultat de la fonction de
hachage à sens unique appliquée à mp. Le protocole est donc le suivant:
1. Alice envoie son mot de passe mp à l’ordinateur.
2. L’ordinateur calcule h(mp)
3. L’ordinateur compare le résultat de ce calcul à celui qu’il a dans sa
base de données.
Ce protocole permet de se défendre contre le vol de la base des données des
mots de passe des utilisateurs.
En fait on peut encore améliorer ce protocole avec les protocoles de preuve
sans transfert de connaissance.
11.5 Preuve sans transfert de connaissance.
Un jeu de Pile ou face par Téléphone. Considérons la situation suivante,
cf. [37].
Alice et Bob viennent de divorcer et habitent dans des villes diérentes et
veulent par téléphone tirer à pile ou face pour savoir à qui va échoir la
voiture, la machine à laver, les livres, etc...
Mais Bob hésite à dire à Alice face pour s’entendre dire voilà je jette une
pièce,..., elle retombe,..., pas de chance c’est pile.
Ils veulent un protocole qui évite toute tricherie.
Ils se donnent un ensemble E par exemple E = {0, 1, . . . , n} et une partition
E = X0 ∪ X1 de E , X0 sera les entiers pairs de E et X1 les entiers impairs
de E. Puis ils se mettent d’accord sur une fonction à sens unique, f , de E
dans un ensemble F .
On considère le protocole suivant
1. Alice choisit un élément x ∈ E aléatoirement (c’est le jet de la pièce),
calcule y = f (x) et communique y à Bob (Bob ne peut pas retrouver
x à partir de y car f est à sens unique).
2. Bob choisit son bit aléatoire b ∈ {0, 1} et l’annonce à Alice
3. Alice déclare qui a gagné suivant que x ∈ Xb ou non: elle prouve sa
bonne foi en révélant x
140 CHAPITRE 11. PROTOCOLES CRYPTOGRAPHIQUES
4. Bob se convainc qu’il n’y a pas eu tricherie en vériant que y = f (x)
Ce protocole est-il sûr:
1. Si la fonction f est bien choisie la donnée de f (x) n’apprend rien à
Bob sur x.
2. Pour qu’Alice ne puisse pas tricher, il faut s’assurer qu’elle ne peut
pas fabriquer deux entiers x0 ∈ X0 et x1 ∈ X1 tels que f (x0 ) = f (x1 ),
par exemple on peut prendre f bijective car l’ensemble est de taille
réduite.
3. f doit être à sens unique en un sens fort pour que la connaissance de
f (x) n’apprenne rien à Bob sur l’appartenance de x à X0 ou X1
Ce protocole met en évidence la notion d’engagement : Alice s’engage sur
x en publiant f (x). Cela ne révèle rien sur x mais force Alice à ne pas
modier son choix.
11.5.1 Protocole de preuve sans transfert de connaissances.
Le protocole précédent peut être utilisé dans beaucoup de situation où l’on
veut prouver que l’on connait un secret sans avoir besoin de le révéler.
Pour accéder à un ordinateur on donne son mot de passe qui est reconnu par
l’ordinateur et donc stocké dedans. Si l’ordinateur auquel on se connecte est
lointain, le mot de passe circule (crypté) sur des canaux qui risquent d’être
espionnés.
Pour la sécurité il faudrait le changer souvent. Si la connexion est coupée
accidentellement, il faut le redonner sans avoir la possiblité d’en changer.
Le clavier sur lequel on compose le mot de passe peut être espionné.
Il y a donc un intérêt à avoir un système de reconnaissance sans envoi de
mot de passe même crypté.
Pour cela il faut disposer d’un secret personnel s et d’un protocole qui permet
de persuader l’ordinateur (ou la personne) auquel on se connecte (s’adresse)
qu’on connait s sans avoir à le révéler et ce à chaque fois à l’aide de messages
différents.
De tels protocoles existent ce sont des applications des idées de complexité
calculatoire et de fonctions à sens unique.
11.5. PREUVE SANS TRANSFERT DE CONNAISSANCE 141
Exemple 11.5.1 (Preuve de possession d’un logarithme discret). Cet ex-
emple est tiré de [37]. On se donne p un nombre premier et g une racine
primitive modulo p (théorème 13.3.17 page 173) qui sont publics et tels que
le problème du logarithme discret soit un problème calculatoirement dicile.
Supposons que P (le prouveur) détienne le nombre secret s et soit identié
par I = g s mod p. Il s’agit de convaincre V (le véricateur) que P connait
s.
Considérons le protocole suivant:
1. P choisit un r mod p − 1 aléatoire, il calcule t = αr (mod p) et le
communique à V .
2. V choisit un bit aléatoire ε = 0, 1 et le communique à P
x ≡ r mod p − 1 si ε = 0
3. P donne x à V où
x≡r+s si ε = 1
αx = t mod p si ε = 0
V vérie alors que x
.
α ≡ It mod p si ε = 1
Comme dans le protocole de pile ou face P s’est engagé sur r en communi-
quant t = αr .
Que peut faire un imposteur P ∗ qui ne connait pas s et veut se faire passer
pour P auprès de V .
• Il peut suivre le protocole et espérer que ε = 0; dans le cas contraire
il ne saura pas quel y communiquer à V.
• Il peut au contraire choisir un r aléatoire et communiquer à V la
αr
quantité t′ = . Si V choisit ε = 1 alors P ∗ donne x′ = r et survit à
I ′
la vérication αx = t′ I. Mais si ε = 0 alors P ∗ ne sait que faire.
Donc quel que soit la manière dont P ∗ s’y prenne il n’a qu’une chance sur
deux de donner la bonne réponse.
1. Au bout de k applications du protocole, V est convaincu avec proba-
1
bilité de 1 − k que son interlocuteur détient un logarithme de I
2
2. L’information révélée à V n’est qu’une liste d’entiers modulo p aléa-
toires et de leurs images par l’exponentielle x −→ αx . Le véricateur
V aurait pu aussi bien se la constituer seul en choisissant au hasard
des entiers modulo p et en les exponentiant modulo p.
142 CHAPITRE 11. PROTOCOLES CRYPTOGRAPHIQUES
3. P n’a révélé aucune information sur son secret le logarithme de I.
C’est un exemple de protocole interactif et sans transfert de connaissance
(zero knowledge proof).
Il y a d’autres protocoles qui permettent par exemple de réaliser un trans-
fert inconscient.
11.5.2 Transfert inconscient.
Alice dispose d’un ensemble de m secrets {s1 , s2 , . . . , sm }. Alice est prête à
en donner (vendre) un à Bob.
Bob aimerait obtenir le secret si , mais il ne souhaite pas révéler à Alice
lequel des secrets l’intéresse. Il existe des protocoles, [37], qui donnent une
solution à ce problème:
1. ils permettent à Bob de disposer de si
2. ils ne lui donnent aucune information sur les autres secrets sj , j = i
3. ils ne permettent pas à Alice de savoir quel secret elle a livré à Bob
Chapitre 12
La cryptographie et le droit.
Le droit joue un rôle important en cryptographie comme dans beaucoup de
techniques liées aux aspects régaliens du rôle de l’État. Le droit vient au
secours de l’État et des citoyens quand une technique menace leur intérêt et
au contraire vient au secours d’une technique quand ses limitations ne lui
permettent pas de remplir de manière transparente et sûre les missions qui
lui sont conées.
Par exemple s’il existait une cryptographie inviolable elle pourrait premet-
tre des usages frauduleux qui ne pourrait pas être détectés (transferts de
capitaux, espionnage,...). Au contraire s’il n’existait pas de cryptographie
sûre les États auraient du mal à communiquer de manière condentielle avec
leur ambassadeurs. Dans un cas comme dans l’autre les États édictent des
lois soit pour interdire l’utilisation libre d’une cryptographie inviolable soit
pour limiter l’usage de la cryptanalyse.
12.1 Quelques textes juridiques sur la cryptographie.
12.1.1 LOI n◦ 96-659 du 26 juillet 1996 .
LOI n◦ 96-659 du 26 juillet 1996 de réglementation des télécommunications (1)
Article 17. - L’article 28 de la loi n◦ 90-1170 du 29 décembre 1990 sur la réglemen-
tation des télécommunications est ainsi modié :
I. - Le I est ainsi modié :
1◦ Le premier alinéa est complété par une phrase ainsi rédigée :
On entend par moyen de cryptologie tout matériel ou logiciel conçu ou modi-
é dans le même objectif.
2◦ Les deuxième, troisième, quatrième et cinquième alinéas sont remplacés par les dispo-
sitions suivantes :
143
144 CHAPITRE 12. LA CRYPTOGRAPHIE ET LE DROIT
Pour préserver les intérêts de la défense nationale et de la sécurité intérieure
ou extérieure de l’Etat, tout en permettant la protection des informations et
le développement des communications et des transactions sécurisées :
1◦ L’utilisation d’un moyen ou d’une prestation de cryptologie est :
a) Libre :
- si le moyen ou la prestation de cryptologie ne permet pas d’assurer des
fonctions de condentialité, notamment lorsqu’il ne peut avoir comme objet
que d’authentier une communication ou d’assurer l’intégrité du message
transmis,
- ou si le moyen ou la prestation assure des fonctions de condentialité et
n’utilise que des conventions secrètes gérées selon les procédures et par un
organisme agréés dans les conditions dénies au II ;
b) Soumise à autorisation du Premier ministre dans les autres cas ;
2◦ La fourniture, l’importation de pays n’appartenant pas à la Communauté
européenne et l’exportation tant d’un moyen que d’une prestation de cryp-
tologie :
a) Sont soumises à autorisation préalable du Premier ministre lorsqu’ils as-
surent des fonctions de condentialité ; l’autorisation peut être subordonnée
à l’obligation pour le fournisseur de communiquer l’identité de l’acquéreur,
b) Sont soumises à la déclaration auprès du Premier ministre dans les autres
cas ;
3o Un décret xe les conditions dans lesquelles sont souscrites les déclara-
tions et accordées les autorisations. Ce décret prévoit :
a) Un régime simplié de déclaration ou d’autorisation pour certains types
de moyens ou de prestations ou pour certaines catégories d’utilisateurs ;
b) La substitution de la déclaration à l’autorisation pour les opérations
portant sur des moyens ou des prestations de cryptologie, dont les car-
actéristiques techniques ou les conditions d’utilisation, tout en justiant,
au regard des intérêts susmentionnés, un suivi particulier, n’exigent pas
l’autorisation préalable de ces opérations ;
c) La dispense de toute formalité préalable pour les opérations portant sur
des moyens ou des prestations de cryptologie, dont les caractéristiques tech-
niques ou les conditions d’utilisation sont telles que ces opérations ne sont pas
susceptibles de porter atteinte aux intérêts mentionnés au deuxième alinéa ;
d) Les délais de réponse aux demandes d’autorisation.
II. - Le II est remplacé par un II et un III ainsi rédigés :
II. - Les organismes chargés de gérer pour le compte d’autrui les conventions
secrètes de moyens ou prestations de cryptologie permettant d’assurer des
fonctions de condentialité doivent être préalablement agréés par le Premier
ministre.
Ils sont assujettis au secret professionnel dans l’exercice de leurs activités
agréées.
L’agrément précise les moyens ou prestations qu’ils peuvent utiliser ou four-
nir.
Ils sont tenus de conserver les conventions secrètes qu’ils gèrent. Dans le
cadre de l’application de la loi no 91-646 du 10 juillet 1991 relative au secret
12.1. TEXTES JURIDIQUES SUR LA CRYPTOGRAPHIE 145
des correspondances émises par la voie des télécommunications ainsi que
dans le cadre des enquêtes menées au titre des chapitres premier et II du
titre II du livre premier du code de procédure pénale, ils doivent les remettre
aux autorités judiciaires ou aux autorités habilitées, ou les mettre en oeuvre
selon leur demande.
Lorsque ces organismes remettent les conventions secrètes qu’ils gèrent dans
le cadre des enquêtes menées au titre des chapitres premier et II du titre
II du livre premier du code de procédure pénale, suite aux réquisitions du
procureur de la République, ils informent les utilisateurs de cette remise.
Ils doivent exercer leurs activités agréées sur le territoire national.
Un décret en Conseil d’Etat xe les conditions dans lesquelles ces organismes
sont agréés ainsi que les garanties auxquelles est subordonné l’agrément ; il
précise les procédures et les dispositions techniques permettant la mise en
oeuvre des obligations indiquées ci-dessus.
III. - a) Sans préjudice de l’application du code des douanes, le fait de
fournir, d’importer de pays n’appartenant pas à la Communauté européenne
ou d’exporter un moyen ou une prestation de cryptologie sans avoir obtenu
l’autorisation préalable mentionnée au I ou en dehors des conditions de
l’autorisation délivrée est puni de six mois d’emprisonnement et de 200 000
F d’amende.
Le fait de gérer, pour le compte d’autrui, des conventions secrètes de moyens
ou de prestations de cryptologie permettant d’assurer des fonctions de con-
dentialité sans avoir obtenu l’agrément mentionné au II ou en dehors
des conditions de cet agrément est puni de deux ans d’emprisonnement et
de 300 000 F d’amende.
Le fait de fournir, d’importer de pays n’appartenant pas à la Communauté
européenne, d’exporter ou d’utiliser un moyen ou une prestation de cryptolo-
gie en vue de faciliter la préparation ou la commission d’un crime ou d’un
délit est puni de trois ans d’emprisonnement et de 500 000 F d’amende.
La tentative des infractions prévues aux alinéas précédents est punie des
mêmes peines.
b) Les personnes physiques coupables des infractions prévues au a encourent
les peines complémentaires prévues aux articles 131-19, 131-21 et 131-27 et,
à titre dénitif ou pour une durée de cinq ans au plus, les peines prévues
aux articles 131-33 et 131-34 du code pénal.
III. - Le III devient IV. Son dernier alinéa est ainsi rédigé :
Est puni d’un emprisonnement de six mois et d’une amende de 200 000 F le
fait de refuser de fournir les informations ou documents ou de faire obstacle
au déroulement des enquêtes mentionnées au présent paragraphe.
Après le mot autorisations sont insérés les mots et déclarations.
V. - Il est ajouté un VI ainsi rédigé :
VI. - Les dispositions du présent article ne font pas obstacle à l’application
du décret du 18 avril 1939 xant le régime des matériels de guerre, armes et
munitions, à ceux des moyens de cryptologie qui sont spécialement conçus
ou modiés pour permettre ou faciliter l’utilisation ou la mise en oeuvre des
armes.
146 CHAPITRE 12. LA CRYPTOGRAPHIE ET LE DROIT
VI. - Le V devient VII.
VII. - Le présent article est applicable aux territoires d’outre-mer et à la
collectivité territoriale de Mayotte.
12.1.2 LOI n◦ 2004-575 du 21 juin 2004.
LOI n◦ 2004-575 du 21 juin 2004 pour la conance dans l’économie numérique
TITRE III
DE LA SÉCURITÉ DANS L’ÉCONOMIE
NUMÉRIQUE
Chapitre Ier
Moyens et prestations de cryptologie
Article 29 On entend par moyen de cryptologie tout matériel ou logiciel conçu ou
modié pour transformer des données, qu’il s’agisse d’informations ou de signaux, à l’aide
de conventions secrètes ou pour réaliser l’opération inverse avec ou sans convention secrète.
Ces moyens de cryptologie ont principalement pour objet de garantir la sécurité du stock-
age ou de la transmission de données, en permettant d’assurer leur condentialité, leur
authentication ou le contrôle de leur intégrité.
On entend par prestation de cryptologie toute opération visant à la mise en oeuvre, pour
le compte d’autrui, de moyens de cryptologie.
Section 1
Utilisation, fourniture, transfert, importation et exportation de moyens de
cryptologie
Article 30 I. - L’utilisation des moyens de cryptologie est libre.
II. - La fourniture, le transfert depuis ou vers un Etat membre de la Communauté eu-
ropéenne, l’importation et l’exportation des moyens de cryptologie assurant exclusivement
des fonctions d’authentication ou de contrôle d’intégrité sont libres.
III. - La fourniture, le transfert depuis un Etat membre de la Communauté européenne
ou l’importation d’un moyen de cryptologie n’assurant pas exclusivement des fonctions
d’authentication ou de contrôle d’intégrité sont soumis à une déclaration préalable auprès
du Premier ministre, sauf dans les cas prévus au b du présent III. Le fournisseur ou la
personne procédant au transfert ou à l’importation tiennent à la disposition du Premier
ministre une description des caractéristiques techniques de ce moyen de cryptologie, ainsi
que le code source des logiciels utilisés. Un décret en Conseil d’Etat xe :
a) Les conditions dans lesquelles sont souscrites ces déclarations, les conditions et les
délais dans lesquels le Premier ministre peut demander communication des car-
actéristiques du moyen, ainsi que la nature de ces caractéristiques ;
12.1. TEXTES JURIDIQUES SUR LA CRYPTOGRAPHIE 147
b) Les catégories de moyens dont les caractéristiques techniques ou les conditions d’utili-
sation sont telles que, au regard des intérêts de la défense nationale et de la sécurité
intérieure ou extérieure de l’Etat, leur fourniture, leur transfert depuis un Etat
membre de la Communauté européenne ou leur importation peuvent être dispensés
de toute formalité préalable.
IV. - Le transfert vers un Etat membre de la Communauté européenne et l’exportation
d’un moyen de cryptologie n’assurant pas exclusivement des fonctions d’authentication
ou de contrôle d’intégrité sont soumis à autorisation du Premier ministre, sauf dans les
cas prévus au b du présent IV. Un décret en Conseil d’Etat xe :
a) Les conditions dans lesquelles sont souscrites les demandes d’autorisation ainsi que les
délais dans lesquels le Premier ministre statue sur ces demandes ;
b) Les catégories de moyens dont les caractéristiques techniques ou les conditions d’utili-
sation sont telles que, au regard des intérêts de la défense nationale et de la sécurité
intérieure ou extérieure de l’Etat, leur transfert vers un Etat membre de la Commu-
nauté européenne ou leur exportation peuvent être soit soumis au régime déclaratif
et aux obligations d’information prévus au III, soit dispensés de toute formalité
préalable.
Section 2
Fourniture de prestations de cryptologie
Article 31 I. - La fourniture de prestations de cryptologie doit être déclarée auprès
du Premier ministre. Un décret en Conseil d’Etat dénit les conditions dans lesquelles
est eectuée cette déclaration et peut prévoir des exceptions à cette obligation pour les
prestations dont les caractéristiques techniques ou les conditions de fourniture sont telles
que, au regard des intérêts de la défense nationale et de la sécurité intérieure ou extérieure
de l’Etat, cette fourniture peut être dispensée de toute formalité préalable.
II. - Les personnes exerçant cette activité sont assujetties au secret professionnel, dans les
conditions prévues aux articles 226-13 et 226-14 du code pénal.
Article 32 Sauf à démontrer qu’elles n’ont commis aucune faute intentionnelle ou
négligence, les personnes fournissant des prestations de cryptologie à des ns de con-
dentialité sont responsables au titre de ces prestations, nonobstant toute stipulation
contractuelle contraire, du préjudice causé aux personnes leur conant la gestion de leurs
conventions secrètes en cas d’atteinte à l’intégrité, à la condentialité ou à la disponibilité
des données transformées à l’aide de ces conventions.
Article 33 Sauf à démontrer qu’ils n’ont commis aucune faute intentionnelle ou
négligence, les prestataires de services de certication électronique sont responsables du
préjudice causé aux personnes qui se sont ées raisonnablement aux certicats présentés
par eux comme qualiés dans chacun des cas suivants:
1◦ Les informations contenues dans le certicat, à la date de sa délivrance, étaient inex-
actes ;
2◦ Les données prescrites pour que le certicat puisse être regardé comme qualié étaient
incomplètes ;
148 CHAPITRE 12. LA CRYPTOGRAPHIE ET LE DROIT
3◦ La délivrance du certicat n’a pas donné lieu à la vérication que le signataire détient
la convention privée correspondant à la convention publique de ce certicat ;
4◦ Les prestataires n’ont pas, le cas échéant, fait procéder à l’enregistrement de la révo-
cation du certicat et tenu cette information à la disposition des tiers.
Les prestataires ne sont pas responsables du préjudice causé par un usage du certicat
dépassant les limites xées à son utilisation ou à la valeur des transactions pour lesquelles
il peut être utilisé, à condition que ces limites gurent dans le certicat et soient accessibles
aux utilisateurs.
Ils doivent justier d’une garantie nancière suffisante, spécialement aectée au paiement
des sommes qu’ils pourraient devoir aux personnes s’étant ées raisonnablement aux certi-
cats qualiés qu’ils délivrent, ou d’une assurance garantissant les conséquences pécuniai-
res de leur responsabilité civile professionnelle.
Section 3
Sanctions administratives
Article 34 Lorsqu’un fournisseur de moyens de cryptologie, même à titre gratuit,
ne respecte pas les obligations auxquelles il est assujetti en application de l’article 30, le
Premier ministre peut, après avoir mis l’intéressé à même de présenter ses observations,
prononcer l’interdiction de mise en circulation du moyen de cryptologie concerné.
L’interdiction de mise en circulation est applicable sur l’ensemble du territoire national.
Elle emporte en outre pour le fournisseur l’obligation de procéder au retrait :
1◦ Auprès des diuseurs commerciaux, des moyens de cryptologie dont la mise en circu-
lation a été interdite ;
2◦ Des matériels constituant des moyens de cryptologie dont la mise en circulation a été
interdite et qui ont été acquis à titre onéreux, directement ou par l’intermédiaire
de diuseurs commerciaux.
Le moyen de cryptologie concerné pourra être remis en circulation dès que les obligations
antérieurement non respectées auront été satisfaites, dans les conditions prévues à l’article
30.
Section 4
Dispositions de droit pénal
Article 35 I. - Sans préjudice de l’application du code des douanes :
1◦ Le fait de ne pas satisfaire à l’obligation de déclaration prévue à l’article 30 en cas de
fourniture, de transfert, d’importation ou d’exportation d’un moyen de cryptologie
ou à l’obligation de communication au Premier ministre prévue par ce même article
est puni d’un an d’emprisonnement et de 15 000 EUR d’amende;
2◦ Le fait d’exporter un moyen de cryptologie ou de procéder à son transfert vers un
Etat membre de la Communauté européenne sans avoir préalablement obtenu
l’autorisation mentionnée à l’article 30 ou en dehors des conditions de cette autorisa-
tion, lorsqu’une telle autorisation est exigée, est puni de deux ans d’emprisonnement
et de 30 000 EUR d’amende.
12.1. TEXTES JURIDIQUES SUR LA CRYPTOGRAPHIE 149
II. - Le fait de vendre ou de louer un moyen de cryptologie ayant fait l’objet d’une in-
terdiction administrative de mise en circulation en application de l’article 34 est puni de
deux ans d’emprisonnement et de 30 000 EUR d’amende.
III. - Le fait de fournir des prestations de cryptologie visant à assurer des fonctions de
condentialité sans avoir satisfait à l’obligation de déclaration prévue à l’article 31 est
puni de deux ans d’emprisonnement et de 30 000 EUR d’amende.
IV. - Les personnes physiques coupables de l’une des infractions prévues au présent article
encourent également les peines complémentaires suivantes:
1◦ L’interdiction, suivant les modalités prévues par les articles 131-19 et 131-20 du code
pénal, d’émettre des chèques autres que ceux qui permettent le retrait de fonds
par le tireur auprès du tiré ou ceux qui sont certiés, et d’utiliser des cartes de
paiement;
2◦ La conscation, suivant les modalités prévues par l’article 131-21 du code pénal, de la
chose qui a servi ou était destinée à commettre l’infraction ou de la chose qui en
est le produit, à l’exception des objets susceptibles de restitution;
3◦ L’interdiction, suivant les modalités prévues par l’article 131-27 du code pénal et
pour une durée de cinq ans au plus, d’exercer une fonction publique ou d’exercer
l’activité professionnelle ou sociale dans l’exercice ou à l’occasion de l’exercice de
laquelle l’infraction a été commise;
4◦ La fermeture, dans les conditions prévues par l’article 131-33 du code pénal et pour
une durée de cinq ans au plus, des établissements ou de l’un ou de plusieurs des
établissements de l’entreprise ayant servi à commettre les faits incriminés;
5◦ L’exclusion, dans les conditions prévues par l’article 131-34 du code pénal et pour une
durée de cinq ans au plus, des marchés publics.
V. - Les personnes morales sont responsables pénalement, dans les conditions prévues
par l’article 121-2 du code pénal, des infractions prévues au présent article. Les peines
encourues par les personnes morales sont:
1◦ L’amende, suivant les modalités prévues par l’article 131-38 du code pénal;
2◦ Les peines mentionnées à l’article 131-39 du code pénal.
VI. - L’article L. 39-1 du code des postes et télécommunications est complété par un 4◦
ainsi rédigé:
4◦ De commercialiser ou de procéder à l’installation d’appareils conçus pour
rendre inopérants les téléphones mobiles de tous types, tant pour l’émission
que pour la réception, en dehors des cas prévus à l’article L. 33-3.
12.1.3 LOI n◦ 2006-961 du 1er août 2006.
LOI n◦ 2006-961 du 1er août 2006 relative au droit d’auteur et aux droits voisins dans la
société de l’information
Article 13 Dans la section 2 du chapitre Ier du titre III du livre III du code de la
propriété intellectuelle, il est inséré un article L. 331-5 ainsi rédigé:
150 CHAPITRE 12. LA CRYPTOGRAPHIE ET LE DROIT
Art. L. 331-5. - Les mesures techniques efficaces destinées à empêcher ou à
limiter les utilisations non autorisées par les titulaires d’un droit d’auteur ou
d’un droit voisin du droit d’auteur d’une oeuvre, autre qu’un logiciel, d’une
interprétation, d’un phonogramme, d’un vidéogramme ou d’un programme
sont protégées dans les conditions prévues au présent titre.
On entend par mesure technique au sens du premier alinéa toute technolo-
gie, dispositif, composant qui, dans le cadre normal de son fonctionnement,
accomplit la fonction prévue par cet alinéa. Ces mesures techniques sont ré-
putées efficaces lorsqu’une utilisation visée au même alinéa est contrôlée par
les titulaires de droits grâce à l’application d’un code d’accès, d’un procédé
de protection tel que le cryptage, le brouillage ou toute autre transformation
de l’objet de la protection ou d’un mécanisme de contrôle de la copie qui
atteint cet objectif de protection.
Un protocole, un format, une méthode de cryptage, de brouillage ou de
transformation ne constitue pas en tant que tel une mesure technique au
sens du présent article.
Les mesures techniques ne doivent pas avoir pour eet d’empêcher la mise
en oeuvre eective de l’interopérabilité, dans le respect du droit d’auteur.
Les fournisseurs de mesures techniques donnent l’accès aux informations
essentielles à l’interopérabilité dans les conditions dénies aux articles L.
331-6 et L. 331-7.
Les dispositions du présent chapitre ne remettent pas en cause la protection
juridique résultant des articles 79-1 à 79-6 et de l’article 95 de la loi n◦
86-1067 du 30 septembre 1986 relative à la liberté de communication.
Les mesures techniques ne peuvent s’opposer au libre usage de l’oeuvre ou
de l’objet protégé dans les limites des droits prévus par le présent code, ainsi
que de ceux accordés par les détenteurs de droits.
Les dispositions du présent article s’appliquent sans préjudice des disposi-
tions de l’article L. 122-6-1 du présent code.
Chapitre 13
Rappels Mathématiques.
13.1 Théorie de l’information.
La théorie de l’information est due à Claude Shannon dans un article fon-
dateur paru en 1948, [25]. Elle permet de donner un sens à la notion
d’information contenue dans un message. A partir de cette théorie , il dénit
en 1949, [26], la notion de secret. Son approche utilise quelques notions de
probabilité qui sont rappelées ci-dessous.
13.1.1 Rappels de probabilités discrètes.
Dénition 13.1.1. Une variable aléatoire discrète, X, consiste en un
ensemble X, une distribution de probabilités discrètes (px )x∈X sur X et de
la donnée Pr[X = x]: la probabilité que X se réalise en x. Par dénition
on a
∀ x ∈ X, 0 ≤ Pr[X = x] ≤ 1, et Pr[X = x] = 1
x∈X
Exemple 13.1.1. Le jet d’une pièce de monnaie est une variable aléatoire,
X, dénie sur l’ensemble X = {pile, face}, la probabilité associée étant
1
Pr[X = pile] = Pr[X = face] =
2
Exemple 13.1.2. Jet aléatoire d’une paire de dés. On peut le modéliser
par la variable aléatoire Z sur l’ensemble
Z = {1, 2, 3, 4, 5, 6} × {1, 2, 3, 4, 5, 6}
1
muni de la probabilité Pr[Z = (i, j)] = Pr[(i, j)] = . Si on veut calculer
36
la probabilité pour que la somme des deux dés lors d’un lancer soit 4. Cette
151
152 CHAPITRE 13. RAPPELS MATHÉMATIQUES
valeur correspond à l’évènement
3 1
S4 = {(1, 3), (2, 2), (3, 1)} =⇒ Pr[S4 ] = =
36 12
Pour dénir la condentialité parfaite on introduit les dénitions suivantes:
Dénition 13.1.2. Soient deux variables aléatoires X et Y dénies sur
des ensembles nis X et Y respectivement. La probabibilité mutuelle
Pr[X = x, Y = y] = Pr[x, y] est la probabilité pour que X se réalise en x et
Y se réalise en y.
La probabilité conditionnelle Pr[X = x|Y = y] = Pr[x | y] est la
probabilité que X se réalise en x sachant que Y s’est réalisé en y.
Dénition 13.1.3. Les variables aléatoires X et Y sont dites des variables
aléatoires indépendantes si Pr[x, y] = Pr[x|y] pour tout x ∈ X et tout
y∈Y
On a la proposition
Proposition 13.1.4. On a la relation entre probabilité mutuelle et proba-
bilité conditionnelle
Pr[x, y] = Pr[x|y] Pr[y]
Démonstration: C’est évident.
On a le théorème important suivant
Théorème 13.1.5 (Théorème de Bayes). Si Pr[y] > 0, on a
Pr[x] Pr[y|x]
Pr[x|y] =
Pr[y]
Démonstration: D’après la proposition 13.1.4 on a
Pr[x, y] = Pr[x|y] Pr[y]
et en échangeant x et y on aussi Pr[x, y] = Pr[y|x] Pr[x].
13.1.2 Condentialité parfaite.
On considère un cryptosystème (P, C, K, E, D) (dénition 4.0.2 page 35) et
on suppose qu’une clef K ∈ K n’est utilisée qu’une fois.
On suppose que l’espace des textes clairs P est muni d’une distribution de
probabilités associée à une variable aléatoire x sur P, on dénit Pr[x = x]
comme étant la probabilité a-priori d’occurence du texte clair x.
13.1. THÉORIE DE L’INFORMATION 153
De même on suppose que l’espace des clefs K est muni d’une distribution
de probabilités associée à la variable aléatoire K sur l’espace des clefs K,
on dénit Pr[K = K] la probabilité pour que la clé K soit utilisée
(souvent on suppose les clés équiprobables).
Rappelons que la clef est toujours choisie par Alice et Bob avant de savoir
quel message Alice va transmettre. On peut donc supposer que les variables
aléatoires x et K sont indépendantes.
Les deux distributions de probabilités sur P et C induisent une distribution
de probabilité sur l’espace des messages chirés C associée à la variable
aléatoire y. Un tel système sera dit probabilisé.
On pose pour K ∈ K xé et pour eK ∈ E la fonction de chirement associée
C(K) = {eK (x) : x ∈ P}
C(K) est l’ensemble des messages chirés avec la clef K. Pour tout y ∈ C
on a
Pr[y = y] = Pr[K = K] Pr[x = dK (y)]
K∈K,y∈C(K)
où dK ∈ D est la fonction de décodage associée à la clé K.
On a par application du théorème de Bayes
Pr[x = x] × K∈K,y∈C(K) Pr[K = K]
Pr[x = x|y = y] =
K∈K,y∈C(K) Pr[K = K] Pr[x = dK (y)]
On pose la dénition
Dénition 13.1.6. Un système cryptographique probabilisé (P, C, K, E, D)
assure une condentialité parfaite si Pr[x|y] = Pr[x] pour tout x ∈ P
et tout y ∈ C, c’est à dire si la probabilité a-posteriori que le texte clair soit
x sachant que le texte chiré est y est égale à la probabilité a-priori que le
texte clair soit x.
On démontre les théorèmes suivants
Théorème 13.1.7. Si les vingt-six clefs d’un chirement par décalage (code
1
de Cesar) sont utilisées avec la même probabilité alors pour toute distri-
26
bution d’un bloc de texte clair on a condentialité parfaite.
154 CHAPITRE 13. RAPPELS MATHÉMATIQUES
Théorème 13.1.8. Un système cryptographique probabilisé (P, C, K, E, D)
tel que |K| = |C| = |P| assure une condentialité parfaite si et seulement si
1
chaque clef est utilisée avec la même probabilité et si pour chaque x ∈ P
|K|
et chaque y ∈ C, il existe une clef K unique telle que eK (x) = y
Ce théorème est une mise en forme des remarques faites lors de l’étude du
code de Vernam. On voit bien la diérence qu’il y a entre condentialité
parfaite et code incassable. Un code de César est à condentialité parfaite
d’après le théorème précédent pourtant il est facilement cassable.
13.1.3 Entropie.
Pour étudier la situation plus réaliste où une clé est utilisée plusieurs fois,
Claude Shannon a introduit la notion d’entropie qui permet de modéliser
l’information révélée à un opposant lors d’utilisations multiples d’une même
clé.
Une chaı̂ne de transmission numérique comporte la source du message,
le milieu de transmission et le destinataire du message. Un mes-
sage numérique est une suite d’éléments émis par la source pouvant pren-
dre
chacun une valeur parmi q valeurs possibles d’un alphabet noté Q =
x1 , x2 , . . . , xq . Les éléments de Q peuvent être considérés comme des
variables aléatoires discrètes.
On supposera que la source est sans mémoire c’est à dire qu’elle est supposée
émettre des messages qui sont des suites aléatoires tirées d’après une loi de
probabilité, Pr(xi )1≤i≤q indépendante du temps. Autrement dit la source
est une variable aléatoire discrète notée X. On nopte
supp(X) = x ∈ Q | Pr(x) > 0
La théorie de l’information part de la remarque simple
Plus l’événement donné par la source est probable, moins la quantité
d’information correspondante est grande
On doit donc avoir un lien entre la quantité d’information fournie par une
source et la distribution de probabilité de l’alphabet de cette source. Ce qui
conduit à la dénition suivante
Dénition 13.1.9. Soit X une variable aléatoire dénie sur un ensemble
ni X. La quantité d’information d’un élément x ∈ supp(X) est dénie
13.1. THÉORIE DE L’INFORMATION 155
par:
1
I(x) = − ln2 Pr(x) = ln2
Pr(x)
L’entropie de la variable aléatoire X est dénie comme étant la quantité
H(X) = − Pr[x] ln2 Pr[x]
x∈X
autrement dit c’est la valeur moyenne de l’information fournie par l’ensem-
ble des éléments x ∈ supp(X).
C’est une notion qui vient de la thermodynamique.
On dénit l’entropie conditionnelle de la source X connaissant l’événement
Y =y
Dénition 13.1.10. Soient X et Y deux sources discrètes. L’entropie con-
ditionnelle de X étant donné l’événement Y = y est déni par
H(X | Y = y) = − Pr(x | y) ln2 Pr(x | y)
x∈supp(X | y)
L’entropie conditionnelle de la source X étant donné Y est dénie par
H(X | Y) = − Pr(y) ln2 H(X | Y = y)
y∈supp(Y)
Exemple 13.1.3. Si X est une source binaire qui émet 0 avec une proba-
bilité p et 1 avec la probabité 1 − p alors
H(X) = −p ln2 p − (1 − p) ln2 (1 − p)
On dénit ensuite l’entropie H(L) d’un langage naturel L comme le français
ou l’anglais. On essaye de quantier les informations qu’apporte le fait qu’en
français le Q est presque toujours suivi du U et qu’un S est assez souvent
suivi d’un autre S etc...
On se donne un cryptosystème (P, C, K, E, D) en langue naturelle L. On
dénit sa redondance
HL
RL = 1 −
ln2 |P|
On choisit une clef et un ensemble ni de messages clairs que l’on chire
avec cette clé. On appelle clefs parasites les clefs de K qui donnent les
mêmes messages chirés pour le même ensemble de message.
156 CHAPITRE 13. RAPPELS MATHÉMATIQUES
Considérons un message M chiré en C à partir d’une clé K (symétrique ou
asymétrique). On dit que le secret du message M est parfait si la connais-
sance de C ne fournit aucune information sur M autrement dit M doit rester
aussi imprévisible que l’on connaisse C ou pas. De manière mathématique
cela se traduit par l’égalité
H(M | C) = H(M )
On peut montrer que dans tout cryptosystème à clef secrète qui fournit un
secret parfait, l’incertitude sur la clé secrète doit au moins être aussi grande
que l’incertitude sur le texte en clair M . Ce résultat donne donc une borne
inférieure sur la taille minimale de la clé K supposée choisie aléatoirement
et de manière uniforme: Le nombre de bits de K doit êre au moins aussi
grand que le nombre de bits d’information dans le texte clair M .
On montre que le secret d’un système à clé publique parfait ne peut pas
être modélisé par la théorie de l’information de Shannon: ce secret ne vient
pas de l’incertitude sur la clé privée Kd mais sur la diculté intrinsèque à
calculer Kd à partir de la clé publique Ke et du message codé C. L’outil
mathématique permettant de caractériser cette diculté est la théorie de
la complexité algorithmique.
Dénition 13.1.11. La distance d’unicité d’un cryptosystème est la plus
petite valeur n, notée n0 , telle que le nombre moyen de clefs parasites soit
nul. C’est la quantité de texte chiré nécessaire à un opposant disposant de
suffisamment de temps de calcul pour déterminer la clef.
|K|
On montre que n0 ∼ . Par exemple pour le chirement par sub-
RL ln2 |P|
stitution sur les 26 lettres de l’alphabet |P| = 26, |K| = 26!, si l’on prend
RL = 0, 75 qui est une valeur admise pour l’anglais, il vient n0 ∼ 25. Ceci
montre que pour un message de 25 lettres il n’y a en principe (en moyenne)
qu’un seul déchirement possible (cf. les alphabets T9 sur les portables).
13.2 Théorie de la complexité.
Le but de cette théorie est de classier les problèmes algorithmiques en
fonction de leur diculté.
Il faut donc un modèle d’ordinateur. Le modèle le plus utilisé est celui des
machines de Turing (Alan Turing, 1912-1954).
Une machine de Turing est la donnée de
13.2. THÉORIE DE LA COMPLEXITÉ 157
1. un alphabet ni Σ
2. une bande innie dans les deux sens formée de cases. Dans chaque
case peut être inscrit au plus un symbole de Σ. Les cases vides sont
marquées par un symbole spécial ∅. On pose Σ′ = Σ ∪ ∅. la bande
modélise la mémoire de l’ordinateur. A chaque instant seul un nombre
ni de cases de la bande contient un symbole de Σ.
3. une tête de lecture/écriture qui se déplace d’une case à l’autre.
4. un ensemble ni d’états Q, l’un d’entre eux étant appelé l’état initial.
5. un programme ou fonction de transition, composé d’un tableau, indexé
par Q et Σ′ .
Pour chaque couple (q, s) ∈ Q × Σ′ le programme possède au plus une
instruction qui sera exécutée quand la machine sera dans l’état q et que la
tête de lecture lira le symbole s.
Cette instruction est codée
(q ′ , s′ , d) avec q ′ ∈ Q, s′ ∈ Σ′
d ∈ {gauche,droite}.
Son exécution consiste à écrire le symbole s′ à la place de s à déplacer la
tête de lecture dans la direction d et à placer la machine dans l’état q′ .
Pour faire fonctionner la machine de Turing on inscrit une suite nie de
symboles ∈ Σ sur la bande. On place la machine dans l’état initial et on
positionne la tête de lecture sur la première case à gauche contenant un
symbole de Σ.
Ensuite la machine exécute le programme et s’arrête quand elle ne possède
pas d’instructions correspondant au symbole lu et l’état où elle se trouve.
Exemple 13.2.1. Testeur de parité. Cette machine teste la parité du nom-
bre de 1 dans un nombre n écrit en base 2. Elle s’arrête dans l’état qi si n a
un nombre impair de 1 et elle s’arrête dans l’état qp si n possède un nombre
pair de 1.
158 CHAPITRE 13. RAPPELS MATHÉMATIQUES
Σ = {0, 1}, Q = {q0 , q1 , qp , qi }, état initial q0 , fonction de transition
0 1 ∅
q0 (q0 , ∅, droite) (q1 , ∅, droite) (qp , ∅, droite)
q1 (q1 , ∅, droite) (q0 , ∅, droite) (qi , ∅, droite)
Exercices. 1
13.2.1. Vérier que la machine de Turing de l’exemple 13.2.1 compte bien
la parité du nombre de 1 de l’écriture en base 2 d’un entier.
Il y a aussi des machines de Turing non déterministes qui peuvent avoir
plusieurs instructions possibles pour un couple de (Q, Σ′ ). La machine
choisit “au hasard” quelle instruction exécuter.
13.2.2 Décidabilité.
On introduit les dénitions suivantes
Dénition 13.2.1. Soit Σ un alphabet et Σ∗ l’ensemble des mots sur Σ.
Un langage sur Σ est une partie de Σ∗
Dénition 13.2.2. Soit M une machine de Turing sur l’alphabet Σ et qy un
état de M . On dit que M accepte la donnée x (par l’état qy ) si M s’arrête
dans l’état qy lorsque la donnée est x.
L’ensemble des mots acceptés par M s’appelle le langage reconnu par M que
l’on note
Lqy (M ) = L(M )
Le complémentaire de L(M ) dans Σ∗ est l’ensemble des mots pour lesquels
soit M ne s’arrête pas soit M s’arrête dans un état = qy .
Dénition 13.2.3. Un problème de décision D appartient à la classe P
s’il existe une machine de Turing déterministe qui le résoud en un temps
polyomial en fonction de la taille des données (i.e. du nombre de symboles de
13.2. THÉORIE DE LA COMPLEXITÉ 159
Σ apparaissant dans la donnée). Si Σ = {0, 1} alors le problème de décision
appartient à la classe P des problèmes polynomiaux en temps si
∀ x ∈ D ⇒ Ctemps (x) = O(polynôme en ln2 (x))
Un problème de décision D appartient à la classe NP des problèmes
non polynomiaux en temps s’il existe une machine de Turing non-
déterministe qui le résoud en un temps polynomial
Conjecture 1. P=NP.
Autrement dit il existe au moins un problème pour lequel on peut mon-
trer qu’il n’existe pas de machine de Turing déterministe pour le résoudre
en temps polynomial et qui peut être résolu en temps polynomial par une
machine de Turing non-déterministe.
13.2.3 Complexité algorithmique.
Si on veut exécuter un algorithme sur une donnée x deux coûts sont à
envisager.
• le coût en temps Ctemps (x), c’est à dire le nombre d’opérations ef-
fectuées pour obtenir le résultat nal ou plus formellement le nombre
de déplacements de la tête de lecture/écriture avant arrêt de la ma-
chine de Turing modélisant l’ordinateur.
• le coût en espace, Cespace (x) est la taille de la mémoire utilisée, plus
formellement le nombre de case de la bande écrite au moins une fois.
On distingue essentiellement deux notions de complexité algorithmique la
complexité polynomiale et la complexité non polynomiale (sous en-
tendu en fonction de la taille des données).
Quel est le coût acceptable pour un problème donné. Il n’y a ni réponse
claire ni réponse absolue. En 2000 on estimait que
• 240 opérations élémentaires est accessible à un particulier s’il est pa-
tient.
• 256 opérations élémentaires est accessible avec de gros moyens.
• 280 opérations élémentaires est hors de portée de quiconque.
160 CHAPITRE 13. RAPPELS MATHÉMATIQUES
Rappelons qu’une année comporte 3, 2 107 secondes.
Soit un algorithme dont le nombre d’opérations élementaires en fonction
de la taille n de l’entrée est décrit par la fonction f . On dispose d’un
ordinateur faisant 109 opérations élémentaires par secondes. Le temps pris
par l’algorithme suivant les instances de f est:
f ln2 (n) ln3
2 (n) n n ln2 (n) n2 2n
n = 100 6, 6 10−9 s 4, 4 10−7 s 10−7 s 6, 7 10−7 s 10−5 s 4 1013 ans
n = 105 1, 7 10−8 s 5, 2 10−6 s 10−4 s 1, 7 10−3 s 10 s ≥ 1030086 ans
9
n = 1010 3, 3 10−8 s 3, 5 10−5 s 10 s 330 s 3 siècles ≥ 103·10 ans
n = 1020 6, 6 10−8 s 2, 3 10−4 s 30 siècles ≥ 105 ans ≥ 1023 ans !!!
13.2.4 Algorithmes polynomiaux en fonction de la taille des don-
nées.
On décompose tout algorithme arithmétique en opérations élémentaires.
L’opération élémentaire est l’addition de 3 chires en base 2 et le report de
la retenue
retenue + chire 1 + chire 2 = résultat + retenue
Dénition 13.2.4. On dit qu’un algorithme est polynomial en fonc-
tion de la taille des données s’il peut être décomposé en un nombre
d’opérations élémentaires majoré par une fonction polynomiale du nombre
de chires des données.
Exemple 13.2.2. Montrons que l’addition de deux nombres de tailles ≤ k
est une fonction polynomiale de k
1 1 1 1 retenue
1 1 1 1 0 0 0 ligne 1
+ 0 0 1 1 1 1 0 ligne 2
1 0 0 1 0 1 1 0 résultat
On suppose que le plus grand des entiers a k chires. Décomposons la somme
en opérations élémentaires
13.2. THÉORIE DE LA COMPLEXITÉ 161
1. Regarder dans la colonne i (1 ≤ i ≤ k + 1) les chires des lignes lignes
1, 2 et retenue
2. S’il y a 0 dans les lignes 1, 2 et retenue mettre 0 dans la ligne
résultat et aller à la colonne i + 1
3. S’il y a un 0 dans deux des lignes 1 et 2 et retenue on reporte 1
dans la ligne résultat et on passe à la colonne i + 1
4. S’il y a un 1 dans deux des lignes 1 et 2 et retenue on reporte 0
dans la ligne résultat on met 1 dans la ligne retenue à la colonne
i + 1 et on passe à la colonne i + 1
5. S’il y a un 1 dans les 3 lignes 1 et 2 et retenue on reporte 1 dans
la ligne résultat on met 1 dans la ligne retenue à la colonne i + 1 et
on passe à la colonne i + 1
On admet en première approximation que le temps nécessaire pour faire k
opérations élémentaires est proportionnel à k avec une constante dépendant
de l’ordinateur et de l’implantation de l’algorithme.
Exemples d’algorithmes polynomiaux en fonction de la taille des entrées:
• L’addition de deux entiers n ≤ m de longueur ≤ k est polynomial en
fonction de la taille des entrées car (en première approximation) il faut
déf
C k = O(k) = O(log2 (m)) opérations
Ajouter deux entiers de 100 chires en base 10 avec un ordinateur
faisant 109 opérations par secondes nécessite ∼ 300 10−9 sec ∼ 3sec.
• La multiplication de deux entiers n ≤ m de taille k et ℓ nécessite
2 kℓ = O ln22 (m) opérations
Multiplier deux entiers de 100 chires en base 10 nécessite ∼ 90000
10−9 sec ∼ 10 sec.
• Calcul du PGCD de deux entiers, n ≥ m de taille k ≥ ℓ nécessite
O(k3 ) = O ln32 (n) opérations
Trouver le PGCD de deux entiers de 100 chires en base 10 nécessite
∼ 27000000 10−9 ∼ 0, 027 sec.
162 CHAPITRE 13. RAPPELS MATHÉMATIQUES
• Calculer bm mod n nécessite O ln32 (n) opérations.
• Décider si un nombre entier n de taille k est premier ou non nécessite
O k 6+ε = O ln6+ε2 (n) opérations
Tester si un entier de 100 chires en base 10 est premier nécessite
avec l’algorithme polynomial ∼ 1026 sec ∼ 109 années. Il y a des
algorithmes pour tester la primalité d’un entier non polynômiaux et/ou
non déterministes qui sont plus ecaces pour des nombres pas trop
grands.
le dernier exemple montre que si le polynôme est de degré trop élevé (≥ 3,
un algorithme polynomial peut avoir un coût prohibitif.
Exemples d’algorithmes non polynomiaux en fonction de la taille des entrées
• Calcul de n! = 1 2 . . . (n − 1) n, si l’on calcule brutalement il faut
environ
C n2 ln22 n = O(n2 ln22 n) opérations
Calculer 10100 ! nécessite ∼ 10190 sec ∼ 10180 années!!!
• Recherche d’un diviseur d’un entier n, les meilleurs algorithmes néces-
sitent √
0 eC ln2 n ln2 ln2 n opérations, C ≤ 2
Trouver un diviseur d’un nombre de 100 chiffres en base 10 nécessite
∼ e30 10−9 ∼ 105 sec ∼ 1, 1jours. Un tel algorithme est dit sous-
exponentiel.
13.3 Rappels d’arithmétique.
Ainsi qu’on l’a vu dans la description des cryptosystèmes à clé publique RSA
et El Gamal, leur principe est basé sur de l’arithmétique élémentaire.
13.3.1 La division euclidienne.
Les entiers naturels N = {1, 2, 3 . . . } sont munis de deux opérations internes
l’addition, notée +, et la multiplication, notée × ou ou même sans symbole,
et d’une relation d’ordre total, notée ≤, compatible avec l’addition et la
multiplication c’est à dire
∀ a, b ∈ N, a ≤ b =⇒ ∀ c ∈ N; a + c ≤ b + c
13.3. RAPPELS D’ARITHMÉTIQUE 163
∀ a, b ∈ N, a ≤ b =⇒ ∀ c ∈ N; a × c ≤ b × c
On dénit sur N la division euclidienne.
Théorème 13.3.1. Si a et b sont deux entiers (b = 0) il existe un unique
couple d’entiers q et r tel que
ou bien r = 0
a = b q + r et
ou bien 1 ≤ r ≤ b − 1
Démonstration: On considère l’ensemble des entiers k ×b pour k ∈ N,. Les axiomes
qui dénissent les entiers imposent qu’il existe nécessairemment un entier q tel que
b × q ≤ a < b × (q + 1)
et donc si l’on pose a − bq = r on a 0 ≤ r < b. Nous avons donc montré l’existence d’un
couple (q, r) avec 0 ≤ r < b tel que a = bq + r. Il reste à montrer l’unicité.
Supposons que nous ayons deux couple (q, r) et (q′ , r ′ ) tels que
a = bq + r, 0≤r<b
a = bq ′ + r ′ , 0 ≤ r′ < b
alors en soustrayant membre à membre
0 = b(q − q ′ ) + (r − r ′ )
Comme −b < r−r′ < b on en déduit que q−q′ = 0 et donc que r−r′ = 0 d’où l’unicité.
Dénition 13.3.2. Soient a et b des entiers naturels avec b = 0. Faire la
division euclidienne de a par b c’est trouver l’unique couple (q, r) d’entiers
naturels (dont l’existence est assurée par le théorème 13.3.1) tel que
ou bien r = 0
(13.1) a = b q + r et
ou bien 1 ≤ r ≤ b − 1
la relation (13.1) s’appelle l’égalité de la division euclidienne
On dit que b est un diviseur de a s’il existe q ∈ N tel que a = bq, on note
a | b pour dire a divise b.
Tout entier a possède au moins deux diviseurs triviaux 1 et lui-même car
on a toujours
a = 1 a, a = a 1
Mais il peut en avoir d’autres par exemple
6 = 2 3, 28 = 4 7 = 2 2 7 = 2 14
164 CHAPITRE 13. RAPPELS MATHÉMATIQUES
donc 1, 2, 3 et 6 sont des diviseurs de 6 et 1, 2, 4, 7, 14 et 28 sont des
diviseurs de 28.
La division euclidienne implique que Z, les entiers relatifs, est un anneau
euclidien, i.e. qu’il est muni de deux lois de composition interne l’addition
et la multiplication qui possédent certaines propriétés et d’une division eu-
clidienne, cf. [28],
1. La loi + est commutative (pour tout (a, b) ∈ Z2 on a a + b = b + a),
associative ( pour tous (a, b, c) ∈ Z3 on a (a + b) + c = a + (b + c), il y
a un élément neutre, 0, tel que pour tout a ∈ Z on a a + 0 = 0 + a = a,
tout élément a ∈ Z possède un opposé b = −a tel que a+b = b+a = 0.
2. La loi × est commutative (a × b = b × a), associative ((a × b) × c = a ×
(b×c)), il y a un élément neutre, 1, (a×1 = 1×a = a), la multiplication
est distributive par rapport à l’addition ((a + b) × c = (a × c) + (b × c)
Dans les entiers naturels on distingue
• 1 qui est une unité, c’est à dire que 1 possède un inverse pour la
multiplication (il existe b ∈ N tel que 1 × b = b × 1 = 1) qui est 1.
• les nombres premiers qui n’ont pas d’autres diviseurs que les di-
viseurs triviaux i. e. 1 et eux-même (e.g. 2,3,5,7,...,37,....).
Proposition 13.3.3. Un nombre entier n > 0 est premier s’il n’est divisible
√
par aucun entier inférieur ou égal à n.
Démonstration: Si n n’est pas√ premier alors
√ par dénition √
on a n = n1 n2 avec
2
ni = 1 pour i = 1, 2. Si n1 > n et n2 > n alors n1 n2 > n = n ce qui est
absurde.
Proposition 13.3.4. Soit p un nombre premier et a, b deux entiers non
nuls. Si p divise le produit ab alors il divise au moins l’un des deux nombres
a ou b.
Démonstration: Supposons que p ne divise pas a. Considérons l’ensemble E =
{pu + av, u, v ∈ Z2 }. L’ensemble des entiers strictement positif dans E est non vide donc
admet un plus petit élément n0 . Montrons que n0 vaut 1. Soit e ∈ E . Par la division
euclidienne il existe (q, r) avec 0 ≤ r < n0 tel que e = n0 q + r. Il n’est pas difficile de voir
que r = e − n0 q est positif et est dans E . Comme n0 est le plus petit élément strictement
positif de E , on en déduit que r = 0 et donc que n0 divise tout élément de E . En particulier
n0 divise p donc il vaut 1 ou p et n0 divise a donc il ne vaut pas p. Ainsi n0 = 1 et il
existe (u, v) ∈ Z2 tel que 1 = au + pv: c’est le théorème de Bézout 13.3.10. On écrit alors
ab = pq puis aub = puv =⇒ puv = b(1 − pv)
et par conséquent p divise b.
13.3. RAPPELS D’ARITHMÉTIQUE 165
Le théorème suivant qui découle de l’existence de la division euclideienne
est appelé le théorème fondamental de l’arithmétique
Théorème 13.3.5. Tout nombre entier diérent de 1 possède une unique
décomposition en facteurs premiers à l’ordre près des facteurs, certains fac-
teurs peuvent être répétés.
Exemple 13.3.1. On a 2 = 2, 4 = 22 , 6 = 2 × 3, 12 = 22 × 3
Démonstration: On raisonne par récurrence. Il est clair que 2 possède une unique
décomposition en facteurs premiers. On suppose que tous les entiers inférieurs strictement
à n possèdent une unique décomposition en facteurs premiers (éventuellement réduite
à un élément si le nombre est premier).. Montrons que n aussi possède une unique
décomposition en facteurs premiers.
Si n est premier c’est clair, sinon n = a × b avec a < n, b < n et donc 1 < a < n et
1 < b < n. D’après l’hypothèse de récurrence on a
a = pα 1 α2 αi
1 p2 . . . pi , p1 , p2 . . . , pi premiers
β
b= q1β1 q2β2 . . . qj j , q1 , q2 . . . , qj premiers
et donc 8
<ps ,
>
n = ℓλ1 1 ℓλ2 2 . . . ℓλk k , ℓr = ou
>
qt
:
On a donc montré que n possède une décomposition en facteurs premiers. il reste à
montrer l’unicité.
On suppose que
n = p1 p2 . . . pi = q1 q2 . . . qj
avec p1 , p2 , . . . , pi , q1 , q2 , . . . , qj premiers non nécessairement distincts
Comme p1 divise n donc p1 divise le produit q1 q2 . . . qj . D’après la proposition 13.3.4
p1 divise nécessairement un des facteurs de ce produit. Comme tous les facteurs de ce
produit sont des nombres premiers on en déduit qu’il existe m tel que p1 = qm . On peut
supposer que m = 1 et donc p1 = q1 . On conclut alors par récurrence.
Autrement dit si a ∈ N, a ≥ 2, alors il existe des nombres premiers p1 , p2 ,...,
pn non nécessairement distincts tels que
a = p1 × p2 × × pn , pi premier pour 1 ≤ i ≤ n
l’entier n dépend de a. L’unicité à l’ordre près des facteurs impose que si
on a une égalité
a = q1 × q2 × × qm , qj premier pour 1 ≤ j ≤ m
166 CHAPITRE 13. RAPPELS MATHÉMATIQUES
alors nécessairement n = m et il existe une permutation ψ des entiers de 1
à n telle que
p1 = qψ(1) , p2 = qψ(2) , . . . , pn = qψ(n).
On peut écrire la décomposition en facteurs premiers de a ∈ N en regroupant
tous les nombres premiers égaux, alors
a = pα1 1 pα2 2 . . . pαℓ ℓ avec p1 < p2 < < pℓ , pi premier pour 1 ≤ i ≤ ℓ
L’unicité à l’ordre près des facteurs impose que si on a une égalité
a = q1β1 q2β2 . . . qkβk avec q1 < q2 < < qk , qj premier pour 1 ≤ j ≤ k
alors
ℓ = k et αi = βi , pour 1 ≤ i ≤ ℓ
Exemple 13.3.2. 10780 = 22 5 72 , 4200 = 23 3 52 7 11
Théorème 13.3.6. L’ensemble des nombres premiers est inni
Démonstration: Si l’ensemble des nombres premiers était ni, notons p1 ,..., pn les
nombres premiers rangé par ordre croissant. Le nombre
1 + p1 p2 . . . pn
est plus grand que pn . Il n’est pas premier donc d’après le théorème 13.3.5 il possède des
diviseur premiers. Or il n’est pas divisible par pi pour 1 ≤ i ≤ n.
13.3.2 Plus Grand Commun Diviseur ou PGCD.
Le plus grand commun diviseur PGCD en français et GCD (Greatest
Common Divisor) en anglais est déni de la manière suivante
Dénition 13.3.7. Le plus grand commun diviseur de deux nombres entiers
a et b est le plus grand des entiers qui divisent à la fois a et b, on le note
PGCD(a, b) ou a ∧ b ou encore (a, b).
Si le PGCD de a et b vaut 1 on dira que a et b sont premiers entre eux
ou sont des nombres relativement premiers
L’ensemble d ∈ N d divise a et d divise b est non vide, car 1 divise
toujours a et b, et il est borné par le plus grand des deux entiers a et b, donc
le PGCD existe et de plus il est toujours supérieur ou égal à 1.
Attention bien distinguer entre nombres relativement premiers et
nombres qui ne se divisent pas.
13.3. RAPPELS D’ARITHMÉTIQUE 167
Exemple 13.3.3. 35 et 49 ne se divisent pas car 49 = 35 1 + 14 et 35 =
0 × 49 + 35, mais ils ne sont pas premiers entre eux car 7 divise à la fois 35
et 49.
Proposition 13.3.8. Le plus grand commun diviseur de a et de b, entiers
naturels, s’obtient de la manière suivante. Si
a = pα1 1 pα2 2 . . . pαr r , b = pβ1 1 pβ2 2 . . . pβr r , avec αi , βi ≥ 0
sont leur décomposition en facteurs premiers, alors le PGCD de a et de b
est:
inf{α1 ,β1 } inf{α2 ,β2 }
a ∧ b = p1 p2 . . . pinf
r
αr ,βr
Démonstration: Pour la preuve voir [13]
Pour calculer le PGCD ni la dénition 13.3.7 ni la proposition 13.3.8 ne sont
ecaces car elles nécessitent l’une comme l’autre de trouver des diviseurs
de a et de b. Or les meilleurs algorithmes connus pour trouver un diviseur
non trivial de a ou pour√ décomposer a en facteurs premiers ce qui revient
au même sont en O(eC ln2 (a) ln2 ln2 (a) ). Ces algorithmes ne sont donc pas
polynomiaux en temps en fonction de la taille des données, leur coût est pro-
hibitif pour des grands nombres entiers (500 chires en base 10 par exemple)
même avec des ordinateurs très puissants.
Exemple 13.3.4. Le PGCD de 4200 = 23 352 7 et de 10780 = 22 572 11
est
PGCD(4200, 10780) = 4200 ∧ 10780 = 22 5 7 = 140
Par contre l’algorithme de la division euclidienne fournit grâce au théorème
de Bézout un algorithme très ecace, polynomial en temps en fonction de
la taille des données, pour calculer le PGCD de deux entiers naturels.
13.3.3 Algorithme du plus grand commun diviseur ou algorith-
me du PGCD.
Considérons le problème suivant:
Soit a ≥ b deux entiers de taille k au plus. Trouver le PGCD a ∧ b de a et
de b et évaluer le nombre d’opérations élémentaires nécessaires.
168 CHAPITRE 13. RAPPELS MATHÉMATIQUES
Proposition 13.3.9. On écrit les divisions euclidiennes successives
a = bq0 + r1 b = q 1 r1 + r 2
r1 = q 2 r2 + r 3 ...
(13.2) ..
. rj−2 = qj−1rj−1 + rj
rj−1 = qj rj + rj+1 rj = qj+1rj+1
avec 0 ≤ r1 < b, 0 ≤ r2 < r1 , 0 ≤ r3 < r2 ,..., 0 ≤ rj+1 < rj .
On arrête l’algorithme dès qu’un reste est nul et alors
a ∧ b = rj+1
Démonstration: En eet la dernière identité de division enclidienne de (13.2) mon-
tre que rj+1 divise rj , l’avant dernière identité de division enclidienne de (13.2) montre
que rj+1 divise rj et rj−1 . Puis par récurrence on montre que rj+1 divise a et b.
Donc rj+1 est un diviseur commun de a et de b, est-ce le plus grand? Considérons un
diviseur commun de a et de b noté d. Par dénition d divise a et b donc d’après la première
des identités de division enclidienne de (13.2) on a d | r1 , alors la deuxième des identités
de division enclidienne de (13.2) implique que d | r2 puis par récurrence on montre que
d | rj+1 .
On a donc montré que tout diviseur d commun de a et de b est un diviseur de rj+1 et
comme rj+1 est un diviseur de a e de b c’est le plus grand, autrement dit rj+1 = a ∧ b.
Cet algorithme nécessite O ln32 (n) opérations élémentaires.
Exemple 13.3.5. Trouver le PGDCD de 4200 et 10780:
10780 = 2 × 4200 + 2380; 4200 = 2380 + 1820;
2380 = 1 × 1820 + 560, 1820 = 3 × 560 + 140, 560 = 4 × 140
PGCD(10780, 4200) = 140
L’algorithme de la division euclidienne donne aussi une version eective
du théorème de Bézout, autrement dit une version eective du calcul du
générateur de l’idéal a, b engendré par a et b.
Théorème 13.3.10 (Théorème de Bézout). Soit a et b deux entiers naturels
de PGCD: a ∧ b = d. Alors il existe deux entiers relatifs u, v tels que
d = au + bv
u et v sont appelés les coefficients de Bézout.
13.3. RAPPELS D’ARITHMÉTIQUE 169
Démonstration: On reprend l’algorithme du PGCD à partir de la n. On écrit
avec les notations précédentes
d = rj+1 = rj−1 − qj rj = rj−1 uj−1 (1) − rj vj (qj )
` ´
= rj−1 − qj rj−2 − qj−1 rj−1
` ´
= rj−1 1 + qj qj−1 − qj rj−2
= −uj−2 (qj )rj−2 + rj−1 vj−1 (qj−1 , qj )
` ´` ´
= rj−3 − qj−2 rj−2 1 + qj qj−1 − qj rj−2
` ´ “ ` ´ ”
= rj−3 1 + qj qj−1 − rj−2 qj−2 1 + qj qj−1 + qj
d = rj−3 uj−3 (qj , qj−1 ) − rj−2 vj−2 (qj−2 , qj−1 , qj )
..
.
= (−1)j+1 au0 (q1 , . . . , qj ) + (−1)j bv0 (q0 , . . . , qj )
On a une relation de récurrence facile sur uj et vj .
uj+1 = uj−1 − qj+1 uj
vj+1 = vj−1 − qj+1 vj
Exemple 13.3.6. Relation de Bézout entre 10780 et 4200:
140 = 1820 − 3 × 560 = 1820 − 3 × (2380 − 1820)
= 4 × 1820 − 3 × 2380 = 4 × (4200 − 2380) − 3 × 2380
= 4 × 4200 − 7 × 2380 = 4 × 4200 − 7 × (10780 − 2 × 4200)
= 18 × 4200 − 7 × 10780 = 75600 − 75460
Remarque 13.3.1. Le couple (u, v)) tel que au + bv = d = a ∧ b dont
l’existence est garantie par le théorème de Bézout n’est pas unique car si
(u0 , v0 ) est un tel couple et si (x1 , y1 ) est une solution en nombres entiers
relatifs de l’équation
ax1 + by1 = 0
alors on a encore
a(u + x1 ) + b(v + y1 ) = d
Par contre on a unicité au signe près si on impose
1 ≤ |u| ≤ b, 1 ≤ |v| ≤ a
Algorithme d’Euclide.
On donne une version de type programme de l’algorithme d’Euclide.
170 CHAPITRE 13. RAPPELS MATHÉMATIQUES
• Entrée 2 entiers positifs a et b non tous deux nuls
• Sortie a ∧ b
– Tant que b = 0 faire
a ∧ b := b ∧ (a mod b)
– si b = 0 retourner a et n
Algorithme d’Euclide étendu.
On donne une version récursive de type programme de l’algorithme d’Euclide
étendu qui donne les coecients de Bézout pour le PGCD de deux entiers.
1. Entrée 2 entiers positifs a et b non tous deux nuls
2. Sortie 3 entiers u, v, d tels que au + bv = a ∧ b = d
(a) Variables entières u1 , v1 , u2 , v2 , u3 , v3 , q, r
(b) Si a = 0 retourner (0, 1, b) et n
(c) sinon Au1 + Bv1 = a et Au2 + Bv2 = b où A et B sont les valeurs
initiales de a et b
(d) Faire
(u1 , v1 ) := (1, 0) (u2 , v2 ) := (0, 1)
(e) Tant que b = 0 faire
(q, r) := quotient et reste de la division euclidienne de a par b
(u3 , v3 ) := (u1 − qu2 , v1 − qv2 )
(u1 , v1 , a) := (u2 , v2 , b)
(u2 , v2 , b) := (u3 , v3 , r)
3. si b = 0 retourner (u1 , v1 , a).
13.3.4 Les Congruences.
Les cryptosystèmes RSA et El Gamal reposent sur la théorie des congruences
ou arithmétique modulaire.
13.3. RAPPELS D’ARITHMÉTIQUE 171
Dénition 13.3.11. Soit a, b et m trois entiers. On dit que a est congru
à b modulo m et on écrit
a ≡ b mod m
si la diérence a − b est divisible par m
Une autre manière de dire la même chose
Corollaire 13.3.12. Soit m un entier non nul, alors a et b sont congrus
modulo m si et seulement si les restes de la division euclidienne de a par m
et de b par m sont les mêmes
Démonstration: C’est immédiat.
Exemple 13.3.7. Prenons m = 2 alors deux entiers a et b sont congrus
modulo 2 s’il sont soit tous les deux pairs soit tous les deux impairs.
Prenons m = 5 alors 5 est congru à 0 modulo 5 (car 5 − 0 = 5 est divisible
par 5) ou à −700 modulo 5 (car 5 − (−700) = 705 est divisible par 5), 3 est
congru à −2 modulo 5 (car 3 − (−2) = 5 est divisible par 5) ou à 38 modulo
5 (car 3 − 38 = −35 est divisible par 5)
On montre facilement que
Proposition 13.3.13. La relation de congruence est une relation d’équi-
valence sur les entiers.
c’est à dire que
• a ≡ a mod m (reexivité)
• a ≡ b mod m =⇒ b ≡ a mod m (symétrie)
• a ≡ b mod m et b ≡ c mod m =⇒ a ≡ c mod m (transitivité)
Démonstration: C’est évident.
Proposition 13.3.14. L’addition et la multiplication sont compatibles à la
relation de conguence sur les entiers; autrement dit:
a (mod m) + b (mod m) (mod m) = a + b (mod m)
a (mod m) × b (mod m) (mod m) = a × b (mod m)
Démonstration: Pour la preuve cf. [13]
172 CHAPITRE 13. RAPPELS MATHÉMATIQUES
Exemple 13.3.8. Si m = 2 alors la proposition signie simplement que
la somme de deux nombres pairs est paire, que la somme de deux nombres
impairs est paire, que la somme d’un nombre pair et d’un nombre impair
est impaire et que le produit de deux nombres pairs est pair, celui de deux
nombres impairs est impair, celui d’un nombre pair et d’un nombre impair
est pair.
Si m = 5 on constate que
5 + 3 ≡ −700 − 2 ≡ 0 + 38 ≡ 3 mod 5, 5 × 3 ≡ 0 × 3 ≡ 5 × 38 mod 5
On xe m et on décide de ne pas distinguer deux éléments congrus modulo
m. L’ensemble des éléments de Z qui sont congrus modulo m à un entier xé
s’appellera une classe de congruence modulo m. Un élément d’une classe
de congruence s’appelle un représentant de la classe de congruence.
Parmi les réprésentant d’une classe de congruence, il y en a toujours un,
unique, compris entre 0 et m − 1.
On notera Z/mZ l’ensemble des classes de congruence de Z modulo m.
D’après la proposition 13.3.14 on peut munir Z/mZ des deux lois + et ×
puisque que le résultat modulo m de ces deux opérations ne dépend pas des
représentants choisis dans une classe de congruences.
Corollaire 13.3.15. Tout élément de Z/mZ possède un opposé pour l’addi-
tion. Les éléments de Z/mZ qui ont un inverse multiplicatif sont ceux dont
les représentants dans Z sont premiers à m.
Démonstration: Facile par Bézout. En eet si a ∧ m = 1 alors il existent u, v ∈ Z
tels que au + mv = 1 et donc on a au ≡ 1 (mod m). Réciproquement si a est inversible
dans Z/mZ alors il existe u ∈ N tel que au ≡ 1 (mod m) ce qui équivant à:
Il existe v ∈ Z tel que au = 1 + mv ce qui équivaut par Bézout à a ∧ m = 1.
Théorème 13.3.16. Si p est premier, l’anneau Z/pZ est un corps ni à p
éléments, c’est à dire que tout élément diérent de la classe de zéro possède
un inverse multiplicatif. On le note Fp .
Démonstration: facile d’après le corollaire précédent.
Si p est un nombre premier, on peut montrer que pour chaque entier r ≥ 1
il existe un seul corps ni à q = pr éléments à isomorphisme de corps près,
noté Fpr = Fq . Ils s’obtiennent en considérant les quotients
Fq ≃ Fp [X]/P (x)Fp [X], P (X) ∈ Fp [X], irréductible, de degré r
cf. la section 13.6. Le théorème suivant est du à C.F. Gauss
13.3. RAPPELS D’ARITHMÉTIQUE 173
Théorème 13.3.17. Si p est premier, le groupe multiplicatif
∗
Z/pZ = {éléments inversibles de Z/pZ, × }
est cyclique, i.e. il existe g premier à p tel que
{1, . . . , p − 1} ≡ {gn , 0 ≤ n ≤ p − 2}
Un générateur g du groupe cyclique Z/pZ s’appelle une racine primitive
modulo p.
De même si q = pr avec p premier le groupe multiplicatif, F∗q , des éléments
inversibles de Fq est cyclique.
Démonstration: Rappelons que dans un corps K un polynôme P (x) ∈ K[x] de
degré n ≥ 0 a au plus n racines.
Tout élément g de F∗q a un ordre d c’est à dire que g d = 1 avec d ≥ 1 minimal et il y a
ϕ(d) éléments d’ordre d. De plus on a
X
ϕ(d) = n
d|n
En eet dans (Z/nZ, +) il y a un seul sous-groupe additif d’ordre d c’est l’ensemble des
éléments k nd pour 0 ≤ k ≤ d − 1, noté Cd . On note Φd l’ensemble des générateurs de
Cd . Comme tout élément de (Z/nZ, +) engendre un des Cd le groupe (Z/nZ, +) est union
disjointe des Φd et on a
X X
n = Card(Z/nZ, +) = Φd = ϕ(d)
d|n d|n
Soit alors d un diviseur de q − 1 le cardinal de F∗q . S’il existe x ∈ F∗q d’ordre d le sous-
groupe multiplicatif x = {1, x, . . . , xd−1 } engendré par x est cyclique d’ordre d et comme
l’équation X d = 1 a au plus d solutions dans le corps Fq . Donc tout élément y tel que
y d = 1 appartient à x.
En particulier les seuls éléments d’ordre d de F∗q sont les générateurs de x qui sont en
∗
nombre ϕ(d). Donc le Pnombre d’éléments de Fq d’ordre d est 0 ou ϕ(d). Si c’était 0 pour
un d, la formule n = d | n ϕ(d) montrerait que le nombre d’éléments de F∗q est < q − 1, ce
qui est absurde. Il existe donc au moins un élément x ∈ F∗q d’ordre q − 1 et donc x = F∗q
ce qui équivaut à F∗q est cyclique.
Le théorème suivant joue un rôle extrêmement important en arithmétique
modulaire et en particulier pour le décodage du cryptosystème RSA, ainsi
que pour la mise en oeuvre du cryptosystème El Gamal
Théorème 13.3.18 (petit théorème de Fermat). Soit p un nombre premier.
Tout entier a vérie la congruence ap ≡ a (mod p), et si a ∧ p = 1 on a
aussi ap−1 ≡ 1 (mod p).
174 CHAPITRE 13. RAPPELS MATHÉMATIQUES
Exemple 13.3.9. p = 7, a = 3 alors
36 (mod 7) = 32+4 (mod 7)
= 32 (mod 7) (32 )2 (mod 7)
= 2 × 4 (mod 7) = 1 (mod 7)
Remarquer la manière de calculer une puissance: écrire l’exposant en base
2 et procéder par élévations au carré successives.
Démonstration: Les éléments inversibles de N modulo p plus petits que p sont 1,
2,...,(p − 1). Considérons a premier à p donc inversible modulo p et considérons l’ensemble
{a, 2a, 3a, . . . , (p − 1)a} mod p
c’est une permutation de l’ensemble {1, 2, . . . , (p −1)} car a est inversible modulo p. Donc:
a 2a 3a . . . (p − 1)a ≡ 1 2 3 . . . (p − 1) mod p
(ap−1 − 1) (p − 1)! ≡ 0
` ´
mod p
Comme (p − 1)! est premier à p donc inversible modulo p on a
ap−1 ≡ 1 mod p
Le théorème suivant est appelé: Théorème des restes chinois
Théorème 13.3.19. Soient m1 , m2 ,...mr des entiers naturels deux à deux
premiers entre eux (i. e. mi ∧ mj = 1 si i = j) et soient a1 , a2 ,...ar des
entiers relatifs. Le système de congruences
x ≡ a1 mod m1 ,
x ≡ a2 mod m2
.. ..
(13.3) . .
. . . x ≡ a mod m r r
a toujours une solution et deux solutions quelconques sont congrus modulo
M = m1 m 2 . . . mr
Exemple 13.3.10. Prenons r = 2, m1 = 15, m2 = 14, a1 = 6, a2 = 9. On
veut donc résoudre simultanément
(13.4) x≡6 mod 15 et x ≡ 9 mod 14
13.3. RAPPELS D’ARITHMÉTIQUE 175
La première équation impose que x est de la forme x = 6 + 15k avec k ∈ Z
et la deuxième impose que x est de la forme x = 9 + 14ℓ ℓ ∈ Z et par
connséquent on doit avoir
6 + 15k = 9 + 14ℓ ⇐⇒ 15k − 14ℓ = 3
Comme 14∧15 = 1 le théorème de Bézout indique qu’il existe (u, v) = (1, −1)
tel que 15u + 14v = 1 et donc en prenant k = ℓ = 3 on a une solution x = 51
du système de congruences (13.4)
Démonstration: Unicité (mod M ) de la solution au système de congruences. Si
x1 et x2 sont deux solutions alors x = x1 − x2 ≡ 0 (mod mi ) pour 1 ≤ i ≤ r et donc x ≡ 0
(mod M ).
M
Soit Mi = m i
, clairement Mi ∧ mi = 1 donc il existe un entier Ni tel que Mi Ni ≡ 1
(mod mi ) et de plus mi | Mj si i = j. Alors
r
X
x= ai Mi Ni =⇒ x ≡ ai mod mi , 1≤i≤r
i=1
Ce théorème permet de remplacer un système de congruences modulo les
mi par une congruence unique modulo M = m1 . . . mr .
Corollaire 13.3.20. Avec les notations du théorème 13.3.19, le système de
congruences (13.3)
x ≡ a1 mod m1 ,
x ≡ a2 mod m2
.. ..
. .
. . . x ≡ ar mod mr
équivaut à la congruence unique
y≡x mod M
Démonstration: C’est évident.
Remarque 13.3.2. Ce corollaire exprime que l’on a
r
Z/mi Z ≃ Z/M Z
i=1
où l’isomorphisme est un isomorphisme d’anneaux.
Dénition 13.3.21. Si m est un entier positif on note ϕ(m) le nombre
d’entiers b < m et premiers à m, ou de manière équivalente ϕ(m) est le
nombre d’entiers b < m inversibles modulo m
176 CHAPITRE 13. RAPPELS MATHÉMATIQUES
La fonction ϕ est appelée l’indicatrice d’Euler .
Proposition 13.3.22. Si m = pα1 1 pα2 2 . . . pαr r est la décomposition de m en
facteurs premiers distincts alors
(13.5) ϕ(m) = pα1 1 −1 (p1 − 1)p2α2 −1 (p2 − 1) . . . pαr r −1 (pr − 1)
Démonstration: Il est clair que ϕ(1) = 1, que si p est premier ϕ(p) = p − 1 et que
ϕ(pα ) = (p − 1)pα−1 . Par le théorème des restes chinois si m est premier à n alors
ϕ(mn) = ϕ(m) × ϕ(n)
Théorème 13.3.23 (Théorème d’Euler). Soit m > 1 un entier et soit a un
entier premier à m, alors on a: aϕ(m) ≡ 1 (mod m)
Démonstration: Même preuve que pour le petit théorème de Fermat
En particulier si p et q sont premiers,
(13.6) ϕ(pq) = (p − 1)(q − 1)
et
(13.7) a(p−1)(q−1) ≡ 1 mod pq
Il est facile de montrer à partir du théorème d’Euler le corollaire important
suivant qui est un cas particulier d’un théorème de Lagrange, [28],
Corollaire 13.3.24. Soit m ∈ N et soit a ∈ N tel que a ∧ m = 1 alors le
plus petit entier e ≥ 1 tel que ae ≡ 1 (mod m) est un diviseur de ϕ(m).
Démonstration: Supposons que e ne soit pas un diviseur de ϕ(m) et écrivons
l’identité de la division euclidienne de ϕ(m) par e
ϕ(m) = e × q + r avec 0 < r ≤ e − 1
on a r = 0 car e ne divise par ϕ(m). Alors
ar = avarphi(m)−eq = aϕ(m) × aeq = aϕ(m) × (ae )q ≡ 1 mod m
Or comme 1 ≤ r ≤ e − 1 ceci contredit la dénition de e.
13.3. RAPPELS D’ARITHMÉTIQUE 177
Résidus quadratiques modulo p.
On va étudier les résidus quadratiques modulo un nombre premier p
c’est à dire les carrés modulo un nombre premier p. Cette étude joue un
rôle important dans les tests de primalité probabilistes ou non.
Dénition 13.3.25 (Symbole de Legendre). On pose si p est premier impair
+1
si a est premier à p et est un carré (mod p)
a
= −1 si a est premier à p et n’est pas un carré (mod p)
p
0 si a n’est pas premier à p
a
Le symbole est appelé le symbole de Legendre.
p
C’est un caractère du groupe multiplicatif (Z/pZ)∗ à valeur dans {±1} ∪ {0}
de période p autrement dit:
a b ab
=
p p p
a a+p
=
p p
Théorème 13.3.26 (Euler). Si p est premier impair et a premier à p alors
a p−1 −1 p−1 2 p2 −1
≡a 2 mod p, = (−1) 2 , = (−1) 8
p p p
Démonstration: Pour la démonstration voir [13].
Théorème 13.3.27 (Loi de réciprocité quadratique). Soit p et q des
premiers impairs alors
q p p−1 q−1
= (−1) 2 2
p q
Démonstration: Pour la démonstration voir [13].
Ce théorème (un des plus célèbres de l’arithmétique) est du à C. F. Gauss,
il se généralise au symbole de Jacobi ci-dessous. Sa preuve est délicate.
178 CHAPITRE 13. RAPPELS MATHÉMATIQUES
Dénition 13.3.28 (Symbole de Jacobi). On pose si m = pαi i est
pi | m
impair et n ∈ Z
n αi
si m ∧ n = 1
n
pi
pi | m
=
m
1 si m = 1
0 si m ∧ n = 1
Le symbole de Jacobi possède les propriétés suivantes. Si m est un entier
impair
n n
1 2
(13.8) n1 ≡ n2 mod m =⇒ =
m m
2 +1 si m ≡ ±1 (mod 8)
(13.9) =
m −1 si m ≡ ±3 (mod 8)
n n n n
1 2 1 2
(13.10) =
m m m
Il vérie aussi une loi de réciprocité quadratique: Si m et n sont entiers
impairs:
m
− si m ≡ n ≡ 3 (mod 4)
n n
(13.11) =
m
+ m
sinon
n
Exercices. 1
13.3.1.
Calculer
en utilisant la loi de réciprocité quadratique le symbole de
7411
Jacobi .
9283
13.4 Tests de primalité.
Pour les cryptosystèmes à clef publique on a besoin de disposer de grands
nombres premiers. il est donc important de disposer de méthodes rapides
pour dresser des listes de nombres premiers.
Pour tester si n est premier on pourrait essayer de le diviser par tous les
entiers < n, mais d’après la proposition 13.3.3, il sut de tester sa divisibilité
13.4. TESTS DE PRIMALITÉ 179
√
par tous les entiers m < n. Cette remarque est à la base de la méthode
√
du crible d’Eratosthenes. S’il n’est divisible par aucun entier < n il est
premier.
√
Cette méthode est impraticable dès que n est grand car n n’est pas majoré
uniformément par un polynôme en ln n.
Le temps de calcul devient vite prohibitif. On a vu en eet qu’une division
de n par un entier inférieur demande O(ln3 n) opérations élémentaires donc
cette méthode nécessitera
√
n √
O ln3 n = O( n ln3 n) opérations
i=1
Ce n’est donc pas un algorithme polynomial en temps.
Parmi les tests de primalité certains parmi les plus utilisés sont basés sur le
petit théorème de Fermat, ou sur les propriétés du symbole de Legendre et
sur la théorie des résidus quadratiques.
Agrawal-Kayal-Saxena ont montré en 2002, [1], que le problème décisionnel
n est-il premier?
appartient à la classe P des problème soluble en temps polynomial en fonc-
tion de la taille des données.
Leur preuve fournit des tests de primalité, basés sur le petit théorème de
12
Fermat, qui sont polynomiaux en temps (actuellement en O ln (n) et
6
même O ln (n) ). Mais pour l’instant ils sont moins performants que des
tests probabilistes comme ceux décrits ci-dessous.
Pour tester si n est premier on procède souvent en pratique de la manière
suivante dans les logiciels de calcul formel.
1. Vérier que n n’est pas divisible par des petits facteurs premiers.
2. Puis pour des a choisis au hasard et tels que 1 ≤ a ≤ n et a ∧ n = 1
calculer an−1 mod n.
3. Si an−1 ≡ 1 mod n pour au moins un a alors n n’est pas premier.
4. Sinon on ne peut pas conclure (cf. nombres de Carmichaël, par exem-
ple 561). On dit que n est pseudo premier.
Pour avoir un résultat sûr on peut utiliser le test de Lucas
180 CHAPITRE 13. RAPPELS MATHÉMATIQUES
Théorème 13.4.1 (Lucas). Si a est premier à n et si pour tout diviseur
n−1
premier p de n − 1 on a a p ≡ 1 mod n alors n est premier
Démonstration: La preuve de ce résultat est immédiate.
Ce résultat n’est pas utilisable en pratique car il nécessite de décomposer
en facteurs premiers n − 1 et actuellement on ne dispose pas d’algorithme
polynomiaux en temps.
On peut aussi utiliser les propriétés des symboles de Legendre et de Jacobi.
Pour tester si n est premier on utilise les remarques suivantes
n−1
1. On choisit b premier à n avec 1 ≤ b ≤ n−1 et on calcule b 2 (mod n).
n−1 b
2. Si n est premier on doit avoir b 2 ≡ (mod n) pour tout b
n
(théorème 13.3.26 page 177).
n−1 b
3. Si n n’est pas premier alors on a b 2 ≡ (mod n) pour au moins
n
50% des b premiers à n.
On aboutit ainsi au test de primalité de Solovay-Strassen
1. Tirer un entier aléatoire a, 1 ≤ a ≤ n − 1
a ≡ a n−12 (mod n) n est probablement premier
2. Si n−1
n ≡ a 2 (mod n) n est décomposable
a n−1
3. Si ≡ a 2 (mod n) choisir un autre a et recommencer.
n
La loi de réciprocité quadratique rend ce test probabiliste très ecace. Elle
évite en eet pour calculer le symbole de Jacobi d’avoir à factoriser a et n.
Exemple 13.4.1. Testons la primalité de 547. On choisit a = 5.
On calcule d’une part
5 547 2 52 −1
= = = (−1) 8 = −1
547 5 5
d’autre part
547−1 4 +28
5 2 mod 547 ≡ 51+2 mod 547 ≡ 5 113 395 mod 547
≡ −1 mod 547
Donc 547 a une chance d’être premier. Pour se conforter on recommence
avec 7 au lieu de 5, etc.
13.5. MÉTHODE DE FACTORISATION 181
Actuellement on est capable de prouver la primalité d’un nombre sans
symétrie particulière de 2000 à 3000 chires en base 10 en un mois de CPU
sur une station de travail. On prouve aussi la primalité de nombres tests
comme les nombres de Mersenne (2p − 1) ayant plusieurs millions de chires.
Pour construire de grands nombres premiers on couple les résultats précé-
dents avec des théorèmes sur la répartition des nombres premiers.
On sait par exemple que le nombre de nombres premiers inférieurs à x,
π(x) ∼ lnxx . On en déduit qu’il y a toujours un nombre premier entre n et
2n (en fait on sait plus). On prend un nombre n au hasard et on teste s’il
est premier, s’il ne l’est pas on passe à n + 1, etc.
13.5 Méthode de factorisation.
Principe d’un algorithme très utilisé pour factoriser de grand nombres en-
tiers, le crible quadratique. Il est fondé sur la proposition suivante
Proposition 13.5.1 (Fermat). Soit n un entier positif impair. Il y a une
bijection entre les décompositions de n sous la forme n = ab avec a ≥ b ≥ 0
entiers et les représentations de n sous la forme n = t2 − s2 , où s et t sont
des entiers positifs ou nuls. La bijection est donnée par les équations
a+b a−b
t= , s= , a = t + s, b=t−s
2 2
Exemple 13.5.1. Soit à factoriser n = 23360947609
√
n = 23360947609 =⇒ E( n) = 152843
On pose t = 152843. On teste s’il existe i pas trop grand tel que
(t + i)2 − n = (152843 + i)2 − 23360947609
est un carré.
On trouve que pour i = 2 on a
1528452 − 23360947609 = 8042
p = 152845 + 804 = 152649
et donc n = pq avec . On vérie aisément
q = 152845 − 804 = 152041
que p et q sont premiers.
182 CHAPITRE 13. RAPPELS MATHÉMATIQUES
Cette méthode ne marche pas à coup sûr, on l’a ranée de diverses manières
mais la factorisation d’un nombre reste encore un problème dicile.
Dans la proposition précédente on utilise le fait que l’on a
t2 ≡ s 2 mod n et t ≡ ±s mod n
Ces deux relations impliquent que l’on trouve alors un diviseur non trivial
de n en calculant PGCD(t + s, n) et PGCD(t − s, n). En eet n | t2 − s2 et
n | t + s, n | t − s, donc a = PGCD(t + s, n) est un diviseur non trivial de
n et b = na divise PGCD(t − s, n).
Exemple 13.5.2. On veut factoriser 4633. On remarque que
1182 ≡ 252 mod 4633,
PGCD(118 + 25, 4633) = 41, PGCD(118 − 25, 4633) = 113
On constate que 4633 = 41 × 113.
Pour mettre cette remarque en oeuvre on cherche une famille nie de nom-
bres premiers B = {p1 , p2 , . . . , ph }, où p1 = −1 et des entiers bi tels que le
plus petit représentant de (b2i mod n) noté {b2i } (i.e le représentant compris
ε
entre − n2 et + n2 − 1) s’écrive {b2i } = hj=1 pj j,i avec pour tout j, i εj,i ≡ 0
(mod 2).
On pose alors
1
γj = εj,i
2
i
et
{b} = bi mod n, et c = pγj
i p∈B
Si b ≡ ±c mod n on a gagné et on a un diviseur de n par la remarque
précédente. Sinon il faut recommencer avec un autre choix pour B ou pour
les bi .
La factorisation des entiers reste un problème dicile. En 1994 il a fallu le
travail combiné de 600 personnes pendant 8 mois pour factoriser un nombre
de 129 chires proposé 17 ans plus tôt et pour cela il fallu développer dans
l’intervalle de nouvelles méthodes de factorisation.
En 1999 il a fallu 8 mois de travail pour factoriser un nombre de 155 chires.
Il a fallu en plus de l’augmentation de puissance des ordinateurs développer
et perfectionner de nouvelles méthodes de factorisation.
13.6. RAPPELS D’ALGÈBRE 183
En 2005 on a factorisé des nombres de 200 chires en base 10 en util-
isant le crible quadratique et 80 ordinateurs travaillant en parallèle pendant
plusieurs mois.
Pour des généralisations des codes RSA ainsi que pour des procédés de fac-
torisation et des tests de primalité, on utilise l’arithmétique sur les courbes
elliptiques qui est une sorte de généralisation de l’arithmétique modulaire .
13.6 Rappels d’algèbre.
Ainsi qu’on l’a vu à la section 8.5 page 82 la description d’AES nécessite
celle des extensions de corps nis comme quotient d’anneaux de polynômes.
13.6.1 Groupes, anneaux, corps
Nous rappelons quelques dénition sur les groupes, les anneaux et les corps
on trouvera plus d’informations dans [28].
Dénition 13.6.1. Un groupe, G, est un ensemble muni d’une loi de
composition interne notée ∗
G × G −→ G
(a, b) −→ c = a ∗ b
telle que
1. Il existe un élement noté 1 tel que pour tout a ∈ G on a a∗1 = 1∗a = a,
il est appelé l’élément neutre pour l’addition.
2. Pour tout a ∈ G il existe a′ ∈ G tel que a ∗ a′ = a′ ∗ a = 1, a′ est noté
aussi a−1 , appelé l’ inverse de a
3. Pour tous a, b, c ∈ G on a ((a ∗ b)) ∗ c) = (a ∗ (b ∗ c)), associativité
Si de plus la loi interne est commutative c’est à dire que
a∗b=b∗a
pour tous a, b ∈ G on dit que G est un groupe abélien ou commutatif.
Dans ce cas la loi est souvent notée +, l’élément neutre est noté 0, et
l’inverse de a est appelé l’opposé de a et noté −a.
184 CHAPITRE 13. RAPPELS MATHÉMATIQUES
Dénition 13.6.2. Si (G, ×) est un groupe l’ ordre d’un élément g ∈ G
est le plus petit entier n ≥ 1 tel que gn = 1. Un groupe, (G, ×), est cyclique
s’il existe un élément g ∈ G tel que tout élément a ∈ G soit de la forme gn ;
autrement dit G est isomorphe à (Z, +) ou à (Z/mZ, +).
Théorème 13.6.3. Si G est un groupe ni de cardinal (on dit aussi d’ordre)
= |G| alors l’ordre de tout élément g ∈ G est un diviseur de n.
Démonstration: Pour la preuve voir [28]. On a donné une preuve pour les groupes
abéliens au corollaire 13.3.24.
Théorème 13.6.4. Un groupe abélien ni est de la forme
Z/m1 Z ⊕ Z/m2 Z ⊕ ⊕ Z/ms Z
où mi | mi+1 pour 1 ≤ i ≤ s − 1. Les entiers mi sont déterminés de manière
unique.
Dénition 13.6.5. Un anneau est un ensemble A muni de deux lois in-
ternes (c’est à dire des applications de A × A dans A). La première notée +
est appelée addition, la seconde notée multiplicativement, × ou , est appelée
multiplication. L’addition détermine sur A une structure de groupe abélien.
La multiplication possède les propriété suivantes
1. elle est associative: pour tous a, b, c ∈ A on a
((a × b) × c) = (a × (b × c))
2. elle est distributive par rapport à l’addition: pour tous a, b, c ∈ A on a
a(b + c) = a b + a c
3. il y a un élément unité noté 1 tel que a 1 = 1 a = a
4. si la multiplication est commutative, pour tous a, b ∈ A a b = b a, on
dit que l’anneau est commutatif.
Exemples 13.6.1. Les entiers relatifs Z forment un anneau commutatif.
Si m est un entier naturel non nul les entiers modulo m, Z/mZ, est un
anneau commutatif. Le corps des nombres rationnels, Q, est un anneau
commutatif.
Les polynômes à coecients rationnels Q[X], resp. réels R[X], resp. com-
plexes C[X], forment un anneau commutatif.
Si K est un corps et P (X) un polynômes non nul de K[X], K[X]/P (X)K[X]
est un anneau commutatif.
13.6. RAPPELS D’ALGÈBRE 185
Dénition 13.6.6. Un élément a de l’anneau A est inversible s’il existe
a′ ∈ A tel que a × a′ = a′ × a = 1, a′ est l’ inverse de a.
Exemples 13.6.2. Dans les entiers relatifs Z seuls 1 et −1 sont inversibles,
comme dans tout anneau.
Dans Z/mZ les éléments inversibles sont exactement ceux qui proviennent
d’entiers premiers à m.
Dans Q[X], resp. R[X], resp. C[X], les éléments inversibles sont les éléments
non nuls de Q, resp. R, resp. C.
les éléments inversibles de K[X]/P (X)K[X] sont les polynômes premiers à
P (X).
Dénition 13.6.7. Un corps est un anneau dans lequel tout élément non
nul, i.e. distinct de l’élément neutre pour l’addition, a un inverse pour la
multiplication, autrement dit:
Pour tout a = 0, il existe a′ tel que aa′ = a′ a = 1.
On remarque que dans un corps 1 = 0 et de plus 0× a = 0 pour tout élément
a du corps, cf. [28].
Exemples 13.6.3. Q, R, C sont des corps.
Z/mZ est un corps si et seulement si m est un nombre premier.
Si K est un corps alors K[X]/P (X)K[X] est un corps si et seulement si
P (X) est un polynôme irréductible de K[X].
Dénition 13.6.8. Soit K un corps et k un sous-corps. On dit que K est
une extension de k.
Proposition 13.6.9. Soit K un corps et k un sous-corps, alors le corps K
est un espace vectoriel sur le corps k.
Démonstration: Pour la preuve voir [28]
Dénition 13.6.10. Soit K un corps et k un sous-corps. On dit que K est
une extension algébrique de k si tout élément x ∈ K est racine d’une
équation algébrique à coefficients dans k. Autrement dit, si
Pour tout x ∈ K il existe un polynôme non nul P (X) ∈ k[X] tel
que P (x) = 0.
Un corps K est algébriquement clos si tout polynôme de K[X] a au
moins une racine dans K. On appelle clôture algébrique d’un corps k
une extension algébrique de k qui est algébriquement close.
186 CHAPITRE 13. RAPPELS MATHÉMATIQUES
Théorème 13.6.11. Tout corps k possède une clôture algébrique K. elle
est unique à k-isomorphisme de corps près c’est à dire que si K ′ désigne
une autre clôture algébrique de k il existe une bijection
ϕ : K −→ K ′
telle que pour tous x, y de K
ϕ(x + y) = ϕ(x) + ϕ(y)
ϕ(1K ) = 1K ′
ϕ(xy) = ϕ(x)ϕ(y)
Démonstration: Pour la preuve cf. [28].
On note souvent K̄ une clôture algébrique de K.
Dénition 13.6.12. Soit K un corps on pose pour m ∈ N
c(m) = 1 + 1 + + 1
m fois
où l’addition est faite dans le corps K.
S’il existe un entier m = 0 tel que c(m) = 0, on notera p le plus petit entier
non nul tel que c(p) = 0 et on dira que le corps K est de caractéristique
nie que sa caractéristique est p. Si c(m) = 0 pour tout entier m = 0 on
dira suivant les auteurs que K est de caractéristique innie ou que K est
de caractéristique zéro
Proposition 13.6.13. La caractéristique d’un corps est soit innie et si
elle est nie c’est nécessairement un nombre premier p.
Démonstration: Si K est de caractéristique nie p et si p n’est pas un nombre pre-
mier alors il existe des entiers k, ℓ > 1 tels que p = kℓ. Par dénition de la caractéristique
on c(k) = 0, c(ℓ) = 0. Donc c(k) et c(ℓ) ont des inverses dans K, notés c(k)−1 et c(ℓ)−1 .
On a alors
[c(k)c(k)−1 ][c(ℓ)c(ℓ)−1 ] = 1
= [c(k)c(ℓ)][c(k)−1 c(ℓ)−1 ]
= 0 × [c(k)−1 c(ℓ)−1 ]
=0
ce qui est contraire à 0 = 1.
13.6. RAPPELS D’ALGÈBRE 187
Proposition 13.6.14. Si K est un corps de caractéristique p alors
+ x = px = 0
x + x +
p fois
Démonstration: C’est évident.
Théorème 13.6.15. Si K est un corps de caractéristique p alors pour tous
a, b ∈ K on a:
n n n
(a + b)p = ap + bp
Démonstration: Pour la preuve cf. [28].
13.6.2 Anneaux des polynômes sur un corps
Soit K un corps, par exemple Q, R, C ou un corps ni comme Z/2Z, Z/pZ
avec p premier.
Dénition 13.6.16. L’anneau des polynômes à coefficients dans K, noté
K[X], est l’ensemble des suites nies d’éléments de K,
P = P (X) = (a0 , a1 , . . . , an )
appelées polynômes. Deux polynômes
P (X) = (a0 , a1 , . . . , an ) ∈ K[X], Q(X) = (b0 , b1 , . . . , bm ) ∈ K[X]
(avec m ≥ n) sont égaux si ai = bi pour 0 ≤ i ≤ n et bj = 0 pour n + 1 ≤
j ≤ m, en particulier
P (X) = (a0 , a1 , . . . , an ) = (a0 , a1 , . . . , an , 0, 0, . . . , 0)
n+h éléments
Considérons les polynômes
P (X) = (a0 , a1 , . . . , an ) ∈ K[X], Q(X) = (b0 , b1 , . . . , bm ) ∈ K[X]
On dénit la somme P (X) + Q(X) par
P (X) + Q(X) = R(X) = (c0 , c1 . . . , cn ) = (a0 + b0 ), (a1 + b1 ), . . . , (an + bn )
et le produit P (X) × Q(X) = P Q = P Q par
P (X) × Q(X) = (d0 , d1 . . . , dm+n ) = (a0 b0 ), (a0 b1 + a1 b0 ), . . .
. . . , (aj b0 + aj−1b1 + + aj−k bk + + a0 bj ) + + (an bm )
avec aℓ =0 si ℓ>n, bλ =0 si λ>m
188 CHAPITRE 13. RAPPELS MATHÉMATIQUES
Notations 13.6.1. On adopte les notations classiques suivantes
• Le polynôme (0, 0, . . . , 0) sera noté 0 et on a P (X) + 0 = 0 + P (X) =
P (X) et 0 × P (X) = P (X) × 0 = 0. Le polynôme (1, 0, 0 . . . , 0) sera
noté 1 et on a 1 × P (X) = P (X) × 1 = P (X).
• Le polynôme P (X) = (0, 1, 0, . . . , 0) sera noté X et appelé l’indéter-
minée ou la variable.
• Le polynôme P (X) = (0, 1, 0, . . . , 0) × × (0, 1, 0, . . . , 0) sera noté
n facteurs
Xn,
• Si P (X) = 0 alors il existe un indice n tel que si
P (X) = (a0 , a1 , . . . , am )
on ait aℓ = 0 pour ℓ ≥ n + 1. L’entier n sera appelé le degré du
polynôme P et sera noté deg(P ). Le degré du polynôme 0 n’est pas
déni, on lui donne parfois par convention le degré −∞.
• Avec ces notations on écrira le polynôme P (X) = (a0 , a1 , . . . , an ) de
degré n sous la forme P (X) = a0 + a1 X + a2 X 2 + + an X n , le
terme ai X i , 0 ≤ i ≤ n sera appelé le terme de degré i de P (X). On
remarque que l’on a aussi P (X) = a0 + a1 X + + an X n + 0X n+1 +
+ 0X m
• Un polynôme non nul, P (X), sera dit unitaire si le coecent de son
terme de plus haut degré est 1.
Muni de ces deux opérations K[X] est un anneau commutatif unitaire, cf.
[28], muni d’une division euclidienne dénie de la manière suivante
Dénition 13.6.17 (Division euclidienne). Si A(X) et B(X) sont deux
polynômes de K[X] (B = 0) il existe un unique couple de polynômes Q(X)
et R(X) tel que
ou bien R = 0
A(X) = B(X)Q(X) + R(X) et
ou bien 0 ≤ deg(R) ≤ deg(B) − 1
On dit que B(X) est un diviseur de A(X) s’il existe Q(X) ∈ K[X] tel que
A(X) = B(X)Q(X), on note B(X) | A(X).
On dit que deux polynômes non nuls A(X) et B(X) sont associés s’il existe
a ∈ K∗ tel que A(X) = a × B(X).
13.6. RAPPELS D’ALGÈBRE 189
La notion de divisibilté fournit une relation d’ordre partielle sur l’anneau
des polynômes.
Tout polynôme A(X) = a0 + a1 X + + an X n a au moins comme diviseurs
les éléments non-nuls de K et lui-même car si a = 0 ∈ K alors a−1 existe et
on a
A(X) = a (a0 a−1 ) + (a1 a−1 )X + + (an a−1 )X n , A(X) = 1 × A(X)
Mais il peut en avoir d’autres par exemple:
X 2 − 1 = (X − 1)(X + 1)
X 2 − 1 a donc comme diviseurs les constantes non nulles (=K∗ ), les polynô-
mes X −1 et X +1 à une constante multiplicative non nulle près et lui-même
à une constante multiplicative non nulle près.
Un polynôme, P (X), est appelé une unité de K[X] s’il est réduit à un
élément de K∗ = K \ {0}, autrement dit si P −1 existe dans K[X]
Dénition 13.6.18. Un polynôme P (X) ∈ K[X] est appelé un polynôme
premier ou polynôme irréductible si ses seuls diviseurs sont lui-même
et les élements de K∗
Exemple 13.6.4. Dans Q[X] le polynôme X 2 +1 est irréductible, par contre
dans F2 [X] il ne l’est pas car sur F2 on a X 2 + 1 = (X + 1)2 .
Proposition 13.6.19. Tout polynôme non nul A(X) ∈ K[X] possède une
décomposition en un produit de polynômes premiers
A(X) = a P1 (X)P2 (X) . . . Pm (X)
où a ∈ K∗ , Pj (X) premier pour 1 ≤ j ≤ m
Cette décomposition est unique à l’unité a près et à l’ordre près des facteurs
Pj . Si l’on regroupe tous les polynômes Pj associés, la décomposition en
produit de polynômes premiers prend la forme suivante
A(X) = a P1 (X)α1 P2 (X)α2 . . . Pℓ (X)αℓ , αi ∈ N,
∗
où a ∈ K , Pj (X) premier pour 1 ≤ j ≤ ℓ,
Pi et Pj ne sont pas associés pour i = j
sous cette forme la décomposition est unique à l’ordre des facteurs si on
choisit les Pj unitaires et les αi ≥ 1 (c’est à dire qu’on s’interdit des ex-
posants nuls).
190 CHAPITRE 13. RAPPELS MATHÉMATIQUES
Démonstration: La preuve repose sur l’algorithme de division euclidienne, cf. [28].
On dénit alors comme dans le cas de Z la notion de Plus Grand Commun
Diviseur (PGCD) de deux polynômes. Les degrés des diviseurs unitaires
communs à A et B forment un ensemble majoré par le maximum des degrés
de A et de B.
Dénition 13.6.20. Le PGCD de deux polynômes A(X) et B(X) de K[X]
est le polynôme unitaire de plus grand degré D(X) qui divise à la fois A(X)
et B(X). On note P GCD(A, B) = A ∧ B
Proposition 13.6.21. Soient A(X) et B(X) des polynômes non nuls. On
peut toujours supposer, quitte à modier les unités a et b et à utiliser des
exposants, que leurs décomposition en produit de facteurs premiers unitaires
est
A(X) = a × P1 (X)α1 P2 (X)α2 . . . Prαr ,
B(X) = b × P1 (X)β1 P2 (X)β2 . . . Pr (X)βr , avec αi , βi ≥ 0
alors le PGCD de A et de B est:
A(X) ∧ B(X) = P1 (X)inf{α1 ,β1 } P2 (X)inf{α2 ,β2 } . . . Pr (X)inf αr ,βr
Démonstration: Pour la démonstration voir [28].
Ni la dénition ni la proposition 13.6.21 ne fournissent d’algorithmes très
ecaces pour calculer le PGCD de deux polynômes, A(X) et B(X).
Par contre l’algorithme de la division euclidienne en fournit un très ecace.
Proposition 13.6.22. Le PGCD des polynômes A et B est donné par l’algo-
rithme suivant. On écrit les divisions euclidiennes successives
A(X) = Q0 (X)B(X) + R1 (X)
B(X) = Q1 (X)R1 (X) + R2 (X)
R1 (X) = Q2 (X)R2 (X) + R3 (X)
..
(13.12) .
Rj−2 (X) = Qj−1 (X)Rj−1 (X) + Rj (X)
Rj−1 (X) = Qj (X)Rj (X) + Rj+1(X)
R (X) = Q (X)R (X)
j j+1 j+1
13.6. RAPPELS D’ALGÈBRE 191
avec (0 ≤ deg(R1 ) < deg(B) ou R1 = 0), (0 ≤ deg(R2 ) < deg(R1 ) ou
R2 = 0), 0 ≤ deg(R3 ) < deg(R2 ),..., 0 ≤ deg(Rj ) < deg(Rj+1 ).
On arrête l’algorithme dès qu’un reste est nul et alors
A(X) ∧ B(X) = Rj+1 (X)
Démonstration: La dernière identité de division enclidienne de (13.12) montre que
Rj+1 divise Rj , l’avant dernière identité de division enclidienne de (13.12) montre que
Rj+1 divise Rj et Rj−1 . Puis par récurrence on montre que Rj+1 divise A et B.
Donc Rj+1 est un diviseur commun de A et de B, est-ce le plus grand? Considérons un
diviseur commun de A et de B noté D. Par dénition D divise A et B donc d’après la
première des identités de division enclidienne de (13.12) on a D | R1 , alors la deuxième
des identités de division euclidienne de (13.12) implique que D | R2 puis par récurrence on
montre que D | Rj+1 .
On a donc montré que tout diviseur D commun de A et de B est un diviseur de Rj+1
et comme Rj+1 est un diviseur de A et de B c’est le plus grand, autrement dit Rj+1 =
A ∧ B.
L’arithmétique de K[X] est donc tout à fait parallèle à celle de Z.
• Les deux sont des anneaux munis d’une division euclidienne.
• On dénit sur K[X] une notion de factorisation en facteurs premiers,
• On peut dénir le PGCD de deux polynômes,
• Il y a sur K[X] une relation de Bezout, un algorithme d’Euclide étendu
pour calculer le PGCD.
• etc..
On a le théorème de Bézout comme dans le cas des entiers
Théorème 13.6.23 (Théorème de Bézout). Soit A(X), B(X) ∈ K[X], alors
il existe des polynômes U (X), V (X) ∈ K[X] tels que
(13.13) A(X)U (X) + B(X)V (X) = A(X) ∧ B(X) = D(X)
Démonstration: La preuve est la même que sur Z. On reprend l’algorithme du
PGCD (13.12) à partir de la n. On écrit avec les notations précédentes
D = Rj+1 = Rj−1 − Qj Rj = Rj−1 Uj−1 (1) − Rj Vj (Qj )
` ´
= Rj−1 − Qj Rj−2 − Qj−1 Rj−1
` ´
= Rj−1 1 + Qj Qj−1 − Qj Rj−2
= −Uj−2 (Qj )Rj−2 + Rj−1 Vj−1 (Qj−1 , Qj )
192 CHAPITRE 13. RAPPELS MATHÉMATIQUES
` ´` ´
= Rj−3 − Qj−2 Rj−2 1 + Qj Qj−1 − Qj Rj−2
` ´ “ ` ´ ”
= Rj−3 1 + Qj Qj−1 − Rj−2 Qj−2 1 + Qj Qj−1 + Qj
d = Rj−3 Uj−3 (Qj , Qj−1 ) − Rj−2 Vj−2 (Qj−2 , Qj−1 , Qj )
..
.
= (−1)j+1 aU0 (Q1 , . . . , Qj ) + (−1)j bV0 (Q0 , . . . , Qj )
On a une relation de récurrence facile sur Uj et Vj .
Uj+1 = Uj−1 − Qj+1 Uj
Vj+1 = Vj−1 − Qj+1 Vj
On dénit alors les congruences entre polynômes comme dans le cas des
entiers
Dénition 13.6.24. Si P (X) ∈ K[X] et si A(X), B(X) appartiennent à
K[X] on dit que A et B sont congrus modulo P s’il existe Q ∈ K[X]
tel que A − B = P Q. On écrira A ≡ B mod P et on dira que A et B
appartiennent à la même classe d’équivalence modulo P .
On vérie aisément que c’est une relation d’équivalence sur l’anneau des
polynômes qui est compatible aux opérations sur les polynômes.
Proposition 13.6.25. Soit P (X) ∈ K[X] de degré f ≥ 0, alors tout
polynôme A(X) ∈ K[X] possède un unique représentant dans sa classe
d’équivalence modulo P (X) unitaire et de degré ≤ f − 1. Autrement dit
pour tout polynôme A(X) ∈ K[X] il existe un unique polynôme unitaire
R(X) ∈ K[X] de degré ≤ f − 1 tel que A(X) ≡ R(X) mod P (X).
Démonstration: Utiliser la division euclidienne.
Proposition 13.6.26. L’addition et la multiplication sont compatibles à
la relation de congruence sur les polyômes; autrement dit si P (X) est un
polynôme xé et si A(X), B(X) ∈ K[X] alors
A(X) (mod P (X)) + B(X) (mod P (X)) (mod P (X)) =
A(X) + B(X) (mod P (X))
A(X) (mod P (X)) × B(X) (mod P (X)) (mod P (X)) =
= A(X) × B(X) (mod P (X))
Démonstration: Pour la preuve cf. [28]
13.6. RAPPELS D’ALGÈBRE 193
Proposition 13.6.27. Soit P (X) ∈ K[X], l’ensemble des classes d’équiva-
lence modulo P (X) est noté
K[X]/P (X)K[X] ou K[X]/(P )
C’est un anneau commutatif unitaire et c’est un corps si et seulement si P
est irréductible dans K[X].
Démonstration: Pour la première partie cf. [28]. Si P est irréductible alors par
dénition si A(X) ≡ 0 (mod P (X)) on a A(X) ∧ P (X) = 1. Donc d’après le théorème de
Bezout, il existe U (X), V (X) ∈ K[X] tels que
A(X)U (X) + P (X)V (X) = 1
et donc
A(X)U (X) ≡ 1 mod P (X)
Donc si P (X) est irréductible tout élement non nul de K[X]/P (X) possède un inverse
multiplicatif, autrement dit c’est un corps.
Proposition 13.6.28. Un système complet de représentants de
K[X]/P (X)K[X]
est l’ensemble des restes de la division euclidienne des polynômes de K[X]
par P (X).
Démonstration: C’est immédiat.
Si K est un corps ni, Fp , et si P est un polynôme irréductible sur Fp alors
Fp [X]/P (X) est un corps ni qui contient Fp . Sur tout corps ni il y a des
polynômes irréductibles de degré n pour tout n, [28].
Exemple 13.6.5. Sur F2 le polynôme P = X 2 +X +1 est irréductible car il
n’est divisible par aucun polynôme de degré 1. En eet les seuls polynômes
de degré 1 de F2 [X] sont X et X + 1 = X − 1 et il est clair que dans F2 [X]
les équations
X 2 + X + 1 = X(X + b), X 2 + X + 1 = (X + 1)(X + b)
n’ont pas de solution.
Donc F2 [X]/(X 2 +X +1) est un corps noté F4 dont on va donner les éléments
F4 = F2 [X]/(X 2 + X + 1) = 0, 1, X, X + 1
Rappelons que dans F2 on a 0 + 0 = 1 + 1 = 0, 0 + 1 = 1 + 0 = 1,
0 × 0 = 0 × 1 = 0 × 0 = 0 et 1 × 1 = 1 et donc que dans F2 , 1 = −1 et
1 + 1 = 2 = 0.
194 CHAPITRE 13. RAPPELS MATHÉMATIQUES
L’addition sur F4 est donnée par la table suivante
+ 0 1 X X +1
0 0 1 X X +1
1 1 0 X +1 X
X X X +1 0 1
X +1 X +1 X 1 0
Cette table est évidente.
La multiplication sur F4 est donnée par la table suivante
× 0 1 X X +1
0 0 0 0 0
1 0 1 X X +1
X 0 X X +1 1
X +1 0 X +1 1 X
Les seules choses à montrer sont
X × X = X2 ≡ X + 1 mod X 2 + X + 1
X × (X + 1) = X 2 + X ≡ 1 mod X 2 + X + 1
(X + 1) × (X + 1) = (X + 1)2 ≡ X mod X 2 + X + 1
Donc dans F4 l’inverse multiplicatif de X + 1 est X.
Le théorème des restes chinois se généralise sans diculté à K[X] avec la
même preuve.
Corollaire 13.6.29. Si p est un nombre premier et si P (x) est un polynôme
irréductible de degré f de Fp [X] alors Fp [X]/(P ) est le corps ni Fq à q = pf
éléments. En particulier si p = 2 et P (X) = X 8 + X 4 + X 3 + X + 1 alors
F2 [X]/(P ) est le corps ni à 28 = 256 éléments.
Démonstration: Il suffit de remarquer que Fp [X]/(P ) est un Fp espace vectoriel
dont une base est constituée des classes de 1, X,..., X i ,..., X f −1 , et donc le cardinal de
Fp [X]/(P ) est pf = q.
On a vu que F∗q est un groupe multiplicatif cyclique à q − 1 éléments. On
peut donc considérer des cryptosystèmes El Gamal utilisant le groupe F∗q ,
par exemple
13.6. RAPPELS D’ALGÈBRE 195
Exemple 13.6.6. Considérons p = 3, on montre facilement que le polynôme
P (X) = X 3 − X + 1 est un polynôme irréductible de F3 [X]. En eet sinon
on aurait nécessairement une décomposition
X 3 − X + 1 = (X + a)(X 2 + bX + c), avec a, b, c ∈ F3 ≃ Z/3Z
avec un facteur de degré 1 au moins. Autrement dit le polynôme P (X)
aurait au moins une racine dans F3 , or on vérie aisément avec le petit
théorème de Fermat que
P (0) = P (1) = P (2) = 1
Donc F3 [X]/(X 3 − X + 1) n’est autre que le corps F33 à 27 éléments.
On a vu que son groupe multiplicatif F∗33 est cyclique. Trouvons un géné-
rateur g sous forme polynomiale. Montrons que que la classe de X modulo
X 3 − X + 1 engendre F∗33 .
Il sut pour cela de donner le tableau (ci-dessous) des puissances successives
de X (mod X 3 − X + 1). On prend comme système de représentant de F3 ,
{0, 1, 2} (en fait d’après le théorème de Lagrange 13.6.3 ou le corollaire
13.3.24 il sut de vérier que X 13 = 1 (mod X 3 − X + 1)).
i 0 1 2 3
Xi 1 X X2 X +2
i 4 5 6 7
Xi X2 + 2X 2X 2 +X +2 X2 +X +1 X2 + 2X + 2
i 8 9 10 11
Xi 2X 2 +2 X +1 X2 +X X2 +X +2
i 12 13 14 15
Xi X2 + 2 2 2X 2X 2
i 16 17 18 19
Xi 2X + 1 2X 2 +X X2 + 2X + 1 2X 2 + 2X + 2
i 20 21 22 23
Xi 2X 2 +X +1 X2 +1 2X + 2 2X 2 +X
i 24 25 26
Xi 2X 2 + 2X + 1 2X 2 +1 1
196 CHAPITRE 13. RAPPELS MATHÉMATIQUES
Exercices.
13.6.1. On pose F5 = Z/5Z. Trouvez l’inverse multiplicatif de X 3 + 3X − 1
modulo X 5 + X + 1 considérés comme des polynômes de F5 [X].
13.6.2. On considère le corps à 3 éléments Z/3Z que l’on notera F3 . On
peut le représenter par les 3 entiers {0, 1, 2} muni des lois d’addition et de
multiplication modulo 3.
1. Montrer que le polynôme P (X) = X 3 +2X 2 +1 ∈ F3 [X] est irréductible
et donc que F3 [X]/(P ) est un corps.
2. Montrer que F3 [X]/(P ) contient 27 éléments que l’on peut représenter
par les polynômes de degré inférieur ou égal à 2 de F3 [X]. On notera
F27 le corps F3 [X]/(P ).
3. Montrer que
X 3 = X 2 + 2 dans F27 ⇔ X 3 ≡ X 2 + 2 mod (X 3 + 2X 2 + 1)F3 [X]
X 4 = X 3 + 2X = X 2 + 2X + 2 dans F27
X 5 = x3 + 2X 2 + 2X = 2X + 2 dans F27
4. Écrire les puissances successives de X pour des exposants allant de 0
à 26. Déduisez-en que la suite n → xn est périodique de période 26
dans F27 et que tout élément non nul de F27 est représentable d’une
et une seul manière par une puissance de x (autrement dit le groupe
multiplicatif des éléments non nuls de F27 est cyclique).
5. Comme F27 − {0} = F∗27 contient 26 éléments on peut coder les 26
lettres de l’alphabet par un élément et un seul de F∗27 de la manière
suivante
A↔1 B↔2 C↔x D ↔x+1
E ↔x+2 F ↔ 2x G ↔ 2x + 1 H ↔ 2x + 2
I ↔ x2 J ↔ x2 + 1 K ↔ x2 + 2 L ↔ x2 + x
M ↔ x2 + x + 1 N ↔ x2 + x + 2 O ↔ x2 + 2x P ↔ x2 + 2x + 1
Q ↔ x2 + 2x + 2 R ↔ 2x2 S ↔ 2x2 + 1 T ↔ 2x2 + 2
U ↔ 2x2 + x V ↔ 2x2 + x + 1 W ↔ 2x2 + x + 2 X ↔ 2x2 + 2x
Y ↔ 2x2 + 2x + 1 Z ↔ 2x2 + 2x + 2
Montrer que l’on peut alors utilser F∗27 pour construire un système El
Gamal avec pour générateur g = x et exposant α = 11.
On code avec ce cryptosystème lettre à lettre : à quelles lettres corre-
spondent les couples (y1 , y2 ) = (K, H), (y1 , y2 ) = (F, A).
13.7. COURBES ELLIPTIQUES 197
13.7 Courbes elliptiques.
Les courbes elliptiques dénies sur un corps K sont des courbes décrites
par l’ensemble des solutions de certaines équations polynomiales à deux
inconnues f (x, y) ∈ K[X, Y ]. Pour plus de précisions on pourra consulter
[31] ou [33].
Dénition 13.7.1. Soit R le corps des réels et soit a, b ∈ R tels que
∆(a, b) = 4a3 + 27b2 = 0. Une courbe elliptique non singulière dénie
sur R est l’ensemble E des points P de R2 dont les coordonnées (x, y) sont
des solutions de l’équation
y 2 = x3 + ax + b
plus un point spécial, noté O ou ∞, appelé le point à l’inni.
La condition 4a3 + 27b2 = 0 assure que la courbe est sans point double. Si
4a3 + 27b2 = 0 on a aaire à une courbe singulière.
Exemple 13.7.1. La courbe y 2 = x3 − 4x est une courbe elliptique car
∆(−4, 0) = 0, voir la gure 13.1 page 199.
13.7.1 Groupe des points d’une courbe elliptique
Si E est une courbe elliptique non-singulière on dénit sur les points de
E une addition notée + qui fera de l’ensemble des points de E un groupe
abélien.
• ∀ P ∈ E, par dénition P + O = O + P = P .
• Si P, Q ∈ E avec P = (x1 , y1 ), Q = (x2 , y2 ) on considère les 3 cas
1. x1 = x2
2. x1 = x2 et y1 = −y2
3. x1 = x2 et y1 = y2
– Dans le cas 1, on note L la droite passant par P et Q. Elle
coupe E en 3 points dont deux, P et Q, sont déjà connus, on
note R′ = (x′ , y ′ ) le troisième point d’intersection. On prend le
symétrique de R′ par rapport à l’axe des abscisses. On obtient
un point R = (x′ , −y ′ ) = (x, y) qui est encore sur E. On pose
par dénition
P +Q = R
198 CHAPITRE 13. RAPPELS MATHÉMATIQUES
Par un calcul sans mystère on trouve l’équation de L
y −y y2 − y1
2 1
y = λx + ν = x + y1 − x1
x2 − x1 x2 − x1
on obtient alors les coordonnées de R
y2 − y1 2
x = λ2 − x 1 − x 2 = ( − x1 − x2
x2 − x1
y2 − y1
y = λ(x1 − x2 ) − y1 = ( (x1 − x2 ) − y1
x2 − x1
– Dans le cas 2, on dénit si P = (x, y) ∈ E, −P = (x, −y)
(x, y) + (x, −y) = O
– Le cas 3 se ramène au cas 2 en considérant que la droite L est la
tangente en P à E. On trouve que l’équation de L est
3x2 + a 3x2 + a
1 1
y = λx + ν = x + y1 − x1
2y1 2y1
ensuite le calcul de R est identique.
On montre que la loi ainsi dénie est
1. stable sur E: si P et Q appartiennent à E, P + Q ∈ E
2. associative: P , Q et R appartiennent à E alors (P + Q) + R = P +
(Q + R)
3. commutative: P + Q = Q + P
4. possède un élément neutre, O: P + O = O + P = P
5. Chaque point de E admet un opposé pour cette addition: ∀ P ∈
E ∃ Q ∈ E tel que P + Q = O
Cette loi fait donc des points de E dénis sur K un groupe abélien.
Tout ceci est résumé par les gures 13.1 et 13.2:
On remarque que les formules donnant les coordonnées de la somme de deux
points P et Q sur la courbe elliptique E sont des fonctions rationnelles à
coecients dans Z de leurs coordonnées.
13.7. COURBES ELLIPTIQUES 199
Figure 13.1: courbe elliptique sur R, y 2 = x3 − 4x
200 CHAPITRE 13. RAPPELS MATHÉMATIQUES
Figure 13.2: courbe elliptique sur R, y 2 = x3 + 17
13.7. COURBES ELLIPTIQUES 201
Cette remarque montre que l’appartenance des coordonnées de P et Q à R
ne joue aucun rôle. Ce qui importe est de pouvoir eectuer des additions,
multiplications, soustraction, division des coordonnées. Autrement dit on
peut dénir la somme de deux points sur une courbe elliptique dès que leurs
coordonnées appartiennent à un corps.
Dénition 13.7.2. Soit K un corps et E une courbe elliptique dénie sur
le corps K, c’est à dire que l’équation y2 = x3 + ax + b qui dénit la courbe
elliptique est à coefficients dans K, a, b ∈ K, et ∆(a, b) = 4a3 + 27b2 = 0.
On note E(K) l’ensemble des couples (x, y) ∈ K 2 tels que y 2 = x3 + ax + b.
On vérie aisément que si P et Q appartiennent à E(K) c’est à dire que leurs
coordonnées appartiennent à K et vérient l’équation de la courbe alors les
coordonnées de R = P + Q appartiennent à K et vérifent aussi l’équation
y 2 = x3 + ax + b.
Exemple 13.7.2. La courbe y 2 = x3 − 4x peut être considérée comme une
courbe elliptique sur Q, R, C, mais aussi sur le corps ni Fp pour p premier,
p = 2. En eet ∆(−4, 0) = −28 qui est diérent de zéro dans Q, R, C et Fp
pour p premier, p = 2.
13.7.2 Endomorphismes d’une courbe elliptique
Soit K un corps et E une courbe elliptique dénie sur K et soit K̄ une
clôture algébrique de K.
Dénition 13.7.3. Un endomorphisme d’une courbe elliptique E
dénie sur K est un homomorphisme α de la courbe
α : E(K̄) −→ E(K̄)
qui est donné par des applications rationnelles.
Autrement dit α est une application de E(K̄) dans lui-même telle que
α(P1 + P2 ) = α(P1 ) + α(P2 ), pour tous points P1 , P2 ∈ E(K̄)
et il existe des fonctions rationnelles R1 (x, y) et R2 (x, y) à coefficients dans
E(K̄) telles que
α(x, y) = R1 (x, y), R2 (x, y)
pour tout P = (x, y) ∈ E(K̄).
202 CHAPITRE 13. RAPPELS MATHÉMATIQUES
Exemple 13.7.3. Soit E d’équation y 2 = x3 + ax + b et soit α(P ) = 2P .
Alors α est un homomorphisme et
α(x, y) = R1 (x, y), R2 (x, y)
avec
3
3x2 + a
R1 (x, y) = − 2x
2y
2
3x2 + a 3x2 + a
R2 (x, y) = 3x − −y
2y 2y
et donc α est un endomorphisme de E.
On montre que tout endomorphisme de E peut s’écrire sous la forme
α(x, y) = r1 (x), r2 (x)y
où ri (x) est une fonction rationnelle. on posera
p(x)
r1 (x) = , p(x) ∧ q(x) = 1
q(x)
Le degré de α est déni par
deg(α) = max{deg p(x), deg q(x)}
On dira que α est séparable si r1′ (x) n’est pas identiquement nul.
Si K = Fq avec q = pn est le corps ni à q éléments et si E est une courbe
elliptique dénie sur K il y a un endomorphisme important: l’endomor-
phisme de Frobenius φq
φq (x, y) = xq , y q , (x, y) ∈ E(K̄)
Il n’est pas séparable, il est de degré q
13.7.3 Courbes Elliptiques sur un corps ni
D’après la remarque précédente le fait que le corps de base soit R ne joue
pas un grand rôle dans les calculs précédents (sauf pour pouvoir dessiner les
courbes).
Si maintenant on a un corps ni Fq où q = pf avec p un nombre premier on
peut refaire la théorie en supposant que l’on cherche des solutions dans F2q
(on peut prendre Fp = Z/pZ).
13.7. COURBES ELLIPTIQUES 203
Dénition 13.7.4. Soit Fq un corps ni avec p ≥ 5 et soit a, b ∈ Fq tels
que 4a3 + 27b2 = 0. Une courbe elliptique non singulière dénie sur
Fq est l’ensemble E = E(Fq ) des points P de F2q dont les coordonnées (x, y)
sont des solutions de l’équation
y 2 = x3 + ax + b
plus un point spécial O appelé point à l’inni.
Les points de E(Fq ) sont appelés les points dénis sur Fq de la courbe
elliptique E.
Exemple 13.7.4. Calculons par exemple les points de la courbe elliptique
y 2 = x3 + x + 6 dans F11
x x3 + x + 6 mod 11 résidu quadratique? y
0 6 non
1 8 non
2 5 oui 4,7
3 3 oui 5,6
4 8 non
5 4 oui 2,9
6 8 non
7 4 oui 2,9
8 9 oui 3,8
9 7 non
10 4 oui 2,9
Cette courbe sur F11 admet 13 points y compris celui à l’inni.
Comme l’ensemble E(Fq ) des points dénis sur Fq de la courbe elliptique
E est un sous ensemble de F2q c’est un ensemble ni. Le cardinal de cet
ensemble est soumis à des limitations sévèress. On a le théorème important
Théorème 13.7.5 (Hasse). Soit p un nombre premier supérieur à 3 et soit
q = pf . Soit E une courbe elliptique dénie sur le corps ni Fq . On note
#E le nombre de points de E dénis sur Fq . On a
√ √
q + 1 − 2 q ≤ #E ≤ q + 1 + 2 q
Le calcul de #E est dicile mais il existe un algorithme performant pour le
faire l’algorithme de Schoof.
204 CHAPITRE 13. RAPPELS MATHÉMATIQUES
Pour pouvoir utiliser le groupe des points d’une courbe elliptique sur un
corps ni, E, il faut ensuite trouver un sous-groupe cyclique aussi gros que
possible an de pouvoir transposer le schéma de codage El-Gamal. Il y a
des algorithmes ecaces pour cela.
Avec des sous-groupes cycliques de E à 2160 éléments on a une très bonne
sécurité si l’on prend quelques précautions pour éliminer des courbes el-
liptiques indésirables pour lesquelles le problème du logarithme discret est
facile.
L’avantage des cryptosystèmes basés sur les courbes elliptiques est, entre
autre, la possibilité d’avoir des clés courtes pour une bonne sécurité.
13.7.4 Points de torsion sur une courbe elliptique
Soit E une courbe elliptique dénie sur un corps K et soit K̄ une cloture
algébrique de K. Soit n un entier positif. on note
E[n] = P ∈ E(K̄) nP = P + P + + P = O
n fois
Exemple 13.7.5. Prenons y 2 = x3 + ax + b l’équation de la courbe E. On
peut écrire
y 2 = (x − e1 )(x − e2 )(x − e3 ), ei ∈ K̄
un point P est de 2-torsion si 2P = O autrement dit si la tangente en P est
verticale ce qui équivaut à y = 0. Donc
E[2] = O, (e1 , 0), (e2 , 0), (e3 , 0)
On a le théorème suivant qui décrit E[n]
Théorème 13.7.6. Soit E une courbe ellitique sur un corps K et soit n un
entier positif. Si la caractéristique de K ne divise pas n ou est inni, alors
E[n] ≃ Z/nZ ⊕ Z/nZ
Si la caractéristique de K est p > 0 et si p | n on écrit n = pr n′ avec
p ∧ n′ = 1. Alors
′ ′
Z/n Z ⊕ Z/n Z
E[n] ≃ ou
Z/nZ ⊕ Z/n′ Z
Démonstration: Pour la preuve voir [33].
13.7. COURBES ELLIPTIQUES 205
13.7.5 L’accouplement de Weil
L’accouplement de Weil est un outil essentiel pour l’étude des courbes ellip-
tiques et aussi pour les crypto-systèmes elliptiques ainsi que pour le chire-
ment basé sur l’identité.
Soit K un corps et E une courbe elliptique dénie sur K et soit n un entier
premier à la caractéristique de K. Alors E[n] ≃ Z/nZ ⊕ Z/nZ. Soit
n = x ∈ K̄ | xn = 1
le groupe des racines nièmes de l’unité dans K̄. Un générateur ζ de n est
appelé une racine primitive n-ième de l’unité. On a le théorème suivant
Théorème 13.7.7. Soit K un corps et E une courbe elliptique dénie sur
K et soit n un entier premier à la caractéristique de K. Alors il existe un
accouplement (c’est à dire une forme bilinéaire non dégénérée)
en : E[n] × E[n] −→ n
appelé l’ accouplement de Weil qui vérie les proprités suivantes:
1. en est bilinéaire par rapport à chacune des variables, c’est à dire que
en (S1 + S2 , T ) = en (S1 , T )en (S2 , T )
en (S, T1 + T2 ) = en (S, T1 )en (S, T2 )
pour tous S, S1 , S2 , T, T1 , T2 ∈ E[n]
2. en est non dégénérée par rapport à chaque variable, c’est à dire que
en (S, T ) = 1 pour tout T ∈ E[n] =⇒ S = O
en (S, T ) = 1 pour tout S ∈ E[n] =⇒ T = O
3. en (T, T ) = 1 pour tout T ∈ E[n]
4. en (S, T ) = en (T, S)−1 pour tout S, T ∈ E[n]
5. en (σ(S), σ(T )) = σ en (S, T ) pour tout automorphisme σ de K̄ qui
laisse invariant les coefficients de l’équation, y2 = x3 + ax + b, de E,
c’est à dire σ(a) = a et σ(b) = b.
6. en α(S), α(T ) = en (S, T )deg(α) pour tout endomorphisme séparable
α de E. Si les coefficients de E sont dans un corps ni Fq , alors le
résultat est vrai si α est l’endomorphisme de Frobenius φq .
Démonstration: Pour la preuve voir [33]
Corollaire 13.7.8. Si E[n] ⊂ E(K) alors n ⊂ K
206 CHAPITRE 13. RAPPELS MATHÉMATIQUES
Sites internet
cryp1 http://cryptosec.lautre.net/index.php3;
donne un resumé et des références sur divers aspects de la cryptogra-
phie
hist1 http://histoirecrypto.ifrance.com/histoirecrypto/ ;
site historique
prim1 http://www.utm.edu/research/primes/ ;
donne des renseignements sur les nombres premiers (records, tests de
primalité,...)
cryp2 http://www.securite.org/db/crypto/ ;
donne un resumé et des références sur divers aspects de la cryptogra-
phie
aes1 http://www.securiteinfo.com/crypto/aes.shtml:
donne une description succincte d’AES et de sa comparaison avec triple
DES
aes2 http://www.cryptageaes.com/:
présente des produits commerciaux utilisant AES
aes3 http://www.bibmath.net/crypto/moderne/aes.php3:
donne une description succincte d’AES
Bibliographie
[1] Manindra Agrawal, Neeraj Kayal & Nitin Saxena, PRIMES is in
P, Annals of Mathematics 160, n◦ 2, (2004), 781-793.
[2] François Arnault, Théorie des nombres et Cryptographie, cours DEA
Université de Limoges, 2000.
[3] Thomas Baignres, Pascal Junod, Yi Lu, Jean Monnerat & Serge
Vaudenay, A Classical Introduction to Cryptography Exercice Book,
Springer, 2006
[4] Christophe Bidan, Cryptographie et Cryptanalyse, Cours,
http://www.supelec-rennes.fr/ren/perso/cbidan/cours/crypto.pdf
[5] I.F Blake, G. Seroussi, N. P. Smart, Elliptic curves in cryptogra-
phy, London Mathematical Society Lecture Note Series, 265 Cambridge
University Press 1999.
[6] D. Boneh & M. Franklin, Identity based encryption from the
Weil pairing. In Advances in Cryptology- Crypto’2001, pages 213-229,
Springer-Verlag, 2001, Lecture Notes on Computer Sciences, n◦ 2139.
[7] Johannes A. Buchmann, Introduction to cryptography, Springer, Un-
dergraduate Texts in Mathematics, 2000.
[8] Joan Daemen & Vincent Rijmen, The design of Rijndael Springer
Verlag, Berlin Heidelberg New-York, 2002.
[9] W. Diffie, M.E. Helman, New Directions in Cryptography, IEEE
Transactions on Information Theory, 22 , 644-654, 1976.
[10] Gilles Dubertet, Initiation à la Cryptographie, éditions Vuibert.
[11] Touradj Ibrahimi, Franck Leprévost, Bertrand Warusfel, Enjeux
de la sécurité multimédia, Hermès Science Lavoisier, 2006
207
208 BIBLIOGRAPHIE
[12] Touradj Ibrahimi, Franck Leprévost, Bertrand Warusfel, Cryp-
tographie et sécurité, Hermès Science Lavoisier, 2006
[13] G.H.Hardy, E.M. Wright, Une Introduction à la théorie des nom-
bres, Springer-Verlag, SCOPOS 15, 2005.
[14] Robert Harris, Enigma, éditions Pocket.
[15] Howard M. Heys, A tutorial in Linear and dierential cryptanalysis,
disponible sur internet l’URL
http://www.engr.mun.ca/~howard/Research/Papers/ldc_tutorial.html
[16] K. Ireland, M. Rosen, A Classical Introduction to Modern Number
Theory, Springer-Verlag, GTM, 1990.
[17] Auguste Kerckhoffs, La cryptographie militaire, Journal des sci-
ences militaires, vol. IX, pp. 5-83, Jan. 1883, pp. 161-191, Feb. 1883,
disponible à: http://www.petitcolas.net/fabien/kerckhos/
[18] Neal Koblitz, A Course in Number Theory and Cryptography, 2nd
edition, Springer, Graduate Texts in Mathematics n◦ 114, , 1994.
[19] Neal Koblitz, Introduction to Elliptic Curves and Modular Forms,
Springer-Verlag, GTM 97, 1987.
[20] A. J. Menezes, P. C. van Oorschot, and S. A. Vanstone, Handbook
of Applied cryptographie, Discrete Mathematics and its applications,
CRC Press, 1997.
[21] Jean-Louis Pons, Introduction à la Cryptographie, cours ENSAM Aix
en Provence, 2003.
[22] La Recherche, n◦ 386 (05/2005), n◦ 383 -(02/2005), n◦ 382 (01/2005),
n◦ 381 (12/2004), n◦ 377 (07/2004, n◦ 377 (07/2004), n◦ 371 (01/2004),
n◦ 370 (12/2003), n◦ 366 (07/2003), n◦ 365 (06/2003), n◦ 362 (03/2003),
n◦ 361 (02/2003), n◦ 360 (01/2003), n◦ 352 (04/2002), n◦ 351 (03/2002),
n◦ 328 (02/2000), n◦ 327 (01/2000), n◦ 310 (06/1998).
[23] Pour la Science
[24] Guy Robin, Algorithmique et cryptographie, éditions Ellipses.
[25] Claude E. Shannon, Communication Theory of secrecy systems, Bell
Systems Technical Journal, 27 (1948), 379-423 & 623-665.
BIBLIOGRAPHIE 209
[26] Claude E. Shannon, A mathematical theory of communication, Bell
Systems Technical Journal, 28 (1949), 656-715.
[27] Bruce Schneier, Cryptographie Appliquée, éditions Thomson Publish-
ing.
[28] Lionel Schwartz, Mathématiques pour la Licence, Algèbre, Dunod,
Paris, 1998.
[29] Simon Singh, Histoire des codes secret, JC Lattès, 1999.
[30] Jacques Stern La Science du Secret, Odile Jacob, Paris, 1998.
[31] Douglas Stinson, Cryptographie, théorie et pratique, éditions Vuibert
2e édition, 2003.
[32] Serge Vaudenay, A Classical Introduction to Cryptography, Springer,
2006
[33] Lawrence C. Washington, Elliptic Curves, Number Theory and Cryp-
tography, Discrete Mathematics and its applications, Chapman &
Hall/CRC, 2003.
[34] Benne de Weger, Cryptographic Systems, cours Technische Universiteit
Eindhoven 2005; http://www.win.tue.nl/ bdeweger/
[35] Encyclopédie Wikipédia, Problème du sac à dos
[36] V. V. Yaschenko, Cryptography: An Introduction, Moscow Center for
Continuous Mathematics Education, Editor AMS, 2002.
[37] Gilles Zémor, Cours de cryptographie, éditions Cassini, 2002.
Index
(a, b), . . . . . . . . . . . . . . . . . . . . . . . . p. 166
algébriquement clos, . . . . . . . . . p. 186
E(K), . . . . . . . . . . . . . . . . . . . . . . . p. 199 algorithme de codage, . . . . . . . p. 35
algorithme cryptogra
Ne , . . . . . . . . . . . . . . . . . . . . . . . . . . p. 84
S-boı̂tes, . . . . . . . . . . . . . . . . . . . . p. 64 phique, . . . . . p. 9
C, . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 35
algorithme de diversi
K, . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 35 cation de clef, . . . p. 84
algorithme LLL, . . . . . . . . . . . . . p. 101
P, . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 35
Alice, . . . . . . . . . . . . . . . . . . . . . . . .p. 7
πS , . . . . . . . . . . . . . . . . . . . . . . . . . . p. 91
alphabet, . . . . . . . . . . . . . . . . . . . . p. 154
a ∧ b, . . . . . . . . . . . . . . . . . . . . . . . . p. 166
analyse de fréquence, . . . . . . . . p. 20
Éve, . . . . . . . . . . . . . . . . . . . . . . . . . p. 7
égalité de la anneau, . . . . . . . . . . . . . . . . . . . . . p. 184
division euclidienne, . . . p. 163 arbitre, . . . . . . . . . . . . . . . . . . . . . . p. 134
élément neutre arithmétique modulaire, . . . . . p. 170
pour l’addition, . . . . . p. 183 associativité, . . . . . . . . . . . . . . . . p. 183
élément unité, . . . . . . . . . . . . . . . p. 184 attaque à texte
élement inversible, . . . . . . . . . . . p. 185 chiré choisi, . . . . . . . . p. 13
AddRoundKey, . . . . . . . . . . . p. 93 attaque à texte
BinarytoField, . . . . . . . . . . . . . p. 92 chiré connu, . . . . . . . .p. 13
ExpandKey, . . . . . . . . . . . . . . . p. 89 attaque à texte
FieldInv, . . . . . . . . . . . . . . . . . . . p. 92 clair choisi, . . . . . . . . . . p. 13
MixColumns, . . . . . . . . . . . . . . p. 93 attaque à texte
Rotword, . . . . . . . . . . . . . . . . . . . p. 89 clair connu, . . . . . . . . . p. 13
ShiftRows, . . . . . . . . . . . . . . . . . p. 93 attaque par force brute, . . . . . p. 95
State, . . . . . . . . . . . . . . . . . . . . . . . p. 88 attaque physique, . . . . . . . . . . . . p. 13
SubBytes, . . . . . . . . . . . . . . . . . . p. 91 attaques des anniversaires, . . . p. 129
Attaques dictionnaires, . . . . . . p. 96
FieldtoBinary, . . . . . . . . . . . . . p. 92 Attaques par
recherche exhaustive, . . . p. 96
accouplement de Weil, . . . . . . . p. 206 Attaques répertoires, . . . . . . . . p. 97
Advanced Encrytion authentication, . . . . . . . . . . . . . p. 11
Standard, . . . . . p. 62
AES, . . . . . . . . . . . . . . . . . . . . . . . . p. 62 bascules, . . . . . . . . . . . . . . . . . . . . p. 51
210
INDEX 211
Bob, . . . . . . . . . . . . . . . . . . . . . . . . .p. 7 coût en espace, . . . . . . . . . . . . . . p. 159
branchement, . . . . . . . . . . . . . . . . p. 51 coût en temps, . . . . . . . . . . . . . . p. 159
brute force attack, . . . . . . . . . . . p. 95 codage, . . . . . . . . . . . . . . . . . . . . . . p. 9
buts des attaques, . . . . . . . . . . . p. 12 code ane, . . . . . . . . . . . . . . . . . . p. 21
code d’authentication, . . . . . . p. 127
CA, . . . . . . . . . . . . . . . . . . . . . . . . . p. 119 code de Vigénère, . . . . . . . . . . . . p. 21
caractéristique nie, . . . . . . . . . p. 186 code digrammes, . . . . . . . . . . . . .p. 22
caractéristique innie, . . . . . . . p. 186 code monoalphabétique, . . . . . p. 22
caractéristique zéro, . . . . . . . . . p. 186 code trigrammes, . . . . . . . . . . . . p. 22
CBC, . . . . . . . . . . . . . . . . . . . . . . . . p. 29 codes à masques jetables, . . . . p. 47
CCG, . . . . . . . . . . . . . . . . . . . . . . . p. 54 Codes à répertoire, . . . . . . . . . . p. 15
certicat, . . . . . . . . . . . . . . . . . . . . p. 119 codes de César, . . . . . . . . . . . . . . p. 19
Certication Authority, . . . . . . p. 119 codes de permutation, . . . . . . . p. 16
CFB, . . . . . . . . . . . . . . . . . . . . . . . . p. 30 codes de substitution, . . . . . . . p. 19
chirement, . . . . . . . . . . . . . . . . . p. 9 codes de Vernam, . . . . . . . . . . . . p. 47
chirement basée collisions faibles diciles, . . . . p. 129
sur l’identité, . . . . . . . . p. 120 collisions fortes diciles, . . . . . p. 129
chirement par blocs, . . . . . . . . p. 27 commutative, . . . . . . . . . . . . . . . . p. 183
chirement par ots, . . . . . . . . p. 27 complexité calculatoire, . . . . . . p. 140
chirement par ux, . . . . . . . . . p. 27 complexité dans
Cipher Block Chaining, . . . . . . p. 29 le pire des cas, . . . . . . . . . . p. 96
Cipher FeedBack, . . . . . . . . . . . . p. 30 complexité en moyenne, . . . . . p. 96
clé, . . . . . . . . . . . . . . . . . . . . . . . . . . p. 9 complexité polynomiale, . . . . . p. 159
clé de chirement, . . . . . . . . . . . p. 9 complexité
clé maı̂tre, . . . . . . . . . . . . . . . . . . . p. 122 non polynomiale, . . . . p. 159
clé publique condentialité, . . . . . . . . . . . . . . .p. 11
de chirement, . . . . . . p. 103 condentialité parfaite, . . . . . .p. 14,
clé sécrète, . . . . . . . . . . . . . . . . . . p. 9 p. 153
clé secrète, . . . . . . . . . . . . . . . . . . p. 17 confusion et diusion, . . . . . . . p. 80
clé secrète congrus modulo P , . . . . . . . . . . p. 192
de déchiffrement, . . . . p. 103 corps, . . . . . . . . . . . . . . . . . . . . . . . p. 185
clôture algébrique, . . . . . . . . . . . p. 186 Counter-mode encryption, . . . p. 31
classe de congruence courbe elliptique
modulo m, . . . . . . . p. 172 dénie sur Fq , . . . . . . . p. 203
clef d’étage, . . . . . . . . . . . . . . . . . p. 80 courbe elliptique
clef de déchirement, . . . . . . . . p. 9 non singulière, . . . . . . p. 197
clef publique, . . . . . . . . . . . . . . . . p. 10 courbe singulière, . . . . . . . . . . . . p. 198
clefs d’étages, . . . . . . . . . . . . . . . .p. 63 crible d’Eratosthenes, . . . . . . . . p. 179
clefs parasites, . . . . . . . . . . . . . . . p. 155 crible quadratique, . . . . . . . . . . p. 181
Clock Control Generator, . . . . p. 54 CRL, . . . . . . . . . . . . . . . . . . . . . . . . p. 120
212 INDEX
cryptanalyse, . . . . . . . . . . . . . . . . p. 8 fonction à sens unique, . . . . . . p. 38
cryptanalyse diérentielle, . . p. 63, fonction booléenne, . . . . . . . . . . p. 54
p. 74 fonction d’étage, . . . . . . . . . . . . . p. 80
cryptanalyse linéaire, . . . . . . . . p. 63 fonction de chirement, . . . . . . p. 9
cryptanalyse linéairel, . . . . . . . p. 65 fonction de combinaison, . . . . .p. 54
cryptographie, . . . . . . . . . . . . . . . p. 8 fonction de compression, . . . . . p. 128
Cryptographie basée fonction de déchirement, . . . p. 9
sur l’identité, . . . . . . . . p. 122 fonction de décodage, . . . . . . . . p. 35
cryptologie, . . . . . . . . . . . . . . . . . . p. 8 fonction de ltrage, . . . . . . . . . . p. 54
cryptosystème RSA, . . . . . . . . . p. 38 fonction de hachage, . . . . . . . . . p. 127
CTR, . . . . . . . . . . . . . . . . . . . . . . . . p. 31 fonction de hachage
à sens unique, . . . . . . . p. 129
déchirement, . . . . . . . . . . . . . . . p. 9 fonction de hachage
décodage, . . . . . . . . . . . . . . . . . . . p. 9 itérée, . . . . . . . . p. 128
Data Encrytion Standard, . . . p. 62 force brute, . . . . . . . . . . . . . . . . . . p. 18
degré de α, . . . . . . . . . . . . . . . . . . p. 203
degré du polynôme, . . . . . . . . . . p. 188 gestion des
DES, . . . . . . . . . . . . . . . . . . . . . . . . p. 62 droits numériques, . . .p. 43
destinataire du message, . . . . . p. 154 groupe, . . . . . . . . . . . . . . . . . . . . . . p. 183
digital right management, . . . p. 43 groupe abélien, . . . . . . . . . . . . . . p. 184
diviseur, . . . . . . p. 163, . . . . . . p. 189 groupe cyclique, . . . . . . . . . . . . . p. 184
diviseurs triviaux, . . . . . . . . . . . p. 163
division euclidienne, . . . . . . . . . p. 163 hash function, . . . . . . . . . . . . . . . p. 127
DRM, . . . . . . . . . . . . . . . . . . . . . . . p. 43
IBE, . . . . . . . . . . . . . . . . . . . . . . . . .p. 123
ECB, . . . . . . . . . . . . . . . . . . . . . . . . p. 28 ID-PKC, . . . . . . . . . . . . . . . . . . . . p. 120
Electronic Code Book, . . . . . . . p. 28 Identity Based Encryption, 123
empreinte numérique, . . . . . . . . p. 127 Identity Based Public
en continu, . . . . . . . . . . . . . . . . . . p. 10 Key Cryptography, . . . . . . . p. 120
endomorphisme d’une indéterminée, . . . . . . . . . . . . . . . . p. 188
courbe elliptique, . . . . p. 202 indicatrice d’Euler, . . . . . . . . . . p. 176
endomorphisme de Frobenius, p. 203 indice de coı̈ncidences, . . . . . . . p. 23
engagement, . . . . . . . . . . . . . . . . . p. 140 infrastructure des
entropie, . . . . . . . . . . . . . . . . . . . . .p. 154 systèmes à clef secrète, . . . . p. 94
espace des clefs, . . . p. 9, . . . p. 35 infrastructures des
exposant de systèmes à clef publique, . . . p. 119
la clé publique, . . . . . . p. 102 intégrité des données, . . . . . . . . p. 11
exposant de inverse, . . . . . . . p. 183, . . . . . . . p. 185
la clé secrète, . . . . . . . . p. 102
Kerberos, . . . . . . . . . . . . . . . . . . . . p. 94
factorisation des entiers, . . . . . p. 38 Key Generator Center, . . . . . . p. 122
INDEX 213
KGC, . . . . . . . . . . . . . . . . . . . . . . . p. 122 opération ∨, . . . . . . . . . . . . . . . . . p. 55
opération ∧, . . . . . . . . . . . . . . . . . p. 55
Le protocole SS, . . . . . . . . . . . . . p. 124 opération “et”, . . . . . . . . . . . . . . p. 55
les mots codés, . . . . . . . . . . . . . . p. 35 opération “ou exclusif”, . . . . . p. 55
les mots en clair, . . . . . . . . . . . . p. 35 opérations élémentaires, . . . . . p. 160
linear shift feedback ordre d’un élément, . . . . . . . . . . p. 184
register, . . . . . p. 49
OU exclusif, . . . . . . . . . . . . . . . . . p. 27
logarithme discret, . . . . . . . . . . .p. 112
Output FeedBack, . . . . . . . . . . . p. 31
LSFR, . . . . . . . . . . . . . . . . . . . . . . . p. 49
méthode de la grille, . . . . . . . . . p. 16 P, . . . . . . . . . . . . . . . . . . . . . . . . . . . p. 159
machines de Turing, . . . . . . . . . p. 156 par bloc, . . . . . . . . . . . . . . . . . . . . p. 10
Martin, . . . . . . . . . . . . . . . . . . . . . . p. 7 par blocs, . . . . . . . . . . . . . . . . . . . p. 22
mascarade, . . . . . . . . . . . . . . . . . . p. 12 permutation initiale, . . . . . . . . . p. 82
Master Key, . . . . . . . . . . . . . . . . . p. 122 PGCD, . . . . . . . . . . . . . . . . . . . . . . p. 166
matrice de transition, . . . . . . . . p. 51 PGP, . . . . . . . . . . . . . . . . . . . . . . . . p. 37
Menezes-Vanstonne, . . . . . . . . . p. 98 PKI, . . . . . . . . . . . . . . . . . . . . . . . . p. 119
message chiré, . . . . . . . . . . . . . . p. 9 plus grand commun
milieu de transmission, . . . . . . p. 154 diviseur, . . . . . . . . . . . . p. 166
modèle X.509, . . . . . . . . . . . . . . . p. 120 point à l’inni, . . . . . . . . . . . . . . p. 197
module du cryptosystème, . . . p. 102 points dénis
sur Fq , . . . . . . . . . . . . . . p. 203
National Bureau of polyalphabétique, . . . . . . . . . . . . p. 22
Standards, . . . . . . .p. 62
polynôme caractéristique, . . . . p. 51
NLCG, . . . . . . . . . . . . . . . . . . . . . . p. 54
polynôme irréductible, . . . . . . . p. 189
NLFG, . . . . . . . . . . . . . . . . . . . . . . p. 54
polynôme premier, . . . . . . . . . . .p. 189
nombres premiers, . . . . . . . . . . . p. 164
polynôme unitaire, . . . . . . . . . . p. 188
Non Linear
polynômes associés, . . . . . . . . . . p. 189
Combining Generator, . . . p. 54
porte dérobée, . . . . . . . . . . . . . . . p. 99
Non Linear
premiers entre eux, . . . . . . . . . . p. 166
Filter Generator, . . . . p. 54
preuve sans apport
non-répudiation, . . . . . . . . . . . . . p. 11
de connaissance, . . . p. 44
non-répudiation
de transmission, . . . p. 11 Principes de Kerckhos, . . . . . p. 10
non-répudiation procédé de chiffrement, . . . . . . p. 35
d’origine, . . . . . . . . p. 11 probabibilité mutuelle, . . . . . . . p. 152
non-répudiation probabilité conditionnelle, . . . p. 152
de réception, . . . . p. 11 problèmes non polynomiaux
NP, . . . . . . . . . . . . . . . . . . . . . . . . . p. 159 en temps, . . . . . . . . . . . p. 159
problèmes polynomiaux
OFB, . . . . . . . . . . . . . . . . . . . . . . . . p. 31 en temps, . . . . . . . . . . . p. 159
214 INDEX
produit de polynômes sous-exponentiel, . . . . . . . . . . . . p. 41
premiers, . . . . . p. 190 stéganographie, . . . . . . . . . . . . . . p. 7
protocole interactif, . . . . . . . . . . p. 142 suites pseudo-aléatoires, . . . . . p. 49
protocoles d’identication, . . . p. 44 suites récurrentes
Public Key linéaires sur un corps ni, . p. 49
Infrastructure, . . . . . . . p. 119 super-increasing
knapsack, . . . . . . . . . . . p. 100
quantité d’information, . . . . . . p. 154 symbole de Jacobi, . . . . . . . . . . p. 178
réciprocité quadratique, . . . . . p. 177 symbole de Legendre, . . . . . . . . p. 177
régistre à décalage Symmetric Keys
à rétroaction linéaire, . . . . . p. 50 Management, . . . . . . . p. 94
réseaux de substitution système asymétrique, . . . . . . . . p. 10
-permutation, . . . . p. 63 système cryptographique
résidus quadratiques, . . . . . . . . p. 177 produit, . . . . p. 80
règle de chirement, . . . . . . . . . p. 35 système de chirement
règle de déchirement, . . . . . . . p. 35 itéré, . . . . . . p. 84
racine primitive modulo p, . . . p. 173 système de gestion
rapport de propagation, . . . . . p. 77 des clefs, . . . . . . . . . . . . p. 94
redondance, . . . . . . . . . . . . . . . . . p. 155 système symétrique, . . . . . . . . . p. 9
relativement premiers, . . . . . . . p. 166
table d’approximation
représentant de la classe
linéaire, . . . . . . . . . . p. 69
de congruence, . . . . . . p. 172
Tamper Resistant
Rivest-Shamir et Adleman, . . p. 38
Security Module, . . . . p. 121
ronde, . . . . . . . . . . . . . . . . . . . . . . . p. 27
tatouage, . . . . . . . . . . . . . . . . . . . . p. 7
S-boı̂tes, . . . . . . . . . . . . . . . . . . . . . p. 82 terme de degré i, . . . . . . . . . . . . p. 188
sécurité calculatoire, . . . . . . . . . p. 14 test de Lucas, . . . . . . . . . . . . . . . p. 180
sécurité inconditionnelle, . . . . .p. 14 test de primalité
sécurité prouvée, . . . . . . . . . . . . p. 14 de Solovay-Strassen, . . . . . . p. 180
séparable, . . . . . . . . . . . . . . . . . . . p. 203 texte clair, . . . . . . . . . . . . . . . . . . p. 9
sac-à-dos, . . . . . . . . . . . . . . . . . . . .p. 99 théorie de l’information, . . . . . p. 14
sac-à-dos théorie de la complexité, . . . . . p. 14
super-croissant, . . . . . p. 100 théorie de la complexité
schéma de Feistel, . . . . . . . . . . . p. 80 algorithmique, . . . . . . .p. 156
scytale, . . . . . . . . . . . . . . . . . . . . . . p. 16 Tiers de Conance, . . . . . . . . . . p. 119
Secure Hash Algorithm, . . . . . p. 130 tiers de conance, . . . . . . . . . . . p. 134
SHA-1, . . . . . . . . . . . . . . . . . . . . . . p. 130 transfert inconscient, p. 44, p. 142
somme d’entrée, . . . . . . . . . . . . . p. 69 TRSM, . . . . . . . . . . . . . . . . . . . . . . p. 121
somme de sortie, . . . . . . . . . . . . p. 69 Trusted Third Party, . . . . . . . . p. 119
source du message, . . . . . . . . . . p. 154 TTP, . . . . . . . . . . . . . . . . . . . . . . . . p. 119
INDEX 215
types d’attaques, . . . . . . . . . . . . p. 12
unité, . . . . . . . . . . . . . . . . . . . . . . . p. 164
unité de K[X], . . . . . . . . . . . . . . . p. 189
usurpation d’identité, . . . . . . . . p. 12
variable, . . . . . . . . . . . . . . . . . . . . . p. 188
variable aléatoire discrète, . . . p. 151
watermarking, . . . . . . . . . . . . . . . p. 7
XOR, . . . . . . . . . . . . . . . . . . . . . . . p. 27
zero-knowledge proof, . . . . . . . .p. 44