Td4 Hellman
Td4 Hellman
Td4 Hellman
Feuille d’exercices 4
Avertissement : tous les exercices ne seront pas traités durant les séances ; pour en suivre l’avancement veuillez
consulter mon site personnel dans la rubrique Forum.
Exercice 1. — (Cryptosystème de Massey-Omura) Alice souhaite envoyer un message à Bob codé par un
élément m d’un groupe cyclique G d’ordre n. Ils utilisent le cryptosystème (sans clé) suivant :
1. Alice choisit secrètement un entier xA tel que 1 < xA < n et xA ∧ n = 1, et elle envoie à Bob l’élément
a = mxA .
2. Bob choisit secrètement un entier xB tel que 1 < xB < n et xB ∧ n = 1, et il renvoie à Alice l’élément
b = axB .
3. Alice calcule l’entier yA tel que 1 < yA < n et xA yA ≡ 1 mod n, et elle renvoie à Bob l’élément c = byA .
4. Bob calcule l’entier yB tel que 1 < yB < n et xB yB ≡ 1 mod n, et détermine cyB .
(a) Montrer que l’on a m = cyB .
(b) On prend G = F∗19 . Supposons qu’Alice choisisse l’entier xA = 5 et qu’elle envoie à Bob a = 2. Trouver
l’élément m correspondant.
Exercice 2. — (Système RSA) Soit n un entier ≥ 1. Alice utilise le cryptosystème RSA afin de se faire envoyer
des messages codés par des éléments de Z/nZ. Soit (e, n) sa clé publique.
1. Déterminer sa clé secrète dans chacun des cas suivants :
n o
(e, n) ∈ (5, 35), (139, 265), (31, 3599) .
2. Avec (e, n) = (31, 3599), elle reçoit le cryptogramme 2 + nZ. Quel est le message envoyé ? Soient p et q deux
nombres premiers distincts congrus à 2 modulo 3. Posons
2(p − 1)(q − 1) + 1
n = pq et e = (e est un entier).
3
3. Montrer que e est premier avec ϕ(n) et calculer son inverse modulo ϕ(n).
4. Alice choisit comme clé publique le couple (e, n) = (107, 187). Elle reçoit le cryptogramme 9 + nZ. Quel est
le message envoyé ?
Exercice 3. — (Protocole de Diffie-Hellman) Alice et Bob décident d’utiliser ce protocole pour se fabriquer
une clé secrète. Pour cela, ils rendent public le couple (K, α) où
K = F3 [X]/(X 3 + 2X + 1) et α = X + (X 3 + 2X + 1).
1. Vérifier que K est un corps et que α est un générateur de K ∗ . Conformément à ce protocole, Alice choisit
un entier a compris entre 2 et 25, par exemple a = 9, et transmet α9 à Bob. Ce dernier choisit un entier b
compris entre 2 et 25 et lui renvoie l’élément αb = 2 + α + 2α2 .
2. Quelle est la clé secrète d’Alice et Bob ? On déterminera ses coordonnées dans la base (1, α, α2 ) de K sur F3 .
Exercice 4. — (Algorithme de El Gamal) Alice souhaite se faire envoyer des messages confidentiellement en
utilisant cet algorithme. Elle considère pour cela le corps
K = F2 [X]/(X 4 + X + 1).
Soit α la classe de X modulo (X 4 + X + 1).
1. Justifier que K est un corps et montrer que α est un générateur de K ∗ . Alice rend public le triplet (K, α, α2 +
1), et Bob envoie des messages à Alice en utilisant cette clé publique.
2. Bob veut coder le message 1 + α pour l’envoyer à Alice. Conformément à l’algorithme, il choisit un entier x
compris entre 2 et 14, par exemple x = 3. Que transmet-il à Alice ?
3. Vous interceptez le message (α3 , α3 + α2 + α). Quel était le message envoyé par Bob ?
1
2
1. Solutions
1 1) On a les égalités ¡ ¢y ¡ ¢y ¡ ¢x y
cyB = byA B = axB yA B = mxA yA B B
Il existe deux entiers naturels u et v tels que l’on ait xA yA = 1 + un et xB yB = 1 + vn. Soit e l’élément neutre de
G. Puisque G est d’ordre n, on a mun = mvn = e. Par suite, on obtient
¡ ¢1+vn
cyB = m1+un = m.
2) On a dans cet exemple n = 18. Supposons que Bob choisisse l’élément xB = 7. Dans ce cas, il renvoie à Alice
7
l’élément b = 2 = 14 mod 19. On vérifie que l’on a yA = 11 car on a 5 × (−7) + 18 × 2 = 1. Alice renvoie ainsi à
11
Bob l’élément c = 14 . Par ailleurs, vu l’égalité 7 × 13 − 5 × 18 = 1, on a yB = 13. Ainsi Bob effectue l’opération
(1411 )13 modulo 19. On a 11 × 13 ≡ 17 mod 18. D’après le petit théorème de Fermat, on a donc
(1411 )13 ≡ 1417 mod 19.
On en déduit que l’on a m = 14−1 mod 19 = 15 mod 19 (on a −4 × 14 + 3 × 19 = 1) i.e. m = 15 ∈ F∗19 .
2 1) On a 35 = 5 × 7 et ϕ(n) = 24. Par ailleurs, on a 1 = 5 × 5 − 24, donc 5 est son propre inverse modulo 24. Dans
ce cas, la clé secrète est donc (5, 24).
On a 265 = 5 × 53 et ϕ(n) = 208. Il s’agit de déterminer l’inverse de 139 modulo 208. On peut utiliser pour cela
l’algorithme d’Euclide, ce qui conduit à l’égalité 1 = 3 × 139 − 2 × 208. La clé secrète est donc (3, 208).
On a 3599 = 59 × 61, d’où ϕ(n) = 3480. En utilisant l’algorithme d’Euclide, on obtient directement l’égalité
4 × 3480 − 449 × 31 = 1,
de sorte que l’inverse de 31 modulo 3480 est 3031. La clé secrète est ainsi (3031, 3480). 2) Le message m envoyé est
(2 + nZ)3031 . Afin de déterminer son représentant compris entre 1 et n, on procède comme suit. On remarque que
l’on a 3031 = 7 × 433. On a 59 ≡ 3 mod 8, donc 2 n’est pas un carré modulo 59, d’où 229 ≡ −1 mod 59 (critère
d’Euler). On en déduit que l’on a
¡ ¢7
2433 ≡ 227 = −4−1 ≡ 44 mod 59 et 2433 ≡ 447 ≡ 23 mod 59.
Par ailleurs, on a
¡ ¢7
2433 ≡ 213 ≡ 18 mod 61 et 2433 ≡ 187 ≡ −2 mod 61.
On est donc amené à chercher l’entier N tel que 1 ≤ N ≤ 3599 vérifiant les congruences
(1) N ≡ 23 mod 59 et N ≡ −2 mod 61.
On utilise pour cela l’algorithme donné par le théorème chinois. On a la relation de Bézout
30 × 59 − 29 × 61 = 1,
¡ ¢ ¡ ¢
d’où l’on déduit que l’entier −2 30 × 59 − 23 29 × 61 = −44227 vérifie les congruences (1). Il en résulte que
N = 2560. Le message m envoyé est donc
m = 2560 + nZ.
3) On a ϕ(n) = (p − 1)(q − 1) i.e. on a 3e = 2ϕ(n) + 1, donc e est premier avec ϕ(n) et 3 est l’inverse de e modulo
ϕ(n). 4) On a n = 11 × 17, ϕ(n) = 160. D’après la question 3, l’inverse de 107 modulo 160 est 3. Le message m
qui lui a été envoyé est donc
m = 93 mod 187 = 168 mod 187.
3 1) Le polynôme X 3 + 2X + 1 ∈ F3 [X] est irréductible sur F3 car il n’a pas de racines dans F3 et son degré est 3,
donc K est un corps de cardinal 27. Le groupe K ∗ est d’ordre 26. Les ordres de ses éléments autres que l’élément
neutre, sont donc 2, 13 ou 26. En fait, −1 est le seul élément d’ordre 2 de K ∗ , car par exemple ±1 sont les seules
racines du polynôme X 2 − 1 ∈ K[X]. On a α3 = α − 1, d’où α9 = α3 − 1 (car K est de caractéristique 3) i.e.
α9 = α + 1, d’où α12 = α2 − 1 puis α13 = −1 et notre assertion. 2) On a α4 = α2 − α et α5 = 2α2 + α + 2, d’où
¡ ¢5
b = 5. La clé secrète d’Alice et Bob est donc α9 = α45 . Déterminons ses coordonnées dans la base (1, α, α2 ) de
K sur F3 . On a α26 = 1, d’où α45 = α19 = α−7 . Par ailleurs, on a α6 = α2 + α + 1, d’où α7 = α2 − α − 1. De
l’égalité
X(X 3 + 2X + 1) − (X 2 + X + 1)(X 2 − X − 1) = 1,
4
Pour tout entier naturel V (le volume), le problème du sac à dos relatif à V et à une telle suite (vi ) est facile à
résoudre. Il s’agit de déterminer des entiers ai égaux à 0 ou 1, s’ils existent, tels que l’on ait
k−1
X
V = ai vi .
i=0
Il existe au plus une solution. Pour résoudre ce problème, on utilise l’algorithme décrit dans l’alinéa 2 du paragraphe
6 du chapitre IV. 1) La suite (2, 3, 7, 20, 35, 69) est super croissante et n = (010110)2 est la solution (qui correspond
à l’égalité 45 = 35 + 7 + 3). Il en est de même de la suite (1, 2, 5, 9, 20, 49). On constate qu’avec l’entier V = 73 le
problème n’a pas de solution.
La suite (1, 3, 7, 12, 22, 45) n’est pas super croissante. Dans ce cas, il y a exactement deux solutions (110000)2 et
(101110)2 .
La suite (4, 5, 10, 30, 50, 101) est super croissante et l’on trouve la solution (111010)2 . 2) Il s’agit de démontrer que
la suite (infinie) (vi ) satisfait la condition (1). On a v1 > v0 . Si pour i ≥ 1, vi est plus grand que la somme des i
premiers termes, on a les inégalités
X i
vi+1 > 2vi > vj ,
j=0
d’où le résultat par récurrence. 3) On vérifie d’abord que la suite (2i )i≥0 est super croissante. Par ailleurs, soit
(ai )i≥0 la suite super croissante telle que pour tout i le terme ai soit le plus petit possible. Remarquons que cette
suite existe. En effet, on prend a0 = 1 et pour tout i ≥ 1, ai est le plus petit entier naturel vérifiant la condition
i−1
X
0 < a0 < · · · < ai−1 < ai et ai > aj .
j=0
Vérifions que l’on a ai = 2i . C’est vrai si i = 0. Soit i un entier ≥ 0. Supposons que l’on ait aj = 2j pour tout j
tel que 0 ≤ j ≤ i. On a alors
Xi
ai+1 > 2j = 2i+1 − 1.
j=0
Par suite, le plus petit entier ai+1 possible est 2i+1 , d’où l’assertion.
5
6 Rappelons d’abord le principe de ce cryptosystème (paragraphe 7 du chapitre IV). Chaque utilisateur choisit une
suite d’entiers super croissante (v0 , v1 , · · · , vk−1 ), un entier m tel que
k−1
X
(1) m> vi ,
i=0
et un entier a tel que 1 ≤ a < m et pgcd(a, m) = 1. Il détermine ensuite l’entier b tel que
1 ≤ b < m et ab ≡ 1 mod m,
et pour tout i = 0, · · · , k − 1, l’entier wi tel que
(2) 1 ≤ wi < m et wi ≡ avi mod m.
Il garde secret les entiers vi , m, a et b. Sa clé publique est la suite (w0 , · · · , wk−1 ). Une personne souhaitant lui
envoyer un message binaire P = (εk−1 · · · ε0 )2 , lui transmet l’entier
k−1
X
C= εi wi .
i=0
Afin de décrypter ce message, l’utilisateur calcule l’entier V tel que
0 ≤ V < m et V ≡ bC mod m.
L’égalité
k−1
X
(3) V = εi vi ,
i=0
et l’algorithme du sac à dos super croissant, appliqué avec la suite (v0 , v1 , · · · , vk−1 ), lui permet alors de retrouver
le message P .
1) On vérifie que la suite (v0 , v1 , v2 , v3 , v4 ) = (4, 5, 12, 23, 45) est super croissante, que l’on a a = 381 = 3 × 127,
puis
X4
m = 400 > vi = 89 et pgcd(381, 400) = 1.
i=0
Les données proposées sont donc conformes au principe d’utilisation du cryptosystème. 2) On détermine l’entier b
tel que 1 ≤ b < 400 et 381b ≡ 1 mod 400. Ë l’aide de l’algorithme d’Euclide, on trouve que l’on a b = 21. Il s’agit
ensuite de déterminer les entiers wi définis par l’égalité (2) ci-dessus. On vérifie alors que la clé publique d’Alice
est
(w0 , w1 , w2 , w3 , w4 ) = (324, 305, 172, 363, 345).
3) On vérifie que l’on a
O = (01110)2 , U = (10100)2 , I = (01000)2 .
Pour chacun des trois messages (ε4 ε3 ε2 ε1 ε0 )2 ci-dessus à envoyer, Bob transmet donc à Alice successivement le
message
X4
εi wi .
i=0
Il transmet ainsi les messages cryptés
C1 = 363 + 172 + 305 = 840, C2 = 345 + 172 = 517, C3 = 363.
Afin de retrouver le mot OUI, Alice calcule les trois entiers Vi tels que
0 ≤ Vi < 400 et Vi ≡ 21Ci mod 400.
On trouve
V1 = 40, V2 = 57, V3 = 23.
Les égalités (3) qui correspondent à chacun des Vi sont respectivement
40 = 23 + 12 + 5, 57 = 45 + 12, 23 = 23,
6