No description
Find a file
2026-05-13 08:59:43 +00:00
README Ajouter README 2026-05-13 08:59:43 +00:00

# TD2 — AES en pratique
## Exercices sur papier

### Exercice 1 — Conversions

- Réponses sous-partie A (decimal → hex et hex → decimal) :
  - Décimal → Hex : 65 donne 41, 200 donne C8, 255 correspond à FF, 16 se note 10
  - Hex → Décimal : 4A vaut 74, FF vaut 255, 1F vaut 31, B0 vaut 176

- Réponses sous-partie B (encodage ASCII de AES, Crypto, Hello!) :
  - AES    → 41 45 53
  - Crypto → 43 72 79 70 74 6F
  - Hello! → 48 65 6C 6C 6F 21

- Réponses sous-partie C (XOR octets) :
  - FF ⊕ 0F = F0
  - A5 ⊕ A5 = 00
  - 41 ⊕ 20 = 61 = 'a' (l'opération XOR avec 20, qui est l'espace, agit comme un inverseur de casse : 'A' devient 'a')
  - 42 ⊕ 0F = 4D

### Exercice 2 — Round AES sur "BONJOUR LES AMIS"

- Matrice d'état initiale (column-major) :
  ```text
  42 4F 52 45
  4F 55 20 53
  4E 52 41 20
  4A 20 4D 49
  ```

- Après AddRoundKey (XOR 0F partout) :
  ```text
  4D 40 5D 4A
  40 5A 2F 5C
  41 5D 4E 2F
  45 2F 42 46
  ```

- Après SubBytes (S-Box AES) :
  ```text
  E3 09 4C 52
  09 BE 15 58
  83 4C 2F 15
  6E 15 2C 5A
  ```

- Après ShiftRows (décalage gauche par ligne) :
  ```text
  E3 09 4C 52   (Ligne 0 : inchangée)
  BE 15 58 09   (Ligne 1 : décalée de 1)
  2F 15 83 4C   (Ligne 2 : décalée de 2)
  5A 6E 15 2C   (Ligne 3 : décalée de 3)
  
```

- Réflexion sur les 10 rounds :
  L'objectif est d'atteindre un effet d'avalanche complet. Dès le premier tour, modifier un unique bit change l'état d'environ 4 ou 5 octets. À la fin du deuxième tour, toute la matrice est impactée. Les 10 tours assurent un niveau de confusion et de diffusion optimal, rendant l'algorithme résistant aux techniques de cryptanalyse modernes.

### Exercice 3 — Padding PKCS7
- Messages originaux Q2 :
  a "Hello" (48 65 6C 6C 6F) — la fin de la chaîne est composée de 11 octets valant 0B → on les tronque
  b "Test!!!!!!!!" (12 octets) — la chaîne se termine par 4 octets valant 04 → on retire ces 4 octets

- Pourquoi padder un message multiple de 16 ?
  C'est pour éviter toute ambiguïté lors du déchiffrement. Si on ne rajoutait rien aux messages faisant pile un multiple de 16, la machine ne pourrait pas savoir si la fin du message est de la donnée brute ou du bourrage. En ajoutant systématiquement un nouveau bloc complet (ex: 16 octets valant 10 en hexa), la règle est universelle : le dernier octet indique toujours le nombre d'octets à jeter.

### Exercice 4 — ECB et salaire de Jane

- Salaire de Jane = candidat n°4
- Justification (propriétés ECB) :
  Le mode ECB chiffre chaque segment de 16 octets de façon totalement isolée. Deux segments clairs identiques génèrent donc le même rendu chiffré. Dans le candidat 4, on retrouve les mêmes blocs chiffrés que chez Jack (FP, VX, IO) exactement aux mêmes emplacements (symbole monétaire, position des centaines). De plus, la chaîne chiffrée est plus longue, prouvant que le salaire contient plus de chiffres. L'ECB permet ainsi de deviner la structure sans posséder la clé.

- Pourquoi ECB est déplorable pour les images :
  Les images informatiques comportent de larges étendues de pixels identiques. Avec l'ECB, ces répétitions claires donnent des répétitions chiffrées, ce qui fait que les formes et les contours de l'image originale restent visibles. Le masquage est donc inefficace.

### Exercice 5 — CBC à la main (K=5A, IV=3C)

- Chiffrement (C1 C2 C3 C4) :
  - C1 = (A1 ⊕ 3C) ⊕ 5A = 9D ⊕ 5A = C7
  - C2 = (B2 ⊕ C7) ⊕ 5A = 75 ⊕ 5A = 2F
  - C3 = (C3 ⊕ 2F) ⊕ 5A = EC ⊕ 5A = B6
  - C4 = (D4 ⊕ B6) ⊕ 5A = 62 ⊕ 5A = 38
  → Résultat : C7 2F B6 38

- Déchiffrement de C7 2F B6 38 :
  - P1 = (C7 ⊕ 5A) ⊕ 3C = 9D ⊕ 3C = A1 ✓
  - P2 = (2F ⊕ 5A) ⊕ C7 = 75 ⊕ C7 = B2 ✓
  - P3 = (B6 ⊕ 5A) ⊕ 2F = EC ⊕ 2F = C3 ✓
  - P4 = (38 ⊕ 5A) ⊕ B6 = 62 ⊕ B6 = D4 ✓

- Réflexion IV :
  a Si l'on change l'IV pour un même message, le premier bloc chiffré change. Grâce au principe de chaînage du CBC, cette modification va se répercuter en cascade sur absolument tous les blocs suivants.
  b Si on utilise la même clé et le même IV pour deux messages distincts qui commencent pareil, leur premier bloc chiffré sera identique. Cela fait fuiter des infos sur le début du texte.
  c Le mode CBC annule le défaut de l'ECB : en appliquant un XOR avec le bloc précédent avant de chiffrer, on casse la redondance. Deux blocs de texte source identiques n'auront pas le même rendu chiffré selon leur emplacement.

### Exercice 6 — Attaque XOR

- Clé Q1 : K = M ⊕ C = 48⊕68 = 20, ce qui se vérifie sur tous les octets → K = 0x20 (caractère espace)

- Déchiffrement Q2 (C'=77 6F 72 6C 64, K=20) :
  77⊕20=57='W', 6F⊕20=4F='O', 72⊕20=52='R', 6C⊕20=4C='L', 64⊕20=44='D'
  → Message : "WORLD"

- Clé Q3 et message déchiffré :
  Clé retrouvée : 41 42 43 = "ABC" (motif de longueur 3 repéré sur les 7 premiers octets)
  Message complet : "Bonjour Alice"

- Discussion XOR vs OTP :
  Un simple XOR avec une clé courte est dangereux car la clé tourne en boucle, créant des structures vulnérables. Si on connaît un bout du message clair, on retrouve la clé par un XOR inverse. Le masque jetable (OTP) est théoriquement indéchiffrable car la clé est aléatoire, de la taille du message et à usage unique. En revanche, c'est presque impossible à utiliser en pratique car distribuer et gérer une clé aussi énorme de façon sécurisée est un défi logistique très lourd.

## Partie 1 — ECB et blocs identiques
- Les deux blocs chiffrés sont-ils identiques ? **Oui**
- Qu'est-ce que cela implique pour la sécurité ?
  Le mode ECB traite les blocs en vase clos. Une donnée en entrée donnera toujours la même sortie, ce qui permet à un attaquant de repérer des motifs redondants dans les données chiffrées sans même avoir la clé.

## Partie 2 — Effet pingouin
- Décrire ce qu'on voit sur tux_ecb.bmp :
  L'image chiffrée ressemble énormément à l'originale et on devine bien la silhouette de Tux. Cela vient du fait que les gros blocs de couleurs unis sont chiffrés de la même manière, laissant transparaître la structure visuelle.

- Décrire ce qu'on voit sur tux_cbc.bmp :
  On ne voit plus qu'une bouillie de pixels (du bruit aléatoire). Impossible de reconnaître la moindre forme.

- Expliquer pourquoi ECB révèle des informations :
  En ECB, l'absence de chaînage transforme des pixels identiques en blocs chiffrés identiques. Le traitement indépendant de chaque bloc préserve l'ossature visuelle de départ.

- Expliquer pourquoi CBC ne le fait pas :
  Le CBC corrige cela grâce au chaînage : le XOR préalable avec le bloc précédent brise toute régularité. Même si plusieurs blocs clairs sont identiques, leur historique de chaînage diffère, rendant l'image finale visuellement aléatoire.

## Partie 3 — CBC et blocs identiques
- Les deux blocs chiffrés sont-ils identiques en CBC ? **Non**
- Comparaison avec ECB :
  Contrairement à l'ECB qui aurait généré deux blocs chiffrés identiques pour la chaîne de "A", le CBC utilise l'IV pour perturber le premier bloc, puis le résultat de ce premier bloc pour perturber le second. Au final, on obtient deux blocs chiffrés radicalement différents pour une donnée de départ strictement identique.