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

Режим шифрования 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 бит
CCMCBC-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).
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru