METODY ŠIFROVÁNÍ (Zrgbql fvsebinav)
Předmět: 4IZ110 Kurz č. 005 Autor: Martin Vlčko Email:
[email protected] Datum odevzdání: 16. dubna 2007 Vyučující: RNDr. Radomír Palovský, CSc.
4IZ110
METODY ŠIFROVÁNÍ
Semestrální práce
Obsah: Historie šifrování ........................................................................................................... 3 Bezpečnost na Internetu ............................................................................................. 4 2.1. Zásady bezpečného chování.............................................................................. 4 2.1.1. Opatrnost .......................................................................................................... 4 2.1.2. Software............................................................................................................. 4 2.1.3. Firewall.............................................................................................................. 4 2.1.4. Email.................................................................................................................. 4 3. Principy šifrování - symetrické, asymetrické......................................................... 5 3.1. Symetrické šifrování............................................................................................. 5 3.1.1. DES (Data Encryption Standard)................................................................... 6 3.1.2. IDEA (International Data Encryption Algorithm) ....................................... 6 3.1.3. Blowfish ............................................................................................................. 6 3.1.4. Twofish .............................................................................................................. 6 3.1.5. AES (Advanced Encryption Standard) .......................................................... 6 3.2. Asymetrické šifrování .......................................................................................... 7 3.2.1. RSA (Rivest, Shamir, Adleman) ..................................................................... 7 3.2.2. DSA (Digital Signature Algorithm) ................................................................ 7 3.2.3. ElGamal............................................................................................................. 7 4. Příklady ............................................................................................................................ 8 4.1. MD5 (Message Digest algorithm) ...................................................................... 8 4.2. SHA-1 (Secure Hash Algorithm)........................................................................ 8 4.3. ROT13 ....................................................................................................................... 9 4.4. Posílání nešifrovaných zpráv........................................................................... 10 1. 2.
2
4IZ110
METODY ŠIFROVÁNÍ
Semestrální práce
1. Historie šifrování Šifrování zpráv je tak staré jako písmo samo. Především v době válek bylo potřeba přenášet tajné informace mezi jednotlivými válečnými oddíly a generálem i mezi oddíly navzájem. Pro případ vyzrazení zprávy nepříteli, jež by mohla mít za následek i zánik říše, se zprávy šifrovali jednoduchými metodami, které přesto svůj účel splnily. Techniky šifrování můžeme rozdělit do dvou základních kategorií. Transpoziční - transpoziční technika posouvá pořadí písmen ve slově, větě, nebo záznamu dle transpozičního klíče. Transkripční - tato technika využívá záměrné záměny znaku za jiný.
Mezi nejstarší a nejznámější šifrovací metody patří: Caesarova šifra Tato šifra pojmenovaná podle Gaia Julia Caesara používá přičítání nebo odčítání konkrétního čísla od písmen v abecedě. Zvolení konkrétního čísla o které se bude posouvat bylo již na domluvě obou stran, které si chtěli vyměňovat zašifrované zprávy. Tedy A + 2 = C nebo E - 1 = D. Polybiův čtverec Jedná se o čtverec, který má rozměry 5x5 polí do kterého jsou napsána písmena abecedy. Podle čísel, které označuje řádku a sloupec se zpráva šifruje i dešifruje. 1 Například zpráva „tajne heslo“ by se zašifrovala následně: Tajne heslo = 45 11 25 34 15 23 15 44 32 35
1
2
3
4
1
A B
C
D E
2
F
3
K L
4
P
5
U V W Y Z
G H
I
5
J
M N O
Q R
S
T
Avšak asi nejvýznamnějším šifrovacím strojem v dějinách byla bezpochyby Enigma, kterou používali nacisté za 2.světové války. Vymyslel jí Edward Hugh Hybern a sestrojil Arthur Scherbius, který si ji nechal patentovat v roce 1918 a také ji nabídl německé armádě. Tento šifrovací stroj, který se skládal buď ze 3 nebo 4 válců pro šifrování, byl rozluštěn během války několika tisíci spojeneckých kryptografů a matematiků v Bletchley Parku poblíž Londýna. Rozluštění šifer, kterému napomohlo německé opakování začátku zpráv uvádějící klíč k nastavení enigmy, pomohlo spojeneckým vojskům se připravit na jednotlivé bitvy a zachránit tisíce lidských životů na obou stranách válečných barikád. Dnes je jisté, že rozluštění této šifry rozhodlo válku.2
1
http://www.specialista.info/view.php?nazevclanku=historie-sifrovacich-metod-ve-spionazii&cisloclanku=2005100301 2 http://www.deutsches-museum.de/sammlungen/ausgewaehlte-objekte/meisterwerke-ii/enigma/
3
4IZ110
METODY ŠIFROVÁNÍ
Semestrální práce
2. Bezpečnost na Internetu V dnešní době, kdy se Internet stále více prosazuje do běžného života každého z nás, se klade větší a větší důraz nejen na jeho spolehlivost, ale hlavně na bezpečnost. Proti sobě stojí dvě skupiny programátorů. Jedna z nich se snaží vymýšlet stále lepší způsoby zabezpečení a ta druhá se snaží tato zabezpečení obejít a pokořit tak jejich tvůrce a to buď pro zneužití systému a nebo v lepším případě pouze pro upozornění na nedostatečné zabezpečení. Nebezpečí číhá opravdu na každém kroku, proto by nebylo na škodu zmínit několik bezpečnostních doporučení. 2.1. Zásady bezpečného chování Při práci s počítačem platí několik zásad, které se doporučuje dodržovat. 2.1.1. Opatrnost Mezi nejslabší články, které jsou nejvíce náchylné na chybu usnadňující útočníkovi práci je sám uživatel. I ten nejlépe zabezpečený systém může být při neopatrnosti uživatele snadným terčem útočníka. Proto je vždy na místě opatrnost a rozvážnost. Například internetový prohlížeč Firefox od verze 2.0 upozorňuje na podezřelé obsahy webových stránek a tak by se nemělo stát, že by jste si spletli podvrženou stránku, která byla vytvořena pouze k získání citlivých údajů, jak se stalo 10.10.2006 při podvodu, který byl směřován na klienty České spořitelny. 2.1.2. Software K nejvyšší možné míře zabezpečení slouží celá řada antivirových programů, vyhledávačů červů i čističů registrů, kteří mají za úkol přijít na podezřelé škůdce ve vašem PC a zbavit se jich. Abychom se ale vyvarovali této již akutní situaci, měli bychom jí nejlépe předcházet tím, že budeme udržovat veškerý software aktualizovaný. Tedy jak operační systém, tak již zmíněné antivirové programy, tak i ostatní software, který máme na našem PC nainstalovaný. 2.1.3. Firewall Vedle předchozích variant zabezpečení je v současnosti velmi využíván další prvek ochrany a tím je Firewall.3 Tato stěna vás bude oddělovat od okolního internetu a až na vámi určené výjimky nepropustí z internetu ani do internetu žádná data o kterých byste „nevěděli“. Nejde totiž jen o to zakázat veškerý přístup z okolí, ale sami si často nainstalujete software, který odesílá svému autorovi informace o vašem chování, nastavení aplikací a jiných citlivých datech. Proto je potřeba mít pod kontrolou jak cesty z internetu, tak i do internetu. 2.1.4. Email Dalším prvkem nebezpečného zacházení je emailová schránka, která se stává cílem útoku nevyžádaných emailů tzv. spamů, které vám budou svojí četnosti spíše na obtíž, než aby vám způsobily nějaké ohrožení. Podobným nechtěným emailem je hoax.4 Tedy smyšlená řetězová zpráva, která má za cíl pouze své další rozmnožování v podobě rozesílání zprávy dalším osobám. Phishing je druh podvodu, který se nejčastěji snaží získat od uživatele jeho citlivé informace pro přístup k osobnímu účtu, převážně v bankovních službách, tím, že se odesílatel vydává za bankovní společnost. Představují se jménem banky a uvede odkaz, který nachytaného uživatele dovede na podvržené webové stránky, které na první pohled vypadají 3 4
Z angličtiny doslova přeložené jako protipožární zeď Hoax lez z angličtiny přeložit jako falešná zpráva; http://www.hoax.cz/cze/
4
4IZ110
METODY ŠIFROVÁNÍ
Semestrální práce
přesně jako webové stránky pravé banky. 5 Příkladem je již zmiňovaný útok na klienty České spořitelny. Uživatel by neměl otevírat spustitelné přílohy mailů, jako jsou exe, pif, bat, com, scr a vbs. A to ani od známých odesílatelů, pokud si není jist, že soubor je neškodný.
3. Principy šifrování - symetrické, asymetrické Od počátku Internetu, který sloužil výhradně pro akademické účely, až po současnost prošla Síť obrovským vývojem. S jeho rozvojem do veřejné oblasti a možnosti využití například k obchodním účelům se objevili nové dimenze, který bylo nutno dále rozvíjet a přizpůsobovat ke svému účelu. Zabezpečují se samotné protokoly. Z HTTP (Hypertext Transfer Protocol) se zrodil HTTPS (Hypertext Transfer Protocol Secure) což není zcela nový odlišný protokol, ale zašifrovaný protokol SSL (Secure Sockets Layer) nebo TSL (Transport Layer Security). Z protokolu FTP (File Transfer Protocol) se zrodil SFTP (SSH File Transfer Protocol) a FTPS (File Transfer Protocol přes SSL). Pomocí těchto protokolů lze vzdáleně spravovat soubory, kopírovat, přejmenovávat, vytvářet atp. Veškeré informace probíhající těmito protokoly jsou šifrovány. Ze sítě s několika málo prvky, které se navzájem poznali se stala neomezená „anonymní“ síť, která se každou vteřinou rozšiřuje o nové prvky. Anonymní uvádím v uvozovkách z důvodu, že i když osobně neznáme prvek se kterým komunikujeme, známe jeho adresu, tedy víme jak se k němu dostat. Z důvodu utajení informací před nepovolanými osobami bylo nutné vyvinout techniku, která by posílanou zprávu internetem zašifrovala, aniž by se k ní dostala osoba jiná, než které je určená. Existují dvě hlavní kategorie šifer. Symetrické šifry používají jeden klíč, pomocí kterého se zpráva zašifruje i dešifruje. Zašifrování je méně bezpečné a časově méně náročné než při asymetrickém šifrování. Asymetrické šifry používají pro zašifrování i dešifrování dva různé klíče.
3.1. Symetrické šifrování U symetrické šifry používá odesílatel i příjemce stejného klíče jak při zašifrování, tak při dešifrování. Odesílatel a příjemce si tak musí před začátkem komunikace vyměnit klíč a informace o algoritmu osobně nebo nějakým zabezpečeným kanálem. Proces komunikace potom přiblíží následující obrázek. Obrázek č. 1: Způsob komunikace mezi odesílatelem a příjemcem při přenosu symetricky zakódované zprávy, tedy s použitím pouze veřejného klíče.
5
http://www.root.cz/clanky/cesky-phishing-v-akci/
5
4IZ110
METODY ŠIFROVÁNÍ
Semestrální práce
Nejznámější symetrické šifrovací metody: 3.1.1. DES (Data Encryption Standard) Tato metoda byla využívající klíč o délce 56 bitů v červenci 1977 označena Standardou FIPS 46 (Federal Information Processing Standards). V té době byly počítače o mnoho pomalejší než dnes, proto byla metoda postačující. V dnešní době je možné tuto metodu rozluštit do 24 hodin. 6 3.1.2. IDEA (International Data Encryption Algorithm) IDEA je 128 bitová šifra, kterou začátkem 90. let vyvinula společnosti Swiss Federal Institute of Technology in Zurich (ETHZ). Idea měla původně rozšiřovat šifrovací metodu PES. Původní název byl Improved Proposed Encryption Standard (IPES) 7 3.1.3. Blowfish V roce 1993 vymyslel Bruce Schneier, a v následujícím roce zvěřejnil, symetrickou šifru, která má velikost bloku 64 bitů a délkou klíče od 32 do 448 b. Tato šifra je mnohem rychlejší, než DES i IDEA.8 3.1.4. Twofish Twofish je další šifra od Bruce Schneiera a pěti dalších kryptoanalytiků, kteří se nechali inspirovat původní Blowfish a rozšířili tak velikost bloku na 128 bitů a velikost klíče až na 256 bitů. Šifru zveřejnili 1998. 9 3.1.5. AES (Advanced Encryption Standard) Šifra, kterou vyvinula americká vláda jako standard pro šifrování svých dokumentů. Velikost klíče potřebného pro zašifrování i dešifrování je od 128 do 256 bitů. Použitelnost této šifry se odhaduje na 20 let.10
6
http://www.itl.nist.gov/fipspubs/fip46-2.htm http://www.answers.com/topic/international-data-encryption-algorithm 8 http://www.schneier.com/blowfish.html 9 http://www.schneier.com/twofish-brief.html 10 http://searchsecurity.techtarget.com/sDefinition/0,290660,sid14_gci344759,00.html 7
6
4IZ110
METODY ŠIFROVÁNÍ
Semestrální práce
3.2. Asymetrické šifrování Od 70. let 20. století se používá asymetrických šifer. Naopak od symetrické využívá asymetrická kryptografie klíče dva. Jeden veřejný, který je znám všem a jeden soukromý, který je utajován. Oba jsou vygenerovány např. pomocí SSL. Šifrování je ale několiksetkrát pomalejší, než u symetrických šifer – je to dáno matematickou podstatou algoritmů. Takto zašifrovanou zprávu lze dešifrovat pouze pomocí druhého, soukromého klíče. Místo zašifrování by bylo na místě použít slovo podepsání, protože veřejný klíč, je znám všem.11
Obrázek č. 2 : Způsob komunikace mezi odesílatelem a příjemcem při přenosu asymetricky zakódované zprávy, tedy s použitím pouze veřejného klíče i soukromého klíče.
Nejznámější asymetrické šifrovací metody: 3.2.1. RSA (Rivest, Shamir, Adleman) Od roku 1977 tvoří iniciály autorů, Ron Rivest, Adi Shamir a Len Aleman z Massachusetts Institute of Technology, název asymetrické šifry využívající pro zašifrování metodu násobení dvou dostatečně velkých (alespoň pěticiferných) prvočísel, jejíž následný rozklad pro dešifrování není jednoduchý. Tuto šifru používají ve svých webových prohlížečích firmy Microsoft a Netscape.12 3.2.2. DSA (Digital Signature Algorithm) Standard americké vlády pro digitální podpis vydaný v srpnu 1991 pro použití v DSS (Digital Signature Standard = DSA s SHA-1)13 3.2.3. ElGamal Šifra, jejíž největší nevýhodou je, že zašifrovaná zpráva je dvakrát větší, než zpráva samotná. To je též jeden z důvodů, proč se příliš nepoužívá. Další nevýhodou je velká časová náročnost výpočtu.14 3.2.4. Elektronický podpis Princip elektronického podpisu je postaven na technologii, která vypočte hash zprávy (pomocí funkcí MD2, MD5, SHA256, SHA512 a v současnosti hlavně SHA-1) před jejím odesláním a zašifruje svým soukromým klíčem. Tím vznikne elektronický podpis. Hash zprávy je jedinečná posloupnost znaků, která se i při nepatrné úpravě zprávy diametrálně
11
http://www.root.cz/clanky/sifrovani-uvod-do-problematiky/ http://searchsecurity.techtarget.com/sDefinition/0,,sid14_gci214273,00.html 13 http://www.itl.nist.gov/fipspubs/fip186.htm 14 http://cryptography.hyperlink.cz/2004/ST_2004_11_14_15.pdf 12
7
4IZ110
METODY ŠIFROVÁNÍ
Semestrální práce
změní. Když zjistí příjemce po dešifrování zprávy, že se hash neshoduje s hashem zprávy, znamená to, že zpráva byla během přenosu modifikována.15 Pro vytváření kryptografických kontrolních součtů se používají např.: MD2, MD5, SHA, HAVAL a další.16 Způsob vytváření otisků a jednotlivé příklady budou uvedeny v následující kapitole.
4. Příklady Rád bych zde ukázal několik šifer v praxi, které budou blíže vysvětlené v programovacím jazyku PHP. Poté bych popsal možnost a výsledky odposlouchávání poštovního klienta pracujícím s protokoly na zabezpečeném i nezabezpečeném portu. 4.1. MD5 (Message Digest algorithm) MD5 je hašovací funkce, která vrací 128 bitů a 32 znaků dlouhý otisk. Jejím autorem je Ronald L. Rivest z Massachusetts Institute of Technology. 17 Obrázek č. 3: Ukázka otisku MD5 v programovacím jazyku PHP.
4.2. SHA-1 (Secure Hash Algorithm) SHA-1, standardizován jako RFC 3174, je hašovací algoritmus, pomocí kterého lze jakoukoliv zprávu zašifrovat do 160 bitů a 40 znaků dlouhého otisku. Jak je u našívacích funkcí obvyklé, tento algoritmus funguje pouze jedním směrem.18 Obrázek č. 4: Ukázka otisku SHA-1 v programovacím jazyku PHP.
15
http://www.ica.cz/home_cs/?acc=teorie_symetricke_a_asymetricke_kryptografie http://www.root.cz/clanky/sifrovani-uvod-do-problematiky/ 17 http://www.faqs.org/rfcs/rfc1321.html 18 http://www.faqs.org/rfcs/rfc3174.html 16
8
4IZ110
METODY ŠIFROVÁNÍ
Semestrální práce
4.3. ROT13 V jazyku PHP existuje přímo funkce STR_ROT13(), která nám dokáže zprávu zakódovat i dekódovat. Obrázek č. 5: Ukázka ROT13 v programovacím jazyku PHP.
Rot13 posouvá čísla abecedy o 13 pozic, tím se zabezpečí, že ze zašifrovaného slova vyjde po dešifrování tou samou funkcí opět původní zpráva. Tento zdrojový kód v jazyku PHP nám pomůže blíže porozumět funkci STR_ROT13().
$string = $_GET["string"]; if ($string) { for($i=0;$i<strlen($string);$i++) { $j=ord($string[$i]); if ((($j>=ord("n")) & ($j<=ord("z"))) | ($j>=ord("N")) & ($j<=ord("Z"))) { $j=$j-13; } elseif ((($j>=ord("a")) & ($j<=ord("m"))) | ($j>=ord("A")) & ($j<=ord("M "))) { $j=$j+13; } $decoded.=chr($j); } echo "ROT13:
$decoded"; } ?> Obrázek č. 6: Jedna z možných variant naprogramování algoritmu ROT13 v jazyku PHP.
Po zadání zprávy, kterou chceme zašifrovat či dešifrovat, program buď odečte 13 písmen, nebo naopak přičte. Program využívá přepočtu písmen do znakové sady ASCII, kde je každému písmenu přiřazeno číslo. 26ti písmennou abecedu jsem rozdělil na dvě poloviny. K písmenům v první polovině program přičítá číslo 13, naopak k písmenům v druhé polovině program číslo 13 odečítá.
Obrázek č. 7 : Náhled na program, jehož zdrojový kód je výše popsán.
9
4IZ110
METODY ŠIFROVÁNÍ
Semestrální práce
4.4. Posílání nešifrovaných zpráv Při posílání nezašifrovaných zpráv protokolem POP3 na portu 110 může potenciální útočník zjistit nejen obsah zprávy, ale také přihlašovací údaje, jak je uživatelské jméno, heslo i server na který se uživatel přihlašoval. Pro tento účel jsem vyzkoušel program Wireshark,19 dříve známý pod názvem Ethereal. Pro přístup do poštovní schránky používám program Mozilla Thunderbird, protože mi vyhovuje mít více emailových schránek na jednom místě. Pro názorný příklad jsem spustil poštovního klienta i sniffovací20 program. Spustil jsem zaznamenávání posílaných dat na síti a klikl pro přijetí nové pošty na účtu vedeného u Seznam.cz. Thunderbird během pár vteřin zjistil, že na serveru nejsou žádné nové zprávy. Stopnul jsem Wireshark a podíval se na záznam.
Obrázek č. 8: Wireshark při výpisu nezabezpečeného kanálu.
Hned na prvním řádku lze vidět na který server jsem se připojoval - pop3.seznam.cz. Poté proběhlo pár příkazů, které si vyměňoval poštovní klient se serverem ohledně požadavků. Na desátém řádku klient odeslal mé přihlašovací jméno ve formě emailové adresy. ***********@
[email protected]. V zápětí server vrátil požadavek na heslo, které poštovní klient opět zaslal. Prozkoumal jsem znovu nápovědu na Seznam.cz ohledně nastavování klientů21 a utvrdil se, že není možnost použít zabezpečený port přes SSL. Naskytla se tedy otázka. Přihlašovat se přes webové rozhraní přes protokol HTTPS s větší jistotou ochráněných dat, nebo dál líně stahovat poštu v jednom poštovním klientu přes nezabezpečený protokol? Ano, i tady platí, že uživatel je nejslabším článkem systému. Pro porovnání jsem udělal stejný pokus s přihlášením na server veverka.vse.cz přes protokol IMAP přes port SSL 993.
Obrázek č. 9: Wireshark při výpisu zabezpečeného kanálu.
19
http://www.wireshark.org/ Sniff – anglický výraz pro čmuchání 21 http://napoveda.seznam.cz/cz/email/nastaveni-programu/ 20
10
4IZ110
METODY ŠIFROVÁNÍ
Semestrální práce
Přihlášení i celá výměna dat prochází na protokolu TLSv1, která nedovolí třetí straně odposlechnutí předávaných dat.
Obrázek č. 10: Možnost odposlechu nezašifrovaných zpráv.
11
4IZ110
METODY ŠIFROVÁNÍ
Semestrální práce
Obrázky: Obrázek č. 1: Způsob komunikace při přenosu symetricky zakódované zprávy ....................... 5 Obrázek č. 2 : Způsob komunikace při přenosu asymetricky zakódované zprávy .................... 7 Obrázek č. 3: Ukázka otisku MD5 v programovacím jazyku PHP............................................ 8 Obrázek č. 4: Ukázka otisku SHA1 v programovacím jazyku PHP .......................................... 8 Obrázek č. 5: Ukázka ROT13 v programovacím jazyku PHP ................................................... 9 Obrázek č. 6: Jedna možných variant naprogramování algoritmu ROT13 v jazyku PHP........ 9 Obrázek č. 7 : Náhled na program.............................................................................................. 9 Obrázek č. 8: Wireshark při výpisu nezabezpečeného kanálu. ................................................ 10 Obrázek č. 9: Wireshark při výpisu zabezpečeného kanálu..................................................... 10 Obrázek č. 10: Možnost odposlechu nezašifrovaných zpráv ................................................... 11
Seznam použitých zdrojů: http://www.specialista.info/view.php?nazevclanku=historie-sifrovacich-metod-ve-spionazii&cisloclanku=2005100301 http://www.deutsches-museum.de/sammlungen/ausgewaehlte-objekte/meisterwerkeii/enigma/ http://www.hoax.cz/cze/ http://www.itl.nist.gov/fipspubs/fip46-2.htm http://www.answers.com/topic/international-data-encryption-algorithm http://www.schneier.com/blowfish.html http://www.schneier.com/twofish-brief.html http://searchsecurity.techtarget.com/sDefinition/0,290660,sid14_gci344759,00.html http://searchsecurity.techtarget.com/sDefinition/0,,sid14_gci214273,00.html http://www.root.cz/clanky/sifrovani-uvod-do-problematiky/ http://www.root.cz/clanky/cesky-phishing-v-akci/ http://www.itl.nist.gov/fipspubs/fip186.htm http://cryptography.hyperlink.cz/2004/ST_2004_11_14_15.pdf http://www.ica.cz/home_cs/?acc=teorie_symetricke_a_asymetricke_kryptografie http://www.root.cz/clanky/sifrovani-uvod-do-problematiky/ http://www.faqs.org/rfcs/rfc1321.html http://www.faqs.org/rfcs/rfc3174.html http://www.wireshark.org/ http://napoveda.seznam.cz/cz/email/nastaveni-programu/
12