Demonstrace základních kryptografických metod

Rozměr: px
Začít zobrazení ze stránky:

Download "Demonstrace základních kryptografických metod"

Transkript

1 České vysoké učení technické v Praze Fakulta elektrotechnická Bakalářská práce Demonstrace základních kryptografických metod Petr Vlášek Vedoucí práce: Ing. Jiří Buček Studijní program: Elektrotechnika a informatika, strukturovaný bakalářský Obor: Informatika a výpočetní technika červen 2006

2 ii

3 Poděkování Tímto bych rád poděkoval rodině, přátelům, škole a vedoucímu práce, že mi umožnili pracovat nad danou problematikou. Dále pak Mgr. Michalu Křenovi za poskytnutí údajů z Českého národního korpusu. iii

4 iv

5 Prohlášení Prohlašuji, že jsem svou bakalářskou práci vypracoval samostatně a použil jsem pouze podklady uvedené v přiloženém seznamu. Nemám závažný důvod proti užití tohoto školního díla ve smyslu 60 Zákona č. 121/2000 Sb., o právu autorském, o právech souvisejících s právem autorským a o změně některých zákonů (autorský zákon). V Praze dne v

6 vi

7 Abstract The work demontrates the principles of basic cryptographic methods with using the application developed for that purpose. In this paper we describe the theoretical basics of included methods, analysis, design, implementation and other phases of development cycle of demonstration application, as well as the summary of the final product made by this work. Abstrakt Práce demonstruje principy základních kryptografických metod pomocí k tomuto účelu vytvořené aplikace. V tomto textu jsou rozebrány teoretické základy zahrnutých metod, analýza, návrh, implementace a další fáze vývojového cyklu demonstrační aplikace, jakož i zhodnocení výsledného produktu. vii

8 viii

9 Obsah Seznam ilustrací...xi Seznam tabulek...xiii 1 Úvod Vybrané metody a teorie Monoalfabetické šifry Caesarova šifra Jednoduchá záměna Polyalfabetické substituční šifry (šifry s periodickým klíčem) Transpozice Asymetrická kryptografie RSA Diffie-Hellmanovo schéma dohody na klíči Analýza Uživatelské role Obecné funkce aplikace Jednoduchá záměna (substituce monoalfabetická) Transpozice Vigenérova šifra (substituce polyalfabetická) RSA Diffie-Hellman dohoda na klíči Popisné informace Zadávání textu a jeho formát Volitelné jazykové sady Postup práce s aplikací Návrh Prostředí programovacího jazyka Existující implementace Návrh jednotlivých šifrovacích metod a uživatelského rozhraní Hlavní okno aplikace Menu Zobrazení detailů Substituce Transpozice Vigenérova šifra RSA Diffie-Hellman dohoda na klíči Průběh práce s aplikací Implementace Implementace prvků hlavního okna aplikace Implementace třídy AbstractMoreInfoDialog Implementace substituce grafické rozhraní, šifrování Implementace transpozice grafické rozhraní, šifrování...41 ix

10 5.5 Implementace Vigenérovy šifry grafické rozhraní, šifrování Využití třídy BigInteger v implementaci RSA šifrování a D-H dohody na klíči Implementace kontextové nápovědy Styl grafického rozhraní Testování Systémové testování Testování funkcí Požadavky pro spuštění aplikace Závěr Seznam použité literatury...52 A Uživatelský manuál...54 A.1 Textové oblasti pro zadání otevřeného a šifrového textu...54 A.2 Panel statistik zadaných textů...55 A.3 Panel šifrovacích operací...55 A.4 Stavový řádek...55 A.5 Spuštění jednotlivých šifrovacích metod...55 A.6 Šifrování a dešifrování substituce...55 A.7 Kryptoanalýza substituce...56 A.8 Šifrování a dešifrování transpozice...57 A.9 Kryptoanalýza transpozice...58 A.10 Šifrování a dešifrování Vigenérovy šifry...59 A.11 Kryptoanalýza Vigenérovy šifry...59 A.12 RSA generování klíčů, šifrování a dešifrování...60 A.13 Diffie-Hellman dohoda na klíči...62 A.14 Dialogy s otevíracími popisky...62 B Seznam použitých zkratek...65 C Relativní četnost výskytu písmen v češtině...67 D Obsah přiloženého CD...69 x

11 Seznam ilustrací Seznam ilustrací Ilustrace 1: Diagram obecné práce s aplikací...20 Ilustrace 2: Diagram zadání textu...21 Ilustrace 3: Diagram tříd dialogů...29 Ilustrace 4: Diagram tříd šifrovacích metod...30 Ilustrace 5: Diagram konkrétní práce s aplikací...36 Ilustrace 6: Systém výpočtu statistik textu...39 Ilustrace 7: Popis úvodního okna aplikace...53 Ilustrace 8: Okno šifrování substituce...55 Ilustrace 9: Okno kryptoanalýzy substituce...56 Ilustrace 10: Okno šifrování transpozice...56 Ilustrace 11: Okno kryptoanalýzy transpozice...57 Ilustrace 12: Okno šifrování Vigenérovy šifry...58 Ilustrace 13: Okno kryptoanalýzy Vigenérovy šifry...59 Ilustrace 14: Úvodní okno průvodce RSA...60 Ilustrace 15: Okno vytvoření klíčů průvodce RSA...60 Ilustrace 16: Okno průvodce D-H dohody na klíči...61 Ilustrace 17: Dialogové okno s popiskem detailů...62 xi

12 xii

13 Seznam tabulek Tabulka 1: Relativní četnosti nejpoužívanějších písmen ve vybraných jazycích...4 Tabulka 2: Relativní četnosti výskytu bigramů ve vybraných jazycích...5 Tabulka 3: Písmena v češtině se nejčastěji vyskytující na začátku a konci slov...5 Tabulka 4: Index koincidence pro různé jazyky...7 Tabulka 5: Četnost výskytu písmen v češtině dle ČNK...65 xiii

14 xiv

15 KAPITOLA 1 Úvod 1 1 Úvod V letním semestru 2005/2006 byl na Katedře počítačů Fakulty elektrotechnické Českého vysokého učení technického (ČVUT FEL) poprvé vyučován předmět Aplikovaná kryptografie. Zároveň bude od zimního semestru 2006/2007 vyučován předmět Bezpečnost přenosu a zpracování dat. Se vzrůstajícími požadavky na bezpečnost a s její zvyšující se složitostí vyvstává nutnost pokládat bezpečnost dat v informatice za důležitou část vzdělání v oblasti informatiky, čehož reakcí je zmíněné zavedení nových vyučovaných předmětů na Katedře počítačů. V souvislosti s výukou je vhodné, aby byla doplňována praktickými ukázkami, příklady a možností vyzkoušet si vyučovanou látku v rámci experimentování s vykládanými principy a metodami. V oblasti kryptologie se pak tento požadavek jeví jako obzvláště opodstatněný, protože jde o oblast s velkou různorodostí jednotlivých principů. Jednotlivé principy a metody přitom vykazují různé charakteristické vlastnosti, přednosti a slabiny, které je možné na příkladech a experimentech demonstrovat a přispět tak k jejich snadnějšímu osvojení a pochopení. Svůj několikaletý zájem v oblasti kryptologie jsem se rozhodl spojit s bakalářskou prací, která by se nějakým způsobem kryptologie týkala. Po dohodě s vyučujícími předmětů týkajících se výuky kryptologie na Katedře počítačů ČVUT FEL bylo stanoveno téma bakalářské práce v podobě vytvoření aplikace, která by demonstrovala vybrané základní metody kryptografie a kryptoanalýzy. Tato aplikace by našla využití ve výuce, konkrétně ve cvičeních, kde by žákům jednak zprostředkovala demonstraci vybraných metod a principů, druhak též umožňovala interaktivní způsob práce a výuky ve formě experimentů a ilustračního používání vybraných metod kryptografie a kryptoanalýzy. Z charakteru aplikace vyplývá, že její využití pro skutečné šifrování, dešifrování a kryptoanalýzu dat bude sice možné, je však třeba podotknout, že tato úroveň využití není jejím cílem - cílem aplikace a zároveň omezením jejího rozsahu je již zmíněná demonstrace a možnost experimentování s historickými kryptologickými metodami a též s některými klasickými moderními. S ohledem na výukové využití není aplikace vytvářena s cílem vyluštit a šifrovat vše automaticky díky funkcím aplikace. Umožněno a záhodno je naopak zapojení uživatele do vybraných kroků postupu jednotlivých metod. K dalším faktorům pro motivaci tvorby této aplikace je dále roztříštěnost dosud existujících řešení. K dispozici je celá řada aplikací různé míry kvality a výukového využití. Nicméně taková, která by v rámci jednotného rozhraní zahrnovala více šifrovacích metod společně s demonstračními a výukový prvky, k dispozici není. Pro rozsah bakalářské práce bylo vybráno několik typických šifrovacích metod, motivací je ve vývoji aplikace pokračovat i mimo rozsah bakalářské práce a dát jí ucelenější kontext a širší možnosti jak pro výukové účely, tak i co se týká rozsahu zahrnutých metod a principů.

16 2 KAPITOLA 1 Úvod

17 KAPITOLA 2 Vybrané metody a teorie 3 2 Vybrané metody a teorie V rámci bakalářské práce byly pro zahrnutí do aplikace vybrány následující metody: Caesarova šifra, jednoduchá záměna (substituce), transpozice, Vigenérova šifra (polyalfabetická substituce), RSA a Diffie-Hellman dohoda na klíči. První čtyři uvedené šifrovací metody patří mezi historické. Důvody jejich výběru mezi metody zahrnuté v aplikaci jsou dva jde o metody velice názorné a pro první seznámení s kryptografií a kryptoanalýzou poměrně intuitivní, přičemž i přes jejich historický duch jsou na základě využití jejich některých principů postaveny principy šifer moderních (DES, AES a další). Tyto čtyři vybrané metody jsou zároveň klasickými zástupci historických šifer a pokrývají tři důležité kryptografické principy polyalfabetické šifry, monoalfabetické šifry a transpoziční šifry. Dvě zbývající metody pak zastupují moderní oblast kryptologie. RSA coby typický zástupce asymetrické kryptografie. A Diffie-Hellman dohoda na klíči, která je též typickou metodou v dnešních kryptografických systémech. Obě tyto zmíněné metody v aplikaci představují prvky kryptografie veřejného klíče založené na matematických základech. V následujících podkapitolách jsou tyto metody rozebrány z hlediska jejich teoretických základů. Následující texty jsou volným výtahem z materiálů [1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11] a [12]. 2.1 Monoalfabetické šifry Jedná se o jeden z nejstarších šifrovacích systémů, který ve svých mnoha modifikacích lze považovat i za nejpoužívanější. Substituční šifry jsou založeny na záměně každého otevřeného znaku za jeden nebo několik šifrových znaků. Aplikace bude obsahovat prostředky pro názorné šifrování, dešifrování a kryptoanalýzu jednoduché záměny (a Caesarovy šifry, jakožto jejího speciálního případu) Caesarova šifra Caesarova šifra dostala své jméno po Juliu Cesarovi, přičemž se tvrdí, že právě on byl tím, kdo ji poprvé použil. Caesarova šifra je nejjednodušší formou substituce. Každé písmeno je v ní nahrazeno písmenem, které je v abecedě proti němu posunuto o konstantní počet míst. V Caesarově originální šifře bylo zvoleno posunutí o číslo 3. Kryptoanalýzu Caesarovy šifry lze provést podle způsobu uvedeném níže, lze ovšem využít i faktu, že při použití normální abecedy existuje pouze 25 variant Caesarovy šifry, což není velký počet a lze s výhodou použít postupu vyzkoušení všech variant posunů a výběrem smysluplného výsledku (tento postup je anglicky nazýván exhaustive search úplné prohledání) Jednoduchá záměna Princip jednoduché záměny je založen na nahrazování normální abecedy otevřeného textu nějakou její permutací každé písmeno normální abecedy v otevřeném textu tedy nahradíme písmenem, které je obsaženo v permutované abecedě na stejné pozici. Písmena v šifrovém textu při dešifrování nahrazujeme inverzí této permutace Kryptoanalýza jednoduché záměny spočívá ve frekvenční analýze šifrového textu a posléze analýzou gramatických jevů a bigramových vazeb. Ze statistik vyplývá, že text šifrovaný

18 4 KAPITOLA 2 Vybrané metody a teorie jednoduchou záměnou lze řešit, má-li přibližně alespoň 50 písmen; při délce 200 písmen a více, je pak luštění frekvenční analýzou velmi schůdné. Postup kryptoanalýzy: spočtení četnosti výskytu jednotlivých písmen v šifrovém textu pokud text obsahuje mezery nahrazené v šifrovém textu písmen, identifikace písmene, které mezeru nahrazuje. Relativní četnost takového písmena v šifrovém textu by měla být zhruba v rozmezí 0,16 0,20. Potvrzením předpokladu je skutečnost, že písmeno, u něhož předpokládáme nahrazení mezery, se nevyskytuje po sobě a neobjevují se v jeho výskytech příliš dlouhé odstupy. Identifikace písmen, která v šifrovém textu nahrazují nejčastěji se vyskytující písmena v přirozeném jazyce (E, A, T, atp.); tato písmena mohou tvořit až 40% textu. Relativní četnosti nejpoužívanějších písmen ve vybraných jazycích Angličtina Francouzština Němčina Čeština Slovenština E: 12,86 E: 17,76 E: 19,18 E: 10,13 A: 9,49 T: 9,72 S: 8,63 N: 10,20 A: 8,99 O: 9,34 A: 7,96 A: 7,68 I: 8,21 O: 8,39 E: 9,16 I: 7,77 N: 7,61 S: 7,07 I: 6,92 I: 6,81 N: 7,51 T: 7,30 R: 7,01 N: 6,64 N: 6,34 R: 6,83 I: 7,23 T: 5,86 S: 5,74 S: 5,94 Σ: 52,65 Σ: 55,81 Σ: 57,53 Σ: 46,81 Σ: 47,08 Tabulka 1: Relativní četnosti nejpoužívanějších písmen ve vybraných jazycích Identifikace frekventovaných bigramů v šifrovém textu

19 KAPITOLA 2 Vybrané metody a teorie 5 Relativní četnosti výskytu bigramů ve vybraných jazycích Angličtina Francouzšti na Němčina Čeština TH: 3,30 ES: 3,05 EN: 4,43 PR: 1,98 HE: 2,70 EL: 2,46 ER: 3,75 NI: 1,94 IN: 2,02 EM: 2,42 CH: 2,80 ST: 1,81 ER: 1,91 DE: 2,15 EI: 2,42 NA: 1,68 RE: 1,69 RE: 2,09 DE: 2,33 NE: 1,61 AN: 1,67 NT: 1,97 ND: 2,08 EN: 1,55 ES: 1,49 ON: 1,64 IN: 1,97 RA: 1,35 EN: 1,46 ER: 1,63 GE: 1,96 OV: 1,32 ON: 1,34 TE: 1,63 IE: 1,88 TE: 1,30 AT: 1,27 SE: 1,55 TE: 1,76 AN: 1,25 Tabulka 2: Relativní četnosti výskytu bigramů ve vybraných jazycích identifikace gramatických jevů v šifrovém textu se znalostí předcházejících informací Písmena v češtině se nejčastěji vyskytující na začátku a konci slov Začátek Konec P: 12,50 E: 16,67 S: 9,72 I: 13,96 V: 9,19 A: 10,94 Z: 8,95 O: 8,63 N: 7,64 U: 7,94 O: 5,56 Y: 7,03 Σ: 53,56 Σ: 65,47 souhlásky: 84,51 souhlásky: 34,53 samohlásky: 15,49 samohlásky: 65,47 Tabulka 3: Písmena v češtině se nejčastěji vyskytující na začátku a konci slov V českých slovech dochází k velmi častému střídání samohlásek a souhlásek, výjimku tvoří zejména písmena R a L, která v některých případech vystupují v roli samohlásek. K nejfrekventovanějším samohláskám patří písmena E, A, O, I. V českých slovech se téměř nevyskytují dvojice po sobě jdoucích samohlásek, výjimkou je bigram OU (0,77%).

20 6 KAPITOLA 2 Vybrané metody a teorie Při vynechání mezer může dojít ke vzniku dalších samohláskových bigramů, kdy jedno ze slov samohláskou končí a druhé naopak začíná. S využitím předchozích výsledků a s ohledem na průměrnou délku slova v českém textu, která je 5,37 písmen, dostáváme výsledek, že takovýchto vzniklých bigramů bude (1 / 5,37) 0,16 0,65 = 0,019 Bigram ST písmena S a T mají přibližně stejnou frekvenci. Bigram PR písmeno P má přibližně poloviční frekvenci výskytu než R; bigram se vyskytuje zpravidla na začátku slov Bigram CH písmeno C má frekvenci výskytu přibližně 3%, písmeno H 2% a celý bigram 1%; často platí, že předchází-li CH souhláska, následuje samohláska a naopak. Nejčastějšími trigramy v češtině jsou s frekvencemi 0,5% až 0,8% PRO, OVA, ENI, PRI, OST, PRA, ANI a STA. K čistě souhláskovým trigramům patří STR (0,24%) a STN (0,16%). S ohledem na gramatickou stavbu vět lze s výhodou použít postupu odhadu nalezení šifrových protějšků otevřených samohlásek kromě U a Y jsou všechny samohlásky zastoupeny mezi nejčastěji používanými písmeny. Spočítáním frekvence nejčastějších písmen v dosud šifrových sekvencích polygramů délky alespoň 4 lze stanovit další kandidáty na samohlásky U a Y. Posléze lze pro kombinace dvojic těchto kandidátů na samohlásky určit, v kolika polygramech tvořených sekvencemi dosud šifrového textu délky alespoň 5 (průměrná délka slova) tyto dvojice scházejí. Vzhledem k pravidelnému střídání souhlásek a samohlásek v českém textu je pravděpodobné, že dvojice, která neschází ve výše zmíněných polygramech, je kandidátem na otevřené U a Y Polyalfabetické substituční šifry (šifry s periodickým klíčem) Slabostí monoalfabtických substitučních šifer je fakt, že frekvenční distribuce šifrovaných znaků odpovídá frekvenční distribuci písmen otevřeného textu. Tento problém lze obejít použitím odlišných šifrovacích abeced v závislosti na poloze písmene v otevřeném textu. Základním principem je posun šifrové abecedy oproti normální jako je tomu použito u Caesarovy šifry, ovšem posuny jsou proměnné podle polohy písmene v otevřeném textu a jsou určeny klíčem. Text lze tedy zašifrovat opakovaným posunem písmen otevřeného textu o např. 5, 14 a 8 míst. Namísto posloupnosti čísel lze používat klíčové slovo (heslo), které je-li písmeno nahrazeno svým pořadovým číslem (číslováno od nuly) reprezentuje také posloupnost čísel. Takovéto zesílené Ceasarovy šifry jsou známy pod názvem Vigenèrovy šifry, popř. šifry s periodickým klíčem, a jde o speciální případ polyalfabetických šifer, které používají mnoho abeced k náhradě jednotlivých písmen otevřeného textu. Kryptoanalýza První krok kryptoanalýzy Vigenèrovy šifry spočívá v určení délky klíče. Je-li k dispozici dostatečně dlouhý šifrový text, postupujeme tak, že v něm hledáme opakující se polygramy. Pokud tyto polygramy odpovídají stejným slovům nebo částem slov v otevřeném textu, pak musí být jejich vzdálenost v šifrovém textu násobkem délky klíče. Tímto způsobem lze najít délku klíče, popř. několik možností na její hodnotu těmito možnostmi jsou jednotliví dělitelé vzdálenosti polygramů. Tato metoda analýzy délky klíče je nazývána Kasiskiho metoda. Délku klíče lze zjistit také výpočtem indexu koincidence (IC).

21 KAPITOLA 2 Vybrané metody a teorie 7 Označme T = t 0 t 1 t 2...t M-1 řetězec písmen, IC je pak pravděpodobnost, že dva náhodně vybrané prvky z T jsou stejné. Předpokládejme dále normální abecedu délky N=26 a m 0 jako počet výskytů písmene A v T, m 1 počet výskytů písmene B v T, až m 25 počet výskytů písmene Z v T. Index koincidence je pak definován následovně: N 1 IC = 1 M 1 1 M m i m i 1 i =0 Index koincidence pro různé jazyky Jazyk IC Angličtina 0,0667 Francouzština 0,0801 Němčina 0,0824 Italština 0,0754 Španělština 0,0769 Ruština 0,0470 Čeština 0,0581 Slovenština 0,0581 Náhodný text 0,0385 Tabulka 4: Index koincidence pro různé jazyky V případě Vigenèrovy šifry lze pomocí indexu koincidence odhadnout, jakou délku měl použitý klíč. Je-li délka klíče k, rozpadá se šifrový text do k skupin, přičemž v každé z těchto skupin jsou všechna písmena posunuta o stejný počet písmen v abecedě. Každá skupina má tedy index koincidence stejný jako otevřený text v daném jazyce. Aritmetický průměr indexů koincidence jednotlivých skupin se proto také přibližně rovná indexu koincidence příslušného jazyka. V případě hledání délky klíče šifrovaného Vigenèrovou šifrou vyzkoušíme různé délky r možného klíče, spočítáme indexy koincidence jednotlivých skupin a jejich aritmetický průměr. Nejpravděpodobnější délkou klíče pak zvolíme to r, pro které se aritmetický průměr nejvíce blíží indexu koincidence daného jazyka. Kryptoanalýza dále pokračuje odhadem klíče samotného. I v tomto kroku lze použít statistických testů indexu koincidence. Označme T = t 0 t 1 t 2...t M-1 a T' = t' 0 t' 1 t' 2...t' M'-1 dva řetězce písmen. Průměrný index koincidence dvou textů T a T' vyjadřuje pravděpodobnost, že náhodně vybrané písmeno z T koinciduje s náhodně vybraným písmenem z T'. Označme dále m 0 jako počet výskytů písmene A v T, m 1 počet výskytů písmene B v T, až m 25 počet výskytů písmene Z v T a m' 0 jako počet výskytů písmene A v T', m' 1 počet výskytů písmene B v T', až m' 25 počet výskytů písmene Z v T'. Průměrný index koincidence dvou textů je T a T' je pak roven

22 8 KAPITOLA 2 Vybrané metody a teorie Chi T, T ' = 1 N 1 M m 2 i m i ' i =0 Předpokládejme, že předchozí kryptoanalýzou byla odhadnuta délka klíče L a podřetězce y 1 až y L jakožto jednotlivé skupiny písmen, která jsou posunuta o stejný počet písmen. Vyberme náhodné písmeno z y i. Toto písmeno koinciduje s A právě tehdy, když je odpovídající písmeno v otevřeném textu posunuto zpět o hodnotu k i (-k i ). Pravděpodobnost, že náhodně zvolené písmeno v y i bude otevřené A označme p -ki. Pravděpodobnost, že náhodně zvolená písmena v textech y i a y j jsou A, je rovna součinu p -ki p -kj. Podobně, pravděpodobnost, že náhodně zvolená písmena v textech y i a y j jsou B je rovna součinu p 1-ki p 1-kj, atd. N 1 Chi y i, y j = h=0 Číslo Chi(k i -k j ) je nazýváno relativní posunem k i a k j. N 1 p h ki p h k j = p h p h k i k j =Chi k i k j h=0 Zafixujme nyní posloupnost y i. e 0,e 1,...nechť jsou prvky Z 26 a y j0,y j1,... řetězce získané z y i posunem o e 0,e 1... S ohledem na předchozí odvození získáváme vzorec Chi y i, y g j = 1 N 1 M 2 h=0 f i f ' i g Pro g = 0 by se hodnota Chi(y i, y jg ) měla blížit indexu koincidence daného jazyka. Avšak pro g 0 by měla být v rozmezí 0,30 0,45. Pomocí výše uvedeného vzorce můžeme určit relativní posun pro všechna i j pro každou přípustnou dvojici i a j tedy výpočet všech 26 možností posunů. Pro každé i a j dle předpisu: 1 i < j L, g = 0,1,...25 vypočítat Chi(y i, y jg ). Blíží-li se výsledná hodnota indexu koincidence daného jazyka, určuje pak trojice hodnot i, i a g, která dává tento výsledek, konfiguraci posunutí klíče, rsp. hesla, a metodou exhaustive search můžeme projít všechny takovéto klíče a odhadnout použitý. Můžeme využít také ručního luštění pomocí kvantizační odchylky. Vypočteme četnost výskytu všech písmen v každém podřetězci y 1 až y L. Pak pro každý podřetězec y i provedeme výpočet kvantizační odchylky pro každé písmeno Pro A sečteme četnosti výskytu písmen A, E, I a O a odečteme od nich četnosti znaků F, G, Q, a W. Dále pro B sečteme četnosti písmen B, F, J a P (čtveřice použitá v předchozím případě posunutá o 1) a odečteme o nich četnosti znaků G, H, R a X (čtveřice použitá v předchozím případě posunutá o 1). Takto postupujeme pro všechna písmena a pro všechny podřetězce y i. Písmena, jejichž kvantizační odchylka je v každé skupině největší, tvoří heslo Transpozice Transpoziční šifrovací systémy jsou založeny na myšlence permutace či nějaké přesmyčky otevřeného textu. Jednotlivá písmena otevřeného textu jsou však sama o sobě ponechána beze změny. Tímto je docíleno zpřetrhání bigramových vazeb, nicméně frekvence písmen v šifrovém textu odpovídá frekvenci stejných písmen v šifrovém textu, zachován je i poměr samohlásek a souhlásek, který je v češtině zhruba 2:3.

23 KAPITOLA 2 Vybrané metody a teorie 9 Jednoduchá transpozice Jednoduchá transpozice je nejjednodušším případem transpozice. Otevřený text je psán do tabulky s dohodnutým počtem sloupců ten může být stanoven délkou klíčového slova. Šifrový text dostaneme tím, že text sepíšeme po sloupcích, jejichž pořadí je určené pořadím písmen klíče v abecedě. Dešifrování probíhá vepsáním šifrového textu do sloupců v pořadí daném opět klíčem. Kryptoanalýza Prvním krokem je určení rozměrů tabulky, tedy určení počtu sloupců. Hodnotu délky textu rozložíme na možné dvojice součinu dvou čísel, čímž dostáváme několik různých rozměrů tabulky. Šifrový text následně vepíšeme do každé uvažované tabulky po sloupcích. Pro každou tabulku pak určíme očekávaný poměr samohlásek a souhlásek v řádku a porovnáme ho s vypočítaným poměry samohlásek a souhlásek pro každý řádek dané tabulky. Z okruhu uvažovaných tabulek pak vybereme ty, u nichž se poměry samohlásek a souhlásek jejich řádků blíží očekávanému poměru. V každém řádku můžeme dále vyhledat nejfrekventovanější bigramy pro uvažovaný jazyk a poznamenat si pořadí sloupců, v jakém budou písmena těchto bigramů sousední. Ze souboru těchto uspořádání můžeme být schopni vybrat ta frekventovaná a odhadnout z nich správné pořadí sloupců. Pro tyto účely se využívá také indexu bigramové sousednosti (bigram adjacency score), kterým lze doplnit předchozí postup: h Adj I, J = 1 P h std I r J r r=1 kde I r a J r označují písmeno v r-tém řádku a I-tém, resp J-tém sloupci, P std (XY) označuje pravděpodobnost výskytu bigramu XY v textu daného jazyka a h je počet řádků ve sloupci. 2.2 Asymetrická kryptografie Asymetrická kryptografie je založena na myšlence použití odlišných klíčů pro šifrování a dešifrování zprávy. Každý subjekt má svůj soukromý klíč, který je určen k zašifrování, a jemu odpovídající veřejný klíč určený pro dešifrování. Ke vzájemné komunikaci subjektů je tedy třeba 2n klíčů, přičemž klíče veřejné lze skutečně uveřejnit. Brzy po uveřejnění teoretického schématu asymetrické kryptografie ( ; Diffie, Hellman, Merkel) se objevuje první šifrový systém založený na tomto konceptu, který získal název dle prvních písmen příjmení svých tvůrců RSA (Rivest, Shamir, Adlemann). Tento systém se s malými úpravami (normy pro délky klíčů a jejich vlastností) používá dodnes, přičemž doposud nebyly dokázány žádné jeho obecně platné slabiny, ovšem nebyla na druhou stranu potvrzena ani jeho síla RSA Postup při vytváření dvojice soukromý a veřejný klíč je následující:

24 10 KAPITOLA 2 Vybrané metody a teorie a) nejprve je třeba náhodně zvolit dvě velká prvočísla p a q (jejich bezpečná velikost je předem dána) b) vypočteme Ф(N) je Eulerova funkce určující počet přirozených čísel menších než N a s N nesoudělných (v praxi lze Ф(N) nahradit číslem L=NSN (p-1, q-1); nejmenším společným násobkem čísel p- 1 a q-1). c) zvolíme náhodné číslo e, tak aby 1 < e < Ф(N) a NSD (e, Ф(N)) = 1 (tj. e a Ф(N) jsou nesoudělná; NSD označuje společného dělitele) (v praxi se z důvodu urychlení šifrování za e pokládá číslo, jehož binární reprezentace má malou Hammingovu váhu počet znaků v zápisu, které se odlišují od nulového symbolu abecedy, v tomto případě binární 0). d) Užitím Euklidova algoritmu vypočteme jednoznačně definované číslo d takové, že 1 < d < Ф(N) a ed 1 mod Ф(N) tj. d = e -1 mod Ф(N) Jde vlastně o inversi čísla e v Z Ф(N) Veřejným klíčem je potom dvojice (N, e) a soukromý klíčem dvojice (N, d). Číslo N nazýváme modul, číslo e šifrovací exponent a číslo d dešifrovací exponent. Zadními vrátky jsou čísla p, q, d a Ф(N). Znalost jednoho z čísel p, q a Ф(N) vede k bezprostřednímu nalezení zbývajících tří. Číslo d je třeba držet v tajnosti z charakteru soukromého klíče, čísla p, q a Ф(N) je však také třeba držet v tajnosti, popř. p a q zničit. Šifrování a dešifrování: Mějme dva subjekty A a B (Alice a Bob). Každý subjekt má vygenerován svůj soukromý a veřejný klíč: (N a, d a ) (soukromý klíč Alice), (N a, e a ) (veřejný klíč Alice), (N b, d b ) (soukromý klíč Boba) a (N b, e b ) (veřejný klíč Boba). Předpokládejme, že Bob zná veřejný klíč Alice a chce Alici poslat zprávu M, kterou vyjádří jako číslo m, 0 m N-1, resp. posloupnost takových čísel. Bob vypočte: N = pq N = p 1 q 1 c m e a mod N a tedy mocninu c=m e a v Z N a. Číslo c je zašifrovaná zpráva, kterou Bob odešle Alici. Alice nyní zprávu dešifruje pomocí svého soukromého klíče. Vypočte m c d a mod N a tedy mocninu m=c d a v Z N a.

25 KAPITOLA 2 Vybrané metody a teorie 11 Bezpečnost a kryptoanalýza RSA Bezpečnost RSA je založena na složitosti úlohy faktorizace velkých čísel. Dosud však nebylo nijak dokázáno, že k odvození m z c a e je třeba provést rozklad N. Není vyloučeno, že se podaří objevit zcela odlišný způsob kryptoanalýzy. Do dnešního dne však žádný takový způsob nebyl nalezen. První přirozenou a nejschůdnější metodou luštění je faktorizace modulu, tedy čísla N. Pro prolomení algoritmu RSA však není třeba faktorizovat N stačí vyřešit problém zvaný RSAP: Nechť p a q jsou prvočísla, N = pq, a e je číslo takové, že NSD (e, Ф(N)) = 1. Je-li zadáno číslo C ze Z N, nalezněte ze znalosti čísel N, e a C takové M ze Z N, že platí M e C mod N. Jinými slovy jak vypočítat e-tou odmocninu modulo N bez znalosti rozkladu N na prvočinitele. K určení kryptologické odolnosti RSA můžeme použít výpočetní složitost faktorizačních algoritmů pro tyto účely se používá následující zápis: kde q je faktorizované číslo, a a c konstanty pro každou níže uvedenou metodu zapsané ve tvaru (a, c). Faktorizační algoritmy se dělí do tří základních skupin: 1) Obecné algoritmy, kde složitost závisí na velikosti nejmenšího existujícího faktoru. V současné době se považuje za nejefektivnější v této skupině ECM (eliptic curve method) (složitost (½, 2)) metoda však není prakticky použitelná pro čísla, která nemají jeden z faktorů malý (cca ). 2) Obecné algoritmy, kde složitost závisí na velikosti faktorizovaného čísla. Dříve používaný algoritmus kvadratického síto (QS) vytlačila metoda general number field sieve (GNFS) (složitost (1/3,1.92)). Poslední faktorizovaným modulem je RSA-640 ( ; faktorizace trvala 30 procesorových roků 2.2GHz Opteron-CPU; přes kalendářních 5 měsíců). Není vyloučeno, že s použitím speciálních zařízení (TWINKLE) bude možné v technologii faktorizace modulu velmi pokročit. 3) Algoritmy vhodné pro speciální situace, kdy má faktorizované číslo nebo faktor známé (očekávané) vlastnosti Fermantova metoda vhodná pro faktorizaci, kdy jsou faktory blízké N. Z tohoto důvodu není vhodné, aby si byla prvočísla p a q blízká. Pollardova p - 1 a Williamsova p + 1 metoda tyto metody jsou vhodné pro čísla, jejichž faktor je o 1 větší, resp. menší než hladké číslo. Proto se někdy klade požadavek volit jako faktory N silná prvočísla (prvočísla p, kde p + 1 i p - 1 mají velké prvočíselné dělitele). Nicméně bylo dokázáno, že pravděpodobnost výběru čísla, které je blízké hladkému číslu, je zanedbatelná). Luštění pomocí společného modulu L q a, c =O e c O 1 ln q a lnln q 1 a Pokud by několik osob mělo klíče se stejným modulem, urychlí se tím sice generování klíčů,

26 12 KAPITOLA 2 Vybrané metody a teorie ovšem významně se tím naruší bezpečnost RSA. Každý z účastníků může jednak ze znalosti svého veřejného a soukromého klíče faktorizovat modul a pak vypočítat dešifrovací exponenty ostatních účastníků z jejich veřejných klíčů, co je však horší lze odhalit otevřený text zprávy bez znalosti dešifrovacího exponentu v případě, že tatáž zpráva byla zašifrována dvěma různými veřejnými klíči se stejným modulem. Uvažujme zprávu otevřeného textu m, šifrovací exponenty e 1 a e 2 a společný modul N. Dvě zašifrované zprávy jsou c 1 m e 1 mod N c 2 m e 2 mod N Kryptoanalytik zná N, e 1, e 2, c 1 a c 2. Postup vedoucí k odhalení m je následující. Protože e 1 a e 2 nemají žádné společné součinitele (musí platit vždy), lze rozšířeným Euklidovým algoritmem najít čísla r a s taková, že platí: r e 1 se 2 =1 Za předpokladu záporného r (jedno z čísel r a s musí být záporné), lze potom rozšířený Euklidův algoritmus použít pro výpočet c 1-1 a z toho poté dostaneme m: c 1 1 r c 2 s m mod N Luštění na základě multiplikativní vlastnosti kryptosystému Šifrování a dešifrování pomocí RSA je distributivní vzhledem k násobení, protože platí: a, b Z, k N: ab k a k b k mod N Této vlastnosti může útočník využít následovně: odchytí-li zašifrovanou zprávu C adresovanou Bobovi, může ji pozměnit a Bobovi poslat hodnotu Cc e mod N, pro nějaké c. Bob se pokusí tuto zprávu rozšifrovat výsledkem bude hodnota C d c mod N, která pravděpodobně nedává žádný smysl. Dokáže-li útočník tuto hodnotu získat například proto, že ji Bob považuje za chybu a nevěnuje ji dostatečnou ochranu, nebo tak, že Boba přímo přesvědčí, aby mu chybný výsledek poskytl, pak může vypočítat otevřený text. Luštění na základě malé hodnoty soukromého (dešifrovacího) exponentu Výpočet mocnin v Z N je časově náročná operace, proto se může zdát výhodné volit soukromý exponent d relativně malý (např. 10-krát menší než modul N) a tím zrychlit dešifrování. Toto urychlení vede opět k vážné narušení bezpečnosti RSA a umožňuje dokonce vypočítat soukromý exponent d z veřejného klíče. Pokud platí: N = pq je RSA modul a e, d jsou veřejný a soukromý exponent a p < q < 2q d < 1/3 N 1/4, a lze ze znalosti N a e efektivně vypočítat d (Weinerův útok). Uvedené podmínky lze ještě vylepšit na d < N 1-2/2 a e < N 15/8 (Boneh a Dufreeho útok).

27 KAPITOLA 2 Vybrané metody a teorie 13 Znalost jednoho šifrovacího a dešifrovacího páru exponentů daného modulu umožňuje luštiteli faktorizovat tento modul, popř. odvodit jiný pár bez nutnosti faktorizace modulu. Vzhledem k tomu, že k jednomu z hledisek komerčních programů patří i rychlost šifrování, je velmi neprozíravé snažit se o zvýšení rychlosti na úkor nízké, popř. nedokonalé hodnoty d. S problémem malého veřejného exponentu souvisí i následující metoda luštění. Luštění na základě malé hodnoty veřejného (šifrovacího) exponentu Šifrování lze urychlit volbou malé hodnoty veřejného exponentu e. Tato úprava opět vede k narušení bezpečnosti RSA a riskantní aplikaci RSA. K útokům využívajících slabosti malého veřejného exponentu patří vyhledávání kořenů polynomů v Z N. Proto se doporučuje používat hodnotu veřejného exponentu nejméně hodnoty čtvrtého Fermantova čísla, zprávy doplňovat náhodnými hodnotami (zajištěna neexistující souvislost zpráv) a dodržovat pravidla pro délku textů. Šifrování stejné zprávy různými klíči Předpokládejme, že zašifrovaná zpráva M je zasílána subjektům B 1, B 2,...B k. Zpráva je zašifrována postupně veřejnými klíči subjektů B i (e i, N i ), přičemž otevřený text zprávy je kratší než N i. Zachytí-li útočník dostatečný počet (e) zpráv C i = M ei, může zjistit otevřený text. Tento útok však lze vzhledem k nutným výpočtům provedeným pro luštění realizovat pouze pro malé hodnoty veřejného exponentu e. PKCS#1 Norma PKCS#1 (Public Key Cryptographic Standards) popisuje postup pro zašifrování dat pomocí kryptosystému RSA. Postup je zamýšlen pro použití při konstrukci digitálního podpisu a digitálních obálek v návaznosti na PKCS#7. Pro digitální podpisy je obsah podepisované zprávy nejprve vyjádřen pomocí otisku této zprávy (s využitím hashovací funkce) a následně je oktetový řetězec vyjadřující otisk této zprávy zašifrován soukromým RSA klíčem odepisující strany. Obsah zprávy a zašifrovaný otisk je vyjádřen ve formátu definovaném PKCS#7. Při vytváření digitálních obálek je zpráva nejprve zašifrována symetrickým algoritmem. Použitý symetrický klíč je v zašifrované podobě rovněž součástí zprávy formátované podle PKCS#7 (symetrický klíč je zašifrován veřejným klíčem adresáta). Ve verzi 1.5 PKCS#1 zasílá strana A straně B zprávu, která je vytvořena následovně. Veřejným klíčem je standardně dvojice N a e. Otevřená zpráva m je doplněna na potřebný počet bitů (doplněk; padding), čímž je získána zpráva M. Strana A pak spočte C=M e mod N Strana B má k dispozici soukromý klíč (N, d) a spočte M ' =C d mod N a odstraněním bitů doplňku získá zprávu m'. Strana B přitom analyzuje doplněk a pokud jeho vlastnosti odpovídají, zprávu přijme, a naopak. Toto rozhodnutí označme R; R=1, pokud je doplněk správný, a R=0, je-li nesprávný. Vytváření doplňku dle PKCS#1 v1.5

28 14 KAPITOLA 2 Vybrané metody a teorie Předpokládejme, že modul N má délku k bajtů. Zpráva po vložení doplňku vypadá následovně: {00,02,PS,00,zpráva} kde PS je doplněk nejméně 8 bajtů dlouhý, nejméně význačný bajt je vpravo. Bleichnerův útok na standard PKCS#1 Narušitel E se vydává za stranu A a chce zjistit m c d mod N. Zasílá tedy straně B speciálně vytvářené zprávy s doplňky a dle reakce strany B zjišťuje, zda doplněk zprávy je, či není, správný. Pravděpodobnost, že náhodná zpráva má doplněk vyhovující PKCS je dána: 0, Prob P 0, Zprávy s vyhovujícími doplňky lze najít relativně snadno metodou pokusů a omylů. Útok má tři fáze oslepení, ukázková a rychlá fáze. V první fázi jsou vytvářena náhodně čísla S, dokud se nepodaří najít takové S, aby CS e mod N =C x vyhovovalo PKCS. Po provedení této fáze máme pro M 0 = MS následující nerovnosti k 2 1 M 0 =MS k 2 Ve druhé fázi jsou hledána malá čísla S i tak, aby C x S i bylo PKCS vyhovující. Takto lze získat další upřesňující nerovnosti pro M 0. Ve třetí fázi je již znám dostatečně malý interval, v němž M 0 leží, a je prováděn postup, který umožňuje tento interval dále zmenšovat. Každou fází útoku získává narušitel bližší informaci o hodnotě c d, rsp. m. Současné verze PKCS#1 (v2.1) je proti tomuto útoku odolná Diffie-Hellmanovo schéma dohody na klíči Předpokládejme situaci, kdy se dvě strany (Alice a Bob) chtějí dohodnout na tajném klíči, který bude znám pouze jim, ale jejich komunikace je veřejná. Žádný potenciální narušitel však nemá být na základě jejich dialogu schopen tento tajný klíč získat. Tajný klíč pak může být použít jako klíč k šifrování vzájemné komunikace v případě symetrické kryptografie. Alice a Bob se veřejně dohodnou na velkém prvočísle p a nenulovém prvku g ze Z p. Alice soukromě vygeneruje (zvolí) číslo x a v Z p (soukromý klíč) a Bobovi pošle y a g Xa mod p. Bob soukromě vygeneruje (zvolí) číslo x b v Z p (soukromý klíč) a Alici pošle y b g Xb mod p. Dohodnutý tajný klíč je pak hodnota k = g x a x b= x ya b= x g b x a= x a yb Čísla p, g, y a a y b jsou zcela veřejná. Možností nalezení klíče k, je najít hodnoty x a a x b, což je problém nalezení diskrétního logaritmu, který je výpočetně náročný.

29 KAPITOLA 3 Analýza 15 3 Analýza V této kapitole bude diskutována analýza požadavků na aplikaci z pohledu uživatelských rolí, systematiky práce s aplikací a zahrnutí jednotlivých metod. Aplikaci nazývejme dále CryptoVisio. 3.1 Uživatelské role Uživatelské role v aplikaci lze rozeznat dvě. První nazvěme znalý uživatel, druhou pak neznalý uživatel. Znalým uživatelem je uživatel, který je seznámen s metodami a principy obsaženými v aplikaci. Zná teoretický základ daných metod a aplikace je pro něj pouze nástrojem, díky němuž může zahrnuté metody používat či s nimi experimentovat. Tento uživatel by měl být schopen s aplikací pracovat bez jakýchkoli problémů, které by plynuly z faktu, kdy by nebyl s danou šifrovací metodou či principem seznámen. Neznalý uživatel je uživatel, který se s danou metodu či principem čerstvě seznamuje, popř. není plně seznámen. U neznalého uživatele se předpokládá neúplná znalost všech detailů a vlastností dané metody či principu. Neznalý uživatel po aplikaci vyžaduje vlastnosti a prvky, díky nimž by s danými metodami mohl pracovat podobným způsobem jako znalý uživatel a sekundárně získal zpětnou vazbu v podobě vysvětlení a předvedení detailů daných metod, které plně neovládal. Jak je patrné z rozboru uživatelských rolí, aplikace musí kromě obecně požadované funkčnosti obsahovat i výukové a popisné prvky. 3.2 Obecné funkce aplikace Aplikace je vytvářena s cílem demonstrace kryptologických postupů a metod. Do těch patří metody z oblasti kryptografie a kryptoanalýzy. Z oblasti kryptografie je zřejmé, aby aplikace zahrnovala šifrování a dešifrování. Rozbor teoretického základu a principů vybraných šifrovacích metod je proveden v kapitole 2. Z hlediska svého účelu musí aplikace zahrnovat jednotlivé šifrovací metody názorně, s názorným průběhem jejich postupu a možných voleb a také možnostmi zobrazení detailů týkajících se šifrovacích metod Jednoduchá záměna (substituce monoalfabetická) Z hlediska demonstračního zaměření aplikace je pro šifrování a dešifrování substituce vhodné a názorné zpracovat šifrovací abecedu (permutaci) prostřednictvím transformační tabulky, v níž znaku otevřeného textu odpovídá znak šifrového textu. Pro širší možnosti využití je vhodné, aby transformační tabulku bylo možné uchovat pro pozdější použití či možnost jejího přenosu mezi jednotlivými uživateli. Vzhledem k tomu, že Caesarova šifra je podmnožinou jednoduché záměny, bude tato šifra zahrnuta v rámci jednoduché záměny. Z charakteru kryptoanalýzy substituce je též vhodné ji založit na transformační tabulce doplněné o frekvenční analýzu znaků. Nejnázornější prezentací výsledků frekvenční analýzy je graf relativní četnosti jednotlivých znaků. Pro účely kryptoanalýzy je výhodné graf a analýzu doplnit též referenčními hodnotami relativní četnosti znaků ve vybraném jazyce. Díky frekvenční analýze lze dosáhnout pouze odhadu přiřazení otevřených znaků šifrovým a to v případě znaků nejfrekventovanějších. K dosažení lepšího odhadu je možné pokračovat kryptoanalýzou substituce dále na základě analýzy bigramů (obecně polygramů), metody

30 16 KAPITOLA 3 Analýza předpokládaného slova a dalších statistických analýz. Tyto následné analýzy aplikace nezahrnuje. Po vyhodnocení frekvenční analýzy písmen následuje v kontextu gramatiky daného jazyka a smysluplnosti obsahu textu odhadování dalších písmen v částečně vyluštěném otevřeném textu na základě písmen dle předchozí statistiky již odhadnutých. V rámci této činnosti by bylo dobré, aby ji aplikace usnadňovala a bylo možné se soustředit pouze na kryptoanalýzu samotnou. Takovým usnadněním je například automatické doplňování písmena zadaného na pozici dosud neodhadnutého šifrového znaku na další pozice výskytu tohoto šifrovaného znaku v textu. Z hlediska názornosti je též vhodné, aby veškeré aktualizace provedené tímto ad hoc luštěním byly též reflektovány v grafech a transformačních tabulkách stejně jako v případě odhadů na základě frekvenční analýzy. Výsledky frekvenční analýzy a výstup grafů by měl být exportovatelný pro případné další zpracování Transpozice Zahrnutí šifrování a dešifrování transpozice do aplikace je nejnázornější a nejvíc přirozené formou transpoziční tabulky. Šifrování lze zahrnout ve dvou podobách šifrování se zadaným klíčem, podle něhož (seřazení písmen v něm) budou sloupce přesunuté, a šifrování manuálním přesunem sloupců v tabulce transpozice (v tomto případě uživatel zadá pouze požadovaný počet sloupců transpoziční tabulky). V případě šifrování klíčem je vhodné zahrnout didaktický prvek, kdy bude mít uživatel možnost dle principu šifrování transpozice klíčem seřadit sloupce manuálně. Volba automatického seřazení sloupců by měla být též přístupná. Šifrování manuálním přesunem sloupců spočívá v prosté změně uspořádání sloupců transpoziční tabulky. Dešifrování transpozice by mělo odpovídat dvěma přístupům k šifrování nastíněným výše. Dešifrování dle klíče, kdy uživatel zadá klíč, a šifrování dle zadané posloupnosti sloupců. V obou přístupech bude mít uživatel možnost sloupce dle principů transpozice řadit sám, či zvolit volbu automatického seřazení. Postup kryptoanalýzy transpozice bude spočívat ve výběru možných rozměrů tabulky. Každý potenciální rozměr bude obsahovat detaily týkající se poměru samohlásek a souhlásek v řádcích uvažované tabulky, výskytu častých jazykových bigramů ve sloupcích tabulky a jejich počtu. Samotná kryptoanalýza pak bude založena na smysluplném uspořádání sloupců s pomocí výše zmíněných údajů. Ve všech třech případech by aplikace měla reagovat na prováděné změny (změna uspořádání sloupců) průběžným šifrováním či dešifrováním, což dovoluje sledovat jednotlivé změny ve výsledku šifrování, dešifrování, resp. kryptoanalýzy v závislosti na konfiguraci sloupců Vigenèrova šifra (substituce polyalfabetická) Průběh šifrování, dešifrování a kryptoanalýzy Vigenèrovy šifry nenabízí příliš široké možnosti interaktivity práce, přesto však lze princip této šifry velmi názorně demonstrovat. Při šifrování a dešifrování bude zobrazován náhled na průběh šifrování, z něhož bude patrné, na jakém principu šifra pracuje a jakým způsobem je na otevřený, resp. šifrový text aplikován klíč a jaká je jeho vazba na výsledný zašifrovaný, resp. odšifrovaný text. Kryptoanalýza Vigenèrovy šifry již skýtá interaktivnější možnosti práce. Odhad délky klíče bude založen na výpočtu průměrného indexu koincidence jednotlivých skupin řetězců, na něž

31 KAPITOLA 3 Analýza 17 se šifrový text pro různé délky klíče rozdělí. Pro klíč délky k se šifrový text rozpadá na k řetězců. Uživatel zvolí odhadovanou délku klíče k z rozsahu nabídnutém aplikací, přičemž pro každé k bude též k dispozici průměrný index koincidence k řetězců vzniklých rozdělením šifrového textu. Uživatel musí též znát referenční index koincidence daného jazyka, aby byla možnost s čím porovnávat. Pro názornost by mohl mít uživatel k dispozici i podobu jednotlivých řetězců vzniklých rozdělením šifrového textu. Odhad délky klíče na základě Kasiskiho metody [1] může být zmíněn, ovšem z hlediska demonstračního a didaktického je zvolena spíše preference práce s indexem koincidence, který vyjadřuje lépe rozdíly mezi použitím klíče správné a nesprávné délky. Pro odhad klíče samotného, resp. jednotlivých šifrovacích abeced, je zvolena metoda kvantizační odchylky [3]. Její výsledky jsou pro delší texty velmi přesné a zároveň je založena na poměrně intuitivní myšlence výskytu nejvíce a nejméně frekventovaných písmen, tudíž se dobře hodí pro účely demonstrační aplikace. Statistické testy [12] sice vykazují přesnější výsledky, které jsou dosažené přímou cestou, použití těchto metod je však spíše v rámci aplikované kryptoanalýzy, nežli v aplikaci, jejíž motivací je demonstrovat principy jednotlivých metod RSA RSA je v aplikaci zástupcem moderních šifrovacích metod. Použití RSA lze rozdělit na dvě části generování klíčů a vlastní šifrování, resp. dešifrování. Generování klíčů sestává z několika kroků výběr prvočísel p a q, výpočet modulu, volba šifrovacího exponentu e a výpočet dešifrovacího exponentu d. Tento postup naznačuje, že generování klíčů by v aplikaci bylo přirozené zahrnout v rámci dodržení těchto kroků s možností dodatečně měnit vybrané hodnoty a pozorovat jejich důsledky. Na generování klíčů může navazovat šifrování a dešifrování. Z vygenerovaného páru klíčů hypotetickým uživatelem A, může být posléze použit veřejný klíč pro zašifrování zprávy určené uživateli A, resp. soukromý klíč použit pro dešifrování zprávy určené uživateli A. Šifrování, resp. dešifrování však nemusí být na generování klíčů přímo vázané vygenerované klíče by mělo být možné po jejich vytvoření uložit a později načíst, či by mělo být možné klíče (veřejný pro šifrování, soukromý pro dešifrování) zadat do aplikace přímo. Kryptoanalytické útoky na RSA [4] nejsou do náplně bakalářské práce zahrnuty. Jejich pozdější zahrnutí do aplikace bude možné Diffie-Hellman dohoda na klíči Diffie-Hellman dohoda na klíči (D-H dohoda na klíči) je do aplikace zahrnuta mimo šifrovací metody, ale vzhledem k tomu, že jde o významnou kryptografickou metodu, je do aplikace zahrnuta také. Podobně jako RSA i u D-H dohody na klíči je postup metody složen z několika dílčích kroků volba prvočísla p, výběr prvku g ze Z p, volba čísel x a a x b, následný výpočet y a a y b a v závěru výpočet sdíleného klíče k. U D-H dohody na klíči je tedy zřejmě nejnázornější též dodržet jednotlivé dílčí kroky, což přináší jisté možnosti interaktivity a demonstrace při práci s touto metodou.

32 18 KAPITOLA 3 Analýza Popisné informace Nedílnou součástí aplikace by mělo být vysvětlení a detailní informace o používaných metodách. Aplikace by tedy neměla obsahovat pouze mechaniku šifrovacích metod, ale i formu vysvětlujících komentářů a podrobné rozvedení vybraných detailů dané metody. Znalý uživatel bude mít možnost tyto doplňující komentáře a detaily vypnout, neznalý uživatel by naopak díky nim měl být schopen s aplikací plně pracovat a získávat z nich zpětnou vazbu pro lepší seznámení s problematikou Zadávání textu a jeho formát Se šifrováním souvisí data, která budou šifrována, resp. dešifrována. Ačkoliv některé metody v aplikaci uvedené ve většině případů a verzích svých implementací pracují s binárními daty, nejlepší názornosti dosahují textová data, a proto je jednotně pro demonstraci zvoleno šifrování textu. Text bude možné zadat do textové oblasti, přičemž by v rámci zaměření aplikace bylo vhodné, aby textové oblasti byly dvě jedna určená pro otevřený text, druhá určená pro šifrový text. V případě zašifrování, resp. odšifrování textu, bude názorné, do jaké míry se od sebe otevřený a šifrový text liší. Text otevřený i šifrový bude dále do aplikace možné vložit načtením ze souboru uloženého na disku či jiném úložišti. Podobně bude možné otevřený či šifrový text do souboru na disk, popř. jiné úložiště uložit. Aplikace by též měla podporovat práci se systémovou schránkou tj. vkládání textu ze schránky do aplikace, a naopak kopírování textu z aplikace do schránky. Textová pole pro zadávání otevřeného, resp. šifrového textu by měla podporovat funkci zadávání textu v režimu vkládání a přepisování. V režimu vkládání je text při psaní do textového okna vložen a případný další text, který byl za pozicí vkládacího kurzoru je posunut. V režimu přepisování je text, který se nachází za pozicí kurzoru, přepsán textem vloženým. Text vkládaný do aplikace by měl splňovat následující podmínky formátu text je bez mezer, text neobsahuje diakritiku, text neobsahuje prázdné řádky, text neobsahuje formátování (velikost fontu, řez písma, typ fontu,...). Pakliže text podmínky nesplňuje, aplikace by měla být schopna vkládaný či zadávaný text převést do požadovaného formátu mezery, odřádkování a formátování odstraněno, znaky s diakritikou nahrazeny odpovídajícími znaky bez diakritiky. Aplikace by též měla obsahovat základní navigaci v textu údaj o tom, kolik znaků je v textové oblasti zapsáno, a na jakém znaku v textu se nachází kurzor. Pro rychlý náhled nad charakteristikami zadávaného textu je vhodné, aby aplikace obsahovala grafy četností znaků v textu, hodnotu indexu koincidence zadaného textu, popřípadě též tabulku četností jednotlivých znaků v textu Volitelné jazykové sady Pro účely kryptoanalýzy šifer, v nichž je zapotřebí referenčních hodnot pro daný jazyk (relativní četnost nejfrekventovanějších znaků v daném jazyce v případě kryptoanalýzy substituce, index koincidence daného jazyka v případě kryptoanalýzy Vigenèrovy šifry) či vyhodnocení některých jazykových zvláštností specifických pro daný jazyk (nejfrekventovanější bigramy v kryptoanalýze transpozice, seznam nejvíce a nejméně

33 KAPITOLA 3 Analýza 19 frekventovaných písmen v kryptoanalýze Vigenèrovy šifry) by aplikace měla obsahovat sadu několika jazyků (čeština, angličtina), které si uživatel bude moci vybrat pro práci. Volba jazyka bude mít význam pouze ve výše zmíněných kryptoanalýzách Postup práce s aplikací Obecný postup práce s aplikací vyjadřuje diagram na ilustraci 1 a 2. Uživatel zadá otevřený či šifrový text vepsáním textu, načtením ze souboru, či vložením ze systémové schránky. Poté dle kontextu zvolí jednu z akcí šifrování, dešifrování a kryptoanalýza. Po dokončení vybrané akce uživatel získá otevřený, či šifrový text a může se rozhodnout, zda tento text uloží. Výjimku z tohoto postupu tvoří Diffie-Hellman dohoda na klíči, která nepatří mezi šifrovací metody a nedochází tedy k žádnému zadávání či šifrování textu. Druhou výjimkou je RSA v případě pouhého generování klíčů. Úprava tohoto diagramu a začlenění nešifrujících akcí do tohoto diagramu a kontextu aplikace bude specifikována ve fázi návrhu.

34 20 KAPITOLA 3 Analýza Ilustrace 1: Diagram obecné práce s aplikací

35 KAPITOLA 3 Analýza 21 Ilustrace 2: Diagram zadání textu

36 22 KAPITOLA 3 Analýza

37 KAPITOLA 4 Návrh 23 4 Návrh Kapitola návrhu probírá fázi vývoje, kdy je aplikace navrhována na základě obecného návrhu objektů, funkcí, metod a grafického rozhraní. V první podkapitole je též diskutována volba prostředí programovacího jazyka. 4.1 Prostředí programovacího jazyka V návaznosti na provedenou analýzu požadavků na aplikaci je nyní nutné provést diskuzi volby jazykového prostředí, na němž bude aplikace postavená. Předmětem této diskuze nejsou pouze konkrétní požadavky na aplikaci kladené, ale též faktory rychlosti, možností rozšiřování aplikace, využití existujících komponent, flexibility vývoje a též faktor nasazení aplikace. Mezi uvažovaná a diskutovaná prostředí byly vybrány jazyky C++ a Java. Prvotní výběr těchto dvou je odůvodněn jejich objektovým charakterem, širokými možnostmi v oblasti programování uživatelského rozhraní (GUI) a rozsáhlou nabídkou hotových komponent a knihoven. Porovnání prostředí z hlediska rychlosti není jednoznačné. U C++ plyne již z jeho charakteru, kdy jsou programy kompilované pro cílový operační systém a procesor, předpoklad o vyšší rychlosti aplikace. Naproti tomu Java je jazyk interpretovaný a díky vrstvě virtuálního stroje mezi Javou a hardwarem je do běhu aplikace zanesena režie navíc. Tvrzení o pomalosti Javy však nelze vynést kategoricky. Nové verze virtuálního stroje s technologií HotSpot firmy Sun [13] provádějí při interpretaci mnoho optimalizací kódu (rozbalení cyklů, inlining, eliminace společných podvýrazů, využití přeložených výsledků, atp.) i programových konstrukcí (užití přímých ukazatelů namísto handle Javy, urychlení synchronizace vláken, rychlejší alokace objektů, generační garbage collector) a jsou doplněny technologií JIT ( just-in-time překladač) [14], [15]. Princip technologie JIT spočívá v tom, že bytekód jazyku Java, který by byl bez JIT interpretován, je dekódován pouze jednou a je přeložen do strojového kódu nativního pro procesor systému. Díky tomu může být kód vždy nejlépe optimalizován pro cílový systém a procesor a interpret virtuálního stroje není zatížen režií dalšího volání dané metody [14]. Překladač s technologií HotSpot v kombinacie s JIT plní funkci adaptivní optimalizace aplikace je nejprve spuštěna v interpretovaném režimu. Během této fáze profiler identifikuje úzké profily v aplikaci, které překladač JIT posléze přeloží do nativního strojového kódu. Výsledky jednotlivých benchmarků týkajících se rychlosti C++ a Javy se velmi liší a jsou závislé na konkrétní sadě testovacích metod. Z vybraných benchmarků je patrné, že C++ je rychlejší při vytváření objektů [16]. Naopak, manipulace s objekty (volání metod, přetypování) je již srovnatelné, či bývá rychlejší Java (v případě překrytých metod předka) [16]. Z hlediska primitivních typů je spíše rychlejší C++, ovšem velmi záleží na situaci v některých případech je naopak rychlejší Java [17], [18], [19]. C++ lze označit za rychlejší, ovšem v obecném případě nelze označit vyšší rychlost oproti Javě za markantní. Předností Javy oproti C++ jsou standardní knihovny [20]. Standardní knihovny Javy poskytují široké možnosti v nejrůznějších oblastech implementace od matematických výpočtů, přes grafické rozhraní, po třídy vstupu/výstupu. Výhodou těchto standardních knihoven je jejich

38 24 KAPITOLA 4 Návrh spolehlivost jejich součástí jsou otestované, prověřené a optimalizované třídy. Společnost Sun s každým dalším vydáním nové verze JDK (Java Development Kit vývojářská sada) přináší optimalizovanější verze tříd, které v předchozích verzí trpěly výkonnostními či jinými problémy. S přihlédnutím k tomu, lze považovat třídy, které jsou součástí standardních knihoven Javy delší dobu (Collections, String, StringBuffer, ArrayUtils, atd.), za velmi dobře optimalizované. Výhodou standardních knihoven Javy je též jejich flexibilita a snadná rozšiřitelnost třídy ze standardních knihoven jsou dokumentovány v API dokumentaci Javy, zdrojový kód velké většiny z nich je dostupný v rámci JDK, a v neposlední řadě je většina tříd dobře navržena s ohledem na budoucí či uživatelské rozšiřování. V tomto ohledu je zejména patrná výhoda v knihovně grafického uživatelského rozhraní Swing a knihovny Collections (kolekce množiny, seznamy, tabulky). Převážná většina třídy z knihovny Swing je navržena architekturou MVC (Model View Controller), což umožňuje snadnou a elegantní modifikaci a rozšíření standardních komponent o funkčnost, či vzhled požadovaný uživatelem [21]. Vedle standardních knihoven je též k dispozici mnoho externích bezplatných, kterých je možné v aplikaci využít. Konkrétně v aplikaci CryptoVisio jmenujme knihovnu JFreeChart [22], která nabízí prostředky a komponenty, díky nimž lze do aplikace vložit nejrůznější typy grafů. Silné zaměření Javy na objektový návrh vede k tomu, že začlenění knihoven do aplikace, či jejich modifikace, je velmi intuitivní a přímá. Java je jazyk s velkým zabezpečením. Tam, kde je sice možno v C++ používat nejrůznějších triků v rámci optimalizace kódu, tam je Java striktní a dodržuje unifikované standardy jazyka a pravidla. Výhodou tohoto přístupu je naopak větší efektivita vývoje důmyslný systém výjimek, automatické správy paměti, monitorování vláken a silného typování odstiňuje vývoj od systémové úrovně a předem programátora upozorňuje na možné problémy, či potenciálně nebezpečné konstrukce nepovoluje. Díky tomuto přístupu se lze v rámci programování věnovat čistě potřebám návrhu aplikace samotné. Nicméně i přesto je v Javě zachován prostor pro optimalizaci kódu, ale též samozřejmě i pro odvrácenou stranu mince použití či naprogramování neefektivních metod. Jen samotná bezpečnost jazyka není nutně řešením neefektivity kódu, a není též ani překážkou pro efektivní kód [14]. Jedním z předních rysů Javy je její nezávislost na platformě. Aplikaci napsanou v jazyku Java lze spustit na kterémkoli systému a procesoru, kde je nainstalován JRE (Java Runtime Environment) příslušné verze. Detaily a specifika platformy a instrukční sady procesoru jsou ponechány na virtuálním stroji jazyka. Díky této charakteristice Javy není třeba vyvíjet různé verze kódu pro různé platformy a sekundárně se lze spolehnout na to, že aplikace bude vykazovat přibližně stejné chování bez ohledu na platformu (ačkoli je třeba počítat s některými rysy specifickými pro daný systém typická je v tomto ohledu problematika vláken doby jejich vytváření a výkonnosti jejich správy která se může odlišovat systém od systému). C++ je ze svého kompilovaného charakteru nutné zkompilovat zvlášť pro každou platformu a je též nutné řešit odlišnosti v kódu pro každou platformu. Posledním faktorem, který do diskuze volby prostředí vstupuje, je subjektivní faktor autora aplikace. Z hlediska zkušeností s vývojem v obou prostředích, dominuje Java. Dále do diskuze vstupuje též fakt osobní preference perspektivy a efektivity vývoje v rovině

39 KAPITOLA 4 Návrh 25 grafického uživatelského rozhraní, kdy autor preferuje manuální psaní kódu grafického rozhraní před vizuální tvorbou rozhraní. Díky tomu je nad vlastnostmi uživatelského rozhraní získána větší kontrola, a mnohé prvky je též dále možné efektivněji řešit manuálně (např. pole komponent a jeho následné využití). S ohledem na využití layout manažerů a způsobu práce s komponentami při manuálním programování grafického rozhraní autor považuje za příhodnější jazyk Java. Shrňme si nyní jednotlivé faktory v kontextu aplikace CryptoVisio. C++ je oproti Javě ve většině případů rychlejší, ale nelze podat žádné konkrétní stanovisko, jaký rozdíl rychlosti bude pozorován v rámci aplikace. V aplikaci půjde jak o manipulaci s objekty, tak primitivními typy. S ohledem na technologii JIT v rámci HotSpot lze u Javy předpokládat, že případná úzká hrdla (hromadné tvoření objektů, opakující se výpočet) budou technologií JIT zachycena a přeložením do strojového kódu optimalizována. Aplikace CryptoVisio zahrnuje ve svých požadavcích mnoho různorodých prvků. Ať co se týká různorodosti jednotlivých šifrovacích metod, tak metodiky práce s aplikací interaktivní prvky, vystižení charakteru jednotlivých šifer, didaktické prvky pro zpětnou vazbu. Z tohoto pohledu se jeví jako výhodné standardní i externí knihovny Javy a jejich architektura. CryptoVisio je poměrně komplexní aplikace z ohledu pokrytí požadavků a specifik kladených na ni. V rámci bakalářské práce je vhodné volit spíše charakter jazyka Java zajišťující efektivitu a tím i vyšší rychlost vývoje. Stran nasazení aplikace je třeba zmínit, že Katedra počítačů FEL disponuje počítačovými laboratořemi a učebnami s různými platformami kromě systémů Microsoft Windows jsou zastoupeny i systémy na bázi Unixu (Solaris). Ačkoli toto není přímým požadavkem na aplikaci, může to být faktor zajišťující možnost větší perspektivy využití aplikace. Z uvedených faktorů je patrné, že se jedná o objektivní i subjektivní preferenci jazyka Java. Aplikace tedy bude psána v prostředí jazyka Java. 4.2 Existující implementace Jak bylo diskutováno v kapitole 3 Analýza a v úvodu, aplikace týkající se šifrování a dešifrování jednotlivých metod existují. Jde však ve většině případů o aplikace či applety týkající se jedné metody, přičemž se opírají spíše o automatické postupy zadáním výchozího textu a kliknutím na tlačítko šifrovat, či dešifrovat je provedena celá demonstrace dané metody. V tomto ohledu lze zmínit programy a applety na internetové stránce SecretCodeBreaker.com [23]. Na ní uvedené programy jsou více či méně popisné, ale zaměřené na jednu metodu. Uvedeny mohou být i applety týkající se šifrování, dešifrování a kryptoanalýzy transpozice, Vigenèrovy šifry a substituce na stránce [24]. Opět se jedná spíše o automaticky zaměřené programy. Zajímavým programem, který splňuje požadavek popisnosti, je program šifrování a dešifrování Vigenèrovy šifry uvedený na stránce [25]. Programem, který naopak splňuje požadavek zahrnutí několika metod, je program Cryptology laboratory odkazovaný na stránce [26]. Přestože škála zahrnutých metod je široká, program opět řeší pouze vstup a výsledek bez ohledu na možnou názornost.

40 26 KAPITOLA 4 Návrh 4.3 Návrh jednotlivých šifrovacích metod a uživatelského rozhraní Návrh šifrovacích metod a uživatelského rozhraní je sloučen v jedno, protože jde v kontextu aplikace o velmi úzce provázanou problematiku. Návrh implementace některých šifer se přímo odvíjí od možností, které k tomuto poskytuje grafické uživatelské rozhraní a také od požadavků, jaké jsou pro zahrnutí jednotlivých šifrovacích metod kladeny. V některých případech tak nejde řešit odděleně prvky GUI a návrh šifrovacích metod. I přesto bude dodrženo strukturalizování návrhu a jednotlivé aspekty budou v mezích možností řešeny odděleně Hlavní okno aplikace Jak vyplývá z analýzy požadavků, hlavní okno by mělo obsahovat dvě textové oblasti pro zápis otevřeného a šifrového textu. Z hlediska rozvržení je přirozené, aby tyto oblasti byly umístěné ve sloupci nad sebou. Oblasti musí podporovat možnost přepínání mezi režimem vkládání a přepisu. Textové oblasti by též pro větší přehlednost měly text zobrazovat neproporcionálním fontem. Hlavní okno by dále mělo obsahovat stavový řádek s informacemi o pozici kurzoru, počtu znaků, režimu vkládání či přepisu a případným dalším informačním popiskem. Podobně jako uživatelské rozhraní systému Windows by stavový řádek mohl obsahovat rozevírací seznam s výběrem jazyků. Nedílnou součástí hlavního okna by mělo být hlavní textové menu s případně vnořenými submenu. Pro pokrytí různých zvyklostí práce s grafickým rozhraním by bylo vhodné toto menu duplikovat v podobě kontextového menu při kliknutí pravým tlačítkem myši na některou z textových oblastí. Požadavkem na aplikaci je též viditelné a přístupné zobrazení statistik textu. Z hlediska rozvržení aplikace je vhodné tyto statistiky umístit na panel, který by se nacházel vpravo od textových oblastí. Vzhledem k požadavku reprezentace statistik jak ve formě grafu, tak tabulky, bude panel se statistikami obsahovat záložky s výběrem reprezentace statistik pouze tabulkové, pouze grafové a kombinace tabulka graf. Graf bude sloupcového typu. V rámci intuitivnější a rychlejší práce s aplikací bude mezi textovými oblastmi pro otevřený a šifrový text umístěn panel tlačítek a výběru šifrovací metody. Výběr šifrovací metody bude v podobě rozevíracího seznamu. Panel dále bude obsahovat vhodně rozmístěná tlačítka pro vyvolání šifrování, dešifrování a kryptoanalýzy. Stran návrhu implementačních záležitostí hlavního okna přichází v úvahu následující okolnosti. Textové oblasti musejí podporovat možnost režimu vkládání a přepisu textu. To může být zajištěno rozšířením třídy výchozího textového okna. Aplikace musí registrovat změny textů v textových oblastech, aby tyto změny bylo možné reflektovat v panelech statistik. Aplikace musí dále registrovat změny polohy kurzoru pro aktualizaci informací ve stavovém řádku. V objektovém přístupu je tohoto možné dosáhnout systémem posluchačů událostí, které jsou relevantním objektům registrovány. Musí tedy existovat objekt, který bude posluchačem událostí změn v textu, a objekt, který bude posluchačem událostí kurzoru. Oba typy posluchačů budou registrovány textovým oblastem. Jedním z požadavků na aplikaci je též forma textu, s nímž se bude pracovat text je bez diakritiky, bez mezer a bez řádkování. Předzpracování zadávaného textu je též záležitostí u textové oblasti registrovaného posluchače. Ten zajistí odstranění mezer a řádkování ze zadaného textu, nahradí znaky s diakritikou jim odpovídajícím znakům bez diakritiky. V

41 KAPITOLA 4 Návrh 27 rámci přehlednosti též zajistí, že veškerá písmena budou zobrazena jako velká písmena Menu Hlavní textové menu bude obsahovat následující menu: menu Soubor menu Šifrovací metody Menu Soubor bude obsahovat položky, které je zvyklost v tomto menu obvykle zahrnovat položky pro načítání a ukládání souborů a položku ukončení aplikace. Tedy volby: položka Načíst otevřený text položka Uložit otevřený text položka Načíst šifrový text položka Uložit šifrový text položka Konec Menu Šifrovací metody bude obsahovat submenu pro jednotlivé šifrovací metody a položku Diffie-Hellman dohoda na klíči: submenu Substituce submenu Transpozice submenu Vigenèrova šifra submenu RSA položka Diffie-Hellman dohoda na klíči Každé submenu pak bude obsahovat následující položky (s výjimkou RSA, kde není přístupná kryptoanalýza): položka Šifrovat položka Dešifrovat položka Kryptoanalýza Jak bylo uvedeno, hlavní menu by mělo být duplikováno pro potřeby menu kontextového. V závislosti na tom, z jaké textové oblasti bude kontextové menu prvým tlačítkem vyvoláno, bude menu obsahovat volby: položka Načíst otevřený, resp. šifrový text položka Uložit otevřený, resp. šifrový text Dále bude kontextové menu obsahovat jako své submenu menu Šifrovací metody v totožné podobě, v jaké je toto menu uvedeno výše. V návrhu menu je zmíněno, že hlavní menu a kontextové menu mají některé společné položky a menu. Z tohoto důvodu, kdy v aplikaci dochází k duplicitám, je vhodné, aby jednotlivá menu byla řešena jako objekty, na něž je možné se odkazovat přes odkaz a tím jeden objekt menu vložit do více menu-nabídek. Dále je též vhodné, aby jednotlivé položky menu neřešily, jak akci mají provést, ale aby jim byla přiřazena akce, která danou operaci spustí. Objektovým návrhem získáváme objekty typu Akce, které jsou zodpovědné za další postup. Položky menu pak mají tyto akce přiřazeny a další odpovědnost delegují na ně. Objekt Akce je též možné přiřadit tlačítkům v panelu výběru šifrovací metody.

42 28 KAPITOLA 4 Návrh Zobrazení detailů Požadavek týkající se zobrazení detailů, popisků a podrobnějšího vysvětlení šifrovacích metod bude splněn modifikovanou verzí dialogového okna. Abstraktní třída modifikovaného dialogového okna AbstractMoreInfoDialog bude rozšiřovat standardní dialogové okno. Hlavním prvkem tohoto okna bude možnost otevřít či skrýt panel obsahující textovou oblast s popisy, detaily, instrukcemi a vysvětleními vztahujícími se k obsahu dialogového okna. Tato třída bude zprostředkovávat základní funkčnost tohoto přístupu a též možnosti nastavení dialogových oken obecně (umístění a rozměry dialogového okna, vytvoření komponent uživatelského rozhraní okna, inicializace objektů okna). Rozšiřovat ji budou konkrétní třídy jednotlivých dialogových oken daných šifrovacích metod. Signatura funkcí a metod třídy AbstractMoreInfoDialog je následující: void init() void initcomponents() JPanel makelayout() void delayedinit() void adjustsize() void closeaction() String getinfotext() AbstractMoreInfoDialog getinstance() Metoda init inicializuje proměnné a objekty nutné pro zobrazení dialogového okna a před vytvořením grafických komponent. Metoda initcomponents inicializuje grafické elementy, které musejí být inicializovány ještě před sestavením rozvržení dialogového okna. Funkce makelayout vytvoří rozvržení komponent na panelu a tento panel vrací. Ten je posléze nastaven jako panel obsahu dialogového okna. Metoda delayedinit inicializuje proměnné a objekty, které je nutné inicializovat po vytvoření grafických komponent v dialogovém okně. Metoda adjustsize nastavuje velikost dialogového okna. Metoda closeaction spustí operace, které je nutné provést po zavření dialogového okna (uvolnění objektů, vrácení nastavení hlavního okna do původního stavu před zobrazením dialogu). Funkce getinfotext vrací řetězec, který bude vložen do informačního panelu dialogového okna. Třídy jednotlivých dialogových oken jsou implementované vzorem singleton (jedináček) [27], [28], který zajišťuje, že v rámci běhu programu existuje maximálně pouze jedna instance dané třídy. K tomu účelu je ve třídě AbstractMoreInfoDialog popisně vložena statická funkce getinstance, která zajišťuje tvorbu singletonů každá třída konkrétního dialogového okna ji bude implementovat se sobě požadovanou signaturou. Konkrétní třídy, které rozšiřují abstraktní třídu AbstractMoreInfoDialog jsou následující třídy dialogových oken substituce, transpozice a Vigenèrovy šifry: SubstitutionEncryptionDialog, SubstitutionDecryptionDialog, SubstitutionCryptoAnalysisDialog, TranspositionEncryptionInitialDialog, TranspositionDecryptionInitialDialog, TranspositionEncryptionDialog, TranspositionDecryptionDialog, TranspositionCryptoanalysisDialog,

43 KAPITOLA 4 Návrh 29 VigenereCipherEncyprionDialog, VigenereCipherDecryptionDialog, VigenereceCypherCryptoanalysisDialog. Konkrétní hierarchii dědění vyjadřuje diagram na ilustraci 3. Ilustrace 3: Diagram tříd dialogů Ve výčtu chybí dialogová okna RSA a Diffie-Hellman dohody na klíči. Jak vyplývá z analýzy týkající se požadavku zahrnutí těchto metod s dodržením kroků jejich postupu, je tato okna třeba navrhnout jiným způsobem než u předchozích šifer dále bude diskutován návrh těchto oken ve stylu průvodce, což na dialogové okno klade odlišné požadavky. Rozhraní šifrovacích metod Každá šifrovací metoda bude zastoupena třídou, která bude splňovat rozhraní Cipher definující metody s následující signaturou: void setsourcetext(string) String encrypt() String decrypt() Metoda setsourcetext nastavuje šifrovacímu objektu řetězec (text), který bude šifrován, či dešifrován. Funkce encrypt vrací zašifrovaný řetězec. Naopak Funkce decrypt vrací dešifrovaný řetězec. Šifrovací metody jsou čtyři (bereme-li Caesarovu šifru za podmnožinu jednoduché záměny) a jejich třídy budou mít následující názvy: SubstitutionCipher, TranspositionCipher, VigenereCipher a RSACipher. Situaci vyjadřuje diagram na ilustraci 4.

44 30 KAPITOLA 4 Návrh Ilustrace 4: Diagram tříd šifrovacích metod Substituce Okno šifrování a dešifrování substituce bude obsahovat tabulku přiřazení písmen. V prvním sloupci bude písmeno výchozího textu (otevřený v případě šifrování, šifrový v případě dešifrování), druhý sloupec bude tvořen rozevíracím seznamem s výběrem šifrového, resp. otevřeného znaku. Výběrové seznamy budou reagovat též na stisk klávesy daného písmena na klávesnici, nebude nutně zapotřebí klikat myší. Výběrové seznamy budou nabízet pouze dosud nevybraná (nepřiřazená) písmena. V rámci možnosti vymazání již vybraného písmena budou na výběr obsahovat mezeru vybrané písmeno je po svém vymazání opět k dispozici k výběru. Tabulka písmen bude odlišovat písmena, která jsou v textu zastoupena od těch, která v něm nejsou. V textu nepřítomná písmena budou zobrazena šedou barvou a jejich výběrový seznam bude neaktivní. Při výběru písmen bude průběžně aktualizován šifrový, resp. otevřený text písmena v otevřeném, resp. šifrovém textu, kterým dosud nebyla přiřazena jejich šifrové, či otevřené protějšky, budou šifrovány, resp. dešifrovány nahrazením tečkou. Dialogové okno šifrování a dešifrování substituce též zahrnuje Caesarovu šifru tedy textové pole, do něhož bude možné zadat číselný posun abecedy. Aby byla zdůrazněna vazba mezi Caesarovou šifrou a jednoduchou záměnou, bude po zadání posunu adekvátně aktualizována substituční tabulka. Okno bude též obsahovat tlačítka pro načtení či uložení permutace abecedy. Dialogové okno kryptoanalýzy substituce je rozšířeným oknem šifrování (popř. dešifrování) substituce. Rozšířeno je o tabulku pěti nejčastěji se vyskytujících písmen ve vybraném jazyce a hodnotu relativní četnosti jejich výskytu v daném jazyce. Okno je dále doplněno grafem, v němž jsou zobrazena data relativní četnosti výskytu písmen v šifrovém textu a dále referenční hodnoty pro zvolený jazyk. Třetí datovou sadou v tomto grafu je relativní četnost výskytu odhadovaného písmena v otevřeném textu. V grafu je možné jednotlivé datové sady skrývat a obnovovat. V okně je dále rozšířena tabulka písmen v prvním sloupci jsou písmena

45 KAPITOLA 4 Návrh 31 šifrového textu (opět s indikací šedou barvou v případě nepřítomnosti v šifrovém textu), ve druhém sloupci je relativní četnost výskytu daného písmena v šifrovém textu a ve třetím sloupci jsou umístěny rozevírací seznamy pro výběr odhadovaného písmena v otevřeném textu. Rozevírací seznamy mají shodné vlastnosti s těmi diskutovanými u tabulky písmen šifrování, resp. dešifrování. Podobně jako v případě dialogového okna dešifrování substituce je i zde šifrový text průběžně dešifrován. V režimu kryptoanalýzy substituce je též textové oblasti otevřeného textu v hlavním okně přiřazena mód doplňování diskutovaný v analýze. Do neúplně vyluštěného otevřeného textu je možné zapisovat písmena, která jsou automaticky doplňována na další místa výskytu odpovídajícího šifrového písmena v šifrovém textu. Zároveň je tomu šifrovému písmenu přiřazeno zapsané písmeno v tabulce kryptoanalýzy substituce v dialogové okně. Samotné šifrování a dešifrování bude probíhat nahrazením písmen v textu jejich nastavenými protějšky. Z tabulky substituce je získáno pole hodnot nastavených ve výběrových seznamech. Na indexy toho pole jsou mapována písmena ve výchozím textu (A...pole[0], B...pole[1],...Z...pole[25]) a ta nahrazena hodnotami prvků pole na daných indexech Transpozice Šifrování transpozice je zastoupeno dvěma možnostmi zadáním klíče a manuálním přesunem sloupců. Volbu tohoto požadavku bude možné specifikovat v úvodním dialogovém okně šifrování transpozice buď vypsáním klíče do příslušného textového pole, či vypsáním počtu sloupců do druhého textového pole. Následně dojde k otevření dialogového okna šifrování transpozice. V něm bude zobrazena tabulka transpozice. Záhlaví jejích sloupců bude označeno znaky klíče v případě šifrování klíčem, či číslicemi v případě manuálního přesunování sloupců. Při šifrováním klíčem přicházejí v úvahu dvě možnosti práce ruční seřazení sloupců tak, aby odpovídalo tomu, jak je transpozice v tomto případě šifrována, či možností sloupce seřadit automaticky. První možnost zahrnuje interaktivitu práce, druhý spíše demonstraci metody. Ruční seřazení sloupců v případě šifrování s klíčem probíhá přetažením celých sloupců myší v rámci tabulky. V případě šifrování s manuálním přesunem sloupců je použito stejného přístupu sloupce jsou přesunovány přesouváním myší v rámci tabulky. V rámci manipulace se sloupci je průběžně aktualizován šifrový text, tudíž lze okamžitě sledovat změny, které jsou odrazem odlišného uspořádání sloupců. Dešifrování transpozice je velmi podobné šifrování. Dešifrování na základě klíče či posloupnosti ručně přesunutých sloupců lze specifikovat v úvodním dialogu. Klíč je opět možné zapsat do příslušného textového pole, posloupnost sloupců podobně do druhého textového pole. Po specifikování možností dešifrování je zobrazeno dialogové okno dešifrování transpozice, které se vizuálně neliší od okna šifrování. Je zobrazena transpoziční tabulka, jejíž záhlaví je tvořeno znaky klíče, či číslicemi posloupnosti klíčů. Je nutné zdůraznit, že klíč je nyní v záhlaví zobrazen jako seřazený, jak to odpovídá principu šifrování transpozice. Uživatel může v případě šifrování s klíčem sloupce ručně přesunout tak, aby odpovídaly klíči, či je nechat seřadit do podoby klíče automaticky. Podobně v případě posloupnosti sloupců lze sloupce seřadit ručně, či je nechat seřadit automaticky. Při manipulaci se sloupci je otevřený text stejně jako v případě šifrového textu a šifrování průběžně aktualizován.

46 32 KAPITOLA 4 Návrh Okno kryptoanalýzy transpozice bude mít následující rozvržení: v prvním sloupci je seznam možných rozměrů transpoziční tabulky společně s očekávaným poměrem samohlásek a souhlásek v řádku této tabulky o daných rozměrech. Dále tabulka s výskyty ve vybraném jazyce frekventovaných bigramů na řádcích transpoziční tabulky společně s údajem o tom, v jakých sloupcích se bigram nachází, tj. s konfigurací sloupců, která by znamenala, že obě písmena bigramů budou v otevřeném textu vedle sebe tak, aby tvořila daný bigram. A nakonec tabulka těchto nalezených konfigurací uspořádání sloupců a jejich četností v rámci celé transpoziční tabulky. Pravý sloupec okna je pak vyhrazen pro transpoziční tabulku. Záhlaví sloupců jsou označena čísly, záhlaví řádků pak poměrem samohlásek a souhlásek na daném řádku tabulky. S transpoziční tabulkou se pracuje stejným způsobem jako v případě šifrování a dešifrování pomocí přesouvání sloupců. Otevřený text je opět průběžně aktualizován dle změn v uspořádání sloupců. Vytvoření transpoziční tabulky pro šifrování probíhá zápisem otevřeného textu přes všechny řádky do sloupců v rámci aktuálního řádku. Pokud text nevyplňuje tabulku celou, je doplněn znakem X až do vyplnění tabulky. Šifrování probíhá přes všechny sloupce soupisem znaků transpoziční tabulky po řádcích v rámci aktuálního sloupce. Vytvoření transpoziční tabulky pro dešifrování probíhá zápisem šifrového textu přes všechny sloupce do řádků v rámci aktuálního sloupce. A dešifrování pak přes všechny řádky soupisem znaků transpoziční tabulky po sloupcích v rámci aktuálního sloupce. Transpoziční tabulku lze interně reprezentovat dvojrozměrným polem. Grafická komponenta tabulky bude využívat systému posluchače a bude jí registrován objekt posluchače změny uspořádání sloupců, který bude zajišťovat výše zmíněnou funkčnost aktualizace výsledného textu při přesunu sloupců Vigenèrova šifra Dialogová okna Vigenèrovy šifry pro šifrování a dešifrování budou mít obě stejné a jednoduché rozvržení. V prvnín řádku textové pole pro zápis klíče, ve druhém pak textová oblast, která bude zobrazovat následující údaje v prvním řádku výchozí text (otevřený v případě šifrování, šifrový v případě dešifrování). Ve druhém řádku klíč opakovaný za sebou tolikrát, aby pokryl délku prvního řádku. Ve třetím řádku pak výsledný text (v případě šifrování šifrový, v případě dešifrování otevřený), který vznikne aplikací klíče na výchozí text. Tento náhled nejlépe ilustruje vlastnosti a princip Vigenèrovy šifry. Textové pole bude využívat systému posluchače bude mu registrován objekt, který bude reagovat na změny v poli provedené. Při zápisu znaků do textového pole je průběžně aktualizován výpis v textové oblasti náhledu a šifrový, resp. otevřený text v hlavním okně. Rozvržení dialogového okna kryptoanalýzy je rozdělené na dva sloupce. V levém sloupci jsou postupně umístěné následující prvky: seznam délek klíčů od 1 do 20 s údajem průměrného indexu koincidence pro danou délku klíče jednotlivých skupin šifrového textu. Dále textové pole s hodnotou indexu koincidence pro daný jazyk. Následuje výpis skupin řetězců, na něž se šifrový text rozdělí při volbě dané délky klíče. A nakonec textové pole pro zápis odhadovaného klíče. Textové pole má stejnou funkčnost jako v dialogových oknech šifrování a dešifrování Vigenèrovy šifry.

47 KAPITOLA 4 Návrh 33 V pravém sloupci je zobrazena tabulka kvantizační odchylky. Sloupce reprezentují statistiky jednotlivých skupin řetězců, řádky pak posun abecedy. Záhlaví řádků je však vyjádřeno jako písmena odpovídající jednotlivým posunům (A...0, B...1, Z...25). Největší hodnota kvantizační odchylky je v tabulce označena červenou barvou textu buňky. Šifrování a dešifrování Vigenèrovou šifrou probíhá nahrazením znaku v otevřeném, resp. šifrovém textu znakem posunutým o hodnotu znaku klíče na dané pozici. Výpočet indexu koincidence využívá statistik textu (četnost písmen), které jsou zpracovávány v rámci panelu statistik hlavního okna RSA Grafické rozhraní pro šifrování, dešifrování a generování klíčů RSA bude reprezentováno průvodcem - dialogovým oknem, které bude obsahovat navigační tlačítka předchozí a další, díky nimž se bude procházet jednotlivými fázemi postupu generování klíčů a šifrování, resp. dešifrování RSA, reprezentovanými různým obsahem dialogového okna. Nejprve k návrhu dialogového okna typu průvodce. Dialogové okno průvodce implementuje rozhraní Wizard, které definuje následující metody: setnextenabled(boolean) setpreviousenabled(boolean) setcancelenabled(boolean) setfinishenabled(boolean) nextstep() previousstep() První čtyři uvedené metody slouží k aktivaci či deaktivaci tlačítek dialogového okna průvodce jde o tlačítka další, předchozí, zrušit, konec. Metoda nextstep implementuje mechaniku změny obsahu dialogového okna průvodce při stisknutí tlačítka další. Naopak metoda previousstep implementuje mechaniku změny obsahu dialogového okna průvodce při stisknutí tlačítka předchozí. Návrh dialogového okna průvodce je založen na následující myšlence objekt dialogového okna odkazuje na seznam všech panelů obsahů, které průvodce bude obsahovat. Při stisku tlačítka navigace příslušná metoda nahradí obsahový panel okna průvodce novým obsahovým panelem, který následuje (popř. předchází) v seznamu obsahových panelů aktuálnímu. Každý obsahový panel rozšiřuje abstraktní třídu AbstractWizardPanel a překrývá její vybrané metody. Metody a funkce abstraktní třídy AbstractWizardPanel jsou následující: JComponent getcomponent() postinit() preinit() next() back() String getinfotext() Wizard getparentwizard() Funkce getcomponent vrací obsah panelu. Metoda postinit je volána před načtením následujícího, popř. předchozího panelu.

48 34 KAPITOLA 4 Návrh Metoda preinit je volána před načtením aktuálního panelu. Metoda next je volána po metodě postinit aktuálním panelem. Obsahuje kód spouštěný při stisku tlačítka další. Metoda back je volána po metodě postinit aktuálním panelem. Obsahuje kód spouštěný při stisku tlačítka předchozí. Funkce getinfotext vrací detailní popis týkající se daného panelu. Funkce getparentwizard vrací odkaz na dialog typu průvodce, jehož obsahem je daný panel. Pro generování klíčů využijeme pěti panelů: KeyLoad, GeneratePQ, GenerateE, GenerateD a KeysCreated. Pro rámec šifrování či dešifrování jsou doplněny o panel Encryption, resp. Decryption. Panel KeyLoad obsahuje volbu, zda dojde k novému generování klíčů, načtení klíčů ze souboru, zadání klíčů do textového pole, či použití posledních vygenerovaných klíčů. Poslední tři volby znamenají vynechání fáze vlastního generování klíčů a jako následující panel je načten až panel KeysCreated. První volbou, tedy volbou nového generování klíčů se přejde na panel GeneratePQ. Panel GeneratePQ je panel, na němž dojde k výběru či zadání prvočísel p a q. Panel obsahuje dva rozevírací seznamy s prvočísly od 2 do 100, ale je též možné zadat jiná prvočísla. Panel dále obsahuje tlačítko, po jehož stisknutí budou vygenerována náhodná 11ti až 14ti bitová prvočísla. Dialog upozorňuje na případ, kdy by zadaná čísla nebyla prvočísla. Dalším panelem je panel GenerateE. Tento panel zobrazuje předchozí zadaná prvočísla p a q, jejich vypočítaný součin, kterým je modul N, a dále hodnotu Φ(N). Kromě těchto zvolených a vypočítaných čísel obsahuje rozevírací seznam s výběrem veřejného exponentu e. Šifrovací exponent lze vybrat z nabízených hodnot i ho zadat přímo. Dialog upozorňuje na případ, kdy by e nebylo nesoudělné s Φ(N) či bylo větší než toto číslo. Následuje panel GenerateD panel generování soukromého exponentu d. Panel zobrazuje předchozí zadané a vygenerované hodnoty. Nabízí možnost zadat soukromý exponent přímo, či ho nechat vypočítat aplikací. V případě přímého zadání dialog opět upozorňuje na případ nekorektního zadání tj. nesplnění kongurence ed 1 mod Φ(N). Po vygenerování soukromého exponentu d je zobrazen panel KeysCreated, coby souhrn vygenerovaných a zadaných údajů a také výsledného soukromého a veřejného klíče. Na tomto panelu je též možnost průvodce ukončit, uložit vygenerované klíče, či pokračovat šifrováním, popř. dešifrováním. V případě pokračování šifrováním je zobrazen panel Encryption. Tento panel obsahuje čtyři textová pole pole s náhledem otevřeného textu (prvních 30 znaků), pole s číselným zakódováním znaků otevřeného textu, pole s rozdělením zakódovaného otevřeného textu na bloky a pole se zašifrovaným textem. Panel dešifrování Decryption obsahuje analogicky tatáž pole, pouze v opačném pořadí. Veškeré výpočty a informace o daném kroku průběhu šifrování a dešifrování klíčů jsou dostupné v informačním panelu dialogového okna. Generování klíčů RSA, šifrování a dešifrování probíhá na základě matematických výpočtů. Jednotlivé hodnoty a výstupy budou dle potřeby převedené na číselné či řetězcové hodnoty. Zakódování znaků je zajištěno přetypováním typu chat na typ int (ASCII kódování).

49 KAPITOLA 4 Návrh 35 Uveďme ještě popis šifrovacího protokolu posloupnost zakódovaných znaků je rozdělena na bloky o délce k 1, kde k označuje počet číslic modulu. Pakliže zadaná posloupnost blok nevyplňuje celý, je blok doplněn do své délky nulami Diffie-Hellman dohoda na klíči Charakter Diffie-Hellman dohody na klíči je podobný charakteru RSA, proto i pro demonstraci této metody bude zvoleno dialogové okno typu průvodce. Návrh tohoto typu dialogového okna je diskutován v kapitole 4.3.7, tudíž jeho návrh již zde nebude předmětem diskuze a bude uveden pouze návrh jednotlivých obsahových panelů a návrhu implementace Diffie-Hellman dohody na klíči. Průvodce Diffie-Hellman dohody na klíči obsahuje následující obsahové panely: GenerateP, GenerateG, GenerateX, GenerateY, ExchangeCompleted a KeyAgreement. Z charakteru účasti dvou osob na dohodě na klíči jsou dialogy rozdělené na dvě poloviny levá polovina se týká údajů a generovaných hodnot uživatele A, pravá pak uživatele B. Prvním obsahovým panelem je panel GenerateP. V rámci něho dojde k výběru prvočísla p. Pro výběr okno obsahuje rozevírací seznam s prvočísly od 2 do 101. Je možné zadat vlastní prvočíslo, či tlačítkem vygenerovat náhodné 11ti až 14ti bitová prvočíslo. Dialog upozorňuje na případ, kdy by zadané číslo nebylo prvočíslo. Obsahový panel GenerateG se týká výběru čísla g ze Z p. Zobrazena též hodnota vygenerovaná v předchozím kroku. K dispozici je rozevírací seznam s nabízenými volbami. Číslo je též možné zadat přímo. V případě, že dané číslo není ze Z p, dialog na tuto skutečnost upozorňuje. Obsahový panel GenerateX se týká výběru čísla x pro každého uživatele. Obsahuje tedy dva rozevírací seznamy s nabízenými čísly, přičemž je opět možné zadat čísla přímo. Kromě toho samozřejmě obsahuje hodnoty vygenerované v předchozích krocích. V případě, že daná čísla nejsou ze Z p, dialog na tuto skutečnost upozorňuje. Obsahový panel GenerateY obsahuje kromě dosud vygenerovaných hodnot vypočtená čísla y. Obsahový panel ExchangeCompleted pak znázorňuje skutečnost výměny čísel y mezi uživateli A a B a též soukromě vypočtenou hodnotu klíče každým uživatelem. Následný obsahový panel KeyAgreement pak znázorňuje skutečnost, že vypočtené klíče každým uživatelem jsou shodné. Veškeré výpočty a informace o daném kroku průběhu dohody na klíči jsou dostupné v informačním panelu dialogového okna. Výměna klíčů probíhá na základě matematických výpočtů. Jednotlivé hodnoty a výstupy budou dle potřeby převedené na číselné či řetězcové hodnoty Průběh práce s aplikací Podle rozboru a diskuze ve fázi analýzy byl specifikován obecný postup práce s aplikací. V kontextu návrhu je třeba tento postup upřesnit. Aplikace pracuje ve dvou režimech režim textový, který zahrnuje operace spojené se

50 36 KAPITOLA 4 Návrh zadáváním otevřeného či šifrového textu, popř. jeho ukládáním. A režim kryptologický, který zahrnuje průběh jednotlivých kryptografických a kryptoanalytických metod. Režim kryptologický je spuštěn otevřením jakéhokoliv dialogového okna a taktéž je ukončen zavření dialogového okna. Nyní lze upřesnit diagram 3 o začlenění generování klíčů RSA a Diffie-Hellman dohody na klíči do kontextu aplikace, což je zachyceno v diagramu 4. Ilustrace 5: Diagram konkrétní práce s aplikací

51 KAPITOLA 5 Implementace 37 5 Implementace V této kapitole budou zmíněny implementační detaily podstatných součástí aplikace, součástí týkajících se implementace kryptografických metod a jiných signifikantních prvků. Na přiloženém CD jsou zdrojové kódy všech tříd aplikace a též dokumentace všech tříd, metod a funkcí. 5.1 Implementace prvků hlavního okna aplikace Hlavní okno aplikace obsahuje dvě textové oblasti. Zvolená komponenta pro jejich implementaci je JTextPane. Důvodem volby JTextPane je možnost stylizovat obsah textu v něm. Tento prvek je použit pouze pro kryptoanalýzu substituce, kdy je žlutým podbarvením označen znak, na kterém se nachází kurzor v textové oblasti otevřeného textu. Výhodou zvolené komponenty jsou možnosti rozšíření aplikace o případné další potenciální využití možností komponenty JTextPane. Požadavek možnosti přepínání režimu vkládání a přepisu je vyřešen rozšířením třídy JTextPane. Třída rozšiřující JTextPane je nazvána OverwrittingTextPane. Přepisovací režim je v ní zajištěn překrytím metody replaceselection(string) z nadtřídy JTextComponent, která nahrazuje označený text jiným textem. V tomto případě je přepisovaný text při psaní v režimu přepisování interně označen a přepsán zmíněnou metodou. Stavový řádek je instancí třídy StatusBar, která je potomkem třídy JPanel. Vytvořen je využitím manažeru rozvržení GridBagLayout a s pomocí ohraničení. Třída StatusBar zároveň implementuje rozhraní CaretListener, díky čemuž může být posluchačem událostí kurzoru. Toho je využito pro popisky na stavovém řádku týkající se počtu znaků v textu a pozice kurzoru. Instance StatusBar, stavový řádek, je registrován jako posluchač kurzoru textových oblastí pro vkládání otevřeného a šifrového textu. Textové komponenty knihovny Swing jsou postaveny na architektuře MVC. Komponenta JTextPane zastupuje pohled a jejím modelem je instance třídy implementující rozhraní Document. Tohoto je v aplikaci využito ve dvou případech. V prvním případě je toho využito pro úpravu textu, který je zadáván do pole (bez diakritiky, bez mezer, bez řádkování). Instanci třídy implementující rozhraní Document obou textových oblastí je přiřazen DocumentFilter objekt, který zpracovává vložený text. Všechny znaky kromě písmen nejsou filtrem propuštěny, písmena jsou převedena na velká a znaky s diakritikou nahrazeny jejich odpovídajícími protějšky bez diakritiky. Ve druhém případě je toho využito pro zpracování statistik textu. Třída CharacterCountDocument rozšiřuje třídu DefaultStyledDocument a překrývá její metody insertstring, replace a remove. Zároveň implementuje rozhraní DocumentListener posluchač událostí dokumentu. Oběma textovým oblastem je instance třídy CharacterCountDocument nastavena jako dokument a zároveň jim je registrována jako posluchač událostí dokumentu. V metodách insertstring (vložení textu schránkou, či programově), replace (nahrazení a zapsání znaku) a remove (odstranění znaku) je řešena aktualizace statistik dle počtu znaků. To je rozděleno na dva případy vložený text je délky 1 (znak vložen z klávesnice, znak smazán klávesnicí) a délky větší. V prvním případě jsou statistiky pouze doplněny a upraveny,

52 38 KAPITOLA 5 Implementace v druhém případě zcela přepočítány. Řešení přístupem rozkladu délky textu větší než 1 na texty o délce 1 s sebou nese režii navíc, kterak po každém jednotlivém znaku dochází k doplnění a úpravě statistik, což je v součtu pomalejší nežli jednorázové přepočítání po vložení všech znaků. V metodách rozhraní DocumentListener insertupdate, removeupdate a changedupdate je zajištěna mechanika přepočtu statistik při režimu přepisu, kdy je zapotřebí zkombinovat jak metod rozhraní Document, tak metod rozhraní DocumentListener. Přepočítávání textu je svěřeno samostatnému vláknu, čímž je předcházeno markantnímu zpomalení odezvy aplikace. Statistiky jsou ukládány v instancích třídy CharacterCountDataModel. Ta rozšiřuje abstraktní třídu AbstractTableModel a je tedy využitelná i jako datový model tabulky. Vzhledem k rozvržení uživatelského rozhraní nelze zobrazit tabulku znaků vcelku, ale jako tři jednotlivé tabulky. Třem tabulkám odpovídají tři datové modely instance třídy CharacterCountDataModel. Pro flexibilitu je k dispozici třída CharacterCountDataModelHandler, která zapouzdřuje všechny tři datové modely a je díky ní možné s nimi pracovat jako s modelem jedním. Deleguje volání svých metod na příslušné modely. Instance třídy CharacterCountDocument má odkaz na instanci třídy CharacterCountDataModelHandler, skrz kterou aktualizuje statistiky v datových modelech. Tyto datové modely jsou, jak již bylo nastíněno, použity jako datové modely instancí komponenty tabulky JTable použitých na panelu statistik hlavního okna, který je instancí třídy ContextJTabbedPane. Tento panel je podobně jako stavový řádek posluchačem událostí kurzoru. V tomto případě toho, v kterém okně je kurzor aktivní, aby byly zobrazeny tabulky a grafy pro text v dané textové oblasti (otevřený/šifrový text). Grafy jsou instancí třídy BarChart (sloupcový graf) z knihovny JFreeChart. Architektura grafů je též postavena na přístupu MVC modelem je v tomto případě instance třídy rozšiřující abstraktní třídu AbstractDataset. Konkrétně pro BarChart je modelem instance třídy DefaultCategoryDataset. V této situaci je možné implementovat třídu rozšiřující DefaultCategoryDataset, která by implementovala rozhraní TableModelListener, a následně tuto třídu nastavit jako posluchače datových modelů instancí tříd CharacterCountDataModel, čímž bude dosaženo aktualizace statistik i v grafu v závislosti na změnách datového modelu. Situaci znázorňuje diagram tříd na ilustraci 6:

53 KAPITOLA 5 Implementace 39 Ilustrace 6: Systém výpočtu statistik textu 5.2 Implementace třídy AbstractMoreInfoDialog Implementace dialogového okna, které by zajišťovalo možnost zobrazení detailů a vysvětlujících popisků lze založit na třídě MoreInfoPanel [21]. Tato třída rozšiřující JPanel je založená na následující myšlence: v konstruktoru přijme dvě komponenty grafického rozhraní horní a dolní a umístí je do sebe. Posléze je možné metodou showbottom přepínat viditelnost druhé komponenty, čímž je docíleno efektu rozbalení druhé komponenty. Využít tuto třídu pro dialogová okna s popisky lze následovně: jako horní komponenta je instanci třídy MoreInfoPanel předán hlavní panel dialogu, jako dolní komponenta pak textové pole. Celá tato instance pak nahradí hlavní panel dialogu, čímž je dosaženo efektu dialogu s otevíracími popisky. Třída AbstractMoreInfoDialog pak celé toto chování zapouzdřuje v sobě a s využitím rozhraní svých metod je možné rozšířením této třídy a implementací či překrytím jejích metod zautomatizovat tvorbu dialogových oken s otevíracími popisky. 5.3 Implementace substituce grafické rozhraní, šifrování Okno šifrování a dešifrování substituce obsahuje tabulku přiřazení písmen. V prvním sloupci je písmeno výchozího textu (otevřený v případě šifrování, šifrový v případě dešifrování),

54 40 KAPITOLA 5 Implementace druhý sloupec je tvořen rozevíracími seznamy instancemi třídy JComboBox, konkrétně jejich polem. Každý seznam má přiřazen posluchače, který při změně výběru položky daného seznamu aktualizuje seznam výběru ostatních seznamů, čímž je zajištěno, že nelze jedno písmeno vybrat více seznamy. Zejména je však též aktualizována hodnota na příslušném indexu transformačního pole, které určuje nahrazení znaků. Na indexy tohoto pole jsou mapována písmena výchozího textu a prvek na daném indexu je písmeno, jímž bude písmeno výchozího textu nahrazeno. Pro názornost je uvedena funkce encrypt třídy SubstitutionCipher s komentáři: // sourcetext výchozí text // transformtable pole s nahrazovanými znaky public String encrypt() { int lenght = sourcetext.length(); //délka výchozího textu StringBuffer sb = new StringBuffer(lenght); //buffer výsledného //textu for (int i = 0; i < lenght; i++) { char c = sourcetext.charat(i); //znak na i-tém místě zdrojového //textu int index = (int)c 65; //výpočet indexu v poli s //nahrazovanými znaky //od ASCII kódu znaku je odečteno 65, //čímž je získána hodnota indexu; //např. A = ASCII 65, tj. index = 0 sb.append(transformtable[index]); //přidání nahrazujícího //písmena do výsledného //textu } return sb.tostring(); } Textové pole Caesarovy šifry má registrovaného posluchače reagující na změny jeho obsahu. Při změně obsahu posluchač nejprve zkontroluje, zda pole obsahuje korektní číselnou hodnotu. V kladném případě pak do transformačního pole a výběrových seznamů přiřadí příslušně posunutou abecedu. Viz. Následující kód zajišťující přiřazení posunuté abecedy do výběrových seznamů týká se šifrování, tj. posun je kladný. //length délka pole výběrových seznamů; též počet písmen for (int i = 0; i < length; i++) { int offset = (i + (shift % 26) + 26) % 26; //výpočet posunutí v rámci //pole if (ciphercharacterchoosers[i].isenabled()) ciphercharacterchoosers[i].setselecteditem(string.valueof( (char)('a'+ offset))); //nastavení nové hodnoty; A + posun v rámci pole } Zajímavým řešení v rámci implementace substituce a jejího grafického rozhraní, byla implementace požadavků na barevné odlišení písmen neobsažených ve výchozím textu v tabulce přiřazení písmen. Komponenta JTable podporuje jako všechny komponenty knihovny Swing možnost formátování textu pomocí značek HTML (HyperText Markup Language). Použitím tohoto přístupu by bylo možné daný prvek datového modelu tabulky formátovat pomocí HTML. Tím však dojde k jeho konverzi na typ String, což není žádoucí například pro serializaci, kdy by bylo nutné řešit tato specifika typové různorodosti hodnot, a zejména ze strany faktu, že na daném prvku datového modelu je uložen kromě hodnoty i formátovací řetězec HTML značek ty sice tabulka interpretuje jako interní formátovací

55 KAPITOLA 5 Implementace 41 znaky, nicméně datově je uložen celý řetězec. JTable dále umožňuje pouze formátování celých sloupců, což též není hledaná funkčnost. Řešením je nakonec implementace vlastních Rendererů (zobrazovačů) pro buňky tabulky. Nejprve byla implementována jednoduchá hierarchie typů prvků tabulky abstraktní třída DataModelEntry. A konkrétní třídy ji rozšiřující NullDataModelEntry, jejímiž instancemi jsou prvky, které nejsou obsaženy ve výchozím textu, a PlainDataModelEntry, jejímiž instancemi jsou prvky, které v textu obsažené jsou. Nastavení těchto instancí v datovém modelu zajišťuje sám datový model. Výhodou těchto tříd je fakt, že nijak nenarušují data samotná přístupovými metodami lze získat objekt jimi zapouzdřený. Tabulka pak testuje instancemi kterých tříd jsou objekty v datovém modelu, a dle toho vrací příslušné renderery výchozí renderer a renderer zobrazující šedou barvu fontu. Trochu odlišná situace nastává v případě číselných hodnot relativní četnosti výskytu znaků v textu v tabulce kryptoanalýzy substituce, kde je požadováno, aby nulová hodnota (tj. odpovídající písmeno se v textu nevyskytuje), byla též zobrazena odlišnou barvou. Mohla by zde být zavedena vazba na předchozí řešení, nicméně pro obecnost je lepší implementovat řešení příslušné číslům požadavek na odlišnou barvu fontu dle konkrétních hodnot (např. záporných atp.) může být formulován i v jiných situací, a tak je výhodné implementovat řešení s ohledem na budoucí použití. V tomto případě lze nechat zodpovědnost pouze na Rendereru. Je-li dané buňce tabulky přiřazen nějaký objekt, je tento objekt v tabulce zobrazen jako řetězec využitím jeho metody tostring. Toto chování zajišťuje metoda setvalue rendereru tabulky. Rozšířením výchozího rendereru, lze tuto metodu překrýt a nastavit vlastní chování. Implementována je tedy třída ZeroCellRenderer rozšiřující třídu výchozího rendereru. Její metoda setvalue testuje, zda je přiřazovaný objekt typu Number. Pokud ano, pak ho testuje na rovnost nule. Je-li objekt skutečně roven nule, je barva zobrazení rendereru nastavena na šedou. V obou případech pak metoda volá metodu setvalue předka pro dokončení zobrazování. 5.4 Implementace transpozice grafické rozhraní, šifrování Implementace šifrování a dešifrování transpozice v podstatě intuitivně následuje mechaniku transpozice. Výchozí text je do transpoziční tabulky zapisován buď po řádcích, nebo po sloupcích v závislosti na tom, zda se jedná o šifrování, či dešifrování. Samotné šifrovací operace pak probíhají pouze soupisem těchto dat buďto po sloupcích, nebo po řádcích. Datovým modelem transpoziční tabulky jsou instance třídy TranspositionDataModel, která rozšiřuje abstraktní třídu AbstractDataModel. Třída datového modelu transpozice je zodpovědná jednak za uchování data, dále pak za příslušné vyplnění tabulky k tomu slouží metody setplaindata a setcipherdata. Pro ilustraci jsou zde uvedeny metody zajišťující šifrování. Nejprve vyplnění transpoziční tabulky metodou setplaindata třídy TranspositionDataModel: // tabulka má již nastavený počet sloupců a od něj odvozený počet řádků (počet řádků = délka textu / počet sloupců) public void setplaindata(string text) { int rows = getrowcount(); // počet řádků int columns = getcolumncount(); //počet sloupců int position = 0; //pozice v textu int length = text.length(); //délka textu for (int row = 0; row < rows; row++) //přes všechny řádky a sloupce

56 42 KAPITOLA 5 Implementace } } for (int column = 0; column < columns; column++, position++) { if (position < length) { //nastav hodnotu tabulky jako znak textu data[row][column] = String.valueOf(text.charAt(position)); } else data[row][column] = "X"; //přebývají-li v tabulce volné //buňky, vyplň znakem X Následuje výpis funkce encrypt z třídy TranspositionCipher: public String encrypt() { if (table == null) throw new NullPointerException("Neinicializovaná tabulka transpozice."); //buffer výsledného textu StringBuffer ciphertext = new StringBuffer(sourceText.length()); int rows = table.getrowcount(); //počet řádků int columns = table.getcolumncount(); //počet sloupců //přes všechny sloupce a řádky for (int column = 0; column < columns; column++) { for (int row = 0; row < rows; row++) //přidej do výsledného textu znak dané buňky ciphertext.append(table.getvalueat(row, column)); } return ciphertext.tostring(); } Ruční přesouvání sloupců je výchozím chováním komponenty JTable. Reakce na změny uspořádání sloupců a automatické šifrování, resp. dešifrování je vyřešeno objektem posluchače, který implementuje rozhraní TableColumnModel. Posluchač je registrován sloupcovému modelu tabulky. Kryptoanalýza transpozice je založena na standardních programovacích technikách. Vyhledávání vzorů bigramů v řádků je řešeno ve dvou vnořených cyklech ve vnějším cyklu se iteruje po pozicích v řádku (tedy po sloupcích) a ty jsou porovnány s prvním znakem bigramu. Pokud se písmeno na pozici v řádku shoduje s prvním písmem bigramu, je spuštěn druhý cyklus, který iteruje opět přes pozice v řádku (po sloupcích) a porovnává písmena na nich s druhým znakem bigramu. Pokud se s písmenem rovná, je získané uspořádání sloupců, v nichž se bigram nachází, vloženo do instance třídy IncrementalHashMap (hašovací mapa, která podporuje čítání četnosti klíčů vložením klíče je jeho hodnota zvýšena o 1, či zadaný inkrement), čímž zároveň dochází k výpočtu četností uspořádání sloupců. Zároveň je též uložena informace o nalezení bigramu do tabulky výskytů frekventovaných bigramů v řádcích. 5.5 Implementace Vigenèrovy šifry grafické rozhraní, šifrování Dialogová okna Vigenèrovy šifry pro šifrování a dešifrování obsahují implementačně rutinní kód. Textovému poli pro zadání klíče je přiřazen objekt posluchače, který při změně stavu obsahu okna, spouští šifrování. Šifrování a dešifrování probíhá průchodem přes všechna písmena textu a jejich součtem, či rozdílem s písmeny klíče na příslušných pozicích. To nejlépe ilustruje výpis funkce encrypt třídy VigenereCipher: // sourcetext výchozí (v tomto případě šifrování) otevřený text

57 KAPITOLA 5 Implementace 43 // key - klíč public String encrypt() { char[] ch = sourcetext.tochararray(); //převedení výchozího textu na pole key = key.tolowercase(); //klíč převeden na malá písmena char[] charkey = key.tochararray(); //převedení klíče na pole int length = ch.length; //délka textu int keylength = key.length(); //délka klíče } for (int i = 0; i < length; i++) //pro všechny znaky textu //znak na i-té pozici je nahrazen znakem posunutým o znak na // (i modulo délka klíče)-té pozici klíče ch[i] = (char)(((int)ch[i] ((int)charkey[i % keylength] - 97)) % ); return new String(ch); Kryptoanalýza Vigenèrovy šifry je založena na rozkladu šifrového textu na tolik skupin, jaká je délka klíče. Aplikace nabízí rozklad pro délku klíče 1 až 20. Pro každou délku klíče je vypočítán průměrný index koincidence z indexů koincidence jednotlivých skupin textu. Kryptoanalýza dále pokračuje výpočtem kvantizační odchylky pro každou ze skupin. Průběh výpočtu kvantizační odchylky ilustruje výpis funkce pro výpočet kvantizační odchylky computequantitydevitiation. // Funkce vrací jednoduchý datový model pro tabulku kvantizační odchylky // Parametr groups je množina skupin textu vzniklá rozdělením původního textu dle // délky klíče // Parametr l instance třídy implementující rozhraní Language informace o // zvoleném jazyku public SimpleDataModel computequantitydeviation(vigeneredecomposedtextsets groups, Language l) { int numgroups = groups.getgroupsnum(); // počet skupin String[][] data = new String[26][numGroups]; // vytvoření dvojrozměrného //pole for (int i = 0; i < numgroups; i++) { // pro každou skupinu // pole četností výskytu znaků int[]charfreqtable= CryptoUtils.countCharacters(groups.getGroup(i)); int deviation; // odchylka // pole nejvíce četných znaků v jazyce char[] highfreqchars = getchararayfromset(l.gethighfrequentedcharacters()); // pole nejméně četných znaků v jazyce char[] lowfreqchars = getchararayfromset(l.getlowfrequentedcharacters()); for (int j = 0; j < 26; j++) { // pro každé posunutí znaku deviation = 0; // vypočtena odchylka jeho výskytů v textu o dané posunutí // s nejvíce a nejméně četnými znaky jazyka for (int k = 0; k < highfreqchars.length; k++) deviation += charfreqtable[(highfreqchars[k] + j - 65) % 26]; for (int k = 0; k < lowfreqchars.length; k++) deviation -= charfreqtable[(lowfreqchars[k] + j - 65) % 26];

58 44 KAPITOLA 5 Implementace } data[j][i] = new String(String.valueOf(deviation)); } } tagmaxvalues(data); //označení největší hodnoty return new SimpleDataModel(data); 5.6 Využití třídy BigInteger v implementaci RSA šifrování a D-H dohody na klíči Standardní knihovna jazyka Java obsahuje v knihovně math třídu BigInteger pro práci s velkými čísly. Na této třídě je v praxi založena oficiální implementace asymetrických kryptografických metod knihovny javax.crypto a security [20]. Třída BigInteger poskytuje kromě běžných aritmetických operací též metody a funkce pro práci s prvočísly (testování prvočíselnosti, generování prvočísel), modulární aritmetiku, výpočty největších společných dělitelů a bitové manipulace s čísly. Filozofie třídy je objektová každé číslo je instancí třídy BigInteger. Binární operace jsou prováděny tak, že jeden z operandů je objektem, který na sebe volá metodu s druhým operandem v parametru. Výsledek je pak vrácen danou funkcí. Vzhledem k tomu, že je třída BigInteger využita k implementaci RSA a D-H dohody na klíči, budou zde rozebrány metody, které jsou v aplikaci využity (vynechány jsou metody základní aritmetické pro součet, rozdíl, násobení a dělení čísel). Signatura použitých metod a funkcí je následující: boolean isprobableprime(int) BigInteger probableprime(int, Random) BigInteger gcd(biginteger) BigInteger modinverse(biginteger) BigInteger modpow(biginteger, BigInteger) Funkce isprobableprime je určena k testování prvočíselnosti. Testování je založeno na základě pravděpodobnostních metod, konkrétně Miller-Rabinově testu, jak je definováno ve specifikaci FIST [29]. Parametrem metody je míra nejistoty výsledku, jakou klient toleruje. Pokud metoda vrací true, pravděpodobnost, že číslo je prvočíslem, přesahuje 1 1/2 d, kde d je hodnota parametru. Vrací-li metoda false, je číslo s jistotou složené. Funkce probableprime vrací náhodné prvočíslo. První parametr specifikuje počet bitů tohoto čísla, druhým parametrem je instance třídy Random poskytující zdroj náhodných hodnot. Funkce gcd vrací největší společný dělitel dvou čísel. Jedním z operandů je volající objekt (this), druhým parametr metody. Metoda využívá kombinace euklidova algoritmu, dokud nebudou obě čísla přibližně stejné délky, a dále výpočtem binárního GCD (algoritmus B [30]). Funkce modinverse vrací inverzi čísla v Z d, kde d je zadáno parametrem funkce. Metoda využívá různých algoritmů výpočtu inverse na základně toho, zda je d sudé, či liché. V případě lichého je použit algoritmus Richard Schroeppela založený na myšlence Montgomeryho redukce [31]. V případě, že je d sudé, je využito čínské věty o zbytcích. Funkce modpow vrací mocninu čísla modulo. Prvním parametrem je exponent, druhým parametrem modul. Výpočet je založen window algoritmu [32] v případě lichého modulu. V případě sudého modulu je uvedený algoritmus kombinován s čínskou větou o zbytcích.

59 KAPITOLA 5 Implementace 45 Výše uvedené metody jsou základem implementace RSA a Diffie-Hellman dohody na klíči v rámci aplikace. Pomocí nich jsou prováděny jednotlivé kroky obou metod. Zbývající implementační náležitosti RSA a D-H dohody na klíči se týkají pouze přípravy obsahu textových prvků grafického rozhraní popisující průběh metod a v případě RSA formátová textu na bloky. Pro úplnost je uvedena funkce encrypt třídy RSACipher: //metoda vrací zašifrované bloky textu ve formě řetězce public String encrypt() { if (sourcetext == null) throw new NullPointerException("Není zadaný otevřený text"); BigInteger[] blocks = getblocksfromplaintext(); //bloky zakódovaného textu int length = blocks.length; // počet bloků StringBuffer sb = new StringBuffer(); // výstupní buffer BigInteger blockelement; // prvek pole bloků BigInteger cipherelement; // zašifrovaný prvek for (int i = 0; i < length; i++) { // pro každý blok blockelement = blocks[i]; // vypočítej mocninu blok^e mod Z_N cipherelement = blockelement.modpow(e, modulus); sb.append(cipherelement); if (i + 1!= length) sb.append(" "); // mezera mezi bloky } return sb.tostring(); } 5.7 Implementace kontextové nápovědy Jako součást budoucích verzí aplikace je plánováno přidání systému kontextové nápovědy. Stisknutím F1 dojde k otevření okna nápovědy s obsahem příslušným konkrétnímu dialogovému oknu či přímo jeho prvku. Kontextová nápověda bude postavena na knihovně JavaHelp [33], která poskytuje možnosti propojení komponent s obrazovkami nápovědy, okna nápovědy (rejstřík, obsah, vyhledávání) a systém tvorby kapitol a obrazovek nápovědy na základě html a xml souborů. 5.8 Styl grafického rozhraní Programovací jazyk Java nabízí při použití knihovny grafického rozhraní Swing možnost použít tzv. look and feel styly (použité barvy oken, titulků, fonty písma, tvary tlačítek, ohraničení prvků atd.). Pro aplikaci CryptoVisio byl zvolen styl plastic z knihovny JGoodies [34]. Předností tohoto stylu je neutrální rozhraní, které se velmi podobá rozhraní stylu operačního systému Windows XP.

60 46 KAPITOLA 5 Implementace

61 KAPITOLA 6 Testování 47 6 Testování 6.1 Systémové testování Aplikace byla během vývoje průběžně testována na počítačích následující konfigurace: Pentium IV 3.0 GHz, 2048 MB RAM, OS Windows XP (bez SP2); Pentium II Celeron 400 MHz, 192 MB RAM, OS Windows 98 (první vydání). Po vyladění výkonnosti aplikace z hlediska vláken byla na obou počítačích pozorována výkonnost aplikace poplatná Java aplikacím obecně delší prodleva při spouštění způsobená zaváděním virtuálního stroje a zpracování bytekódu. Na druhém zmiňovaném pc pak byly patrné krátké prodlevy při zavádění některých poprvé otevíraných dialogových oken, které jsou však pro náročnější aplikace na tomto pc typické. Na druhém pc byl z důvodu operačního systém shledán problém s absencí systémového fontu. Problém byl vyřešen úpravou metody getfontset ve třídě PlasticTheme knihovny JGoodies. Autor knihovny byl o potenciální chybě informován. Ve finální fázi vývoje byla aplikace testována na pc střední výkonnosti - Pentium III 850 MHz, 256 MB RAM, Windows ME; Pentium IV 1.4 GHz, 512 MB RAM, Windows XP. V obou případech byla funkčnost aplikace poplatná výkonnosti aplikace v Javě spouštěné na dané platformě. Testovacími texty byly texty o délce 20, 100, 1000, a znaků. V případě objemnějších textů je na pomalejších systémech patrné zatížení aplikace způsobené přepočítáváním statistik a indexu koincidence. Vzhledem k tomu, že je aplikace určena v prvé řadě pro demonstrační účely a nebyly kladené primární požadavky na výkonnost v praktickém použití jejích šifrovacích možností při zpracování velkých objemů textů, jsou tyto prodlevy aplikace vysvětlitelné a pro určené použití aplikace irelevantní. Aplikace byla dále testována na počítači o konfiguraci Pentium IV 1,6 GHz, 712 MB RAM s unixovými operačními systémy Linux (distribuce Debian) a Solaris 10. Co se týče operačního systému nebyly zaznamenány žádné problémy. Skrze výkonnost aplikace vykazovala srovnatelné chování se systémem Windows a odpovídala výkonnosti daného pc. Rozdílem oproti os Windows byly rozdílné velikosti fontů. 6.2 Testování funkcí S pomocí aplikace byly zkusmo šifrovány, dešifrovány a podrobeny kryptoanalýze ke kryptoanalýze určené texty z [35]. Dále texty náhodné zkopírovaný obsah webových stránek českých a anglických zpravodajských serverů, pasáže textů elektronických dokumentů a e- mailové zprávy. V průběhu šifrování, dešifrování a kryptoanalýzy nebyly zaznamenány žádné problémy. Kryptoanalýza jednotlivých šifer vykazuje uspokojivé výsledky, texty lze s využitím aplikace poměrně s úspěchem dešifrovat. Dle vyjádření dvou nestranných uživatelů je aplikace hlavně díky využití otevíracího panelu detailních popisků názorná. V rámci jejich připomínek a konzultací s vedoucím bakalářské práce byly dodány a upraveny některé funkce a zejména doplněny textové popisky přímo v samotných dialogových oknech.

62 48 KAPITOLA 6 Testování

63 KAPITOLA 7 Požadavky pro spuštění aplikace 49 7 Požadavky pro spuštění aplikace Pro spuštění aplikace CryptoVisio je nutné mít na počítači nainstalované běhové prostředí Javy (JRE) verze 1.5. Požadavky na operační systém jsou určeny požadavky, které pro své nainstalování potřebuje JRE jinými slovy, aplikace je vázána pouze na JRE bez ohledu na to, jaký je typ operačního systému. Požadavky na hardware podobně následují obecné požadavky pro Java aplikace minimální doporučená taktovací frekvence procesoru pro rozumnou výkonnost aplikace je 400 MHz, pro plynulejší chod je vhodný procesor frekvence minimálně dvojnásobné. Mnohem více záleží na operační paměti, kde 128 MB je pravděpodobně skutečným minimem. Nároky na kapacitu pevného disku jsou pro samotnou aplikaci minimální, JRE pak vyžaduje přibližně 20 MB. Minimální podporované rozlišení pro spuštění aplikace je rozlišení 800x600; doporučené pro pohodlí práce je rozlišení vyšší. Zajímavou alternativou z hlediska výkonnosti je spouštění aplikací Javy v režimu server. V tomto režimu se aplikace načítá pomaleji a spotřebuje o něco více paměti, nárůst výkonu výkonu však může být poměrně značný, jak ukazují některé testy. Aplikace v Javě se ve výchozím nastavení spouštějí v režimu client z důvodu šetření operační paměti [36]. Výkonnost v tomto režimu ovšem za serverovým režimem velmi zaostává [14], [37], [38]. Možností, jak aplikaci spustit v režimu server, je následující příkaz příkazového řádku: java -server -jar Crypto.jar [37] v pasáži using server VM uvádí podrobnější možnosti nastavení.

64 50 KAPITOLA 7 Požadavky pro spuštění aplikace

65 KAPITOLA 8 Závěr 51 8 Závěr Vytvořením první verze aplikace CryptoVisio se podařilo v mezích rozsahu práce splnit zadání práce. Aplikace zahrnuje požadované metody, obsahuje demonstrační prvky, které z každé metody intuitivně vyplývají (grafy, tabulky, průvodce, náhledy na průběh šifrování), a je doplněna i o některé vysvětlující prvky (otevírací panel vysvětlujících popisků; možnost doimplementování kontextové nápovědy). Návrh aplikace se opírá o doporučení a požadavky vedoucího bakalářské práce a též o autorovu vlastní invenci prioritou návrhů bylo spíše zahrnutí základů, nežli možností a metod, které by danou problematiku řešily lépe a efektivně, ovšem mnohem méně srozumitelně. Z hlediska pokrytí požadavků má aplikace potenciál být užitečným doplňkem výuky základních kryptografických a kryptoanalytických metod. Aplikace svým zpracováním pokrývá mezeru v nabídce demonstračních kryptografických aplikací. Zahrnuje v jednotném rozhraní několik vybraných metod založených na různých principech a to včetně jejich šifrování, dešifrování a kryptoanalýzy. Dále zejména obsahuje didaktické a demonstrační prvky s možností bezprostředního experimentování, přičemž návrh jejího grafického rozhraní a funkcí splňuje požadavky přehlednosti a intuitivnosti. Aplikace dále umožňuje generovat výstupy statistik textu ve formě grafů, které lze exportovat ve formátu obrázku png, a tabulek exportovatelných do formátu csv (textový soubor hodnot oddělených čárkami). Přestože aplikace tak může být díky svým funkcím využita (načítání a ukládání textů, popř. statistik), není prvotně určena pro praktické šifrování, dešifrování a kryptoanalýzu. Jednotlivé operace jsou v některých případech záměrně ponechány na spoluúčasti uživatele, nehledě též na faktor bezpečnosti, kdy jsou použity výchozí, takřka spíše učebnicové implementace daných metod. V rámci vývoje aplikace se potvrdila síla standardních knihoven Javy a též efektivita objektového návrhu, díky němuž bylo provádění modifikací a rozšiřování programu bezproblémové. Oproti předpokladům se naopak neosvědčila komponenta knihovny Swing JInternalFrame, která ve své výchozí verzi vykazuje omezené chování, a musela být nahrazena standardní třídou JDialog. Lze říci, že ač se zpočátku existence jazyku Java nevěřilo v jeho prosazení na poli čistě desktopových aplikací, potvrdil se vzrůstající trend jeho možností, využití a flexibility vývoje i v této oblasti. Ve vývoji a zdokonalování aplikace je motivace a prostor pokračovat. V rámci implementace aplikace byla snaha dodržovat objektový přístup, což vede k možnostem pohodlnějšího a snadnějšího rozšiřování aplikace. V rámci tvorby aplikace byl patrný přínos v oblasti získávání zkušeností při vývoji aplikace na míru zadanému účelu s průběžným upřesňováním návrhu. Dále pak seznámení s možnostmi třídy BigInteger a knihovny JFreeChart a problematikou implementace kryptografických metod a technik. Během tvorby celé práce bylo třeba se podrobně seznámit se všemi zahrnutými metodami a možnostmi jejich kryptoanalýzy, z nichž mnohé pro svou malou demonstrační hodnotu nebyly nakonec ani implementovány. Kromě zmiňované třídy BigInteger a knihovny JFreeChart bylo též vhodné seznámit se s výkonnostními charakteristikami jazyku Java a metodami pro zlepšení výkonnosti programů v něm napsaných. Vedle některých vzorů pro tvorbu komponent uživatelského rozhraní (dialogové okno typu průvodce) bylo též přínosné seznámit se s vnitřní strukturou a implementací knihovny grafického uživatelského rozhraní Swing pro možnosti rozšíření komponent existujících a implementace některých jejich nových

66 52 KAPITOLA 8 Závěr prvků. Poučná byla též nutnost podrobnějšího seznámení se zaváděcím a překládacím nástrojem Ant [39] programů v jazyce Java.

67 KAPITOLA 9 Seznam použité literatury 53 9 Seznam použité literatury [1] J. Přibyl, J. Kodl. Ochrana dat v informatice. Vydavatelství ČVUT, Praha, 1. vydání, [2] J. Přibyl. Informační bezpečnost a utajování zpráv. Vydavatelství ČVUT, Praha, 1. vydání, [3] Úvod do klasických a moderních metod šifrování - přednášky MFF UK: [4] P.Vondruška. Je RSA bezpečné?. Crypto-World, 1/2001: 2-10, [5] J. Pinkava. Kryptografie a Normy II. Crypto-World, 10/2000: 13-15, [6] J. Pinkava. Kryptografie a normy I. Crypto-World, 9/2000: 10-13, [7] RSA Challenge numbers: [8] PKCS#1: RSA Cryptography Standard: [9] Daniel Bleichenbacher: Chosen Ciphertext Attacks against Protocols Based on RSA Encryption Standard PKCS #1: [10] Breaking transposition ciphers with ants: [11] A Clark, E Dawson. Optimisation heuristics for the Automated Cryptoanalysis of classical ciphers. [12] D. R. Stinson. Cryptography - Theory and Practice. CRC Press,, 2. vydání, [13] The JavaTM Virtual Machine Specification: [14] J. Shirazi. Java - vylaďování výkonu. Grada, Praha, 1. vydání, [15] J2SE 5.0 Performance White Paper: [16] Accelerate your Java apps: [17] Java/C++ benchmark: [18] Performance of Java versus C++: [19] Nine Language Performance Round-up: Benchmarking Math & File I/O: [20] JavaTM 2 Platform Standard Edition 5.0 API Specification: [21] J. Marinacci, C. Adamson. Swing hacks. O'Reilly, Sebastopol, 1. vydání, [22] JFreeChart: [23] SecretCodeBreaker.com: [24] Transposition applet:

68 54 KAPITOLA 9 Seznam použité literatury [25] Software for the Vigenere Cipher: [26] Cryptology Laboratory: [27] E. Gamma, R. Helm, R. Johnson, J. Vlissides. Návrh programů pomocí vzorů. Grada, Praha, 1. vydání, [28] J. Bloch. Effective Java. Addison Wesley, Upper Saddle River, 1. vydání, [29] DIGITAL SIGNATURE STANDARD (DSS) A probabilistic primality test: [30] D. E. Knuth. The art of computer programming 2. Addison Wesley, Upper Saddle River, 3. vydání, [31] C. K. Koc, Montgomery reduction with even modulus: [32] A. J. Menezes, P. C. van Oorschot, S. A. Vanstone. Handbook of Applied Cryptography. CRC Press,, 5. vydání, [33] JavaHelp: [34] JGoodies: [35] J. Přibyl. Informační bezpečnost a utajování zpráv - cvičení. Vydavatelství ČVUT, Praha, 1. vydání, [36] The Java HotSpotTM Client and Server Virtual Machines: [37] Java faster than C++: [38] Java really faster than C++?: l [39] Ant: [40] F. Čermák, M. Křen. Frekvenční slovník češtiny. Nakladatelství Lidové noviny, Praha, 1. vydání, UML diagramy byly vytvořené s použitím programu Visual Paradigm 5.2 Community Edition -

69 KAPITOLA A Uživatelský manuál 55 A Uživatelský manuál Po spuštění je zobrazeno hlavní okno aplikace. Jeho popis je spojen s následujícím obrázkem: Ilustrace 7: Popis úvodního okna aplikace 1 textové oblasti pro zadání otevřeného a šifrového textu 2 panel statistik zadaných textů 3 panel šifrovacích operací 4 stavový řádek 5 menu aplikace A.1 Textové oblasti pro zadání otevřeného a šifrového textu Do těchto textových oblastí je možné zadávat otevřený, resp. šifrový text. Stisknutím klávesy insert lze přepínat mezi režimem vkládání a přepisu textu. Texty je též možné do aplikace vložit pomocí menu Soubor Načíst otevřený (šifrový) text, pravým kliknutím myši na textovou oblast a v kontextovém menu výběrem položky Načíst otevřený (šifrový) text, či vložením ze schránky pomocí kombinace kláves Ctrl + V. Text je možné též uložit opět pomocí volby menu Soubor Uložit otevřený (šifrový) text, pravým kliknutím myši na textovou oblast a v kontextovém menu výběrem položky Uložit

70 56 KAPITOLA A Uživatelský manuál otevřený (šifrový) text, či text označit a zkopírovat do schránky pomocí kombinace kláves Ctrl + C. A.2 Panel statistik zadaných textů Panel statistik zadaných textů obsahuje tabulky a grafy četnosti výskytu jednotlivých písmen v otevřeném a šifrovém textu. Panel obsahuje tři záložky - tabulka a graf je statistikou textu v jehož textové oblasti je kurzor; záložka tabulky obsahuje tabulky četností výskytu znaků v obou textech a analogicky záložka grafy obsahuje grafy četnosti výskytu znaků v obou textech. Dále panel v rámci tabulek obsahuje textové pole s aktuální hodnotu indexu koincidence. A.3 Panel šifrovacích operací Panel šifrovacích operací umožňuje rychlý výběr dané metody a po stisknutí příslušného tlačítka i danou akci nad vybranou metodou. A.4 Stavový řádek Stavový řádek zobrazuje aktuální informace o pozici kurzoru, počtu znaků v textu, režimu aplikace a seznamu výběru jazyků. A.5 Spuštění jednotlivých šifrovacích metod Spuštění jednotlivých šifrovacích metod je možné zajistit trojím způsobem výběrem z menu aplikace v rámci menu Šifrovací metody, pravým kliknutím myši na textové oblasti a výběrem stejnojmenné položky menu jako v předchozím případě, či pomocí panelu šifrovacích operací (tam není zahrnuta Diffie-Hellman dohoda na klíči, jakožto se nejedná přímo o šifrovací metodu). A.6 Šifrování a dešifrování substituce Šifrování a dešifrování substituce probíhá ve stejném dialogovém okně. V tabulce náhrady písmen jsou v levých sloupcích písmena otevřeného textu v případě šifrování, resp. písmena šifrového textu v případě dešifrování. V pravých sloupcích jsou pak výběrové seznamy, kterými lze písmenu přiřadit jeho šifrový, či otevřený protějšek. Písmena je též možné v seznamu zvolit stiskem klávesy požadovaného písmena. V rámci tohoto dialogového okna je též možné do textového pole zadat posun abecedy, coby Caesarovu šifru. Sadu přiřazených písmen je možné uložit do souboru, či ji naopak načíst příslušnými tlačítky.

71 KAPITOLA A Uživatelský manuál 57 Ilustrace 8: Okno šifrování substituce A.7 Kryptoanalýza substituce Kryptoanalýza substituce probíhá v podobném dialogovém okně jako šifrování/dešifrování substituce. Tabulka náhrady písmen je doplněna o sloupec relativní četnosti výskytu daného znaku v šifrovém textu. Okno je dále doplněno o graf zachycující relativní četnost výskytu znaků v šifrovém textu, referenční hodnoty relativní četnosti výskytu znaků v daném jazyku a relativní četnost výskytu přiřazeného písmena v otevřeném textu. V dialogovém okně lze přiřadit odhadovaná písmena otevřeného textu písmenům šifrového textu. Je též možné (s otevřeným oknem kryptoanalýzy) přejít do pole pro zadávání otevřeného textu a odhadovat písmena přímo vepsáním na místa dosud neodhadnutých znaků v otevřeném textu.

72 58 KAPITOLA A Uživatelský manuál Ilustrace 9: Okno kryptoanalýzy substituce A.8 Šifrování a dešifrování transpozice Ilustrace 10: Okno šifrování transpozice

73 KAPITOLA A Uživatelský manuál 59 Při šifrování transpozice je třeba nejprve v úvodním dialogovém okně specifikovat, zda se bude šifrovat s použitím klíče (a tento klíč zadat), či zda půjde o manuální šifrování (v tomto případě je třeba zadat počet sloupců transpoziční tabulky). V případě šifrování dle klíče je možné v následně otevřeném dialogovém okně stisknout tlačítko seřadit a dojde k seřazení sloupce dle klíče a zašifrování textu. Je též možné sloupce tažením myší seřadit ručně. V případě manuálního šifrování lze tažením myši sloupce nějakým způsobem přerovnat. Při dešifrování transpozice je třeba v úvodním dialogovém okně opět zadat, zda jde o šifrování dle klíče, či dle přesunutí sloupců. V prvním případě je třeba zadat klíč, v druhém případě posloupnost čísel sloupců, jakou bylo provedeno šifrování (čísla sloupců je třeba oddělit pomlčkami). Následné dialogové okno se řídí stejným pravidly jako při šifrování. Sloupce je možné seřadit přímo tlačítkem, či je seřadit ručně tažením myší. A.9 Kryptoanalýza transpozice Kryptoanalýza transpozice probíhá v jednom dialogovém okně. V něm je zobrazen seznam možných rozměrů transpoziční tabulky s odpovídajícím poměrem samohlásek a souhlásek v řádku pro každý rozměr se příslušně aktualizují statistiky a transpoziční tabulka. Dále je zobrazen seznam výskytů v jazyce frekventovaných bigramů v daných řádcích s označením, ve kterých sloupcích a jejich uspořádání se daný bigram vyskytuje. Následuje seznam četností uspořádání sloupců pro nalezené bigramy. Okno dále obsahuje transpoziční tabulku s označením poměru výskytu samohlásek a souhlásek v každém řádku. Přesouváním sloupců této tabulky lze zkoušet luštit šifrový text. Ilustrace 11: Okno kryptoanalýzy transpozice

74 60 KAPITOLA A Uživatelský manuál A.10 Šifrování a dešifrování Vigenèrovy šifry Šifrování a dešifrování Vigenèrovy šifry probíhá ve stejném dialogovém okně. Do textového pole lze zapsat klíč, jimž bude otevřený text zašifrován, či odšifrován. Při zadávání klíče je průběžně zobrazován náhled nad průběhem šifrování. Ilustrace 12: Okno šifrování Vigenèrovy šifry A.11 Kryptoanalýza Vigenèrovy šifry Dialogové okno kryptoanalýzy obsahuje seznam délek klíče od 1 do 20 s průměrnými indexy koincidence skupin, na něž se šifrový text rozdělí aplikací různých posunů abeced dle délky klíče. Z tohoto seznamu lze zvolit určitou délku klíče, která se hodnotou indexu koincidence nejvíce blíží hodnotě indexu koincidence zvoleného jazyka, která je uvedena níže. Tabulka kvantizačních odchylek pak červenou barvou indikuje, o jaký posun se ve které skupině pravděpodobně jedná. Písmeno v záhlaví řádku, kde se nachází indikovaná hodnota, je písmeno, které klíč obsahuje na pozici určené sloupcem.

75 KAPITOLA A Uživatelský manuál 61 Ilustrace 13: Okno kryptoanalýzy Vigenèrovy šifry A.12 RSA generování klíčů, šifrování a dešifrování Práce s metodou RSA probíhá následovně lze pouze vygenerovat pár klíčů, lze vygenerovat pár klíčů a šifrovat a lze pouze šifrovat či dešifrovat za podmínky, že klíče jsou již vygenerované. Spuštěním RSA šifrování či dešifrování dojde k zobrazení dialogu průvodce na jeho první obrazovce lze vybrat, jaká operace má být provedena zda nové generování klíčů, načtení klíčů ze souboru, zadání jednoho z klíčů (potřebného pro danou operaci; veřejný šifrování, soukromý dešifrování) přímo, či použití posledních vygenerovaných. V případě volby generování klíčů průvodce pokračuje jednotlivými kroky generování klíčů, kdy dochází k volbě a výpočtu parametrů pro generování klíčů. Při výběru některé z voleb použití již existujících klíčů průvodce automaticky překročí do fáze vytvoření klíčů. Zde je možnost klíče uložit do souboru, pokračovat dále v šifrování (popř. dešifrování), či dialog zavřít. Pokračování volbou šifrování (popř. dešifrování) dojde k zobrazení průběhu šifrování a náhledu na první znaky textu a stisknutím tlačítka šifrovat pak dojde k samotnému zašifrování (popř. dešifrování) textu v textových oblastech hlavního okna. V rámci průvodce se lze pohybovat na následující či předchozí obrazovky navigačními tlačítky.

76 62 KAPITOLA A Uživatelský manuál Ilustrace 14: Úvodní okno průvodce RSA Ilustrace 15: Okno vytvoření klíčů průvodce RSA

77 KAPITOLA A Uživatelský manuál 63 A.13 Diffie-Hellman dohoda na klíči Práce s ukázkou této metody probíhá opět formou dialogu typu průvodce, kdy průvodce prochází jednotlivými kroky metody, kde dochází k volbě či výpočtu parametrů. V rámci průvodce se lze pohybovat na následující či předchozí obrazovky navigačními tlačítky. Ilustrace 16: Okno průvodce D-H dohody na klíči A.14 Dialogy s otevíracími popisky Všechna dialogová okna v aplikaci mají funkci otevření panelu s detailními popisky. Tento panel lze otevřít a zavřít kliknutím na černou šipku v levém dolním rohu každého dialogového okna.

78 64 KAPITOLA A Uživatelský manuál Ilustrace 17: Dialogové okno s popiskem detailů

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

Šifrová ochrana informací věk počítačů PS5-2 VŠFS; Aplikovaná informatika; SW systémy 2005/2006 1 Bezpečnost informací BI Ing. Jindřich Kodl, CSc. Šifrová ochrana informací věk počítačů PS5-2 VŠFS; Aplikovaná informatika; SW systémy 2005/2006 2 Osnova

Více

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

Šifrová ochrana informací věk počítačů PS5-2 Bezpečnost informací BI Ing. Jindřich Kodl, CSc. Šifrová ochrana informací věk počítačů PS5-2 1 Osnova šifrová ochrana využívající výpočetní techniku např. Feistelova šifra; symetrické a asymetrické šifry;

Více

8. RSA, kryptografie s veřejným klíčem. doc. Ing. Róbert Lórencz, CSc.

8. RSA, kryptografie s veřejným klíčem. doc. Ing. Róbert Lórencz, CSc. Bezpečnost 8. RSA, kryptografie s veřejným klíčem doc. Ing. Róbert Lórencz, CSc. České vysoké učení technické v Praze Fakulta informačních technologií Katedra počítačových systémů Příprava studijních programů

Více

MFF UK Praha, 22. duben 2008

MFF UK Praha, 22. duben 2008 MFF UK Praha, 22. duben 2008 Elektronický podpis / CA / PKI část 1. http://crypto-world.info/mff/mff_01.pdf P.Vondruška Slide2 Přednáška pro ty, kteří chtějí vědět PROČ kliknout ANO/NE a co zatím všechno

Více

RSA. Matematické algoritmy (11MA) Miroslav Vlček, Jan Přikryl. Ústav aplikované matematiky ČVUT v Praze, Fakulta dopravní. čtvrtek 21.

RSA. Matematické algoritmy (11MA) Miroslav Vlček, Jan Přikryl. Ústav aplikované matematiky ČVUT v Praze, Fakulta dopravní. čtvrtek 21. Čínská věta o zbytcích Šifrování Závěr Čínská věta o zbytcích RSA Matematické algoritmy (11MA) Ústav aplikované matematiky ČVUT v Praze, Fakulta dopravní 4. přednáška 11MA čtvrtek 21. října 2010 verze:

Více

Asymetrická kryptografie a elektronický podpis. Ing. Dominik Breitenbacher Mgr. Radim Janča

Asymetrická kryptografie a elektronický podpis. Ing. Dominik Breitenbacher Mgr. Radim Janča Asymetrická kryptografie a elektronický podpis Ing. Dominik Breitenbacher ibreiten@fit.vutbr.cz Mgr. Radim Janča ijanca@fit.vutbr.cz Obsah cvičení Asymetrická, symetrická a hybridní kryptografie Kryptoanalýza

Více

Asymetrická kryptografie

Asymetrická kryptografie PEF MZLU v Brně 12. listopadu 2007 Problém výměny klíčů Problém výměny klíčů mezi odesílatelem a příjemcem zprávy trápil kryptografy po několik století. Problém spočívá ve výměně tajné informace tak, aby

Více

Čínská věta o zbytcích RSA

Čínská věta o zbytcích RSA Čínská věta o zbytcích RSA Matematické algoritmy (11MAG) Jan Přikryl Ústav aplikované matematiky ČVUT v Praze, Fakulta dopravní 5. přednáška 11MAG pondělí 10. listopadu 2014 verze: 2014-11-10 11:20 Obsah

Více

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

Kryptografie, elektronický podpis. Ing. Miloslav Hub, Ph.D. 27. listopadu 2007 Kryptografie, elektronický podpis Ing. Miloslav Hub, Ph.D. 27. listopadu 2007 Kryptologie Kryptologie věda o šifrování, dělí se: Kryptografie nauka o metodách utajování smyslu zpráv převodem do podoby,

Více

RSA. Matematické algoritmy (11MAG) Jan Přikryl. Ústav aplikované matematiky ČVUT v Praze, Fakulta dopravní. verze: :01

RSA. Matematické algoritmy (11MAG) Jan Přikryl. Ústav aplikované matematiky ČVUT v Praze, Fakulta dopravní. verze: :01 Čínská věta o zbytcích Mocnění Eulerova funkce Šifrování Závěr Čínská věta o zbytcích RSA Matematické algoritmy (11MAG) Ústav aplikované matematiky ČVUT v Praze, Fakulta dopravní 4. přednáška 11MAG ponděĺı

Více

Šifrová ochrana informací historie KS4

Šifrová ochrana informací historie KS4 VŠFS; Aplikovaná informatika; SW systémy 2005/2006 1 Bezpečnost informací BI Ing. Jindřich Kodl, CSc. Šifrová ochrana informací historie KS4 VŠFS; Aplikovaná informatika; SW systémy 2005/2006 2 Osnova

Více

Asymetrické šifry. Pavla Henzlová 28.3.2011. FJFI ČVUT v Praze. Pavla Henzlová (FJFI ČVUT v Praze) Asymetrické šifry 28.3.

Asymetrické šifry. Pavla Henzlová 28.3.2011. FJFI ČVUT v Praze. Pavla Henzlová (FJFI ČVUT v Praze) Asymetrické šifry 28.3. Asymetrické šifry Pavla Henzlová FJFI ČVUT v Praze 28.3.2011 Pavla Henzlová (FJFI ČVUT v Praze) Asymetrické šifry 28.3.2011 1 / 16 Obsah 1 Asymetrická kryptografie 2 Diskrétní logaritmus 3 Baby step -

Více

Pokročilá kryptologie

Pokročilá kryptologie Pokročilá kryptologie RSA doc. Ing. Róbert Lórencz, CSc. České vysoké učení technické v Praze Fakulta informačních technologií Katedra počítačových systémů Příprava studijních programů Informatika pro

Více

CO JE KRYPTOGRAFIE Šifrovací algoritmy Kódovací algoritmus Prolomení algoritmu

CO JE KRYPTOGRAFIE Šifrovací algoritmy Kódovací algoritmus Prolomení algoritmu KRYPTOGRAFIE CO JE KRYPTOGRAFIE Kryptografie je matematický vědní obor, který se zabývá šifrovacími a kódovacími algoritmy. Dělí se na dvě skupiny návrh kryptografických algoritmů a kryptoanalýzu, která

Více

Šifrová ochrana informací historie PS4

Šifrová ochrana informací historie PS4 Bezpečnost informací BI Ing. Jindřich Kodl, CSc. Šifrová ochrana informací historie PS4 1 Osnova úvod, definice pojmů; substituční šifry; transpoziční šifry; první prakticky používané šifrové systémy;

Více

Jak funguje asymetrické šifrování?

Jak funguje asymetrické šifrování? Jak funguje asymetrické šifrování? Petr Vodstrčil petr.vodstrcil@vsb.cz Katedra aplikované matematiky, Fakulta elektrotechniky a informatiky, Vysoká škola báňská Technická univerzita Ostrava Petr Vodstrčil

Více

Šifrová ochrana informací historie PS4

Šifrová ochrana informací historie PS4 VŠFS; Aplikovaná informatika; SW systémy 2005/2006 1 Bezpečnost informací BI Ing. Jindřich Kodl, CSc. Šifrová ochrana informací historie PS4 VŠFS; Aplikovaná informatika; SW systémy 2005/2006 2 Osnova

Více

Ukázky aplikací matematiky. Kapitola 1. Jiří Tůma. Úvod do šifrování. Základní pojmy- obsah. Historie šifrování

Ukázky aplikací matematiky. Kapitola 1. Jiří Tůma. Úvod do šifrování. Základní pojmy- obsah. Historie šifrování Ukázky aplikací matematiky Jiří Tůma 2015 http://www.karlin.mff.cuni.cz/ tuma/aplikace15.htm tuma@karlin.mff.cuni.cz Kapitola 1 0-1 1-1 Základní pojmy- obsah Historie šifrování Základnípojmy Ceasarova

Více

Ukázkyaplikacímatematiky

Ukázkyaplikacímatematiky Ukázkyaplikacímatematiky Jiří Tůma 2015 http://www.karlin.mff.cuni.cz/ tuma/aplikace15.htm tuma@karlin.mff.cuni.cz 0-1 Kapitola1 Úvod do šifrování 1-1 Základní pojmy- obsah Základnípojmy Ceasarova šifra

Více

Správa přístupu PS3-2

Správa přístupu PS3-2 Bezpečnost informací BI Ing. Jindřich Kodl, CSc. Správa přístupu PS3-2 1 Osnova II základní metody pro zajištění oprávněného přístupu; autentizace; autorizace; správa uživatelských účtů; srovnání současných

Více

Matematické základy šifrování a kódování

Matematické základy šifrování a kódování Matematické základy šifrování a kódování Permutace Pojem permutace patří mezi základní pojmy a nachází uplatnění v mnoha oblastech, např. kombinatorice, algebře apod. Definice Nechť je n-prvková množina.

Více

Vzdálenost jednoznačnosti a absolutně

Vzdálenost jednoznačnosti a absolutně Vzdálenost jednoznačnosti a absolutně bezpečné šifry Andrew Kozlík KA MFF UK Značení Pracujeme s šifrou (P, C, K, E, D), kde P je množina otevřených textů, C je množina šifrových textů, K je množina klíčů,

Více

Kryptografie založená na problému diskrétního logaritmu

Kryptografie založená na problému diskrétního logaritmu Kryptografie založená na problému diskrétního logaritmu Andrew Kozlík KA MFF UK Diffieho-Hellmanův protokol ustanovení klíče (1976) Před zahájením protokolu se ustanoví veřejně známé parametry: Konečná

Více

ElGamal, Diffie-Hellman

ElGamal, Diffie-Hellman Asymetrické šifrování 22. dubna 2010 Prezentace do předmětu UKRY Osnova 1 Diskrétní logaritmus 2 ElGamal 3 Diffie-Hellman Osnova 1 Diskrétní logaritmus 2 ElGamal 3 Diffie-Hellman Osnova 1 Diskrétní logaritmus

Více

asymetrická kryptografie

asymetrická kryptografie asymetrická kryptografie princip šifrování Zavazadlový algoritmus RSA EL GAMAL další asymetrické blokové algoritmy Skipjack a Kea, DSA, ECDSA D H, ECDH asymetrická kryptografie jeden klíč pro šifrování

Více

Diffieho-Hellmanův protokol ustanovení klíče

Diffieho-Hellmanův protokol ustanovení klíče Diffieho-Hellmanův protokol ustanovení klíče Andrew Kozlík KA MFF UK Diffieho-Hellmanův protokol ustanovení klíče (1976) Před zahájením protokolu se ustanoví veřejně známé parametry: Konečná grupa (G,

Více

klasická kryptologie základní pojmy požadavky na kryptosystém typologie šifer transpoziční šifry substituční šifry

klasická kryptologie základní pojmy požadavky na kryptosystém typologie šifer transpoziční šifry substituční šifry klasická kryptologie transpoziční šifry substituční šifry základní pojmy požadavky na kryptosystém pravidla bezpečnosti silný kryptosystém typologie šifer bloková x proudová s tajným klíčem x s veřejným

Více

kryptosystémy obecně další zajímavé substituční šifry klíčové hospodářství kryptografická pravidla Hillova šifra Vernamova šifra Knižní šifra

kryptosystémy obecně další zajímavé substituční šifry klíčové hospodářství kryptografická pravidla Hillova šifra Vernamova šifra Knižní šifra kryptosystémy obecně klíčové hospodářství klíč K, prostor klíčů T K kryptografická pravidla další zajímavé substituční šifry Hillova šifra Vernamova šifra Knižní šifra klíč K různě dlouhá posloupnost znaků

Více

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

Šifrová ochrana informací věk počítačů KS - 5 VŠFS; Aplikovaná informatika; SW systémy 2005/2006 1 Bezpečnost informací BI Ing. Jindřich Kodl, CSc. Šifrová ochrana informací věk počítačů KS - 5 VŠFS; Aplikovaná informatika; SW systémy 2005/2006 2

Více

Asymetrická kryptografie a elektronický podpis. Ing. Mgr. Martin Henzl Mgr. Radim Janča ijanca@fit.vutbr.cz

Asymetrická kryptografie a elektronický podpis. Ing. Mgr. Martin Henzl Mgr. Radim Janča ijanca@fit.vutbr.cz Asymetrická kryptografie a elektronický podpis Ing. Mgr. Martin Henzl Mgr. Radim Janča ijanca@fit.vutbr.cz Obsah cvičení Asymetrická, symetrická a hybridní kryptografie Matematické problémy, na kterých

Více

Substituční šifry a frekvenční analýza. Mgr. Radim Janča ijanca@fit.vutbr.cz

Substituční šifry a frekvenční analýza. Mgr. Radim Janča ijanca@fit.vutbr.cz Substituční šifry a frekvenční analýza Mgr. Radim Janča ijanca@fit.vutbr.cz Harmonogram Celkově 4 cvičení v P256 Prezentace z cvičení budou zveřejňovány na http://buslab.fit.vutbr.cz/kib/ 3 samostatné

Více

KRYPTOGRAFIE VER EJNE HO KLI Č E

KRYPTOGRAFIE VER EJNE HO KLI Č E KRYPTOGRAFIE VER EJNE HO KLI Č E ÚVOD Patricie Vyzinová Jako téma jsem si vybrala asymetrickou kryptografii (kryptografie s veřejným klíčem), což je skupina kryptografických metod, ve kterých se pro šifrování

Více

Datové struktury 2: Rozptylovací tabulky

Datové struktury 2: Rozptylovací tabulky Datové struktury 2: Rozptylovací tabulky prof. Ing. Pavel Tvrdík CSc. Katedra počítačových systémů Fakulta informačních technologií České vysoké učení technické v Praze c Pavel Tvrdík, 2010 Efektivní algoritmy

Více

KGG/STG Statistika pro geografy

KGG/STG Statistika pro geografy KGG/STG Statistika pro geografy 5. Odhady parametrů základního souboru Mgr. David Fiedor 16. března 2015 Vztahy mezi výběrovým a základním souborem Osnova 1 Úvod, pojmy Vztahy mezi výběrovým a základním

Více

Složitost a moderní kryptografie

Složitost a moderní kryptografie Složitost a moderní kryptografie Radek Pelánek Modulární systém dalšího vzdělávání pedagogických pracovníků JmK v přírodních vědách a informatice CZ.1.07/1.3.10/02.0024 Složitost a moderní kryptografie

Více

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

Šifrová ochrana informací věk počítačů PS5-1 Bezpečnost informací BI Ing. Jindřich Kodl, CSc. Šifrová ochrana informací věk počítačů PS5-1 1 Osnova šifrová ochrana využívající výpočetní techniku např. Feistelova šifra; symetrické a asymetrické šifry;

Více

Základy šifrování a kódování

Základy šifrování a kódování Materiál byl vytvořen v rámci projektu Nové výzvy, nové příležitosti, nová škola Tento projekt je spolufinancován Evropským sociálním fondem a státním rozpočtem České republiky Základy šifrování a kódování

Více

VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ

VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ VYUŽITÍ PRAVDĚPODOBNOSTNÍ METODY MONTE CARLO V SOUDNÍM INŽENÝRSTVÍ Michal Kořenář 1 Abstrakt Rozvoj výpočetní techniky v poslední době umožnil také rozvoj výpočetních metod, které nejsou založeny na bázi

Více

Protokol RSA. Tvorba klíčů a provoz protokolu Bezpečnost a korektnost protokolu Jednoduché útoky na provoz RSA Další kryptosystémy

Protokol RSA. Tvorba klíčů a provoz protokolu Bezpečnost a korektnost protokolu Jednoduché útoky na provoz RSA Další kryptosystémy Protokol RSA Jiří Velebil: X01DML 3. prosince 2010: Protokol RSA 1/18 Protokol RSA Autoři: Ronald Rivest, Adi Shamir a Leonard Adleman. a Publikováno: R. L. Rivest, A. Shamir a L. Adleman, A Method for

Více

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

Moderní metody substitučního šifrování PEF MZLU v Brně 11. listopadu 2010 Úvod V současné době se pro bezpečnou komunikaci používají elektronická média. Zprávy se před šifrováním převádí do tvaru zpracovatelného technickým vybavením, do binární

Více

Komerční výrobky pro kvantovou kryptografii

Komerční výrobky pro kvantovou kryptografii Cryptofest 05 Katedra počítačů, Fakulta elektrotechnická České vysoké učení technické v Praze 19. března 2005 O čem bude řeč Kryptografie Kryptografie se zejména snaží řešit: autorizovanost přístupu autenticitu

Více

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty

Data v počítači. Informační data. Logické hodnoty. Znakové hodnoty Data v počítači Informační data (elementární datové typy) Logické hodnoty Znaky Čísla v pevné řádové čárce (celá čísla) v pohyblivé (plovoucí) řád. čárce (reálná čísla) Povelová data (instrukce programu)

Více

2000 zveřejnění dobové zprávy General Report on Tunny informací nedostatek k odvození konstrukce šifrátoru Lorenz cíl: odvození pravděpodobného

2000 zveřejnění dobové zprávy General Report on Tunny informací nedostatek k odvození konstrukce šifrátoru Lorenz cíl: odvození pravděpodobného Luštění německého šifrovacího stroje Lorenz podle bakalářské práce Petra Veselého, MFF UK 22. února 2012 2000 zveřejnění dobové zprávy General Report on Tunny informací nedostatek k odvození konstrukce

Více

klasická kryptologie základní pojmy požadavky na kryptosystém typologie šifer transpoziční šifry substituční šifry

klasická kryptologie základní pojmy požadavky na kryptosystém typologie šifer transpoziční šifry substituční šifry Květuše Sýkorová Květuše Sýkorová klasická kryptologie transpoziční šifry substituční šifry základní pojmy požadavky na kryptosystém pravidla bezpečnosti silný kryptosystém typologie šifer bloková x proudová

Více

Složitost Filip Hlásek

Složitost Filip Hlásek Složitost Filip Hlásek Abstrakt. Příspěvek popisuje dva základní koncepty teoretické informatiky, Turingovy stroje a složitost. Kromě definic důležitých pojmů uvádí také několik souvisejících tvrzení,

Více

2000 zveřejnění dobové zprávy General Report on Tunny

2000 zveřejnění dobové zprávy General Report on Tunny Luštění německého šifrovacího stroje Lorenz podle bakalářské práce Petra Veselého, MFF UK 25. února 2010 2000 zveřejnění dobové zprávy General Report on Tunny 2000 zveřejnění dobové zprávy General Report

Více

Základy kryptologie. Kamil Malinka malinka@fit.vutbr.cz Fakulta informačních technologií

Základy kryptologie. Kamil Malinka malinka@fit.vutbr.cz Fakulta informačních technologií Základy kryptologie Kamil Malinka malinka@fit.vutbr.cz Fakulta informačních technologií 1 Detaily zkoušky Během semestru je možno získat maximální počet 100 bodů projekty - 20b. vnitrosemestrální písemka

Více

České vysoké učení technické v Praze Fakulta elektrotechnická Katedra telekomunikační techniky Asymetrické kryptosystémy I

České vysoké učení technické v Praze Fakulta elektrotechnická Katedra telekomunikační techniky Asymetrické kryptosystémy I České vysoké učení technické v Praze Fakulta elektrotechnická Katedra telekomunikační techniky Asymetrické kryptosystémy I Ing. Tomáš Vaněk, Ph.D. tomas.vanek@fel.cvut.cz Osnova obecné informace IFP RSA

Více

Kvantové algoritmy a bezpečnost. Václav Potoček

Kvantové algoritmy a bezpečnost. Václav Potoček Kvantové algoritmy a bezpečnost Václav Potoček Osnova Úvod: Kvantové zpracování informace Shorův algoritmus Kvantová distribuce klíče Post-kvantové zabezpečení Úvod Kvantové zpracování informace Kvantový

Více

Dobývání znalostí. Doc. RNDr. Iveta Mrázová, CSc. Katedra teoretické informatiky Matematicko-fyzikální fakulta Univerzity Karlovy v Praze

Dobývání znalostí. Doc. RNDr. Iveta Mrázová, CSc. Katedra teoretické informatiky Matematicko-fyzikální fakulta Univerzity Karlovy v Praze Dobývání znalostí Doc. RNDr. Iveta Mrázová, CSc. Katedra teoretické informatiky Matematicko-fyzikální fakulta Univerzity Karlovy v Praze Dobývání znalostí Pravděpodobnost a učení Doc. RNDr. Iveta Mrázová,

Více

Interpolace Uvažujme třídu funkcí jedné proměnné ψ(x; a 0,..., a n ), kde a 0,..., a n jsou parametry, které popisují jednotlivé funkce této třídy. Mějme dány body x 0, x 1,..., x n, x i x k, i, k = 0,

Více

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru: 3 Maticový počet 3.1 Zavedení pojmu matice Maticí typu (m, n, kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru: a 11 a 12... a 1k... a 1n a 21 a 22...

Více

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná.

Nový způsob práce s průběžnou klasifikací lze nastavit pouze tehdy, je-li průběžná klasifikace v evidenčním pololetí a školním roce prázdná. Průběžná klasifikace Nová verze modulu Klasifikace žáků přináší novinky především v práci s průběžnou klasifikací. Pro zadání průběžné klasifikace ve třídě doposud existovaly 3 funkce Průběžná klasifikace,

Více

Eliptické křivky a RSA

Eliptické křivky a RSA Přehled Katedra informatiky FEI VŠB TU Ostrava 11. února 2005 Přehled Část I: Matematický základ Část II: RSA Část III: Eliptické křivky Matematický základ 1 Základní pojmy a algoritmy Základní pojmy Složitost

Více

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

Digitální podepisování pomocí asymetrické kryptografie Digitální podepisování pomocí asymetrické kryptografie 11. dubna 2011 Trocha historie Asymetrické metody Historie Historie Vlastnosti Asymetrické šifrování 1976 Whitfield Diffie a Martin Hellman první

Více

Problematika převodu zprávy na body eliptické křivky

Problematika převodu zprávy na body eliptické křivky Problematika převodu zprávy na body eliptické křivky Ing. Filip Buršík Ústav telekomunikací Fakulta elektrotechniky a komunikačních technologií Vysoké Učení Technické v Brně Purkyňova 118, 612 00 Brno,

Více

Základy algoritmizace. Pattern matching

Základy algoritmizace. Pattern matching Základy algoritmizace Pattern matching 1 Pattern matching Úloha nalézt v nějakém textu výskyty zadaných textových vzorků patří v počítačové praxi k nejfrekventovanějším. Algoritmy, které ji řeší se používají

Více

Analýza dat na PC I.

Analýza dat na PC I. CENTRUM BIOSTATISTIKY A ANALÝZ Lékařská a Přírodovědecká fakulta, Masarykova univerzita Analýza dat na PC I. Popisná analýza v programu Statistica IBA výuka Základní popisná statistika Popisná statistika

Více

Náhodné (statistické) chyby přímých měření

Náhodné (statistické) chyby přímých měření Náhodné (statistické) chyby přímých měření Hodnoty náhodných chyb se nedají stanovit předem, ale na základě počtu pravděpodobnosti lze zjistit, která z možných naměřených hodnot je více a která je méně

Více

Obsah. Několik slov o Excelu 2007 a 2010 9. Operace při otvírání a ukládání sešitu 15. Operace s okny 27. Kapitola 1

Obsah. Několik slov o Excelu 2007 a 2010 9. Operace při otvírání a ukládání sešitu 15. Operace s okny 27. Kapitola 1 Obsah Kapitola 1 Několik slov o Excelu 2007 a 2010 9 Nové uživatelské rozhraní 9 Pás karet 10 Panel nástrojů Rychlý přístup 11 Tlačítko Office 11 Pracovní plocha 12 Nápověda 13 Kapitola 2 Operace při otvírání

Více

Řetězové zlomky. již čtenář obeznámen. Důraz bude kladen na implementační stránku, protože ta je ve

Řetězové zlomky. již čtenář obeznámen. Důraz bude kladen na implementační stránku, protože ta je ve Faktorizace čísel pomocí řetězových zlomků Tento text se zabývá algoritmem CFRAC (continued fractions algorithm) pro rozkládání velkých čísel (typicky součinů dvou velkých prvočísel). Nebudeme se zde zabývat

Více

VYTVÁŘENÍ DATABÁZÍ, VKLÁDÁNÍ ÚDAJŮ

VYTVÁŘENÍ DATABÁZÍ, VKLÁDÁNÍ ÚDAJŮ Úvod do problematiky VYTVÁŘENÍ DATABÁZÍ, VKLÁDÁNÍ ÚDAJŮ Databáze je uspořádaná množina velkého množství informací (dat). Příkladem databáze je překladový slovník, seznam PSČ nebo telefonní seznam. Databáze

Více

Y36BEZ Bezpečnost přenosu a zpracování dat. Úvod 2. Róbert Lórencz. http://service.felk.cvut.cz/courses/y36bez lorencz@fel.cvut.cz

Y36BEZ Bezpečnost přenosu a zpracování dat. Úvod 2. Róbert Lórencz. http://service.felk.cvut.cz/courses/y36bez lorencz@fel.cvut.cz Y36BEZ Bezpečnost přenosu a zpracování dat Róbert Lórencz 2. přednáška Úvod 2 http://service.felk.cvut.cz/courses/y36bez lorencz@fel.cvut.cz Róbert Lórencz (ČVUT FEL, 2007) Y36BEZ Bezpečnost přenosu a

Více

Věta o dělení polynomů se zbytkem

Věta o dělení polynomů se zbytkem Věta o dělení polynomů se zbytkem Věta. Nechť R je okruh, f, g R[x], přičemž vedoucí koeficient polynomu g 0 je jednotka okruhu R. Pak existuje jediná dvojice polynomů q, r R[x] taková, že st(r) < st(g)

Více

Pravděpodobnost, náhoda, kostky

Pravděpodobnost, náhoda, kostky Pravděpodobnost, náhoda, kostky Radek Pelánek IV122 Výhled pravděpodobnost náhodná čísla lineární regrese detekce shluků Dnes lehce nesourodá směs úloh souvisejících s pravděpodobností připomenutí, souvislosti

Více

Diskrétní matematika. DiM /01, zimní semestr 2017/2018

Diskrétní matematika. DiM /01, zimní semestr 2017/2018 Diskrétní matematika Petr Kovář petr.kovar@vsb.cz Vysoká škola báňská Technická univerzita Ostrava DiM 470-2301/01, zimní semestr 2017/2018 O tomto souboru Tento soubor je zamýšlen především jako pomůcka

Více

Náhodné chyby přímých měření

Náhodné chyby přímých měření Náhodné chyby přímých měření Hodnoty náhodných chyb se nedají stanovit předem, ale na základě počtu pravděpodobnosti lze zjistit, která z možných naměřených hodnot je více a která je méně pravděpodobná.

Více

PA159 - Bezpečnostní aspekty

PA159 - Bezpečnostní aspekty PA159 - Bezpečnostní aspekty 19. 10. 2007 Formulace oblasti Kryptografie (v moderním slova smyslu) se snaží minimalizovat škodu, kterou může způsobit nečestný účastník Oblast bezpečnosti počítačových sítí

Více

Normální (Gaussovo) rozdělení

Normální (Gaussovo) rozdělení Normální (Gaussovo) rozdělení Normální (Gaussovo) rozdělení popisuje vlastnosti náhodné spojité veličiny, která vzniká složením různých náhodných vlivů, které jsou navzájem nezávislé, kterých je velký

Více

Hashovací funkce. Andrew Kozlík KA MFF UK

Hashovací funkce. Andrew Kozlík KA MFF UK Hashovací funkce Andrew Kozlík KA MFF UK Hashovací funkce Hashovací funkce je zobrazení h : {0, 1} {0, 1} n. Typicky n {128, 160, 192, 224, 256, 384, 512}. Obraz h(x) nazýváme otisk, hash nebo digest prvku

Více

Matematika 1 MA1. 2 Determinant. 3 Adjungovaná matice. 4 Cramerovo pravidlo. 11. přednáška ( ) Matematika 1 1 / 29

Matematika 1 MA1. 2 Determinant. 3 Adjungovaná matice. 4 Cramerovo pravidlo. 11. přednáška ( ) Matematika 1 1 / 29 Matematika 1 11. přednáška MA1 1 Opakování 2 Determinant 3 Adjungovaná matice 4 Cramerovo pravidlo 5 Vlastní čísla a vlastní vektory matic 6 Zkouška; konzultace; výběrová matematika;... 11. přednáška (15.12.2010

Více

Zpracování náhodného výběru. Ing. Michal Dorda, Ph.D.

Zpracování náhodného výběru. Ing. Michal Dorda, Ph.D. Zpracování náhodného výběru popisná statistika Ing. Michal Dorda, Ph.D. Základní pojmy Úkolem statistiky je na základě vlastností výběrového souboru usuzovat o vlastnostech celé populace. Populace(základní

Více

VZOROVÝ TEST PRO 1. ROČNÍK (1. A, 3. C)

VZOROVÝ TEST PRO 1. ROČNÍK (1. A, 3. C) VZOROVÝ TEST PRO. ROČNÍK (. A, 3. C) Zjednodušte daný příklad. (a 2 3 b 3 4) 2 (a 2 b 3 8) 3 max. 3 body 2 Ve které z následujících možností je uveden správný postup usměrnění daného zlomku a správný výsledek?

Více

J.Breier, M.Vančo, J.Ďaďo, M.Klement, J.Michelfeit, Masarykova univerzita Fakulta informatiky

J.Breier, M.Vančo, J.Ďaďo, M.Klement, J.Michelfeit, Masarykova univerzita Fakulta informatiky Analýza postranních kanálů (kryptoanalýza hardvérových zařízení) J.Breier, M.Vančo, J.Ďaďo, M.Klement, J.Michelfeit, M.Moráček, J.Kusák, J.Hreško Masarykova univerzita Fakulta informatiky 6.5.2010 Klasifikace

Více

Pokročilá kryptologie

Pokročilá kryptologie Pokročilá kryptologie Kryptografie eliptických křivkek doc. Ing. Róbert Lórencz, CSc. České vysoké učení technické v Praze Fakulta informačních technologií Katedra počítačových systémů Příprava studijních

Více

NÁHODNÁ ČÍSLA. F(x) = 1 pro x 1. Náhodná čísla lze generovat některým z následujících generátorů náhodných čísel:

NÁHODNÁ ČÍSLA. F(x) = 1 pro x 1. Náhodná čísla lze generovat některým z následujících generátorů náhodných čísel: NÁHODNÁ ČÍSLA TYPY GENERÁTORŮ, LINEÁRNÍ KONGRUENČNÍ GENERÁTORY, TESTY NÁHODNOSTI, VYUŽITÍ HODNOT NÁHODNÝCH VELIČIN V SIMULACI CO JE TO NÁHODNÉ ČÍSLO? Náhodné číslo definujeme jako nezávislé hodnoty z rovnoměrného

Více

Simulace. Simulace dat. Parametry

Simulace. Simulace dat. Parametry Simulace Simulace dat Menu: QCExpert Simulace Simulace dat Tento modul je určen pro generování pseudonáhodných dat s danými statistickými vlastnostmi. Nabízí čtyři typy rozdělení: normální, logaritmicko-normální,

Více

kryptoanalýza druhy útoků proti klasickým šifrám příklad útok hrubou silou frekvenční analýza Kasiskiho metoda index koincidence Jakobsenův algoritmus

kryptoanalýza druhy útoků proti klasickým šifrám příklad útok hrubou silou frekvenční analýza Kasiskiho metoda index koincidence Jakobsenův algoritmus kryptoanalýza druhy útoků proti klasickým šifrám usnadnění útoku útok hrubou silou slovníkový, hybridní frekvenční analýza metoda ad hoc Kasiskiho metoda index koincidence přirozený jazyk struktura Jakobsenův

Více

STATISTICKÉ ODHADY Odhady populačních charakteristik

STATISTICKÉ ODHADY Odhady populačních charakteristik STATISTICKÉ ODHADY Odhady populačních charakteristik Jak stanovit charakteristiky rozložení sledované veličiny v základní populaci? Populaci většinou nemáme celou k dispozici, musíme se spokojit jen s

Více

Projekt Využití ICT ve výuce na gymnáziích, registrační číslo projektu CZ.1.07/1.1.07/02.0030. MS Excel

Projekt Využití ICT ve výuce na gymnáziích, registrační číslo projektu CZ.1.07/1.1.07/02.0030. MS Excel Masarykovo gymnázium Příbor, příspěvková organizace Jičínská 528, Příbor Projekt Využití ICT ve výuce na gymnáziích, registrační číslo projektu CZ.1.07/1.1.07/02.0030 MS Excel Metodický materiál pro základní

Více

Předmluva 11 Typografická konvence použitá v knize 12. 1 Úvod do Excelu 2003 13

Předmluva 11 Typografická konvence použitá v knize 12. 1 Úvod do Excelu 2003 13 Předmluva 11 Typografická konvence použitá v knize 12 1 Úvod do Excelu 2003 13 Spuštění a ukončení Excelu 14 Spuštění Excelu 14 Ukončení práce s Excelem 15 Přepínání mezi otevřenými sešity 16 Oprava aplikace

Více

Matematika IV - 5. přednáška Polynomy

Matematika IV - 5. přednáška Polynomy S Matematika IV - 5. přednáška Polynomy Michal Bulant Masarykova univerzita Fakulta informatiky 17. 3. 2008 s Obsah přednášky O Dělitelnost a nerozložitelnost Kořeny a rozklady polynomů Polynomy více proměnných

Více

Kontingenční tabulky v MS Excel 2010

Kontingenční tabulky v MS Excel 2010 Kontingenční tabulky v MS Excel 2010 Autor: RNDr. Milan Myšák e-mail: milan.mysak@konero.cz Obsah 1 Vytvoření KT... 3 1.1 Data pro KT... 3 1.2 Tvorba KT... 3 2 Tvorba KT z dalších zdrojů dat... 5 2.1 Data

Více

7. Rozdělení pravděpodobnosti ve statistice

7. Rozdělení pravděpodobnosti ve statistice 7. Rozdělení pravděpodobnosti ve statistice Statistika nuda je, má však cenné údaje, neklesejte na mysli, ona nám to vyčíslí Jednou z úloh statistiky je odhad (výpočet) hodnot statistického znaku x i,

Více

Informatika / bezpečnost

Informatika / bezpečnost Informatika / bezpečnost Bezpečnost, šifry, elektronický podpis ZS 2015 KIT.PEF.CZU Bezpečnost IS pojmy aktiva IS hardware software data citlivá data hlavně ta chceme chránit autorizace subjekt má právo

Více

4. Teorie informace, teorie složitosti algoritmů. doc. Ing. Róbert Lórencz, CSc.

4. Teorie informace, teorie složitosti algoritmů. doc. Ing. Róbert Lórencz, CSc. Bezpečnost 4. Teorie informace, teorie složitosti algoritmů doc. Ing. Róbert Lórencz, CSc. České vysoké učení technické v Praze Fakulta informačních technologií Katedra počítačových systémů Příprava studijních

Více

Algoritmizace diskrétních. Ing. Michal Dorda, Ph.D.

Algoritmizace diskrétních. Ing. Michal Dorda, Ph.D. Algoritmizace diskrétních simulačních modelů Ing. Michal Dorda, Ph.D. 1 Úvodní poznámky Při programování simulačních modelů lze hlavní dílčí problémy shrnout do následujících bodů: 1) Zachycení statických

Více

Programování: základní konstrukce, příklady, aplikace. IB111 Programování a algoritmizace

Programování: základní konstrukce, příklady, aplikace. IB111 Programování a algoritmizace Programování: základní konstrukce, příklady, aplikace IB111 Programování a algoritmizace 2011 Připomenutí z minule, ze cvičení proměnné, výrazy, operace řízení výpočtu: if, for, while funkce příklady:

Více

Univerzita Karlova v Praze Pedagogická fakulta

Univerzita Karlova v Praze Pedagogická fakulta Univerzita Karlova v Praze Pedagogická fakulta SEMINÁRNÍ PRÁCE Z METOD ŘEŠENÍ 1 TEORIE ČÍSEL 000/001 Cifrik, M-ZT Příklad ze zadávacích listů 10 101 Dokažte, že číslo 101 +10 je dělitelné číslem 51 Důkaz:

Více

Pravděpodobnost, náhoda, kostky

Pravděpodobnost, náhoda, kostky Pravděpodobnost, náhoda, kostky Radek Pelánek IV122, jaro 2015 Výhled pravděpodobnost náhodná čísla lineární regrese detekce shluků Dnes lehce nesourodá směs úloh souvisejících s pravděpodobností krátké

Více

MATEMATICKÁ STATISTIKA. Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci

MATEMATICKÁ STATISTIKA.   Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci MATEMATICKÁ STATISTIKA Dana Černá http://www.fp.tul.cz/kmd/ Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci Matematická statistika Matematická statistika se zabývá matematickým

Více

Popisná statistika kvantitativní veličiny

Popisná statistika kvantitativní veličiny StatSoft Popisná statistika kvantitativní veličiny Protože nám surová data obvykle žádnou smysluplnou informaci neposkytnou, je žádoucí vyjádřit tyto ve zhuštěnější formě. V předchozím dílu jsme začali

Více

[1] Definice 1: Polynom je komplexní funkce p : C C, pro kterou. pro všechna x C. Čísla a 0, a 1,..., a n nazýváme koeficienty polynomu.

[1] Definice 1: Polynom je komplexní funkce p : C C, pro kterou. pro všechna x C. Čísla a 0, a 1,..., a n nazýváme koeficienty polynomu. Polynomy Polynom je možno definovat dvěma způsoby: jako reálnou nebo komplexní funkci, jejichž hodnoty jsou dány jistým vzorcem, jako ten vzorec samotný. [1] První způsob zavedení polynomu BI-LIN, polynomy,

Více

Informatika Ochrana dat

Informatika Ochrana dat Informatika Ochrana dat Radim Farana Podklady předmětu Informatika pro akademický rok 2007/2008 Obsah Kryptografické systémy s veřejným klíčem, výměna tajných klíčů veřejným kanálem, systémy s veřejným

Více

II. Úlohy na vložené cykly a podprogramy

II. Úlohy na vložené cykly a podprogramy II. Úlohy na vložené cykly a podprogramy Společné zadání pro příklady 1. - 10. začíná jednou ze dvou možností popisu vstupních dat. Je dána posloupnost (neboli řada) N reálných (resp. celočíselných) hodnot.

Více

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

Postranními kanály k tajemství čipových karet SIX Research Centre Vysoké učení technické v Brně martinasek@feec.vutbr.cz crypto.utko.feec.vutbr.cz Kryptoanaly za postrannı mi kana ly Proudova analy za Pr edstavenı U vod Crypto Research Group, Vysoke

Více

63. ročník Matematické olympiády 2013/2014

63. ročník Matematické olympiády 2013/2014 63. ročník Matematické olympiády 2013/2014 Úlohy ústředního kola kategorie P 2. soutěžní den Na řešení úloh máte 4,5 hodiny čistého času. Při soutěži je zakázáno používat jakékoliv pomůcky kromě psacích

Více