Hašovací funkce, principy, příklady a kolize



Podobné dokumenty
Nedůvěřujte kryptologům

5. Hašovací funkce, MD5, SHA-x, HMAC. doc. Ing. Róbert Lórencz, CSc.

Vlastimil Klíma. Seminár Bezpecnost Informacních Systému v praxi, MFF UK Praha,

Crypto-World. Informační sešit GCUCMP. 11/ speciál

Operační mody blokových šifer a hašovací algoritmy. šifer. Bloková šifra. šifer. Útoky na operační modus ECB

III. Mody činnosti blokových šifer a hašovací funkce

vá ro ko Sý ětuše Kv

Základní definice Aplikace hašování Kontrukce Známé hašovací funkce. Hašovací funkce. Jonáš Chudý. Úvod do kryptologie

Ochrana dat Obsah. Výměna tajných klíčů ve veřejném kanálu. Radim Farana Podklady pro výuku. Kryptografické systémy s tajným klíčem,

zejména Dijkstrův algoritmus pro hledání minimální cesty a hladový algoritmus pro hledání minimální kostry.

Hashovací funkce. Andrew Kozlík KA MFF UK

Moderní kryptografie

SHA-3. Úvod do kryptologie. 29. dubna 2013

Základy moderní kryptologie - Symetrická kryptografie II.

StatSoft Odkud tak asi je?

GRAFY A GRAFOVÉ ALGORITMY

(Ne)popiratelnost digitálních podpisů. Cíl přednášky. Jazyková vsuvka

MATERIÁL PRO JEDNÁNÍ RADY MĚSTA PÍSKU DNE

Kombinatorický předpis

Informace, kódování a redundance

Andrew Kozlík KA MFF UK

Vícekriteriální hodnocení variant metody

EVROPSKÝ PARLAMENT. Výbor pro vnitřní trh a ochranu spotřebitelů

Regulární matice. Věnujeme dále pozornost zejména čtvercovým maticím.

Identifikace a autentizace

Karel Kohout 18. května 2010

3. přednáška Legislativa v telekomunikacích

Funkce zadané implicitně

Kapitola 11. Vzdálenost v grafech Matice sousednosti a počty sledů

Matice se v některých publikacích uvádějí v hranatých závorkách, v jiných v kulatých závorkách. My se budeme držet zápisu s kulatými závorkami.

Stavební bloky kryptografie. Kamil Malinka Fakulta informačních technologií

Pravděpodobnost a statistika

Etapy tvorby lidského díla

6. T e s t o v á n í h y p o t é z

Z á p i s z jednání Pracovního týmu RHSD pro vnitřní trh dne 26. srpna 2014 od hodin,

Staženo z ISAPu, Evidence revidovaných překladů (Databáze 3A) Dne ROZHODNUTÍ KOMISE. ze dne 15. června 2001

Jak pracovat s absolutními hodnotami

Zadání úloh. Úloha 2.1 Trojice. Úloha 2.2 Čerpadlo. (4b) (4b) matematicko-fyzikální časopis ročníkxiv číslo2

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY

VYSOKÁ ŠKOLA EKONOMICKÁ V PRAZE. Optimalizace trasy při revizích elektrospotřebičů

12. Bezpečnost počítačových sítí

212/2012 Sb. VYHLÁŠKA

Systémové elektrické instalace KNX/EIB (11. část) Ing. Josef Kunc

UNIVERSITA PALACKÉHO V OLOMOUCI PŘÍRODOVĚDECKÁ FAKULTA. KATEDRA MATEMATICKÉ ANALÝZY A APLIKACÍ MATEMATIKY školní rok 2009/2010 BAKALÁŘSKÁ PRÁCE

Tento text je stručným shrnutím těch tvrzení Ramseyovy teorie, která zazněla

PRAKTICKÉ KALKULACE 1: PŘÍKLAD (NEJEN O) SUPERMARKETU

Zabezpečení datových přenosů pomocí CRC

Práce s aplikací pro zpracování statistických výkonových výkazů

S poděkováním za Váš čas. Doc. RNDr. Markéta Martínková, Ph.D. proděkanka RNDr. Jana Rubešová, Ph.D. správce SIS

Poznámky k předmětu Aplikovaná statistika, 9.téma

Matematika v kryptografii. Doc. Ing. Karel Burda, CSc. FEKT VUT v Brně

TEZE K DIPLOMOVÉ PRÁCI

Součin matice A a čísla α definujeme jako matici αa = (d ij ) typu m n, kde d ij = αa ij pro libovolné indexy i, j.

Komentář k novele vyhlášky:

Manuál administrátora FMS...2

Teoretický základ a přehled kryptografických hashovacích funkcí

Kryptologie a kombinatorika na slovech. 6. března 2013

IB108 Sada 1, Příklad 1 Vypracovali: Tomáš Krajča (255676), Martin Milata (256615)

Univerzita Karlova v Praze Matematicko-fyzikální fakulta BAKALÁŘSKÁ PRÁCE. Martin Suchan. Porovnání současných a nových hašovacích funkcí

HUBRU - síťová a SAN infrastruktura, serverová infrastruktura, datové úložiště, slaboproudé rozvody

2000R1825 CS

2 Spojité modely rozhodování

A0M15EZS Elektrické zdroje a soustavy ZS 2011/2012 cvičení 1. Jednotková matice na hlavní diagonále jsou jedničky, všude jinde nuly

Digitální podepisování pomocí asymetrické kryptografie

Střední škola informačních technologií a sociální péče, Brno, Purkyňova 97. Vybrané části Excelu. Ing. Petr Adamec

Tento dokument je třeba brát jako dokumentační nástroj a instituce nenesou jakoukoli odpovědnost za jeho obsah

Elektronická spisová služba

KOMISE EVROPSKÝCH SPOLEČENSTVÍ. Návrh NAŘÍZENÍ EVROPSKÉHO PARLAMENTU A RADY

3. LIMITA A SPOJITOST FUNKCE

Digitální podepisování pomocí asymetrické kryptografie

DM4.3 odmagnetovací modul

PROCESOR. Typy procesorů

Digitální podepisování pomocí asymetrické kryptografie

Proudové šifry a posuvné registry s lineární zpětnou vazbou

Tranzistor polopatě. Tranzistor jako spínač

U S N E S E N Í. t a k t o : O d ů v o d n ě n í : I. Dosavadní průběh řízení

Seminář z IVT Algoritmizace. Slovanské gymnázium Olomouc Tomáš Kühr

Kryptografie, elektronický podpis. Ing. Miloslav Hub, Ph.D. 27. listopadu 2007

10. Editor databází dotazy a relace

PA159 - Bezpečnostní aspekty

3. Středoškolská stereometrie v anaglyfech

Mgr. Karel Pazourek. online prostředí, Operační program Praha Adaptabilita, registrační číslo CZ.2.17/3.1.00/31165.

Vysoká škola ekonomická v Praze

Metodická příručka pro učitele. InspIS SET modul školní testování

2. Matice, soustavy lineárních rovnic

Rozmístěte na šachovnici 6 6 čtyři tchýně 1 tak, aby se navzájem neohrožovaly a právě jedno volné pole zůstalo neohrožené.

Výzva k podání nabídky

Vybrané útoky proti hašovací funkci MD5

Certifikáty a jejich použití

A7B36SI2 Tematický okruh SI08 Revidoval: Martin Kvetko

ISPOP 2016 PRŮVODCE PRO VYPLNĚNÍ FORMULÁŘE IRZ (F_IRZ) pro ohlašování v roce 2016 (data za ohlašovací rok 2015) verze 1.0

STATISTICA Téma 8. Regresní a korelační analýza, regrese prostá

Praktický průvodce použitelnými právními předpisy v Evropské unii (EU), Evropském hospodářském prostoru (EHP) a ve Švýcarsku.

Základy číslicové techniky z, zk

Dnešní program odvozování v Bayesovských sítích exaktní metody (enumerace, eliminace proměnných) aproximační metody y( (vzorkovací techniky)

3. Matice a determinanty

Co dnes s elektronickými cáry papíru?

0. Lineární rekurence Martin Mareš,

Propojení systému MICROPEL a inteligentní elektroinstalace ABB Ego-n

Ministerstvo dopravy Odbor agend řidičů Elektronicky, přílohou u Dne K bodu odst. 5

Transkript:

Hašovací unkce, principy, příklady a kolize Vlastimil Klíma, http://cryptography.hyperlink.cz/ v.klima@volny.cz verze 1, 19. 3. 2005 Abstrakt. Příspěvek je určen těm, kdo nemají podrobné znalosti o hašovacích unkcích, ale přitom se jich nějakým způsobem týká jejich bezpečnost. Budeme se zabývat principy konstrukce, bezpečností a novinkami v oblasti hašovacích unkcí. Obsah 1. Hašovací unkce a jejich vlastnosti... 3 1.1. Jednosměrné unkce... 3 1.2. Kryptograická hašovací unkce... 4 1.3. Vstup a výstup... 4 1.4. Jednosměrnost... 4 1.5. Odolnost proti kolizi prvního řádu, bezkoliznost prvního řádu... 4 1.6. Odolnost proti kolizi druhého řádu, bezkoliznost druhého řádu... 4 1.7. Častý omyl - nepochopení pojmu bezkoliznost... 5 1.8. Orákulum a náhodné orákulum... 5 1.9. Hašovací unkce jako náhodné orákulum... 5 1.10. Příklady využití... 5 2. Bezpečnost hašovacích unkcí... 6 2.1. Bezpečnost z hlediska nalezení vzoru, prolomení hašovací unkce poprvé... 6 2.2. Složitost nalezení kolize... 6 2.3. Tvrzení (narozeninový paradox)... 6 2.4. Multikolize... 7 2.5. r-násobná kolize u náhodného orákula... 7 2.6. Bezpečnost z hlediska nalezení kolize, prolomení hašovací unkce podruhé... 7 2.7. Prakticky používané hašovací unkce nejsou prokazatelně bezpečné... 7 2.8. Když je nalezena kolize... 7 2.9. Ilustrace: Útok na MD4... 7 3. Konstrukce moderních hašovacích unkcí... 8 3.1. Zarovnání... 8 3.2. Damgard-Merklovo zesílení (doplnění o délku původní zprávy)... 9 3.3. Damgard-Merklův iterativní princip moderních hašovacích unkcí... 9 3.4. Kolize kompresní unkce... 10 3.5. Bezpečnost Damgard-Merklovy konstrukce... 10 3.6. Útok na dlouhé zprávy bez Damgard-Merklova zesílení... 11 4. Konstrukce kompresní unkce... 11 4.1. Davies-Meyerova konstrukce kompresní unkce... 11 5. Kompresní a hašovací unkce MD5... 12 5.1. Útok hrubou silou na MD5... 14 5.2. Další útoky na MD5... 14 6. Čínský útok na MD5 (Wangová a kol., 2004)... 14 6.1. Hledání čínského triku... 15-1 -

6.2. Dierenční schéma... 16 6.3. Další inormace o čínském útoku... 17 6.4. Rychlejší metoda nalézání kolizí (Klíma, 2005)... 18 6.5. Distribuovaný útok MD5CRACK zastaven... 18 6.6. Využití kolizí - 1. varianta s odlišným počátkem zpráv... 18 6.7. Využití kolizí - 2. varianta s volbou IV a shodným začátkem zpráv... 19 6.8. Co současné útoky na MD5 neumí... 20 7. SHA-1 kryptograicky zlomena... 20 8. Některé aplikace, využívající kolize hašovacích unkcí... 21 8.1. Příklady využití již publikované čínské kolize MD5... 21 8.2. Jak oklamat certiikační autoritu, používající MD5 nebo SHA-1, aby vydala certiikát na dva různé podpisové klíče... 22 9. Klíčovaný hašový autentizační kód - HMAC... 23 9.1. Obecná deinice HMAC... 23 9.2. Nepadělatelný integritní kód, autentizace původu dat... 25 9.3. Průkaz znalosti při autentizaci entit... 25 10. PRF a PRNG a odhad jejich oslabení současnou kryptoanalýzou... 25 10.1. Pseudonáhodná unkce (PRF) při tvorbě klíčů z passwordů (PKCS#5)... 25 10.2. Pseudonáhodné generátory (PRNG)... 26 10.3. PRNG ve spojení s hašovací unkcí H, PKCS#1 v.2.1... 26 10.4. PRNG ve spojení s hašovací unkcí podle PKCS#5... 27 10.5. PRNG ve spojení s HMAC... 27 11. Kolize a některá autentizační schémata... 27 12. Třída hašovacích unkcí SHA-2 (SHA-256, 384, 512 a 224)... 28 13. Generické problémy iterativních hašovacích unkcí... 28 13.1. r-násobná kolize pro iterativní hašovací unkce lze docílit s nižší složitostí28 13.2. Kaskádovitá konstrukce pozbývá smyslu... 29 13.3. Nalezení druhého vzoru u dlouhých zpráv snadněji než se složitostí 2 n... 29 13.4. Závěr k novým zjištěním kryptoanalýzy iterativních hašovacích unkcí... 30 14. NIST plánuje přechod na SHA-2 do r. 2010... 30 15. Závěr: Které techniky jsou a nejsou bezpečné... 30 15.1. Doporučení... 30 16. Literatura... 31-2 -

1. Hašovací unkce a jejich vlastnosti Hašovací unkce jsou silným nástrojem moderní kryptologie. Jsou jednou z klíčových kryptologických myšlenek počítačové revoluce a přinesly řadu nových použití. V jejich základu jsou pojmy jednosměrnosti (synonymum: jednocestnost) a bezkoliznosti. 1.1. Jednosměrné unkce Jsou to takové unkce : X Y, pro něž je snadné z jakékoli hodnoty x X vypočítat y = (x), ale pro nějaký náhodně vybraný obraz y (X) nelze (je to pro nás výpočetně nemožné) najít její vzor x X tak, aby y = (x). Přitom víme, že takový vzor existuje nebo jich existuje dokonce velmi mnoho. Příklad: vynásobení dvou velkých prvočísel, v současné době neznáme dostatečně rychlou metodu jak tato čísla separovat Obr.: Jednosměrná unkce Druhou odnoží jednosměrných unkcí jsou jednosměrné unkce s padacími vrátky. Bývají také nazývány jednosměrné unkce se zadními vrátky, pokud je zřejmé, že se nejedná o pirátská vrátka do systému. Je na nich založena asymetrická kryptograie. padací vrátka Inv() Obr.: Jednosměrné unkce s padacími vrátky Hašovací unkce jsou jednosměrné unkce bez padacích vrátek. - 3 -

1.2. Kryptograická hašovací unkce Hašovací unkce byla původně označením pro unkci, která libovolně velkému vstupu přiřazovala krátký hašovací kód o pevně deinované délce. jakkoli dlouhý vstup zpráva M (objednávka, text, binární soubor, DVD, HDD) Hašovací unkce výstup krátké délky (160 bitů) h(m) Nyní se pojem hašovací unkce používá v kryptograii pro kryptograickou hašovací unkci, která má oproti původní deinici ještě navíc vlastnost jednosměrnosti a bezkoliznosti. 1.3. Vstup a výstup Hašovací unkce h zpracovává prakticky neomezeně dlouhá vstupní data M na krátký výstupní hašový kód h(m). Například u hašovacích unkcí MD5/SHA-1/SHA-256/SHA-512 je to 128/160/256/512 bitů. 1.4. Jednosměrnost Hašovací unkce musí být jednosměrná (one-way) a bezkolizní (collission-ree). Jednosměrnost znamená, že z M lze jednoduše vypočítat h(m), ale obráceně to pro náhodně zadaný hašový kód H je výpočetně nezvládnutelné. 1.5. Odolnost proti kolizi prvního řádu, bezkoliznost prvního řádu Bezkoliznost (stručnější označení pro "odolnost proti kolizi") požaduje, aby bylo výpočetně nezvládnutelné nalezení libovolných dvou různých (byť naprosto nesmyslných) zpráv M a M tak, že h(m) = h(m ). Pokud se toto stane, říkáme, že jsme nalezli kolizi. Bezkoliznosti, kterou jsme právě popsali, říkáme bezkoliznost 1. řádu nebo jednoduše bezkoliznost. Bezkoliznost se, jak jsme uvedli, zásadním způsobem využívá k digitálním podpisům. Nepodepisuje se přímo zpráva, často velmi dlouhá (u MD5/SHA-1/SHA-256 prakticky až do délky D = 2 64-1 bitů), ale pouze její haš. Můžeme si to dovolit, protože bezkoliznost zaručuje, že není možné nalézt dva dokumenty se stejnou haší. Proto můžeme podepisovat haš. 1.6. Odolnost proti kolizi druhého řádu, bezkoliznost druhého řádu Další nejznámější deinice je odolnost proti nalezení druhého vzoru neboli bezkoliznost druhého řádu. Řekneme, že hašovací unkce h je odolná proti nalezení druhého vzoru, jestliže pro daný náhodný vzor x je výpočetně nezvládnutelné nalézt druhý vzor y x tak, že h(x) = h(y). - 4 -

1.7. Častý omyl - nepochopení pojmu bezkoliznost Možných zpráv je mnoho (1 + 2 1 +... + 2 D = 2 D+1-1) a hašovacích kódů málo (u MD5 například pouze 2 128 ). Musí proto existovat ohromné množství zpráv, vedoucích na tentýž hašový kód - v průměru je to řádově 2 D-127. Kolizí tedy existuje ohromné množství. Pointa je v tom, že nalezení byť jediné kolize je nad naše výpočetní možnosti. M H M H H D+1 2-1 vzorů H a s h D = 2 64 H H H 2 128 obrazů {0, 1} 128 H(M) = H(M ) {0, 1} D Obr. : Kolize 1.8. Orákulum a náhodné orákulum Orákulum nazýváme libovolný stroj (stroj "podivuhodných vlastností"), který na základě vstupu odpovídá nějakým výstupem. Má pouze vlastnost, že na tentýž vstup odpovídá tímtéž výstupem. Náhodné orákulum je orákulum, které na nový vstup odpovídá náhodným výběrem výstupu z množiny možných výstupů. 1.9. Hašovací unkce jako náhodné orákulum Z hlediska bezpečnosti bychom byli rádi, kdyby se hašovací unkce chovala jako náhodné orákulum. Odtud se odvozují bezpečnostní vlastnosti. 1.10. Příklady využití db 1 = db 2 = db 3? (db 1 ) = (db 2 ) = (db 3 ) Data Data Data Satellite Satellite Etherne di h t Satellite Building 1-5 -

Obr.: Kontrola shodnosti vzdálených rozsáhlých databází Příklady kontrola integrity (kontrola shodnosti velkých souborů dat) automatické deširování (souboru, disku apod.) ukládání a kontrola přihlašovacích hesel prokazování autorství jednoznačná identiikace dat (jednoznačná reprezentace vzoru, digitální otisk dat, jednoznačný identiikátor dat, to vše zejména pro digitální podpisy) prokazování znalosti autentizace původu dat nepadělatelná kontrola integrity pseudonáhodné generátory, derivace klíčů 2. Bezpečnost hašovacích unkcí 2.1. Bezpečnost z hlediska nalezení vzoru, prolomení hašovací unkce poprvé Pokud se bude hašovací unkce : {0,1} D {0,1} n chovat jako náhodné orákulum, bude složitost nalezení vzoru k danému hašovacímu kódu rovna 2 n. Pokud je nalezena cesta, jak vzory nalézat jednodušeji, hovoříme o prolomení hašovací unkce. 2.2. Složitost nalezení kolize Jestliže kolize zákonitě existují, položme si otázku, jak velká musí být množina náhodných zpráv, aby v ní s nezanedbatelnou pravděpodobností existovaly dvě různé zprávy se stejnou haší. Narozeninový paradox říká, že pro n-bitovou hašovací unkci nastává kolize s cca 50% pravděpodobností v množině 2 n/2 zpráv, namísto očekávaných 1/2 * 2 n. Například pro 160bitový hašový kód bychom očekávali 1/2 *2 160 zpráv, paradoxně je to pouhých 2 80 zpráv. 2.3. Tvrzení (narozeninový paradox) Mějme množinu M m různých koulí a proveďme výběr k koulí po jedné s vracením do množiny M. Potom pravděpodobnost, že vybereme některou kouli dvakrát nebo vícekrát je P(m, k) = 1 - m(m -1)...(m - k + 1)/m k. Pro k = O(m 1/2 ) a m velké je P(m, k) 1 - exp(-k 2 /2m). Důsledek Pro m velké se ve výběru k = (2m * ln e 2) 1/2 m 1/2 prvků z M s cca 50% pravděpodobností naleznou dva prvky shodné. Paradoxnost. Běžně by člověk uvažoval následovně. Máme množinu m prvků, vezmeme si jeden prvek a hledáme k němu druhý. Abychom dostali pravděpodobnost 1/2, musíme vytahat asi polovinu množiny M, tj. m/2 prvků. Místo toho ale postačí odmocnina z m prvků. Máme P(365, 23) = 0.507. Pro čísla m = 365 a k = 23 interpretujeme tvrzení tak, že skupina 23 náhodně vybraných lidí postačí k tomu, aby se mezi nimi s cca 50% - 6 -

pravděpodobností našla dvojice, slavící narozeniny tentýž den. U skupiny 30 lidí je pravděpodobnost už P(365, 30)= 0.706. Tvrzení se zdá paradoxní protože, ač je vyřčeno jinak, obvykle ho vnímáme ve smyslu "kolik lidí je potřeba, aby se k danému člověku našel jiný, slavící narozeniny ve stejný den". V této podbízející se interpretaci hledáme jedny konkrétní narozeniny, nikoli "jakékoliv shodné" narozeniny. Oba přístupy odráží přesně rozdíl mezi kolizí prvního řádu (libovolní dva lidé) a druhého řádu (nalezení druhého člověka k danému). 2.4. Multikolize Multikolizí (r-násobnou kolizí, r-cestnou kolizí) nazýváme r-tici různých zpráv, vedoucích na stejnou haš. 2.5. r-násobná kolize u náhodného orákula K tomu, abychom mezi odpověďmi náhodného orákula na N různých dotazů nalezli jednu odpověď r krát (r-násobnou kolizi), postačí s dostatečnou nenulovou pravděpodobností N = 2 n*(r - 1) /r dotazů, což je pro větší r přibližně 2 n. Pro r = 2 dostáváme známý narozeninový paradox a složitost 2 n/2. Pojmem r-násobné kolize se poprvé zabýval Merkle na konerenci Crypto 1989. 2.6. Bezpečnost z hlediska nalezení kolize, prolomení hašovací unkce podruhé Pokud se hašovací unkce : {0,1} D {0,1} n bude chovat jako náhodné orákulum, bude složitost nalezení kolize rovna přibližně 2 n/2. Pokud je nalezena cesta, jak kolize nalézat jednodušeji, hovoříme o prolomení hašovací unkce. 2.7. Prakticky používané hašovací unkce nejsou prokazatelně bezpečné I když uvidíme, že vytváření hašovacích kódů je opravdu neskutečně složité, nalezení kolizí je přesto pouze otázkou intelektuální výzvy, neboť u prakticky používaných hašovacích unkcí není prokázána výpočetní složitost nalezení kolize nebo druhého vzoru. Jejich bezpečnost tak u obou vlastností (jednosměrnost, bezkoliznost) závisí pouze na stavu vědy v oblasti kryptograie a kryptoanalýzy. Prolomení některých kryptograických technik je proto přirozeným a průvodním jevem rozvoje poznání v této oblasti. 2.8. Když je nalezena kolize Hašovací unkce, u níž byla nalezena kolize, ztrácí generálně smysl, neboť hypotéza o tom, že se chová jako náhodné orákulum byla vyvrácena. Zejména by neměla být používána k digitálním podpisům, neboť tam kolize znamená, že je možné předložit dvě různé zprávy s tímtéž platným digitálním podpisem, platným pro obě zprávy. Existují ale techniky, kde nejsou využity všechny vlastnosti hašovací unkce a kde porušení bezkoliznosti (nebo částečné porušení bezkoliznosti) nevadí (PRNG, PRF, HMAC). 2.9. Ilustrace: Útok na MD4 U MD4 předložil v roce 1996 H. Dobbertin na konerenci FSE 1996 metodu nalézání kolizí a velmi instruktivní kolizi hašovací unkce [D96a], viz obrázek. - 7 -

******************** CONTRACT At the price o $176,495 Al Blowish sells his house to Ann Bonidea.... ******************** CONTRACT At the price o $276,495 Al Blowish sells his house to Ann Bonidea.... Zprávy, které mají stejný hašový kód MD4 Obr.: Kolize u MD4 [D96a] 3. Konstrukce moderních hašovacích unkcí U moderních hašovacích unkcí může být zpráva velmi dlouhá, například D = 2 64-1 bitů. Je zřejmé, že takovou zprávu musíme zpracovávat po částech, nikoli najednou. Také v komunikacích je přirozené, že zprávu dostáváme po částech a nemůžeme ji z paměťových důvodů ukládat celou pro jednorázové zhašování. Odtud vyplývá nutnost hašování zprávy po blocích a sekvenční způsob. Ze zpracování po blocích plyne také nutnost zarovnání vstupní zprávy na celistvý počet bloků před hašováním. Předpokládejme, že máme hašovací unkci o n-bitovém hašovacím kódu a zprávu M zarovnanou na m-bitové bloky m 1,..., m N. 3.1. Zarovnání Zarovnání musí být takové, aby umožňovalo jednoznačné odejmutí, jinak by vznikaly jednoduché kolize. Například při doplnění zprávy nulovými bity by nešlo rozeznat, kolik jich bylo doplněno, a zda některé z nich nejsou platnými bity zprávy, pokud by zpráva nulovými bity končila. Například doplněná zpráva 10111100110101000000000000000000000000000 by byla doplněním zpráv 10111100110101 101111001101010 1011110011010100 10111100110101000... 10111100110101000000000000000000000000000, a všechny by proto vedly ke kolizi (měly by stejný hašový kód), dokonce multiplikativní kolizi. Zarovnání u moderních hašovacích unkcí se deinuje jako doplnění bitem 1 a poté potřebným počtem bitů 0. To umožňuje jednoznačné odejmutí doplňku. - 8 -

3.2. Damgard-Merklovo zesílení (doplnění o délku původní zprávy) Za potřebným počtem bitů je ještě nutné doplnit délku původní zprávy, jinak by bylo možné vést útok, popsaný dále. Tomuto doplnění se říká Damgard-Merklovo zesílení, které bylo nezávisle oběma autory navrženo na konerenci Crypto 1989. Doplnění ilustruje obrázek (viz dále) pro blok délky m = 512, který je použit u hašovacích unkcí MD4, MD5, SHA-0, SHA-1, SHA-256. Doplnění se provádí tak, že M je nejprve doplněna bitem 1, poté co nejmenším počtem nulových bitů (může jich být 0-447) tak, aby do celistvého násobku 512 bitů zbývalo ještě 64 bitů, a nakonec je těchto 64 bitů vyplněno 64bitovým vyjádřením počtu bitů původní zprávy M. Délka zprávy tedy také vstupuje do hašovacího procesu. Rezervace 64 bitů na délku zprávy umožňuje hašovat zprávy až do délky D = 2 64-1 bitů. 3.3. Damgard-Merklův iterativní princip moderních hašovacích unkcí Všechny současné prakticky používané hašovací unkce používají Damgard-Merklův (DM) princip iterativní hašovací unkce s využitím kompresní unkce. Vstupy kompresní unkce Kompresní unkce zpracovává aktuální blok zprávy m i. Výsledkem je určitá hodnota, které se říká kontext a označuje H i. Hodnota kontextu pak nutně tvoří vstup do kompresní unkce v dalším kroku. Kompresní unkce má tedy dva vstupy - kontext a aktuální blok zprávy. Výstupem je nový kontext. m(i) H(i-1) H(i) kompresní unkce Damgard-Merklova konstrukce Odtud vznikla iterativní konstrukce, popsaná vzorcem H i = (H i-1, m i ), H 0 = IV, která se nazývá Damgard-Merklova metoda (resp. Merklova meta metoda), neboť ji oba dva nezávisle navrhli na konerenci Crypto 1989. Hašování probíhá postupně po jednotlivých blocích m i v cyklu podle i od 1 do N. Kompresní unkce v i-tém kroku (i = 1,..., N) zpracuje vždy daný kontext H i-1 a blok zprávy m i na nový kontext H i. Šíře kontextu je většinou stejná jako šíře výstupního kódu. Počáteční hodnota kontextu H 0 se nazývá inicializační hodnota (IV). Je dodeinována jako konstanta daná v popisu každé iterativní hašovací unkce. Vidíme, že název kompresní unkce je vhodný, neboť unkce zpracovává širší vstup (H i-1, m i ) na mnohem kratší H i, tedy blok zprávy m i se sice unkčně promítne do H i, ale současně dochází ke ztrátě inormace (šířka kontextu H 0, H 1,...H i,... zůstává stále stejná). - 9 -

Kontextem bývá obvykle několik 16bitových nebo 32bitových slov, u MD5 jsou to čtyři slova A, B, C, D (dohromady 128 bitů). Po zhašování posledního bloku m N dostáváme kontext H N, z něhož bereme buď celou délku nebo část jako výslednou haš. U unkce MD5 je šířka kontextu 128 bitů a výslednou haš tvoří všech 128 bitů kontextu H N. n e c 1 423 64 01100001 01100010 01100011 1 0...0 0...011000 Kupní smlouva... M..smluvní strany...... text... ko nec doplněk... m(1) m(2) m(3) m(i) m(n) IV H(i-1) H(i) H(n) kompresní unkce iterativní hašovací unkce Obr.: Doplňování, kompresní unkce a iterativní hašovací unkce 3.4. Kolize kompresní unkce Kolize kompresní unkce spočívá v nalezení inicializační hodnoty H a dvou různých bloků BB1 a B 2B tak, že (H, BB1) = (H, B 2B ). 3.5. Bezpečnost Damgard-Merklovy konstrukce Pokud je hašovací unkce bezkolizní, vyplývá odtud i bezkoliznost kompresní unkce. (Důkaz je triviální pro zprávu tvořící jeden blok.) Je-li kompresní unkce bezkolizní, obecně odtud nevyplývá, že je bezkolizní i hašovací unkce. Avšak u Damgard-Merklovy konstrukce to bylo dokázáno. Tj. pokud je kompresní unkce bezkolizní, je bezkolizní také iterovaná hašovací unkce, konstruovaná z ní výše uvedeným postupem. - 10 -

Tato vlastnost Damgard-Merklovy konstrukce je bezpečnostním základem všech moderních hašovacích unkcí. Tím pádem bylo možné se soustředit na nalezení kvalitní kompresní unkce. 3.6. Útok na dlouhé zprávy bez Damgard-Merklova zesílení Pokud bychom zprávu M doplňovali jen bitem 1 a nulovými bity do nejbližšího celistvého bloku a nepoužili doplnění o délku zprávy, pak bychom mohli najít druhý vzor M tak, že h(m ) = h(m) se složitostí menší než 2 n operací (Winternitz, 1984). Postup. Máme dánu zprávu M a hledáme druhý vzor pro hašovací hodnotu h(m). Při hašování zprávy M = m 1, m 2,..., m N si zaznamenáme všechny průběžné kontexty h i. Vygenerujeme si K = 2 n /N náhodných bloků B j a vytvoříme seznam kontextů h j = (IV, B j ), j = 1,..., K. V množinách {h i } i a {h j} j nalezneme kolizi, tj. takové i a j, že h i = h j. Z binomické věty vyplývá, že střední hodnota počtu nalezených kolizí je pro K = 2 n / N rovna 1 - (1 - N/2 n ) K = NK/2 n 1. Zprávy (m 1, m 2,..., m i, m i+1,..., m N ), a (B j, m i+1,..., m N ) mají stejnou haš h(m). Složitost tohoto postupu je K + N = K = 2 n /N + N, což zejména pro dlouhé zprávy je řádově menší než 2 n. 4. Konstrukce kompresní unkce Kompresní unkce musí být velmi robustní, aby zajistila dokonalé promíchání bitů zprávy a jednocestnost. Jak tyto unkce konstruovat? Protože hašovací unkce musí být jednocestné a chovat se co nejvíce jako náhodné orákulum, máme možnost je konstruovat na bázi známých jednocestných unkcí. Můžeme použít znalostí z oblasti blokových šier. Kvalitní bloková šira E k (x) se při pevném klíči k také má chovat jako náhodné orákulum. Dále zaručuje, že známe-li jakoukoli množinu vstupů-výstupů, tj. otevřených-širových textů (x, y), nemůžeme odtud určit (díky složitosti) klíč k. Vzhledem ke klíči je tak bloková šira jednocestná. Přesněji pro každé x je unkce k E k (x) jednocestná. Odtud vyplývá možnost konstrukce kompresní unkce takto: H i = E mi (H i-1 ), kde E je kvalitní bloková šira. Vezměme hašování krátké zprávy, která i se zarovnáním tvoří jediný blok zprávy. Máme H 1 = E m1 (IV). Je vidět, že z hodnoty hašového kódu H 1 nejsme schopni určit m 1, čili máme zaručenu vlastnost jednocestnosti. 4.1. Davies-Meyerova konstrukce kompresní unkce Davies-Meyerova konstrukce kompresní unkce pak zesiluje vlastnost jednocestnosti ještě přičtením vzoru před výstupem: H i = (H i-1, m i ) = E mi (H i-1 ) xor H i-1. - 11 -

Výstup je zde tedy navíc maskován vstupem, což ještě více ztěžuje případný zpětný chod. Protože blok zprávy m i je obvykle velmi velký (512 bitů) a klíče blokových šier tak dlouhé nebývají, aplikuje se bloková šira několikrát za sebou (v rundách), přičemž (rundovní) klíč postupně čerpá z bloku m i. Na schématu MD5 vidíme jak blokovou širu, tak způsob, jakým je blok zprávy m i v 16 rundách po částech používán jako rundovní klíč. Navíc se tento stavební blok ještě čtyřikrát opakuje, takže každá část bloku m i se projeví na místě klíče dokonce čtyřikrát. Této ázi se proto někdy paradoxně říká příprava klíče, i když se jedná o přípravu zprávy. 5. Kompresní a hašovací unkce MD5 U MD5 tvoří kontext 4 32bitová slova A, B, C a D. Na obrázku vidíme zvětšenu jednu rundu hašování. m i je jeden 512 bitový blok zprávy. Ten je rozdělen na 16 32bitových slov M 0, M 1,..., M 15, a tato posloupnost je opakována 4x za sebou (v různých permutacích). Na obrázku vidíme, že v kompresní unkci se kontext "zaširuje" vždy jedním 32bitovým slovem M i. Poznamenejme, že na místě dílčí unkce F v obrázku se po 16 rundách střídají 4 různé (nelineární i lineární) unkce (F, G, H, I) a v každé rundě se využívá jiná konstanta K i. Po 64 rundách dojde ještě k přičtení původního kontextu (H i-1 ) k výsledku podle Davies-Meyerovy konstrukce (xor je nahrazen aritmetickým součtem modulo 2 32 ). Tak vznikne nový kontext H i. Pokud by zpráva M měla jen jeden blok, byl by kontext (A, B, C, D) celkovým výsledkem. Pokud ne, pokračuje se stejným způsobem v hašování druhého bloku zprávy m 2 jakoby s inicializační hodnotou H i-1. Po zpracování bloku m N máme v registrech výslednou 128bitovou haš H N. Pozn.: V obrázku značí plus ve čtverečku modulární součet a výraz x <<< s označuje cyklický posun 32bitového slova x o s bitů doleva. - 12 -

M 1 H(i-1) M 2 M 3... M 15 M 16 m(i) jiná permu tace M i jiná permu tace M i 64 rund... jiná permu tace M i m(i) Schéma zpracování jednoho bloku zprávy kompresní unkcí H(i-1) H(i) H(i) Obr.: MD5-13 -

5.1. Útok hrubou silou na MD5 V roce 1994 navrhli P. van Oorschot a M. Wiener paralelně pracující stroj na vyhledávání kolizí za cenu 10 milionů dolarů [OOW94]. Během 24 dnů by uměl vyhledat kolizi. 5.2. Další útoky na MD5 V roce 1993 dvojice Boer-Bosselaers [BoBo93] na konerenci Eurocrypt 1993 ukázala pseudokolizi kompresní unkce MD5. Nalezli H, H a X tak, že (H, X) = (H, X). V roce 1996 na rump session konerence Eurocrypt 1996 H. Dobbertin ( [DO96eu], viz též [DO96cb]) prezentoval kolizi kompresní unkce MD5. Nalezl H, X a X tak, že (H, X) = (H, X ). 6. Čínský útok na MD5 (Wangová a kol., 2004) V srpnu 2004 byly na rump session konerence Crypto 2004 prezentovány kolize hašovacích unkcí MD4, MD5, HAVAL-128 a RIPEMD [WFLY04]. Budeme se věnovat pouze MD5. Číňané přišli s metodou, jak nalézt kolize dvou různých 1024bitových zpráv. Spočívá v tom, že nejprve naleznou dvě různé 512bitové půlzprávy (bloky) M1, M2, což jim trvá cca hodinu na velkém 32procesorovém počítači IBM p690, a potom k nim naleznou dvě různé 512bitové půlzprávy N1, N2 (což trvá už jen sekundy) tak, že složené zprávy (M1, N1) a (M2, N2) mají stejnou haš. M1 N1 H 1 IV H 2 H 1 M2 N2 Obr.: Princip čínského útoku na MD5 Uvádí předpis, jak se mají lišit první poloviny M1 a M2 a druhé poloviny N1 a N2. Konkrétně M2 = M1 + C, N2 = N1 - C, kde C je vhodná 512bitová konstanta, mající v binárním vyjádření pouze 3 bity nenulové. Hlavní myšlenkou útoku tedy bylo najít takovou zvláštní konstantu C a pak během první hodiny útoku nalézt zprávu M1 tak, aby M1 a M2 = M1 + C při hašování vedly na různé kontexty H 1 a H 1 (viz obrázek) takové, že tato odlišnost je srovnána při hašování následných bloků N1 a N2, tj. kontexty H 2 jsou už totožné. Protože - 14 -

zprávy jsou 1024bitové, jsou doplněny ještě dalším blokem (viz deinice doplňování) 10...0 0...10000000000, který je ale pro obě zprávy stejný, neboť mají stejné délky 1024 bitů, takže i kontext H 3 (výsledná haš) je stejný. Uvedená vlastnost však neplatí pro všechny bloky M1, N1 a všechny konstanty C, takže je nutné je zvláštním způsobem konstruovat. To tvořilo neznámé know-how čínského týmu. 6.1. Hledání čínského triku V říjnu 2004 se australský tým pokusil čínskou metodu zrekonstruovat pouze na základě zveřejněných kolizí [HPR04]. Nejdůležitější "čínský trik" se nepodařilo objevit, ale na základě dat z [WFLY04] bylo dobře popsáno dierenční schéma, kterým uveřejněné čínské kolize vyhovují. Naplnění podmínek tohoto schématu bylo však ještě příliš náročné a výpočetně složitější, než ukazovaly výsledky z [WFLY04], a tak práce nepřinesla čistě praktické výsledky. - 15 -

6.2. Dierenční schéma Z časových a prostorových důvodů zde uvádíme pouze ilustraci pro potřebu přednášky. - 16 -

Obr.: Část dierenčního schématu z [WY2005] Obr.: Použité nelineární a lineární unkce 6.3. Další inormace o čínském útoku V březnu 2005 byla předběžně publikována práce [WY2005], která bude prezentována v květnu na konerenci Eurocrypt 2005. Prezentuje dvě základní myšlenky útoku, a to dierenční schéma a tzv. metoda modiikace zpráv. Jak dierenční schéma unguje, bylo v zásadě prozkoumáno australským týmem v říjnu 2004 [HPR04]. Čínské dierenční schéma se liší v několika překvapivých - 17 -

detailech, ale jak bylo vytvořeno, zůstává stále utajeno. Pouze je poznamenáno, že vzniklo tak, aby bylo výhodné pro pozdější áze schématu. U metody modiikace zpráv je uveden jeden příklad s tím, že se dále uvádí, že k hledání jsou použity i jiné modiikace zpráv. Podrobnosti této metody tedy zůstávají i nadále utajeny. 6.4. Rychlejší metoda nalézání kolizí (Klíma, 2005) Na počátku března 2005 byla také publikována zpráva [VK2005], z níž vyplývá možnost generovat kolize MD5 na domácím počítači, pro libovolnou inicializační hodnotu a rychleji, než prezentoval čínský tým. Metoda také není publikována, pouze je známo, že používá dvouázový postup jako v [WFLY04] s tím, že v první ázi je 1000-2000 krát rychlejší a v druhé 2-80 krát pomalejší (celkově 3-6 krát rychlejší). Průměrná doba nalezení kolize touto metodou na notebooku (Pentium 1.6 GHz) činí 8 hodin. Po publikování [WY2005] se potvrdilo, že oba přístupy jsou nikoli diametrálně, ale přesto odlišné. 6.5. Distribuovaný útok MD5CRACK zastaven O nalezení kolizí MD5 hrubou silou se pokoušel i projekt MD5CRACK na http://www.md5crk.com/, kde Češi patřili k významným přispěvatelům strojového času. Cílem bylo přesvědčit bezpečnostní architekty, aby od MD5 konečně ustoupili. Jakmile byl publikován čínský výsledek, projekt byl pochopitelně zastaven. Od doby spuštění neuplynulo tolik času, ale pokrok je významný, vzhledem k tomu, že kolizi může vygenerovat jeden člověk na notebooku. Pochopitelně, že takové otázky vyvstávají i pro SHA-1. 6.6. Využití kolizí - 1. varianta s odlišným počátkem zpráv Hlavní myšlenka tedy je, že první odlišné bloky zpráv vytvoří sice různé kontexty H 1 a H 1, ale druhé bloky to srovnají na celkový stejný výsledek H 2. Pokud nyní hašování buď ukončíme nebo budeme v obou případech pokračovat už jen stejnými bloky zprávy, obdržíme v obou případech stejný kontext H 3, H 4,..., tedy kolizi. Proto za bloky (M1, N1) a (M2, N2) můžeme připojit libovolnou společnou zprávu T, což povede na stejnou haš. - 18 -

M1 N1 libovolná shodná připojená zpráva T: X... Y H 1 IV... H 2 H(i) H 1 M2 N2 odlišný začátek Obr.: Rozšiřování kolizí připojením libovolné zprávy 6.7. Využití kolizí - 2. varianta s volbou IV a shodným začátkem zpráv Obě práce [WFLY04] i [VK2005] umí nalézt kolize pro libovolnou inicializační hodnotu IV, nejen tu, která je pevně deinována pro MD5. Můžeme proto zvolit libovolnou smysluplnou zprávu T a poté k ní konstruovat (M1, N1) a (M2, N2) tak, že h(t, M1, N1) = h(t, M2, N2), čili zahajovat kolidující zprávy libovolnou zvolenou zprávou. Proč? Když hašujeme zprávu (T,...) dojdeme po zhašování T (uvažujeme T zarovnanou na bloky) k určitému kontextu H n. Ten prohlásíme za novou inicializační hodnotu H 0 a pro ni nalezneme kolizi (M1, N1) a (M2, N2). Takže platí, že h(t, M1, N1) = h(t, M2, N2) pro libovolnou zprávu T zarovnanou na bloky. Připojíme-li předchozí výsledek, vedou na stejnou haš i zprávy (T, M1, N1, W) a (T, M2, N2, W) pro libovolné T a W, jak ukazuje obrázek. To lze dále rozvíjet například takto: (X, M1, N1, Y, O1, P1, Z, Q1, R1, T), (Soubor 1) (X, M2, N2, Y, O2, P2, Z, Q2, R2, T) (Soubor 2) - 19 -

předřazená zpráva T M1 N1 doplněná zpráva W X... Y X... Y IV M2 N2 Obr.: Rozšiřování kolidujících zpráv na obě strany M1 N1 O1 P1 Q1 R1 X Y Z T M2 N2 O2 P2 Q2 R2 X M1 N1 Y O2 P2 Z Q1 R1 T Obr.: Kombinace kolizí a doplňků 6.8. Co současné útoky na MD5 neumí Neumíme k danému dokumentu nalézt jiný, se stejnou haší! Umíme pouze najít dva různé dokumenty (soubory) se stejnou haší. Útočník navíc musí obě kolidující zprávy vytvářet sám. V karikatuře si můžeme představit například jak zaměstnanec dává nadřízenému podepsat žádost o dovolenou, se kterou mu náhodou koliduje příkaz na zvýšení platu. Je to přesně rozdíl mezi kolizemi 1. a 2. řádu. Umíme nalézt kolize 1. řádu, ale ne 2. řádu. 7. SHA-1 kryptograicky zlomena Tým Wangové vydal 13. 2. 2005 zprávu [WYY05], v níž ukazují plnou kolizi SHA-0 a kolizi SHA-1 pro 58 kroků (z 80). Oznamují též, že jsou schopni nalézt kolizi plnohodnotné SHA-1 se složitostí 2 69 hašovacích operací. SHA-0 by pokořili se složitostí 2 33 hašovacích operací. Pokud si uvědomíme, že SHA-0 byla určitou dobu standardem, a že se liší od SHA-1 pouze v jedné operaci v základní smyčce, je to ohromný výsledek. Pokud by - 20 -

SHA-1 byla kvalitní, mělo by nalezení kolizí narozeninovým paradoxem vyžadovat cca 2 80 operací. Množství operací 2 69 je stále ještě vysoké a mnoho lidí bude obhajovat velkou náročnost prolomení. Budou mít pravdu, ale z kryptograického hlediska a z hlediska perspektivních nástrojů SHA-1 již bohužel skončila. Viz též stanovisko NIST dále. Kromě toho se pravděpodobně podaří složitost nalezení kolize v praxi snížit na 2 66. 8. Některé aplikace, využívající kolize hašovacích unkcí 8.1. Příklady využití již publikované čínské kolize MD5 V prosinci 2004 byly publikovány dva příklady ([OM2004], [DK2004]), jak lze využít nikoli schopnost generovat kolize, ale pouhou jednu jedinou datovou kolizi MD5, známou v té době, ke konstrukci soistikovaných útoků. Zejména v práci [OM2004] jsou ukázány velké možnosti. Podle ní lze v konečném důsledku určitým postupem docílit toho, že libovolné dva různé, útočníkem volené soubory, se uživatelům jeví jako naprosto shodné, a to prostřednictvím kontroly haše a digitálního podpisu. - 21 -

8.2. Jak oklamat certiikační autoritu, používající MD5 nebo SHA-1, aby vydala certiikát na dva různé podpisové klíče V [LWW05a] z 1.3. 2005 je ukázán příklad podvržení jiného obsahu do již podepsaného a vydaného certiikátu. Využívá se možnost nalezení kolize MD5 pro zvolenou inicializační hodnotu. To umožní konstruovat zprávy s libovolným začátkem (zarovnaným na 64 bajtů) doplněných odlišnými bloky (128 bajtů) a pokračujícími libovolným dalším stejným obsahem. Oněch odlišných 64 bajtů se situuje do místa v certiikátu, kde je veřejný klíč (modul RSA), který je jádrem certiikátu, a který potvrzuje certiikační autorita svým digitálním podpisem v certiikátu. Výsledkem je, že útočník si může připravit dva různé klíče, na které bude mít vydaný jeden platný certiikát. Tým Lenstra-Wang-Weger připravuje v těchto dnech spuštění experimentu na nalezení kolize certiikátu [LWW05b] podobně jako v [LWW05a], tentokrát ale pro hašovací unkci SHA-1. To už je velmi závažné, protože většina certiikačních autorit tuto unkci používá, a to jako silnější alternativu k MD5. Scénář je stejný jako u kolidujícího certiikátu - 22 -

MD5. Připraví se dva klíče, vypočte se inicializační hodnota pro kolizi SHA-1, pro. Wangová poskytne kolizi a zbytek je stejný jako předtím. Zbývá generovat kolizi SHA-1. Před měsícem oznámená složitost 2 69 se ale pravděpodobně podaří snížit na 2 66. Pracuje se již jen na získání výpočetního výkonu. 9. Klíčovaný hašový autentizační kód - HMAC Klíčované hašové autentizační kódy zpráv HMAC zpracovávají hašováním nejen zprávu M, ale spolu s ní i nějaký tajný klíč K. Jsou proto podobné autentizačnímu kódu zprávy MAC, ale místo blokové širy využívají hašovací unkci. Používají se jak k nepadělatelnému zabezpečení zpráv, tak k autentizaci (prokazováním znalosti tajného klíče K). Klíčovaný hašový autentizační kód je obecná konstrukce, která využívá obecnou hašovací unkci. Podle toho, jakou hašovací unkci používá konkrétně, označuje se výsledek, například HMAC-SHA-1(M, K) používá SHA-1, M je zpráva a K je tajný klíč. 9.1. Obecná deinice HMAC HMAC je deinován ve standardu FIPS PUB 198 [32], kde je o něco obecněji popsán, než v RFC 2104 a ANSI X9.71. Jeho deinice závisí na tom, kolik bajtů (B) má blok kompresní unkce. Například u SHA-1 je B = 64, u SHA- 384 a SHA-512 je B = 128. Deinujeme konstantní řetězce ipad jako řetězec B bajtů s hodnotou 0x36 a opad jako řetězec B bajtů s hodnotou 0x5C. Klíč K doplníme bajty 0x00 do délky B a deinujeme hodnotu HMAC jako HMAC-H(M, K) = H( (K xor opad) H((K xor ipad) M) ), kde označuje zřetězení. Kolize HMAC nejsou kolizemi použité unkce ohroženy, neboť dnes se neumí nalézt kolize pro utajenou inicializační hodnotu. Situaci znázorňuje obrázek. - 23 -

jedna aplikace kompresní unkce pro K xor ipad H(i-1) H(i) jakoby nová (tajná) inicializační hodnota pro hašování M K xor ipad M K H K xor opad... jakoby nová (tajná) inicializační hodnota pro hašování... H HMAC HMAC-H(K, M) = H( (K xor opad) H((K xor ipad) M) ) Obr.: Klíčovaný hašový autentizační kód zprávy HMAC-H(K, M) Klíčovaný hašový autentizační kód zprávy HMAC-H(K, M) je unkčně podobný autentizačnímu kódu zprávy MAC, ale místo blokové širy využívá hašovací unkci (H). Označuje se konkrétně podle toho, jakou hašovací unkci používá, např. HMAC-SHA-1(K, M). M označuje zprávu a K klíč. Je deinován ve standardu FIPS 198 (kde je popsán o něco obecněji než v RFC 2104 a ANSI X9.71) a jeho deinice závisí na délce bloku kompresní unkce v bajtech (např. u MD5/SHA-1/SHA-256 je to B = 64 bajtů, u SHA-384/SHA-512 je to B = 128 bajtů) a na délce hašového kódu hašovací unkce H. HMAC používá dvě konstanty, a to ipad jako řetězec B bajtů s hodnotou 0x36 a opad jako řetězec B bajtů s hodnotou 0x5C. Klíč K se doplní nulovými bajty do plného bloku délky B a poté deinujeme HMAC-H(K, M) = H( (K xor opad) H((K xor ipad) M) ), kde označuje zřetězení. Na obrázku je schéma HMAC. Tajný klíč se modiikuje konstantou ipad a výsledek (K xor ipad) tvoří začátek vstupu do hašování. Je to deinováno tak, že K xor ipad je přesně jeden blok kompresní unkce, takže po jeho zpracování dostáváme kontext H 1. Následuje zpracování zprávy M, čili její hašování jakoby začínalo z (útočníkovi neznámé) inicializační hodnoty IV = H 1, bez uvažování předsazeného řetězce (K xor ipad). Tento princip se použije ještě jednou, ale nikoli na zprávu jako takovou, nýbrž na obdrženou haš. Uvědomme si, že stačí nalézt jen kolizi pro H((K xor ipad) M), protože ta se automaticky projeví v celém HMAC. Po publikování [WY2005] víme, že se tato práce nijak netýká kolize pro tajné nastavení inicializační konstanty, proto konstrukci HMAC považujeme za nedotčenou současnými útoky. Avšak odhaduje se, že i při tajné inicializační hodnotě by nalezení kolize mohlo být výpočetně méně náročné než by mělo teoreticky mělo být. - 24 -

Proti použití prolomených hašovacích unkcí ve unkci HMAC v současné době není námitek, neboť není známo žádné oslabení unkce autentizačního kódu. Je však nutné sledovat, zda se útok neprohloubí i na tajné inicializační hodnoty. 9.2. Nepadělatelný integritní kód, autentizace původu dat Zabezpečovací kód HMAC-SHA-1(M, K), pokud je připojen za zprávu M, detekuje neúmyslnou chybu při jejím přenosu. Případnému útočníkovi také zabraňuje změnit zprávu a současně změnit HMAC, protože bez znalosti klíče K nelze nový HMAC vypočítat. HMAC může být proto chápán jako nepadělatelný integritní kód, který samotná haš neposkytuje. Pro komunikujícího partnera je správný HMAC také autentizací původu dat, protože odesílatel musel znát hodnotu tajného klíče K. 9.3. Průkaz znalosti při autentizaci entit HMAC může být použit jako průkaz znalosti tajného sdíleného tajemství (K) při autentizaci entit. Princip průkazu je tento. Dotazovatel odešle nějakou náhodnou výzvu (řetězec) challenge a od prokazovatele obdrží odpověď response = HMAC(challenge, K). Nyní ví, že prokazovatel zná hodnotu tajného klíče K. Přitom případný útočník na komunikačním kanálu z hodnoty response klíč K nemůže odvodit. 10. PRF a PRNG a odhad jejich oslabení současnou kryptoanalýzou I když z teoretického hlediska nejsou hašovací unkce náhodná orákula, prakticky se tak jeví. Každá změna byť i jednoho bitu na vstupu má za následek nepredikovatelnou náhodnou změnu všech bitů na výstupu s pravděpodobností 1/2. A naopak jakákoliv změna na výstupu by měla vést k nepredikovatelné a náhodné změně na vstupu. Náhodnosti a nepredikovatelnosti se začalo využívat v různých technikách, a to i ve spojení s tajným klíčem. Jedná se o pseudonáhodné unkce PRF a pseudonáhodné generátory PRNG. 10.1. Pseudonáhodná unkce (PRF) při tvorbě klíčů z passwordů (PKCS#5) Standard PKCS#5 umožňuje využít hašovací unkci k tvorbě "náhodného" širovacího klíče z passwordu pomocí pseudonáhodné unkce PRF jako klíč = PRF(password). Předpis je vidět z obrázku a vynecháme-li hodnotu soli, spočívá v hašování passwordu a následném mnohonásobném hašování výsledku. Počet hašování je dán konstantou c, jejíž hodnota se doporučuje minimálně 1000, ale používá se i 2000. Výsledkem je krátký "náhodně vyhlížející" klíč DK, který je možné využít lépe než původní password. Jednak má pevnou délku a jednak z něho lze využít tolik bitů, kolik potřebujeme. Hodnota DK má pochopitelně lepší statistické vlastnosti než původní password. Tento postup se využívá ke tvorbě krátkých klíčů. Obr.: Tvorba klíče DK z passwordu P podle PKCS#5 (S je sůl) - 25 -

T 1 = Hash (P S) T 2 = Hash (T 1 ) T c = Hash (T c-1 ) širovací klíč DK = T c <0..dkLen-1> Zde nalézání kolizí čínskou metodou nevadí, i když je to "vada na kráse", protože bychom rádi, aby použitá hašovací unkce byla co nejkvalitnější ze všech hledisek. 10.2. Pseudonáhodné generátory (PRNG) Typické použití hašovacích unkcí jako pseudonáhodných unkcí je v případech, kdy máme k dispozici krátký řetězec dat (seed) s dostatečnou entropií. Může se jednat například o "krátký" 256bitový náhodný širovací klíč, záznam náhodného pohybu myši na displeji, časový proil náhodných stisků kláves apod. Přitom potřebujeme z tohoto vzorku získat pseudonáhodnou posloupnost o velké délce, například 1 GByte apod. A k promítnutí entropie původního vzorku (seedu) do delší posloupnosti se právě používají hašovací unkce. Hlavní rozdíl oproti minulému použití je v tom, že vstupem je náhodný zdroj, a další rozdíl je, že výstupem je dlouhá posloupnost. seed Hash H 1000101100101000010... Obr.: Hašovací unkce v konstrukci PRNG Tím, že je vstupem náhodný (útočníkovi neznámý) řetězec, dostáváme se s využitím kolizí do podobné situace jako u HMAC, protože útočník nezná inicializační hodnotu. Navíc jsou zde další složitosti. Uvedeme si příklady. 10.3. PRNG ve spojení s hašovací unkcí H, PKCS#1 v.2.1 Například standard PKCS#1 v.2.1 deinuje pseudonáhodný generátor MGF1 (Mask Generation Function) pomocí hašovací unkce H s počátečním - většinou náhodným - nastavením seed takto: H(seed 0x00000000), H(seed 0x00000001), H(seed 0x00000002), H(seed 0x00000003),... Protože seed je náhodný, konstrukce bude pravděpodobně bezpečná a současnými útoky nedotčená. - 26 -

10.4. PRNG ve spojení s hašovací unkcí podle PKCS#5 Tam, kde seed není zcela náhodný, se používá komplikovanější postup, viz například unkce PBKDF2(P, S, c, dklen) z PKCS#5. Ta na základě passwordu P a soli S generuje pseudonáhodnou posloupnost (c je konstanta - hodnota čítače, např. 1000 nebo 2000): T 1, T 2, T 3,..., kde T i, je vždy součet (xor) sloupce v následující tabulce. Počet řádků v tabulce odpovídá počtu (c) iterací. U 1 = H(P, S, 0x00000001) U 1 = H(P, S, 0x00000002) U 1 = H(P, S, i (4Byte)) U 2 = H(P, U 1 ) U 2 = H(P, U 1 ) U 2 = H(P, U 1 ) U 3 = H(P, U 2 ) U 3 = H(P, U 2 ) U 3 = H(P, U 2 ) U 4 = H(P, U 3 ) U 4 = H(P, U 3 ) U 4 = H(P, U 3 )............ U c = H(P, U c-1 ) U c = H(P, U c-1 ) U c = H(P, U c-1 ) T 1 = součet (xor) sloupce T 2 = součet (xor) sloupce Tab.: Pseudonáhodný generátor PBKDF2(P, S, c, dklen) podle PKCS#5 T i = součet (xor) sloupce Protože tato konstrukce je velmi robustní, není tu vůbec zřejmé, jak by se mohla schopnost nalézání kolizí projevit na bezpečnostních vlastnostech těchto konstrukcí. Pochopitelně, pokud by hašovací unkce byla velmi primitivní (například kód CRC), i tyto konstrukce by byly ohroženy. Současné hašovací unkce ale velmi primitivní rozhodně nejsou, ani u nich nejsou známy takové uvedené slabiny Obecně můžeme opět říci, že není znám žádný útok na PRNG ve spojení s prolomenými hašovacími unkcemi. Je samozřejmě lepší je nahradit za kvalitní, pokud to lze. Poznamenejme, že dodatek o obezřetnosti platí pro všechny hašovací unkce (viz úvod - není prokázána jejich "bezpečnost", jak bychom si představovali), takže je jenom větším zdůrazněním obecné vlastnosti v tomto konkrétním případě, kde by nějaká nežádoucí slabina mohla eventuelně vzniknout. 10.5. PRNG ve spojení s HMAC Poznamenejme, že namísto H v předchozích nebo jiných PRNG je možné použít HMAC. Taková konstrukce je ještě robustnější než PRNG ve spojení s H, proto ani u PRNG ve spojení s HMAC zde nejsou známy žádné negativní důsledky čínského útoku. 11. Kolize a některá autentizační schémata Existují i různé příklady využívající dokonce digitální podpisy, kde slabší odolnost proti kolizi tolik nevadí. Jedná se většinou o autentizační schémata. Můžeme si uvést následující primitivní příklad autentizace, kdy ten, kdo autentizuje (řekněme nějaká webová aplikace), vyšle náhodnou výzvu RND uživateli. Ten aplikaci vrátí digitálně podepsanou hašovací hodnotu h(rnd). Tím se autentizuje, neboť aplikace si jeho podpis může ověřit. V tomto případě nalézání kolizí útočníkovi nepomůže, protože výzvu RND nevytváří on, ale aplikace. I kdyby útočník dokonce uměl nalézt kolizi 2. řádu, tj. nalézt RND tak, že h(rnd) = h(rnd ), nemůže se za uživatele přihlásit. - 27 -

12. Třída hašovacích unkcí SHA-2 (SHA-256, 384, 512 a 224) Z důvodu zvýšení odolnosti vůči kolizím je od 1. února 2003 k dispozici nová trojice hašovacích unkcí SHA-256, SHA-384 a SHA-512 [SHA-2] a od února 2004 SHA-224 (dodatek [SHA-2]). Tyto unkce přichází se zvýšením délky hašového kódu na 256, 384 a 512 bitů (SHA-224 má 224 bitový hašový kód), což odpovídá složitosti 2 128, 2 192 a 2 256 pro nalezení kolizí narozeninovým paradoxem. To je jednak už dost vysoká složitost a také to odpovídá složitosti útoku hrubou silou na tři délky klíčů, které nabízí standard AES. Pokud se týká konstrukce nových unkcí, jsou velmi podobné SHA-1 a používají stejné principy, pracují však se složitějšími unkcemi a širšími vstupy. Podrobnosti lze nalézt v uvedených standardech. Jejich cílem bylo poskytnout větší odolnost proti kolizi a nabídnout odpovídající bezpečnost jako klíče pro AES. 13. Generické problémy iterativních hašovacích unkcí Generické problémy hašovacích unkcí ukazují dvě práce. První představil Joux [Joux04] na konerenci Crypto v srpnu 2004 a druhý Kelsey-Schneier [KS2004] v listopadu 2004. Obě dvě práce ukazují, že iterativní konstrukce hašovací unkce implikuje značnou odlišnost této unkce od náhodného orákula. Joux ukazuje, že 1) u iterativních hašovacích unkcí lze docílit mnohonásobné kolize mnohem jednodušeji než ve srovnání s náhodným orákulem 2) kaskádovitá konstrukce F G pomocí dvou hašovacích unkcí pozbývá smyslu, neboť očekávaná složitost nalezení kolize není součinem dílčích složitostí, ale spíše součtem Kelsey-Schneierova práce 1) obsahuje výrazně zlepšenou metodu konstrukce multikolizí oproti Jouxovi, 2) umožňuje konstruovat druhý vzor zprávy u iterativních hašovacích unkcí se složitostí cca 2*2 n/2 + 2 n-k+1 pro velmi dlouhé zprávy o délce 2 k blízké 2 n/2. Konkrétně pro SHA1 lze ke zprávě o délce 2 60 bajtů vytvořit druhý vzor se složitostí 2 106 na rozdíl od teoretické složitosti 2 160. 13.1. r-násobná kolize pro iterativní hašovací unkce lze docílit s nižší složitostí Joux [Joux04b] ukázal, že u iterativních hašovacích unkcí lze r-násobnou kolizi najít se složitostí ln 2 r * 2 n/2 namísto 2 n*(r - 1) /r. Postup. Vyjdeme ze standardní hodnoty IV, H 0 = IV, se složitostí S(F) najdeme kolizi hašovací unkce F s inicializační hodnotou H 0 (zprávy M 1,1 a M 1,2 ). Výslednou haš označme H 1. Se složitostí S(F) nalezneme kolizi F s inicializační hodnotou H 1 (zprávy M 2,1 a M 2,2 ), výslednou haš označíme H 2. Takto uděláme N kroků pro N = ln 2 r. Nyní můžeme sestavit 2 N = r zpráv, majících tutéž haš H N, a to tak, že z každé dvojice bloků M i,1 a M i,2 vybereme vždy jednu z nich. Dostaneme tak 2 N zpráv, které prochází stejnými hašovacími mezivýsledky a končí stejným hašovacím kódem H N. - 28 -

13.2. Kaskádovitá konstrukce pozbývá smyslu Druhou vlastností, kterou Joux [Joux04b] odhalil, je že složení hašovacích unkcí F a G (kaskáda), F G ( označuje zřetězení) neposkytuje intuitivně předpokládanou bezpečnost, ale mnohem nižší. Předpokládalo se, že složitost S(F G) nalezení kolize hašovacího kódu F(x) G(x) bude rovna součinu složitostí nalezení kolizí dílčích hašovacích kódů, tj. S(F G) = S(F) * S(G). Joux ukázal, že je to jen o něco více než S(F) + S(G), přičemž postačí, aby pouze F byla iterativní hašovací unkce, zatímco G může být i náhodné orákulum. Stručně řečeno kaskádovitá konstrukce pozbývá smyslu, protože výsledný kód je přibližně pouze tak složitý jako silnější z dílčích hašovacích unkcí. Tyto dvě vlastnosti přímo neohrožují žádné prakticky používané schéma, ale ukazují, že iterativní konstrukce není ideální, neboť oddaluje takové hašovací unkce od náhodného orákula. Postup. Nechť F je iterativní hašovací unkce s délkou hašovacího kódu n n g. Potom se složitostí n g /2 * S(F) vytvoříme n g /2 návazných kolizí unkce F, které dávají 2 ng/2 - násobnou multikolizi vzhledem k F. Mezi těmito 2 ng/2 zprávami nalezneme jednu kolizi vzhledem ke G. Máme tedy dvě zprávy, které mají stejný hašový kód vzhledem k F i G, tj. k F G. Složitost je n g /2 * S(F) + 2 ng/2 (druhý sčítanec je počet hašování G), tedy n g /2 * S(F) + S(G) S(F) + S(G). Intuitivně se očekávalo, že složením kvalitní hašovací unkce F o délce kódu n a unkce G o délce kódu n g vznikne kvalitní hašovací unkce o délce kódu n + n g a složitosti nalezení kolize bude 2 (n+ng)/2. Místo toho je to mnohem méně, n g /2 * 2 n/2 + 2 ng/2. 13.3. Nalezení druhého vzoru u dlouhých zpráv snadněji než se složitostí 2 n V práci [KS2004] se tato vlastnost ukazuje pro dlouhé zprávy, o délce blízké 2 n/2 bloků. Postup (zkrácený postup s využitím pevných bodů). Nechť zpráva M má délku 2 k bloků. Vytvoříme seznam průběžných kontextů K t při hašování zprávy M = m 1, m 2,..., m t,... Je jich 2 k. Volíme náhodně 2 n/2 bloků M i, které dávají seznam 2 n/2 haší h i = h(h 0, M i ). Volíme náhodně 2 n/2 bloků N j a z N j určíme pevný bod H j = (H j, N j ), využijeme k tomu Davies-Meyerovy konstrukce. Nalezneme kolizi mezi seznamy {H j } a {h i }, tj. i* a j* tak, že h i* = H j*. Volíme náhodně 2 n - k bloků Mlink l, které dávají seznam 2 n - k haší hlink l = h(h j*, Mlink l ). Nalezneme kolizi mezi seznamy {hlink l } a {K t }, tj. l* a t* tak, že hlink l* = K t*. Zpráva (M i*, N j*, Mlink l* ) a prvních i bloků zprávy M dávají stejný hašovací kontext K t*. Tyto zprávy mají různou délku, ale zprávu (M i*, N j*, Mlink l* ) doplníme o potřebný počet bloků na délku i bloků jako (M i*, N j*, N j*,..., N j*, Mlink l* ). Za obě zprávy pak připojíme zbytek zprávy M a dostaneme druhý vzor zprávy M. Složitost je 2 n/2 (seznam M i ) + 2 n/2 (seznam N j ) + 2 n-k (seznam Mlink l ) + 2 k (seznam K t ) = 2 n/2+1 + 2 n-k + 2 k 2 n/2+1 + 2 n-k+1. To je mnohem méně než 2 n. - 29 -

13.4. Závěr k novým zjištěním kryptoanalýzy iterativních hašovacích unkcí. Řada předních kryptologů se shoduje v tom, že je nutno zahájí práce na veřejné mezinárodní soutěži na nový koncept hašovacích unkcí, neboť iterativní unkce nesplňují požadované bezpečnostní vlastnosti. Uvedené odhalené vlastnosti jsou teoretického rázu, ale jednoho dne by se mohly projevit zcela prakticky. Proto je nezbytná změna konceptu. 14. NIST plánuje přechod na SHA-2 do r. 2010 Americký standardizační úřad NIST, který za standardy hašovacích unkcí odpovídá, vydal 25. 8. 2004 prohlášení k tehdejším současným výsledkům na [NIST05a], z něhož vyjímáme: Doporučuje se používat třídu unkcí SHA-2. Do roku 2010 se předpokládá opuštění i SHA-1 a přechod na SHA-2. Po oznámení možnosti nalézt kolizi SHA-1 za 2 69 operací NIST 23. 2. 2005 potvrdil svoje dřívější stanovisko [NIST05b]. 15. Závěr: Které techniky jsou a nejsou bezpečné Prolomené hašovací unkce by se neměly používat tam, kde se jedná o nepopiratelnost, tedy u digitálních podpisů. Klíčované hašové autentizační kódy zpráv HMAC ani pseudonáhodné unkce PRF a pseudonáhodné generátory PRNG, které používají hašovací unkce jako nástroje, zatím nejsou současnou kryptoanalýzou dotčeny. Je tu ale možné riziko pramenící z toho, že máme jen velmi málo inormací o technikách prolomení současných hašovacích unkcí a že lze v této oblasti očekávat pokrok. To je hrozba, kterou si každý musí ohodnotit. Dále víme, že iterativní konstrukce hašovací unkce vede k rozporu s vlastnostmi náhodného orákula. To může časem také přinést nová odhalení vlivu této konstrukce na kvalitu PRNG s těmito hašovacími unkcemi. 15.1. Doporučení Je vhodné provést revizi všech aplikací, kde jsou použity hašovací unkce MD4, MD5, SHA-0, RIPEMD a HAVAL-128. Je-li některá z těchto unkcí použita pro účely digitálních podpisů (s klasickým účelem zajištění nepopiratelnosti), je nutno tuto unkci nahradit. U unkce SHA-1 je nutné ji nahradit nebo zvážit riziko jejího ponechání v každé aplikaci. Jde zejména o možnost vzniku škody "zpětně", tj. argumentací v budoucnu, kdy by byla SHA-1 prolomena, že mohla být prolomena již teď, tj. v minulosti. Podle okolností provést náhradu za některou z unkcí SHA-2, které jsou zatím považovány za bezpečné (SHA-256, SHA-384 nebo SHA-512, nejlépe SHA-512 [SHA-1,2]). U unkce SHA-1 zahájit nebo naplánovat v brzké době její výměnu za některou z unkcí z třídy SHA-2. Není-li to možné, zvážit riziko jejího dalšího používání. Je-li některá z uvedených těchto unkcí použita pro účely HMAC nebo PRNG, individuálně posoudit, zda je toto užití bezpečné nebo ne. - 30 -