Les modes sûrs
Le mode CTR (compteur) et le chiffrement en flux
CBC est sûr, mais il impose de chiffrer les blocs dans l'ordre : chacun attend le précédent. Le mode CTR propose une approche radicalement différente, qui transforme un chiffrement par blocs en un chiffrement de flux.
L'idée : chiffrer un compteur
CTR signifie Counter (compteur). L'astuce est de ne jamais faire passer le message dans l'AES. À la place, on chiffre une suite de compteurs pour produire un flot de bits pseudo-aléatoire, que l'on combine ensuite au clair par un simple XOR.
Pour chaque bloc i :
nonce || i --[ AES, clé K ]--> flot_i
clair_i XOR flot_i = chiffré_i
Le nonce (nombre utilisé une seule fois) est fixe pour le message ; le compteur i s'incrémente à chaque bloc. On chiffre donc nonce||0, nonce||1, nonce||2, etc.
Le schéma complet
nonce||0 nonce||1 nonce||2
| | |
[AES K] [AES K] [AES K]
| | |
flot_0 flot_1 flot_2
| | |
clair_0 -XOR- clair_1 -XOR- clair_2 -XOR-
| | |
chiffré_0 chiffré_1 chiffré_2
Le déchiffrement est identique : on régénère le même flot (même clé, même nonce, mêmes compteurs) et on refait le XOR. Pas besoin de fonction de déchiffrement de l'AES, ni de bourrage : le message est traité octet par octet, comme un flux.
Les avantages
- Parallélisable : chaque
flot_ise calcule indépendamment, sur autant de cœurs que l'on veut. CBC, lui, est séquentiel. - Accès aléatoire : pour déchiffrer le bloc 500, on calcule directement
flot_500sans dérouler les précédents. Idéal pour le chiffrement de disques. - Pas de bourrage : le flux s'ajuste à la taille exacte du message.
Le danger absolu : réutiliser (clé, nonce)
Comme le masque jetable, CTR repose sur un flot qui ne doit jamais servir deux fois. Si l'on chiffre deux messages avec le même couple (clé, nonce), le même flot est réutilisé, et :
chiffré_A XOR chiffré_B = clair_A XOR clair_B
Le flot s'annule et l'attaquant obtient le XOR des deux clairs — une fuite catastrophique, sans jamais connaître la clé. La règle est absolue : jamais deux fois le même (clé, nonce).
Un mot sur GCM
En pratique, on utilise souvent GCM (Galois/Counter Mode), qui est CTR + authentification. En plus de chiffrer, GCM calcule une étiquette qui garantit que le message n'a pas été modifié. C'est un chiffrement authentifié (AEAD), aujourd'hui recommandé par défaut : il protège à la fois la confidentialité et l'intégrité.
En résumé
- CTR chiffre un compteur (nonce + indice) et XOR le résultat avec le clair : c'est un chiffrement de flux.
- Il est parallélisable, offre l'accès aléatoire et n'a pas besoin de bourrage.
- Danger : ne jamais réutiliser le couple (clé, nonce), sous peine de révéler le XOR des clairs.
- GCM = CTR + authentification (AEAD) : confidentialité et intégrité, le choix moderne recommandé.

