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

Режим шифрования 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 с зашифрованным начальным вектором.

Технические характеристики

Размеры

Операции

Шифрование и аутентификация выполняются параллельно, что позволяет 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 широко используется в протоколах и системах, требующих одновременно конфиденциальности и аутентификации:

Криптостойкость и уязвимости

Безопасность GCM основана на стойкости используемого блочного шифра (обычно AES) и криптографических свойствах умножения в поле Галуа. Однако существуют известные ограничения:

Преимущества и недостатки

Преимущества

Недостатки

Реализации

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 бит

Источники

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

На главную BFOmetr →