Jdi na obsah Jdi na menu
 


Úvod do kryptografie

20. 4. 2009

zdroj: www.krypto.krokonet.com

Vývoj kryptografie

Stručně z historie kryptografie

Kryptografie není vynález poslední doby, ani doby nedávno minulé. Již z dob starověku (Egypt, Mezopotámie) jsou známy první pokusy o šifrování textů – tehdy šlo jen o drobné úpravy písma, které však postačovaly svému účelu, jelikož již znalost písma nebyla úplně obvyklá. Již nám bližší formy šifrování se ukázaly poprvé až v Řecku, kdy bylo také poprvé použito skutečného zakódování textu za pomoci daného algoritmu a kódovací tabulky.

Jedna z nejdůležitějších zpráv pro existenci západní civilizace byla také předána utajeně. Jednalo se o zprávu, která pomohla Řekům v boji proti Peršanům. Demaratus, syn Aristona, zjistil termín, kdy král Xerxes vytáhne s armádou proti Řekům. Rozhodl se o tom své krajany informovat, seškrábal vosk ze dvou dřevěných psacích destiček a přímo na dřevo zprávu napsal. Tyto destičky opět zalil voskem, aby to při náhodné kontrole vypadalo, že nejsou použité. Když se zpráva dostala na místo určení, manželka krále Leonidase Gorgo odhalila a přečetla tajemství z destiček Následovaly slavné bitvy u Thermopyl, Salaminy a Plataea. Postup Peršanů do Evropy byl jednou pro vždy zastaven a v důsledku toho se mohla rozvinout západní civilizace.

Později šifrování převzali i Římané a kryptografie se tak stala velmi oblíbenou disciplínou používanou zejména k vojenským a jiným státnickým účelům.
Kryptografie procházela dalším vývojem staletími. Poměrně velkým skokem ve vývoji byla první světová válka, kdy k vývoji šifrovacích metod výrazně přispělo i rozšíření používání bezdrátové telegrafie. Druhá světová válka přinesla další posun. Již před jejím začátkem se mocnosti snažily dosáhnout co nejdokonalejších způsobů utajení komunikace. V Německu bylo sestrojeno snad nejznámější šifrovací zařízení všech dob – ENIGMA, a další stroje. Kryptografická zařízení sestrojená v době války se používala ještě několik let po skončení války.
Krom toho, že znepřátelené strany usilovně hledaly nové šifrovací metody, zároveň pracovaly na rozluštění šifer druhé strany (tzv. kryptoanalýza – viz. dále).

Počátkem druhé poloviny dvacátého století, v roce 1948 a 1949 byly otištěny dva články Claude Elwood Shannona. Tyto články prakticky začaly novou éru moderní kryptografie a kryptoanalýzy. Až do poloviny sedmdesátých let se používaly jen tzv. symetrické metody šifrování. Až v roce 1976 publikovali Whitfield Diffie, Martin Hellman a Ralph Merkle článek o nových možnostech kryptografie, a tak byly položeny základy asymetrických kryptografických metod.
Hned v zápětí (1978) vzniká první asymetrický šifrový systém – RSA, který se upravený používá dodnes (víz. níže). Ve stejné době vzniká též symetrický algoritmus DES, který je v roce 1977 v USA formálně přijat za veřejný standard pro ochranu informací.

Důležitým bodem je pak rok 1980, kdy se v Santa Barbaře konala první velká konference věnovaná kryptologii. Konference se koná od té doby dodnes a nese název "Crypto".
Na přelomu osmdesátých a devadesátých let se objevuje mnoho dalších algoritmů, jako např. FEAL, GOST, IDEA, CAST, BLOWFISH aj. Některé z těchto algoritmů byly později rozbity. V roce 1993 bylo popsáno rozbití algoritmu DES. Náhradou tohoto algoritmu se stal algoritmus 3DES, který je defakto jen trojnásobným algoritmem DES a tedy jeho rozbití se opět oddálilo. V roce 1999 byla rozbita šifra RSA s délkou klíče 512 bitů.

Vývoj posupoval i v oblasti využití šifer v tzv. elektronickém podpisu. V roce 1999 pak přijala evropská komise Směrnici o elektronických podpisech v rámci Evropské unie. V roce 2000 byl následně přijat i příslušný zákon o elektronickém podpisu v České republice.

Kryptografie dnes

V dnešní době je kryptografie již nezbytnou součástí běžného života, má uplatnění jak v profesionálním světě, tak i v soukromém životě. Firmy si potřebují vyměňovat interní strategické informace, osobní údaje zaměstnanců, potřebují navzájem nerušeně komunikovat, anebo jen by neradi na svém počítači nechali nezajištěná data přístupná např. i jen své sekretářce.
A v domácnosti - určitě se mnoha uživatelům internetového bankovnictví hodí, že přístup k jejich bankovnímu účtu je zabezpečen nějakou tou šifrou anebo že si bude moci již v blízké budoucnosti vyřídit většinu úředních záležitostí za pomoci elektronického podpisu přímo přes internet bez nepříjemného čekání front na úřadech. Toto a mnoho dalších věcí je možné díky kryptografickým metodám. Některé agendy je možné vyřídit za pomoci elektronického podpisu již od roku 2003. Bohužel se zatím nedaří osvěta tak, aby se používání e-podpisu stalo samozřejmostí. Zajímavým materiálem (Flash prezentace) je např. na tomto odkazu: http://www.praha15.cz/elpodpis/carda1.swf .

Jak kryptografické metody fungují

Kryptografické metody obecně využívají tzv. "klíč", pomocí kterého tajná data zakódují a posléze opět rozkódují. Současně některé metody umožňují nebo i vynucují použití více klíčů různých pro zakódování a rozkódování.

Utajení dokumentu se skládá z dvou částí. Utajení šifrovací metody a utajení klíče. Zásadní je zejména utajení klíče, jelikož metod není takové množství, aby nemohlo dojít k jejímu odhalení. Často se tedy ani k utajení vlastní metody nepřistupuje a utajení zajišťuje jen klíč.

Většina moderních algoritmů je založena na matematické teorii čísel. Tzv. kryptografická transformace T je libovolné prosté zobrazení množiny celých čísel na množinu celých čísel. Kryptografický systém je pak parametrický systém kryptografických transformací TK = (Tk : k ∈ K), kde k je klíč a K je prostor klíčů.

Podle použití způsobu práce s klíči se kryptografické metody dělí na symetrické a asymetrické (viz. níže).

Kryptoanalýza

Jelikož krom těch, kdo mají zájem na utajení daných informací, a tak používají kryptografické metody, často existuje také někdo další, kdo má naopak zájem o zjištění obsahu těchto tajných zakódovaných informací. A tak vznikla tzv. kryptoanalýza. Ta se zabývá rozbíjením šifer tj. pokusy o dekódování šifrovaného textu. Čím je šifrovací klíč delší, tím jsou možnosti rozluštění pomocí kryptoanalýzy horší.

Symetrické metody kryptografie

Symetrická kryptografie (též "konvenční kryptografie" či angl. conventional cryptography") používá stejný klíč jak pro zakódování tak pro rozkódování zprávy.



Vstupem je tedy nějaký tajný text ze stanovené abecedy, a klíč. Šifrovací funkcí se za pomoci klíče tajný text převede na kód, který může být odeslán příjemci zprávy. Příjemce pak použije dešifrovací funkci se stejným klíčem a tím získá původní tajný text. Důležité je, že pro dešifrování musí mít příjemce k dispozici stejný klíč, jakým byl text zakódován. Je tedy třeba zajistit bezpečný způsob doručení klíče, aby se tento klíč nedostal do nepovolaných rukou.

Pro šifrování se používají funkce, u kterých platí, že při znalosti vstupního a zakódovaného textu je velmi obtížné vygenerovat klíč, ač vlastní kódování a rozkódování pomocí tohoto klíče je rychlá záležitost.. Obtížnost eventuelního zjištění klíče záleží zejména na vlastní délce klíče. Šifrovaná zpráva musí odolat hrubému útoku silou, který předpokládá vyzkoušení všech možných klíčů. Pokud je klíč délky 8 bitů, existuje 28 (256) možných klíčů. Před několika lety se podařilo rozbít šifru DES s 56tibitovým klíčem. V dnešní době se užívají běžně klíče velikosti 128 bitů, kdy zjištění takového klíče by teoreticky trvalo asi 1039 let. To znamená že i při současném trendu vývoje IT budou klíče s touto délkou ještě nějakou chvíli použitelné.

Mezi symetrické metody kryptografie patří např. již zmíněný algoritmus DES (délka klíče 56 bitů) či jeho nástupce 3DES (násobný DES – klíč 3x delší než DES, tj. 168 bitů) anebo další, jako jsou BlowFish (proměnná délka klíče až 256 bitů) a IDEA (délka klíče 128 bitů), ČÁST (délka klíče 128 bitů), CIFER (délka klíče 16 bitů).

Výhody a nevýhody symetrické kryptografie

  • Výhodou symetrických metod je jejich rychlost. Dají se velmi dobře využít pro šifrování dat, která se nikam neposílají (zašifrují se dokumenty na počítači, aby je nikdo nemohl číst).
  • Největší nevýhodou je, že pokud chceme s někým tajně komunikovat, musíme si předem bezpečným kanálem předat klíč. To někdy může být obrovský problém.
  • Druhá nevýhoda je počet klíčů. Chceme-li zajistit, aby mohli tajně spolu komunikovat 2 osoby, je zapotřebí 1 klíče. Pro 3 osoby jsou to již 3 klíče, pro 4 osoby 6 klíčů, obecně počet klíčů = n*(n-1)/2, kde n je počet osob. Při vyšším počtu osob tak začíná být správa klíčů problémem.

Asymetrické metody kryptografie

Druhou skupinou kryptografických metod je tzv. "asymetrická kryptografie" (též angl. "public key cryptography"). Asymetrická proto, že využívá jiného klíče pro zakódování a jiného pro rozkódování. Dohromady se oba klíče nazývají párem klíčů ("kaypair"). Šifruje se pomocí tzv. veřejného klíče ("public key") a dešifruje pomocí soukromého klíče ("private key").



Veřejný klíč je skutečně veřejný, tj. pokud uživatel chce, aby mu někdo mohl poslat zakódovanou zprávu, musí nejprve dát k dispozici tento svůj veřejný klíč. Ten použije kolega pro zakódování tajné zprávy a kód odešle. Pro rozkódování pak potřebuje příjemce mít druhý klíč z páru, soukromý klíč, který jediný lze použít pro rozkódování. Klíčový pár se většinou tvoří zároveň. Algoritmus uživateli vygeneruje oba klíče, veřejný klíč uživatel dá k dispozici kolegům a soukromý klíč si dobře uschová.

S délkou klíče asymetrických metod je to kapku jinak, než u symetrických šifer. Asymetrické šifry většinou pracují se specifickým druhem čísel, např. s prvočísly. Při záškodníkových pokusech o rozkódování se pak stačí zabývat jen tímto oborem čísel a tedy i počet bitů klíče je třeba oproti symetrickým metodám patřičně navýšit, aby byla zachována požadovaná míra bezpečnosti. V dnešní době se tak běžně pracuje s 1024 bitovými či 2048 bitovými klíči.

Mezi nejznámější asymetrické metody patří algoritmy DH (Diffie-Hellman; 1976), RSA (Rivest-Shamir-Aleman; 1977) a DSA (digital signature algorithm; 1991).

Výhody a nevýhody asymetrické kryptografie

  • Hlavní výhodou je to, že není třeba nikam posílat soukromý klíč a tak nemůže dojít k jejímu vyzrazení. Naproti tomu veřejný klíč je možné dát k dispozici všem.
  • Je třeba méně klíčů než u symetrických metod – pro komunikaci několika osob postačí pro každou osobu jen jeden pár klíčů.
  • Nevýhodou asymetrických metod je však rychlost. Tyto metody jsou až 1000 x pomalejší než metody symetrické.
  • Další nevýhodou asymetrické kryptografie je nutnost ověření pravosti klíče, tj. stoprocentní identifikace majitele veřejného klíče. Pro tyto účely existují např. certifikační úřady, které zjednodušeně řečeno udržují databázi osob s ověřenou totožností a jejich veřejných klíčů. V teoretickém případě nabourání takového úřadu však může záškodník např. zaměnit klíče u různých registrovaných osob a tak nic netušící uživatel zakóduje tajnou zprávu veřejným klíčem záškodníka místo klíčem skutečného adresáta.


Vzhledem k pomalosti asymetrických metod kódování se často využívá kombinace obou metod, kdy se z každé metody využívají její přednosti. Tajný klíč symetrické metody je např. zakódován veřejným klíčem asymetrické metody a tak je zajištěno jeho bezpečné předání adresátovi. Tajným klíčem pak lze kódovat vlastní tajnou zprávu.

Někdy postačuje samotná symetrická kryptografie – to v případě, že si obě strany dokážou jiným bezpečným způsobem předat tajný klíč.

Další místo využití je např. v případě jednoho uživatele, který si chce ochránit své vlastní soubory před zneužitím tak, aby je mohl otevřít jen on sám. Tajný klíč se pak stává synonymem pro osobní heslo.

Vlastnosti a postupy

Obecné postupy při šifrování

  • Převedení textu na čísla a následné zobrazení množiny celých čísel na množinu celých čísel.
  • Výběr vhodné šifry (monoalfabetické nemají praktický význam) - podle příjemce, možného protivníka, podle počtu a délky vysílaných zpráv.
  • Sdělit příjemci způsob kódování (to bývá s výjimkou systémů s veřejnými klíči, tj. asymetrických metod, nejslabším článkem).
  • Rozdělení textu na bloky stejné délky, které je možno kódovat různým algoritmem.
  • Vhodné často měnit způsob kódování.

Charakteristika dobré šifry

  • Šifra by neměla být prolomitelná v reálném čase a s použitím „rozumných“ výdajů.
  • Šifrování by mělo proběhnout rychle.
  • Množství práce vynaložené na šifrování a dešifrování by mělo být úměrné požadovanému stupni utajení.
  • Šifrovací algoritmus by neměl obsahovat zbytečná omezení.
  • Implementace algoritmu by měla být co nejjednodušší.
  • Chyby při šifrování by se neměly příliš šířit.
  • Zprávy by se šifrováním neměly zvětšovat.

Popis některých metod používaných v běžném životě

Možnosti využití kryptografických metod v praxi je mnoho. V dalším textu se pozastavíme nad několika zástupci.

Jednosměrné šifrování

Při této metodě není možné dešifrování zašifrovaných dat. Aplikuje se nejčastěji např. při ukládání uživatelských hesel do databáze. Nově zadané heslo se zašifruje (např. pomocí funkce MD5) a uloží se bezpečně do databáze. Při opětovném přihlášení uživatele se zadané heslo opět zašifruje a tato šifrovaná hodnota se porovná s dříve uloženou hodnotou v db.

Steganografie (tajnopis)

Slouží k ukrývání tajných správ tak, aby i samotná informace o předání tajné zprávy nebyla známa. V historii se používaly např. tajné neviditelné inkousty, nepatrné vpichy ve vybraných znacích, mřížky zakrývající většinu zprávy s výjimkou několika písmen apod.
Dnes se používá např. ukrývání zprávy do tištěných obrazů s využitím více barevných odstínů než kolik může lidské oko rozlišit. Do obrazu 1024 x 1024 s různými stupni šedi lze ukrýt až 64 kB zprávu.

Digitální podpis (elektronický podpis nebo též e-podpis)

Zajímavou aplikací asymetrických metod kryptografie je tzv. digitální podpis. Pro použití digitálního podpisu potřebujeme nejprve nějakou známou hashovaní funkci (např. MD5 nebo SHA-1). Známou v tom smyslu, aby všichni adresáti, kteří budou chtít ověřit pravost naší zprávy tuto funkci znali (resp. ji znal program, který ověření na provede). Hash funkce udělá z naší zprávy tzv. otisk (angl. "message digest") nebo se výsledek také dá nazvat jakýmsi kontrolním součtem zprávy. Tento otisk má vždy stejnou délku bez ohledu na délku vstupní zprávy (128 či 160 bitů). Jednou z vlastností této hashovací funkce je fakt, že zaprvé prakticky není možné z otisku zpětné získání původní zprávy, a zadruhé je i velmi nepravděpodobné nalezení jiné zprávy, která by použitím hashovaní funkce dala stejný otisk.
Jestliže takto vzniklý otisk zakódujeme svým soukromým klíčem (nejčastěji se používá algoritmus DSA viz. níže), vznikne nám kýžený digitální podpis. Podpis pak přiložíme k původní zprávě, kterou podepisujeme, a zprávu i s touto přílohou odešleme. Příjemce zprávu otevře, a pomocí stejné hashovaní funkce zakóduje její obsah. Pomocí veřejného klíče odesílatele dále rozkóduje obsah digitálního podpisu. Je-li tento rozkódovaný obsah totožný s otiskem přijaté zprávy, je identita odesílatele potvrzena, jelikož nikdo jiný, než vlastník soukromého klíče nemohl digitální podpis s touto vlastností vytvořit.
Hashovaní funkce se používá z důvodu, aby přikládaný digitální podpis nebyl příliš velký. Pokud by odesílatel svým soukromým klíček kódoval celou zprávu, digitální podpis by byl minimálně jednou tak velký a tedy finální zpráva s podpisem by zvětšila objem minimálně na dvojnásobek. V případě použití hashovaní funkce je zaručena stejná funkčnost, avšak s minimální datovou přítěží k původní zprávě.

PGP

PGP kombinuje oba druhy metod kryptografie. Nejprve vygeneruje náhodný tajný klíč, který pak použije pro symetrické kódování vlastní tajné zprávy. Tento tajný klíč zakóduje pomocí veřejného klíče asymetrické metody (RSA či DH). Oba kódy (zakódovaný klíč i zakódovaný text zprávy) odešle příjemci. Příjemce pak vezme nejprve zakódovaný tajný klíč. Ten pomocí svého soukromého klíče dekóduje a následně jej použije pro rozkódování vlastní zprávy.
Tento princip tak šikovně kombinuje vlastnosti obou typu kryptografických algoritmů. Tj. rychlou funkčnost symetrického kódování a vysokou bezpečnost předání tajného klíče pomocí asymetrické metody kódování.
Nabízí se otázka, proč to dělat komplikovaně, když by se mohlo rovnou vše zakódovat asymetricky pomocí páru klíčů. Je třeba si však uvědomit, že s délkou zprávy stoupá i obtížnost práce s velkými čísly algoritmu asymetrické metody (viz. např. popis RSA níže). Jako symetrická metoda je u PGP nejčastěji použit algoritmus IDEA, příp. 3DES či CAST.

IDEA (International Data Encryption Algorithm; 1991)
- délka klíče je 128 bitů, patentovaný, pro nekomerční využití je zdarma,
3DES (TripleDES)
- třikrát aplikovaný DES, délka klíče je 128 bitů, (DES - Digital Encryption Standard - délka klíče je 56 bitů),
CAST (C. Adams - S. Tavers, 1997)
- délky klíčů jsou od 40 do 128 bitů.

V Praxi musí mít tedy každý uživatel PGP vygenerován klíčový pár, tj. veřejný a soukromý klíč. Je již standardem, že soukromý klíč je navíc chráněn heslem (které by měl znát jen vlastník), což je další klacek pod nohy případnému záškodníkovi, který by se náhodou soukromého klíče zmocnil a chtěl jej zneužít.
Veřejný klíč sestává z několika součástí, které identifikují vlastníka a také určují důvěryhodnost klíče. Každý klíč má své ID jakožto jednoznačnou identifikaci klíče. Dále obsahuje ID vlastníka či ID vlastníků daného klíče. Položkou, která pomáhá ostatním uživatelům s ověřením pravosti klíče je tzv. podpis jiným klíčem ("signature"). Jiný uživatel, který chce ostatním dát najevo, že daný klíč opravdu patří osobě, jejíž ID klíč obsahuje, může tento klíč podepsat. Tím důvěryhodnost daného klíče vzrůstá. Novější verze klíčů PHP mohou obsahovat i digitální fotografii vlastníka klíče. Poslední položkou klíče je samotný datový blok klíče, který se různí podle typu klíče (zejména se užívají typy RSA, DH s 1024 a 2048 velikostí, RSA ustupuje do pozadí, popis DH viz. níže).

PGP vzniklo v roce 1991. Autorem je odborník na kryptografii, Američan Philip Zimmermann. Nejprve byla jako asymetrický algoritmus užíván RSA, později se kvůli problémům s autorskými právy přešlo k DH/DSS, kde jako DH se používá ElGamalova varianta Diffie-Hellmanových kódů a na podepisování algoritmus DSA ze standardu DSS (viz. níže). PGP bylo původně vyvíjeno na Massachusetts Institute of Technology, poté jej převzaly postupně firmy ViaCrypt, PGP Inc., pak Network Associates, Inc. (NAI) a posledním vlastníkem (od r. 2002) se stala firma PGP Corporation.

SSL

Další aplikací kryptografických metod je protokol SSL, který vytvořila firma Netscape. Vrstva SSL (Secure Sockets Layer) řeší zabezpečení přenášených dat mezi klientem a serverem a je vložena mezi aplikační protokol a protokol TCP. Přenášená data se pak tedy mezi WWW serverem a browserem přenášejí kódovaně pomocí šifrování veřejným a soukromým klíčem (asymetrické šífrování). Klíče mohou navíc obsahovat autentifikační informaci od certifikační autority.

Klient i server si vygenerují dvojici klíčů. Každá strana jeden ze svých klíčů prohlásí za soukromý a druhý za veřejný klíč. Na začátku spojení si oba vymění veřejné klíče. Pokud odesílatel zašifruje data veřejným klíčem "protější" strany, má jistotu, že je přečte jenom příjemce s odpovídajícím tajným klíčem. Klíče bez podpisu certifikační autority slouží pouze ke kódování přenosu, nikoliv ke zprostředkování možnosti ověření autenticity serveru.

Při komunikaci se SSL WWW serverem nemusí mít klient svůj klíč podepsaný certifikační autoritou, klíče se vygenerují automaticky při instalaci browseru a běžný uživatel o jeho existenci ani nemusí vědět. Podepsaný klíč je nutný pouze v případě, že se tato povinnost zvolí v konfiguraci WWW serveru.

Při komunikaci s WWW serverem se SSL kódování použije pouze v úvodu spojení na výměnu jiného klíče pro další komunikaci a přejde se na kódování rychlým symetrickým algoritmem (DES, MD5 apod.).

Autentifikace serveru užitím certifikační autority
Kódováním komunikace je zajištěna bezpečnost proti "odposlechu" někým třetím. Uživatel se ale potřebuje ujistit, že komunikuje opravdu s tím správným serverem. K tomu slouží certifikace klíčů Certifikačními Autoritami (CA).

CA označí veřejný klíč (zpravidla se to dělá jen u serveru) svým otiskem. Při připojení browseru k takovému serveru se může uživatel ubezpečit, že se jedná opravdu o požadovaný WWW server. Jednoduše si zobrazí informace o certifikátu WWW serveru, jejichž věrohodnost zajišťuje podpis CA. V informacích o certifikátu si uživatel ověří především jméno daného WWW serveru a jméno certifikační autority, která vydala certifikát. Pravost certifikátu je automaticky ověřena tím, že se podařilo tyto informace otevřít, neb jsou kódovány tajným klíčem dané certifikační autority a odpovídající veřejný klíč CA musí být v browseru zaveden. Seznam povolených CA s jejich veřejnými klíči je v browseru přístupný a lze ho editovat a podle potřeby rozšiřovat.

Jinou možností než podpis CA je osobní převzetí veřejného klíče. V takovém případě si server podepíše veřejný klíč sám (stane se sám sobě certifikační autoritou). Tento "zaručený" klíč si pak uživatel sám zavede do browseru. Za pravost pak ručí přímo obsluha daného WWW serveru. Ne vždy je to však v praxi možné a je třeba pak důvěřovat podpisu CA.

Klíče a certifikáty uživatele browseru
Záleží na konfiguraci SSL WWW serveru, zda uživatel browseru musí nebo nemusí mít svůj klíč certifikovaný pomocí CA. Pokud ho nemá, browser použije pro komunikaci vygenerovaný klíč, kterým je pak přenos kódován, pokud uživatel certifikovaný klíč má, záleží na WWW serveru, zda verifikuje tyto certifikáty a zda případný záporný výsledek verifikace považuje za příčinu k okamžitému ukončení komunikace s tímto klientem. V konfiguraci SSL WWW serveru lze též zvolit, zda server akceptuje pouze certifikáty CA nebo i od CA pověřených podautorit.

Pokud by SSL WWW server ovšem vyžadoval certifikát některé veřejně dostupné CA, může si jej každý opatřit, význam má takové nastavení v případě, že obsluha SSL WWW serveru je zároveň i CA (tedy certifikuje klientům klíče). Pak je vyžadování takto podepsaných klíčů i jakousi verifikací oprávněnosti klientů (lze ji dalšímu uživateli přidat, nelze ji však jednomu odejmout).

Využití kódování pomocí SSL s certifikáty CA
Z výše uvedených informací tedy vyplývá, že při komunikaci s WWW serverem slouží SSL ke kódované komunikaci a poskytuje uživateli možnost si ověřit autentičnost WWW serveru. Typické použití je ověření si autenticity WWW serveru uživatelem před tím, než mu odešle číslo své kreditní karty.

Detailnější popis některých kryptografických algoritmů

Algoritmus RSA

RSA je nejznámější asymetrický kryptografický algoritmus a jeden z nejpoužívanějších. Jeho tvůrci jsou Ronald L. Rivest, Adi Shamir a Leonard Adleman. Algoritmus byl navržen v roce 1977 na Massachusetts Institute of Technology.

Algoritmus využívá vlastností čísel a operací, kdy můžeme poměrně snadno vynásobit dvě velká čísla, avšak poměrně o dost hůře se již získá rozklad výsledného součinu na prvočinitele, zvláště pak když původní velká čísla byla navíc prvočísla.
Jak tedy algoritmus pracuje. Při popisu ponecháme stranou matematický podklad funkčnosti a použitelnosti algoritmu.
V prvé řadě vezmeme libovolná dvě prvočísla A a B a jejich součin nazveme N. Dále nalezneme takovou dvojici čísel C a D, aby platilo, že C*D = 1 mod ((A-1) * (B-1)), tj. jinak řečeno aby zbytek po dělení součinu (V*S) výrazem ((A-1) * (B-1)) dával číslo 1.
Nyní dvojice [V,N] nechť se stane veřejným klíčem a dvojice [S,N] nechť je soukromým klíčem.
A teď již můžeme šifrovat. Ze zprávy Z o velikosti maximálně N vytvoříme zakódovanou zprávu K tak, že K = Z^V mod N (tj. použitím veřejného klíče [V,N]).
Adresát k rozšifrování zprávy použije soukromý klíč [S,N] tak, že Z = K^S mod N.

Jelikož veřejný klíč [V,N] je obecně znám, tj. je znám i záškodníkovi, je nutné zaručit dostatečnou komplikovanost rozkladu N na prvočinitele. Pokud by šel tento rozklad provést snadno, snadno by záškodník i nalezl odpovídající klíč [S,N]. Pro klíče velikosti 1024 či 2048 je míra bezpečnosti při stávajícím vývoji IT zatím dostatečná.

Algoritmus DH

Kryptografický systém ElGamal je variantou asymetrické šifry Diffie-Hellman, na kterou už vypršela autorská práva a může být proto použita v open-source. Tato šifra je založena na těžkém matematickém problému výpočtu diskrétního logaritmu, tedy vypočtení hodnoty X, která splňuje G^X = M mod P, přičemž G a M jsou čísla celá a P je prvočíslo.

ElGamal je použitelný pro šifrování i podepisování, v PGP (viz. výše) je však použit pouze pro šifrování.

A nyní, jak algoritmus funguje.
Mějme čísla M, A, B, P, G, X, Y, nechť P je prvočíslo a čísla splňují: M<P a Y=G^X mod P.
Veřejným klíčem je pak trojice [P,G,Y], přičemž P a G mohou být sdíleny i skupinou uživatelů.
Soukromým klíčem je [X], původní zprávou číslo M, zašifrovanou zprávou dvojice (A, B).

Pro tvorbu klíčů postupujeme takto. Náhodně najdeme prvočíslo P tak, aby bylo větší, než všechny potenciální zprávy M , které bychom chtěli šifrovat (tj. M<P). Poté náhodně zvolíme čísla G a X , obě větší než P. Poté dopočítáme číslo Y tak, že Y=G^X mod P.
Pro zašifrování zprávy M náhodně zvolíme číslo K, které je nesoudělné s (P-1), a vypočteme čísla A, B podle vzorců: A=G^x mod P a B=Y^X * M mod P. Poté číslo K zapomeneme (a tím ho utajíme). Výsledná šifra (A, B) bude mít dvojnásobnou délku než původní zpráva M.
Dešifrování provedeme tak, že M=(B/A^X) mod P.

Algoritmus DSA (standard DSS)

DSS neboli Digital Signature Standard je standardem digitálního podpisu amerického úřadu NIST - National Institute of Standards and Technology, původně National Bueau of Standards. Standard DSS definuje vše kolem digitálního podpisu - datové formáty, procesy podepisování a verifikace podpisu.

A nyní, jak algoritmus funguje.
Mějme čísla P, Q, G, X, Y, K, M, R, S, M', R', S' která splňují:
- P je prvočíslo, Q dělí (P-1) a je také prvočíslo,
- G=H^((P-1)/Q) mod P, kde H je libovolné celé číslo, pro které platí (1<H<P-1) a H^((P-1)/Q) mod P > 1,
- X je náhodně vygenerované a platí, že (0<X<Q), X=G^X mod P,
- K je náhodně vygenerované a platí, že (0<K<Q)).

Pak veřejným klíčem je sada čísel [P, Q, G, Y] , přičemž P, Q a G mohou být sdíleny skupinou uživatelů, soukromým klíčem číslo [X].
Původní zprávou je číslo M, digitálním podpisem dvojice (R, S), ověřovanou zprávou číslo M' a ověřovaným digitálním podpisem dvojice (R', S').

Digitální podpis (R, S) vytvoříme pomocí vzorců R=(G^K mod P) mod Q, S=((Sha(M)+X*R)/K) mod Q, přičemž Sha() je funkce, která vrací výsledek algoritmu SHA-1 (což je 160ti bitový řetězec) převedený na celé číslo.
Pokud se při výpočtu stane, že R nebo S bude rovno nule, vygenerujeme nové číslo K a celý postup opakujeme.

Ověření digitálního podpisu provedeme následovně. Nejdříve zjistíme zda platí dvě podmínky: (0<R'<Q) a (0<S'<Q).
Pokud neplatí, podpis není platný. Pokud ano, pokračujeme dále.
Dejme W=(1/S') mod Q, U1=(Sha(M')*W) mod Q, U2=(R'*W) mod Q a V=((G^U1*Y^U2) mod P) mod Q.
Jestliže pak platí, že R' = V, pak je možné prohlásit podpis i zprávu za autentické.

Zdroje – stránky o kryptografii

http://en.wikipedia.org/
http://www.pgp.cz/
http://www.ha.cz/a_spionaz/1kryptografie.htm

http://www.praha15.cz/elpodpis/carda1.swf - Prezentace el. podpisu pro širokou veřejnost
 
 

 

 

Z DALŠÍCH WEBŮ

REKLAMA