Почему шифрование с последующим MAC лучше обратного порядка
Разберитесь в криптографическом обосновании правильного порядка объединения шифрования и аутентификации
«Почему шифрование с последующим MAC лучше обратного порядка» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.
Три порядка сочетания
При сочетании шифрования и MAC возможны три порядка: шифрование, затем MAC (EtM); MAC, затем шифрование (MtE); шифрование и MAC (E&M). Каждый из них обладает принципиально разными свойствами безопасности, и только один доказуемо безопасен во всех случаях.
Шифрование, затем MAC
При схеме шифрования с последующим MAC (EtM) открытый текст сначала шифруется, чтобы получить шифртекст, а затем MAC вычисляется для этого шифртекста. Получатель может проверить MAC до попытки расшифрования, поэтому изменённое сообщение немедленно отклоняется и не раскрывает никакой информации.
MAC, затем шифрование
При схеме MAC с последующим шифрованием (MtE) MAC вычисляется для открытого текста, после чего открытый текст и MAC шифруются вместе. Получатель должен расшифровать сообщение, прежде чем сможет проверить MAC, что открывает возможность атак с использованием оракула дополнения и оракула расшифрования.
Уязвимость SSL 3.0 и TLS 1.0
SSL 3.0 и TLS 1.0 использовали порядок MAC с последующим шифрованием для блочных шифров в режиме CBC. Этот недостаток конструкции использовали в атаке BEAST в 2011 году и атаке POODLE в 2014 году. Обе атаки задействовали оракул, возникающий, когда расшифрование выполняется до проверки MAC.
Доказательство Белларе — Нампремпре
В 2000 году Белларе и Нампремпре формально доказали, что из трёх порядков сочетания только шифрование с последующим MAC обеспечивает безопасность IND-CCA2 (защиту от атак с выбранным шифртекстом) для любых сочетаний надёжных примитивов шифрования и MAC. MtE и E&M могут оказаться небезопасными в определённых сочетаниях.
Шифрование и MAC в SSH
SSH использует схему шифрования и MAC: MAC вычисляется для открытого текста и передаётся вместе с шифртекстом в открытом виде. Хотя SSH не подвергался таким же атакам, как SSL/TLS при использовании MtE, эта схема также теоретически небезопасна, поскольку незашифрованный MAC может раскрывать информацию об открытом тексте.
AEAD как безопасная абстракция
Аутентифицированное шифрование со связанными данными (AEAD) — это современная абстракция, которая изначально решает проблему сочетания примитивов. AEAD объединяет шифрование и аутентификацию в одном примитиве, гарантируя их правильное сочетание и избавляя разработчика от необходимости выбирать порядок сочетания.
AES-GCM: стандарт AEAD
AES-GCM (режим Галуа/счётчика) — наиболее широко применяемый набор шифров AEAD. Он обеспечивает аутентифицированное шифрование за счёт сочетания шифрования в режиме CTR и аутентификации GHASH, а на современных процессорах получает аппаратное ускорение благодаря инструкциям AES-NI и CLMUL.
TLS 1.3 требует только AEAD
TLS 1.3 решительно порвал с прошлым, удалив все наборы шифров, не использующие AEAD. Каждый набор шифров TLS 1.3 использует AEAD, устраняя целые категории уязвимостей, вызванных неправильным ручным сочетанием примитивов шифрования и MAC, которые преследовали более ранние версии TLS.
Не следует сочетать примитивы вручную
Главный урок десятилетий криптографических атак состоит в том, что ручное сочетание примитивов шифрования и MAC приводит к ошибкам даже у экспертов. Современные криптографические библиотеки предоставляют интерфейсы AEAD специально для того, чтобы разработчики не допускали ошибок при сочетании примитивов, приводящих к уязвимостям в реальных системах.
Практические рекомендации
При создании систем сегодня всегда выбирайте примитив AEAD, например AES-GCM или ChaCha20-Poly1305. Если необходимо обеспечить взаимодействие с устаревшими системами, использующими отдельные MAC и шифрование, убедитесь, что применяется порядок шифрования с последующим MAC, а не MtE или E&M.
Проверка EtM и MtE
Какое утверждение правильно описывает различие в безопасности между шифрованием с последующим MAC и MAC с последующим шифрованием?
Итоги урока: порядок сочетания имеет значение
EtM — единственный доказуемо безопасный порядок сочетания отдельных примитивов шифрования и MAC. TLS 1.3 полностью устраняет эту проблему, требуя наборы шифров только с AEAD. Если Вы сомневаетесь, используйте примитив AEAD, например AES-GCM или ChaCha20-Poly1305, и позвольте библиотеке правильно выполнить сочетание примитивов.
Часто задаваемые вопросы
Урок «Почему шифрование с последующим MAC лучше обратного порядка» бесплатный?
Да — полный текст урока «Почему шифрование с последующим MAC лучше обратного порядка» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.
Чему я научусь в уроке «Почему шифрование с последующим MAC лучше обратного порядка»?
Разберитесь в криптографическом обосновании правильного порядка объединения шифрования и аутентификации Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Cryptology Academy?
Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «Почему шифрование с последующим MAC лучше обратного порядка»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Cryptology Academy?
Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Почему шифрование с последующим MAC лучше обратного порядка
- Режим SIV: AEAD с защитой от ошибок использования nonce
- AEGIS: высокоскоростное аутентифицированное шифрование
- Выбор AEAD для промышленных систем