AES instruktionsuppsättning
En Advanced Encryption Standard-instruktionsuppsättning är nu integrerad i många processorer. Syftet med instruktionsuppsättningen är att förbättra hastigheten och säkerheten för applikationer som utför kryptering och dekryptering med Advanced Encryption Standard ( AES).
De implementeras ofta som instruktioner som implementerar en enda omgång av AES tillsammans med en speciell version för den sista omgången som har en något annorlunda metod.
Sidokanalattackytan för AES reduceras när den implementeras i en instruktionsuppsättning, jämfört med när AES endast implementeras i programvara . [ citat behövs ]
x86-arkitekturprocessorer
AES-NI (eller Intel Advanced Encryption Standard New Instructions ; AES-NI ) var den första större implementeringen. AES-NI är en förlängning av x86 -instruktionsuppsättningsarkitekturen för mikroprocessorer från Intel och AMD som föreslogs av Intel i mars 2008.
Instruktioner
Instruktion | Beskrivning |
---|---|
AESENC
|
Utför en omgång av ett AES-krypteringsflöde |
AESENCLAST
|
Utför den sista omgången av ett AES-krypteringsflöde |
AESDEC
|
Utför en omgång av ett AES-dekrypteringsflöde |
AESDECLAST
|
Utför den sista omgången av ett AES-dekrypteringsflöde |
AESKEYGENASSIST
|
Assistera vid generering av AES runda nyckel |
AESIMC
|
Assistera i AES Inverse Mix Columns |
Intel
Följande Intel- processorer stöder AES-NI-instruktionsuppsättningen:
-
Westmere- baserade processorer, specifikt:
- Westmere-EP (alias Gulftown Xeon 5600-seriens DP-servermodell) processorer
- Clarkdale- processorer (förutom Core i3, Pentium och Celeron)
- Arrandale- processorer (förutom Celeron, Pentium, Core i3, Core i5-4XXM)
-
Sandy Bridge- processorer:
- Desktop: alla utom Pentium, Celeron, Core i3
- Mobil: alla Core i7 och Core i5. Flera leverantörer har levererat BIOS -konfigurationer med tillägget inaktiverat; en BIOS-uppdatering krävs för att aktivera dem.
-
Ivy Bridge- processorer
- Endast alla i5, i7, Xeon och i3-2115C
- Haswell -processorer (alla utom i3-4000m, Pentium och Celeron)
- Broadwell -processorer (alla utom Pentium och Celeron)
- Silvermont/Airmont- processorer (alla utom Bay Trail-D och Bay Trail-M)
- Goldmont (och senare) processorer
- Skylake (och senare) processorer
AMD
Flera AMD- processorer stöder AES-instruktioner:
- Jaguar -processorer och nyare
- Puma- processorer och nyare
- "Heavy Equipment"-processorer
- Bulldozer processorer
- Piledriver -processorer
- Ångvält processorer
- Grävmaskinsprocessorer och nyare
- Zen (och senare) baserade processorer
Hårdvaruacceleration i andra arkitekturer
AES-stöd med oprivilegierade processorinstruktioner är också tillgängligt i de senaste SPARC- processorerna ( T3 , T4 , T5 , M5 och framåt) och i de senaste ARM- processorerna. SPARC T4- processorn, som introducerades 2011, har instruktioner på användarnivå som implementerar AES-rundor. Dessa instruktioner är utöver krypteringskommandon på högre nivå. ARMv8 -A- processorarkitekturen, som tillkännagavs 2011, inklusive ARM Cortex-A53 och A57 (men inte tidigare v7-processorer som Cortex A5, 7, 8, 9, 11, 15 [citat behövs]) har också instruktioner på användarnivå som genomför AES-rundor.
Stöder x86-processorer
VIA x86-processorer , AMD Geode och Marvell Kirkwood (ARM, mv_cesa i Linux) använder istället drivrutinsbaserad accelererad AES-hantering. (Se Crypto API (Linux) .)
Följande chips stöder AES-hårdvaruacceleration, men stöder inte AES-NI:
- AMD Geode LX- processorer
- VIA , med VIA PadLock
ARM arkitektur
Programmeringsinformation finns tillgänglig i ARM Architecture Reference Manual ARMv8, för ARMv8-A arkitekturprofil (avsnitt A2.3 "The Armv8 Cryptographic Extension") .
- ARMv8-A arkitektur
- ARM kryptografiska tillägg som valfritt stöds på ARM Cortex-A30/50/70 kärnor
- Kryptografiska hårdvaruacceleratorer/motorer
RISC-V-arkitektur
Medan RISC-V-arkitekturen inte inkluderar AES-specifika instruktioner, inkluderar ett antal RISC-V-chips integrerade AES-samprocessorer. Exempel inkluderar:
- Dual-core RISC-V 64 bitar Sipeed-M1 stöder AES och SHA256.
- RISC-V-arkitekturbaserad ESP32 -C (liksom Xtensa-baserad ESP32), stöder AES, SHA, RSA, RNG, HMAC, digital signatur och XTS 128 för flash.
- Bouffalo Labs BL602/604 32-bitars RISC-V stöder olika AES- och SHA-varianter.
POWER arkitektur
Sedan Power ISA v.2.07 implementerar instruktionerna vcipher
och vcipyherlast
en omgång AES direkt.
IBM z/Arkitektur
IBM z9 eller senare stordatorprocessorer stöder AES som enkel opcode (KM, KMC) AES ECB/CBC-instruktioner via IBMs CryptoExpress-hårdvara. Dessa enkelinstruktions AES-versioner är därför enklare att använda än Intel NI-versioner, men kanske inte utökas för att implementera andra algoritmer baserade på AES-rundfunktioner (som Whirlpool- och Grøstl - hash-funktionerna).
Andra arkitekturer
- Atmel XMEGA (på-chipaccelerator med parallell exekvering, inte en instruktion)
- SPARC T3 och senare processorer har hårdvarustöd för flera kryptografiska algoritmer, inklusive AES.
- Cavium Octeon MIPS Alla Cavium Octeon MIPS-baserade processorer har hårdvarustöd för flera kryptografiska algoritmer, inklusive AES som använder speciella coprocessor 3 instruktioner.
Prestanda
I AES-NI Performance Analyzed fann Patrick Schmid och Achim Roos "imponerande resultat från en handfull applikationer som redan är optimerade för att dra fördel av Intels AES-NI-kapacitet". En prestandaanalys med hjälp av Crypto++- säkerhetsbiblioteket visade en ökning av genomströmningen från cirka 28,0 cykler per byte till 3,5 cykler per byte med AES / GCM jämfört med en Pentium 4 utan acceleration. [ misslyckad verifiering ] [ bättre källa behövs ]
Stödprogramvara
De flesta moderna kompilatorer kan avge AES-instruktioner.
Mycket säkerhets- och kryptografiprogramvara stöder AES-instruktionsuppsättningen, inklusive följande anmärkningsvärda kärninfrastruktur:
- Apples FileVault 2 heldiskkryptering i macOS 10.10+
- NonStop SSH2 , NonStop cF SSL Library och BackBox VTC Software i HPE Tandem NonStop OS L-serien
- Cryptography API: Next Generation (CNG) (kräver Windows 7)
- Linuxs Crypto API
- Java 7 HotSpot
- Network Security Services (NSS) version 3.13 och senare (används av Firefox och Google Chrome )
- Solaris Cryptographic Framework på Solaris 10 och framåt
- FreeBSD :s OpenCrypto API (aesni(4) drivrutin)
- OpenSSL 1.0.1 och senare
- GnuTLS
- Libsodium
- VeraCrypt
- Gå till programmeringsspråk
- BitLocker
- Bloombase
- Vormetrisk
En randanvändning av AES-instruktionsuppsättningen innebär att den används på blockchiffer med en liknande strukturerad S-box , med användning av affin isomorfism för att konvertera mellan de två. SM4 och Camellia har accelererats med AES-NI.
Se även
- Advanced Vector Extensions (AVX)
- CLMUL instruktionsset
- FMA-instruktionsuppsättning (FMA3, FMA4)
RDRAND
Anteckningar
externa länkar
- Intel Advanced Encryption Standard Instructions (AES-NI)
- AES-instruktionsuppsättning whitepaper (2,93 MiB, PDF) från Intel