UMAC

UMAC

UMAC (англ. message authentication code based on universal hashing, universal MAC, код аутентификации сообщения на основе универсального хеширования) — один из видов кода аутентичности сообщений (MAC).

Содержание

История

Данный алгоритм был отобран NESSIE в 2003 году, а в его разработке принимали участие: Intel Corp. (США), университет Невады (США), научно-исследовательская лаборатория IBM (США), Technion (Израиль) и университет Калифорнии в Дэвисе (США). Его авторами были John Black, Shai Halevi и Hugo Krawczyk, Ted Krovetz и Phillip Rogaway.

Описание

Быстрая «универсальная» функция используется, для того, чтобы хешировать входящее сообщение M в короткую строку. К этой строке потом применяется функция ⊕[неизвестный термин] с псевдослучайным значением, в результате чего мы получаем тег UMAC:

Tag = H_{K1}\left(M\right) \oplus H_{K2} \left( Nonce \right)

где K1 и K2 — секретные случайные ключи, которые имеют получатель и отправитель).

Отсюда видно, что безопасность UMAC зависит от того, каким случайным способом отправитель и получатель выбрали тайную хэш-функцию и псевдослучайную последовательность. При этом значение Nonce меняется каждый такт. Из-за использования Nonce, приемник и передатчик должны знать время отправки сообщения и принцип создания значения Nonce. Вместо этого можно использовать в качестве Nonce любое другое неповторяющееся значение, например порядковый номер сообщения. При этом данный номер не обязан быть секретным, главное чтобы он не повторялся.

UMAC рассчитан на использование 32-х, 64-х, 92-х, и 128-битовых тегов, в зависимости от требуемого уровня безопасности. UMAC обычно используется совместно с алгоритмом шифрования AES.

Функция создания ключа и псевдослучайной последовательности

Создание псевдослучайных байтов необходимо для работы UHASH и при создании тегов

Выбор блочного шифра

Для своей работы UMAC использует блочный шифр, выбор которого определяют следующие константы:

  • BLOCLEN — длина, в байтах, блока с которым работает блочный шифр
  • KEYLEN — длина, в байтах, ключа блочного шифра

При этом используется функция

  • ENCIPHER(K,P) — зашифровать строку P из BLOCLEN байтов, используя ключ K.

Пример: если используется AES с 16-байтным ключом, то BLOCLEN будет равным 16(так как AES работает с 16-байтными блоками).

KDF — функция создания ключа

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

Вход:

  • К — строка длиной KEYLEN байт. / / Ключ блочного шифра
  • Index — неотрицательное целое число меньше, чем 2 ^ 64.
  • Numbytes — неотрицательное целое число меньше, чем 2 ^ 64.

Выход:

  • Y — строку длины numbytes байт.

PDF: функция создания псевдослучайного числа

Эта функция принимает ключ и данное время и возвращает псевдослучайное числ для использования его в теге поколения. С помощью этой функции могут быть получены числа длиной 4, 8, 12 или 16 байт.

Вход:

  • К — строка длиной KEYLEN байт.
  • Nonce — строка длиной от 1 до BLOCKLEN байт.
  • Taglen — целое число 4, 8, 12 или 16.

Выход:

  • Y — последовательность байтов длины taglen.

Генерация UMAC-тегов

Генерация UMAC-тегов происходит с помощью UHASH функции при использовании Nonce значении и полученной до этого строчки(см. Описание). Их длина может быть 4, 8, 12 или 16 байт.

Вход:

  • K — строка длиной KEYLEN байт
  • M — строка длиной меньше 2^67 бит
  • Nonce — случайное число от 1 до BLOCKLEN байт
  • TagLen — целое 4, 8, 12 или 16

Выход:

  • Тег, последовательность байтов длиной taglen

Алгоритм вычисление тегов:

HashedMassage = UHASH(K, M, TagLen)
Pad = PDF(K, nonce, TagLen)
Tag = Pad xor HashedMassage

UMAC-32 UMAC-64 UMAC-96 UMAC-128

Данные обозначения содержат в своем названии определенное значение длины тега:

  • UMAC-32 (К, М, Nonce) = UMAC (K, M, Nonce, 4)
  • UMAC-64 (К, М, Nonce) = UMAC (K, M, Nonce, 8)
  • UMAC-96 (К, М, Nonce) = UMAC (K, M, Nonce, 12)
  • UMAC-128 (K, M, Nonce) = UMAC (K, M, Nonce, 16)

Универсальная функция хэширования(UHASH)

UHASH(англ. Universal hashing) — универсальная функция хеширования, сердцевина алгоритма UMAC. UHASH — функция работает в три этапа. Сначала к входному сообщению применяется L1-HASH, потом к этому результату применяется L2-HASH и, наконец, к результату применяется L3-HASH . Если при этом длина входного сообщения не более 1024 бит, то L2-HASH не используется. Так как функция L3-Hash возвращает только слово длины 4 байта, то если требуется получить хэш длины больше 4 байт, то функция L3-Hash не используется.

Универсальная функция

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

L1-Hash — первый этап

L1-Hash разбивает сообщения на куски из 1024 байт и к каждому куску применяет алгоритм хеширования называемый NH. Выходной результат алгоритма NH в 128 раз меньше входного.

L2-Hash — второй этап

L2-Hash работает с выходом L1-Hash, использует полиномиальный алгоритм POLY. Второй этап хеширования используется, только если длина входного сообщения больше 16 мегабайт. Использование алгоритма POLY требуется для того, чтобы избежать временную атаку. На выходе из алгоритма POLY получается 16 байтное число.

L3-HASH — третий этап

Этот этап требуется для того чтобы из выходных 16 байтов алгоритма L2-Hash получить 4-байтное значение.

Вопросы безопасности

Стойкость криптоанализу

Стойкость UMAC зависит от ее основных функций: функции создания ключа (KDF) и функции создания псевдослучайной последовательности(PDF). Именно поэтому обе функции реализованы с использованием блочного шифрования, обычно Advanced

Encryption Standard (AES). Однако UMAC позволяет использовать другие блочные шифры. Основной плюс UMAC алгоритма и UHASH функции заключается в том, что их стойкость зависит только от математических свойств данного алгоритма и функции. Поэтому криптоанализ не влияет на стойкость UHASH-функции.

Длина псевдослучайных чисел и возможность подмены

Алгоритм MAC используется ля проверки подлинности сообщений между двумя сторонами, которые знают общий секретный ключ K. Теги аутентификации вычисляются для сообщения с помощью ключа K, а в случае UMAC ключом является время. Взлом алгоритма MAC обозначает, что злоумышленник умеет сам генерировать сообщения без знания ключа. Теория Wegman-Carter и анализ UMAC показывает, что если используется алгоритм UMAC со случайными ключами и начальным значением Nonce, то вероятность того, что злоумышленник взломает сообщение равна: \frac{1}{2^{30}}, \frac{1}{2^{60}}, \frac{1}{2^{90}}, \frac{1}{2^{120}} , если используются выходные теги длины 32, 64, 96, 128 соответственно. Если злоумышленник делает N попыток, то вероятность взлома увеличивается пропорционально числу попыток, то есть в N раз. При дополнительном использовании алгоритма AES, вероятность взлома значительно уменьшается.

Безопасность использования Nonce

UMAC использует текущее время в диапазоне от 1 до BLOCKLEN байт. При этом все значения Nonce в течение сессии должны быть равными по длине. Для обеспечения лучшей безопасности никакое значение Nonce не должно повторяться при использовании одного ключа сессии.

Если используется дуплексный канал передачи, то могут использоваться разные ключи для каждого направления. При использовании ключа в обоих направлениях очень важно, чтобы значение Nonce не повторялось, это можно реализовать путем использования четных ключей в одном и нечетных в другом направлении. При этом текущее значение Nonce не нужно держать в секрете.

Значение Nonce может создаваться и передаваться следующими вариантами:

  1. Текущее значение Nonce является 8-байтовым беззнаковым числом, которое в начале сессии обнуляется и увеличивается на единицу после каждого посланного тега. При этом данный счетчик передается вместе с сообщением. Если в течение сессии передано более 2 ^ 64 сообщений, то возникает прерывание.
  2. Текущее значение Nonce является BLOCKLEN-байтовым беззнаковым числом, которое в начале сессии обнуляется и увеличивается на единицу после каждого посланного тега. При этом счетчик явно не передается между отправителем и получателем, а каждый из них сам считает текущее значение.
  3. Текущее значение Nonce является BLOCKLEN-байтовой псевдослучайной величиной. Но тогда важна синхронизация псевдослучайных последовательностей у отправителя и получателя.

Повторные атаки

Повторные атаки — это действия злоумышленника направленные на повторение сообщения, случайного числа, и аутентификации тега. В UMAC данная атака не принесет плодов так как каждое значение Nonce используется ровно один раз.

Проверка префикса тега.

Характер UMAC позволяет реализавать тег-префиксную проверку, например, приемник может проверить только 32-бит префикс от 64-битового тега. Это используется для оптимизации, если вычислительная нагрузка проверки высока. При этом приемник имеет возможность отклонения всего тега, если 32-битный префикс неверен. Данный алгоритм снижает безопасность сессии.

Литература

  • J. Black, S. Halevi, H. Krawczyk, T. Krovetz, and P. Rogaway, «UMAC: Fast and provably secure message authentication», Advances in Cryptology — CRYPTO '99, LNCS vol. 1666, pp. 216-233, Springer-Verlag, 1999.
  • L. Carter and M. Wegman, «Universal classes of hash functions», Journal of Computer and System Sciences, 18 (1979), pp. 143-154.
  • T. Krovetz, «Software-optimized universal hashing and message authentication», UMI Dissertation Services, 2000.
  • M. Wegman and L. Carter, «New hash functions and their use in authentication and set equality», Journal of Computer and System Sciences, 22 (1981), pp. 265-279.

Wikimedia Foundation. 2010.

Смотреть что такое "UMAC" в других словарях:

  • UMAC — In cryptography, a message authentication code based on universal hashing, or UMAC, is a type of message authentication code (MAC) calculated choosing a hash function from a class of hash functions according to some secret (random) process and… …   Wikipedia

  • UMAC — En criptografía, un código de autenticación de mensajes basado en hashing universal o UMAC es un tipo de código de autenticación de mensajes (MAC) que se calcula elijiendo una función de hash de una clase de funciones de hash de acuerdo a algún… …   Wikipedia Español

  • umac — is. Ovulmuş undan bişirilən duru xörək və bu xörək üçün üstünə su səpilərək hazırlanan xəmir ovuntularının özü (xalq arasında adətən tərləmək üçün soyuq dəymiş adamlara verilir). <Ağa Kərim xan:> . . Haflama gürzə, qurutlu aş, mal ətinin… …   Azərbaycan dilinin izahlı lüğəti

  • UMAC — Upper Merion Aquatic Club (Community » Sports) …   Abbreviations dictionary

  • UMAC — Upper Midwest Aerospace Consortium Contributor: GSFC …   NASA Acronyms

  • UMAC — abbr. Universal Motion and Automation Controller …   Dictionary of abbreviations

  • University of Macau — Infobox University name = University of Macau Universidade de Macau 澳門大學 motto = Benevolence, righteousness, propriety, wisdom and sincerity (Traditional Chinese:仁義禮智信) established = 1981 type = Public location = Av. Padre Tomás Pereira Taipa,… …   Wikipedia

  • The College of St. Scholastica — College of St. Scholastica Motto Omnes semitae eius pacificae Motto in English Her ways are ways of beauty, and all her paths are peace. Established …   Wikipedia

  • Ken Crandall — College coach infobox Name = Ken Crandall | Caption = DateOfBirth = Birthplace = DateOfDeath = Sport = College football College = Title = CurrentRecord = OverallRecord = Awards = 2006 UMAC North Division Coach of the Year 2006 UMAC Conference… …   Wikipedia

  • Hespos — Hans Joachim Hespos (* 13. März 1938 in Emden) ist ein deutscher Komponist und Verleger seiner eigenen Arbeiten. Inhaltsverzeichnis 1 Leben 2 Musikalisches Wirken 3 Auszeichnungen 4 Uraufführung …   Deutsch Wikipedia


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»