Poté, co jsme si v minulém dílu našeho seriálu řekli něco o historii a
principech šifrování, podíváme se dnes na ryze praktickou stránku tohoto oboru
a tou je šifrovací software. V úvodu však uděláme ještě malou odbočku a povíme
si něco o algoritmech využívajících asymetrických (veřejných) klíčů.
Princip veřejného klíče
Princip těchto algoritmů je celkem jednoduchý. Je založen na dvojici
šifrovacích klíčů. Jeden z klíčů označujeme jako veřejný, který je všeobecně
znám, druhý jako privátní, který bychom měli znát pouze my. Zprávu lze šifrovat
oběma klíči. Ale o tom až za chvíli. Zřejmě nejznámějším algoritmem
využívajícím asymetrického klíče je RSA. Za tímto algoritmem stojí trojice lidí
a je po nich i pojmenován Ronald Rivest, Adi Shamir a Leonard Adleman. Celý
tento algoritmus je založen na obtížnosti (nemožnosti?) rozkladu velmi vysokých
čísel na prvočinitele (takzvané faktorizaci). Podle různých propočtů bylo
dokázáno, že je takovýto algoritmus za použití dnešního hardwaru prakticky
nerozluštitelný. No, uvidíme za pár let. Faktorizací si ale lze i slušně
vydělat. Pokud se vám například podaří faktorizovat číslo, které je uvedeno na
stránkách http://www.rsa.com, můžete si přijít na celkem slušnou finanční
odměnu, jež se pohybuje v desítkách tisíc dolarů.
Nyní se ale vraťme k principu šifrování za pomoci veřejných klíčů. Jak již bylo
řečeno, lze šifrovat za pomoci obou klíčů, veřejného i soukromého. To je možno
díky tomu, že každý veřejný klíč odpovídá právě jednomu klíči privátnímu a
naopak. V praxi z toho vyplývá následující:
1. Šifrujeme pomocí privátního klíče
Pokud šifrujeme pomocí svého privátního klíče (jiný privátní klíč k dispozici
nemáme, alespoň bychom neměli mít), znamená to, že může být zpráva dešifrována
jedině pomocí našeho klíče veřejného (každý privátní klíč odpovídá jednomu
klíči veřejnému vzpomínáte?). Jelikož je náš veřejný klíč všeobecně znám, může
zprávu dešifrovat prakticky každý. A to je princip digitálního podpisu. Nejde
zde o žádné utajení. Zpráva by měla být (a také je) snadno přístupná každému,
kdo má k dispozici náš veřejný klíč. Jelikož nemůže být zpráva dešifrována
jiným než naším veřejným klíčem, znamená to, že musela být zašifrována jedině
naším klíčem privátním. A jedinou osobou, která mohla tuto zprávu takto
zašifrovat, jsme my, jakožto majitelé privátního klíče.
2. Šifrujeme klíčem veřejným
Nyní tuto logiku obraťme naruby a představme si, že zprávu zašifrujeme veřejným
klíčem. Nepůjde logicky o náš veřejný klíč, ale o klíč někoho jiného. Jak již
jistě tušíte, jediný, kdo bude moci danou zprávu dešifrovat, je majitel
příslušného privátního klíče. Tímto způsobem budeme zasílat zprávy, které
chceme skrýt před zraky znuděných administrátorů nebo zvědavých kolegů.
Výše uvedené řádky by se daly shrnout do těchto dvou, myslím že celkem
výstižných vět:
- Pokud chcete utajit, šifrujte cizím veřejným klíčem.
- Pokud chcete podepsat, šifrujte svým soukromým klíčem.
Některé z vás jistě napadalo, co by se stalo, kdyby se někomu podařilo získat
váš privátní klíč. I na tuto situaci je však pamatováno. Více se dozvíte o
několik řádků později, až bude řeč o frázích.
PGP
PGP je v dnešní době jedním z nejrozšířenějších a troufám si tvrdit, že i
jedním z nejlepších šifrovacích programů. PGP napsal v roce 1991 Phil
Zimmermann. Od té doby byl program mnohokrát modifikován a vylepšován. V
současné době existuje tento program v různých verzích pro různé operační
systémy. Aktuální verze pro operační systémy z rodiny Windows nese označení
7.0.3 a je šířena jako freeware. Pro unixové systémy je k dispozici verze
6.5.8. Je namístě říci, že na unixových systémech, ale hlavně na Linuxu, se
dnes stále více používá program Gnupg, což je šifrovací nástroj odpovídající
standartu OpenPGP (RFC2440). Nutno však podotknout, že tento nástroj nepoužívá
žádný z patentovaných algoritmů, a proto nemůže být považován za kompatibilní s
PGP. PGP můžete získat z mnoha zdrojů na internetu, např. ze serveru
http://www.pgp.cz, nebo ho můžete pravidelně nalézt na CD, které je součástí
časopisu PC WORLD. Nyní se podíváme na to, jak vypadá jeho instalace.
Instalace v UNIXU (Linuxu)
Pro unixové systémy si můžete PGP stáhnout buď ve formě binárního balíčku, nebo
ve formě zdrojových souborů. Instalace pak probíhá klasicky, jako v případě
jakéhokoliv jiného softwaru. Pokud instalujete binární distribuci verze 6.5.8 a
setkáte se s chybovou hláškou o chybějící knihovně (podobný problém mě potkal u
RedHatu 7.1), doinstalujte balíček compat-libstdc++. I když existují grafické
nástavby, lze program efektivně ovládat z příkazového řádku. Skvěle zpracovanou
nápovědu naleznete v manuálových stránkách (man pgp). Prvním krokem po
instalaci by mělo být vygenerování dvojice klíčů (pokud je již nevlastníte).
Další informace, zejména návody, jak používat PGP s různými e-mailovými
klienty, naleznete v manuálových stránkách a souborech HOWTO.
Instalace ve Windows
V systémech Windows je instalace také velmi jednoduchá a dává nám na výběr
několik možností. Po obligátním odklikání Licence Agreement a volbě adresáře se
vás program zeptá, které součásti si přejete nainstalovat. Verze 7.0.3 nabízí,
kromě samotného programu, též firewall. K firewallům se vrátíme v některém z
dalších článků, takže toto téma nebudeme příliš rozebírat. Pokud používáte jiný
firewall nebo si nejste jisti, co přesně děláte, raději firewall neinstalujte.
V průběhu instalace si můžete rovněž zvolit plug-in pro svého poštovního
klienta. Podporovány jsou Outlook, Outlook Express a Eudora. Pokud používáte
jiného klienta, máte smůlu a budete si muset poradit jiným způsobem. Patříte-li
k zarytým odpůrcům programu Outlook (Express), což není zas tak ojedinělý
případ, vyzkoušejte Eudoru. Tento program je uživatelsky přívětivý, má
přehledné rozhraní, snadné ovládání co do možností plně nahradí výše zmíněné
produkty Microsoftu a neobsahuje (nebyly objeveny?) známé bezpečnostní díry
jako výše uvedené produkty. Program je v základní verzi dodáván zdarma.
Po dokončení instalace a následném restartu vás přivítá průvodce, který vám
pomůže vytvořit dvojici vašich klíčů. Pokud chcete změnit nastavení programu,
zejména co se týká algoritmů použitých k tvorbě klíčů, prozatím průvodce
zavřete.
Konfigurace PGP
Program PGP by se měl po správné instalaci spouštět ve skrytém tvaru jako
služba. Po poklepání na ikonku v systémové liště se vám nabídne několik
možností. První kroky by měly vést zřejmě na PGP keys (lze použít i Nabídku
Start). Pokud tedy zvolíme PGP keys, otevře se nám dialogové okno. Nastavení
programu naleznete pod položkami Edit Options. Zde pak můžeme zvolit například
cestu k souborům, které obsahují klíče, nastavit parametry PGP při použití
e-mailového klienta atd. Nejdůležitější je zřejmě poslední karta s názvem
Advanced, kde si můžeme zvolit, jaký algoritmus chceme použít (na výběr máme
mezi CAST, AES, TripleDES, IDEA a Twofish). O jednotlivých typech algoritmů
jsem si povídali minule, a je tedy na vás, který použijete. Poté již jen zbývá
vytvořit si vlastní šifrovací klíče (pokud jsme tak neučinili již po dokončení
instalace). Při vytváření klíčů je třeba odpovědět na několik otázek (jméno,
e-mail) a zvolit si frázi. O této frázi si povíme trochu podrobněji.
Fráze
Program PGP tuto frázi nebude používat jako kryptografický klíč, ale ze zadané
fráze pak vždy vypočítá pomocí funkce MD5 kontrolní součet. Díky tomu je možno
si zvolit libovolně dlouhou frázi. Správný výběr této fráze je velmi důležitý.
Obecně platí, že čím je fráze delší, tím je kvalitnější, což vám ostatně
oznamuje i indikátor kvality fráze, který je zobrazen v průběhu jejího
zadávání. Jako frázi je nejlépe zvolit nějakou větu, výrok, citát a podobně.
Nejdůležitější je však utajení této fráze. Jak již bylo naznačeno, je každý z
vašich klíčů uložen do souboru. K těmto souborům by neměl mít nikdo jiný než vy
přístup. To ale může být například v systémech Windows 9x problém, neboť každý,
kdo sedí u klávesnice, má přístup k celému obsahu disku, tedy i k vašim klíčům.
A právě zde nabývá na důležitosti fráze. Přestože se někomu podaří zmocnit se
vašich klíčů, bez fráze jsou mu k ničemu. Funguje to i opačně. Pokud někdo zná
vaší frázi, ale nemá šifrovací klíče, je mu fráze také na nic. V každém případě
je ale dobré mít obě věci pod kontrolou a nedovolit, aby se dostaly do rukou
třetí osoby to platí zejména o frázi. Řešením může být například uložení klíčů
na disketu, vypálení na CD apod.
Publikace klíče
Pokud jsme si vytvořili dvojici klíčů, zřejmě budeme chtít svůj veřejný klíč
publikovat, abychom mohli využít možností, které nám program dává. Klíč můžeme
publikovat několika způsoby. První možnost nám nabízí sám program, a sice
odeslání klíče do databáze některého ze serverů, který takovéto klíče
shromažďuje. Na výběr máme z několika serverů (v našem případě zřejmě využijeme
serveru ldap://keys.europe.pgp.com). Každý, kdo si poté bude chtít ověřit nebo
použít váš klíč, se k serveru připojí (port 11370) a klíč si ověří.
Další možností, jak někomu zaslat váš veřejný klíč, je jeho export do .asc
souboru a jeho následné zaslání například jako přílohy elektronické pošty
(můžete tento soubor zveřejnit také na svých webových stránkách atd.). Příjemce
poté soubor pomocí programu PGP importuje. Při importu si ještě nechá zobrazit
takzvaný fingerprint (otisk prstu) klíče a ověří si jeho správnost u
odesílatele (nejlépe telefonicky, pomocí SMS nebo osobně, tedy pomocí kanálu,
který by neměl mít pod kontrolou případný útočník). Pokud otisk souhlasí, může
klíč podepsat (dát mu důvěru) a začít ho používat.
Ostatní software
Na poli kryptografie však není jen program PGP, ale mnoho dalších. Na začátku
jsme se zmínili například o programu Gnupg, což je alternativa programu PGP.
Ale zejména pro systémy Windows existuje nepřeberné množství různých utilit,
které nabízejí možnost šifrování dat, šifrování obsahu celého disku,
zašifrování aktuálního okna atd. V záplavě takovýchto programů je opravdu těžké
se vyznat, a ne všechny programy jsou tak užitečné, jak se tváří. Většina
těchto prográmků může někdy spíše škodit, než pomáhat.
Pokud se rozhodnete použít některý z výše uvedených programů, měli byste si
položit několik základních otázek. Především je třeba vědět, jaký algoritmus
program používá. Pokud program používá některý z patentovaných a ověřených
algoritmů, je to celkem v pořádku, i když se mohou objevit problémy s
implementací tohoto algoritmu. Daleko horší je situace, pokud program využívá
nějakého uzavřeného, nebo ještě hůře, vlastního algoritmu. Dobrý a silný
algoritmus není opravdu snadné vymyslet a uvést do praxe. Proto se také může
někdy stát, že váš údajně superbezpečný prográmek k šifrování textových souborů
využívá algoritmus, který je ve svém důsledku stejně bezpečný jako již
zmiňovaný ROT13. Proto se raději vyhýbejte programům, u nichž neznáte jejich
algoritmus. Další důležitou věcí je efektivita programu. Program, který šifruje
algoritmem TripleDES padesátikilový soubor 10 hodin, je stejně efektivní jako
program, který stejný soubor zašifruje algoritmem ROT13 za 10 sekund. Na vás je
najít ideální hranici, takříkajíc poměr "cena/výkon". Neméně důležitou věcí je
též osoba tvůrce programu. Pokud je tvůrcem programu známá a vážená osobnost
jako například Phil Zimmermann, může být vaše důvěra v software daleko větší,
než kdyby byl autorem programu jakýsi ruský student, který ani nezveřejní své
jméno.
Závěrem
A tím se dostáváme k závěru našeho článku. Naším cílem nebylo plně osvětlit
problematiku kryptografie, ale nasměrovat čtenáře určitým směrem. Šifrování je
ve svém důsledku zábava, a těm, kteří mu přijdou na chuť, otevře jistě netušené
obzory. Taktéž téma digitálních podpisů je v médiích propíráno dlouhou dobu a
proto věřím, že tento miniseriál posloužil i lidem, kteří se o šifrování příliš
nezajímají. S tématem kryptografie se určitě v budoucnu ještě setkáme a zde
získané poznatky tak získají další souvislosti.
Všechny vaše rady, náměty na další články nebo seriál, názory a prosby opět rád
uvítám na adrese igm@centrum.cz.