Курсовая работа: Хеш-функция UMAC

Можно легко построить класс хэш-функции, когда 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).

3.1.2 Операции с числами

Используется тандартная запись,как для большинства математических операций, такие как "*" для умножения, "+" для сложения и "mod" для модульного сокращения.

Некоторые менее стандартной нотации определяются здесь.

a^i: целое растущее до i-той мощности.

ceil(x): минимальное целое больше равное x.

начало(n): самое большое простое число менее чем 2^n.

Простые числа использованные в UMAC:

3.1.3 Преобразовательные действия для строк и чисел.

Преобразование между строками и целыми сделаны используя следующие функции. Каждая функция рассматривает начальные биты как более значимые чем те что идут позже

bit(S,n): Возвращает целому 1 если n-th бит строки равен S - 1, в противном . случае возвращает целое 0 (индексы начинаются с 1).

str2uint(S): Неотрицательное целое, чье бинарное представление является . трокой S. Более формально :

S is t bits long then str2uint(S) = 2^{t-1} *

К-во Просмотров: 438
Бесплатно скачать Курсовая работа: Хеш-функция UMAC