Набор инструкций AES
Набор инструкций AES (расширенный стандарт шифрования) — это набор инструкций, специально разработанных для эффективного выполнения операций шифрования и дешифрования AES . Эти инструкции обычно встречаются в современных процессорах и могут значительно ускорить операции AES по сравнению с программными реализациями. Набор инструкций AES включает инструкции для расширения ключа , шифрования и дешифрования с использованием ключей различного размера (128-бит, 192-бит и 256-бит).
Набор инструкций часто реализуется как набор инструкций, которые могут выполнять один раунд AES, а также специальная версия для последнего раунда, которая имеет немного другой метод.
Когда AES реализуется в виде набора инструкций, а не в виде программного обеспечения, он может повысить безопасность, поскольку его поверхность атаки по побочным каналам уменьшается. [ 1 ]
процессоры с архитектурой x86
[ редактировать ]AES-NI (или Новые инструкции Intel Advanced Encryption Standard ; AES-NI ) был первой крупной реализацией. AES-NI — это расширение x86 архитектуры набора команд для микропроцессоров Intel предложенное и AMD, Intel в марте 2008 года. [ 2 ]
Более расширенная версия AES-NI, инструкции AVX-512 Vector AES (VAES) , находится в AVX-512 . [ 3 ]
Инструкции
[ редактировать ]Инструкция | Описание [ 4 ] |
---|---|
AESENC
|
Выполните один раунд потока шифрования AES. |
AESENCLAST
|
Выполните последний раунд потока шифрования AES. |
AESDEC
|
Выполните один раунд потока расшифровки AES. |
AESDECLAST
|
Выполните последний раунд потока расшифровки AES. |
AESKEYGENASSIST
|
Помощь в генерации ключей раунда AES [ примечание 1 ] |
AESIMC
|
Помощь в генерации ключа для раунда дешифрования AES. Применяет столбцы обратного микширования к клавишам округления. |
Интел
[ редактировать ]Следующие процессоры Intel поддерживают набор инструкций AES-NI: [ 5 ]
- Процессоры на базе Westmere , а именно:
- Процессоры Westmere-EP (также известные как модель DP-сервера Gulftown Xeon 5600)
- Процессоры Clarkdale (кроме Core i3, Pentium и Celeron)
- Процессоры Arrandale (кроме Celeron, Pentium, Core i3, Core i5-4XXM)
- 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 ] Пентиум и Селерон).
- Broadwell (все, кроме Pentium и Celeron) Процессоры
- Процессоры Silvermont/Airmont (все, кроме Bay Trail-D и Bay Trail-M)
- Процессоры Goldmont (и более поздние версии)
- Процессоры Skylake (и более поздние версии)
АМД
[ редактировать ]Некоторые процессоры AMD поддерживают инструкции AES:
- Процессоры «Тяжелое оборудование»
- Бульдозерные процессоры [ 12 ]
- Piledriver Процессоры
- Паровые катковые процессоры
- Экскаваторные процессоры и новее
- Процессоры Jaguar и новее
- Процессоры Puma и новее
- Процессоры на базе Zen (и более поздних версий)
Аппаратное ускорение в других архитектурах
[ редактировать ]Поддержка 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.
- Криптографические аппаратные ускорители/движки
- Оллвиннер
- A10, A20, A30, A31, A80, A83T, H3 и A64 с использованием системы безопасности. [ 21 ]
- Бродком
- BCM5801/BCM5805/BCM5820 с использованием процессора безопасности [ 17 ]
- НХП Полупроводники
- i.MX6 и более поздние версии [ 22 ]
- Квалкомм
- Snapdragon 805 и выше [ 23 ]
- Рокчип
- серия RK30xx и далее [ 24 ]
- Samsung
- Exynos 3 серии и далее [ 25 ]
- Оллвиннер
Архитектура 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 ]
- -C на базе архитектуры RISC-V ESP32 (а также ESP32 на базе Xtensa). [ 27 ] ), поддержка AES, SHA, RSA, RNG, HMAC, цифровой подписи и XTS 128 для флэш-памяти. [ 28 ]
- 32-битный RISC-V Bouffalo Labs BL602/604 поддерживает различные варианты AES и SHA. [ 29 ]
МОЩНАЯ архитектура
[ редактировать ]Начиная с 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 ).
Другие архитектуры
[ редактировать ]- Атмел XMEGA [ 32 ] (встроенный ускоритель с параллельным выполнением, а не инструкция)
- Процессоры SPARC T3 и более поздних версий имеют аппаратную поддержку нескольких криптографических алгоритмов, включая AES.
- Кавиум Октеон MIPS [ 33 ] Все процессоры Cavium Octeon на базе MIPS имеют аппаратную поддержку нескольких криптографических алгоритмов, в том числе AES с использованием специальных инструкций сопроцессора 3.
Производительность
[ редактировать ]В исследовании «Анализ производительности AES-NI» Патрик Шмид и Ахим Роос обнаружили «впечатляющие результаты нескольких приложений, уже оптимизированных для использования возможностей Intel AES-NI». [ 34 ] Анализ производительности с использованием Crypto++ библиотеки безопасности показал увеличение пропускной способности примерно с 28,0 циклов на байт до 3,5 циклов на байт с AES / GCM по сравнению с Pentium 4 без ускорения. [ 35 ] [ 36 ] [ не удалось пройти проверку ] [ нужен лучший источник ]
Поддерживающее программное обеспечение
[ редактировать ]Большинство современных компиляторов могут генерировать инструкции AES.
Многие программы безопасности и криптографии поддерживают набор инструкций AES, включая следующую примечательную базовую инфраструктуру:
- FileVault 2 от Apple Полнодисковое шифрование в macOS 10.10+
- NonStop SSH2 , библиотека NonStop cF SSL и программное обеспечение BackBox VTC в HPE Tandem NonStop OS L-серии [ 37 ] [ 38 ] [ 39 ]
- API криптографии: следующее поколение (CNG) (требуется Windows 7) [ 40 ]
- Крипто API Linux
- Java 7 Горячая точка
- Службы сетевой безопасности (NSS) версии 3.13 и выше. [ 41 ] (используется Firefox и Google Chrome )
- Криптографическая платформа Solaris [ 42 ] на Солярисе 10 и выше
- API OpenCrypto FreeBSD (драйвер aesni(4)) [ 43 ]
- OpenSSL 1.0.1 и выше [ 44 ]
- ГнуTLS [ 45 ]
- Либнатрий [ 46 ]
- ВераCrypt [ 47 ]
- Язык программирования Go [ 48 ]
- БитЛоккер [ 49 ]
- Блумбаза [ 50 ]
- Ворметрический [ 51 ]
Приложение за пределами AES
[ редактировать ]Ограниченное использование набора инструкций AES предполагает использование его в блочных шифрах с S-блоком аналогичной структуры с использованием аффинного изоморфизма для преобразования между ними. SM4 , Camellia и ARIA были ускорены с использованием AES-NI. [ 52 ] [ 53 ] [ 54 ] Новые инструкции поля Галуа AVX -512 (GFNI) позволяют реализовать эти S-блоки более прямым способом. [ 55 ]
Были созданы новые криптографические алгоритмы, специально использующие части алгоритма AES, чтобы набор инструкций AES можно было использовать для ускорения. Семейство AEGIS, предлагающее аутентифицированное шифрование , работает как минимум в два раза быстрее, чем AES. [ 56 ] AEGIS является «дополнительным финалистом высокопроизводительных приложений» конкурса CAESAR . [ 57 ]
См. также
[ редактировать ]- Расширенные векторные расширения (AVX)
- Набор инструкций CLMUL
- Набор инструкций FMA (FMA3, FMA4)
RDRAND
Примечания
[ редактировать ]- ^ Инструкция вычисляет 4 параллельных подвыражения расширения ключа AES по 4 32-битным словам в двойном четверном слове (также известном как регистр SSE) по битам X[127:96] для и X[63:32] для только. Две параллельные замены S-box AES и используются в AES-256 и двух подвыражениях и используются в AES-128, AES-192, AES-256.
Ссылки
[ редактировать ]- ^ «Защита предприятия с помощью Intel AES-NI» (PDF) . Корпорация Интел . Архивировано (PDF) из оригинала 31 марта 2013 г. Проверено 26 июля 2017 г.
- ^ «Сеть программного обеспечения Intel» . Интел. Архивировано из оригинала 7 апреля 2008 года . Проверено 5 апреля 2008 г.
- ^ «Расширения набора команд архитектуры Intel и справочник по программированию будущих функций» . Интел . Проверено 16 октября 2017 г.
- ^ Шей Герон (2010). «Информационный документ о наборе инструкций Intel Advanced Encryption Standard (AES)» (PDF) . Интел . Проверено 20 сентября 2012 г.
- ^ «Расширенный поиск по спецификациям продукции Intel» . Интел АРК .
- ^ Шимпи, Ананд Лал. «Обзор 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 (кэш 3M, 2,40 ГГц) Технические характеристики» .
- ^ «Следуя инструкциям» . АМД. 22 ноября 2010 года. Архивировано из оригинала 26 ноября 2010 года . Проверено 4 января 2011 г.
- ^ Дэн Андерсон (2011). «Механизм SPARC T4 OpenSSL» . Оракул . Проверено 20 сентября 2012 г.
- ^ Ричард Гризентуэйт (2011). «Обзор технологии ARMv8-A» (PDF) . РУКА. Архивировано из оригинала (PDF) 10 июня 2018 г. Проверено 20 сентября 2012 г.
- ^ «Технические характеристики семейства процессоров AMD Geode LX» . АМД.
- ^ «Система безопасности VIA Padlock» . С ПОМОЩЬЮ. Архивировано из оригинала 15 мая 2011 г. Проверено 14 ноября 2011 г.
- ^ Jump up to: а б Криптографические аппаратные ускорители на OpenWRT.org
- ^ «ВИА Эдем-Н Процессоры» . С ПОМОЩЬЮ. Архивировано из оригинала 11 ноября 2011 г. Проверено 14 ноября 2011 г.
- ^ «Процессоры VIA C7» . С ПОМОЩЬЮ. Архивировано из оригинала 19 апреля 2007 г. Проверено 14 ноября 2011 г.
- ^ «Справочное руководство по архитектуре Arm Armv8, для профиля архитектуры Armv8-A» . РУКА. 22 января 2021 г.
- ^ «Состояние драйвера системы безопасности/Crypto Engine» . sunxi.montjoie.ovh .
- ^ «Криптографическое ускорение Linux на i.MX6» (PDF) . Фонд Linux. Февраль 2017 г. Архивировано из оригинала (PDF) 26 августа 2019 г. Проверено 2 мая 2018 г.
- ^ «Криптографический модуль в Snapdragon 805 сертифицирован по стандарту FIPS 140-2» . Квалкомм .
- ^ «RK3128 — Rockchip Wiki» . Рокчип вики . Архивировано из оригинала 28 января 2019 г. Проверено 2 мая 2018 г.
- ^ «Глубокий обзор Samsung Exynos 7420 — внутри современной 14-нм SoC» . АнандТех .
- ^ «Техническое описание Sipeed M1 v1.1» (PDF) . Камами.пл . 06.03.2019 . Проверено 03 мая 2021 г.
- ^ «Техническое описание серии ESP32» (PDF) . www.espressif.com . 19 марта 2021 г. Проверено 03 мая 2021 г.
- ^ «Процессор ESP32-C3 WiFi и BLE RISC-V по выводам совместим с ESP8266» . Программное обеспечение CNX . Проверено 22 ноября 2020 г.
- ^ «BL602-Лаборатория Буффало (Нанкин) Лтд» . www.bouffalolab.com . Архивировано из оригинала 18 июня 2021 г. Проверено 03 мая 2021 г.
- ^ «Power ISA версии 2.07 B» . Проверено 7 января 2022 г.
- ^ «Криптография IBM System z10» . ИБМ . Проверено 27 января 2014 г.
- ^ «Использование встроенного ускорителя AES XMEGA» (PDF) . Проверено 3 декабря 2014 г.
- ^ «Cavium Networks запускает самую широкую в отрасли линейку одно- и двухъядерных процессоров OCTEON на базе MIPS64, предназначенных для интеллектуальных сетей следующего поколения» . Архивировано из оригинала 07.12.2017 . Проверено 17 сентября 2016 г.
- ^ П. Шмид и А. Роос (2010). «Анализ производительности AES-NI» . Аппаратное обеспечение Тома . Проверено 10 августа 2010 г.
- ^ Т. Кровец, В. Дай (2010). «Как получить быстрые вызовы AES?» . Группа пользователей Crypto++ . Проверено 11 августа 2010 г.
- ^ «Бенчмарки Crypto++ 5.6.0 Pentium 4» . Сайт Крипто++ . 2009. Архивировано из оригинала 19 сентября 2010 года . Проверено 10 августа 2010 г.
- ^ «Справочное руководство по NonStop SSH» . Проверено 9 апреля 2020 г.
- ^ «Справочное руководство по библиотеке SSL NonStop cF» . Проверено 9 апреля 2020 г.
- ^ «Опция шифрования ленты BackBox H4.08» . Проверено 9 апреля 2020 г.
- ^ «Стандартные инструкции Intel Advanced Encryption (AES-NI)» . Интел. 2 марта 2010 года. Архивировано из оригинала 7 июля 2010 года . Проверено 11 июля 2010 г.
- ^ «Усовершенствования AES-NI для NSS в системах Sandy Bridge» . 02 мая 2012 г. Проверено 25 ноября 2012 г.
- ^ «Руководство системного администратора: Службы безопасности, Глава 13 Криптографическая платформа Solaris (обзор)» . Оракул. Сентябрь 2010 года . Проверено 27 ноября 2012 г.
- ^ «Примечания к выпуску FreeBSD 8.2» . FreeBSD.org. 24 февраля 2011 г. Архивировано из оригинала 12 апреля 2011 г. Проверено 18 декабря 2011 г.
- ^ OpenSSL: веб-интерфейс CVS
- ^ «Криптографический бэкэнд (GnuTLS 3.6.14)» . gnutls.org . Проверено 26 июня 2020 г.
- ^ «AES-GCM в libsodium» . libsodium.org .
- ^ «Аппаратное ускорение» . www.veracrypt.fr .
- ^ «aes — язык программирования Go» . golang.org . Проверено 26 июня 2020 г.
- ^ Шимпи, Ананд Лал. «Обзор Кларкдейла: Intel Core i5 661, i3 540 и i3 530» . www.anandtech.com . Проверено 26 июня 2020 г.
- ^ «Интеллектуальный межсетевой экран хранения данных Bloombase StoreSafe» .
- ^ «Шифрование Vormetric добавляет поддержку технологии ускорения Intel AES-NI» . 15 мая 2012 г.
- ^ Сааринен, Маркку-Юхани О. (17 апреля 2020 г.). «mjosaarinen/sm4ni: Демонстрация того, что инструкции AES-NI можно использовать для реализации китайского стандарта шифрования SM4» . Гитхаб .
- ^ Кивилинна, Юсси (2013). Блочные шифры: быстрая реализация архитектуры x86-64 (PDF) (магистр наук). Университет Оулу . стр. 33, 42 . Проверено 22 июня 2017 г.
- ^ Ю, Тэ Хи; Кивилинна, Юсси; Чо, Чунг Хи (2023). «Ускорение алгоритма блочного шифрования ARIA на основе AVX» . Доступ IEEE . 11 : 77403–77415. Бибкод : 2023IEEEA..1177403Y . дои : 10.1109/ACCESS.2023.3298026 .
- ^ Кивилинна, Юсси (19 апреля 2023 г.). "камелия-симд-аэсни" . Гитхаб .
Новые процессоры x86-64 также поддерживают новые инструкции Galois Field New (GFNI), которые позволяют более просто реализовать Camellia s-box и обеспечивают еще большую производительность.
- ^ У, Хунцзюнь; Пренил, Барт. «AEGIS: алгоритм быстрого шифрования с аутентификацией (v1.1)» (PDF) .
- ^ Денис, Фрэнк. «Семейство аутентифицированных алгоритмов шифрования AEGIS» . cfrg.github.io .