1. АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ

 

1.1 MAC-код аутентификации сообщения

Кодом аутентификации сообщения (MAC) является короткий фрагмент информации, используемый для проверки подлинности сообщения. Алгоритм MAC принимает в качестве ввода секретный ключ и сообщение подлинности произвольной длины, и выдает MAC (иногда называют меткой). Ценность MAC в том, что защищает целостность сообщения, а также его аутентичность, позволяя контролерам (которые также обладают секретным ключом) выявлять какие-либо изменения в первоначальном содержании передаваемого сообщения.

Сообщение целостности кода (MIC), отличается от MAC в том, что секретный ключ не используется в ее деятельности. Хотя эти термины иногда используются как взаимозаменяемые, MIC всегда должен быть закодирован в ходе передачи, если он будет использоваться в качестве надежного гаранта целостности сообщения. С другой стороны, MAC, который использует секретный ключ, не обязательно должен быть зашифрован чтобы обеспечить такой же уровень надежности.

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

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

Схема 1.Принцип MAC алгоритмов

1.2 UHASH – универсальная функция хэширования.

UHASH – функция хэширования – сердцевина MAC алгоритма UMAC.

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

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

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

1.3                   Математический анализ функции UHASH.

Класс хэш-функции Н хорош в использовании тем, что затруднит для атакующего угадать правильный дайджест d фальшивого сообщение f после перехвата одного сообщения А с дайджестом С. Другими словами

должна быть очень небольшой, желательно 1 / | D |.

Можно легко построить класс хэш-функции, когда D является полем. Например, если | D | является простым, все операции, принятые по модулю | D |. Сообщение а затем кодируется как н-мерный вектор над D (a1, a2, .., аn). Н затем | D | n +1 членов, каждый из которых соответствует n +1- мерному вектору над D (h0, h1, .., hn). Если принять, что

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

Если мы правильно зашифровали все дайджесты (например, при поможи кодировки (OTP)), злоумышленник не сможет получить от них что-либо и в то же время хэш-функция может быть использована для всех контактов между двумя сторонами. Это не может быть правдой для шифрования ECB, поскольку может быть весьма вероятным, что два послания производят то же хэш-значение. Потом какой-либо вектор инициализации должен быть использован, который часто называют «nonce». Это стало распространенной практикой для установки h0 = f (nonce), где f является также секретом.

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


2. ПОСТАНОВКА ЗАДАЧИ

Создать хэш-функцию UMAC (message authentication code based on universal hashing).

Наша функция будет 24-битной. Причем ключ должен быть не длиннее сообщения. А зашифрованное сообщение будет также 24 бита и уже содержит ключ. Например, f («nonce»). Причем «nonce» не обязательно должно содержаться в незашифрованом сообщении.


3. ОПИСАНИЕ ПРОГРАММЫ

 

3.1 Основные действия.

 

3.1.1 Операции со строками

Сообщения, которые будут хэшированными рассматриваются как строки битов, заполненные нулями до определенной длины байта. После того, как сообщение мягкий, все строки рассматриваются как строки байт. А "байт" состоит из 8 бит строка. Следующие записи используется для того, чтобы манипулировать этими строками.

 bytelength (S): Длина строки S в байтах.

 bitlength (S): Длина строки S в битах.

 zeroes(n): Строка из n нулевых байт.

S xor T: Строка, которая является результатом суммы по модулю 2 S

и Т. Строки S и T всегда имеют одинаковые

 длины.

 S and T: Строка, которая получается в результате побитовой коньюнкции S и T

S[i]: i-тый байт строки(индексация начинаеися с 1)

 S[i...j]: Подстрока строки S состоящая из байтов i через j.

 S || T: Логическое «или» строк S и T.

 zeropad(S,n): Строка S заполненая нуль-битами до ближайшего положительного кратного n байту. Формально, zeropad(S,n) = S || T, где T кратчайшая строка нуль-битов (возможно пустая) ,следовательно S || T не пустое и 8n делит bitlength(S ||T).


Информация о работе «Хеш-функция UMAC»
Раздел: Информатика, программирование
Количество знаков с пробелами: 22087
Количество таблиц: 0
Количество изображений: 4

0 комментариев


Наверх