Jump to content

UMAC

В криптографии код аутентификации сообщения, основанный на универсальном хешировании , или UMAC , представляет собой тип кода аутентификации сообщения (MAC), вычисляемый путем выбора хеш-функции из класса хеш-функций в соответствии с некоторым секретным (случайным) процессом и применения ее к сообщению. . Полученный дайджест или отпечаток пальца затем шифруется, чтобы скрыть идентичность используемой хэш-функции. и любой MAC, его можно использовать для одновременной проверки целостности данных и подлинности сообщения Как . В отличие от традиционных MAC, которые являются сериализуемыми , UMAC может выполняться параллельно . Таким образом, поскольку машины продолжают предлагать больше возможностей параллельной обработки, скорость внедрения UMAC будет увеличиваться. [1]

Конкретный тип UMAC, также обычно называемый просто UMAC , указан в RFC 4418, он имеет доказуемую криптографическую стойкость и обычно требует гораздо меньше вычислительных затрат, чем другие MAC. Конструкция UMAC оптимизирована для 32-битных архитектур с поддержкой SIMD , с производительностью 1 цикл ЦП на байт (cpb) с SIMD и 2 cpb без SIMD. Близкий вариант UMAC, оптимизированный для 64-битных архитектур, представлен VMAC , который был представлен IETF в качестве черновика ( Draft-krovetz-vmac-01 ), но так и не привлек достаточного внимания для того, чтобы стать стандартизированным RFC.

Предыстория [ править ]

Универсальное хеширование [ править ]

Допустим, хеш-функция выбирается из класса хеш-функций H, который отображает сообщения в D, набор возможных дайджестов сообщений. Этот класс называется универсальным , если для любой отдельной пары сообщений существует не более |H|/|D| функции, которые отображают их на один и тот же член D.

Это значит, что если злоумышленник хочет заменить одно сообщение другим и, с его точки зрения, хеш-функция была выбрана совершенно случайно, вероятность того, что UMAC не обнаружит его модификацию, не превышает 1/|D|.

Но это определение недостаточно строгое — если возможными сообщениями являются 0 и 1, D={0,1} и H состоит из тождественной операции, а не , H является универсальным. Но даже если дайджест зашифрован методом модульного сложения, злоумышленник может изменить сообщение и дайджест одновременно, и получатель не заметит разницы.

Сильно универсальное хеширование [ править ]

Удобный в использовании класс хэш-функций H затруднит злоумышленнику угадать правильный дайджест d фальшивого сообщения f после перехвата одного сообщения a с дайджестом c . Другими словами,

должно быть очень маленьким, желательно 1/| Д |.

Легко построить класс хэш-функций, когда D поле . Например, если | Д | простое число , все операции выполняются по модулю | Д |. Сообщение a затем кодируется как n -мерный вектор над D ( a 1 , a 2 , ... an , ) . Тогда H имеет | Д | п +1 члены, каждый из которых соответствует ( n + 1) -мерному вектору над D ( h 0 , h 1 , ..., h n ) . Если мы позволим

мы можем использовать правила вероятностей и комбинаторики, чтобы доказать, что

Если мы правильно зашифруем все дайджесты (например, с помощью одноразового блокнота ), злоумышленник не сможет ничего из них узнать, и одна и та же хеш-функция может использоваться для всей связи между двумя сторонами. Это может быть не так для шифрования ECB , поскольку вполне вероятно, что два сообщения дадут одно и то же значение хеш-функции. какой-то вектор инициализации Затем следует использовать , который часто называют nonce . Стало обычной практикой устанавливать h 0 = f (nonce), где f также является секретным.

Обратите внимание, что наличие огромной мощности компьютера совершенно не поможет злоумышленнику. Если получатель ограничивает количество принимаемых подделок (переходя в режим сна всякий раз, когда он их обнаруживает), | Д | может быть 2 32 или меньше.

Пример [ править ]

Следующая функция C генерирует 24-битный UMAC. Предполагается, что secret кратно 24 битам, msg не длиннее, чем secret и result уже содержит 24 секретных бита, например f(nonce). nonce не обязательно должен содержаться в msg.

Код языка C (оригинал)
Код языка C (пересмотренный)

Хэмпшир и RFC - Нью UMAC

НХ [ править ]

Функции в приведенном выше безымянном [ нужна ссылка ] Семейство сильно универсальных хэш-функций использует n умножений для вычисления хэш-значения.

Семейство NH вдвое сокращает количество умножений, что на практике примерно означает двукратное ускорение. [2] Для повышения скорости UMAC использует семейство хэш-функций NH. NH специально разработан для использования инструкций SIMD , и, следовательно, UMAC является первой функцией MAC, оптимизированной для SIMD. [1]

Следующее семейство хэшей -универсальный: [1]

.

где

  • Сообщение M кодируется как n -мерный вектор из w -битных слов ( m 0 , m 1 , m 2 , ..., m n-1 ).
  • Промежуточный ключ K кодируется как n+1 -мерный вектор из w -битных слов ( k 0 , k 1 , k 2 , ..., k n ). Генератор псевдослучайных чисел генерирует K из общего секретного ключа.

Практически NH выполняется в целых числах без знака. Все умножения — по модулю 2^ w , все сложения — по модулю 2^ w /2, а все входные данные — вектор полуслов ( -битовые целые числа). Затем алгоритм будет использовать умножения, где было число полуслов в векторе. Таким образом, алгоритм работает со «скоростью» одного умножения на входное слово.

RFC 4418 [ править ]

RFC 4418 многое делает для обертывания NH, чтобы сделать его хорошим UMAC. Общая процедура UHASH («универсальная хэш-функция») создает теги переменной длины, которая соответствует количеству итераций (и общей длине ключей), необходимых для всех трех уровней хеширования. на основе AES Несколько вызовов функции получения ключей используются для предоставления ключей для всех трех хэшей с ключами.

  • Уровень 1 (куски по 1024 байта -> объединенные хэши по 8 байт) использует NH, потому что он быстрый.
  • Уровень 2 хеширует все до 16 байт с помощью функции POLY, которая выполняет арифметику простых модулей, при этом простое число меняется по мере увеличения размера входных данных.
  • Уровень 3 хеширует 16-байтовую строку до фиксированной длины в 4 байта. Это то, что генерирует одна итерация.

В RFC 4418 NH преобразован в следующий вид:

Y = 0
for (i = 0; i < t; i += 8) do
    
end for

Это определение предназначено для того, чтобы побудить программистов использовать инструкции SIMD для накопления, поскольку только данные с четырьмя индексами, скорее всего, не будут помещены в один и тот же регистр SIMD и, следовательно, быстрее будут умножаться в больших объемах. На гипотетической машине это можно было бы просто перевести так:

Гипотетическая сборка

См. также [ править ]

  • Poly1305 — еще один быстрый MAC, основанный на строго универсальном хешировании.

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

  1. ^ Jump up to: Перейти обратно: а б с Блэк, Дж.; Халеви, С.; Кравчик, Х.; Кровец, Т. (1999). UMAC: Быстрая и безопасная аутентификация сообщений (PDF) . Достижения в криптологии (CRYPTO '99) . Архивировано из оригинала (PDF) 10 марта 2012 г. , уравнение 1, а также раздел 4.2 «Определение NH».
  2. ^ Торуп, Миккель (2009). Хеширование строк для линейного зондирования . Учеб. 20-й симпозиум ACM-SIAM по дискретным алгоритмам (SODA) . стр. 655–664. CiteSeerX   10.1.1.215.4253 . дои : 10.1137/1.9781611973068.72 . ISBN  978-0-89871-680-1 . Архивировано (PDF) из оригинала 12 октября 2013 г. , раздел 5.3

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: b94df3b42e8853c8f3eedef83d003e9f__1701989640
URL1:https://arc.ask3.ru/arc/aa/b9/9f/b94df3b42e8853c8f3eedef83d003e9f.html
Заголовок, (Title) документа по адресу, URL1:
UMAC - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)