Расширения набора инструкций ускоряют операции AES
Набор инструкций AES (Advanced Encryption Standard) — это набор инструкций, специально разработанных для эффективного выполнения операций шифрования и дешифрования AES. Эти инструкции обычно встречаются в современных процессорах и могут значительно ускорить операции AES по сравнению с программными реализациями. Набор инструкций AES включает инструкции для расширения ключа , шифрования и дешифрования с использованием ключей различных размеров (128 бит, 192 бит и 256 бит).
Набор инструкций часто реализуется как набор инструкций, которые могут выполнить один раунд AES, а также специальная версия для последнего раунда, которая имеет несколько иной метод.
Когда AES реализован как набор инструкций, а не как программное обеспечение, он может иметь более высокую безопасность, поскольку его поверхность атаки по побочным каналам уменьшается. [1]
процессоры архитектуры x86
AES-NI (или Intel Advanced Encryption Standard New Instructions ; AES-NI ) был первой крупной реализацией. AES-NI — это расширение архитектуры набора инструкций x86 для микропроцессоров Intel и AMD, предложенное Intel в марте 2008 года. [2]
Более расширенная версия AES-NI, векторные инструкции AES AVX-512 (VAES) , содержится в AVX-512 . [3]
Инструкции
Интел
Следующие процессоры Intel поддерживают набор инструкций AES-NI: [5]
- Процессоры на базе Westmere , в частности:
- Процессоры Sandy Bridge :
- Настольный компьютер: все, кроме Pentium, Celeron, Core i3 [6] [7]
- Мобильные устройства: все Core i7 и Core i5. Несколько поставщиков поставляют конфигурации BIOS с отключенным расширением; [8] для их включения требуется обновление BIOS. [9]
- Процессоры Ivy Bridge
- Все i5, i7, Xeon и i3-2115C [10] только
- Процессоры Haswell (все, кроме i3-4000m, [11] Pentium и Celeron)
- Процессоры Broadwell (все, кроме Pentium и Celeron)
- Процессоры Silvermont/Airmont (все, кроме Bay Trail-D и Bay Trail-M)
- Процессоры Goldmont (и более поздние)
- Процессоры Skylake (и более поздние)
АМД
Несколько процессоров AMD поддерживают инструкции AES:
Аппаратное ускорение в других архитектурах
Поддержка AES с непривилегированными инструкциями процессора также доступна в последних процессорах SPARC ( T3 , T4 , T5 , M5 и далее) и в последних процессорах ARM . Процессор SPARC T4 , представленный в 2011 году, имеет инструкции пользовательского уровня, реализующие раунды AES. [13] Эти инструкции являются дополнением к командам шифрования более высокого уровня. Архитектура процессора ARMv8-A , анонсированная в 2011 году, включая ARM Cortex-A53 и A57 (но не предыдущие процессоры v7, такие как Cortex A5, 7, 8, 9, 11, 15 [ требуется цитата ] ) также имеет инструкции пользовательского уровня, реализующие раунды AES. [14]
Процессоры x86, предлагающие интерфейсы ускорения, отличные от AES-NI
Вместо этого процессоры VIA x86 и AMD Geode используют ускоренную обработку AES на базе драйвера. (См. Crypto API (Linux) .)
Следующие чипы, хотя и поддерживают аппаратное ускорение AES, не поддерживают AES-NI:
ARM-архитектура
Информация о программировании доступна в справочном руководстве по архитектуре ARM ARMv8 для профиля архитектуры ARMv8-A (раздел A2.3 «Криптографическое расширение Armv8») . [20]
Marvell Kirkwood был встроенным ядром ряда SoC от Marvell Technology , эти SoC-процессоры (ARM, mv_cesa в Linux) используют ускоренную обработку AES на основе драйвера. (См. Crypto API (Linux) .)
- Архитектура ARMv8-A
- Криптографические расширения ARM опционально поддерживаются на ядрах ARM Cortex-A30/50/70
- Криптографические аппаратные ускорители/движки
Архитектура RISC-V
Расширения набора скалярных и векторных криптографических инструкций для архитектуры RISC-V были ратифицированы соответственно в 2022 и 2023 годах, что позволило процессорам RISC-V реализовать аппаратное ускорение для AES, GHASH , SHA-256 , SHA-512 , SM3 и SM4 .
До того, как специфические для AES инструкции стали доступны на RISC-V, ряд чипов RISC-V включали интегрированные сопроцессоры AES. Примеры включают:
- Двухъядерный RISC-V 64 бит Sipeed-M1 поддерживает AES и SHA256. [26]
- Архитектура RISC-V на основе ESP32 -C (а также ESP32 на основе Xtensa [27] ), поддержка AES, SHA, RSA, RNG, HMAC, цифровой подписи и XTS 128 для флэш-памяти. [28]
- Bouffalo Labs BL602/604 32-бит RISC-V поддерживает различные варианты AES и SHA. [29]
Архитектура POWER
Начиная с версии Power ISA v.2.07 , инструкции vcipher
и vcipherlast
реализуют один раунд AES напрямую. [30]
IBM z/Архитектура
Процессоры IBM z9 или более поздние мэйнфреймы поддерживают AES как инструкции AES ECB/CBC с одним кодом операции (KM, KMC) через аппаратное обеспечение IBM CryptoExpress. [31] Поэтому эти версии AES с одной инструкцией проще в использовании, чем версии Intel NI, но их нельзя расширить для реализации других алгоритмов, основанных на раундовых функциях AES (например, хэш-функциях Whirlpool и Grøstl ).
Другие архитектуры
- Atmel XMEGA [32] (встроенный ускоритель с параллельным выполнением, а не инструкция)
- Процессоры SPARC T3 и более поздние версии имеют аппаратную поддержку нескольких криптографических алгоритмов, включая AES.
- Cavium Octeon MIPS [33] Все процессоры Cavium Octeon на базе MIPS имеют аппаратную поддержку нескольких криптографических алгоритмов, включая AES, использующих специальные инструкции сопроцессора 3.
Производительность
В AES-NI Performance Analyzed Патрик Шмид и Ахим Рус обнаружили «впечатляющие результаты нескольких приложений, уже оптимизированных для использования возможностей Intel AES-NI». [34] Анализ производительности с использованием библиотеки безопасности Crypto++ показал увеличение пропускной способности с приблизительно 28,0 циклов на байт до 3,5 циклов на байт с AES / GCM по сравнению с Pentium 4 без ускорения. [35] [36] [ проверка не удалась ] [ требуется лучший источник ]
Вспомогательное программное обеспечение
Большинство современных компиляторов могут генерировать инструкции AES.
Множество программных средств безопасности и криптографии поддерживают набор инструкций AES, включая следующую примечательную базовую инфраструктуру:
Применение за пределами AES
Альтернативное использование набора инструкций AES включает его использование в блочных шифрах с аналогично структурированным S-box , используя аффинный изоморфизм для преобразования между ними. SM4 , Camellia и ARIA были ускорены с использованием AES-NI. [52] [53] [54] Новые инструкции поля Галуа AVX -512 (GFNI) позволяют реализовать эти S-box более прямым способом. [55]
Новые криптографические алгоритмы были созданы специально для использования частей алгоритма AES, так что набор инструкций AES может быть использован для ускорения. Семейство AEGIS, которое предлагает аутентифицированное шифрование , работает как минимум вдвое быстрее AES. [56] AEGIS является «дополнительным финалистом для высокопроизводительных приложений» в конкурсе CAESAR . [57]
Смотрите также
Примечания
- ^ Инструкция вычисляет 4 параллельных подвыражения расширения ключа AES на 4 32-битных словах в двойном четверном слове (также известном как регистр SSE) на битах X[127:96] для и X[63:32] только для. Две параллельные замены AES S-box и используются в AES-256 и 2 подвыражения и используются в AES-128, AES-192, AES-256.
Ссылки
- ^ "Securing the Enterprise with Intel AES-NI" (PDF) . Корпорация Intel . Архивировано (PDF) из оригинала 2013-03-31 . Получено 2017-07-26 .
- ^ "Intel Software Network". Intel. Архивировано из оригинала 7 апреля 2008 года . Получено 2008-04-05 .
- ^ "Справочник по программированию расширений набора инструкций архитектуры Intel и будущих функций". Intel . Получено 16 октября 2017 г. .
- ^ Шей Герон (2010). "Intel Advanced Encryption Standard (AES) Instruction Set White Paper" (PDF) . Intel . Получено 20 сентября 2012 г. .
- ^ "Расширенный поиск спецификаций продукции Intel". Intel ARK .
- ^ Шимпи, Ананд Лал. «Обзор Sandy Bridge: протестированы Intel Core i7-2600K, i5-2500K и Core i3-2100».
- ^ «Сравнение спецификаций продукции Intel».
- ^ «Поддержка AES-NI в TrueCrypt (проблема Sandy Bridge)». 27 января 2022 г.
- ^ «Некоторые продукты могут поддерживать новые инструкции 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 ГГц)".
- ^ "Following Instructions". AMD. 22 ноября 2010 г. Архивировано из оригинала 26 ноября 2010 г. Получено 2011-01-04 .
- ^ Дэн Андерсон (2011). "SPARC T4 OpenSSL Engine". Oracle . Получено 20 сентября 2012 г. .
- ^ Ричард Грисентуэйт (2011). "ARMv8-A Technology Preview" (PDF) . ARM. Архивировано из оригинала (PDF) 2018-06-10 . Получено 2012-09-20 .
- ^ "Технические характеристики семейства процессоров AMD Geode LX". AMD.
- ^ "VIA Padlock Security Engine". VIA. Архивировано из оригинала 2011-05-15 . Получено 2011-11-14 .
- ^ ab Криптографические аппаратные ускорители на OpenWRT.org
- ^ "Процессоры VIA Eden-N". VIA. Архивировано из оригинала 2011-11-11 . Получено 2011-11-14 .
- ^ "Процессоры VIA C7". VIA. Архивировано из оригинала 2007-04-19 . Получено 2011-11-14 .
- ^ "Arm Architecture Reference Manual Armv8, для профиля архитектуры Armv8-A". ARM. 22 января 2021 г.
- ^ "Состояние драйвера системы безопасности/криптографического движка". sunxi.montjoie.ovh .
- ^ "Linux Cryptographic Acceleration on an i.MX6" (PDF) . Linux Foundation. Февраль 2017 г. Архивировано из оригинала (PDF) 2019-08-26 . Получено 2018-05-02 .
- ^ "Криптографический модуль в Snapdragon 805 сертифицирован по стандарту FIPS 140-2". Qualcomm .
- ^ "RK3128 - Rockchip Wiki". Rockchip wiki . Архивировано из оригинала 2019-01-28 . Получено 2018-05-02 .
- ^ "Подробный обзор Samsung Exynos 7420 — внутри современной 14-нм SoC". AnandTech .
- ^ "Sipeed M1 Datasheet v1.1" (PDF) . kamami.pl . 2019-03-06 . Получено 2021-05-03 .
- ^ "Техническое описание серии ESP32" (PDF) . www.espressif.com . 2021-03-19 . Получено 2021-05-03 .
- ^ "Процессор ESP32-C3 WiFi & BLE RISC-V совместим по выводам с ESP8266". CNX-Software . Получено 22.11.2020 .
- ^ "BL602-Bouffalo Lab (Nanjing) Co., Ltd". www.bouffalolab.com . Архивировано из оригинала 2021-06-18 . Получено 2021-05-03 .
- ^ "Power ISA Version 2.07 B" . Получено 2022-01-07 .
- ^ "IBM System z10 cryptography". IBM. Архивировано из оригинала 13 августа 2008 года . Получено 2014-01-27 .
- ^ "Использование встроенного ускорителя AES XMEGA" (PDF) . Получено 2014-12-03 .
- ^ "Cavium Networks запускает самую широкую в отрасли линейку одно- и двухъядерных процессоров OCTEON на базе MIPS64, ориентированных на интеллектуальные сети следующего поколения". Архивировано из оригинала 2017-12-07 . Получено 2016-09-17 .
- ^ P. Schmid и A. Roos (2010). "AES-NI Performance Analyzed". Tom's Hardware . Получено 2010-08-10 .
- ^ T. Krovetz, W. Dai (2010). "Как получить быстрые вызовы AES?". Группа пользователей Crypto++ . Получено 11 августа 2010 г.
- ^ "Crypto++ 5.6.0 Pentium 4 Benchmarks". Сайт Crypto++ . 2009. Архивировано из оригинала 19 сентября 2010. Получено 2010-08-10 .
- ^ "Справочное руководство NonStop SSH" . Получено 2020-04-09 .
- ^ "Справочное руководство по библиотеке NonStop cF SSL" . Получено 2020-04-09 .
- ^ "BackBox H4.08Tape Encryption Option" . Получено 2020-04-09 .
- ^ "Intel Advanced Encryption Standard Instructions (AES-NI)". Intel. 2 марта 2010 г. Архивировано из оригинала 7 июля 2010 г. Получено 11 июля 2010 г.
- ^ "Улучшения AES-NI для NSS в системах Sandy Bridge". 2012-05-02 . Получено 2012-11-25 .
- ^ "Руководство по системному администрированию: службы безопасности, глава 13 Solaris Cryptographic Framework (обзор)". Oracle. Сентябрь 2010 г. Получено 27.11.2012 г.
- ^ "FreeBSD 8.2 Release Notes". FreeBSD.org. 2011-02-24. Архивировано из оригинала 2011-04-12 . Получено 2011-12-18 .
- ^ OpenSSL: веб-интерфейс CVS
- ^ "Криптографический бэкэнд (GnuTLS 3.6.14)". gnutls.org . Получено 2020-06-26 .
- ^ "AES-GCM в libsodium". libsodium.org .
- ^ «Аппаратное ускорение». www.veracrypt.fr .
- ^ "aes - язык программирования Go". golang.org . Получено 2020-06-26 .
- ^ Шимпи, Ананд Лал. «Обзор Clarkdale: Intel Core i5 661, i3 540 и i3 530». www.anandtech.com . Получено 26.06.2020 .
- ^ «Интеллектуальный межсетевой экран хранения данных Bloombase StoreSafe».
- ^ «Vormetric Encryption добавляет поддержку технологии ускорения Intel AES-NI». 15 мая 2012 г.
- ^ Сааринен, Маркку-Юхани О. (17 апреля 2020 г.). "mjosaarinen/sm4ni: Демонстрация того, что инструкции AES-NI могут использоваться для реализации китайского стандарта шифрования SM4". GitHub .
- ^ Кивилинна, Юсси (2013). Блочные шифры: быстрые реализации на архитектуре x86-64 (PDF) (M.Sc.). Университет Оулу . стр. 33, 42. Получено 22.06.2017 .
- ^ Ю, Тэ Хи; Кивилинна, Юсси; Чо, Чунг Хи (2023). «Ускорение алгоритма блочного шифрования ARIA на основе AVX». Доступ IEEE . 11 : 77403–77415. Бибкод : 2023IEEEA..1177403Y. дои : 10.1109/ACCESS.2023.3298026 .
- ^ Kivilinna, Jussi (19 апреля 2023 г.). "camellia-simd-aesni". GitHub .
Более новые процессоры x86-64 также поддерживают новые инструкции Galois Field (GFNI), которые позволяют реализовать Camellia s-box более простым способом и добиться еще более высокой производительности.
- ^ Ву, Хонгджун; Пренель, Барт. «AEGIS: быстрый аутентифицированный алгоритм шифрования (v1.1)» (PDF) .
- ^ Денис, Фрэнк. «Семейство алгоритмов аутентифицированного шифрования AEGIS». cfrg.github.io .
Внешние ссылки
- Инструкции Intel Advanced Encryption Standard (AES-NI)
- Технический документ по набору инструкций AES (2,93 МиБ, PDF) от Intel