Chiffrement et intégrité par AES : CCMP

Dans 802.11i, le chiffrement est pris en charge par des algorithmes basés sur AES. Associé aux algorithmes de contrôle d'intégrité, cet ensemble porte le nom de CCMP6.1. Contrairement à ce qui se passait avant, la somme d'intégrité est calculée à la volée, en même temps que la trame est cryptée par AES6.2. AES est un algorithme itératif de chiffrement de type symétrique (comme le DES), réalisé par le NIST6.3 en 1997. AES a comme avantages d'être à la fois simple et rapide à calculer tout en nécessitant des ressources faibles, (mais pas assez pour la compatibilité avec les équipements 802.11 existant) et flexible au niveau de son implémentation. Ce chiffrement pourra résister aux attaques par cryptanalyse ainsi qu'à celles par dictionnaire.

AES est l'algorithme de cryptage qui remplace le WEP, qui était encore utilisé par le WPA. Il est à noter que ce changement implique aussi que la partie matérielle soit changée au profit de quelque chose de plus puissant. Cela veut dire que le matériel actuel (802.11{a,b,g}) ne peut pas (sauf exception spécifique) évoluer vers 802.11i, même par un changement du logiciel. En effet, les circuits assurant le cryptage ne sont pas assez puissants pour AES : le WEP nécessitait une puissance de calcul de l'ordre d'un i486 et l'AES nécessite quant-à lui la puissance de calcul d'un Pentium 150... on comprend alors mieux la nécessité de changement radical de matériel.

AES se sert pour le chiffrement de la clé de session PTK (k sur le schéma FIG.[*]) de façon rértoactive . Le calcul de la PPK qui était effectué dans WPA (cf. FIG.[*]) n'est plus nécessaire car AES fonctionne par chiffrements de blocs en gardant la même clé tout au long de la session. Le chiffrement par AES se fait en suivant une séquence de n opérations à partir de la PTK. La valeur de n sera le nombre de blocs à chiffrer.

Le processus de chiffrement consistera donc à chiffrer indépendemment chaque bloc de 128 bits de données en clair. Pour chaque bloc, la fonction AES (dont on suppose sur le schéma FIG.[*] que la clé k est connue) va prendre en entrée un bloc de 128 bits donnés par la fonction de préchargement.

Ce bloc subira tout d'abord un XOR avec la clé fournie (cf. FIG.[*]). Le résultat obtenu sera crypté en 10 étapes (tours) car la clé fait 128 bits (D'après la spécification de AES[32] on aurait eu 12 tours pour une clé de 192 bits et 14 pour une clé de 256 bits). Lors de chaque tour, le bloc passera successivement par une fonction de substitution d'octets, une fonction de décalage et une fonction de permutation avant de subir enfin un XOR avec une clé dérivée de celle fournie. Le résultat sera alors prêt pour le tour suivant (ou éventuellement la sortie).

Figure: Le cryptage par AES
\includegraphics[width=8cm,angle=0]{img/AES.eps}

Le bloc de 128 bits obtenu en sortie de AES subira un XOR avec le bloc de 128 bits de données à chiffrer. Le résultat sera ainsi le bloc de données chiffré. Cela se fera tant qu'il y aura des données à chiffrer.

Pour la détection d'erreur, on utilise CCM6.4. CBC-MAC6.5 est utilisé pour calculer le MIC sur l'en-tête du texte clair, le préfixe de longueur du texte clair et le champ de données. CCMP utilise CCM pour encrypter les données et protéger les champs choisis de l'en-tête contre toute modification.

Le MIC utilise toujours AEC CBC-MAC, initialisé par l'E-IV (de 48 bits) sur la totalité de la trame en se servant de la même clé que pour le chiffrement. Les 64 bits issus du calcul du MIC sont concaténés aux données; le tout est alors chiffré par AES (cf. FIG.[*]). Ainsi, le dernier bloc chiffré sera le MIC.


\begin{landscape}
% latex2html id marker 777\begin{figure}[htbp]
\begin{center...
...
\caption{Chiffrement et calcul du MIC en parallèle}
\end{figure}\end{landscape}

2004-08-25