Vyšlo na www.mediaserver.cz dne 29. července 1997
Vytištěno z adresy: http://www.earchiv.cz/axxxk160/a707k163.php3

Secret key vs. public key cryptography

Secret key vs. public key cryptography: (kryptografie s tajným klíčem, vs. kryptografie s veřejným klíčem): dva základní přístupy k ochraně informací prostřednictvím jejich šifrování, lišící se v povaze a významu klíčů, parametrizujících šifrovací algoritmus. Metody s tajným klíčem používají stejný klíč pro zašifrování i zpětné dešifrování, a tento klíč musí vlastnit obě (resp. všechny) komunikující strany. Naopak nikdo jiný tento klíč nesmí znát (proto: "tajný klíč"). Kryptografické metody s veřejným klíčem používají ve skutečnosti dvojice klíčů, které jsou vztažené k jednotlivým účastníkům komunikace: privátní klíč si každý účastník ponechává jen a jen pro sebe, zatímco svůj veřejný klíč zpřístupňuje všem ostatním. Veřejný a privátní klíč jsou přitom vzájemně komplementární: co je uzamknuto jedním z nich, může být odemknuto pouze druhým z nich.

Moderní kryptografie nabízí více možných přístupů i celých strategií ochrany informací před různými variantami jejich ohrožení. Tradičním přístupem (který jsme ostatně mlčky předpokládali v minulém vydání této rubriky) je použití dobře známého (tj. plně zveřejněného) postupu převodu zdrojového textu na šifrovaný text (tzv. veřejně známého šifrovacího algoritmu), parametrizovaného dobře utajeným (tj. nezveřejňovaným) klíčem, kterému se ne nadarmo říká tajný klíč (anglicky: secret key). Vše přitom těží z faktu, že ani se znalostí šifrovacího algoritmu (a dokonce ani se znalostí zdrojového textu) není možné si domyslet, odvodit či dopočítat tajný klíč. Přesněji: je sice známo jak by se takový tajný klíč měl hledat, ale současně se ví, že jeho faktické nalezení by trvalo neúnosně dlouho.

Důležité je také uvědomit si, že takovýto tajný klíč je pouze jeden - v tom smyslu, že se používá jak pro samotné zašifrování (encyption) zdrojového textu, tak i pro zpětné dešifrování již zašifrovaného textu (decryption). Proto se také příslušné šifrovací techniky někdy označují jako symetrické (používající stejný klíč na obou "stranách"). To je na jedné straně jistou výhodou, zejména tam kde data nikam necestují, a jejich šifrování a dešifrování provádí jeden a tentýž subjekt (tedy například při archivaci zašifrovaných dat na záložní média). Současně je ale existence jediného tajného klíče velkou nevýhodou v situaci, kdy si zašifrovaná data předávají mezi sebou dva různé subjekty - k tomu, aby jejich komunikace měla rozumný smysl, musí oba vlastnit jeden a tentýž tajný klíč, neboli sdílet spolu jedno společné tajemství. Samotné vlastnictví tajného klíče by přitom ještě nemuselo být až tak velkým problémem. Tím je spíše přenos tajného klíče, resp. distribuce tajných klíčů obecně: k tomu, aby se mohlo odněkud někam přenést něco důležitého (vlastní zpráva), a nedostalo se to do nepovolaných rukou, musí se nejprve přenést či jinak dopravit něco jiného, neméně důležitého (tajný klíč). Tento logický paradox, připomínající známé dilema o prvotnosti vejce či slepice, je přitom doslova vrozen všem technikám pracujícím s tajným klíčem, které se jej nemohou z principiálních důvodů zbavit. Musí se s ním vyrovnat nějakým jiným způsobem, například distribucí klíčů jinou (ne-elektronickou) cestou. Vždy se tím ale zvyšují potenciální rizika - ať již riziko prozrazení tajného klíče, kvůli kterému pak jakákoli ochrana přichází vniveč, či například riziko předání klíče někomu nepovolanému, kdo pak může vystupovat jménem skutečně oprávněného příjemce apod.

Snahy o odstranění právě popsaného paradoxu daly vzniknout následující zajímavé myšlence: šlo by nějak zařídit, aby klíč nemusel nikam cestovat (resp. mohl zůstat jen na místě kde byl vytvořen)? S tím že pokud by v souvislosti s možností jeho použití přeci jen bylo třeba něco přenést, byla by to jen taková informace, která může být veřejná, a její distribuce by tudíž nebyla žádným principiálním problémem?

V roce 1976 dva vědci na Stanfordově univerzitě přišli na to, jak to zařídit: museli k tomu ale rozdělit původně jediný tajný klíč na dva samostatné klíče, a každému účastníkovi zabezpečené komunikaci přidělit jednu takovouto dvojici klíčů (jako jeho vlastní klíče, vztahující se k jeho osobě - zatímco původní tajný klíč byl vztažen spíše k informaci jako takové, než k účastníkovi komunikace). Jeden z dvojice klíčů, označovaný jako privátní klíč (anglicky: private key) představuje "tajnou" část zabezpečujících informací, a má tu důležitou vlastnost, že vlastník tohoto privátního klíče jej nemusí nikomu sdělovat (zejména jej nemusí nikomu posílat). Druhý klíč, označovaný jako veřejný (anglicky: public) pak je skutečně tím, co naznačuje jeho název - je tou částí informace sloužící potřebám zabezpečení, kterou není třeba nijak utajovat, ale je naopak záhodno ji co možná nejvíce "roztroubit do světa". Dalším velmi důležitým momentem je skutečnost, že znalost veřejného klíče nevypovídá nic užitečného o tom, jak vypadá privátní (neveřejný) klíč: případný "nepřítel", který by chtěl najít privátní klíč někoho jiného, bude mít přesně stejně práce s jeho nalezením bez ohledu na to, zda má veřejný klíč dotyčné osoby nebo nikoli.

Pro správné pochopení toho, jak zabezpečení pomocí veřejných a privátních klíčů může fungovat, je vhodné si představit že oba klíče jsou vůči sobě komplementární (doplňkové, fungující jako kus a protikus): co je "uzamknuto" jedním z těchto vzájemně komplementárních klíčů, může být odemknuto právě a pouze druhým z nich. V tomto smyslu je také jejich použití označováno jako tzv. asymetrické šifrování.

Nyní si již můžeme snadno vysvětlit možné efekty použití takovýchto klíčů - předpokládejme neveřejnou komunikaci mezi dvěma osobami, kterým budeme pro jednoduchost říkat Václav a Miloš1. Každý z nich nechť má svůj privátní klíč, který si nechává jen a jen pro sebe, a dále veřejný klíč, který je naopak každému znám. Dále předpokládejme, že Václav chce poslat neveřejnou zprávu Milošovi: pokud ji Václav zakóduje veřejným klíčem Miloše, má jistotu, že půjde "odemknout" pouze Milošovým privátním klíčem, a tudíž jen samotnému Milošovi. Tím se dosáhne potřebné "privátnosti" zprávy, kterou si nemůže přečíst nikdo jiný než vlastník Milošova privátního klíče. Současně s tím se zajistí i to, že zpráva se dostane jen do rukou toho, komu je určena (tj. Milošovi). Nebude tím ale zajištěno "ověření identity odesilatele", tj. Miloš nebude mít záruku, že zpráva skutečně pochází od Václava - protože Milošův veřejný klíč si mohl přečíst a použít kdokoli, nejen pouze Václav. Zcela jinak tomu bude v případě, kdy se Václav jako odesilatel rozhodne "uzamknout" zprávu pomocí svého vlastního privátního klíče, a poslat ji Milošovi. Miloš jako příjemce bude muset "odemknout" přijatou zprávu pomocí Václavova veřejného klíče (který je mu, tak jako každému jinému, dobře znám). Tím Miloš získá jistotu o tom, že autorem zprávy je skutečně Václav (protože ji mohl "zamknout" pouze vlastník Václavova privátního klíče, tj. pouze Václav sám). Naopak Václav nebude mít záruku, že jeho zprávu si přečetl pouze Miloš a ne nikdo jiný - protože Václavův veřejný klíč si mohl zjistit kdokoli jiný, a s jeho pomocí zprávu "odemknout". V důsledku toho není tímto způsobem zaručena ani "privátnost" samotné zprávy (ale pouze autenticita jejího skutečného odesilatele).

Pokud bychom ale obě popsané varianty vhodně zkombinovali, dosáhli bychom téměř ideálního efektu: jediným možným (a dokonce prokazatelným) odesilatelem bude Václav, jediným možným příjemcem bude Miloš, a nikdo jiný nebude mít šanci se obsah zprávy dozvědět. Proč se tedy vůbec ještě uvažuje o nějakých jiných alternativách?

Důvody jsou ryze praktické - to, co jsme si popisovali, je jen velmi základní představa. V praxi například není zrovna jednoduché nalézt (resp. vypočítat) dvojici veřejný + privátní klíč (tak, aby vše skutečně fungovalo způsobem, který jsme si právě naznačili). Hlavně je ale praktické používání kryptografických technik založených na veřejných a privátních klíčích značně náročné, zejména na výpočetní kapacitu (přinejmenším ve srovnání s technikami, které používají tajný klíč). Právě to je hlavní důvod, proč techniky s veřejným klíčem dosud nepřevládly. V praxi se dnes rýsuje jako nejefektivnější symbióza obou technik: techniky založené na veřejných a privátních klíčích se použijí jen v úvodní části zabezpečené komunikace, pro potřeby distribuce tajných klíčů. Jakmile pak jsou tyto tajné klíče bezpečně na místě svého určení, další průběh komunikace je už zabezpečován méně náročnými technikami založenými na použití tajných klíčů. Ke konkrétním příkladům se ještě dostaneme.

V anglosaské literatuře se pro stejné účely obvykle používají anglická jména z počátku abecedy, například Alice a Bob. Autor tohoto textu se domnívá, že i v češtině máme hezká jména, a že nemusíme vždy a všude kopírovat zahraniční vzory. Pokud jde o rovnoměrné zastoupení obou pohlaví, příště spolu bude komunikovat Libuše a Vlasta!


Další zdroje informací:
Dokument FAQ věnovaný kryptografii s veřejným klíčem lze nalézt zde. Z tuzemských dokumentů věnovaných problematice kryptografie lze uvést např. tento článek na serveru firmy Microsoft, seriál vycházející v Computerworldu, či tento tutoriál.