Один ключ MAC - One-key MAC
Один ключ MAC (OMAC) это код аутентификации сообщения построен из блочный шифр очень похоже на CBC-MAC алгоритм.
Официально существует два алгоритма OMAC (OMAC1 и OMAC2), которые по сути одинаковы, за исключением небольшой настройки. OMAC1 эквивалентен CMAC, который стал NIST рекомендация в мае 2005 г.
Это бесплатно для всех целей: на него не распространяются никакие патенты.[1]В криптография, CMAC (Код аутентификации сообщения на основе шифра)[2] это блочный шифр -основан код аутентификации сообщения алгоритм. Его можно использовать для обеспечения гарантии подлинности и, следовательно, целостности двоичных данных. Этот режим работы исправляет недостатки безопасности CBC-MAC (CBC-MAC безопасен только для сообщений фиксированной длины).
Ядро алгоритма CMAC - это вариант CBC-MAC который Чернить и Rogaway предложено и проанализировано под названием XCBC[3] и представлен NIST.[4] Алгоритм XCBC эффективно устраняет недостатки безопасности CBC-MAC, но требует трех ключей. Ивата и Куросава предложили усовершенствование XCBC и назвали получившийся алгоритм One-Key CBC-MAC (OMAC) в своих бумагах.[5] Позже они представили OMAC1,[6] доработка OMAC и дополнительный анализ безопасности.[7] Алгоритм OMAC уменьшает количество ключевого материала, необходимого для XCBC. CMAC эквивалентен OMAC1.
Чтобы сгенерировать ℓ-битный тег CMAC (т) сообщения (м) используя б-битовый блочный шифр (E) и секретный ключ (k), сначала один порождает два б-битовые подключи (k1 и k2) по следующему алгоритму (это эквивалентно умножению на Икс и Икс2 в конечное поле GF (2б)). Пусть ≪ обозначает стандартный оператор сдвига влево, а ⊕ обозначает побитовый Эксклюзивный или:
- Рассчитать временное значение k0 = Ek(0).
- Если msb (k0) = 0, то k1 = k0 ≪ 1, иначе k1 = (k0 ≪ 1) ⊕ C; куда C некоторая константа, которая зависит только от б. (Конкретно, C - невыводящие коэффициенты лексикографически первой неприводимой степениб двоичный полином с минимальным количеством единиц: 0x1B для 64-битных, 0x87 для 128-битных и 0x425 для 256-битных блоков.)
- Если msb (k1) = 0, тогда k2 = k1 ≪ 1, еще k2 = (k1 ≪ 1) ⊕ C.
- Ключи возврата (k1, k2) для процесса генерации MAC.
В качестве небольшого примера предположим б = 4, C = 00112, и k0 = Ek(0) = 01012. потом k1 = 10102 и k2 = 0100 ⊕ 0011 = 01112.
Процесс создания тега CMAC выглядит следующим образом:
- Разделить сообщение на б-битовые блоки м = м1 ∥ ... ∥ мп−1 ∥ мп, куда м1, ..., мп−1 являются полными блоками. (Пустое сообщение рассматривается как один неполный блок.)
- Если мп полный блок, тогда мп′ = k1 ⊕ мп еще мп′ = k2 ⊕ (мп ∥ 10...02).
- Позволять c0 = 00...02.
- За я = 1, ..., п − 1рассчитать cя = Ek(cя−1 ⊕ мя).
- cп = Ek(cп−1 ⊕ мп′)
- Выход т = msbℓ(cп).
Процесс проверки следующий:
- Используйте приведенный выше алгоритм для создания тега.
- Убедитесь, что сгенерированный тег равен полученному тегу.
Реализации
- Python реализация: см. использование
AES_CMAC ()
функция в "impacket / blob / master / tests / misc / test_crypto.py ", и его определение в"impacket / blob / master / impacket / crypto.py " [8]. - Рубин выполнение [9]
Рекомендации
- ^ Рогавей, Филипп. «CMAC: без лицензирования». Получено 27 мая, 2020.
Заявление Филиппа Рогавея о статусе интеллектуальной собственности CMAC
- ^ Дворкин, М Дж (2016). «Рекомендации по режимам работы блочного шифра» (PDF). Дои:10.6028 / нист.сп.800-38б. Цитировать журнал требует
| журнал =
(помощь) - ^ Блэк, Джон; Рогавей, Филлип (2000-08-20). Достижения в криптологии - CRYPTO 2000. Шпрингер, Берлин, Гейдельберг. С. 197–215. Дои:10.1007/3-540-44598-6_12. ISBN 978-3540445982.
- ^ Черный, J; Рогавей, П. «Предложение по обработке сообщений произвольной длины с помощью CBC MAC» (PDF). Цитировать журнал требует
| журнал =
(помощь) - ^ Ивата, Тецу; Куросава, Каору (24 февраля 2003 г.). «OMAC: One-Key CBC MAC». Быстрое программное шифрование. Конспект лекций по информатике. 2887. Шпрингер, Берлин, Гейдельберг. С. 129–153. Дои:10.1007/978-3-540-39887-5_11. ISBN 978-3-540-20449-7.
- ^ Ивата, Тецу; Куросава, Каору (2003). «OMAC: One-Key CBC MAC - Дополнение» (PDF). Цитировать журнал требует
| журнал =
(помощь) - ^ Ивата, Тецу; Куросава, Каору (2008-12-08). «Более строгие ограничения безопасности для OMAC, TMAC и XCBC». У Йоханссона, Томаса; Майтра, Субхамой (ред.). Прогресс в криптологии - INDOCRYPT 2003. Конспект лекций по информатике. Springer Berlin Heidelberg. стр.402 –415. CiteSeerX 10.1.1.13.8229. Дои:10.1007/978-3-540-24582-7_30. ISBN 9783540206095.
- ^ «Impacket - это набор классов Python для работы с сетевыми протоколами .: SecureAuthCorp / impacket». 15 декабря 2018 г. - через GitHub.
- ^ "Расширение 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