Uploaded by Cyril Girardin

cryptologie course

advertisement
niversité de Rennes I
ENSSAT Lannion
U
INFORMATIQUE 2
INTRODUCTION À LA CRYPTOLOGIE
SUPPORT DE COURS
Patrice S
truillou
2020 - 2021
Table des matières
1 Cryptographie à clef privée
1.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1 Contexte général de la cryptographie . . . . . . . . . . . . . . . . . . .
1.1.2 Cryptanalyse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Quelques systèmes cryptographiques simples . . . . . . . . . . . . . . . . . . .
1.2.1 Chirement par décalage . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.2 Chirement par substitution . . . . . . . . . . . . . . . . . . . . . . . .
1.2.3 Chirement de Vigenère . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2.4 Chirement par permutation . . . . . . . . . . . . . . . . . . . . . . .
1.2.5 Chirement de Hill . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3 Notion de sécurité inconditionnelle - Le masque jetable . . . . . . . . . . . . .
1.3.1 Sécurité inconditionnelle au sens de Shannon . . . . . . . . . . . . . .
1.3.2 La théorie de Shannon . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.3.3 Un système inconditionnellement sûr : le chirement de Vernam . . . .
1.4 Méthodes de chirements en chaine . . . . . . . . . . . . . . . . . . . . . . . .
1.4.1 Principe des chirements en chaine . . . . . . . . . . . . . . . . . . . .
1.4.2 Un exemple simple de chirement en chaine synchrone : génération des
clefs par relation de récurrence linéaire . . . . . . . . . . . . . . . . . .
1.4.3 Un exemple simple de chirement en chaine asynchrone . . . . . . . .
1.5 Les standards de chifrement des données . . . . . . . . . . . . . . . . . . . . .
1.5.1 Historique et principes généraux du DES . . . . . . . . . . . . . . . . .
1.5.2 AES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2 Fondements arithmétiques de la cryptographie
2.1 Divisibilité, congruences . . . . . . . . . . . . . .
2.1.1 Division euclidienne . . . . . . . . . . . .
2.1.2 Relation de congruence . . . . . . . . . .
2.1.3 Idéaux de Z . . . . . . . . . . . . . . . . .
2.1.4 L'anneau Z/nZ . . . . . . . . . . . . . . .
2.2 PGCD - PPCM . . . . . . . . . . . . . . . . . . .
2.2.1 Dénition du plus grand commun diviseur
2.2.2 Propriétés élémentaires du PGCD . . . .
2.2.3 Théorème de Bezout . . . . . . . . . . . .
2.2.4 Conséquences du théorème de Bezout . .
2.2.5 Le plus petit commun multiple . . . . . .
2.2.6 L'algorithme d'Euclide . . . . . . . . . . .
1
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
4
4
4
4
5
5
6
6
7
7
8
8
9
11
12
12
12
13
13
13
14
15
15
15
16
17
18
19
19
20
20
20
21
22
TABLE DES MATIÈRES
2
2.3 Nombres premiers . . . . . . . . . . . . . . . . . . . . . . . . . .
2.3.1 Propriétés élémentaires des nombres premiers . . . . . .
2.3.2 Décomposition en nombres premiers . . . . . . . . . . .
2.3.3 Vérication élémentaire de primalité . . . . . . . . . . .
2.3.4 Le théorème d'Hadamard . . . . . . . . . . . . . . . . .
2.4 Inversion modulo n . . . . . . . . . . . . . . . . . . . . . . . . .
2.4.1 Éléments inversibles de Z/nZ . . . . . . . . . . . . . . .
2.4.2 Calcul de l'inverse modulo n . . . . . . . . . . . . . . . .
2.4.3 Générateurs du groupe (Z/nZ, +) . . . . . . . . . . . . .
2.4.4 Théorème des restes chinois . . . . . . . . . . . . . . . .
2.4.5 L'indicateur d'Euler . . . . . . . . . . . . . . . . . . . .
2.5 Les théorèmes d'Euler et de Fermat . . . . . . . . . . . . . . . .
2.5.1 Théorème d'Euler . . . . . . . . . . . . . . . . . . . . .
2.5.2 Petit théorème de Fermat . . . . . . . . . . . . . . . . .
2.5.3 Nombres pseudo-premiers et tests ecaces de primalité .
2.6 Extension des notions d'arithmétique aux polynômes . . . . . .
2.6.1 Polynômes . . . . . . . . . . . . . . . . . . . . . . . . . .
2.6.2 Divisibilité dans K[X] . . . . . . . . . . . . . . . . . . .
Zn [X]
2.6.3 L'anneau (m(X))
. . . . . . . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
3 Cryptographie à clef publique
3.1 Généralités . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.1 Fonctions à sens unique . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.2 Une première application des fonctions à sens unique : le problème du
mot de passe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.1.3 Systèmes cryptographiques asymétriques . . . . . . . . . . . . . . . . .
3.1.4 Théorie de la complexité et cryptographie . . . . . . . . . . . . . . . .
3.2 Le système RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.1 Les principe de RSA et sa mise en oeuvre . . . . . . . . . . . . . . . .
3.2.2 Attaques de RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.3 Remarques sur la sécurité de RSA . . . . . . . . . . . . . . . . . . . .
3.2.4 Authentication à divulgation nulle . . . . . . . . . . . . . . . . . . . .
3.2.5 Protocole de Guillou-Quisquater . . . . . . . . . . . . . . . . . . . . .
3.2.6 Signatures numériques et solution RSA . . . . . . . . . . . . . . . . . .
3.2.7 Utilisation d'une fonction de hachage . . . . . . . . . . . . . . . . . . .
3.3 Le problème du logarithme discret et ses applications . . . . . . . . . . . . . .
3.3.1 Exponentielle et logarithme discret . . . . . . . . . . . . . . . . . . . .
3.3.2 Protocole d'échange de clé de Die-Hellman . . . . . . . . . . . . . . .
3.3.3 Chirement d'ElGamal . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4 L'algorithme d'exponentiation modulaire rapide . . . . . . . . . . . . . . . . .
3.5 Un test ecace de primalité . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 Advanced Encryption Standard
4.1 Chirement . . . . . . . . . . . . . . . . . . . . .
4.1.1 Fonctionnement général du chirement . .
4.1.2 Transformation non-linéaire sur les octets
4.1.3 Décalage des lignes . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
25
25
26
27
28
28
28
29
30
30
33
35
35
36
36
36
37
37
39
40
40
40
40
40
41
43
43
45
46
46
46
48
49
49
49
51
51
52
53
56
56
56
56
58
P.Struillou
TABLE DES MATIÈRES
4.1.4 Brouillage des colonnes . . . .
4.1.5 Addition de la clé de tour . .
4.2 Déchirement . . . . . . . . . . . . .
4.3 Algorithme de cadencement des clés
4.4 Conclusion . . . . . . . . . . . . . . .
3
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Qu'est-ce qu'une courbe elliptique ? . . . . . . . . . . . . .
Structure de groupe d'une courbe elliptique . . . . . . . .
Courbes elliptiques sur un corps ni . . . . . . . . . . . .
Protocoles cryptographiques et courbes elliptiques . . . . .
5.4.1 Protocole de Die-Helmann par courbes elliptiques
5.4.2 Chirement ElGamal par courbes elliptiques . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
5 Chirement par courbes elliptiques
5.1
5.2
5.3
5.4
A Groupes, anneaux et corps
A.1 Lois de composition interne . . . . . . . . . . . . . .
A.2 Groupes . . . . . . . . . . . . . . . . . . . . . . . . .
A.2.1 Un peu d'histoire . . . . . . . . . . . . . . . .
A.2.2 Dénition d'un groupe . . . . . . . . . . . . .
A.2.3 Propriétés . . . . . . . . . . . . . . . . . . . .
A.2.4 Sous-groupes . . . . . . . . . . . . . . . . . .
A.2.5 Sous-groupes engendrés - groupes monogènes
A.2.6 Sous-groupes de Z . . . . . . . . . . . . . . .
A.2.7 Morphisme de groupe . . . . . . . . . . . . .
A.3 Anneaux . . . . . . . . . . . . . . . . . . . . . . . . .
A.3.1 Dénition d'un anneau . . . . . . . . . . . . .
A.3.2 Sous-anneaux . . . . . . . . . . . . . . . . . .
A.3.3 Morphisme d'anneaux . . . . . . . . . . . . .
A.3.4 Eléments inversibles dans un anneau . . . . .
A.3.5 Formule de Newton . . . . . . . . . . . . . . .
A.4 Corps . . . . . . . . . . . . . . . . . . . . . . . . . .
A.4.1 Dénition d'un corps . . . . . . . . . . . . . .
A.4.2 Construction du corps des complexes . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
58
59
60
60
60
61
61
61
63
64
65
66
67
67
67
67
68
69
70
70
71
72
73
73
73
74
74
74
75
75
75
P.Struillou
Chapitre 1
Cryptographie à clef privée
1.1 Généralités
1.1.1 Contexte général de la cryptographie
Alice souhaite transmettre à Bob un message sans qu'un opposant Oscar ne puisse le lire
s'il l'intercepte. Le message x est donc chiré à l'aide d'une clef k : cela donne un message
y = ek (x)
(1.1)
La fonction ek est la fonction de chirement, elle doit être injective pour que Bob puisse
déchirer le texte sans ambiguïté (i.e. y1 = y2 =⇒ x1 = x2 ). Bob connaît la clef k et peut
déchirer y à l'aide de la fonction de déchirement :
x = dk (y)
(1.2)
Un système cryptographique est donc la donnée :
1.
2.
3.
4.
5.
d'un ensemble P ni de blocs de textes clairs,
d'un ensemble C ni de blocs de textes chirés,
d'un ensemble K ni de clefs,
d'un ensemble de fonctions de chirement ek : P → C injectives,
d'un ensemble de fonctions de déchirement dk : C → P vériant dk ◦ ek = IdP .
Un message complet est une chaîne de blocs de P , i.e. X = x1 x2 . . . xn avec xi ∈ P , chiré
en un message Y = y1 y2 . . . yn avec yi ∈ C .
1.1.2 Cryptanalyse
Le décryptage du message y est la recherche de x quand on ne connaît pas la clef k
utilisée. C'est le travail minimal de l'opposant Oscar, qu'on appelle le cryptanalyste.
Idéalement, la cryptanalyse consiste à trouver la clef k. Pour Oscar, c'est un objectif un peu
plus ambitieux que le décryptage de y , car on suppose qu'il connaît le système cryptographique utilisé et peut donc, comme Bob, déchirer le texte à l'aide de dk s'il connaît la clef
utilisée par Alice. Cette hypothèse de travail est appelé principe de Kerckho : pour évaluer
4
CHAPITRE 1. CRYPTOGRAPHIE À CLEF PRIVÉE
5
la sécurité d'un système cryptographique il vaut mieux étudier la diculté de la tâche d'Oscar dans le cas, défavorable à Alice et Bob, où Oscar a toute l'information sur le système
cryptographique utilisé sauf la clef.
Par ordre de diculté décroissante pour Oscar, nous avons les 4 niveaux d'attaque suivants :
1. Attaque à texte chiré connu
Oscar ne connaît que la chaîne chirée Y .
2. Attaque à texte clair connu
Oscar dispose d'un texte chiré Y mais aussi du texte clair X correspondant ; il veut
en déduire la clef k pour déchirer les autres textes chirés avec la même clef.
3. Attaque à texte clair choisi
Oscar a temporairement accès à une machine chirante, il peut donc choisir un texte
clair X et obtenir le texte chiré Y correspondant.
4. Attaque à texte chiré choisi
Oscar a temporairement accès à une machine déchirante, il peut donc choisir un
texte chiré Y et obtenir le texte clair X correspondant.
L'idéal serait bien sûr qu'un système cryptographique résiste à une attaque à texte (clair ou
chiré) choisi.
La sécurité d'un système cryptographique est mesurée en évaluant la diculté du travail
du cryptanalyste, de sorte que le cryptographe est dans les faits aussi un cryptanalyste. Le
terme cryptologie désigne d'ailleurs l'étude de la cryptographie et de la cryptanalyse, qui est,
on le voit, incontournable pour le cryptographe.
1.2 Quelques systèmes cryptographiques simples
1.2.1 Chirement par décalage
On note n la taille de l'alphabet utilisé et on choisit un entier naturel k ≤ n. Il s'agit
simplement d'opérer une permutation circulaire de k caractères vers la droite sur chaque
caractère de l'alphabet.
Exemple. Cesar a utilisé cette méthode avec n = 26 (alphabet usuel) et k = 3 pendant la
guerre des Gaules. Autrement dit, il chirait ses messages en remplaçant A par D, B par
E, etc. Bien entendu, le X devient A, le Y devient B et le Z devient C (c'est ce que signie
permutation circulaire ).
On n'est pas du tout obligé de le faire, mais il est pratique pour automatiser la méthode, et
l'expliquer mathématiquement, de coder chaque caractère du texte clair en un entier naturel
≤ n − 1 (n = 26 par exemple, ou bien sur machine utiliser le code ASCII, soit n = 256). Le
principe, très simple (trop !), du chirement par décalage devient :
P = C = K = Zn = {0, 1, . . . , n − 1}
ek (x) = (x + k) mod n , dk (y) = (y − k) mod n
(1.3)
où on utilise l'addition modulaire (cf chapitre 2 pour la dénition de cette opération).
Ce système n'est absolument pas sûr car une cryptanalyse par recherche exhaustive de la clef
est facile puisqu'il n'y a que n clefs possibles.
P.Struillou
CHAPITRE 1. CRYPTOGRAPHIE À CLEF PRIVÉE
6
1.2.2 Chirement par substitution
Là aussi, le codage préalable des caractères sous forme numérique n'est pas indispensable,
mais il peut être pratique de le faire. On peut prendre P = C égaux à l'ensemble des caractères
à envoyer (par exemple P = C = {a, b, c, . . . , z}) ou bien préférer prendre P = C = Zn , où n
est la taille de l'alphabet utilisé (n = 26 dans notre exemple).
Le chirement par substitution est une généralisation de la méthode par décalage : au lieu
de prendre une permutation circulaire, on s'autorise toute permutation des caractères de
l'alphabet, i.e. toute bijection de P sur lui-même.
L'ensemble K des clefs possibles est l'ensemble des permutations de P , noté S(P) et appelé
groupe symétrique de P . Ainsi, une clef k est une permutation des caractères, et les règle de
chirement sont dans ce cas :
ek = k , dk = k −1
(1.4)
Une cryptanalyse par recherche exhaustive de la clef paraît ici dicile car il y a n! clefs
possibles. Mais une cryptanalyse par étude des fréquences statistiques des caractères chirés
et comparaison aux fréquence connues dans la langue de communication d'Alice et Bob, plus
l'étude de la fréquence des digrammes et des trigrammes, permet à Oscar de déchirer Y
avec des moyens de calculs limités, pourvu que la chaîne chirée Y soit susamment longue.
1.2.3 Chirement de Vigenère
C'est un exemple de chirement polyalphabétique. Expliquons directement la méthode
pour des caractères codés numériquement, ce qui permet de l'automatiser facilement. Soit
m ∈ N∗ , et :
P = C = K = (Zn )m
Pour k = (k1 , . . . , km ) ∈ K, x = (x1 , . . . , xm ) ∈ P dénissons :
(1.5)
ek (x) = e(k1 ,...,km ) (x1 , . . . , xm ) = (x1 + k1 , . . . , xm + km )
Le déchirement se fait bien sûr par la règle :
(1.6)
dk (y) = d(k1 ,...,km ) (y1 , . . . , ym ) = (y1 − k1 , . . . , ym − km )
Bien entendu les opérations (addition et soustraction) sont faites dans Zn , i.e. modulo n.
Exemple. Supposons que l'on souhaite chirer le texte RDV à Lannion à midi avec le
mot clef crypto (donc m = 6), si on dispose d'un alphabet comportant les 26 lettres,
codées de 1 à 26, et le caractère blanc noté et codé en 0 (donc n = 27), on décompose le
texte en blocs de 6 caractères :
rdval annion amidi
On code ces caractères, on ajoute à chaque bloc la clef crypto = 3 18 25 16 20 15
27 et on obtient le texte chiré. Par exemple le premier bloc devient
modulo
18 + 3 = 21, 4 + 18 = 22, 22 + 25 = 47 = 20, 0 + 16 = 16, 1 + 20 = 21, 12 + 15 = 27 = 0
Cette méthode est plus sûre que les précédentes mais ne résiste pas à une attaque avec des
moyens modernes de calcul. Notamment il existe une attaque basée sur le fait que si une suite
P.Struillou
CHAPITRE 1. CRYPTOGRAPHIE À CLEF PRIVÉE
7
de l caractères (l ≤ m) d'un bloc du texte clair se retrouve dans un autre bloc à la même
place, ces deux suites seront chirées de la même manière. Oscar peut donc assez facilement
deviner m en cherchant deux suites identiques dans le texte chiré. Si cela se produit k fois
il mesure les distances d1 , . . . , dk entre les suites composant chaque paire, et il sait que m
divise d1 , . . . , dk , ce qui lui permet de trouver m après quelques essais.
Après avoir trouvé m il existe une méthode de déchirage ecace que nous ne présenterons
pas ici (cf. Stinson, Cryptographie : Théorie et Pratique, paragraphe 1.2.3).
1.2.4 Chirement par permutation
Il ne faut pas confondre cette méthode avec le chirement par substitution. Ici on se
donne un entier m et la clef k est une permutation de {1, . . . , m} qu'on fait agir sur les
blocs de m caractères du texte clair. Il est donc a priori inutile de coder numériquement les
caractères, mais là aussi on peut être amené à le faire en pratique.
Ainsi, le bloc
x = (x1 , . . . , xm )
est chiré en
y = ek (x) = (xk(1) , . . . , xk(m) )
Ici, nous avons :
(1.7)
P = C = (Zn )m , K = S({1, . . . , m})
Le déchirement se fait bien sûr en appliquant la permutation inverse k−1 . Autrement dit :
dk (y) = ek−1 (y)
(1.8)
Exemple. Avec m = 4 et la clef k dénie par k(1) = 3, k(2) = 4, k(3) = 2, k(4) = 1, on
chire le texte mathematique en tham atme ueqi .
1.2.5 Chirement de Hill
Il est important ici de travailler dans un corps car nous allons devoir inverser des matrices
à coecients dans ce corps. Nous travaillons donc avec un alphabet comportant p caractères
où p est premier, et nous codons chaque caractère en un élément de P = Zp . En eet, nous
verrons au chapitre 2 que Zp est un corps ssi p est premier.
Par exemple on peut choisir p = 31, en considérant les 26 lettres plus le blanc et quelques caractères de ponctuation, ainsi on travaillera dans P = Z31 = {0, 1, . . . , 30} muni de l'addition
et de la multiplication modulaires.
Nous avons ici :
P = C = (Zp )m , K = GLm (Zp )
où GLm (Zp ) désigne l'ensemble des matrices carrées d'ordre m à coecients dans Zp inversibles. Ainsi, une clef k est une matrice carrée (kij ) d'ordre m à coecients dans le corps ni
Zp inversible. C'est ici que sert l'hypothèse que Zp est un corps, car on sait qu'on peut généraliser les résultats sur les matrices inversibles à coecients réels aux matrices inversibles à
coecients dans un corps quelconque. Notamment le matrice k est inversible ssi det k 6= 0.
P.Struillou
CHAPITRE 1. CRYPTOGRAPHIE À CLEF PRIVÉE
8
Le texte clair est décomposé en blocs de m caractères qui sont codés en éléments de Zp .
Chaque bloc x de m éléments de Zp est un vecteur de Zm
p que l'on note en colonne :

x1
 x2 
 
x= . 
 .. 
xm

Le chirement se fait tout simplement en appliquant la matrice k à gauche (il est donc
important que x soit écrit en colonne) :
ek (x) = kx = y
(1.9)
Et le déchirement se fait bien sûr par la règle :
dk (y) = k −1 y
(1.10)
Remarque. Le chirement par permutation est un cas particulier du chirement de Hill.
En eet, la clef est dans ce cas une permutation σ et il sut de considérer la matrice (kij )
dénie par kij = 1 si j = σ(i) et 0 sinon pour se ramener au chirement de Hill.
Il est facile de casser le chirement de Hill par cryptanalyse à texte clair choisi : Oscar
détermine d'abord m, en utilisant le fait que la longueur d'un texte chiré est un multiple
de m, donc m est le PGCD des longueurs des textes chirés. Après quelques essais on trouve
vite m.
Puis Oscar chire m blocs de texte clair et obtient m blocs de texte chiré. Oscar dispose
alors d'un système de m2 équations qui, s'il est de Cramer (sinon il recommence avec d'autres
textes), lui permet de trouver les inconnues kij , donc la matrice-clef k.
On voit que c'est la linéarité du système qui le rend fragile.
1.3 Notion de sécurité inconditionnelle - Le masque jetable
1.3.1 Sécurité inconditionnelle au sens de Shannon
En 1949, Shannon a déni la notion de sécurité inconditionnelle en développant sa théorie
de l'information. Cela lui a permis de dénir ce qu'est un système cryptographique absolument sûr . Nous allons voir qu'un tel système existe, mais qu'il est presque inutilisable en
cryptographie moderne (sauf cas très particuliers) pour des raisons de coût de calcul. Son
résultat nous montre qu'il faudra se contenter d'une notion de sécurité plus faible, basée sur
la complexité des algorithmes.
Pour réussir à quantier une notion apparemment qualitative telle que l'information, Shannon utilise la théorie des probabilités : il dénit l'entropie, qui est une mesure statistique de
la quantité d'information sur le message clair que porte le message chiré.
Ayant ainsi déni la quantité d'information, Shannon dit d'un chirement qu'il est inconditionnellement sûr si la connaissance du message chiré n'apporte pas d'information sur le
message clair, ce qui n'arrive que si les deux messages sont indépendants (au sens de la
théorie des probabilités).
P.Struillou
CHAPITRE 1. CRYPTOGRAPHIE À CLEF PRIVÉE
9
Le résultat de Shannon est alors assez intuitif : pour que le message chiré devienne indépendant du message clair, la clef utilisée doit être de longueur au moins égale à celle du
message clair ; la clef doit de plus être choisie aléatoirement et indépendamment du message
clair. Tout se passe alors comme si chaque nouveau caractère était chiré avec une nouvelle
clef, de sorte que l'on eace l'information au fur et à mesure du chirement.
Nous allons préciser cela.
1.3.2 La théorie de Shannon
Considérons une variable aléatoire X discrète pouvant prendre n valeurs x1 , . . . , xn avec
une probabilité non nulle
P(X = xi ) = pi > 0 pour i = 1, . . . , n
Shannon dénit la quantité d'information apportée par la réalisation de l'événement X = xi
par
IX (xi ) = − log2 pi
(1.11)
On remarque que la quantité d'information est un nombre positif (car 0 < pi ≤ 1) et qu'elle
est d'autant plus grande que pi est petit, ce qui est bien ce que souhaite Shannon : la
réalisation d'un événement qui avait a priori une grande probabilité de se produire ne nous
apporte pas beaucoup d'information.
On peut aussi dénir la quantité d'information apportée par la réalisation simultanée de
deux événements X = xi et Y = yj . C'est la quantité − log2 P(X = xi , Y = yj ), et si X et
Y sont des variables aléatoires indépendantes, on a
− log2 P(X = xi , Y = yj ) = − log2 P(X = xi )P(Y = yj )
= − log2 P(X = xi ) − log2 P(Y = yj )
Ainsi les quantités d'information associées à la réalisation de deux événements indépendants
s'ajoutent, ce qui est tout de même une propriété souhaitable pour l'information : l'observation de la réalisation d'un deuxième événement indépendant du premier nous apporte toute
l'information associée à ce deuxième événement.
Puis Shannon dénit l'entropie (ou incertitude ) de la variable aléatoire X :
H(X) =
n
X
IX (xi )pi
(1.12)
i=1
H(X) est donc la quantité d'information moyenne apportée par une observation de X .
On remarque que H(X) ≥ 0 et que H(X) = 0 si X est presque-sûrement constante. En eet si
P(X = x) = 1 pour un certain x, alors H(X) = − log2 (1).1 = 0. Autrement dit l'incertitude
sur le résultat d'une variable constante est nulle, ce qui est cohérent (de manière équivalente
on peut dire que l'information apportée par l'observation de la valeur prise par une v.a. qu'on
sait a priori constante est nulle). On peut démontrer la réciproque (si l'incertitude est nulle,
X est presque-sûrement constante) ; nalement :
H(X) = 0 ⇐⇒ X = cste
(1.13)
P.Struillou
CHAPITRE 1. CRYPTOGRAPHIE À CLEF PRIVÉE
10
Par ailleurs on peut démontrer la majoration
(1.14)
H(X) ≤ log2 n
Or, si la variable aléatoire X est équidistribuée sur {x1 , . . . , xn }, i.e. P(X = xi ) = pi =
pour tout i, alors
H(X) = −
1
n
n
X
1
1
log2 = log2 n
n
n
i=1
Donc l'incertitude est maximale lorsque la variable est équidistribuée, ce qui est logique.
L'information moyenne apportée par l'observation d'une v.a. X pouvant prendre n valeurs
est donc maximale si chaque valeur est équiprobable.
Pour appliquer cette théorie de l'information à la cryptographie, Shannon considère les
messages clairs possibles x ∈ P comme les diérentes réalisations d'une v.a. X , et les messages chirés y ∈ C comme les réalisations d'une v.a. Y . Le cryptanalyste connaît les ensembles P, C, K et le chiré y , mais ne connaît ni x, ni la clef k ∈ K. Considérons l'entropie
conditionnelle de X connaissant le message chiré y ; c'est l'entropie de X calculée avec la
probabilité conditionnellement à l'événément Y = y au lieu de la probabilité P :
H(X|Y = y) = −
X
P(X = x|Y = y) log2 P(X = x|Y = y)
x∈P
En faisant la moyenne sur les valeurs possibles de y , on obtient l'entropie conditionnelle de
X sachant Y :
H(X|Y ) =
X
H(X|Y = y)P(Y = y)
y∈C
= −
XX
y∈C x∈P
= −
X
P(Y = y)P(X = x|Y = y) log2 P(X = x|Y = y)
P(X = x, Y = y) log2 P(X = x|Y = y)
x∈P,y∈C
H(X|Y ) s'interprète comme l'incertitude qu'il reste sur le message clair lorsqu'on connaît le
message chiré.
Pour éviter des calculs de probabilités conditionnelles un peu compliqués, raisonnons simplement en utilisant l'interprétation de l'entropie en terme d'incertitude (tout ce qui suit
pourrait se démontrer rigoureusement). De façon générale, rajouter de l'incertitude augmente l'entropie, donc pour tout système cryptographique, on a
(1.15)
H(X|Y ) ≤ H(X)
puisque connaître Y diminue a priori l'incertitude sur X , i.e. l'incertitude sur X connaissant
Y est inférieure ou égale à l'incertitude sur X .
Shannon dit du système cryptographique qu'il est inconditionnellement sûr lorsque
H(X|Y ) = H(X)
(1.16)
P.Struillou
CHAPITRE 1. CRYPTOGRAPHIE À CLEF PRIVÉE
11
Autrement dit, le système est inconditionnellement sûr lorsque la connaissance d'un message
chiré n'apporte aucun information sur le message clair.
Appelons K la variable aléatoire pouvant prendre les diérentes valeurs possibles de la clef
k ∈ K. Alors
H(X|Y ) ≤ H(K|Y )
(1.17)
On peut se convaincre sans calcul que cette inégalité est vraie en invoquant l'argument
suivant : la connaissance du chiré y et de la clef k implique la connaissance du message x.
Supposons Y connu, alors dans le cas limite où il n'y a plus d'incertitude sur K , il n'y en a
plus non plus sur X , ce qui justie que l'incertitude sur X connaissant Y est inférieure ou
égale à l'incertitude sur K connaissant Y (bien entendu, ceci n'est pas une démonstration).
Dans le cas d'un système inconditionnellement sûr, on a H(X|Y ) = H(X), donc
(1.18)
H(X) = H(X|Y ) ≤ H(K|Y ) ≤ H(K)
Donc dans ce cas la quantité moyenne d'information apportée par la connaissance de la clef
est supérieure ou égale à celle apportée par la connaissance du message clair. Supposons
que nos messages soient des suites de bits, ainsi que les clefs. Si tous les messages en clair
sont équiprobables, ainsi que toutes les clefs, alors cela implique que la taille de la clef d'un
système cryptographique inconditionnellement sûr doit être au moins égale à celle du message
à chirer !
1.3.3 Un système inconditionnellement sûr : le chirement de Vernam
En 1917, voulant chirer des messages télégraphiques, Vernam a l'idée suivante : le texte
est découpé en blocs de taille m et on choisit une clef k = (k1 , . . . , km ) avec ki ∈ Z2
(il faut une clef de taille m pour chaque bloc à chirer !). La règle de chirement (et de
déchirement) est une simple addition bit à bit, i.e. un ou exclusif de deux chaînes de bits.
Ainsi, P = C = K = (Z2 )m et
e(k1 ,...,km ) (x1 , . . . , xm ) = (x1 + k1 , . . . , xm + km )
mod 2
d(k1 ,...,km ) (y1 , . . . , ym ) = (y1 + k1 , . . . , ym + km ) mod 2
(1.19)
(1.20)
Il est dicile de faire plus simple, et ce système a été réputé très sûr pendant plus de 30
ans avant que Shannon ne prouve eectivement qu'il est inconditionnellement sûr. Mais
la longueur de la clef à utiliser (et surtout à échanger entre Alice et Bob sur un canal
sécurisé), qui est la même que celle du message, le rend inutilisable en pratique sauf dans des
applications très spéciales (Che Guevara l'utilisait pour chirer les messages qu'il destinait
à Fidel Castro, et il a aussi été utilisé pendant la guerre froide pour sécuriser le téléphone
rouge, avec échange des clefs via la valise diplomatique).
De plus pour que le système soit eectivement inconditionnellement sûr, on doit choisir la
clef aléatoirement (et de façon équiprobable parmi les 2m clefs de taille m possibles) et
changer la clef à chaque nouveau message (à cause des principes probabilistes de la théorie
de Shannon rappelés plus haut). Il y a une autre raison, élémentaire : si on ne change pas la
clef à chaque fois, le système ne résiste pas à une simple attaque à texte clair connu. En eet,
si Oscar connaît le texte clair (x1 , . . . , xm ) correspondant à un texte chiré (y1 , . . . , ym ) qu'il
P.Struillou
CHAPITRE 1. CRYPTOGRAPHIE À CLEF PRIVÉE
12
a intercepté (situation courante : il sut d'avoir accès à un vieux message qui n'a plus de
raison d'être protégé par le secret) alors il connaît la clef : c'est tout simplement
(k1 , . . . , km ) = (x1 + y1 , . . . , xm + ym ) mod 2
puisque yj + xj = kj + xj + xj = kj + 2xj = kj mod 2.
Comme la clef ne sert qu'une fois, on appelle ce système le One-time Pad, ou encore le masque
jetable. C'est donc un système très lourd à mettre en ÷uvre : la seule possibilité, pour Alice
et Bob, est d'avoir accès de temps en temps à un canal sûr (une valise diplomatique par
exemple !) et d'en proter alors pour s'échanger des clefs susamment longues pour pouvoir
chirer n'importe lequel de leurs futurs messages clairs.
Vernam espérait que son système devienne un standard, mais la gestion des clefs a été un
obstacle à la commercialisation de son procédé.
Remarque. Il convient de se souvenir que la théorie de Shannon montre qu'on ne peut pas
faire plus économique qu'un masque jetable si on veut un système inconditionnellement sûr.
1.4 Méthodes de chirements en chaine
1.4.1 Principe des chirements en chaine
Plutôt que de chirer chaque bloc xi avec la même clef k, i.e. Y = ek (x1 ) . . . ek (xn ), on
peut pour plus de sûreté engendrer une séquence de clef k1 , . . . , kn et chirer X = x1 . . . xn
en
Y = ek1 (x1 ) . . . ekn (xn )
(1.21)
Ici, la i-ème clef ki est une fonction d'une clef initiale K0 (dite germe de clef ) et des blocs
à traiter antérieurs à xi :
ki = fi (K0 , x1 , . . . , xi−1 )
(1.22)
Ainsi, on chire en calculant successivement k1 = f1 (K0 ), y1 = ek1 (x1 ), k2 = f2 (K0 , x1 ), y2 =
ek2 (x2 ), etc. On déchire y1 . . . yn en calculant successivement k1 , x1 = dk1 (y1 ), k2 , x2 , etc.
Dans le cas particulier où la fonction fi qui permet de calculer ki ne dépend que de K0 (et
non des blocs xj , j < i), on dit qu'on a un chirement en chaîne synchrone (et asynchrone
sinon).
1.4.2 Un exemple simple de chirement en chaine synchrone : génération
des clefs par relation de récurrence linéaire
La séquence des clefs est obtenu par une relation de récurrence linéaire d'ordre m à
coecients constants dans Z2 = {0, 1}. L'intérêt de travailler dans ce corps est que tous les
calculs s'implantent facilement : l'addition (des bits) correspond au ou exclusif (xor ) et la
multiplication (des bits) correspond au et.
Le germe est K0 = (k1 , ..., km , c1 , ..., cm−1 ) avec ki ∈ Z2 et ci ∈ Z2 . On génère les clefs
avec la relation de récurrence :
∀i ≥ 1 km+i =
m−1
X
cj ki+j
mod 2
(1.23)
j=0
P.Struillou
CHAPITRE 1. CRYPTOGRAPHIE À CLEF PRIVÉE
13
Ici, bien sûr, tous les calculs sont faits dans le corps Z2 , i.e. modulo 2. On choisit toujours
c0 = 1, sinon ce n'est plus une relation de récurrence d'ordre m.
En pratique, la séquence des clefs peut être produite par un registre à décalage linéaire
(LFSR) puisqu'il s'agit d'utiliser une simple relation de récurrence linéaire à coecients
constants.
Les fonctions de chirement et de déchirement sont dans ce cas de simples additions bit à
bit des xi à chirer et de la clef ki :
eki (xi ) = xi + ki
mod 2 , dki (yi ) = yi + ki
(1.24)
mod 2
Les fonctions de chirement et de déchirement sont ici identiques puisque dans Z2 la soustraction est égale à l'addition :
dki (eki (xi )) = (xi + ki ) + ki = xi + 2ki = xi
mod 2
Étudions la cryptanalyse de ce système cryptographique. Comme dans le chirement de Hill,
cette méthode a un gros inconvénient : toutes les opérations sont linéaires, donc un peu
d'algèbre permet une attaque à texte clair connu. Expliquons comment.
On suppose donc qu'Oscar ait la possibilité de chirer le texte clair x1 . . . xn et d'obtenir ainsi
le chiré correspondant y1 . . . yn . Supposons que, par quelques recoupements, il connaisse
l'entier m utilisé. Alors de yi = xi + ki il déduit immédiatement ki = xi + yi . Il connaît donc
la séquence des clefs et il lui reste à trouver les coecients c1 , . . . , cm−1 (car on sait que c0
vaut 1). Or, ceci est très facile si son texte clair de départ est de longueur au moins n = 2m,
car il s'agit alors de résoudre un système de m équations à m inconnues c0 , . . . , cm−1 (avec
de plus c0 = 1), donné par (1.23).
On peut même démontrer que la condition c0 = 1 implique que ce système est de Cramer,
donc un seul essai lui sura ! Ainsi, la seule diculté pour Oscar est de déterminer l'entier
m.
1.4.3 Un exemple simple de chirement en chaine asynchrone
Ici, P = C = Zn (avec par exemple n = 26), on choisit un germe k0 ∈ Zn , puis
k1 = k0 et ∀i ≥ 2 ki = xi−1
(1.25)
eki (xi ) = (xi + ki ) mod n
(1.26)
Autrement dit, on ajoute au i-ème caractère le (i − 1)-ème caractère (modulo n).
Ici, le texte clair est utilisé comme clef. Le système est donc asynchrone. Le déchirement
se fait bien sûr par la règle :
dki (yi ) = (yi − ki ) mod n
(1.27)
1.5 Les standards de chifrement des données
1.5.1 Historique et principes généraux du DES
En 1977 est né le Data Encryption Standard qui répondait au cahier des charges déposé
par le National Bureau of Standards : gestion des clefs pas trop lourde, mélange d'opérations
linéaires et non linéaires (pas assez, au goût de certains...) an de compliquer la tâche du
P.Struillou
CHAPITRE 1. CRYPTOGRAPHIE À CLEF PRIVÉE
14
cryptanaliste, rapidité calculatoire du chirement et du déchirement, facilité d'implantation
aussi bien en logiciel qu'en matériel. DES a été un standard de 1977 à 1998 et il est encore
tellement utilisé qu'il importe de bien le connaître.
L'idée de base est d'utiliser plusieurs des méthodes simplistes déjà décrite (notamment le
chirement par substitution et celui par permutation) et de les combiner. De plus on eectuera 16 tours (16 itérations) avec génération à chaque fois d'une nouvelle clef (c'est donc
une méthode de chirement en chaîne). La taille des clefs est de 56 bits (donc K comporte
256 clefs initiales) sur la version classique, ce qui n'est plus assez actuellement (DES a été
cassé en 1998 par une association de particuliers qui a fait construire un processeur spécialisé
pour seulement 250 000 dollars, budget ridiculement bas pour un état ou même un ennemi
volontaire ayant quelques moyens).
D'ailleurs, la taille des clefs a été l'objet d'une polémique au début : il était initialement prévu
une taille de 128 bit. Une autre polémique a porté sur la faible proportion d'opérations non
linéaires dans le chirement par DES. En fait les opérations non linéaires sont faites dans les
boîtes-S (boîtes de substitutions) dont les critères de construction ne sont pas tous publics.
Certains ont ainsi accusé la NSA (National Security Agency) de s'être ménagé une trappe
secrète dans ces S-Box lui permettant de déchirer tous les messages chirés avec DES (i.e.
la majorité à l'époque, et encore un très grand nombre aujourd'hui).
La NSA arme au contraire que DES est sûr, ce qui semble avéré après 25 ans de bons et
loyaux services. Disons que si les attaquants éventuels n'ont pas trop de moyens de calcul
(et ne travaillent pas à la NSA), DES ore encore un niveau de sécurité convenable pour des
applications civiles courantes (opérations bancaires par exemple, où il est utilisé avec RSA,
étudié au chapitre 3, dans un protocole maintenant classique), d'autant qu'il peut être rendu
plus sûr avec triple-DES, qui utilise le logiciel de chirement DES ordinaire. De toute façon,
même si casser DES est théoriquement possible, encore faut-il que le temps et les eorts
nécessaires à sa cryptanalyse rendent l'opération rentable pour Oscar.
Pour les détails d'ordre technique (notamment l'architecture de DES en 16 tours, la description des S-Box (boîtes de substitutions) et des P-Box (boîtes de permutations), la génération
et la gestion des clefs, etc...) voir les transparents joints de Gérard Florin (CNAM) qui sont
assez précis.
1.5.2 AES
Il existe depuis 1999 un nouveau standard international : AES (Advanced Encryption
Standard) qui est aussi un système symétrique (i.e. à clef privée) et qui remplace progressivement DES. Le système AES est lui aussi une méthode de chirement en chaîne.
Au contraire de DES, les critères de construction de AES sont tous publics, ce qui était une
exigence de l'appel d'ore initial que AES a gagné. Sa sécurité est donc entièrement basée
sur la méconnaissance de la clef initiale, et non sur d'éventuels principes de fonctionnement
secrets qui ne seraient connus que par certaines entités privilégiées.
Une étude particulière est nécessaire pour AES, car ce système utilise des mathématiques
plus sophistiquées. AES est donc décrit en détail dans le chapitre 4.
P.Struillou
Chapitre 2
Fondements arithmétiques de la
cryptographie
On appelle arithmétique la branche des mathématiques qui s'occupe des propriétés des
entiers. Certaines de ces propriétés restent vraies pour d'autres objets mathématiques que
les nombres entiers (par exemple les polynômes à coecients dans un corps commutatif
peuvent se décomposer en produit de polynômes irréductibles, exactement comme les nombres
entiers peuvent se décomposer en produit de facteurs premiers), et on peut donc encore parler
d'arithmétique dans un contexte plus général. Bien que l'arithmétique puisse être considérée
comme faisant partie des mathématiques pures , ses applications sont particulièrement
nombreuses, en particulier en cryptographie. Ce chapitre est donc un pré-requis indispensable
au cours de cryptologie.
2.1 Divisibilité, congruences
2.1.1 Division euclidienne
Théorème 2.1.1 (Division euclidienne )
Soit a un élément de Z et b un entier naturel non nul. Il existe un couple unique d'entiers
(q, r) vériant
a = bq + r avec 0 ≤ r < b
(2.1)
L'entier relatif q est appelé quotient de la division euclidienne de a par b et l'entier
naturel r est appelé reste de cette division euclidienne.
Démonstration. Existence. L'ensemble A = {n ∈ Z ; bn ≤ a} est majoré : il existe un entier
N tel que bN > a. Comme A est un sous-ensemble de Z, A possède un plus grand élément q ,
déni de façon unique par les inégalités
qb ≤ a et (q + 1)b > a
Si on note r = a − bq , alors des deux inégalités précédentes, il vient :
r ≥ 0 et r < b
15
CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE
16
Unicité. Considérons deux couples (q1 , r1 ) et (q2 , r2 ) tels que a = bqi + ri avec 0 ≤ ri < b
pour i = 1, 2. On a qi b ≤ a et (qi + 1)b > a puisque ri ∈ J0, b − 1K, donc par l'unicité du plus
grand élément de A (cf. existence), on a q1 = q2 , donc r1 = a − bq1 = a − bq2 = r2 .
Remarque. Cette démonstration montre que q est le plus grand entier relatif tel que qb ≤ a.
Par exemple pour a = −6 et b = 4, on a q = −2 et r = 2.
Dénition 2.1.1 (Divisibilité )
Soit a, b deux entiers relatifs, b non nul. On dit que b divise a, et on note b | a, si le reste
de la division euclidienne de a par |b| est nul.
Remarque. La relation divise est une relation d'ordre sur N.
2.1.2 Relation de congruence
On note désormais a mod b le reste de la division euclidienne de l'entier a par l'entier
naturel non nul b.
Dénition 2.1.2 (Relation de congruence )
Soit n un entier naturel non nul. On dit que deux entiers relatifs x et y sont congrus
n s'ils ont même reste dans la division euclidienne par n, ou encore si leur
diérence x − y est un multiple de n. On note cette situation x ≡ y [n]. Autrement dit :
modulo
(2.2)
x ≡ y [n] ⇐⇒ ∃q ∈ Z x − y = nq
Ainsi, x et y sont congrus modulo n ssi x mod n = y mod n. On écrit souvent la relation
x ≡ y [n] sous la forme x ≡ y mod n, et on rencontre même la notation (plutôt ambiguë)
x = y mod n.
1
Théorème 2.1.2 (Compatibilité des opérations d'anneau avec la relation ≡)
Soit n un entier naturel non nul. La relation de congruence modulo n est une relation d'équivalence sur Z, compatible avec l'addition et avec la multiplication.
Autrement dit :
x1 ≡ y1 [n] et x2 ≡ y2 [n]
=⇒
x1 + x2 ≡ y1 + y2 [n]
x1 ≡ y1 [n] et x2 ≡ y2 [n]
=⇒
x1 x2 ≡ y1 y2 [n]
(2.3)
(2.4)
La démonstration est un exercice facile.
Corollaire 2.1.1. Soient n un entier naturel non nul, a, b des entiers et p un entier naturel.
Si a ≡ b [n], alors ap ≡ bp [n].
1. Au sujet de cette notation, noter la diérence typographique entre la relation x = y mod n et la
notation y mod n (la taille du blanc), qui, elle, représente très exactement le reste de la division de y par n,
entier compris entre 0 et n − 1 inclus.
P.Struillou
CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE
17
2.1.3 Idéaux de Z
Il est clair que Z est un anneau pour les lois de composition interne + et × :
1. L'addition est une loi de groupe commutatif : elle est associative, commutative, il
existe un élément neutre (le nombre 0), et chaque élément x de Z possède un opposé
(−x) dans Z (i.e un élément qui, ajouté à x, donne l'élément neutre).
2. La multiplication est associative.
3. La multiplication est distributive à droite et à gauche par rapport à l'addition.
4. La multiplication possède un élément neutre : le nombre 1.
De plus la multiplication est commutative, donc Z est un anneau commutatif. Ce n'est pas
un corps car il existe des éléments non nuls non inversibles pour la multiplication (les seuls
inversibles de Z sont 1 et −1).
Nous aurons besoin de la notion suivante :
Dénition 2.1.3 (Idéal d'un anneau )
Soit A un anneau commutatif, on appelle idéal de A tout sous-groupe additif J de A
vériant de plus
∀a ∈ J ∀x ∈ A
ax ∈ J
Théorème 2.1.3 (Idéaux de Z)
Les idéaux de l'anneau Z sont les ensembles de la forme nZ = {np ; p ∈ Z} pour un
certain n ∈ N.
Remarquons que nZ n'est autre que l'ensemble des multiples de n.
Démonstration. L'ensemble nZ est un idéal car d'une part 0 ∈ nZ, np1 + np2 = n(p1 + p2 ) ∈
nZ, −np = n(−p) ∈ nZ, donc nZ est un sous-groupe du groupe additif Z ; d'autre part pour
tout entier x, on a x(np) = n(xp) ∈ nZ.
Réciproquement, soit J un idéal de Z distinct de {0} (l'idéal réduit à 0 est clairement de la
forme nZ, pour n = 0). J contient donc un élément non nul, donc un élément strictement
positif en prenant au besoin son opposé (car J est un groupe). Appelons n le plus petit
élément strictement positif de J (cet élément n existe car l'ensemble des éléments strictement
positifs de J est un sous-ensemble de Z minoré par 0). On va montrer que J = nZ.
On a nZ ⊂ J , puisque J est un idéal. Par ailleurs si x ∈ J , on a x = nq + r avec 0 ≤ r < n.
Les éléments x et nq sont dans J , donc aussi r = x − nq puisque J est un groupe, donc r est
nul, car sinon on aurait trouvé un élément >0 de J plus petit que n. Donc x = nq , ce qui
prouve J ⊂ nZ.
Remarque. Cette démonstration montre même que les seuls sous-groupes additifs de Z
sont les ensembles de la forme nZ.
P.Struillou
CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE
18
Dénition 2.1.4 (Idéal engendré par une famille nie )
Soit a1 , . . . , ak des éléments d'un anneau A commutatif. On appelle idéal engendré par
{a1 , . . . , ak } l'ensemble
{u1 a1 + . . . + uk ak ; u1 ∈ A, . . . , uk ∈ A}
L'idéal engendré par un seul élément a est noté aA car c'est l'ensemble {ua ; u ∈ A} des
multiples de a.
L'idéal engendré par des éléments est clairement le plus petit idéal contenant ces éléments.
Lorsqu'un idéal est engendré par un seul élément, il est dit principal .
Le théorème 2.1.3 énonce donc que les idéaux de Z sont tous principaux : on dit que Z est
un anneau principal.
Théorème 2.1.4 (Caractérisation de la divisibilité en terme d'idéal )
Soit a et b des entiers relatifs, b non nul. On a :
b | a ⇐⇒ aA ⊂ bA
(2.5)
Démonstration immédiate, laissée en exercice (conseillé).
2.1.4 L'anneau Z/nZ
Soit n un entier naturel non nul. Le fait que la relation de congruence modulo n soit
compatible avec les lois de composition interne + et ×, et le fait que nZ soit un idéal,
permettraient de prouver que l'ensemble quotient de Z par cette relation d'équivalence
hérite d'une structure d'anneau commutatif. Lorsqu'on l'a muni de cette structure d'anneau,
dénie ci-dessous, on note Z/nZ cet ensemble quotient Z/ ≡.
Comme il existe n restes possibles, entre 0 et n − 1, Z/nZ comporte n éléments notés
0, 1, ..., n − 1. Un entier est dans la classe j de j s'il s'écrit j + nq . Autrement dit, on a
j + nq = j car j + nq ≡ j mod n. On dit que j + nq est un représentant de la classe de j .
Le fait que l'addition et la multiplication soient compatibles avec la relation de congruence
se traduit par le fait que l'on peut dénir l'addition et la multiplication dans Z/nZ par :
2
n+m = n+m
n × m = nm
(2.6)
(2.7)
On vérie aisément que ces dénitions ne dépendent pas des représentants choisis,
et que l'ensemble obtenu est bien un anneau commutatif.
Comme chaque classe possède un unique représentant entre 0 et n − 1, on peut identier
Z/nZ à l'ensemble Zn = {0, 1, . . . , n − 1} que l'on aurait muni d'une addition et d'une
multiplication particulière, dites modulaires . Par exemple dans Z4 , on peut écrire 4 = 0,
2 + 3 = 1, 2 × 3 = 2, façon impropre de dire que 4 = 0, 2 + 3 = 5 = 1, 2 × 3 = 6 = 2 dans
Z/4Z. Nous utiliserons souvent cet abus de notation bien pratique.
2. Si R est une relation d'équivalence sur un ensemble E , on appelle ensemble quotient E/R l'ensemble
des classes d'équivalence pour la relation R.
P.Struillou
CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE
19
2.2 PGCD - PPCM
2.2.1 Dénition du plus grand commun diviseur
Soit a1 , . . . , ak des entiers relatifs. On considère l'idéal qu'ils engendrent, composé des
nombres relatifs de la forme u1 a1 + · · · + uk ak avec u1 ∈ Z, . . . , uk ∈ Z. Cet idéal est principal
d'après le théorème 2.1.3, donc engendré par un élément d qu'on peut choisir positif (d > 0
si au moins un des ai est non nul, et d = 0 sinon). Par dénition ce nombre d est le plus
grand commun diviseur (PGCD) des nombres a1 , . . . , ak . On le note PGCD(a1 , . . . , ak )
ou a1 ∧ · · · ∧ ak .
Remarque importante. Cette dénition implique que tout nombre de la forme
u1 a1 +
· · · + uk ak est un multiple de d (car ces nombres sont les éléments de l'idéal engendré par
{a1 , . . . , ak }, donc sont les multiples de d). Réciproquement, tout multiple de d étant un
élément de l'idéal engendré par {a1 , . . . , ak }, on a
∀n ∈ Z
∃(u1 , . . . , uk ) ∈ Zk
nd = u1 a1 + · · · + uk ak
Notamment si d est le PGCD de a1 , . . . , ak , alors il existe des entiers u1 , . . . , uk tels que
(2.8)
d = u1 a1 + · · · + uk ak
Cette dénition du PGCD peut paraître inutilement abstraite, mais elle a l'intérêt de simplier beaucoup certaines des démonstrations qui vont suivre (notamment celle du théorème de
Bezout), et surtout elle s'étend à tout anneau principal (ce qui est intéressant en cryptologie, notamment pour les anneaux de polynômes). Elle correspond heureusement à la notion
élémentaire de PGCD vue au collège, comme on le voit en s'appuyant sur le théorème 2.1.4.
En eet si d′ est un diviseur commun aux ai , alors ai Z ⊂ d′ Z pour chaque i, donc l'idéal
engendré par a1 , . . . , ak est inclus dans d′ Z, donc d′ | d, ce qui exprime que d est eectivement
le plus grand commun diviseur des entiers ai .
Dénition 2.2.1 (Entiers premiers entre eux )
On dit que les entiers a1 , . . . , ak sont premiers entre eux si leur PGCD est 1.
Remarque. Ainsi, dire que des nombres a1 , . . . , ak sont premiers entre eux signie que l'idéal
qu'ils engendrent est 1Z, idéal égal à Z puisque constitué des multiples de 1. Cela signie
que a1 , . . . , ak sont premiers entre eux ssi tout nombre entier m peut s'écrire :
m = u1 a1 + . . . + uk ak
Attention : Si a1 , . . . , ak sont premiers entre eux deux à deux, i.e. ai ∧ aj
= 1 pour
tout (i, j) ∈ J1, kK2 tel que i 6= j , alors ils sont premiers entre eux (d'après la propriété
d'associativité ci-dessous), mais la réciproque est évidemment fausse. Par exemple, les entiers
6, 10 et 15 sont premiers entre eux, mais ils ne sont pas premiers entre eux deux à deux.
Pour insister sur le fait que ces deux propriétés sont bien distinctes, plutôt que de dire
simplement que a1 , . . . , ak sont premiers entre eux, on dit parfois qu'ils sont premiers entre
eux dans leur ensemble.
P.Struillou
CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE
20
2.2.2 Propriétés élémentaires du PGCD
1. Commutativité : PGCD(a, b)=PGCD(b, a)
Preuve. C'est évident puisque l'idéal engendré par a et b est évidemment aussi l'idéal
engendré par b et a.
2. Associativité : PGCD(a, b, c)=PGCD(a,PGCD(b, c))
Preuve. L'idéal engendré par a, b, c est J = {au + bv + cw ; (u, v, w) ∈ Z3 }. Or, si d1
désigne le PGCD de b et c, il existe des entiers s, t tels que d1 = sb + tc.
L'idéal J1 = {bv + cw ; (v, w) ∈ Z2 }, engendré par b et c, est (d1 ), donc J = {au +
p ; u ∈ Z, p ∈ J1 } = {au + xd1 ; (a, x) ∈ Z2 }, i.e J est engendré par a et d1 , donc par
leur PGCD, ce qui prouve que PGCD(a, b, c)=PGCD(a, d1 ).
3. Pour tout entier n, on a nPGCD(a1 , . . . , ak )=PGCD(na1 , . . . , nak )
Preuve. Si d=PGCD(a1 , . . . , ak ), alors l'idéal engendré par nd est :
{nu1 a1 + . . . + nuk ak ; (u1 , . . . , uk ) ∈ Zk }
2.2.3 Théorème de Bezout
Théorème 2.2.1 (Théorème de Bezout )
Les entiers a1 , . . . , ak sont premiers entre eux ssi il existe des entiers u1 , . . . , uk tels que
1 = u1 a1 + . . . + uk ak
Démonstration. C'est une conséquence de la dénition adoptée pour le PGCD : les entiers
a1 , . . . , ak sont premiers entre eux ssi leur PGCD est 1, donc ssi l'idéal engendré par a1 , . . . , ak
est Z en entier. Ainsi, si les entiers a1 , . . . , ak sont premiers entre eux, alors le nombre 1 peut
s'écrire 1 = u1 a1 + · · · + uk ak . Réciproquement, si 1 peut se décomposer ainsi, alors tout
n ∈ Z s'écrit n = nu1 a1 + . . . + nuk ak , donc Z est engendré par a1 , . . . , ak , donc le PGCD
de a1 , . . . , ak est 1.
2.2.4 Conséquences du théorème de Bezout
1. Soit d le PGCD de a1 , . . . , ak et soit ai = dbi (i ∈ {1, . . . , k}) la factorisation de ai
par d. Alors les entiers b1 , . . . , bk sont premiers entre eux.
Preuve. Il existe u1 , . . . , uk tels que d = a1 u1 + · · · + uk ak , donc puisque d 6= 0, on
obtient en divisant par d l'égalité 1 = b1 u1 + · · · + bk uk , donc les bi sont premiers
entre eux par Bezout.
2. Si a est premier avec b et avec c, alors a est premier avec bc.
Preuve. Sous l'hypothèse, il existe des entiers u1 , v1 , u2 , v2 tels que 1 = u1 a + v1 b =
u2 a + v2 c, donc en faisant le produit : 1 = a(u1 u2 a + u1 cv2 + bv1 u2 ) + bcv1 v2 , d'où le
résultat par Bezout.
Corollaire. Si a est premier avec bi pour tout i ∈ {1, . . . , n}, alors a est premier avec
le produit b1 . . . bn . En particulier si a est premier avec b, alors a est premier avec bq .
P.Struillou
CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE
3.
21
Théorème de Gauss
Théorème 2.2.2 (Théorème de Gauss )
Si a et b sont premiers entre eux et si a divise bc, alors a divise c
Démonstration. Par Bezout, il existe (u, v) ∈ Z2 tels que au + bv = 1, donc on a
auc + bvc = c. or, a | uac et a | bc, donc a | c.
4. Supposons que les entiers b1 , . Q
. . , bn soient premiers entre eux deux à deux. Si chaque
bi divise a, alors leur produit ni=1 bi divise a.
Dire que les entiers b1 , . . . , bn sont premiers entre eux deux à deux signie que pour
tout (i, j) tel que i 6= j , on a PGCD(bi , bj ) = 1.
Preuve. Par récurrence sur n ≥ 2 (l'énoncé n'a pas de sens si n ≤ 1). Pour n = 2,
supposons a = b1 q1 = b2 q2 où b2 est premier avec b1 , alors d'après le th de Gauss,
b2 | q1 , donc q1 = b2 q3 , donc a = b1 b2 q3 , donc b1 b2 | a.
Supposons la propriété vraie jusqu'à l'ordre n − 1, n ≥ 3, et soit b1 , . . . , bn des entiers
premiers entre eux deux à deux divisant tous a. Par hypothèse de récurrence a est
divisible par b1 . . . bn−1 . L'entier bn est premier avec b1 . . . bn−1 d'après la propriété
2 ci-dessus. D'après le cas n = 2 de cette démonstration, a est donc divisible par
b1 . . . bn .
2.2.5 Le plus petit commun multiple
Étant donnés k entiers a1 , . . . , ak , on considère l'intersection des idéaux qu'ils engendrent.
C'est un idéal, car toute intersection d'idéaux est un idéal, donc il est engendré par un
élément m, qu'on choisira positif :
mZ =
k
\
(2.9)
ai Z
i=1
Par dénition m est le plus
petit commun multiple (PPCM) des entiers a1 , . . . , ak .
On voit que m ∈ ai Z pour chaque i, donc m = qi ai , donc m est eectivement un multiple
commun aux ai . Réciproquement tout multiple commun aux ai est dans chaque idéal ai Z
donc dans leur intersection mZ, donc est de la forme km, et m est eectivement le plus petit
multiple commun des entiers ai .
Proposition 2.2.1 (Une propriété du PGCD et du PPCM )
Soient a et b deux entiers naturels, m leur PPCM et d leur PGCD. Alors
ab = md
(2.10)
Démonstration. Si a = da′ et b = db′ , alors PGCD(a′ , b′ ) = 1 d'après la propriété 1 du
paragraphe précédent.
L'entier a′ b′ d = b′ a = a′ b est un multiple de a et de b donc de m, donc a′ b′ d ∈ mZ.
P.Struillou
CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE
22
Par ailleurs, m = ax = by car m est un multiple de a et de b, donc da′ x = db′ y avec d 6= 0,
donc a′ x = b′ y . Ainsi, b′ | a′ x et b′ est premier avec a′ , donc b′ | x d'après le th de Gauss, i.e.
x = b′ q . Donc m = ab′ q = a′ db′ q ∈ a′ b′ d Z.
On a donc prouvé que mZ = a′ b′ d Z. Or, les deux entiers m et a′ b′ d sont positifs, donc ils
sont égaux, ce qui implique que md = a′ db′ d = ab.
2.2.6 L'algorithme d'Euclide
C'est un algorithme qui permet dans sa version simple de calculer le PGCD d de deux
entiers a et b, et dans sa version étendue de calculer en plus des entiers u et v tels que
au + bv = d. On dit de tels entiers u et v que ce sont des entiers de Bezout pour le couple
(a, b).
D'abord il n'est pas réducteur de supposer que a et b sont positifs (car PGCD(a, −b) =
PGCD(a, b)) et que a ≥ b (car PGCD(b, a) = PGCD(a, b)). L'algorithme est basé sur le fait
que si on fait la division euclidienne de a par b :
a = bq + r , 0 ≤ r < b
alors PGCD(a, b) = PGCD(b, r). En eet, l'ensemble des diviseurs communs à a et à b est
aussi l'ensemble des diviseurs communs à b et r, car si n | a et n | b, alors n | (a − bq), et
réciproquement si n | b et n | (a − bq), alors n | a.
Autrement dit, l'algorithme progresse en utilisant la propriété :
PGCD(a, b) = PGCD(b, a mod b)
(2.11)
On note donc r0 = a, r1 = b et on eectue la division euclidienne de a par b, ce qui donne
un reste r2 < b, puis de b = r1 par r2 , ce qui donne un reste r3 < r2 < b, puis de r2 par
r3 , ce qui donne un reste r4 < r3 < r2 < b, etc. Pour k ≥ 2, notons qk et rk le quotient
et le reste de la division euclidienne de rk−2 par rk−1 . Le procédé s'arrête, i.e. on nit par
trouver un reste nul (ce qui sera la condition d'arrêt de l'algorithme). En eet, la suite (rk )
est strictement décroissante et composée d'entiers naturels. Notons N le nombre
de divisions euclidiennes à eectuer pour obtenir un reste nul. Nous avons donc rN > 0 et
rN +1 = 0. On a alors rN −1 = rN qN +1 , donc
PGCD(a, b) = PGCD(rN −1 , rN ) = rN
Le PGCD de a et b est donc le dernier reste non nul dans la suite de divisions euclidiennes
à eectuer.
Ces principes étant compris, nous pouvons maintenant écrire l'algorithme d'Euclide simple,
qui prend en entrée deux entiers positifs a et b tels que a ≥ b et qui renvoie leur PGCD.
Nous supposons déjà écrite une fonction qui calcule a mod b. Sous une forme itérative, nous
obtenons l'algorithme suivant.
P.Struillou
CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE
23
Fonction PGCD_Euclide (entiers naturels a, b)
Variables r0, r1 : entiers
Début
(r0, r1) := (a, b) ;
Tant Que r1 6= 0 :
(r0, r1) := (r1, r0 mod r1) ;
FinTantQue
Retourne r0 ;
Fin
Exercice. Écrire l'algorithme d'Euclide sous une forme récursive.
Remarques.
1. L'algorithme fonctionne aussi si b = 0 : dans ce cas on ne rentre pas dans la boucle
Tant Que et l'algorithme renvoie a, qui est bien le PGCD de a et 0.
2. Lorsqu'on fait tourner l'algorithme à la main avec des entiers naturels, a est le
plus grand des deux nombres, de sorte que la première division euclidienne que l'on
fait est celle de a par b ≤ a. En fait l'algorithme tel qu'il est écrit fonctionne pour
b > a ≥ 0, car dans ce cas a div b = 0, de sorte qu'à la première itération, on a q = 0,
a devient b et b devient a : on se retrouve dans le cas a ≥ b ≥ 0.
3. Les principes de l'algorithme ont été décrits en supposant que a et b sont des entiers
naturels. On peut toutefois vérier que si a ou b est un entier négatif, alors l'algorithme
renvoie suivant les cas soit d = PGCD(a, b) ≥ 0, soit son opposé −d. Nous avons
adoptée une dénition du PGCD telle qu'il doit être positif. On peut donc accepter
en entrée de l'algorithme tout couple (a, b) ∈ Z2 en faisant une modication mineure :
retourner la valeur absolue de a à la sortie de la boucle plutôt que a.
4. Il est facile de faire apparaître un invariant de boucle, constitué de l'ensemble des
deux conditions suivantes :
PGCD(r0, r1) = PGCD(a, b) ;
r0 ≥ 0 et r1 ≥ 0.
La terminaison est assurée par le fait que la suite des valeurs de r1 est strictement
décroissante et constituée d'entiers naturels. Ceci sut à prouver que l'algorithme
calcule dans tous les cas le PGCD de a et de b, car les deux propriétés sont vériées
à l'entrée dans la boucle, et à la sortie de la boucle on aura r0 = PGCD(r0, 0) =
PGCD(a, b).
Supposons que nous voulions, en plus du PGCD, déterminer u et v tels que au + bv = d,
où d est le PGCD de a et b (version étendue de l'algorithme d'Euclide).
Reprenons les notations précédentes : a = r0 , b = r1 , qk et rk le quotient et le reste de la
division euclidienne de rk−2 par rk−1 , N le nombre de divisions à eectuer, de sorte que
rN est le dernier reste non nul. Le principe de l'algorithme consiste à calculer à la k -ème
itération des entiers uk et vk tels que auk +bvk = rk . Si de telles valeurs uk et vk existent, alors
on a en particulier auN + bvN = rN = PGCD(a, b). Sous réserve d'existence de (uk )0≤k≤N
et (vk )0≤k≤N , il surait de recueillir les valeurs uN et vN à la sortie de la boucle et elles
conviendraient pour u et v .
P.Struillou
CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE
24
Pour construire (uk )0≤k≤N et (vk )0≤k≤N telles que auk + bvk = rk , raisonnons par analyse
et synthèse.
Analyse. Supposons les (N + 1)-uplets (uk )0≤k≤N et (vk )0≤k≤N construits. On a rk−2 =
rk−1 qk + rk pour tout k ∈ {2, . . . , N + 1}, donc nous avons pour k ∈ {2, . . . , N } :
auk + bvk = rk−2 − qk rk−1 = auk−2 + bvk−2 − qk (auk−1 + bvk−1 )
= a(uk−2 − qk uk−1 ) + b(vk−2 − qk vk−1 )
ce qui conduit à essayer pour (uk )0≤k≤N et (vk )0≤k≤N des solutions de l'équation récurrente
d'ordre 2 suivante :
xk = xk−2 − qk xk−1
Si cette approche est bonne (c'est la synthèse qui le dira), nous devrons initialiser notre
récurrence d'ordre 2. Nous avons r0 = a et r1 = b, donc pour que la relation au0 + bv0 = r0
soit vraie, il sut de choisir u0 = 1 et v0 = 0. De même, pour que la relation au1 + bv1 = r1
soit vraie, il sut de choisir u1 = 0 et v1 = 1.
Synthèse. Soit (uk )0≤k≤N et (vk )0≤k≤N vériant

uk = uk−2 − qk uk−1 pour k ∈ {2, . . . , N }



u0 = 1 , u1 = 0
v = vk−2 − qk vk−1 pour k ∈ {2, . . . , N }


 k
v0 = 0 , v 1 = 1
(2.12)
On a alors :
auk + bvk = a(uk−2 − qk uk−1 ) + b(vk−2 − qk vk−1 )
= auk−2 + bvk−2 − qk (auk−1 + bvk−1 )
Raisonnons par récurrence. La propriété auk + bvk = rk est vraie pour k = 0 et pour k = 1.
Supposons la vraie jusqu'à l'ordre k − 1, où 2 ≤ k ≤ N . On a alors
auk + bvk = auk−2 + bvk−2 − qk (auk−1 + bvk−1 ) = rk−2 − qk rk−1 = rk
puisque par hypothèse rk est le reste de la division euclidienne de rk−2 par rk−1 . Cela termine
la preuve par récurrence que (2.12) dénit bien deux suites (uk )0≤k≤N et (vk )0≤k≤N vériant
la relation auk + bvk = rk pour tout k ∈ {0, . . . , N }. Les entiers uN et vN sont donc tels que
auN + bvN = rN = PGCD(a, b)
(2.13)
Remarques.
1. On note que les deux suites (uk ) et (vk ) vérient la même relation de récurrence,
mais évidemment elles sont distinctes puisqu'elles ne sont pas initialisées de la même
façon.
2. Il est intéressant de remarquer que d'après (2.12), le calcul de (uk ) peut être fait
indépendamment de celui de (vk ). Cette remarque sera utile dans le paragraphe 2.4.2
P.Struillou
CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE
25
Exercices.
1. En utilisant les principes précédents, écrire la version étendue de l'algorithme d'Euclide, qui prend en entrée deux entiers naturels a et b tels que a ≥ b et qui renvoie
leur PGCD d et des entiers de Bezout u et v tels que au + bv = d.
2. Déterminez un invariant de boucle de cet algorithme d'Euclide étendu et démontrez
que votre algorithme calcule bien PGCD(a, b) et des entiers de Bezout u et v .
2.3 Nombres premiers
Dénition 2.3.1 (Nombre premier )
Un entier relatif p est dit premier s'il est diérent de 0, 1, −1 et si les seuls diviseurs de
p sont 1, −1, p, −p. Les entiers non premiers et diérents de 0, 1, −1 sont dits composés.
2.3.1 Propriétés élémentaires des nombres premiers
1. Tout entier diérent de 0, 1, −1 possède un diviseur premier.
Preuve. Soit n 6= 0, 1, −1 et soit E l'ensemble des diviseurs > 1 de n. E n'est pas
vide puisque |n| ∈ E . Donc E a un plus petit élément p. Si p possède un diviseur
d > 0, alors d | n, donc soit d = 1, soit d = p (sinon, cela contredirait la dénition de
p comme élément minimal de E ), donc p est premier.
2. L'ensemble P des nombres premiers positifs est inni
Preuve. Supposons que P ne possède que r éléments p1 , . . . , pr . Alors l'entier n =
p1 . . . pr + 1 n'est divisible par aucun pi (car le reste de la division euclidienne de n
par pi est 1). D'après la première propriété, comme n est positif, cela impliquerait
que n = 0 ou n = 1, ce qui est absurde puisque le plus petit nombre premier positif
est 2, donc n ≥ 3.
3. Si p est premier et ne divise pas n, alors p et n sont premiers entre eux
Preuve. C'est évident car si d | p et d | n, alors d = ±1, donc PGCD(p, n) = 1.
4. Un entier p est premier ssi il vérie la propriété suivante :
∀(x, y) ∈ Z2
(p|xy) =⇒ ((p|x) ou (p|y))
(2.14)
Preuve. Si p est premier et si p | xy, alors si p ne divise pas y, p et y sont premiers
entre eux donc, d'après le théorème de Gauss, p | x.
Réciproquement, supposons la propriété vériée. Soit d un diviseur de p, donc p = dd′ ,
donc p | d ou p | d′ .
Si p | d, alors comme d | p, on a d = ±p (et d′ = ±1), donc p est premier.
Si p | d′ , alors p = dpd′′ , donc dd′′ = ±1, ce qui implique que d = ±1 puisque d et d′′
sont des entiers, donc p est premier.
P.Struillou
CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE
26
2.3.2 Décomposition en nombres premiers
Théorème 2.3.1 (Décomposition en produit de nombres premiers )
Pour tout entier n non nul, il existe une unique suite d'entiers naturels (αp )p∈P tous nuls
sauf un nombre ni d'entre eux telle que
n=±
Y
(2.15)
p αp
p∈P
Autrement dit, tout entier naturel non nul n s'écrit de façon unique :
n = pα1 1 . . . pαr r
où les pi sont premiers.
Démonstration. On peut bien sûr se contenter de le montrer pour n ∈ N. On va faire une
récurrence sur n. Pour n = 1, la suite nulle (αp = 0) convient, et elle est clairement la seule
à convenir.
Supposons la propriété vraie pour 1 ≤ m ≤ n − 1.
On sait que n possède un diviseur premier p0 , donc n = mp0 . On a 1 ≤ m < n car
p0 étant premier, on a p0 ≥ 2. Par l'hypothèse de récurrence il existe Y
une unique suite
pβp . On a donc
(βp )p∈P d'entiers, tous nuls sauf un nombre ni d'entre eux, telle que m =
n = p0
Y
p∈P
p , donc la suite dénie par αp = βp si p 6= p0 et αp0 = βp0 + 1 convient.
βp
p∈P
On n'a pas prouvé l'unicité de cette suite car on a privilégié dans le raisonnement l'un des
diviseurs p0 de n (on sait qu'il en existe au moins un, mais rien ne prouve dans le cas où il
y en a d'autres que l'on trouverait la même suite (αp )p∈P ).
Supposons donc que notre entier n s'écrive
n=
Y
pαp =
Y
pγp
p∈P
p∈P
Soit p0 tel que αp0 ≥ 1 (ce p0 existe car dans notre raisonnement par récurrence, noter que
n ≥ 2). Alors
Y
αp0
p0
γp0
| n = p0
pγp
p∈P,p̸=p0
Or,
αp
p0 0
est premier avec tout premier p 6= p0 , donc est également premier avec
Y
pγp
p∈P,p̸=p0
α
γ
Grâce au théorème de Gauss, p0 p0 | p0p0 , donc αp0 ≤ γp0 .
En changeant les rôles des deux suites, on arrive à γp0 ≤ αp0 , d'où αp = γp dès que αp ≥ 1,
d'où l'unicité de la suite (αp ).
P.Struillou
CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE
27
Corollaire 2.3.1. Soient deux entiers n et m de décomposition en facteurs premiers
n=±
Y
p∈P
On a :
n|m
⇐⇒
pαp , m = ±
Y
pβp
p∈P
(∀p ∈ P) (αp ≤ βp )
(2.16)
2.3.3 Vérication élémentaire de primalité
Il existe un algorithme élémentaire connu depuis l'antiquité pour tester la primalité d'un
entier naturel : le crible d'Eratosthène, qui de plus fournit la liste des nombres premiers
inférieurs à un nombre donné. Décrivons son principe.
Supposons n non premier (n > 1). Il s'écrit n = pq où p ≥ 2, q ≥ 2, et où p est choisi
premier le plus petit possible.
Si q est premier, alors q ≥ p, donc n ≥ p2 .
Si q est composé, alors q = rs avec r premier. L'entier r est alors un diviseur premier de n,
donc on a r ≥ p, d'où encore n ≥ pr ≥ p2 .
Ainsi, n est composé ssi il possède un diviseur premier p tel que p2 ≤ n. Il en résulte un test
de primalité
pour un entier n : on divise n par les nombres premiers p successifs vériant
√
p ≤ n et si aucune division ne se fait exactement, c'est que n est premier.
En procédant de la façon suivante, le même principe permet de dresser la liste des nombres
premiers inférieurs à un entier donné N .
On écrit tous les nombres de 2 à N .
2 est premier, on le garde et on raye tous ses multiples (les nombres pairs).
3 est premier, on le garde
√ et on raye tous ses multiples, etc.
Quand on arrive à m > N , on peut s'arrêter : tous les nombres non rayés sont premiers.
Malheureusement cet algorithme (appelé crible d'Eratosthène ) est très lent pour de grandes
valeurs de N . Notamment il ne sera pas utilisable en pratique pour tester la primalité de
très grands entiers, ce qui serait pourtant très utile en cryptographie.
On peut l'améliorer√un peu en donnant
√ une condition d'arrêt visuelle (i.e. permettant
d'être sûr que p > N sans calculer N ). En eet n est premier ssi sa division par chaque
premier p tel que p2 ≤ n n'est pas exacte, donc donne n = pq + r avec 0 < r < p. Ainsi, n
est premier ssi pour chaque premier p tel que p2 ≤ n, on a l'encadrement pq < n < p(q + 1).
Donc pour repérer sans calcul le plus petit p tel que p2 > n (condition d'arrêt de notre
algorithme), on voit qu'il sut que le quotient q vérie q + 1 ≤ p, donc on s'arrête quand le
quotient q vérie q < p.
Exemple. Supposons qu'on veuille tester la primalité de 211.
On divise
On divise
On divise
On divise
211 par
211 par
211 par
211 par
le nombre premier
le nombre premier
le nombre premier
le nombre premier
3, le reste est r = 1, le quotient q = 70
5, le reste est r = 1, le quotient q = 42
7, le reste est r = 1, le quotient q = 30
11, le reste est r = 2, le quotient q = 19
P.Struillou
CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE
28
On divise 211 par le nombre premier 13, le reste est r = 3, le quotient q = 16
On divise 211 par le nombre premier 17, le reste est r = 41, le quotient q = 12.
Comme 12 < 17, on peut s'arrêter : 211 est premier.
2.3.4 Le théorème d'Hadamard
En utilisant la théorie des fonctions analytiques (ce sont des fonctions de la variable
complexe très utiles pour étudier certaines questions d'arithmétique : en mathématiques,
des domaines très diérents en apparence sont en fait étroitement interconnectés...), les
mathématiciens français Hadamard et De la Vallée-Poussin ont réussi à démontrer (indépendamment l'un de l'autre) un très important résultat sur la raréfaction des grands nombres
premiers, qui avait été conjecturé par le prince des mathématiciens , l'allemand Gauss,
un siècle avant. Énonçons ce résultat (sans preuve, elle est longue, technique et dicile, et
les notions utilisées sont hors-programme en lière INFO).
Théorème 2.3.2 (Théorème d'Hadamard - De la Vallée-Poussin )
On note π(N ) le nombre de nombres premiers inférieurs ou égaux à N . On a :
π(N ) ∼
N
ln N
Autrement dit, le quotient de π(N ) et de
quand N → +∞
(2.17)
N
tend vers 1 quand N tend vers l'inni.
ln N
Par exemple, on peut dire que l'on connaît approximativement le nombre de nombres premiers inférieurs à 1020 : d'après le résultat d'Hadamard, il y en a environ 2.1018 .
Par contre ce théorème ne nous donne aucune information sur l'emplacement des grands
nombres premiers. De façon générale il reste de très nombreuses questions sans réponse sur les
nombres premiers, et beaucoup de ces problèmes sont en étroite liaison avec la cryptographie
moderne.
2.4 Inversion modulo n
2.4.1 Éléments inversibles de Z/nZ
Soit n un entier naturel non nul. On s'intéresse ici aux éléments inversibles de l'anneau
Z/nZ, i.e. aux a ∈ Z/nZ tels qu'il existe b ∈ Z/nZ vériant a × b = 1, ce qui revient à dire :
ab ≡ 1 [n]
(2.18)
Théorème 2.4.1 (Inversibles modulo n)
ā ∈ Z/nZ est inversible (pour la multiplication de l'anneau Z/nZ) si et seulement si a
et n sont premiers entre eux.
P.Struillou
CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE
29
Lorsque a est inversible dans Z/nZ, on dit que l'entier a est inversible modulo n . En vue
du cours de cryptographie, il est très important de comprendre la démonstration (d'ailleurs
très simple) de ce théorème.
Démonstration. Soit a ∈ J0, n−1K (tout élément de Z/nZ a un représentant entre 0 et n−1).
Le résultat provient du théorème de Bezout :
a inversible ⇐⇒ ∃b ∈ J0, n − 1K tel que a × b = 1
⇐⇒ ∃b ∈ J0, n − 1K et ∃q ∈ Z tels que ab = 1 + nq
⇐⇒ ∃b ∈ J0, n − 1K et ∃q ∈ Z tels que
ab − nq = 1
|
{z
}
relation de Bezout
⇐⇒ a ∧ n = 1
Remarque. Pour
n ≥ 2 (seuls cas intéressants en pratique), si a ∈ Z/nZ est inversible,
alors a 6= 0, donc b ∈ J1, n − 1K dans cette preuve. En eet, si 0 est inversible, alors il existe
c ∈ Z/nZ tel que 0 c = 1, donc 0 = 1, ce qui signie n = 1. Le fait que l'anneau Z/nZ ait n
éléments reste vrai pourn = 1 car deux entiers sont toujours congrus modulo 1, donc 0 = Z :
on peut écrire Z/1Z = 0 et dans cet anneau réduit à un point, les éléments neutres pour
l'addition et la multiplication sont égaux.
Corollaire 2.4.1.
Z/nZ est un corps ssi n est premier.
Démonstration. L'anneau Z/nZ est un corps ssi tout élément a non nul est inversible. D'après
le théorème précédent, cela arrive ssi n est premier.
2.4.2 Calcul de l'inverse modulo n
Dans la démonstration du théorème 2.4.1, on a utilisé le théorème de Bezout, et on voit
que l'inverse éventuel de a est un entier b de Bezout vériant −nq + ab = 1.
Il en résulte que le calcul de l'inverse modulo n d'un entier a inversible peut s'eectuer à
l'aide de l'algorithme d'Euclide étendu légèrement modié : on teste si un entier est inversible
modulo n en calculant le PGCD de n et de a, et on donne le cas échéant l'inverse, dont un
représentant sera l'entier de Bezout v calculé lors de l'appel de la fonction Euclide_Bezout
sur les arguments n et a (dans cet ordre).
Remarque. Le calcul de l'entier de Bezout u est ici inutile : la remarque 2 page 24 montre
que le calcul de v peut se faire indépendamment de celui de u, ce qui autorise une économie
par rapport à l'algorithme d'Euclide étendu.
Exercice. Écrire un algorithme qui prend en entrée deux entiers naturels n et
a tels que
1 ≤ a < n, signale si a est inversible modulo n et, si c'est le cas, renvoie l'inverse de a
modulo n. L'algorithme doit réaliser l'économie décrite dans la remarque précédente.
Cet algorithme est d'usage courant en cryptographie. Il est ecace. En eet, en considérant
que l'opération élémentaire est la division euclidienne, on démontre (cf. TD) que sa complexité dans le pire des cas est un O ln(n) . Il est donc linéaire en la taille de la plus grande
des données d'entrée (rappelons que ln n est proportionnel au nombre de chires de n).
P.Struillou
CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE
30
2.4.3 Générateurs du groupe (Z/nZ, +)
Soit n un entier naturel non nul. On considère le groupe additif Z/nZ. Nous nous
proposons ici de déterminer ses générateurs, i.e. les éléments k qui engendrent tous les autres
par la seule opération d'addition : k est un générateur de Z/nZ si pour tout x ∈ Z/nZ, il
existe ℓ ∈ N∗ tel que x = |k + ·{z
· · + k} = ℓ k .
ℓ
fois
Théorème 2.4.2 (Générateurs du groupe additif
Z/nZ)
Les générateurs du groupe (Z/nZ, +) sont les classes des entiers naturels p < n premiers
avec n.
Démonstration. D'abord, remarquons que pour que a ∈ Z/nZ soit un générateur, il sut
qu'il engendre 1, car 1 est lui même un générateur (tout élément k s'écrit k 1). Or :
a engendre 1 ⇐⇒ ∃p ∈ N tel que 1 = p a
⇐⇒ ∃p ∈ N et ∃q ∈ Z tels que ap = 1 + nq
⇐⇒ a ∧ n = 1
Remarque. Ainsi, les générateurs du groupe additif
(pour la multiplication ) de Z/nZ.
Z/nZ sont aussi les éléments inversibles
2.4.4 Théorème des restes chinois
Nous donnons ce théorème sous deux formes, l'une plus théorique , l'autre plus
pratique et fonctionnelle , adaptée à la cryptographie.
3
p
Pour comprendre la forme théorique, remarquons d'abord que
Qppour tout (m1 , . . . , mp ) ∈ N
avec mj ≥ 2, le produit cartésien Z/m1 Z × · · · × Z/mp Z = j=1 Z/mj Z peutQ
être muni de
deux lois de compositions internes qui en font un anneau, dit anneau produit pj=1 Z/mj Z.
(i) (i)
En eet, si Ai , +, ×
est un anneau pour chaque i ∈ J1, pK, alors on vérie aisément que
A1 × · · · × Ap muni des opérations + et × dénies de la façon suivantes :
(p)
(1)
(x1 , . . . , xp ) + (y1 , . . . , yp ) = x1 + y1 , . . . , xp + yp
(2.19)
(1)
(p)
(x1 , . . . , xp ) × (y1 , . . . , yp ) = x1 × y1 , . . . , xp × yp
(2.20)
vérie les axiomes d'anneau, avec 0A1 , . . . , 0Ap l'élément neutre de + et 1A1 , . . . , 1Ap
l'élément neutre de ×.
Pour tout k ≥ 2, notons clk (x) la classe de x ∈ Z dans Z/kZ.
3. au programme des classes préparatoires MP et des IUT d'informatique, mais pas des autres lières
P.Struillou
CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE
31
Théorème 2.4.3 (Théorème des restes chinois, forme algébrique )
Soient m1 , . . . , mp des entiers naturels non nuls deux à deux premiers entre eux,
Q
Q
i.e. mi ∧ mj = 1 pour i 6= j , et soit m = pj=1 mj . L'anneau produit pj=1 Z/mj Z
est isomorphe à Z/mZ. Plus précisément, l'application suivante est un isomorphisme
d'anneau :
Qp
Φ : Z/mZ −→
j=1 Z/mj Z
(2.21)
7→
clm (x)
clm1 (x), . . . , clmp (x)
Démonstration. D'abord Φ est bien dénie car clm1 (x), . . . , clmp (x) ne dépend pas du
représentant de clm (x) choisi. En eet, si y ≡ x mod m, alors il existe k ∈ Z tel que
y = x + km = x + k m1 . . . mp , donc y ≡ x mod mj pour 1 ≤ j ≤ p, d'où clmj (x) = clm (y).
Vérions que Φ est un morphisme d'anneaux (cf. dénition A.3.2). Pour tout (x, y) ∈ Z2 ,
on a :
Φ clm (x) + clm (y)
=
=
=
=
|{z}
cf. déf.
(2.19)
=
On a de même :
Φ clm (x)clm (y)
=
=
=
=
|{z}
cf. déf.
(2.20)
=
Φ clm (x + y)
clm1 (x + y), . . . , clmp (x + y)
clm1 (x) + clm1 (y), . . . , clmp (x) + clmp (y)
clm1 (x), . . . , clmp (x) + clm1 (y), . . . , clmp (y)
Φ clm (x) + Φ clm (y)
Φ clm (xy)
clm1 (xy), . . . , clmp (xy)
clm1 (x)clm1 (y), . . . , clmp (x)clmp (y)
clm1 (x), . . . , clmp (x) × clm1 (y), . . . , clmp (y)
Φ clm (x) × Φ clm (y)
Pour que Φ soit un morphisme d'anneau, n'oublions pas de vérier aussi :
Φ clm (1)
=
clm1 (1), . . . , clmp (1)
= élément neutre de la multiplication dans l'anneau produit
p
Y
Z/mj Z
j=1
Comme pour tout morphisme de groupe, pour vérier que Φ est injectif, il sut de vérier
que son noyau est réduit à {clm (0)}. Or, on a :
x ∈ Ker Φ ⇐⇒ Φ clm (x) = clm1 (0), . . . , clmp (0)
⇐⇒ clm1 (x), . . . , clmp (x) = clm1 (0), . . . , clmp (0)
⇐⇒ ∀j ∈ J1, pK clmj (x) = clmj (0)
⇐⇒ ∀j ∈ J1, pK mj | x
⇐⇒ m = m1 . . . mp | x
car mi ∧ mj = 1 pour i 6= j
P.Struillou
CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE
32
Ainsi,
x ∈ Ker Φ ⇐⇒ x = clm (0), donc Φ est injectif. Or, les deux ensembles Z/mZ et
Qp
j=1 Z/mj Z ont même cardinal m = m1 . . . mp , donc Φ est bijectif.
La forme fonctionnelle du théorème des restes chinois est consacrée à la résolution dans Z
du système de congruences suivant, où a1 , . . . , ap sont des entiers donnés et m1 , . . . , mp
des entiers naturels non nuls deux à deux premiers entre eux :

x ≡ a1



 x ≡ a2
..

.



x ≡ ap
mod m1
mod m2
(2.22)
mod mp
D'après le théorème 2.4.3, le système (2.22) a une unique solution x0 dans J0, m − 1K, où
m = m1 . . . mp , et les autres solutions dans Z sont x0 + km où m ∈ Z. En eet, pour
toute solution x de (2.22), clm (x) est l'unique antécédent par Φ de clm1 (a1 ), . . . , clmp (ap ) .
Résoudre (2.22) revient donc à expliciter l'isomorphisme d'anneau inverse Φ−1 .
Puisque mj ∧ mi = 1Y
pour j 6= i, d'après une propriété démontrée au paragraphe 2.2.4,
′
l'entier mi = m/mi =
mj est premier avec mi , donc m′i est inversible modulo mi .
j̸=i
Notons
m′−1
i
un représentant de l'inverse de clmi (m′i ), et dénissons :
x0 =
p
X
!
ai m′i m′−1
i
mod m
(2.23)
i=1
Démontrons que x0 est une solution de (2.22). Par dénition de m′−1
j , pour tout j ∈ J1, pK,
′−1
′−1
′
′
on a mj mj ≡ 1 mod mj , donc aj mj mj ≡ aj mod mj . Par ailleurs, pour i 6= j ,
on a m′i ≡ 0 mod mj , donc ai m′i mi′−1 ≡ 0 mod mj . En sommant toutes ces relations
de congruences, on obtient :
p
X
ai m′i m′−1
≡ 0 + . . . 0 + aj + 0 + · · · + 0
i
mod mj
i=1
Pp
Ainsi, l'entier i=1 ai m′i mi′−1 est une solution de (2.22). En réduisant cet entier modulo m,
on obtient une relation de la forme :
x0 =
p
X
ai m′i m′−1
+ k m1 . . . m p
i
(k ∈ Z)
i=1
Cette relation montre que l'on a aussi x0 ≡ aj mod mj pour tout j ∈ J1, pK. Ainsi, x0 est
l'unique solution de (2.22) appartenant à J0, m−1K, et les autres solutions dans Z s'obtiennent
en ajoutant un multiple de m.
Notons que la formule (2.23) est eectivement fonctionnelle , car l'inverse de m′i modulo
mi se calcule par l'algorithme d'Euclide étendu. On peut donc en pratique calculer x0 , donc
résoudre le système (2.22). Énonçons le résultat que nous venons de prouver.
P.Struillou
CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE
33
Théorème 2.4.4 (Théorème des restes chinois, forme fonctionnelle )
Pour tout (m1 , . . . , mp ) ∈ Zp tel que mi ∧ mj = 1 pour i 6= j et tout (a1 , . . . , ap ) ∈ Zp , le
système de congruences (2.22) a une unique solution dans J0, m − 1K donnée par (2.23),
où m′i = m/mi et m′−1
est un représentant de l'inverse de la classe de m′i dans Z/mi Z.
i
Les solutions de (2.22) dans Z sont les entiers x0 + k m1 . . . mp avec k ∈ Z.
Corollaire 2.4.2 (Isomorphisme inverse). Sous les hypothèses et les notations des théorèmes 2.4.3 et 2.4.4, on a :
Φ−1 :
Qp
j=1 Z/mj Z
clm1 (a1 ), . . . , clmp (ap )
−→
Z/mZ
Pp
′ ′−1
7→ clm
i=1 ai mi mi
(2.24)
Exemple. Il semble avéré que les mathématiciens chinois connaissaient ce théorème (sans
doute plutôt dans sa version pratique) déjà au début de notre ère. Cela a donné lieu à
l'illustration suivante du théorème.
La légende raconte qu'il y a très longtemps, un général chinois comptait les soldats qui lui
restaient après une bataille de la façon suivante.
Il connait le nombre m de soldats avant la bataille (m est très grand, de l'ordre de quelques
dizaines de milliers de soldats). Il décompose m en facteurs
Q premiers, de sorte qu'il peut
écrire m = m1 . . . mn avec mi ∧ mj = 1 pour i 6= j (si m = ni=1 pαi i , il pose mi = pαi i ).
Après la bataille il demande à l'armée de se ranger :
par rangs de m1 soldats ; il relève le reste a1 ;
par rangs de m2 soldats ; il relève le reste a2 ;
etc ;
par rangs de mn soldats ; il relève le reste an .
Grâce à l'algorithme d'Euclide étendu, il peut calculer la solution x0 de ce système de
congruences, en choisissant celle qui est entre 0 et m − 1. S'il trouve x0 6= 0 (cas le plus
probable), c'est l'eectif restant de son armée. S'il trouve x0 = 0, l'eectif restant est en
fait m, i.e. il n'a perdu aucun soldat !
2.4.5 L'indicateur d'Euler
Dénition 2.4.1 (Indicateur d'Euler )
On appelle indicateur d'Euler la fonction φ
: N∗ −→ N dénie par φ(n) = Card {k ∈
J0, n − 1K ; k ∧ n = 1}.
Pour n > 1, φ(n) est donc le nombre d'éléments de J0, n − 1K inversibles modulo n. C'est
aussi le nombre de générateurs du groupe (Z/nZ, +).
Puisque 0 ∧ n = n, on a φ(1) = 1 et φ(n) = Card {k ∈ J1, n − 1K ; k ∧ n = 1} pour n ≥ 2.
P.Struillou
CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE
34
Proposition 2.4.1 (Propriétés de l'indicateur d'Euler )
Si p est premier, alors pour tout r ∈ N∗ :
En particulier :
φ(pr ) = pr − pr−1
(2.25)
φ(p) = p − 1
(2.26)
Démonstration. Les entiers k entre 1 et pr ayant un diviseur supérieur ou égal à 2 commun
avec pr ont en fait p pour diviseur puisque p est premier. Ce sont donc les multiples de p de
la forme k = qp ≤ pr , donc il y en a pr−1 (car q doit décrire {1, . . . , pr−1 }). Finalement il
existe pr − pr−1 entiers inférieurs à pr et premiers avec pr .
Théorème 2.4.5 (Une propriété essentielle de φ)
Si m et n sont deux entiers naturels non nuls premiers entre eux, alors :
φ(mn) = φ(m)φ(n)
(2.27)
Démonstration. Considérons l'isomorphisme construit dans le théorème 2.4.3 pour m1 = m
et m2 = n :
Φ :
Z/mnZ −→ Z/mZ × Z/nZ
clmn (x) 7→ (clm (x), cln (x))
Pour tout k ∈ N∗ , notons Z∗k le groupe multiplicatif des inversibles de l'anneau Z/kZ (cf. proposition A.3.1). D'après la proposition A.3.2, l'isomorphisme Φ induit un isomorphisme entre
les groupes Z∗mn et Z∗m ×Z∗n . Comme ces deux groupes sont respectivement de cardinal φ(mn)
et φ(m)φ(n), on a l'égalité (2.27).
On dispose d'une formule explicite pour φ(n), mais elle nécessite de connaître la décomposition en facteurs premiers de n.
Théorème 2.4.6 (φ(n) en fonction de la décomposition de n)
On considère la décomposition en facteurs premiers de l'entier n ≥ 2 :
n=
r
Y
pαi i
i=1
où les αi sont des entiers naturels non nuls. On a :
φ(n) =
r
Y
(pαi i − pαi i −1 )
(2.28)
i=1
P.Struillou
CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE
35
Démonstration. C'est une conséquence immédiate de (2.25 et de (2.27).
Remarque importante. Cette formule ne permet de calculer
φ(n) que si l'on connaît
la décomposition en nombres premiers de n. Or, pour n très grand cette factorisation est
calculatoirement très dicile. Ceci est à la base de la sécurité du système RSA (et d'autres
systèmes cryptographiques) comme on le verra au prochain chapitre.
Corollaire 2.4.3. Pour n ≥ 3, φ(n) est pair.
Q
Démonstration. On a φ(n) = ri=1 pαi i −1 (pi − 1).
Si 2 est l'un des facteurs premiers de n, alors 2 apparaît dans la décomposition de n avec
un exposant au moins égal à 2, car n est alors un nombre pair, donc n ≥ 4, donc 2 est un
facteur de φ(n).
Sinon, n est impair, donc n possède un facteur premier impair pi , donc φ(n) est divisible
par pi − 1, qui est pair, donc φ(n) est lui aussi pair.
2.5 Les théorèmes d'Euler et de Fermat
2.5.1 Théorème d'Euler
Théorème 2.5.1 (Théorème d'Euler )
Si les entiers a et n sont premiers entre eux, alors
(2.29)
aφ(n) ≡ 1 [n]
Démonstration. Puisque a ∧ n = 1, la classe a de a dans Z/nZ est inversible. Puisque φ(n)
est le cardinal du groupe des inversibles de Z/nZ, le théorème de Lagrange (théorème A.2.1)
nous donne :
aφ(n) = 1
i.e. aφ(n) = 1
On a donc bien (2.29).
Corollaire 2.5.1. Si a et n sont premiers entre eux l'inverse de a modulo n est :
a−1 = aφ(n)−1
(2.30)
Remarque. Ce résultat est inutilisable en pratique pour calculer l'inverse modulo n
pour n grand (ce qui est le cas dans les applications en cryptographie). En eet il
faudrait connaître φ(n), ce qui nécessite de connaître la factorisation de n. En pratique on
utilisera donc plutôt l'algorithme d'Euclide modié (fonction Inverse_Mod). Cela n'enlève
rien à l'intérêt de ce corollaire du théorème d'Euler, car il est très utile dans des questions
plus théoriques (pour justier certaines démarches utilisées en cryptographie par exemple).
P.Struillou
CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE
36
2.5.2 Petit théorème de Fermat
Théorème 2.5.2 (Petit théorème de Fermat )
Pour tout nombre premier p, pour tout a ∈ Z, on a
(2.31)
ap ≡ a [p]
Plus précisément, si le nombre premier p ne divise pas a, alors
(2.32)
ap−1 ≡ 1 [p]
Démonstration. Puisque p est premier, φ(p) = p − 1, et si p ne divise pas a, alors a et p sont
premiers entre eux, donc d'après le théorème d'Euler on a ap−1 = 1 mod p, ce qui entraîne
bien sûr ap = a mod p.
Si par contre p divise a, alors a est un représentant de la classe de 0 dans Z/pZ, donc ap = 0
mod p, ce qui donne encore ap = a mod p puisque a = 0 mod p.
2.5.3 Nombres pseudo-premiers et tests ecaces de primalité
Les théorèmes d'Euler et de Fermat ont de nombreuses applications en cryptographie,
notamment pour le système RSA (cf. chapitre 3), mais ils sont aussi à la base des tests modernes de primalité (algorithmes rapides). Or, dans de nombreux systèmes cryptographiques
on a justement besoin d'engendrer (quasi-aléatoirement) de très grands nombres premiers.
Malheureusement, la réciproque du théorème de Fermat est fausse : il peut arriver que ap = a
mod p pour un nombre p non premier. Si cela arrive on dit que p est pseudo-premier de base
a. Il existe même des nombres pseudo-premiers en toute base a ∈ {1, ..., p−1}. Cela implique
qu'on peut utiliser le théorème de Fermat comme test de non-primalité (si on trouve a tel
que ap 6= a mod p, c'est que p n'est pas premier), mais on ne peut pas l'utiliser a priori
comme test de primalité.
Cependant si en essayant beaucoup de valeurs de a, on trouve à chaque fois que ap ≡ a
mod p, cela nous indique grosso modo que p a de fortes chances d'être premier ! C'est
l'idée générale des tests probabilistes de primalité, dont les deux plus célèbres sont le test
de Solovay-Strassen (qui utilise en plus d'autres résultats d'arithmétique) et celui de MillerRabin (simple à comprendre et très utilisé en pratique) que nous étudierons au chapitre 3.
2.6 Extension des notions d'arithmétique aux polynômes
Certains systèmes cryptographiques (notamment l'actuel standard international AES,
pour Advanced Encryption Standard ) utilisent de l'arithmétique sur d'autres anneaux que Z,
en particulier sur des anneaux de polynômes. Ces bases mathématiques ne sont pas beaucoup
plus diciles, car la plupart des notions étudiées sur Z se généralisent bien à ces anneaux,
comme on va le voir. Commençons par quelques rappels sur les polynômes.
P.Struillou
CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE
37
2.6.1 Polynômes
Soit K un corps commutatif ni (Zp avec p premier par exemple) ou inni (Q, R ou C
par exemple). On note K[X] l'ensemble des polynômes à coecients dans K.
Rappelons qu'un polynôme n'est rien d'autre qu'une suite P = (ai )i∈N d'éléments de K tous
nuls à partir d'un certain rang. La suite (0, 1, 0, 0, . . .) est notée X , et la suite (C, 0, 0, 0, . . .)
est appelée polynôme constant égal à C .
K[X] est muni d'une addition et d'une multiplication dont voici les dénitions :
P + Q = (ai ) + (bi ) = (ai + bi )
X
P × Q = (ai ) × (bi ) =
aj bk
(2.33)
(2.34)
j+k=i
Par exemple, on a
X 2 = (0, 1, 0, 0, . . .) × (0, 1, 0, 0, . . .) = (0, 0, 1, 0, . . .)
Plus généralement X n est la suite ne comportant que des 0 sauf en position n + 1 où il y a
un 1.
Muni de ces deux lois internes, K[X] est un anneau commutatif, avec élément neutre pour
l'addition la suite nulle, i.e. le polynôme nul 0, et élément neutre pour la multiplication la
suite (1, 0, 0, 0, . . .), i.e. le polynôme constant égal à 1.
Si N est le plus grand entier naturel tel que aN 6= 0 on dit que deg P = N (avec une exception : par convention deg 0 = −∞, donc un polynôme constant a pour degré 0 sauf si c'est le
polynôme nul). Avec cette dénition (et cette convention pour deg 0), on a immédiatement
les formules suivantes :
deg(P + Q) ≤ max(deg P, deg Q)
deg(P Q) = deg P + deg Q
(2.35)
(2.36)
Enn, on peut également munir K[X] d'une structure d'espace vectoriel sur le corps K en
dénissant le produit par un scalaire λ ∈ K de la façon suivante :
λP = λ(ai ) = (λai )
(2.37)
Une base de cet e.v. est alors 1, X, X 2 , X 3 , . . . , i.e tout polynôme s'écrit de façon unique
comme combinaison linéaire des ces polynômes particuliers (dits monômes ) :
P = (ai ) =
deg
XP
ai X i
(2.38)
i=0
2.6.2 Divisibilité dans K[X]
La plupart des notions d'arithmétique vraies dans Z ont un analogue dans K[X]. On
peut en eet démontrer les propriétés suivantes.
P.Struillou
CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE
1.
38
Division euclidienne de polynômes.
Pour tout polynôme A et tout polynôme B non nul, il existe un couple unique (Q, R)
de polynômes vériant
A = BQ + R et deg R < deg B
(2.39)
Si R = 0, on dit que B divise A.
2.
PGCD de deux polynômes.
Les idéaux de K[X] sont principaux, i.e engendrés par un élément, donc de la forme
(P ) = {P Q ; Q ∈ K[X]}
On peut donc dénir le PGCD d'une famille nie de polynômes de la même façon
que nous l'avons fait dans Z (il est déni à une constante multiplicative près). Par
exemple dans R[X] le PGCD des polynômes (X 2 + 1)(X − 1) et (X − 1)2 est X − 1.
PGCD(P, Q) est un polynôme constant, on dit que P et Q sont premiers entre eux. Par exemple X 2 + 1 est premier avec X − a dans R[X], pour tout
Lorsque
a réel, mais X 2 + 1 n'est pas premier avec X − i dans C[X].
Nous avons les mêmes propriétés que dans Z, notamment le théorème de Bezout :
P et Q sont premiers entre eux ssi il existe deux polynômes U et V tels que
1 = P U + QV
On peut utiliser l'algorithme d'Euclide pour calculer le PGCD de deux polynômes et
trouver U et V s'ils sont premiers entre eux.
Puisque l'on a le théorème de Bezout, on a un
nômes (l'écrire dans ce cadre, en exercice)
3.
théorème de Gauss pour les poly-
Polynômes irréductibles.
Ils jouent dans l'anneau K[X] le rôle que jouent les nombres premiers dans l'anneau Z.
Dénition 2.6.1 (Polynôme irréductible )
Un polynôme P est dit irréductible si :
(a) P n'est pas constant,
(b) P n'est divisible que par les polynômes constants non nuls et par les polynômes
λP pour λ ∈ K.
Exemples.
(a) X 2 + 1 est irréductible dans R[X].
(b) X 2 + 1 n'est pas irréductible dans C[X] car il est divisible par X + i (et par X − i).
(c) X 2 + 1 n'est pas irréductible dans Z2 [X] (polynômes à coecients 0 ou 1 avec la
règle de calcul 2 = 0) puisque l'on a l'égalité X 2 + 1 = (X + 1)2 dans Z2 [X].
P.Struillou
CHAPITRE 2. FONDEMENTS ARITHMÉTIQUES DE LA CRYPTOGRAPHIE
39
(d) Puisque toute équation polynomiale de degré au moins 1 à coecients complexes
possède une racine dans C (théorème de D'Alembert-Gauss), les seuls polynômes
irréductibles de C[X] sont de la forme X − a avec a ∈ C, i.e. les polynômes
irréductibles de C[X] sont les polynômes de degré 1.
(e) Les seuls polynômes irréductibles de R[X] sont les polynômes de degré 1 et les
polynômes de degré 2 dont le discriminant ∆ est strictement négatif.
2.6.3 L'anneau
Zn [X]
(m(X))
Dans certains systèmes cryptographiques (notamment l'actuel standard AES) ou dans
d'autres applications (par exemple les codes correcteurs d'erreurs ) on travaille avec des polynômes à coecients dans l'anneau Zn (très souvent n = 2 : les coecients sont des bits).
Mais on est amené à réduire les résultats des calculs modulo un polynôme m(X) de degré d.
On dit qu'on travaille dans l'anneau
A=
Zn [X]
(m(X))
Cet anneau A s'identie à l'ensemble des polynômes à coecients dans Zn de degré au plus
d−1, muni d'une addition et d'une multiplication particulière. De façon précise, l'addition de
deux éléments de A est l'addition ordinaire des polynômes, mais en n'oubliant pas d'utiliser
le fait que dans Zn on a l'égalité n = 0. La multiplication de deux éléments P et Q de A
doit se terminer par la réduction modulo m(X) : le résultat de la multiplication de P par Q
est le reste de la division euclidienne de P Q par m.
Nous admettrons le résultat suivant, mais la preuve n'utilise que le théorème de Bezout, et
elle est à la portée d'un étudiant motivé.
Théorème 2.6.1 (Corps ni )
Si n est premier et si m(X) est irréductible dans Zn [X], alors l'anneau
corps (i.e. tout élément non nul est inversible dans cet anneau).
Zn [X]
(m(X))
est un
On se reportera au cours de transmissions numérique (codes correcteurs d'erreurs) et au
chapitre 4 de ce polycopié pour découvrir de belles applications industrielles de ces notions.
Pour AES, n = 2 et d = 8 (car après réduction modulo m, on obtient un polynôme de
degré au plus 7, représentant un octet). Précisément, le polynôme irréductible utilisé pour
l'implémentation du logiciel AES est m(X) = 1 + X + X 3 + X 4 + X 8 .
P.Struillou
Chapitre 3
Cryptographie à clef publique
3.1 Généralités
3.1.1 Fonctions à sens unique
Une fonction à sens unique est une application f : A → B bijective (i.e. inversible)
telle qu'il soit facile (en terme de temps de calcul) de calculer f (x) pour chaque x ∈ A
mais très dicile de calculer x = f −1 (y) pour y ∈ B .
Par calcul facile , il faut comprendre il existe au moins un algorithme ecace permettant
de calculer f (x) , et par calcul dicile , il faut comprendre dans l'état actuel des
connaissances, aucun algorithme ecace permettant de calculer f −1 (y) n'est connu . On
rappelle au paragraphe 3.1.4 les rudiments nécessaires de théorie de la complexité permettant
de donner un sens au mot ecace .
Par exemple si p et q sont deux grands nombres premiers, si n = pq , si b est un entier vériant
certaines hypothèses (cf. système RSA, paragraphe 3.2), alors la fonction :
f : x ∈ J0, n − 1K 7→ xb mod n ∈ J0, n − 1K
est une fonction à sens unique dans l'état actuel des connaissances : rien ne garantit
qu'un résultat nouveau en mathématiques ne permettra pas dans l'avenir d'inverser facilement cette fonction, mais actuellement c'est calculatoirement très dicile.
3.1.2 Une première application des fonctions à sens unique : le problème
du mot de passe
De nombreux logiciels demandent à l'utilisateur un code d'accès sous forme d'un mot de
passe. L'information sur le code doit donc être écrite quelque part sur le disque, ce qui peut
permettre à un utilisateur malveillant de lire le mot de passe. En fait pour éviter ce problème
il sut que le logiciel inscrive f (x) sur le disque, où f est une fonction à sens unique (choisie
une fois pour toute par les concepteurs du logiciel) et x le mot de passe saisi par l'utilisateur.
Ainsi, l'assaillant a accès à f (x) mais cela ne lui permettra pas d'en déduire x.
3.1.3 Systèmes cryptographiques asymétriques
Dans un système cryptographique classique (DES par exemple), la règle dk de déchirement se déduit facilement de la règle ek de cryptage si on connaît la clé k utilisée. On parle
de système cryptographique symétrique ou à clé privée.
40
CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE
41
L'idée des systèmes à clé publique (apparue dans les années 1970) est de laisser à Bob (le
receveur du message) le soin de choisir k et de publier la règle ek (dans un répertoire ou
un annuaire) qui doit être une fonction à sens unique. Ainsi seul Bob connaît la règle de
déchirement dk : même Alice ne peut inverser ek , son rôle se limite à chirer le message
qu'elle veut envoyer à Bob à l'aide de la règle publique ek .
Ainsi, dans un tel système à clé publique, les rôles de ek et de dk ne sont pas symétriques,
et on parle dans ce cas de système cryptographique asymétrique .
3.1.4 Théorie de la complexité et cryptographie
Rappelons que la théorie de la complexité des problèmes (cf. LSI 2) permet de classer les
problèmes de décision (ce sont les problèmes qui n'admettent que deux réponses possibles :
oui ou non ) en problèmes diciles et problèmes simples . Les problèmes
considérés simples sont ceux pour lesquels il existe un algorithme trouvant la réponse
( oui ou non ) en temps polynomial de la taille de la donnée d'entrée. La classe des
problèmes de décision de ce type est notée P.
Les autres problèmes sont considérés diciles . Ce sont a priori les problèmes diciles
qui sont intéressants en cryptographie à clef publique, puisqu'on peut essayer de construire
des fonctions à sens unique en construisant des fonctions bijectives dont l'inversion nécessite
de résoudre un problème polynomialement équivalent à un problème de décision dicile.
Néanmoins, il ne faut pas baser la sécurité d'un système sur n'importe lequel de ces problèmes
réputés diciles, car il existe des problèmes pour lequel le meilleur algorithme connu à ce
jour n'est pas polynomial dans le pire des cas, mais pour lesquels la réponse est en fait donnée
rapidement pour la majeure partie des instances en entrée.
Remarquons que tant qu'on n'a pas trouvé d'algorithme polynomial résolvant un problème
de décision, on ne sait pas si ce problème est dans P ou non (on peut seulement conjecturer
qu'il n'y est pas si, malgré tous nos eorts, on ne trouve pas d'algorithme polynomial de
résolution).
On dit qu'un problème de décision est dans la classe NP si la réponse oui peut être
vériée en temps polynomial lorsqu'une information supplémentaire, appelée certicat (ou
oracle ) est fournie. De même, si on peut vérier la réponse non en temps polynomial en
utilisant au besoin un certicat, on dit que le problème de décision est dans la classe coNP.
Exemple. Le problème ayant pour instances les entiers naturels
n et dont le but est de
répondre à la question n est-il premier ? est dans coNP puisque si n n'est pas premier,
on peut le vérier en temps polynomial en fournissant un certicat, qui ici est tout simplement
un diviseur de n. Il ne faut pas confondre ce problème avec le problème consistant à trouver
les diviseurs de n (ce qui est a priori beaucoup plus dicile).
Il est clair que P ⊂ NP et que P ⊂ coNP, car trouver la solution en temps polynomial
permet de vérier la solution en temps polynomial ! Mais on ne sait rien sur les réciproques
de ces résultats, bien que la plupart de spécialistes de la question soupçonnent fortement
que P 6= NP (on conjecture également que NP 6= coNP et que P 6= NP ∩ coNP).
P.Struillou
CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE
42
Remarque. La question non résolue La classe de complexité P est-elle égale à la classe de
complexité NP ? a été reconnue comme l'un des 7 problèmes de mathématiques majeurs
du 21-ème siècle et sa résolution est dotée d'une récompense de 1 million de dollars (par le
Clays Institute ). C'est nalement assez peu si on considère la diculté de la question !
On dit qu'un problème P1 se réduit polynomialement à un problème P2 s'il existe un algorithme polynomial qui résout P1 en utilisant la solution de P2 (en supposant qu'on la
connaisse). Dans un tel cas, on dit que P1 n'est pas plus dur que P2 , puisque résoudre
P2 en temps polynomial permettrait de résoudre P1 en temps polynomial.
Parmi les très nombreux problèmes de la classe NP, on distingue ceux qui sont NP-complets.
Un problème de décision P0 appartenant à la classe NP est dit NP-complet si tout autre
problème de décision de NP se réduit polynomialement à P0 . Autrement dit, P0 est de
diculté maximale parmi les problèmes de NP. Comme la plupart des spécialistes de la
complexité pensent que P 6= NP, lorsqu'un problème est prouvé NP-complet, on considère
généralement que c'est une démonstration de sa grande diculté calculatoire.
Exemple. Problème
P du sac à dos. On se donne des entiers naturels
a1 , . . . , an et un
entier naturel s ≤ ni=1 ai . Existe-t-il un sous-ensemble de {a1 , . . . , an } dont la somme des
éléments redonne s ?
Ceci est un problème de décision qui a été prouvé NP-complet.
Considérons un problème P (de décision ou non), et supposons qu'il existe un problème de
décision P0 qui soit NP-complet et qui se réduise polynomialement à P . On dit alors que P
est NP-dicile. Cela signie que P est calculatoirement au moins aussi dur que P0 . P est
alors au moins aussi dur que n'importe quel problème NP-complet, car tous les problèmes
NP-complets sont polynomialement équivalents. Un problème qui a été prouvé NP-dicile
peut donc être considéré comme un problème d'une grande diculté calculatoire.
P
a1 , . . . , an et un entier naturel s ≤ ni=1 ai .
Sachant qu'il existe un sous-ensemble de {a1 , . . . , an } dont la somme des éléments vaut s, il
Exemple. On se donne des entiers naturels
s'agit de déterminer un tel sous-ensemble.
Ce n'est pas un problème de décision. Il a été prouvé NP-dicile.
Il semble bien que l'idéal serait de baser la sécurité des systèmes à clefs publiques (i.e. la
diculté de l'inversion des fonctions réputées à sens unique) sur des problèmes NP-diciles.
C'est ce qu'ont essayé de faire Merkle et Hellman avec un système basé sur le problème du
sac à dos. Ils ont proposé le système suivant :
1. Bob choisit une instance (a1 , . . . , an ) pour lequel le problème est facile à résoudre
(cela existe) et la déguise en une instance (b1 , . . . , bn ) = f (a1 , . . . , an ), ayant
l'air quelconque , qu'il publie ((b1 , . . . , bn ) est donc sa clef publique, et le couple
constitué de (a1 , . . . , an ) et de la fonction f est sa clef privée).
2. Si Alice veut envoyer un message (x1 , . . . , xn ) à Bob (où les xi sont des bits), elle
envoie le message chiré y = b1 x1 + · · · + bn xn . Oscar, s'il intercepte y , doit donc
résoudre un problème de sac à dos.
C'est simple et cela a l'air solide, mais si on y rééchit, on voit que le problème de sac à
dos, bien que NP-dicile dans le cas général, n'a pas vraiment de raison d'être impossible
à traiter par Oscar dans ce cas : puisque (a1 , . . . , an ) n'est pas quelconque, (b1 , . . . , bn ) non
plus.
P.Struillou
CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE
43
Le système de Merkle et Hellman a eectivement été cassé assez vite et n'est donc pas utilisé.
En réalité, utiliser un problème NP-dicile en cryptographie n'est pas chose aisée. L'une
des raisons à cela est que si l'on essaye de formaliser la notion de fonction à sens unique, on
s'aperçoit qu'en fait on n'en connaît aucune, et que si l'on en trouve une, alors on prouve du
même coup que P 6= NP !
Ainsi, on utilise en cryptographie à clef publique des fonctions qui sont en pratique à sens
unique (i.e la preuve de la sécurité n'est pas fournie, ce qui est un peu inquiétant mais
inévitable dans l'état actuel des connaissances). C'est les cas des fonctions utilisées dans les
sytèmes RSA et ElGamal, que nous allons maintenant décrire.
3.2 Le système RSA
En 1977, Rivest, Shamir et Adleman proposent le premier système asymétrique ecace
basé sur les principes de Die et Hellman. Ce système (appelé RSA du nom de leurs auteurs)
est devenu un standard international dont il est fondamental de comprendre le principe.
3.2.1 Les principe de RSA et sa mise en oeuvre
Décrivons d'abord la mise en oeuvre de RSA, nous expliquerons ensuite pourquoi ça
marche .
1. Un utilisateur, appelons le Bob, qui veut qu'une autre personne puisse lui envoyer un
message chiré engendre (quasi-aléatoirement) deux grands nombres premiers p et q
et calcule puis publie
n = pq
(3.1)
Ce nombre n est appelé le modulus, nous allons voir pourquoi. Bob conserve secrets
p et q .
2. Comme p et q sont premiers, Bob connaît la valeur de φ(n) :
φ(n) = (p − 1)(q − 1)
(3.2)
Bob choisit (aléatoirement) un entier naturel b ∈ {2, . . . , φ(n) − 1} premier avec φ(n),
an que b soit inversible modulo φ(n), et calcule, à l'aide de la fonction Inverse_Mod
appliquée aux arguments φ(n) et b, le nombre
a = b−1
mod φ(n)
(3.3)
En pratique, Bob choisit le représentant a ∈ {1, . . . , φ(n) − 1} en réduisant b−1
modulo φ(n). Bob publie alors b, appelé exposant de chirement, et conserve secret
a (ou l'inverse). Notons que pour calculer a à partir de b, nous devons connaître φ(n).
Or, celui-ci est en pratique inaccessible au calcul à partir de n puisqu'il faudrait réussir
à factoriser n : Bob étant le seul à connaître p et q , il est également le seul à avoir
accès à φ(n).
3. Si Alice veut envoyer un message à Bob, elle commence par le découper en blocs
x ∈ Zn , et elle envoie à Bob le bloc de message chiré
y = ek (x) = xb mod n
(3.4)
calculé à l'aide de la clef publique k = (n, b) de Bob.
P.Struillou
CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE
4. Bob calcule
dk (y) = y a mod n
44
(3.5)
Le résultat est alors bien le message x. Nous allons expliquer pourquoi en démontrant
le théorème suivant, dit théorème RSA.
Théorème 3.2.1 (RSA)
En suivant le protocole précédent, on a :
dk (ek (x)) = x
(3.6)
Démonstration. On doit démontrer que
(xb mod n)a mod n = x
Si le message x est premier avec n, c'est une simple conséquence du théorème d'Euler. En
eet
(xb mod n)a mod n = xab mod n
Or, a est l'inverse de b modulo φ(n), donc il existe un entier k tel que
ab = 1 + kφ(n)
D'après le théorème d'Euler, on a
xφ(n) ≡ 1 [n]
Comme x ∈ {0, ..., n − 1}, xab mod n vaut exactement x.
Si x n'est pas premier avec n, on a x = lp avec l < q ou x = lq avec l < p, car x < n = pq .
Supposons x = lp pour xer les idées. Le nombre xab − x = (xkφ(n) − 1)x est divisible par p.
Montrons qu'il est aussi divisible par q . On a :
xkφ(n) − 1 = (lp)k(p−1)(q−1) − 1
Or, q ne divise pas lp (car l < q , q premier), donc q ne divise pas non plus (lp)k(p−1) , donc
(lp)k(p−1)
q−1
≡ 1 [q]
d'après le théorème d'Euler appliqué à (lp)k(p−1) (qui est premier avec q , ici φ(q) = q − 1).
Ainsi, xab − x est divisible par p et par q , donc par n = pq , donc xab mod n = x
Remarque et exercice. Bien que le théorème RSA soit vrai pour tout x < n, en pratique,
il faut que les messages x à envoyer soient premiers avec n (vu l'ordre de grandeur de p et q
en pratique, ce n'est pas une contrainte très forte), sinon un attaquant qui intercepte y (ou
tout simplement l'émetteur du message) retrouve facilement la clé privée de Bob. Voyez-vous
comment ?
P.Struillou
CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE
45
3.2.2 Attaques de RSA
Oscar a accès à n et à b, qui sont publics. S'il intercepte xb mod n il lui sera très dicile
de calculer x par inversion puisque la fonction puissance modulaire est à sens unique.
Que peut-il essayer d'autre ?
En règle générale, la cryptanalyse consiste à découvrir la clef utilisée, donc ici à découvrir
également les nombres premiers p et q tels que n = pq . Ceci est pour Oscar un problème au
moins aussi dicile que le déchirement du message x, car si Oscar connaît la clef privée de
Bob, il peut déchirer le message comme Bob le fait.
Oscar peut donc tenter de factoriser n, ce qui lui donnerait les facteurs premiers p et q . Il
accéderait ainsi à φ(n) = (p − 1)(q − 1) et pourrait calculer a = b−1 mod φ(n) grâce à
l'algorithme d'Euclide modié. Mais les meilleurs algorithmes connus de factorisation des
grands nombres (ceux dits du crible quadratique et du crible du corps de nombres ) sont lents
(cf. paragraphe 3.2.3), donc sa tâche va être délicate si n est choisi assez grand, à moins qu'il
ne dispose de très gros moyens de calcul.
Oscar peut aussi essayer une attaque moins directe : il peut tenter de calculer φ(n) sans
factoriser n (nous avons démontré une formule pour φ(n) au chapitre 2, mais elle utilise
justement la factorisation en nombres premiers de n). Cela lui surait pour calculer a = b−1
mod φ(n) par l'algorithme d'Euclide, donc pour déchirer le message d'Alice. En réalité,
cette approche est, pour Oscar, équivalente à la précédente en terme de complexité (i.e.
aussi dicile), car la connaissance de φ(n) lui permettrait de factoriser n. En eet, n est
public, et si Oscar connaît φ(n) par un moyen ou un autre, il lui sut de résoudre le système
d'équations :
pq = n
(p − 1)(q − 1) = φ(n)
Ceci se ramène à une simple équation du deuxième degré :
x2 − (n + 1 − φ(n))x + n = 0
dont les deux solutions sont justement p et q . Ainsi, la connaissance de φ(n) est équivalente
à la connaissance de la factorisation de n.
Il existe aussi de nombreuses attaques qui utilisent des faiblesses de RSA dans des cas particuliers. On peut éviter de se placer dans ces cas particuliers en respectant scrupuleusement
un protocole conseillé par la société RSA elle-même. Par exemple des attaques de RSA ont
été réussies lorsque l'exposant b publié par Bob était trop petit (cf. TD). En pratique on
conseille maintenant de choisir b au moins égal à n4 . Dans le même ordre d'idée il est conseillé
de ne pas choisir des entiers p et q de tailles trop diérentes, sinon un certain type d'attaque
sera facilité. Notamment il faut absolument éviter de choisir un petit nombre premier et
un autre très grand. Si par exemple on veut un modulus n de taille 4096 bits, on choisira
des nombres premiers p et q tous deux de taille environ 2048 bits. Il faut néanmoins que la
diérence |p − q| ne√soit pas trop petite, sinon il n'est pas très dicile de trouver un diviseur
de n de l'ordre de n...
Quelle taille de n préconise-t-on ? Actuellement on est lancé dans une course au record
de factorisation d'entier (concours lancé par la société RSA elle-même an de se tenir au
courant des progrès en matière d'attaque de son système !). Une équipe internationale de
mathématiciens avait déjà réussi à factoriser en 1999 un nombre de 155 chires décimaux,
P.Struillou
CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE
46
donc de 512 bits, ce qui correspondait à l'époque à une taille courante dans les applications
pratiques de RSA. Une taille de 4096 bits pour le modulus n de RSA paraît à l'heure actuelle
souhaitable. Évidemment les moyens de cette équipe sont hors de portée du premier hacker
venu, mais il faut savoir qu'un particulier (Serge Humpich) est parvenu en 1998 à casser en
quelques jours la clef RSA des cartes bancaires de l'époque qui faisaient 320 bits, simplement
en téléchargeant un logiciel japonais de factorisation ! Ainsi, la factorisation d'un nombre
de 129 chires décimaux est actuellement à la portée de n'importe qui (un peu informé)
disposant d'un ordinateur personnel ordinaire...
3.2.3 Remarques sur la sécurité de RSA
La sécurité de RSA est donc basée sur la diculté calculatoire de la factorisation de n.
Ceci est discutable car il n'a jamais été prouvé que casser RSA est un problème polynomialement équivalent à la factorisation de n, bien que cela soit une conjecture communément
admise. Il n'est donc pas totalement exclu qu'une autre approche que la factorisation permette la cryptanalyse de RSA, mais cela semble peu crédible.
De plus, on ne sait pas si le problème de la factorisation de n est NP-dicile. Nous pouvons
seulement constater qu'actuellement le meilleur algorithme de factorisation (dit du crible du
corps de nombres, ou encore du crible algébrique ) a une complexité moyenne en temps de
l'ordre de
2
e1,92(log n)
1
3
log(log n)
3
(3.7)
1+ε(n)
où limn→+∞ ε(n) = 0, de sorte qu'il semble bien que le problème de la factorisation n'est pas
dans P. Une telle complexité classe pour l'instant ce problème parmi ceux de complexité nonpolynomiale en la taille log2 n de la donnée d'entrée, mais cet algorithme est tout de même
sous-exponentiel. Il existe par ailleurs d'autres algorithmes ayant une complexité pire cas plus forte, mais réussissant en réalité la factorisation de n plus vite dans des cas particuliers.
3.2.4 Authentication à divulgation nulle
Alice (utilisateur humain ou machine) souhaite s'authentier auprès de Bob (humain
ou système). Cela se fait classiquement en prouvant à Bob qu'elle est bien détentrice d'un
certicat privé A qui lui est propre (par exemple un grand nombre ou une suite de
caractères). Cela se fait en 3 étapes :
l'engagement d'Alice (elle prend l'initiative de demander à s'authentier) ;
le dé de Bob (il lui pose une question nécessitant d'être en possession de A
pour
y répondre) ;
la réponse d'Alice au dé et la vérication de sa réponse par Bob.
priv
priv
Alice souhaite de plus que le protocole d'authentication ne fournisse pas d'information (au
sens de la théorie de Shannon) sur son certicat privé A
: si c'est le cas, le protocole est
une preuve à divulgation nulle .
priv
3.2.5 Protocole de Guillou-Quisquater
Le protocole de Guillou-Quisquater est une solution pour l'authentication à divulgation
nulle utilisant RSA. Décrivons ce protocole.
P.Struillou
CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE
47
Alice est en possession :
d'une clé RSA publique (n, b), où n = pq est son modulus et b son exposant de
chirement, et de sa clé privée a, inverse de b modulo φ(n) ;
d'un certicat public A
∈ Zn , délivré par un organisme de certication, et
d'un certicat privé A
= A−a mod n.
A
est donc l'inverse modulo n de Aa ; on l'appelle certicat privé d'Alice car il se calcule
à partir de son certicat public à l'aide de sa clé privée.
pub
priv
priv
pub
pub
Le protocole d'authentication (d'Alice) est alors :
1. Engagement d'Alice : Alice choisit un entier x ∈ Zn aléatoirement, le chire avec
sa clé publique, i.e. calcule y = eA (x) = xb mod n. Elle envoie (y, A ) à Bob.
2. Dé de Bob : Bob choisit aléatoirement B ∈ J1, bK et l'envoie à Alice.
3. Réponse d'Alice et vérication par Bob : Alice calcule z = xAB mod n et l'envoie
à Bob. Bob calcule AB z b mod n et doit retrouver y .
pub
priv
pub
Vérions que Bob retrouve bien y s'il est en présence d'Alice. On a :
AB
z b mod n = AB
xb ABb
mod n = AB
xb A−abB
mod n
priv
pub
pub
pub
pub
Or, on a vu dans la preuve du théorème RSA que Aab mod n = A
pub
pub
, donc :
)−1 mod n = 1
(AB
A−abB
mod n = AB
AB
pub
pub
pub
pub
d'où AB z b mod n = xb mod n = y .
pub
Le protocole peut être utilisé plusieurs fois à la suite, diminuant à chaque fois la probabilité
d'une imposture. On démontre qu'en suivant ce protocole, Alice ne fournit pas d'information
(au sens de Shannon) à Bob, hormis la véracité de sa réponse au dé. Il est pour cela
important que les dés B de Bob soient choisies aléatoirement, sinon en interceptant un
grand nombre de couples (dé de Bob, réponse d'Alice), Oscar peut accumuler beaucoup
d'information (au sens de Shannon) sur la clé privée d'Alice.
Remarques.
1. RSA n'est pas le seul système à clef publique utilisable pour mettre en ÷uvre un
protocole d'authentication à divulgation nulle. Citons notamment le protocole de
Fiat-Shamir (1986), qui a longtemps été utilisé (il est désormais considéré comme
obsolète), et le protocole de Schnorr, qui utilise le problème du logarithme discret
dans un groupe (cf. paragraphe 3.3 et chapitre 5).
Par contre, tout système à clé publique ne peut être utilisé : le protocole de GuillouQuisquater utilise le fait que RSA commute, i.e vérie :
(3.8)
ek (dk (y)) = y
Dans tout système cryptographique on a en eet la relation dk (ek (x)) = x, qui assure
que le déchirement est possible connaissant la clé, mais on n'a pas forcément la
relation (3.8). Pour RSA cette relation est vraie car :
(xa )b mod n = (xb )a mod n
(3.9)
Pour le protocole de Guillou-Quisquater, on voit que la propriété de RSA de
muter est essentielle.
com-
P.Struillou
CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE
48
2. Ces protocoles d'authentication sont utilisée notamment dans les transactions bancaires. En fait, les systèmes à clé publique sont en général 100 à 1000 fois plus lents
que les systèmes à clé privée tels DES ou AES. En pratique, on fait donc cohabiter
les deux types de systèmes : après une procédure d'identication et d'authentication, utilisant RSA ou un autre système à clé publique, s'instaure un dialogue chiré
utilisant un système symétrique rapide comme DES ou AES.
3.2.6 Signatures numériques et solution RSA
Un procédé de signature est constitué d'un ensemble ni P de messages, d'un ensemble
ni S de signatures, d'un ensemble ni K de clefs, et pour chaque clef k ∈ K d'une fonction
de signature
sk : P → S
(3.10)
qui à un message x associe sa signature sk (x), et d'une fonction de vérication
vk : P × S → {vrai,faux}
(3.11)
qui à tout couple (x, y) constitué d'un message x et d'une signature y associe la valeur vrai ssi y = sk (x). Autrement dit, vk (x, y) =vrai si et seulement si y est la bonne signature du
message x.
On va donner ici un moyen d'utiliser un système cryptographique à clef publique en mode
signature , pourvu qu'il commute. On suppose donc encore ici que la règle publique ek de
chirement et la règle privée dk de déchirement vérient (3.8). Pour construire un procédé
de signature ecace, il sut alors de considérer la fonction de signature sk = dk et la fonction
de vérication
vk (x, y) = vrai ⇐⇒ ek (y) = x
(3.12)
Autrement dit, Alice signe son message x en adjoignant sa signature numérique dk (x) (elle
est la seule à pouvoir le faire puisque dk est sa clef privée ). Bob déchire y = dk (x) avec
la clef publique ek d'Alice, et compare ce qu'il trouve au message x : si Alice est bien
l'émettrice il doit trouver la même chose.
Le protocole complet consiste à chirer et signer un message. En notant dA et dB les clefs
privées respectives d'Alice et Bob, eA et eB leurs clefs publiques respectives, on obtient :
1. Alice calcule dA (x) et envoie à Bob le couple (eB (x), eB (dA (x))) constitué du message
x chiré avec la clef publique de Bob et de la signature d'Alice (chirée également
pour plus de sûreté).
2. Bob déchire en calculant dB (eB (x)) = x et dB (eB (dA (x))) = dA (x)
3. Bob vérie la signature d'Alice en utilisant la clef publique d'Alice : eA (dA (x)) redonne
en eet le message x. Autrement dit, il utilise la fonction de vérication d'Alice de la
façon suivante : vA (x, eA (dA (x))) = vA (x, x)= vrai.
Le chirement RSA (qui commute) peut ainsi être utilisé en mode signature.
P.Struillou
CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE
49
3.2.7 Utilisation d'une fonction de hachage
On voit, dans la description d'un procédé de signature, que la signature numérique occupe
une place (en nombre de bits) du même ordre de grandeur que le message lui-même, ce qui
peut être gênant pour de longs messages.
De plus, nous avons une attaque possible avec le protocole décrit dans le paragraphe précédent. Oscar peut se faire passer pour Alice en envoyant à Bob le couple (y = eA (x), x), où
x est un message quelconque, en armant que x est la signature d'Alice au message eA (x).
Bien sûr quand Bob va déchirer eB (y) = eB (eA (x)), il va tomber sur un message vide de
sens. Mais si la signature est utilisée seulement dans un but d'identication d'Alice par Bob,
Oscar a réussi à se faire passer pour Alice aux yeux de Bob ! Ce cas de gure se rencontre par
exemple quand un organisme bancaire vous demande de vous identier par l'intermédiaire
de votre carte, sans nécessairement que cela nécessite un dialogue sensé entre vous et votre
banque.
Pour régler ces deux problèmes on a recours à une fonction de hachage h qui transforme
un message de longueur quelconque en une empreinte numérique de taille xe (160 bits
dans le standard de signature électronique DSS=Digital Signature Standard). Le protocole
de signature devient :
1. Alice calcule dA (h(x)) et envoie à Bob le couple (eB (x), eB (dA (h(x)))) constitué du
message x chiré avec la clef publique de Bob et de la signature d'Alice hachée (et
chirée pour plus de sûreté).
2. Bob déchire en calculant dB (eB (x)) = x et dB (eB (dA (h(x)))) = dA (h(x))
3. Bob vérie la signature d'Alice en utilisant la clef publique d'Alice : eA (dA (h(x)))
redonne en eet h(x).
4. Il reste à Bob à calculer lui aussi h(x) an de comparer avec ce qu'il a trouvé en
déchirant le message signée d'Alice.
Remarque. On voit donc que la fonction de hachage h doit être publique.
Vérions que ce protocole anéantit l'attaque décrite ci-dessus. Si Oscar veut se faire passer
pour Alice en prétendant que x est la signature apposée au message y = eA (x), il doit envoyer
à Bob le couple (y, dA (h(y))). Il ne peut évidemment pas calculer dA (h(y)).
Remarque. Une bonne fonction de hachage doit être à collisions diciles, ce qui signie
qu'il doit être calculatoirement dicile de trouver deux messages x1 et x2 6= x1 tels que
h(x1 ) = h(x2 ). En eet, Oscar pourrait utiliser un message signé (x, y) authentique (donc
y = sk (h(x))) récupéré d'une manière ou d'une autre chez Alice ou chez Bob,
et chercher x′ 6= x tel que h(x) = h(x′ ), et obtenir ainsi le message falsié (x′ , y) signé
apparemment par Alice !
3.3 Le problème du logarithme discret et ses applications
3.3.1 Exponentielle et logarithme discret
Soit p ≥ 2 un nombre entier. On note Z∗p l'ensemble des éléments inversibles (pour la
multiplication) de Z/pZ. Supposons que p soit premier. Dans
ce cas, Z/pZ muni de l'addition
∗
et de la multiplication modulo p est un corps, donc Zp = 1, . . . , p − 1 .
P.Struillou
CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE
50
Soit a ∈ J1, p − 1K, considérons l'application qui à x ∈ J1, p − 1K associe ax mod p. On a
ax mod p ∈ Z∗p
(3.13)
En eet, PGCD(a, p) = 1, donc PGCD(ax , p) = 1, i.e. ax est inversible modulo p. L'application
expa : x ∈ J1, p − 1K 7→ ax mod p ∈ J1, p − 1K
(3.14)
est appelée exponentielle modulaire de base a. On va voir que si a et p sont bien choisis,
l'exponentielle modulaire de base a est une fonction à sens unique.
D'abord, le calcul de ax mod p peut se faire de façon ecace grâce à l'algorithme d'exponentiation rapide ( square and multiply ).
Nous devons ensuite regarder dans quel cas expa est injective. Un résultat de théorie des
groupes arme que si p est premier alors le groupe multiplicatif Z∗p est cyclique, i.e. ni et
engendré par l'un de ses élément, ce qui signie qu'il existe ξ ∈ Z∗p tel que
Z∗p = 1, ξ, ξ 2 , . . . , ξ p−2
(3.15)
Un tel élément ξ est un générateur du groupe multiplicatif Z∗p , et tout représentant r de
ξ (i.e. r = ξ ) est appelé élément primitif modulo p (ou racine primitive de p). Il est
clair que ξ ∈ Z∗p est générateur si et seulement si ξ k 6= 1 pour k ∈ {1, . . . , p − 2} et ξ p−1 = 1,
i.e. rk mod p 6= 1 pour 1 ≤ k ≤ p − 2 et rp−1 mod p = 1.
Théorème 3.3.1 (Inversibilité de l'exponentielle de base a)
Soit p premier et a ∈ J1, p − 1K. La fonction expa est inversible si et seulement si a est
un élément primitif modulo p.
Démonstration. D'abord remarquons qu'ici inversible signie bijective , i.e. injective puisque J1, p − 1K est un ensemble ni.
Supposons que a soit un élément primitif modulo p et donnons nous deux entiers x et y ,
1 ≤ y ≤ x ≤ p−1, tels que ax ≡ ay mod p. On a ax−y ≡ 1 mod p. Or, x−y ∈ {0, . . . , p−2},
donc x − y = 0. On a prouvé
expa (x) = expa (y) =⇒ x = y
ce qui montre que expa est injective.
Réciproquement, supposons que expa soit injective. On a ax 6= ay pour x 6= y , 1 ≤ x ≤ p − 1
et 1 ≤ y ≤ p − 1). Alors pour tout k ∈ {1, . . . , p − 2}, on a ak 6= ap−1 . D'après le théorème
d'Euler, on a ap−1 = 1 (en eet a est premier avec p puisque a ∈ J1, p − 1K). Cela prouve
que a est un générateur du groupe multiplicatif Z∗p .
Ceci nous conduit à la dénition suivante.
Dénition 3.3.1 (Logarithme discret )
Soient p premier et a un élément primitif modulo p. La fonction expa admet une application réciproque, notée loga et appelée logarithme discret de base a.
P.Struillou
CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE
51
Nous admettrons que la recherche du logarithme discret d'un nombre y donné est calculatoirement très dicile si p est un très grand nombre premier tel que p − 1 ait un
très grand facteur premier. Ainsi, la fonction expa est sous ces conditions une fonction
à sens unique.
Néanmoins, il faut là aussi suivre les progrès en terme de puissance des machines. Au début
du siècle, on conseillait à l'utilisateur de cette fonction à sens unique de travailler avec un
p d'au moins 120 chires décimaux (i.e. 400 bits) pour une vraie sécurité. Or, une équipe
française a réussi à calculer un log discret avec un p de 120 chires en avril 2001.
3.3.2 Protocole d'échange de clé de Die-Hellman
Le protocole de Die-Hellman est une première application de la diculté d'inverser
l'exponentielle modulaire. Alice et Bob veulent se munir d'une même clé secrète k alors
qu'ils n'ont pas accès à un canal de communication sécurisé (cette clé secrète pourra leur
servir par la suite à communiquer via un système cryptographique classique à clé privée, tel
DES ou AES).
1. Alice et Bob choisissent ensemble un très grand nombre premier p tel que p−1 possède
un très grand facteur premier, ainsi qu'un élément primitif a modulo p (a et p peuvent
être publics).
2. Alice engendre aléatoirement A ∈ J1, p − 1K (elle ne doit communiquer A à personne)
et envoie à Bob
kA = aA mod p
(3.16)
Remarque. On peut considérer A comme la clé privée d'Alice et kA comme sa
clé publique , car le canal n'est pas sûr. Si kA tombe entre les mains d'Oscar, cela
n'a pas d'importance puisqu'il n'arrivera pas à retrouver A à partir de kA (il devrait
pour cela calculer le logarithme discret de base a de kA ).
3. Bob agit de même de son côté : il engendre aléatoirement une clé privée B ∈ J1, p − 1K
et envoie à Alice
kB = aB mod p
(3.17)
4. Alice calcule
et Bob calcule
k = (kB )A mod p
(3.18)
k ′ = (kA )B mod p
(3.19)
Alice et Bob sont alors tous deux en possession de la même clef secrète :
k = k ′ = aAB mod p
(3.20)
3.3.3 Chirement d'ElGamal
C'est un système cryptographique à clé publique (très utilisé, comme RSA) basé sur la
diculté à inverser le log discret. L'idée de Die et Hellman est améliorée an d'obtenir un
système cryptographique à clef publique.
L'ensemble des messages clairs possibles est P = J1, p − 1K où p est un nombre premier pour
lequel l'inversion de l'exponentielle modulaire est dicile.
L'ensemble des messages cryptés possibles est C = J1, p − 1K × J1, p − 1K.
P.Struillou
CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE
52
1. Alice et Bob choisissent ensemble un très grand nombre premier p tel que p−1 possède
un très grand facteur premier, ainsi qu'un élément primitif a modulo p, et ils rendent
publiques a et p.
2. Bob engendre aléatoirement B ∈ J1, p − 1K et publie
kB = aB mod p
(3.21)
3. Si Alice veut communiquer le message x ∈ J1, p − 1K à Bob, elle commence par choisir
A ∈ J1, p − 1K (aléatoirement) et elle calcule (suivant le protocole d'échange de clé de
Die-Helmann) la clé privée qu'elle va partager avec Bob :
k = (kB )A mod p = aAB mod p
(3.22)
Alice calcule également kx et envoie à Bob le couple
(aA mod p, kx)
(3.23)
Remarque. Oscar ne peut retrouver B à partir de kB , ni A à partir de k.
4. Pour déchirer le message, Bob calcule d'abord
(aA )B mod p
(3.24)
et est ainsi en possession de la clé privée k qu'il partage avec Alice (protocole d'échange
de clé de Die-Hellman). Enn, Bob calcule
k −1 (kx) = x
(3.25)
où k−1 désigne bien sûr l'inverse de k modulo p (on sait que cela se calcule avec
l'algorithme d'Euclide modié). Bob est en possession du message x d'Alice.
3.4 L'algorithme d'exponentiation modulaire rapide
Pour l'implémentation des systèmes RSA ou ElGamal (ou d'autres systèmes), il est nécessaire de pouvoir calculer ecacement (en temps de calcul) des expressions du type
xy mod n
L'idée de base est l'algorithme élève au carré et multiplie , qu'on utilise naturellement
pour calculer une puissance ordinaire. Par exemple, pour calculer x19 à la main , vous
calculez x2 , puis x4 = x2 x2 , puis x8 = x4 x4 , x16 = x8 x8 et vous terminez en multipliant par
x2 (calculé au passage) et par x. Vous avez alors eectué 6 multiplications au lieu de 18.
On peut appliquer ce principe simple pour la multiplication dans Z/nZ. Dans ce cas, on
simplie les calculs en utilisant le fait que ab mod n = (a mod n)(b mod n) : après chaque
élévation au carré, on réduit modulo n, an de ne jamais avoir à manipuler des grands
nombres.
L'algorithme utilise en fait la représentation binaire de y . En eet, si y =
bj ∈ {0, 1}, alors on a :
Y
2j
y
i+1
i
= x2
2
j=0 bj 2
x
x =
et notons que x2
Pk
j
avec
(3.26)
j∈{0,...,k}, bj =1
. La méthode de calcul de xy mod n consiste donc :
P.Struillou
CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE
53
à calculer les carrés successifs x2 pour j de 0 à k en réduisant à chaque étape modulo n ;
j
et à calculer xy mod n comme le produit de ceux des x2 pour lesquels bj = 1.
j
Exemple. Calculons 673 mod 100 par cette méthode.
On écrit d'abord 73 en base 2, ce qui donne 73 = 1 + 23 + 26 , puis on calcule les carrés
6
successifs de 6 jusqu'à obtenir 62 , en réduisant à chaque fois modulo 100. Pour limiter au
maximum les calculs, il est conseillé d'utiliser les représentants entre −49 et 50 :
62
2
62
3
62
4
62
5
62
6
62
=
=
=
=
=
=
36
362 = −4
(−4)2 = 16
162 = −44
(−44)2 = 36
362 = −4
On a donc, en tenant compte de 73 = 1 + 23 + 26 :
3
6
673 mod 100 = 6.62 .62 mod 100 = 6.16.(−4) mod 100 = 16
Ce calcul a nécessité 6 + 2 = 8 multiplications (et autant de réductions modulo 100) au lieu
des 72 multiplications (et réductions) que nécessiterait l'algorithme naïf.
Exercice. En suivant ces principes, écrire un algorithme d'exponentiation modulaire rapide,
déterminer un invariant de boucle et calculer sa complexité dans le pire des cas.
Remarque. Il est très simple d'adapter cet algorithme au calcul de xy pour y entier naturel
et x dans un monoïde dont la loi interne a été notée multiplicativement (cf. TD). En eet,
on n'utilise que l'associativité de la multiplication. Par exemple, si on implémente à l'avance
le produit de deux polynômes, avec ou sans réduction modulo un polynôme m xé (ce qui
sera indispensable pour AES), alors le même algorithme permet de calculer P k (ou P k mod
m), en changeant simplement le type de X et Res dans les déclarations de variables, qui
deviennent dans un tel cas des éléments de K[X].
Lorsque la loi interne (supposée associative) est notée additivement, le même algorithme
permet évidemment de calculer rapidement x + x + . . . + x, somme de k termes égaux à x,
noté kx. Ici, 2x joue le rôle que joue x2 lorsque la loi est notée multiplicativement. On calcule
donc 2x = x + x, puis 4x = 2x + 2x, etc. Ceci est notamment utilisé lors du chirement par
courbes elliptiques.
3.5 Un test ecace de primalité
Aussi bien dans le système RSA que dans le système d'ElGamal, on a besoin de très
grands nombres premiers. On sait qu'il existe des moyens d'obtenir des nombres entiers
quasi-aléatoires (fonctions Random). La méthode usuelle de génération d'un nombre premier
de k bits est la suivante.
On génère aléatoirement un nombre impair de k bits.
On teste sa primalité, par exemple par la méthode présentée plus bas. S'il est premier,
c'est ni. Sinon, on lui ajoute 2 et on teste de nouveau sa primalité, etc.
P.Struillou
CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE
54
Le théorème d'Hadamard permet de montrer que cette méthode simpliste permet d'obtenir
un nombre premier aléatoire de k bits avec un nombre de tests raisonnable (cf. TD).
On doit donc être capable de tester la primalité d'un très grand nombre impair, de façon
ecace. Pour cela il existe un célèbre algorithme appelé test de Miller-Rabin basé sur les
notions suivantes.
Dénition 3.5.1
Soit n ≥ 3 un entier impair. On écrit
n = 2r s + 1 où s est impair
(3.27)
Soit a un entier naturel non nul. On dit que n passe le test de Miller en base a si l'une
au moins des deux conditions suivantes est vériée :
as ≡ 1 mod n
(c1 )
i
il existe i ∈ {0, . . . , r − 1} tel que a2 s ≡ −1 mod n
(c2 )
Théorème 3.5.1
Si n ≥ 3 est premier et si 1 ≤ a ≤ n − 1, alors n passe le test de Miller en base a.
Démonstration. Soit n ≥ 3 un nombre premier, qu'on écrit n = 2r s + 1 avec s impair, et soit
a ∈ {1, 2, . . . , n − 1}. D'après le petit théorème de Fermat, on a
rs
an−1 = a2
On introduit
≡1
mod n
i
yi = a2 s , i ∈ {0, 1, . . . , r}
de sorte que
2
yi−1
= yi
On a yr ≡ 1 mod n, ce qui s'écrit aussi
2
yr−1
− 1 ≡ 0 mod n
Autrement dit (yr−1 − 1)(yr−1 + 1) est divisible par n. Or n est premier, donc soit n divise
yr−1 + 1, soit n divise yr−1 − 1. Dans le premier cas on a yr−1 ≡ −1 mod n, donc n passe la
condition (c2 ) du test de Miller pour i = r − 1. Dans le deuxième cas, on a yr−1 ≡ 1 mod n,
ce qui s'écrit
2
yr−2
−1≡0
mod n
et on peut recommencer le même raisonnement : soit yr−2 + 1 est divisible par n, et dans ce
cas n passe la condition (c2 ) pour i = r − 2, soit yr−2 − 1 ≡ 0 mod n.
Cela s'itère. Si n ne passe la condition (c2 ) ni pour i = r − 1, ni pour i = r − 2,..., ni pour
i = 1, alors on a
y1 − 1 ≡ 0 mod n
donc y02 − 1 ≡ 0 mod n. Or, on a y0 = as . Si y0 + 1 est divisible par n alors n passe (c2 )
pour i = 0. Sinon c'est que y0 − 1 est divisible par n, donc n passe la condition (c1 ).
P.Struillou
CHAPITRE 3. CRYPTOGRAPHIE À CLEF PUBLIQUE
55
Remarque. Bien sûr, pour programmer le test de Miller, on ne suit pas l'ordre de cette
démonstration qui part de la n . On teste dans l'ordre (c1 ), puis si nécessaire (c2 ) pour
i = 0, puis si nécessaire (c2 ) pour i = 1, etc, jusqu'à tester si nécessaire (c2 ) pour i = r − 1.
C'est ecace car chaque test utilise le résultat du calcul précédent, par une simple élévation
au carré suivie d'une réduction modulo n.
Il peut malheureusement arriver qu'un entier passe le test de Miller sans être premier, ce qui
implique que le test de primalité de Miller-Rabin possède une probabilité d'erreur. Néanmoins, nous avons le théorème suivant (dont la preuve est délicate) :
Théorème 3.5.2
Si n est composé, alors n passe le test de Miller en base a (1 ≤ a ≤ n − 1) pour au plus
n−1
bases a.
4
Ce théorème permet de prouver (cf. TD) qu'en eectuant susamment d'itérations de l'algorithme de test (avec à chaque fois une nouvelle base a choisie aléatoirement), la probabilité
qu'un entier n non premier soit qualié de premier par l'algorithme peut être rendue
arbitrairement petite.
Remarque. On soupçonnait depuis longtemps que le problème de décision n est-il pre-
mier ? était dans la classe P des problèmes polynomiaux en la taille de n. Une équipe de
mathématiciens indiens (Agrawal-Kayal-Saxena) l'a
enn démontré en 2002 en construisant un test de primalité qui tourne en O (ln n)12 , voire en O (ln n)6 si une certaine
conjecture mathématique est vraie ! Cela n'enlève pas son intérêt au test probabiliste de
Miller-Rabin qui continuera d'être utilisé, car si ce nouvel algorithme déterministe est bien
polynomial, on ne peut tout de même pas dire d'un algorithme qui a une complexité de
degré 12, ou même 6, en la taille de la donnée d'entrée qu'il est ecace (en pratique,
lorsqu'il s'agit de résoudre des problèmes courants, les algorithmes polynomiaux qu'on considère comme réellement rapides sont de complexité de degré inférieur à 3). L'algorithme
déterministe de AKS n'est donc en pratique utilisé que pour des applications pour lesquelles
on souhaite une preuve de la primalité du nombre testé.
P.Struillou
Chapitre 4
Advanced Encryption Standard
AES est le standard international de chirement des données depuis 1999. Il utilise
l'arithmétique des corps nis (une relecture des pré-requis mathématiques est ici indispensable).
Les deux concepteurs belges Daemen et Rijmen de AES ont remportés en 1999 le concours
ouvert par le National Institute of Standards and Technologie, dont l'appel d'ore visait
à remplacer DES, standard américain du chirement des données. Le cahier des charges
exigeait, en plus d'une sécurité renforcée par rapport à triple-DES, une adaptabilité de la
taille des clés (an de pouvoir les faire évoluer avec la puissance des ordinateurs), des performances excellentes (rapidité du chirement et du déchirement), ainsi qu'une portabilité
sur des supports variés.
Comme DES, AES est un système symétrique à clé privée utilisant plusieurs tours, le calcul
des clés de tour ayant lieu en parallèle dans un sous-algorithme dit de cadencement de clé. On
décrit ici dans une première section les opérations à mener pour le chirage (et le déchirage),
et dans une deuxième section nous étudierons la gestion des clés de tour.
4.1 Chirement
4.1.1 Fonctionnement général du chirement
1. Le message binaire est découpé en blocs de 128 bits.
2. Chaque bloc est disposé dans un tableau d'octets à 4 lignes et 4 colonnes. On obtient
un tableau (aij )1≤i≤4,1≤j≤4 où les aij sont des octets (en eet 4 × 4 × 8 = 128).
3. On ajoute bit à bit (opération xor), i.e. modulo 2, la clef initiale de 128 bits, mise
elle aussi sous forme d'un tel tableau.
4. On fait 10 tours des opérations décrites dans les 4 sous-sections suivantes.
4.1.2 Transformation non-linéaire sur les octets
On utilise une transformation non-linéaire lors de la routine appelée SubBytes.
Chaque octet est interprété mathématiquement comme un élément du corps de Galois
GF (28 ), qui, par dénition, est le corps
GF (28 ) =
56
Z2 [X]
(m(X))
(4.1)
CHAPITRE 4. ADVANCED ENCRYPTION STANDARD
57
où m(X) est le polynôme irréductible
(4.2)
m(X) = X 8 + X 4 + X 3 + X + 1
D'après le théorème 2.6.1, GF (28 ) est bien un corps. On note également GF (28 ) = F28 .
Cela signie qu'à chaque octet est associé un polynôme à coecients dans {0, 1} de degré au
plus 7, que l'on est capable d'additionner des octets (bit à bit) et surtout de les multiplier
pour donner un nouvel octet (car cette multiplication se termine par une réduction modulo
m(X) an de toujours travailler avec des polynômes de degré au plus 7).
La routine SubBytes transforme chaque octet aij en un octet bij = S(aij ), où S agit en deux
temps.
8
1. On calcule a−1
ij inverse de aij dans GF (2 ) (d'où l'importance de travailler dans un
corps), à condition bien sûr que aij ne soit pas l'octet nul (sinon on ne le transforme
pas).
En pratique pour inverser le polynôme aij , on peut utiliser un algorithme d'Euclide
modié car l'inverse d'un polynôme p(X) est un polynôme u(X) ∈ GF (28 ) tel que
(4.3)
p(X)u(X) + m(X)v(X) = 1
(pour un certain v(X) ∈ GF (28 ), on a donc une relation de Bezout dans GF (28 )).
On s'inspire de l'algorithme d'Euclide ordinaire et on l'adapte à des calculs sur ces
polynômes : faire des divisions euclidiennes de polynômes (en partant de la division
de m(X) par p(X)) ; l'algorithme s'arrête quand le reste r(X) = 0. Le PGCD de
p(X) et de m(X) vaut toujours 1 puisque m(X) est irréductible (ce qui au passage
permet de comprendre pourquoi la condition m irréductible implique que GF (28 ) est
un corps : tout élément p(X) non nul est bien inversible). On peut donc calculer,
comme dans l'algorithme d'Euclide étendu ordinaire, des polynômes de Bezout u(X) et v(X) vériant p(X)u(X) + m(X)v(X) = 1. En sortie de boucle on recueille
u(X) = p(X)−1 mod m(X).
Noter que ce calcul d'inverse est une opération non-linéaire (donc très intéressante
pour la sécurité de ce système cryptographique).
2. L'octet a−1
ij est mis en colonne (il est donc interprété mathématiquement comme un
vecteur à 8 coordonnées dans {0, 1}). On lui applique à gauche une matrice M et
on ajoute un vecteur B (nous avons donc une transformation ane sur l'octet a−1
ij ).
Daemen et Rijmen ont choisi :

1
1

1

1
M =
1

0

0
0
0
1
1
1
1
1
0
0
0
0
1
1
1
1
1
0
0
0
0
1
1
1
1
1
1
0
0
0
1
1
1
1
1
1
0
0
0
1
1
1
1
1
1
0
0
0
1
1

1
1

1

1

0

0

0
1
 
1
1
 
0
 
0

et B = 
0
 
1
 
1
(4.4)
0
Z
On remarquera que pour la matrice M utilisée, det M 6= 0, de sorte que comme 2Z
est un corps, M est inversible, ce qui est évidemment une condition nécessaire pour
le futur déchirement !
P.Struillou
CHAPITRE 4. ADVANCED ENCRYPTION STANDARD
58
Ces deux opérations étant eectuées, on a obtenu un tableau d'octets bij , et on passe à un
deuxième traitement, dit de décalage des lignes.
4.1.3 Décalage des lignes
Le décalage des lignes est réalisé lors de la routine appelée ShiftRows.
Dans le tableau 4 × 4 d'octets, on eectue une permutation circulaire d'un cran vers la
gauche des octets de la deuxième ligne (donc la ligne d'octets (b21 , b22 , b23 , b24 ) devient
(b22 , b23 , b24 , b21 )). On décale de même la troisième ligne de deux crans vers la gauche et
la quatrième ligne de 3 crans vers la gauche.
Noter que l'inversion de cette opération (en vue du déchirement) est évidente : on eectuera
les mêmes décalages vers la droite.
Sur le nouveau tableau d'octets, on eectue encore un traitement, dit de brouillage des
colonnes.
4.1.4 Brouillage des colonnes
Le brouillage des colonnes est réalisé lors de la routine appelée MixColumns.
Une colonne de 4 octets est interprétée mathématiquement comme un élément de
E=
GF (28 )[X]
(X 4 + 1)
(4.5)
Attention, ça se complique : cette interprétation mathématique signie que chacun des 4
octets composant la colonne est considéré comme un coecient d'un polynôme de degré au
plus 3.
Remarque. Le polynôme
comprendre :
X 4 + 1 est lui même à coecients dans GF (28 ), donc il faut
X 4 + 1 = 00000001X 4 + 00000001
Les éléments de E sont donc des colonnes de 4 octets :

σ1
σ2 

w=
σ3 
σ4

(4.6)
Une telle colonne w d'octets est appelée word et est interprétée mathématiquement comme
le polynôme suivant :
w(X) = σ1 X 3 + σ2 X 2 + σ3 X + σ4
(4.7)
Si dans le traitement on doit multiplier deux word on doit donc, à la n, réduire le produit
modulo X 4 + 1.
Ces principes de calcul étant compris, explicitons le traitement que l'on fait subir à un word
dans cette routine MixColumns. On le multiplie, dans E , par le polynôme particulier
a(X) = 3X 3 + X 2 + X + 2 = 00000011X 3 + 00000001X 2 + 00000001X + 00000010
P.Struillou
CHAPITRE 4. ADVANCED ENCRYPTION STANDARD
59
Daemen et Rijmen ont choisi ce polynôme de préférence à un autre car, d'une part il est
inversible dans E (cet ensemble E n'est pas un corps mais seulement un anneau car le
polynôme X 4 + 1 n'est pas irréductible dans GF (28 )[X], il y a donc dans E des éléments
non nuls non inversibles), ce qui est une condition nécessaire en vue du déchirement ; d'autre
part la multiplication par ce polynôme se traduit simplement par l'application à gauche de
la colonne d'octet de la matrice suivante :

2
1
A=
1
3
3
2
1
1
1
3
2
1

1
1

3
2
(4.8)
où bien sûr 1, 2 et 3 désignent des éléments particuliers de GF (28 ) :
1 = 00000001, 2 = 00000010 = X, 3 = 00000011 = X + 1
Par exemple la première colonne d'octets w devient
2σ1 + 3σ2 + σ3 + σ4
L'utilisation de cette matrice A permet d'oublier qu'on travaille dans E : pour eectuer le
produit a(X)w(X) dans E il sut de calculer le produit matriciel Aw à condition bien sûr
de faire tous les calculs dans GF (28 ) (donc ne pas oublier de réduire chaque produit modulo
m(X)).
Le choix des octets 1, 2 et 3 a été fait an de faciliter l'implémentation des calculs. En eet
la multiplication d'un octet σ par 1 ne change rien. La multiplication de σ par 3 revient
à multiplier σ par 2 et ajouter σ (car dans un corps la multiplication est distributive par
rapport à l'addition).
Reste à savoir implémenter la multiplication
par 2 = X . Soit σ = b7 b6 b5 b4 b3 b2 b1 b0 un octet
P
interprété comme l'élément σ(X) = 7k=0 bk X k de GF (28 ). Alors 2σ est le polynôme
Xσ(X) =
7
X
bk−1 X k + b7 X 8
k=1
qu'il faut réduire modulo m(X) =
X8
+ X 4 + X 3 + X + 1. Dans GF (28 ) nous avons
X 8 = −(X 4 + X 3 + X + 1) = X 4 + X 3 + X + 1
Donc :
Si b7 = 0, 2σ = (00000010)(0b6 b5 b4 b3 b2 b1 b0 ) = (b6 b5 b4 b3 b2 b1 b0 0)
Si b7 = 1, 2σ = (00000010)(1b6 b5 b4 b3 b2 b1 b0 ) = (b6 b5 b4 (b3 + 1)(b2 + 1)b1 (b0 + 1)1)
Ainsi, la multiplication par 2 s'implémente par simple décalage des bits dans l'octet suivi
d'une addition dans un des deux cas.
Le tableau obtenu de 16 octets subit un dernier traitement : l'addition d'une clé de tour.
4.1.5 Addition de la clé de tour
L'addition d'une clé est réalisé lors de la routine AddRoundKey.
Une clé (diérente à chaque tour) de 128 bits (dans la version initiale de AES, car ceci est
modiable : on peut utiliser des clés de 192 ou de 256 bits) est simplement ajoutée bit à bit
au tableau de 16 octets, avant de passer au tour suivant.
P.Struillou
CHAPITRE 4. ADVANCED ENCRYPTION STANDARD
60
4.2 Déchirement
On l'a quasiment expliqué au fur et à mesure de la description des 4 routines. Il sut
d'eectuer les opérations inverses dans l'ordre inverse. Donc, à un bloc chiré de 128 bits :
on additionne la clef,
on multiplie les word dans E par a(X)−1 (ce qui se traduit en pratique par l'action
d'une matrice A−1 à coecients dans GF (28 )),
on eectue des permutations circulaires des lignes vers la droite,
on soustrait B à chaque octet,
on multiplie chaque octet par M −1 ,
on les inverse dans GF (28 ) (grâce à l'algorithme d'Euclide).
Après 10 tels tours inverses , il reste à ajouter la clé initiale et on retrouve nos 128 bits.
Il nous reste à expliquer comment les clés de tour sont construites en parallèle de l'algorithme
principal.
4.3 Algorithme de cadencement des clés
Les clés de tour sont construites en parallèle du chirement de la façon suivante.
La clé initiale K0 de 128 bits est découpée en 4 word w0 , w1 , w2 , w3 (où, rappelons le,
wi est un groupe de 4 octets).
On construit à partir de K0 par récurrence 10 clé K1 , ..., K10 de 4 word.
Supposons Ki−1 = (w4i−4 , w4i−3 , w4i−2 , w4i−1 ) construite (pour 1 ≤ i ≤ 10).
1. Le word w4i−1 subit d'abord une permutation circulaire (d'un cran vers la gauche)
′
de ses 4 octets, ce qui donne un nouveau word noté w4i−1
.
′
2. On applique la routine SubBytes à chacun des 4 octets de w4i−1
(cette transformation non-linéaire assure un vrai changement de la clé à chaque tour).
3. On additionne bit à bit chacun des octets ainsi transformés par SubBytes avec le
polynôme X i−1 (modulo m(X)).
4. Le word obtenu est ajouté bit à bit au word w4i−3 .
À l'issue de ces quatre étapes on a obtenu w4i , premier word de la nouvelle clé Ki .
5. Les word w4i+1 , w4i+2 , w4i+3 sont calculés plus simplement en ajoutant wj−1 et
wj−3 pour j ∈ {4i + 1, 4i + 2, 4i + 3}.
Cela achève la construction de la clé de tour Ki = (w4i , w4i+1 , w4i+2 , w4i+3 ) à partir
de Ki−1 .
4.4 Conclusion
La possibilité d'agrandir la taille de la clé devrait permettre à AES de rester un standard
pendant quelques temps. Il doit normalement remplacer DES, mais celui-ci est tellement
présent dans l'industrie que la transition va probablement prendre plusieurs années. Au
contraire de ce qui s'est passé pour DES, les principes de fonctionnement de AES sont tous
publics, même si pour les comprendre en profondeur, il faut faire l'eort de comprendre l'algèbre utilisée. C'est un excellent exemple de l'utilisation directe dans l'industrie de concepts
de mathématiques pures.
P.Struillou
Chapitre 5
Chirement par courbes elliptiques
Les courbes elliptiques sont des objets mathématiques qui ont trouvé ces dernières années
une application privilégiée en cryptographie à clé publique, notamment parce que leur utilisation permet de limiter la taille des clés utilisées. En mathématiques, elles ont notamment
été utilisées par Wiles pour démontrer le grand théorème de Fermat en 1994.
5.1 Qu'est-ce qu'une courbe elliptique ?
D'abord, cela n'a pas grand chose à voir avec une ellipse. Leur nom provient de leur lien
avec les intégrales elliptiques, elles-même ainsi appelées parce qu'elle apparaissent dans le
calcul de la longueur d'arcs d'ellipses.
Soit K un corps. Nous appellerons courbe elliptique sur le corps K l'ensemble Ea,b (K) des
couples (x, y) ∈ K 2 tels que
y 2 = x3 + ax + b
(5.1)
1
où (a, b) ∈ K 2 est tel que le discriminant ∆ = −16(4a3 + 27b2 ) est non
ajoute un point noté ∞ pouvant s'interpréter comme le point à l'inni.
nul, auxquels on
Lorsque le corps de base K est égal à R, le fait que ∆ 6= 0 permet de garantir que la courbe ne
possède ni point double, ni point de rebroussement . Dans un premier temps, nous allons en
eet supposer que K = R an de nous familiariser avec la notion d'addition de deux points
de la courbe elliptique, plus simple à comprendre lorsqu'on s'appuie sur une représentation
géométrique. Mais on n'oubliera pas dans la suite que les courbes elliptiques utilisées en
cryptographie sont dénies sur un corps ni et qu'une courbe elliptique sur un tel corps est
bien évidemment un ensemble ni de points.
2
5.2 Structure de groupe d'une courbe elliptique
Le but est de munir Ea,b (K) d'une structure de groupe, la loi interne étant notée additivement. La représentation géométrique rendue possible par la considération du cas K = R
permet de comprendre comment on dénit cette loi +.
1. Cette dénition est incomplète et ne convient pas dans certains cas, que nous ne rencontrerons pas
dans cette introduction au sujet.
2. Voir schémas
61
CHAPITRE 5. CHIFFREMENT PAR COURBES ELLIPTIQUES
62
On s'appuie pour dénir l'addition sur une propriété géométrique (admise) : toute droite
passant par deux points de la courbe (distincts du point à l'inni), ou toute tangente à la
courbe, recoupe la courbe en un point (éventuellement à l'inni, lorsque cette droite est
verticale). Par ailleurs, il est clair sur l'équation (5.1) que si un point (x, y) est élément de
Ea,b (K), alors son symétrique (x, −y) par rapport à l'axe y = 0 est aussi sur Ea,b (K).
Lorsque K = R, on peut dénir la somme de deux points de la courbe Ea,b (R), de la façon
suivante :
1. Lorsque P = (xP , yP ) et Q = (xQ , yQ ) sont deux points de Ea,b (R) distincts de ∞ et
tels que xP 6= xQ , on construit d'abord le point R tel que la droite (P Q) recoupe la
courbe en R, puis on construit le symétrique R′ de R par rapport à la droite y = 0.
C'est ce point R′ (qui appartient à Ea,b (R)) qu'on appelle somme de P et de Q et
qu'on note P + Q.
Lors de cette construction, il peut arriver que la droite (P Q) soit tangente en Q
(respectivement en P ) à la courbe. Dans ce cas, on considère que le point R est égal à
Q (respectivement à P ). Cette convention est naturelle si on considère ce cas comme
un cas limite du précédent.
2. Pour P = Q distinct de ∞, on procède de même en remplaçant la droite (P Q) par
la tangente à la courbe en P , ce qui là aussi est naturel. On obtient P + P , noté 2P .
3. Lorsque la droite (P Q) (ou la tangente en P ) est verticale (cas xP = xQ , i.e Q
symétrique de P par rapport à la droite y = 0), le point R est le point à l'inni, qui
est son propre symétrique par rapport à la droite y = 0. Dans un tel cas, P +Q (ou 2P )
est donc égal à ∞, dont on rappelle qu'il appartient à Ea,b (R). On voit l'importance
de rajouter un point à l'inni à l'ensemble des points d'équation y 2 = x3 + ax + b.
Cela permet de dénir P + Q dans tous les cas.
4. Lorsque l'un des deux points, disons Q, est le point à l'inni, alors la droite (P Q)
est considérée verticale et elle recoupe la courbe elliptique au symétrique de P par
rapport à la droite y = 0. La somme P + ∞ est donc égale à P (qui appartient
bien à Ea,b (R)).
Lorsque les deux points sont à l'inni, la tangente à la courbe en ∞ recoupe la courbe en ∞, donc on a ∞ + ∞ = ∞.
Nous avons ainsi déni une loi interne + sur Ea,b (R). Cette loi interne est manifestement
commutative puisque la droite (P Q) est égale à la droite (QP ).
Pour l'utilisation en cryptographie, le corps K est ni et cette dénition purement géométrique de + ne convient pas car il faut bien évidemment pouvoir implémenter la somme de
deux points P = (xP , yP ) et Q = (xQ , yQ ) de la courbe Ea,b (K). Soit K un corps quelconque.
La dénition suivante de P + Q coïncide avec celle que l'on vient de dénir géométriquement
dans le cas où K = R.
1. Lorsque P = (xP , yP ) et Q = (xQ , yQ ) sont deux
points de Ea,b (K) distincts de ∞
avec xP 6= xQ , on pose P + Q = xP +Q , yP +Q avec :
xP +Q =
yQ − yP
xQ − xP
2
−xP −xQ et yP +Q =
yQ − yP
yQ xP − yP xQ
−
xP +Q
xQ − xP
xQ − xP
(5.2)
P.Struillou
CHAPITRE 5. CHIFFREMENT PAR COURBES ELLIPTIQUES
63
2. Lorsque P est un point de Ea,b (K) distinct de ∞ et tel que yP 6= 0, on pose P + P =
2P = (x2P , y2P ) avec :
x2P =
3x2P + a
2yP
2
− 2xP
et y2P =
3x2P + a
2yP
(xP − x2P ) − yP
(5.3)
3. Lorsque P et Q sont des points de Ea,b (K) tels que xP = xQ , on pose P + Q = ∞.
4. Pour tout P ∈ Ea,b (K), on pose P + ∞ = ∞ + P = P .
Bien entendu, pour un corps K quelconque, il faut interpréter les divisions qui apparaissent
dans (5.2) et dans (5.3) comme des produits par l'inverse.
On vérie par un calcul sans diculté que dans tous les cas xP +Q , yP +Q est bien un élément
de Ea,b (K) : lorsque ce point n'est pas à l'inni, l'équation (5.1) est vériée pour x = xP +Q ,
y = yP +Q . On a donc bien dénie une loi interne + sur Ea,b (K).
Il s'agit maintenant de vérier que, muni de cette loi interne, l'ensemble Ea,b (K) est un
groupe.
Nous admettons que la loi + est associative (i.e. (P1 + P2 ) + P3 = P1 + (P2 + P3 ) pour tout
(P1 , P2 , P3 ) ∈ Ea,b (R)), la vérication se réduisant à un calcul pénible. Dans le cas K = R,
il est possible de se convaincre géométriquement de cette propriété.
Il faut vérier qu'il existe dans Ea,b (K) un élément neutre pour la loi +. Le point à l'inni
joue ce rôle puisqu'il est immédiat que pour tout P ∈ Ea,b (K), on a P + ∞ = ∞ + P = P .
On peut donc noter, si on le souhaite :
(5.4)
∞ = 0Ea,b (K)
Pour P = (x, y) ∈ Ea,b (K) distinct de ∞, le cas 3 de la dénition de la somme nous montre
que si on ajoute à P son symétrique (x, −y) par rapport à la droite y = 0, on obtient
l'élément neutre ∞. Cela marche aussi lorsque P = ∞ puisque ∞ + ∞ = ∞. Tout élément
P de Ea,b (K) possède donc un symétrique −P pour la loi + (i.e. un opposé puisque la loi
interne est notée additivement) :
lorsque P = (x, y) est distinct de ∞, on a −P = (x, −y) ;
lorsque P est le point à l'inni, on a −P = ∞ = P .
Ainsi, muni de la loi interne +, l'ensemble Ea,b (K) est un groupe d'élément neutre
∞. Il est
de plus clair sur (5.2) que la loi interne est commutative, donc Ea,b (K), + est un groupe
commutatif.
5.3 Courbes elliptiques sur un corps ni
En cryptographie, on utilise des courbes elliptiques sur le corps ni à q éléments, noté
K = Fq , avec q = pn où p est un nombre premier supérieur ou égal à 5. On peut obtenir
une représentation de ce corps en procédant comme on l'a fait au chapitre 4 pour le corps
3
3. tous les corps à q éléments sont isomorphes
P.Struillou
CHAPITRE 5. CHIFFREMENT PAR COURBES ELLIPTIQUES
64
de Galois GF (28 ) (à l'aide de classes de polynômes modulo un polynôme irréductible xé).
La première chose à faire en pratique est donc d'implémenter les calculs dans Fq (addition
et multiplication modulaires, calcul de l'inverse par l'algorithme d'Euclide étendu).
On xe donc un nombre premier p ≥ 5, un entier naturel non nul n, on pose q = pn , on
choisit a et b dans Fq tels que 4a3 + 27b2 6= 0 dans Fq . On note Ea,b (Fq ) l'ensemble des
couples (x, y) ∈ F2q vériant
y 2 ≡ x3 + ax + b mod q
(5.5)
auxquels on ajoute un point noté ∞. On munit cet ensemble Ea,b (Fq ) de la structure de
groupe dénie à la section précédente. Cette courbe elliptique ne ressemble en rien à ce que
l'on appelle courbe en géométrie élémentaire. C'est un ensemble discret (et même ni).
La première question qui se pose dans les applications envisagées est d'ailleurs combien de
points Ea,b (Fq ) possède-t-il ? . Le résultat suivant (admis) donne une estimation de l'ordre
du groupe Ea,b (Fq ).
Théorème 5.3.1
Théorème de Hass
√
√
q + 1 − 2 q ≤ #Ea,b (Fq ) ≤ q + 1 + 2 q
(5.6)
On voit que si q est grand, l'ordre de grandeur du nombre de points de la courbe elliptique
Ea,b (Fq ) est le même que celui du corps Fq sur lequel elle est construite : #Ea,b (Fq ) ∼+∞ q .
2
3
Exemple. Soit la courbe elliptique construite sur F13 = Z/13 Z, d'équation
√ y ≡ x − 5x +
8 mod 13. On trouve 20 points dans E−5,8 (F13 ). On a bien
√ 14 + 2 13 = 22.
14 − 2 13
= 6 ≤ 20 ≤
La détermination de #Ea,b (Fq ) est importante en pratique car elle permet d'éviter de choisir
une courbe elliptique pour laquelle certaines attaques particulières sont possibles. En 1971,
dans un contexte très diérent, Shanks avait
trouvé un algorithme permettant de déterminer
√ l'ordre du groupe Ea,b (Fpn ) en temps O 4 pn . Les motivations cryptographiques ont relancé
l'intérêt pour le sujet dans les années 1990 et des mathématiciens ont cherché des algorithmes
plus ecaces. On connaît désormais une méthode qui tourne en temps O n5/2 , ce qui
constitue une amélioration considérable par rapport à l'algorithme de Shanks.
Exemple. Soit une courbe elliptique construite sur un corps Fq avec q de 160 bits. Pour la
même puissance de calcul, l'algorithme de Shanks détermine son ordre en 1 an, alors que la
méthode moderne, dite AGM+SST, le fait en 60 ms.
5.4 Protocoles cryptographiques et courbes elliptiques
Pour simplier, nous allons nous limiter à décrire comment on adapte les méthodes
classiques au chirement par courbes elliptiques. L'idée de base est de mettre en ÷uvre le
système cryptographique ElGamal (ou simplement le protocole d'échange des clés de DieHelmann) dans un groupe Ea,b (Fq ), + . Il faut donc d'abord comprendre ce que devient le
problème du logarithme discret dans ce groupe additif.
P.Struillou
CHAPITRE 5. CHIFFREMENT PAR COURBES ELLIPTIQUES
65
Dans le groupe multiplicatif Z∗p , × , avec p premier et c élément primitif, le logarithme
discret de base c de y = cx = c × . . . × c est le nombre x. Dans le contexte des courbes
elliptiques, on doit
donc se donner un élément M de la courbe, il génère un sous-groupe hM i
de Ea,b (Fq ), + (composé des multiples de M ) et étant donné y = xM = M + . . . + M dans
ce sous-groupe, x joue le rôle du logarithme discret de base M de y . Les protocoles de
Die-Helmann et ElGamal sont envisageables en travaillant dans hM i et en remplaçant la
multiplication modulo p par l'addition dans Ea,b (Fq ) sous la condition que la recherche de
x connaissant y = xM soit dicile d'un point de vue algorithmique. Pour cela, il est clair
qu'il est nécessaire que l'ordre m du sous-groupe hM i doit être grand, car une recherche
exhaustive de x (en calculant M , M + M , (M + M ) + M , etc, et en comparant à chaque
fois à y ) aboutit en au plus m étapes. L'ordre de hM i = ∞, M, 2M, . . . , (m − 1)M est en
eet le plus petit entier naturel m tel que mM soit égal à l'élément neutre ∞ (i.e. l'ordre
m de M dans le groupe additif Ea,b (Fq )).
Cette condition nécessaire sur la taille du sous-groupe engendré par M n'est a priori pas
susante, sinon n'importe quelle structure de groupe pourrait donner lieu à une variante
des schémas de Die-Helmann et ElGamal ! Ces protocoles peuvent être mis en ÷uvre à
la condition que dans le groupe utilisé le problème du logarithme discret soit dicile. Il se
trouve que, dans l'état actuel des connaissances, c'est le cas lorsque l'on prend pour groupe un
grand sous-groupe cyclique hM i d'une courbe elliptique (sauf exceptions, d'où la précaution
signalée plus haut).
Pour cette introduction au sujet, il nous reste à re-écrire les protocoles de Die-Helmann et
d'ElGamal dans le contexte des courbes elliptiques.
5.4.1 Protocole de Die-Helmann par courbes elliptiques
On adapte simplement ce qui a été décrit page 51.
1. Alice et Bob choisissent ensemble une courbe elliptique Ea,b (Fq ) et un élément M ∈
Ea,b (Fq ) d'ordre m très grand.
2. Alice engendre aléatoirement une clé privée r ∈ {1, . . . , m − 1} et envoie à Bob
l'élément rM du sous-groupe hM i de Ea,b (Fq ).
Notons que si Oscar rentre en possession de rM , il ne pourra retrouver r puisque le
problème du logarithme discret dans hM i est dicile.
3. Bob agit de même : il engendre aléatoirement une clé privée s ∈ {1, . . . , m − 1} et
envoie à Alice l'élément sM du sous-groupe hM i de Ea,b (Fq ).
4. Alice calcule r(sM ) et Bob calcule s(rM ). Alice et Bob sont en possession de la même
clé secrète K = (rs)M ∈ hM i, élément du sous-groupe hM i de Ea,b (Fq ).
Remarque. Ce protocole appelle deux commentaires.
1. Puisque le calcul exhaustif des multiples successifs de M est très long pour Oscar, il
l'est aussi pour Alice et Bob ! Mais pour calculer rM ou sM , ces derniers ne vont évidemment pas employer ce moyen : ils peuvent utiliser l'algorithme d'exponentiation
rapide en remplaçant la multiplication par l'addition dans Ea,b (Fq ). Par contre,
Oscar n'a pas d'autre choix que de calculer successivement M , M +M , (M +M )+M ,
etc, et de les comparer à ce qu'il a intercepté.
4
4. dans ce contexte, il est donc plus juste d'appeler cet algorithme calcul rapide de multiples P.Struillou
CHAPITRE 5. CHIFFREMENT PAR COURBES ELLIPTIQUES
66
2. Heureusement, il existe des organismes (par exemple le National Institut of Standard
and Technology) qui peuvent fournir des courbes elliptiques et des éléments M convenables an de servir de clés publiques à Alice et Bob. En utilisant ces objets, non
seulement on est sûr que l'ordre m de M est grand, mais on sait aussi que l'on n'est
pas dans l'un des cas particuliers pour lesquelles des attaques fonctionnent.
5.4.2 Chirement ElGamal par courbes elliptiques
On adapte simplement ce qui a été décrit page 51 et 52.
1. Alice et Bob choisissent ensemble une courbe elliptique Ea,b (Fq ) et un élément M ∈
Ea,b (Fq ) d'ordre m très grand.
2. Bob engendre aléatoirement une clé privée s ∈ {1, . . . , m − 1} et envoie à Alice
l'élément sM du sous-groupe hM i de Ea,b (Fq ).
3. Si Alice veut envoyer un message à Bob, elle commence par le coder en un élément X
du sous-groupe hM i. Alice engendre aléatoirement une clé secrète r ∈ {1, . . . , m − 1}
et calcule les éléments rM et K = r(sM ) du sous-groupe hM i de Ea,b (Fq ). Elle envoie
à Bob le couple suivant, constitué de deux points de la courbe elliptique :
5
(rM , X + K)
4. Bob calcule s(rM ) et rentre ainsi en possession de la clé secrète K (protocole de
Die-Helmann). Il lui reste à retrancher K (i.e. ajouter le point symétrique −K )
du deuxième point envoyé par Alice et il retrouve X , qu'il lui reste à transformer en
texte.
Remarques.
1. Le premier avantage de ce système sur le ElGamal classique (ou sur RSA) est
qu'à chaque fois que l'on change de courbe elliptique, on change de groupe. Cela complique considérablement la recherche d'algorithmes ecaces de calcul du logarithme
discret , de sorte qu'actuellement on peut, pour le même niveau de sécurité, utiliser
des clés beaucoup plus courtes que pour les autres systèmes à clé publique. On estime
qu'une clé de 200 bits pour ECC (Elliptic Curve Cryptography ) ore le même niveau
de sécurité qu'une clé de 1024 bits pour RSA, ce qui constitue une gros avantage
notamment pour l'implantation sur puces. De plus, bien que la loi interne + soit un
peu longue à expliquer, les principes arithmétiques de calcul de sommes dans une
courbe elliptique se réalisent bien sur ce type de support.
2. L'avantage cité plus haut présente une contrepartie : la variété des groupes sur lesquels
on travaille fait qu'on est loin d'avoir ni leur étude mathématique et qu'il est donc
tout à fait envisageable que des trappes secrètes permettant de casser le système
existent dans certains cas.
3. Autre inconvénient : la cryptographie par courbes elliptiques est protégée par une
multitude de brevets ! l'éthique cryptographique en prend un coup...
4. Signalons une autre application des courbes elliptiques, cette fois en cryptanalyse : il
existe un algorithme de factorisation d'entiers sous-exponentiel qui utilise ces objets
mathématiques.
5. Cette étape de codage n'est pas triviale et on renvoie aux ouvrages spécialisés pour expliquer comment
un élément de texte peut être transformé en un point d'une courbe elliptique
P.Struillou
Annexe A
Groupes, anneaux et corps
Cette annexe regroupe le minimum à connaître sur les groupes, anneaux et corps. On va
munir les ensembles de structures algébriques de plus en plus riches.
A.1 Lois de composition interne
Dénition A.1.1 (Loi de composition interne )
Une loi de composition interne (en abrégé : l.c.i.) sur l'ensemble E est une application
ϕ de E × E dans E :
ϕ: E×E →
E
(x, y) 7→ ϕ(x, y)
On préfère souvent noter ϕ(x, y) = x T y , ou bien ϕ(x, y) = x + y (notation additive ), ou
bien x ∗ y , ou x · y , ou même xy (notation multiplicative ), suivant le contexte.
A.2 Groupes
A.2.1 Un peu d'histoire
Vous savez résoudre les équations algébriques (ou équations polynomiales) de degré 1 et 2.
Il existe également des formules, trouvées par les mathématiciens italiens de la renaissance,
permettant de résoudre dans C l'équation de degré 3 par radicaux, i.e. en utilisant uniquement les opérations d'addition, de soustraction, de multiplication, de division et les prises
de radicaux (i.e. des calculs de racines n-ièmes). Ces formules sont dites de Cardan. Ces
mathématiciens ont aussi réussi à résoudre par radicaux l'équation algébrique de degré 4.
Ensuite, les mathématiciens se sont évidemment attaqué à l'équation de degré 5, mais n'ont
pas réussi à trouver de formule de résolution par radicaux pour cette équation. Il y a une
bonne raison à cela : le mathématicien norvégien Abel a prouvé au début du 19-ième siècle
que la résolution générale de l'équation de degré 5 est impossible, ce qui ne veut pas dire
qu'il n'y a pas de racines (le théorème de D'Alembert arme qu'il y en a 5 dans C lorsqu'on
67
ANNEXE A. GROUPES, ANNEAUX ET CORPS
68
les compte avec leur multiplicité), mais signie qu'il n'existe pas de formule par radicaux
donnant les solutions dans tous les cas.
Quelques temps après Abel, la théorie des groupes a été inventée par le mathématicien
français Galois pour résoudre le problème suivant : sous quelles conditions la résolution par
radicaux d'une équation algébrique de degré ≥ 5 est-elle possible ?
Cette théorie a depuis eu les applications les plus diverses, en mathématiques bien sûr,
mais aussi dans certaines branches de la physique et de la chimie (par exemple en physique
quantique et en cristallographie) et de l'informatique (notamment en cryptographie).
A.2.2 Dénition d'un groupe
Dénition A.2.1 (Groupe )
Soit G un ensemble muni d'une l.c.i. T , G est un groupe si :
1. T est associative, i.e.
∀(x, y, z) ∈ G3 (x T y) T z = x T (y T z)
2. G possède un élément neutre pour la l.c.i. T , i.e. un élément e vériant
∀x ∈ G x T e = e T x = x
3. Tout élément x de G admet un
symétrique, i.e. un élément x′ de G vériant
x T x ′ = x′ T x = e
Exemples :
1. Z muni de l'addition usuelle des nombres entiers est un groupe, l'élément neutre étant
le nombre (entier) 0 et le symétrique de x étant le nombre (entier) −x.
On dénit de même les groupes (Q, +), (R, +) et (C, +).
2. (N, +) n'est pas un groupe (non-existence du symétrique).
3. Z muni de la multiplication usuelle des nombres entiers n'est pas un groupe (seuls 1
et -1 admettent un symétrique : eux-mêmes).
4. Q∗ , R∗ et C∗ , munis de la multiplication sont des groupe, l'élément neutre étant le
nombre 1 et le symétrique de x (qui est non nul) étant x−1 = 1/x.
5. Rn muni de l'addition composante par composante est un groupe, l'élément neutre
étant 0Rn = (0, . . . , 0), et le symétrique de (x1 , . . . , xn ) étant (−x1 , . . . , −xn ).
6. L'ensemble Mn,m (R) des matrices à coecients réels à n lignes et m colonnes, muni de
l'addition des matrices, est un groupe, d'élément neutre la matrice nulle à n lignes et
m colonnes, le symétrique d'une matrice M étant la matrice dont tous les coecients
sont les opposés des coecients de M .
7. Pour n ≥ 2 entier, l'ensemble Z/nZ des classes d'entiers modulo n est un groupe pour
l'addition, d'élément neutre la classe de 0.
P.Struillou
ANNEXE A. GROUPES, ANNEAUX ET CORPS
69
8. L'ensemble U des nombres complexes de module 1 est un groupe pour la multiplication, d'élément neutre 1.
9. Pour n ∈ N∗ , l'ensemble Un des racines n-ièmes de l'unité est un groupe pour la
multiplication, d'élément neutre 1.
10. L'ensemble des rotations anes du plan de centre (0, 0) est un groupe pour la loi ◦
(composition), d'élément neutre l'application Id.
11. Pour n ∈ N∗ , l'ensemble des rotations anes du plan de centre (0, 0) et d'angle k2π/n
(k ∈ Z) est un groupe pour la loi ◦, d'élément neutre l'application Id.
12. Soit E un ensemble non vide. L'ensemble des permutations de E (bijections de E
sur E ) est un groupe pour la loi ◦, d'élément neutre l'application IdE .
A.2.3 Propriétés
1. Dans un groupe, l'élément neutre est unique.
2. Dans un groupe, l'élément symétrique x′ de x est unique.
Dénition A.2.2 (Groupe abélien )
Soit (G, T ) un groupe. Lorsque la l.c.i. T est commutative, i.e.
∀(x, y) ∈ G2 xT y = yT x
on dit que G est un groupe
abélien, ou groupe commutatif.
Pour un groupe abélien, la l.c.i. est souvent notée additivement :
xT y = x + y
Dans ce cas l'élément neutre se note en général e = 0G (ou plus simplement 0 s'il n'y a pas de
risque de confusion avec le nombre 0). Le symétrique est alors noté x′ = −x (opposé de x).
Soit n un entier naturel et x un élément du groupe. On peut alors dénir nx = x + · · · + x
(somme de n termes égaux à x). Si n est un entier négatif, nx est la somme de (−n) termes
égaux à l'opposé (−x) de x.
Pour un groupe quelconque, on préfère en général noter la l.c.i. multiplicativement :
xT y = xy
L'élément neutre est dans ce cas noté e ou 1G (ou simplement 1 s'il n'y a pas de risque de
confusion avec le nombre 1), et le symétrique est noté x′ = x−1 (inverse de x). Pour x ∈ G
et n ∈ N, on dénit alors xn : x0 = 1G , x1 = x, x2 = x x, etc. Puisque x est inversible, on
−n
peut même dénir xn pour n ∈ Z : si n < 0, xn = x−1
P.Struillou
ANNEXE A. GROUPES, ANNEAUX ET CORPS
70
A.2.4 Sous-groupes
Soit G un groupe et F un sous-ensemble de G. F est un sous-groupe de G si F est un
groupe pour la l.c.i. induite par celle de G (i.e. la même l.c.i. restreinte à F × F ). Il sut
pour cela que :
1. ∀(x, y) ∈ F 2 x T y ∈ F
2. ∀x ∈ F x−1 ∈ F
3. F contient e
A.2.5 Sous-groupes engendrés - groupes monogènes
Proposition A.2.1 (Intersection de sous-groupes )
Toute intersection de sous-groupes de G est encore un sous-groupe de G.
Dénition A.2.3 (Générateurs )
Soit G un groupe et soit A une partie de G. On appelle sous-groupe engendré par A
le plus petit sous-groupe (au sens de l'inclusion) contenant A. C'est l'intersection des
sous-groupes de G contenant A. Les éléments de A sont appelés générateurs de G.
Dénition A.2.4 (Groupe monogène, groupe cyclique )
Soit a un élément d'un groupe G, noté multiplicativement. On appelle groupe monogène
engendré par a le sous-groupe engendré par la partie {a}. C'est l'ensemble des ak quand
k décrit Z. On le note hai.
Un groupe monogène ni est dit cyclique.
Autrement dit, comme son nom l'indique, il sut d'un seul générateur a pour engendrer un
groupe monogène.
Un groupe monogène G est soit inni (par exemple dans (Z, +), 1 engendre Z), soit ni,
auquel cas l'expression cyclique se comprend bien dans la mesure où, en notant n le
cardinal de G (dit aussi ordre du groupe), on a :
G = hai = {1G = a0 , a, a2 , . . . , an−1 }
Exemples de groupes cycliques :
1. (Z/nZ, +) est cyclique. En eet Z/nZ = h1i (car k = n 1) et d'ordre ni n.
2. (Un , ×) est cyclique. En eet Un = ei2π/n et d'ordre ni n.
P.Struillou
ANNEXE A. GROUPES, ANNEAUX ET CORPS
71
Dénition A.2.5 (Ordre d'un élément dans un groupe )
Soit G un groupe ni, noté multiplicativement, d'élément neutre e. Pour tout x ∈ G, il
existe m ∈ N∗ tel que xm = e. Le plus petit m vériant cette propriété s'appelle l'ordre
de x.
Remarque : Un groupe ni d'ordre n est cyclique si et seulement si il existe un
élément d'ordre n (car un tel élément est un générateur).
Exemple de groupe ni non cyclique. Considérons le groupe symétrique de l'ensemble
{1, 2, 3}, i.e. l'ensemble S3 des permutations de {1, 2, 3} muni de la loi ◦. Ce groupe est
d'ordre 3! = 6. Il n'est pas cyclique. En eet, il n'existe aucun élément d'ordre 6 :
L'identité est d'ordre 1.
Les 3 transpositions (les permutations qui échangent deux éléments et laissent invariant l'élément restant) sont d'ordre 2.
Le cycle s = (1, 2, 3) (cette notation signie que s(1) = 2, s(2) = 3 et s(3) = 1) est
d'ordre 3. En eet, s2 (1) = s ◦ s(1) = 3, s2 (2) = 1 et s2 (3) = 2, donc s2 est le cycle
(1, 3, 2) ; puis s3 = id.
Le cycle (1, 3, 2) est en conséquence lui aussi d'ordre 3.
Théorème A.2.1 (Théorème de Lagrange )
Soient G un groupe ni d'ordre n et x ∈ G. L'ordre de x divise n.
Exemple. On a vu que les éléments de S3 sont soit d'ordre 1, soit d'ordre 2, soit d'ordre 3, ce
qui est en accord avec le théorème de Lagrange puisque les diviseurs de 6 sont 1, 2, 3 et 6.
A.2.6 Sous-groupes de Z
Proposition A.2.2 (Sous-groupes de Z)
Les sous-groupes du groupe additif Z sont les ensembles de la forme nZ = {np ; p ∈ Z},
où n est un entier naturel quelconque.
Remarque : Les sous-groupes du groupe additif Z sont donc tous monogènes (nZ est engendré
par n puisque np = n + . . . + n).
P.Struillou
ANNEXE A. GROUPES, ANNEAUX ET CORPS
72
A.2.7 Morphisme de groupe
Dénition A.2.6 (Morphisme de groupes )
Soit (G, T ) et (G′ , T ′ ) deux groupes. Une application f : G → G′ est un morphisme
groupes, ou homomorphisme de groupes, si :
de
∀(x, y) ∈ G2 f (x T y) = f (x) T ′ f (y)
Soit f un morphisme, f est un endomorphisme si G = G′ , un isomorphisme si f est
bijective, un automorphisme si G = G′ et f bijective.
(G, T ) et (G′ , T ′ ) sont des groupes isomorphes lorsqu'il existe un isomorphisme de
groupes entre G et G′ .
Exemple : Soit n ≥ 2 un entier. Les groupes (Z/nZ, +) et (Un , ×) sont isomorphes car
l'application
f : k ∈ Z/nZ 7→ eik2π/n ∈ Un
est bien dénie (f k ne dépend pas du représentant k choisi) et est un isomorphisme de
groupes (vérication conseillée en exercice).
Plus généralement tout groupe G cyclique d'ordre n ≥ 2 est isomorphe à (Z/nZ, +).
En eet, en notant la loi de G multiplicativement et en appelant a un générateur de G,
l'application f : k ∈ Z/nZ 7→ ak est un isomorphisme de groupes. Dans le cas de Un , on
peut choisir a = ei2π/n .
Par exemple, l'ensemble Rn des rotations anes du plan, de centre (0, 0) et d'angle k2π/n
(k ∈ Z), muni de la loi ◦, est en fait cyclique d'ordre n, car en notant r la rotation d'angle
2π/n, on a :
Rn = {rk ; k ∈ J0, n − 1K}
En eet, rk = r◦· · ·◦r est en fait la rotation d'angle k2π/n, et l'on a clairement rn = Id = r0 ,
donc r est un générateur de (Rn , ◦) (qui est donc monogène) et ce groupe est d'ordre ni n,
donc il est isomorphe à la fois à (Z/nZ, +) et à (Un , ×). Il est d'ailleurs bien connu que l'on
obtient l'axe de l'image du point d'axe z par la rotation rk en multipliant z par eik2π/n ,
de sorte que (Un , ×) et (Rn , ◦) sont en fait deux représentations du même groupe.
On note enn que l'image d'un générateur d'un groupe monogène par un isomorphisme est
un générateur du groupe image.
Proposition A.2.3
Soit f un morphisme du groupe G d'élément neutre e dans le groupe G′ d'élément
neutre e′ . On note les l.c.i. dans G et G′ multiplicativement. On a alors :
f (e) = e′
f (x)−1 = f (x−1 )
P.Struillou
ANNEXE A. GROUPES, ANNEAUX ET CORPS
73
A.3 Anneaux
A.3.1 Dénition d'un anneau
Dénition A.3.1 (Anneau )
Soit A un ensemble muni de deux l.c.i. notées + (appelée addition) et · (appelée multiplication). A est un anneau si
1. (A, +) est un groupe abélien
2. la multiplication est associative
3. la multiplication est distributive à droite et à gauche par rapport à +, c-à-d :
∀(x, y, z) ∈ A3
x · (y + z) = (x · y) + (x · z) et (y + z) · x = (y · x) + (z · x)
4. la multiplication admet un élément neutre 1A :
∀x ∈ A x · 1A = 1A · x = x
Remarques et vocabulaire : Dans certains ouvrages, l'existence de l'élément neutre pour la
multiplication n'est pas exigée dans la dénition. Si cet élément neutre existe, ces ouvrages
parlent alors d'anneau unitaire.
Si de plus la multiplication est commutative, on dit que c'est un anneau commutatif.
Exemples :
1. (Z, +, ·), où + et · désignent l'addition et la multiplication usuelles des nombres entiers, est un anneau commutatif (0 est l'élément neutre de l'addition et 1 est l'élément
neutre de la multiplication).
On dénit de même les anneaux (Q, +, ·), (R, +, ·) et (C, +, ·).
2. L'ensemble Mn (R) des matrice carrées d'ordre n à coecients réels, muni de l'addition usuelle des matrices (coecient par coecient) et du produit matriciel usuel
(produit dit ligne par colonne ) est un anneau (non commutatif dès que n ≥ 2). La
matrice nulle est l'élément neutre de l'addition et la matrice In est l'élément neutre
de la multiplication.
3. Soit n ≥ 2 un entier. (Z/nZ, +, ×) est un anneau pour l'addition et la multiplication
modulo n, d'éléments neutres 0 pour l'addition et 1 pour la multiplication.
A.3.2 Sous-anneaux
Soit (A, +, ·) un anneau. B ⊂ A est un sous-anneau si c'est un anneau pour les l.c.i.
induites. Pour que B ⊂ A soit un anneau, il faut et il sut que :
1.
2.
3.
4.
0A ∈ B
∀(x, y) ∈ B 2 , x + y ∈ B
∀x ∈ B, −x ∈ B
∀(x, y) ∈ B 2 , x.y ∈ B
P.Struillou
ANNEXE A. GROUPES, ANNEAUX ET CORPS
74
5. ∃1B ∈ B, ∀x ∈ B 1B .x = x.1B = x
Remarque : Ainsi 0B = 0A , mais il arrive que 1B 6= 1A .
A.3.3 Morphisme d'anneaux
Nous avons déjà déni le concept de morphisme de groupe. De façon générale, un morphisme pour une certaine structure algébrique est une application respectant la ou les lois
de la structure (par exemple un morphisme de groupe additif respecte l'addition, c-à-d que
l'image d'une somme est la somme des images).
On a donc la dénition suivante :
Dénition A.3.2 (Morphisme d'anneaux )
Soit A et A′ deux anneaux, f : A → A′ est un morphisme
d'anneaux si
1. ∀(x, y) ∈ A2 f (x + y) = f (x) + f (y)
2. ∀(x, y) ∈ A2 f (x · y) = f (x) · f (y)
3. f (1A ) = 1A′
Attention : dans cette dénition, on a noté de façon identique les additions dans A et dans A′ ,
ainsi que les multiplications (abus de notation fréquent qui nécessite de toujours bien savoir
dans quel ensemble on travaille).
A.3.4 Eléments inversibles dans un anneau
Proposition A.3.1 (Groupe des inversibles d'un anneau )
Soit (A, +, ·) un anneau. L'ensemble noté A∗ des éléments inversibles pour la multiplication est un groupe pour la multiplication.
On déduit donc immédiatement de la proposition A.2.3 la proposition suivante :
Proposition A.3.2 (Image d'un inversible par un morphisme )
Soit f : A → A′ un morphisme d'anneau. Si x est inversible dans A alors f (x) est
inversible dans A′ et on a
f (x)−1 = f (x−1 )
A.3.5 Formule de Newton
Soit n un entier naturel. Dans un anneau A on peut dénir nx = x + · · · + x (n termes). Si
n est un entier négatif, nx est la somme de (−n) termes égaux à l'opposé (dans le groupe
additif A) de x.
Avec ces notations, dans un anneau A commutatif, on a, pour un entier naturel n :
∀(a, b) ∈ A
2
n
(a + b) =
n
X
Cnk ak bn−k
k=0
P.Struillou
ANNEXE A. GROUPES, ANNEAUX ET CORPS
75
C'est encore vrai dans un anneau non commutatif pour des éléments a et b qui commutent
(c-à-d vériant ab = ba)
A.4 Corps
A.4.1 Dénition d'un corps
Dénition A.4.1 (Corps )
Un corps est un anneau K dans lequel chaque élément diérent de l'élément neutre de
+ est inversible pour la multiplication :
(∀x ∈ K \ {0K }) (∃ y ∈ K) (x · y = y · x = 1K )
Cet élément y est alors unique et est noté x−1 .
Autrement dit un anneau K est un corps si le groupe multiplicatif K ∗ des éléments inversibles
est K \ {0K }.
Exemples :
1. (Q, +, ·), (R, +, ·) et (C, +, ·) sont des corps (commutatifs).
2. (Z, +, ·) n'est pas un corps, car les seuls éléments inversibles sont 1 et −1.
3. L'anneau (Z/nZ, +, ×) est un corps si et seulement si n est un nombre
premier.
En eet, en vertu du théorème de Bezout, a ∈ J1, n − 1K est inversible modulo n (ce
qui signie qu'il existe (b, k) ∈ Z2 tel que ab = 1 + kn) si et seulement si a est premier
avec n (i.e. P GCD(a, n) = 1).
Ainsi, si n est premier, alors tout nombre a ∈ J1, n − 1K est premier avec n, donc a
est inversible, donc (Z/nZ, +, ×) est un corps. Réciproquement, si (Z/nZ, +, ×) est
un corps, alors tout a ∈ J1, n − 1K est inversible modulo n, donc tout a ∈ J1, n − 1K
est premier avec n, donc n est un nombre premier.
4. Plus généralement, on démontre qu'un corps ni a un cardinal égal à la puissance d'un nombre premier, et réciproquement, pour tout p premier et m ∈ N∗ ,
on peut construire un corps à pm éléments en représentant ses éléments par des classes
de polynômes à coecients dans Z/pZ modulo un polynôme irréductible de degré m
(choisi une fois pour toutes) : cf. paragraphe 2.6.3. De plus, tous les corps à pm éléments sont isomorphes, de sorte qu'on peut parler du corps ni à pm éléments,
qu'on note Fpm ou GF (pm ).
A.4.2 Construction du corps des complexes
On rappelle ici une construction élémentaire du corps des nombres complexes. On munit
l'ensemble R2 = {(a, b); a ∈ R, b ∈ R} de deux l.c.i. + et × dénies par :
(a, b) + (c, d) = (a + c, b + d)
(a, b) × (c, d) = (ac − bd, ad + bc)
P.Struillou
ANNEXE A. GROUPES, ANNEAUX ET CORPS
76
On vérie sans peine que (R2 , +, ×) est un anneau commutatif, avec (0, 0) le neutre de + et
(1, 0) le neutre de ×.
C'est en fait un corps, car si (a, b) 6= (0, 0), on a :
(a, b) ×
a
−b
, 2
2
2
a + b a + b2
= (1, 0)
Ainsi, tout élément non nul est inversible.
On vérie immédiatement que l'ensemble F = {(a, 0); a ∈ R} est un sous-corps isomorphe
à R (l'isomorphisme de corps φ : (a, 0) 7→ a permet d'identier la droite F et le corps des
réels).
Enn on vérie que
(a, b) = (a, 0) × (1, 0) + (0, 1) × (b, 0)
Cela permet d'écrire
(a, b) = a + ib
en identiant (a, 0) et a, et en notant
i = (0, 1)
On note
C = (R2 , +, ×)
C n'est donc rien d'autre que R2 muni de deux l.c.i. adéquates. On vérie a posteriori que
l'on a
i2 = (0, 1) × (0, 1) = (−1, 0)
Autrement dit i2 = −1.
a − ib
Remarquons que l'inverse de a + ib est 2
, on retrouve donc :
2
a +b
1
z
z
=
= 2
z
zz
|z|
P.Struillou
Download