0Pricing
Cryptology Academy · Урок

CMAC и Poly1305: MAC на основе блочных шифров

Сравните CMAC и Poly1305 как альтернативы MAC на основе хеш-функций

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

Что такое MAC

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

HMAC и MAC на основе блочных шифров

HMAC использует хеш-функцию в качестве базового примитива. CMAC и Poly1305 вместо этого используют блочные шифры или полиномиальную арифметику. MAC на основе блочных шифров не зависят от хеш-функций и естественным образом интегрируются с аппаратной поддержкой AES.

Конструкция CMAC

CMAC (MAC на основе шифра) определён в NIST SP 800-38B. Он дополняет сообщение до границы блока, получает из шифра два подключа K1/K2, выполняет XOR с ними для последнего блока, а затем применяет режим CBC, не сохраняя промежуточный шифротекст.

Получение подключей CMAC

K1 = AES_K(0^128), сдвинутый влево на 1 бит, с применением XOR к константе, если MSB был равен 1. K2 аналогично получается сдвигом K1. Эти подключи надёжно защищают последний неполный блок от расширения длины.

Обзор Poly1305

Poly1305 — одноразовый аутентификатор, разработанный Daniel Bernstein. Он вычисляет полином по простому числу 2^130-5, рассматривая сообщение как набор коэффициентов полинома и используя одноразовую пару ключей (r, s).

Математика Poly1305

Tag = (sum of (m_i * r^i) mod 2^130-5) + s mod 2^128. Ключ r ограничивается маскированием 22 определённых битов для предотвращения атак по времени выполнения. s — это одноразовая маска сложения размером 16 байт.

ChaCha20-Poly1305

Poly1305 почти всегда используется вместе с ChaCha20. ChaCha20 получает одноразовые (r, s) из гаммы потокового шифра, благодаря чему объединённая схема AEAD обладает доказуемой безопасностью и чрезвычайно высокой скоростью на мобильных процессорах ARM.

AES-GCM и AES-CMAC

AES-GCM выполняет аутентификацию с помощью GHASH — полиномиального MAC над GF(2^128). AES-CMAC проще и используется в IEEE 802.11i (WPA2) и наборах шифров TLS 1.2. GCM обеспечивает шифрование и аутентификацию за один проход.

Сравнение производительности

Poly1305 на ARM Cortex-A выполняет примерно 1 цикл на байт с использованием встроенных инструкций NEON. Для AES-CMAC требуется одна операция AES с блоком на каждые 16 байт. При обработке больших объёмов данных Poly1305 превосходит CMAC на оборудовании без AES-NI.

Свойства безопасности

CMAC невозможно экзистенциально подделать при атаке с выбранным сообщением, если AES является псевдослучайной перестановкой. Poly1305 обеспечивает информационно-теоретическую безопасность при использовании действительно случайного одноразового ключа — вероятность подделки составляет не более 8*ceil(L/16)/2^106.

Варианты использования

CMAC: WPA2, S/MIME, обеспечение целостности файловой системы. Poly1305: TLS 1.3 через ChaCha20-Poly1305, WireGuard VPN, протокол Signal, платформа протоколов Noise. Оба алгоритма широко применяются в современных системах с высокими требованиями к безопасности.

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

Какой MAC используется в AEAD ChaCha20-Poly1305?

Итоги

Вы изучили конструкцию CMAC на основе CBC и полиномиальную арифметику Poly1305. Оба алгоритма являются MAC с постоянным временем выполнения и надёжной безопасностью и используются в реальных протоколах. Далее: TLS/HTTPS и взаимодействие всех этих примитивов.

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

Урок «CMAC и Poly1305: MAC на основе блочных шифров» бесплатный?

Да — полный текст урока «CMAC и Poly1305: MAC на основе блочных шифров» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Cryptology Academy, подпишись на CoddyKit PRO. Курс Cryptology Academy содержит 4 уроков всего.

Чему я научусь в уроке «CMAC и Poly1305: MAC на основе блочных шифров»?

Сравните CMAC и Poly1305 как альтернативы MAC на основе хеш-функций Ты практикуешь Cryptology Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Cryptology Academy?

Предыдущий опыт не требуется. Cryptology Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «CMAC и Poly1305: MAC на основе блочных шифров»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Cryptology Academy?

Да. Каждый урок Cryptology Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

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

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