AES-Befehlssatz - AES instruction set
In vielen Prozessoren ist mittlerweile ein Advanced Encryption Standard-Befehlssatz integriert. Der Zweck des Befehlssatzes besteht darin, die Geschwindigkeit und Sicherheit von Anwendungen zu verbessern, die eine Verschlüsselung und Entschlüsselung mit dem Advanced Encryption Standard (AES) durchführen.
Sie werden oft als Anweisungen implementiert, die eine einzelne Runde von AES zusammen mit einer speziellen Version für die letzte Runde implementieren, die eine etwas andere Methode hat.
Die Angriffsfläche des Seitenkanals von AES wird reduziert, wenn es in einem Befehlssatz implementiert wird, verglichen mit einer reinen Softwareimplementierung von AES.
Prozessoren mit x86-Architektur
AES-NI (oder Intel Advanced Encryption Standard New Instructions ; AES-NI ) war die erste große Implementierung. AES-NI ist eine Erweiterung der x86- Befehlssatzarchitektur für Mikroprozessoren von Intel und AMD, die von Intel im März 2008 vorgeschlagen wurde.
Anweisungen
Anweisung | Beschreibung |
---|---|
AESENC
|
Führen Sie eine Runde eines AES-Verschlüsselungsflusses durch |
AESENCLAST
|
Führen Sie die letzte Runde eines AES-Verschlüsselungsflusses durch |
AESDEC
|
Führen Sie eine Runde eines AES-Entschlüsselungsflusses durch |
AESDECLAST
|
Führen Sie die letzte Runde eines AES-Entschlüsselungsflusses durch |
AESKEYGENASSIST
|
Unterstützung bei der Generierung von AES-Rundenschlüsseln |
AESIMC
|
Assist in AES Inverse Mix-Spalten |
Intel
Die folgenden Intel- Prozessoren unterstützen den AES-NI-Befehlssatz:
-
Westmere- basierte Prozessoren, insbesondere:
- Westmere-EP (auch bekannt als Gulftown Xeon 5600-Serie DP-Servermodell) Prozessoren
- Clarkdale- Prozessoren (außer Core i3, Pentium und Celeron)
- Arrandale- Prozessoren (außer Celeron, Pentium, Core i3, Core i5-4XXM)
-
Sandy-Bridge- Prozessoren:
- Desktop: alle außer Pentium, Celeron, Core i3
- Mobil: alle Core i7 und Core i5. Mehrere Anbieter haben BIOS- Konfigurationen mit deaktivierter Erweiterung ausgeliefert; ein BIOS-Update ist erforderlich, um sie zu aktivieren.
-
Ivy Bridge- Prozessoren
- Nur alle i5, i7, Xeon und i3-2115C
- Haswell- Prozessoren (alle außer i3-4000m, Pentium und Celeron)
- Broadwell- Prozessoren (alle außer Pentium und Celeron)
- Silvermont/Airmont- Prozessoren (alle außer Bay Trail-D und Bay Trail-M)
- Goldmont (und neuere ) Prozessoren
- Skylake (und neuere) Prozessoren
AMD
Mehrere AMD- Prozessoren unterstützen AES-Anweisungen:
- Jaguar- Prozessoren und neuer
- Puma- Prozessoren und neuer
- "Heavy Equipment"-Prozessoren
- Bulldozer- Prozessoren
- Piledriver- Prozessoren
- Dampfwalze Prozessoren
- Baggerprozessoren und neuer
- Zen (und höher) basierende Prozessoren
Hardwarebeschleunigung in anderen Architekturen
AES-Unterstützung mit unprivilegierten Prozessorbefehlen ist auch in den neuesten SPARC- Prozessoren ( T3 , T4 , T5 , M5 und vorwärts) und in den neuesten ARM- Prozessoren verfügbar . Der 2011 eingeführte SPARC T4- Prozessor verfügt über Anweisungen auf Benutzerebene, die AES-Runden implementieren. Diese Anweisungen gelten zusätzlich zu den Verschlüsselungsbefehlen höherer Ebene. Die 2011 angekündigte ARMv8-A- Prozessorarchitektur, einschließlich der ARM Cortex-A53 und A57 (jedoch nicht früherer v7-Prozessoren wie Cortex A5, 7, 8, 9, 11, 15) verfügt ebenfalls über Anweisungen auf Benutzerebene, die AES-Runden implementieren . Im August 2012 kündigte IBM an, dass die dann kommende Power7+ -Architektur AES-Unterstützung haben wird. Die Befehle in diesen Architekturen entsprechen nicht direkt den AES-NI-Befehlen, implementieren jedoch eine ähnliche Funktionalität.
IBM z9 oder neuere Mainframe-Prozessoren unterstützen AES als Single-Opcode (KM, KMC) AES ECB/CBC-Befehle über IBMs CryptoExpress-Hardware. Diese Single-Instruction-AES-Versionen sind daher einfacher zu verwenden als die von Intel NI, können jedoch nicht erweitert werden, um andere Algorithmen zu implementieren, die auf AES-Rundenfunktionen basieren (wie die Whirlpool- und Grøstl- Hash-Funktionen).
Unterstützung von x86-CPUs
VIA x86-CPUs , AMD Geode und Marvell Kirkwood (ARM, mv_cesa in Linux) verwenden stattdessen treiberbasiertes beschleunigtes AES-Handling. (Siehe Krypto-API (Linux) .)
Die folgenden Chips unterstützen zwar die AES-Hardwarebeschleunigung, aber nicht AES-NI:
- AMD Geode LX- Prozessoren
- VIA , mit VIA PadLock
ARM-Architektur
Programmierinformationen finden Sie im ARM Architecture Reference Manual ARMv8, für das ARMv8-A-Architekturprofil (Abschnitt A2.3 „Die Verschlüsselungserweiterung Armv8“) .
- ARMv8-A-Architektur
- ARM-Kryptografieerweiterungen werden optional auf ARM Cortex-A30/50/70-Kernen unterstützt
- Kryptografische Hardware-Beschleuniger/-Engines
RISC-V-Architektur
Während die RISC-V-Architektur keine AES-spezifischen Anweisungen enthält, enthalten eine Reihe von RISC-V-Chips integrierte AES-Coprozessoren. Beispiele beinhalten:
- Dual-Core RISC-V 64 Bit Sipeed-M1 unterstützt AES und SHA256.
- RISC-V-Architektur basierter ESP32 -C (sowie Xtensa-basierter ESP32), unterstützt AES, SHA, RSA, RNG, HMAC, digitale Signatur und XTS 128 für Flash.
- Bouffalo Labs BL602/604 32-Bit-RISC-V unterstützt verschiedene AES- und SHA-Varianten.
Andere Architekturen
- Atmel XMEGA (On-Chip-Beschleuniger mit paralleler Ausführung, keine Anweisung)
- SPARC T3 und spätere Prozessoren bieten Hardwareunterstützung für mehrere kryptografische Algorithmen, einschließlich AES.
- Cavium Octeon MIPS Alle Cavium Octeon MIPS-basierten Prozessoren bieten Hardware-Unterstützung für mehrere kryptografische Algorithmen, einschließlich AES mit speziellen Coprozessor-3-Befehlen.
Leistung
In AES-NI Performance Analyzed fanden Patrick Schmid und Achim Roos "beeindruckende Ergebnisse aus einer Handvoll Anwendungen, die bereits optimiert wurden, um Intels AES-NI-Fähigkeit zu nutzen". Eine Leistungsanalyse mit der Sicherheitsbibliothek Crypto++ zeigte eine Steigerung des Durchsatzes von ca. 28,0 Zyklen pro Byte auf 3,5 Zyklen pro Byte mit AES / GCM gegenüber einem Pentium 4 ohne Beschleunigung.
Unterstützende Software
Die meisten modernen Compiler können AES-Befehle ausgeben.
Viele Sicherheits- und Kryptografie-Software unterstützt den AES-Befehlssatz, einschließlich der folgenden bemerkenswerten Kerninfrastruktur:
- Apples FileVault 2 -Festplattenverschlüsselung in macOS 10.10+
- NonStop SSH2 , NonStop cF SSL Library und BackBox VTC Software in HPE Tandem NonStop OS L-Serie
- Kryptographie-API: Next Generation (CNG) (erfordert Windows 7)
- Krypto-API von Linux
- Java 7 HotSpot
- Network Security Services (NSS) Version 3.13 und höher (von Firefox und Google Chrome verwendet )
- Solaris Cryptographic Framework ab Solaris 10
- OpenCrypto API von FreeBSD (aesni(4)-Treiber)
- OpenSSL 1.0.1 und höher
- GnuTLS
- Libnatrium
- VeraCrypt
- Gehen Sie zur Programmiersprache
- BitLocker
Eine Randanwendung des AES-Befehlssatzes beinhaltet die Verwendung bei Blockchiffren mit einer ähnlich strukturierten S-Box , wobei affiner Isomorphismus verwendet wird , um zwischen den beiden zu konvertieren. SM4 und Camellia wurden mit AES-NI beschleunigt.
Siehe auch
- Erweiterte Vektorerweiterungen (AVX)
- CLMUL-Befehlssatz
- FMA-Befehlssatz (FMA3, FMA4)
RDRAND
Anmerkungen
Verweise
Externe Links
- Intel Advanced Encryption Standardanweisungen (AES-NI)
- Whitepaper zum AES-Befehlssatz (2,93 MiB, PDF) von Intel