Top Qs
Chronologie
Chat
Contexte
Jeu d'instructions AES
ensemble d'instruction dédiée à l'accélération du chiffrement et déchiffrement De Wikipédia, l'encyclopédie libre
Remove ads
Le jeu d'instructions AES (aussi appelé Intel Advanced Encryption Standard New Instructions ; AES-NI) est une extension du jeu d'instructions de l'architecture x86 pour les microprocesseurs Intel et AMD, proposée par Intel en [1]. Le but de ce jeu d'instructions est d'accélérer les applications effectuant des opérations de chiffrement et de déchiffrement utilisant l'Advanced Encryption Standard (AES).
Remove ads
Nouvelles instructions
Remove ads
Architectures Intel et AMD x86
- Intel[4]
- Processeurs Intel Westmere :
- Processeurs Intel Westmere-EP (Xeon 56xx) (aussi appelés Xeon Gulftown séries 5600 DP server).
- Processeurs Intel Clarkdale (sauf les Core i3, Pentium et Celeron).
- Processeurs Intel Arrandale (sauf les Celeron, Pentium, Core i3 et Core i5-4XXM).
- Processeurs Intel Sandy Bridge :
- Processeurs Intel Ivy Bridge
- Processeurs Intel Haswell (tous sauf l'i3-4000m[10], les Pentium et les Celeron).
- Le site d'Intel liste tous ses processeurs supportant le jeu d'instructions AES-NI[11]
- Processeurs Intel Westmere :
- AMD
- Microarchitecture AMD Bulldozer[12].
- Microarchitecture AMD Piledriver.
- Microarchitecture AMD Steamroller.
- Microarchitecture AMD Jaguar.
- Microarchitecture AMD Puma.
- Microarchitecture AMD Zen.
Remove ads
Accélération matérielle sur d'autres architectures
Résumé
Contexte
L'accélération AES est disponible au travers d'instructions non privilégiées sur les processeurs SPARC (T4, T5, M6 et suivants) et ARM récents. Le processeur SPARC T4, disponible depuis 2011, possède des instructions utilisateur effectuant des tours d'AES[13]. Ces instructions s'ajoutent à d'autres commandes de chiffrement de plus haut niveau. L'architecture ARMv8-A, annoncée en 2011, qui inclut les processeurs ARM Cortex-A53 et A57 (mais pas les anciens processeurs v7 tels que les Cortex A5, 7, 8, 9, 11, 15) ont également un jeu d'instructions utilisateur réalisant des tours d'AES[14]. En , IBM a annoncé[15] que sa future architecture Power7+ aura un support matériel d'AES. Les instructions pour toutes ces architectures ne sont pas directement compatibles avec les instructions AES-NI, mais fournissent des fonctionnalités similaires.
Les mainframes IBM z9 et ultérieurs effectuent un chiffrement AES ECB ou CBC en une seule instruction (KM, KMC), grâce au coprocesseur IBM Crypto Express [16]. Ces instructions sont de fait plus faciles à utiliser que les instructions AES-NI, mais elles ne peuvent pas être utilisées pour accélérer d'autres algorithmes reposant sur les fonctions de tour d'AES (comme notamment la fonction de hachage Whirlpool).
Processeurs x86 supportés
L'accélération AES sur les processeurs VIA x86, AMD Geode et Marvell Kirkwood (ARM, mv_cesa sous Linux) nécessite l'utilisation d'un driver dédié. Les puces suivantes fournissent une accélération matérielle pour AES mais ne gèrent pas le jeu d'instructions AES-NI :
Architecture ARM
- Allwinner
- A10, A20, A30, A31, A80, A83T, H3 et A64 utilisant le Security System[22].
- Broadcom
- BCM5801/BCM5805/BCM5820 utilisant le Security Processor[19].
L'architecture 64 bits ARMv8 comprend une extension cryptographique optionnelle à son jeu d'instruction basée sur un SIMD avancé, supportant le chiffrement et déchiffrement AES, ainsi que SHA-1, SHA-224 et SHA-256[23]. Elle est notamment présente dans le Rockchip RK3399[24].
Le Cortex-A53 ajoute A64, A32, et T32 au module de chiffrement ARMv8 de base[23].
RISC-V
Au niveau de l'architecture RISC-V :
- Le module Sipeed M1, comprend un accélérateur pour AES et SHA256[25].
- Les ESP32-C3 et C6, qui utilisent l'architecture RISC-V plutôt qu'Xtensa du premier ESP32, comportent un processeur cryptographique accélérant AES, SHA, RSA, RNG, HMAC, signature digitale et XTS 128 pour flash[26].
En décembre 2021, RISC-V ratifie 15 nouvelles extension, dont l'extension de chiffrement standard[27].a
Autres architectures
- Atmel xmega [28] (accélérateur qui s'exécute en parallèle, sans ajout d'instructions spécifiques)
Remove ads
Performance
Dans AES-NI Performance Analyzed, Patrick Schmid et Achim Roos ont noté "des résultats impressionnants dans des applications déjà optimisées pour tirer parti des possibilités offertes par AES-NI"[29]. Une analyse des performances de la bibliothèque Crypto++ a mesuré que la vitesse de chiffrement pour AES en mode GCM passait de 28,0 cycles par octet sur un Pentium 4 sans accélération à 3,5 cycles par octet[30],[31].
Remove ads
Support logiciel
La plupart des compilateurs modernes peuvent générer des instructions AES.
De nombreux logiciels de sécurité et de cryptographie utilisent le jeu d'instructions AES. Cela inclut notamment les composants logiciels suivants :
- Cryptography API: Next Generation (CNG) (nécessite Windows)[32]
- L'API de cryptographie du noyau Linux
- Java 7 HotSpot
- Network Security Services (NSS) versions 3.13 et ultérieures[33] (utilisés par Firefox et Google Chrome)
- Solaris Cryptographic Framework[34] à partir de Solaris 10
- FreeBSD's OpenCrypto API (aesni(4) driver)[35]
- OpenSSL 1.0.1 et ultérieures[36]
- FLAM/FLUC 5.1.08 (publiée le ) et suivantes
- Bloombase Cryptographic Module[37]
Remove ads
Notes et références
Voir aussi
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads