PGP.CZ HomePage
Public Key Server
PGP Background
Cíle projektu pgp.cz
Administrativní a
technický kontakt
Návrh zákona
o digitálním podpisu
Co je PGP
Úvod do šifrování
Historie a současnost
Licence PGP
Download
Neomezená
komerční verze
Správa veřejných
klíčů PGP
Vyhledat klíč
Registrovat klíč
Zrušit klíč
Mail rozhraní serveru
Jak vygenerovat klíč
Podpora uživatelů
Často kladené dotazy
Novinky a informace
Mailing List
Máte dotaz?
Další informace
Zimmermann Telegram
Crypto-gram
                            .


Úvod do kryptografie

Krypotgrafie má svou dlouhou historii a opravdu se nevyskytuje jen ve filmech agenta 007, ale i v praktickém životě. Představte si, že posíláte kolegovi v práci seznam zaměstnanců a jejich platy. Dokument je samozřejmě tajný a Vy jej nechcete nechat běhat po síti jen tak. Nebo chcete utajit své dokumenty na počítači, na který má přístup kdokoli. Nebo chcete poslat e-mail kolegovi, ale chcete aby uvěřil, že je od Vás a ne od nějakého šprýmaře. Na všechno potřebujete kryptografii a věřte že PGP je opravdu to pravé.

Už za dávných časů Julia Caesara se posílaly tajné dokumenty. Stačilo zaměnit písmena zprávy za jiná např. takto: "A" bylo nahrazeno písmenem "E", "B" bylo nahrazeno písmenem "F", "C" bylo nahrazeno písmenem "G", atd., takže se celá abeceda jakoby posunula o 4 znaky. Takže ze zprávy "Ahoj" se stalo "Eltn" a zpráva byla utajená. Procesu, který z "Ahoj" udělá "Eltn" se říká obecně šifrování (v anglických textech encryption), procesu, který zprávu rozšifruje se říká dešiforvání (decryption). Původní zprávě ("Ahoj") budeme říkat holý text (plaintext), zašifrované části ("Eltn") budeme říkat zašifrovaný text (ciphertext).

Symetrická kryptografie

To už se blížíme k pojmu "Konvenční" nebo "Symetrická" kryptografie (Conventional cryptography), ve které vstupuje do hry tzv. klíč. Klíč spolu s holým textem vstupují do procesu šifrování, jehož výstupem je zašifrovaný text. Pro rozšifrování zprávy potřebujeme zašifrovaný text a opět klíč. V příkladu, který jsme si uvedli výše si můžeme představit, že proces šifrování bude "posunutí písmene v abecedě" a klíč bude číslo 4. Klíč může být i větší. Např. 2|13|6, tj. Text "AHOJAHOJ" se bude šifrovat takto :

A  H  O  |   J  A  H   |   O  J   =  C  U  T  L  N  M  R  W
2  13 5  |   2  13 5   |   2  13

Jako bychom rozsekali vstupní text na kousky po 3 písmenech (protože délka klíče je 3), každý kousek zašifrovali zvlášť(první písmeno "posuneme" o 2 znaky, druhé o 13, třetí o 5) a zašifrované kousky zase spojili. Dekryptování probíhá velice podobně. Viz. obrázek.

Tady bychom si měli povšimnout několika věcí. Pokud je tajnost zprávy závislá na utajení algoritmu šifrování, je to VŽDY špatně. Pokud by někdo zjistil, jak že to šifruje Julius Caesar ("posouvá abecedu o 4 znaky"), mohl by Julius Caesar klidně tenhle způsob zahodit. Současné algoritmy šifrování jsou obecně známé a tajnost zprávy závisí pouze na tajnosti klíče.

Další věc, které bychom si měli všimnout je délka klíče. Zatímco v prvním případě (klíč je 4, jeho délka je tedy 1) se písmeno "A" zašifruje vždy stejně (stane se z něho "E"), v druhém případě to tak není. Ve slově "AHOJAHOJ" se první "AHOJ" zašifrovalo jako "CUTL", druhé "AHOJ" jako "NMRW".

Kryptoanalýza se zabývá rozbíjením šifer. Pokud přibližně ví, co hledá (zdrojový kód programu v daném jazyce, text v angličtině, text české písně), dokáže na základě četnosti výskytu jednotlivých písmen či slov a statistických údajů pro daný jazyky šifru rozbít (vyluštit). Znamená to, že pokud zašifrujete text "bflmpsvz", tak ani kryptoanalýza takový text nerozluští. Na druhou stranu je i Vám takovýto text úplně k ničemu. Takže vlastnost, že se stejné části vstupního textu zakódují jinak, znesnadní kryptoanalýzu, což chceme. Jinak řečeno, čím delší klíč, tím lepší.

Nadešel čas si říct, že algoritmus "posouvání písmen" se pro šifrování rozhodně nehodí. Proč??? Představme si následující situaci. Alice a Bob spolu komunikují šifrovaným kanálem (tj. zprávy šifrují klíčem, který si předem vyměnili a nikdo jiný než oni dva klíč nezná). Je ovšem někdo, Udo, kdo chce vědět, co si posílají. Pro Uda totiž nemusí být příliš obtížné získat nějakou zprávu a její zakódovanou podobu. Např. pošle Bobovi zprávu a chce ,aby ji Bob poslal Alici, ale aby zprávu utajil. Pak poslouchá kanál mezi Alicí a Bobem a zašifrovanou zprávu si odchytí. Navíc zná algoritmus šifrování (ten je obecně známý). Na první pohled je vidět, že pokud by Alice s Bobem používali algoritmus "posouvání písmen", Udo by ze znalosti původní zprávy a zašifrované zprávy jednoduše obdržel klíč.

Naštěstí existují jiné funkce, u kterých platí, že je výpočetné velice obtížné získat klíč při znalosti původní zprávy a zašifrované zprávy (záleží na délce klíče. Při současných možnostech např. 1000000000 let, což je dost. Délka klíče 128 bitů (dnes asi 10 na třicátou devátou let) stačí bohatě i pro daleko rychlejší stroje než dnešní) a zároveň platí, že šifrování a dešifrování (když mám klíč) je rychlé. Mezi tyhle algoritmy patří DES, 3DES, CAST, IDEA, jejichž principy fungování se dozvíte ve většině knížek o kryprografii.

A nakonec výhody a nevýhody symetrické kryprografie, o které jsme se doteď bavili. Výhodou je její rychlost. Dají se také dobře využít pro šifrování dat, která nikam nejdou (zašifruji svoje dokumenty na svém 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 nějakým 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íčů. Představme si organizaci, v níž chce každý s každým komunikovat tajně, tak aby nikdo třetí nemohl odposlouchávat a tato organizace má 10000 členů. Pak je potřeba v celé organizaci mít 5 milionů klíčů. Při existenci Internetu a 5 miliard lidí na světě by bylo potřeba 12 500 000 000 000 000 000 klíčů.

Asymetrická kryptografie

Existuje ještě další způsob kryptografie, a tím je "Asymetrická kryprografie" (Public key cryptography). Asymetrická proto, že využívá jiného klíče pro šifrování a jiného pro dešifrování (narozdíl od symetrické). Viz následující obrázek.

Označení pro takovouto dvojici klíčů v anglické literatuře se nazývá keypair - pár klíčů. Klíč, pomocí kterého se šifruje, se nazývá veřejný klíč (public key) a klíč, kterým se dešifruje, se nazývá soukromý klíč (privátní klíč, private key). Tahle definice sice není úplně přesná, ale později bude upřesněna. Princip jak s tímhle systémem pracovat, je následující. Bob má svůj pár klíčů. Jeden soukromý a jeden veřejný. Jeho veřejný klíč znají všichni, soukromý klíč zná jen Bob. Kdokoliv mu chce poslat tajnou zprávu, zašifruje ji jeho veřejným klíčem. Jediný, kdo tu zprávu může rozluštit je Bob, dokonce ani odesílatel ji nerozšifruje.

Tento princip má své výhody. Hlavní výhodou je to, že lidé si nemusí před zahájením vyměnit klíče nějakým neodposlouchávaným komunikačním kanálem. Veřejný klíč mohou znát všichni. Za druhé je potřeba méně klíčů. Kdokoli chce posílat tajné věci věci Bobovi, použije Bobův veřejný klíč.

Další funkcí, kterou je možno realizovat pomocí asymetrické kryptografie, je tzv. digitální podpis. Co je to digitální podpis? Rozhodně to není podpis na konci e-mailu "Zdraví Tě Jirka, rosenmay@fi.muni.cz ". Ani to není nápis, že autor tohohle článku je Jiří Rosenmayer. Chtěli bychom to udělat tak, aby podpis byl jednoznačný (nikdo druhý ho nemohl udělat) a aby se snadno poznalo, kdo zprávu podepsal.

Jak tedy vypadá digitální podpis? Existují funkce (např. MD5), kterým se říká hašovací funkce. Hašovací funkce dělají takzvaný otisk zprávy (message digest). Hašovací funkci dáme na vstup libovolnou zprávu (libovolně dlouhou) a na výstupu obdržíme její otisk, který má pevnou délku (128 nebo 160 bitů). Pokud bychom ve zprávě změnili byť i jediné písmenko, dostaneme na výstupu úplně jiný otisk. Hašovací funkce jsou známé a kdokoli si může z jakékoliv zprávy takový otisk udělat. Navíc platí, že je výpočetně velice obtížné vytvořit k libovolné zprávě jinou zprávu, která má stejný otisk. (Asi tak stejně obtížné jako rozšifrovat zprávu bez klíče). Takovýto otisk se zašifruje soukromým klíčem (pozor!!! soukromým, ne veřejným, jako u kryptování celé zprávy) a dostaneme právě žádaný digitální podpis, který připojíme na konec původní zprávy.

Např. Alice podepíše zprávu svým soukromým klíčem. Nikdo jiný než Alice takový podpis nevytvoří, protože jen Alice zná svůj soukromý klíč. Samozřejmě, nějaký útočník může zase podpis ze zprávy umazat, ale nemůže podvrhnout jinou zprávu a podepsat ji jako Alice. Jak pozná Bob, že zprávu podepsala Alice? Rozšifruje podpis veřejným klíčem Alice a dostane otisk. Zavolá hašovací funkci (tu stejnou jako Alice - vstupem bude holá zpráva) a dostane pravý otisk té zprávy. Pak jej už jen porovná s otiskem, který si rozkódoval veřejným klíčem Alice, a pokud se rovnají, pak Bob ví, že zprávu mohla podepsat jen Alice. Dokonkce ani Alice nemůže tvrdit, že to není její podpis a že zprávu nepodepsala.

Proč se vlastně šifruje otisk zprávy a ne celá zpráva? Pokud by Alice zašifrovala celou zprávu a připojila ji na konec zprávy původní, pak by zprávu zdvojnásobila, kdežto připojením otisku (samozřejmě zašifrovaného) se zpráva zvětší jen o pár bytů.

Digitální podpis je aplikace, která se možná využívá více, než samotné šifrování zpráv. Je to asi logické, když uvážíte, s kolika tajnými dokumenty a s kolika podepsanými dokumenty jste se v životě setkali. Tak jako symetrická, tak i asymetrická kryptografie má své nevýhody. Za prvé je asi 1000x pomalejší, než kryptografie symetrická. Později se dozvíte, jak PGP využívá výhod obou způsobů.

Další, přímo achilovou patou asymetrické kryptografie, je pravost klíče. Musíte totiž 100% vědět, že klíč patří opravdu dané osobě, tj. vědět ,že není podvrhnutý (pokud Vám ho daný člověk osobně nepředal do ruky). Pokud jste došli až sem a všechno chápete, pak zbytek je hračka.

PGP se tváří jako systém využívající asymetrickou kryprografii a my jej tak zatím můžeme chápat. Umožňuje šifrovat, podpisovat, rozšifrovat, ověřit podpis Vaše zprávy. Pokud jste četli pozorně předchozí pasáž, budete považovat následující údaje za jasné. Pokud budeme chtít posílat šifrované zprávy svým přátelům (kteří taky musí mít PGP), potřebujeme k tomu následující věci: svůj pár klíčů, tj. soukromý klíč (abyste mohli podepisovat vlastní zprávy a dešifrovat zprávy, co Vám poslali ostatní) a veřejný klíč (ten pošleme svým přátelům, aby mohli ověřovat podpis a mohli šifrovat zprávy pro Vás vašim klíčem ) a veřejné klíče svých přátel (abyste mohli šifrovat zprávy, které posíláte ostatním a ověřovat jejich podpisy).

Vidíme, že potřebujeme celou klíčenku, přesněji kroužek s klíči. Přesně tak se totiž v PGP nazývá soubor, ve kterém jsou uchovány veřejné klíče - KEYRING - kroužek klíčů. V PGP jsou dva takovéto soubory. Soubor s veřejnými klíči a soubor se soukromými klíči. Můžete mít i více svých párů klíčů. Každý můžete používat pro jiné příležitosti. Jiný používat pro komunikaci s přáteli, jiný (třeba silnější) pro utajování dokumentů. Stačí snad ještě dodat, že v PGP je váš soukromý klíč navíc chráněn heslem (passphrase - heslo, ale mělo by být delší, nejlépe několik slov. Např. "Maminka mě nemá ráda"), pro případ, že by Váš klíč někdo získal z Vašeho počítače (proto musíte pořád heslo zadávat při rozšifrování a podepisování). Tyhle informace by mohly stačit na to abyste PGP mohli používat.

            1999, SkyNet a.s., Distributor produktů Network Associates, Inc.
            mailto:webmaster@pgp.cz