Jeu d'instructions AES

Un article de Wikipédia, l'encyclopédie libre.

Le jeu d'instruction 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).

Nouvelles instructions[modifier | modifier le code]

Instruction Description[2]
AESENC Effectue un tour de chiffrement AES
AESENCLAST Effectue le dernier tour de chiffrement AES
AESDEC Effectue un tour de déchiffrement AES
AESDECLAST Effectue le dernier tour de déchiffrement AES
AESKEYGENASSIST Aide à la génération des clés de tour AES
AESIMC Aide à l'opération Inverse Mix Columns
PCLMULQDQ Multiplication « Carry-Less » (CLMUL)[3].

Architectures Intel et AMD x86[modifier | modifier le code]

  • 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 pour PC de bureau : tous sauf les Pentium, Celeron et Core i3[5],[6].
      • Processeurs pour PC portables : tous les Core i7 et Core i5. Plusieurs fabricants ont fourni des configurations de BIOS désactivant l'extension[7]. UNe mise à jour du BIOS est nécessaire pour la réactiver[8].
    • Processeurs Intel Ivy Bridge
      • Tous les processeurs i5, i7 et Xeon, et le processeur i3-2115C[9].
    • 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]
  • AMD
    • Microarchitecture AMD Bulldozer[12].
    • Microarchitecture AMD Piledriver.
    • Microarchitecture AMD Steamroller.
    • Microarchitecture AMD Jaguar.
    • Microarchitecture AMD Puma.
    • Microarchitecture AMD Zen.

Accélération matérielle sur d'autres architectures[modifier | modifier le code]

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écénts. Le processeur SPARC T4, disponible depuis 2011, possède des instructions utilisateur effectuant des tours de l'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[modifier | modifier le code]

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[modifier | modifier le code]

  • 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é 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[modifier | modifier le code]

Au niveau de l'architecture RISC-V :

  • Le Sipeed M1, comprend un accélérateur pour AES et SHA256[25].
  • L'ESP32-C, qui utilise l'architecture RISC-V plutôt qu'Xtensa du premier ESP32, comporte un processeur cryptographique accélérant AES, SHA, RSA, RNG (en), HMAC, signature digitale et XTS 128 pour flash[26].

Autres architectures[modifier | modifier le code]

  • Atmel xmega [27] (accélérateur qui s'exécute en parallèle, sans ajout d'instructions spécifiques)

Performance[modifier | modifier le code]

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"[28]. 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[29],[30].

Support logiciel[modifier | modifier le code]

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 :

Notes et références[modifier | modifier le code]

  1. « Intel Software Network » (version du 7 avril 2008 sur l'Internet Archive), Intel
  2. Shay Gueron, « Intel Advanced Encryption Standard (AES) Instruction Set White Paper », Intel, (consulté le 20 septembre 2012)
  3. « Carry-Less Multiplication », Intel
  4. ARK: Advanced Search
  5. AnandTech - The Sandy Bridge Review: Intel Core i7-2600K, i5-2500K and Core i3-2100 Tested
  6. Compare Intel® Products
  7. AES-NI support in TrueCrypt (Sandy Bridge problem)
  8. « Some products can support AES New Instructions with a Processor Configuration update, in particular, i7-2630QM/i7-2635QM, i7-2670QM/i7-2675QM, i5-2430M/i5-2435M, i5-2410M/i5-2415M. Please contact OEM for the BIOS that includes the latest Processor configuration update. », sur ark.intel.com
  9. [1]
  10. (en) « Intel® Core™ i3-4000M Processor (3M Cache, 2.40 GHz) Product Specifications », sur intel.com (consulté le 23 septembre 2020).
  11. Recherche avancée sur les caractéristiques des produits
  12. « Following Instructions » (version du 26 novembre 2010 sur l'Internet Archive), AMD,
  13. Dan Anderson, « SPARC T4 OpenSSL Engine », Oracle, (consulté le 20 septembre 2012)
  14. Richard Grisenthwaite, « ARMv8-A Technology Preview », ARM, (consulté le 20 septembre 2012)
  15. Timothy Prickett Morgan, « All the sauce on Big Blue's hot chip: More on Power7+ », The Register, (consulté le 20 septembre 2012)
  16. « IBM System z10 cryptography », IBM (consulté le 27 janvier 2014)
  17. « AMD Geode™ LX Processor Family Technical Specifications », AMD
  18. « VIA Padlock Security Engine », VIA (consulté le 14 novembre 2011)
  19. a et b Cryptographic Hardware Accelerators on OpenWRT.org
  20. « VIA Eden-N Processors », VIA (consulté le 14 novembre 2011)
  21. « VIA C7 Processors », VIA (consulté le 14 novembre 2011)
  22. Security System driver status
  23. a et b « ARM® Cortex®-A53 MPCore ProcessorCryptography Extension », sur ARM.com
  24. « RK3399 datasheet V1.8 », sur Rockchip.fr
  25. (en) « Sipeed M1 – an AI Embedded Platform for Edge Computing », sur electronics-lab.com,
  26. (en) Jean-Luc Aufranc, « ESP32-C3 WiFi & BLE RISC-V processor is pin-to-pin compatible with ESP8266 », sur CNX-Software,
  27. « Using the XMEGA built-in AES accelerator », sur atmel.com (consulté le 3 décembre 2014)
  28. P. Schmid et A. Roos, « AES-NI Performance Analyzed », Tom's Hardware, (consulté le 10 août 2010)
  29. T. Krovetz et W. Dai, « How to get fast AES calls? », Crypto++ user group, (consulté le 11 août 2010)
  30. « Crypto++ 5.6.0 Pentium 4 Benchmarks » (version du 19 septembre 2010 sur l'Internet Archive)
  31. « Intel Advanced Encryption Standard Instructions (AES-NI) » (version du 7 juillet 2010 sur l'Internet Archive), Intel,
  32. « AES-NI enhancements to NSS on Sandy Bridge systems », sur bugzilla.mozilla.org, (consulté le 25 novembre 2012)
  33. « System Administration Guide: Security Services, Chapter 13 Solaris Cryptographic Framework (Overview) », Oracle, (consulté le 27 novembre 2012)
  34. « FreeBSD 8.2 Release Notes », FreeBSD.org, (consulté le 18 décembre 2011)
  35. OpenSSL: CVS Web Interface

Voir aussi[modifier | modifier le code]

Articles connexes[modifier | modifier le code]

Liens externes[modifier | modifier le code]