Bankovní institut vysoká škola, a.s. Katedra informatiky a kvantitativních metod
Moderní kryptografie a problém diskrétního logaritmu Diplomová práce
Autor:
Bc. Michal Novák, DiS. Informační technologie a management
Vedoucí práce:
Strakonice
Ing. Vladimír Beneš, Ph.D.
Duben 2014
Prohlášení: Prohlašuji, že jsem diplomovou práci zpracoval samostatně a v seznamu uvedl veškerou použitou literaturu. Svým podpisem stvrzuji, že odevzdaná elektronická podoba práce je identická s její tištěnou verzí, a jsem seznámen se skutečností, že se práce bude archivovat v knihovně BIVŠ a dále bude zpřístupněna třetím osobám prostřednictvím interní databáze elektronických vysokoškolských prací.
V Strakonicích dne 27. dubna 2014
Michal Novák
Poděkování: Na tomto místě bych rád poděkoval svému vedoucímu diplomové práce, Ing. Vladimíru Benešovi, Ph.D. za pomoc, cenné rady a veškerý čas, který mi věnoval.
Anotace Diplomová práce se zabývá základními principy kryptografických systémů a definuje základní šifrovací algoritmy. Zaměřuje se na moderní šifrovací algoritmy a případy jejich použití. Dále práce podrobněji popisuje problém diskrétního logaritmu a asymetrické algoritmy, které využívají tohoto matematického problému. V závěrečné části nalezneme porovnání jednotlivých algoritmů a jejich bezpečnost v závislosti na použité délce klíče. Klíčová slova: kryptografie, algoritmus, šifra, protokol, diskrétní logaritmus, klíč
Annotation This thesis deals with the basic principles of cryptographic systems and defines the basic cryptographic algorithms. It focuses on modern cryptographic algorithms and their use cases. The thesis also describes in detail the discrete logarithm problem and asymmetric algorithms that use this mathematical problem. In the final part we can find a comparison of different algorithms and their safety, depending on the length of the key. Keywords: cryptography, algorithm, cipher, protocol, discrete logarithm, key
Obsah Úvod ........................................................................................................................................... 6 1.
Kryptografie ........................................................................................................................ 8 1.1.
Rozdělení kryptografie................................................................................................. 8
1.1.1. Symetrické šifrování ............................................................................................... 10 1.1.2. Asymetrické šifrování ............................................................................................. 13 1.1.3. Hashovací funkce .................................................................................................... 14 1.2. Kryptografické útoky ..................................................................................................... 15 2.
Moderní kryptografie ........................................................................................................ 17 2.1.
Kryptografické nástroje ............................................................................................. 19
2.2.
Rozdělení algoritmů moderní kryptografie................................................................ 20
2.3.
Algoritmy používané v moderní kryptografii ............................................................ 21
2.3.1.
Symetrická kryptografie ..................................................................................... 21
2.3.1.1.
AES (Advanced Encryption Standard) ....................................................... 21
2.3.1.2.
DES (Data Encryption Standard) ................................................................ 25
2.3.1.3.
TripleDES (Triple Data Encryption Standard) ........................................... 27
2.3.1.4.
IDEA (International Data Encryption Algorithm) ...................................... 28
2.3.1.5.
RCx ............................................................................................................. 29
2.3.1.6.
CAST (Carlisle Adams a Stafford Taverns) ............................................... 30
2.3.1.7.
Blowfish ...................................................................................................... 31
2.3.1.8.
Twofish ....................................................................................................... 32
2.3.1.9.
Serpent......................................................................................................... 32
2.3.2.
Asymetrická kryptografie ................................................................................... 33
2.3.2.1.
RSA (Rivest-Shamir-Adelman) .................................................................. 33
2.3.2.2.
Diffie-Hellman ............................................................................................ 39
2.3.2.3.
DSA (Digital Signature Algorithm) ............................................................ 39
2.3.2.4.
El-Gamal ..................................................................................................... 39
2.3.2.5.
ECC (Elliptic Curve Cryptosystem)............................................................ 39
2.3.2.6.
ECDSA (Elliptic Curve Digital Signature Algorithm) ............................... 41
2.3.3.
Hybridní kryptografie ......................................................................................... 41
2.3.3.1. 2.3.4.
3.
Kvantová kryptografie ........................................................................................ 42
2.3.4.1.
Protokol BB84 ............................................................................................. 43
2.3.4.2.
Protokol E91................................................................................................ 45
Problém diskrétního logaritmu .......................................................................................... 47 3.1.
4.
PGP (Pretty Good Privacy) ......................................................................... 42
Asymetrické šifry založené na diskrétním logaritmu ................................................ 49
3.1.1.
Diffie-Hellmanův protokol ................................................................................. 49
3.1.2.
ElGamal algoritmus ............................................................................................ 51
3.1.3.
DSA algoritmus .................................................................................................. 53
Porovnání bezpečnosti šifer s různými délkami šifrovacích klíčů .................................... 55 4.1.
Porovnání symetrických šifer .................................................................................... 55
4.2.
Porovnání asymetrických šifer................................................................................... 57
4.3.
Závislost délky klíče symetrických šifer na čase prolomení útokem hrubou silou ... 58
4.3.1.
Testování ............................................................................................................ 59
4.3.2.
Vyhodnocení....................................................................................................... 63
Závěr ......................................................................................................................................... 67 5.
Použité zdroje .................................................................................................................... 68
6.
Seznam použitých zkratek................................................................................................. 70
7.
Seznam obrázků ................................................................................................................ 71
8.
Seznam tabulek ................................................................................................................. 72
9.
Seznam grafů ..................................................................................................................... 73
Úvod V dnešní době, kdy informační technologie jsou stále na vzestupu a stále více potřebné ve firmách, státních složkách, ale také domácnostech, se rozvíjí i obory, které jsou s tímto tématem velmi úzce spjaté. Jedním z těchto oborů je i kryptografie, bez které si v dnešní době už nedokážeme představit ani přenos základních informací, natožpak nějaký pokročilý firemní informační systém. Jednoduše řečeno obor kryptografie nám odděluje soukromý sektor od veřejného a stará se nám o příslušné zabezpečení, které by mělo být přiměřené k důležitosti utajení dat, skrývajících se např. v daném informačním systému. Jako příklad potřeby využití kryptografie bych zde uvedl odesílání obyčejného dopisu, kdy zalepujeme obálku, aby nikdo neviděl obsah dopisu, který nám tvoří nějaké informace. V dnešní době už skoro obyčejné dopisy nahradila emailová komunikace, tedy elektronická pošta. Kde právě jako zabezpečení používáme obor kryptografie, která nám zabezpečí tak jako u dopisu zalepení obálky skrytí dané informace po celé cestě až k příjemci. Postupně od založení tohoto oboru a jeho neustálého rozvoje se začala rozvíjet i odvrácená strana tohoto oboru a to je prolomení daného zabezpečení či potřeba dostat se k informacím, které jsou určené pouze oprávněným osobám. A právě díky této odvrácené straně kryptografie, vděčíme za velký rozmach tohoto oboru, který se neustále rozvíjí a přizpůsobuje potřebám klientů. Dnes se již s tímto oborem setkáváme denně a to ani nemusíme patřit k uživatelům nějakého IT systému. Obor kryptografie je již zaimplementován i do každodenních situací každého z nás. Např. pro potřebu ověření osobních údajů, či zasílání informací atd. Pro upřesnění bych zde uvedl nějaké příklady, při kterých používáme kryptografii, aniž bychom o tom věděli. Můžeme zde uvést například sledování placené televize či používání mobilního telefonu (GSM), ale také procházení některých zabezpečených stránek na internetu. Cílem této práce je charakterizovat asymetrickou kryptografii a problém diskrétního logaritmu a dále prezentovat moderní trendy na ukázkovém příkladu. Pro naplnění tohoto cíle budu popisovat nejdříve základní principy kryptografie, které by měly sloužit spolu s rozdělením kryptografie jako úvod do této problematiky. Dále bude následovat moderní
6
kryptografie, kdy dojde k představení dnes používaných symetrických a asymetrických algoritmů a jejich použití v praxi. V případě dnes nejčastěji využívaných algoritmů přidám i ukázkový příklad zašifrování zprávy. Klíčovou kapitolou této diplomové práce bude kapitola věnující se problému diskrétního logaritmu a algoritmům, které jsou na tomto problému založeny. V poslední části mé práce budu porovnávat jednotlivé algoritmy symetrické a asymetrické kryptografie, kdy se zaměřím hlavně na porovnání dnes bezpečné délky klíče u jednotlivých algoritmů.
7
1. Kryptografie Kryptografie nebo také šifrování je věda o metodách skrytí smyslu zprávy před třetí osobou, bez speciální znalosti, která vede k rozluštění. Slovo kryptografie je složeno ze dvou řeckých slov a to kryptós = skrytý a gráphein = psát. Kryptografie je pouze první částí ze tří oborů kryptologie. Kryptologie je opět složena ze dvou řeckých slov a to opět kryptós = skrytý a logos = věda. Další částí, z nichž se skládá kryptologie jsou, kryptoanalýza, která se zabývá dešifrováním dané zprávy a steganografie, která se zabývá skrýváním informací. Kryptografie není žádný nový obor, zmínky o této vědě sahají až do 5. století př. n. l.. Kryptografie byla využívaná např. ve všech válkách a právě ve válkách a všech válečných operacích a strategiích byla také nejčastěji používána. A právě v těchto válečných obdobích byl zaznamenán i největší rozmach tohoto oboru, kdy bylo opravdu strategicky důležité zašifrovat danou informaci až k příjemci. Dokonce vznikali i šifrovací stroje, pomocí kterých bylo možné jak šifrování, tak ale i zpětné dešifrování na původní informaci. Samozřejmě s nárůstem snahy o dešifrování daných šifer se vyvinul i protilehlý obor kryptoanalýza. Díky oboru kryptoanalýzy, jsme dosáhli silnějších základů i u kryptografie, která se stává silnější a vždy by měla být o trošku dál než obor kryptoanalýzy, jinak by veškeré šifrování ztrácelo smysl.
1.1. Rozdělení kryptografie Obor kryptografie, jak je již napsáno výše, je velmi starý obor, který se po celou dobu svého rozvoje vyvíjel. Během tohoto vývoje se vyzkoušelo mnoho různých účinných i méně účinných metod. Dokonce i moderní kryptografie dneška stále staví své základy na těchto základních metodách. Základní rozdělení kryptografických metod se členní podle použití klíčů či klíče.
8
Základní kryptografické metody:
Symetrické šifrování Asymetrické šifrování Hashovací funkce
Rozebereme si nejprve první dvě. Obě dvě tyto metody mají samozřejmě své klady, ale i zápory. Nejdříve se zaměříme na starší z těchto dvou metod a to metodu symetrickou, která je reprezentována pouze jedním klíčem, který slouží k zašifrování, ale i dešifrování. Tato metoda se vyznačuje malou výpočetní náročností, z které vyplývají rychlejší výpočty u této metody. Oproti druhé metodě, je zde ale jeden velký zápor a to šíření klíče od zašifrování k dešifrování, kdy klíč, kterým byl prostý text zašifrován, je třeba také nějak doručit spolu se zašifrovaným textem. Tento zápor odstraňuje metoda asymetrická, která používá k zašifrování veřejný klíč, ale dešifrovat již tuto zprávu může právě jen příjemce s jeho soukromým klíčem. Toto je samozřejmě velmi velkou výhodou oproti klasické symetrické šifře, ovšem spolu s tímto systémem veřejného klíče se nám zvyšuje i výpočetní náročnost a z toho vyplývající pomalejší výpočty takto zašifrovaných zpráv. Dále můžeme kryptografii rozdělit podle šifrování otevřeného textu na blokové šifry a proudové šifry. Bloková šifra – Šifrování probíhá po blocích stejné délky. V případě dlouhého otevřeného textu, který je potřeba zašifrovat, musíme otevřený text rozdělit do bloků, který následně šifrujeme. Při nedostatečné velikosti otevřeného textu do daného bloku se používá tzv. výplň (anglicky padding). Následné dešifrování takových šifer probíhá opačným způsobem, přijímané zašifrované bloky se dešifrují a následně seřadí za sebe, kdy nám vznikne opět původní prostý text. Tato šifra je snadno prolomitelná v případě, kdy všechny bloky prostého textu šifrujeme pomocí stejného klíče. Kvůli bezpečnosti se v takových případech používá jeden z režimů provozu blokové šifry. V případě odposlechu takto šifrované zprávy útočník nedokáže zprávu dešifrovat, v některých případech ani nerozezná, že se jedná o blokovou či proudovou šifru. Proudová šifra – U této šifry se šifruje otevřený text po jednotlivých znacích. Takto otevřený text se šifruje po jednotlivém znaku se znakem pseudonáhodným proudem bitů, který je vytvořen z šifrovacího klíče a šifrovacího algoritmu. Díky tomuto systému jsou proudové 9
šifry rychlejší a méně náročné na požadovaný hardware. Proudové šifry jsou ale více náchylné k prolomení, v případě kdy jsou nesprávně implementovány. Tabulka 1 - Blokové a proudové algoritmy [zdroj: vlastní]
Používané algoritmy u jednotlivých druhů šifer Bloková šifra
Proudová šifra
AES
RC4
DES
FISH
Twofish
SEAL
IDEA
Helix
1.1.1. Symetrické šifrování Symetrické šifrování je, jak už bylo uvedeno, starší z těchto dvou metod a sahá až daleko do starověku. Toto šifrování je založeno na použití jednoho klíče, pomocí kterého dochází k zašifrování a následnému dešifrování zprávy. Právě v tomto systému symetrického šifrování se skrývá i jeho největší nevýhoda a to je nutnost doručení jak zprávy, tak i klíče přijímací straně. Mezi nejznámější dnes používané symetrické algoritmy patří DES, 3DES, BlowFish, CAST.
10
Obrázek 1 - Symetrické šifrování šifrování [zdroj: http://www.svetsiti.cz/clanek.asp?cid=Pravdy http://www.svetsiti.cz/clanek.asp?cid=Pravdy-o-elektronickem elektronickempodpisu sifrovani-1-zakladni podpisu-a-sifrovani zakladni-pojmy-1252003 1252003]
Hlavní výhoda: výhoda rychlejší ychlejší výpočty = menší výpočetní náročnost. Hlavní nevýhoda: nevýhoda nutnost utnost doručení klíče, kterým byla zpráva zašifrována. 1) Transpoziční šifra
Základní principy symetrického šifrování: Základní
2) Substituční šifra 3) Hybridní šifra
Transpoziční šifra šifr Transpoziční anspoziční šifra je založena na jednoduchém zpřeházení znaků v šifrované zprávě, oproti prostému textu. Znaky se zaměňují zaměňují dle nějakého systému, který musí být znám oběma stranám. Velkou výhodou šifer založených na tomto systému je jednoduchost a snadnost šifrování i bez použití výpočetní techniky. Oproti tomu velkou nevýhodou takového systému je poměrně snadné dešifrování i bez znalosti klíče.
11
Základní transpoziční šifry: Transpoziční tabulky – tato šifra je založena na tabulce, kde existuje určitý vzor, pomocí kterého zapisujeme znaky zprávy do této tabulky. Šifrovaný text získáme přečtením tabulky po řádcích. Příjemce potřebuje znát pro dešifrování zprávy právě znak, pomocí kterého byla zpráva zašifrována. Tento znak můžeme považovat za klíč u tohoto druhu šifry. Sloupcová transpozice – u této šifry je zpráva psaná v řádcích a pro šifrování čtena v sloupcích. U této šifry je potřeba si zvolit počet sloupců, který nám může udávat i klíč. Tento klíč je slovo, které nám nedává žádnou informaci. Tento klíč používáme jen pro počet sloupců v závislosti na počtu znaků v klíči. Transpoziční mřížka – k této šifře je potřeba právě transpoziční mřížka, pomocí které probíhá zašifrování i následné dešifrování. Jedná se o mřížku z pevného materiálu, v níž jsou náhodné otvory, do kterých se zapisuje prostý text. Po odstranění této mřížky a dopsáním ostatních znaků mezi již naše napsané získáme šifrovaný text, který je možno přečíst zase jen s pomocí transpoziční mřížky. Právě díky použití připsání dalších pomocných znaků, které slouží jen pro skrývání, můžeme tuto šifru považovat částečně za součást steganografie. Tyto druhy šifer jsou snadno rozluštitelné a v dnešní době za použití výkonné výpočetní techniky nepoužitelné.
Substituční šifra Jedná se o další ze symetrických šifer. Systém této šifry je založen na substituci každého znaku, slova či věty v prostém textu. Každý znak je nahrazeným jiným pomocí určitého klíče, tento klíč se musí opět doručit příjemci k dešifrování zašifrovaného textu. Tento systém je již náročnější na prolomení oproti transpoziční šifře.
Základní substituční šifry: Caesarova šifra – tento druh šifry jsem již popisoval výše v historii kryptografie. Jedná se o šifru substituční, kde každý znak zprávy nahrazujeme jiným znakem. V případě této šifry znakem o určitý počet v abecedě následující. V dnešní době je tato šifra velmi snadno napadnutelná. 12
Vernamova šifra – tuto šifru můžeme bez obav používat i v dnešní době. Vymyslel a nechal si ji patentovat v roce 1917 pan Gilbert Vernam. Jedná se o šifru, u které bylo dokázáno, že je nerozluštitelná. Tato šifra používá klíč, který nám u každého znaku říká o kolik znaků je posunutý šifrovaný text oproti každému znaku prostého textu. Z toho vyplývá, že klíč je stejně dlouhý jako samotný prostý text. Playfairova šifra – tuto šifru vynalezl Charles Wheatston, ale proslavená byla až Lyonem Playfairem, po kterém byla i pojmenovaná. Tato šifra nahrazuje každou dvojici prostého textu další dvojicí, je tedy obtížnější její rozluštění.
Hybridní šifra Hybridní šifra, jak už udává název, je kombinací předešlých šifer, tedy kombinací substituční šifry a šifry transpoziční. Díky této kombinaci se zmenšuje riziko prolomení této šifry. Největší nedostatek symetrického šifrování ale zůstává, tedy stále musíme spolu s šifrovanou zprávou doručit příjemci i klíč pro dešifrování zprávy.[1]
1.1.2. Asymetrické šifrování Asymetrické šifrování je novější z těchto dvou metod a oproti starší metodě značně složitější. Toto šifrování je založeno na použití klíčového páru, který tvoří veřejný a soukromý klíč. Jak již název napovídá, veřejný klíč můžeme libovolně šířit bez toho, abychom se museli bát prolomení. Druhý z klíčů je klíč soukromý, který bychom si měli chránit a neměl by ho nikdo jiný znát. Princip asymetrického šifrování tedy vychází právě z potřeby dvou klíčů. Pomocí veřejného klíče, který je volně šiřitelný může odesílatel zprávu zašifrovat. Dešifrování takto zašifrované zprávy již ale dokáže pouze majitel soukromého klíče. Jediný klíč nelze použít pro zašifrování i dešifrovaní zprávy, protože toto šifrování je založeno na matematických funkcí, kdy reverzní výpočet je zcela nevypočitatelný. Tímto způsobem použití dvou klíčů odstraňuje asymetrické šifrování největší nevýhodu symetrického šifrování a to nutnost přenosu klíče, který byl použit pro zašifrování zprávy. asymetrické šifry se řadí DH, RSA a DSA algoritmy.
13
Mezi nejznámější používané
Obrázek 2 - Asymetrické šifrování [zdroj: http://www.svetsiti.cz/clanek.asp?cid=Pravdy http://www.svetsiti.cz/clanek.asp?cid=Pravdy-o-elektronickem elektronickempodpisu sifrovani-1-zakladni podpisu-a-sifrovani zakladni-pojmy-1252003 1252003]
Hlavní výhoda: odstranění dstranění problému s přenášením klíče. Hlavní nevýhoda: nev velká elká výpočetní náročnost díky použitým matematickým funkcím. Na obrázku 2 vidíme základní princip asymetrické kryptografie, který není zcela bezpečný, ale na tomto základním obrázku je vidět princip asymetrické kryptografie.
V případě
uvedeném na obrázku by příjemce nemohl mít jistotu, že se jedná opravdu o správného odesílatele. Pro bezpečný přenos v asymetrické kryptografii a zaručení správného odesílatele by se otevřený text musel nejdříve zašifrovat soukromým klíčem odesílatele a pak znovu veřejným ejným klíčem příjemce. Po odeslání takto zašifrované zašifrované zprávy si příjemce může být jistý, že zpráva nebyla po cestě dešifrována a byla odeslána správným odesílatelem. Příjemce po doručení takto zašifrované zprávy nejdříve musí zprávu dešifrovat pomocí svého soukromého klíče a dále dešifrovat znovu veřejným klíčem odesílatele.[1] odesílatele. ]
1.1.3 .1.3. Hashovací Hashovací funkce Hashovací funkce je jedním z nástrojů moderní kryptografie, tato funkce nám vytváří Hashovací z libovolně dlouhého řetězce znaků hash, neboli neboli otisk o předem dané bitové délce. O této funkci se také často říká, že je jednosměrná, to právě díky vytvoření otisku, z kterého už ale
14
nelze vytvořit nazpátek původní řetězec. Toto je ale i v některých případech výhoda této funkce, kdy při prozrazení otisku neoprávněné osobě se nemusíme bát prozrazení původního řetězce, protože z otisku není možné získat původní řetězec znaků. Další výhoda této funkce je v případě aplikování na stejné řetězce znaků, které se liší pouze v jednom konkrétním znaku. Vyjde nám hash, neboli otisk rozdílný tzn. nebude se lišit pouze v jednom znaku, ale bude kompletně odlišný. V případě aplikování hashovací funkce na stejný řetězec znaků nám vždy vyjde stejný otisk. Nejznámější z algoritmů používající hashovací funkci je SHA (Standard Hash Algorithm). Tento algoritmus většinou bývá ještě doplněn číslem, které označuje bitovou délku výsledného otisku.[1] Hlavní výhoda: z každého řetězce získáme odlišný otisk. Hlavní nevýhoda: ze získaného otisku, není možné získat původní řetězec.
1.2. Kryptografické útoky Útoků, pomocí kterých se různí útočníci snaží prolomit různé šifry, neustále přibývá a jak se zlepšuje kryptografie, tak také útočníci musí zlepšovat a zdokonalovat své útoky, pomocí kterých se snaží získat nějaké informace, či někoho poškodit atd. Tato kapitola by se dala svou obsáhlostí pojmout jako samostatná práce a proto tu shrnu pouze pár základních metod a faktů, které se budou dále objevovat v této práci. Útočníci mohou mít různé důvody pro jednotlivé útoky, tyto útočníci mohou být různého charakteru, může se jednat o jednotlivce ale také celou skupinu či organizaci. Také záleží, odkud útočník vede útok, jestli má přístup například do firemní sítě, či útočí z vnějšku, z internetu atd. Pro kryptografické útoky je také velmi důležitá útočníkova síla, která se vyjadřuje pomocí výpočetního výkonu.
Hlavní metody kryptografických útoků: Brute force attack – tato metoda zkouší tupě všechny možné varianty klíčů, dokud nepřijde na správný klíč. Tato možnost je jediná možná u opravdu silných šifer. V českém jazyce se říká, že se jedná o útok hrubou silou. Random attack – u této metody se útočník pokouší podstrčit falešnou zprávu, pokud systém nemá správně definovanou odezvu na chybné zprávy, může být útočník úspěšný. 15
Man in the middle attack – tato metoda je úspěšná v případě, kdy šifra nepočítá s autorizací. Potenciální útočník se postaví do komunikace a odpovídá jako by se jednalo o potencionálního příjemce či odesílatele a získá z komunikace informace či klíče vedoucí k prolomení šifry. Differential attack – útočník provádí rozbor změn v šifře, které odpovídají změnám u otevřeného textu. Known plaintext attack – u tohoto útoku zná útočník otevřený text a zašifrovanou zprávu a zkoumá klíč, kterým byla zpráva zašifrována, pomocí kterého by mohl dále dešifrovat všechny zprávy.[2]
16
2. Moderní kryptografie Počátky moderní kryptografie zasahují do druhé poloviny 20. Století, přesněji okolo roku 1970. Do této doby se kryptografie využívala hlavně na utajení nějaké citlivé válečné informace, či bezpečný přenos důležité zprávy. Převrat v kryptografii nastal právě okolo tohoto data, kdy tehdejší kryptografie používaná hlavně vládou a vládními institucemi přechází i do civilního sektoru, kde začala být reprezentována IT technikou. Jak už bylo napsáno v úvodu, s kryptografií jako takovou se setkáváme dnes již všude, aniž bychom o tom věděli anebo měli aspoň tušení, že např. na tak jednoduchý princip, jako je sledování satelitu, je v dnešní době zapotřebí kryptografie. Jak bylo uvedeno, moderní kryptografie dneška se nestará jen o zašifrování zprávy, ale s rozvojem IT a techniky obecně se obor kryptografie rozvíjí a odpovídá na požadavky dnešní doby.
Cíle moderní kryptografie: •
Důvěrnost dat – dává nám za cíl uchránit citlivá, či důvěrná data, před neoprávněnými osobami, ke kterým by se tato data neměla dostat. Zachování důvěrnosti dat můžeme řešit zamezením fyzického přístupu nebo nějakou kryptografickou metodou, která data převede do podoby, ze které není schopna neoprávněná osoba získat původní informaci.
•
Integrita dat – zajišťuje nám ucelenost původních dat, originalitu původních dat, ochranu dat před jakoukoliv změnou např. vložením dalších dat, smazáním části zprávy či přepsáním nebo připsáním.
•
Autentizace entit - ověřuje, zda se opravdu jedná o danou uvedenou entitu. Entitou můžeme v tomto případě myslet uživatele, který zprávu psal, počítač na kterém se zpráva psala nebo odesílala, ale také program ve kterém byl vytvořen dokument nebo zpráva.
•
Autentizace dat – stará se nám o důvěryhodnou identitu dat. Do této kategorie patří ověřování pravdivosti vzniku času dokumentu a také původ dokumentu. Autentizace dat je vedlejším produktem integrity dat. 17
•
Nepopíratelnost – zajišťuje v případě jakéhokoliv sporu či potřeby ověření, kdo dokument dělal, kde ho dělal nebo jakým způsobem ho dělal. Zajišťuje, aby daná identita nemohla později popřít, co dříve vykonala. Druhy nepopíratelnosti:
Nepopíratelnost původu Nepopíratelnost odeslání Nepopíratelnost příjmu Nepopíratelnost času Nepopíratelnost znalosti
•
Časová důvěryhodnost – zajišťuje ochranu nad časovou osou práce s entitami, kdy přesně byl jaký proces, úkol vykonán.
•
Důvěryhodný monitoring – se nám stará o pravdivý zápis všech operací, které byly provedeny. K této kategorii by se dali zařadit i logy, které se nám starají o zápis jakékoliv operace s daným subjektem.
•
Řízení přístupu – tento typ moderní kryptografie zajišťuje, že opravdu pouze oprávněné osoby či programy mají přístup k daným objektům.
•
Autorizace – zajišťuje, že určité činnosti mohou vykonávat pouze subjekty, které mají patřičná oprávnění či autorizaci k provedení takového činnosti.
Jak je vidět z předešlého textu, tak mezi základní kryptografické služby patří důvěrnost, integrita, nepopíratelnost a autentizace. Pomocí těchto služeb se dá obsáhnout většina moderních kryptografických cílů. Práce s těmito službami nemusí vždy představovat pouze osoba, ale může se jednat také o program nebo proces. Na druhou stranu zprávou nemusí být dokument či e-mail, ale zprávu nám může představovat také libovolný soubor dat, program či např. položka v databázi. Způsobů jak zajistit informační bezpečnost je spousta. Např. fyzickým způsobem, kdy zavřeme informace do trezoru či nějakým jiným způsobem zamezíme přístupu neoprávněné osoby k informacím. Dalšími možnými způsoby, jak ochránit citlivá data, jsou personální, 18
administrativní či technické oddělení citlivých informací od neoprávněných osob. Moderní kryptografie se ale zabývá pouze matematickými metodami pro zajištění informační bezpečnosti.[3]
2.1. Kryptografické nástroje Moderní kryptografie obsahuje pro zajištění bezpečnosti cílů celou řadu kryptografických nástrojů, které se nám zajišťují různé cíle a rozšířili nám tak škálu moderní kryptografie. Klasická kryptografie před nástupem moderní měla pouze jeden cíl a to udržet zprávu či informaci v utajení a toto zajišťovala jediným nástrojem - šifrou. Kryptografické nástroje:
Šifrovací systémy s tajným klíčem Šifrovací systémy s veřejným klíčem Hashovací funkce Generátory náhodných znaků Autentizační kódy zpráv Schémata digitálních podpisů Schémata výměny klíčů Schémata sdíleného tajemství[3]
19
2.2. Rozdělení algoritmů moderní kryptografie Algoritmy moderní kryptografie a jejich rozdělení do jednotlivých celků: Symetrická kryptografie: AES (Advanced Encryption Standard) DES (Data Encryption Standard) TripleDES (Triple Data Encryption Standard) IDEA (International Data Encryption Algorithm) RCx CAST (Carlisle Adams a Stafford Taverns) Blowfish Twofish Serpent
Asymetrická kryptografie: RSA (Rivest-Shamir-Adelman) Diffie-Hellman DSA (Digital Signature Algorithm) El-Gamal ECC (Elliptic Curve Cryptography) ECDSA (Elliptic Curve Digital Signature Algorithm)
Hybridní kryptografie:
PGP (Pretty Good Privacy)
Kvantová kryptografie:
Protokol BB85 Protokol E91
20
2.3. Algoritmy používané v moderní kryptografii Algoritmus je jakýsi postup či návod každého kryptografického systému. Jinak by se dalo říci, že kryptografický algoritmus je souhrn všech kryptografických transformací a zobrazení daného systému v kryptografii.
2.3.1. Symetrická kryptografie Symetrická kryptografie, jak už bylo výše uvedeno, se zabývá šifrováním za pomocí jednoho tajného klíče pro šifrování i dešifrování dat. Symetrická kryptografie je mnohem starší než kryptografie asymetrická, která vznikla poměrně nedávno. Symetrické šifry můžeme dále rozdělit na dva druhy podle toho, zda se šifruje po blocích pevně dané délky dané zprávy, od toho odvozena bloková šifra, anebo v symetrické kryptografii můžeme využít proudovou šifru, která šifruje otevřený text po jednotlivých znacích. Nejčastěji se využívá symetrické šifry k lokálnímu zašifrování určitých dat, které považujeme za důvěrné. Ale při komunikaci anebo zasílání důvěrných dat přes ne zcela bezpečný kanál se využití symetrické šifry často kombinuje s asymetrickým šifrováním. V tomto případě dochází k zašifrování dat pomocí symetrického šifrování, protože asymetrické šifrování je mnohem složitější a klade větší nároky na výpočetní techniku. A dále se pomocí asymetrického šifrování zašifruje pouze klíč, který byl použit pro šifrování dat pomocí symetrického šifrování. Tímto způsobem za použití symetrické i asymetrické kryptografie, jsme vyřešili problém symetrické kryptografie a to přenos klíče spolu se šifrovanou zprávou. Nejčastěji využívané algoritmy v symetrické kryptografii jsou AES, DES, TripleDES, IDEA, RCx, Blowfish, Twofish, Serpent.
2.3.1.1. AES (Advanced Encryption Standard) Jedná se o pokročilý šifrovací standard, ale také o jeden z nejvíce používaných algoritmů dnešní doby v oblasti symetrické kryptografie. Algoritmus AES, nebyl dodnes prolomen a předpokládá se, že by měl zůstat neprolomitelný ještě několik desítek let. Přesněji algoritmus vznikl v roce 2002, kdy Národní úřad pro standardizaci (NIST1) schválil šifru AES jako standard v USA. Této šifře předcházel algoritmus DES, z kterého AES vychází. Tento systém byl ale již nadále neudržitelný a dnes je již prolomen. Další výhodou oproti 1
NIST – National Institute of Standards and Technology (Národní institut standardů a technologií)
21
předchozímu systému DES je použití různých délek klíčů. AES podporuje délku klíče o velikosti 128, 196 nebo 256 bitů. S algoritmem AES se můžeme setkat také jako s Rijdael algoritmem, který neznamená nic jiného než AES, ale je pouze pojmenovaný po svých autorech, kterými byli Joan Daemen a Vincent Rijmen. Rijdael je tedy původní název algoritmu, než byl přijat za standard pod názvem AES. Než vznikl standard AES, proběhla soutěž o tom, který ze současných dostupných algoritmů se stane standardem. Vyhrál to právě algoritmus Rijdael, který se dostal do první pětice algoritmů, kam patřil také algoritmus RC6, Twofish, MARS a Serpent.
Šifrování AES V případě AES se jedná o blokový symetrický algoritmus, tedy pro zašifrování i dešifrování slouží pouze jeden sdílený klíč. Blokový znamená, že se otevřený text šifruje po blocích pevně dané délky 128 bitů. Každý delší otevřený text se rozdělí do bloků o velikosti 128 bitů. Poslední blok se pak vždy doplní uměle vloženými znaky. Anglicky se této funkci doplnění znaků do velikosti 128 bitů říká „padding“. Bloky se pak dále šifrují za pomocí algoritmů pro šifrování po blocích. Typickým příkladem takových algoritmů je algoritmus ECB a CBC.[8] ECB2 – Tento algoritmus pracuje na jednoduchém principu, kdy se každý blok šifruje pořád stejným klíčem a navíc blok po bloku bez změny pořadí. Z tohoto popisu vyplývá, že tento algoritmus není příliš bezpečný z důvodu používání u všech bloků stejného schématu zašifrování. Při dlouhodobém zkoumaní takto zašifrovaných zpráv by se pak jednalo o mnohem snadněji prolomitelnou šifru. Dále při použití útoku „Man in the middle atack“ může útočník bloky vkládat, odstraňovat, ale také měnit. Z toho vyplývá, že algoritmus ECB nezajišťuje integritu zasílaných dat. CBC3 – Algoritmus CBC nám zajišťuje takzvané řetězení šifrovaného textu. Pomocí této funkce nám CBC zabraňuje možnosti útoku uvedenou u algoritmu ECB. Řetězení šifrovaného textu nám ale v tomto případě zajišťuje i integritu zasílaných dat, protože jednotlivé bloky, konkrétně u AES o velikosti 128 bitů se šifrují za pomoci vždy předcházejícího zašifrovaného bloku pomocí funkce XOR. V případě kdy by se všechny bloky řídily tímto pravidlem, tak logicky nastává otázka, čím se tedy šifruje první blok šifry, když mu žádný jiný nepředchází. 2 3
ECB – Electronic CodeBook (elektronický číselník, či také elektronická kniha kódů) CBC – Cipher Block Chaining (řetězení šifrovaných bloků)
22
U algoritmu CBC se první blok šifruje za pomoci náhodně vygenerovaného tzv. nultého bloku, pomocí kterého se první blok dále šifruje. Šifrování AES probíhá ve čtyřech krocích: 1. SubBytes – tento krok spočívá v jednoduché substituci, substituci, kdy se nahrazuje každý byte b e jiným podle daného klíče. Již tento první krok šifrování AES nám zabezpečí šifru před útoky založenými na jednoduchých matematických výpočtech.
Obrázek 3 - SubBytes [zdroj: [ http://en.wikipedia.org/wiki/File:AES SubBytes.svg] http://en.wikipedia.org/wiki/File:AES-SubBytes.svg SubBytes.svg
2. ShiftRows – u tohoto kroku se neděje neděje nic jiného než jednoduché zzpřeházení přeházení bytů podle obrázku 4.
Obrázek 4 - ShiftRows [zdroj: [ http://commons.wikimedia.org/wiki/File:AES http://commons.wikimedia.org/wiki/File:AES-ShiftRows.png ShiftRows.png]
23
3. MixColumns – zde se prohazují jednotlivé sloupce a také dochází k vynásobení každého sloupce stejným polynomem c(x), jak vidíme na obrázku 5.
Obrázek 5 – MixColumns [zdroj: [ http://en.wikipedia.org/wiki/File:AES MixColumns.svg] http://en.wikipedia.org/wiki/File:AES-MixColumns.svg MixColumns.svg
4. AddRoundKey – Jak vidíme na obrázku, obrázku, je každý byte byt zkombinovaný se subklíčem, který je vytvořen z původního klíče a mechanizmu řetězení ře z minulých bloků, jak je popsáno výše.
Obrázek 6 - AddRoundKey [zdroj: http://en.wikipedia.org/wiki/File:AES-AddRoundKey.svg http://en.wikipedia.org/wiki/File:AES AddRoundKey.svg] AddRoundKey.svg
24
Použití šifry AES Dnes je algoritmus AES asi nejvíce rozšířený standard pro symetrickou blokovou kryptografii, proto s největší pravděpodobností všude, kde je aplikována symetrická bloková kryptografie, tam je použit i standard AES. Dnes asi nejčastějším používáním šifry AES, s kterou jsme přišli skoro všichni do styku, je zabezpečení bezdrátových sítí Wi-Fi, přesněji řečeno u zabezpečení podle protokolu WPA24, kde se právě k zašifrování bezdrátové sítě využívá standardu AES. Standardu AES používáme dále i ve většině bezdrátových a komunikačních technologiích. Dále se s ním můžeme setkat jako součást Microsoft.Net Framework a také je dostupný pro všechny programátory a to ve většině programovacích jazycích např. v Javě, C++, assembleru, Visual Basicu. Delphi 5.0, Perlu, ale také jako modul pro MATLAB.[4]
2.3.1.2. DES (Data Encryption Standard) DES (Data Encryption Standard), byl prvním veřejným standardem v historii, který byl přijat za standard v roce 1977 v USA. Jak už jsem uvedl, jedná se o předchůdce AES. Přesněji řečeno AES vznikl až na základě poptávky po bezpečnějším systému než byl v té době DES, který byl už prolomen za použití značného IT výkonu a času. DES využívá k zašifrování délku bloků 64 bitů a velikost klíče také 64 bitů, z těchto bitů je ale 8 kontrolních a proto šifrování probíhá za pomocí 56 bitů. Dnes je již možné šifru DES prolomit za méně než 24 hodin. Příznivci algoritmu DES pro záchranu tohoto šifrovacího standardu vymysleli modifikaci tohoto standardu pod názvem TripleDES nebo také 3TDES. Tento algoritmus není nic jiného než trojnásobné použití šifry DES, což má za následek trojnásobení klíče DES na 168 bitů. Tato šifra je ale daleko pomalejší než dnešní standard AES a proto je otázkou času než se přestane také používat.
Šifrování DES Šifrování u algoritmu DES je prováděno po blocích za pomocí tzv. rund. Respektive šifrování probíhá v 16 krocích, tzv. rundách. Při šifrování používá DES permutací a dalších
4
WPA2 – Wi-Fi Protected Access 2 (chráněný přístup k wifi)
25
mechanismů. Jak již bylo uvedeno, algoritmus DES využívá 3 druhy permutací pro své šifrování. A jsou to, jak vidíme na obrázku 7, permutace přímá, rozšířená a výběrová.
Obrázek 7 - Typy permutací DES [zdroj: http://kmd.fp.tul.cz/old/lide/mlynek/ZOI/DESalgoritmus%5B1%5D.pdf]
Dále bych zde také rád uvedl použití režimů pro blokové šifry. Jednotlivé režimy DES se nazývají podle použití jednotlivých blokových algoritmů, které jsme si již popisovali výše. Pro názorné použití těchto blokových algoritmů, celkově ale také u standardu DES přikládám obrázek 8, na kterém je znázorněno šifrování algoritmu DES při použití režimu ECB. Metoda DES má samozřejmě mnohem složitější postup šifrování, který zde více rozebírat nebudu z důvodu již skoro nepoužívaného standardu.
26
Obrázek 8 - DES režim ECB [zdroj: roj: http://kmd.fp.tul.cz/old/lide/mlynek/ZOI/DESalgoritmus%5B1%5D.pdf http://kmd.fp.tul.cz/old/lide/mlynek/ZOI/DESalgoritmus%5B1%5D.pdf]
Použití šifry DES Dnes se již tato šifra nepoužívá. Od roku 1999 bylo dokonce zásadně doporučováno tuto šifru nepoužívat z důvodu rozluštění. Šifra byla oficiálně zrušena jako standard dne 25.5.2005.. Dnes existuje existuje mnoho programů, programů které teré dokážou tuto šifru rozluštit v určitém čase závislém na výpočetním výkonu. Dodnes se můžeme setkat s používáním nějaké modifikace DES jako je např. TripleDES. S tímto systémem se dodnes můžeme setkat v bankovnictví, například u čipových karet, konkrétně u systému EMV. Tento systém je mnohem be bezpečnější zpečnější než dříve hojně používané platební karty s magnetickým proužkem.[5] proužkem.[5]
2.3.1.3. TripleDES (Triple Data Encryption Standard) TripleDES algoritmus je nástupcem DES, jak je již patrné z názvu obou obou algoritmů. TripleDES vznikl, aby odstranil jednu velkou nevýhodu klasického DES algoritmu a to v dnešní době vznikl, použití již malé délky klíče, která je u DES standardu pouhých 64 bitů. Respektive pouze 56 bitů, protože u DES standardu se používá 8 bitů jako kontrolních. Už z názvu tohoto tohoto algoritmu lze mnohé odvodit, jak už jsem uvedl, uvedl první věc je, že se jedná o nástupce standardu DES a druhá věc je trojka v názvu tohoto algoritmu, proto se někdy můžeme můžeme setkat i s označením 3DES. Trojka Trojka se uvádí v názvu tohoto algoritmu proto, že se pro větší bezpečnost aplikuje DES standard třikrát za sebou. Pro bližší představu o šifrování systému 27
DES, kde se používají tři klíče k zašifrování, neboli jeden klíč o velikosti 168 bitů, který je složen ze třech klíčů, klíčů přikládám obrázek 10. Z toho se dá také také logicky odvodit délka klíče u tohoto algoritmu, která se dá vypočítat jako třikrát délka klíče u DES. Délka klíče u TripleDES algoritmu tedy dělá 168 bitů. Tento algoritmus je oproti standardu DES mnohem bezpečnější, avšak k masivnímu používání nedošlo, nedošlo, kvůli existenci standardu AES, který je mnohem rychlejší a méně náročný na IT výkon. S použitím tohoto systé systému mu se dodnes můžeme setkat např. u platebních karet, které které jsou již založené na vloženém čipu a konkrétně systému EMV5.[5 [5]
Obrázek 9 - TripleDES šifrování [zdroj: zdroj: http://kmd.fp.tul.cz/old/lide/mlynek/ZOI/DESalgoritmus%5B1%5D.pdf http://kmd.fp.tul.cz/old/lide/mlynek/ZOI/DESalgoritmus%5B1%5D.pdf]
2.3.1.4. IDEA (International International Data Encryption Algorithm Algorithm) IDEA je symetrická bloková šifra, která vznikla v roce 1991 a jejími autory jsou X. Lai a J. Massey. ssey. Algoritmus IDEA vznikl jako náhrada za standard PES, který vznikl v roce 1990. PES byl navržen jako náhrada za algoritmus DES, o kterém se již vědělo, že není možné dlouhodobě zabezpečit jeho bezpečnost. bezpečnost. IDEA algoritmus nebyl dodnes dodnes prolomen a kolem roku 1996 byl prohlášen za nejlepší a nejbezpečnější šifrovací algoritmus, který byl k dispozici široké veřejnosti. Algoritmus IDEA má patentována firma MediaCrypt, proto používání tohoto algoritmu není tolik rozšířené. Šifrování u tohoto algoritmu probíhá také po 5
EMV – Europay, MasterCard, Visa
28
64 bitových blocích a k šifrování se používá šifrovací klíč o velikosti 128 bitů. Následné šifrování pak opět jako u DES probíhá v rundách, tedy v kolech, kde v každém kole se šifrování periodicky opakuje. Systém IDEA, jak už bylo uvedeno, nebyl dodnes prolomen a i v dnešní době se považuje za velmi bezpečný systém.
Použití IDEA Používání tohoto systému by byla mnohem více rozšířena, kdyby byla přístupná veřejnosti a nebyla patentována. I přesto, že byl tento algoritmus patentován, se algoritmus IDEA rozšířil a to hlavně díky své rychlosti při šifrování a následném dešifrování, ale také kvůli velmi vysoké úrovni bezpečnosti tohoto algoritmu. Dodnes se můžeme s tímto algoritmem setkat v rámci protokolu SSL6 nebo také jako součást PGP.[6]
2.3.1.5. RCx RCx nebo také Rivest Cipher, kde číslo znamená verzi tohoto algoritmu. Tvůrcem tohoto algoritmu je Ronald Rivest. Jednou z nejpoužívanějších šifer pro proudové šifry je RC4. RC4 má délku klíče 256 bytů, tedy 2048 bitů. Pro lepší funkčnost je lepší zarovnávat klíč na velikost zakončenou po celých bytech. V praxi se ale tak velký klíč většinou nepoužívá z důvodu delšího zpracování. Princip klíče spočívá v míchání jednotlivých bytů klíče, spojené s permutací klíče. RC4 byla hojně používaná a i dodnes se s ní můžeme setkat např. v SSL 3.0, Microsoft Office, Oracle Secure SQL či Microsoft Windows 2000. Další z řady algoritmů Ronalda Rivesta je Rivest Cipher 5, tedy RC5. Tento algoritmus vzniknul v roce 1994. Ronald Rivest v tomto algoritmu přišel s novou myšlenkou v kryptografii celkově. Algoritmus RC5 používá šifrovacího klíče o stejné délky jako RC4 a to až do velikosti 255 bytů. Tento algoritmus využívá rotace, které jsou závislé na datech. Tento mechanismus dělá z RC5 poměrně pružný algoritmus s velkým množstvím dalších parametrů. Poslední z řady RCx protokolů je verze RC6, která už přináší pouze vylepšení k verzi RC5 a to například přidáním některých funkcí jako jsou celočíselné násobení v klíči nebo také použití čtyř pracovních registrů namísto dvou, jak bylo použito u předcházející verze. Verze RC6 vznikla speciálně pro soutěž o AES, kde se dostala do užšího výběru, 6
SSL – Secure Sockets Layer (vrstva bezpečných socketů)
29
konkrétně mezi 5 nejlepších při výběru standardu organizací NIST v roce 2002, který nakonec vyhrál algoritmus Rijdael.
Použití RCx Jak už bylo uvedeno, RC4 je symetrická proudová šifra, se kterou se můžeme setkat dodnes v mnoha systémech, jako jsou SSL 3.0 nebo Microsoft office či SQL. Algoritmy RC5 a RC6 jsou již patentovány firmou RSA Laboratories. A i dnes se považují tyto dva algoritmy za velmi bezpečné a neprolomené.[7]
2.3.1.6. CAST (Carlisle Adams a Stafford Taverns) CAST je další z řady symetrických blokových algoritmů, které vznikly jako následek již nedostačujícího kryptografického systému DES. V té době okolo roku 1996 zde byly i jiné šifrovací algoritmy, ale všechny kvalitnější byly patentovány a tedy pro nekomerční užití skoro nepoužitelné z důvodu vysoké ceny. V této době přišla kanadská společnost Entrust Technologies s nápadem přinést takový šifrovací algoritmus který by byl dostupný pro širokou veřejnost a byl by poskytován zdarma pro komerční i soukromé účely. Proto sponzorovalo vývoj nového algoritmu, který byl pojmenovaný podle iniciál jeho tvůrců a to C. Adamsovi a S. Tavaresovi. Tento algoritmus byl v roce 1997 publikován na internetu pod označením RFC2144. V mnoha směrech je CAST podobný algoritmu DES. I základní mechanismus je velmi podobný a to, že je založen na opakujících se rundách, ve kterých probíhá šifrování. Oproti algoritmu DES je ale CAST nesrovnatelně kvalitnější a bezpečnější algoritmus. Ale i přes velkou podobnost s algoritmem DES si získal CAST velkou důvěru. Přispělo k tomu i zveřejnění všech kryptografických podrobností týkající se tohoto algoritmu. CAST využívá léty vyzkoušený systém používaný v DES, ke kterému přidal své vlastní navazující kryptografické
operace,
které
z tohoto
algoritmu
kryptografický systém.
30
udělaly
dodnes
neprolomitelný
Použití CAST Dnes se již standard CAST u široké veřejnosti tolik nevyužívá, jako tomu bylo přibližně na konci 20. Století. Jak už bylo uvedeno, CAST algoritmus vznikl na základě již nedostačujícího algoritmu DES a dával si za úkol nahradit tento algoritmus za bezpečný a spolehlivý a který by byl pro širokou veřejnost zdarma. Toto se mu podařilo, a proto byl velmi oblíbený ovšem až do doby, kdy byl vybrán nový šifrovací standard AES, který ho v mnoha směrech předběhl.[8]
2.3.1.7. Blowfish Šifra Blowfish, byla poprvé publikována v roce 1993 a jejím autorem je Bruce Schneier. Tato šifra je tzv. předchůdce šifry Twofish, kterou si více probereme dále. Jedná se o další ze skupiny blokových symetrických šifer, které jsou volně šiřitelné a bez jakéhokoliv patentu. Bloky jsou o velikosti 64 bitů a maximální délka klíče je 448 bitů. Šifra Blowfish se i přes stáří šifry řadí na přední pozice, co se týče rychlosti šifrovacích algoritmů. Tak jako spousta ostatních šifer i tato šifra vznikla jako náhrada za tehdejší standard DES. Šifrování dat probíhá opět v tzv. rundách a u tohoto algoritmu konkrétně v 16 rundách. Šifra používá pouze dvě matematické operace a to sčítání a funkci XOR, pomocí kterých je tato šifra opravdu rychlá. Blowfish používá stejnou metodu pro šifrování i dešifrování, respektive dešifrování přesně opačně.
Použití Blowfish Jak už jsem uvedl, šifra Blowfish je jedna z nejrychlejších šifer vůbec a když přidáme volné používání, tak tato šifra nalézá opravdu široké využití. Tato šifra je vhodná k použití i na starší výpočetní technice, díky své malé náročnosti. Ve veké míře je tato bloková šifra používaná pro šifrování dokumentů na CD, USB Flash discích atd. Ale tohoto algoritmu je využito i v některých síťových protokolech jako jsou Free Telnet/SSH Client.[9]
31
2.3.1.8. Twofish Šifra Twofish je jedna z dalších šifer, které se snažily vyhrát soutěž o nový šifrovací standard, který byl vyhlášen společností NIST. I tato šifra se dostala mezi 5 nejlepších, ale bohužel nakonec nebyla vybrána. Jedná se o další z blokových šifer a je velmi podobná šifře Blowfish, z které tato šifra vychází a je uzpůsobena, aby dokázala splnit požadavky, které se kladly na šifry, které soutěžily o nový standard AES. Jedná se o šifru založenou na šifře Blowfish a proto je také tato šifra založena na šifrování v rundách. Konkrétně u této šifry se jedná o šifrování v 16 rundách. Délka klíče u této šifry je 128, 192 anebo 256 bitů. Na rozdíl od šifry Blowfish je možnost nadefinování spousty možných aspektů šifrování, které pomáhají šifru přizpůsobit k více účelům.
Použití Twofish Díky své rychlosti a bezpečnému šifrování, tak jako je tomu u předchůdce tohoto algoritmu šifře Blowfish, byla tato šifra velmi oblíbená. A i dodnes se s touto šifrou můžeme setkat u systémů, kde požadujeme velmi rychlé šifrování či dešifrování určitých dat. Díky tomu, že šifra vychází z koncepce blowfish, je i tato šifra vhodná na šifrování a následné dešifrování větších objemů dat díky své velké rychlosti šifrování. Proto se s touto šifrou můžeme setkat u systémů, které nám šifrují obsahy CD/DVD, popřípadě všechny druhy různých disků.[10]
2.3.1.9. Serpent Algoritmus Serpent byl navržen třemi autory, kterými jsou Ross Anderson, Lars Knudsen a Eli Bilham, který je také objevitel diferenciální kryptoanalýzy. Tento algoritmus byl navržen pro co nejvyšší bezpečnost, proto je možné ho využívat dodnes a je stále odolný proti všem dnes známým útokům. Pro šifrování používá až 32 rund, což z tohoto algoritmu dělá opravdu bezpečnou šifru. Díky své velké bezpečnosti je ale tento algoritmus velmi pomalý. Serpent je odolný proti všem dnes známým útokům již s 16 rundama, proto zvýšení na 32 rund se stává z tohoto algoritmu opravdu velmi silná šifra. Délka bloku u tohoto algoritmu odpovídá 128 bitům a klíč používaný pro šifrování a dešifrování klíče má délku až 256 bitů. Algoritmus Serpent využívá jednu funkci pro šifrování a druhou funkci pro dešifrování. Tyto
32
funkce nemají navzájem příliš společného a proto je kryptoanalýza jednou tak náročná oproti klasickým šifrám.
Použití Serpent Šifra Serpent, jak už jsem uvedl, je jedna z nejbezpečnějších šifer, ale díky své pomalé rychlosti jsou malé možnosti použití. Z tohoto důvodu je vhodné použít tuto šifru při zašifrování menšího objemu dat. Z toho vyplívají možnosti použití této šifry u čipových karet a dalších zařízeních do kterých se šifruje pouze malé množství dat.[11]
2.3.2. Asymetrická kryptografie 2.3.2.1. RSA (Rivest-Shamir-Adelman) Algoritmus RSA je jeden z nejvíce používaných a nejznámějších asymetrický algoritmů dnešní doby. Jeho název je složen z iniciálů třech autorů, kterými jsou Ron Rivest, Adi Shamir a Len Adleman. Tento algoritmus byl prvně popsán v roce 1977 a jedná se o první algoritmus, který je určený pro podepisování ale i šifrování zprávy. V případě použití dostatečně dlouhého klíče u tohoto algoritmu je považován stále za velmi bezpečný algoritmus. První zmínky o tomto algoritmu sahají až k roku 1973, kdy podobný systém popisoval britský matematik Clifford Cocks.
Bohužel jeho výzkum nebyl až do roku 1997
prozrazen z důvodu označení tohoto výzkumu jako přísně tajné. Algoritmus RSA byl v roce 1983 patentován a tento patent vypršel v roce 2000. Princip bezpečnosti algoritmu RSA spočívá v nemožnosti zjistit z určitého čísla součin jeho prvočísel. Této metodě říkáme faktorizace a je velmi obtížná a při použití velkých prvočísel v reálném čase dodnes nemožná. Jak už jsem uvedl, bezpečnost algoritmu RSA je založená na matematickém problému faktorizace velmi vysokých čísel, ale také na RSA problému. Proto plné dešifrování RSA šifrovaného textu je obtížné. RSA problém se definuje jako získávání kořenu modulu u množiny n a obnovení hodnoty m. Tento popis můžeme shrnout do výrazu ma=c mod n, kde písmena (a,n) znamenají veřejné klíče a c je šifrovaný text RSA algoritmu.
33
Šifrování RSA Jak jsem již uvedl, algoritmus RSA je stále bezpečný, ale musí být použit dostatečně dlouhý klíč, který zabrání potenciálnímu útočníkovi rozluštit RSA šifru. Dnes je považován za bezpečný klíč o délce 2048 bitů a vyšší. Menší klíče za použití dostatečného výpočetního výkonu jsou potenciálně nebezpečné. Pro šifrování zprávy je použit matematický problém rozkladu velkého čísla na součin dvou prvočísel ale také RSA problém, o kterém jsem se zmínil v předcházejí kapitole. Šifrování RSA si můžeme popsat ve třech zjednodušených základních krocích.
Konstrukce šifrování RSA 1) Zvolíme náhodně dvě velká prvočísla například (p,q) a vypočteme jejich součin kdy m = p * q. V praxi aby algoritmus byl dostatečně silný musíme zvolit tato prvočísla tak, aby byla více jak 100-ciferná. 2) Dále si zvolíme další dvě přirozená čísla například (i,j) tak, aby platil následující výraz (i * j) mod [(p – 1) * (q – 1)] = 1. 3) Nyní máme připravené klíče a můžeme začít se šifrováním. Veřejný klíč v tomto případě nám tvoří písmena (m,i), další písmena by měla zůstat v utajení, kdy písmeno j nám tvoří soukromý klíč, za pomocí kterého jsme schopni rozšifrovat zprávu zašifrovanou veřejným klíčem.
RSA – Digitální podpis Algoritmus RSA se také používá pro digitální podpis tvůrce zprávy, který nám zajišťuje autentizaci daného dokumentu. Princip digitálního podpisu zprávy za pomocí RSA algoritmu spočívá ve využití obrácené logiky používání šifry RSA. Podepisování určitého dokumentu se pak provádí vytvořením hashe dokumentu, který pak následně odesílatel zašifruje svým soukromým klíčem. Příjemce si pak již snadno následně může ověřit, zda to opravdu odeslal daný odesílatel a to za pomocí veřejného klíče odesílatele, protože soukromý klíč vlastní pouze skutečný příjemce. Digitální podpis nám nezajišťuje pouze autentizaci odesílatele, ale také integritu zasílaných dat. V případě kdy celý dokument ještě zašifrujeme za pomocí 34
veřejného klíče odesílatele, máme jistotu, že zašifrovanou zprávu dešifruje pouze příjemce. Princip podepisování zprávy je blíže znázorněn na obrázku 10 a ověřování na obrázku 11.
Obrázek 10 - Podepisování zprávy [zdroj: http://www.svetsiti.cz/clanek.asp?cid=Pravdy-o-elektronickempodpisu-a-sifrovani-3-digitalni-podpis--duveryhodna-komunikace-1952003]
Obrázek 11 - Ověřování zprávy [zdroj: http://www.svetsiti.cz/clanek.asp?cid=Pravdy-o-elektronickempodpisu-a-sifrovani-3-digitalni-podpis--duveryhodna-komunikace-1952003]
Použití RSA Algoritmus RSA je jedním z nejvíce rozšířených a používaných asymetrických algoritmů vůbec a proto jeho použití můžeme najít zaimplementované do nejrůznějších dnes používaných systémů. Šifra RSA, ale nedokáže nahradit symetrické šifrování z důvodu velké 35
náročnosti na výpočty. Proto se RSA šifra nejčastěji používá ve spojení se standardem AES, který nám zašifruje dokument nebo případně nějaká jiná data. A algoritmem RSA dále řešíme pouze problém přenosu symetrického sdíleného klíče. Dále se šifra používá v systémech pro digitální podpis. Mnohé články v poslední době poukazují na slabé zabezpečení v případě nástupu kvantových počítačů. Tato tvrzení jsou samozřejmě pravdivá z důvodu, že kvantové počítače o vysokém výpočetním výkonu jsou schopny hrubou silou vyzkoušet všechny možné možnosti, které jsou potřebné pro dešifrování součinu dvou velkých prvočísel. Na obranu algoritmu RSA je potřeba uvést skutečnost, že kvantové počítače v nejbližších letech na trh nepřijdou, protože sestavení takového počítače je stále otázka roků, možná i desetiletí.[12]
Praktický příklad RSA Na tomto praktickém příkladu si ukážeme, jak probíhá algoritmus RSA od výpočtů klíčů až k výměně a následného zašifrování veřejným klíčem a dešifrování soukromým klíčem. Pro praktickou ukázku jsem si vybral čísla velmi malá a v reálném šifrování nepoužitelná z důvodu bezpečnosti. V praxi pro dodržení bezpečnosti šifry se využívají čísla více jak stociferná. Jako demonstranti v příkladu poslouží jména Alice, Bob. Alice je příjemce zašifrované zprávy a její veřejný klíč je dostupný všem. Bob potom představuje odesílatele zprávy, který kvůli bezpečnosti musí zprávu zašifrovat veřejným klíčem Alice. V případě takto zašifrované zprávy není možné rozšifrovat zprávu nikým jiným než Alicí, která jako jediná zná svůj soukromý klíč. Čísla užité v závorkách za jednotlivými body znamenají mnou vybrané náhodné čísla, které nám představují výpočetní část příkladu. Dále budeme pro výpočet potřebovat Eulorovu funkci, kterou v matematice značíme jako φ(n). Kdy n nám představuje hodnotu celých kladných čísel, které jsou nižší než n a jsou s n nesoudělná. Tedy platí, že φ(1)=1. Vytvoření klíčů V prvním kroku si nejdříve Alice musí vytvořit klíčový pár, který probíhá v následujících 5 krocích: 1. Alice si zvolí náhodně dvě velká prvočísla p a q.
(7,11).
2. Dále vypočítá jejich součin tedy n = pq.
(n=77)
36
3. Spočítá hodnotu Eulerovy funkce φ(n) = (p – 1)(q – 1).
(φ(n) = 60)
4. Následně si zvolí celé číslo e tak, aby bylo menší než φ(n) a platilo, že je s φ(n) nesoudělné.
(e=13)
5. Zbývá dopočítat číslo d, které zjistím dosazením do vzorce kdy de=1(mod φ(n)) (d=97) Nyní již máme hotovou dvojici klíčového páru, v které nám veřejný klíč tvoří dvojice (n, e) a soukromý klíč (n, d). V praxi se používají ještě různé úpravy formy těchto klíčů, které umožňují následné rychlejší zpracování. Zašifrování zprávy V dalším kroku již přecházíme k zašifrování zprávy, aby bylo možné ji bezpečně dopravit od Boba k Alici. Bob má otevřený text m, který chce zaslat Alici, m=30. Nyní musí Bob zprávu zašifrovat veřejným klíčem Alice tedy dvojicí n, e. Výsledný šifrovací text označujeme v tomto případě jako c. 1. Pro výpočet zašifrovaného textu c slouží vzorec c = me (mod n). 2. Protože je velmi složité vypočítat tento vzorec i při použití malých čísel běžným způsobem postupujeme následovně, pomocí rozložení mocnitele. c = me (mod n) c = 3013 (mod 77) 301 =
30 (mod 77)
302 = 900 =
53 (mod 77)
304 = 532 = 2809 =
37 (mod 77)
308 = 372 = 1369 =
60 (mod 77)
37
Nyní již můžeme pokračovat ve výpočtu šifrovaného textu standardním způsobem kdy tedy c = 3013 (mod 77) si poskládáme s předem vypočtených mocnitelů. c = 3013 = 308 + 4 + 1 = 308 * 304 * 301 = 60 * 37 * 30 = 66600 (mod 77) = 72. Šifrovaný text je tedy c = 72. Dešifrování zprávy Alice po příjmu zašifrované zprávy použije svůj soukromý klíč k dešifrování. 1. Otevřený text získáme dosazením soukromého klíče do vzorce m = cd (mod n) 2. Následný výpočet je založen na převráceném principu zašifrování, proto musíme postupovat stejným způsobem jako při šifrování. m = cd (mod n) m = 7297 (mod 77) 721 =
72 (mod 77)
722 = 5184 =
25 (mod 77)
724 = 252 = 625 =
9 (mod 77)
728 = 92 = 81 =
4 (mod 77)
7216 = 42 = 16 =
16 (mod 77)
7232 = 162 = 256 =
25 (mod 77)
7264 = 252 = 625 =
9 (mod 77)
Dále pokračujeme opět výběrem mocnitelů, které nám dají dohromady součet 97, a posledním výpočtem zjistíme výsledný otevřený text. m = 7297 = 7264 + 32 + 1 = 7264 * 7232 * 721 = 9 * 25 * 72 = 16200 (mod 77) = 30. Dešifrovaný text je tedy m = 30. 38
Výsledný dešifrovaný text tedy souhlasí s otevřeným textem, který Bob zašifroval veřejným klíčem Alice. V případě odposlechu linky, po které byla zašifrovaná zpráva zasílaná, není možné, aby útočník zjistil otevřený text zprávy, bez znalosti soukromého klíče Alice.[12]
2.3.2.2. Diffie-Hellman Diffie-Hellmanův protokol je jeden z prvních asymetrických protokolů vůbec, vzniknul již v roce 1976 a hlavními autory tohoto algoritmu jsou Whitfield Diffie a Martin Hellman. Tento protokol je jeden z mnoha, který využívá ke svým výpočtům diskrétní algoritmus. Dnes již existuje spousta známých modifikací tohoto protokolu. Podrobnější informace o tomto protokolu jsou sepsány v další kapitole, která se věnuje právě problému diskrétního algoritmu.
2.3.2.3. DSA (Digital Signature Algorithm) Algoritmus DSA neboli Digital Signature Algorithm, je dalším asymetrickou šifrou, která je založena na problému diskrétního logaritmu. Tato šifra vychází z El-Gamalova algoritmu, který již nebyl nadále vhodný pro podepisování zpráv. Pro podepisování zpráv využívá tato šifra hashovací funkci SHA-1 a nyní už i SHA-2. Další informace nalezneme v kapitole, která následuje a je zaměřená právě na problém diskrétního logaritmu.
2.3.2.4. El-Gamal El-Gamalův algoritmus je založen také na problému diskrétního logaritmu a proto se tomuto algoritmu opět více věnuji v další kapitole. Jedná se o asymetrický kryptografický logaritmus, který byl vytvořen v roce 1985 a jeho autorem je Taher ElGamal, po kterém se také jmenuje. Tento algoritmus vznikl oproti jeho předchůdcům mnohem déle a proto nebyl nikdy masivně využíván. Dnes se již s tímto algoritmem nesetkáme z důvodu malé bezpečnosti, ale můžeme se setkat s nějakými algoritmy pro podepisování zpráv, které jsou stále založené na tomto algoritmu, například DSA a ECDSA.
2.3.2.5. ECC (Elliptic Curve Cryptosystem) Zkratka ECC nám v kryptografii udává systémy, které jsou založené na eliptických křivkách. Také se můžeme setkat s pojmy jako jsou eliptická kryptografie či kryptosystém. První 39
zmínka o eliptických křivkách sahá až do 19. století. Ale až v roce 1985 si V. Miller a N. Koblitz všimli, že by se tento systém zabývající se eliptickými křivkami mohl použít jako nový kryptosystém s veřejným klíčem. V dnešní době je tento systém již považován za jednoho z konkurentů pro dříve zmiňované šifry, jako jsou RSA, D-H nebo DSA. V mnoha ohledech tento systém dokonce svoje konkurenty převyšuje například porovnáním cena/výkon. Dále tento systém umožňuje šifrování oproti těmto šifrám s podstatně kratšími délkami klíče za dodržení stejné bezpečnosti šifry. Případné srovnání šifry ECC se šiframi AES a RSA je teoreticky možné i přes rozdílné bezpečnostní záruky jednotlivých šifer, které jsou založeny na odlišných matematických základech. Americký standard NIST vydal orientační tabulku, která srovnává bezpečnost délky klíčů jednotlivých druhů šifer založených na jiných bezpečnostních základech. ECC jsou ale pořád mnohem méně rozšířené než již uváděné konkurenční šifry, které byli známé a používané mnohem dříve. Zejména šifra RSA byla vyvinuta mnohem dříve a bylo již pro ní vybudováno spoustu standardů a byla zaimplementována do spousty aplikačních systémů, ve kterých se používá dodnes. Proto se s těmito standardy založenými na ECC tolik nesetkáváme. Se standardy ECC se můžeme setkat tedy v nově vznikajících projektech či produktech jako například bezkontaktní čipové karty.
Použití ECC Jak jsem již uváděl, šifrovací systém ECC je poměrně nový systém, který ještě není tak rozšířen jako jeho konkurenti, kteří jsou zaimplementováni do mnoha dnes používaných systémů. Hlavní využití nalézá ECC tedy v nově vznikajících systémech a v systémech kde je potřeba co nejmenší délka klíče. Pro svoji menší náročnost nalézá uplatnění například u čipových karet a to včetně bezkontaktních. Dále se můžeme setkat s implementovaným systémem ECC v prostředí mobilních telefonů a dalších mobilních zařízeních. Dále se s tímto systémem můžeme setkat u tenkých klientů, anebo u dnes velmi kvalitního a bezpečného protokolu WTLS7.[13]
7
WTLS – Wireless Transport Layer Security (bezdrátová vrstva bezpečného spojení)
40
2.3.2.6. ECDSA (Elliptic Curve Digital Signature Algorithm) Algoritmus ECDSA je kombinace, jak z názvu vyplývá, dvou šifer a to algoritmu DSA, který je v tomto případě zkombinován s použitím eliptických křivek. Hlavní rozdíl tedy mezi algoritmem DSA a ECDSA je, že první uvedený je založen na matematickém principu založeném na diskrétním logaritmu a druhý na principu eliptických křivek. Nyní stále převažuje použití algoritmu DSA, který je v dnešní době stále bezpečný, ale v případě kdy by začaly existovat jakékoliv pochybnosti tohoto systému, je možné přejít na bezpečnější variantu ECDSA. Nyní se již do všech nových systémů většinou implementuje rovnou bezpečnější protokol ECDSA. Na tento systém se přechází i v případech kdy je zapotřebí co nejmenší výpočetní náročnosti, protože tento systém v případě porovnání se systémem DSA je stejně bezpečný i v případě použití kratšího šifrovacího klíče. V případě špatné implementace, by mohla být považována tato šifra v některých případech za nebezpečnou.
Použití ECDSA Algoritmus ECDSA se používá zejména pro digitální podpis, kde zaznamenává právem velké úspěchy. Na území USA byly algoritmy DSA a ECDSA dokonce schváleny standardem pro použití ve vládních institucí. Toto právo pro představu neměl v té době ani dodnes nejpoužívanější asymetrický algoritmus RSA, který toto právo získal až v roce 2000, kdy se tyto rozdíly mezi algoritmy RSA a DSA či ECDSA srovnaly.[14]
2.3.3. Hybridní kryptografie Základním
principem
hybridní
kryptografie
je
spojení
symetrického
šifrování
s asymetrickým. Výhoda tohoto spojení spočívá v kombinaci výhod obou dvou typů šifrování. Mezi výhody symetrického šifrování patří větší bezpečnost šifer a menší výpočetní náročnost, naproti tomu má jednu velkou nevýhodu a to přenos klíče. Asymetrické šifrování tuto nevýhodu odstraňuje, ale na úkor nižších rychlostí výpočtů šifry a potřebného většího výpočetního výkonu. V případě kdy potřebujeme spojit obě dvě výhody těchto systémů, můžeme využít právě hybridní kryptografie, který nám staví do popředí výhody a zároveň odstraňuje nevýhody obou systémů. Hybridní kryptografie používá asymetrické šifrování pouze pro přenos klíče a pro samotné šifrování je použita symetrická kryptografie.
41
2.3.3.1. PGP (Pretty Good Privacy) Původní systém PGP, vytvořil Phil Zimmermann na konci 80. let minulého století. V této době sloužil PGP jako počítačový program pro šifrování. Dnes už existuje mnoho různých verzí odvozených právě od PGP. PGP v té době slavilo velké úspěchy, a proto bylo standardizováno, zejména aby se umožnila spolupráce mezi různými verzemi. Tento internetový šifrovací standard byl vydán pod názvem OpenPGP. Jak už zařazení standardu PGP napovídá, jedná se o hybridní šifru, která využívá dvouvrstvou hierarchii klíčů, ve které se využívá symetrický klíč pro zabezpečení dat a asymetrický klíč k podepisování a šifrování symetrických klíčů, které byli použity pro šifrování zpráv. V roce 1991 došlo ke zveřejnění PGP a autor Phil Zimmermann se dostal do sporů s vládou USA. Tento spor se vedl kvůli údajnému nezákonnému vývozu kryptografie a také s držiteli různých patentů. Ke konečnému ukončení sporů došlo až v roce 1997. Dnes je již základní verze programu PGP ve formě freewaru. Princip šifrování probíhá, jak už jsem uvedl, pomocí kombinace dvou různých druhů šifer, které se v jednotlivých verzích systémů PGP různí. Dřívější verze systému PGP obsahovala implementaci symetrické šifry IDEA a asymetrické šifry RSA. Novější verze již obsahovaly asymetrickou šifru Diffie-Hellman v kombinaci s El Gamal, které jsou založeny na principu diskrétního logaritmu a symetrickou šifru CAST.
Použití PGP Použití PGP je velmi různorodé, a používá se opravdu ve velkém množství systémů, dokonce bývá jako součást některých nových počítačů. Příkladem různorodosti tohoto systému je použití pro zabezpečení elektronické pošty, ale také pro šifrování uložených dat až přes ověření certifikační autority, které systém PGP řeší svým vlastním principem ověřování veřejných klíčů pomocí tzv. sítě důvěry.[1]
2.3.4. Kvantová kryptografie Rozvoj a vývoj kvantové kryptografie se zaznamenal od doby, kdy se prokázalo, že některé kryptografické algoritmy založené na matematickém principu, zejména na principu faktorizačních úloh bude možné prolomit s příchodem kvantových počítačů. Od té doby se začali hledat alternativy zabezpečení a řešení se nalézá právě v kvantové kryptografii. Princip
42
kvantové kryptografie není již založen na matematice, ale na fyzikálních jevech, o kterých víme, že nemohou nastat. Tyto fyzikální děje nám tedy na první pohled nabízejí mnohem větší bezpečnost než klasické matematické principy používané v dnešní kryptografii. Na druhou stranu musíme být při používání fyzikálních jevů velmi obezřetní a rozlišovat děje, které nemohou nikdy nastat od dějů, které v dnešní době nejsme schopni technologicky realizovat. A právě v oddělení těchto jevů a dalším zpracováním se zabývá obor kvantové kryptografie.
2.3.4.1. Protokol BB84 Jedním z prvních protokolů kvantové kryptografie je BB84, který navrhli v roce 1984 Charles Bennett a Gilles Brassard. Tento protokol je v zásadě založen na dvou kvantových poznatcích. První z nich se zabývá klonováním kvantových stavů a druhý z poznatků se opírá o nemožnosti měření určitých párů veličin současně. Je nutné uvést, že tento protokol nám řeší pouze výměnu klíče a ne samotné šifrování dat, které obstarává již nějaký algoritmus založený na matematickém principu, který není možný prolomit za pomocí kvantových počítačů. Samotný protokol BB84 je založen na principu polarizace fotonů. Princip tedy spočívá v zašifrování kvantových stavů fotonů. Stav fotonu nám v tomto konkrétním případě dává informaci o polarizaci daného fotonu. Pojem polarizované světlo je údaj, který nám neříká nic jiného než, že se jedná o světlo, u kterého vektor elektrického pole kmitá stále ve stejném směru. Na vysílací straně tedy musí být zdroj lineárně polarizovaných fotonů a mechanizmus pro otáčení směru polarizace, který nám udává polarizaci fotonů podle jednotlivých bitů. Na obrázku 12 jsou znázorněny dvě polarizační báze, kde x a x‘ nám představuje jedničky a y,y‘ nám představují nuly. Zároveň je zde znázorněna výsledná stavová tabulka.
43
Obrázek 12 - Stavy fotonů [zdroj: zdroj: http://muj.optol.cz/dusek/clanky/krypto.pdf http://muj.optol.cz/dusek/clanky/krypto.pdf]
Dále nám tyto polarizační báze, respektive respektive jednotlivé fotony, postupují přes médium, které slouží jako komunikační prvek. Na straně příjemce musíme tyto fotony rozdělit podle jednotlivých stavů. Pro rozdělení jednotlivých polarizačních bází nám slouží skleněný hranol nebo také polarizační destička. destička. Princip rozdělení polarizačních bází znázorňuje obrázek 13, kde vidíme, že polarizační hranol nám odděluje od sebe polarizační bázi x a y, tedy stavy 1 a 0.
Obrázek 13 – Polarizační báze [zdroj: [ http://muj.optol.cz/dusek/clanky/krypto.pdf] http://muj.optol.cz/dusek/clanky/krypto.pdf]
K největším výhodám takového přenosového systému patří bezesporu bezpečnost, která je postavena na základech fyziky a není možné ji matematickým způsobem analyzovat. Bezpečnost kvantové kryptografie není zajištěna nemožností odposlechu, aale le okamžité reakci na odposlech komunikačního kanálu. Řešení je snadné, u přenosových kanálů v kvantové kryptografii v případě kdy dojde k odposlechu, odposlechu se výrazně zvýší chybovost, kterou se detekuje neoprávněné odposlouchávání takto zabezpečených kanálů.
44
Použití BB84 Metoda polarizace fotonů, kterou protokol BB84 využívá, je oblíbená a v kvantové kryptografii poměrně často používána. Výhodou je také vysoká úroveň zabezpečení. Ale kvantová kryptografie obecně má také své velké nevýhody, kvůli kterým není stále zdaleka tak rozšířená jako kryptografie založená na matematických principech. První a hlavní nevýhodou je dnes vysoká pořizovací cena této technologie samotné. Za další náklady můžeme považovat cenu za kvalitní přenosovou cestu, která je v dnešní době realizována například pomocí optických vláken. Další z nevýhod, která může souviset s menším používáním kvantové kryptografie je omezující maximální vzdálenosti od odesílatele k příjemci.[15]
2.3.4.2. Protokol E91 Další z metod řešení kvantové kryptografie je protokol E91, který vychází z protokolu BB84, ale pracuje na principu propletenosti fotonů. Tento systém se někdy také označuje jako metoda korelovaných stavů dvojice částic. Zatímco první z protokolů BB84 využívá k přenosu informace jednotlivých bitů pouze jeden foton, protokol E91 zasílá informaci o jednotlivých bitech po dvou fotonech, v tomto případě mluvíme tedy o stavu dvojice. Celý princip komunikace mezi odesílací stranou a přijímací stranou pak funguje podobně. Zdroj fotonů nám vygeneruje dvojice fotonů, jejichž spiny jsou ve stavu superpozice nahoru a dolů, ale zároveň jsou úplně korelované, právě díky popletenosti. V praxi to u takovéto dvojice znamená, v případě kdy bude u jednoho fotonu spin nahoru automaticky u druhého fotonu bude spin dolu a obráceně. Následně je jeden foton z dvojice zaslán straně A a druhý straně B. Pokud strana A provede měření, zaznamená jedničku nebo nulu, tedy stav přenášeného fotonu. Tím získáme jeden bit klíče. Strana B postupuje podle stejného postupu a dostane opačný výsledek. Tímto způsobem je vytvořen a dále vyměněn celý klíč, který je zcela náhodný. Bezpečnost tohoto protokolu je řešena za pomocí kvantové korelace mezi jednotlivými výsledky na straně A a B. V případě měření fotonů po cestě a následného odposlechu zabezpečeného kanálu, dojde k narušení této kvantové korelace a následné detekci odposlechu.
45
Použití E91 Použití u protokolu E91 je podobné jako u protokolu BB84. Žádná z nevýhod není odstraněna a proto ani E91 není tolik rozšířen jako šifry založené na matematickém principu. Stále je tu omezení vzdálenosti bezpečného kanálu a problém s vysokými pořizovacími náklady. Hlavní odlišení od protokolu BB84 spočívá v předpokladu společného zdroje, který bude komunikovat s každou stranou odděleně. Z toho vyplývá, že společný zdroj fotonů nebude ležet ani na jedné straně, ale bude komunikovat odděleně s každou stranou. Tato architektura má velkou výhodu v použití právě jednoho zdroje a neomezeného počtu příjemců, který musí být na tento zabezpečený kanál napojeny v případě potřeby šifrování. Jako centrální zdroj by se dal použít satelit a dále libovolně spojit dvě místa na zemi. Tato realizace přes satelit není stále zatím aplikována, ale jsou velmi velké předpoklady k používání takového spojení, i když dnes se jedná pořád o stádium pokusů.[15]
46
3. Problém diskrétního logaritmu Problém diskrétního logaritmu je jeden z mnoha matematických problémů dnešní doby, který nelze ani v současnosti za použití moderní techniky efektivně vyřešit. Některé z těchto matematických problému jsou v praxi nevyužitelné, ale ostatní nachází dobré uplatnění v některých vědných oborech. Právě problém diskrétního logaritmu nachází vhodné uplatnění v asynchronní kryptografii. Problém diskrétního logaritmu je založen na matematickém postupu, který je snadný provést z jedné strany, ale obráceně je velmi obtížný. Matematický problém diskrétního logaritmu je založen na modulární aritmetice. Konkrétně se ze skupiny modulárních funkcí nejvíce využívá funkce modulo, kterou můžeme v češtině najít také pod označením zbytek po dělení. Jedná se o funkci, která nám zajišťuje početní operaci celočíselného dělení. Například 9 / 4 = 2 se zbytkem 1. Tato rovnice se lze také ale zapsat jako 9 modulo 4 = 1, neboli zkráceně 9 mod 4 = 1. Diskrétní logaritmus je tedy založen na modulární aritmetice a je jednoduché ho spočítat jedním směrem, ale velmi obtížné obráceně. Celý princip diskrétního logaritmu je zobrazen na obrázku 12, kde vidíme, že vypočítat úlohu na obrázku je poměrně snadné, ale obráceně získat z výsledku a ostatních známých hodnot původní exponent je velmi obtížné. Tomuto principu se říká diskrétní logaritmus. Pro bezpečné používání tohoto principu musíme ještě zvážit velikosti známých hodnot, protože platí, čím menší hodnoty čísel si zvolíme, tím je větší šance pro dešifrování šifry. Jak už jsem uvedl, jedná se o matematický problém, k jehož výpočtu nevede žádný dnes známý algoritmus a proto prolomení je možné pouze způsobem vyzkoušení všech možných variant, tedy útokem nazývaném brute-force-atack. Proto právě bezpečnost této šifry stojí na použití dostatečně silných velkých čísel, které se dále používají pro výpočty. V praxi se používají šifry více jak stociferné.
47
Obrázek 14 - Diskrétní logaritmus [zdroj: vlastni]
Na tomto mechanizmu diskrétního logaritmu, kdy je velmi obtížné zjistit původní vstupy funkce, je založeno velké množství šifer, či jednocestných funkcí. Matematického problému diskrétního logaritmu využívají hlavně asymetrické šifry, které používají vstupní hodnoty funkce jako veřejný či soukromý klíč. Pomocí veřejného klíče se již otevřený text snadno zašifruje, ale bez znalosti soukromého klíče a s použitím dostatečně velkých čísel je následně velmi obtížné šifru analyzovat.
Mezi nejznámější asymetrické šifry využívající problému diskrétního logaritmu patří: •
Diffie-Hellman
•
ElGamal
•
DSA
Princip využití problému diskrétního logaritmu v asynchronní kryptografii je založen na velmi obtížném až nemožném výpočtu diskrétního logaritmu.
Matematická podstata diskrétního logaritmu: Podstata celého problému diskrétního logaritmu vychází z definice logaritmu y=loga x a převráceným zobrazením tohoto logaritmu kdy x=ay. Potom nalezení celého čísla y 48
z předešlého vzorce se nazývá problém diskrétního logaritmu. K nalezení celého čísla nám slouží vzorec, kde platí logb(g) = k(mod n). Dalším důležitým pojmem, který slouží k výpočtům diskrétního logaritmu je pojem konečná cyklická grupa, která se označuje G(Zn)x. Tato grupa nám slouží v diskrétním logaritmu pro výběr náhodných čísel, která by měli být prvkem této konečné cyklické grupy. Z náhodných čísel následným výpočtem získáme výsledné šifrovací klíče.[16]
3.1. Asymetrické šifry založené na diskrétním logaritmu Asymetrických šifer založených na matematických problémech je celá řada a právě jedním z těchto problémů je diskrétní logaritmus. Nejvýznamnější šifry, či jednosměrné funkce založené na problému diskrétního logaritmu, se kterými se dodnes setkáváme, si blíže popíšeme v následujícím textu. Jedná se o Diffie-Hellmanův protokol, ElGamalův algoritmus a algoritmus DSA. Tyto šifry či jednocestné funkce lze snadno a rychle provést, ale určit z výsledku takové funkce původní vstupy je velmi obtížné.
3.1.1. Diffie-Hellmanův protokol Diffie-Hellmanův protokol je jeden z prvních šifrovacích systémů založených na problému diskrétního logaritmu. Někdy se také můžeme setkat s termínem D-H, který neznamená nic jiného než zkratku pro Diffie-Hellmanův protokol. Tento protokol vznikl již v roce 1976 a jeho zakladateli byli Whitfield Diffie a Martin Hellman, podle kterých se také tento protokol jmenuje. Důležitou roli při vzniku tohoto protokolu sehrál také Ralph Merkle, který se považuje za třetího zakladatele tohoto systému. Dnes již existuje spousta modifikací tohoto systému, ale základ všech je založen na problému diskrétního logaritmu. Diffie-Hellmanův protokol využíváme tam, kde nemáme zabezpečený kanál a potřebujeme přenést
bezpečně
nějaké
data.
Pomocí
tohoto
protokolu
si
dokážeme
právě
i v nezabezpečeném kanále a bez předem domluveného klíče zajistit šifrovaný přenos. Výsledkem algoritmu založeného na Diffie-Hellmanovo protokolu je tedy utvoření společného symetrického klíče, který již můžeme použít pro zabezpečený přenos.
Z toho
tedy vyplývá, že se jedná o protokol, kdy útočník není schopen při pasivním odposloucháváním kanálu rozluštit klíč, na kterém se účastníci domlouvají. Oproti tomu má 49
tento systém jednu velkou nevýhodu, protože nedochází k ověření, zda se opravdu jedná o příjemce či útočníka, který vstoupil mezi komunikující strany, tedy tato metoda neřeší autorizaci. Z tohoto důvodu je tento systém velmi zranitelný při útoku typu „man in the middle“, pomocí kterého se útočník dostane mezi komunikující strany a tváří se z pohledu příjemce jako odesílatel a naopak. Tento problém v případě, kdy víme, že se jedná o takto napadnutelný kanál, musíme řešit kombinací dalších metod zajišťujících autorizaci, při níž si ověříme, zda komunikujeme opravdu s příjemcem anebo odesílatelem. Výhoda:
útok pomocí pasivního odposlouchávání není možný z důvodu, že se nikdy
neposílá klíč v otevřené formě (vždy se zasílají pouze informace vedoucí k vytvoření takového klíče). Nevýhoda:
tento algoritmus je možný bezpečně používat pouze v prostředí, kde případný
útočník nemůže aktivně zasáhnout mezi komunikující strany. Příklad:
berme v úvahu pro zjednodušení, že se jedná o komunikaci pouze mezi dvěma
stranami. Komunikující strany si pojmenujeme jako Alice a Bob. Útočníka v tomto případě nám bude představovat Eva, která se bude snažit o prolomení zasílaných šifer pomocí pasivního odposlechu komunikace. Protože, jak jsem již psal, není možné zabránit útoku „man in the middle“ z důvodu chybějící ověřování autorizace. 1) Na začátek komunikace se musí obě dvě strany domluvit na společné multiplikativní cyklické konečné grupě G s generátorem g. 2) Nyní, když jsou obě strany domluvené na bodu 1, je možné, aby si první z komunikujících stran například Alice zvolila náhodné číslo x ∈ N a odeslala potom Bobovi gx. 3) Následně provede Bob tu samou operaci, kdy si vybere náhodné číslo y ∈ N a odešle ho Alici ve tvaru gy. 4) Alice si ze svého zvoleného čísla x a od Boba získaného gy vypočte (gy)x, Bob provede tu samou operaci se svým vlastním číslem y a získaného gx, tedy (gx)y. 5) Po výpočtech vlastní oba dva účastnící sdílený tajný klíč gxy. Pomocí tohoto klíče již může probíhat další šifrovaní. 50
Alice v tomto případě není schopna dešifrovat Bobův tajný klíč a obráceně ani Bob není schopen rozluštit tajný klíč Alice. V případě kdy by tomu tak nebylo, tak by Eva, která nám představuje útočníka a odposlouchávala by nám nezabezpečený kanál, byla schopná zprávu dešifrovat a šifrování prolomit.[17]
3.1.2. ElGamal algoritmus ElGamalův algoritmus je dalším ze skupiny algoritmů využívající matematického problému diskrétního logaritmu. Tento algoritmus byl představen v roce 1985, a byl pojmenován po svém vynálezci Taherovi ElGamalovi. Jedná se o asymetrický kryptosystém. Vzhledem k tomu, že tento algoritmus byl představen až několik let po Diffie-Hellmanovo protokolu a RSA algoritmu, není a ani nebyl tak široce rozšířen jako ostatní dva jmenované protokoly. Nyní se již s původním ElGamalovým algoritmem nesetkáme z důvodu slabé bezpečnosti. Dodnes se ale můžeme v praxi setkat s nějakými algoritmy pro podepisování zpráv, které pracují na již upraveném systému ElGamalových algoritmů. Od ElGamalových algoritmů se ustoupilo po nastoupení algoritmu DSA, který je mnohem bezpečnější. Jedna z velkých nevýhod ElGamalovo algoritmu je také zdvojnásobení délky zašifrované zprávy oproti otevřenému textu. Jak je výše uvedeno algoritmus ElGamal nám může sloužit jak pro šifrování tak k podepisování zpráv. Oba dva tyto systémy jsou si podobné a začínají oba na principu vytvoření veřejného a soukromého klíče.
ElGamalův algoritmus – šifrování zpráv I přesto že není ElGamalův algoritmus pro šifrování zpráv tolik rozšířen, má jednu výhodu oproti ostatním a to, že vnáší do šifrované zprávy náhodný parametr x, pomocí kterého se stává šifra bezpečnější, než kdyby měla stále stejný postup. Tato výhoda se ale může stát i nevýhodou v případě, kdy bychom tento parametr neměnili a nechávali ho po delší dobu stejný. V případě méně časté výměny parametru x je snadnější dešifrování zprávy útočníkem. ElGamalův algoritmus byl ve své době na velmi vysoké úrovni zabezpečení. A kdyby nebylo zdvojnásobení délky u šifrované zprávy, jistě by se používal tento algoritmus dodnes.
51
Výhoda:
velmi silná úroveň zabezpečení díky parametru x, který nám vnáší do šifry náhodný prvek.
Nevýhoda:
dvojnásobně větší délka šifrované zprávy oproti otevřenému textu.
Příklad:
berme opět v úvahu, že se jedná o zkušební příklad. Pro zjednodušení tedy
budeme šifrovat přenos pouze mezi Alicí a Bobem. 1) Alice si na začátek komunikace musí zvolit tři parametry, z kterých následně sestaví svůj veřejný klíč. Jedná se o řád grupy, generátor z této grupy a svůj soukromý klíč. 2) Následně Alice tyto parametry dosadí do vzorce bk mod n. Z výsledkem z tohoto vzorce zjistí Alice svůj veřejný klíč. 3) Bob si zjistí veřejný klíč Alice a zašifruje zprávu pomocí tohoto klíče a parametru x. 4) Alice přijme zprávu a dešifruje jí pomocí svého soukromého klíče. 5) Alice tímto způsobem získá otevřený text od Boba, který tento text zašifroval pomocí veřejného klíče Alice a svého parametru x, který je potřeba neustále měnit.
ElGamalův algoritmus – podepisování zpráv ElGamalův algoritmus používaný pro podepisování zpráv byl hojně používán před nástupem systému DSA. DSA vyšlo z ElGamalovo algoritmu pro podepisování zpráv, ale opravuje nedostatky, kterých tento algoritmus měl na konci svého používání již více. Jedná se o velmi podobný systém jako ElGamalův systém pro šifrování zpráv, kde je opět využíván diskrétní logaritmus. Výhoda:
založení základů pro dnes používaný systém DSA, který z tohoto systému vznikl.
Nevýhoda:
v dnešní době již nalezeno mnoho slabin tohoto systému, pomocí kterých se tento systém stal méně bezpečným.
52
Příklad:
jak je uvedeno výše, systém je založen na podobném principu jako systém pro
šifrování zprávy, proto je velmi velká podoba s předcházejícím příkladem. Ale u tohoto systému podepisujeme pouze hash zprávy. 1) Jako první při podepisování zprávy si musí opět Alice připravit svůj veřejný klíč, který je vypočítán ze soukromého klíče. 2) Ze zprávy si vytvoříme hash neboli otisk zprávy, který následně odešleme spolu se zprávou. 3) Uživatel Bob přijme zprávu a podpis od Alice. Dále si obstará veřejný klíč Alice, pomocí kterého si ověří pravost podpisu.[17]
3.1.3. DSA algoritmus DSA (Digital Signature Algorithm) jak jsem již uváděl, je standard, který vznikl z ElGamalovo algoritmu pro podepisování zpráv. Bezpečnost tohoto algoritmu je založena opět na matematickém problému diskrétního logaritmu. Potřeba vzniku nového algoritmu pro podepisování zpráv vznikla postupně, kdy se dosavadní ElGamalův algoritmus ukázal jako velmi slabý. DSA algoritmus se někdy také zaměňuje s označením DSS8. DSS je ovšem americký standard pro digitální podpis, který byl navržen americkým institutem NIST v srpnu 1991. Rozdíl je jenom v délce klíče, kdy u amerického standardu DSS je možný maximálně 1024bitů dlouhý klíč a DSA je bez omezení. DSA je patentováno a patent je připsán Davidovi W. Kravitzovi který ho nechal k volnému užívání. V původním DSS musela být použita hashovaní funkce SHA-1, v současných verzích je možné použití SHA-2. Výhoda:
snadná implementace tohoto algoritmu.
Nevýhoda:
pro dnešní bezpečné využívání DSA je zapotřebí volit dostatečně dlouhý klíč, který je mnohem delší než používají ostatní algoritmy.
8
DSS – Digital Signature Standard (standard pro digitální podpis)
53
Příklad:
základ tohoto algoritmu je také založen na diskrétním logaritmu a proto
i princip vytváření digitálního podpisu je podobný jako u předchozího příkladu ElGamalova algoritmu pro podepisování zpráv, z kterého tento algoritmus i vychází. 1) V prvním kroku se vytvoří hash z otevřeného textu který chceme podepsat. 2) Pomocí zvoleného náhodného parametru se vypočítá soukromý klíč, z kterého se následně vypočte klíč veřejný. 3) Následně zašifrujeme vytvořený hash zprávy soukromým klíčem a odešleme. 4) Příjemce si následně vytvoří hash došlé zprávy pomocí veřejného klíče a porovná ho s poslaným hashem. V případě shody je zaručena integrita zprávy.[14]
54
4. Porovnání bezpečnosti šifer s různými délkami šifrovacích klíčů Samotná moderní kryptografie nedává přednost ani jedné straně dnes používaných symetrických a asymetrických kryptografií. V dnešní době se používá většinou na přenos klíčů a podepisování zpráv kryptografie asymetrická, která odstraňuje problém s výměnou klíče a samotná zpráva se pak šifruje za pomocí symetrické kryptografie. Toto řešení je výsledkem složitějších výpočtů u asymetrické kryptografie, které jsou náročnější na výpočetní výkon při šifrování a dešifrování. Proto se šifrování zpráv provádí za pomocí symetrické kryptografie a následně se zasílá pouze klíč zašifrovaný kryptografií asymetrickou. Takovému spojení se říká hybridní kryptografie, která nám odstraňuje výhody obou druhů šifrování. V této kapitole jsou porovnané jednotlivé druhy algoritmů jak symetrické tak asymetrické kryptografie.
4.1. Porovnání symetrických šifer V porovnání v tabulce 2 vidíme dnes nejvíce rozšířené symetrické šifry, ale také šifry, které těmto šifrám předcházeli. V tomto základním porovnání jsem se zaměřil na základní parametry těchto šifer, které jsou rozhodujícími faktory při šifrování zprávy a také na délku klíče v závislosti na bezpečnost jednotlivých algoritmů.
55
Tabulka 2 - Porovnání symetrických šifer [zdroj: vlastní] Název šifry
AES
DES
TripleDES
IDEA
RC4
RC5
CAST
Blowfish
Twofish
Serpent
Vznik roku
2002
1977
1997
1991
1987
1994
1997
1993
1998
1999 Anderson,
Daemen, Autor šifry
Rijdael
Knudsen,
Adams, IBM
IBM
Lai, Massey
Rivest
Rivest
Tavares
Schneier Schneier
Bilham
Ano Patentována
Ne
Ne
Ne
MediaCrypt
Ne
Ne
Ne
Ne
Ne
Ne
Ano Prolomena
Ne
(1999)
Ne
Ne
Ne
Ne
Ne
Ne
Ne
Ne
proudová šifra
Bloková
Bloková
Bloková
Bloková
Proud.
Proud.
Bloková
Bloková
Bloková
Bloková
Délka bloku (bitů)
128
64
64
64
-
-
128
64
128
128
Počet rund
10,12,14
16
16
8,5
-
-
12,16
16
16
16,32
128
64(56)
192(168)
128
1
1
40
1
128
128
256
64(56)
192(168)
128
2048
2048
128
448
256
256
128
-
192(168)
128
128
128
128
128
128
128
Bloková /
Nejmenší délka klíče (bitů) Maximální délka klíče (bitů) Dnes bezpečná délka klíče (bitů)
Z výsledků porovnání symetrických šifer, které jsou zde zobrazeny, vidíme velkou různorodost v případě porovnání kterékoliv vlastnosti šifry. V případě porovnání vzniku vidíme, že se jedná o šifry, které všechny pocházejí z minulého století, kromě standardu AES, který vychází ze šifry Rijndael, která vznikla také v minulém století. Autorem šifer jsou většinou vědci, kteří se oboru kryptografie dlouhodobě věnovali. Ale opět tu je výjimka u šifry DES a TripleDES u kterých za autora považujeme společnost IBM. Dále vidíme jedinou patentovanou šifru IDEA, jejímž vlastníkem patentu je firma MediaCrypt. Ze zde uvedených je prolomen pouze algoritmus DES, který již není v moderní kryptografii jako takový používán, ale můžeme se s ním setkat stále v upravených verzí, například ve verzi TripleDES. Dalším parametrem je rozdělení na blokovou a proudovou šifru, kdy proudovou šifru v tabulce zastupuje pouze algoritmus RC4 a jeho novější verze RC5. V tabulce dále nalezneme délku bloku a počet rund, které jsou už velmi individuální u každého algoritmu. Posledním a nejdůležitějším faktorem každé šifry je délka klíče, která se pohybuje u porovnávaných algoritmů od žádného až nejvýše k 2048 bitů. Dnes se nejvíce používají 56
klíče od 128 bitů až do 256 bitů. Výsledek porovnání těchto šifer je bezpečná délka klíče 128 bitů, která je založena na obtížnosti prolomení za pomocí útoku hrubou silou. V případě, kdy je již šifra prolomena a existuje nějaký algoritmus, který slouží k dešifrování šifry, délka klíče již nehraje roli. Proto je výsledkem porovnání symetrických algoritmů dnes stále bezpečná délka klíče 128 bitů. Nejedná se ale o délku klíče doporučovanou, nýbrž minimální, která zaručuje bezpečnost, díky nemožnému rozluštění takové šifry v reálném čase. Doporučovaná délka klíče je 256 bitů.
4.2. Porovnání asymetrických šifer V následující tabulce jsou srovnány nejdůležitější asymetrické šifry. Ve srovnání jsem se zaměřil jako u symetrických šifer na základní vlastnosti, ale také na dnes bezpečnou délku klíče. Do srovnávaných vlastností jsem zahrnul rok vzniku a autora šifry. Dále zda je šifra patentována, popřípadě prolomena. Šifra je považována za prolomenou v případě, kdy existuje nějaký algoritmus, který ji dokáže v reálném čase rozšifrovat anebo v případě, kdy maximální délka klíče algoritmu je již nedostačující a považována za nebezpečnou z důvodu útoku hrubou silou. Tabulka 3 - Porovnání asymetrických šifer [zdroj: vlastní]
Název šifry
RSA
Diffie-Hellman
DSA
El-Gamal
ECC
ECDSA
Vznik roku
1977
1976
1991
1985
1985
1998
Rivest, Shamir,
Miller,
Autor šifry
Adleman
Diffie, Hellman
Krawitz
El-Gamal
Koblitz
ANSI
Patentována
Ne
Ne
Ano
Ne
Ne
Ano
Prolomena
Ne
Ne
Ne
Ano
Ne
Ne
Digitální podpis
Ano
Ne
Ano
Ano
Ne
Ano
Diskrétní logaritmus
Ne
Ano
Ano
Ano
Ne
Ano
Faktorizace
Ano
Ne
Ne
Ne
Ne
Ne
Eliptické křivky
Ne
Ne
Ne
Ne
Ano
Ano
2048
2048
2048
2048
224
224
Dnes bezpečná délka klíčů (bitů)
57
Výsledek porovnání asymetrických šifer je znázorněn v tabulce 3. V případě vzniku šifer se jedná opět o poměrně staré šifry. I přesto jsou zde dvě poměrně nové šifry, které jsou založeny na principu eliptických křivek. Tyto algoritmy založené na principu eliptických křivek jsou také jako jediné patentovány. V případě patentů jsou brány v potaz platné patenty zde na území ČR. Jedinou šifrou, která se dnes již nepoužívá z důvodu malé bezpečnosti, je protokol El-Gamal, který je tedy považován za snadno prolomitelný. V případě asymetrické kryptografie je také důležitá autorizace z důvodu útoku men-in-the-middle. Tuto autorizaci nám může zajišťovat také digitální podpis. Digitální podpis je mnohem častěji uplatňován sám o sobě bez nutnosti šifrování, kdy se nám stará o autorizaci a integritu dané zprávy. V případě šifer uvedených v tabulce umožňují digitální podpis algoritmus RSA, DSA, El-Gamal, ECDSA. Dále máme v tabulce tři parametry, které značí, na jakých principech asymetrické šifry pracují. Nejčastěji využívaný v asymetrických algoritmech je problém diskrétního logaritmu. Dnes nejvíce používaný asymetrický protokol RSA zase využívá princip faktorizace a jako poslední a nejnovější metodou, která je zároveň i nejbezpečnější v porovnání s délkou klíče, je princip založený na eliptických křivkách. Jak jsem uvedl, v případě algoritmů založených na principu eliptických křivek je velmi značný rozdíl v bezpečnosti při používání stejných klíčů jako u ostatních asymetrických šifer. V případě teoretického porovnání těchto 3 principů je shoda, co se týká bezpečného klíče u šifer založených na principu faktorizace a diskrétního logaritmu. U obou zmíněných principů je nutné dodržet bezpečnou délku klíče minimálně 2048 bitů, ale v případě algoritmů založených na eliptických křivkách je bezpečná minimální délka pouze 224 bitů. V případě srovnání tedy vidíme jednu z velkých výhod asymetrického šifrování založeného na principu eliptických křivek.
4.3. Závislost délky klíče symetrických šifer na čase prolomení útokem hrubou silou V případě dalšího testování bezpečných délek klíčů jsem se zaměřil na bezpečnosti délek klíčů v závislosti na prolomení útokem hrubou silou. Tento útok spočívá ve vyzkoušení všech možných kombinací a používá se tam, kde neexistuje nějaké jiné možné řešení či algoritmus,
58
který by vedl k dešifrování zprávy. Tento útok je velmi náročný na čas a výpočetní požadavky, jak bude vidět dále ve výsledcích testování. K tomuto testování bezpečných délek klíčů jsem využil freeware výukový program CrypTool, který byl vyvinut ve spolupráci firem a univerzit. CrypTool se používá právě k vyzkoušení jednotlivých kryptografických algoritmů, ale také k různým druhům analýz. Pro obsáhlost a pokročilé funkce je tento program využíván na školách a univerzitách kde představuje názornou pomůcku při výuce kryptografie. Aktuální stabilní verze programu, v které byli prováděny testy je CrypTool 1.4.30, která je napsána jako předchozí verze v jazyku C / C++.
4.3.1. Testování K testování jsem použil mimo programu CrypTool, také dvou počítačů s parametry uvedenými v tabulce 4, pomocí kterých dojde ke srovnání potřebného času na analýzu jednotlivých symetrických šifer. Tabulka 4 - Použité PC [zdroj: vlastní]
Typ PC
Procesor
Operační Paměť
Systém
PC1
Stolní
AMD Athlon, 1,8 GHz
2048 MB
Windows 7 32Bit
PC2
Notebook
Pentium i5, 3.2 GHz
6144 MB
Windows 8 64Bit
Samotné testování probíhalo otevřením souboru text.txt v programu CrypTool, který obsahoval otevřený text připravený k zašifrování. Otevřený text připravený k zašifrování spolu s uživatelským prostředím je vidět na obrázku 15. Za obsah otevřeného textu jsem volil jeden z prvních odstavců mé diplomové práce. Tento text byl použit u veškerého testování, aby nedošlo k zavádějícím výsledkům.
59
Obrázek 15 - CrypTool - otevřený text [zdroj: vlastní]
Otevřený text (text.txt): Kryptografie nebo také šifrování je věda o metodách skrytí smyslu zprávy před třetí osobou, bez speciální znalosti, která vede k rozluštění. Slovo kryptografie je složeno ze dvou řeckých slov a to kryptós = skrytý a gráphein = psát. Kryptografie je pouze 1 částí z 3 oborů kryptologie. Kryptologie je opět složena ze dvou řeckých slov a to opět kryptós = skrytý a logos = věda. Další částí, z nichž se skládá kryptologie jsou, kryptoanalýza, která se zabývá dešifrováním dané zprávy a steganografie, která se zabývá skrýváním informací. Před samotnou analýzou pomocí útoku hrubou silou je nejdříve potřeba otevřený text zašifrovat. V případě šifrování jsou použity symetrické šifry AES, DES, TripleDES, IDEA, RC4, Twofish a Serpent. Pro názornost je zde vyobrazeno šifrování a následná analýza na šifře AES při použití klíče 128 bitů. Zvolené délky klíčů, které byly použity při testování, jsou v tabulce č.5. V této tabulce je také k vidění přesný klíč, který byl použit u jednotlivých délek klíčů v hexadecimálním tvaru.
60
Tabulka 5 - Použité klíče v hexadecimálním tvaru [zdroj: vlastní]
Délka klíče (bitů)
Klíč v hexadecimálním formátu
8
47
16
478D
32
47 8D F6 7D
64
47 8D F6 7D F6 D7 6B 7A
128
47 8D F6 7D F6 D7 6B 7A D6 F7 FD FB 6F 6D 43 A4
192
47 8D F6 7D F6 D7 6B 7A D6 F7 FD FB 6F 6D 43 A4 A5 DF 4D F6 4F DF 4D 6F
254
47 8D F6 7D F6 D7 6B 7A D6 F7 FD FB 6F 6D 43 A4 A5 DF 4D F6 4F DF 4D 6F 97 31 33 13 3D AF 3A A4
Nyní je již vše připraveno a pokračujeme v šifrování otevřeného textu. Nejdříve se musí vybrat zvolená délka šifry u daného algoritmu a následuje zadání klíče v hexadecimálním tvaru, jak je vidět na obrázku 16.
Obrázek 16 - Šifrování AES 128 bitů [zdroj: vlastní]
Šifrováním otevřeného textu jsme získaly šifru, která je ukázána na obrázku 17. Tato šifra je automaticky vygenerována v hexadecimálním a také ASCII formátu. Tuto šifru je už bezpečné poslat i po nezabezpečeném kanálu. 61
Obrázek 17 - Zašifrovaný text [zdroj: vlastní]
Posledním a nejdůležitějším krokem tohoto testování je samotné prolomení šifry za pomocí útoku hrubou silou. Jak je vidět na obrázku 18, při útoku hrubou silou je možné hledat celý klíč, popřípadě zadat známou část klíče. Pomocí této části se nám následný čas prolomení krátí, v závislosti na délce známé části klíče.
Obrázek 18 - Útok hrubou silou [zdroj: vlastní]
62
Výsledkem takového útoku by mělo být zobrazení otevřeného textu tedy rozluštění dané šifry. Ve větší části testování délky klíčů jsem na dostupné výpočetní technice nebyl schopen šifru rozluštit z důvodu dostatečně dlouhého klíče, který zaručuje bezpečnost šifrovacího algoritmu. V těchto případech jsem si musel vystačit s odečtením odhadovaného času rozluštění šifry, jak je vidět na následujícím obrázku 19.
Obrázek 19 - Odhadovaný čas prolomení šifry [zdroj: vlastní]
4.3.2. Vyhodnocení Výsledné vyhodnocení je odvozeno od výsledných časů jednotlivých šifrovacích algoritmů, za které je možné algoritmy prolomit, při použití rozdílných délek klíčů. Toto měření je pouze orientační z důvodu odečítání odhadovaného času v aplikaci CrypTool v případě 64 bitových délek klíčů a vyšších. I přes to je možné takto odečtené hodnoty porovnat a vyhodnotit testování. Měření ukázalo, že pro běžného uživatele s průměrnou výpočetní technikou není možné rozluštit ani 64 bitový klíč v reálném čase. Toto tvrzení se potvrdilo při užití obou dvou počítačů, jak je možné vidět v tabulce č. 6 a následující tabulce č. 7, kde je použit k rozluštění šifry větší výpočetní výkon.
63
Tabulka 6 - Časy potřebné k prolomení šifry PC1 [zdroj: vlastní]
Délka klíče
AES
DES
TripleDES
IDEA
RC4
8
< 1 sekunda
16
1 sekunda
32
10 hodin
64
128
4,5 * 104
5.9 * 106
roků
roků
7,6 * 1025
5,1 * 1021
2,5 * 1026
1,5 * 1026
roků
roků
roků
roků
6,3 * 1044 192
Serpent
1,8 * 1026 1,2 * 1026 roků
roků
5,4 * 1045 2,9 * 1045
roků
roků
1,3 * 1064 256
Twofish
roků
8,7* 1065 4,6 * 1064
roků
roků
roků
Tabulka 7 - Časy potřebné k prolomení šifry PC2 [zdroj: vlastní]
Délka klíče
AES
DES
TripleDES
IDEA
RC4
8
< 1 sekunda
16
1 sekunda
32
2,43 hodiny
64
128
1,3 * 104
1,6 * 106
roků
roků
7,6 * 1024
1,5 * 1021
7,9 * 1025
4,2 * 1025
roků
roků
roků
roků
1,6 * 1044 192
256
Twofish
Serpent
1,8 * 1025 2,6 * 1025 roků
roků
4,2 * 1044 5,5 * 1044
roků
roků
roků
3,3 * 1063
1 * 1064
1,2 * 1064
roků
roků
roků
64
V případě porovnání těchto dvou tabulek je na první pohled znát o něco menší čas v případě prolomení počítačem označeným jako PC2. Tento rozdíl ale není přímo úměrný výkonu jednotlivých počítačů v případě použití delších délek klíčů, jak je vidět na grafu číslo 2, který srovnává závislost výpočetních výkonů na čase prolomení šifry AES. V případě použití delšího otevřeného textu, v mém případě zcela dokončené diplomové práce v porovnání s otevřeným textem užitým v testování se čas potřebný k rozluštění zvýšil minimálně. Následná velikost zašifrované zprávy při použití zcela dokončené diplomové práce jako otevřeného textu, je výsledných cca 150 stran zašifrované zprávy ve formátu A4 a v hexadecimálním tvaru. Graf č. 1 nám vyobrazuje všechny testované algoritmy a jejich rozdíly. V případě použitých algoritmů z grafu vyplývá exponenciální nárůst bezpečnosti v závislosti na použité délce klíče proti útoku hrubou silou. V případě porovnání bezpečnosti jednotlivých algoritmů je vidět, že jsou při použití klíče o stejné délce srovnatelné. Tedy platí, že bezpečnost jednotlivých algoritmů před útoky hrubou silou závisí hlavně na použití vhodné délky klíče. Jednou z reálných hrozeb dnešních kryptografických systémů založených na matematických principech, může být příchod kvantových počítačů. Díky velkému výpočetnímu výkonu u kvantových počítačů, dojde ke snížení času potřebného k prolomení šifer pomocí útoku hrubou silou.
Čas prolomení (roků)
Čas potřebný k prolomení algoritmů pomocí útoku hrubou silou s různými délkami klíčů 1E+64 1E+58 1E+52 1E+46 1E+40 1E+34 1E+28 1E+22 1E+16 1E+10 10000 0.01 1E-08
AES DES TripleDES IDEA RC4 Twofish Serpent 8
16
32
64
128
192
Délka klíče (bitů)
Graf 1 – Čas potřebný k prolomení šifer PC1[zdroj: vlastní]
65
256
Rozíl času v závislosti na výpočetním výkonu prolomení šifry AES pomocí útoku hrubou silou s různými délkami klíčů 1.00E+65 1.00E+60 1.00E+55 Čas prolomení (roků)
1.00E+50 1.00E+45 1.00E+40 1.00E+35 1.00E+30
AES PC1
1.00E+25
AES PC2
1.00E+20 1.00E+15 1.00E+10 1.00E+05 1.00E+00 128
192
256
Délka klíče (bitů) Graf 2 – Rozdíl času prolomení šifry AES v závislosti na výpočetním výkonu [zdroj: vlastní]
66
Závěr Kryptografie je rozsáhlý a dnes velmi důležitý obor, který nás obklopuje, ať už o tom víme nebo ne. V této práci jsem neobsáhl celé téma kryptografie, ale kladl jsem si za cíl představit šifrovací algoritmy, které využívá dnešní moderní kryptografie. Poukazoval jsem na základní principy a nastínil použití jednotlivých algoritmů. Dále jsem v práci kladl důraz na asymetrické šifry, které jsou založené na principu diskrétního logaritmu. V první části práce popisuji kryptografii jako celek a popisuji základní rozdělení a základní principy, které jsou potřeba pochopit pro další přiblížení této tématiky. Dále se věnuji moderní kryptografii podle zařazení do jednotlivých celků. Podrobněji jsou popsány dnes používané algoritmy a jejich využití v dnešní době. Výjimku tvoří algoritmy, které se v dnešní době nepoužívají, ale měli velký vliv na vývoj oboru kryptografie a jejich principy jsou využívané v dalších algoritmech i dnes. Jedním z těchto principů je i diskrétní logaritmus, který je podrobněji popsán v poslední teoretické části. Dále jsou zde přiblíženy šifry využívající tohoto principu. Praktická část práce porovnává jednotlivé šifry jak obecně, tak dále z jednotlivých hledisek, kde je kladen důraz na bezpečnost šifry v závislosti na použité délce klíče.
V případě
porovnání symetrického a asymetrického šifrování je délka bezpečného klíče asymetrického šifrování výrazně delší. Výjimku tvoří pouze asymetrické šifry založené na principu eliptických křivek, které se minimální bezpečnou délkou klíče alespoň přibližují k symetrickým šifrám. Praktickým příkladem jsem dále dokázal, jak výpočetně náročné je rozluštit šifru za pomocí útoku hrubou silou a jak důležitý je pro bezpečnost šifrovacího algoritmu výběr dostatečně dlouhého šifrovacího klíče.
67
5. Použité zdroje [1] PIPER, Fred; MURPHY, Sean. Kryptografie. 1. vyd. v českém jazyce. Překlad Pavel Mondschein. Praha: Dokořán, 2006, 157 s. ISBN 80-736-3074-5. [2] BENEŠ, Antonín. Útoky proti metodám kryptografické ochrany. [online]. 2011 [cit. 2014-01-03]. Dostupné z: http://www.obluda.cz/iprednasky/16_utoky.pdf [3] KLÍMA, Vlastimil. Moderní kryptografie. [online]. [cit. 2014-01-25]. Dostupné z:http://crypto-world.info/klima/mffuk/Symetricka_kryptografie_I_2007.pdf
[4] AES. In: [online]. [cit. 2014-02-04]. Dostupné z: http://www.kryptografie.wz.cz/data/aes.html [5] MLÝNEK, Jaroslav. Data Encryption Standard (DES). [on-line]. [cit. 2014-02-07]. Dostupné z: http://kmd.fp.tul.cz/old/lide/mlynek/ZOI/DESalgoritmus%5B1%5D.pdf [6] HOFFMAN, Nick. A SIMPLIFIED IDEA ALGORITHM. [online]. s. 16 [cit. 2014-02-07]. Dostupné z: http://generator.citace.com/dok/AnnyMpXxyxDlZsnK [7] KLÍMA, Vlastimil. Šifra, která míchá karty. [online]. [cit. 2014-02-07]. Dostupné z: http://crypto-world.info/klima/1999/chip-1999-09-42-44.pdf [8] KLÍMA, Vlastimil. Šifrovací standard zdarma. [online]. 1999 [cit. 2014-02-20]. Dostupné z: http://crypto-world.info/klima/1999/chip-1999-06-56-58.pdf [9] HORÁČEK, Radek. Teorie kódování a šifrování: Šifra Blowfish. [online]. [cit. 2014-02-20]. Dostupné z: http://sharkies.mysteria.cz/fish.ppt [10] KLÍMA, Vlastimil. Představujeme kandidáty na AES: Šifra Twofish. [online]. 1999 [cit. 2014-02-24]. Dostupné z: http://crypto-world.info/klima/1999/chip-1999-12-56-57.pdf [11] VANĚK, Tomáš. Blokové šifry III: MARS, Serpent, RC6, Twofish. [online]. [cit. 2014-03-04]. Dostupné z: http://www.comtel.cz/files/download.php?id=4853
68
[12] MATĚJOVÁ, Lucie. RSA. [online]. [cit. 2014-03-10]. Dostupné z: http://www.kryptografie.wz.cz/data/RSA.htm [13] KLÍMA, Vlastimil. Kryptologie pro praxi: Principy ECC. [online]. 2005 [cit. 2014-03-24]. Dostupné z: http://crypto-world.info/klima/2005/ST_2005_10_12_13.pdf [14] KLÍMA, Vlastimil. Kryptologie pro praxi: DSA, ECDSA. [online]. 2004 [cit. 2014-03-24]. Dostupné z: http://crypto-world.info/klima/2005/ST_2005_10_12_13.pdf [15] REICHERT, Pavel; ABILOV, Albert; ŠIFTA, Radim. Komunikační technologie: Kvantová kryptografie v optickém přenosovém systému. [online]. 2011 [cit. 2014-04-05]. Dostupné z: http://elektrorevue.cz/cz/download/kvantova-kryptografie-v-optickemprenosovem-systemu/ [16] STUDHOLME, Chris. The Discrete Log Problem. [online]. 2002, s. 57 [cit. 2014-04-10]. Dostupné z: http://www.cs.toronto.edu/~cvs/dlog/research_paper.pdf [17] VLČEK, Martin. Asymetrická kryptografie: ElGamal, Diffie-Hellman. [online]. 2010 [cit. 2014-04-15]. Dostupné z: https://kmlinux.fjfi.cvut.cz/~balkolub/Vyuka/Vlcek.pdf
69
6. Seznam použitých zkratek AES (Advanced Encryption Standard) – pokročilý šifrovací standard CAST (Carlisle Adams a Stafford Taverns) CBC (Cipher Block Chaining) – řetězení šifrovaných bloků DES (Data Encryption Standard) – šifrovací standard DSA (Digital Signature Algorithm) – algoritmus digitálního podpisu DSS (Digital Signature Standard) – standard pro digitální podpis ECB (Electronic CodeBook) – elektronický číselník, či také elektronická kniha kódů ECC (Elliptic Curve Cryptography) – kryptografie eliptických křivek ECDSA (Elliptic Curve Digital Signature Algorithm) – DSA s využitím ECC EMV (Europay, MasterCard, Visa) IDEA (International Data Encryption Algorithm) – mezinárodní algoritmus pro šifrování dat NIST (National Institute of Standards and Technology) – Národní institut standardů a technologií PGP (Pretty Good Privacy) – velmi dobré soukromí RSA (Rivest-Shamir-Adelman) SSL (Secure Sockets Layer) – vrstva bezpečných socketů TripleDES (Triple Data Encryption Standard) – trojnásobný šifrovací standard WPA2 (Wi-Fi Protected Access 2) – chráněný přístup k Wi-Fi WTLS (Wireless Transport Layer Security) – bezdrátová vrstva bezpečného spojení
70
7. Seznam obrázků Obrázek 1 - Symetrické šifrování ............................................................................................. 11 Obrázek 2 - Asymetrické šifrování........................................................................................... 14 Obrázek 3 - SubBytes ............................................................................................................... 23 Obrázek 4 - ShiftRows ............................................................................................................. 23 Obrázek 5 – MixColumns ........................................................................................................ 24 Obrázek 6 - AddRoundKey ...................................................................................................... 24 Obrázek 7 - Typy permutací DES ............................................................................................ 26 Obrázek 8 - DES režim ECB .................................................................................................... 27 Obrázek 9 - TripleDES šifrování .............................................................................................. 28 Obrázek 10 - Podepisování zprávy ........................................................................................... 35 Obrázek 11 - Ověřování zprávy................................................................................................ 35 Obrázek 12 - Stavy fotonů ........................................................................................................ 44 Obrázek 13 – Polarizační báze ................................................................................................. 44 Obrázek 12 - Diskrétní logaritmus ........................................................................................... 48 Obrázek 15 - CrypTool - otevřený text ................................................................................... 60 Obrázek 16 - Šifrování AES 128 bitů....................................................................................... 61 Obrázek 17 - Zašifrovaný text .................................................................................................. 62 Obrázek 18 - Útok hrubou silou ............................................................................................... 62 Obrázek 19 - Odhadovaný čas prolomení šifry ........................................................................ 63 71
8. Seznam tabulek Tabulka 1 - Blokové a proudové algoritmy .............................................................................. 10 Tabulka 2 - Porovnání symetrických šifer................................................................................ 56 Tabulka 3 - Porovnání asymetrických šifer .............................................................................. 57 Tabulka 4 - Použité PC ............................................................................................................. 59 Tabulka 5 - Použité klíče v hexadecimálním tvaru .................................................................. 61 Tabulka 6 - Časy potřebné k prolomení šifry PC1 ................................................................... 64 Tabulka 7 - Časy potřebné k prolomení šifry PC2 ................................................................... 64
72
9. Seznam grafů Graf 1 – Čas potřebný k prolomení šifer PC1 .......................................................................... 65 Graf 2 – Rozdíl času prolomení šifry AES v závislosti na výpočetním výkonu ...................... 66
73