Advanced Encryption Standard
Concepteur(s) | Joan Daemen, Vincent Rijmen |
---|---|
Première publication | 2000 |
Dérivé de | Rijndael, Square |
Chiffrement(s) basé(s) sur cet algorithme | Aucun |
Taille(s) du bloc | 128 bits |
---|---|
Longueur(s) de la clé | 128, 192, 256 bits |
Structure | Réseau de substitution/permutation |
Nombre de tours | 10,12 ou 14 selon la taille de la clé |
Meilleure cryptanalyse
Une attaque par clé apparentée casse 9 tours de AES-256. Une attaque par texte clair choisi casse 8 tours de AES-192 et 256, ou 7 tours de AES-128 (Ferguson et al, 2000).
Advanced Encryption Standard ou AES (litt. « norme de chiffrement avancé »), aussi connu sous le nom de Rijndael, est un algorithme de chiffrement symétrique. Il remporta en octobre 2000 le concours AES, lancé en 1997 par le NIST et devint le nouveau standard de chiffrement pour les organisations du gouvernement des États-Unis. Il a été approuvé par la NSA (National Security Agency) dans sa suite B[1] des algorithmes cryptographiques.
Le système cryptographique AES est très fréquemment associé à la sécurisation de l'affichage des pages web ou des échanges de mails à travers l'usage de TLS. Son utilisation est extrêmement répandue[2].
Origine
[modifier | modifier le code]Il est issu d'un appel international à candidatures lancé en janvier 1997 et ayant reçu 15 propositions. Parmi ces 15 algorithmes, 5 furent choisis pour une évaluation plus poussée en avril 1999 : MARS, RC6, Rijndael, Serpent, et Twofish. A l'issue du processus de sélection, ce fut le candidat Rijndael - du nom de ses deux concepteurs Joan Daemen et Vincent Rijmen (tous les deux de nationalité belge) - qui a été choisi[3]. Ces deux experts en cryptographie étaient déjà les auteurs d'un autre algorithme : Square. AES est un sous-ensemble de Rijndael : il ne travaille qu'avec des blocs de 128 bits alors que Rijndael offre des tailles de blocs et de clefs qui sont des multiples de 32 (compris entre 128 et 256 bits).
Ce faisant, l'AES remplace le DES (choisi comme standard dans les années 1970) devenu obsolète car il utilise une clef de 56 bits ; ce qui n'est plus assez robuste. L'AES a été adopté par le NIST (National Institute of Standards and Technology) en 2001[4]. Son utilisation ne nécessite que peu de mémoire et - n'étant pas basé sur un schéma de Feistel - sa complexité est réduite de même que son implémentation est techniquement aisée.
Fonctionnement
[modifier | modifier le code]L'algorithme prend en entrée un bloc de 128 bits (16 octets), la clé fait 128, 192 ou 256 bits. Les 16 octets en entrée sont permutés selon une table définie au préalable. Ces octets sont ensuite placés dans une matrice de 4x4 éléments et ses lignes subissent une rotation vers la droite. L'incrément pour la rotation varie selon le numéro de la ligne. Une transformation linéaire est ensuite appliquée sur la matrice, elle consiste en la multiplication binaire de chaque élément de la matrice avec des polynômes issus d'une matrice auxiliaire, cette multiplication est soumise à des règles spéciales selon GF(28) (groupe de Galois ou corps fini). La transformation linéaire garantit une meilleure diffusion (propagation des bits dans la structure) sur plusieurs tours.
Finalement, un OU exclusif XOR entre la matrice et une autre matrice permet d'obtenir une matrice intermédiaire. Ces différentes opérations sont répétées plusieurs fois et définissent un « tour ». Pour une clé de 128, 192 ou 256, AES nécessite respectivement 10, 12 ou 14 tours.
Différence entre Rijndael et AES
[modifier | modifier le code]La seule différence entre AES et Rijndael est l'ensemble des longueurs de bloc et la taille de clé. Rijndael est un bloc de chiffrement avec une longueur de bloc et une longueur de la clé variables. La longueur du bloc et la longueur de la clé peuvent être spécifiées indépendamment comme tout multiple de 32 bits, avec un minimum de 128 bits et un maximum de 256 bits. Il serait possible de définir des versions de Rijndael avec la longueur du bloc ou la longueur de la clé, mais il ne semble pas que cela soit nécessaire actuellement[5].
L'AES fixe la longueur de bloc à 128 bits et prend en charge les longueurs de clé de 128, 192 ou 256 bits seulement. Les longueurs de bloc et de clé supplémentaires dans Rijndael ne sont pas évaluées dans le cadre du processus de sélection de l'AES, et par conséquent ils ne sont pas adoptés dans la norme FIPS actuelle[5].
Algorithme
[modifier | modifier le code]Algorithme haut niveau pour le chiffrement avec Rijndael[5]:
procedure Rijndael(State,Cipherkey)
KeyExpansion(CipherKey,ExpandedKey)
AddRoundKey(State,ExpandedKey[0])
for i = 1 to Nr − 1 do
Round(State,ExpandedKey[i])
end for
FinalRound(State,ExpandedKey[Nr])
end procedure
Les tours de transformation de Rijndael[5]:
procedure Round(State,ExpandedKey[i])
SubBytes(State);
ShiftRows(State);
MixColumns(State);
AddRoundKey(State,ExpandedKey[i]);
end procedure
procedure FinalRound(State,ExpandedKey[Nr])
SubBytes(State);
ShiftRows(State);
AddRoundKey(State,ExpandedKey[Nr]);
end procedure
Chiffrement
[modifier | modifier le code]L'AES est un algorithme de chiffrement symétrique, et c'est un chiffrement par blocs. Il chiffre un message de 128 bits pour produire un chiffré de 128 bits également. La clé utilisée peut varier en taille : elle peut être de 128 bits, 192 bits ou 256 bits. La représentation du message bloqué se fait sous la forme d'un tableau 4x4, soit 16 cases, chacune représentant un octet, pour un total de 128 bits. Le chiffrement AES est constitué de plusieurs tours. Ce nombre de tours varie selon la taille de la clé initiale : pour une clé de 128 bits, le nombre de tours est de 10 ; pour une clé de 192 bits, il est de 12 tours ; et pour une clé de 256 bits, il est de 14 tours.
Pour chaque tour, une clé sera générée à partir de la clé initiale en utilisant un algorithme d'expansion de clé. Ces clés sont appelées round keys, et chacune est de taille 128 bits, quelle que soit la taille de la clé initiale.
Chaque tour est divisé en 4 étapes : substitution des octets, shift rows, mix columns et add round key, sauf pour le dernier tour, qui n'inclut pas l'étape mix columns.
Substitution des octets
[modifier | modifier le code]Chaque octet dans le message représenté par un bloc 4x4 sera remplacé par un autre octet en utilisant une table de substitution 16x16 (boite S)
Shift rows
[modifier | modifier le code]Pour la première ligne, il n'y a pas de changements. Pour la deuxième ligne, les éléments sont décalés chacun d'un pas vers la gauche, pour la troisième ligne, de 2 pas vers la gauche, et pour la quatrième ligne, de 3 pas vers la gauche.
Mix columns
[modifier | modifier le code]Chaque colonne sera multipliée par une matrice 4x4 fixe.
Add round key
[modifier | modifier le code]Le message en bloc sera XORé avec la round key.
La round key est formée de 4 mots, et chaque mot sera XORé avec une colonne du message.
Algorithme d'expansion des clés
[modifier | modifier le code]Division de la clé initiale
La clé initiale (128, 192 ou 256 bits) est divisée en mots, chacun contenant 4 octets :
AES-128 : 16 octets (4 mots).
AES-192 : 24 octets (6 mots).
AES-256 : 32 octets (8 mots).
Exemple avec une clé AES-128 (128 bits) : 2b7e151628aed2a6abf7158809cf4f3c
W0 =2b7e1516
W1 =28aed2a6
W2 =abf71588
W3 =09cf4f3c
Nombre de mots pour la clé étendue
Le nombre de mots nécessaires pour la clé étendue est donné par :
Nb de mots = 4 × (Nb de tours + 1) Le facteur 4 correspond au nombre de mots de 4 octets d'un bloc (128 bits).
AES ne traite que des blocs de 128 bits, donc il y a 4 mots par bloc.
Ainsi :
Pour AES-128, on a besoin de 44 mots.
Pour AES-192, on a besoin de 52 mots.
Pour AES-256, on a besoin de 60 mots.
Calcul des mots pour les clés de ronde
La clé de ronde suivante est composée des mots
W4 ,W5 ,W6 ,W7 . W 4 = W 0 ⊕ c o r e ( W 3 )
W 5 = W 4 ⊕ W 1
W 6 = W 5 ⊕ W 2
W 7 = W 6 ⊕ W 3
Note : La fonction core applique des transformations spécifiques (substitution et rotation) à un mot.
On répète ce processus jusqu'à obtenir tous les mots nécessaires pour générer les clés de toutes les rondes.
Déchiffrement
[modifier | modifier le code]Dans le déchiffrement, on applique le même mécanisme que lors du chiffrement, mais dans l'ordre inverse. Cela signifie : AddRoundKey en premier.
Pour chaque tour :
-Inverse ShiftRows (décalage inverse des lignes).
-Inverse SubBytes (substitution inverse des octets).
-AddRoundKey.
-Inverse MixColumns (sauf lors ddu dernier tour).
Lors du dernier tour, l'étape Inverse MixColumns est omise, et le déchiffrement se termine avec AddRoundKey.
Attaques sur le système cryptographique AES
[modifier | modifier le code]L'AES n'a pour l'instant pas été cassé, même théoriquement, au sens où il n'existe pas d'attaque significativement plus efficace que la recherche exhaustive quand le chiffrement est correctement utilisé. Le système AES est largement considéré comme l'un des algorithmes de chiffrement les plus sécurisés disponibles. Cependant, comme tout système cryptographique, il est constamment soumis à des analyses et des attaques pour tester sa robustesse.
Il est important de noter que, malgré ces attaques, l'AES reste un algorithme très robuste. Il est largement utilisé dans de nombreuses applications sécurisées. Les attaques mentionnées sont souvent théoriques ou nécessitent des conditions très spécifiques pour être réalisées avec succès.
Rijndael a été conçu de façon à résister aux méthodes classiques en particulier la cryptanalyse linéaire et la cryptanalyse différentielle. Le nombre de tours de l'AES est calculé en fonction de la taille de la clef pour que chacune de ces deux attaques (linéaire et différentielle) ne soit pas plus efficace qu'une attaque par force brute.
Attaques sur des versions simplifiées
[modifier | modifier le code]Des attaques existent sur des versions simplifiées d'AES. Niels Ferguson et son équipe ont proposé en 2000 une attaque sur une version à 7 tours de l'AES 128 bits. Une attaque similaire casse un AES de 192 ou 256 bits contenant 8 tours. Un AES de 256 bits peut être cassé s'il est réduit à 9 tours avec une contrainte supplémentaire. En effet, cette dernière attaque repose sur le principe des « related-keys » (clés apparentées). Dans une telle attaque, la clé demeure secrète mais l'attaquant peut spécifier des transformations sur la clé et chiffrer des textes à sa guise. Il peut donc légèrement modifier la clé et regarder comment la sortie de l'AES se comporte.
Attaques sur la version complète
[modifier | modifier le code]Attaques par force brute
[modifier | modifier le code]La simplicité algébrique de l'AES a été mise en avant, par exemple en 2001 par Niels Ferguson, comme une potentielle faiblesse[6]. Elle n'a cependant pu être exploitée jusqu'à présent. En 2002 Nicolas Courtois et Josef Pieprzyk avaient présenté une attaque algébrique théorique : l'attaque XSL, dont ils estimaient qu'elle était plus efficace que l'attaque par force brute, mais cela a été infirmé par des travaux ultérieurs[7].
En 2011, des chercheurs de Microsoft publient une attaque sur la version complète d'AES[8]. Cette attaque permet de trouver la clef d'AES-128 en opérations (contre pour une attaque par force brute, soit presque 4 fois plus rapide que cette dernière). La même attaque s'applique à une version simplifiée (à 8 tours) d'AES-128, réduisant la complexité de l'attaque à . Cette attaque, fondée sur une amélioration de l'attaque par rencontre au milieu, reste impraticable.
Attaques par canal auxiliaire
[modifier | modifier le code]Les attaques par canal auxiliaire exploitent des informations supplémentaires obtenues à partir de l'implémentation physique de l'algorithme, comme la consommation d'énergie, le temps de calcul, ou les émissions électromagnétiques. Les attaques par analyse de la consommation d'énergie et les attaques par analyse des émissions électromagnétiques sont des exemples courant :
- Differential Power Analysis (DPA) : introduite par Paul Kocher, Joshua Jaffe, et Benjamin Jun en 1999. Cette méthode a été largement étudiée et améliorée depuis[9],[10];
- Electromagnetic Analysis (EMA) : les attaques par analyse des émissions électromagnétiques ont également été explorées dans les années 2000 et continuent d'être un sujet de recherche actif[11].
En mars 2016, Ashokkumar C., Ravi Prakash Giri et Bernard Menezes ont présenté une attaque par canal auxiliaire sur les implémentations AES qui peut récupérer la clé AES complète de 128 bits en seulement 6-7 blocs de texte en clair/chiffré, ce qui constitue une amélioration substantielle par rapport aux travaux précédents qui nécessitent entre 100 et un million de calculs de déchiffrement. L'attaque proposée nécessite des privilèges utilisateur standards et les algorithmes de récupération de clé s'exécutent en moins d'une minute[12].
Pour se protéger face à ce type d'attaques, un jeu d'instructions AES est intégré au cœur de l'architecture des microprocesseurs modernes.
Attaques par fautes
[modifier | modifier le code]Les attaques par fautes introduisent des erreurs dans le processus de chiffrement ou de déchiffrement pour obtenir des informations sur la clé secrète. Par exemple, en injectant des fautes dans les registres de l'algorithme, un attaquant peut observer les différences dans les sorties et en déduire des informations sur la clé[13].
Attaques par cryptanalyse
[modifier | modifier le code]Bien que l'AES soit conçu pour résister à de nombreuses formes de cryptanalyse, des recherches continuent à explorer de nouvelles méthodes pour trouver des faiblesses. Par exemple, des attaques basées sur des techniques de cryptanalyse linéaire et différentielle ont été proposées, mais elles ne sont généralement pas pratiques pour des clés de taille standard (128, 192, ou 256 bits).
Ces techniques ont été développées dans les années 1990 par des chercheurs comme Mitsuru Matsui (cryptanalyse linéaire) et Eli Biham et Adi Shamir (cryptanalyse différentielle). Bien que l'AES soit conçu pour résister à ces attaques, des variantes et des améliorations continuent d'être étudiées.
Attaques par calcul quantique
[modifier | modifier le code]Bien que les ordinateurs quantiques ne soient pas encore disponibles à grande échelle, des algorithmes quantiques comme l'algorithme de Grover pourraient théoriquement réduire la sécurité de l'AES en permettant une recherche plus efficace de la clé. Cependant, même avec des ordinateurs quantiques, l'AES reste relativement sécurisé en raison de sa grande taille de clé. En effet, l'AES-256 est considéré comme résistant aux attaques quantiques.
L'algorithme de Grover, qui pourrait réduire la sécurité de l'AES[14],[15], a été proposé par Lov Grover en 1996. Cependant, les implications pratiques de cette attaque dépendent de l'avancement des technologies quantiques, qui est encore en cours de développement.
Attaques par implémentation
[modifier | modifier le code]Des vulnérabilités peuvent également être introduites par des erreurs dans l'implémentation de l'algorithme AES[16]. Des bugs dans le code ou des failles dans les bibliothèques cryptographiques peuvent être exploités par des attaquants. Les vulnérabilités d'implémentation peuvent être découvertes à tout moment et sont souvent spécifiques à des bibliothèques ou des logiciels particuliers. Par exemple, des failles dans des bibliothèques cryptographiques comme OpenSSL ont été découvertes et corrigées au fil des ans.
En , Daniel J. Bernstein a publié une attaque temporelle utilisée pour casser une clé AES sur un serveur spécifique tournant avec OpenSSL.
En , Endre Bangerter, David Gullasch et Stephan Krenn ont publié un article décrivant la récupération d'une clé secrète AES-128 quasiment en temps réel qui fonctionne sur certaines implémentations. Comme les précédentes attaques de ce type, elle nécessite de lancer un programme sur la machine qui effectue le chiffrement.
Recommandations de la NSA
[modifier | modifier le code]Le gouvernement américain a annoncé en juin 2003 à propos de l'algorithme AES (suivant une analyse de la NSA) :
« L'architecture et la longueur de toutes les tailles de clés de l'algorithme AES (128, 192 et 256) sont suffisantes pour protéger des documents classifiés jusqu'au niveau « SECRET ». Le niveau « TOP SECRET » nécessite des clés de 192 ou 256 bits. L'implémentation de l'AES dans des produits destinés à la protection des systèmes et/ou documents liés à la sécurité nationale doit faire l'objet d'une analyse et d'une certification par la NSA avant leur acquisition et leur utilisation »
— paragraphe (6) de la dépêche originale[17]
Mieux connaître l'AES
[modifier | modifier le code]De nombreuses ressources sont disponibles en ligne pour en apprendre davantage sur ce système cryptographique. Le projet éducatif CrypTool offre un support visuel pas-à-pas[18] et un autre avec animation interactive[19] qui permettent à chacun d'approfondir sa connaissance du fonctionnement interne de l'AES.
Notes et références
[modifier | modifier le code]- (en) « Suite B Cryptography »
- (en) « Enhanced Security: AES-256 Encryption for SSL and TLS », sur LuxSci, (consulté le )
- (en) James Nechvatal, Elaine Barker, Lawrence Bassham, William Burr, Morris Dworkin, James Foti, Edward Roback, « Report on the Development of the Advanced Encryption Standard (AES) », sur csrc.nist.gov, National Institute of Standards and Technology, (consulté le )
- (en) NIST, « Advanced Encryption Standard (AES) », Federal Information Processing Standards Publication, (lire en ligne [PDF])
- Joan Daemen, The design of Rijndael : the Advanced Encryption Standard (AES), (ISBN 978-3-662-60769-5 et 3-662-60769-7, OCLC 1155884098, lire en ligne)
- (en) Niels Ferguson, Richard Schroeppel et Doug Whiting « A Simple Algebraic Representation of Rijndael » ()
— « (ibid.) », dans Serge Vaudenay et Amr M. Youssef (éds.), Selected Areas in Cryptography, Springer Berlin Heidelberg, coll. « Lecture Notes in Computer Science » (ISBN 978-3-540-45537-0), p. 103–111 - (en) C. Cid, G. Leurent, « An Analysis of the XSL Algorithm », LNCS, vol. 3788, , p. 333–335 (DOI 10.1007/11593447, lire en ligne [PDF])
- (en) Andrey Bogdanov, Dmitry Khovratovich, and Christian Rechberger, « Biclique Cryptanalysis of the Full AES »,
- Bossuet, Lilian. « Approche didactique pour l’enseignement de l’attaque DPA ciblant l’algorithme de chiffrement AES ». Journal sur l’enseignement des sciences et technologies de l’information et des systèmes 11 (2012): 4-. Web.
- Cheng Zhang, Yunhui Jia, Libin Zhu et Zhipeng Zhang, « Research on Simple Power Consumption Based on AES Algorithm », IEEE, , p. 1883–1886 (ISBN 978-1-6654-6253-2, DOI 10.1109/EEBDA56825.2023.10090666, lire en ligne, consulté le )
- (en) Mark Tehranipoor, N. Nalla Anandakumar et Farimah Farahmandi, « EM Side-Channel Attack on AES », dans Hardware Security Training, Hands-on!, Springer International Publishing, , 163–181 p. (ISBN 978-3-031-31033-1, DOI 10.1007/978-3-031-31034-8_9, lire en ligne)
- C. Ashokkumar, Ravi Prakash Giri et Bernard Menezes, « Highly Efficient Algorithms for AES Key Retrieval in Cache Access Attacks », IEEE, , p. 261–275 (ISBN 978-1-5090-1751-5, DOI 10.1109/EuroSP.2016.29, lire en ligne, consulté le )
- Ronan LASHERMES, « Attaques par fautes », MISC, no 96, (lire en ligne [PDF])
- Amir H. Karamlou, William A. Simon, Amara Katabarwa et Travis L. Scholten, « Analyzing the performance of variational quantum factoring on a superconducting quantum processor », npj Quantum Information, vol. 7, no 1, (ISSN 2056-6387, DOI 10.1038/s41534-021-00478-z, lire en ligne, consulté le )
- Florian BURNEL, « Des chercheurs chinois cassent le RSA avec un ordinateur quantique », sur www.it-connect.fr, (consulté le )
- « Implémentation d'AES : la nitroglycérine | Connect - Editions Diamond », sur connect.ed-diamond.com (consulté le )
- https://web.archive.org/web/20070927035010/http://www.cnss.gov/Assets/pdf/cnssp_15_fs.pdf
- (en) « CrypTool Portal », sur CrypTool Portal (consulté le )
- (en) « CrypTool Portal », sur CrypTool Portal (consulté le )
Annexes
[modifier | modifier le code]Articles connexes
[modifier | modifier le code]Liens externes
[modifier | modifier le code]- (fr) « Adaptation française du document du NIST » (version du sur Internet Archive)
- (en) Federal Information Processing Standards Publication 197 November 26, 2001 Announcing the ADVANCED ENCRYPTION STANDARD (AES
- (en) code de référence
- (en) « Site officiel de Rijndael »(Archive.org • Wikiwix • Archive.is • Google • Que faire ?) (lien mort) *lien vers archive.org*
- (en) Présentation de l'attaque XSL
- (en) L'avis des experts sur l'attaque XSL
- (en) « A timing attack against Rijndael » (1999) - Francois Koeune, Jean-Jacques Quisquater
- (en) AES timing attacks - discussion sur comp.dsp
- (en) Report of the Development of the Advanced Encryption Standard (AES)
- (fr) AES Esperance de vie d'un algoritme
- (en) outil aes