Galois/Counter Mode

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

GCM (аббр. от англ. Galois/Counter Mode — счётчик с аутентификацией Галуа) — широко применяющийся режим работы симметричных блочных шифров, имеющий высокую эффективность и производительность[1]. Является режимом аутентифицированного шифрования (AEAD)[2], предоставляя как конфиденциальность, так и аутентификацию переданных данных (гарантируя их целостность).

Режим GCM определяется для блочных шифров с размером блока в 128 бит. Существует вариант GCM под названием GMAC, предоставляющий лишь аутентификацию данных, он может использоваться как инкрементальный код аутентификации сообщений. И GCM и GMAC принимают на вход вектор инициализации произвольной длины. Алгоритм не ограничен патентами[3].

Благодаря наличию кода аутентификации (имитовставки), данный режим аутентифицированного шифрования позволяет получателю легко обнаружить любые изменения сообщения (как зашифрованного, так и дополненного информацией, переданной открыто), прежде чем начать его расшифровку, что значительно улучшает защиту от искажений, атак активного MITM и атак на основе оракулов[англ.] (например от Padding oracle attack[англ.] для CBC-режима).

Стандарт NIST США с 2007 года[4].

Принцип работы

[править | править код]
Алгоритм шифрования в режиме GCM. Показан случай 1 блока дополнительных аутентифицированных данных "Auth Data 1". Начальное значение счётчика содержит в себе вектор IV (или является производным от него). На вход подаются два блока открытого текста plaintext 1 и 2. Операция E_K обозначает шифрование на общем ключе K, операция multH обозначает умножение в поле GF(2^128) на ключ хэша H, "incr" обозначает инкремент счетчика[5].

В обычном режиме шифрования CTR (счётчик) входные блоки нумеруются последовательно, номер блока шифруется блочным алгоритмом E (обычно AES). Выход функции шифрования используется в операции XOR (исключающее или) с открытым текстом для получения шифротекста. Как и для других режимов на базе счётчиков, схема представляет собой потоковый шифр, поэтому обязательным является использование уникального вектора инициализации для каждого шифруемого потока данных.

В GCM используется функция Галуа «Mult» («GHASH(H, A, C)»), которая комбинирует блоки шифротекста и код аутентификации, чтобы получить тег аутентификации. На вход функции подается ключ хеширования H, являющийся результатом шифрования 128 нулевых битов на ключе K, т.е. H=E(K, 0^128). Тег аутентификации используется для проверки целостности сообщения. По каналу передаются: вектор инициализации[англ.] IV, блоки шифротекста, и код аутентификации (16 байтов). По своим свойствам режим GCM (GMAC) похож на HMAC.

GCM режим подвергся критике в мире встраиваемых систем со стороны Silicon Labs, поскольку параллельная обработка не подходит для эффективного использования криптографических аппаратных движков и, следовательно, снижает производительность шифрования для некоторых наиболее чувствительных к производительности устройств[6].

Применение

[править | править код]

Режим GCM используется в IEEE 802.1AE (MACsec) для безопасного Ethernet, беспроводном IEEE 802.11ad (WiGig в 60-ГГц полосе), "Fibre Channel Security Protocols" (FC-SP) от ANSI (INCITS), формате хранения на цифровых лентах IEEE P1619.1, в стандартах IPsec от IETF[7][8], может применяться в SSH[9] и TLS (версии 1.2 и новее)[10][11]. Применяется в VPN решениях, в OpenVPN присутствует с версии 2.3.3 (в шифрах AES-256-GCM-SHA384 и AES-128-GCM-SHA256)[12].

Примечания

[править | править код]
  1. Lemsitzer, Wolkerstorfer, Felber, Braendli, Multi-gigabit GCM-AES Architecture Optimized for FPGAs. CHES '07: Proceedings of the 9th international workshop on Cryptographic Hardware and Embedded Systems, 2007.
  2. В англоязычной литературе это называется AEAD — Authenticated Encryption with Associated Data. В криптографии ГОСТ такого режима нет.
  3. Архивированная копия. Дата обращения: 20 сентября 2017. Архивировано 29 августа 2008 года.
  4. NIST Special Publication 800-38D Архивная копия от 5 августа 2011 на Wayback Machine, November, 2007, Recommendation for BlockCipher Modes of Operation:Galois/Counter Mode (GCM) and GMAC.
  5. http://ai2-s2-pdfs.s3.amazonaws.com/114a/4222c53f1a6879f1a77f1bae2fc0f8f55348.pdf
  6. Community - Silicon Labs (амер. англ.). community.silabs.com. Дата обращения: 3 ноября 2023. Архивировано 26 октября 2017 года.
  7. RFC 4106 The Use of Galois/Counter Mode (GCM) in IPsec Encapsulating Security Payload (ESP)
  8. RFC 4543 The Use of Galois Message Authentication Code (GMAC) in IPsec ESP and AH
  9. RFC 5647 AES Galois Counter Mode for the Secure Shell Transport Layer Protocol
  10. RFC 5288 AES Galois Counter Mode (GCM) Cipher Suites for TLS
  11. RFC 6367 Addition of the Camellia Cipher Suites to Transport Layer Security (TLS)
  12. David Guyton. OpenVPN Version List and Changelog (англ.) (1 октября 2019). — Last Updated: Sunday, 12 January 2020.