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:

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:

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:

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

Anmerkungen

Verweise

Externe Links