22
Хеш-функции в криптографията

Хеш-функции в криптографията

  • Upload
    paco

  • View
    53

  • Download
    0

Embed Size (px)

DESCRIPTION

Хеш-функции в криптографията. Определение. Х еш-функция (или хеш-алгоритъм) се нарича метод, който преобразува данни в число. Тези функции осигуряват начин за създаване на цифрови „отпечатъци” от всякакъв тип данни. - PowerPoint PPT Presentation

Citation preview

Page 1: Хеш-функции в криптографията

Хеш-функции в криптографията

Page 2: Хеш-функции в криптографията

2

Определение

Хеш-функция (или хеш-алгоритъм) се нарича метод, който преобразува данни в число.

Тези функции осигуряват начин за създаване на цифрови „отпечатъци” от всякакъв тип данни.

В криптографията тези „отпечатъци” често са наричани цифрови сигнатури или хеш-стойности, които обикновено се представят в шетнайсететична бройна система и служат за контролиране целостта на криптираните съобщения.

Хеш-функциите често се използват за хеширане на потребителски пароли и съхранение на хешовете, вместо самите пароли.

Page 3: Хеш-функции в криптографията

3

Свойства на хеш-функциитеИзискванията към хеш-функциите използвани в криптографията са:

1/ За данни с произволна дължина хеш-стойностите имат фиксирана дължина.

2/ H(x) е относително лесно да се изчисли за всяко х.

3/ H(x) е еднопосочна функция (one-way function) или функция със задна врата (trapdoor function).

4/ Н(х) е силно защитена от колизии, т.е. невъзможно е чрез изчисления да се намерят произволни х и у, за които да е изпълнено Н(х) = Н(у).

Page 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 бита чрез добавяне на единица и необходимия брой нули.

Page 5: Хеш-функции в криптографията

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

Page 6: Хеш-функции в криптографията

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

Page 7: Хеш-функции в криптографията

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

Page 8: Хеш-функции в криптографията

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.

Page 9: Хеш-функции в криптографията

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)))

Page 10: Хеш-функции в криптографията

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

Page 11: Хеш-функции в криптографията

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.

Page 12: Хеш-функции в криптографията

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)

Page 13: Хеш-функции в криптографията

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)

Page 14: Хеш-функции в криптографията

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)

Page 15: Хеш-функции в криптографията

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)

Page 16: Хеш-функции в криптографията

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)

Page 17: Хеш-функции в криптографията

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)

Page 18: Хеш-функции в криптографията

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)

Page 19: Хеш-функции в криптографията

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)

Page 20: Хеш-функции в криптографията

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)

Page 21: Хеш-функции в криптографията

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

Page 22: Хеш-функции в криптографията

Пример

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