Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Kryptografické hashovací funkce © 2001, Kamil Toman.

Podobné prezentace


Prezentace na téma: "Kryptografické hashovací funkce © 2001, Kamil Toman."— Transkript prezentace:

1 Kryptografické hashovací funkce © 2001, Kamil Toman

2 Hashovací funkce ● Hashovací funkcí rozumíme funkci h, která mapuje řetězce libovolné délky na řetězce o pevné délce n bitů: h: R→D, kde |D| > |R| ● Krácení (compression) – h mapuje vstup x na h(x) o délce n bitů ● Snadný výpočet (computability) – pro libovolné x, h(x) je snadno spočitatelná ● Existence kolizí

3 Funkční klasifikace ● Kódy pro detekci změn (MDC, modification detection codes) – Obraz zprávy má dobře reprezentovat původní obsah – Navíc požadavek na: ● Jednocestnost (one-wayness) ● Odolnost vůči kolizím (collision resistant) ● Autentikační kódy (MAC, message authentication codes) – Mají kromě integrity dat zaručit i odkud zpráva pochází – Speciální podtřídou jsou klíčované hashovací fce

4 Základní vlastnosti ● Preimage resistance (odolnost vůči získání předobrazu) – Nesnadnost získání x takového, že h(x) = y pro dané y ● 2 nd -preimage resistance (odolnost vůči získání jiného předobrazu) – Nesnadnost získání x´ k danému vstupu x takového, že h(x) = h(x´) ● Collision resistance (odolnost vůči kolizím hashovací funkce) – Nesnadnost nalezení x,x´ takových, že h(x) = h(x´)

5 Základní vlastnosti ● Jednocestná hashovací funkce (One-Way Hash Function, OWHF) – Preimage resistance, 2 nd -preimage resistance, krácení ● Hashovací funkce odolná vůči kolizím (Collision Resistant Hash Function, CRHF) – 2 nd -preimage resistance, collision resistance, krácení ● MAC – rodina funkcí parametrizovaných (tajným) klíčem k – Pro dané k a libovolné x, h(x) je snadno spočitatelné – h k (x) mapuje libovolné x na n-bitový výstup – Computation resistance – pro jeden nebo více párů (x, h k (x)) je “težké” spočíst (x, h k (x)) pro nějaké x ≠ x i

6 Jednocestnost ● Jednocestná funkce (One-Way Function, OWF) – Je taková funkce f, kde pro všechna x, f(x) je snadno spočitatelná ale je “těžké” najít x tž. f(x')=y pro nějaké y z oboru R(f). ● Na rozdíl od OWHF tady není požadavek na 2 nd -preimage resistance, možnost libovolně dlouhého (konečného) vstupu ani na krácení. ● Pozn.: žádné dokazatelně OWF funkce nejsou známé (bez dalších předpokladů). Existují jen “kandidátské” funkce na OWF v tom smyslu, že jejich vyřešení vede na NP-úplný problém. P ● Pozn.: Existence OWF by stačila k důkazu P ≠ NP.

7 Další požadované vlastnosti ● Nekorelovanost vstupních a výstupních bitů (kvůli statistické kryptoanalýze). ● Near-collision resistance – nesnadnost nálezu x, x' takových, že h(x), h(x') se liší jen v malém počtu bitů. ● Lokální preimage resistance – odvození části vstupu x, by ze znalosti h(x) mělo trvat alespoň 2 t-1 operací pro t-bitový vstup. ● Pozn.: Z 2 nd -preimage resistance neplyne image resistance. (Triviálně platí např. pro identickou funkci a bijekce)

8 Motivace ● Samotné šifrování nezajišťuje integritu dat – Blokové šifry nejsou odolné proti přeuspořádání – Data bez dalších přidaných informací nelze verfikovat – Možnost bitové manipulace (např. Díky informacím získaným ze statistické kryptoanalýzy) ● Na rozdíl od běžných chyb vzniklých šumem na přenosových cestách potřebujeme k detekci integrity dat při šifrování něco víc. ● Používané metody – C = E k (x, h(x)) – C = E k (x, h k' (x))

9 Příklad (draft US Federal Standard 1026) ● CBC x=x 1...x t s klíčem k, ochrana integrity hashovací funkcí. h(x)= ⊕ i t = 1 x i. Výsledkem šifrování je c 0 =E k (x i ⊕  c i-1 ), 1 ≤ i ≤ t+1. ● Bez manipulace je dešifrovaný text x i =c i-1 ⊕  D k (c i ). Označíme c i ' přijaté (teoreticky modifikované) bloky šifry, x i ' výsledek dešifrování. h(x') = ⊕ i t = 1 x i ' = ⊕ i t = 1 (c i-1 ' ⊕  D k (c i ')) = = IV ⊕  ( c i ') ⊕ ( ⊕ i t = 1 D k (c i ')). ● h(x') se má rovnat x t ' + 1 ( = c t ' ⊕  D k (c t+1 ') ), což je totéž jako S = h(x') ⊕ x t ' + 1 = 0. ● Zjevně ale c i ' lze pro 1 ≤ i ≤ t libovolně permutovat.

10 Obecná konstrukce hashovací funkce ● OWHF dávající n-bitový výstup lze zlomit (najít kolizi) na 2 n/2 operací (birthday attack). ● Chceme zlepšit na 2 n operací – potřeba 2n-bitového výstupu. ● První nástřel: Do výstupu iterované OWHF h zapíšeme dvě poslední zřetězené proměnné H t-1, H t namístno jenom H t. To nefunguje – x t a H t lze zafixovat a stačí hledat kolizi funkce h pro H t-1.

11 Merkleova meta-metoda pro hashování ● Vstup: funkce f odolná vůči kolizím. ● Výstup: iterovaná CRHF h odolná vůči kolizím ● Vstup x rozdělit na t bloků x 1,...,x t o r bitech, poslední blok zleva doplnit nulami na r bitů, provést MD-posílení (připsat na konec vstupní zprávy počet bitů mod 2 r ). ● Výpočet n-bitového výstupu zprávy x: h(x) = H t+1 = f(H t || x t+1 ); H 0 = 0, H i = f(H i-1 || x i ). ● Jiná možnost: kaskádování hashovacích funkcí – pro dvě CRHF h 1 a h 2 platí, že h(x) = h 1 (x) || h 2 (x) je CRHF.

12 Hashovací funkce založené na CBC ✔ Možnost využití už existujícího (hw i sw) pro CBC ✗ Nevýhody: – Neví se, jaké vlastnosti musí bloková šifra splňovat pro bezpečnou konstrukci hashovací funkce (jestli stačí odolnost proti plaintext útoku apod.). – Invertibilita – Slabé a poloslabé klíče,... ● Pro ideální funkce (CBC se chová jako náhodná mapovací funkce) existuje několik dokazatelně “bezpečných” metod pro konstrukci hashovací funkce.

13 MDC (jednoduchá délka)

14 MDC-2 (dvojitá délka)

15 MDC-4 (dvojitá délka)

16 MD hashovací funkce ● Většina dnes používaných kryptografických hashovacích funkcí vychází z Message Digest (MD) algoritmů, především z verze 4. ● MD4 byla navržena speciálně s ohledem na rychlost zpracování na 32bitových procesorech. ● Pracuje se po jednotlivých 32-bitových slovech, little-endian (na nejnižší adrese je nejméně významný byte). ● Ideální odolnost MD algoritmů proti kolizím je 2 n/2 pro n- bitový výstup.

17 MD4 ● Vstupem je bitový stream x o b bitech (b ≥ 0). ● Zpracovávají se bloky o r = 512 bitech. ● Výstupem je 128-bitový hash kód. ● V jednotlivých kolech provádí operace: – f(u,v,w) = uv  (~u)w – g(u,v,w) =uv  uw  vw – h(u,v,w) = u ⊕ v ⊕ w

18 MD4 - inicializace ● Nadefinují se IV h: h 1 = 0x , h 2 = 0xefcdab89, h 3 = 0x98badcfe, h 4 = 0x ● Aditivní konstanty: y = 0, y = 0x5a (~2), y = 0x6ed9eba1 (~3) ● Definuje se pořadí slov z: z[0..15] = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15], z[16..31] = [0,4,8,12,1,5,9,13,2,6,10,14,3,7,11,15], z[32..47] = [0,8,4,12,2,10,6,14,1,9,5,13,3,11,7,15]. ● Definují se rotace (doleva) s: s[0..15] = [3,7,11,19,3,7,11,19,3,7,11,19,3,7,11,19], s[16..31] = [3,5,9,13,3,5,9,13,3,5,9,13,3,5,9,13], s[32..47] = [3,9,11,15,3,9,11,15,3,9,11,15,3,9,11,15].

19 MD4 - předzpracování ● Vstup x se po rozdělí do  b / r  bloků o r (=512b, 16 slov) bitech, připíše se jednička a doplní nulami na r-64 bitů (jednoznačná vycpávka), do zbylého prostoru se zapíše MD-posílení b mod 2 64 (little-endian). ● Inicalizují se vstupní hodnoty H: (H 1, H 2, H 3, H 4 ) = (h 1, h 2, h 3, h 4 )

20 MD4 - zpracování vstupu ● Překopíruj všech 16 slov do pomocného pole X – little endian ● Inicializace: (A, B, C, D) = (H 1, H 2, H 3, H 4 ) ● Funkce pro jednotlivá kola: op = (f, g, h) f(u,v,w) = uv  (~u)w g(u,v,w) = uv  uw  vw h(u,v,w) = u ⊕ v ⊕ w ● Pro všechny 3 kola (0 ≤ i ≤ 2), pro 0 ≤ j ≤ 15, proveď: t = A + op i (B, C, D) + X[ z j ] + y j, (A, B, C, D) = (D, t s j, B, C) ● (H 1, H 2, H 3, H 4 ) = ((H 1 + A), (H 2 + B), (H 3 + C), (H 4 + D)) ● Výsledkem celé MD4 je poslední blok: H 1 || H 2 || H 3 || H 4

21 Slabiny MD4 ● Byly nalezeny kolize v prostoru hash kódů 2 20 ke kompresní funkci. ● Předpokládá se úspěšný útok na pre-image resistance v čase menším než ● Již není považována za bezpečnou.

22 MD5 ● Konzervativní varianta MD4 (rychlostně slabší). ● Přidáno 4. kolo o 16ti krocích. ● Funkce ve druhém kole byla nahrazena jednodušší: g'(u,v,w) = uv  u(~w) ● Bitové posuny se v jednotlivých krocích liší. ● Aditivní konstanty jsou unikátní pro každé kolo. ● V každém kroku se připočítá výsledek z minulého kola. ● Změnilo se pořadí bytů ve druhém a třetím kole. ✗ Změny byly navrženy ještě před útokem na kompresní funkci MD4.

23 MD5 – inicializace ● Jako u MD4, s následujícími modifikacemi ● Redefinice y j = abs (sin (j + 1)), 0 ≤ j ≤ 63 ● Redefinice z: z[16..31] = [1,6,11,0,5,10,15,4,9,14,3,8,13,2,7,12], z[32..47] = [5,8,11,14,1,4,7,10,13,0,3,6,9,12,15,2], z[48..63] = [0,7,14,5,12,3,10,1,8,15,6,13,4,11,2,9]. ● Redefinice s: s[0..15] = [7,12,17,22,7,12,17,22,7,12,17,22,7,12,17,22], s[16..31] = [5,9,14,20,5,9,14,20,5,9,14,20,5,9,14,20], s[32..47] = [4,11,16,23,4,11,16,23,4,11,16,23,4,11,16,23], s[48..63] = [6,10,15,21,6,10,15,21,6,10,15,21,6,10,15,21].

24 MD5 – výpočet ● Předzpracování zůstává stejné jako u MD4. ● Funkce pro jednotlivá kola: op = (f, g', h, k), f(u,v,w) = uv  (~u)w g'(u,v,w) = uv  u(~w) h(u,v,w) = u ⊕ v ⊕ w k(u,v,w) = v ⊕ (u  ~w) ● Pro všechny 4 kola (0 ≤ i ≤ 3), pro 0 ≤ j ≤ 15, proveď: t = A + op i (B, C, D) + X[z j ] + y j, (A, B, C, D) = (D, B + (t s j ), B, C) ● (H 1, H 2, H 3, H 4 ) = ((H 1 + A), (H 2 + B), (H 3 + C), (H 4 + D)) ● Výsledkem je poslední blok H 1 || H 2 || H 3 || H 4 (stejné s MD4).

25 Slabiny MD5 ✗ Pro MD5 byly zjištěny pseudo-kolize kompresní funkce (pro náhodné IV). Pro celý algoritmus zatím kolize nalezeny nebyly. Celkově se MD5 pokládá za méně bezpečnou, namísto zvýšení počtu bitů výstupu se doporučuje použít jinou metodu (SHA-256, RIPEMD-160).

26 SHA (NIST) ● Odvozeno od MD4. ● Počet bitů rozšířen na 160, počet 32-bitových zřetězených proměnných byl zvětšen ze 4 na 5. ● Kompresní funkce má o 1 kolo víc, každé kolo má 20 kroků namísto původních 16ti. ● Používá nové vstupní hodnoty (IV). ● 16 slov je expandováno před zpracováním na 80. ● Funkce používá celkem pět nenulových aditivních konstant. ● Konvence je big-endian.

27 Slabiny SHA, SHA-1 ● V závěrečné fázi schvalování byl algoritmus pozměněn – byla přidána dodatečná rotace vlevo do každého z prováděných kol kompresní funkce (http://csrc.nist.gov/fips/fip180-1.txt). ● V Srpnu na Crypto '98 byla nejspíš odhalen faktický důvod této změny – Differential collisions (pravděpodobně podobné útoku na RC5 statistickou kryptoanalýzou). ● Nový návrh, SHA-1, na rozdíl od předcházejícího likviduje zarovnání bitů vstupu x po průchodu kompresní funkcí. Původní návrh NIST z Internetu potichu zmizel...

28 SHA-1 - inicializace ● Nadefinují se IV h:  h 1... h 4 jako MD4), h 5 = 0xc3d2e1f0. ● Aditivní konstanty y pro jednotlivá kola: y 1 = 0x5a827999, y 2 = 0x6ed9eba1, y 3 = 0x8f1bbcdc, y 4 = 0xca62c1d6. ● Žádné zvláštní pořadí přístupu k jednotlivým slovům ani bitových rotací se nedefinuje.

29 SHA-1 – výpočet ● Předzpracování zůstává stejné jako u MD4, inicializuje se všech 5 zřetězených proměnných. ● Funkce pro jednotlivá kola: op = (f, h, g, h), f(u,v,w) = uv  (~u)w g(u,v,w) = uv  uw  vw h(u,v,w) = u ⊕ v ⊕ w ● Každý blok 16ti slov rozšiř na 80 slov: 16 ≤ j ≤ 79, X j = (X j-3 ⊕ X j-8 ⊕ X j-14 ⊕ X j-16 ) 1 ● Pro všechny 4 kola (0 ≤ i ≤ 3), pro 0 ≤ j ≤ 19, proveď: t = (A 5) + op i (B, C, D) + E + X j+20i + y i, (A, B, C, D, E) = (t, A, B 30, C, D) ● (H 1, H 2, H 3, H 4, H 5 ) = ((H 1 +A), (H 2 +B), (H 3 +C), (H 4 +D), (H 5 +E)) ● Výsledkem je poslední blok H 1 || H 2 || H 3 || H 4 || H 5.

30 Bezpečnost SHA-1 ✔ Výstupní hash s rozšířenou délkou 160 bitů (brute-force) ✔ Expanze 16 slov před vlastním zpracováním (kryptoanalýza) Každé dva výstupy 16 slov se liší. Zvýšení počtu změněných bitů výstupu při malé změně vstupu. Uvádí se jako “bezpečnější” než MD5. Zdá se srovnatelná s RIPEMD-160.

31 SHA-256 ● Po přijetí Rijndaelova AES za budoucí šifrovací standard vznikly další modifikace SHA-1. ● Používá nové vstupní hodnoty (IV) - odpovídají desetinným částem druhých odmocnin prvních 8 prvočísel. ● V každém kole odlišná aditivní konstanta y – odpovídají desetinným částem třetích odmocnin prvních 64 prvočísel. ● Definuje 8 zřetězených proměnných. ● 16 slov vstupu expanduje jen na 64 namísto původních 80, ale složitějším způsobem. ● Obsahuje i drobné odlišnosti v jednotlivých kolech. ● Opět konvence big-endian.

32 SHA-256 – výpočet ● Předzpracování zůstává stejné jako u MD4, inicializuje se všech 8 zřetězených proměnných. ● Funkce pro expanzi: k(x) = (x 7) ⊕ (x 18) ⊕ (x 3) l(x) = (x 17) ⊕ (x 19) ⊕ (x 10) ● Každý blok 16ti slov rozšiř na 64 slov: 16 ≤ j ≤ 63, X j = ( k(X j-2 ) ⊕ X j-7 ⊕ l(X j-15 ) ⊕ X j-16 )

33 SHA-256 – výpočet ● Používané funkce: f(u,v,w) = uv ⊕ (~u)w g(u,v,w) = uv ⊕ uw ⊕ vw ● pro 0 ≤ j ≤ 63, proveď : t 1 = H +(E 6) ⊕ (E 11) ⊕ (E 25) + f(E,F,G) + y j + X j, t 2 =(A 2) ⊕ (A 13) ⊕ (A 22) + g(A, B, C) ● (A, B, C, D, E, F, G, H) = (t 1 + t 2, A, B, C, D + t 1,E, F, G ) ● (H 1, H 2,..., H 8 ) = ((H 1 + A), (H 2 + B),..., (H 8 + H)) ● Výsledkem je poslední blok H 1 || H 2 ||... || H 8.

34 SHA-512 ● SHA-512 je velmi podobná SHA-256, ale operuje ne s 32-bitovými, ale rovnou s 64-bitovými slovy (včetně IV). ● 16 slov expanduje podobným způsobem jako SHA-256: – Funkce pro expanzi: k(x) = (x 19) ⊕ (x 61) ⊕ (x 6) l(x) = (x 1) ⊕ (x 8) ⊕ (x 7) – Každý blok 16ti slov rozšiřuje na 80 slov: 16 ≤ j ≤ 63, X j = ( k(X j-2 ) ⊕ X j-7 ⊕ l(X j-15 ) ⊕ X j-16 ) ● Algoritmus je stejný, liší se jen v počtu rotovaných bitů: t 1 = H +(E 14) ⊕ (E 34) ⊕ (E 30) + f(E,F,G) + y j + X j, t 2 =(A 28) ⊕ (A 34) ⊕ (A 39) + g(A, B, C)

35 SHA-384 ● Je definována v stejně jako SHA-512 až na dvě věci: – Počáteční hodnoty – odpovídají desetinným částem druhých odmocnin prvočísla. – Výsledný hash kód je z původních 512 bitů zkrácen na 384 bitů (zleva). ● Pracuje se opět s 64-bitovými slovy.

36 RIPEMD-128 ● Odvozeno od MD4. ● Pracuje se opět po jednotlivých 32-bitových slovech, little- endian. ● Oproti MD4 o jedno kolo navíc, v kompresní funkci se používají jiné operace. ● Stejné IV jako SHA-1, ale little-endian. ● Operace na 16 vstupních slovech probíhají paralelně v levé a pravé řadě, které jsou na konci kompresní funkce spojeny. ➢ Nepoužívá se, byla nahrazena RIPEMD-160.

37 RIPEMD-160 ✔ Založená už na znalostech z analýzy MD4, MD5 a RIPEMD ● Téměř shodná s RIPEMD-128, ale navíc: – Přidává pátou 32-bitovou zřetězenou proměnnou. – Přidává další kolo. – Výstupní hash kód je rozšířený na 160 bitů.

38 RIPEMD-160 – inicializace ● Nadefinují se IV h jako u SHA-1 (ale little-endian). ● Aditivní konstanty y (levá řada) – druhé odmocniny 2,3,5,7: y 1 = 0, y 2 = 0x5a827999, y 3 = 0x5a827999, y 3 = 0x6ed9eba1, y 4 = 0xca62c1d6, y 5 = 0xca62c1d6. ● Aditivní konstanty y (levá řada) – třetí odmocniny 2,3,5,7: y 1 ' = 0x5a827999, y 2 = 0x5c4dd124,, y 3 ' =0x6d703ef3,, y 4 ' = 0x7a6d76e9, y 5 ' = 0. ● 4x vektor konstant z L, z R, s L, s R 80ti pořadí slov resp. hodnot pro bitové rotace. – 0.txt

39 RIPEMD-160 – výpočet ● Předzpracování zůstává stejné jako u MD4, inicializuje se všech 5 zřetězených proměnných. ● Funkce pro jednotlivá kola: op = (f, g, h, k, l), f(u,v,w) = u ⊕ v ⊕ w g(u,v,w) = uv  ((~u)w)) h(u,v,w) = (u  ~v) ⊕ w k(u,v,w) = uw  (u(~w)) l(u,v,w) = u ⊕ (v  ~w) ● Překopíruje se 16 slov do pomocného pole X (little endian). ● Pro všech 5 kol (0 ≤ i ≤ 4), proveď: – pro 0 ≤ j ≤ 15 (levá řada): t L = AL + op i (B L, C L, D L ) + X[z j+16i ] + y i, (A L, B L, C L, D L, E L ) = (E L, E L + (t s j ), B L, C L 10, D L )

40 RIPEMD-160 – výpočet – Paralelně pro 0 ≤ j ≤ 15 (pravá řada): t R = A R + op 3-i (B R, C R, D R ) + X[z j+16i ] + y i, (A R, B R, C R, D R, E R ) = (E R, E R + (t s j ), B R, C R 10, D R ) ● Složí se zřetězené proměnné: t = H 1, (H 1, H 2, H 3, H 4, H 5 ) = ((H 2 + C L + D R ), (H 3 + D L + E R ), (H 4 + E L + A R ), (H 5 + A L + B R ), (t + B L + C R )) ● Výsledkem je poslední blok H 1 || H 2 || H 3 || H 4 || H 5.

41 Další kryptografické hashovací funkce ● Především z rychlostních důvodů byly snahy o konstrukci iterovaných hashovacích funkcí s použitím aritmetických operátorů mod M. ● Praktické algoritmy např. v ISO/IEC (MASH-1, 2) ● Využívá se podobná technika jako u RSA (problém faktorizace M). ✗ 1024-bitové hash kódy, navrženo několik způsobů redukce délky ✗ Mnoho úspěšných útoků na předchozí drafty IEC. ✗ Míra bezpečnosti diskutabilní.

42 Srovnání rychlostí algoritmů ● Jméno Hash kód (b) Kol × Kroků Relativní rychlost ● MD × 16 1,0 MD × 16 0,68 RIPEMD × 16× 2 0,39 SHA × 20 0,28 RIPEMD × 16× 2 0,24 SHA × 20 0,12 SHA ×

43 Birthday attack ● Útok je nezávislý na použité hashovací funkci. ● Předpokládá se, že se výstupní hash kód chová jako náhodná proměnná s rovnoměrným rozdělením. ● Využívá faktu, že při výběru O(√N) z celkově N prvků je pravděpodobnost výskytu opakovaného prvku 1/2.

44 Yuvalův útok ● VSTUP: původní zpráva x 1, podvodná zpráva x 2, m-bitová OWHF h. ● VÝSTUP: zprávy x 1 ', x 2 ' vzniklé menšími modifikacemi x 1, x 2 takové, že h(x 1 ') = h(x 2 '). Vygeneruje se 2 m/2 menších modifikací x 1 ', x 2 '. Každá modifikace se zahashuje a podle hodnoty uloží do tabulky. Pro každou menší modifikaci x 2 ' se porovnává h(x 1 ') = h(x 2 ') (na porovnání se předpokládá O(1) operací).

45 Prakticky použitelná varianta Y. útoku ● Funkcí g(x 1, H) = x 1 ' označíme menší modifikace x 1 určené zahashovanou hodnotou H. ● Pro x 1 pevné můžeme psát g x1 (H) = x 1 ', budeme uvažovat g prosté zobrazení. ● Definujeme funkci r (paritu): h (g x1 (H))pro H s lichou bitovou paritou r(H) = 〈 h (g x2 (H))pro H se sudou bitovou paritou ● Pokud se h chová jako statisticky náhodná mapovací funkce, pak s pravděpodobností 1/2 se budou dva kolidující výstupy H, H' lišit v paritě. ● Hledáme páry h( x 1 ' ) = h( x 2 ' ) tzn. H( g x1 (H) ) = h( g x2 (H) ).

46 Další typy útoků ● Nalezení triviální pseudo-kolize (lze předejít MD-posílením): pro h(IV, x 1 || x 2 ) = f( f(IV, x 1 ), x 2 ) lze položit IV' = f(IV, x 1 ) ● Útok na kompresní funkci f lze jednoduše rozšířit s minimálním nárůstem složitosti na celou funkci h. Pseudo- kolize mají spíš teoretický význam, protože většina funkcí specifikuje pevné IV. ● Z nalezení pseudo-preimage lze získat preimage – útok potřebuje zprávu o alespoň 3 blocích a pro alespoň dva bloky musí být možný útok typu man in the middle. Pokud lze pseudo-preimage najít 2 s operacemi, pak lze najít preimage v 2 × 2 (2+s)/2 operacích. ● Útok typu correcting-chain: snaha najít x' = x * x 1 ' x 2 '... x t ' tak, že h(x') = H a x 2 '...x t ' jsou libovolné bloky. Lze použít proti MDC, je-li uhodnutelný klíč kompresní funkce.

47 Další typy útoků ● Útok typu man in the middle – funguje podobně jako Yuvalův útok s tím, že využívá mezivýsledky výpočtu (zřetězené prom.). ● Útoky na pevný bod funkce – snaha nalézt f(H i-1, x i ) = H i-1. ● Útoky na kompresní funkci MDC: – Invertibilní klíče – poruší se jednocestnost funkce. – Komplementarita – y = E k (x) ⇔ y' = E k' (x'). – Slabé a poloslabé klíče – Kolize klíčů – lze použít k rychlejšímu získání kolizí kompresní funkce

48 Zdroje ● Handbook of Applied Cryptography (A. Menezes, P. van Oorschot, S. Vanstone; CRC Press, 1996.) ● A Cryptographic Compendium (John J. G. Savard, 1999) ● FAQ About Today s Cryptography (RSA labs) ● Keying Hash Functions for Message Authentication (Mihir Bellare, Ran Canetti, Hugo Krawczyk, 1995) ● RFC 1320 (MD4, MIT) ● RFC 1321 (MD5, MIT) ● NIST (http://csrc.nist.gov/cryptval/shs.html) ● FIPS (http://www.itl.nist.gov/fipspubs/fip180-1.htm) ●


Stáhnout ppt "Kryptografické hashovací funkce © 2001, Kamil Toman."

Podobné prezentace


Reklamy Google