Badger — это код аутентификации сообщений (MAC), основанный на идее универсального хеширования , разработанный [ когда? ] Боэсгаардом, Скавениусом, Педерсеном, Кристенсеном и Зеннером. [1] Он построен путем усиления ∆-универсального хеш-семейства MMH с использованием ϵ-почти сильно универсального (ASU) семейства хеш-функций после применения ENH (см. ниже), где значение ϵ равно . [2] Поскольку Badger — это функция MAC, основанная на подходе универсальной хеш- функции, условия, необходимые для безопасности Badger, такие же, как и для других универсальных хеш-функций, таких как UMAC .
MAC Badger обрабатывает сообщение длиной до бит и возвращает тег аутентификации длиной бит, где . В соответствии с требованиями безопасности пользователь может выбрать значение , то есть количество параллельных хэш-деревьев в Badger. Можно выбрать большие значения u , но эти значения не повлияют на безопасность MAC. Алгоритм использует 128-битный ключ, а ограниченная длина сообщения, обрабатываемого с помощью этого ключа, составляет . [3]
Настройка ключа должна быть выполнена только один раз для каждого ключа, чтобы запустить алгоритм Badger с данным ключом, поскольку полученное внутреннее состояние MAC можно сохранить для использования с любым другим сообщением, которое будет обработано позже.
Семейства хэшей можно объединять для получения новых семейств хэшей. Для семейств ϵ-AU, ϵ-A∆U и ϵ-ASU последние содержатся в первых. Например, семейство A∆U также является семейством AU, ASU также является семейством A∆U и т. д. С другой стороны, более сильное семейство можно свести к более слабому, если только можно достичь прироста производительности. Метод сведения ∆-универсальной хэш-функции к универсальным хэш- функциям будет описан далее.
Теорема 2 [1]
Пусть будет хеш-семейством ϵ-AΔU из множества A в множество B. Рассмотрим сообщение . Тогда семейство H, состоящее из функций, есть ϵ-AU.
Если , то вероятность того, что не больше ϵ, так как является семейством ϵ-A∆U. Если же , то вероятность тривиально равна 0. Доказательство теоремы 2 было описано в [1]
Семейство ENH построено на основе универсального семейства хэшей NH (которое также используется в UMAC ):
Где ' ' означает 'сложение по модулю ', а . Это -A∆U хэш-семейство.
Лемма 1 [1]
Следующая версия NH — -A∆U:
Выбрав w=32 и применив теорему 1, можно получить семейство функций -AU ENH, которое будет основным строительным блоком MAC барсука:
где все аргументы имеют длину 32 бита, а выходные данные имеют длину 64 бита.
Badger создан с использованием семейства хэшей строгой универсальности и может быть описан как
где универсальное семейство функций -AU H* используется для хеширования сообщений любого размера в фиксированный размер, а семейство функций -ASU F используется для гарантии строгой универсальности общей конструкции. NH и ENH используются для построения H* . Максимальный размер входных данных семейства функций H* равен , а размер выходных данных составляет 128 бит, разделенных на 64 бита для сообщения и хеша. Вероятность коллизии для функции H* варьируется от до . Для построения строго универсального семейства функций F , ∆-универсальное хеш-семейство MMH* преобразуется в строго универсальное хеш-семейство путем добавления еще одного ключа.
Для каждого сообщения необходимо выполнить два шага: фазу обработки и фазу завершения. [3]
На этом этапе данные хэшируются в 64-битную строку. Основная функция h : используется на этом этапе обработки, которая хэширует 128-битную строку в 64-битную строку следующим образом:
для любого n означает сложение по модулю . Для -битовой строки x , означает n младших бит, а означает n старших бит.
Сообщение может быть обработано с помощью этой функции. Обозначим level_key[j][i]
через .
Псевдокод этапа обработки выглядит следующим образом.
Л = | М | если Л = 0 Перейти к завершениюr = L mod 64, если r ≠ 0: для i = 1 для u : для j = 1 для v ′: разделить на 64-битные блоки, если t четное : иначе
На этом этапе 64-строчный результат обработки преобразуется в желаемый тег MAC. Этот этап финализации использует потоковый шифр Rabbit и использует как настройку ключа, так и настройку IV, принимая ключ финализации как .final_key[j][i]
Псевдокод этапа завершения
RabbitKeySetup(K)RabbitIVSetup(N)для i = 1 до u : разделить на 27-битные блоки, S = S ⨁ RabbitNextbit( u ∙32) вернуть S
Из приведенного выше псевдокода k обозначает ключ в Rabbit Key Setup(K), который инициализирует Rabbit с 128-битным ключом k . M обозначает сообщение, которое должно быть хэшировано, а | M | обозначает длину сообщения в битах. обозначает сообщение M , которое разделено на i блоков. Для данной -битной строки x L ( x ) и U ( x ) соответственно обозначают ее n младших бит и n старших бит.
Боесгард, Кристенсен и Зеннер сообщают о производительности Badger, измеренной на процессоре Pentium III 1,0 ГГц и на процессоре Pentium 4 1,7 ГГц . [1] Версии с оптимизированной скоростью были запрограммированы на языке ассемблера, встроенном в C, и скомпилированы с использованием компилятора Intel C++ 7.1.
В следующей таблице представлены свойства Badger для различных ограниченных длин сообщений. «Memory req.» обозначает объем памяти, необходимый для хранения внутреннего состояния, включая ключевой материал и внутреннее состояние потокового шифра Rabbit . «Setup» обозначает настройку ключа, а «Fin.» обозначает завершение с помощью IV-setup.
Макс. размер сообщения | Подделка связана | Регистр памяти. | Установка Pentium III | Фин. Pentium III | Установка Pentium III | Фин. Pentium III |
---|---|---|---|---|---|---|
байты (например, IPsec) | 400 байт | 1133 цикла | 409 циклов | 1774 цикла | 776 циклов | |
байты (например, TLS) | 528 байт | 1370 циклов | 421 цикл | 2100 циклов | 778 циклов | |
байты | 1072 байта | 2376 циклов | 421 цикл | 3488 циклов | 778 циклов | |
байты | 2000 байт | 4093 цикла | 433 цикла | 5854 циклов | 800 циклов |
Название MMH расшифровывается как Multilinear-Modular-Hashing (Многолинейное-модульное-хеширование). Например, приложения в мультимедиа проверяют целостность онлайн-мультимедийного заголовка. Производительность MMH основана на улучшенной поддержке целочисленных скалярных произведений в современных микропроцессорах.
MMH использует скалярные произведения одинарной точности в качестве своей самой базовой операции. Он состоит из (модифицированного) внутреннего произведения между сообщением и ключом по модулю простого числа . Конструкция MMH работает в конечном поле для некоторого простого целого числа .
MMH* включает в себя построение семейства хэш-функций, состоящих из полилинейных функций на для некоторого положительного целого числа k . Семейство MMH* функций от до определяется следующим образом.
где x, m — векторы, а функции определяются следующим образом.
В случае MAC m — это сообщение, а x — это ключ, где и .
MMH* должен удовлетворять требованиям безопасности MAC, позволяя, скажем, Ане и Бобу общаться аутентифицированным способом. У них есть секретный ключ x . Допустим, Чарльз слушает разговор Аны и Боба и хочет изменить сообщение на свое собственное сообщение Бобу, которое должно пройти как сообщение от Аны. Таким образом, его сообщение m' и сообщение Аны m будут отличаться по крайней мере одним битом (например, ).
Предположим, что Чарльз знает, что функция имеет вид и он знает сообщение Аны m, но не знает ключ x, тогда вероятность того, что Чарльз сможет изменить сообщение или отправить свое собственное сообщение, можно объяснить с помощью следующей теоремы.
Теорема 1 [4] : Семейство MMH* является ∆-универсальным.
Доказательство:
Возьмем , и пусть будут два разных сообщения. Предположим без потери общности, что . Тогда для любого выбора , существует
Чтобы объяснить теорему выше, возьмем в качестве штриха поле, представим его как . Если взять элемент в , скажем, то вероятность того, что
Итак, на самом деле нужно вычислить
Но,
Из приведенного выше доказательства следует, что вероятность столкновения злоумышленника в 1 раунде, поэтому в среднем p запросов проверки будет достаточно, чтобы принять одно сообщение. Чтобы уменьшить вероятность столкновения, необходимо выбрать большое p или объединить n таких MAC с использованием n независимых ключей, так что вероятность столкновения] становится . В этом случае количество ключей увеличивается в n раз , а выход также увеличивается в n раз .
Халеви и Кравчик [4] строят вариант, называемый . Конструкция работает с 32-битными целыми числами и с простым целым числом . На самом деле простое число p может быть выбрано любым простым числом, удовлетворяющим . Эта идея заимствована из предложения Картера и Вегмана использовать простые числа или .
где означает (т.е. двоичное представление)
Функции определяются следующим образом.
где
По теореме 1 вероятность столкновения составляет около , а семейство можно определить как ϵ -почти ∆ Universal с .
Значение k , описывающее длину сообщения и ключевых векторов, имеет несколько эффектов:
Ниже приведены результаты расчета времени для различных реализаций MMH [4] в 1997 году, разработанных Халеви и Кравчиком.
150 МГц PowerPC 604 | Послание в память | Сообщение в кэше |
---|---|---|
64-битный | 390 Мбит/сек | 417 Мбит/сек |
32-битный вывод | 597 Мбит/сек | 820 Мбит/сек |
150 МГц PowerPC 604 | Послание в память | Сообщение в кэше |
---|---|---|
64-битный | 296 Мбит/сек | 356 Мбит/сек |
32-битный вывод | 556 Мбит/сек | 813 Мбит/сек |
150 МГц PowerPC 604 | Послание в память | Сообщение в кэше |
---|---|---|
64-битный | 380 Мбит/сек | 500 Мбит/сек |
32-битный вывод | 645 Мбит/сек | 1080 Мбит/сек |