Introduction à la cryptographie

Transcription

Introduction à la cryptographie
Introduction à la cryptographie
TD1
Master 1
Guillaume RENIER - 2014
http://depinfo.u-cergy.fr/ renier/etudiants
[email protected]
1
Chiffre de CESAR.
1. Ecrire un programme en JAVA qui permet de chiffrer selon l’algorithme de CESAR un texte.
2. Ecrire un programme en JAVA qui permet de DEchiffrer un texte chiffré selon l’algorithme de
CESAR..
3. Vérifiez que vos algorithmes fonctionnent en les composant.
4. Ecrire un programme qui permet de retrouver, à partir du texte chiffré, le décalage utilisé pour
chiffrer un texte slon l’algorithme de CESAR.
5. Tester votre programme à l’aide des programmes écrits aux points 1 et 2.
2
Le chiffre de l’écolier.
On considère un tableau de p colonnes sur q lignes et un texte de n caractères avec p × (q − 1) + 1 6
n 6 p × q.)
On remplit le tableau avec les lettres du texte de gauche à droite et de haut en bas.
On forme ensuite un deuxième texte en lisant les caractères du tableau de haut en bas et de gauche à
droite.
On obtient alors la version chiffrée du texte de départ.
Pour le déchiffrement on remplit avec les caractères du texte chiffré le tableau de haut en bas puis de
gauche à droite et on le lit de gauche à droite et de bas en haut.
1. p, q sont fixés ; n est quelconque tel que p × (q − 1) + 1 6 n 6 p × q.
Ecrire un algorithme et un programme en C de chiffrement / déchiffrement du texte.
2. Déchiffrer le texte suivant sachant qu’il a été chiffré à partir d’un tableau de 26 colonnes et 20
lignes.
CemreinnenoerearseTeeuegfmeussnstntossrssnneiobqsllp
SfuiooaatetneuouohiioardnlnuuratrsueneteuneLneqcniuoe
scbbrvdrtbeeiuotvxuLehalbesimesrlitrihludeieerdaarpslleoe
eeieogustanlcaaaldurrstrunDoontaernmerdebocavaouuscd
lfaaIoeAeleyenrslloeeurilivcsesorttlaemicminatecditntdialsm
lhsnsdarrelusealnugefaneuerdosdnUtneumlSaueIrutuchepn
esseiaoidflsxhrhalestltPeiuteodatueaiatoeeearerumnoprronl
milnftleuinetroorutlotdureeplrsnptiuicfonvaeandlsaotadtsmho
ntatEidaeiimisarrbalsaljtsunultmlfnioanlDgqelcdstduearsnuuteanuuarasLonNfilegd
Indication : il s’agit d’un poème.
3. Tenter de déchiffrer le message suivant : BIRAADVEOCVOODUESRACVEEMZERSESUASGSE.
L’objectif de cette question est de mettre en oeuvre une technique de cryptanalyse qui permettra
automatiquement ou avec l’aide d’un humain de déchiffrer un message chiffré par la technique de
l’écolier sans la connaissance de la clé.
4. Réaliser un défi : l’un des étudiants chiffre un texte, un autre étudiant tente de le déchiffrer.
1
3
Fréquences des lettres dans un texte français.
Vous trouverez sur le site web deux fichiers : l’un contenant le texte intégral de Germinal (en pdf et en
.txt sans les accents et autres joyeusetés), l’autre une série de mot de la langue française.
3.1
Indice de coïncidence.
1. A l’aide des ces fichiers, déterminer les fréquences d’apparition des caractères dans un texte en
langue française.
X
2. On appelle indice de coïncidence d’un texte le nombre réel IC =
fα2 où A est l’alphabet.
α∈A
Calculer une valeur approchée à deux décimales de IC dans le cas de germinal, dans le dictionnaire
et dans d’autres textes en français que vous trouverez sur internet.
Vérifiez que cette valeur est proche de 0, 074.
On prendra comme valeur théorique de l’IC de la langue française la valeur 0,074.
3. Calculer la valeur théorique de l’IC dans le cas d’un texte dans lequel les lettres sont générées de
manière aléatoires (équirépartition).
4. Vérifier que dans un sous-texte quelconque français l’indice de coïncidence calculé est "proche" de
l’indice de coïncidence théorique.
On pourra, pour tester, cette hypothèse, choisir les caractères de manière aléatoire ou choisir les
caractères tous les 1 sur K (K quelconque).
Remarque : il existe une autre définition de l’indice de coïncidence.
X Na (Na − 1)
On peut définir pour un texte de N caractères IC =
.
N (N − 1)
a∈A
3.2
Distance.
1. A l’aide des fichiers du site web, déterminer les fréquences d’apparition des caractères dans un
texte en langue française.
On pourra reprendre le résultat de la partie précédente.
On note pour 1 6 i 6 26 : fTi la fréquence théorique (valeur approchée à deux chiffres significatifs)
des valeurs précédentes.
2. On appelle distance entre deux séries de fréquences Ai et Bi pour 1 6 i 6 N la valeur minimale
N
X
(Ai − Bσ(i) )2 pour σ décrivant l’ensemble des permutations de [[1; N ]].
de
i=1
Pour simplifier on pourra se limiter aux permutation circulaires.
3. (a) Utiliser mathematica pour générer de manière aléatoire 1000 textes de 10000 caractères dont
les fréquences d’apparition des caractères suivent la distribution des fTi .
(b) Calculer dans ces 10000 cas la valeur de la distance définie précédemment.
(c) Déterminer empiriquement la valeur α du niveau de confiance avec un taux d’erreur de 5%.
(d) Reprenez les questions précédentes dans le cas de 1000 textes de 100000 caractères.
4. Déterminer la distance entre la fréquence d’apparition des lettres dans un sous-texte de type
caractères de position k mod n et les fréquences théoriques.
5. Démontrer qu’une permutation circulaire d’une série statistique ne change pas la valeur de la
distance.
6. Démontrer que la distance entre la fréquence d’apparition des lettres dans un sous-texte de type
caractères de position k mod n d’un chiffré par l’algorithme de VIGENERE avec une clé de
longueur n est proche de zéro.
7. Vérifier que la distance entre la fréquence d’apparition des lettres dans un sous-texte de type
caractères de position k mod N d’un chiffré par l’algorithme de VIGENERE avec une clé de
longueur n telle que N 6= 0 mod n est grande.
8. Déduire une technique qui permet de déduire la longueur de la clé ayant permis de chiffrer un
texte par la méthode de VIGENERE.
2
3.3
Test du χ2 .
Le test précédent n’est pas très simple à mettre en place.
En effet lorsqu’on cherche à vérifier si les lettres d’un texte sont distribuées selon la loi obtenue précédemment (avec les fréquences d’apparition des lettres dans un texte en français) on cherche à vérifier si
la distance définie précédemment est dans l’intervalle de confiance à 5%.
Or il n’est pas simple de déterminer cet intervalle de confiance.
On procède alors autrement :
On utilise un test du χ2 .
On note Ni les effectifs des apparitions des lettres dans le texte étudié. Et N l’effectif total (autrement
dit la longueur du texte en nombre de caractères).
On note toujours fTi les fréquences d’apparition théoriques des lettres en français.
On considère la quantité :
26
X
(Ni − fTi × N )2
dans le cas d’un texte clair et
D=
fTi × N
i=1
!
26
X
(Nσ (i) − fTi × N )2
dans le cas d’un texte chiffré selon l’algorithme de CESAR.
D = inf σ
fTi × N
i=1
Encore une fois on pourra (car on travaille sur le chiffre de VIGENERE) se limiter aux permutations
circulaires.
Il existe une table permettant d’estimer le niveau de confiance à 0,95 : celui-ci vaut à peu près 37,65.
1. Vérifier en utilisant les fréquences théoriques d’apparition des caractères que les textes écrits en
français passent l’épreuve du χ2 .
2. Vérifier également que les sous textes générés en considérant les caractères de position k mod n
avec k et n quelconques passent le test du χ2 .
3. Déterminer une méthode (basée sur ce qui a été fait dans la partie ci-dessus) permettant de
déterminer la longueur de la clé.
4
Fréquences des digrammes dans un texte français.
– Calculer les fréquences d’apparition dans le fichier de l’oeuvre Germinal des digrammes (deux lettres
qui se suivent.)
– Il existe 676 = 262 digrammes différents. On note fi pour 1 6 i 6 676 la fréquence d’apparition du
ième digramme.
X
Calculer
fi2 .
i
– Donner une valeur théorique pour l’indice de coïncidence des digrammes.
– Utilisez cet indice de coïncidence pour déterminer la valeur du p utilisé pour chiffrer un message avec
le chiffre de l’écolier.
3

Documents pareils