Upload
paco
View
45
Download
0
Embed Size (px)
DESCRIPTION
Хеш-функции в криптографията. Определение. Х еш-функция (или хеш-алгоритъм) се нарича метод, който преобразува данни в число. Тези функции осигуряват начин за създаване на цифрови „отпечатъци” от всякакъв тип данни. - PowerPoint PPT Presentation
Citation preview
Хеш-функции в криптографията
2
Определение
Хеш-функция (или хеш-алгоритъм) се нарича метод, който преобразува данни в число.
Тези функции осигуряват начин за създаване на цифрови „отпечатъци” от всякакъв тип данни.
В криптографията тези „отпечатъци” често са наричани цифрови сигнатури или хеш-стойности, които обикновено се представят в шетнайсететична бройна система и служат за контролиране целостта на криптираните съобщения.
Хеш-функциите често се използват за хеширане на потребителски пароли и съхранение на хешовете, вместо самите пароли.
3
Свойства на хеш-функциитеИзискванията към хеш-функциите използвани в криптографията са:
1/ За данни с произволна дължина хеш-стойностите имат фиксирана дължина.
2/ H(x) е относително лесно да се изчисли за всяко х.
3/ H(x) е еднопосочна функция (one-way function) или функция със задна врата (trapdoor function).
4/ Н(х) е силно защитена от колизии, т.е. невъзможно е чрез изчисления да се намерят произволни х и у, за които да е изпълнено Н(х) = Н(у).
4
Еднопосочна хеш-функция MD4Входните съобщения се обработват на блокове с дължина 512 бита, всеки от които съдържа по 16 32-битови подблока. При обработката се използват следните три функции F, G и Н:
F(X,Y,Z) = (X and Y) or ((not X) and Z)
G(X,Y,Z) = (X and Y) or (X and Z) or (Y and Z)
H(X,Y,Z) = X xor Y xor Z
Процедурата за изчисляване на хеш-стойността Н на съобщението М се изпълнява в следната последователност:
Стъпка 1: Входното съобщение М се разделя на 512-битови блокове, като последният блок се допълва до размерност 448 бита чрез добавяне на единица и необходимия брой нули.
5
Еднопосочна хеш-функция MD4Стъпка 2: Към последния 448-битов блок се прибавя 64-битова група, указваща дължината на М в битове. Полученото разширено съобщение М* ще съдържа цяло число L 512-битови блока, респективно - цяло число 16L 32-битови подблока (думи).
Стъпка 3: Инициализиране на четири 32-битови променливи А, В, C и D.
Стъпка 4: Копиране на първия 512-битов блок в масив от 32-битови думи
Стъпка 5: AA = A; BB = B; CC = C; DD = D
6
Еднопосочна хеш-функция MD4
Стъпка 6: Реализация на 1-ва итерация (16 операции)
К1 = 0 F(X,Y,Z) = (X and Y) or ((not X) and Z)
Стъпка 7: Реализация на 2-ра итерация (16 операции)
К2 = 5A82799916
G(X,Y,Z) = (X and Y) or (X and Z) or (Y and Z)
Стъпка 8: Реализация на 3-та итерация (16 операции)
К3 = 6ED9EBA116 H(X,Y,Z) = X xor Y xor Z
7
Еднопосочна хеш-функция MD4
Стъпка 9: A = A+AA; B = B+BB; C = C+CC; D = D+DD (сумирането е по mod 232)
Стъпка 10: Повторение от стъпка 4 за i=1, i=2 и т.н. до i=(L-1).
Стъпка 11: Извеждане на 128-битовата хеш-стойност H = (A,B,C,D) на входното съобщение М.
Пример: H(‘e’) = aec2333321d73000161682d3c4ebc009 H(‘example’) = e1821c366558728f70e054fbf9db7b64H(‘Example’) = e31846f587fe2f61edd99ad2939876b5
8
Еднопосочна хеш-функция MD5MD5 е развитие на MD4 с цел повишаване на сигурността. Алгоритъмът използва 4 итерации и следните функции F, G, H и I:
F(X,Y,Z) = (X and Y) or ((not X) and Z)
G(X,Y,Z) = (X and Z) or (Y and (not Z))
H(X,Y,Z) = X xor Y xor Z
I(X,Y,Z) = Y xor (X or not Z)
Процедурата за изчисляване на хеш-стойността Н на съобщението М е следната:
Първите 5 стъпки на процедурата за изчисляване на Н с MD5 съвпадат с описаните за MD4.
9
Еднопосочна хеш-функция MD5
Стъпка 6: Реализация на 1-ва итерация (16 операции)F(X,Y,Z) = (X and Y) or ((not X) and Z)
Стъпка 7: Реализация на 2-ра итерация (16 операции)G(X,Y,Z) = (X and Z) or (Y and (not Z))
Стъпка 8: Реализация на 3-та итерация (16 операции)H(X,Y,Z) = X xor Y xor Z
Стъпка 9: Реализация на 4-та итерация (16 операции)I(X,Y,Z) = Y xor (X or not Z)
Последните стъпки 10, 11 и 12 на MD5 съвпадат, съответно със стъпки 9, 10 и 11 на описаната процедура на MD4.
Ki = floor(232.abs(sin(i+1)))
10
Задача 1
Дадени са следните MD5 функции:F(X, Y, Z) = (X and Y ) or (not X and Z)G(X, Y, Z) = (X and Z) or (Y and not Z)H(X, Y, Z) = X xor Y xor ZI(X, Y, Z) = Y xor (X or not Z)
Изчислете всяка от функциите, като използвате следните аргументи: (a) X := 0110, Y := 1111, Z := 0011
(b) X := 1010, Y := 1001, Z := 1011
(c) X := 0111, Y := 0001, Z := 1001
F G H I
0111 1110 1010 0001
11
Задача 2
Изчислете 16 битовата хеш-сигнатура на 32 битово съобщение, зададено като 16-тично число, като използвате 1-ва итерация на алгоритъма MD4, преработена по следния начин:
(АА,ВВ,СС,DD) := (A,B,C,D)for i := 0 to 3 dot := A + F(B,C,D) +Mi(A,B,C,D) := (D, t<<<i,B,C)end(A,B,C,D) := (АА + A, ВВ + B, СС + C, DD + D)
Първоначалните стойности на променливите А, В, С, D са (116, 416, А16, В16).
Съобщението е М=FAB17E6616.
12
Задача 2 /решение/
(А, В, С, D) = (116, 416, А16, В16) ; М=FAB17E6616
(АА,ВВ,СС,DD) := (A,B,C,D)for i := 0 to 3 dot := A + F(B,C,D) +Mi // F(B,C,D) = (B and C) or (notB and D)
(A,B,C,D) := (D, t<<<i,B,C)end(A,B,C,D) := (АА+A, ВВ+B, СС+C, DD+D)-------------------------------------------------------------- ---------------
(АА,ВВ,СС,DD) := (116, 416, А16, В16)i := 0
t := 116 + F(416, А16, В16) + F16 = 116 + В16 + F16 = В16
F(416, А16, В16) = (0100 and 1010) or (1011 and 1011) = 1011 = В16
(A,B,C,D) := (В16, В16<<<0, 416, А16) = (В16, В16, 416, А16)
13
Задача 2 /решение/
(АA, ВB, CС, DD) = (116, 416, А16, В16) ; М=FAB17E6616
(АА,ВВ,СС,DD) := (A,B,C,D)for i := 0 to 3 dot := A + F(B,C,D) +Mi // F(B,C,D) = (B and C) or (notB and D)
(A,B,C,D) := (D, t<<<i,B,C)end(A,B,C,D) := (АА+A, ВВ+B, СС+C, DD+D)-------------------------------------------------------------- ---------------
(А,В,С,D) := (B16, B16, 416, A16)i := 1
t := B16 + F(B16, 416, A16) + A16 = B16 + 016 + A16 = 516
F(B16, 416, A16) = (1011 and 0100) or (0100 and 1010) = 0000 = 016
(A,B,C,D) := (A16, 516<<<1, B16, 416) = (A16, A16, B16, 416)
14
Задача 2 /решение/
(АA, BВ, CС, DD) = (116, 416, А16, В16) ; М=FAB17E6616
(АА,ВВ,СС,DD) := (A,B,C,D)for i := 0 to 3 dot := A + F(B,C,D) +Mi // F(B,C,D) = (B and C) or (notB and D)
(A,B,C,D) := (D, t<<<i,B,C)end(A,B,C,D) := (АА+A, ВВ+B, СС+C, DD+D)-------------------------------------------------------------- ---------------
(А,В,С,D) := (A16, A16, B16, 416)i := 2
t := A16 + F(A16, B16, 416) + B16 = A16 + E16 + B16 = 316
F(A16, B16, 416) = (1010 and 1011) or (0101 and 0100) = 1110 = E16
(A,B,C,D) := (416, 316<<<2, A16, B16) = (416, C16, A16, B16)
15
Задача 2 /решение/
(АA, ВB, СC, DD) = (116, 416, А16, В16) ; М=FAB17E6616
(АА,ВВ,СС,DD) := (A,B,C,D)for i := 0 to 3 dot := A + F(B,C,D) +Mi // F(B,C,D) = (B and C) or (notB and D)
(A,B,C,D) := (D, t<<<i,B,C)end(A,B,C,D) := (АА+A, ВВ+B, СС+C, DD+D)-------------------------------------------------------------- ---------------
(А,В,С,D) := (416, C16, A16, B16)i := 3
t := 416 + F(C16, A16, B16) + 116 = 416 + B16 + 116 = 016
F(C16, A16, B16) = (1100 and 1010) or (0011 and 1011) = 1011 = B16
(A,B,C,D) := (B16, 016<<<3, C16, A16) = (B16, 016, C16, A16)
16
Задача 2 /решение/
(АA, ВB, СC, DD) = (116, 416, А16, В16) ; М=FAB17E6616
(АА,ВВ,СС,DD) := (A,B,C,D)for i := 0 to 3 dot := A + F(B,C,D) +Mi // F(B,C,D) = (B and C) or (notB and D)
(A,B,C,D) := (D, t<<<i,B,C)end(A,B,C,D) := (АА+A, ВВ+B, СС+C, DD+D)-------------------------------------------------------------- ---------------
(А,В,С,D) := (B16, 016, C16, A16)
(A,B,C,D) := (116+B16, 416+016, A16+C16, B16+A16) (A,B,C,D) := (C16, 416, 616, 516)
17
Задача 2 /решение/
(АA, ВB, СC, DD) = (116, 416, А16, В16) ; М=FAB17E6616
(АА,ВВ,СС,DD) := (A,B,C,D)for i := 0 to 3 dot := A + F(B,C,D) +Mi // F(B,C,D) = (B and C) or (notB and D)
(A,B,C,D) := (D, t<<<i,B,C)end(A,B,C,D) := (АА+A, ВВ+B, СС+C, DD+D)-------------------------------------------------------------- ---------------
(АА,ВВ,СС,DD) := (C16, 416, 616, 516)i := 0
t := C16 + F(416, 616, 516) + 716 = C16 + 516 + 716 = 816
F(416, 616, 516) = (0100 and 0110) or (1011 and 0101) = 0101 = 516
(A,B,C,D) := (516, 816<<<0, 416, 616) = (516, 816, 416, 616)
18
Задача 2 /решение/
(АA, ВB, СC, DD) = (C16, 416, 616, 516) ; М=FAB17E6616
(АА,ВВ,СС,DD) := (A,B,C,D)for i := 0 to 3 dot := A + F(B,C,D) +Mi // F(B,C,D) = (B and C) or (notB and D)
(A,B,C,D) := (D, t<<<i,B,C)end(A,B,C,D) := (АА+A, ВВ+B, СС+C, DD+D)-------------------------------------------------------------- ---------------
(А,В,С,D) := (516, 816, 416, 616)i := 1
t := 516 + F(816, 416, 616) + E16 = 516 + 616 + E16 = 916
F(816, 416, 616) = (1000 and 0100) or (0111 and 0110) = 0110 = 616
(A,B,C,D) := (616, 916<<<1, 816, 416) = (616, 316, 816, 416)
19
Задача 2 /решение/
(АA, ВB, СC, DD) = (C16, 416, 616, 516) ; М=FAB17E6616
(АА,ВВ,СС,DD) := (A,B,C,D)for i := 0 to 3 dot := A + F(B,C,D) +Mi // F(B,C,D) = (B and C) or (notB and D)
(A,B,C,D) := (D, t<<<i,B,C)end(A,B,C,D) := (АА+A, ВВ+B, СС+C, DD+D)-------------------------------------------------------------- ---------------
(А,В,С,D) := (616, 316, 816, 416)i := 2
t := 616 + F(316, 816, 416) + 616 = 616 + 416 + 616 = 016
F(316, 816, 416) = (0011 and 1000) or (1100 and 0100) = 0100 = 416
(A,B,C,D) := (416, 016<<<2, 316, 816) = (416, 016, 316, 816)
20
Задача 2 /решение/
(АA, ВB, СC, DD) = (C16, 416, 616, 516) ; М=FAB17E6616
(АА,ВВ,СС,DD) := (A,B,C,D)for i := 0 to 3 dot := A + F(B,C,D) +Mi // F(B,C,D) = (B and C) or (notB and D)
(A,B,C,D) := (D, t<<<i,B,C)end(A,B,C,D) := (АА+A, ВВ+B, СС+C, DD+D)-------------------------------------------------------------- ---------------
(А,В,С,D) := (416, 016, 316, 816)i := 3
t := 416 + F(016, 316, 816) + 616 = 416 + 816 + 616 = 216
F(016, 316, 816) = (0000 and 0011) or (1111 and 1000) = 1000 = 816
(A,B,C,D) := (816, 216<<<3, 016, 316) = (816, 116, 016, 316)
21
Задача 2 /решение/
(АA, ВB, СC, DD) = (C16, 416, 616, 516) ; М=FAB17E6616
(АА,ВВ,СС,DD) := (A,B,C,D)for i := 0 to 3 dot := A + F(B,C,D) +Mi // F(B,C,D) = (B and C) or (notB and D)
(A,B,C,D) := (D, t<<<i,B,C)end(A,B,C,D) := (АА+A, ВВ+B, СС+C, DD+D)-------------------------------------------------------------- ---------------
(А,В,С,D) := (816, 116, 016, 316)
(A,B,C,D) := (C16+816, 416+116, 616+016, 516+316) (A,B,C,D) := (416, 516, 616, 816)
H(M) = 456816
Пример
M=example
e x a m p l e
ASCII 101 120 97 109 112 108 101
(2) 01100101 01111000 01100001 01101101 01110000 01101100 01100101
01100101 01111000 01100001 01101101 01110000 01101100 01100101 00111000
6 5 7 8 6 1 6 D 7 0 6 C 6 5 3 8
=6578616D706C653816 H(M)=814C16
M=Example =4578616D706C653816 H(M)=????????16