Exercices td cryptographie modes cbc cfb ofb et analyse clés
Télécharger PDFSérie TD 3 – Exercices sur les Modes de Chiffrement et AES Simplifié
Exercice 1
1. Rappeler les définitions des modes d'opération suivants :
1) Mode CBC (Chiffrement par Blocs avec Chaînage) : Chiffrement de blocs de données où chaque bloc est combiné avec le bloc précédent avant d'être chiffré. Le premier bloc utilise un vecteur d'initialisation (IV).
2) Mode CFB (Flux de Chiffrement par Blocs) : Chiffrement de flux de données où chaque bloc de texte clair est XORé avec un bloc de texte chiffré correspondant, généré à partir d'un compteur ou d'un IV.
3) Mode OFB (Flux de Chiffrement par Blocs en Mode Ouvert) : Chiffrement de flux de données où le texte clair est XORé avec un flux de bits généré par le chiffrement du compteur, sans dépendre du texte chiffré précédent.
Exercice 2 : Recherche Exhaustive de Clés Symétriques
Sachant qu'une machine spécialisée "DES cracker" met en moyenne 4,5 jours pour retrouver une clé de 56 bits par une recherche exhaustive, combien de temps mettrait-elle pour trouver :
1) Une clé de 40 bits ?
2) Une clé Triple-DES de 112 bits ?
3) Une clé AES de 256 bits ?
On admet qu'il faut le même temps pour chiffrer un bloc de données avec DES, Triple-DES et AES.
Solution Exercice 2
1) Une clé de 40 bits nécessiterait environ 5,9 secondes en moyenne.
2) Une clé Double-DES de 112 bits nécessiterait une durée de l'ordre de 2,8 × 10²² secondes, soit environ 68290 fois l'âge de l'univers.
3) Une clé AES de 256 bits nécessiterait une durée de l'ordre de 6,3 × 10⁶⁵ secondes, soit environ 1,5 × 10⁴⁸ fois l'âge de l'univers.
Exercice 3 : AES Simplifié
1) Trouver les sous-clés W0 à W5 pour une clé K = 0100 1010 1111 0101, en utilisant les règles suivantes :
W0 = 0100 1010
W1 = 1111 0101
W2 = W0 XOR 10000000 XOR SubNib(RotNib(W1)) = 1101 1101
W3 = W2 XOR W1 = 0010 1000
W4 = W2 XOR 0011 0000 XOR SubNib(RotNib(W3)) = 1000 0111
W5 = W4 XOR W3 = 1010 1111
2) Chiffrer le message clair P = 1101 0111 0010 1000 en utilisant les phases suivantes :
Phase initiale : AddRoundKey0 (XOR avec la clé K)
Phase principale : SubNibble → ShiftRow → MixColumns → AddRoundKey1 (XOR avec W2W3)
Phase finale : SubNibble → ShiftRow → AddRoundKey2 (XOR avec W4W5)
Solution Exercice 3 – Chiffrement
Phase initiale (AddRoundKey0) :
P XOR K = 1001 1101 1101 1101
Phase principale :
SubNibble : 1001 1101 1101 1101 → 0010 1110 1110 1110
ShiftRow : Aucune permutation (exemple simplifié)
MixColumns : Application de la matrice constante Me1 (4 × 4 × 1)
Résultat :
MixColumns(0010 1110 1110 1110) =
1111 0110 0011 0011
AddRoundKey1 :
P'' = 1111 0110 0011 0011 XOR W2W3 (1101 1101 0010 1000) = 0010 1011 0001 1011
Phase finale :
SubNibble : 0010 1011 0001 1011 → 1010 0011 0100 0011
ShiftRow : Aucune permutation (exemple simplifié)
AddRoundKey2 :
C = 1010 0011 0100 0011 XOR W4W5 (1000 0111 1010 1111) = 0010 0100 1110 1100
FAQ
Qu'est-ce qu'un vecteur d'initialisation (IV) ?
Un vecteur d'initialisation est une valeur aléatoire utilisée en mode CBC pour chiffrer le premier bloc de texte clair. Il garantit que deux messages identiques chiffrés ne produisent pas le même texte chiffré.
À quoi sert la phase MixColumns dans AES ?
MixColumns diffuse les bits du message clair pour renforcer la sécurité du chiffrement. Elle multiplie chaque colonne de l'état avec une matrice constante.
Pourquoi le mode OFB est-il plus rapide que CBC ?
Le mode OFB ne dépend pas du texte chiffré précédent, ce qui permet de paralléliser le chiffrement et de traiter les blocs indépendamment, contrairement au mode CBC où chaque bloc dépend du précédent.