Jump to content

CBC-MAC

В криптографии ( код аутентификации сообщения с цепочкой блоков шифра CBC -MAC ) — это метод построения кода аутентификации сообщения (MAC) из блочного шифра . Сообщение шифруется с помощью некоторого алгоритма блочного шифрования в режиме цепочки блоков шифра (CBC) для создания цепочки блоков, в которой каждый блок зависит от правильного шифрования предыдущего блока. Эта взаимозависимость гарантирует, что изменение любого из битов открытого текста приведет к изменению окончательного зашифрованного блока таким образом, что его невозможно предсказать или противодействовать, не зная ключа блочного шифра.

Строительство CBC-MAC

Чтобы вычислить CBC-MAC сообщения m шифруется , m в режиме CBC с нулевым вектором инициализации и сохраняется последний блок. На следующем рисунке показано вычисление CBC-MAC сообщения, состоящего из блоков. используя секретный ключ k и блочный шифр E :CBC-MAC сам по себе небезопасен для сообщений переменной длины. [1] (см. обсуждение ниже) и в настоящее время используется для построения семейства псевдослучайных функций. [2] и как компонент режима CCM .

Использование в стандартах [ править ]

Конструкция CBC-MAC используется как часть режима CCM , используемого в IEEE 802.11i и NIST SP 800-97 (как CCMP , протокол шифрования CCM для WPA2 ), IPsec , [3] и TLS 1.2, [4] а также Bluetooth Low Energy (начиная с Bluetooth 4.0 , см. NIST SP 800-121 Rev2). [5] Он доступен для TLS 1.3, но не включен по умолчанию в OpenSSL . [6]

CBC-MAC также используется в качестве «обусловливающего компонента» (он же экстрактор случайности, [2] метод генерации битовых строк с полной энтропией ) в NIST SP 800-90B .

Стандарты, определяющие алгоритм [ править ]

FIPS PUB 113 «Аутентификация компьютерных данных» — это (ныне устаревший) правительственный стандарт США , в котором указан алгоритм CBC-MAC с использованием DES в качестве блочного шифра.

Алгоритм CBC-MAC также включен в ANSI X9.9, ANSI X9.19, ISO 8731-1 и ISO/IEC 9797-1 MAC (алгоритм 1). [7]

и переменной фиксированной длины Безопасность с сообщениями

Если используемый блочный шифр безопасен (это означает, что это псевдослучайная перестановка ), то CBC-MAC безопасен для сообщений фиксированной длины. [1] Однако сам по себе он небезопасен для сообщений переменной длины. Таким образом, любой отдельный ключ должен использоваться только для сообщений фиксированной и известной длины. Это связано с тем, что злоумышленник, знающий правильный тег аутентификации (т. е. CBC-MAC), создает пары для двух сообщений. и может сгенерировать третье сообщение чей CBC-MAC также будет . Это просто делается с помощью операции XOR над первым блоком с t, а затем объединить m с этим измененным ; то есть, сделав . При вычислении MAC для сообщения , отсюда следует, что мы вычисляем MAC для m обычным способом как t , но когда это значение привязывается вперед к этапу вычисления мы выполним операцию «исключающее ИЛИ» со значением, полученным для MAC первого сообщения. Наличие этого тега в новом сообщении означает, что оно будет отменено, не оставив никакого вклада в MAC от блоков обычного текста в первом сообщении m : и, следовательно, тег для является .

Эту проблему невозможно решить добавлением в конец блока размером с сообщение. [8] Существует три основных способа модификации CBC-MAC, чтобы он был безопасным для сообщений переменной длины: 1) разделение ключей входной длины; 2) Добавление длины; 3) Зашифровать последний блок. [8] В таком случае также может быть рекомендовано использовать другой режим работы, например, CMAC или HMAC, для защиты целостности сообщений переменной длины.

Добавление длины [ править ]

Одним из решений является включение длины сообщения в первый блок; [9] на самом деле безопасность CBC-MAC доказана до тех пор, пока не используются два сообщения, которые являются префиксами друг друга, и добавление длины в начало является особым случаем этого. [10] Это может быть проблематично, если длина сообщения неизвестна в начале обработки.

Шифровать-последний блок [ править ]

Вычисление CBC-MAC Encrypt-last-block.

Шифрование последнего блока CBC-MAC (ECBC-MAC) [11] определяется как CBC-MAC-ELB( м , ( k 1 , k 2 )) = E ( k 2 , CBC-MAC ( k 1 , m )) . [8] По сравнению с другими обсуждаемыми методами расширения CBC-MAC для сообщений переменной длины, encrypt-last-block имеет то преимущество, что не нужно знать длину сообщения до конца вычислений.

Методы атаки против неправильного использования [ править ]

Как и во многих криптографических схемах, наивное использование шифров и других протоколов может привести к возможным атакам, снижая эффективность криптографической защиты (или даже делая ее бесполезной). Мы представляем атаки, которые возможны из-за неправильного использования CBC-MAC. [12]

ключа для шифрования и аутентификации Использование одного и того же

Одной из распространенных ошибок является повторное использование одного и того же ключа k для шифрования CBC и CBC-MAC. Хотя повторное использование ключа для разных целей в целом является плохой практикой, в данном конкретном случае ошибка приводит к эффектной атаке:

Предположим, Алиса отправила Бобу блоки зашифрованного текста. . В процессе передачи Ева может изменить любой из блоков зашифрованного текста и корректировать любой из битов в них по своему выбору, при условии, что последний блок, , остается прежним. В целях этого примера и без ограничения общности мы предполагаем, что вектор инициализации, используемый для процесса шифрования, представляет собой вектор нулей.

Когда Боб получает сообщение, он сначала расшифровывает его, обращая процесс шифрования, примененный Алисой, с использованием блоков зашифрованного текста. . Подделанное сообщение, доставленное Бобу вместо оригинала Алисы, .

Боб сначала расшифровывает полученное сообщение, используя общий секретный ключ K, чтобы получить соответствующий открытый текст. Обратите внимание, что весь созданный простой текст будет отличаться от того, который первоначально отправила Алиса, поскольку Ева изменила весь блок зашифрованного текста, кроме последнего. В частности, окончательный простой текст, , отличается от оригинала, , который отправила Алиса; хотя это то же самое, , поэтому другой простой текст создается при объединении предыдущего блока зашифрованного текста в исключающее ИЛИ после расшифровки : .

Отсюда следует, что Боб теперь вычислит тег аутентификации, используя CBC-MAC, для всех значений обычного текста, который он декодировал. Тег нового сообщения, , определяется:

Обратите внимание, что это выражение равно

что именно :

и отсюда следует, что .

Таким образом, Ева смогла изменить зашифрованный текст при передаче (не обязательно зная, какому открытому тексту он соответствует) так, что появилось совершенно другое сообщение. , было создано, но тег этого сообщения совпадал с тегом оригинала, и Боб не знал, что содержимое было изменено при передаче. По определению, код аутентификации сообщения нарушается , если мы можем найти другое сообщение (последовательность пар открытого текста). ), который создает тот же тег, что и предыдущее сообщение, P , с . Отсюда следует, что протокол аутентификации сообщения в этом сценарии использования был нарушен, и Боб был обманут, заставив поверить, что Алиса отправила ему сообщение, которого она не создавала.

Если вместо этого мы будем использовать разные ключи для этапов шифрования и аутентификации, скажем и , соответственно, эта атака сорвана. Расшифровка модифицированных блоков зашифрованного текста получает некоторую текстовую строку . Однако из-за использования MAC другого ключа мы не можем «отменить» процесс расшифровки на следующем этапе вычисления кода аутентификации сообщения, чтобы создать тот же тег; каждый измененный теперь будет зашифрован в процессе CBC-MAC до некоторого значения .

Этот пример также показывает, что CBC-MAC не может использоваться как устойчивая к коллизиям односторонняя функция: с учетом ключа легко создать другое сообщение, которое «хэширует» с тем же тегом.

Разрешение вектору инициализации изменяться по значению [ править ]

При шифровании данных с использованием блочного шифра в режиме цепочки блоков шифра обычно вводят вектор инициализации (или другом) на первом этапе процесса шифрования . Обычно требуется, чтобы этот вектор выбирался случайным образом (nonce ) и чтобы он не повторялся для любого заданного секретного ключа, под которым работает блочный шифр. Это обеспечивает семантическую безопасность, гарантируя, что один и тот же простой текст не будет зашифрован одним и тем же зашифрованным текстом, что позволяет злоумышленнику сделать вывод о существовании связи.

При вычислении кода аутентификации сообщения, например, с помощью CBC-MAC, использование вектора инициализации является возможным вектором атаки.

При работе шифра с цепочкой блоков зашифрованного текста первый блок открытого текста смешивается с вектором инициализации с использованием исключающего ИЛИ ( ). Результат этой операции является входными данными для блочного шифра для шифрования.

Однако при выполнении шифрования и дешифрования нам необходимо отправить вектор инициализации в виде обычного текста — обычно в виде блока, непосредственно предшествующего первому блоку зашифрованного текста — так, чтобы первый блок обычного текста можно было успешно расшифровать и восстановить. При вычислении MAC нам также необходимо будет передать вектор инициализации другой стороне в виде обычного текста, чтобы они могли проверить, что тег в сообщении соответствует вычисленному ими значению.

Если мы позволим выбирать вектор инициализации произвольно, из этого следует, что первый блок простого текста потенциально может быть изменен (передавая другое сообщение) при создании того же тега сообщения.

Рассмотрите сообщение . В частности, предположим, что при вычислении тега сообщения для CBC-MAC мы выбираем вектор инициализации так что вычисление MAC начинается с . Это создает пару (сообщение, тег). .

Теперь создайте сообщение . Для каждого бита, измененного в , переверните соответствующий бит в векторе инициализации, чтобы получить вектор инициализации . Отсюда следует, что для вычисления MAC для этого сообщения мы начинаем вычисление с . Поскольку биты как в простом тексте, так и в векторе инициализации перевернуты в одних и тех же местах, модификация отменяется на этом первом этапе, а это означает, что входные данные для блочного шифра идентичны входным данным для блочного шифра. . Если в простой текст не вносится никаких дальнейших изменений, будет получен тот же тег, несмотря на передачу другого сообщения.

Если свобода выбора вектора инициализации удалена и все реализации CBC-MAC фиксируются на определенном векторе инициализации (часто векторе нулей, но теоретически это может быть что угодно, при условии, что все реализации согласны), эта атака не может быть продолжена.

Подводя итог, если злоумышленник сможет установить IV, который будет использоваться для проверки MAC, он сможет выполнить произвольную модификацию первого блока данных, не делая MAC недействительным.

Использование предсказуемого вектора инициализации [ править ]

Иногда IV используется в качестве счетчика для предотвращения атак повтора сообщений.Однако, если злоумышленник сможет предсказать, какой IV будет использоваться для проверки MAC,он или она может воспроизвести ранее наблюдаемое сообщение, изменив первый блок данных, чтобы компенсировать изменение IV, которое будет использоваться для проверки.Например, если злоумышленник заметил сообщение с и знает , он может произвести который пройдет проверку MAC с помощью .

Самая простая контрмера — зашифровать IV перед его использованием (т. е. добавить IV к данным). В качестве альтернативы можно использовать MAC в режиме CFB, поскольку в режиме CFB IV шифруется перед выполнением операции XOR с данными.

Другое решение (в случае, если защита от атак повтора сообщений не требуется) — всегда использовать нулевой вектор IV. [13] Обратите внимание, что приведенная выше формула для становится . Итак, поскольку и являются одним и тем же сообщением, по определению они будут иметь один и тот же тег. Это не подделка, а целевое использование CBC-MAC.

См. также [ править ]

Ссылки [ править ]

  1. Перейти обратно: Перейти обратно: а б М. Белларе, Дж. Килиан и П. Рогауэй. Безопасность кода аутентификации сообщения цепочки блоков шифрования. JCSS 61(3):362–399, 2000 г.
  2. Перейти обратно: Перейти обратно: а б Клифф, Бойд и Гонсалес Ньето, 2009 г. , с. 5.
  3. ^ RFC   4309 : использование режима CCM расширенного стандарта шифрования (AES) с инкапсуляцией полезных данных безопасности IPsec (ESP)
  4. ^ RFC   6655 Наборы шифров AES-CCM для безопасности транспортного уровня (TLS)
  5. ^ «Безопасность Bluetooth с низким энергопотреблением» . Архивировано из оригинала 02 апреля 2016 г. Проверено 20 апреля 2017 г.
  6. ^ Касвелл, Мэтт (04 мая 2017 г.). «Использование TLS1.3 с OpenSSL» . OpenSSL Блог . Проверено 29 декабря 2018 г.
  7. ^ Пренель и ван Ооршот 1999 , стр. 7.
  8. Перейти обратно: Перейти обратно: а б с См. раздел 5 Bellare et al.
  9. ^ ISO / IEC 9797-1: 1999 Информационные технологии. Методы безопасности. Коды аутентификации сообщений (MAC). Часть 1. Механизмы, использующие блочный шифр . Раздел 6.1.3. Метод заполнения 3.
  10. ^ К. Ракофф и С. Горбунов. О безопасности кода аутентификации сообщения при создании цепочки блоков.
  11. ^ http://spark-university.s3.amazonaws.com/stanford-crypto/slides/05.3-integrity-cbc-mac-and-nmac.pptx . Архивировано 22 апреля 2017 г. на Wayback Machine. [ только URL ]
  12. ^ Почему я ненавижу CBC-MAC Мэтью Д. Грина
  13. ^ Введение в современную криптографию, второе издание Джонатана Каца и Иегуды Линделла

Источники [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: f7cea25aba63e443694bcecf46a2b351__1709561940
URL1:https://arc.ask3.ru/arc/aa/f7/51/f7cea25aba63e443694bcecf46a2b351.html
Заголовок, (Title) документа по адресу, URL1:
CBC-MAC - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)