Набор инструкций AES - AES instruction set
Набор команд Advanced Encryption Standard теперь интегрирован во многие процессоры. Целью набора инструкций является повышение скорости и безопасности приложений, выполняющих шифрование и дешифрование с использованием Advanced Encryption Standard (AES).
Они часто реализуются как инструкции, реализующие один цикл AES вместе со специальной версией для последнего цикла, которая имеет немного другой метод.
Сторона канала атаки поверхность AES снижается при реализации в наборе команд, по сравнению с тем, когда AES реализована только в программном обеспечении.
процессоры архитектуры x86
AES-NI (или новые инструкции Intel Advanced Encryption Standard ; AES-NI ) был первой крупной реализацией. AES-NI является расширение x86 архитектуру набора инструкций для микропроцессоров от Intel и AMD , предложенный Intel в марте 2008 года.
инструкции
Инструкция | Описание |
---|---|
AESENC
|
Выполните один раунд потока шифрования AES |
AESENCLAST
|
Выполните последний раунд потока шифрования AES |
AESDEC
|
Выполните один раунд потока дешифрования AES |
AESDECLAST
|
Выполните последний раунд потока дешифрования AES |
AESKEYGENASSIST
|
Помощь в генерации раундового ключа AES |
AESIMC
|
Помощь в столбцах обратного микширования AES |
Intel
Следующие процессоры Intel поддерживают набор инструкций AES-NI:
-
Процессоры на базе Westmere , а именно:
- Процессоры Westmere-EP (также известные как модель сервера DP Gulftown Xeon 5600)
- Процессоры
- Процессоры Arrandale (кроме Celeron, Pentium, Core i3, Core i5-4XXM)
- Настольный компьютер: все, кроме Pentium, Celeron, Core i3
- Мобильные: все Core i7 и Core i5. Некоторые поставщики поставляют конфигурации BIOS с отключенным расширением; для их включения требуется обновление BIOS.
- Только все i5, i7, Xeon и i3-2115C
AMD
Некоторые процессоры AMD поддерживают инструкции AES:
- Процессоры Jaguar и новее
- Процессоры Puma и новее
- Переработчики "тяжелого оборудования"
- Бульдозерные процессоры
- Процессоры Piledriver
- Процессоры Steamroller
- Экскаваторные процессоры и новее
- Процессоры на базе Zen (и более поздних версий)
Аппаратное ускорение в других архитектурах
Поддержка AES с непривилегированными инструкциями процессора также доступна в последних процессорах SPARC ( T3 , T4 , T5 , M5 и более поздних версиях ) и в последних процессорах ARM . Процессор SPARC T4 , представленный в 2011 году, имеет инструкции пользовательского уровня, реализующие циклы AES. Эти инструкции являются дополнением к командам шифрования более высокого уровня. Архитектура процессора ARMv8-A , анонсированная в 2011 году, включая ARM Cortex-A53 и A57 (но не предыдущие процессоры v7, такие как Cortex A5, 7, 8, 9, 11, 15), также имеют инструкции пользовательского уровня, которые реализуют циклы AES. . В августе 2012 года IBM объявила, что будущая архитектура Power7 + будет иметь поддержку AES. Команды в этих архитектурах не эквивалентны напрямую командам AES-NI, но реализуют аналогичные функции.
Процессоры мэйнфреймов IBM z9 или более поздних версий поддерживают AES как инструкции AES ECB / CBC с одним кодом операции (KM, KMC) через оборудование IBM CryptoExpress. Таким образом, эти версии AES с одной инструкцией проще в использовании, чем версии Intel NI, но не могут быть расширены для реализации других алгоритмов, основанных на циклических функциях AES (таких как хэш-функции Whirlpool и Grøstl ).
Поддержка процессоров x86
Процессоры VIA x86 , AMD Geode и Marvell Kirkwood (ARM, mv_cesa в Linux) вместо этого используют ускоренную обработку AES на основе драйверов. (См. Crypto API (Linux) .)
Следующие микросхемы, хотя и поддерживают аппаратное ускорение AES, не поддерживают AES-NI:
- AMD Geode LX процессоров
- VIA , используя VIA PadLock
ARM архитектура
Информация о программировании доступна в Справочном руководстве по архитектуре ARM ARMv8 для профиля архитектуры ARMv8-A (раздел A2.3 «Криптографическое расширение Armv8») .
- ARMv8-A архитектура
- Криптографические расширения ARM опционально поддерживаются на ядрах ARM Cortex-A30 / 50/70
- Криптографические аппаратные ускорители / движки
Архитектура RISC-V
Хотя архитектура RISC-V не включает инструкции, специфичные для AES, ряд микросхем RISC-V включает интегрированные сопроцессоры AES. Примеры включают:
- Двухъядерный 64-битный RISC-V Sipeed-M1 поддерживает AES и SHA256.
- ESP32 -C на основе архитектуры RISC-V (а также ESP32 на базе Xtensa), поддержка AES, SHA, RSA, RNG, HMAC, цифровой подписи и XTS 128 для флэш-памяти.
- Bouffalo Labs BL602 / 604 32-битный RISC-V поддерживает различные варианты AES и SHA.
Другие архитектуры
- Atmel XMEGA (ускоритель на кристалле с параллельным выполнением, а не инструкция)
- Процессоры SPARC T3 и более поздних версий имеют аппаратную поддержку нескольких криптографических алгоритмов, включая AES.
- Cavium Octeon MIPS Все процессоры на базе Cavium Octeon MIPS имеют аппаратную поддержку нескольких криптографических алгоритмов, включая AES с использованием специальных инструкций сопроцессора 3.
Представление
В исследовании AES-NI Performance Analyzed Патрик Шмид и Ахим Роос обнаружили «впечатляющие результаты от нескольких приложений, уже оптимизированных для использования возможностей Intel AES-NI». Анализ производительности с использованием библиотеки безопасности Crypto ++ показал увеличение пропускной способности с примерно 28,0 циклов на байт до 3,5 циклов на байт с AES / GCM по сравнению с Pentium 4 без ускорения.
Вспомогательное программное обеспечение
Большинство современных компиляторов могут выдавать инструкции AES.
Многие программы безопасности и криптографии поддерживают набор инструкций AES, включая следующую примечательную базовую инфраструктуру:
- Полное шифрование диска Apple FileVault 2 в macOS 10.10+
- Программное обеспечение NonStop SSH2 , NonStop cF SSL Library и BackBox VTC в HPE Tandem NonStop OS L-серии
- API криптографии: новое поколение (CNG) (требуется Windows 7)
- Crypto API Linux
- Java 7 HotSpot
- Службы сетевой безопасности (NSS) версии 3.13 и выше (используются Firefox и Google Chrome )
- Solaris Cryptographic Framework на Solaris 10 и далее
- FreeBSD «ы OpenCrypto (API AESNI (4) драйвер)
- OpenSSL 1.0.1 и выше
- GnuTLS
- Либсодиум
- VeraCrypt
- Язык программирования Go
- BitLocker
Дополнительное использование набора инструкций AES включает его использование в блочных шифрах с S-блоком аналогичной структуры с использованием аффинного изоморфизма для преобразования между ними. SM4 и Camellia были ускорены с помощью AES-NI.
Смотрите также
- Расширенные векторные расширения (AVX)
- Набор инструкций CLMUL
- Набор инструкций FMA (FMA3, FMA4)
RDRAND
Примечания
использованная литература
внешние ссылки
- Стандартные инструкции Intel Advanced Encryption (AES-NI)
- Технический документ набора инструкций AES (2,93 МБ, PDF) от Intel