Sécurité et usage

Le cadencement de clés et pourquoi AES résiste

AddRoundKey utilise une clé différente à chaque tour. D'où viennent ces clés, et pourquoi personne n'a jamais réussi à casser AES en pratique ?

Le cadencement de clés

AES ne réutilise pas la clé maître telle quelle à chaque tour. Un algorithme appelé cadencement de clés (key schedule) dérive, à partir de la clé maître, une suite de clés de tour distinctes, une par AddRoundKey.

   clé maître (128, 192 ou 256 bits)
            |
   [ cadencement de clés ]
            |
   +--------+--------+--------+ ... +
   |        |        |             |
  K0       K1       K2    ...     K10
 (avant   (tour 1) (tour 2)     (dernier
  1er tour)                       tour)

Le procédé combine rotations d'octets, passage dans la S-box et XOR avec des constantes de tour. Résultat : même si deux clés maîtres ne diffèrent que d'un bit, leurs clés de tour sont totalement différentes. Chaque tour est ainsi mélangé avec une clé qui lui est propre.

La taille de l'espace de clés

La première ligne de défense d'AES est brutale : le nombre de clés possibles. Pour AES-128, il vaut 2^128. Ce nombre est difficile à se représenter :

2^128 = environ 3,4 x 10^38
      = 340 282 366 920 938 463 463 374 607 431 768 211 456

Mettons-le en perspective avec une attaque par force brute :

Vitesse d'essai Temps pour épuiser 2^128
1 milliard de clés/s ~10^22 ans
1 000 milliards/s ~10^19 ans
Toute la Terre en calcul bien plus que l'âge de l'univers

À titre de comparaison, l'univers a environ 1,4 x 10^10 ans. Parcourir 2^128 clés est physiquement impossible, quelle que soit la puissance de calcul imaginable. Et AES-256 offre 2^256 clés, un nombre encore incomparablement plus grand.

Pas d'attaque meilleure que la force brute

On pourrait espérer une faille dans la structure d'AES qui éviterait de tout parcourir. Depuis plus de vingt ans, la communauté cryptographique mondiale cherche. Résultat : aucune attaque pratique n'est connue. Les meilleures attaques théoriques ne réduisent la sécurité que d'un facteur négligeable, très loin de rendre AES cassable.

La combinaison des tours multiples, de la confusion (S-box) et de la diffusion (MixColumns) rend le chiffre extrêmement robuste : après quelques tours seulement, l'effet d'avalanche est complet.

AES-NI : rapide et sûr

Enfin, AES est conçu pour être efficace. Depuis 2010, la plupart des processeurs intègrent des instructions dédiées, l'AES-NI, qui exécutent les tours directement dans le matériel. Cela rend AES à la fois très rapide (plusieurs gigaoctets par seconde) et résistant à certaines attaques par canaux auxiliaires, car la durée du calcul ne dépend plus des données.

En résumé

  • Le cadencement de clés dérive une clé de tour distincte pour chaque AddRoundKey à partir de la clé maître.
  • L'espace de clés d'AES-128 vaut 2^128 (~3,4 x 10^38), rendant la force brute physiquement impossible.
  • Après vingt ans d'analyse, aucune attaque pratique meilleure que la force brute n'est connue.
  • L'accélération matérielle AES-NI rend le chiffre rapide et plus résistant aux canaux auxiliaires.