stringtranslate.com

Набор инструкций 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]

АМД

Несколько процессоров 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) .)

Архитектура RISC-V

Расширения набора скалярных и векторных криптографических инструкций для архитектуры RISC-V были ратифицированы соответственно в 2022 и 2023 годах, что позволило процессорам RISC-V реализовать аппаратное ускорение для AES, GHASH , SHA-256 , SHA-512 , SM3 и SM4 .

До того, как специфические для AES инструкции стали доступны на RISC-V, ряд чипов RISC-V включали интегрированные сопроцессоры AES. Примеры включают:

Архитектура 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 ).

Другие архитектуры

Производительность

В 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]

Смотрите также

Примечания

  1. ^ Инструкция вычисляет 4 параллельных подвыражения расширения ключа AES на 4 32-битных словах в двойном четверном слове (также известном как регистр SSE) на битах X[127:96] для и X[63:32] только для. Две параллельные замены AES S-box и используются в AES-256 и 2 подвыражения и используются в AES-128, AES-192, AES-256.

Ссылки

  1. ^ "Securing the Enterprise with Intel AES-NI" (PDF) . Корпорация Intel . Архивировано (PDF) из оригинала 2013-03-31 . Получено 2017-07-26 .
  2. ^ "Intel Software Network". Intel. Архивировано из оригинала 7 апреля 2008 года . Получено 2008-04-05 .
  3. ^ "Справочник по программированию расширений набора инструкций архитектуры Intel и будущих функций". Intel . Получено 16 октября 2017 г. .
  4. ^ Шей Герон (2010). "Intel Advanced Encryption Standard (AES) Instruction Set White Paper" (PDF) . Intel . Получено 20 сентября 2012 г. .
  5. ^ "Расширенный поиск спецификаций продукции Intel". Intel ARK .
  6. ^ Шимпи, Ананд Лал. «Обзор Sandy Bridge: протестированы Intel Core i7-2600K, i5-2500K и Core i3-2100».
  7. ^ «Сравнение спецификаций продукции Intel».
  8. ^ «Поддержка AES-NI в TrueCrypt (проблема Sandy Bridge)». 27 января 2022 г.
  9. ^ «Некоторые продукты могут поддерживать новые инструкции AES с обновлением конфигурации процессора, в частности, i7-2630QM/i7-2635QM, i7-2670QM/i7-2675QM, i5-2430M/i5-2435M, i5-2410M/i5-2415M. Пожалуйста, свяжитесь с OEM-производителем для получения BIOS, включающего последнее обновление конфигурации процессора».
  10. ^ «Характеристики процессора Intel Core i3-2115C (кэш-память 3 МБ, тактовая частота 2,00 ГГц)».
  11. ^ "Характеристики процессора Intel Core i3-4000M (кэш-память 3 МБ, тактовая частота 2,40 ГГц)".
  12. ^ "Following Instructions". AMD. 22 ноября 2010 г. Архивировано из оригинала 26 ноября 2010 г. Получено 2011-01-04 .
  13. ^ Дэн Андерсон (2011). "SPARC T4 OpenSSL Engine". Oracle . Получено 20 сентября 2012 г. .
  14. ^ Ричард Грисентуэйт (2011). "ARMv8-A Technology Preview" (PDF) . ARM. Архивировано из оригинала (PDF) 2018-06-10 . Получено 2012-09-20 .
  15. ^ "Технические характеристики семейства процессоров AMD Geode LX". AMD.
  16. ^ "VIA Padlock Security Engine". VIA. Архивировано из оригинала 2011-05-15 . Получено 2011-11-14 .
  17. ^ ab Криптографические аппаратные ускорители на OpenWRT.org
  18. ^ "Процессоры VIA Eden-N". VIA. Архивировано из оригинала 2011-11-11 . Получено 2011-11-14 .
  19. ^ "Процессоры VIA C7". VIA. Архивировано из оригинала 2007-04-19 . Получено 2011-11-14 .
  20. ^ "Arm Architecture Reference Manual Armv8, для профиля архитектуры Armv8-A". ARM. 22 января 2021 г.
  21. ^ "Состояние драйвера системы безопасности/криптографического движка". sunxi.montjoie.ovh .
  22. ^ "Linux Cryptographic Acceleration on an i.MX6" (PDF) . Linux Foundation. Февраль 2017 г. Архивировано из оригинала (PDF) 2019-08-26 . Получено 2018-05-02 .
  23. ^ "Криптографический модуль в Snapdragon 805 сертифицирован по стандарту FIPS 140-2". Qualcomm .
  24. ^ "RK3128 - Rockchip Wiki". Rockchip wiki . Архивировано из оригинала 2019-01-28 . Получено 2018-05-02 .
  25. ^ "Подробный обзор Samsung Exynos 7420 — внутри современной 14-нм SoC". AnandTech .
  26. ^ "Sipeed M1 Datasheet v1.1" (PDF) . kamami.pl . 2019-03-06 . Получено 2021-05-03 .
  27. ^ "Техническое описание серии ESP32" (PDF) . www.espressif.com . 2021-03-19 . Получено 2021-05-03 .
  28. ^ "Процессор ESP32-C3 WiFi & BLE RISC-V совместим по выводам с ESP8266". CNX-Software . Получено 22.11.2020 .
  29. ^ "BL602-Bouffalo Lab (Nanjing) Co., Ltd". www.bouffalolab.com . Архивировано из оригинала 2021-06-18 . Получено 2021-05-03 .
  30. ^ "Power ISA Version 2.07 B" . Получено 2022-01-07 .
  31. ^ "IBM System z10 cryptography". IBM. Архивировано из оригинала 13 августа 2008 года . Получено 2014-01-27 .
  32. ^ "Использование встроенного ускорителя AES XMEGA" (PDF) . Получено 2014-12-03 .
  33. ^ "Cavium Networks запускает самую широкую в отрасли линейку одно- и двухъядерных процессоров OCTEON на базе MIPS64, ориентированных на интеллектуальные сети следующего поколения". Архивировано из оригинала 2017-12-07 . Получено 2016-09-17 .
  34. ^ P. Schmid и A. Roos (2010). "AES-NI Performance Analyzed". Tom's Hardware . Получено 2010-08-10 .
  35. ^ T. Krovetz, W. Dai (2010). "Как получить быстрые вызовы AES?". Группа пользователей Crypto++ . Получено 11 августа 2010 г.
  36. ^ "Crypto++ 5.6.0 Pentium 4 Benchmarks". Сайт Crypto++ . 2009. Архивировано из оригинала 19 сентября 2010. Получено 2010-08-10 .
  37. ^ "Справочное руководство NonStop SSH" . Получено 2020-04-09 .
  38. ^ "Справочное руководство по библиотеке NonStop cF SSL" . Получено 2020-04-09 .
  39. ^ "BackBox H4.08Tape Encryption Option" . Получено 2020-04-09 .
  40. ^ "Intel Advanced Encryption Standard Instructions (AES-NI)". Intel. 2 марта 2010 г. Архивировано из оригинала 7 июля 2010 г. Получено 11 июля 2010 г.
  41. ^ "Улучшения AES-NI для NSS в системах Sandy Bridge". 2012-05-02 . Получено 2012-11-25 .
  42. ^ "Руководство по системному администрированию: службы безопасности, глава 13 Solaris Cryptographic Framework (обзор)". Oracle. Сентябрь 2010 г. Получено 27.11.2012 г.
  43. ^ "FreeBSD 8.2 Release Notes". FreeBSD.org. 2011-02-24. Архивировано из оригинала 2011-04-12 . Получено 2011-12-18 .
  44. ^ OpenSSL: веб-интерфейс CVS
  45. ^ "Криптографический бэкэнд (GnuTLS 3.6.14)". gnutls.org . Получено 2020-06-26 .
  46. ^ "AES-GCM в libsodium". libsodium.org .
  47. ^ «Аппаратное ускорение». www.veracrypt.fr .
  48. ^ "aes - язык программирования Go". golang.org . Получено 2020-06-26 .
  49. ^ Шимпи, Ананд Лал. «Обзор Clarkdale: Intel Core i5 661, i3 540 и i3 530». www.anandtech.com . Получено 26.06.2020 .
  50. ^ «Интеллектуальный межсетевой экран хранения данных Bloombase StoreSafe».
  51. ^ «Vormetric Encryption добавляет поддержку технологии ускорения Intel AES-NI». 15 мая 2012 г.
  52. ^ Сааринен, Маркку-Юхани О. (17 апреля 2020 г.). "mjosaarinen/sm4ni: Демонстрация того, что инструкции AES-NI могут использоваться для реализации китайского стандарта шифрования SM4". GitHub .
  53. ^ Кивилинна, Юсси (2013). Блочные шифры: быстрые реализации на архитектуре x86-64 (PDF) (M.Sc.). Университет Оулу . стр. 33, 42. Получено 22.06.2017 .
  54. ^ Ю, Тэ Хи; Кивилинна, Юсси; Чо, Чунг Хи (2023). «Ускорение алгоритма блочного шифрования ARIA на основе AVX». Доступ IEEE . 11 : 77403–77415. Бибкод : 2023IEEEA..1177403Y. дои : 10.1109/ACCESS.2023.3298026 .
  55. ^ Kivilinna, Jussi (19 апреля 2023 г.). "camellia-simd-aesni". GitHub . Более новые процессоры x86-64 также поддерживают новые инструкции Galois Field (GFNI), которые позволяют реализовать Camellia s-box более простым способом и добиться еще более высокой производительности.
  56. ^ Ву, Хонгджун; Пренель, Барт. «AEGIS: быстрый аутентифицированный алгоритм шифрования (v1.1)» (PDF) .
  57. ^ Денис, Фрэнк. «Семейство алгоритмов аутентифицированного шифрования AEGIS». cfrg.github.io .

Внешние ссылки