Bases de l`Arithmétique et Cryptologie Romantique

publicité
Module 3I024 - Introduction à la Cryptologie
TD1 - Cryptologie Romantique – page 1/9
Bases de l’Arithmétique et Cryptologie Romantique
Version du 11 janvier 2017
TD
1
Quelques bases
Exercice 1 – Rappels d’arithmétique de base
1. Que représente l’expression 31 mod 26 ? Quelle est sa valeur ?
2. Que vaut −3 mod 26 ?
3. Rappeler la définition d’un nombre premier. Du pgcd de deux entiers.
4. Donner les tables d’addition et de multiplication modulo 12.
5. Donner l’ensemble des couples (a.b) ∈ {0, . . . , 11}2 tels que b soit l’inverse de a pour l’addition modulo 12
6. Donner l’ensemble des couples (a.b) ∈ {0, . . . , 11}2 tels que b soit l’inverse de a pour la multiplication modulo 12
7. Exhiber un élément a dans {0, . . . , 11} différent de 0 tel qu’il existe un b 6= 0 et vérifiant a × b = 0 mod 12.
8. Résoudre l’équation 7x + 5 = 4 mod 12. Qu’en est-il de l’équation 3x + 5 = 7 mod 12 ?
Exercice 2 – Structures algébriques
1. Rappeler la définition d’un groupe.
2. Vérifier que l’ensemble des classes modulo un entier n muni de l’addition forme bien un groupe (on le note généralement Z/nZ.
3. Rappeler la définition d’un groupe cyclique. Montrer que le groupe additif Z/nZ est cyclique.
4. Rappeler la définition d’un morphisme de groupe. En faire de même pour un isomorphisme.
5. Montrer que tout groupe fini cyclique de cardinal n est isomorphe à Z/nZ. Ce dernier est donc le groupe cyclique
de cardinal n canonique.
6. Rappeler la définition d’un groupe commutatif (dit aussi abélien). Donner un groupe de permutation qui n’est pas
commutatif.
Exercice 3 – Python, les listes et les statistiques
1. Étant donnée une liste d’éléments numériques (des entiers ou des flottants) donner un fonction Python permettant
d’en calculer la moyenne.
2. Étant donnée une variable aléatoire discrète X représentée à l’aide de deux listes de même longueur (la première
représentant les valeurs prises par X et la seconde les probabilités correspondant à chacun de ces valeurs). Donner
une fonction Python permettant de calculer l’espérance de X.
3. Avec les mêmes notations que la question précédente, donner une fonction Python permettant de calculer la variance
et l’écart type de X.
4. Soit ` une liste Python. Rappeler comment construire toutes les sous-listes de ` que l’on peut extraire à l’aide de la
syntaxe `[a : b : c] où a, b, c sont des entiers (pas forcément positifs).
©2016-2017(by UPMC/Licence d’Informatique/3I024 - Introduction à la Cryptologie)
11 janvier 2017
Module 3I024 - Introduction à la Cryptologie
TD1 - Cryptologie Romantique – page 2/9
Exercice 4 – Questions introductives de Cryptologie
1. Rappeler la définition de la cryptologie.
2. Quelle est la différence entre cryptographie et cryptanalyse ?
3. Quelle est la différence entre la cryptographie et la stéganographie ?
4. Quel mathématicien célèbre s’est illustré en participant à la cryptanalyse de la machine à chiffrer utilisée par l’armée
allemande pendant la seconde guerre mondiale ?
5. Donner le nom de la machine dont on parle dans la question précédente ?
6. L’utilisation des moyens cryptographiques est-elle libre en France ? Qu’en est-il du transfert de moyens de cryptanalyse ?
2
Chiffrement et déchiffrement
Exercice 5 – Mono-alphabétique
1. Rappeler le principe de base de la cryptographie mono-alphabétique. Avec quelle opération mathématique cela peutil se définir ? Quelle est la clé secrète ?
2. (Chiffrement de César) Quelle est la particularité du chiffrement de César dans l’ensemble des chiffrements monoalphabétiques ? En déduire que la clé secrète peut être définie par le symbole dans l’alphabet d’arrivée correspondant
à une lettre fixée dans l’alphabet de départ (le A par exemple). Rappeler avec quelle opération mathématique le
chiffrement et le déchiffrement de César peut se définir.
3. (Chiffrer, déchiffrer des messages pour César) L’alphabet de départ et d’arrivée est le même : les caractères majuscules non accentués.
— Chiffrer le message ATTAQUESURLUTECEDEMAIN avec la clé R.
— déchiffrer le message IVIRYNPELCGBYBTVR avec la clé N.
4. En supposant que les alphabets d’entrée et de sortie soient celui des 26 lettres majuscules, estimer la difficulté
de retrouver un texte clair à partir d’un chiffré sans connaître la clé pour un chiffrement par décalage ou plus
généralement un chiffrement mono-alphabétique.
5. Sur quel principe mathématique se base la cryptanalyse d’un chiffrement mono-alphabétique ?
Exercice 6 – Poly-alphabétique
1. Le chiffrement de Vigenère peut être vu comme une généralisation du chiffrement de César : au lieu de décaler
chacune des lettres du message clair selon une lettre (la clé secrète), on va décaler des blocs de lettres selon un mot.
Donner un schéma expliquant le chiffrement de Vigenère.
2. — À l’aide de la clé CESAR, déchiffrer le message XSMSRXIRDVLEIUVNUMEJRSANKU obtenu en utilisant le
chiffrement de Vigenère.
— Avec la clé CIPHER chiffrer le message LATTAQUEESTPREVUEPOURDEMAIN.
3. Expliquer quel principe mathématique permet de modéliser le chiffrement de Vigenère.
3
Indice de coïncidence et de coïncidence mutuelle
©2016-2017(by UPMC/Licence d’Informatique/3I024 - Introduction à la Cryptologie)
11 janvier 2017
Module 3I024 - Introduction à la Cryptologie
TD1 - Cryptologie Romantique – page 3/9
Exercice 7 – Indice de Coïncidence
1. (Définition) Rappelez la définition de l’indice de coïncidence.
2. (Caractérisation possible) Caractériser l’indice de coïncidence comme la variance d’une variable aléatoire que
vous expliciterez.
3. (Calcul) D’après le tableau suivant, calculer l’indice de coïncidence d’un texte écrit en anglais.
Langue
Français
Anglais
A
9,42
8.08
B
1,02
1.67
C
2,64
3.18
D
3,39
3.99
E
15,87
12.56
F
0,95
2.17
G
1,04
1.80
H
0,77
5.27
I
8,41
7.24
J
0,89
0.14
K
0,00
0.63
L
5,34
4.04
M
3,24
2.60
Langue
Français
Anglais
N
7,15
7.38
O
5,14
7.47
P
2,86
1.91
Q
1,06
0.09
R
6,46
6.42
S
7,90
6.59
T
7,26
9.15
U
6,24
2.79
V
2,15
1.00
W
0,00
1.89
X
0,30
0.21
Y
0,24
1,65
Z
0,32
0.07
4. (Propriétés) Montrez que l’indice de coïncidence est invariant par chiffrement par substitution. Qu’en déduisezvous sur le principe de distinction ?
Exercice 8 – Test de Kasiski vs Indice de Coïncidence
1. (Cours) Rappelez le principe du test de Kasiski.
2. (Utilisation) Le texte suivant est issu d’un chiffrement par Vigenère d’un texte en anglais. Utilisez le test de Kasiski
pour retrouver la longueur de la clé. Peut-on conclure directement à l’aide des indications données dans le texte ? Si
non, pour quelle raison ? Si oui expliquer comment.
GSRLCVXYEJ
HPWVPVGBEX
LRRIXTEGRR
TGKLRPLZLV
ATNZEULVMN
BIEGIIYTEH
CYSBJXUEIC
CEGCIYMIEQ
YLFRRNBCCW
TBZKEIPAGP
UQBRYEARRU
MLGUXUECCH
XNLYDLVIZE
STKPBNACHD
GHUEMFYGTY
RTPRALWRWM
IWEBFRVNNP
RRQTBPIYEA
BEAVTBEAVH
ENZERYTHUE
IMRNNLEFVT
XEHUIFELEA
EATCNIFIZS
CMYICOYEKP
GTYOMFLVSI
KDWGHYNHDT
TUDFRPZEGZ
RCFTGVSSTB
BKWPAFLFZX
ONSBTISFYN
ZQJHYYAVAE
XPIVRQMICX
SSRIXTEGRL
HGCMZINLMZ
BNYYMJSSTB
KPEGAQZFRR
PKFQNNNTVJ
LYYEAZWUEU
MJLVSCYOVR
ONPOVVFEUY
LTBNCYVZHR
SCBTWJOOWW
SASNSTKEYO
PKRZRNUCXW
GUOIWTEHAO
CMNEFWCEAK
GIIYLFVVCB
WYMFJOOZDI
NNEARRVNMA
JYSFCNXYIA
HRIFIZIMLY
IJAHOLZQCL
3. (IC et longueur de clé) Expliquer comment l’indice de coïncidence permet de retrouver la longueur de la clé lors
d’une cryptanalyse de Vigenère.
4. (Application) Le tableau suivant est le résultat pour k = 3, . . . , 20, du calcul de l’indice de coïncidence moyen des
sous-chaînes Si = si si+k si+2k · · · pour i ∈ [0, k − 1].
k
3
4
5
6
7
8
9
10
11
IC moyen
0.0431208310349463
0.0429338103756708
0.0412621359223301
0.0428238229266580
0.0683182595511363
0.0426682692307692
0.0450287596385600
0.0414027149321267
0.0405418663975556
k
12
13
14
15
16
17
18
19
20
IC moyen
0.0423336353568912
0.0396449704142012
0.0701810833389781
0.0410287751464222
0.0429611131476051
0.0427533861152915
0.0436051815362160
0.0445558340295182
0.0412307692307692
En déduire la longueur de la clé du chiffrement de Vigenère utilisé pour chiffrer ce texte en anglais.
5. (Bonus) Vous finirez la cryptanalyse de ce texte chez vous.
©2016-2017(by UPMC/Licence d’Informatique/3I024 - Introduction à la Cryptologie)
11 janvier 2017
Module 3I024 - Introduction à la Cryptologie
TD1 - Cryptologie Romantique – page 4/9
Exercice 9 – Indice de Multi-Coïncidence
1. Sachant que le texte suivant
WWWVJRKYTB
IHLMCWREEW
JTJURSLQCQ
VDSQBWWMUZ
LORPHWQBAS
XFDZHTXAXT
VMIWSZPBHF
ITXGXTTCVK
EFRCRFGOHU
EYPBENXFHM
PHPACUVABO
WOXFDIXFTF
RZIMGZCRXH
RHMACWRFTF
CRXTTDLMCH
RFXQTATAWP
XTTDSQIFCA
XQSHSTXGSI
QEIVIODATA
EEBOPYTASD
TDIZSASDTI
UFSYPBGQAM
CZMYXHEFXC
CSRFHCJFWS
NOXMLCQMC
TACWROXRIZ
VURGAAJZHE
REIVEFPZSZ
VMKSRMGSJQ
a été chiffré en utilisant une clé de taille 4 et le cryptosystème de Vigenère, retrouvez le texte clair en utilisant la
table des multi-indices de coïncidence suivante
4
i
0
j
1
0
2
0
3
1
2
1
3
2
3
0.034
0.028
0.053
0.033
0.024
0.029
0.036
0.030
0.036
0.050
0.023
0.045
0.064
0.041
0.043
0.027
0.029
0.045
0.034
0.044
0.040
0.046
0.024
0.041
Indice de multi-coïncidence entre si et Dec(sj , d) avec d = 0, . . . , 25
0.038 0.042 0.027 0.041 0.040 0.031 0.031 0.034 0.039
0.033 0.047 0.035 0.037 0.034 0.044 0.046 0.032 0.052
0.044 0.025 0.035 0.050 0.042 0.035 0.027 0.033 0.044
0.042 0.037 0.033 0.033 0.035 0.036 0.029 0.040 0.032
0.039 0.063 0.045 0.028 0.026 0.047 0.034 0.035 0.036
0.043 0.041 0.034 0.047 0.040 0.031 0.029 0.037 0.054
0.028 0.040 0.041 0.041 0.034 0.038 0.044 0.040 0.063
0.039 0.034 0.038 0.035 0.027 0.027 0.042 0.039 0.037
0.065 0.042 0.024 0.029 0.046 0.037 0.029 0.046 0.040
0.031 0.033 0.049 0.031 0.030 0.037 0.048 0.038 0.034
0.043 0.044 0.050 0.039 0.043 0.040 0.025 0.034 0.027
0.023 0.034 0.043 0.076 0.040 0.025 0.031 0.032 0.045
0.029
0.031
0.063
0.043
0.038
0.042
0.043
0.033
0.021
0.040
0.045
0.034
0.045
0.031
0.041
0.034
0.032
0.037
0.032
0.049
0.033
0.030
0.035
0.048
Chiffrements polygrammiques
Exercice 10 – Carré de Polybe et chiffrement ADFGVX
Le carré de Polybe (Grèce antique, 200 ans avant J.-C.) permettait de transmettre des messages à l’aide de torches
allumées. Pour cela, on écrit dans un tableau carré 5 × 5 les lettres de l’alphabet (privé de W que l’on pourra remplacer
par V). Pour transmettre une lettre, on transmettra ses coordonnées dans ce tableau en allumant d’un côté le nombre de
torches (< 5) correspondant au numéro de la ligne et de l’autre celui des colonnes.
De ce principe de base, un chiffrement utilisé pendant la première guerre mondiale est né. Le colonel allemand Fritz
Nebel a mis au point le chiffrement ADFGVX (ou GEDEFU 18) qui sera utilisé à partir de 1918. Ici on utilise des
tableaux de taille 6 permettant de coder l’ensemble des lettres de l’alphabet (non accentuées) et les 10 chiffres. Plutôt
que d’utiliser des nombres pour identifier les lignes et colonnes, on utilise les lettres ADFGVX qui sont très éloignées
dans le code morse et ainsi permet d’éviter les fautes de frappes (ou, au pire, de corriger facilement une telle erreur de
transmission). Une première clé secrète consiste en la disposition des caractères dans le tableau. Une deuxième clé est
représenter par une permutation permettant de mélanger le texte chiffré après application du principe de Polybe.
Par exemple, on suppose que le tableau est donné par :
A
D
F
G
V
X
A
c
y
i
p
k
v
D
1
m
7
3
e
r
F
o
t
a
0
u
g
G
f
5
2
q
`
z
V
w
b
8
h
6
n
X
j
4
s
x
d
9
©2016-2017(by UPMC/Licence d’Informatique/3I024 - Introduction à la Cryptologie)
11 janvier 2017
Module 3I024 - Introduction à la Cryptologie
TD1 - Cryptologie Romantique – page 5/9
Dans une première étape, on codera donc le mot attaque par FF|DF|DF|FF|GG|VF|VD.
Dans une seconde étape, on va transposer les lettres que nous venons d’obtenir (chiffrement par transposition, i.e.
les lettres restent les mêmes, on échange leurs positions). Supposons que la clé de permutation π soit de longueur n = 4
et donnée par pi = [3, 1, 2, 4] (représentée par un tableau, i.e. l’image de i par π est donnée par pi[i]). On dispose alors
le texte codé en ligne successives de n lettres et on complète les lignes par des caractère aléatoires (ne modifiant pas le
message, XX ici) :
FFDF
DFFF
GGVF
VDXX
Le texte chiffré sera le résultat de la permutation par π des colonnes :
FDFF
FFDF
GVGF
DXVX
et la lecture des caractères de haut en bas et de gauche vers la droite. Finalement on obtient le chiffré :
FFGD|DFVX|FDGV|FFFX
1. Quel est le taux d’expansion de ce chiffrement ?
2. Chiffrer le texte attaquesurparisle12janvier à l’aide du même tableau et de la permutation [2, 1, 5, 3, 6, 4].
3. Déchiffrer le texte GFFFV FFDFF DDFXG FVDVV XFVVF GXGAD AXDGV FGVFX FFVAF FVV à l’aide du
même tableau et de la permutation [3, 1, 6, 2, 5, 4].
L’ancien major de l’école polytechnique Georges-Jean Painvin entré en tant que réserviste au service du chiffre français, réussit à cryptanalyser entre avril et mai 1918, le cryptosystème ADFGVX mis en place par les allemands au début
mars de la même année. En particulier, cette analyse lui permit de déchiffrer un message allemand sur l’organisation
d’une attaque au nord de Compiègne. Cette attaque déjouée fût un des tournants pour la victoire des français. Le secret
sur cette attaque fût classé pendant 50 ans (classique concernant le secret militaire) et le colonel allemand Nebel fût fort
désappointé lorsqu’en 1967 il apprit que son cryptosystème était cassé depuis fort longtemps !
Exercice 11 – Inversion modulaire et Chiffrement de Hill
1. (Préliminaires) Rappeler la définition de l’anneau A = Z/7Z. Donner la table d’addition et de multiplication de
A. L’anneau A possède-t-il des diviseurs de zéro ? Est-il intègre ? Est-il un corps ? Quelle est la différence majeure
entre Z/7Z et Z/26Z ?
2. (Chiffrement affine) Donner la définition d’un cryptosystème par chiffrement affine avec P = C = A. Quelle est
la différence principale avec le cas où P = C = Z/26Z ?
3. (Chiffrement de Hill) Le cryptosystème poly-alphabétique de Hill que nous allons étudier ici permet de chiffrer
des données de deux caractères de l’alphabet Z/7Z. Une clé K sera représentée par une matrice 2 × 2 à coefficients
dans Z/7Z et la fonction de chiffrement correspondante sera l’application de K sur un vecteur de deux caractères.
Donner la représentation formelle de ce cryptosystème comme nous l’avons vu en cours. Quelle caractéristique doit
avoir la matrice K pour que le cryptosystème soit valide ?
4. Montrer que l’ensemble des matrices 2 × 2 sur un anneau A forme lui-même un anneau et que le sous-ensemble des
matrices inversibles est un groupe pour la multiplication.
©2016-2017(by UPMC/Licence d’Informatique/3I024 - Introduction à la Cryptologie)
11 janvier 2017
Module 3I024 - Introduction à la Cryptologie
TD1 - Cryptologie Romantique – page 6/9
a b
5. Montrer que, lorsqu’elle existe, l’inverse d’une matrice A =
peut être calculée par la formule suivante
c d
(matrice complémentaire) :
1
d −b
B=
det(A) −c a
où det est le déterminant de A et est égal à ad − cb.
6. Déduire de la question précédente un moyen de reconnaître une matrice inversible. Donner alors une nouvelle
spécification du chiffrement de Hill, exhiber un exemple de chiffrement et déchiffrement pour une clé bien choisie.
Exercice 12 – Cryptanalyse du Chiffrement de Hill
1. (Cours) Rappelez quelles sont les hypothèses faites lors d’une cryptanalyse à clair/chiffré connu.
2. (Attaque du chiffrement de Hill) Supposons la taille m × m de la matrice clé connue. Montrer comment le chiffrement de Hill peut être cryptanalysé à l’aide d’un texte (succession de blocs) clair/chiffré bien choisi.
3. (Application) Supposons que le texte FRIDAY est chiffré en utilisant le cryptosystème de Hill (modulo 26) avec
une taille de blocs m = 2 en le texte PQCFKU.
5
Groupes, anneaux, pgcd
Exercice 13 – Questions de Cours
1. Dans un anneau A comment sont définis les éléments inversibles et les diviseurs de 0 ? Un diviseur de 0 peut-il être
inversible ? Qu’est-ce qu’un anneau intègre ? Donnez un exemple d’un anneau qui l’est et un autre qui ne l’est pas.
2. Rappeler la définition d’irréductibilité pour un élément d’un anneau intègre. Quelle est la définition d’un anneau
factoriel ?
3. Quelles caractéristiques (parmi celles citées plus haut) possède l’anneau des entiers Z ? Que sont les éléments irréductibles de Z ?
Exercice 14 – Sur le PGCD et son calcul
1. Donner la décomposition en produits d’éléments irréductibles des entiers a = 1170 et b = 330. Donner les listes
D(a) et D(b) des diviseurs de a et b et calculer l’intersection D(a) ∩ D(b).
2. Déduire de la question précédente le PGCD de a et b.
3. Rappeler la définition du PGCD vue en cours et basée sur les valuations p-adiques. Est-ce que cette définition permet
de calculer efficacement le PGCD de deux entiers ?
4. Pour vous convaincre de votre réponse à la question précédente, essayez de calculer le PGCD de 1537 et 1643 à
partir des valuations p-adiques de ces deux entiers.
5. En utilisant l’algorithme d’Euclide, calculer le PGCD de la question précédente. Qu’en concluez-vous ?
6. Rappeler la relation de Bachet-Bézout et la définition d’éléments premiers entre eux. Comment repérer une telle
propriété sur deux entiers donnés à l’aide de la relation de Bachet-Bézout.
7. Rappeler la définition du ppcm de deux entiers. Quel est la relation entre ab, pgcd(a, b) et ppcm(a, b).
©2016-2017(by UPMC/Licence d’Informatique/3I024 - Introduction à la Cryptologie)
11 janvier 2017
Module 3I024 - Introduction à la Cryptologie
TD1 - Cryptologie Romantique – page 7/9
Exercice 15 – Lagrange, Bézout et les groupes
Dans tout cet exercice les groupes sont finis et commutatifs. Une notation utilisée ici et par la suite pour éviter les
problèmes liés à l’opération du groupe : pour tout entier k strictement positif [k]g représente k opérations de g avec
lui-même et [−1]g est l’inverse de g dans le groupe. La notation [0]g représentera donc l’élément neutre du groupe.
1. Rappeler ce qu’est l’ordre d’un élément g d’un groupe fini.
2. Donner l’ordre de chacun des éléments du groupe additif Z/30Z.
3. En notant ω(a) l’ordre d’un élément a d’un groupe fini. Montrer que ω([k]a) =
ω(a)
pour tout k ∈ Z\{0}.
pgcd(ω(a), k)
Qu’en déduisez-vous pour ω([−1]a) et dans le cas où k est premier avec ω(a).
4. Soit a et b deux éléments d’un groupe fini (commutatif). Montrer que ω(a ◦ b) est un diviseur de ppcm(ω(a), ω(b)).
Qu’en déduisez-vous dans le cas où ω(a) et ω(b) sont premiers entre eux.
5. Montrer que tout groupe d’ordre premier est cyclique.
6. Montrer que pour tout diviseur d de l’ordre n d’un groupe G cyclique fini, il existe un unique sous-groupe H de G
d’ordre d. (Si G est engendré par g, le sous-groupe H sera engendré par [ nd ]g).
Exercice 16 – Euclide et inversibilité
1. Soit n un en entier et a un élément de Z/nZ. Si a est inversible peut-il être un diviseur de zéro (argumentez votre
réponse) ? Si a est diviseur de zéro, comment calculer l’entier b ∈ Z/nZ tel que ab = 0 ?
2. (Algorithme d’Euclide étendu) Déterminer le pgcd et la relation de Bézout entre 1014 et 5005. Vous donnerez
l’ensemble des calculs intermédiaires sous la forme d’un tableau comme vu en cours et en TD.
3. (Inverse ou Diviseur de zéro ?) L’entier 1014 est-il un inverse ou un diviseur de zéro dans Z/5005Z ? Si c’est un
inverse calculer l’entier b ∈ Z/5005Z tel que 1014 × b = 1 mod 5005. Si c’est un diviseur de zéro calculer l’entier
b ∈ Z/5005Z tel que 1014 × b = 0 mod 5005.
6
Exercices des annales
Exercice 17 – Cryptanalyse de Vigenère par mot probable
On s’intéresse ici à une méthode de cryptanalyse générale, celle du mot probable, appliquée au chiffrement de Vigenère.
Dans tout cet exercice on part donc de l’hypothèse que nous connaissons un mot probable dans le texte clair et que le
cryptosystème utilisé est de type Vigenère.
1. Expliquez comment vous pourrez utiliser cette hypothèse pour cryptanalyser un texte chiffré. Vous décrirez bien
toutes les hypothèses nécessaires pour mener à bien votre cryptanalyse.
2. Votre bataillon a intercepté un message hier à destination d’un sous-marin ennemi (francophone). Sachant que ces
messages commencent toujours par un bulletin météo de la forme lundi ciel bleu etc. ou encore vendredi orage venant
de l’ouest etc. et que le mot clé est rarement de longueur plus grande que 5. On vous demande de cryptanalyser cette
interception
YURGQ ZOAJM EYTDD QLSHA MNTDY GYSXZ XCLHX MLLHA F
Exercice 18 – Sur le chiffrement de Vigenère et le problème d’échange de clé
Dans tout cet exercice on considère des chiffrements de Vigenère à l’aide de clés de longueur identique fixée `. Ces
chiffrements s’effectuent comme d’habitude sur l’alphabet standard A = {A, . . . , Z}. Ainsi, les chiffrements qui nous
intéressent sont tous des applications de A` dans A` et peuvent être rassemblés dans un l’ensemble
V` = {eK : A` → A` | eK un chiffrement de Vigenère de clé K de longueur `} .
©2016-2017(by UPMC/Licence d’Informatique/3I024 - Introduction à la Cryptologie)
11 janvier 2017
Module 3I024 - Introduction à la Cryptologie
TD1 - Cryptologie Romantique – page 8/9
1. On souhaite munir l’ensemble V` de l’opération de composition dénotée ◦ par la suite. On rappelle que la composition
h = f ◦ g de deux applications f et g (compatibles) est définie par h(x) = f (g(x)).
Montrer que V` est stable par composition, c’est-à-dire que pour tout couple (eK1 , eK2 ) d’éléments de V` , la composition eK1 ◦ eK2 est possible et qu’elle résulte en un élément de V` . Vous donnerez explicitement la clé K3 qui
permet de définir la composition eK1 ◦ eK2 comme un élément eK3 de V` .
2. Montrer que l’ensemble V` muni de la composition forme un groupe. Montrer de plus qu’il est commutatif.
On souhaite utiliser uniquement le chiffrement de Vigenère pour réaliser un échange de clé sans rencontre préalable.
Plus exactement, nous nous plaçons dans le scénario suivant. Alice et Bob souhaitent communiquer avec un chiffrement
symétrique en utilisant la même clé secrète K. C’est Alice qui initialise la démarche et choisit donc la clé K.
Pour réaliser cet échange de clé (en trois passes), Alice et Bob se sont mis d’accord et n’utilisent que des fonctions de
chiffrement issues de V` . Ils réalisent alors les étapes suivantes
Étape 1 : Alice choisit une clé K1 aléatoire de longueur ` et envoie s1 = eK1 (K) à Bob ;
Étape 2 : en retour, Bob choisit une clé K2 aléatoire de longueur ` et envoie s2 = eK2 (s1 ) à Alice ;
Étape 3 : finalement Alice réalise un dernier envoi à Bob
3. Expliquer quel est le dernier envoi réalisé par Alice pour être sûr que Bob ait en sa possession la clé K.
4. Montrer qu’un attaquant peut retrouver la clé K très facilement à partir de s1 , s2 et le troisième envoi d’Alice.
5. Quelles propriétés doit vérifier un chiffrement symétrique pour que l’on puisse l’utiliser en remplacement du chiffrement de Vigenère dans le cadre d’un échange de clé en trois passes comme expliqué précédemment ?
6. Rappeler l’avantage spécifique au chiffrement One-time Pad de Vernam. Pourraît-il convenir dans le cadre de la
question précédente ?
On souhaite maintenant réaliser l’opération suivante : remise anonyme de données chiffrées sans échange de clé. On se
place dans le scénario où un indicateur ne voulant pas révéler son identité désire transmettre des informations secrètes à
un agent de police. Pour cela on autorise uniquement des chiffrements symétriques comme définis à la question 5.
7. L’indicateur dépose dans un lieu anonyme un message chiffré avec l’explication du procédé de chiffrement utilisé
(sans révéler sa clé secrète bien sûr) et prévient le policier de l’endroit où il peut retrouver les données de l’indicateur.
Montrer comment ils peuvent procéder pour que l’échange de données se fasse comme l’indicateur le souhaite (i.e.
que ce dernier doit rester anonyme).
Exercice 19 – Vigenère Autaclove
On s’intéresse ici à une utilisation du cryptosystème de Vigenère avec une clé de longueur m pour chiffrer un texte de
plusieurs blocs de longueur m chacun.
Pour chiffrer le premier bloc B0 du texte on utilise le chiffrement de Vigenère avec la clé privée K. Pour un bloc Bi
arrivant à la position i > 0 dans le texte, on utilise le chiffrement de Vigenère en prenant comme clé le chiffré du bloc
Bi−1 .
1. Représenter le chiffrement d’un texte de n blocs de longueur m à l’aide d’un schéma. Expliquer comment déchiffrer
ce texte.
2. À l’aide de ce cryptosystème, chiffrer le texte ATTAQUEPARIS avec la clé K =UP. Déchiffrer le texte URIRDDWJ
avec la clé DN.
3. Supposons que la longueur de la clé soit connue. Est-ce que l’utilisation du cryptosystème de Vigenère de cette
manière peut être cryptanalysée avec les techniques vues en cours/TD/TME ? Si non, est-il pour autant plus sûr que
l’utilisation classique de Vigenère ? (Argumentez vos réponses.)
Exercice 20 – Cryptanalyse Vigenère
Un texte a été chiffré en utilisant le chiffrement de Vigenère avec une clé de taille `. Le voici ici découpé tous les 5
caractères pour le rendre plus lisible, mais il a été chiffré en ne considérant que des lettres de l’alphabet en majuscules.
©2016-2017(by UPMC/Licence d’Informatique/3I024 - Introduction à la Cryptologie)
11 janvier 2017
Module 3I024 - Introduction à la Cryptologie
HIBKA
DGBYO
DXNLW
MEWHI
UQFLF
AGPAL
NRQPF
BKAUQ
SBQSX
OAKYB
BVPWN
FLALJ
SKCFB
FBILY
IWAFB
GTXRG
YOAGP
OYQTD
YAANR
VNIJP
TD1 - Cryptologie Romantique – page 9/9
ALGTC
ISVAI
URTZE
ZREQL
RTYTL
JJNNA
LYZLF
KWZA
1. Donner les entiers les plus probables pour la longueur de la clé `. Vous expliquerez votre démarche.
©2016-2017(by UPMC/Licence d’Informatique/3I024 - Introduction à la Cryptologie)
11 janvier 2017
Module 3I024 - Introduction à la Cryptologie
TD2 Arith et Crypto Moderne – page 1/3
Arithmétique et Cryptologie Moderne
Version du 11 janvier 2017
TD
Exercice 1 – Arithmétique modulaire et Complexité
1. Soit n un en entier et a un élément de Z/nZ. Si a est inversible peut-il être un diviseur de zéro (argumentez votre
réponse) ? Si a est diviseur de zéro, comment calculer l’entier b ∈ Z/nZ tel que ab = 0 ?
2. (Algorithme d’Euclide étendu) Estimer a priori le nombre de calculs à effectuer pour déterminer le pgcd et la
relation de Bézout entre 1014 et 5005. Effectuer l’ensemble des calculs intermédiares et présenter les sous la forme
d’un tableau comme vu en cours et en TD.
3. (Inverse ou Diviseur de zéro ?) L’entier 1014 est-il un inverse ou un diviseur de zéro dans Z/5005Z ? Si c’est un
inverse calculer l’entier b ∈ Z/5005Z tel que 1014 × b = 1 mod 5005. Si c’est un diviseur de zéro calculer l’entier
b ∈ Z/5005Z tel que 1014 × b = 0 mod 5005.
4. Donner un algorithme et estimer sa complexité pour déterminer si un entier donné dans {1 . . . , n} est un diviseur de
zéro modulo n.
Exercice 2 – Exponentiation modulaire et échange de clé
1. (Complexité) Pour a, n et e des entiers. Rappeler le principe de l’algorithme de calcul de ae mod n de complexité
O(log(e) log(n)2 ). Expliquer comment démontrer cette complexité.
2. (Implémentation) Donner une version séquentielle de cet algorithme. A-t-elle la même complexité que celle vue
en cours ? Est-il avantageux en pratique d’utiliser cette version ? Si oui pourquoi ?
3. (Application) Quelle est la complexité du protocole de Diffie-Hellman-Merkle pour l’échange de clé ?
Exercice 3 – Complexités
Dans tout cet exercice, on s’intéresse aux complexités asymptotiques d’algorithme. On rappelle que la complexité d’un
algorithme se calcule en fonction de la taille des entrées. Tous les logarithmes et exponentielles seront considérés en
base 2.
1. Soit A et B deux algorithmes prenant en entrée un entier n. Le nombre de calculs (sur des mots machine) nécessaires
pour obtenir le résultat sont 2n + 3 et n2 + 7 en utilisant respectivement A et B. À quelle classe de complexité
appartiennent ces algorithmes ? Comment se comparent-ils ?
2. Soit A un algorithme ayant une entrée de taille (en bits) `. Supposons que A soit de complexité (exacte) 24` . Si
l’entrée de A augmente de 1 bit, de combien augmente le nombre d’opérations pour effectuer le calcul ?
α)
3. Soit A un algorithme prenant en entrée un entier n et de complexité 2(log(n))
de complexité sous-exponentielle en fonction de la taille de son entrée.
avec 0 < α < 1. Montrer que A est
©2016-2017(by UPMC/Licence d’Informatique/3I024 - Introduction à la Cryptologie)
11 janvier 2017
Module 3I024 - Introduction à la Cryptologie
TD2 Arith et Crypto Moderne – page 2/3
Exercice 4 – DLP et BSGS
Dans tout cet exercice, on s’intéresse à l’algorithme Baby Step Giant Step de Shanks pour la résolution du logarithme
discret.
1. Rappeler la définition du problème DLP en général. Quel est l’algorithme de meilleur complexité connu pour le
résoudre ?
2. Rappeler le principe de l’algorithme Baby Step Giant Step et sa complexité.
3. Démontrer l’algorithme et son estimation de complexité.
Exercice 5 – BSGS : Application
Le but de cet exercice est de résoudre des DLP dans le cas des corps finis premiers, c’est à dire trouver x tel que
gx = n
mod p
avec g un générateur de F×
p et a 6= 0 un élément de Fp donné.
1. En utilisant l’algorithme BSGS avec p = 23, g = 11 et n = 3.
Exercice 6 – Groupe multiplicatif F×
p
Dans tout cet exercice, on s’intéresse au groupe multiplicatif issu de l’anneau Z/pZ pour p un entier premier (noté Fp ).
1. Rappeler quels sont éléments de F×
p.
2. Quel est le cardinal (appelé aussi ordre) de F×
p ?
×
3. Rappeler la définition de l’ordre d’un élément a de F×
p . Montrer que l’ordre de tout élément de Fp divise p − 1.
Étant donné deux éléments a et b d’ordre respectif α et β, montrer que l’ordre de ab divise le ppcm(α, β).
4. (Petit théorème de Fermat) Montrer que ap = a mod p pour tout entier a.
5. Sachant qu’un groupe d’ordre n est cyclique si et seulement s’il contient un unique sous-groupe d’ordre d pour tout
diviseur d de n. Montrer que le groupe multiplicatif F×
p est cyclique. (Indication : considérer un polynôme de la
d
forme X − 1.)
6. Montrer qu’il y a φ(p − 1) générateurs différents pour F×
p.
Exercice 7 – Diffie-Hellman-Merkle
Alice et Bob se sont mis d’accord pour utiliser le premier p = 23 pour un échange de clés en utilisant le protocole
Diffie-Hellamn-Merkle.
1. Quel est l’ordre de 5 dans F×
p
2. Pourquoi Alice peut choisir g = 5 dans le protocole Diffie-Hellman d’échange de clés avec p = 23 ?
3. Bob n’a pas beaucoup de connaissances en arithmétique et vous demande de l’aider pour générer une clé. Alice lui
a envoyé l’entier A = 8, expliquez lui comment générer et envoyer la clé K à Alice.
Exercice 8 – ElGamal
Alice et Bob se sont mis d’accord pour utiliser le premier p = 23 et le générateur α = 5 pour des échanges utilisant le
cryptosystème ElGamal.
1. Si Alice a pour clé publique l’entier 10 quelle est sa clé privée ?
2. Bob a choisi kB = 6 comme clé privée, la clé publique correspondante est βB = 8. À l’aide de cette clé publique et
de l’entier éphémère 17, Alice veut chiffrer le message m = 21. Quel est le message (c1 , c2 ) chiffré correspondant ?
3. Alice a changé sa clé privé en 9, la clé publique correspondante est alors 11. Bob a envoyé le message chiffré (17, 22)
à Alice. Quel est le message d’origine de Bob ?
©2016-2017(by UPMC/Licence d’Informatique/3I024 - Introduction à la Cryptologie)
11 janvier 2017
Module 3I024 - Introduction à la Cryptologie
TD2 Arith et Crypto Moderne – page 3/3
Exercice 9 – Bases mathématiques de RSA
On rappelle ici les éléments mathématiques qui permettent de mettre en place le crypto-système RSA.
Étant donné un entier n on note φ(n) (indicatrice d’Euler) le cardinal de (Z/nZ)× .
1. (Re)Montrer que pour tout entier a premier avec n nous avons
aφ(n) = 1
mod n
2. (Re)Déduire de la question précédente le petit théorème de Fermat.
3. Rappeler la définition du cryptosystème RSA (i.e. les fonctions ERSA et DRSA qui respectivement permettent de
chiffrer et déchiffrer) mettre bien en évidence la nature des différentes clés (privées, publiques).
4. Montrer que ce cryptosystème est toujours valide, i.e. que pour tout message m ∈ Z/nZ nous avons m =
DRSA (ERSA (m)). (Indication : on pourra utiliser le Théorème Chinois des Restes).
5. Doit-on limiter l’ensemble des messages possibles à un sous-ensemble strict de Z/nZ ? Si oui, pourquoi et lequel
exactement ?
6. Donner l’algorithme permettant de déchiffrer en utilisant le CRT.
7. En supposant que l’exposant de déchiffrement d est de l’ordre du module n montrer que le déchiffrement par CRT
est ' 4 fois plus rapide qu’en utilisant l’exponentiation directe.
8. Décrire le problème PRSA sur lequel se base le cryptosystème RSA. Montrer que la résolution du problème de la
factorisation des entiers entraîne la résolution de PRSA . Le contraire est-il vrai ?
Exercice 10 – CRT
1. Rappeler le principe de résolution d’un système d’équations linéaires modulaires.
2. En utilisant l’algorithme décrit en cours et en TD, résoudre le système suivant :

x = 1 mod 9



x = 2 mod 8
x = 3 mod 5



x = 1 mod 7
Vous présenterez soigneusement l’ensemble de vos calculs intermédiaires (attention à ne faire figurer que des calculs
modulaires).
Exercice 11 – Un exemple concret d’utilisation de RSA
On va dans cet exemple, faire les calculs nécessaires au déchiffrement d’un message envoyé à l’aide du cryptosystème
RSA.
Sachant que vos clés publiques sont n = pq avec p = 3, q = 11 et e = 7, répondez aux questions suivantes.
1. Donner les exposants de chiffrement et déchiffrement correspondant à une implantation du déchiffrement par CRT
de RSA.
2. Déchiffrer le message y = 14 en utilisant le déchiffrement par CRT.
Exercice 12 – Signer avec RSA et le DLP
1. Rappeler le principe de la signature utilisant RSA. Faire de même pour la signature DSA reposant sur le DLP.
2. Montrer que la vérification de la signature DSA est correcte.
3. (Ce que SONY aurait du savoir !) Montrer que si l’on connaît deux couples (m1 , sm1 ), (m2 , sm2 ) de message/signature obtenus en utilisant DSA avec la même valeur aléatoire km alors on peut retrouver très facilement la clé
secrète t.
©2016-2017(by UPMC/Licence d’Informatique/3I024 - Introduction à la Cryptologie)
11 janvier 2017
Module 3I024 - Introduction à la Cryptologie
TD3 Crypto – page 1/2
RSA, Corps Finis, ECC
Version du 11 janvier 2017
TD
Exercice 1 – C’est dans les détails que se cache le diable !
Un cryptosystème a beau se baser sur des principes mathématiques très forts, il suffit que le cryptosystème soit mal utilisé
pour que la sécurité escomptée soit mise à mal. C’est ce que nous allons voir sur la signature RSA.
Alice a mis à la disposition du public les clés publiques n et e du cryptosystème RSA. Elle garde secret l’exposant
de déchiffrement d.
Pour signer un document 1 < m < n, Alice associe à m la signature sm = md mod n et envoie le couple (m, sm )
à ses interlocuteurs. Ces derniers peuvent alors vérifier l’identité de l’expéditeur du message m en vérifiant que m = sem
mod n.
Où l’on demande à Alice de chiffrer n’importe quoi !
1. Soit un message chiffré c = me mod n pour Alice. L’attaquant Albert obtient c et veut pouvoir retrouver le
message de départ m.
Montrer que si Albert sait qu’Alice utilise les mêmes clés (e, n), (d, p, q) pour signer et chiffrer ses messages et
qu’il est capable de la persuader de lui envoyer un message personnel de la forme xc à signer (donc avec les clés
(d, n)) alors il pourra retrouver le message de départ m. (Indication : x est le résultat d’un chiffré re mod n à clair
r choisi.)
2. Qu’en déduisez-vous sur l’utilisation de RSA ?
Où l’on partage ses secrets !
Un groupe de k amis ont décidé, pour se faciliter la vie, d’utiliser le même module n mais des exposants de chiffrement
e1 , . . . , ek différents.
1. Montrer que si un attaquant Albert connaît les messages chiffrés c1 et c2 d’un même message clair m pour des
exposants e1 et e2 qui sont premiers entre eux alors il est facile pour Albert de retrouver m.
2. Qu’en déduisez-vous sur l’utilisation de RSA ?
Où l’on chiffre avant de signer !
Alice veut communiquer avec Bob de manière sûre. Pour cela elle explique publiquement qu’elle va chiffrer son message
m avec les clés publiques (nB , eB ) de Bob et elle signe ce message chiffré avec ses clés privées (nA , dA ). Ainsi elle
envoie à Bob le couple chiffré-signature
c = meB
mod nB ,
sm = (meB
mod nB )dA
mod nA
1. Montrer qu’après réception, Bob pourra publier une nouvelle paire de clés publiques (n0B , e0B ) permettant de prétendre la réception d’un message m0 (bien construit) signé par Alice.
2. Qu’en déduisez-vous sur l’utilisation de RSA ?
©2016-2017(by UPMC/Licence d’Informatique/3I024 - Introduction à la Cryptologie)
11 janvier 2017
Module 3I024 - Introduction à la Cryptologie
TD3 Crypto – page 2/2
Exercice 2 – Corps finis
Le but de cet exercice est l’étude de la factorisation des polynômes dans les corps finis de caractéristique 3. Dans tout
cet exercice le corps Z/3Z sera noté F3 .
1. Le polynôme P1 = X 2 + 2X + 1 ∈ F3 [X] est-il irréductible ? Si oui, démontrer le, sinon, donner sa décomposition
en facteurs irréductibles.
2. Montrer que le polynôme P2 = X 2 + X + 2 ∈ F3 [X] est irréductible.
3. Comment construire le corps F32 à 9 éléments à partir de F3 et l’un des deux polynômes P1 ou P2 ?
4. Quel est le cardinal du groupe multiplicatif F×
? (Vous argumenterez.)
32
5. Soit ω une racine du polynôme P2 dans F32 . Montrer que ω est un générateur du groupe F×
.
32
6. L’élément β = ω 6 + ω 3 + 2 est-il inversible dans F32 ? Si oui, calculer un inverse pour β.
Exercice 3 – Symbole de Legendre, polynômes et corps finis
Dans tout cet exercice nous allons étudier le corps fini F307 de cardinal l’entier premier 307.
1. En utilisant
la réciprocité quadratique (et d’autres propriétés du symbole de Legendre), calculer les symboles
17
et 307 .
13
307
2. Lorsque cela est possible, calculer une racine carré de 17 et 13 dans F307 . (Indication : 17 est d’ordre 3 dans F×
307 .)
3. Les polynômes P1 = X 2 − 13 ∈ F307 [X] et P1 = X 2 − 17 ∈ F307 [X] sont-ils irréductibles ? Si oui, démontrer le,
sinon, donner une décomposition en facteurs irréductibles.
4. On souhaite construire un corps fini de cardinal 3072 . Comment procéder ici ?
Exercice 4 – Courbe elliptique
Dans tout cet exercice, nous étudierons la courbe elliptique E définie sur le corps fini F11 par l’équation
E:
y 2 = x3 + x + 9
1. Remplir les lignes manquantes du tableau suivant (vous justifierez les calculs de chacune de ces lignes).
z
x z = x3 + x + 9 mod 11
(x, y) ∈ E
11
0
9
1
(0, 3), (0, −3)
1
2
3
4
0
0
(4, 0)
5
6
7
7
−1
∅
8
9
10
2. Montrer que E est de cardinal 8.
3. Montrer que les points P1 = (0, 3) et P2 = (6, 0) de E sont d’ordre 4 et 2 respectivement. Montrer que tout point
de E peut s’écrire [i]P1 + [j]P2 avec i et j des entiers.
4. Montrer qu’il n’existe pas de point de E qui soit d’ordre 8.
5. Le groupe E est-il isomorphe à Z/2Z × Z/4Z ou Z/8Z ou aucun des deux ? Justifiez votre réponse.
©2016-2017(by UPMC/Licence d’Informatique/3I024 - Introduction à la Cryptologie)
11 janvier 2017
Module 3I024 - Introduction à la Cryptologie
Annales – page 1/4
RSA, Corps Finis, ECC : annales
Version du 11 janvier 2017
TD
1
RSA
Exercice 1 – RSA petit exposant de chiffrement (2010 ; 7 points)
Dans cet exercice on s’intéresse à une attaque sur RSA. On supposera tout au long de cet exercice que l’exposant de
chiffrement e est égal à 3 quel que soit le module RSA N utilisé.
Scenario : Un même message m est chiffré et envoyé à 4 personnes différentes utilisant des modules RSA différents
N1 , . . . , N4 . On supposera donc que l’entier m est strictement inférieur à min(N1 , N2 , N3 , N4 ).
1. Les Ni sont supposés premiers entre eux deux à deux. Dans le cas contraire, un attaquant pourrait-il retrouver
facilement le massage clair m ? Si oui expliquer l’attaque.
2. Soit c1 , . . . , c4 les chiffrés du message m correspondant respectivement aux modules N1 , . . . , N4 . Montrer que l’on
peut contruire un entier c tel que c = m3 mod (N1 × N2 × N3 × N4 ). Quelle est la complexité de ce calcul ?
3. Montrer que l’entier m3 est strictement inférieur à (N1 × N2 × N3 × N4 ).
4. Sachant que le calcul de la partie entière d’une racine cubique d’un entier a se fait en temps polynomial en log(a),
donner une attaque permettant de retrouver m à partir c1 , . . . , c4 (Vous argumenterez précisément). Cette attaque
peut-elle encore fonctionner si le nombre de chiffrés ci connus est moindre ? Si oui combien en faut-il au minimum
(argumentez votre réponse) ? Si non, quelle est la raison ?
Exercice 2 – RSA (2013bis ; 5 points)
1. (1 point) Soit (n, e) une clé publique RSA. Pour n = 21, exhiber toutes les valeurs possibles pour e. Plus généralement, pour n = pq donné, expliquer de manière concise comment choisir e judicieusement.
2. (2 points) Soit n = 221 un module RSA et d = 121 un exposant de déchiffrement. Déchiffrer le chiffré C = 2 en
utilisant le CRT. Que pensez-vous d’un tel message ?
3. (2 points) Un attaquant collecte l’ensemble des clés publiques de S serveurs web accessibles librement. On suppose
ici que tous les modules RSA ainsi collectés sont de la même taille t. Estimer, en fonction de t et S, la complexité
de trouver, s’il existe, un couple de modules qui puissent se factoriser facilement. Donner une borne sur S pour que
ce calcul reste polynomial en t. (Vous donnerez et expliquerez l’algorithme dont vous estimerez la complexité.)
2
Corps finis
©2016-2017(by UPMC/Licence d’Informatique/3I024 - Introduction à la Cryptologie)
11 janvier 2017
Module 3I024 - Introduction à la Cryptologie
Annales – page 2/4
Exercice 3 – Corps finis (2010 ; 5 points)
Dans tout cet exercice on notera K le corps fini à deux éléments.
1. Montrer que le polynôme P1 = x3 + x + 1 à coefficients dans K est irréductible. S’il existe d’autres polynômes
irréductibles de degré 3 à coefficients dans K, exhibez les tous.
2. Comment construit-on un corps de cardinal 8 à partir de K et P1 ? Montrer que le groupe multiplicatif
cardinal 7.
×
est de
3. Soit ω une racine de P1 dans . Montrer, sans avoir à faire de calcul, que ω engendre le groupe × .
4. Calculer (ω 2 + 1)37 (donner le détail des calculs et propriétés utilisés).
Exercice 4 – Corps Fini (2012 ; 7 points)
1. Donner l’ensemble des polynômes irréductibles de degré 1, 2 et 3 à coefficients dans F2 .
2. Déduire de la question précédente que les polynômes P1 = x4 +x3 +x2 +x+1 et P2 = x4 +x+1 sont irréductibles.
On considère pour le restant de cet exercice deux corps finis K1 et K2 de cardinal 16, le premier construit à partir de
P1 le second à partir de P2 .
3. Rappeler comment construire K1 à partir de P1 .
4. Soit α l’image de x dans K2 . Montrer que α est un générateur du groupe multiplicatif K×
2.
3
2
5. Soit β l’image de x dans K1 . Montrer que β est d’ordre 5 dans K×
1 et que β + β + 1 est d’ordre 3.
6. Exhiber un générateur du groupe K×
1.
7. Déduire, pour i = 1 ou 2, des applications bijectives fi de K×
i dans le groupe additif Z/15Z vérifiant fi (a ∗ b) =
fi (a) + fi (b) et fi (1) = 0. Cette application permet-elle de montrer que le DLP est équivalent dans (K1× , ×) (ou
(K2× , ×)) et (Z/15Z, +) ? (Vous argumenterez votre réponse.)
8. Résoudre l’équation en t : (α2 + 1)t + α = 0.
Exercice 5 – 2013 ; Question de cours 1.5, 5 points
Soient P1 = x2 + x + 1 et P2 = x3 + x + 1 deux polynômes de F2 [x]. Montrer que P1 et P2 sont irréductibles, calculer
une relation de Bézout entre ces deux polynômes. En déduire un polynôme Q de F2 [x] vérifiant Q = x + 1 mod P1 et
Q = x2 + 1 mod P2 .
Exercice 6 – Corps Finis de caractéristique 2 (2014bis ; 5 points)
Soit P = X 5 + X 3 + 1 un polynôme de F2 [X].
1. (1 point) Montrer que le polynôme P est irréductible
2. (1 point) Montrer que K = F2 [X]/P est un corps. Quel est son cardinal ? Quel est le cardimal de l’ensemble des
éléments inversibles (pour la multiplication) dans K.
3. (3 points) Soit ω l’image de X dans K = F2 [X]/P . Calculer l’inverse de ω 7 + 1.
3
Courbes elliptiques
©2016-2017(by UPMC/Licence d’Informatique/3I024 - Introduction à la Cryptologie)
11 janvier 2017
Module 3I024 - Introduction à la Cryptologie
Annales – page 3/4
Exercice 7 – Courbe Elliptique (2013 ; 17 points)
Dans tout cet exercice, on s’intéresse à une courbe elliptique définie sur le corps fini K = F17 et au groupe qui s’en
déduit. Cette courbe est définie par l’équation
E : y 2 = x3 + 2x − 1
1. (1 point) Donnez, sous la forme d’un tableau, la correspondance entre les images et les antécédents de l’application
de K dans K qui à un élé ment a fait correspondre son carré a2 .
2. (1.5 points) Étant donné le tableau partiellement rempli qui suit. Déduire, sans faire aucun calcul, le cardinal du
groupe E construit à partir de E et montrer que ce groupe possède trois points d’ordre 2. (Vous argumenterez
précisément vos réponses.)
x
0
1
2
3
4
5
6
7
9
10
11
12
13
14
15
16
z = x3 + 2x − 1
z
17
1
1
−1
1
−1
1
−1
1
1
1
1
0
−1
0
1
1
2
11
6
16
15
0
13
Points
(1, ±6)
∅
(7, ±4)
3. (1 point) Soient D1 , D2 et D3 les trois points distincts d’ordre deux dans E. Montrer, sans faire aucun calcul, que
D1 + D2 = D3 . Exhiber explicitement ces trois points.
4. (3 points) Soient a et b deux éléments, d’ordre respectif α et β, d’un groupe commutatif fini additif. Montrer que si
pgcd(α, β) = 1 alors ppcm(α, β) est l’ordre de l’élément a + b.
5. (5 points) Montrer que les points P1 = (9, 10) et P2 = (10, 4) sont respectivement d’ordre 4 et 3. Construire
explicitement un point Q d’ordre 12.
6. (3.5 points) Soit G = {[k]Q : k = 1, . . . , 12}. Sachant qu’il existe Di un point d’ordre 2 tel que Di 6∈ G, montrer
que
E ' Z/2Z × Z/12Z
(indication : vous pourrez montrer qu’il n’y a pas d’élément d’ordre 24 dans E ou définir explicitement l’isomorphisme de groupe).
7. (2 points) En reprenant les mêmes notations que dans la question précédente. Montrer qu’il y a un unique point
d’ordre 2 dans G. Exhiber explicitement un point Di vérifiant la propriété de la question précédente.
Exercice 8 – Courbes elliptiques (2013bis ; 6 points)
Dans tout cet exercice, nous étudierons la courbe elliptique E définie sur le corps fini F11 par l’équation
E:
y 2 = x3 + 2x + 2
1. (1.5 points) Montrer que le groupe E construit à partir de E est de cardinal 9 et qu’il ne possède aucun élément
d’ordre pair.
©2016-2017(by UPMC/Licence d’Informatique/3I024 - Introduction à la Cryptologie)
11 janvier 2017
Module 3I024 - Introduction à la Cryptologie
Annales – page 4/4
2. (2 points) Soit P1 = (2, 5) un élément de E. Calculer [2]P1 et en déduire que P1 est d’ordre 9. Donner la structure
du groupe E (Argumenter votre réponse).
3. (1.5 points) Montrer, sans faire aucun calcul, que E ne contient que 2 points d’ordre 3 et montrer qu’ils sont opposés
l’un de l’autre.
4. (1 point) Exhiber les deux points d’ordre 3 de la question précédente.
Exercice 9 – Courbes Elliptiques (2014bis ; 8 points)
Dans tout cet exercice on s’intéresse au groupe additif E défini à partir des points rationnels de la courbe elliptique
définie par l’équation y 2 = x3 + 3x + 7 sur F11 .
1. (0.5 point) Donner l’ensemble des carrés dans F11 .
2. (3 points) Donner, sous la forme d’un tableau comme vu en cours/TD, l’ensemble des points rationnels définissant
E. Montrer que E est de cardinal 10.
3. (0.5 point) Soit P = (8, 2) et Q = (5, 9) ; vérifier que ce sont bien deux points de E.
4. (1.5 points) Montrer que P + Q est un point d’ordre 2.
5. (1.5 points) Sachant que Q = [4]P , montrer que P est ni d’ordre 2 ni d’ordre 5.
6. (1 point) Montrer que E est un groupe cyclique. Exhiber un générateur de ce groupe.
©2016-2017(by UPMC/Licence d’Informatique/3I024 - Introduction à la Cryptologie)
11 janvier 2017
Module 3I024 - Introduction à la Cryptologie
3I024 - TME1 – page 1/2
Cryptanalyse du chiffrement de Vigenère en pratique
Version du 11 janvier 2017
TME
Choix du langage
Le langage choisi doit permettre une maîtrise des éléments suivants
— Entrées/sorties standard, fichier, arguments de la ligne de commande.
— Parcours de chaîne de caractères et calcul arithmétique sur les caractères, transformation minuscule/majuscule.
À titre d’exemple nous ferons des rappels pour le langage C ou le langage Python.
Exercice 1 – Échauffement
1. Écrire un programme permettant de calculer la table de multiplication modulo un entier n donné en entrée, sous
forme de liste de listes.
2. En utilisant la fonction de la question précédente, écrire un programme permettant de calculer l’inverse de m modulo
un n deux entiers donnés en entrée.
3. Écrire un programme permettant de calculer l’ensemble des diviseurs (positifs) d’un entier n donné en entrée. Pour
ceux qui utilisent Python, faites cela en construisant une unique liste.
4. En utilisant la fonction de la question précédente, écrire un programme permettant de retrouver le plus grand diviseur
commun de deux entiers m et n donnés en entrée.
Exercice 2 – Fréquence des lettres dans une langue donnée
1. Écrire un programme frequence qui étant donné un nom de fichier texte codé en ASCII comme argument analyse
la fréquence d’apparition de chacun de ses caractères.
Il s’agit essentiellement d’écrire une fonction qui remplit un tableau de correspondance caractère −→ fréquence
sous forme de pourcentage (on pourra commencer par renvoyer le nombre d’apparition de chaque lettre et le nombre
total de lettres). Cette fonction sera réutilisée dans les exercices et séances suivantes pour la cryptanalyse de textes.
Ici on illustre cette fonction avec un main qui affiche le tableau.
2. Établir un histogramme des fréquences pour des textes écrits en français, en anglais ou tout autre langue (on pourra
consulter le site web).
Ici il s’agit d’établir des tableaux de fréquences de référence pour différentes langues, qui nous serviront de comparaison par la suite pour la cryptanalyse de textes.
Pour ce faire, vous utiliserez la fonction de la question précédente sur un texte d’une langue donnée. Ces textes
seront supposés écrits sans caractère accentué (i.e. en ASCII de base) et suffisamment longs. Pour produire de
tels fichiers texte, vous pourrez utiliser les sites web http://abu.cnam.fr/index.html pour des textes en
français exclusivement ou http://www.gutenberg.org/wiki/Main_Page Vous pourrez utiliser le script
nettoie (fourni dans le répertoire de l’UE) pour éliminer les accents et normaliser le texte.
Afin de représenter vos sorties de manière graphique (comme en cours), vous utiliserez le logiciel GNUplot (voir
http://www.gnuplot.info/documentation.html ou ?histograms sous l’interprète gnuplot) sur
la sortie de votre programme. Le script dessine_histogramme (fourni dans le répertoire de l’UE) vous permettra d’afficher un tel histogramme lorsque le résultat de votre commande frequence est bien formaté (lettre sur la
première colonne suivie d’un espace et du nombre de fois qu’elle apparaît dans le fichier texte).
©2016-2017(by UPMC/Licence d’Informatique/3I024 - Introduction à la Cryptologie)
11 janvier 2017
Module 3I024 - Introduction à la Cryptologie
3I024 - TME1 – page 2/2
Exercice 3 – Chiffrements et déchiffrements
1. Écrire un programme permettant de réaliser le chiffrement et déchiffrement de César.
Vous spécifierez bien votre programme et vérifierez son comportement sur les exemples de l’exercice 4 de la première feuille.
2. Écrire un programme permettant de réaliser un chiffrement et déchiffrement mono-alphabétique.
Vous spécifierez bien votre programme et vérifierez son comportement sur les exemples de l’exercice 4 de la première feuille.
3. Écrire un programme permettant de réaliser le chiffrement et déchiffrement de Vigenère.
Vous spécifierez bien votre programme et vérifierez son comportement sur les exemples de l’exercice 6 de la feuille
de TD.
Exercice 4 – Cryptanalyse d’un chiffrement mono-alphabétique
1. Écrire un programme permettant de réaliser la cryptanalyse d’un texte en français chiffré à l’aide d’un chiffrement
mono-alphabétique.
Utiliser la fonction de calcul des fréquences des caractères dans un texte pour essayer de cryptanalyser des chiffrements mono-alphabétiques.
Pour vous entraîner, utiliser les fichiers chiffrés disponibles sur le site web de l’UE.
2. En utilisant le programme monobi du répertoire de l’UE /Infos/lmd/2015/licence/ue/3I024-2016fev/,
ou celui que vous aurez programmé aux questions précédentes, cryptanalyser les textes fournis dans ce répertoire.
Le programme monobi permet interactivement de chiffrer / déchiffrer ou cryptanalyser un chiffrement monoalphabétique en fournissant les fréquences du texte, celles de la langue pour comparaison et la possibilité de substituer les correspondances petit à petit : le texte chiffré est écrit en majuscules, on transforme le chiffré majuscule en
déchiffré minuscule. Les explications sont fournis au fur et à mesure du déroulement. Pour faciliter la cryptanalyse
cette version utilise la fréquence des bigrammes, c’est-à-dire de couples de lettres dans le texte à cryptanalyser et
dans le texte de référence de la langue.
Exercice 5 – Cryptanalyse de Vigenère
1. Écrire une fonction permettant de calculer l’indice de coincidence d’un texte.
2. Écrire une fonction permettant de calculer la longueur de la clé d’un chiffrement de Vigenère.
3. En utilisant la cryptanalyse de chiffrement par décalage, finir de cryptanalyser un chiffrement de Vigenère une fois
que la longueur de la clé est trouvée.
4. Pour les plus avancés, vous pourrez implémenter un programme de cryptanalyse du chiffrement de Vigenère comme
vous l’avez fait pour le chiffrement par substitution. Vous proposerez l’utilisation de la corrélation de Pearson ou
l’indice de coïncidence mutuelle à l’utilisateur pour pouvoir en faire la comparaison.
©2016-2017(by UPMC/Licence d’Informatique/3I024 - Introduction à la Cryptologie)
11 janvier 2017
Module 3I024 - Introduction à la Cryptologie
3I024 - TME2 – page 1/1
Arithmétique et DLP
Version du 11 janvier 2017
TME
Exercice 1 – Arithmétique de base
1. Écrire un programme permettant de calculer un PGCD et une relation de Bézout entre deux entiers (faites afficher
les étapes intermédaires comme vu en cours et en TD).
2. Écrire une fonction permettant de calculer des inverses modulaires. En déduire une fonction permettant de calculer
tous les inversibles de l’anneau Z/N Z pour N un entier donné.
3. On rappelle que l’indicateur d’Euler d’un entier N , noté φ(N ), représente le nombre d’entiers positifs et plus petit
que N premier avec N . Écrire une fonction permettant de faire son calcul.
4. Si vous avez traité les questions précédentes avec des entiers machine, faites la même chose en utilisant une bibliothèque permettant de gérer de grands entiers (GMP pour le C par exemple).
Exercice 2 – Chiffrement et Arithmétique Modulaire
1. Écrire un programme permettant de réaliser le chiffrement et déchiffrement de type ADFGVX.
2. Écrire un programme permettant de réaliser le chiffrement et déchiffrement affine. En particulier, ce programme
devra tester si la clé donnée en entrée est cohérente avec ce qui a été vu en cours.
3. Implémenter la cryptanalyse du chiffrement affine comme vu en TD.
Exercice 3 – Logarithme Discret et Cryptologie
Le groupe cyclique support au problème du logarithme discret dans cet exercice sera celui des inverses modulo un
nombre premier. Toutes les implémentations devront être réalisées en utilisant des grands entiers.
1. Implémenter la version itérative de l’exponentiation modulaire comme vu en Cours et en TD.
Dans le reste de cet exercice on s’intéresse au groupe multiplicatif G = (Z/pZ)× avec p un entier premier. On rappelle
que ce groupe est cyclique.
2. En utilisant une bibliothèque permettant de tester rapidement si un entier est premier, écrire une fonction, presque
brute-force, permettant de factoriser p − 1 (on pourra par exemple utiliser la fonction GMP mpz_nextprime).
3. En utilisant la fonction de la question précédente, écrivez en une permettant de calculer l’ordre d’un élément g ∈ G.
4. Soit g1 et g2 deux éléments de G respectivement d’ordre m et n, rappeler quels sont les ordres possibles de g1 g2 . À
l’aide de cette propriété, implémenter une fonction permettant de trouver un générateur de ce groupe cyclique.
5. Implèmenter l’algorithme BSGS de Shanks pour la résolution du logarithme discret dans le groupe G.
©2016-2017(by UPMC/Licence d’Informatique/3I024 - Introduction à la Cryptologie)
11 janvier 2017
Module 3I024 - Introduction à la Cryptologie
3I024 - TME3 – page 1/1
Cryptographie Appliquée – OpenSSL
Version du 11 janvier 2017
TME
Exercice 1 – Modus Operandi
Non cet exercice ne s’intéressera pas aux manières d’opérer des criminels sortis des Experts Cyber ! Ici nous nous
intéresserons aux modes opératoires utilisés en cryptographie symétrique.
1. L’image UniKorn.ppm est dans un format où il est très facile de distinguer les donnés de l’image de l’entête.
Gimp ou Emacs peut afficher un tel fichier. Ecrire un script shell qui permette, à partir d’un tel fichier, de créer deux
fichiers, l’un correspondant à l’entête, l’autre aux données binaires. (indication : google est ton ami)
2. Écrire un script shell qui chiffre des fichiers de données binaires comme construits dans la question précédente.
Utiliser OpenSSL pour réaliser des chiffrements AES en mode ECB et en mode CBC.
3. Écrire un script shell qui reconstruit des images à partir des données chiffrées réalisées à la question précédente et
de l’entête construite précédemment.
4. Comparer toutes les images construites. Qu’en déduisez-vous sur le mode opératoire ECB. Expliquer les phénomènes observés. Qu’en déduisez-vous comme technique pour mettre à mal la stéganographie.
Exercice 2 – Comparaison des algorithmes de chiffrement
1. Écrire un script shell ou un programme en C ou en Python qui permette de mesurer le temps de calcul d’un processus.
2. À l’aide du programme de la question précédente, mesurer le temps de calcul pris par différents cryptosystèmes
proposés par OpenSSL pour le chiffrement (vous utiliserez le même fichier en entrée qui devra être suffisamment
gros pour que les mesures aient du sens).
3. Construire un tableau de records de vitesse et nommer le gagnant de la compétition !
©2016-2017(by UPMC/Licence d’Informatique/3I024 - Introduction à la Cryptologie)
11 janvier 2017
Module 3I024 - Introduction à la Cryptologie
3I024 - TME4 – page 1/1
Cryptologie RSA
Version du 11 janvier 2017
TME
Exercice 1 – Cryptographie RSA
Dans tout cet exercice on s’intéresse au cryptosystème RSA.
1. Implémenter le chiffrement et le déchiffrement RSA en utilisant une bibliothèque de grands entiers si nécessaire,
2. Implémenter le CRT pour deux équations.
3. Implémenter une version CRT du cryptosystème RSA.
4. Faites un tableau de temps pour comparer vos deux implémentations de RSA en fonction de la taille du module
utilisé (de 256 à 4096 bits).
Exercice 2 – Attaque RSA par Wiener
Dans tout cet exercice on s’intéresse à la cryptanalyse de RSA.
1. Soit a et b deux entiers premiers entre eux. Implémenter une fonction permettant de calculer la représentation en
fraction continue de ab .
2. Implémenter l’attaque de Wiener.
3. Utiliser votre implémentation de la question précédente pour tester des instances de RSA en fonction de la taille de
l’exposant secret utilisé.
©2016-2017(by UPMC/Licence d’Informatique/3I024 - Introduction à la Cryptologie)
11 janvier 2017
Téléchargement