Открыть сервис

AES-NI

AES-NI (Advanced Encryption Standard New Instructions) — набор инструкций для микропроцессоров архитектуры x86 и x86-64, предназначенный для аппаратного ускорения операций симметричного шифрования по алгоритму AES (Advanced Encryption Standard). Разработан корпорацией Intel и впервые реализован в процессорах на микроархитектуре Westmere (2010 год). Позднее поддержка AES-NI была добавлена в процессоры AMD, начиная с архитектуры Bulldozer (2011 год), а также в некоторые модели ARM-процессоров (например, в Apple M1). Инструкции позволяют значительно повысить производительность и снизить энергопотребление при выполнении криптографических операций по сравнению с программной реализацией.

История

Потребность в аппаратном ускорении шифрования возникла в середине 2000-х годов, когда алгоритм AES (принятый в качестве стандарта в США в 2001 году) стал повсеместно использоваться в протоколах безопасности, таких как IPsec, TLS/SSL, Wi-Fi (WPA2/WPA3), BitLocker, FileVault и других. Программная реализация AES на процессорах общего назначения требовала значительных вычислительных ресурсов, особенно при работе с большими объёмами данных.

Intel начала разработку набора инструкций AES-NI в 2008 году. Первыми процессорами с поддержкой AES-NI стали модели на микроархитектуре Westmere, выпущенные в январе 2010 года (в частности, линейки Core i3, i5, i7 для мобильных и настольных ПК). В том же году AMD анонсировала поддержку AES-NI в процессорах на архитектуре Bulldozer, которые поступили в продажу в 2011 году. С тех пор AES-NI является стандартной функцией практически всех современных процессоров x86, за исключением некоторых бюджетных моделей и ранних образцов.

Архитектура набора инструкций

Набор AES-NI включает шесть инструкций, которые выполняют ключевые операции алгоритма AES на аппаратном уровне. Инструкции работают с 128-битными регистрами XMM (расширение SSE) и используют выделенные аппаратные блоки в ядре процессора.

Основные инструкции

  • AESENC (AES Encrypt) — выполняет один раунд шифрования AES: операции SubBytes (замена байтов), ShiftRows (сдвиг строк), MixColumns (смешивание столбцов) и AddRoundKey (добавление раундового ключа).
  • AESENCLAST (AES Encrypt Last) — выполняет последний раунд шифрования AES, который отличается отсутствием операции MixColumns.
  • AESDEC (AES Decrypt) — выполняет один раунд расшифровки AES (обратные операции InvSubBytes, InvShiftRows, InvMixColumns, AddRoundKey).
  • AESDECLAST (AES Decrypt Last) — выполняет последний раунд расшифровки.
  • AESKEYGENASSIST (AES Key Generation Assist) — используется для генерации раундовых ключей из исходного ключа шифрования (Key Expansion).
  • PCLMULQDQ (Carry-Less Multiplication Quadword) — инструкция беcпереносного умножения 64-битных чисел, которая применяется в режимах аутентифицированного шифрования (например, GCM — Galois/Counter Mode) для вычисления кода аутентификации GHASH. Формально PCLMULQDQ не входит в AES-NI, но часто упоминается совместно с ним, так как необходима для полного аппаратного ускорения AES-GCM.

Режимы работы

AES-NI ускоряет все основные режимы блочного шифрования AES:

  • ECB (Electronic Codebook) — базовый режим.
  • CBC (Cipher Block Chaining) — режим сцепления блоков, широко используется в протоколах TLS и IPsec.
  • CTR (Counter) — режим счётчика, обеспечивающий возможность параллельного шифрования.
  • GCM (Galois/Counter Mode) — режим аутентифицированного шифрования, обеспечивающий как конфиденциальность, так и целостность данных. Ускорение GCM достигается за счёт совместного использования AESENC и PCLMULQDQ.
  • XTS (XEX-based Tweaked CodeBook mode with Ciphertext Stealing) — режим, используемый для шифрования дисков (например, в BitLocker и dm-crypt).

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

Аппаратное ускорение AES-NI обеспечивает многократный прирост производительности по сравнению с программными реализациями. В зависимости от конкретного процессора, режима шифрования и размера данных, скорость шифрования может увеличиваться в 3–10 раз. Энергопотребление при выполнении криптоопераций снижается, что особенно важно для мобильных устройств и серверов.

Типичные показатели производительности (на процессорах Intel Core 10-го поколения, 2020 год):

  • Шифрование AES-128-CBC: около 5–6 ГБ/с.
  • Шифрование AES-256-GCM: около 3–4 ГБ/с.
  • Программная реализация AES (без AES-NI) на тех же процессорах: 0,5–1 ГБ/с.

Применение

AES-NI широко используется в программном обеспечении и операционных системах для ускорения криптографических операций.

Операционные системы

  • Windows: BitLocker (шифрование дисков) использует AES-NI при наличии поддержки процессором. Криптографический API (CNG) также задействует аппаратное ускорение.
  • Linux: Криптографический модуль ядра (crypto subsystem) поддерживает AES-NI через драйвер aesni-intel. Утилиты dm-crypt и LUKS используют его для шифрования дисков.
  • macOS: FileVault и криптографические библиотеки (CommonCrypto) применяют AES-NI на процессорах Intel и Apple Silicon.

Протоколы и библиотеки

  • OpenSSL: Начиная с версии 1.0.1 (2012 год), использует AES-NI для ускорения шифрования в TLS/SSL. Поддержка включена по умолчанию при обнаружении совместимого процессора.
  • LibreSSL: Аналогично использует AES-NI.
  • IPsec: Реализации IPsec (например, strongSwan, Libreswan) ускоряют шифрование с помощью AES-NI.
  • Wi-Fi: Драйверы WPA2/WPA3 на некоторых платформах задействуют AES-NI для ускорения шифрования трафика.

Прикладное ПО

  • Архиваторы: 7-Zip, WinRAR и другие архиваторы, поддерживающие шифрование AES, используют AES-NI для ускорения.
  • Виртуализация: Гипервизоры (VMware, KVM, Hyper-V) могут передавать инструкции AES-NI виртуальным машинам, что позволяет ускорять шифрование внутри гостевых ОС.

Поддержка в процессорах

Intel

  • Микроархитектура Westmere (2010): Core i3/i5/i7 (мобильные и настольные), Xeon E3/E5/E7.
  • Все последующие микроархитектуры: Sandy Bridge (2011), Ivy Bridge (2012), Haswell (2013), Broadwell (2014), Skylake (2015) и более новые.
  • Исключения: некоторые модели Atom (до 2013 года), Celeron и Pentium (до 2012 года) не имели поддержки AES-NI.

AMD

  • Микроархитектура Bulldozer (2011): FX, Opteron, A-серия.
  • Все последующие микроархитектуры: Piledriver (2012), Steamroller (2014), Excavator (2015), Zen (2017) и более новые.
  • Исключения: некоторые модели на архитектуре Jaguar (2013) и Puma (2014) не поддерживали AES-NI.

ARM

  • Архитектура ARMv8-A (2011): включает необязательное расширение для ускорения AES (AESD, AESE, AESIMC, AESMC). Поддерживается в процессорах Apple (A7 и новее, M1 и новее), Qualcomm (Kryo), Samsung (Exynos) и других.
  • Архитектура ARMv8.2-A (2016): расширение стало обязательным для некоторых профилей.

Критика и ограничения

  • Уязвимости боковых каналов: В 2017 году были обнаружены уязвимости, связанные с утечкой данных через анализ времени выполнения инструкций AES-NI в некоторых реализациях (например, в OpenSSL). Однако последующие исправления (постоянное время выполнения, маскирование) минимизировали этот риск.
  • Отсутствие поддержки в старых процессорах: Процессоры, выпущенные до 2010 года, не поддерживают AES-NI, что делает их неэффективными для современных криптографических задач.
  • Необходимость программной оптимизации: Для использования AES-NI требуется поддержка со стороны операционной системы и прикладного ПО. Без соответствующей оптимизации аппаратное ускорение не задействуется.

Источники

  • Intel Corporation. "Intel® Advanced Encryption Standard (AES) New Instructions Set". Intel White Paper, 2010.
  • AMD Corporation. "AMD64 Architecture Programmer’s Manual, Volume 3: General-Purpose and System Instructions". 2013.
  • Gueron, S. "Intel® AES-NI: A New Instruction Set for AES". Proceedings of the 5th International Conference on Security and Cryptography (SECRYPT), 2010.
  • OpenSSL Project. "OpenSSL 1.0.1 Release Notes". 2012.
  • ARM Limited. "ARM Architecture Reference Manual ARMv8-A". 2013.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →