Examen sécurité informatique cryptographie symétrique et aes

Examen sécurité informatique cryptographie symétrique et aes

Télécharger PDF

Sécurité informatique – Master SII – Série N° 3 (La cryptographie symétrique)

Exercice 1

1. Rappeler les définitions des modes d'opération : 1) **CBC (Cipher Block Chaining)** : Mode de chiffrement par blocs où chaque bloc de texte clair est XORé avec le bloc chiffré précédent avant d'être chiffré avec la clé. Le premier bloc utilise un vecteur d'initialisation (IV). 2) **CFB (Cipher Feedback)** : Mode de chiffrement par flux où le chiffrement est basé sur un feedback du bloc chiffré précédent. Chaque bloc de texte clair est XORé avec le flux généré. 3) **OFB (Output Feedback)** : Mode de chiffrement par flux où le chiffrement est indépendant du texte clair. Le flux généré est XORé avec le texte clair pour obtenir le texte chiffré. 2. Quel mode d'opération correspond au diagramme schématique suivant ? Le diagramme décrit le mode **OFB (Output Feedback)**. Le premier bloc **C0** est le vecteur d'initialisation (IV). 3. Soit **M = C = K = {A, B, C, D, E, F, G, H} = {0, 1, 2, 3, 4, 5, 6, 7}**, et soit : **Ek(m) = 2 × ([(1 + 2m) mod 16] + 2k) mod 16] - 1** Remplissez la table pour **k = 4** :

m Ek(m)
0 2 × ([(1 + 0) mod 16] + 8) mod 16] - 1 = 2 × (1 + 8) mod 16 - 1 = 2 × 9 mod 16 - 1 = 18 mod 16 - 1 = 2 - 1 = **1**
1 2 × ([(1 + 2) mod 16] + 8) mod 16] - 1 = 2 × (3 + 8) mod 16 - 1 = 2 × 11 mod 16 - 1 = 22 mod 16 - 1 = 6 - 1 = **5**
2 2 × ([(1 + 4) mod 16] + 8) mod 16] - 1 = 2 × (5 + 8) mod 16 - 1 = 2 × 13 mod 16 - 1 = 26 mod 16 - 1 = 10 - 1 = **9**
3 2 × ([(1 + 6) mod 16] + 8) mod 16] - 1 = 2 × (7 + 8) mod 16 - 1 = 2 × 15 mod 16 - 1 = 30 mod 16 - 1 = 14 - 1 = **13**
4 2 × ([(1 + 8) mod 16] + 8) mod 16] - 1 = 2 × (9 + 8) mod 16 - 1 = 2 × 17 mod 16 - 1 = 34 mod 16 - 1 = 2 - 1 = **1**
5 2 × ([(1 + 10) mod 16] + 8) mod 16] - 1 = 2 × (11 + 8) mod 16 - 1 = 2 × 19 mod 16 - 1 = 38 mod 16 - 1 = 6 - 1 = **5**
6 2 × ([(1 + 12) mod 16] + 8) mod 16] - 1 = 2 × (13 + 8) mod 16 - 1 = 2 × 21 mod 16 - 1 = 42 mod 16 - 1 = 10 - 1 = **9**
7 2 × ([(1 + 14) mod 16] + 8) mod 16] - 1 = 2 × (15 + 8) mod 16 - 1 = 2 × 23 mod 16 - 1 = 46 mod 16 - 1 = 14 - 1 = **13**

Chiffrement de **CHEF** en mode **CBC** avec **k = 4** et vecteur initial **= 1** :

**CHEF** correspond aux valeurs : C = 2, H = 7, E = 4, F = 5

**Vecteur initial (IV) = 1**

Bloc clair (m) XOR avec IV/Précédent Ek(m) Bloc chiffré (c)
C (2) 2 ⊕ 1 = (2 + 1) mod 8 = **3** Ek(2) = 9 3 ⊕ 9 = (3 + 9) mod 8 = **4**
H (7) 7 ⊕ 4 = (7 + 4) mod 8 = **3** Ek(7) = 13 3 ⊕ 13 = (3 + 13) mod 8 = **6**
E (4) 4 ⊕ 6 = (4 + 6) mod 8 = **2** Ek(4) = 5 2 ⊕ 5 = (2 + 5) mod 8 = **7**
F (5) 5 ⊕ 7 = (5 + 7) mod 8 = **4** Ek(5) = 1 4 ⊕ 1 = (4 + 1) mod 8 = **5**

**Texte chiffré : 4 6 7 5**

Exercice 2

Recherche exhaustive (attaque par force brute) de clés symétriques :

Une machine spécialisée mettant **4,5 jours** pour retrouver une clé de **56 bits** : - **Clé de 40 bits** : **1 jour** (216 fois moins de combinaisons). - **Clé Triple-DES de 112 bits** : **3,6 × 1019 jours** (256 fois plus de combinaisons). - **Clé AES de 256 bits** : **1,1 × 1057 jours** (2200 fois plus de combinaisons).

Exercice 3

AES Simplifié :

1) **W0, W1, W2, W3, W4, W5** avec **K = 0100 1010 1111 0101** :

**W0** = **0100 1010** **W1** = **1111 0101**

**W2** = W0 ⊕ 10000000 ⊕ SubNib(RotNib(W1))** :

**RotNib(W1)** = **1111 1010** (rotation de 4 bits). **SubNib(RotNib(W1))** = **1000 0100** (appliquer la table de substitution). **W2** = **0100 1010** ⊕ **1000 0000** ⊕ **1000 0100** = **0100 1010** ⊕ **0000 0100** = **0100 1110**

**W3** = W2 ⊕ W1 = **0100 1110** ⊕ **1111 0101** = **1011 1011**

**W4** = W2 ⊕ 00110000 ⊕ SubNib(RotNib(W3))** :

**RotNib(W3)** = **1011 1110** (rotation de 4 bits). **SubNib(RotNib(W3))** = **0101 0101** (appliquer la table de substitution). **W4** = **0100 1110** ⊕ **0011 0000** ⊕ **0101 0101** = **0111 1110** ⊕ **0101 0101** = **0010 1011**

**W5** = W4 ⊕ W3 = **0010 1011** ⊕ **1011 1011** = **1001 0000**

2) Chiffrer **P = 1101 0111 0010 1000** :

**Phase initiale (AddRoundKey0)** : P ⊕ K = **1101 0111 0010 1000** ⊕ **0100 1010 1111 0101** = **1001 1101 1101 1101**

**Phase principale (SubNibble- ShiftRow- MixColumns- AddRoundKey1)** :

**SubNibble** : Appliquer la table de substitution à chaque nibble. **ShiftRow** : Permuter le 2ème et le 4ème nibble. **MixColumns** : Multiplier chaque colonne avec la matrice constante **Me** (utiliser la table de correspondance). **AddRoundKey1** : XOR avec **W2W3 = 0100 1110 1011 1011**.

**Phase finale (SubNibble- ShiftRow- AddRoundKey2)** :

**SubNibble** : Appliquer la table de substitution à chaque nibble. **ShiftRow** : Permuter le 2ème et le 4ème nibble. **AddRoundKey2** : XOR avec **W4W5 = 0010 1011 1001 0000**.

**Texte chiffré final** : À calculer en appliquant les étapes ci-dessus.

FAQ

Qu’est-ce que la cryptographie symétrique ?

La cryptographie symétrique utilise une seule clé pour chiffrer et déchiffrer les données, simplifiant le processus mais nécessitant une sécurisation rigoureuse de cette clé.

À quoi sert le vecteur d’initialisation (IV) en mode CBC ?

Le vecteur d’initialisation (IV) en mode CBC permet d’éviter que deux messages identiques ne produisent le même texte chiffré, assurant ainsi une sécurité accrue.

Quelle est la différence entre OFB et CFB ?

OFB génère un flux de chiffrement indépendant du texte clair, tandis que CFB utilise le texte chiffré précédent pour influencer le flux de chiffrement du bloc suivant.

Partagez vos remarques, questions ou propositions d'amélioration ici...

Enregistrer un commentaire (0)
Plus récente Plus ancienne

Publicité 1

Publicité 2