0Pricing
Cryptology Academy · Урок

Основы MAC и атаки с расширением длины

Объясните, почему добавление секретного префикса небезопасно при атаке с расширением длины

«Основы MAC и атаки с расширением длины» — бесплатный урок Cryptology Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Cryptology Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Cryptology Academy содержит 4 уроков всего.

Введение

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

Что такое MAC?

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

MAC, хеш и подпись

Хеш: без ключа, общедоступен, обеспечивает только целостность. MAC: общий секрет, симметричный механизм, обеспечивает целостность и аутентичность. Цифровая подпись: закрытый ключ, асимметричный механизм, добавляет неотказуемость. Только подписи обеспечивают неотказуемость.

Неподделываемость

Безопасный MAC должен быть устойчивым к экзистенциальной подделке при атаке с выбранным сообщением (EUF-CMA): злоумышленник, который может запрашивать MAC для любого сообщения, не должен суметь создать действительный MAC для нового сообщения, ранее не запрашивавшегося.

Наивный хеш с ключом: MAC с префиксом

Наивная попытка: MAC(K, M) = H(K || M). Выглядит безопасно, но уязвима к атакам продолжения длины для хеш-функций Меркла — Дамгорда (SHA-256, SHA-512, MD5).

Атака продолжения длины

Состояние SHA-256 после хеширования M — это просто H(M). Зная H(K || M), злоумышленник может вычислить H(K || M || padding || extra) для любого extra, не зная K. Так он расширяет сообщение, добавляя новые данные.

Практические последствия атаки

Flickr (2009): API использовал H(K || params). Злоумышленники добавляли &api_sig=forgery к аутентифицированным запросам. В результате несанкционированные вызовы API выглядели действительными. Это была чистая эксплуатация продолжения длины.

MAC с суффиксом тоже не работает

MAC(K, M) = H(M || K): уязвим к автономным атакам. Злоумышленник вычисляет H(message) без K, а затем использует атаку по дню рождения, чтобы найти M' с тем же хешем. Ключ добавляется после коллизии.

Почему HMAC решает эту проблему

HMAC дважды оборачивает хеш, используя разные заполнители ключа: HMAC(K, M) = H((K⊕opad) || H((K⊕ipad) || M)) Внутренний хеш создаёт H(ipad_key || M). Внешний хеш оборачивает его с помощью opad_key. Продолжение длины не работает, потому что злоумышленник не может установить начальное состояние внешнего хеша.

SHA-3 и продолжение длины

SHA-3 использует губчатую конструкцию, которая по своей природе невосприимчива к атакам продолжения длины. H_SHA3(K || M) — корректная простая конструкция MAC. SHA-2 такой защиты не имеет — всегда используйте HMAC с SHA-2.

Атаки по времени при проверке MAC

Сравнение MAC с ранним выходом (==) раскрывает информацию по времени выполнения. Для правильного первого байта требуется немного больше времени, чем для неправильного. После 256 запросов найден байт 1. Ещё 256 — байт 2. Полный MAC восстанавливается за 16×256 запросов.

Быстрая проверка

Почему MAC(K, M) = SHA256(K || M) небезопасен?

Итоги

Атаки продолжения длины показывают, почему наивные хеши с ключом не работают. Далее мы изучим конструкцию HMAC и доказательство её безопасности.

Часто задаваемые вопросы

Урок «Основы 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 — локальная установка не требуется.

Все уроки этого курса

  1. Основы MAC и атаки с расширением длины
  2. Конструкция HMAC и доказательство безопасности
  3. HMAC в API: подпись запросов
  4. CMAC и Poly1305: MAC на основе блочных шифров
← Назад к Cryptology Academy