49408 (Хеш-функция UMAC), страница 2

2016-07-30СтудИзба

Описание файла

Документ из архива "Хеш-функция UMAC", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "49408"

Текст 2 страницы из документа "49408"

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} *

bit(S,1) + 2^{t-2} * bit(S,2) + ... + 2^{1} *

bit(S,t-1) + bit(S,t).

uint2str(n,i): и-тый байт строки, например str2uint(S) = n.

3.1.4 Математические операции в строках

Одно из первичных действий в UMAC – повторение применения операций сложения и умножения в строках. Действия "+_32", "+_64", и "*_64" определены:

"S +_32 T" as uint2str(str2uint(S) + str2uint(T) mod 2^32, 4),

"S +_64 T" as uint2str(str2uint(S) + str2uint(T) mod 2^64, 8), and

"S *_64 T" as uint2str(str2uint(S) * str2uint(T) mod 2^64, 8).

Эти операции отлично выполняются на современных компьютерах.

3.2 Алгоритм UHASH

Вход:

K, строка длиной KEYLEN байт.

M, строка длиной меньше чем 2^67 бит.

taglen, числа 3,4, 8, 12 or 16.

Выход:

Y, строка длиной taglen байт.

Вычисление Y использует следующий алгоритм:

//

// одна целая итерация за 3 байта для выхода

//

iters = taglen / 3

//

// определим общее число требуемых ключей при помощи KDF.

// L1Key reuses most key material between iterations.

//

L1Key = KDF(K, 1, 1024 + (iters - 1) * 16)

L2Key = KDF(K, 2, iters * 24)

L3Key1 = KDF(K, 3, iters * 64)

L3Key2 = KDF(K, 4, iters * 4)

//

// Для каждой итерации устанавливаем свой ключ и делаем трехслойный hash.

// If bytelength(M) <= 1024, then skip L2-HASH.

//

Y = <пустая строка>

Для i = 1 to iters do

L1Key_i = L1Key [(i-1) * 16 + 1 ... (i-1) * 16 + 1024]

L2Key_i = L2Key [(i-1) * 24 + 1 ... i * 24]

L3Key1_i = L3Key1[(i-1) * 64 + 1 ... i * 64]

L3Key2_i = L3Key2[(i-1) * 4 + 1 ... i * 4]

A = L1-HASH(L1Key_i, M)

Если (bitlength(M) <= bitlength(L1Key_i)) тогда,

B = zeroes(8) || A

иначе получим

B = L2-HASH(L2Key_i, A)

а если

C = L3-HASH(L3Key1_i, L3Key2_i, B)

Y = Y || C

end for

Return Y

4. Стойкость алгоритма к атакам.

В соответствии с MAC спецификой, документ является защищенным. Здесь мы описываем некоторые соображения по безопасности важные для соответствующего понимания и использования UMAC.

4.1Сопротивление в Криптанализе

Сила UMAC зависит от силы своих основных шифровальных функций: ключевой вывод функции (KDF) и панель-вывода функции (PDF). В этой спецификации, оба действия осуществлены используя блочный шифр, по умолчанию Передовой Шифровальный Стандарт (AES). Тем не менее, проект UMAC учитывает замену этих компонентов. На самом деле, возможно даже использовать другое блочное кодирование или другие шифровальные объекты, как например, SHA-1 или HMAC для реализации KDF или PDF.

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

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

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

Сообщение дойдет до получателя, когда данныйе (сообщение, nonce, этикетка) посчиталсись подлиными. Несомненно, этикетка должна быть в силе для сообщения и для «nonce», как определено в UMAC, но сообщение может все еще посчитаться неаутентифицированным, поскольку «nonce» будет повторен.

5. Инструкция пользователя

Для начала работы с программой находим umac.exe и запускаем его.

На экране появится «Enter message», после чего мы воодим нужное нам сообщение и нажимаем Enter. Затем на экране появится «Enter key», после чего мы вводим ключ (длина ключа короче чем сообщения или равна ему. В противном случае те символы, которые вышли за рамки сообщения принимать участия в кодировании не будут. ), известный только нам и получателю и снова жмем Enter.

Затем на экране видим зашифрованное сообщение. Программа выполнила требуемую операцию.

ВЫВОДЫ

- UMAC является самым быстрым среди MAC- алгоритмов.

- Является безопасным и криптостойким. Выдерживает множество видов атак.

-При помощи данной хэш-функции можно зашифровать скольугодно большое количество информации.

- Нет обоснования выбора конструкции, функций, констант.

-Сохраняет конфиденциальность, аутентичность, целостность,неопровергаемость.

ПЕРЕЧЕНЬ ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

  1. Зубков С. В. - Assembler – язык неограниченных возможностей. «ДМК Пресс» - 1999г.

  2. http://fastcrypto.org/umac

  3. http://en.wikipedia.org/wiki/UMAC

  4. Кип Р. Ирвин Язык ассемблера для процессоров INTEL, 4-е изд. /Пер. с англ. – М..: – Издательский дом “ВИЛЬЯМС”, 2005 г. – 912 с., ил. – Парал. Тит. Англ.

5. 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.

Приложение А. Графическое представление программы.

  1. Открываем программу и пишем сообщение:

2. Вводим ключ:

3. Получаем зашифрованное сообщение:

Приложение Б.

UMAC24 - код на ассемблере.Это внешняя функция, которая прикомпилируется к коду на с++, в качестве объектного файла.

.386

.model flat,stdcall

PUBLIC UMAC24

.data

r1 db 0

r2 db 0

r3 db 0

byteCnt db 0

bitCnt db 0 ;?

counter dd 0

countmes dd 0

countres dd 0

.data?

s1 db ?

s2 db ?

s3 db ?

byte1 db ?

.code

UMAC24 proc message:BYTE, secret:BYTE, len:DWORD, result:BYTE

mov edi,len

mmm:

.if byteCnt == 0

mov ecx,counter

mov al,secret

mov bl,[eax+ecx]

mov s1,bl

inc ecx

mov bl,[eax+ecx]

mov s2,bl

inc ecx

mov bl,[eax+ecx]

mov s3,bl

inc ecx

mov counter,ecx

mov byteCnt,2

.endif

dec byteCnt

mov ecx, countmes

mov al,message

mov bl, [eax+ecx]

mov byte1,bl

inc ecx

mov countmes,ecx

mov ecx,7

metka:

mov al, byte1

AND al,1

.if ( al != 0) //msg not divisible by x

mov bl,s1 //so add s1

xor r1,bl

mov bl,s2

xor r2,bl

mov bl,s3

xor r3,bl

.endif

shr byte1,1 //divide message by x

mov al,s3

AND al,80h

.if al != 0 //and multiply secret with x, subtracting the polynomial when necessary to keep it's.

shl s3,1

mov al,s2

AND al,80h

.if al !=0

mov bl,s3

OR bl,1

mov s3,bl

shl s2,1

.endif

mov al,s1

AND al,80h

.if al !=0

mov bl,s2

OR bl,1

mov s2,bl

shl s1,1

.endif

mov al,s1

xor al,1Bh // x^24 + x^4 + x^3 + x + 1

mov s1,al

.else

shl s3,1

mov al,s2

AND al,80h

.if al !=0

mov bl,s3

Or bl,1

mov s3,bl

shl s2,1

.endif

mov al,s1

AND al,80h

.if al !=0

mov bl,s2

OR bl,1

mov s2,bl

shl s1,1

.endif

.endif

dec ecx

jns metka //for each bit in the message

dec edi

jns mmm //for each byte in the message

mov al,result

mov ecx,0

mov bl, [eax+ecx]

xor bl,r1

mov [eax+ecx],bl

inc ecx

mov bl, [eax+ecx]

xor bl,r2

mov [eax+ecx],bl

inc ecx

mov bl, [eax+ecx]

xor bl,r3

mov [eax+ecx],bl

mov bl, [eax+ecx]

xor bl,r3

mov [eax+ecx],bl

ret

UMAC24 endp

END

Это код на С++.На нем реализован ввод-вывод данных.Сам алгоритм выполняет функция.

#include

#include

#include

#include

#include

extern "C" __stdcall UMAC24(unsigned char *msg, unsigned char *secret, int len, unsigned char *result); //объявили внешнюю функцию(ту которая на асме)

int bin(bool *str){

long b(0);

int count(0);

for(int i(31);i>=0;i--){

if(str[i]==1){b+=pow(2,count);}

count++;

}

return b;

}

void main(){

unsigned char msg[100]; //создали статические массивы размером 100 символов

unsigned char secr[100];

unsigned char rez[]={0,0,0,0}; //результат(хэш) имеет всегда фиксированное значение - 24 бита

int len(0); //длина сообщения(кол-во символов в нем)

cout<<"Enter message:"<

cin.getline(msg,100); //считываем введенное сообщение в массив msg

cout<<"Enter key:"<

cin.getline(secr,100); //считываем ключ

for(int i(0);;i++){len++;if(msg[i]==NULL){break;}} //считаем длину введенного сообщения

UMAC24(msg,secr,len,rez); //вызываем внешнюю функцию

cout<

bool masbin[32];

int a;

for(int ii(0);ii<3;ii++){

for(int j=0;j<32;j++){

masbin[31-j]=rez[ii]%2;

rez[ii]=rez[ii]>>1;} //получили массив с представлением числа в двоичной форме

a=bin(masbin);

cout<

}cout<

cin.get();

cin.get();

}

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5184
Авторов
на СтудИзбе
436
Средний доход
с одного платного файла
Обучение Подробнее