1 / 22

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

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

paco
Download Presentation

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

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  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’) = e1821c366558728f70e054fbf9db7b64 H(‘Example’) = e31846f587fe2f61edd99ad2939876b5

  8. Еднопосочна хеш-функция MD5 • MD5 е развитие на 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 andnot Z) H(X, Y, Z) = X xor Y xor Z I(X, Y, Z) = Y xor (X ornot Z) Изчислете всяка от функциите, като използвате следните аргументи: (a) X := 0110, Y := 1111, Z := 0011 (b) X := 1010, Y := 1001, Z := 1011 (c) X := 0111, Y := 0001, Z := 1001

  11. Задача 2 • Изчислете 16 битовата хеш-сигнатура на 32 битово съобщение, зададено като 16-тично число, като използвате 1-ва итерация на алгоритъма MD4, преработена по следния начин: • (АА,ВВ,СС,DD) := (A,B,C,D) • for i := 0 to 3 do • t := 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 do t := 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 do t := 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 do t := 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 do t := 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 do t := 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 do t := 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 do t := 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 do t := 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 do t := 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 do t := 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

  22. Пример M=example =6578616D706C653816 H(M)=814C16 01100101 01111000 01100001 01101101 01110000 01101100 01100101 00111000 6 5 7 8 6 1 6 D 7 0 6 C 6 5 3 8 M=Example =4578616D706C653816 H(M)=????????16

More Related