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 →