Zestaw instrukcji AES - AES instruction set
Zestaw instrukcji Advanced Encryption Standard jest teraz zintegrowany z wieloma procesorami. Celem zestawu instrukcji jest poprawa szybkości i bezpieczeństwa aplikacji wykonujących szyfrowanie i deszyfrowanie przy użyciu Advanced Encryption Standard (AES).
Często są implementowane jako instrukcje implementujące pojedynczą rundę AES wraz ze specjalną wersją dla ostatniej rundy, która ma nieco inną metodę.
Powierzchnia ataku kanału bocznego AES jest zmniejszona, gdy jest zaimplementowana w zestawie instrukcji, w porównaniu do sytuacji, gdy AES jest zaimplementowany tylko w oprogramowaniu.
procesory architektury x86
AES-NI (lub Intel Advanced Encryption Standard New Instructions ; AES-NI ) była pierwszą poważną implementacją. AES-NI jest rozszerzeniem x86 zestaw instrukcji architektury dla mikroprocesorów z Intelem i AMD proponowane przez firmę Intel w marcu 2008 roku.
Instrukcje
Instrukcja | Opis |
---|---|
AESENC
|
Wykonaj jedną rundę przepływu szyfrowania AES |
AESENCLAST
|
Wykonaj ostatnią rundę przepływu szyfrowania AES |
AESDEC
|
Wykonaj jedną rundę przepływu deszyfrowania AES |
AESDECLAST
|
Wykonaj ostatnią rundę deszyfrowania AES |
AESKEYGENASSIST
|
Pomoc w generowaniu okrągłego klucza AES |
AESIMC
|
Pomoc w kolumnach AES Inverse Mix |
Intel
Następujące procesory Intel obsługują zestaw instrukcji AES-NI:
-
Procesory oparte na Westmere , w szczególności:
- Procesory Westmere-EP (inaczej model serwera DP Gulftown Xeon serii 5600)
- Procesory
- Procesory Arrandale (z wyjątkiem Celeron, Pentium, Core i3, Core i5-4XXM)
- Komputer stacjonarny: wszystkie oprócz Pentium, Celeron, Core i3
- Urządzenia mobilne: wszystkie Core i7 i Core i5. Kilku dostawców dostarczyło konfiguracje BIOS z wyłączonym rozszerzeniem; do ich włączenia wymagana jest aktualizacja systemu BIOS.
- Tylko wszystkie i5, i7, Xeon i i3-2115C
AMD
Kilka procesorów AMD obsługuje instrukcje AES:
- Procesory Jaguar i nowsze
- Procesory Puma i nowsze
- Procesory „ciężkiego sprzętu”
- Procesory buldożerów
- Procesory Piledriver
- Procesory Steamroller
- Procesory do koparek i nowsze
- Procesory oparte na Zen (i nowszych)
Akceleracja sprzętowa w innych architekturach
Obsługa AES z nieuprzywilejowanymi instrukcjami procesora jest również dostępna w najnowszych procesorach SPARC ( T3 , T4 , T5 , M5 i forward) oraz w najnowszych procesorach ARM . SPARC T4 procesor, wprowadzony w 2011 roku, ma instrukcje na poziomie użytkownika wykonawczych rund AES. Te instrukcje stanowią dodatek do poleceń szyfrowania wyższego poziomu. ARMv8-A architektura procesora, ogłosił w 2011 roku, wraz z (poprzednimi procesorami ale nie v7 jak Cortex A5, 7, 8, 9, 11, 15) ARM Cortex-A53 i A57 również instrukcje na poziomie użytkownika, które realizują rund AES . W sierpniu 2012 r. IBM ogłosił, że nadchodząca architektura Power7+ będzie obsługiwała AES. Polecenia w tych architekturach nie są bezpośrednio równoważne z poleceniami AES-NI, ale implementują podobną funkcjonalność.
Procesory mainframe IBM z9 lub nowsze obsługują AES jako instrukcje z pojedynczym kodem (KM, KMC) AES ECB/CBC za pośrednictwem sprzętu IBM CryptoExpress. Te jednoinstrukcyjne wersje AES są zatem łatwiejsze w użyciu niż wersje Intel NI, ale nie można ich rozszerzyć o implementację innych algorytmów opartych na okrągłych funkcjach AES (takich jak funkcje mieszające Whirlpool i Grøstl ).
Obsługa procesorów x86
Procesory VIA x86 , AMD Geode i Marvell Kirkwood (ARM, mv_cesa w systemie Linux) zamiast tego używają akcelerowanej obsługi AES opartej na sterownikach. (Zobacz Crypto API (Linux) .)
Następujące układy, obsługujące akcelerację sprzętową AES, nie obsługują AES-NI:
- AMD Geode LX procesory
- VIA , za pomocą kłódki VIA
Architektura ARM
Informacje dotyczące programowania są dostępne w Podręczniku referencyjnym architektury ARM ARMv8, dla profilu architektury ARMv8-A (Sekcja A2.3 „Rozszerzenie kryptograficzne Armv8”) .
- Architektura ARMv8-A
- Rozszerzenia kryptograficzne ARM opcjonalnie obsługiwane przez rdzenie ARM Cortex-A30/50/70
- Akceleratory sprzętowe/silniki kryptograficzne
-
Wszyscy zwycięzcy
- A10, A20, A30, A31, A80, A83T, H3 i A64 przy użyciu systemu bezpieczeństwa
-
Broadcom
- BCM5801/BCM5805/BCM5820 przy użyciu procesora bezpieczeństwa
-
Półprzewodniki NXP
- i.MX6 r.
-
Qualcomm
- Lwia paszcza od 805
-
Rockchip
- Od serii RK30xx
-
Samsung
- Od serii Exynos 3
-
Wszyscy zwycięzcy
Architektura RISC-V
Chociaż architektura RISC-V nie zawiera instrukcji specyficznych dla AES, wiele układów RISC-V zawiera zintegrowane koprocesory AES. Przykłady zawierają:
- Dwurdzeniowy 64-bitowy procesor RISC-V Sipeed-M1 obsługuje AES i SHA256.
- ESP32- C oparty na architekturze RISC-V (a także ESP32 oparty na Xtensa), obsługuje AES, SHA, RSA, RNG, HMAC, podpis cyfrowy i XTS 128 dla pamięci flash.
- Bouffalo Labs BL602/604 32-bitowy RISC-V obsługuje różne warianty AES i SHA.
Inne architektury
- Atmel XMEGA ( akcelerator na chipie z równoległym wykonaniem, a nie instrukcją)
- Procesory SPARC T3 i nowsze obsługują sprzętową obsługę kilku algorytmów kryptograficznych, w tym AES.
- Cavium Octeon MIPS Wszystkie procesory Cavium Octeon MIPS mają sprzętową obsługę kilku algorytmów kryptograficznych, w tym AES przy użyciu specjalnych instrukcji koprocesora 3.
Występ
W AES-NI Performance Analyzed Patrick Schmid i Achim Roos stwierdzili „imponujące wyniki z kilku aplikacji już zoptymalizowanych pod kątem wykorzystania możliwości Intel AES-NI”. Analiza wydajności przy użyciu biblioteki bezpieczeństwa Crypto++ wykazała wzrost przepustowości z około 28,0 cykli na bajt do 3,5 cykli na bajt z AES / GCM w porównaniu z Pentium 4 bez akceleracji.
Oprogramowanie wspomagające
Większość nowoczesnych kompilatorów może emitować instrukcje AES.
Wiele programów zabezpieczających i kryptograficznych obsługuje zestaw instrukcji AES, w tym następującą godną uwagi infrastrukturę podstawową:
- Pełne szyfrowanie dysku Apple FileVault 2 w systemie macOS 10.10+
- NonStop SSH2 , NonStop cF SSL Library i oprogramowanie BackBox VTC w HPE Tandem NonStop OS serii L
- Cryptography API: Next Generation (CNG) (wymaga systemu Windows 7)
- Crypto API dla Linuksa
- HotSpot Java 7
- Network Security Services (NSS) w wersji 3.13 i nowszych (używane przez Firefox i Google Chrome )
- Solaris kryptograficzna ramowa na Solaris 10 r
- FreeBSD jest OpenCrypto API (aesni (4) sterownik)
- OpenSSL 1.0.1 i nowsze
- GnuTLS
- Libsod
- VeraCrypt
- Idź język programowania
- BitLocker
Poboczne użycie zestawu instrukcji AES polega na użyciu go w szyfrach blokowych o podobnej strukturze S-box , przy użyciu izomorfizmu afinicznego do konwersji między nimi. SM4 i Camellia zostały przyspieszone za pomocą AES-NI.
Zobacz też
- Zaawansowane rozszerzenia wektorowe (AVX)
- Zestaw instrukcji CLMUL
- Zestaw instrukcji FMA (FMA3, FMA4)
RDRAND
Uwagi
Bibliografia
Linki zewnętrzne
- Standardowe instrukcje Intel Advanced Encryption (AES-NI)
- Dokumentacja zestawu instrukcji AES (2,93 MiB, PDF) firmy Intel