HASHOVACÍ FUNKCE - CHARAKTERISTIKA, IMPLEMENTACE A KOLIZE HASH FUNCTIONS - CHARACTERISTICS, IMPLEMENTATION AND COLLISIONS

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

vá ro ko Sý ětuše Kv

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

Karel Kohout 18. května 2010

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í

Vybrané útoky proti hašovací funkci MD5

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,

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

Bezpečnost vzdáleného přístupu. Jan Kubr

Šifrová ochrana informací věk počítačů PS5-1

Hashovací funkce a SHA 3

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

HASHING GENERAL Hashovací (=rozptylovací) funkce

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


Šifrování ve Windows. EFS IPSec SSL. - Encrypting File System - Internet Protocol Security - Secure Socket Layer - Private Point to Point Protocol

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

Certifikační prováděcí směrnice

Hashovací funkce. Andrew Kozlík KA MFF UK

Šifrová ochrana informací věk počítačů PS5-2

UKRY - Symetrické blokové šifry

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

Šifrová ochrana informací věk počítačů PS5-2

Informatika Ochrana dat

Moderní kryptografické metody

Kryptografie - Síla šifer

PA159 - Bezpečnostní aspekty

Bezpečnostní problémy VoIP a jejich řešení

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

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

SSL Secure Sockets Layer

Jednocestné zabezpečení citlivých údajů v databázi

Vyhledávání, zejména rozptylování

Šifrování flash a jiných datových úložišť

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

Bezpečnostní normy a standardy KS - 6

A. Poznámka k lineárním aproximacím kryptografické hašovací funkce BLUE MIDNIGHT WISH

Šifrová ochrana informací věk počítačů KS - 5

MINIMÁLNÍ POŽADAVKY NA KRYPTOGRAFICKÉ ALGORITMY. doporučení v oblasti kryptografických prostředků

Paměť počítače. alg2 1

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

Desktop systémy Microsoft Windows

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

Bezpečný JPEG Úvod 2. JPEG Vlastnosti JPEG /

Moderní metody substitučního šifrování

Datové struktury 2: Rozptylovací tabulky

Šifrování. Tancuj tak, jako když se nikdo nedívá. Šifruj tak, jako když se dívají všichni! Martin Kotyk IT Security Consultnant

212/2012 Sb. VYHLÁŠKA

POPIS STANDARDU CEN TC278/WG4. 1 z 5. Oblast: TTI. Zkrácený název: Zprávy přes CN 4. Norma číslo:

Technická komise ISO/JTC1/SC 27 Technická normalizační komise ÚNMZ TNK 20

SIM karty a bezpečnost v mobilních sítích

Robert Hernady, Regional Solution Architect, Microsoft

MFF UK Praha, 29. duben 2008

POPIS STANDARDU CEN TC278/WG4. Oblast: TTI. Zkrácený název: Zprávy přes CN 3. Norma číslo:

DEMONSTRAČNÍ APLIKACE HASHOVACÍCH ALGORITMŮ SHA-1 A SHA-2

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

Systémy digitálního vodotisku. Digital Watermarking Systems

Řízení pohybu stanice v simulačním prostředí OPNET Modeler podle mapového podkladu

asymetrická kryptografie

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

MĚŘENÍ A ANALÝZA ELEKTROAKUSTICKÝCH SOUSTAV NA MODELECH. Petr Kopecký ČVUT, Fakulta elektrotechnická, Katedra Radioelektroniky

Analýza síťového provozu. Ing. Dominik Breitenbacher Mgr. Radim Janča

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

PV157 Autentizace a řízení přístupu

Andrew Kozlík KA MFF UK

Kryptoanalýza. Kamil Malinka Fakulta informačních technologií. Kryptografie a informační bezpečnost, Kamil Malinka 2008

Postranními kanály k tajemství čipových karet

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

DSY-6. Přenosový kanál kódy pro zabezpečení dat Základy šifrování, autentizace Digitální podpis Základy měření kvality přenosu signálu

Profilová část maturitní zkoušky 2017/2018

Novinky ve Visual Studio Tomáš Kroupa

1 Nejkratší cesta grafem

Mifare Mifare Mifare Mifare Mifare. Standard 1K/4K. Velikost paměti EEPROM 512bit 1/4 KByte 4KByte 4/8/16 KByte 4-72 KByte

Základy algoritmizace. Hašování

Směry rozvoje v oblasti ochrany informací KS - 7

HASHING GENERAL Hashovací (=rozptylovací) funkce

Kryptoanalýza šifry PRESENT pomocí rekonfigurovatelného hardware COPACOBANA

ElGamal, Diffie-Hellman

symetrická kryptografie

Softwarové komponenty a Internet

Identifikace a autentizace

Šablony, kontejnery a iterátory

CASE. Jaroslav Žáček

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ

Data Encryption Standard (DES)

Profilová část maturitní zkoušky 2013/2014

Úvod do programovacích jazyků (Java)

Protiopatření eliminující proudovou analýzu

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

Problematika náhodných a pseudonáhodných sekvencí v kryptografických eskalačních protokolech a implementacích na čipových kartách

Základy kryptografie. Beret CryptoParty Základy kryptografie 1/17

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

Architektura protokolů

Základy teorie grupoidů a grup

Datové struktury. alg12 1

Dynamicky vázané metody. Pozdní vazba, virtuální metody

1. Programování proti rozhraní

INTEGRACE IS DO STÁVAJÍCÍ HW A SW ARCHITEKTURY

Kryptologie: Zahrnuje kryptografii a kryptoanalýzu (někdy se také uvádí, že obsahuje steganografii tajnopis).

Použití analyzátoru paketů bezdrátových sítí Wireshark

Transkript:

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY FAKULTA ELEKTROTECHNIKY A KOMUNIKAČNÍCH TECHNOLOGIÍ ÚSTAV TELEKOMUNIKACÍ FACULTY OF ELECTRICAL ENGINEERING AND COMMUNICATION DEPARTMENT OF TELECOMMUNICATIONS HASHOVACÍ FUNKCE - CHARAKTERISTIKA, IMPLEMENTACE A KOLIZE HASH FUNCTIONS - CHARACTERISTICS, IMPLEMENTATION AND COLLISIONS DIPLOMOVÁ PRÁCE MASTER S THESIS AUTOR PRÁCE AUTHOR VEDOUCÍ PRÁCE SUPERVISOR Bc. JAN KARÁSEK ING. PETRA LAMBERTOVÁ BRNO 2009

Anotace autentizace informací kryptografických protokolech, ke komparaci a tu ná funkci. Posledním úkolem je tuto funkci implementovat a implementovat i kolize na ni. V úvodních kapitolách je v popsány vlastnosti, mi ací funkce postavené na základních bitových operacích, dokonalé i praktickým Je popsán základní vzhled a ovládání programu, na který navazuje V týka H ; ; ; ; MD5; FNV; útoky; kolize; multikolize; kompresní funkce; tunelování; C#

Abstract Hash functions belong to elements of modern cryptography. Their task is to transfer the data expected on the entry into a unique bite sequence. Hash functions are used in many application areas, such as message integrity verification, information authentication, and are used in cryptographic protocols, to compare data and other applications. basic characteristics and use. Next task was to focus on one hash function, in particular MD5, and describe it properly. That means, to describe its construction, safety and possible attacks on this function. The last task was to implement this function and collisions. The introductory chapters describe the basic definition of hash function, the properties of the function. The chapters mention the methods preventing collisions and the areas were the hash functions are used. Further chapters are focused on the characteristics of various types of hash functions. These types include basic hash functions built on basic bit operations, perfect hash functions and cryptographic hash functions. After concluding the characteristics of hash functions, I devoted to practical matters. The thesis describes the basic appearance and control of the program and its individual functions which are explained theoretically. The following text describes the function MD5, its construction, safety risks and implementation. The last chapter refers to attacks on hash functions and describes the hash function tunneling method, brute force attack and dictionary attack. Keywords Hash functions; perfect hashing; cryptographic hash functions; hash; MD5; FNV; attacks; collisions; multi-collisions; compression function; tunneling; C#

KARÁSEK, J. Hashovací funkce - charakteristika, implementace a kolize. Brno: Vysoké s. Vedoucí diplomové práce Ing. Petra Lambertová. XY

impleme a s v práci a uvedeny v seznamu literatury. s charakteristika, souvislosti následujících autorského zákona ustanovení V Rosicích dne 25. 5. 2009 Bc. Jan Karásek

diplomové práce., jejich zájem a za stálou podporu V Rosicích dne 25. 5. 2009 Bc. Jan Karásek

Obsah Obsah... 1... 4 Seznam tabulek... 4 1. Úvod... 5 2.... 6 2.1.... 6 2.2.... 6 2.3.... 7 2.4. lizím... 8 2.4.1.... 8 2.4.2.... 9 2.4.3.... 9 2.5. V... 9 2.5.1.... 9 2.5.2. Autentizace informací... 10 2.5.3. Kryptografické protokoly... 11 2.5.4. Pseudonáhodné generátory... 12 2.5.5.... 12 2.5.6. Ukládání hesel... 13 2.5.7.... 13 3.... 14 3.1. Metod... 15 3.2.... 16 3.3. Metoda násobení (Multiplication method)... 16 3.4. Metoda rozkladu (Folding method)... 17 3.5. Fibonaccih... 17 3.6.... 19 4.... 20 4.1.... 20 4.2. Larson-... 21 4.3.... 22 4.4.... 22 1

5.... 23 5.1. MD funkce... 23 5.1.1. MD... 23 5.1.2. MD2... 23 5.1.3. MD3... 24 5.1.4. MD4... 24 5.1.5. MD5... 25 5.2. SHA funkce... 25 5.2.1. SHA-0 a SHA-1... 25 5.2.2. SHA-2... 26 5.3. RIPEMD... 27 5.4. Haval... 27 5.5. Tiger... 28 5.6. Snefru... 28 5.7. Whirlpool... 29 5.8. Panama... 29 5.9. GOST... 30 5.10. HAS-160... 30 5.11. LM Hash... 30 5.12. N-Hash... 31 5.13. Grindahl... 31 5.14. Radiogatún... 32 6. Základní popis programu... 33 7.... 35 7.1. Implementace funkce... 35 7.2.... 36 8.... 37 8.1.... 37 8.1.1. Zarovnání zprávy... 37 8.1.2. Damgard-Merklovo zesílení... 37 8.1.3. Konstrukce kompresní funkce... 39 8.2.... 40 8.2.1. Zarovnání zprávy (viz kapitola x.x)... 40 8.2.2. Damgard-Merklovo zesílení (viz kapitola x.x)... 40 8.2.3. Inicializace bufferu funkce... 40 2

8.2.4. Blokové zpracování zprávy... 40 8.3.... 41 9.... 46 9.1.... 46 9.2.... 47 9.3. Kolize kompresní funkce... 47 10. Útoky na funkci MD5... 48 10.1.... 48 10.1.1. Základní postup hledání kolizí... 49 10.1.2.... 50 10.1.3. Implementace vyhledávání kolizí... 52 10.1.4.... 53 10.2.... 55 10.2.1. Útok hrubou silou... 55 10.2.2. Implementace útoku hrubou silou... 56 10.2.3. Slovníkový útok... 57 10.2.4. Implementace slovníkového útoku... 57 11.... 59 Literatura... 60... 63... 64 3

Obr. 1: Základní obrazovka programu... 33 Obr. 2: Menu aplikace... 34... 34... 36... 38 Obr. 6: Davies-Meyerova kompresní funkce... 39... 41... 44... 45 Q[x] a výsledku IVH... 49 Obr. 11: Princip útoku na funkci MD5... 50 Obr. 12: Rovnice tunelu Q9... 51 Obr. 13: Tunel Q9... 51 Obr. 14: Implementace kolizí podle Vlastimila Klímy... 53... 55 Obr. 16: Implementace útoku hrubou silou... 57 Obr. 17: Implementace slovníkového útoku... 58 Seznam tabulek Tab. 1: Hodnoty a odpovídající délkám slova W... 18 4

1. Úvod i. S ha originálního hesla v e porovnávána tato í je mnoho, je to proto velice zajímavé téma a proto jsem si je vybral pro zpracovávání jako diplomovou práci. funkci. Posledním úkolem je tuto funkci implementovat a implementovat i kolize na ni. V úvodních kapitolách obecný popis a, a budou rozebrány rá je a bude na ní ukázána i praktická implementace a kolizní test. nejznám bude poukázáno na její slabosti v rozebráno, jak funguje, a prakticky implementována v jazyce C#. Po implementaci jejich praktická ukázka. 5

2. Popis ha ovací funkce 2.1. Obecný popis ha ovací funkce pevné délky. Tato výstupní posloupnost chara otisk nebo (výsledná se bude od ). pu 2.2. posloupnost D h R h: D R, kde D R [2.1] Z (x, y), x y h(x) = h(y) ch vstupních dat ha. ou í je a být stejné délky [10] 6

2.3. v vlastnostem Krypt v základním realizována v o funkcích vlastností, které tyto pojmy n [31] uvádí: V1. Praktická efektivnost: Pro dané x h(x) x). V2. Mixující zobrazení x má výstupní hodnota "náhodný" charakter (Maova [26] V vstupy x, y (x y), aby h(x) = h(y). V4. Rezistence prvního vzoru h nalézt vst x h = h(x). V5. Rezistence druhého vzoru x nalézt y h(y) = h(x). Tato vlastnost se od vlastnosti V V6. Reziste dva vstupy x, y (x y) h(x) a h(y) kolize j 7

Na základ V1-V : OWHF (One-Way Hash Function) V1+V2+V4+V5; funkce, kterou její výstup. Ze zadaného x tedy lze snadno získat f(x) získání x f(x) výsledku funkce odvodit CRHF (Collision Resistant Hash Function) V1+V2+V dokazuje sporem. 2.4. konstrukci algoritmu komplexním postupem od zesílení i bity dosáhnout výsledku s ideálním m. Problematice kryptografických funkcí a bych rád nastínil obecné kolizí, základ k tím h(x) = h(y) a x y í funkce vstupu x, je stejný jako y. V e místo v. základních 2.4.1. V tabulce se Poslední vkládání do tabulky. 8

2.4.2. který je x funkcí h(x) a adresa, kam mají být, h(x)+s, kde s > 0 je krok, v vkládání se tak nestalo nekon vkládání hodnot, u kterých nedochází k 2.4.3. Metoda s v zvolit n, pokud by stále docházelo ke kolizím. 2.5., díky jedné ze svých vlastností bezkoliznosti 1 v ej 2.5.1. ntegrity S ch kód je odhalení chyby v informacemi odeslanými. 2 zprávy a ten je poslán s 1 Bezkoliznost nebo a í je pouze 2 n uvedeného vyplývá stejnou v 2 (MIC). 9

s vlastnostmi, které mohou data opravit. disponuje i Cyclic Redundancy Check), anou k ukládání dat. Pro svou jednoduchost a dobré matematické vlastnosti jde o velmi ov daty,, nebo ání chyb vzniklých v slabý. [2] 2.5.2. Autentizace informací Místo toho být v., její takovéhoto postupu. [2] (MAC) A se nazývá MAC (Message v tom funkce není jen výsledkem zpracovávaných dat Z, ale i tajného k K. 10

MAC (Z) A ( Z, K ) [2.2] K tuto, a proto se. [2] (HMAC) Výsledek této funkce se nazývá HMAC (H -1. HMAC je definován jako: Pro lze HMACK (Z) h K opad h K ipad Z [2.3] V rovnici [3.2], h K Z je zpráva, nad kterou je kód 3, opad je ipad Konstrukce kódu HMAC byla poprvé publikována roku 1996 Mihirem Bellarem, HMAC-SHA-1 a HMAC- protokolech IPSec 4 a SSL/TLS 5. [2] 2.5.3. Kryptografické protokoly V a celé délce jejího trvání. protokolu IPSec jako 3 e o logickou 4 IPS informací v 5 ako www, 11

k protokolech TLS a SSL nebo SSH 6. druhého vzoru. Dále protokolu S/MIME (Secure Multipurpose Internet Mail Extensions), zpráv. [2] i 2.5.4. Pseudonáhodné generátory Pseudonáhodný generátor je efektivní deterministický program, který generuje náhodných posloupností. z K, kterého lze tolik, kolik, seed displeji, Nap [2] náhodným nastavením seed takto: H s H( seed 0x00000000), H( seed 0x00000001), H( seed 0x00000002)... [2.4] 2.5.5. obsahu jsou porovnávány jen jejich, bez znalosti jejich 6 12

známých peer-to-peer sítích, v databázích apod. 2.5.6. Ukládání hesel V se hesla neukládají text, ale ukládají se, í. Jde o funkci, ve které je k lze zabránit slovníkovému útoku, nebo útoku hrubou silou. nevyhovující, nebyla dokázána jejich nespolehlivost., -1. Tyto funkce se stále 2.5.7. odpovídajícími daty poli nebo jiném homogenním datovém typu. Homogenní datový pu. na jiným zvolení velikosti homogenní datové st 7. [2] 7 pních dat. 13

3. Charakteristika obecné funkce a podle kterých lze této kapitole ovací funkci vybudovat [11] : 1. v kolizí, které l 8 2. se -Black stromech 9 8 se, vkládání. 9 Redasociativního pole. Asociativní pole je pole, kde nejsou prvky indexovány pomocí dynamické 14

3.1. x M funkce. V M je vhodné zvolit M M liché, je i výsledek funkce h(x) M sudé, je výsledek h(x) sudý. Tato M byla mocnina dvou (M = 2 k ), kde k > 1. V k- z x x. Z M x, nikoliv pouze na spodních k-bitech. mu je konstantní. místa v V rovnici [4.1] M, a mod je funkce modulo 10. [7] x h(x) x mod M [3.1] 10 celo- 15

3.2. M, které je k-tou mocninou dvou (M = 2 k ), pro k >= 1. Potom h(x) je výsledkem funkce: h( x) M W x 2 mod M [3.2] V rovnici [4.2] M i W W/M = 2 w-k je také mocninou dvou. Abychom mohli vynásobit výraz (x 2 mod W) výrazem M/W posuneme bity doprava o w-k k- etody. [27] 3.3. Metoda násobení (Multiplication method) nazývá metoda násobení x x zvolenou konstantou a k- h( x) M W a x mod M [3.3] Jak je vhodné zvolit konstantu a s na a takové nebo na konci. Mimoto, jestli vybereme a takové W, pak existuje a'. Jinými slovy, a' je inverzní výsledku (a mod W 16

vlastnost x a vynásobíme jej a, dostaneme ax x násobením výsledku ax inverzní hodnotou a', viz rovnice [4.4]. axa' aa' x 1x [3.4] která se v W = 2 32 ) je a = 2654435769, = ani na konci. Dále, hodnota a a W = 2 32 a'= 340573321. [28] 3.4. Metoda rozkladu (Folding method) x a,b,c M, viz rovnice [4.5]. [17] H( x) ( a b c) mod M [3.5] 3.5. speciální hodnoty pro konstantu a. Hodnota a takto: x ku y je stejný jako x+y ku x a x a y lze 11 x y x y x 0 x 2 xy y 2 0 2 1 [3.6] 1 2 5 11 se 17

12. Fibonacciho.7], [4.8], [4.9]: Fn 1 5 n n [3.7] 1 5 1 5 2 a [3.8], [3.9] 2! V, ale její inverzní hodnota -1, kterou lze at podle rovnice [4.10]: 1 2 1 5 2 1 5 5 1 5 1 5 1 0,618033887 2 [3.10] ní je v W W. a vybrána -1 W. Následující tabulka ukazuje W a 2 16 40503 2 32 2654435769 2 64 11400714819323198485 Tab. 1: Hodnoty a odpovídající délkám slova W a -1 W celé po [14] 12 18

Graf 1 3.6. FNV v práci demonstrovány i prakticky. Tyto funkce jsou ní dat v. Nejsou kryptograficky a jsou náchylné ke kolizím. FNV (Fowler/Noll/Vo). Základní Funkce je velice rychlá a generuje jen porovnání s ostatními funkcemi tohoto typu. Praktické implem, v obecných i, unixových implementacích souborového systému NFS, dále a v a také funkci k Visual C++ 2005. [8], [28] 19

4. Charakteristika dokonalé Jedná se S áno od -1) bez kolize. Dokonalá S v dokonalé U statických metod dokonalého v takových aplik dokonalé n amické, podle toho, zda se se proto statických funkcí bude uvedeno Cormackovo a Larson- Jako zástupci dynamických funkcí budou uvedeny. [32] Vlastnosti dokonalých Nenastávají kolize 4.1. h i (x,r). Funkce h(x) do primárního souboru (pevné ve h(x) dokonalého se ukládají mají pevnou velikost, 20

s u. v - H i ( x, r) ( x mod (2i 100r 1)) mod r, x 2i 100r 1 [4.1] V rovnici [5.1] je, x i r primárním souboru a mod je funkce modulo. [3] 4.2. Larson- 13 M*d M esného prostoru a d je velikost pomocné M h i M s i k. k, pomocí h i (k) s i (k) adresy stránek s výsledkem funkce h i (k), k. Porovnáme nastaven jako sep s i (k). 13 - princip je v tabulce, jak je tomu u 21

4.3. roce 1979, vstupu x h(x) rozprostírat - o velikosti d, která je a logaritmu z d ukazatelem na stránku s daty. í dat, podíváme se na prvních d výsledku a, jako ukazatele v v posledním bitu, slévat. [13], a aktualizujeme 4.4. ívaná v Základ je, n operací vkládání stránku n posledních 1 m stránek, vezmeme log 2 m m, zanedbáme horní bit a [23] 22

5. Charakteristika kryptografické popsány v první kapitole. Pro í je taková funkce, mezi její vlastnost. V této kapitole charakterizuji y vybrána jedna z implementace a metody kolizí. Implementace funkce a kolizí bude provedena prakticky psána v 5.1. MD funkce 5.1.1. MD, vyvinuté Ronaldem Rivestem, profesorem Massachusettského technologického institutu a jedním z -systému RSA. Funkce nikdy práci podpis zprávy, otisk nebo termín v této diplomové 5.1.2. MD2 Jedná se o první publikovaný algoritmus z rodiny funkcí MD, procesory s Byl n Ronaldem Rivestem a publikován v dubnu 1992 jako RFC 1319. ti. Ve dr opakování kompresní funkce, která aktualizována, 23

V roce 1997 byl pány Rogierem a Chauvaudem popsán útok na kompresní f roce 2004 byl demonstrován útok s [4], [34] 104 5.1.3. MD3 Algoritmus nebyl nikdy publikován a byl tém 5.1.4. MD4 roku 1990 profesorem Ronaldem Rivestem z operace. Návrh tohoto algoritmu ovlivnil i v s systémech Microsoft Windows NT, XP a Vista. Varianta tohoto algoritmu s k, jako jsou protokolu rsync 14. 64 o,, bloky dat nich obsahuje 16 podobných matematických operací, funkci f, bitovém exkluz a Slabina algoritmu MD4 byla demonstrována Denem Boerem v roce 1991. První útok kolizí byl proveden Hansem Dobbertinem v roce 1996 a v roce 2004 Xiaoyun funkcí [35] 14 o unixové systémy, který synchronizuje soubory a rozdíly mezi soubory. 24

5.1.5. MD5 Jedna z MD4 a publikována v dubnu roku 1992. Algoritmus s roce 1991 jako náhrada za data do velikosti 2 64 512, pracuje i tato s 32 bitových slov. K 16 ní funkci f a levé bitové rotaci. Výsledná Antoonem Bosselaersem. Publikovali výsledek hledání pseudo-kolizí na MD5 kompresní Whirlpool, SHA-1 a RIPEMD-160. V kce jako roce kryptolog Vlastimil Klíma a publikoval 18. b nazval tunelování. [18-22] [36] 5.2. SHA funkce 5.2.1. SHA-0 a SHA-1 První specifikace algoritmu známého jako SHA- roce 1993 jako (National Institute of Standards and Technology) ze Spoje 180-1, který je znám pod zkratkou SHA-1. SHA- -0 jen jednou bitovou rotací v upravené h 25

funkci SHA- a MD5 o 64 bitových slov, tedy o velikosti po 32 bitech. Algoritmus v bitový vstup, pomocí kterého modifikuje kontext. Vstupní blok dat je v bitové rotaci. [15] 5.2.2. SHA-2-2 tato zkratka nikdy nebyla standardizována. Jednotlivé jsou SHA-224, SHA-256, SHA-384 a SHA- leny v roce 2001 jako standard FIPS PUB 180- roce 2002. V únoru roku 2004 i SHAv -256 pracuje s -512 s jsou v -224 a SHA-3 verze prvních dvou funkcí. Funkce SHA-256 resp. SHA- 64 bloky k SHA-512 resp. SHA- 128 U funkcí SHA-2 dochází k daleko komplik -, [16] 26

5.3. RIPEMD Antoonem Bosselaersem a Bartem Preneelem. Zkratka RIPEMD znamená Race Integrity roce produkuje v tuto rodinu. RIPEMD- aplikacemi, které pracují s takovouto délkou k -160 RIPEMD-256 a RIPEMD- aplikacích, - 2 64-128/256 pracují s bloky dat o velikost funkce RIPEMD-160/320 s [37] 5.4. Haval Pieprzyk a Jennifer Seberry. Poslední úpravy na tomto algoritmu byly provedeny v roce 1997, kdy byla nalezena kolize na algoritmu s vní 128 n [12] bloky dat o velikosti a výsledná -bitový délce 512 27

5.5. Tiger a 64 princip nelineárními funkcemi. V roce 2006 byl publikován výzkum, který odhalil kolize pro funkci omezenou 16-20- - Exist [39] 5.6. Snefru která podporuje 128bitový a 256bitový výstup. Funkce nese jméno po egyptském kryptologové Eli Biham a Adi Shamir. Algoritmus funkce byl poté modifikován 88,5 operací, a tak tento útok je prozatím v p - nich je smícháno s H. Funkce bere jako vstup 512 bitový vzorek dat a produkuje m-bitový výstup. Funkce H unkci E m posledních m bit výstupu. Funkce E generuje náhodná data v 64 rund 15, kde v jako [6] 15 28

5.7. Whirlpool -0 byla podrobena analýze v projektu NESSIE 16 -T, která byla zahrnuta do portfolia kryptografických primitiv tohoto projektu. V této funkce. Ta byla posléz ikosti 2 256-3:2004. í ISO pod 17. Operuje se zprávami délce 512 m 1, m 2 n H 0, H 1 n ). H 0 H i se m i H i-1 a výsledek XORuje s vstupy do b m i a H i-1 H n. [39] 5.8. Panama Clappem a prezentována v roce 1998 na konferenci FSE (Fast Software Encryption). Funkce pracuje na principu posuvného registru s posouváním bitového slova o kruhovou mixující funkcí pracující se slovy o velikosti 17x32 ímá blok dat o velikosti 2 64 Na konferenci FSE v 6 k praktickému [30] 16 NESSIE (New European Schemes for Signatures, Integrity and Encryption) byl Evropský výzkumný projekt v letech 2000-17 AES Advanced Encry ací s 29

5.9. GOST GOST 34.311- roce 1994, definována standardy GOST R 34.11-94 a ruském digitálním podpise. Je bitový, jako je MD5 a SHA [25] 5.10. HAS-160 Funkce pracuje dohromady s korejském digitálním podpise. Jedná se v -1 s bezpe anglickém [1] 5.11. LM Hash LM Hash neboli Lan Manager Hash je jeden z je 18 vyplynou 8bytové hodnoty, které jsou spojeny do 16 LM hash. stanty KGS!@#$%. Z toho 18 DES ra, vyvinutá v 30

a, na polovinu. [24] 5.12. N-Hash á na algoritmu FEAL (Fast Data Encipherment O Shamirem. roce 1990 týmem Shojiho Miyaguchiho. i byla publikována zpráva o jejích slabinách Eli Bihamem a Adi kombinován s 128bitový výstup. [5] e je 5.13. Grindahl Encryption) v roce 2007. Jejími autory jsou Lars R. Knudsen, Christian Rechberger a. Funkce Grindahl existuje ve dvou variantách, a to jako Grindahl-256 a Grindahl-512. Funkce jsou av této funkce. S transformace: SubBytes, ShiftRows, MixColumns a AddRoundKey. SubBytes je závislosti funkcí nou posledního bytu pole. MD5, [9] 31

5.14. Radiogatún roce 2006 na konferenci Second Cryptographic Hash Workshop v é Panama, této funkce. Radiogatún obsahuje dva základní prvky, které vycházejí z konstrukce Panamy, ýt od 1 do bitových platformách. bitových. Jednou z výhod je vysoká výkonnost a díky [33] 32

6. Základní popis programu tvrzení o mohl navazovat kapitolami zabývají tak na tomto mí operoval v jsem zvolil programovací jazyk C#, se kterým jsem V tomto jazyku jsem implementoval verzi 2009.1. grafických komponent firmy DevExpress 19 ve Na obr. 1 Obr. 1: Základní obrazovka programu 19 drese http://www.devexpress.com 33

obr. 2) v ukázkou na programu, problematika ha horního menu, tzv. ribbon menu (viz, teoreticky i prakticky a s názornou Obr. 2: Menu aplikace V monitoru (viz obr. 3), monitor v disku, c Obr. 3 d 34

7. v kapitole 3.6. jazycích, datový funkce byla popsána mnoha programech, programovacích 7.1. Implementace funkce BaseHaseFunctions. Jednou z operaci bitové negace a (výsledek z a a s i-tým [8], [28] public static long FNVHash(String str) { uint fnv_prime = 0x811C9DC5; uint hash = 0; for (int i = 0; i < str.length; i++) { hash *= fnv_prime; hash ^= (char)str.tochararray().getvalue(i); } } return hash; ovací funkce i s obr. 8 v kapitole 8.3, kdy jsou testovány 35

7.2. obr. 4, s 000 ch. Brianem Kerniganem v Robertem Sedwickem v [8] open source Obr. 4 36

8. funkce MD5 Po popis a RFC 1321. B ní funkci k zadání diplomové práce. funkce MD5. u pochopení implementace. konstrukci 8.1. D = 2 64 - Ze zpracování po blocích také plyne nutnost zarovnání vstupní zprávy na [22] 8.1.1. Zarovnání zprávy Zarovnání musí být takové, aby jeho zarovnání bylo realizováno samými nulami, zarovnané a by jako první bit 1 a dá Dle [36] musí platit rovnice [8.1]: ( délka bloku zprávy délka zarovnání) mod 512 448 [8.1] 8.1.2. Damgard-Merklovo zesílení zprávy. -Merklovo zesílení, které bylo nezávisle bitovým zprávy do délky D = 2 64-1 [22] 37

V - obr. 5 H 0 IV). Dále je na m i s H i-1, nebo v funkce s inicia H 0 m n H n. [22] Obr. 5 cí funkce 38

8.1.3. Konstrukce kompresní funkce la by být robustní, aby zajistila jako náhodné orákulum. Jako náhodné orákulum je nazýv definována podmínka, pokud se na vstupu objeví jistá hodnota vícekrát, náhodné chovala jako náhodné orákulum. Cílem je, aby se kompresní funkce k také chovat jako náhodné orákulum. Dále k E k (x) se má [8.2]: -li H E ( H ) 1 [8.2] i mi i ato konstrukce se nazývá Davies- Meyerova. Davies- rovnici [8.3] a na obr. 6. [22] H E [8.3] i mi( H i 1) XOR H i 1 Obr. 6: Davies-Meyerova kompresní funkce 39

8.2. b nemusí být násobkem osmi a : m 0, m 1 m b-1. V následujících zprávy: 8.2.1. Zarovnání zprávy (viz kapitola x.x) 8.2.2. Damgard-Merklovo zesílení (viz kapitola x.x) 8.2.3. Inicializace bufferu funkce A, B, C, D A = 0x67452301, B = 0xEFCDAB89, C = 0x98BADCFE, D = 0x10325476. 8.2.4. Blokové zpracování zprávy Na obr. 7 M 0, M 1, M 2 15 a je F s jiných permutacích. Na obrázku bitovým slovem M i. F, G, H, I a v K i H i-1 ) k MD5 je jako -Mayerova konstrukce, operace XOR je nahrazena 32. Tak vznikne nový kontext H i. Pokud by zpráva A, B, C, D celkovým výsledkem. Pokud byla posledního bloku. Výsledkem funkce je 128bitová [36], [18-22] 40

Obr. 7 8.3. V jazyku C# Z této HashAlgorithm ní ída. a funkce bude volat. Implementace MD5 jiném jmenném prostoru (namespace MD5 nedojde. 41

namespace DiplomovaPrace.BusinessLogic.HashFunctions { public class MD5 : HashAlgorithm { } } HashAlgorithm první z nich je metoda Initilize(), druhá a HashFinal(). v bufferu, v A, B, C a D. Tento buffer je v programu implementovaný jako 4 prvkové pole typu uint (unsigned integer memoryregister. Dále je inicializována hodnota, která 512 a hodnota override public void Initialize() { } memoryregisters[0] = 0x67452301; memoryregisters[1] = 0xEFCDAB89; memoryregisters[2] = 0x98BADCFE; memoryregisters[3] = 0x10325476; // Pametovy registr A // Pametovy registr B // Pametovy registr C // Pametovy registr D Druhá metoda v poli, které budou ha Tato metoda má za úkol v celistvé bloky dat o délce 512 ProcessBlock kapitole 8.3, obr. 7. Metoda funkcí, z 42

override protected void HashCore (byte[] array, int ibstart, int cbsize) { //v metodě dochází k cyklickému volání metody ProcessBlock( ), // dokud není dosaženo posledního bloku, tehdy se vrátí řízení // nadřazené třídě HashAlgorithm, a je volána metoda HashFinal() } protected void ProcessBlock(byte[] inputbuffer, int inputoffset) { //uchování paměťových registrů pro výpočet na konci uint a = memoryregisters[0]; uint b = memoryregisters[1]; uint c = memoryregisters[2]; uint d = memoryregisters[3]; //převod hodnot ze zprávy na číselné vyjádření uint[] processbuffer = ByteToUInt(inputBuff, inputoff, BlockSize); //první čtyři permutace, na obrázku x.x odpovídá M1 M4 a = this.ff(a, b, c, d, processbuffer[0], 7, 0xD76AA478); d = this.ff(d, a, b, c, processbuffer[1], 12, 0xE8C7B756); c = this.ff(c, d, a, b, processbuffer[2], 17, 0x242070DB); b = this.ff(b, c, d, a, processbuffer[3], 22, 0xC1BDCEEE); //poslední čtyři permutace, na obrázku x.x odpovídá M61-M64 a = this.ii(a, b, c, d, processbuffer[4], 6, 0xF7537E82); d = this.ii(d, a, b, c, processbuffer[11], 10, 0xBD3AF235); c = this.ii(c, d, a, b, processbuffer[2], 15, 0x2AD7D2BB); b = this.ii(b, c, d, a, processbuffer[9], 21, 0xEB86D391); } //konečná haš bloku, označovaná jako H(i) memoryregisters[0] += a; memoryregisters[1] += b; memoryregisters[2] += c; memoryregisters[3] += d; Ukázka implementace jedné z nelineárních funkcí, a to metoda F( ) v permutaci levou bitovou rotací. 43

private uint FF(uint a, uint b, uint c, uint d, uint k, int s, uint t) { return b + this.rotateleft((a + ((b & c) (~(b) & d)) + k + t), s); } HashFinal(), která je poslední z tovaných. Tato metoda má za úkol Dále jsou pak v ny. Utilities. [36] "message digest" je f96b697d7cb7938d525a2f31aaf161d0. z na obr. 8, Obr. 8 44

obr. 8 edinou implementovanou funkcí, v Tyto funkce byly v kapitole 7.2 n B do velikosti 100 MB. obr. 9 je Obr. 9 45

9. MD5 9.1. vat jako náhodné orákulum (viz 8.1.3) nalezení vzoru rovna 2 n, a Z Jak velká tedy musí ní s d Tuto otázku, zodpovídá narozeninový paradox, který asi 50% n/2 v n zpráv. [22] Narozeninový paradox abychom v paradox, M m Tento problém se nazývá narozeninový lidí je nutno dát dohromady, aby se v ve stejný den? Rovnice [9.1], s k 2 k 365 365 1 365 k 2m p( m, k) 1 1 e [9.1] 365 365 365 Pro velké m k rovná m (viz rovnice [9.2]): 1 2 m log 2 m m 1 2 k 2 e [9.2] S 50% m lidí, aby nastala kolize, pro 365 dní je to 23 lidí. [22] 46

9.2. Multikolize je r-násobná kolize, kdy r na N s 9.3]: tomu, abychom r N n r 1 / r 2, [9.3] 2 n/2. n/2 n, a pro r a bude- [22] 9.3. Kolize kompresní funkce Kolize kompresní funkce f blo B 1 a B 2 f(h, B 1 ) = f(h,b 2 ). H funk - kompresní funkce implikuje bez sí [22] 47

10. Útoky na funkci MD5 a Antoonem Bosselaersem. Publikovali výsledek hledání pseudo-kolizí na MD5 jako Whirlpool, SHA-1 a RIPEMD-160. V pod vedením V roce kryptolog Vlastimil Klíma a publikoval 18. b a výzkum Dr. Wangové nazval tunelování. [21] 10.1. V roce 2004 Xiaoyun Wangová a kolektiv publikovali na konferenci CRYPTO 2004 se í. Metoda, kterou k tomuto této publikaci byly kázali jako ve modifikace zprávy, které vedly k bod verifikace (POV n bodem nejsme point of verification). U MD5 jde o bod Q[24] 29 nich pak bude 48

Metody mnohanásobné modifikace zpráv modifikují zprávu tak, aby se naplnily úvodní bod POV. n n1 jednoho tunelu o síle n 1 tunel o síle 24, tzn. 5 = 32 originálních POV oproti 2 29 nohanásobné modifikace zpráv. [18-21] 10.1.1. Základní postup hledání kolizí popsán postup hledání kolizí s algoritmu. Písmeno H nahrazuje znak *, programu nelze tento znak Q HQ. Kolidující zprávy se skládají ze dvou 512 (M, N) a (HM, HN), MD5(M, N) = MD5(HM, HN). Jsou zpracovávány po 32bitových slovech M = (x[0],..., x[15]) Q[1], ve druhém kroku Q Q[64] podle rovnic v obr. 10. Vektory Q[-3, -2, -1, 0] IV. prom IHV. Vektor IHV dále vstupuje do druhého bloku N vektor a celý postup se opakuje. Obr. 10: V e ných Q[x] a výsledku IVH 49

Na obr. 10 F, I a levé bitové rotace RL. Na ící bity mohou [21]. V prvním bloku M a druhém bloku N bloku M bloku N odmínky, tak pro bloky HM a NM platí rovnice [10.1]. HM NM H, N C, [10.1] V rovnici [10.1] je C konstantní vektor, o který se. Tento Hlavní p obr. 11., v tejná. Obr. 11: Princip útoku na funkci MD5 10.1.2. Q9 M= (x[0],..., x[15]) v Q[1..64] jako v Nyní bude uveden konkrétní 50

Tunel Q9 Podíváme-li se na obr. 12 Q[9] na i-tém bitu by se nemusela v -tý bit Q[10] bude nula a i-tý bit Q[11] vyplývá z funkce F (viz rovnice [10.2]). Q[11] a Q[12], za Obr. 12: Rovnice tunelu Q9 x AND XOR NON x AND z F( x, y, z) y [10.2] Pro ty bity i, kde Q[10] i =0 a Q[11] i =1, máme tunel podle následujícího obrázku (obr. 13). Na Q[9] i rovnicích pro Q[11] a Q[12]. Projeví se v rovnicích Q[9], Q[10] a Q[13] x[8], x[9] a x[12], zatímco Q[10], Q[11], Q[12] a Q[13] Obr. 13: Tunel Q9 hodnot zprávy x[8], x[9] a x[12] se Q[24] [21]. [21]. Q[25] a Q[64], a to dosti Q[10] i Q[11] i =1. 51

podmínek, pouze urychlují hledání kolizí. Nazýváme je, ste mnohonásobné modifikace zpráv, extra podmínky v i = 22, 23, 240, ostatní nejsou volné. Tím získáme tunel o síle 3. V práci [21] byly publi Vlastimil Klíma v [21], jiných tunely. 10.1.3. Implementace vyhledávání kolizí implementovaný celý algoritmus. zde bude A2, kde je B1( ) a B2() jedním Metoda Metoda Q[1..24]. Jak je známo z kapitoly o tunelování Q[10], Q[20], Q[13] a tunely Q[4] a Q[9] a je modifikována zpráva na pozicích x[8], x[9] a x[12]. V rovnice Q[25..64] IHV. V volána funkce B2() Ukázka hledání kolizí je zn obr. 14 Jak je z obrázku patrné, první kolize byla nalezena za 14,2 s, z toho první blok trvalo nalézt 2,3 s hledání druhé kolize je 11,15 s. 52

V [21] Obr. 14: Implementace kolizí podle Vlastimila Klímy 10.1.4. toku danému dokumentu nalézt jiný se vygeneruje k vygeneruje výhodnou pro sebe. Dal jeden bude podepsán, úmyslem. tedy do daného programu vl kolizní bloky, kter bloky. Tento bitech 53

V praxi y. Program A: static void Main(string[] args) { Console.WriteLine ("Užitečný program"); } Program B: static void Main(string[] args) { Console.WriteLine ("Zlý program, který formátuje harddisk"); } Implementace tohoto programu je inspirována [44]. static void Main(string[] args) { byte[] uzitecny = ReadBinaryFile(args[0]); byte[] zly = ReadBinaryFile(args[1]); WriteBinary("uzitecny.bin", vec1, uzitecny, zly); WriteBinary("zly.bin", vec2, uzitecny, zly); } ShowMD5("uzitecny.bin"); ShowMD5("zly.bin"); Funkce ReadBinaryFile( ) WiriteBinary( ) vektory. Nakonci programu je volána funkce ShowMD5( ), 54

Vektory ), nebo v [44]. Výstup p Obr. 15 10.2. Útoky na jedno t ou lze výsledku funkce odvodit její výstup. Ze zadaného x tedy lze snadno získat f(x) x f(x), je k 10.2.1. Útok hrubou silou testovat, -force útok, do, která se má rovnice [10.3] n = 4. Z 55

a n i 1 i ( pocet _ malych_ znaku pocet _ velkych_ znaku pocet _ cislic) [10.3] 10.2.2. Implementace útoku hrubou silou V programu je tento úto pro metodu implementována. Metoda ComputeBruteForce() rozmezí zadaných hodnot délky hesla od MD5 a její výsledek je porovnán s metoda UpdatePassword(). y ukládána do pole passwordarray, typu string, ComputeBruteForce(). v í nalezeno, Na Obr. 16 65CB59645B852C2394BA3FF8B295E83C. Tuto V nerovat, nale 8,3929936586834e17. obr. 16, 56

Obr. 16: Implementace útoku hrubou silou 10.2.3. Slovníkový útok erují s správného vý známé 10.2.4. Implementace slovníkového útoku Implementace slovníkového útoku je mnohem jed t z jednoduchou disku v implementovanou jako reakci 57

heslo Celý algoritmus funguje v e a porovnává se vzorem, dokud není nalezeno ce souboru s potenciálními hesly. Demonstrace je uvedena na obr. 17 Obr. 17: Implementace slovníkového útoku 58

11. Diplomová prác výzkumy kryptologa Vlastimila Klímy., kryptografických konferencí publikované na internetu, nebo technické specifikace Hlavním cílem diplomové práce bylo vlastnosti a oblasti aplikace. Ch metody, na kte funkcí jedna vybrána, aby byla, a metody útok. Byla vybrána funkce MD5, na které jsem ukázal konstrukci moderní funkce, poukázal na nedostatky na funkci. Nakonec byla samotná metoda i útoky implementovány. V prvních kapitolách diplomové práce jsou shrnuty základní informace týkající Jsou uvedeny jejich základní vlastnosti a v reálné praxi. V k obecných fu bení. Dále je také uvedena systémech a programech. dynamickým a rozebírám základní la pojednává o kryptografické V sedmé a osmé kapitole se zabývám implementací MD5. V kapitolách výsledky, jejich technické dokumentaci. FNV a jejich kolizí. Na tuto kapitolu úzce navazuje kapitola desátá, ve které jsou rozebrány a metoda Vlastimil Klíma, metoda útoku brutální silou a slovníkový útok praxi. V souvislosti s metodou hledání kolizí je uvedena praktická ukázka, kdy jsou generovány dv 59

Literatura [1] A Description of HAS-160. [Online] 30. 12 2003. [Citace: 10. 12 2008.] Dostupné z <http://www.randombit.net/text/has160.html>. [2] Burda, K.. Skriptum. Brno: VUT BRNO - FEKT, 2005. 104s [3] Cormackovo hashování. [Online] 11. 8 2008. [Citace: 21. 10 2008.] Dostupné z: <http://cs.wikipedia.org/wiki/cormackovo_hashov%c3%a1n%c3%ad>. [4] Chauvaud., N. Rogier and P. The compression function of MD2 is not collision free. Presented at Selected Areas in Crypto Ottawa, Canada : Carleton University, 1995. [5] Differential Cryptanalysis of Feal and N-Hash. Biham, E., Shamir, A. Dostupné z: <http://dsns.csie.nctu.edu.tw/research/crypto/html/pdf/e91/1.pdf> [6] Differential Cryptanalysis of Sneferu, Khafe, REDOC-II, LOKI and Lucifer. Biham, E., Shamir, A. <http://dsns.csie.nctu.edu.tw/research/crypto/html/pdf/c91/156.pdf> [7] Division Method. Divison Method. [Online] [Citace: 19. 10 2008.] Dostupné z: <http://www.brpreiss.com/books/opus4/html/page211.html>. [8] General Purpose Hash Function Algorithms. General Purpose Hash Function Algorithms. [Online] [Citace: 19. 10 2008.] Dostupné z: <http://www.partow.net/programming/hashfunctions/>. [9] Grindahl - a family of hash functions. Knudsen, L.R., Rechberger, Ch., Tomsen, S.S. <http://www2.mat.dtu.dk/people/lars.r.knudsen/grindahl/grindahl.pdf> [10] Hash function. Wikipedia. [Online] Wikipedia, 15. 9 2008. [Citace: 15. 10 2008.] Dostupné z: <http://en.wikipedia.org/wiki/hash_function>. [11] Hashing Methods. Hashing Methods. [Online] [Citace: 19. 10 2008.] Dostupné z: <http://www.cs.usask.ca/content/resources/tutorials/csconcepts/1998_1 /gen_hashing /2-0.html>. [12] Haval. [Online] Calyptix Labs. [Citace: 26. 11 2008.] Dostupné z: <http://labs.calyptix.com/haval.php>. [13] Fagin, R. Extendible Hashing A Fast Access Method for Dynamic Files. [Online] Dostupné z: < http://www.almaden.ibm.com/cs/people/fagin/tods79.pdf> [14] Fibonacci Hashing. Fibonacci Hashing. [Online] [Citace: 19. 10 2008.] Dostupné z: <http://www.brpreiss.com/books/opus4/html/page214.html>. [15] FIPS 180-1 Secure Hash Standar. [Online] NIST, 11. 3 1993. [Citace: 22. 11 2008.] Dostupné z: <http://www.itl.nist.gov/fipspubs/fip180-1.htm>. 60

[16] FIPS 180-2. [Online] NIST, 1. 8 2002. [Citace: 23. 11 2008.] Dostupné z: <http://www.governmentsecurity.org/articles/articles2/fips-180-2.pdf_fl/> [17] Folding Method. Folding Method. [Online] [Citace: 19. 10 2008.] Dostupné z: <http://www.cs.usask.ca/content/resources/tutorials/csconcepts/1998_1/gen_hashing /2-3.html>. [18] Klíma, V. íklady a kolize [Online][Citace: 1.5.2009]. Dostupné z: < http://cryptography.hyperlink.cz/2005/cryptofest_2005.htm >. [19] Klíma, V. 2006. Kolize MD5 do minuty aneb co v odborných zprávách nenajdete. In: Crypto-World [Online]. 2006, [Citace: 4.5.2009] Dostupné z URL: <http://www.crypto-world.info/casop8/crypto04_06.pdf>. [20] Klíma,V. 2004. Ned v ujte kryptolog m. In: Crypto-World [Online].2004, vol. 6, no.11 [Citace 9.5.2009] <http://www.crypto-world.info/casop6/crypto11s_04.pdf > [21] Klíma,V. 2006. ích funkcích: kolize MD5 do minuty [Online]. [Citace: 18.1.2009]. Dostupné z: < http://cryptography.hyperlink.cz/2006/tunely.pdf >. [22] Klíma, V. Cryptofest. Cryptofest. [Online] 19. 3 2005. [Citace: 24. 1. 2009] [23] Litwin, W., LINEAR HASHING : A NEW TOOL FOR FILE AND TABLE ADDRESSING. [Online] Dostupné z URL: <http://www.cs.cmu.edu/afs/ cs.cmu.edu/ user/christos/www/courses/826-resources/papers+book/linear-hashing.pdf> [24] LM Hash. Wikipedia. [Online] Wikipedia, 12. 10 2008. [Citace: 15. 12. 2008] <http://en.wikipedia.org/wiki/lm_hash>. [25] Mendel, F., a kolektiv. Cryptoanalysis of the GOST Hash Function. Dostupné z: <https://online.tugraz.ac.at/tug_online/voe_main2.getvolltext?pdocumentnr=80200 &p CurrP k=36649 [26] Mao, W. Modern Cryptology, Theory and Practice. Prentice Hall : 2003. [27] Middle Square Method. Middle Square Method. [Online] [Citace: 19. 10 2008.] <http://www.brpreiss.com/books/opus4/html/page212.html>. [28] Multiplication Method. Multiplication Method. [Online] [Citace: 19. 10 2008.] <http://www.brpreiss.com/books/opus4/html/page213.html>. [29] Noll, L., FNV Hash. [Online] FNV Hash. [Citace: 1. 5. 2009] Dostupné z URL: <http://isthe.com/chongo/tech/comp/fnv/history> [30] Panama. Panama. [Online] [Citace: 5. 12 2008.] Dostupné z: <http://www.quadibloc.com/crypto/co4821.htm>. [31] Pinkava, J. Hashovací funkce v roce 2004. [32] Pokorný, J., Sv. <http://www.ksi.ms.mff.cuni.cz/~pokorny/vyuka/pokorny/cont.htm> 61

[33] RadioGatun. [Online] 10. 12 2008. [Citace: 2008. 13 2008.] <http://radiogatun.noekeon.org/>. [34] RFC1319. [Online] 8 1992. [Citace: 15. 11 2008.] Dostupné z: <http://www.rfceditor.org/rfc/rfc1319.txt>. [35] RFC1320. [Online] 8 1992. [Citace: 16. 11 2008.] Dostupné z: <http://www.rfceditor.org/rfc/rfc1320.txt>. [36] RFC1321. [Online] 5 1992. [Citace: 16. 11 2008.] Dostupné z: <http://www.rfceditor.org/rfc/rfc1321.txt>. [37] The RIPMD-160. [Online] 25. 8 2004. [Citace: 25. 11 2008.] Dostupné z: <http://homes.esat.kuleuven.be/~bosselae/ripemd160.html>. [38] The Whirlpool Hash Function. [Online] 25. 11 2008. [Citace: 2. 12 2008.] Dostupné z: <http://www.larc.usp.br/~pbarreto/whirlpoolpage.html>. [39] Tiger: A Fast New Hash Function. [Online] [Citace: 30. 11. 2008] Dostupné z: <http://www.cs.technion.ac.il/~biham/reports/tiger/>. [40] William G. Griswold, Gregg M Townsend. Software parctice and experience. The Design and Implementation of Dynamic Hashing for Sets and Tables in Icon. http://www.cs.ubc.ca/local/reading/proceedings/spe91-95/spe/vol23/issue4/spe816.pdf. [41] Denis St. T., Johnson S., Cryptography for Developers. Syngres. ISBN-10:1-59749- 104-7,ISBN-13: 13-978-1-59749-104-4 [42] Schneier B., Applied Cryptography: Protocols, Algorithms, and Source Code in C, Wiley 1996. ISBN: 0471128457, 9780471128458 [43] Ferguson, N., Schneier B. Cryptography, Wiley 2003, ISBN 0471223573, 9780471223573 [44] Kaminsky, D. MD5 To Be Considered Harmful Someday.[Online] 6.12. 2004 [Citováno: 15.5.2009] Dostupné z: <http://www.doxpara.com/md5_someday.pdf> 62

kratky CRC Cycli CRHF Collision Resistant Hash Function, B DES Data Encryption Standard, FEAL FIPS Federal Information Processing Standard FNV FSE Fast Software Encryption, Rychl GB Giga byte, Jednotka objemu dat HMAC ód zprávy IEEE Institute of Electrical and Electronics Engineers IKE Internet Key Exchange, IPSec Internet Protocol Security, Kryptografický protokol LM Lan Manager, Sí MAC ód zprávy MB Giga byte, Jednotka objemu dat MD MGF Mask Generation Function, Psudonáhodný generátor NFS Network File Systém, Souborový systém NIST National Institut of Standard and Technology NSA agentura v USA OWHF PGP Pretty Good Privacy, Kryptograficka aplikace POV Point Of Verification, Bod verifikace RFC Request For Comments S/MIME Secure Multipurpose Internet Mail Exchange, Kryptografický protokol SHA SSH Secure SHell, Kryptografický protokol SSL Security Socket Layer, Kryptografický protokol TLS Transport Layer Security, Kryptografický protokol 63

A. CD A.1 \Instalace\) A.2 Zdrojové kódy programu \ZdrojoveKody\) A.3 Diplomová práce (Soubor \xkaras21.pdf) A.3 Slovník hesel (Soubor \dictionary.txt) 64