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 б )). Пусть ≪ обозначает стандартный оператор сдвига влево, а ⊕ обозначает побитовое исключающее или :
- Вычислите временное значение k 0 = E k (0).
- msb( k0 ≪ ) = 0, то k1 ≪ = k0 Если иначе k1 = ( k0 1 , 1) ⊕ C ; где C — некоторая константа, зависящая только от b . (В частности, C — это неведущие коэффициенты лексикографически первого неприводимого двоичного полинома степени b с минимальным количеством единиц: 0x1B для 64-битных блоков, 0x87 для 128-битных и 0x425 для 256-битных блоков.)
- Если msb( k 1 ) = 0 , то k 2 знак равно k 1 ≪ 1 , иначе k 2 знак равно ( k 1 ≪ 1) ⊕ C .
- Ключи возврата ( 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 выглядит следующим образом:
- Разобьем сообщение на b -битовые блоки m = m 1 ∥ ... ∥ m n −1 ∥ m n , где m 1 , ..., m n −1 — полные блоки. (Пустое сообщение рассматривается как один неполный блок.)
- Если m n полный блок, то m n ′ знак равно k 1 ⊕ m n иначе m n ′ знак равно k 2 ⊕ ( m n ∥ 10...0 2 ) .
- Пусть c 0 = 00...0 2 .
- Для i знак равно 1, ..., n - 1 , вычислите c i знак равно E k ( c i -1 ⊕ m i ) .
- c n знак равно E k ( c n −1 ⊕ m n ′)
- Выходной сигнал t знак равно старший бит ℓ ( c n ) .
Процесс проверки выглядит следующим образом:
- Используйте приведенный выше алгоритм для создания тега.
- Убедитесь, что сгенерированный тег равен полученному тегу.
Реализации
[ редактировать ]- Реализация Python : см. использование
AES_CMAC()
функция в " impacket/blob/master/tests/misc/test_crypto.py " и ее определение в " impacket/blob/master/impacket/crypto.py " [ 8 ] - Ruby Реализация [ 9 ]
Ссылки
[ редактировать ]- ^ Jump up to: а б Ивата, Тецу; Куросава, Каору (24 февраля 2003 г.). «OMAC: MAC-адрес CBC с одним ключом». Быстрое программное шифрование . Конспекты лекций по информатике. Том. 2887. Шпрингер, Берлин, Гейдельберг. стр. 129–153. дои : 10.1007/978-3-540-39887-5_11 . ISBN 978-3-540-20449-7 .
- ^ Jump up to: а б с Ивата, Тецу; Куросава, Каору (2003). «OMAC: MAC-адрес One-Key CBC – Приложение» (PDF) .
В этой заметке мы предлагаем OMAC1, новый выбор параметров семейства OMAC (подробности см. в [4]). Также представлены тестовые векторы. Соответственно, мы переименовываем предыдущий OMAC в OMAC2. (То есть тестовые векторы для OMAC2 уже были показаны в [3].) Мы используем OMAC в качестве общего названия для OMAC1 и OMAC2.
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Дворкин, Моррис (2016). «Рекомендации по режимам работы блочного шифрования: режим CMAC для аутентификации» (PDF) . дои : 10.6028/nist.sp.800-38b .
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Рогауэй, Филипп. «CMAC: Без лицензирования» . Проверено 27 мая 2020 г.
Заявление Филиппа Рогауэя о статусе интеллектуальной собственности CMAC
- ^ Блэк, Джон; Рогауэй, Филипп (20 августа 2000 г.). Достижения в криптологии – КРИПТО 2000 . Шпрингер, Берлин, Гейдельберг. стр. 197–215. дои : 10.1007/3-540-44598-6_12 . ISBN 978-3540445982 .
- ^ Блэк, Дж; Рогауэй, П. «Предложение по обработке сообщений произвольной длины с помощью MAC CBC» (PDF) .
{{cite journal}}
: Для цитирования журнала требуется|journal=
( помощь ) - ^ Ивата, Тецу; Куросава, Каору (8 декабря 2003 г.). «Более строгие границы безопасности для OMAC, TMAC и XCBC» В Йоханссоне, Томас; Майтра, Субхамой (ред.). - INDOCRYPT Прогресс в криптологии Конспекты лекций по информатике. Том. 2904. Шпрингер Берлин Гейдельберг. стр. 100-1 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
- Реализация ржавчины