Из Википедии, бесплатной энциклопедии
  (Перенаправлено из CMAC )
Перейти к навигации Перейти к поиску

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

Официально существует два алгоритма OMAC (OMAC1 и OMAC2), которые по сути одинаковы, за исключением небольшой настройки. OMAC1 эквивалентен CMAC , который стал рекомендацией NIST в мае 2005 года.

Он бесплатен для любого использования: на него не распространяются никакие патенты. [1] В криптографии , КЦР (Cipher на основе Message Authentication Code) [2] является блочным шифром основанного сообщения кода аутентификации алгоритма. Его можно использовать для обеспечения гарантии подлинности и, следовательно, целостности двоичных данных. Этот режим работы устраняет недостатки безопасности CBC-MAC (CBC-MAC безопасен только для сообщений фиксированной длины).

Ядром алгоритма CMAC является вариант CBC-MAC, который Блэк и Рогавей предложили и проанализировали под названием XCBC [3] и представили в NIST . [4] Алгоритм XCBC эффективно устраняет недостатки безопасности CBC-MAC, но требует трех ключей. Ивата и Куросава предложили усовершенствование XCBC и в своих статьях назвали получившийся алгоритм One-Key CBC-MAC ( OMAC ). [5] Позже они представили OMAC1, [6] доработку OMAC и дополнительный анализ безопасности. [7] Алгоритм OMAC уменьшает количество ключевого материала, необходимого для XCBC. CMAC эквивалентен OMAC1.

CMAC - Код аутентификации сообщений на основе шифра.pdf

Чтобы сгенерировать ℓ-битовый тег 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 ( к 1 ) = 0 , то K 2 = K 1 «1 , в противном случае к 2 = ( K 1 « 1) ⊕ С .
  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. Убедитесь, что сгенерированный тег равен полученному тегу.

Реализации [ править ]

Ссылки [ править ]

  1. ^ Rogaway, Филипп. «CMAC: Без лицензирования» . Проверено 27 мая 2020 года . Заявление Филиппа Рогэвэя о статусе интеллектуальной собственности CMAC
  2. ^ Дворкин, MJ (2016). «Рекомендации по режимам работы блочного шифра» (PDF) . DOI : 10,6028 / nist.sp.800-38b . Цитировать журнал требует |journal=( помощь )
  3. ^ Блэк, Джон; Рогавей, Филипп (2000-08-20). Достижения в криптологии - CRYPTO 2000 . Шпрингер, Берлин, Гейдельберг. С. 197–215. DOI : 10.1007 / 3-540-44598-6_12 . ISBN 978-3540445982.
  4. ^ Черный, J; Rogaway, P. "Предложение по обработке сообщений произвольной длины с помощью CBC MAC" (PDF) . Цитировать журнал требует |journal=( помощь )
  5. ^ Ивата, Тецу; Куросава, Каору (24 февраля 2003 г.). «OMAC: One-Key CBC MAC». Быстрое программное шифрование . Конспект лекций по информатике. 2887 . Шпрингер, Берлин, Гейдельберг. С. 129–153. DOI : 10.1007 / 978-3-540-39887-5_11 . ISBN 978-3-540-20449-7.
  6. ^ Ивата, Тецу; Куросава, Каору (2003). «OMAC: One-Key CBC MAC - Приложение» (PDF) . Цитировать журнал требует |journal=( помощь )
  7. ^ Ивата, Тецу; Куросава, Каору (2008-12-08). «Более строгие ограничения безопасности для OMAC, TMAC и XCBC». У Йоханссона, Томаса; Майтра, Субхамой (ред.). Прогресс в криптологии - INDOCRYPT 2003 . Конспект лекций по информатике. Springer Berlin Heidelberg. стр.  402 -415. CiteSeerX 10.1.1.13.8229 . DOI : 10.1007 / 978-3-540-24582-7_30 . ISBN  9783540206095.
  8. ^ «Impacket - это набор классов Python для работы с сетевыми протоколами .: SecureAuthCorp / impacket» . 15 декабря 2018 г. - через GitHub.
  9. ^ "Расширение 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