MAC с одним ключом

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

  • Оригинальный OMAC от февраля 2003 года, который используется редко. [1] Предпочтительным названием теперь является «OMAC2». [2]
  • Усовершенствование OMAC1, [2] которое стало рекомендацией NIST в мае 2005 года под названием CMAC . [3]

OMAC бесплатен для любого использования: он не защищен никакими патентами. [4]

История

Ядром алгоритма CMAC является вариация CBC-MAC , которую Блэк и Рогауэй предложили и проанализировали под названием «XCBC» [5] и представили в NIST . [6] Алгоритм XCBC эффективно устраняет недостатки безопасности CBC-MAC, но требует трех ключей.

Ивата и Куросава предложили усовершенствование XCBC, которое требует меньше ключевого материала (только один ключ), и назвали полученный алгоритм One-Key CBC-MAC (OMAC) в своих работах. [1] Позднее они представили OMAC1 (= CMAC), [2] усовершенствование OMAC и дополнительный анализ безопасности. [7]

Алгоритм

Чтобы сгенерировать ℓ-битный CMAC-тег ( t ) сообщения ( m ) с использованием b -битного блочного шифра ( E ) и секретного ключа ( k ), сначала генерируются два b -битных подключа ( k 1 и k 2 ) с использованием следующего алгоритма (это эквивалентно умножению на x и x 2 в конечном поле GF(2 b )). Пусть ≪ обозначает стандартный оператор сдвига влево, а ⊕ обозначает побитовое исключающее или :

  1. Рассчитайте временное значение k 0 = E k (0).
  2. Если msb( k 0 ) = 0, то k 1 = k 0 ≪ 1, иначе k 1 = ( k 0 ≪ 1) ⊕ C ; где C — некоторая константа, зависящая только от b . (В частности, C — это нестаршие коэффициенты лексикографически первого неприводимого двоичного полинома степени b с минимальным числом единиц: 0x1B для 64-битных, 0x87 для 128-битных и 0x425 для 256-битных блоков.)
  3. Если msb( k 1 ) = 0 , то k 2 = k 1 ≪ 1 , иначе k 2 = ( k 1 ≪ 1) ⊕ C .
  4. Верните ключи ( k 1 , k 2 ) для процесса генерации MAC.

В качестве небольшого примера предположим, что b = 4 , C = 0011 2 и k 0 = E k (0) = 0101 2. Тогда k 1 = 1010 2 и k 2 = 0100 ⊕ 0011 = 0111 2 .

Процесс генерации тега CMAC выглядит следующим образом:

  1. Разделить сообщение на b -битные блоки m = m 1 ∥ ... ∥ m n −1m n , где m 1 , ..., m n −1 — полные блоки. (Пустое сообщение рассматривается как один неполный блок.)
  2. Если m n — полный блок, то m n ′ = k 1m n, иначе m n ′ = k 2 ⊕ ( m n ∥ 10...0 2 ) .
  3. Пусть c 0 = 00...0 2 .
  4. Для i = 1, ..., n − 1 вычислите c i = E k ( c i −1m i ) .
  5. c n = E k ( c n −1m n ′)
  6. Выход t = msb ( c n ) .

Процесс проверки выглядит следующим образом:

  1. Используйте приведенный выше алгоритм для генерации тега.
  2. Проверьте, что сгенерированный тег равен полученному тегу.

Варианты

CMAC-C1 [8] — это вариант CMAC, который обеспечивает дополнительные гарантии безопасности приверженности и обнаружения контекста .

Реализации

  • Реализация Python : см. использование функции AES_CMAC()в "impacket/blob/master/tests/misc/test_crypto.py" и ее определение в "impacket/blob/master/impacket/crypto.py" [9]
  • Реализация Ruby [10]

Ссылки

  1. ^ ab Iwata, Tetsu; Kurosawa, Kaoru (2003-02-24). "OMAC: One-Key CBC MAC". Быстрое программное шифрование . Конспект лекций по информатике. Том 2887. Springer, Берлин, Гейдельберг. С. 129–153. doi :10.1007/978-3-540-39887-5_11. ISBN 978-3-540-20449-7.
  2. ^ abc Iwata, Tetsu; Kurosawa, Kaoru (2003). "OMAC: One-Key CBC MAC – Приложение" (PDF) . В этой заметке мы предлагаем OMAC1, новый выбор параметров семейства OMAC (подробности см. в [4]). Также представлены тестовые векторы. Соответственно, мы переименовываем предыдущий OMAC в OMAC2. (То есть тестовые векторы для OMAC2 уже были показаны в [3].) Мы используем OMAC как общее название для OMAC1 и OMAC2. {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  3. ^ Дворкин, Моррис (2016). «Рекомендации по режимам работы блочного шифрования: режим CMAC для аутентификации» (PDF) . doi : 10.6028/nist.sp.800-38b . {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  4. ^ Рогауэй, Филлип. "CMAC: Нелицензирование" . Получено 27 мая 2020 г. Заявление Филлипа Рогауэя о статусе интеллектуальной собственности CMAC
  5. ^ Блэк, Джон; Рогауэй, Филлип (2000-08-20). Достижения в криптологии – CRYPTO 2000. Springer, Берлин, Гейдельберг. стр. 197–215. doi :10.1007/3-540-44598-6_12. ISBN 978-3540445982.
  6. ^ Блэк, Дж.; Рогауэй, П. «Предложение по обработке сообщений произвольной длины с помощью CBC MAC» (PDF) . {{cite journal}}: Цитировать журнал требует |journal=( помощь )
  7. ^ Ивата, Тецу; Куросава, Каору (8 декабря 2003 г.). «Более строгие границы безопасности для OMAC, TMAC и XCBC». В Йоханссоне, Томас; Майтра, Субхамой (ред.). Прогресс в криптологии - INDOCRYPT 2003 . Конспекты лекций по информатике. Том. 2904. Шпрингер Берлин Гейдельберг. стр. 402–415. CiteSeerX 10.1.1.13.8229 . дои : 10.1007/978-3-540-24582-7_30. ISBN  9783540206095.
  8. ^ Бхаумик, Ритам; Чакраборти, Бишваджит; Чхве, Вонсок; Дутта, Авиджит; Говинден, Жером; Шен, Яобин (2024). «Обеспечение безопасности MAC с приложениями к общей композиции». В Рейзин Леонид; Стебила, Дуглас (ред.). Достижения в криптологии – КРИПТО 2024 . Конспекты лекций по информатике. Том. 14923. Чам: Springer Nature Switzerland. стр. 425–462. дои : 10.1007/978-3-031-68385-5_14. ISBN 978-3-031-68385-5.
  9. ^ «Impacket — это коллекция классов Python для работы с сетевыми протоколами.: SecureAuthCorp/impacket». 15 декабря 2018 г. — через GitHub.
  10. ^ "Расширение Ruby C для ключевой хэш-функции AES-CMAC (RFC 4493): louismullie/cmac-rb". 4 мая 2016 г. – через GitHub.
  • RFC 4493 Алгоритм AES-CMAC
  • RFC 4494 Алгоритм AES-CMAC-96 и его использование с IPsec
  • RFC 4615 Расширенный стандарт шифрования — Код аутентификации сообщений на основе шифра — Псевдослучайная функция — 128 (AES-CMAC-PRF-128)
  • Онлайн-тест OMAC
  • Дополнительная информация о OMAC
  • Реализация Rust
Retrieved from "https://en.wikipedia.org/w/index.php?title=One-key_MAC&oldid=1251933288"