Режим шифрования GCM
Режим шифрования GCM (англ. Galois/Counter Mode — режим счётчика и Галуа) — это режим работы блочного симметричного шифра, который одновременно обеспечивает конфиденциальность данных (шифрование) и их аутентификацию (проверку целостности и подлинности) с помощью кода аутентичности (тега). GCM относится к классу аутентифицированных режимов шифрования с дополнительными данными (AEAD — Authenticated Encryption with Associated Data).
Принцип работы
GCM объединяет два криптографических механизма: шифрование в режиме счётчика (CTR) и вычисление кода аутентичности на основе умножения в поле Галуа (GF(2<sup>128</sup>)). Это позволяет выполнять операции шифрования и аутентификации параллельно, что даёт высокую производительность на аппаратном и программном уровне.
Шифрование в режиме счётчика
Шифрование выполняется путём генерации псевдослучайной последовательности (гаммы) с помощью блочного шифра, работающего в режиме счётчика. Для каждого блока данных вычисляется уникальное значение счётчика (J<sub>i</sub>), которое затем шифруется. Полученная гамма складывается по модулю 2 (XOR) с открытым текстом, образуя шифротекст. Значения счётчика конструируются из начального вектора (IV), номера блока и констант, что исключает повторное использование гаммы.
Вычисление тега аутентификации
Для аутентификации данных GCM использует полиномиальный хеш в поле Галуа размером 128 бит (GHASH). Хеш вычисляется последовательно над шифротекстом, дополнительными аутентифицированными данными (AAD) и их длинами. Начальное значение хеша (H) получается шифрованием нулевого блока на ключе шифрования. Финальный тег (T) формируется как XOR результата GHASH с зашифрованным начальным вектором.
Технические характеристики
Размеры
- Размер ключа: обычно 128, 192 или 256 бит (зависит от используемого блочного шифра, чаще всего AES).
- Размер блока шифра: 128 бит (фиксировано для AES и большинства современных блочных шифров).
- Размер начального вектора (IV): рекомендуется 96 бит (12 байт). Допускаются IV от 1 до 2<sup>64</sup>-1 бит, но при IV нестандартной длины дополнительно вычисляется хеш GHASH для его аутентификации, что снижает производительность.
- Размер тега (T): 32, 64, 96, 104, 112, 120 или 128 бит. Стандарт рекомендует 128 бит (16 байт) для максимальной безопасности. Меньшие размеры тега увеличивают вероятность ложной аутентификации.
- Максимальный размер сообщения: 2<sup>39</sup> − 256 бит (примерно 64 ГБ) при использовании 96-битного IV. Без указанных ограничений — до 2<sup>64</sup> блоков шифрования.
Операции
Шифрование и аутентификация выполняются параллельно, что позволяет GCM эффективно использовать аппаратные ускорители (например, инструкции AES-NI в процессорах x86-64) и SIMD-векторизацию.
Версия GMAC
GMAC (Galois Message Authentication Code) — упрощённая версия GCM, которая обеспечивает только аутентификацию сообщения без шифрования. В режиме GMAC шифруется только пустое сообщение (открытый текст длины 0), а тег вычисляется для дополнительных данных. GMAC применяется для проверки целостности открытых метаданных или подписей.
История и стандартизация
GCM был разработан в 2003—2004 годах криптографами Джоном Виейгой (John Viega) и Дэвидом Макгрю (David McGrew) в компании Cisco Systems для обеспечения безопасности в протоколах IPsec и TLS. В 2007 году стандартизирован NIST (США) как часть рекомендаций SP 800-38D. Включён в международный стандарт ISO/IEC 19772. В России не является государственным стандартом криптографической защиты, но широко применяется в коммерческих и открытых системах.
Применение
GCM широко используется в протоколах и системах, требующих одновременно конфиденциальности и аутентификации:
- TLS 1.2 и 1.3 (шифронаборы AES-GCM).
- IPsec (ESP) — аутентифицированное шифрование пакетов.
- Wi-Fi Protected Access 2/3 (WPA2/WPA3) — защита кадров в беспроводных сетях.
- SSH — транспортный уровень защищённого оболочного протокола.
- QUIC — протокол транспортного уровня (HTTP/3).
- Дисковое шифрование — BitLocker (с AES-XTS), но GCM не применяется напрямую из-за требований к нелинейной аутентификации больших объёмов.
- Системы аудио/видеосвязи — WebRTC, SRTP (упрощённые реализации).
Криптостойкость и уязвимости
Безопасность GCM основана на стойкости используемого блочного шифра (обычно AES) и криптографических свойствах умножения в поле Галуа. Однако существуют известные ограничения:
- Повторное использование IV: Критическая уязвимость. Если один и тот же IV используется с одним ключом для шифрования более одного сообщения, злоумышленник может восстановить внутреннее состояние GHASH и сфабриковать поддельные сообщения. Стандарт требует строгой уникальности IV для каждого сообщения.
- Атака по нечётным тегам: При слишком коротком теге (менее 64 бит) увеличивается вероятность коллиззий и возможности подбора аутентичной пары (сообщение, тег) атакующим.
- Атаки по времени: Реализации GHASH без использования константного времени подвержены атакам по времени (timing side-channel), что позволяет восстанавливать ключ при известной паре открытого текста и шифротекста.
- Неаутентифицированный хеш: GHASH не является криптографически стойкой хеш-функцией; он лишь обеспечивает аутентификацию при условии секретности ключа.
- Квантовые угрозы: Теоретически алгоритм Гровера позволяет ускорить перебор ключа AES вдвое, но квантовые атаки на GCM как таковые не разработаны на 2025 год.
Преимущества и недостатки
Преимущества
- Высокая производительность: шифрование и аутентификация параллельны, поддерживаются аппаратные ускорители.
- Единый ключ: для шифрования и аутентификации используется общий симметричный ключ.
- Поддержка дополнительных данных (AAD) — заголовки, метаданные, не требующие шифрования, но подлежащие аутентификации.
- Широкая поддержка в стандартах и библиотеках.
Недостатки
- Строгие требования к уникальности начального вектора.
- Уязвимость к атакам по времени в программных реализациях GHASH.
- Ограничение максимальной длины сообщения (примерно 64 ГБ для одного ключа), что не позволяет шифровать очень большие данные (например, терабайтные диски) без смены ключа.
- Сложность реализации безопасной схемы генерации IV без аппаратных генераторов случайных чисел.
Реализации
GCM поддерживается в большинстве криптографических библиотек: OpenSSL, LibreSSL, BoringSSL, NSS, Crypto++, Botan, .NET Cryptography, Java JCE (AES/GCM/NoPadding), Go standard library, Python (PyCryptodome, cryptography). В России GCM не входит в ГОСТ Р 34.12-2015, но широко используется в продуктах иностранного происхождения.
Сравнение с другими AEAD-режимами
| Режим | Тип аутентификации | Производительность | Устойчивость к атакам | Размер тега |
|---|---|---|---|---|
| GCM | Поле Галуа (GHASH) | Высокая (параллельная) | Средняя (зависит от реализации) | 32–128 бит |
| CCM | CBC-MAC | Средняя (последовательная) | Высокая при размере тега ≥ 64 бит | 32–128 бит |
| OCB | Маскированная аутентификация | Очень высокая (1 проход) | Высокая (патентные ограничения) | 128 бит |
| ChaCha20-Poly1305 | Полиномиальный хеш (Poly1305) | Высокая (без аппаратных ускорителей) | Высокая (устойчив к атакам по времени) | 128 бит |
Источники
- NIST Special Publication 800-38D: «Recommendation for Block Cipher Modes of Operation: Galois/Counter Mode (GCM) and GMAC» (NIST, 2007).
- ISO/IEC 19772:2009: «Information technology — Security techniques — Authenticated encryption».
- D. McGrew, J. Viega: «The Galois/Counter Mode of Operation (GCM)» (2004, 2005).
- S. Fluhrer: «Cryptanalysis of the GCM Algorithm» (Crypto 2008).
- A. Joux: «Authentication Failures in GCM» (2006).
- RFC 5288: «AES Galois Counter Mode (GCM) Cipher Suites for TLS» (2008).
- RFC 4106: «The Use of Galois/Counter Mode (GCM) in IPsec ESP» (2005).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →