Privacy guards
Poslat po síti nezašifrovanou zprávu je v podstatě stejné jako poslat běžnou poštou dopis bez obálky. Jistě, u některých typů korespondence nám nevadí, že si každý může přečíst její obsah, ovšem jindy by nemožnost ověřit autentičnost zprávy a poskytnutí jejího obsahu nepravým očím mohlo způsobit nemalé problémy. Typickou sférou, kde by používání nástrojů bezpečné komunikace mělo být pravidlem, je oblast obchodního styku. Každý zaměstnanec, který při své práci využívá pro komunikaci s obchodními partnery počítač, by měl mít možnost zabezpečený přenos zpráv využít a navíc by měl být poučen, jak správně s šifrovanými zprávami pracovat. To zahrnuje tyto schopnosti: vytvořit šifrovanou zprávu, zprávu (ať už šifrovanou nebo ne) digitálně podepsat a naopak být schopen přijatou zprávu dešifrovat a ověřit její integritu, tedy být schopen zjistit, zda je autorem zprávy opravdu ten, kdo je uveden jako její odesílatel, a zda nebyla při své cestě v síti pozměněna.
Aplikace, které umí se zprávami provádět popsané operace, se nazývají souhrnně privacy guards (tedy cosi jako strážci soukromí). Historicky prvním úspěšným privacy guardem byl věhlasný program PGP (Pretty Good Privacy, "docela dobré soukromí") od Philipa Zimmermanna, poprvé vydaný roku 1991. Ten se vyznačoval tím, že využíval při kódování zpráv asymetrické šifrování, což znamenalo, že při správném použití poskytoval opravdu velkou a spolehlivou míru bezpečnosti při současném zachování jednoduchosti použití. Jedním z dalších velkých plusů PGP bylo, že ho autor poskytl na internetu k volnému stažení, což je základem toho, aby mohl být program skutečně využíván širokou veřejností. Těžko byste totiž svému obchodnímu partnerovi nebo svým přátelům vysvětlovali, že si musí pro bezpečnou komunikaci zakoupit stejný software, jaký používáte vy. Naopak v případě, že je software volně k dispozici, můžete posílat zabezpečené zprávy bez problému.
Navzdory tomu, že program PGP se stal ve Spojených státech předmětem několikaletého vyšetřování, při kterém byl Philip Zimmermann obviňován, že porušil zákon o vývozu silných kryptografických nástrojů z USA, stal se v podstatě celosvětovým standardem pro šifrování a ověřování zpráv elektronické pošty.
GnuPG
Nástrojem pro bezpečnou komunikaci, kterým se budeme zabývat, bude GNU Privacy Guard (GPG či GnuPG). Je to bezpečnostně poněkud vylepšený klon PGP, který je, jak se u programů projektu GNU sluší, distribuován jako svobodný software. Zdrojové kódy jsou volně k dispozici, při použití neexistují žádná omezení pro soukromé ani komerční subjekty a aby byla "svoboda" nástroje GnuPG zachována, jsou ve standardní distribuci využity pouze šifrovací a hashovací algoritmy, které nepodléhají patentům. Ty patentované si má každý samozřejmě možnost doinstalovat, pokud je to nutné například pro zajištění kompatibility s programem PGP.
Nyní jsme si tedy nástroj GnuPG krátce představili, proto se podíváme, jak ho máme používat. Sama instalace programu je triviální záležitost, stačí si stáhnout program z oficiální homepage nebo přímo využít předpřipravený balíček v linuxové distribuci. Vzhledem k tomu, že samotný GnuPG se zabývá jen šifrovacími a ověřovacími procesy, ve své čisté formě se ovládá pomocí příkazového řádku. Pro komfortní vytvoření a správu našich osobních klíčů tedy využijeme grafickou nadstavbu GNU Privacy Assistant (GPA), která je stejně jako GnuPG součástí většiny linuxových distribucí.
Při prvním spuštění GPA se objeví okno s výzvou k vytvoření našeho GPG certifikátu. Ten obsahuje pár klíčů, přičemž jeden je soukromý a druhý je k němu náležející klíč veřejný. Dále jsou v certifikátu obsaženy údaje, komu certifikát náleží: jméno, e-mailová adresa a případný komentář. Posledním, co při vytváření certifikátu zadáváme, je tzv. passphrase, tedy vlastně heslo. Touto passphrase se symetricky zašifruje soukromá část generovaného klíče při ukládání na disk. Toto opatření je zavedeno kvůli tomu, aby případné napadení počítače, na kterém je soukromý klíč uložen, neumožnilo útočníkovi zcizit váš soukromý klíč. Hned po vytvoření certifikátu je dobré ho zálohovat na nějaké médium, které bezpečně uschováme. Opatření je vhodné opět kvůli soukromému klíči, jehož ztráta by nám znemožnila podepisovat a dešifrovat zprávy.
Nyní, když máme naše klíče vytvořeny a zálohovány, můžeme přistoupit k samotnému způsobu předávání zabezpečených zpráv. Nejběžnější použití GnuPG je zabezpečení elektronické pošty. Jak jsme si již řekli, GnuPG je pouze nástroj spustitelný z příkazového řádku. Pro jednoduché a efektivní využití budeme potřebovat GnuPG, integrovaný do e-mailového klienta. Nejčastěji je to zařízeno prostřednictvím plug-inu. My se zde budeme zabývat e-mailovým klientem Thunderbird, který je doplňkem stále oblíbenějšího prohlížeče Firefox. GnuPG plug-in pro Thunderbird se jmenuje Enigmail a v linuxových distribucích by měl být nabídnut k instalaci společně se samotným Thunderbirdem. Je ovšem nakonec docela lhostejné, který konkrétní e-mailový klient použijeme, jelikož šifrování, podepisování a ověřování zpráv se provádí ve všech klientech téměř shodně a samotný formát zabezpečených zpráv je předepsán standardem OpenPGP (RFC2440).
Šifrování a podepisování elektronické pošty
Pro zprovoznění zabezpečené pošty v Thunderbirdu musíme nejprve v nastavení našeho poštovního účtu povolit používání OpenPGP a zvolit, který certifikát chceme pro daný e-mailový účet používat. Nejlepší bude nechat Thunderbird automaticky certifikát vybrat podle e-mailové adresy.
Dále je již samotná práce se šifrovanou poštou jednoduchá. Při vytvoření nové zprávy máme v nabídce volbu "OpenPGP", pomoci které nastavíme, zda bude výsledná zpráva šifrovaná a zda ji chceme podepsat (tyto dvě volby jsou na sobě zcela nezávislé). Pro zašifrování zprávy musíme znát veřejný klíč adresáta zprávy. Pokud chceme podepisovat, budeme při odesílání e-mailu dotázani na passphrase našeho soukromého klíče, na jehož základě se podpis vygeneruje. Programy pracující s GnuPG si většinou zadanou passphrase po nějakou nastavenou dobu v řádu minut pamatují, abychom při vyřizování pošty nemuseli passphrase zadávat vícekrát.
Příjem šifrovaných zpráv je opět snadný. Narazí-li Thunderbird na šifrovanou zprávu, bude po případném zadání passphrase její obsah transparentně rozšifrován. To, že je zpráva šifrovaná, je indikováno ikonkou klíče, zobrazovanou při čtení. Posledním důležitým úkonem je ověření autentičnosti podepsané zprávy. K tomu stačí znát veřejný klíč autora e-mailu. Podpis zprávy se rovněž ověřuje automaticky a informace o tom, zda je podpis platný, se zobrazí při prohlížení zprávy v její hlavičce.
Distribuce a získávání veřejných klíčů
V minulých odstavcích jsme se zmínili, že k provádění některých úkonů s přenášenými zprávami "stačí znát něčí veřejný klíč". Bezpečné získání veřejného klíče nějaké konkrétní osoby nemusí být ovšem tak jednoduché. Ověření podpisu veřejným klíčem nám sice dává jistotu, že odesílatel podepsané zprávy znal odpovídající soukromý klíč, ale to ještě nemusí znamenat, že odesílatel je ta osoba, za kterou ho pokládáme. Pokud by si někdo vygeneroval certifikát na cizí jméno a podařilo se mu nás přesvědčit, že jeho veřejný klíč přísluší například našemu obchodnímu partnerovi, mohl by se za něj v korespondenci beze všeho vydávat. Jak tedy získat veřejný klíč tak, abychom si mohli být jisti, že náleží opravdu té osobě, se kterou si chceme vyměňovat e-maily?
Možností je více. První, nejprimitivnější a zároveň spolehlivá možnost je prostě se s danou osobou fyzicky sejít a navzájem si předat veřejné klíče, uložené například na flash disku. Z obdrženého flash disku si následně zkopírujeme partnerův veřejný klíč. Prostřednictvím příkazu Import v programu GPA veřejný klíč importujeme do svojí databáze známých klíčů. Po importu ovšem ještě není veřejný klíč programem GnuPG považován za platný. Aby se jím stal, musí být někým důvěryhodným podepsán. Protože po osobním setkání považujeme klíč za verifikovaný a sami k sobě máme absolutní důvěru, podepíšeme příkazem Sign veřejný klíč svým vlastním soukromým klíčem. Od této chvíle je získaný veřejný klíč programem GnuPG akceptován.
Popsaná možnost získání veřejného klíče je samozřejmě účelná jen do té míry, nakolik je možné osobní setkání. Existují však i jiné způsoby. Velmi používaný je např. systém zvaný web of trust (síť důvěry). Tento systém se zakládá na tom, že pokud více osob, které považujeme za důvěryhodné a jejichž veřejné klíče již vlastníme, podepíše certifikát nějaké osoby, jejíž veřejný klíč zatím nemáme ověřený, můžeme na základě podpisů oněch důvěryhodných osob novému klíči důvěřovat. Počet osob, které musí certifikát podepsat, záleží na tom, jaké důvěře se těší v naší databázi certifikátů. Osoba, které důvěřujeme absolutně, jsme my sami a všechny ostatní osoby mají důvěru jen částečnou. Proto jich také k ověření pravosti nového klíče musí být více, obvykle tři.
Asi posledním způsobem je využití takzvaného keyserveru. Keyserver je vlastně databáze veřejných klíčů, obvykle zpřístupněná přes webové rozhraní. Vzhledem k tomu, že data nejsou na keyserverech obvykle nijak ověřována a svůj veřejný klíč si zde může uložit kdokoli, informace získané z keyserveru mají pouze orientační charakter a je nutné je dodatečně ověřit, např. telefonicky pomocí jednoznačného otisku klíče, příznačně zvaného fingerprint. Keyserver je dobrým místem, kde začít, pokud chceme zjistit něčí veřejný klíč a nevíme, kde jinde ho získat. Co se týče našeho veřejného klíče, je dobré ho alespoň na jeden keyserver uložit. Bude pak pro ostatní mnohem snáze dostupný. Návod, jak to udělat, je k nalezení obvykle přímo na webových stránkách daného serveru.
Nyní již tedy máme svůj veřejný i soukromý klíč. Soukromý máme zálohovaný na flash disku v trezoru, veřejný je publikován na keyserveru. Máme ověřeny veřejné klíče svých partnerů. Umíme také poslat šifrovaný a podepsaný e-mail. Pokud ho někdo pošle nám, je pro nás hračkou ho rozšifrovat a ověřit jeho autentičnost. Můžeme tedy prohlásit, že naše elektronická pošta je nyní zabezpečená.
Užitečné odkazy
• www.gnupg.org
• www.openpgp.org
• www.mozilla.org/products/thunderbird
• www.keyserver.net
Slovníček
PGP (Pretty Good Privacy) - první snadno použitelný a opravdu bezpečný program pro šifrování elektronické komunikace.
GnuPG (GNU Privacy Guard) - klon PGP, přinášející některá bezpečnostní vylepšení a větší svobodu použití.
OpenPGP (RFC2440) - standard pro formát zabezpečených zpráv, přenášených po internetu.
Web of trust - schéma verifikace veřejných klíčů založené na tom, že důvěřujeme osobám, jejichž veřejné klíče už máme ověřeny.
Symetrická šifra - šifra, která pracuje pouze s jedním šifrovacím klíčem. Jedním klíčem zprávu zašifrujeme a tím samým klíčem ji umíme i dešifrovat.
Asymetrická šifra - šifra pracující se dvěma klíči. Pokud jedním klíčem zprávu zašifrujeme, lze ji dešifrovat jen tím druhým. Podle jednoho klíče navíc není možné určit jeho protějšek. Těchto vlastností asymetrické šifry využívá právě nástroj GnuPG.
Příjem šifrovaných zpráv je opět snadný. Pokud Thunderbird narazí na šifrovanou zprávu, bude po případném zadání passphrase obsah transparentně rozšifrován. To, že je zpráva šifrovaná, je indikováno ikonou.