Набор инструкций AES - AES instruction set
An Набор инструкций Advanced Encryption Standard теперь интегрирован во многие процессоры. Цель набора инструкций - улучшить скорость (а также устойчивость к атаки по побочным каналам ) приложений, выполняющих шифрование и дешифрование с помощью Расширенный стандарт шифрования (AES). Они часто реализуются в виде инструкций, реализующих один цикл AES вместе со специальной версией для последнего цикла, которая имеет несколько иной метод.
процессоры архитектуры x86
AES-NI (или Intel Новые инструкции стандарта Advanced Encryption Standard; AES-NI) была первой крупной реализацией. AES-NI является расширением x86 архитектура набора команд за микропроцессоры из Intel и AMD предложенный Intel в марте 2008 года.[1]
инструкции
Инструкция | Описание[2] |
---|---|
AESENC | Выполните один раунд потока шифрования AES |
ЭЗЕНКЛАСТ | Выполните последний раунд потока шифрования AES |
AESDEC | Выполните один раунд потока дешифрования AES |
AESDECLAST | Выполните последний раунд потока дешифрования AES |
AESKEYGENASSIST | Помощь в генерации раундового ключа AES[примечание 1] |
AESIMC | Помощь в AES Колонны обратного смешения |
Intel
Следующее Intel процессоры поддерживают набор инструкций AES-NI:[3]
- Westmere на базе процессоров, а именно:
- Песчаный Мост процессоры:
- Ivy Bridge процессоры
- Все i5, i7, Xeon и i3-2115C[8] Только
- Haswell процессоры (все кроме i3-4000m,[9] Pentium и Celeron)
- Broadwell процессоры (все кроме Pentium и Celeron)
- Сильвермонт / Эйрмонт процессоры (все, кроме Bay Trail-D и Bay Trail-M)
- Goldmont (и более поздние) процессоры
- Skylake (и более поздние) процессоры
AMD
Несколько AMD процессоры поддерживают инструкции AES:
- Ягуар процессоры и новее
- Пума процессоры и новее
- Переработчики "тяжелого оборудования"
- Бульдозер процессоры[10]
- Копер процессоры
- Каток процессоры
- Экскаватор процессоры и новее
- Дзен (и новее) на базе процессоров
Аппаратное ускорение в других архитектурах
Поддержка AES с инструкциями непривилегированного процессора также доступна в последней версии. SPARC процессоры (Т3, Т4, Т5, M5 и вперед) и в последних РУКА процессоры. В SPARC T4 Процессор, представленный в 2011 году, имеет инструкции уровня пользователя, реализующие циклы AES.[11] Эти инструкции являются дополнением к командам шифрования более высокого уровня. В ARMv8-A архитектура процессора, анонсированная в 2011 году, включая ARM Cortex-A53 и A57 (но не предыдущие процессоры v7, такие как Cortex A5, 7, 8, 9, 11, 15[нужна цитата ]) также имеют инструкции на уровне пользователя, которые реализуют раунды AES.[12] В августе 2012 г. IBM объявил[13] что предстоящий Мощность7 + архитектура будет иметь поддержку AES. Команды в этих архитектурах не эквивалентны напрямую командам AES-NI, но реализуют аналогичные функции.
Процессоры мэйнфреймов IBM z9 или новее поддерживают AES как инструкции AES ECB / CBC с одним кодом операции (KM, KMC) через оборудование IBM CryptoExpress.[14] Таким образом, эти версии AES с одной инструкцией проще использовать, чем версии Intel NI, но не могут быть расширены для реализации других алгоритмов, основанных на циклических функциях AES (например, Водоворот и Grøstl хэш-функции).
Поддержка процессоров x86
Процессоры VIA x86, AMD Geode, и Марвелл Кирквуд (ARM, mv_cesa в Linux) вместо этого используют ускоренную обработку AES на основе драйверов. (Видеть Crypto API (Linux).)
Следующие микросхемы, хотя и поддерживают аппаратное ускорение AES, не поддерживают AES-NI:
ARM архитектура
Информация о программировании доступна в Справочное руководство по архитектуре ARM ARMv8, для профиля архитектуры ARMv8-A (раздел A2.3 «Криптографическое расширение Armv8»).[20]
- ARMv8-A архитектура
- Криптографические расширения ARM опционально поддерживаются на ядрах ARM Cortex-A30 / 50/70
- Криптографические аппаратные ускорители / движки
- Allwinner
- A10, A20, A30, A31, A80, A83T, H3 и A64 с использованием Система безопасности[21]
- Broadcom
- BCM5801 / BCM5805 / BCM5820 с использованием Процессор безопасности[17]
- Полупроводники NXP
- i.MX6 и новее[22]
- Qualcomm
- Snapdragon 805 и далее[23]
- Rockchip
- RK30xx серии и далее[24]
- Samsung
- Exynos 3 серии и далее[25]
- Allwinner
Архитектура RISC-V
- Двухъядерный RISC-V 64-битные Sipeed-M1 поддерживают AES и SHA256.[26]
- На основе архитектуры RISC-V ESP32 -C (не Xtensa, как ESP32), поддерживает AES, SHA, RSA, RNG, HMAC, цифровую подпись и XTS 128 для флэш-памяти.[27]
Другие архитектуры
- Atmel XMEGA[28] (ускоритель на кристалле с параллельным выполнением, а не инструкция)
- SPARC T3 и более поздние процессоры имеют аппаратную поддержку нескольких криптографических алгоритмов, включая AES.
- Cavium Octeon MIPS[29] Все процессоры Cavium Octeon на базе MIPS имеют аппаратную поддержку нескольких криптографических алгоритмов, включая AES с использованием специальных инструкций сопроцессора 3.
Спектакль
В Анализ производительности AES-NI, Патрик Шмид и Ахим Роос обнаружили «впечатляющие результаты от нескольких приложений, уже оптимизированных для использования возможностей Intel AES-NI».[30] Анализ производительности с использованием Крипто ++ библиотека безопасности показал увеличение пропускной способности примерно с 28,0 циклов на байт до 3,5 циклов на байт с AES /GCM по сравнению с Pentium 4 без разгона.[31][32][неудачная проверка ][нужен лучший источник ]
Вспомогательное программное обеспечение
Большинство современных компиляторов могут выдавать инструкции AES.
Многие программы безопасности и криптографии поддерживают набор инструкций AES, включая следующую базовую инфраструктуру:
- FileVault 2 от Apple полное шифрование диска в macOS 10.10+
- Без остановки SSH2, NonStop cF SSL Библиотека и BackBox Программное обеспечение VTC в HPE Tandem NonStop OS серии L[33][34][35]
- API криптографии: новое поколение (CNG) (требуется Windows 7)[36]
- Crypto API Linux
- Ява 7 HotSpot
- Услуги сетевой безопасности (NSS) версии 3.13 и выше[37] (использован Fire Fox и Гугл Хром )
- Криптографическая структура Solaris[38] на Солярис 10 и далее
- FreeBSD API OpenCrypto (драйвер aesni (4))[39]
- OpenSSL 1.0.1 и выше[40]
- GnuTLS[41]
- Либсодиум[42]
- FLAM / FLUC 5.1.08 (выпущен 24.08.2015) и выше[43]
- VeraCrypt[44]
- GoLang[45]
- BitLocker[46]
Смотрите также
Примечания
- ^ Инструкция вычисляет 4 параллельных подвыражения Расширение ключа AES на 4 32-битных словах в двойном квадраслове (также известном как регистр SSE) на битах X [127: 96] для и X [63:32] для Только. Две параллельные Замены AES S-блока и используются в AES-256 и 2 подвыражениях и используются в AES-128, AES-192, AES-256.
Рекомендации
- ^ "Intel Software Network". Intel. Архивировано из оригинал 7 апреля 2008 г.. Получено 2008-04-05.
- ^ Шей Герон (2010). "Официальный документ набора инструкций Intel Advanced Encryption Standard (AES)" (PDF). Intel. Получено 2012-09-20.
- ^ «Расширенный поиск по спецификации продукции Intel». Intel ARK.
- ^ Шимпи, Ананд Лал. «Обзор Sandy Bridge: Intel Core i7-2600K, i5-2500K и Core i3-2100 протестированы».
- ^ «Сравнение технических характеристик продукции Intel».
- ^ «Поддержка AES-NI в TrueCrypt (проблема Sandy Bridge)».
- ^ «Некоторые продукты могут поддерживать новые инструкции AES с обновлением конфигурации процессора, в частности i7-2630QM / i7-2635QM, i7-2670QM / i7-2675QM, i5-2430M / i5-2435M, i5-2410M / i5-2415M. свяжитесь с OEM-производителем для получения BIOS, включающего последнее обновление конфигурации процессора ".
- ^ «Технические характеристики процессора Intel Core i3-2115C (3 МБ кэш-памяти, 2,00 ГГц)».
- ^ «Технические характеристики процессора Intel Core i3-4000M (3 МБ кэш-памяти, 2,40 ГГц)».
- ^ «Следуя инструкциям». AMD. 22 ноября 2010 г. Архивировано с оригинал 26 ноября 2010 г.. Получено 2011-01-04.
- ^ Дэн Андерсон (2011). "SPARC T4 OpenSSL Engine". Oracle. Получено 2012-09-20.
- ^ Ричард Гризентуэйт (2011). «Предварительный просмотр технологии ARMv8-A» (PDF). РУКА. Архивировано из оригинал (PDF) на 2018-06-10. Получено 2012-09-20.
- ^ Тимоти Прикетт Морган (2012). «Весь соус на горячем чипе Big Blue: Подробнее о Power7 +». Реестр. Получено 2012-09-20.
- ^ «Криптография IBM System z10». IBM. Получено 2014-01-27.
- ^ «Технические характеристики семейства процессоров AMD Geode LX». AMD.
- ^ "VIA Padlock Security Engine". ЧЕРЕЗ. Получено 2011-11-14.
- ^ а б Криптографические аппаратные ускорители на OpenWRT.org
- ^ "Процессоры VIA Eden-N". ЧЕРЕЗ. Архивировано из оригинал на 2011-11-11. Получено 2011-11-14.
- ^ "Процессоры VIA C7". ЧЕРЕЗ. Получено 2011-11-14.
- ^ "Справочное руководство по архитектуре ARM ARMv8, для профиля архитектуры ARMv8-A" (PDF). РУКА. 5 июля 2019.
- ^ «Статус драйвера системы безопасности / Crypto Engine». sunxi.montjoie.ovh.
- ^ «Ускорение криптографии Linux на i.MX6» (PDF). Linux Foundation. Февраль 2017. Архивировано с оригинал (PDF) на 2019-08-26. Получено 2018-05-02.
- ^ «Криптографический модуль в Snapdragon 805 сертифицирован FIPS 140-2». Qualcomm.
- ^ "RK3128 - Rockchip Wiki". Rockchip вики. Архивировано из оригинал на 2019-01-28. Получено 2018-05-02.
- ^ "Samsung Exynos 7420 Deep Dive - внутри современной 14-нм SoC". АнандТех.
- ^ «Sipeed M1 - встроенная платформа искусственного интеллекта для периферийных вычислений». electronics-lab.com. 2018-11-27. Получено 2020-11-22.
- ^ «Процессор ESP32-C3 WiFi и BLE RISC-V по выводам совместим с ESP8266». CNX-Программное обеспечение. Получено 2020-11-22.
- ^ «Использование встроенного в XMEGA ускорителя AES» (PDF). Получено 2014-12-03.
- ^ «Cavium Networks запускает самую широкую в отрасли линейку одно- и двухъядерных процессоров OCTEON ™ на базе MIPS64®, предназначенных для интеллектуальных сетей следующего поколения». Архивировано из оригинал на 2017-12-07. Получено 2016-09-17.
- ^ П. Шмид и А. Роос (2010). «Анализ производительности AES-NI». Оборудование Тома. Получено 2010-08-10.
- ^ Т. Кровец, В. Дай (2010). "Как получить быстрые вызовы AES?". Группа пользователей Crypto ++. Получено 2010-08-11.
- ^ «Тесты производительности Crypto ++ 5.6.0 Pentium 4». Сайт Crypto ++. 2009. В архиве из оригинала 19 сентября 2010 г.. Получено 2010-08-10.
- ^ «Справочное руководство по NonStop SSH». Получено 2020-04-09.
- ^ «Справочное руководство по библиотеке NonStop cF SSL». Получено 2020-04-09.
- ^ "BackBox H4.08 Опция шифрования ленты". Получено 2020-04-09.
- ^ «Стандартные инструкции Intel Advanced Encryption (AES-NI)». Intel. 2 марта 2010 г. В архиве из оригинала 7 июля 2010 г.. Получено 2010-07-11.
- ^ «Улучшения AES-NI для NSS в системах Sandy Bridge». 2012-05-02. Получено 2012-11-25.
- ^ «Руководство системного администратора: службы безопасности, глава 13 криптографическая структура Solaris (обзор)». Oracle. Сентябрь 2010 г.. Получено 2012-11-27.
- ^ «Примечания к выпуску FreeBSD 8.2». FreeBSD.org. 2011-02-24. Получено 2011-12-18.
- ^ OpenSSL: веб-интерфейс CVS
- ^ «Криптографический бэкэнд (GnuTLS 3.6.14)». gnutls.org. Получено 2020-06-26.
- ^ «AES-GCM в libsodium». libsodium.org.
- ^ "www.flam.de :: Продукция". flam.de.
- ^ "Аппаратное ускорение". www.veracrypt.fr.
- ^ "aes - язык программирования Go". golang.org. Получено 2020-06-26.
- ^ Шимпи, Ананд Лал. «Обзор Clarkdale: Intel Core i5 661, i3 540 и i3 530». www.anandtech.com. Получено 2020-06-26.
внешняя ссылка
- Стандартные инструкции Intel Advanced Encryption (AES-NI)
- Технический документ набора инструкций AES (2,93 МиБ, PDF) от Intel