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.