AES (Advanced Encryption Standard)
AES est un algorithme symétrique de chiffrement par blocs utilisé dans le monde entier sur des supports matériels et logiciels pour protéger les données sensibles.
AES est né en 1997 à l'appel du National Institute of Standards and Technology (NIST), qui cherchait un successeur à l'algorithme Data Encryption Standard (DES), vieillissant et de plus en plus vulnérable aux attaques par force brute.
Ce nouvel algorithme de chiffrement devait être non couvert par le secret défense et « capable de protéger les informations confidentielles du gouvernement pendant une bonne partie du prochain siècle ».
Simple à implémenter dans des matériels et logiciels, ainsi que dans des environnements contraints (par exemple, une carte à puce), il devait également assurer une solide défense contre des attaques faisant appel à différentes techniques.
Choix d'AES
Pour garantir une analyse transparente et exhaustive des différentes conceptions en lice, le processus de sélection de ce nouvel algorithme de chiffrement était publiquement ouvert à l'analyse et aux commentaires.
Quinze propositions furent soumises à une première analyse par la communauté internationale du chiffrement, dont fait partie la National Security Agency (NSA). En août 1999, le NIST sélectionnait cinq algorithmes pour une analyse poussée. Il s'agissait de :
- MARS, proposé par une importante équipe d'IBM Research
- RC6, proposé par RSA Security
- Rijndael, proposé par deux cryptographes belges, Joan Daemen et Vincent Rijmen
- Serpent, proposé par Ross Andersen, Eli Biham et Lars Knudsen
- Twofish, proposé par une équipe comptant de nombreux chercheurs, dont Bruce Schneier, cryptographe réputé de Counterpane
Toutes ces propositions ont été passées au crible dans les langages ANSI, C et Java : vitesse et fiabilité du chiffrement et du déchiffrement, temps de configuration de la clé et de l'algorithme, résistance à différentes attaques. Le tout sur des systèmes orientés matériel et d'autres orientés logiciel. Les membres de la communauté internationale du chiffrement ont réalisé des analyses détaillées (certaines équipes allant jusqu'à tenter de casser leurs propres codes).
Après moult commentaires, analyses et débats enflammés, l'algorithme Rijndael (terme formé d'après une combinaison des noms de ses créateurs belges, Rijmen et Daemen) a été proposé comme norme AES en octobre 2000, puis publié par le NIST dans la norme américaine FIPS PUB 197.
En 2002, AES est entrée en vigueur comme norme du gouvernement fédéral. Elle est également incluse dans la norme ISO/CEI 18033-3, qui préconise le chiffrement par blocs pour la confidentialité des données.
En juin 2003, le gouvernement des Etats-Unis a annoncé qu'AES pouvait être utilisé pour protéger les informations confidentielles. Dans la foulée, c'est devenu l'algorithme de chiffrement par défaut pour protéger ce type d'information et le premier algorithme publiquement accessible et ouvert approuvé par la NSA pour les informations ultrasecrètes. AES est l'un des algorithmes de chiffrement Suite B utilisés par l'Information Assurance Directorate de la NSA dans les technologies approuvées pour la protection des systèmes de sécurité nationaux.
Son utilisation éprouvée par le gouvernement des Etats-Unis a favorisé son expansion dans le secteur privé, et AES est devenu l'algorithme le plus utilisé dans le domaine de la cryptographie à clé symétrique.
Le processus de sélection transparent d'AES a contribué à inspirer un haut degré de confiance chez les experts. AES est plus sûr que ses prédécesseurs - DES et 3DES -, grâce à un algorithme plus fort et à des clés plus longues. Il permet un chiffrement plus rapide que DES et 3DES, ce qui le rend parfaitement adapté pour les applications, les microprogrammes et le matériel qui exigent une faible latence ou un haut débit, comme les pare-feu et les routeurs. Il est utilisé dans de nombreux protocoles, tel SSL/TLS, ainsi que dans les applications et les périphériques récents qui utilisent le chiffrement.
Fonctionnement du chiffrement AES
AES comprend trois algorithmes de chiffrement par blocs : AES-128, AES-192 et AES-256.
Chaque code chiffre et déchiffre les données par blocs de 128 bits au moyen de clés cryptographiques de 128, 192 et 256 bits, respectivement (Rijndael était conçu pour gérer encore d'autres tailles de bloc et longueurs de clé, mais la fonctionnalité n'a pas été adoptée dans AES).
Les codes symétriques ou à clé secrète utilisent la même clé pour le chiffrement et le déchiffrement. L'expéditeur et le destinataire doivent donc connaître et utiliser la même clé secrète. Toutes les longueurs de clé sont jugées suffisantes pour protéger des informations classées jusqu'au niveau « Secret ». En revanche, des informations de niveau « Top Secret » nécessitent des clés de 192 ou 256 bits. Il faut 10 tours pour une clé de 128 bits, 12 pour une clé de 192 bits et 14 pour une clé de 256 bits. Un tour comprend plusieurs étapes de traitement : la substitution, la transposition et la combinaison du texte en clair en entrée avant sa transformation finale en cryptogramme.
Le chiffrement AES est fiable. Les seules attaques réussies se sont produites au niveau du canal auxiliaire sur des failles d'implémentation ou de gestion des clés de certains produits de chiffrement AES (les attaques par canal auxiliaire n'utilisent pas la force brute ni les failles théoriques pour casser un code, mais exploitent les failles d'implémentation). Prenons l'exemple de l'exploit de navigateur BEAST sur le protocole TLS v1.0 : TLS peut utiliser AES pour chiffrer des données, mais en raison des informations exposées par TLS, les pirates arrivaient à prévoir le bloc de vecteur d'initialisation utilisé au début du processus de chiffrement.
De nombreux chercheurs ont publié des attaques contre des versions d'Advanced Encryption Standard comprenant peu de tours et un rapport de recherche publié en 2011 démontrait également que l'utilisation de la technique d'attaque biclique permettait de récupérer les clés AES entre trois et cinq fois plus rapidement qu'une attaque par force brute selon la version de l'algorithme. Cependant, même cette attaque ne remet pas en cause l'utilisation d'AES en raison de l'extrême complexité du calcul impliqué.