7.  11.  2011    Ostatní

Moderní hlavolamy: Základy šifer bez tajemství

Autor: Doporučit článek  |  vytisknout vytisknout  |  textová verze  |  velikost písma ++++++

Od pradávna mají lidé potřebu komunikovat, postupně zjistili, že často je lepší, pokud komunikaci nikdo nemůže sledovat. Zde vznikly počátky šifrování. Vyznáte se v základech?

V současné době moderních komunikačních technologií se aplikace různých šifrovacích algoritmů stala již samozřejmostí. Mnoho lidí si ale stále plně neuvědomuje, kdy a kde jsou jejich data v digitálním světě posílána v otevřené podobě a naopak, kdy mohou klidně spát, protože nemohlo dojít ke zneužití důvěrných informací. Znalost principu základních šifrovacích algoritmů a pojmů z oblasti kryptologie by měla být u člověka pohybujícího se (nejen) ve světě IT samozřejmostí.

Hned v úvodu je třeba vysvětlit dva pojmy, které jsou si velice blízké, ale rozdíl mezi nimi zdaleka není zanedbatelný: šifrování a kódování. Oba termíny popisují proces transformace určité informace z jedné podoby do druhé, ale kódování při něm nevyužívá žádné utajované informace, na rozdíl od šifrování. Typickým příkladem kódování jsou kódy ASCII, Latin 2, UNICODE, apod. Kódování tedy oproti šifrováním neskrývá žádnou utajovanou informaci.

Jeden klíč vládne všem

Základním stavebním kamenem kvalitní šifry je šifrovací algoritmus, jedná se o proces transformace, která převede otevřený text (plain-text) na šifrovaný text (cipher-text) a naopak. Při procesu zašifrování transformace probíhá pomocí klíče pro zašifrování, při odšifrování pak analogicky pomocí klíče pro odšifrování. Jak vlastně vypadá bezpečná šifra? Základní pravidlo praví, že algoritmy pro šifrování a dešifrování musí být veřejně dostupné, jediným tajemstvím je šifrovací klíč.

tr01.png
Mezi nejoblíbenější zdarma dostupné šifrovací nástroje patří například funkcemi nabitý TrueCrypt

Podle použití klíče se dnes v operačním systému, jednotlivých programech i síťové komunikaci setkáte se dvěma druhy šifer – jedná se o symetrické šifrovací systémy a asymetrické šifrovací systémy. Při použití symetrického šifrovacího systému je klič pro zašifrování totožný s klíčem pro odšifrování. Pokud naopak webová služba používá asymetrický šifrovací systém, pak je odvození klíče pro odšifrování z klíče pro zašifrování výpočetně neproveditelné.

Symetrické šifrovací algoritmy se tedy v praxi používají například pro šifrování souborů na disku, pokud je chcete ukrýt svým vlastním heslem, stejně tak jsou implementovány například při ochraně souborů heslem během ochrany heslem archivů ZIP, RAR apod. Naproti tomu s asymetrickými algoritmy se setkáte v případě, kdy má příjemce vygenerovanou odpovídající dvojici klíčů – tajný si pro dešifrování uchovává v bezpečí, veřejný je k dispozici všem. V opačném gardu, ale na stejném principu je založen i digitální podpis.

U symetrického šifrovacího algoritmu je tedy nutné klíč často obměňovat. Tento problém se řeší generováním klíčů pro sezení, či lépe z angličtiny tzv. session key. Odesilatel zprávy vygeneruje šifrovací klíč, pomocí kterého zašifruje otevřený text. Šifrovanou verzi poté veřejným kanálem pošle příjemci, který ji dešifruje pomocí stejného šifrovacího klíče. Nutně zde však vyvstává další otázka: jak poslat šifrovací klíč tajně a bezpečně příjemci? To je hlavní problém symetrického šifrovacího sytému. Pokud by se třetí straně podařilo získat šifrovací klíč, který je posílán pomocí tajného kanálu, dojde k úniku informací. Nespornou výhodou symetrických šifrovacích algoritmů je však jejich rychlost

Kouzelná prvočísla

Ústředním pojmem v případě asymetrických algoritmů je jednocestná funkce, kterou definoval R.Needham: jedná se o funkci, u níž je jednoduché pro všechna x vypočítat y, ale pro všechna y je spočetně nemožné získat zpět x. Na základě toho je generována již zmíněná dvojice klíčů: veřejný a soukromý. Z hlediska bezpečnosti je teoreticky možné odvodit z veřejného klíče klíč privátní, ale při dostatečné délce klíče je to v současné době výpočetně nemožné.

Jedním z nejznámějších a nejčastěji používaných asymetrických algoritmů je RSA. Tento šifrovací systém získal svůj název dle počátečních písmen jmen svých objevitelů, kterými byli R.L.Rivest, A.Shamir a L.Adleman. RSA představuje systém, který je bezpečný, ale značně pomalý. Veřejný klíč je generován s použitím velkých prvočísel a celá bezpečnost RSA je založena na problému faktorizace velkých čísel na prvočísla.

Základem je výběr dvou velkých (velký=řádově stovky cifer) prvočísel, která se vynásobí. Na základě jejich součinu je vygenerován jak veřejný, tak privátní klíč. Bez znalosti původních prvočísel je prakticky nemožné součin rozložit zpět na počáteční prvočísla. Algoritmus RSA se též využívá při digitálním podpisu.

hash.png
Pokud byste někdy potřebovali ověřit hash kód vybraného souboru, vyzkoušejte například HashCalc

Spolehněte se na https

Zneužití síťových přenosů často vychází z problému nešifrované komunikace. Jestliže si například ve svém prohlížeči zobrazíte nějakou stránku, která nepatří mezi šifrovanou menšinu, pak požadavek na cílový server i následná odpověď putují v čitelné podobě. Hacker tak může zjistit například uživatelská jména, hesla, čísla kreditních karet a řadu dalších citlivých informací. Pokoutně sledovat lze také příchozí i odchozí e-maily či rozhovory přes program ICQ.

Vychytralý útočník tedy dokáže zachytit veškerou komunikaci, čímž získává přístup k obsahu vašich paketů, navíc zastaralost některých běžně používaných protokolů mu značně ulehčuje práci. Například protokol FTP nenasazuje žádnou techniku šifrování přenosu a podobně ani HTTP protokol ve své původní variantě data nezabezpečuje.

Pokud to servery dovolují, měli byste využívat spojení šifrovanou SSL komunikací – v prohlížeči ji snadno poznáte podle internetové adresy, která začíná zkratkou https místo známého http. To samozřejmě hackerovi nezabrání v zachytávání paketů, ale znemožní mu přečíst si jejich obsah. Dejte si ale pozor na to, jak je SSL komunikace prováděna, zkontrolujte detaily certifikátu!

servis.png
Internetové bankovnictví s podporou SSL komunikace (všimněte se zkratky https v úvodu adresy). Vpravo odkaz na certifikát a ověření jeho pravosti

Ochrání vás SSL

Protokol Secure Sockets Layer (SSL) se běžně používá pro šifrovanou komunikaci mezi dvěma počítači, tvoří tak nedílnou součást například internetového bankovnictví či jiných zabezpečených aplikací. Použití SSL ve webovém prohlížeči každý snadno pozná díky magické zkratce HTTPS namísto HTTP. Kromě již zmiňovaného šifrovaného spojení poskytuje také možnost ověření pravosti jak serveru, tak i klienta, kontrolu integrity přenášených dat nebo snadnou rozšiřitelnost.

Ze všeho nejdůležitější je při komunikaci přes SSL úvodní handshake protocol, během kterého se komunikující strany dohodnou na použitém šifrovacím algoritmu a klíči. Klient nejprve pošle serveru zprávu, obsahující základní informace o použité verzi, dostupných možnostech šifrování a náhodně generovaná data. Server na tento „pozdrav“ klientovi odpoví zasláním zprávy, která obsahuje obdobné informace.

detaily.png
Detaily certifikátu zobrazené přímo ve webovém prohlížeči

Po ověření totožnosti serveru klient může volitelně prokázat svou identitu zasláním vlastního certifikátu, nicméně vždy musí reagovat zprávou, která zahrnuje náhodná data šifrovaná veřejným klíčem serveru. Po provedení právě popsaných kroků nic nebrání započetí šifrované komunikace. Pokud již bylo spojení mezi klientem a serverem v minulosti vytvořeno, nemusí vždy nezbytně nutně probíhat celý Handshake protocol znovu, ale lze provést obnovení spojení pomocí identifikátoru existující relace. S protokolem SSL souvisí také TLS, který se od něj odvíjí.

V průběhu handshake protokolu si každá z komunikujících stran může díky certifikátům ověřit identitu té druhé. Certifikáty totiž jednoznačně spojují šifrovací klíče s jejich vlastníky a dovolují v dostatečné míře ověřit, komu patří. Mezi nejčastěji používané certifikáty patří varianty označované jako X.509. Podle této normy musí certifikát obsahovat například číslo použité verze, sériové číslo, dobu platnosti, informace o vlastníkovi a řadu dalších podrobností, které uživateli umožní, aby si ověřil jeho pravost a platnost. To jsou přesně ty informace, které si můžete třeba při návštěvě internetového bankovnictví ověřit.




X

Doporučit článek

Vaše jméno:

Váš e-mail:

E-mail adresáta:

Komentář:

kontrolní kód

Odeslat


celkem 10

Poslední komentáře Komentáře

hlavolamy ze dřeva Morisekos 27.  9.  2017 10:24
Re: slabina RSA? Q 9.  11.  2011 9:51
Re: Pěkné počtení Net.Xtreme 9.  11.  2011 7:14
Re: slabina RSA? sfr 8.  11.  2011 21:19
Re: slabina RSA? Martin 8.  11.  2011 20:47
Přidat příspěvek Zobrazit vše