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

Cryptography

Cryptography (kryptografie): nauka o ochraně informací, řešené prostřednictvím transformace (šifrování, angl.: encryption) vstupního textu (angl.: plaintext) na šifrovaný text (angl. cyphertext), s možností zpětného dešifrování (angl. decryption) šifrovaného textu a získání původního vstupního textu.

Kryptografie, neboli nauka o "tajném psaní" (z řeckého: krypto-graphos), je disciplínou s poměrně dlouhou historií - vždyť její nejstarší doložené použití je připisováno samotnému Juliu Caesarovi. Nejvíce se o rozvoj kryptografie postarali vojáci, kteří mají z povahy své profese velký zájem na tom, aby se jejich informace nedostávaly do nepovolaných rukou, tedy do rukou nepřítele. Hlavně ve vojenském prostředí tak postupně vznikaly nejrůznější postupy a techniky "tajného psaní", označované také jako tzv. šifry. Některé z nich byly poměrně jednoduché, takové aby je bylo možné rychle použít i v polních podmínkách, zatímco jiné byly složitější a tudíž i relativně spolehlivější, ale jejich praktické využití zase vyžadovalo mnohem více práce od zkušených "šifrovacích důstojníků". A právě zde byl také jeden z nepříjemných kamenů úrazu, který posléze předznamenal celý další vývoj kryptografie jako takové: "šifrovací důstojníky", neboli osoby znalé momentálně používané šifry, mohl nepřítel při jistém úsilí zajmout, podplatit, či jinak získat na svou stranu. Tomu bylo možné se bránit zejména častými změnami celých šifrovacích postupů a technik (tedy samotných šifer), ale to zase kladlo neobyčejně velké nároky na samotné "šifrovací důstojníky" a na jejich neustálé přeškolování. Proto vývoj dospěl k zajímavému kompromisu: metody a postupy (neboli samotné šifry, z pohledu dnešní terminologie šifrovací algoritmy) se ustálily (fixovaly), ale byly parametrizovány - jejich konkrétní chování ovlivňovaly ještě další parametry, které bylo možné poměrně snadno měnit. Parametry, označované obvykle jako klíče (keys), pak nebylo problémem měnit i pro každou jednotlivou zprávu, zatímco celkový šifrovací postup (algoritmus) mohl zůstat beze změny. Dokonce se časem přistoupilo i k zdánlivě nesmyslnému kroku: samotný postup šifrování byl dokonce zveřejněn!

Možnost zveřejnění šifrovacího algoritmu vychází z faktu, že samotná jeho znalost ještě není k ničemu, pokud není doplněna také znalostí potřebného klíče. No a tento klíč (či: klíče) samozřejmě zveřejňován není. Co ale brání nepříteli v tom, aby si při znalosti celého šifrovacího algoritmu sám odvodil potřebný klíč, například i s využitím zašifrovaného textu, který mohl někde odposlechnout? Jinými slovy: v čem je "síla" takovýchto parametrizovaných šifrovacích algoritmů, které pracují s klíči? V čem je podstata jejich zabezpečení?

Ona podstata spočívá ve složitosti získání potřebného klíče. Pokud je totiž samotný šifrovací algoritmus vhodně navržen, může si jeho "legitimní" uživatel sám zvolit potřebný klíč, a s jeho znalostí provést jak samotné zašifrování konkrétních dat která mají zůstat utajena, tak i jejich zpětné dešifrování - přičemž pro něj jsou obě operace relativně jednoduché (v terminologii dnešních informačních systémů: jsou málo výpočetně náročné). Naproti tomu pro "protivníka" bez znalosti konkrétního klíče, byť se znalostí samotného postupu i případného zašifrovaného textu (a někdy i se znalostí původního nezašifrovaného textu), je naopak nesmírně složité použitý klíč najít. Důvodem je skutečnost, že jeho nalezení (díky vhodné volbě samotného šifrovacího algoritmu) ve skutečnosti znamená vyřešit takový matematický problém, o kterém je známo že je extrémně "těžký". Matematika takovýchto problémů zná celou řadu, a dokáže je i účelově vytvářet. Jejich "těžkost" přitom spočívá v tom, že pro ně neexistuje žádné jednoduché a snadné řešení, ale pouze takové řešení, které vyžaduje projít obrovské množství nejrůznější možností a kombinací. Množství tak obrovské, že ani dnešní nejvýkonnější počítač by nestačil vyzkoušet všechny dříve, než třeba za miliony let. Proto nevadí, když se "protivníkovi" přesně ukáže, kterou cestou se vydat k rozluštění nějakého tajemství - důležité je to, že ona cesta je tak dlouhá, že nikdo nestihne dojít až na její konec v čase, který by ještě dával smysl a stál za tu námahu.

Zveřejnění šifrovacích algoritmů i potenciálním "nepřátelům" tedy příliš nezhoršuje jejich bezpečnost. Přináší ale nějaký užitek? Odpověď je naštěstí kladná, ale zaslouží si poněkud hlubší úvahu.

I pro samotnou matematiku, která je "garantem" složitosti matematických problémů, na kterých jsou šifrovací algoritmy založeny, bývá dosti těžké najít spolehlivý důkaz o tom, že pro konkrétní problém skutečně neexistuje nějaké "snadné" a rychlé řešení. U některých problémů to sice lze dokázat (formou nevyvratitelného matematického důkazu), ale u mnoha dalších problémů takovýto důkaz (zatím) neexistuje. Proto v mnoha praktických případech se naše přesvědčení o extrémní složitosti určitého problému opírá spíše o domněnky, a dále o fakt, že žádné jednoduché řešení se ani po dlouhém hledání mnoha chytrými lidmi nepodařilo najít. Další potenciální "slabiny" pak může přidávat i praktické využití těžkého matematického problému v rámci konkrétního šifrovacího algoritmu - i zde mohou být různá úzká místa, která unikla pozornosti autorů. Jestliže se ale příslušný šifrovací algoritmus i jeho "matematické pozadí" plně zveřejní, najde se celá řada vědců, kteří budou sami, dobrovolně (a vlastně i zadarmo) zkoumat všechny jeho případné slabiny. Pokud se nějaká slabina najde, nenechají si to pro sebe, ale naopak to okamžitě zveřejní (aby si na tom vybudovali či posílili svou vědeckou kariéru). Díky tomu je pak možné s příslušnou slabinou něco udělat. Kdyby ale celý algoritmus zveřejněn nebyl, a na jeho případné slabiny přišel až "nepřítel", jistě by si to nechal jen pro sebe a snažil se z toho těžit.

Zajímavým argumentem proti spoléhání se na extrémní náročnost řešení matematických problémů je poukaz na to, že výpočetní schopnosti počítačů rostou také velmi rychle - jestliže dnes vychází určitá "výpočetní složitost" konkrétního problému například na stovky let, nebude v silách budoucích počítačů vypočítat vše potřebné třeba za jediný den? Pravděpodobné to je, a může to vést i k zajímavým paradoxům: je-li dnes potřeba vypočítat řešení určitého hodně složitého problému (s odhadem délky třeba na deset let), je výhodnější nezahájit výpočet okamžitě, ale naopak jej na delší dobu odložit. Později (například za několik let) je pravděpodobné, že budou existovat natolik výkonné počítače, že stihnou dokončit celý výpočet ještě dříve, než by skončil v případě svého okamžitého zahájení.

Zmíněný paradox je sice hezkým teoretickým příkladem, ale pro praxi nemá příliš velký význam - většina zašifrovaných informací ztrácí s časem velmi rychle na hodnotě, a jejich "prolomení" třeba za několik málo hodin může být už zcela bezcenné. Přesto je ale velmi důležité vědět, zda určitý způsob zabezpečení má i při rychle rostoucí výpočetní schopnosti počítačů dostatečnou rezervu na to, aby alespoň po určitou dobu (například nejbližších pár let) bylo jeho rychlé prolomení nad schopnosti i těch nejvýkonnějších počítačů. Naštěstí i zde existuje určité vodítko, a tím je velikost používaného klíče: čím je tento klíč větší, tím je obecně větší i "bezpečnost" šifrovacího algoritmu, který s takovýmto klíčem pracuje. Konkrétní závislost - tedy o kolik přesně stoupne "míra bezpečnosti" například při zvětšení klíče o jeden jediný bit - je sice poněkud komplikovanější záležitostí, ale obecně lze asi konstatovat následující: při postupném zvětšování klíče sice poněkud narůstá objem práce pro "legitimního" uživatele znalého potřebného klíče, ale pro "nepřítele", který klíč nezná, složitost jeho případného nalezení (vypočítání) roste opravdu mnohem a mnohem rychleji.

Libovolné zvětšování klíčů, a s ním pak i libovolné zvyšování míry "zabezpečenosti" konkrétního způsobu šifrování, však naráží na velmi důležité a významné aspekty netechnického rázu. Příslušné postupy totiž umožňují zabezpečit, s prakticky libovolně velkou zárukou "reálné nerozluštitelnosti" nepovolanou osobou, skutečně všechny informace, bez ohledu na to co jsou zač a jaký účel sledují. Nemusí tedy sloužit jen silám dobra, ale stejně tak mohou posloužit i silám zla, a v jejich rukou se stát opravdu velmi nebezpečnou zbraní. Před tím není možné zavírat oči. Na druhé straně dnes neexistuje ani jednoznačný konsensus o tom, jak se k této otázce vůbec stavět. Má být například dostupnost "silných" kryptografických nástrojů administrativní cestou omezována, tak aby se nedostaly do rukou "silám zla"? Ale jak to udělat, aby se zákazy neobcházely, a nedoplácely na ně spíše "síly dobra"? A kdo vůbec dokáže obě strany barikády spolehlivě rozlišit? Nebo mají být věci zařízeny tak, aby stát měl v rukou "univerzání klíč", se kterým dokáže okamžitě dešifrovat jakoukoli zašifrovanou informaci? Kdo ale zajistí, aby této možnosti nebylo zneužito? A jak to vůbec je s právem občanů na jejich soukromí, i ve vztahu ke státu vybavenému univerzálním klíčem? To všechno jsou nesmírně složité otázky, na které dnes neexistuje jednoznačná odpověď. K některým aspektům se ale vrátíme v dalších pokračováních této rubriky.


Další zdroje informací:
Na Internetu existuje obrovské množství informací o kryptografii: o její historii vypovídá například tento zdroj, základní fakta uvádí dokumenty FAQ zde a zde. Užitečným výchozím zdrojem pro hledání zdrojů zabývajících se kryptografií jsou např. části katalogu YAHOO, věnované kryptografii jako takové, a aplikované kryptografii.
Z "politických" aspektů kryptografie je zajímavé aktuální stanovisko vlády USA (z 12.7.97), týkající se mj. i exportních omezení na kryptografii z USA podle velikosti klíče. Poněkud jiný pohled na některé aspekty kolem kryptografie mohou mít organizace typu The Internet Privacy Coalition, či Electronic Frontier Foundation. Dostupná jsou i stanoviska organizace OECD.