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

MAC-then-encrypt

MAC-then-encrypt — это принцип построения криптографических протоколов, при котором сначала вычисляется код аутентичности сообщения (MAC, Message Authentication Code) для открытого текста, а затем к этому тексту и его MAC применяется шифрование. Данный подход является одним из трёх основных способов комбинирования шифрования и аутентификации, наряду с «Encrypt-then-MAC» и «Encrypt-and-MAC».

История

Концепция комбинирования шифрования и аутентификации возникла в конце XX века в связи с необходимостью обеспечения не только конфиденциальности, но и целостности данных при передаче по незащищённым каналам. В ранних протоколах, таких как SSL 3.0 и TLS 1.0, использовался именно принцип MAC-then-encrypt. В этих протоколах сначала вычислялся MAC для открытого текста, затем открытый текст и MAC объединялись в один блок, который шифровался. Этот подход был выбран разработчиками для упрощения реализации и совместимости с существующими алгоритмами шифрования.

Однако впоследствии были выявлены серьёзные уязвимости, связанные с этим методом. В 2000-х годах криптоаналитики, в том числе российские специалисты, указали на то, что MAC-then-encrypt делает протоколы уязвимыми для атак, основанных на оракулах заполнения (padding oracle attacks). Наиболее известной стала атака, опубликованная в 2014 году под названием POODLE (Padding Oracle On Downgraded Legacy Encryption), которая поражала протоколы SSL 3.0 и TLS 1.0. В результате этого и других исследований, начиная с середины 2010-х годов, большинство современных протоколов (например, TLS 1.3) отказались от использования MAC-then-encrypt в пользу более безопасного подхода Encrypt-then-MAC.

Механизм работы

Процесс шифрования с использованием MAC-then-encrypt включает несколько этапов:

  1. Вычисление MAC: Для открытого текста (plaintext) вычисляется код аутентичности с использованием секретного ключа. MAC может быть основан на различных алгоритмах, таких как HMAC (Hash-based Message Authentication Code) или CBC-MAC (Cipher Block Chaining MAC).
  2. Объединение: Открытый текст и его MAC конкатенируются (объединяются) в единый блок данных. В некоторых реализациях к этому блоку также добавляется заполнение (padding) для выравнивания длины до размера блока шифрования.
  3. Шифрование: Полученный блок (открытый текст + MAC + заполнение) шифруется с использованием симметричного алгоритма, например, AES (Advanced Encryption Standard) в режиме CBC (Cipher Block Chaining) или RC4.
  4. Передача: Зашифрованный блок отправляется получателю.

На стороне получателя процесс обратный:

  1. Расшифрование: Полученный блок расшифровывается.
  2. Извлечение: Из расшифрованных данных извлекается открытый текст, MAC и заполнение (если оно было добавлено).
  3. Проверка MAC: Вычисляется MAC для полученного открытого текста и сравнивается с извлечённым MAC. Если они совпадают, сообщение считается аутентичным; если нет — сообщение отвергается.

Классификация и сравнение с другими подходами

MAC-then-encrypt является одним из трёх основных способов комбинирования шифрования и аутентификации:

MAC-then-encrypt (MtE)

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

Encrypt-then-MAC (EtM)

  • Порядок: Сначала шифруется открытый текст, затем для зашифрованного текста вычисляется MAC.
  • Преимущества: Безопасность; MAC проверяется до расшифрования, что исключает атаки на основе оракулов заполнения.
  • Недостатки: Требует модификации алгоритмов шифрования; может быть сложнее в реализации.

Encrypt-and-MAC (E&M)

  • Порядок: Шифрование и вычисление MAC выполняются независимо для одного и того же открытого текста.
  • Преимущества: Простота; позволяет использовать разные ключи для шифрования и аутентификации.
  • Недостатки: Уязвимость к атакам, если MAC раскрывает информацию об открытом тексте (например, при использовании CBC-MAC).

Уязвимости и критика

Основной критикой MAC-then-encrypt является его подверженность атакам, основанным на оракулах заполнения. В таких атаках злоумышленник может отправлять модифицированные зашифрованные блоки получателю и наблюдать за его реакцией (например, ошибкой при проверке MAC или заполнения). Это позволяет постепенно восстанавливать открытый текст. Атака POODLE, поразившая SSL 3.0, была классическим примером: она использовала уязвимость в заполнении, чтобы расшифровать данные, такие как cookie-файлы сессий.

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

В ответ на эти уязвимости, начиная с TLS 1.2, протоколы начали поддерживать опцию Encrypt-then-MAC. В TLS 1.3, принятом в 2018 году, использование MAC-then-encrypt было полностью исключено, а все алгоритмы шифрования с аутентификацией (AEAD, Authenticated Encryption with Associated Data) работают по принципу Encrypt-then-MAC.

Применение

Несмотря на критику, MAC-then-encrypt продолжает использоваться в некоторых устаревших протоколах и системах, где требуется обратная совместимость. Например:

  • SSL 3.0 и TLS 1.0: Эти протоколы, хотя и считаются устаревшими, всё ещё могут встречаться в старых серверах и клиентах. В России использование SSL 3.0 и TLS 1.0 в государственных информационных системах не рекомендуется с 2018 года.
  • IPsec: В некоторых реализациях IPsec (Internet Protocol Security) используется MAC-then-encrypt для режима ESP (Encapsulating Security Payload), хотя современные реализации предпочитают Encrypt-then-MAC.
  • SSH (Secure Shell): Протокол SSH версии 2 также поддерживает MAC-then-encrypt, но в большинстве современных реализаций используется Encrypt-then-MAC.

Интересные факты

  • Атака POODLE, опубликованная в 2014 году, привела к массовому отключению поддержки SSL 3.0 в браузерах и серверах. В России после этого инцидента были усилены требования к использованию криптографических протоколов в государственных информационных системах.
  • В 2016 году был опубликован RFC 7366, который официально стандартизировал использование Encrypt-then-MAC в TLS и DTLS (Datagram Transport Layer Security).
  • В российской криптографической литературе, в частности в работах по стандартизации ГОСТ Р 34.10-2012 и ГОСТ 28147-89, также рассматриваются вопросы безопасного комбинирования шифрования и аутентификации, и Encrypt-then-MAC рекомендуется как более безопасный подход.

Источники

  1. «Cryptography Engineering: Design Principles and Practical Applications» — Niels Ferguson, Bruce Schneier, Tadayoshi Kohno.
  2. «The TLS Protocol Version 1.0» — RFC 2246 (1999).
  3. «The Transport Layer Security (TLS) Protocol Version 1.3» — RFC 8446 (2018).
  4. «Padding Oracle Attacks on the CBC Mode: The POODLE Attack» — Bodo Möller, Thai Duong, Krzysztof Kotowicz (2014).
  5. «Encrypt-then-MAC for TLS and DTLS» — RFC 7366 (2016).
  6. «ГОСТ Р 34.10-2012. Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи».
  7. «Анализ уязвимостей протоколов SSL/TLS» — А. В. Черемушкин, Д. А. Гусев (2015).

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

На главную BFOmetr →