Набор инструкций Advanced Encryption Standardтеперь интегрирован во многие процессоры. Цель набора инструкций - для повышения скорости (а также устойчивости к атакам по побочным каналам ) приложений, выполняющих шифрование и дешифрование с использованием Advanced Encryption Standard (AES). Они часто внедряются d как инструкции, реализующие один цикл AES вместе со специальной версией для последнего цикла, которая имеет немного другой метод.
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 | Assist in AES Inverse Mix Columns |
Следующие процессоры Intel поддерживают набор инструкций AES-NI:
Несколько процессоров AMD поддерживают инструкции AES:
Поддержка 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 hash функции).
Процессоры VIA x86, AMD Geode и (ARM, mv_cesa в Linux) вместо этого используют ускоренную обработку AES на основе драйверов. (См. Crypto API (Linux).)
Следующие микросхемы, хотя и поддерживают аппаратное ускорение AES, не поддерживают AES-NI:
Информация о программировании доступно в Справочном руководстве по архитектуре ARM ARMv8, для профиля архитектуры ARMv8-A (раздел A2.3 «Криптографическое расширение Armv8»).
В AES-NI Performance Analyzed Патрик Шмид и Ахим Роос обнаружили «впечатляющие результаты от нескольких приложений, уже оптимизированных для использования преимуществ AES от Intel. -NI возможность ". Анализ производительности с использованием Crypto++ библиотеки безопасности показал увеличение пропускной способности с примерно 28,0 циклов на байт до 3,5 циклов на байт с AES / GCM по сравнению с Pentium 4 без ускорения.
Большинство современных компиляторов могут выдавать инструкции AES.
Многие программы безопасности и криптографии поддерживают набор инструкций AES, включая следующую базовую инфраструктуру:
RDRAND