Kryptografické hashovací funkce © 2001, Kamil Toman.

Slides:



Advertisements
Podobné prezentace
Lineární klasifikátor
Advertisements

J. Pokorný 1 DOTAZOVACÍ JAZYKY slajdy přednášce DBI006 J. Pokorný MFF UK
Statistická indukce Teorie odhadu.
Stavový prostor. • Existují úlohy, pro které není k dispozici univerzální algoritmus řešení • různé hry • problém batohu, problém obchodního cestujícího.
SHA-1 Secure Hash Algorithm Martin Raichl. HASH  Hašovací funkce jsou silným nástrojem moderní kryptologie. Jsou jednou z klíčových kryptologických myšlenek.
Úvod do klasických a moderních metod šifrování Jaro 2008, 7. přednáška.
Asymetrická kryptografie
Aplikační a programové vybavení
PA081 Programování numerických výpočtů
Základy informatiky přednášky Kódování.
Genetické algoritmy. V průběhu výpočtu používají náhodné operace. Algoritmus není jednoznačný, může projít více cestami. Nezaručují nalezení řešení.
Algoritmy I Cvičení č. 4.
Principy překladačů Mezikód Jakub Yaghob.
Medians and Order Statistics Nechť A je množina obsahující n různých prvků: Definice: Statistika i-tého řádu je i-tý nejmenší prvek, tj., minimum = statistika.
FORMALIZACE PROJEKTU DO SÍŤOVÉHO GRAFU
Radek Horáček IZI425 – Teorie kódování a šifrování
REDUKCE DAT Díváme-li se na soubory jako na text, pak je tento text redundantní. Redundance vyplývá z:  některé fráze nebo slova se opakují  existuje.
A1PRG - Programování – Seminář Ing. Michal Operátory (2. část) 4 Verze
TMF045 letní semestr 2005/2006 II Časová propagace vlnové funkce na mřížce I. (práce s momentovou reprezentací) (Lekce II)
Dostupné z Metodického portálu ISSN: , financovaného z ESF a státního rozpočtu ČR. Provozováno Výzkumným ústavem pedagogickým v Praze.
Sémantická analýza Jakub Yaghob
Operační mody blokových šifer a hašovací algoritmy
Radim Farana Podklady pro výuku
KOMBINAČNÍ LOGICKÉ FUNKCE
Predikátová logika.
JavaScript Podmínky, cykly a pole.
Cvičení.
IGrid index Roman Krejčík. Obsah Motivace Prokletí dimenze Míry podobnosti IGrid, IGrid+ Experimentální porovnání.
Dokumentace informačního systému
Aplikační a programové vybavení
P-těžké, np-těžké a np-úplné problémy
Kompresní metoda ACB Associative Coder of Buyanovsky autor: George Buyanovsky připravil Tomáš Skopal podle knihy „Data Compression“ od D. Salomona, 1997,
SIGNÁLY A SOUSTAVY V MATEMATICKÉ BIOLOGII
Kompresní algoritmus LZW Dokumentografické informační systémy.
Rozpoznávání v řetězcích
Gradientní metody Metoda největšího spádu (volný extrém)
Šifrovací algoritmy EI4. DES – Data Encryption Standard  Soukromý klíč  56 bitů  Cca 7,2 x klíčů  Rozluštěn v roce 1997.
BIS Elektronický podpis Roman Danel VŠB – TU Ostrava.
Sylabus V rámci PNV budeme řešit konkrétní úlohy a to z následujících oblastí: Nelineární úlohy Řešení nelineárních rovnic Numerická integrace Lineární.
Digital Rights Managment Diplomová práce Petr Švenda MASARYKOVA UNIVERSITA Fakulta Informatiky Brno 06/2004
Radim Farana Podklady pro výuku
Feistlovy kryptosystémy Posuvné registry Lucifer DES, AES Horst Feistel Německo, USA IBM.
Hybridní kryptosystémy
McEllisova šifra.
McEllisova šifra. James Ellis( ) Clifford Cocks, Malcolm Williamson Alice Bob zpráva šum Odstranění šumu.
Bezpečnost systémů 2. RSA šifra *1977 Ronald Rivest *1947 Adi Shamir *1952 Leonard Adelman *1945 University of Southern California, Los Angeles Protokol.
Kontakty Webpage přednášky: – Slajdy (MS PowerPoint): –ftp://ulita.ms.mff.cuni.cz/predn/PRG017 Technické.
Informační bezpečnost VY_32_INOVACE _BEZP_16. SYMETRICKÉ ŠIFRY  Používající stejný šifrovací klíč jak pro zašifrování, tak pro dešifrování.  Výhoda.
Algoritmizace a programování Algoritmy 1 - Úvod. Základní pojmy Počítačový program Počítačový program zápis zdrojového kódu, kterému rozumí počítač zápis.
Reprezentace dat v počítači. základní pojmy  BIT označení b nejmenší jednotka informace v paměti počítače název vznikl z angl. BINARY DIGIT (dvojkové.
Složitost algoritmu Vybrané problémy: Při analýze složitosti jednotlivých algoritmů často narazíme na problém, jakým způsobem vzít v úvahu velikost vstupu.
WWW a HTML Základní pojmy Ivo Peterka.
Úvod do databázových systémů
Prezentace – X33BMI Petr PROCHÁZKA
Definiční obor a obor hodnot
Číslicová technika.
Operační výzkum Lineární programování Dopravní úloha nevyrovnaná.
ZAL – 3. cvičení 2016.
Název projektu: Moderní výuka s využitím ICT
Klasické šifry – princip substituce, transpozice
Feistlovy kryptosystémy
Příkazy cyklu (1) Umožňují vícekrát (nebo ani jednou) pro-vést určitý příkaz Jazyk C rozlišuje příkaz cyklu: s podmínkou na začátku: obecný tvar: while.
Úvod do klasických a moderních metod šifrování
Úvod do klasických a moderních metod šifrování
Různé algoritmy mají různou složitost
Cyklus for (1) Obecný tvar: for (výraz1; výraz2; výraz3) příkaz
ANALÝZA A KLASIFIKACE DAT
Hash převod vstupních dat do malého čísla fixní délka
HASH.
Definiční obory. Množiny řešení. Intervaly.
Transkript prezentace:

Kryptografické hashovací funkce © 2001, Kamil Toman

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í

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

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

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

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.

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)

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

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.

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.

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.

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.

MDC (jednoduchá délka)

MDC-2 (dvojitá délka)

MDC-4 (dvojitá délka)

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.

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

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].

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 )

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

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.

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.

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].

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

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

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.

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 ( ● 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...

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.

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.

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.

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.

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 )

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.

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)

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.

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.

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ů.

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

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 )

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.

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í.

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 ×

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.

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

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

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.

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

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 ( ● FIPS ( ●