- Python 100%
| aes_cbc.py | ||
| aes_ecb.py | ||
| pinguin.py | ||
| README.md | ||
TD2 — AES en pratique
Exercices sur papier
Exercice 1 — Conversions
Reponses sous-partie A (decimal → hex et hex → decimal) : 65→41 / 200→C8 / 255→FF / 16→10 | 4A→74 / FF→255 / 1F→31 / B0→176 Reponses 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 Reponses sous-partie C (XOR octets) : FF⊕0F=F0 / A5⊕A5=00 / 41⊕20=61='a' (XOR espace inverse la casse) / 42⊕0F=4D
Exercice 2 — Round AES
Matrice d'etat initiale : 42 4F 4C 41 / 4F 55 45 4D / 4E 52 53 49 / 4A 20 20 53 Apres AddRoundKey : 4D 40 43 4E / 40 5A 4A 42 / 41 5D 5C 46 / 45 2F 2F 5C Apres SubBytes : E3 09 1A 2F / 09 BE D6 2C / 83 4C 4A 5A / 6E 15 15 4A Apres ShiftRows : E3 09 1A 2F / BE D6 2C 09 / 4A 5A 83 4C / 4A 6E 15 15 Reflexion sur les 10 rounds : 1 round → ~4 octets affectés / 2 rounds → 16 octets / 10 rounds → chiffré indistinguable du hasard
Exercice 3 — Padding PKCS7
Tableau des paddings : 13→3×03 / 5→11×0B / 1→15×0F / 16→16×10 / 31→1×01 Messages originaux Q2 a) et b) : a) "Hello" / b) "Test!!!!!!!!" Pourquoi padder un message multiple de 16 ? : Éviter l'ambiguïté entre données réelles et padding au déchiffrement.
Exercice 4 — ECB et salaire de Jane
Salaire de Jane = candidat n°1 Justification (proprietes ECB) : Les blocs FP, VX, C9 de Jack se retrouvent dans le candidat 1 → même clair = même chiffré en ECB. Pourquoi ECB est deplorable pour les images : Les zones uniformes gardent leurs patterns visibles après chiffrement.
Exercice 5 — CBC a la main
Chiffrement (C1 C2 C3 C4) : F7 1F 86 08 Dechiffrement : A1 B2 C3 D4 Reflexion IV : a) Non / b) C1 identiques, la répétition est détectable / c) Le XOR avec le bloc précédent casse les répétitions.
Exercice 6 — Attaque XOR
Cle Q1 : 0x20 Dechiffrement Q2 : "WORLD" Cle Q3 et message dechiffre : clé="ABC" / message="Bonjour Alice" Discussion XOR vs OTP : XOR clé courte → vulnérable (répétition). OTP → indéchiffrable en théorie mais impraticable (clé aussi longue que le message, usage unique).
Exercices Python
Partie 7 — ECB et blocs identiques
Les deux blocs chiffres sont-ils identiques ? Oui Qu'est-ce que cela implique pour la securite ? Un attaquant peut détecter des répétitions dans le clair sans connaître la clé, ECB n'est pas sûr.
Partie 8 — Effet pingouin
Decrire ce qu'on voit sur tux_ecb.bmp : La silhouette du pingouin reste reconnaissable. Decrire ce qu'on voit sur tux_cbc.bmp : Bruit visuel aléatoire, aucune structure visible. Expliquer pourquoi ECB revele des informations : Mêmes blocs pixels → mêmes blocs chiffrés. Expliquer pourquoi CBC ne le fait pas : Le XOR avec le bloc précédent rend chaque bloc chiffré unique.
Partie 9 — CBC et blocs identiques
Les deux blocs chiffres sont-ils identiques en CBC ? Non Comparaison avec ECB : En ECB oui, en CBC non car le contexte précédent diffère.
Difficultes rencontrees
Notation hexadécimale : deux caractères = un seul octet. S-Box : colonnes indexées de 0 à F en hex. impossible de bien faire le code python car je n'ai jamais fait de python or en maths.