Correction TD de cryptographie no3 1 Modes opératoires ¡ ¡

Transcription

Correction TD de cryptographie no3 1 Modes opératoires ¡ ¡
Initiation à la cryptographie
Correction TD de cryptographie no 3
—ESIAL 2A TRS—
1
Modes opératoires
x Exercice 1. Malléabilité des chiffrements par flot
1. Rappeler le fonctionnement du chiffrement par flot.
2. Soit C le chiffré d’un message M , comment pouvez vous produire le chiffré C 0 du même
message que vous aurez altéré.
3. Imaginer une utilisation pratique de cette attaque.
!
Correction :
1. D’une clé k et d’un vecteur d’initialisation IV , on déduit une chaı̂ne de bits pseudo-aléatoire S(k, IV ).
Ceci permet de définir le chiffré :
C = Ek,IV (M ) = M ⊕ S(k, IV ).
2. Si on pose C 0 = C ⊕ M 0 , on a alors :
C 0 = (M ⊕ S(k, IV )) ⊕ M 0 = (M ⊕ M 0 ) ⊕ S(k, IV ) = Ek,IV (M ⊕ M 0 ).
3. Si on connaı̂t le format des messages échangé, il est alors facile d’en transformer le sens : transformer TRANSFER $0000100.00 TO ACCOUNT #199 en TRANSFER $0100000.00 TO ACCOUNT #227 ne
demande pas beaucoup d’information supplémentaire 1 .
!
x Exercice 2. Electronic Code Book
Le mode de chiffrement ECB (Electronic Code Book ou Dictionnaire de code) est le mode de chiffrement le plus simple que l’on puisse imaginer : chaque bloc de données est chiffré indépendamment
par la fonction de chiffrement.
1. Ce mode de chiffrement n’est pas sûr, expliquer pourquoi.
2. Jack, qui gagne 105000€ par an 2 , a retrouvé l’entrée chiffrée qui lui correspond dans la base
de donnée des salaires de son entreprise :
Q92DFPVXC9IO
Sachant que la fonction de chiffrement utilisé a des blocs de deux caractères et que le service
informatique de son entreprise ne comprend aucun expert en cryptographie (entendre par là,
utilise le mode ECB !), retrouver le salaire de Jane la patronne de Jack parmi le reste de la
base de donnée :
TOAV6RFPY5VXC9, YPFGFPDFDFIO, Q9AXFPC9IOIO, ACED4TFPVXIOIO, UTJSDGFPRTAVIO.
3. Exemple 2. Imaginer à quel point ce mode chiffrement est déplorable pour les photographies.
1. Exemple tiré de wikipedia
2. Exemple de http://fr.wikipedia.org/wiki/Mode_opratoire_(cryptographie).
1
!
Correction :
1. Deux blocs identiques auront le même chiffré, ainsi de l’information peut fuir.
2. On peut supposer que l’entrée de Jack donne la correspondance suivante :
Ja|ck|??|10|50|00
Q9|2D|FP|VX|C9|IO
FP doit correspondre au séparateur de champ. Jane a aussi un prénom de 4 lettres qui commence par
Ja donc son entrée chiffrée commence par Q9??FP, c’est Q9AXFPC9IOIO. Son salaire est ainsi C9IOIO,
soit 500000€ par an.
3. Cela correspond à remplacer les couleurs si la taille du bloc correspond à un pixel, ou des blocs d’image
par d’autre, on reconnaitra la forme de l’image : par ex les pixels noir deviendront tous rouges.
!
x Exercice 3. Cipher Block Chaining
Le mode de chiffrement CBC (Cipher Block Chaining ou Enchaı̂nement des blocs) suit le shéma
suivant :
m0
m1
m2
m3
m4
EK
EK
EK
EK
EK
c0
c1
c2
c3
c4
IV
···
1. Dessiner le schéma de déchiffrement correspondant à ce mode de chiffrement.
2. À quoi sert le vecteur d’initialisation (IV) ? Doit-il rester secret ?
3. Que se passe-t-il lors du déchiffrement si l’un des blocs chiffrés a été altéré ?
!
Correction :
1. Le voilà :
m0
m1
m2
m3
m4
EK
EK
EK
EK
EK
c0
c1
c2
c3
c4
DK
DK
DK
DK
DK
m0
m1
m2
m3
m4
IV
···
···
IV
2. Si il n’y avait pas d’IV deux blocs identiques aux mêmes positions de deux fichiers alors leur chiffrés
seraient identique et on le saurait. Si l’on pense aux exemples précédents, on pourrait dire par exemple :
4 personnes ont le même salaire ou le centre des deux images est identiques.
3. Seulement deux blocs sont altérés.
!
2
x Exercice 4. CounTeR
Le mode de chiffrement CTR (mode compteur ) consiste à chiffrer un compteur qui est incrémenté
à chaque bloc, puis à en calculer le ou exclusif avec le message. Le compteur est initialisé à une
valeur choisie au hasard appelée la nonce.
1. Dessiner les schéma de chiffrement et déchiffrement de ce mode opératoire.
2. Expliquer l’intérêt de la nonce.
3. Quel intérêt voyez-vous à ce mode de chiffrement quant à son implémentation ?
!
Correction :
1. Pas besoin de fonction de déchiffrement ! C’est avantageux dans certain cas : pour AES le déchiffrement
est plus cher que le chiffrement.
2. C’est un IV, sinon toujours le même stream.
3. Facilement parallélisable.
!
x Exercice 5. Attaque par insertion
On considère un chiffrement par blocs utilisant un mode opératoire OFB ou CTR. Un attaquant
parvient à intercepter un chiffré C = (c0 , c1 , . . .), correspondant à un message M = (m0 , m1 , . . .).
L’attaquant connaı̂t uniquement C, mais pas M , ni bien sûr la clé K ou encore la valeur IV (pour
OFB) ou la nonce (pour CTR).
On suppose que l’attaquant parvient à forcer la personne qui chiffre à re-chiffrer un message M 0
quasiment identique à M , mais avec uniquement un bloc de zéros inséré parmi les autres blocs. On
suppose en outre que l’attaquant parvient à forcer ce deuxième chiffrement à être réalisé avec la
même IV (pour OFB) ou nonce (pour CTR). L’attaquant obtient donc un nouveau chiffré C 0 .
1. Comment l’attaquant peut-il déterminer le bloc à partir duquel M et M 0 diffèrent ?
2. Supposons que ce premier bloc différent ait pour indice i. Que vaut alors c0i . Comment l’attaquant peut-il en déduire mi ?
3. Montrer comment l’attaquant peut alors déduire toute la suite du message.
4. Que doit-on en conclure comme précaution sur l’utilisation de OFB ou CTR ?
!
Correction :
1. Si l’insertion est au bloc i (les blocs étant numérotés à partir de 0), alors les blocs de 0 à i − 1 des
chiffrés sont identiques.
2. Le bloc c0i vaut alors 0 ⊕ Pi , où Pi est soit EK (nonce + i) pour le mode compteur, ou bien pour OFB
Pi = EK (Pi−1 ) et P0 = EK (IV). Du coup, comme ci = mi ⊕ Pi , on récupère mi = ci ⊕ c0i .
3. Il ne faut jamais réutiliser la même IV.
!
3
x Exercice 6. Modes opératoires et authentification
1. Un message chiffré avec un chiffrement par blocs et un mode opératoire quelconque garantit-il
l’authentification du message reçu ?
2. Par exemple, soit un chiffré AES-CBC (IV, c0 , c1 , . . .) intercepté par un attaquant. Que peut-il
retransmettre au desinataire, pour quel message reçu in fine ?
3. Que fait-il ajouter au système pour obtenir une garantie d’authenticité du message reçu.
!
Correction :
1. Ben non.
2. N’importe quel fragment.
3. On ajoute un MAC.
!
4