Vous êtes sur la page 1sur 12

Sécurité

TD-1: Cryptographie et Cryptanalyse


Proposé par : Mr. Houcemeddine HERMASSI

(Corrigé du TD)
Partie-1 : Cryptologie classique

Exercice-1 : Attaques sur le cryptosystème de Cesar


On suppose l’association suivante :

Scénario KPA:
Ciphrtext = gozih
on connait la paire (plaintext,ciphertext)= (P,D)
Quel est la clé ?

Scénario CPA:
Tu peux choisir le plaintext que tu veux et obtenir le ciphertext correspondant.
Donner un exemple.
Quel est ton choix ? Et quel est donc la clé

Scénario CCA:
Tu peux choisir le ciphertext que tu veux et obtenir le plaintext correspondant.
Donner un exemple.
Quel est ton choix ? Et quel est donc la clé ?

KPA : k= (D – P) mod 26 = 3 – 15 mod 26= -12 mod 26 = 14


CPA : on choisit le plaintext « A » comme entrée à la machine de cryptage, on obtient comme
ciphertext « D » -> donc la clé est (D-A) mod 26= D=3
CCA : on choisit comme ciphertext « A », comme entrée à la machine de décryptage, on obtient S.
donc k=(A-S) mod 26 = -S mod 26 = 8

Exercice-2: Playfair
Utiliser la lettre spéciale Z pour séparer deux lettres égales. Et ajouter
Z s’il reste une lettre individuelle à la fin.
On vous demande de Déchiffrer le ciphertext :
EJ DJ DJ EJ GA VO IE JY NK YV TI VO ZU
TH IS IS TH E W HE AT ST ON E C IP HE R
1
TD-Sécurité Réseaux (AU 2017-2018)
Partie-2 : Cryptologie moderne

Exercice-1 : ECB
On considère un cryptosystème de bloc qui applique une permutation à des vecteurs binaires de taille 4
en mode ECB.

La fonction de permutation π est définie comme suit :

b4 b3 b2 b1 → bπ(1) bπ(2) bπ(3) bπ(4)


On donne l’opération de permutation :

Soit le plaintext m :
m = 101100010100101
1- Décrire mathématiquement ou avec un pseudo-code le fonctionnement de ECB
1) ci=E(mi)

2- Décomposer le plaintext en bloc de taille approprié. Faire du bourrage avec des zéros
pour avoir des bloc de même taille
2) bourrage avec un seul 0 pour avoir des blocs de taille n=4. m = 1011 0001
0100 1010 m1 = 1011 ; m2= 0001 ; m3 = 0100 ; m4 = 1010

3- Appliquer le mode ECB lors du chiffrement des blocs du plaintext


3) Les blocks sont chiffrés séparément. On obtient c1=E(m1)=0111 ;
c2=E(m2)=0010 ; c3=E(m3)= 1000 ; c4=E(m4)=0101

4- Donner le ciphertext final


2
TD-Sécurité Réseaux (AU 2017-2018)
4) D’où le ciphertext final est : C= 0111001010000101
5- Appliquer le déchiffrement et vérifier avec le message original
5) D(0111 0010 1000 0101) = 1011 0001 0100 1010.

6- Considérer un plaintext formé par les mêmes blocs 1010, cette redondance est-elle
propagé dans le ciphertext ?
6) Oui la redondance sera propagé ds le ciphertext : E(1010 1010 1010 1010)
= 0101 0101 0101 0101

7- Si l’ordre des blocs des ciphertexts est modifié ? le décryptage de chaque bloc est-il
possible ?
7) l’ordre des blocs dans ECB n’affecte pas le chiffrement/déchiffrement des
blocs

8- Que pensez-vous de la sécurité de ECB et dans quel application est-il approprié ?


8) ECB n’est pas sécurisé. Il est adéquat seulement pour le chiffrement des
messages très courts comme les IV ou les clés dans d’autres modes.

Exercice-2 : CBC
On utilise ma même clé, le même plaintext, la même opération mais en mode CBC. On donne
IV=1010

1- Décrire mathématiquement ou avec un pseudo-code le fonctionnement de CBC.


1) Cryptage :
C0= IV ; cj=E(cj-1 ⊕ mj) pour 1 ≤ j ≤ t
Décryptage :
C0= IV ; mj= cj-1 ⊕ D(cj) pour 1 ≤ j ≤ t
2- Décomposer le plaintext en bloc de taille approprié. Faire du bourrage avec des zéros pour
avoir des blocs de même taille
2) bourrage avec un seul 0 pour avoir des blocs de taille n=4. m = 1011 0001 0100 1010
m1 = 1011 ; m2= 0001 ; m3 = 0100 ; m4 = 1010
3- Appliquer le mode ECB lors du chiffrement des blocs du plaintext

3
TD-Sécurité Réseaux (AU 2017-2018)
3) c0=1010 ;
c1=E(c0 ⊕ m1)=E(0001) = 0010
c2=E(c1 ⊕ m2)=E(0011) = 0110
c3=E(c2 ⊕ m3)=E(0010) = 0100
c4=E(c3 ⊕ m4)=E(1110) = 1101

4- Donner le ciphertext final


4) ciphertext final est :
c=0010 0110 0100 1101

5- Appliquer le déchiffrement et vérifier avec le message original


5) Décryptage :
m1=c0 ⊕ D(c1) =1010 ⊕ D(0010)= 1010 ⊕ 0001 = 1011
m2=c1 ⊕ D(c2) =0010 ⊕ D(0110)= 0010 ⊕ 0011 = 0001
m3=c2 ⊕ D(c3) =0110 ⊕ D(0100)= 0110 ⊕ 0010 = 0100
m4=c3 ⊕ D(c4) =0100 ⊕ D(1101)= 0100 ⊕ 1110 = 1010

m = 1011 0001 0100 1010

6- Considérer un plaintext formé par les mêmes blocs 1011, cette redondance est-elle propagé
dans le ciphertext ?
6) La redondance ne sera pas propagée :
E(1011 1011 1011 1011) = 0010 0011 0001 0101
7- Si l’ordre des blocs des ciphertexts est modifié ? Le décryptage de chaque bloc est-il possible ?
7)si l’odre de blocs de ciphertext change ou les blocs de ciphertext sont remplacés par
d’autres, alors le décryptage devient impossible. Ceci est un avantage de CBC par
rapport ECB
8- Que pensez-vous de la sécurité de CBC et dans quelle application est-il approprié ?
8) sécurité améliorée parce que plus de confusion !

9- Si une erreur se passe dans le premier bloc du ciphertext. Etudier la propagation


d’erreur sur le décryptage (dire quels sont les blocs affectés et les blocs intacts du
plaintext).
9) la propagation d’erreur :
mj estcalculé par cj et cj-1. pour cela si cj a été reçu erroné, alors les plaintext mj et
mj+1 peuvent être erronés. Mais les blocs mj+2 et mj+3, … ne seront pas
influsencés, ils seront corrects.
10- Dire quelle application CBC est approprié
10) CBC peut être approprié pour le chiffrement de long messages.

Exercice-3 : CFB
Dans CFB, on a besoin d’un IV et aussi un entier r avec 1 ≤ r ≤ n. le plaintext sera décomposé en blocs
de r. Et Initialisation d’I1= IV

4
TD-Sécurité Réseaux (AU 2017-2018)
Refaire l’exercice avec la même opération de permutation E, même plaintext et même IV, on donne
aussi r =3.

1)
Pour 1 ≤ j ≤ u, alice fait le suivant
- Oj=E(Ij) ;
- Extraire tj qui est les r premiers bits de Oj ;
- cj=mj ⊕ tj
- Ij+1 = (2r Ij + cj ) mod 2n. donc Ij+1 est généré en supprimant les premiers r bits de Ij et en
ajoutant cj.
- Le ciphertext sera donc c= c1c2c3…cu

Le décryptage est similaire :

Pour 1 ≤ j ≤ u, bob fait le suivant


- Oj=E(Ij) ;
- Extraire tj qui est les r premiers bits de Oj ;
- m j = cj ⊕ t j
- Ij+1 = (2r Ij + cj ) mod 2n. donc Ij+1 est généré en supprimant les premiers r bits de Ij et en
ajoutant cj.
- Le plaintext sera donc m = m1m2m3…mu

2) m1= 101 ; m2=100 ; m3= 010 ; m4= 100 ; m5=101

5
TD-Sécurité Réseaux (AU 2017-2018)
9) il ya propagation d’erreur aussi dans CFB puisque la partie erroné du ciphertext se trouve
dans Ij. Il faut noter aussi que CFB ne peut être fonctionnel dans les cryptosystèmes à clé
publique comme RSA puisque le récepteur utilise la clé publique aussi dans l’opération E
comme l’émetteur.

10) Alice et Bob peuvent calculer tj+1 dès qu’ils connaissent le bloc cj. Pour cela le bloc t1
peut être calculé par Alice et Bob simultanément. Alice genere le ciphertext c1 = m1 ⊕ t1 et
l’envoie à Bob. Le calcul de c1 sera rapide puisque il est fait par un simple
XOR. Alors Alice et Bob peuvent simultanément calculer le bloc t2, etc. CFB est
donc approprié pour les longs messages mais il est plus rapide que CBC.

Exercice-4 : OFB
OFB est très similaire à CFB

Refaire l’exercice avec les mêmes Plaintext, clé, IV, r que CFB. Analyser la propagation d’erreur, la
sécurité de OFB et sa rapidité.
1)
Pour 1 ≤ j ≤ u, Alice fait le suivant
- Oj=E(Ij) ;
- Extraire tj qui est les r premiers bits de Oj ;
- cj=mj ⊕ tj
- Ij+1 = Oj.
- Le ciphertext sera donc c= c1c2c3…cu

Le décryptage est le même, seulement la troisième étape est remplacé par mj=cj ⊕ tj
2) Si un bit du ciphertext est reçu erroné alors le plaintext sera erroné exactement dans la même
position. Donc il n ya pas de propagation d’erreur.
3) le bloc tj dépend seulement du vecteur d’initialisation I1 et de la clé k. il peut donc être
calculé par Alice et bob simultanément. Ceci est plus rapide que CFB. Mais le problème est
que le chiffrement d’un bloc de plaintext dans OFB ne depend pas des blocs précédents mais
seulement par sa position (ordre). Pour cela la manipulation du ciphertext par un intrus est
beaucoup plus facile en OFB qu’en CFB.

6
TD-Sécurité Réseaux (AU 2017-2018)
m1= 101 ; m2=100 ; m3= 010 ; m4= 100 ; m5=101

- Si la même clé est réutilisée pour le chiffrement de deux plaintexts, alors l’IV doit
changer. Sinon, la même séquence tj est régénérée et à partir de deux ciphertexts cj=mj ⊕ t
j et c’j=m’j ⊕ tj , l’intrus peut constater que cj ⊕ c’j =mj ⊕ m’j. Et donc il peut
déterminer m’j s’il connaît mj.

Exercice-5 : une ronde DES


Donner le résultat après une seule ronde de cryptage de DES sur le plaintext p :
P=0123456789ABCDEF
Avec la clé K :
K= 133457799BBCDFF1

Le codage binaire de P=0123456789ABCDEF

Apres IP on obtient

Donc

L’ecriture binaire de la clé K= 133457799BBCDFF1

7
TD-Sécurité Réseaux (AU 2017-2018)
On calcule la première clé intermediaire :

Et donc

En utilisant cette clé on a

Et finalement

Exercice-6 : RSA
Soit l’ensemble des symboles {0, a, b, c} avec l’identification :

Soit p = 11 ; q = 23
1- Générer les clés publiques et privée de RSA. Choisir comme clé publique e la plus petit possible.
1)
n = p*q= 253
Phi(n) = (p – 1)(q – 1 ) = 10 * 22 = 220
e=3 (e =2 a rejeter puique gcd(2,220) =2 ; e=1 n’est clairement pas un bon choix )
cherher d tel que d =e-1 mod phi(n) = 3-1 mod 220
pour cela on applique l’alg d’euclide etendu :
220 = 3 * 73 + 1
1 = 220 – 3 *73
-73 = 3-1 mod 220 = 147 mod 220
Donc d =147

2- Donner la taille maximale d’un bloc du plaintext

8
TD-Sécurité Réseaux (AU 2017-2018)
2) on a n=253, la taille de bloc du plaintext k = E[log4 253] =3

3- Donner la taille maximale d’un bloc de ciphertext


3) la taille maximale d’un bloc du ciphertext sera donc k +1 = 4

4- Chiffrer le message «abb »

4) le message abb correspond à 122 d’apres le tableau. 122 correspond au nombre :


1* 42 + 2 * 41 + 2*40 = 26
Donc P =26. le chiffrement de P est donné par C = Pe mod n = 263 mod 253 = 119
Le nombre 119 correspond à :
119 = 1 * 43 + 3 * 42 + 1* 41 + 3*40
Donc le nombre decimal 119 correspond au nombre dans la base 4 : 1313 qui correspond au
message «acac ».

5- Effectuer le déchiffrement pour vérification.

5) le déchiffrement se fait comme suit :


le ciphertext acac correspond à 1313 dans la base 4 qui correspond au nombre :
1 * 43 + 3 * 42 + 1* 41 + 3*40 = 119
M = Cd mod n = 119147 mod 253 = ?
Exponentiation rapide, on a 147 = 128 + 16 + 2 +1 = (10010011)2

Donc le plaintext en décimal c’est 26 qui s’écrit en base 4 sous la forme :


26 = 1* 42 + 2* 41 + 2 *40
Donc 26 = (122)4 qui correspond d’après le tableau au plaintext « abb »

Exercice-7 : Une chaine TV payante BeIN sécurise son broadcast vers ses abonnées en utilisant
des algorithmes de chiffrements symétriques et asymétriques. L’alg symétrique admet une clé secrète
Ks. L’alg asymétrique admet deux clés : privée Kpr et publique Kpu.
1- Proposer une méthode appliquée par BeIN pour que les abonnées puissent vérifier que le
brodcast est bien évidemment de BeIN.
1) BeIN peut chiffrer son brodcast par sa clé privée moyennant son alg asymétrique pour
authentifier son trafic : E(Broadcast, Kpr)
2- On suppose que BeIN donne aux abonnées une clé pour authentifier son broadcast ? Quelle clé
parmis les trois clés définie ci-dessus est concernée ?
2) Kpu : la clé publique de BeIN est distribué aux abonnées pour que ces derniers
puissent être sur de l’identité de BeIN. D(E(Broadcast, Kpr), Kpu)=Brodcast

9
TD-Sécurité Réseaux (AU 2017-2018)
3- Proposer une méthode appliquée par BeIN pour chiffrer son broadcast ? Quelle clé est utilisée
? Comment les abonnées puissent déchiffrer le brodcast ?
3) BeIN peut chiffrer son broadcast par sa clé secrète moyennant son alg symétrique :
E(broadcast, Ks). Les abonnées déchiffrent le broadcast par la meme clé :
D(E(Broadcast, Ks), Ks)=Brodcast
4- Chaque 6 mois, BeIN change sa clé secrète et la distribue vers ses abonnées par le broadcast. Elle
propose d’envoyer la nouvelle clé Ks vers ses abonnées ayant payé par le msg suivant : E(Ks, Kpr)
qui se traduit par le chiffrement de Ks par Kpr. Dites pourquoi ce protocole est incorrect ? Proposer
une correction.
4) Ce protocole est incorrecte par ce que tout le monde connait la clé publique
de BeIN qui est Kpu et donc peut déchiffrer le msg transmit : D(E(Ks, Kpr),
Kpu) = Ks et donc meme les non-abonnées peut recevoir correctement le
broadcast de BeIN. Comme alternative, elle peut chiffrer la nouvelle clé Ks
par l’ancienne clé avant que la nouvelle soit opérationnelle.

5- Soit N la longueur de la clé secrète Ks. Quel doit être la longueur de la clé minimale pour
qu’elle soit sécurisée pendant 2 ans (2 ans= 226) sachant qu’un adversaire a une machine qui
peut faire 220 essais par seconde pour deviner la clé.
5) Un adversaire essaye en moyenne 2N/2 = 2N-1 clés avant de trouver la bonne clé.
Et si l’adversaire admet une puissance de calcul de 220 par seconde, donc en 2
ans ( =226 seconde ), il peut essayer 220 * 226 = 246 clés
pour que la clé soit sécurisé pendant 2 ans, il faut que la taille de brute force
attack soit supérieur à ce pouvoir d’essai : 2N-1 > 246 donc N > 47 donc la taille
minimale de N est Nmin = 48

Exercice-8 : Recherche exhaustive de clefs symétriques


Sachant que la machine spécialisée ((DES-Cracker )) met en moyenne 4,5 jours pour retrouver par une
recherche exhaustive une clef DES de 56 bits, combien de temps mettrait-elle pour trouver une clef de
40 bits? Une clef Triple-DES de 112 bits? Une clef AES de 256 bits? On admettra ici que cette
machine a besoin du même temps pour chiffrer un bloc de données avec DES, Triple-DES et AES.
Sachant que (( DES-Cracker )) met en moyenne 4,5 jours (soit 388 800 secondes) pour
retrouver une clef DES de 56 bits, le cassage d’une clef de 40 bits nécessite en moyenne

alors qu’une clef de 112 bits nécessiterait

et une clef de 256 bits

10
TD-Sécurité Réseaux (AU 2017-2018)
Ces deux derniers nombres représentent des durées respectives de 68290 fois et 1,5 × 1048 fois
l’âge de l’univers (estimé à 13 milliards d’années).
Il est intéressant de remarquer qu’il faut en moyenne 4,5 jours de calcul pour retrouver une
clef DES de 56 bits avec DES-Cracker, ce qui signifie qu’il faut dans le pire des cas 9 jours de
calcul à cette machine pour retrouver une clef DES de 56 bits, c’est-à-dire pour tester les 256
clefs possibles.

Exercice-9 : Diffie hellman

Soit p =17, g= 3 des clés globales partagés entre Alice et bob.


Alice choisit a= 7, et Bob choisit b= 4.
Compléter le protocole de Diffie-Hellman pour partager une clé secrète.

- Alice calcule A = ga mod p = 37 mod 17 = 11 et envoie A à Bob


- Bob calcule B = gb mod p = 34 mod 17 = 13 et envoie B à Alice
- Alice calcule la clé secrète par K = Ba mod p = 137 mod 17 = 4
- Bob calcule la clé secrète K par K = Ab mod p = 114 mod 17 = 4

Exercice-10 : Hash
La fonction H qui transforme b1b2…bk à b1 ⊕ b2 ⊕ … ⊕ bk est une fonction de hachage.
1- Donner H(01101)
1) H(01101) = 1

2- Quel est le résultat du hach pour un message comportant un nb de 1 paire ? Impaire ?


2) H(msg de 1 pair) = 0 et H(msg 1 impaire) = 1

3- Donner alors une collision pour cette fonction de hachage.


3) 111 et 100

4- Quel sont les propriétés vérifiés par cette fonction de hachage ?


4) H est une fonction à sens unique. Les autres propriétés ne sont pas vérifiées (
strong and weak collision)

Exercice-11 : Fonctions de hachage et paradoxe des anniversaires

La fonction de hachage SHA-1 génère des empreintes numériques de 160 bits. On suppose que l’on
décide de créer un certificat numérique pour chaque habitant de la Terre (6 × 109 habitants).
1- Calculer la probabilité qu’au moins un certificat possède la même empreinte que le
certificat de foulen fouleni

0x11c42333 330debe6 63d722a5 f34388c8 b88520bb

En s’aidant du fait que 1 − x = e− x pour x proche de 0.


2- Calculer la probabilité qu’au moins deux habitants de la planète possèdent une empreinte
identique.
2^160=1.4 * 10^48

11
TD-Sécurité Réseaux (AU 2017-2018)
1) Cet exercice est une illustration du paradoxe des anniversaires : quelle est la
probabilité pour que, dans un groupe, au moins deux personnes aient la même date
d’anniversaire? La probabilité qu’au moins deux personnes dans un groupe de 23
personnes aient la même date d’anniversaire est supérieure à 0,5, ce qui est bien
supérieur à ce que l’on pourrait penser intuitivement, d’où le terme de paradoxe.
1. Soit p la probabilité qu’au moins une personne possède un certificat ayant la
même empreinte que Foulen fouleni et la probabilité complémentaire, c’est-à-dire la
probabilité que personne ne possède un certificat ayant la même empreinte que celle de foulen.
Soit H le nombre d’empreintes possibles (2160) et N le nombre d’habitants sur Terre. La
probabilité qu’une personne donnée ait la même empreinte que foulen est 1/H ; la probabilité
qu’elle en ait un différent est alors 1 − 1/H. Il y a N − 1 autres personnes.
On en déduit donc p :

On obtient une bonne approximation en utilisant deux fois le fait que 1 pour x − x = e proche de
−x

0:

2) Soit maintenant p’ la probabilité qu’au moins deux personnes sur Terre possèdent des
certificats ayant la même empreinte. Soit ' la probabilité complémentaire c’est-à-dire la
probabilité que tous les habitants de la Terre possèdent des certificats distincts. Pour calculer
' on imagine une table contenant H cases.
Chacune des N personnes vient faire une croix dans la case correspondante à son empreinte.
La première croix tombe forcément sur une case libre. Pour la deuxième il y a (H – 1 )/H
chances qu’elle tombe sur une case libre. Pour la troisième (H−2) / H et ainsi de suite. On a
alors :

Donc

12
TD-Sécurité Réseaux (AU 2017-2018)

Vous aimerez peut-être aussi