Padding Oracle — Déchiffrer sans la clé

CBC Side-channel

Comment ça marche ?

Si un serveur révèle (via message d'erreur, timing, ou comportement différent) si le padding PKCS#7 d'un message déchiffré est valide, un attaquant peut déchiffrer n'importe quel message bloc par bloc, sans connaître la clé.

Exploitation

# PKCS#7 : si un bloc a 13 octets, on ajoute 03 03 03
# En testant les 256 valeurs pour le dernier octet
# On trouve quand padding = 01 -> on déduit le plaintext

# Outil automatique (web)
padbuster "http://target/decrypt?data=CIPHER" "CIPHER_B64" 16

# Script Python
# 1. Pour chaque bloc ciphertext
# 2. Modifier le bloc précédent octet par octet
# 3. Tester les 256 valeurs jusqu à "padding valid"
# 4. En déduire le plaintext de l octet

# Défense : utiliser GCM (authentifié) plutôt que CBC