VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ BRNO UNIVERSITY OF TECHNOLOGY
FAKULTA STROJNÍHO INŽENÝRSTVÍ ÚSTAV AUTOMATIZACE A INFORMATIKY FACULTY OF MECHANICAL ENGINEERING INSTITUTE OF AUTOMATION AND COMPUTER SCIENCE
Interaktivní webové aplikace vytvořené pomocí technologie Adobe Flash - TEORIE KÓDOVÁNÍ TITLE
BAKALÁŘSKÁ PRÁCE BACHELOR'S THESIS
AUTOR PRÁCE
Petr Minář
AUTHOR
VEDOUCÍ PRÁCE SUPERVISOR
Ing. Radomil Matoušek, Ph.D
Strana 2
.
VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta strojního inženýrství Ústav automatizace a informatiky
Interaktivní webové aplikace pomocí technologie Adobe Flash – TEORIE KÓDOVÁNÍ (Bakalářská práce)
Bakalář: Petr Minář Vedoucí: Ing. Radomil Matoušek, Ph.D Brno, květen 2007
.
Zadání závěrečné práce
Strana 3
Strana 4
.
.
Strana 5
Licenční smlouva POSKYTOVANÁ K VÝKONU PRÁVA UŽÍT ŠKOLNÍ DÍLO uzavřená mezi smluvními stranami: 1. Pan/paní Jméno a příjmení:
Petr Minář
Bytem:
Slatinice 286
Narozen/a (datum a místo):
Olomouc
(dále jen „autor“) a 2. Vysoké učení technické v Brně Fakulta strojního inženýrství se sídlem Technická 2896/2, 616 69 Brno jejímž jménem jedná na základě písemného pověření děkanem fakulty: .............................................................................................. (dále jen „nabyvatel“)
Čl. 1 Specifikace školního díla 1. Předmětem této smlouvy je vysokoškolská kvalifikační práce (VŠKP): □ disertační práce □ diplomová práce □ bakalářská práce □ jiná práce, jejíž druh je specifikován ....................................................... (dále jen VŠKP nebo dílo) Název VŠKP: Vedoucí/ školitel VŠKP: Ústav: Datum obhajoby VŠKP: VŠKP odevzdal autor nabyvateli v*: □ tištěné formě
*
–
počet exemplářů ………………..
□ elektronické formě –
počet exemplářů ………………..
hodící se zaškrtněte
jako
Strana 6
.
2. Autor prohlašuje, že vytvořil samostatnou vlastní tvůrčí činností dílo shora popsané a specifikované. Autor dále prohlašuje, že při zpracovávání díla se sám nedostal do rozporu s autorským zákonem a předpisy souvisejícími a že je dílo dílem původním. 3. Dílo je chráněno jako dílo dle autorského zákona v platném znění. 4. Autor potvrzuje, že listinná a elektronická verze díla je identická. Článek 2 Udělení licenčního oprávnění 1. Autor touto smlouvou poskytuje nabyvateli oprávnění (licenci) k výkonu práva uvedené dílo nevýdělečně užít, archivovat a zpřístupnit ke studijním, výukovým a výzkumným účelům včetně pořizovaní výpisů, opisů a rozmnoženin. 2. Licence je poskytována celosvětově, pro celou dobu trvání autorských a majetkových práv k dílu. 3. Autor souhlasí se zveřejněním díla v databázi přístupné v mezinárodní síti □ ihned po uzavření této smlouvy □ 1 rok po uzavření této smlouvy □ 3 roky po uzavření této smlouvy □ 5 let po uzavření této smlouvy □ 10 let po uzavření této smlouvy (z důvodu utajení v něm obsažených informací) 4. Nevýdělečné zveřejňování díla nabyvatelem v souladu s ustanovením § 47b zákona č. 111/ 1998 Sb., v platném znění, nevyžaduje licenci a nabyvatel je k němu povinen a oprávněn ze zákona. Článek 3 Závěrečná ustanovení 1. Smlouva je sepsána ve třech vyhotoveních s platností originálu, přičemž po jednom vyhotovení obdrží autor a nabyvatel, další vyhotovení je vloženo do VŠKP. 2. Vztahy mezi smluvními stranami vzniklé a neupravené touto smlouvou se řídí autorským zákonem, občanským zákoníkem, vysokoškolským zákonem, zákonem o archivnictví, v platném znění a popř. dalšími právními předpisy. 3. Licenční smlouva byla uzavřena na základě svobodné a pravé vůle smluvních stran, s plným porozuměním jejímu textu i důsledkům, nikoliv v tísni a za nápadně nevýhodných podmínek. 4. Licenční smlouva nabývá platnosti a účinnosti dnem jejího podpisu oběma smluvními stranami.
V Brně dne: …………………………………….
……………………………………….. ………………………………………… Nabyvatel
Autor
.
Strana 7
Abstrakt Bakalářská práce bude interaktivním způsobem prezentovat vybrané části problematiky teorie kódování. Základním prostředkem pro praktickou realizaci bude systém Adobe Macromedia FlashMX/8, respektive objektový jazyk ActionScript 2.0.
Abstract The aim of this thesis is to present selected interactive examples of the information theory. These examples will be make in Macromedia FlashMX/8 and programme in OOP ActionSctipt 2.0. Last part of the bachelor work is devoted to implementation of a testing module.
Klíčová slova Šifrovací mřížka, RSA, CRC, Flash 8, Action script 2.0
Keywords Cipher grille, RSA, CRC, Flash 8, Action script 2.0
Strana 8
.
.
Strana 9
Poděkování Ing. Radomil Matoušek, Ph.D. za stálou pomoc a konzultace s touto prací.
Strana 10
.
.
Strana 11
Obsah Zadání závěrečné práce ....................................................................................................... 3 Licenční smlouva.................................................................................................................. 5 Abstrakt ................................................................................................................................ 7 Poděkování ........................................................................................................................... 9 Obsah .................................................................................................................................. 11 1 2
Úvod ............................................................................................................................ 13 Teorie kódování.......................................................................................................... 15 2.1 Kryptografie .......................................................................................................... 16 2.1.1 Historie kryptografie a kryptoanalízy ............................................................ 16 2.1.2 Druhy moderních šifer ................................................................................... 16 2.2 Proti-chybové kódování ........................................................................................ 17 2.2.1 Historie........................................................................................................... 17 2.2.2 Vlastnosti proti-chybových kódů ................................................................... 17 2.3 Minimální kódování .............................................................................................. 18 2.3.1 Bezztrátová komprese .................................................................................... 18 2.3.2 Ztrátová komprese ......................................................................................... 18 3 Adobe Flash 8 ............................................................................................................. 19 3.1 Prostředí programu Flash ...................................................................................... 20 3.2 Action script .......................................................................................................... 21 3.3 Bezpečnost aplikace vytvořené v prostředí Flash ................................................. 22 4 Šifrovací mřížka ......................................................................................................... 23 4.1 Princip šifrování pomocí mřížky........................................................................... 23 4.2 Stručný popis aplikace šifrovací mřížky ............................................................... 25 5 RSA ............................................................................................................................. 27 5.3 Digitální podpis ..................................................................................................... 27 5.4 Filozofie principu kódování s veřejným klíčem.................................................... 28 5.4 Výpočet RSA ........................................................................................................ 28 5.5 Stručný popis aplikace RSATool .......................................................................... 29 6 CRC ............................................................................................................................. 31 6.1 Princip využití CRC .............................................................................................. 31 6.2 Implementace CRC ............................................................................................... 32 6.3 Vypočet dělení dvou polygonů ............................................................................. 33 6.4 Stručný popis aplikace CRCtool ........................................................................... 33 7 Testovací modul ......................................................................................................... 35 7.1 Struktura testovacího modulu ............................................................................... 35 7.1.1 Přihlášení ....................................................................................................... 35 7.1.2 Příklad typu A ................................................................................................ 35 7.1.3 Přiklad typu B ................................................................................................ 36 7.1.4 Příklad typu C ................................................................................................ 36 7.1.5 Vyhodnocení .................................................................................................. 36 9 Závěr ........................................................................................................................... 37 10 Seznam obrázků ......................................................................................................... 39 11 Seznam použité literatury ......................................................................................... 41 Příloha ................................................................................................................................. 42
Strana 12
.
.
1
Strana 13
Úvod
Kódování psaného textu do podoby zpráv schopných pracovat v počítačové technice se vyvíjí už od počátku počítačů jako takových. Tvoří základ dnešní počítačové vědy. Proto bylo úkolem bakalářské práce seznámení s programem Adobe Flash 8 a jeho programovacím jazykem Action script 2.0. A tyhle znalosti dále uplatnit na vytvoření příkladů z teorie kódování, které mají, pomocí téhle technologie, srozumitelným způsobem prezentovat problematiku. První část práce je zaměřena na úvod teorie kódování a její hlavní rozdělení na kryptografii, proti-chybové kódování a minimální kódování. Další část se věnuje popisu vývojového prostředí Adobe Flash , jazyku Action script 2.0 a jejich využití v síti internet. Hlavní část práce je věnována popisům vybraným příkladům, konkrétně dva příklady z kryptografie, a jeden příklad z proti-chybového kódování, jejich představením, výpočet, možná implantace a vytvořené interaktivní aplikace s celkovým popisem jejich funkcí. Poslední kapitolou je implantace testovacího modulu v prostředí Flash, která pomocí testových otázek z tažených na předchozí problematiku a jednoho početního příkladů má ověřit znalosti studenta k dané problematice.
Strana 14
.
.
2
Strana 15
Teorie kódování
V počítačové komunikaci se požívá k přenosu (slova, fráze, sdělení) tzv.: kód. V téhle oblasti se hlavně využívají dva procesy. První je kódování, které zajišťuje konverzi zdrojové zprávy na kód schopný elektronické komunikace. Další proces je tzv.: dekódování, které zajišťuje opačný proces kde se z kódu zas stává zpráva identická se zdrojovou. Proto existuje několik důvodů proč informaci kódovat. Jeden důvod je skrýt vlastní informaci, nebo ji znepřístupnit cizím osobám. Takové kódy jsou předmětem vědy nazvané Kryptografie. Další důvod proč kódovat informaci je redukce její velikosti ke vztahu k úložnému prostoru. Jako příklad implementace takových kódů můžeme uvést populární zip/rar komprimátory používané ke komprimaci souborů na PC. Tenhle druh kódování je obsažen v předmětu Minimální kódování. Třetí a poslední důvod existence kódování je zvýšení bezpečnosti přenosu informace mezi dvěma vzdálenými místy (počítači). Elektronické zařízení používané pro přenos a manipulaci s daty je mnohdy i příčinou různých druhů chyb a rušení a může porušit původní informaci. Taková chyba může nastat například při přenosu v síti z jednoho počítače na další, z důsledku toho bude zpráva špatně přeložena nebo dokonce ztracena. Proto zde existuje nutnost pro detekci a jestli je to možné i pro korekci takových chyb. Tyhle kódy se nazývají Proti chybové kódování.
Obrázek 1Rozdělení teorie kódování.
Strana 16
2.1
.
Kryptografie
Slovo kryptografie pochází z řečtiny – kryptós je skrytý a gráphein znamená psát. Ve starověkém Řecku také leží počátek kryptografie neboli šifrování. Kryptografie je stará jako písmo samé a byla používaná k ochraně vojenské i politické korespondence už před tisíci lety. Příkladem může být známí Římský imperátor Julius Caesar, který používal šifry ke komunikaci se svými vojáky na frontě. Vedle kryptografie patří ještě jedna oblast a to je kryptoanalíza. Kryptografer hledá možnosti jak co nejvíce zajistit zabezpečit zprávu (kód), na druhé straně kryptoanalist zkouší rozbít tohle zabezpečení [w12].
2.1.1 Historie kryptografie a kryptoanalízy Historie kryptografie započal před tisíci lety. Do konce devatenáctého století ji mužem označit pod pojmem klasická kryptografie – tedy požívající k šifrování tužku a papír, nebo jednoduché matematické vzorce. Na počátku 20 století, kdy se začínají vyvíjet komplexní mechanické stroje, jako třeba enigma, které už jsou schopny efektivně plnit úlohy v kódování, rozvoj elektroniky měl za následek vývoj čím dál větší komplexivity, při které už tužka a papír nemůže stačit. Při vývoji kryptografie se současně i vyvíjela kryptoanalíza – nauka o rozbíjení kódů a šifer. Brzký vývoj a aplikace frekvenční analýzy dopomohl při čtení zakódované komunikace a navždy už změnil historii lidstva. Rozluštění Zimmermannova Telegramu donutila spojené státy stoupit do 1. světové války a rozbití kódu enigmy a následné čtení zpráv nacistických jednotek, dopomohlo spojencům zkrátit válku až o dva roky. Do 70 let minulého století, byla kryptografie výlučně záležitostí vládních úřadů, ale potom se dostali i do veřejného sektoru. První hojně požívanou šifrou je standart DES, pak následuje šifrování pomocí veřejného klíče [w12]. 2.1.2 Druhy moderních šifer V moderní kryptoanalíze se používá několik základních pojmů. Prvním je Symetrická šifra kde je jen jeden klíč – tajný klíč – který se dále používá jak na zašifrování tak posléze i na dešifrování zprávy. Další typ je Asymetrická šifra, která pracuje s přídavným klíčem tzv.: veřejným klíčem a to tak, že máme dva klíče jeden veřejný k zašifrování zprávy a jeden tajný, který má příjemce zprávy a ten slouží k dešifraci. U symetrický šifer se musí řešit jeden vážný problém jak dopravit tajný klíč k příjemci, tak aby ho nikdo nezjistil a příjemce mohl rozluštit zprávu. Na druhou stranu je symetrické kódování mnohonásobně rychlejší na výpočet, proto se hojně využívá kombinace obou dvou způsobů. Pomocí kterého se zpráva zašifruje pomocí symetrického kódu a klíč (synchroní) se pošle pomocí asymetrického kódování.
.
2.2
Strana 17
Proti-chybové kódování
Proti-chybové kódování je odvětví počítačové a matematické vědy a zajišťují správnost informace v době přenosu,. Ty nejlepší dokážou najít i několik chyb ve zprávě a následně je pak opravit. Detekční kódy se také zabývají vlastnostmi zprávy jako takové. Detekční kódy se požívají při přenosu dat kde může dojí ke zkreslení zprávy z důvodu rušení. Nebo se také hojně využívají k ochraně dat na compactních discích z důvodu poškrábání. Příkladem takových kódů může být Hammingův kód a CRC pro komunikaci v síti.
Obrázek 2 Možnost chyby v jednoduchých sítí [w13].
2.2.1
Historie
Základy proti-chybovému kódování, položil Richard Hamming už ve 40´s letech minulého století. Hamming pracoval v Bell labs na počítačích Bell model č. 5, které ještě v té době byli obsluhovány pomocí děrných pásek. Děrné pásky mnohdy způsobovali chybu čtení informace a tím se zastavil celý program. Ve všední dny musela u počítače sedět obsluha a opravovat případné chyby, ale horší to už bylo o víkendech. Když se program o víkendu zastavil tak se na to přišlo většinou až pondělí a tím celé výpočty opakovat. Proto Hamming několik let vyvíjel korekční kód, který by si s tímhle problémem poradil. V roce 1950 publikoval Hammingův kód. V některých aplikacích se používá dodnes [w13]. 2.2.2 Vlastnosti proti-chybových kódů U proti-chybovém kódování jsou důležité dvě vlastnosti: • •
Detekce chyby Opravy chyby
Detekce chyby je schopnost kódu rozeznat poškozenou zprávu důsledkem špatného přenosu nebo mechanického poškození. Oprava chyby následuje vždy až po detekci a je to schopnost částečně nebo úplně opravit nalezenou chybu. V zájmu uživatele je vždy nalezené chyby opravovat.
Strana 18
2.3
.
Minimální kódování
Minimální kódování se používá v problematice datové komprese. Datová komprese je speciální přístup k informaci při ukládání nebo transportu dat. Obecně se dá říci, že datová komprese se zabývá zmenšování velikosti datových souborů a to hlavně odstraněním redundantních částí v informaci a snížení entropie. Komprimace dat je nedílnou součástí přenosu v síti. Datová komprese se dále dělí na ztrátovou a bezztrátovou [w14].
2.3.1 Bezztrátová komprese Bezztrátové komprese se používají tam kde chceme uchovat informaci v původní podobě po dekompresi. Algoritmy používané pro kompresy se dělí podle typu pro které se používají. V tomhle případě existují čtyři základní typy dat a to data textová, obrazová, zvuková a video. V principu může existovat univerzální algoritmus pro kompresy všech typů dat, ale v praxi se nepoužívá kvůli nižšímu komprimačnímu poměru oproti speciálním algoritmům pro všechny typy dat.
2.3.2 Ztrátová komprese Ztrátová komprese se požívá tam, kde je povolenu ztráty dat po komprimaci. Používá se hlavně k ukládání zvukových a video formátů. Mohlo by se zdát že, bezztrátová komprese je mnohem užitečnější, ale mnoha případech tomu tak není. U ztrátové komprese je ztráta dat vyvážená mnohem větším komprimačním poměrem za poměrně nízkým zmenšením kvality (video, zvuk).
.
3
Strana 19
Adobe Flash 8
Flash je grafické vývojové prostředí od společnosti adobe – dříve vyvíjené společností macromedia. Současné době je nejnovější verze 8 z roku 2005. Program flash pracuje tzv. s vektorovou grafikou, která umožňuje relativně malou velikost komilovaných souborů. Proto flash animace vytlačili dříve hojně požívané grafické formáty gif. Flash je také vhodný na programování webových aplikací, a počítačových her. Největší výhoda programů vytvořených technologií flash je ne-nutnost instalace, protože se spouští v okně prohlížeče. A jejich nevýhoda je nutnost stáhnout celou aplikaci před spuštěním – možnost přítomnost viru. K programování ve flashi se požívá objektový orientovaný jazyk action skript [w15]. Podle statistik je Adobe Flash Player [w03] nejvíce se rozšiřující program na internetu, který už dosáhl 98% hranice všech uživatelů Pc v síti internet.
Obrázek 3 Procentuální rozložení soft. v síti internet.
Flash Player Adobe Flash Player je velice oblíbený program pro obsluhu souborů s koncovkou swf – soubory vytvořeny authoringovým programem macromedia flash nebo flex. Původně Flash Player byl navrhnut pro podporu 2-dimeziálních animací, ale postupem času se vyvíjel až do dnešní podoby kdy už může podporovat složité internetové aplikace spolu s podporou streamu videa a audia.
Strana 20
.
Adobe Shockwave Player Adobe shockwave player (dříve macromedia shockwave) byl první úspěšný multimediální přehrávač, který sloužil k představení nového produktu společnosti macromedia Flash. V 90s letech dvacátého století se shockwave stal velice populární a stal se hlavním pug-in pro přehrávání multimediálních souborů v internetu. Navzdory tomu, že shockwave byl programován pro přehrávání filmů a animací, jeho hlavní uplatnění našlo v počítačových hrách.
3.1
Prostředí programu Flash
Je navrženo jako user-freindly, a je velice podobné jako všechny programy od společnosti macromedia.
Obrázek 4 Prostředí programu Flash 8.
Okno dokumentu – Dokument window – Zobrazuje otevřené Flash dokumenty. Obsahuje Editaci, Časovou osu, pracovní plochu. Časová osa – Timeline – Dává visuální reprezentaci každého framu, vrstvy a scény v dokumentu.
.
Strana 21 Hlavní lišta – Main Toolbar – Obsahuje často používané příkazy.
Panel Oken – Panel Windows – Dává možnost k přístupu k možnostem editace rozdělených do oken. Vlastnosti – Properte Inspektor – Zobrazuje vlastnost, atributy a grafické části. Pracovní plocha – Stage – Zajišťuje prostor pro skládání scény každému snímku. ToolBar – ToolBar – Obsahuje nástroje pro kreslení a další příbuzné nástroje pro tvorbu grafiky.
3.2
Action script
AS je objektově orientovaný jazyk vycházející ze standardizace jazyka javascript. AS se využívá v programech zpracovávající flash animace jako třeba Macromedia flash 8 nebo Flex 2.0. Pomocí jazyka AS se dají vytvářet internetové aplikace nebo složité animace, kde je potřeba obsluhovat tlačítka a jiné komponenty, pro jednoduché animace není potřeba využívat AS. AS podporuje standardizaci ECMA-262 3. edice [w04].
Obrázek 5 Okno AS v programu Flash 8.
V současné době je nejnovější verze AS 3.0 využívající v programu Flex, ale pořád nerozšířenější je verze 2.0, která jako první zavedla pravidla OOP v AS.
Strana 22
.
Nástrojové okno – Action Script Toolbar - Zajišťuje přístup k nejčastějším příkazům při psaní kódu, jako je kontrola, vyhledávaní atd. Pomocné okno – Okno s nejvíce požívanými příkazy AS. Seznam všech kódů – List Window - Seznam všech snímků ve scéně kde je použit AS. Pozice kódu – Current Frame - Aktuální editovaný snímek s kódem AS.
3.3
Bezpečnost aplikace vytvořené v prostředí Flash
Flash má mnoho kladů v oblasti interaktivity a animace, ale pro uživatele technologie Flash to má i několik nevýhod. Největší nevýhoda je po zkompilování programu do souboru swf (přípona věch souborů vytvořených ve Flashi), tak jde velice lehko i rekompilovat z tohoto souboru původní obrázky a dokonce ve větší míře i zdrojový kód. Existují nějaké ochranné prvky proti temu chrání, ale ty nejsou zatím moc účinné [w15].
.
Strana 23
4
Šifrovací mřížka
První příkladem a nejvíce jednoduchým ve smyslu principu bylo vytvoření prezentace šifrování pomocí šifrovací mřížky. Šifrovací mřížka je zástupcem tzv.: traspozitivních šifer co znamená, že algoritmus při šifrování nenahrazuje znaky jinými, ale podle určitého klíče – v našem případě mřížky – logicky přehazuje písmena ve zprávě. Metoda šifrovací mřížky byla vyvinuta v 16 století v době Kardinála Richelieu matematikem Girolamo Cardadano (24. 09 1501 – 21.09 1579). Jejímž učelem bylo posílat kódované zprávy, které mohly být dekódovány jen pomocí speciální děrovací karty s vystřiženými místy na strategických místech ostatní znaky se doplnily náhodnými znaky. První verze šifrovací mřížky se nazývala Kardanská mřížka. Její základy vytvořil sir Francis Bacon, který sepsal tři základní vlastnosti kryptografie. • • •
šifra má být lehká na použití nemělo by být možné druhé osobě získat zdrojový text ze šifry. v některých případech by nemělo by být zřejmé existence šifry.
Někdy je velice obtížné splnit všechny tři podmínky hlavně poslední, kde se hlavně uplatňují postupy stenografie. Bacon měl představu, aby šifra nešla v textu hned rozeznat, že je šifra a tohle původní kardanova mřížka tohle splňovala. Další variace mřížky třetí pravidlo mnohdy nepodporovali a někdy dokonce ani pravidlo číslo dvě. To ale tohle nebylo to proč se tahle šifra stále velice populár ní, důvod byl důvod v pravidlu číslo jedna, tedy v jednoduchosti. Zajímavější varianta šifrovací mřížky byla vyvinuta v devatenáctém století. V roce 1881 Plukovník Eduard Fleissner von Wostrowitz z Rakouské armády publikoval článek nazvaný "New Secret Writing Template" ve kterém bylo prvé popsaný princip otáčející se mřížky. Obsahující sudy počet řádků a sudý počet sloubců ( celkový počet polí musí být dělitelný čtyřem) ve které bylo vystřiženo ¼ celkového počtu polí. A následným otáčením se získá šifrovaná zpráva. Její oblíbenost dokazuje i fakt, že ji použil Jules Verne ve své knize Matyáš Sandorf (Nový hrabě Monte Christo). Tahle šifra není vhodná pro použití v počítačích, ale může pořád být dobře používaná pro fyzické kódování [w11].
4.1
Princip šifrování pomocí mřížky
Princip šifrovací mřížky (6x6 znaků) [w12]. Do mřížky vytvoříme 6 otvorů tak aby se po čtvrtém otočení vyšlo na všechna políčka. Mějme zpráv u které chceme zakódovat třeba: Fakulta strojního inženýrství v Brně 2007 . Tahle zpráva byla vybrána záměrně, protože má 36 znaků jako maximální počet znaků v mřížce (6x6). První věc je
Strana 24
.
převést všechny znaky na velká písmena, odstranit diakritiku a zru.šit mezery (aby nešlo poznat kde končí a začíná věta).V našem případě upravená zpráva zní:
Obrázek 6 Postup výpočtu v šifrovací mřížce.
FAKLTASTROJNIHOINZENYRSTVIVBRNE2007. Pak tuhle zprávu budeme postupně doplňovat do mřížky dle obrázku. Po každém zaplnění mřížky ji otočíme o 90° a opakuje se stejný postup až se zaplní celá mřížka. Kdybychom použili zprávu s menším počtem znaků než maximální počet políček, tak zbývající znaky doplníme náhodným výběrem. Po čtvrtém otočení (po zaplnění celé mřížky). Náš šifrovaný text zní VFZABKERRNUOENLJY2NT0RAI0SH7OSTIVTIN. Pomocí opačného postupu se i dešifruje, ale musí se znát počáteční natočení mřížky.
Obrázek 7 Smysl otáčení mřížky.
.
4.2
Strana 25
Stručný popis aplikace šifrovací mřížky
Aplikace demonstruje šifrovací mřížku, byla vytvořená v programu Flash 8 a psána ve skriptovacím jazyku Action Skript 2.0. Jejím účelem je přehledně prezentovat metodu šifrování pomocí otáčející se mřížky. A to jak pomocí animace, tak i pomocí skokového výpočtu. Aplikace má omezení na 36 znaků kvůli mřížce (6x6).
Obrázek 8 Prostředí aplikace šifrovací mřížky.
Ovládací prvky – Tvoří tři tlačítka a jeden editbox. Tlačítko výběr strany přepne aplikaci do počátečního stavu na výběr stran. Další dvě tlačítka udávají způsob výpočtu. Animace provede kompletní šifrování a tlačítko Quick výpočet zašifruje zprávu ve čtyřech krocích (bez animace otáčení). Do editboxu se vkládá zpráva, kterou chceme zašifrovat. Interface – Interface obsahuje tlačítka pro počáteční natočení mřížky. Polohu natočení v mřížky udávané ve stupních a samotnou mřížku do které se postupně vkládají znaky (v případě animace). Šifrovaná zpráva – Výsledná zpráva po provedení celého cyklu šifrování. Upravená zpráva – Zpráva zbavená diakritiky, mezer a převedená na velká písmena Nápověda – Podrobná nápověda k aplikaci.
Strana 26
.
.
Strana 27
5
RSA
Druhým příkladem bylo vytvoření interaktivní prezentace výpočtu a využití RSA šifrování. S omezením volby prvočísla na maximální hodnotu 100. RSA jedná se o zástupce a taky jedena z neznámějších tzv. asymetrických šifer pojmenované podle počátečních písmen autorů (Rivest, Shamir, Adleman), která byla poprvé představena v roce 1977. Asymetrické šifry pracují s dvěma klíči a to klíč veřejný a klíč tajný naproti temu, symetrické kódování požívá jen jeden klíč – tajná klíč. Používaní dvou klíčů má svá pozitiva i negativa. Mezi klady můžeme uvést zvýšení bezpečnosti, kde odpadá nutnost transportu tajného klíče k příjemci spolu se zprávou, při níž je velká šance, že kód bude kompromitován. Při vytváření vlastních klíčů se traduje, že s dostatečným velkým klíčem je asymetrické kódování považováno za bezpečné [w10]. Klíče o délce 512 bitů bylo možno již v roce 1997 prolomit s hardwarem v ceně za milión dolarů v době okolo osmi měsíců. V současné době RSA Laboratories doporučují použití klíče o délce alespoň 1024 bitů, pro obzvláště důležité informace pak 2048 bitů. Nejdelší klíč, se kterým je na běžném HW možné normálně pracovat, je 4069 bitů [w02]. V případě RSA je také nutné pečlivě zvolit požadovanou délku klíče. S délkou klíče stoupá obtížnost prolomení šifry, ale zároveň také náročnost všech operací s šifrováním spojených - generování klíče, šifrování i dešifrování, a to nikoliv lineárně. Zvýší-li se délka klíče na dvojnásobek, zvýší se v průměru: • • •
doba generování klíče až 16×, doba potřebná pro dešifrování (a další operace s tajným klíčem) až 8×, doba potřebná pro šifrování (a další operace s veřejným klíčem) až 4×.
A za zápory je nižší rychlost kódování (až mnohonásobně nižší) než u symetrických kódů, důvodem je výpočet dvou klíčů. Pro uchování klíčů – hlavně soukromého klíče, se pozívávají tzv.: kontejnery. Kontejner může být buď soubor na počítači uložený na hardisku a chráněn pomocí operačního systému např.: windows xp. Další možností je uložení na speciální hardware jako je třeba usb flash disk nebo čipová karta. RSA se využívá třeba při digitálním podpisu, kde se pomocí RSA zakódovává otisk vytvořený pomocí hashovaní funkce. RSA je založeno na faktorizaci velkých přirozených čísel. A princip ochrany RSA je založen na faktu, že rozklad velkých čísel na prvočinitele je výpočetně velmi náročné.
5.3
Digitální podpis
Neboli zaručený elektronický podpis je aplikace kryptografie s veřejným klíčem [w09]. U digitálního podpisu (narozdíl od šifrování kde se používá posloupnost: veřejná klíč >> tajný klíč) se požívá nejprve soukromý klíč majitele který se implementuje na požadovaný dokument, který se má ověřit. A pomocí veřejného klíče se určí autentičnost dokumentu.
Strana 28
5.4
.
Filozofie principu kódování s veřejným klíčem
Příklad použití šifrování pomocí RSA je komunikace mezi Alicí a Bobem [w07]. Bob vlastní dva klíče jeden soukromý a jeden veřejný. Alice mu chce poslat zprávu, napíše ji, na zprávu pak použije Bobův veřejný klíč a vznikne zašifrovaný text, který už ale nejde Annou zpátky dešifrovat – musela by vytvořit úplně novou zprávu. Šifrovaná zpráva se pak pošle Bobovi, který ji svým soukromím klíčem dešifruje. Je teoreticky možné pomocí veřejného klíče rozkódovat jím zašifrovanou zprávu, ale zabralo by to velmi mnoho času.
Obrázek 9 Princip RSA.
Eva v tomhle příkladě hraje roli kryptoanalitika a pokouší se rozluštit komunikace mezi Bobem a Annou.
5.4
Výpočet RSA
První věc, která se musí udělat, jestli chceme šifrovat pomocí RSA je spočítat n, tak že si zvolíme dvě dostatečně velká prvočísla p,q a vynásobíme je spolu. Další krok je přiřadit každému písmenu ve zprávě unikátní číslo tak aby platilo 1 < M < n, například se může použít ascii tabulka. Pro s je ueklidova funkce pro které platí (p-1)x(q-1). Z toho pak vycházíme při volbě exponentu e tak aby byl s nesoudělný, e a n pak tvoří základ veřejného klíče [w08]. Pro soukromý klíč najdeme d takové aby odpovídalo d.e = 1 mod φ(n) dále pak se postupuje dle klíčů.: Soukromý klíč KB-(e,d)
Veřejný klíč KB+ (e,n)
.
Strana 29
Obrázek 10 Algoritmus RSA.
5.5
Stručný popis aplikace RSATool
Aplikace podrobně demonstruje výpočet veřejného a tejného klíče podle algoritmu RSA. A pomocí zadané zprávy, která se šifruje demonstruje použití RSA v praxi jak šifrování tak i dekódování. Program je vytvořen technologii Flash 8 a psán v action skriptu 2.0.
Obrázek 11 Okno aplikace příkladu RSA.
Strana 30
.
Volba hodnot – Obsahuje 4 comboboxy ve kterých se volí hodnoty (p, q, e a z) pro výpočet používaných klíčů. Ovládací prvky – Ovládací část aplikace, která obsahuje 3 tlačítka jeden editbox. • • •
Quick vypočet – V jednom kroku vypočíta celý příklad a vy píše výslednou zašifrovanou zprávu. Reset – Vynuluje všechny proměné a vrátí aplikaci do defaultního stavu. Krokový ýpočet – Spustí výpočet rozdělený na krokya postupně výsledné kroky vypisuje do určené tabulky.
Tabulka výpočtu – Aplikace obsahuje dvě verze tabulek, ve kterých se po znacích provádí výpočet. První verze zobrazuje postup šifrování a druhá zas postup dešifrování. Přepínání tabulek – Pomocí dvou tlačítek se přepíná mezi šifrovací a dešifrovací tabulkou. Vypočtené klíče – Veřejný a tajný klíč vypočtené pomocí z volených hodnot a zapsané jejich hlavní hodnoty pro výpočet. Zvolené hodnoty a vzorce – Zobrazuje zvolené hodnoty a vzorce potřebné pro výpočet. Šifrovaná zpráva – Výsledná zakódovaná zpráva. Nápověda – Nápověda pro aplikaci RSA výpočtu.
.
6
Strana 31
CRC
Posledním interaktivním příkladem, tentokrát v oblasti proti-chybového kódování, a to konkrétně ochrana dat pomocí crc kódu, prezentovaným pomocí dělení dvou polynomů [w05]. Cyclic Redundancy Check (CRC ) je mocná, ale i zároveň jednoduchá technika k ověření korektnosti dat při datové komunikaci. CRC má schopnost jen detekovat chyby, ale dále už je nedokáže napravovat (hlásí nalezenou chybu ano/ne). CRC se používá se k zajištění ochrany dat nazvaných Frame. Použitím téhle techniky transmitter přidá zprávě extra bity (od toho Redundancy – nadbytečnost), které se dále nazývají Frame Check Sequence (nebo také Remainder). Pomocí vypočítané FCS můžeme zjistit po přenosu jestli byla zpráva přijata s chybou nebo bez chyby. CRC je jednou z nejoblíbenějších technik k zjišťování chyb v datové komunikaci. K její popularitě přispěly hlavně tyhle tři body. • • •
Dobrá schopnost zjišťovat chyby Jednoduchost Snadná implementovatelnost.
Reciever zjistí jestli přijatá data souhlasí nebo nesouhlasí s původními daty. Pokud reciever zjistí chybu pošle nazpět požadavek (NAK - “negative acknowledgement”) pro poslání dat znovu. Technika může být použita i na hardware k uchovávání dat jako je třeba pevný disk v PC. V tomto případě je každý block testuje bity a hardware může vyvolat přečtení bloku s chybou, kterou nahlásil software.
6.1
Princip využití CRC Princip CRC kódu je znázorněn pomocí komunikace dvou počítačů. První počítač (vysílač) připraví původní zprávu na výpočet - rozdělí zprávu na bloky, další krok je výpočet CRC to se dělá pomocí dělení dvou polygonů generátoru a zprávy a zbytek při dělení se pak zapíše ke zprávě. Poslední krok u vysílače je přenos rozšířené zprávy + generátoru na stranu příjemce. Na přímači se provádí taky tři kroky. První je příjem rozšířené zprávy a generátoru a pak se provede znovu dělení polygonů rozšířené zprávy a generátoru. Jestli je výsledek tohoto dělení nulový tak přenos proběhl bez chyby.
Obrázek 12 Princip přenosu zprávy spolu s CRC.
Strana 32
6.2
.
Implementace CRC
Hardwarová implementace je ukázaná na následujícím obrázku. Specifické parametry pro implantaci jsou: • • •
Zpráva: 1010001101 Generátor: 110101 Remainder: 01110
Obrázek 13 Hardwarová implantace CRC.
Okruh implementace je: • • •
Registr obsahuje n počet bitů, rovno délce remindru. Okruh obsahuje n XOR bran. Přítomnost nebo absence brány je rovna přítomnosti jedniček v generátoru.
Stejná okruh je požít jak pro výpočet CRC, tak i pro kontrolu. Když se vypočítává reminder tak do systému vstupují bity zprávy a potom sekvenci nul. Sekvence je dlouhá velikosti remindru. Do posuvného registru se poak uloží vypočítaný reminder. Při kontrole CRC, přijme systém bity poslané zprávy (vypočítané zprávy). Po kontole musí posuvný registr obsahovat nuly v opačném případě zpráva obsahuje chyby. Nejednoduší způsob pro tvorbu softwerové implementace je požít je koncept hardwarového postupu a zapsat ho do programu. Nahradit posuvný registr proměnými a XOR brány pomocí XOR operátorů. Tenhle způsob je jeden z nejjednodušších a zabere jen malou část paměti, ale ne až tak rychlý výpočet. Pro případ kdy je důležitý čas výpočtu CRC, tak se používají speciální algoritmy, kde vstupuje do systému jeden byte na rozdíl od hardwarového postupu kde spočítá pomocí bitů. Tahle metoda má ale nevýhodu v tom, že odebere více místa v pamětí než počítání pomocí bitů.
.
6.3
Strana 33
Vypočet dělení dvou polygonů Postup vypočtu při dělení dvou polygonů pro výpočet CRC kódu [w06].:
Zpráva: 1101011011 Generátor: 10011 Ke správě se přidají 4 nuly: 11010110110000 Výsledná zpráva: 11010110111110
Obrázek 14 Postup výpočtu Reminderu.
Výpočet Cyclic Redundancy Check se provádí postupným dělením kontrolované zprávy generátorem a to pomocí xor algebry. Při výpočtu uvažujeme dva případy první je kontrola přijaté zprávy. Kde se dělí přijatá zpráva s přijatým generátorem. Zbytek při je bud nulový – zpráva byla přijatá bez chyby nebo nenulový – to nám říká, že v průběhu přenosu došlo k narušení zprávy. Druhý případ je příprava zprávy před transportu v síti. V tomhle případu se počítá tzv.: reminder – zbytek při dělení zprávy a generátoru. Spolu se zprávou se pak musí poslat generátor, aby se mohl provést kontrolní výpočet. Následující případ demonstruje výpočet reminder(u) pro zprávu: 1101011011 a generátoru 10011.:
6.4
Stručný popis aplikace CRCtool
Aplikace podrobně demonstruje výpočet Frame Check Sequence zadané zprávy po krocích. Program je vytvořen ve Flash 8 a psán ve skriptovacím jazyku Action Script 2.0. Pomocí crctool(u) jde vypočítat zprávu k odeslání až do velikosti 32 bitů. Plus je možno výpočet demonstrovat pomocí dvou animovaných příkladů.
Strana 34
.
Obrázek 15 Okno aplikace CRC tool.
Ovládací prvky – Ovládací část aplikace, která obsahuje 4 tlačítka, 2 editboxy a jeden combobox. • • • • • •
Animace příkladu – spustí animovaný výpočet příkladu. Tlačítko 1 – výpočet remider a tlačítko 2 detekci chyb. Reset – Vynuluje všechny proměné a vrátí aplikaci do defaultního stavu. Výpočet – Spustí výpočet rozdělený na kroky. ComboBox Generátor – Volba přednastavené hodnoty generátoru. Zpráva k odeslání – Zadaná zpráva k výpočtu. Generátor – Zadaný generátor. Podle kterého se bude provádět výpočet.
Průběh výpočtu - Průběh výpočtu reminderu rozdělený na kroky. Remider – Výsledek výpočtu CRCtoolu. Polygon původní zprávy – Polygonální zápis zadané zprávy Polygon generátoru – Polygonální zápis zadaného generátoru Výsledná zpráva – Původní zpráva s přidaným výsledkem výpočtu, která je připravená k poslání Nápověda – Podrobná nápověda k aplikaci.
.
7
Strana 35
Testovací modul
V poslední části bakalářské práce je vytvoření testovacího modulu, fungující na principech klasického testu (volba možností). Modul bude součástí většího testovacího balíku, který bude volat různé moduly (java, flash) quiz(u). Modul přebírá data pomocí souboru XML.
7.1
Struktura testovacího modulu
Celá struktura modulu je rozdělena na pět základních částí, které jsou přihlášení, tři druhy příkladů (otázek) a nakonec vyhodnocení celého testu. Celý modul je součástí většího systému, který vygeneruje otázky v XML soboru a spustí testovací modul. 7.1.1 Přihlášení Přihlašovací okno slouží k přhlášení do systému, selekce kruhu testu a uložení studentovy osobních data. Ono obsahuje tři části: Typ testu: specifikuje druh testovacích otázek (druh XML souboru). Jméno: Jméno a přímení studenta. Skupina: vyučovací skupina studenata.
Obrázek 16 Přihlašovací okno.
7.1.2 Příklad typu A Po přihlášení následují testovací otázky. Otázky existují 3 druhy. Příklad typu A: je takový kde ze 4 odpovědí může být správných všechny 4 nebo ani jedna (ala americký typ testu). Volba je prováděna pomocí checkBox(ů).
Obrázek 17 Příklad testu typu A.
Strana 36
.
7.1.3 Přiklad typu B Příklad typu B: obsahuje vždy jen jednu správnou odpověď. Volba je prováděna pomocí radioBotton.
Obrázek 18 Příklad testu typu B.
7.1.4 Příklad typu C Příklad typu C: je aplikace výpočet FCS u CRC kódu. Jsou zadány dva polygony, které jsou náhodně generovány. Výsledek se zapíše v podobě binárního čísla. Maximální počet pokusů určuje XML soubor.
Obrázek 19 Příklad testu typu B.
7.1.5 Vyhodnocení Poslední okno je vyhodnocení celého testu a zaslání výsledku na určenou email(ovou) adresu pomocí PHP.
Obrázek 20 Okno vyhodnocení testu.
.
Strana 37
9
Závěr
V rámci bakalářské práce bylo vytvořeno několik interaktivních příkladů z teorie kódování, které pak dále budou sloužit studentům jako interaktivní pomůcky ve cvičení předmětu Informační systémy. Konkrétní příklady byly vybrány ze dvou odvětví teorie kódování – Kryptografie a Proti-chybové kódování. Jsou to: • • •
Šifrování pomocí otáčivé mřížky. Algoritmus RSA šifrování. Postup výpočtu CRC kódu.
Všechny tři příklady, by měli srozumitelně vysvětlit postup vytváření kódu a názorně je prezentovat na jednoduchém příkladu. Aplikace jsou vytvořeny ve vývojovém prostředí programu Flash 8 a programovány v jazyce Action script 2.0. A boudou použity do už existujícího balíku vytvořených příkladů, na adrese www.uai.fme.vutbr.cz/~matousek/TIK/index_tik.html, které jsou určeny k lepšímu pochopení látky teorie kódování. Jako poslední část bakalářská práce spočívala naprogramování testovacího modulu, který by měl sloužit k ověření znalostí studenta pomocí testovacích otázek, plus implantace jednoho generovaného výpočetního příkladu, konkrétně výpočet zbytku přidělení dvou polygonů v kódu CRC. Testovací modul má být vytvořen spolu s příklady v Adobe Flash 8 a data příjmat pomocí strukturovaného jazyka XML.
Strana 38
.
.
10
Strana 39
Seznam obrázků
OBRÁZEK 1ROZDĚLENÍ TEORIE KÓDOVÁNÍ. .......................................................... 15 OBRÁZEK 2 MOŽNOST CHYBY V JEDNODUCHÝCH SÍTÍ....................................... 17 OBRÁZEK 3 PROCENTUÁLNÍ ROZLOŽENÍ SOFT. V SÍTI INTERNET. ................... 19 OBRÁZEK 4 PROSTŘEDÍ PROGRAMU FLASH 8. ....................................................... 20 OBRÁZEK 5 OKNO AS V PROGRAMU FLASH 8. ........................................................ 21 OBRÁZEK 6 POSTUP VÝPOČTU V ŠIFROVACÍ MŘÍŽCE. ......................................... 24 OBRÁZEK 7 SMYSL OTÁČENÍ MŘÍŽKY. ..................................................................... 24 OBRÁZEK 8 PROSTŘEDÍ APLIKACE ŠIFROVACÍ MŘÍŽKY. .................................... 25 OBRÁZEK 9 PRINCIP RSA. ............................................................................................. 28 OBRÁZEK 10 ALGORITMUS RSA.................................................................................. 29 OBRÁZEK 11 OKNO APLIKACE PŘÍKLADU RSA. ..................................................... 29 OBRÁZEK 12 PRINCIP PŘENOSU ZPRÁVY SPOLU S CRC. ...................................... 31 OBRÁZEK 13 HARDWAROVÁ IMPLANTACE CRC. .................................................. 32 OBRÁZEK 14 POSTUP VÝPOČTU REMINDERU. ........................................................ 33 OBRÁZEK 15 OKNO APLIKACE CRC TOOL................................................................ 34 OBRÁZEK 16 PŘIHLAŠOVACÍ OKNO. .......................................................................... 35 OBRÁZEK 17 PŘÍKLAD TESTU TYPU A. ..................................................................... 35 OBRÁZEK 18 PŘÍKLAD TESTU TYPU B. ...................................................................... 36 OBRÁZEK 19 PŘÍKLAD TESTU TYPU B. ...................................................................... 36 OBRÁZEK 20 OKNO VYHODNOCENÍ TESTU. ............................................................ 36
Strana 40
.
.
Strana 41
11
Seznam použité literatury
[01]
DOWNS, Stephen, et al. Flash 8 Essentials. Berkeley : FriendsofED, c2005. 424 s. ISBN 1590595327.
[02]
CLARKE, Ben Renow, BHANGAL, Sham. Foundation ActionScript for Flash MX. Berkeley : FriendsofED, 2002. 500 s. ISBN 1590591666.
[03]
ELST, Peter, YARD, Todd. Object-Oriented ActionScript For Flash 8. Berkeley : FriendsofED, 2006. 560 s. ISBN 1590596196.
[w01] Wikipedia : Wikipedi [online]. 2000 [cit. 2007-05-12]. Dostupný z WWW: <www.wikipedia.com>. [w02] RSA laboratories [online]. 1998 [cit. 2007-05-05]. Dostupný z WWW: <www.rsa.com>. [w03] Adobe Flash [online]. 2000 [cit. 2007-04-20].
.
Dostupný
z
WWW:
[w04] ECMAScript : wikipedia [online]. 2002 [cit. 2007-05-14]. Dostupný z WWW:
. [w05] Cyclic redundancy check : wikipedia [online]. 1999 [cit. 2007-05-13]. Dostupný z WWW: . [w06] CRC Calculation [online]. 2001 [cit. 2007-05-12]. Dostupný z WWW: . [w07] Internet Encryption [online]. 2000 [cit. 2007-05-10]. Dostupný z WWW: . [w08] RSA Encryption [online]. 2001 [cit. 2007-05-15]. Dostupný z WWW: . [w09] Elektronický podpis [online]. 2002 [cit. 200-05-15]. Dostupný z WWW: . [w10] RSA : wikipedia [online]. 2000 [cit. 2007-05-15]. Dostupný z WWW: . [w11] Grille : wikipedia [online]. 2001 [cit. 2007-05-15]. Dostupný z WWW: . [w12] Kryptografie : wikipedia [online]. 1997 [cit. 2007-05-15]. Dostupný z WWW: . [w13] Hamming code [online]. 1995 [cit. 2007-05-02]. .
Dostupný
z
WWW:
Strana 42
.
[w14] Komprese dat [online]. 2000 [cit. 2007-05-06]. .
Dostupný
z
WWW:
[w15] Adobe Flash [online]. 2005 [cit. .
Dostupný
z
WWW:
2007-05-06].
Příloha Příloha cd s elektronickou verzí bakalářské práce a zdrojové programy.