AES — Chiffrement symétrique standard
★★★★★
Modes d'opération et faiblesses
ECB : DANGEREUX - blocs identiques = ciphertext identiques
Attaque : réarranger les blocs
CBC : Vulnérable au Padding Oracle (si erreur padding exposée)
IV réutilisé = fuite d information
CTR : Nonce réutilisé = CATASTROPHIQUE
c1 XOR c2 = p1 XOR p2 (la clé disparaît)
GCM : RECOMMANDÉ (CTR + MAC intégré)
Nonce réutilisé = récupération de la clé auth Padding Oracle Attack
# Si le serveur dit si le padding PKCS#7 est valide
# -> on peut déchiffrer SANS la clé, octet par octet
padbuster "http://target/decrypt?data=CIPHER" "CIPHER_B64" 16 -encoding 0
# Python
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
cipher = AES.new(key, AES.MODE_CBC, iv)
pt = unpad(cipher.decrypt(ct), 16) ECB Cut-and-Paste
# ECB : chaque bloc de 16 octets est indépendant
# Si on contrôle le plaintext, on peut réarranger les blocs
# pour forger un token/cookie arbitraire
# Exemple : token = AES_ECB(email=USER&role=user)
# Forger un bloc contenant "admin" puis le substituer
# au bloc "user" -> escalade de privilège !