Les modes opératoires
CBC et CTR : enchaîner ou compter
Le défaut d'ECB vient de ce que chaque bloc est chiffré indépendamment. Les bons modes brisent cette indépendance.
CBC : enchaîner les blocs
En mode CBC (Cipher Block Chaining), chaque bloc de clair est combiné par XOR avec le chiffré précédent avant d'être chiffré :
IV C1 C2
| | |
P1->(+) P2->(+) P3->(+)
| | |
[E_K] [E_K] [E_K]
| | |
C1 C2 C3
Le premier bloc n'a pas de prédécesseur : on lui fournit un vecteur d'initialisation (IV), tiré au hasard pour chaque message.
Conséquence : deux blocs identiques ne donnent plus le même chiffré, puisqu'ils sont mélangés à des valeurs différentes. Et chiffrer deux fois le même message avec le même IV redonnerait le même résultat — d'où la règle : un IV neuf, imprévisible, à chaque message.
CTR : transformer le bloc en flux
Le mode CTR (Counter) prend un chemin différent. Il ne chiffre pas le message : il chiffre un compteur, et utilise le résultat comme un masque à combiner au clair.
N||1 N||2 N||3
| | |
[E_K] [E_K] [E_K]
| | |
P1->(+) P2->(+) P3->(+)
| | |
C1 C2 C3
N est un nonce (un nombre utilisé une seule fois) concaténé au numéro du bloc.
Deux avantages : les blocs se calculent en parallèle et dans n'importe quel ordre, et le message n'a plus besoin d'être complété à un multiple de 16 octets.
Le piège de CTR
Réutiliser le même couple (clé, nonce) sur deux messages est catastrophique. Les deux sont masqués par la même suite S, et alors :
C1 (+) C2 = (P1 (+) S) (+) (P2 (+) S) = P1 (+) P2
Le masque disparaît, et il ne reste que le XOR des deux clairs — analysable. C'est exactement la faille du masque jetable réemployé.
Et l'authenticité ?
CBC et CTR assurent la confidentialité, pas l'intégrité : un adversaire peut modifier le chiffré sans être détecté. En pratique on emploie donc un mode authentifié comme AES-GCM, qui ajoute une étiquette d'authentification vérifiée au déchiffrement.

