1 / 16

Еднопосочни Хаш функции

Еднопосочни Хаш функции. 1 . Основи Еднопосочната Хаш функция H ( M ) работи над произволно по дължина съобщение оригинал M . Тя връща фиксирана по дължина Хаш стойност h . h = H ( M ), където h е с дължина m .

Télécharger la présentation

Еднопосочни Хаш функции

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. Еднопосочни Хаш функции 1. Основи Еднопосочната Хаш функция H(M) работи над произволно по дължина съобщение оригинал M. Тя връща фиксирана по дължина Хаш стойност h. h = H(M),където h е с дължина m. Еднопосочната Хаш функция има допълнителни характеристики, които я правят еднопосочна: Дадено е M,лесно се определя h; Дадено е h, трудно се определя M,такова че H(M)= h; Дадено е M,трудно се намира друго съобщение M’,такова че H(M) = H(M’). В някои приложения еднопосочността не е адекватна и е необходимо друго изискване наречено collision-resistance – колизионна устойчивост. Дължина на еднопосочните Хаш функции Хашфункции от 64 бита са твърде малкиза да преживеят атаката на рождения ден. Повечето такива функции дават 128 бита Хаш. NIST, в нейния Secure Hash Standard (SHS), употребява 160-бита Хаш стойност. Атаката на рождения ден е по-трудна и изисква 280 случайни Хаша.

  2. Еднопосочни Хаш функцииПродължение Следният метод се предлага за да се генерира по-дълга Хаш стойност за зададена Хаш функция. (1)  Генерира се Хаш стойност на едно съобщение, употребявайки еднопосочна Хаш функция, описана в книгите. (2)  Предварително намиране на Хаш стойност на съобщението. (3)  Генерира се Хаш стойност последователно на съобщението и Хаш стойността. (4)  Създава се по-дълга Хаш стойност, съдържаща Хаш стойността от стъпка (1) свързана с Хаш стойността от стъпка (3). (5)  Повтарят се стъпки от (1) до (3) толкова пъти колкото се желае последователно. Преглед на еднопосочните Хаш функции Не е лесно да се проектира една функция, която приема един вход с произволна дължина камо ли пък еднопосочна. В реалния свят еднопосочните Хаш функции са изградени върху идеята за функция на компресията (свиването) - compression function . Изходите на тази функция е Хаш стойност с по-голяма дължина n на вход е с дължина m. Входовете на функцията на компресия е един блок на съобщение и изходът на предишните блокове от текст. Изходът е Хаш на всички блокове до този. Така че, Хаш на блок Miе hi = f(Mi,hi- 1)

  3. Еднопосочни Хаш функцииПродължение 2. Snefru Snefru дава Хашна съобщения с произволна дължина в 128-бита или 256 битови стойности. Първо съобщението се разбива на части всяка с дължина 512-m . (Стойността m е дължината на Хаш стойността.) Ако изходът е една 128-bit Хаш стойност, тогава частите са 384 бита дълги, ако изходът е 256-bit Хаш стойност - 256 бита дължина. Функцията H се основа на E, което е една обратима функция на блоковия шифър, която работи с 512-битови блокове. H е последните m бита на изхода на E подложено на XOR с първите m бита на входа на E. Секретността на Snefru се съдържа във функцията E, която прави данната случайна в няколко паса. Всеки пас е композиран от 64 случайни рунда. Всеки рунд употребява различен байт на данната като вход към един S-box; изходната дума на S-box се подлага на XOR с две съседни думи на съобщението. S-боксовете са конструирани по подобен начин на този на Khafre. Някои ротации се извършват също вътре. Оригиналният Snefru е проектиран за два паса. Криптоанализ на Snefru 3. N- Hash N-Hash е алгоритъм предложен от Nippon Telephone and Telegraph. N-Hash употребява 128-битов блок на съобщението, една усложнена рандомизираща функция подобна на тази на FEAL и произвежда 128-bit Хаш стойност.

  4. Еднопосочни Хаш функцииПродължение Хаш на всеки 128-битов блок е функция на блока и Хаш на предишния блок. H0 = I, където I е една начална случайна стойност Hi = g(Mi,Hi- 1) ⊕ Mi ⊕ Hi- 1 Една степен на обработка е показана на фигурата. Блокът на съобщението е разделен на четири 32-битови стойности. Предишната Хаш стойност също на четири 32-битови стойности. Функцията f е дадена на другата фигура. Функциите S0 и S1 са същите каквито са и на FEAL. S0(a,b) = ротация наляво на два бита ((a + b) mod 256) S1(a,b) = ротация наляво на два бита ((a + b + 1) mod 256) Изходът на една степен на обработка става вход на следвашата степен. След последната степен изходът се подлага на XOR с Mi и Hi-1, и тогава следващият блок е готов за да бъде подложен на Хаш функция.

  5. Еднопосочни Хаш функцииПродължение 4. MD4 MD4 е една еднопосочна функция проектирана от Ron Rivest. MD запазва Message Digest; алгоритъмът произвежда 128-битов Хаш. Rivest посочва своите проектантски цели за алгоритъма: • Security. Изчислително е невъзможно да се намерят две съобщения, които имат еднакви Хаш стойности. Никаква атака не е по-ефективна от атаката на грубата сила. • Direct Security. Секретността на MD4 не се основава на приемане като сложност на разделяне на множители. • Speed. MD4 е удобен за високоскоростни софтуерни приложения. Той се базира на просто множество от битови манипулации на 32-битови операнди. • Simplicity and Compactness. MD4 е толкова прост колкото е възможно, без големи структури на данни или усложнени програми. • Favor Little-Endian Architectures. MD4 е оптимизиран за микропроцесорни архитектури (специално за Intelмикропроцесори); по-големи и по-бързи компютри правят необходими и транслации. 5. MD5 MD5 е една подобрена версия на MD4. Въпреки че е по-сложен в сравнение с MD4, той е подобен и също произвежда 128-bit Хаш. След някои начални обработки, MD5 обработва входния текст на 512-битови блокове, разделени на 16 32-битови подблока. Изходът на алгоритъма е едно множество от 4 32-битови блока, които се свързват за да образуват една единствена 128-битова Хаш стойност. Инициализират се четири 32-битови променливи: A = 0x01234567 B = 0x89abcdef C = 0xfedcba98 D = 0x76543210 Те се наричат верижни променливи - chaining variables.

  6. Еднопосочни Хаш функцииПродължение Има четири нелинейни функции, една употребена във всяка операция (различна функция за всеки рунд). F(X,Y,Z) = (X ⊥ Y) ⊦ ((¬ X) ⊥ Z) G(X,Y,Z) = (X ⊥ Z) ¬ (Y (¬ Z)) H(X,Y,Z) = X ⊕ Y ⊕ Z I(X,Y,Z) = Y ⊕ (X ⊦ (¬ Z)) (⊕ е XOR,⊥ е AND, ⊦ е OR и ¬ е NOT.) Ако Mj представя j-ти подблок на съобщението (от 0 до 15), и <<< s представя едно изместване наляво на s бита, четирите оператора са: FF(a,b,c,d,Mj,s,ti) означава a = b + ((a + F(b,c,d ) + Mj + ti) <<< s) GG(a,b,c,d,Mj,s,ti) означава a = b + ((a + G(b,c,d ) + Mj + ti) <<< s) HH(a,b,c,d,Mj,s,ti) означава a = b + ((a + H(b,c,d) + Mj + ti) <<< s) II(a,b,c,d,Mj,s,ti) означава a = b + ((a + I(b,c,d ) + Mj + ti) <<< s)

  7. Еднопосочни Хаш функцииПродължение Четирите рунда (64 стъпки) изглеждат така: Рунд 1: FF (a, b, c, d, M0, 7, 0xd76aa478) FF (d, a, b, c, M1, 12, 0xe8c7b756) FF (c, d, a, b, M2, 17, 0x242070db) FF (b, c, d, a, M3, 22, 0xc1bdceee) FF (a, b, c, d, M4, 7, 0xf57c0faf) FF (d, a, b, c, M5, 12, 0x4787c62a) FF (c, d, a, b, M6, 17, 0xa8304613) FF (b, c, d, a, M7, 22, 0xfd469501) FF (a, b, c, d, M8, 7, 0x698098d8) FF (d, a, b, c, M9, 12, 0x8b44f7af) FF (c, d, a, b, M10, 17, 0xffff5bb1) FF (b, c, d, a, M11, 22, 0x895cd7be) FF (a, b, c, d, M12, 7, 0x6b901122) FF (d, a, b, c, M13, 12, 0xfd987193) FF (c, d, a, b, M14, 17, 0xa679438e) FF (b, c, d, a, M15, 22, 0x49b40821)

  8. Еднопосочни Хаш функции Продължение Константите ti, са избрани както следва: • В стъпка i, ti е цялата част на 232*abs(sin(i)), където i е в радиани. • След всичко това a, b, c и d са прибавени към A, B, C, D, респективно и алгоритъмът продължава със следващия блок данна. Крайният изход е свързване на A, B, C и D. Секретност на MD5 Ron Rivest извежда подобренията на MD5 от MD4 : 1.  Четвърти рунд е прибавен. 2.  Всяка стъпка има уникална адитивна константа. 3.  Функцията Gв 2-ри рунд е променена от ((X⊥ Y ) ⊦ (X⊥ Z ) ⊦ (Y⊥ Z ))на ((X⊥ Z ) ⊦ (Y⊥ ¬ Z ))за да направи Gпо-малко симетрична. 4.  Всяка стъпка сега добавя в резултата на предната стъпка. Това произвежда по-бърз лавинен ефект. 5.  Редът в който подблоковете на съобщението са достъпни в рундове 2 и 3 е променен, за да направи образците по-малко сходни. 6.  Лявото циклично изместване във всеки рунд е приблизително оптимизирано, за да се постигне бърз ефект на лавината. Четирите измествания употребени във всеки рунд са различни от едно употребено в другите рундове.

  9. Еднопосочни Хаш функции Продължение 6. MD2 MD2 е друга 128-bit еднопосочна функция проектирана от Ron Rivest. Тя заедно с MD5, е употребена в PEM протоколите. Секретността на MD2 е свързана с една случайна пермутация на байтове. Тази пермутация е фиксирана и зависима от числото π. S0, S1, S2,..., S255 е пермутацията. За да се подложи на Хаш функция едно съобщение M: (1)  Подпълване на съобщението с i байта така че резултантното съобщение е кратно на 16 байта дължина. (2)  Добавяне на 16-байта контролна сума към съобщението. (3)  Инициализация на един 48-byteблок: X0, X1, X2,..., X47. Поставяне на първите 16 байта за Xда са 0, вторите 16 байта за Xда бъдат първите 16 байта на съобщението и третите 16 байта на X да са XOR на първите 16 байта на X и вторите 16 байта на X. (4)  Свиващата функция е: t = 0 For j = 0 to 17 For k = 0 to 47 t = Xk XOR St Xk = t t = (t + j ) mod 256 (5)  Поставят се вторите 16 байта на Xда са вторите 16 байта на съобщението и третите 16 байта на Xда са XORна първите 16 байта на X и вторите 16 байта на X. Изпълнява се стъпка (4). Повтарят се стъпки (5) и (4) с всеки 16 байта на съобщението по ред. (6)  Изходът е първите 16 байта на X.

  10. Еднопосочни Хаш функции Продължение 7. Секретен Хаш алгоритъм (Secure Hash Algorithm - SHA) Описание на SHA Първо съобщението се подпълва за да се направи кратно на 512 бита дължина. Подпълването е същото като на MD5: първо се добавя една единица, след това много нули толкова колкото е необходимо да се направи 64 бита парче за кратност на 512 и накрая едно 64-битово представяне на дължината на съобщението преди подпълването. Пет 32-битови променливи (MD5 има 4 променливи, но този алгоритъм изисква изчисляване на 160-битов Хаш) са инициализирани както следва: A = 0x67452301 B = 0xefcdab89 C = 0x98badcfe D = 0x10325476 E = 0xc3d2e1f0 Главният цикъл на алгоритъма започва. Той изчислява 512 бита едновременно и продължава за следващите 512-битови блока, колкото са в съобщението.

  11. Еднопосочни Хаш функции Продължение Главният цикъл има 4 рунда с по 20 операции във всеки (MD5 има 4 рунда с 1 по 16 операции). Всяка операция изпълнява нелинейна функция на три от пет променливи a, b, c, d и e, и тогава се прави изместване подобно на MD5. Множеството от нелинейни функции на SHA е: ft(X,Y,Z ) = (X⊥ Y) ⊦ ((¬ X )⊥ Z), for t = 0 to 19. ft (X,Y,Z ) = X ⊕ Y ⊕ Z, for t = 20 to 39. ft (X,Y,Z ) = (X⊥ Y ) ⊦ (X⊥ Z) ⊦ (Y⊥ Z), for t = 40 to 59. ft (X,Y,Z ) = X ⊕ Y ⊕ Z, for t = 60 to 79. Четири константи са употребени в алгоритъма: Kt = 0x5a827999, за t = 0 to 19. Kt = 0x6ed9eba1, за t = 20 to 39. Kt = 0x8f1bbcdc, за t = 40 to 59. Kt = 0xca62c1d6, за t = 60 to 79. (0x5a827999 = 21/2 /4, 0x6ed9eba1 = 31/2 /4, 0x8f1bbcdc = 51/2 /4 и 0xca62c1d6 = 101/2 /4; всичко 232 пъти ) Блокът на съобщението е трансформиран от 16 32-битови думи (M0 до M15 ) до 80 32-битови думи (W0 до W79) употребени в следващия алгоритъм: Wt = Mt, for t = 0 to 15 Wt = (Wt- 3 ⊕ Wt - 8 ⊕ Wt - 14 ⊕ Wt - 16 ) <<< 1, for t = 16 to 79.

  12. Еднопосочни Хаш функцииПродължение Ако t е номерът на операцията (от 0 до 79), Wt представя t –ти подблок на разширеното съобщение и <<< s – изместването наляво на s бита, тогава главният цикъл изглежда така: FOR t = 0 to 79 TEMP = (a <<< 5) + ft (b,c,d) + e + Wt + Kt e = d d = c c = b <<< 30 b = a a = TEMP 8. RIPE-MD RIPE-MD е развит за European Community’s RIPE project. Алгоритъмът е вариант на MD4, проектиран да бъде резистентен на известни криптографски атаки и дава 128- битова Хаш стойност. 9. HAVAL HAVAL е с променлива дължина на еднопосочната Хаш функция. Той е модификация на MD5. HAVAL обработва съобщенията в блокове от 1024 бита, двойно в сравнение с MD5 и може да дава дължини 128, 160, 192, 224 или 256 бита.

  13. Еднопосочни Хаш функцииПродължение 10. Еднопосочни Хаш функции, употребявани в симетрични блокови алгоритми. Една употребявана мярка за Хаш функцията се основана на блоков шифър е Хаш скорост - hash rate, или броят на n-битовите блокове на съобщението, където n е размерът на блока в алгоритъма, обработван при шифрирането. Високата скорост на Хаш по-бърз алгоритъм. Схеми с Хаш дължини равни на размера на блока Общата схема како следва е на фигурата: H0 = IH, където IH е една случайна начална стойност Hi = EA(B) ⊕ C . Където A, B и C могат да бъдат или Mi, Hi - 1, (Mi ⊕ Hi - 1), или една константа (приемайки да бъде 0). H0 е някаква случайна начална стойност: IH. Съобщението е разделено на части с размер на блокове, Mi, и се обработват индивидуално. Има и някакъв вид на MD- подсилване, защото подпълваща процедура е употребена в MD5 и SHA.

  14. Еднопосочни Хаш функцииПродължение Тази схема е разбита. Hi = EMi(Hi - 1) Davies и Price предлагат вариант, който циклира входното съобщение през алгоритъма два пъти. Атаката на Coppersmith работи върху този вариант при неголеми изчислителни възможности. Друга несекретна схема е: Hi = EMi⊕ Hi- 1 (Hi- 1) Тази схема е несекретна (c е една константа): Hi = Ec (Mi ⊕ Hi - 1) ⊕ Mi ⊕ Hi- 1

  15. Еднопосочни Хаш функцииПродължение 11. Употреба на алгоритми с публичен ключ Възможно е да се използват алгоритми с публичен ключ във верижен режим като една еднопосочна Хаш функция. Ако се отстрани частния ключ, разбиването на Хаш ще е трудно като четене на съобщението без частен ключ. Тук е даден един пример на употреба на RSA. Ако M е съобщение за хашване, n е продуктът на две прости числа p и q, и e друго голямо число относително просто на (p - 1)(q - 1), тогава Хаш функцията H(M ) ше бъде H(M ) = Me mod n Едно по-лесно решение ще бъде употребата на едно строго просто число като модул - modulus p. Тогава: H(M ) = Me mod p Разбиването на този проблем е трудно колкото намирането на дискретен логаритъм от e. Проблемът с този алгоритъм е, че е по-бавен от другите разглеждани тук. 12. Кодове за удостоверяване на съобщения Кодът за удостоверяване на съобщение или MAC, е зависима от ключа еднопосочна Хаш функция разгледана преди това. MAC-те имат същите особености като еднопосочните Хаш функции, но включват един ключ. Само някой с идентичен ключ може да провери Хаша. Това е много приложимо за да произведе удостоверяване без секретност. MAC-те могат да се употребяват за файлове между потребители. Те са приложими и когато един потребител определя дали файловете са променяни или срещу вируси. Потребителят може да определи MAC на неговите файлове и да съхрани стойността в една таблица. Ако потребителят употребява вместо това една еднопосочна Хаш функция, тогава вирусът може да определи нова Хаш стойност след инфекцията и да замести входната таблица. Вирусът не може да направи това с един MAC, защото вирусът не знае ключа.

  16. Еднопосочни Хаш функцииПродължение Алгоритъм за удостоверяване на съобщение (Message Authenticator Algorithm - MAA) Този алгоритъм е един на ISO стандарт. Той дава един Хаш от 32 бита и е проектиран за компютри с бързи инструкции за умножение. v = v <<< 1 e = v ⊕ w x = ((((e + y ) mod 232) ⊦ A⊥ C) * (x ⊕ Mi)) mod 232 - 1 y = ((((e + x) mod 232) ⊦ B⊥ D) * (y ⊕ Mi)) mod 232 - 2 Повтаряйки това за всеки блок на съобщението Mi, и резултантният Хаш се подлага на XOR с x и y. Променливите v и e са определени от ключа. A, B, C и D са константи. Този алгоритъм е вероятно в широка употреба, но не е много сложен и се употребява отдавна.

More Related