Anatomie d'AES

De DES à AES : contexte et structure

En 1997, un défi lancé par une entreprise de sécurité est relevé : le chiffre DES, standard officiel des États-Unis depuis 1977, est cassé par force brute. Il fallait un successeur.

Le vieillissement de DES

DES (Data Encryption Standard) chiffrait des blocs de 64 bits avec une clé de 56 bits utiles. À sa naissance, parcourir les 2^56 clés possibles était hors de portée. Mais la loi de Moore a fait son œuvre : en 1998, la machine Deep Crack de l'EFF, construite pour 250 000 dollars, retrouvait une clé DES en quelques jours. Un standard dont la clé se casse par force brute n'en est plus un.

Les rustines comme le triple DES (chiffrer trois fois de suite) ont prolongé sa vie, mais au prix d'une lenteur pénalisante. Il fallait repartir de zéro.

Le concours du NIST

Plutôt que d'imposer un algorithme en secret, le NIST (l'institut de normalisation américain) organise en 1997 un concours ouvert. N'importe quelle équipe au monde peut proposer un candidat, à condition que tout soit public : la conception, le code, l'analyse. C'est le principe de Kerckhoffs poussé au bout — la sécurité ne doit venir que de la clé, jamais du secret de l'algorithme.

Quinze candidats sont soumis, puis analysés publiquement pendant trois ans par la communauté cryptographique mondiale. En octobre 2000, le vainqueur est annoncé : Rijndael, conçu par deux Belges, Joan Daemen et Vincent Rijmen. En 2001, il devient officiellement l'AES (Advanced Encryption Standard).

La structure d'AES

AES chiffre des blocs de taille fixe : 128 bits, soit 16 octets. La clé, elle, peut avoir trois tailles, ce qui donne trois variantes :

Variante Taille de clé Nombre de tours
AES-128 128 bits 10 tours
AES-192 192 bits 12 tours
AES-256 256 bits 14 tours

Un tour (round) est une série d'opérations répétée plusieurs fois. Plus la clé est longue, plus on ajoute de tours pour brasser davantage les données.

L'état : une matrice 4x4 d'octets

Pendant le chiffrement, les 16 octets du bloc ne sont pas traités en ligne, mais rangés dans une grille de 4 lignes sur 4 colonnes, appelée l'état (state). Les octets sont placés colonne par colonne :

        col0   col1   col2   col3
lig0  [ o0  |  o4  |  o8  |  o12 ]
lig1  [ o1  |  o5  |  o9  |  o13 ]
lig2  [ o2  |  o6  |  o10 |  o14 ]
lig3  [ o3  |  o7  |  o11 |  o15 ]

Chaque case contient un octet (8 bits). Toutes les opérations d'AES transforment cette matrice, tour après tour, jusqu'au bloc chiffré final. Cette organisation en grille n'est pas décorative : elle permet d'agir tantôt sur les lignes, tantôt sur les colonnes, pour mélanger l'information dans les deux sens.

En résumé

  • DES, avec sa clé de 56 bits, est devenu cassable par force brute à la fin des années 1990.
  • Le NIST a organisé un concours public ; l'algorithme Rijndael l'a remporté et est devenu AES en 2001.
  • AES chiffre des blocs de 128 bits avec des clés de 128, 192 ou 256 bits, en 10, 12 ou 14 tours.
  • Pendant le calcul, le bloc est rangé dans une matrice 4x4 d'octets appelée l'état.