В криптографии , режим Галуа / Счетчик ( ГКМ ) является режим работы для симметричных ключей шифрования блочных шифров , который широко применяется для ее выполнения. Пропускная способность GCM для современных высокоскоростных каналов связи может быть достигнута с помощью недорогих аппаратных ресурсов. [1] Операция представляет собой аутентифицированный алгоритм шифрования , предназначенный для обеспечения как подлинности (целостности) данных, так и конфиденциальности. GCM определен для блочных шифров с размером блока 128 бит. Код проверки подлинности сообщения Галуа ( GMAC) - это вариант GCM, предназначенный только для аутентификации, который может формировать инкрементный код аутентификации сообщения. И GCM, и GMAC могут принимать векторы инициализации произвольной длины.
Различные режимы работы блочного шифра могут иметь существенно разные характеристики производительности и эффективности, даже при использовании с одним и тем же блочным шифром. GCM может в полной мере использовать преимущества параллельной обработки, а реализация GCM может эффективно использовать конвейер команд или аппаратный конвейер. В отличие от этого, режим работы с цепочкой блоков шифров (CBC) приводит к остановкам конвейера, которые снижают его эффективность и производительность.
Основная операция
Как и в обычном режиме счетчика , блоки нумеруются последовательно, а затем этот номер блока объединяется с вектором инициализации (IV) и шифруется блочным шифром E , обычно AES . Результат этого шифрования затем подвергается операции XOR с открытым текстом для создания зашифрованного текста . Как и все режимы счетчика, это, по сути, потоковый шифр , поэтому важно, чтобы для каждого зашифрованного потока использовался другой IV.
Блоки зашифрованного текста считаются коэффициентами полинома, который затем вычисляется в точке H , зависящей от ключа , с использованием арифметики с конечным полем . Затем результат шифруется, создавая тег аутентификации, который можно использовать для проверки целостности данных. Затем зашифрованный текст содержит IV, зашифрованный текст и тег аутентификации.
Математическая основа
GCM сочетает в себе хорошо известный счетчик-режим шифрования с новым режимом аутентификации Галуа. Ключевой особенностью является простота параллельного вычисления умножения поля Галуа, используемого для аутентификации. Эта функция обеспечивает более высокую пропускную способность, чем алгоритмы шифрования, такие как CBC , которые используют режимы цепочки. Используемое поле GF (2 128 ) определяется полиномом
Тег аутентификации создается путем подачи блоков данных в функцию GHASH и шифрования результата. Эта функция GHASH определяется
где H = E k (0 128 ) - хеш-ключ, строка из 128 нулевых бит, зашифрованная с использованием блочного шифра , A - данные, которые только аутентифицированы (не зашифрованы), C - зашифрованный текст , m - число 128- битовых блоков в A (с округлением в большую сторону ), n - количество 128-битных блоков в C (с округлением в большую сторону), а переменная X i для i = 0, ..., m + n + 1 определена ниже. [2]
Во-первых, аутентифицированный текст и зашифрованный текст отдельно дополняются нулями до числа, кратного 128 битам, и объединяются в одно сообщение S i :
где len ( A ) и len ( C ) - это 64-битные представления длин битов A и C , соответственно, v = len ( A ) mod 128 - длина в битах последнего блока A , u = len ( C ) mod 128 - длина в битах последнего блока C , и обозначает конкатенацию битовых строк.
Тогда X i определяется как:
Вторая форма - это эффективный итерационный алгоритм (каждый X i зависит от X i -1 ), полученный путем применения метода Хорнера к первому. Только последний X m + n +1 остается выходом.
Если необходимо распараллелить вычисление хэша, это можно сделать, перемежая k раз:
GCM был разработан Джоном Вьегой и Дэвидом А. МакГрю как усовершенствование режима счетчика Картера – Вегмана (режим CWC). [ необходима цитата ]
В ноябре 2007 года NIST объявил о выпуске рекомендаций NIST Special Publication 800-38D для режимов работы блочного шифра: режим Galois / Counter Mode (GCM) и GMAC, делающий GCM и GMAC официальными стандартами. [3]
Использовать
Режим GCM используется в IEEE 802.1AE (MACsec) Ethernet безопасности, IEEE 802.11ad (также дублированные WiGig ), ANSI ( INCITS ) Fiber Channel Протоколы безопасности (FC-SP), IEEE P1619 0,1 хранения ленты, IETF IPsec стандартов, [ 4] [5] SSH , [6] TLS 1.2 [7] [8] и TLS 1.3. [9] AES-GCM включен в криптографический пакет NSA Suite B и его последнюю замену в пакете коммерческих алгоритмов национальной безопасности (CNSA) 2018 года. [10] Режим GCM используется в VPN- сервере и клиенте SoftEther [11], а также в OpenVPN, начиная с версии 2.4.
Представление
GCM требует одной операции блочного шифрования и одного 128-битного умножения в поле Галуа на каждый блок (128 бит) зашифрованных и аутентифицированных данных. Операции блочного шифра легко конвейеризуются или распараллеливаются; операции умножения легко конвейеризуются и могут быть распараллелены с некоторыми скромными усилиями (либо путем распараллеливания фактической операции, либо путем адаптации метода Хорнера в соответствии с исходным представлением NIST, либо и тем, и другим).
Intel добавила инструкцию PCLMULQDQ , подчеркнув ее использование для GCM. [12] В 2011 году SPARC добавил инструкции XMULX и XMULXHI, которые также выполняют 64 × 64-битное умножение без переноса . В 2015 году SPARC добавил инструкцию XMPMUL, которая выполняет XOR-умножение гораздо больших значений, вплоть до входных значений 2048 × 2048 бит, что дает результат 4096 бит. Эти инструкции обеспечивают быстрое умножение по GF (2 n ) и могут использоваться с любым представлением поля.
Впечатляющие результаты производительности публикуются для GCM на нескольких платформах. Кеспер и Швабе описали «более быстрый и устойчивый к атакам по времени AES-GCM» [13], который обеспечивает 10,68 цикла на байт аутентифицированного шифрования AES-GCM на 64-битных процессорах Intel. Dai et al. сообщать 3,5 цикла на байт для того же алгоритма при использовании инструкций Intel AES-NI и PCLMULQDQ. Шай Герон и Влад Краснов достигли 2,47 цикла на байт на процессорах Intel 3-го поколения. Соответствующие патчи были подготовлены для библиотек OpenSSL и NSS . [14]
Когда для сообщения необходимо выполнить и аутентификацию, и шифрование, программная реализация может добиться увеличения скорости за счет перекрытия выполнения этих операций. Производительность повышается за счет использования параллелизма на уровне инструкций посредством операций чередования. Этот процесс называется сшиванием функций [15], и хотя в принципе он может применяться к любой комбинации криптографических алгоритмов, GCM особенно подходит. Мэнли и Грегг [16] показывают простоту оптимизации при использовании функционального сшивания с GCM. Они представляют собой генератор программ, который использует аннотированную версию криптографического алгоритма на языке C и генерирует код, который хорошо работает на целевом процессоре.
GCM подвергался критике, например, со стороны Silicon Labs во встраиваемом мире, потому что параллельная обработка не подходит для эффективного использования криптографических аппаратных механизмов и, следовательно, снижает производительность шифрования для некоторых из наиболее чувствительных к производительности устройств. [17]
Патенты
Согласно заявлению авторов, GCM не обременена патентами. [18]
Безопасность
GCM доказал свою безопасность в конкретной модели безопасности . [19] Это безопасно, когда он используется с блочным шифром, который неотличим от случайной перестановки; однако безопасность зависит от выбора уникального вектора инициализации для каждого шифрования, выполняемого с одним и тем же ключом ( см. атака потокового шифрования ). Для любой данной комбинации ключа и вектора инициализации GCM ограничивается шифрованием 2 39 −256 бит открытого текста (64 ГиБ). Специальная публикация NIST 800-38D [3] включает рекомендации по выбору вектора инициализации.
Сила аутентификации зависит от длины тега аутентификации, как и для всех симметричных кодов аутентификации сообщений. Использование более коротких тегов аутентификации с GCM не рекомендуется. Битовая длина тега, обозначенная t , является параметром безопасности. В общем, t может быть любым из следующих пяти значений: 128, 120, 112, 104 или 96. Для некоторых приложений t может быть 64 или 32, но использование этих двух длин тегов ограничивает длину входных данных. данные и время жизни ключа. Приложение C в NIST SP 800-38D предоставляет руководство по этим ограничениям (например, если t = 32 и максимальный размер пакета составляет 2 10 байт, функцию дешифрования аутентификации следует вызывать не более 2 11 раз; если t = 64 и максимальный размер пакета - 2 15 байт, функция дешифрования аутентификации должна вызываться не более 2 32 раз).
Как и в случае с любым кодом аутентификации сообщения, если злоумышленник выбирает t- битный тег случайным образом, ожидается, что он будет правильным для данных с вероятностной мерой 2 - t . Однако с помощью GCM злоумышленник может увеличить свою вероятность успеха, выбрав теги из n слов - общую длину зашифрованного текста плюс любые дополнительные аутентифицированные данные (AAD) - с вероятностной мерой 2 - t с коэффициентом n. Однако следует иметь в виду, что в этих оптимальных тегах все еще доминирует показатель выживаемости алгоритма 1 - n ⋅2 - t для сколь угодно большого t . Более того, GCM плохо подходит для использования с очень короткими длинами тегов или очень длинными сообщениями.
Фергюсон и Сааринен независимо друг от друга описали, как злоумышленник может выполнять оптимальные атаки против аутентификации GCM, которые соответствуют нижней границе его безопасности. Фергюсон показал, что если n обозначает общее количество блоков в кодировке (вход в функцию GHASH), то существует метод создания целевой подделки шифротекста, которая, как ожидается, будет успешной с вероятностью приблизительно n ⋅2 - t . Если длина тега т меньше , чем 128, то каждый успешный подлог в этой атаке увеличивает вероятность того, что последующие целевые подделки преуспеют, и утечку информации о хэше - подразделе, H . В конце концов, H может быть полностью скомпрометирован, и гарантия аутентификации будет полностью потеряна. [20]
Независимо от этой атаки злоумышленник может попытаться систематически угадать множество различных тегов для данного ввода для аутентифицированного дешифрования и, таким образом, увеличить вероятность того, что один (или несколько) из них в конечном итоге будет признан действительным. По этой причине система или протокол, реализующий GCM, должны отслеживать и, при необходимости, ограничивать количество неудачных попыток проверки для каждого ключа.
Сааринен описал слабые ключи GCM . [21] Эта работа дает ценную информацию о том, как работает аутентификация на основе полиномиального хэша. Точнее, в этой работе описывается конкретный способ подделки сообщения GCM с учетом допустимого сообщения GCM, который работает с вероятностью примерно n ⋅2 -128 для сообщений длиной n × 128 бит. Однако эта работа не показывает более эффективной атаки, чем было известно ранее; вероятность успеха в наблюдении 1 этой статьи совпадает с вероятностью успеха леммы 2 из анализа INDOCRYPT 2004 (установка w = 128 и l = n × 128 ). Сааринен также описал вариант GCM Sophie Germain Counter Mode (SGCM), основанный на простых числах Sophie Germain .
Смотрите также
- Аутентифицированное шифрование
- Режимы работы блочного шифра
- AES-GCM-SIV
Рекомендации
- ^ Lemsitzer, S .; Wolkerstorfer, J .; Felber, N .; Брандли, М. (2007). «Мультигигабитная архитектура GCM-AES, оптимизированная для ПЛИС». В Paillier, P .; Verbauwhede, I. (ред.). Криптографическое оборудование и встроенные системы - CHES 2007 . Конспект лекций по информатике. 4727 . Springer. С. 227–238. DOI : 10.1007 / 978-3-540-74735-2_16 . ISBN 978-3-540-74734-5.
- ^ МакГрю, Дэвид А .; Вьега, Джон (2005). "Режим работы счетчика Галуа (GCM)" (PDF) . п. 5 . Проверено 20 июля 2013 года . Обратите внимание, что в формулах статьи есть опечатка.
- ^ а б Дворкин, Моррис (2007–2011). Рекомендации по режимам работы блочного шифра: режим Галуа / счетчика (GCM) и GMAC (PDF) (технический отчет). NIST. 800-38D . Проверено 18 августа 2015 .
- ^ RFC 4106 Использование режима Галуа / счетчика (GCM) в IPsec Encapsulating Security Payload (ESP)
- ^ RFC 4543 Использование кода аутентификации сообщения Галуа (GMAC) в IPsec ESP и AH
- ^ RFC 5647 AES Режим счетчика Галуа для протокола транспортного уровня Secure Shell
- ^ RFC 5288 AES Режим счетчика Галуа (GCM) Наборы шифров для TLS
- ^ RFC 6367 Добавление наборов шифров Camellia к безопасности транспортного уровня (TLS)
- ^ RFC 8446 Протокол безопасности транспортного уровня версии 1.3
- ^ https://csrc.nist.gov/projects/computer-security-objects-register/algorithm-registration#AES
- ^ «Почему SoftEther VPN - проект SoftEther VPN» .
- ^ Герон, Шэй; Кунавис, Майкл (апрель 2014 г.). «Инструкция Intel Carry -less Multiplication и ее использование для вычислений в режиме GCM (версия 2.02)» . Проверено 29 апреля 2018 .
- ^ Käsper, E .; Швабе, П. (2009). «Более быстрый и устойчивый к атакам по времени AES-GCM». In Clavier, C .; Гай, К. (ред.). Криптографическое оборудование и встроенные системы - CHES 2009 . Конспект лекций по информатике. 5747 . Springer. С. 1–17. DOI : 10.1007 / 978-3-642-04138-9_1 . ISBN 978-3-642-04138-9.
- ^ Герон, Шэй. "AES-GCM для эффективного аутентифицированного шифрования - конец господству HMAC-SHA-1?" (PDF) . Мастер-класс по реальной криптографии . Проверено 8 февраля 2013 года .
- ^ Gopal, V., Feghali, W., Guilford, J., Ozturk, E., Wolrich, G., Dixon, M., Locktyukhin, M., Perminov, M. «Быстрые криптографические вычисления на архитектуре Intel с помощью функционального сшивания " Intel Corp. (2010 г.)
- ^ Мэнли, Раймонд; Грегг, Дэвид (2010). «Генератор программ для инструкций Intel AES-NI». In Gong, G .; Гупта, KC (ред.). Прогресс в криптологии - INDOCRYPT 2010 . Конспект лекций по информатике. 6498 . Springer. С. 311–327. DOI : 10.1007 / 978-3-642-17401-8_22 . ISBN 978-3-642-17400-1.
- ^ «Безопасность Интернета вещей. Часть 6: Режим счетчика Галуа» . 2016-05-06 . Проверено 29 апреля 2018 .
- ^ МакГрю, Дэвид А .; Вьега, Джон. «Заявление об интеллектуальной собственности режима работы Галуа / счетчика (GCM)» (PDF) . Центр ресурсов компьютерной безопасности, NIST.
- ^ МакГрю, Дэвид А .; Вьега, Джон (2004). «Безопасность и производительность режима работы Галуа / счетчика (GCM)». Труды INDOCRYPT 2004 . Конспект лекций по информатике. 3348 . Springer. CiteSeerX 10.1.1.1.4591 . DOI : 10.1007 / 978-3-540-30556-9_27 . ISBN 978-3-540-30556-9.
- ^ Нильс Фергюсон, Слабые места аутентификации в GCM , 2005-05-20
- ^ Маркку-Юхани О. Сааринен (2011-04-20). «Циклические атаки на GCM, GHASH и другие полиномиальные MAC и хэши» . FSE 2012. Цитировать журнал требует
|journal=
( помощь )
Внешние ссылки
- Специальная публикация NIST SP800-38D, определяющая GCM и GMAC
- RFC 4106: Использование режима Галуа / счетчика (GCM) в IPsec Encapsulating Security Payload (ESP)
- RFC 4543: Использование кода аутентификации сообщений Галуа (GMAC) в IPsec ESP и AH
- RFC 5288: Наборы шифров в режиме счетчика Галуа (GCM) AES для TLS
- RFC 6367: Добавление наборов шифров Camellia к безопасности транспортного уровня (TLS)
- IEEE 802.1AE - Безопасность управления доступом к среде (MAC)
- Рабочая группа IEEE Security in Storage разработала стандарт P1619.1
- Технический комитет INCITS T11 работает над проектом Fibre Channel - Security Protocols .
- Аутентифицированное шифрование AES-GCM и AES-CCM в безопасном RTP (SRTP)
- Режим работы Галуа / счетчика (GCM)