AES-GCM
AES-GCM (Advanced Encryption Standard — Galois/Counter Mode) — это режим работы блочного шифра, который обеспечивает одновременно конфиденциальность данных (шифрование) и их аутентификацию (проверку подлинности и целостности). Является разновидностью режима аутентифицированного шифрования с ассоциированными данными (AEAD). AES-GCM сочетает в себе шифрование в режиме счётчика (CTR) и вычисление кода аутентификации сообщения на основе умножения в поле Галуа (GMAC). Широко применяется в современных протоколах безопасности, таких как TLS 1.2 и 1.3, IPsec, SSH, а также в беспроводных сетях (Wi-Fi Protected Access 3 — WPA3) и криптографических библиотеках.
История и стандартизация
Режим GCM (Galois/Counter Mode) был разработан в 2004 году группой криптографов, включая Дэвида МакГрю (David McGrew) и Джона Вьегу (John Viega), для удовлетворения растущей потребности в эффективном аутентифицированном шифровании. В 2007 году GCM был стандартизирован Национальным институтом стандартов и технологий США (NIST) как часть рекомендации SP 800-38D «Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC». AES-GCM является одним из наиболее распространённых вариантов, где в качестве базового блочного шифра используется AES (Advanced Encryption Standard) с длиной ключа 128, 192 или 256 бит.
Режим GCM был принят в качестве обязательного или рекомендуемого алгоритма во многих международных и отраслевых стандартах, включая IETF (RFC 5288 для TLS, RFC 4106 для IPsec) и IEEE 802.11ad (для WPA3). В России AES-GCM не входит в перечень утверждённых ФСБ России криптографических алгоритмов (ГОСТ), однако может использоваться в коммерческих и международных системах, не подпадающих под требования государственной тайны.
Принцип работы
AES-GCM объединяет два основных компонента: шифрование в режиме счётчика (CTR) и аутентификацию на основе кода аутентификации (GMAC).
Шифрование в режиме счётчика (CTR)
В режиме CTR для каждого блока открытого текста генерируется уникальное значение счётчика (nonce + счётчик). Это значение шифруется с помощью AES, а полученный псевдослучайный поток (гамма) накладывается на открытый текст операцией XOR. Режим CTR позволяет шифровать блоки параллельно, что обеспечивает высокую производительность на современных процессорах с поддержкой аппаратного ускорения AES (AES-NI). Длина nonce (однократно используемого числа) в GCM обычно составляет 12 байт (96 бит), что является рекомендуемым значением для обеспечения безопасности и эффективности.
Аутентификация (GMAC)
Для проверки целостности и подлинности сообщения GCM вычисляет код аутентификации (тег) на основе умножения в поле Галуа GF(2¹²⁸). Процесс включает:
- Ассоциированные данные (AAD) — данные, которые не шифруются, но должны быть аутентифицированы (например, заголовки сетевых пакетов).
- Шифротекст — результат шифрования.
- Nonce и длина — значения, используемые для инициализации.
Все эти элементы обрабатываются с помощью полиномиального умножения в поле Галуа, что даёт 128-битный тег аутентификации. Длина тега может варьироваться (обычно 96, 104, 112, 120 или 128 бит), но для большинства приложений рекомендуется 128 бит.
Итоговый формат
Результатом работы AES-GCM является кортеж: (nonce, шифротекст, тег аутентификации). При расшифровке получатель, используя тот же nonce и ключ, повторно вычисляет тег и сравнивает его с переданным. Если теги совпадают, данные считаются подлинными и не были изменены. В противном случае расшифрованный текст отбрасывается.
Преимущества и недостатки
Преимущества
- Аутентифицированное шифрование — обеспечивает конфиденциальность и целостность в одном алгоритме, что снижает риск ошибок при реализации (например, атаки padding oracle).
- Высокая производительность — режим CTR допускает параллельную обработку, а GMAC может быть эффективно реализован аппаратно. На процессорах с AES-NI AES-GCM работает быстрее многих других режимов.
- Поддержка ассоциированных данных — позволяет аутентифицировать незашифрованные метаданные.
- Отсутствие необходимости в паддинге — в отличие от режимов CBC или ECB, GCM не требует дополнения открытого текста до размера блока, что упрощает реализацию и снижает объём данных.
Недостатки
- Критичность nonce — повторное использование одного и того же nonce с одним и тем же ключом полностью разрушает безопасность: злоумышленник может восстановить ключ и подделать тег. Это является самым серьёзным ограничением GCM.
- Ограничение на длину сообщения — стандарт NIST ограничивает объём данных, зашифрованных одним ключом и nonce, до 2³⁹ блоков (примерно 64 ГБ). На практике это редко является проблемой.
- Сложность реализации — неправильная обработка nonce или ошибки в генерации ключей могут привести к уязвимостям.
- Чувствительность к атакам по времени — реализация умножения в поле Галуа может быть подвержена атакам по побочным каналам, если не используется защищённый код.
Применение
AES-GCM является основным режимом аутентифицированного шифрования во многих современных протоколах:
- TLS 1.2 и 1.3 — используется в наборах шифров (ciphersuites), таких как TLS_AES_128_GCM_SHA256 и TLS_AES_256_GCM_SHA384. В TLS 1.3 AES-GCM является обязательным для реализации.
- IPsec — применяется для защиты трафика на сетевом уровне (RFC 4106).
- SSH — используется в протоколе Secure Shell для шифрования и аутентификации сессий.
- Wi-Fi Protected Access 3 (WPA3) — в режиме Simultaneous Authentication of Equals (SAE) и для шифрования данных.
- Криптографические библиотеки — OpenSSL, BoringSSL, libsodium, Crypto++ и другие поддерживают AES-GCM.
- Файловые системы и диски — например, в BitLocker (Microsoft) и некоторых реализациях LUKS.
- Облачные сервисы — Google Cloud, Amazon Web Services (AWS) и Microsoft Azure используют AES-GCM для защиты данных в покое и в транзите.
Безопасность и криптоанализ
AES-GCM считается криптографически стойким при условии правильного использования. Основные угрозы:
- Повторное использование nonce — приводит к полной компрометации. Для предотвращения этого рекомендуется генерировать nonce случайным образом (12 байт) или использовать монотонно возрастающий счётчик.
- Атаки на тег — длина тега менее 128 бит снижает стойкость к атакам подбора. Стандарт рекомендует 128-битный тег для максимальной безопасности.
- Атаки по времени — небезопасные реализации умножения в GF(2¹²⁸) могут быть атакованы. Современные библиотеки используют защищённые от утечек по времени алгоритмы.
- Квантовая устойчивость — AES-GCM, как и все симметричные шифры, уязвим к атакам с использованием квантового компьютера (алгоритм Гровера), однако для 256-битного ключа требуемая сложность остаётся высокой (2¹²⁸ операций). В постквантовую эпоху может потребоваться переход на более длинные ключи или другие режимы.
Сравнение с другими режимами
| Режим | Аутентификация | Параллельность | Nonce | Паддинг |
|---|---|---|---|---|
| GCM | Да (GMAC) | Да (CTR) | 12 байт (рекомендуется) | Нет |
| CCM | Да (CBC-MAC) | Нет | 7–13 байт | Нет |
| CBC | Нет | Нет | Да (IV) | Да |
| CTR | Нет | Да | Да (nonce) | Нет |
| ChaCha20-Poly1305 | Да (Poly1305) | Частично | 12 байт | Нет |
AES-GCM превосходит CCM по производительности на аппаратном уровне, но уступает ChaCha20-Poly1305 на устройствах без аппаратной поддержки AES (например, на старых мобильных процессорах).
Интересные факты
- AES-GCM является одним из немногих режимов, рекомендованных NIST для использования в федеральных информационных системах США.
- В 2016 году исследователи обнаружили уязвимость в некоторых реализациях AES-GCM, связанную с повторным использованием nonce при обработке больших объёмов данных (атака «forbidden attack»). Это привело к ужесточению рекомендаций по генерации nonce.
- В протоколе TLS 1.3 AES-GCM используется в паре с алгоритмом выработки ключей на основе эллиптических кривых (ECDHE), что обеспечивает совершенную прямую секретность (PFS).
Источники
- NIST Special Publication 800-38D: Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC. — National Institute of Standards and Technology, 2007.
- McGrew, D., Viega, J. The Galois/Counter Mode of Operation (GCM). — Submission to NIST, 2004.
- RFC 5288: AES Galois Counter Mode (GCM) Cipher Suites for TLS. — IETF, 2008.
- RFC 4106: The Use of Galois/Counter Mode (GCM) in IPsec Encapsulating Security Payload (ESP). — IETF, 2005.
- Ferguson, N., Schneier, B., Kohno, T. Cryptography Engineering: Design Principles and Practical Applications. — Wiley, 2010.
- Bernstein, D. J., Lange, T. Post-Quantum Cryptography. — Springer, 2017.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →