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
    Clarkdale (z wyjątkiem Core i3, Pentium i Celeron)
  • Procesory Arrandale (z wyjątkiem Celeron, Pentium, Core i3, Core i5-4XXM)
  • Procesory Sandy Bridge :
    • 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.
  • Procesory Ivy Bridge
    • Tylko wszystkie i5, i7, Xeon i i3-2115C
  • Procesory Haswell (wszystkie oprócz i3-4000m, Pentium i Celeron)
  • Procesory Broadwell (wszystkie z wyjątkiem Pentium i Celeron)
  • Procesory Silvermont/Airmont (wszystkie z wyjątkiem Bay Trail-D i Bay Trail-M)
  • Procesory Goldmont (i nowsze)
  • Procesory Skylake (i nowsze)
  • AMD

    Kilka procesorów AMD obsługuje instrukcje AES:

    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:

    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

    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ą:

    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ż

    Uwagi

    Bibliografia

    Linki zewnętrzne