Une fois admis que le secret parfait est hors de portée pratique, on se tourne vers des chiffrements dont la clé est courte — de 128 à 256 bits, là où RSA réclame 2048 bits ou davantage — et le calcul rapide. C’est tout l’intérêt de la cryptographie symétrique : l’émetteur et le destinataire partagent une même clé, ce qui la rend efficace mais reporte toute la difficulté sur un point unique et névralgique, la distribution de ce secret commun.
Le talon d'Achille du symétrique
La clé étant commune aux deux parties, il faut l’acheminer par un canal sûr avant tout échange. C’est précisément ce problème que la cryptographie asymétrique viendra dénouer.
Les deux critères de Shannon
Dans son Communication Theory of Secrecy Systems (1949), Shannon dégage deux qualités attendues d’un bon algorithme1 :
- la diffusion : une modification minime du clair doit se répercuter largement sur le chiffré, de sorte que les redondances du message soient réparties et noyées ;
- la confusion : la relation entre la clé, le clair et le chiffré doit être aussi enchevêtrée que possible.
En pratique, la diffusion s’obtient par des transformations essentiellement linéaires, tandis que la confusion repose sur des opérations non linéaires — typiquement les S-boxes. Tout l’art d’un chiffrement tient dans le mariage des deux.
Deux familles
On distingue deux grandes manières de chiffrer symétriquement :
- le chiffrement à flot, qui produit à partir de la clé une suite pseudo-aléatoire aussi longue que les données, ensuite combinée à celles-ci. On le retrouve dans RC4 (SSL/TLS, WEP, WPA), E0 (Bluetooth) ou A5 (GSM) ;
- le chiffrement par bloc, qui découpe les données en blocs de taille fixe (64 ou 128 bits), chiffrés séparément puis recombinés selon un mode opératoire. DES, IDEA, AES, Camellia en relèvent.
Le chiffrement à flot
Le principe est un héritier direct du chiffrement de Vernam : on génère un flux de clé (keystream) pseudo-aléatoire, que l’on combine par XOR aux données claires.

Là où le masque jetable exigeait un aléa vrai et incompressible, on se contente ici d’un aléa pseudo-aléatoire produit à partir d’une clé courte : c’est ce compromis qui rend le procédé praticable, au prix de sa perfection théorique. Très rapides, ces chiffrements conviennent au temps réel et à la protection des flux multimédia.
Leur sécurité, en revanche, est délicate. Chiffrer deux messages avec la même clé régénère le même aléa — d’où l’ajout d’un vecteur d’initialisation distinct à chaque usage. Surtout, le générateur pseudo-aléatoire doit être irréprochable : équiprobable, sans mémoire ni anticipation (chaque bit décorrélé de ses voisins), et de période longue.
WARNING
Ces trois conditions sont difficiles à réunir en pratique, et nombre de générateurs proposés ont été cassés. La sécurité des chiffrements à flot reste, pour cette raison, la plus fragile.
Le registre à décalage à rétroaction linéaire
Le Linear Feedback Shift Register (LFSR) est le générateur pseudo-aléatoire matériel par excellence.
Définition (LFSR)
Un LFSR est un système, électronique ou logiciel, produisant une suite récurrente linéaire sur le corps fini , où l’addition est le XOR et la multiplication le AND.
Un LFSR de taille , dont l’état au temps est , se donne par un vecteur d’initialisation et un polynôme de rétroaction . L’état évolue par induction,
et la séquence chiffrante est la suite des bits de sortie .

Bien choisi, le polynôme confère à la suite une période maximale de . Mais la linéarité même du procédé le condamne : l’algorithme de Berlekamp-Massey reconstruit le polynôme de rétroaction à partir de bits seulement de la suite. Un LFSR nu n’est donc jamais sûr ; on ne l’emploie qu’assorti d’une couche non linéaire.
Le chiffrement par bloc
Un chiffrement par bloc transforme un bloc sous une clé en un chiffré de même taille. Pour rester déchiffrable, la transformation doit être une permutation bijective.
Définition
Un chiffrement par bloc de taille et clé de taille est une famille de permutations indexée par les clés, avec et , la clé restant secrète.
On lui demande trois vertus : la confusion et la diffusion déjà rencontrées, et l’indistinguabilité — pour un adversaire, doit être impossible à distinguer d’une permutation tirée au hasard2.
Les réseaux de Feistel
Le réseau de Feistel est une élégante manière de construire une permutation réversible à partir d’une fonction interne qui, elle, ne l’est pas nécessairement. On scinde chaque bloc en deux moitiés , et l’on itère
où est la fonction de ronde et la sous-clé dérivée de . La beauté du procédé tient à ceci : le XOR étant involutif, le même circuit déchiffre en appliquant simplement les sous-clés à rebours, sans jamais requérir l’inverse de 3. La sécurité ne dépend plus alors que du choix de et du nombre de rondes.
DES
Le Data Encryption Standard est l’archétype du réseau de Feistel standardisé (NIST, 1977)4. Il opère sur des blocs de 64 bits avec une clé de 56 bits effectifs (64 saisis, dont 8 de parité), au fil de 16 rondes dont la fonction combine expansion, substitution par S-boxes, permutation et mélange à la sous-clé. Il illustre à merveille l’alliance confusion / diffusion — mais sa clé, trop courte, le rend aujourd’hui obsolète : la recherche exhaustive en vient à bout.
AES
L’Advanced Encryption Standard (2001) lui a succédé. Ce n’est pas un Feistel mais un réseau de substitution-permutation (SPN)5, décliné en trois variantes — AES-128, 192 et 256 — toutes sur des blocs de 128 bits. Chaque ronde applique en série :
- SubBytes — substitution non linéaire par S-boxes (la confusion) ;
- ShiftRows — décalage des lignes de l’état ;
- MixColumns — mélange au sein des colonnes (la diffusion) ;
- AddRoundKey — combinaison avec la clé de ronde.
Cette structure se prête aussi bien au logiciel qu’au matériel, et AES demeure réputé sûr contre les attaques classiques dès lors que la clé est adéquate6.
Les modes opératoires
Un chiffrement par bloc ne sait, par nature, traiter qu’un bloc. Pour un message plus long, un mode opératoire prescrit comment enchaîner les chiffrements7.
- ECB (Electronic Codebook) chiffre chaque bloc indépendamment, . Simple, mais dangereux : deux blocs clairs identiques donnent deux chiffrés identiques, et les motifs du message transparaissent dans le chiffré. À proscrire.
- CBC (Cipher Block Chaining) enchaîne les blocs par XOR, avec ; il gomme la répétition des motifs, au prix d’un traitement séquentiel.
- CTR (Counter) transforme le chiffrement par bloc en chiffrement à flot, en chiffrant les valeurs successives d’un compteur — parallélisable.
- OFB / CFB produisent de même un flux pseudo-aléatoire à partir de la primitive.
Le choix du mode n’est jamais neutre : il engage la parallélisation, la propagation des erreurs et la résistance à certaines attaques — l’oracle de padding sur CBC en est l’exemple canonique.
Footnotes
-
C. E. Shannon, « Communication Theory of Secrecy Systems », Bell System Technical Journal, 1949. ↩
-
M. Bombar, Cryptanalyse — Cours 4 : chiffrement par blocs, notes de cours. ↩
-
Sur la construction de Feistel, voir par exemple What Is a Feistel Cipher?. ↩
-
P. Gaborit, Notes de cryptographie, Université de Limoges. ↩
-
H. Ferradi, Chiffrement par bloc (AES), ENS. ↩
-
Block ciphers and modes of operation, notes de cours. ↩