Расширения набора инструкций ускоряют операции AES
Набор инструкций AES (Advanced Encryption Standard) — это набор инструкций, специально разработанных для эффективного выполнения операций шифрования и дешифрования AES. Эти инструкции обычно встречаются в современных процессорах и могут значительно ускорить операции AES по сравнению с программными реализациями. Набор инструкций AES включает инструкции для расширения ключа , шифрования и дешифрования с использованием ключей различных размеров (128 бит, 192 бит и 256 бит).
Набор инструкций часто реализуется как набор инструкций, которые могут выполнить один раунд AES, а также специальная версия для последнего раунда, которая имеет несколько иной метод.
Когда AES реализован как набор инструкций, а не как программное обеспечение, он может иметь более высокую безопасность, поскольку его поверхность атаки по побочным каналам уменьшается. [1]
Настольный компьютер: все, кроме Pentium, Celeron, Core i3 [6] [7]
Мобильные устройства: все Core i7 и Core i5. Несколько поставщиков поставляют конфигурации BIOS с отключенным расширением; [8] для их включения требуется обновление BIOS. [9]
Поддержка 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
Информация о программировании доступна в справочном руководстве по архитектуре 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 были ратифицированы соответственно в 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 включает его использование в блочных шифрах с аналогично структурированным 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 .
^ «Поддержка 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, включающего последнее обновление конфигурации процессора».
^ 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 .
^ "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++ . Получено 2010-08-11 .
^ "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 .
^ "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 г.
^ «Интеллектуальный межсетевой экран хранения данных 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 .
^ Кивилинна, Юсси (19 апреля 2023 г.). "camellia-simd-aesni". GitHub . Более новые процессоры x86-64 также поддерживают новые инструкции Galois Field (GFNI), которые позволяют реализовать Camellia s-box более простым способом и добиться еще более высокой производительности.