PGP, OpenPGP, GPG a další
Tento seriál je určen běžným uživatelům, nenajdete v něm proto žádné rozbory algoritmů ani jiné teoretické popisy. Naopak se v něm dozvíte o zajímavých nástrojích pro využití známé bezpečnostní technologie. Základní úvod do problematiky však bude ku prospěchu věci, proto ho najdete v následujících odstavcích.
Technologii Pretty Good Privacy (PGP) vytvořil Phil Zimmermann již v roce 1991, tehdy především pro šifrování ukládaných souborů a komunikace na BBS (Internet v té době teprve vznikal). Protože v té době platily silné restrikce na export silnějších šifrovacích nástrojů z USA, Zimmermann si nechal zdrojový kód vytisknout jako knihu – její výtisky se mohly následně vyvážet. Za to Zimmermann čelil od roku 1993 trestnímu stíhání, které bylo o tři roky později zastaveno.
Velký význam měla verze PGP 3, která znamenala hned několik změn – kromě jiného zavedení nových, patenty nechráněných algoritmů. Tato verze už také neměla jen formu programu spouštěného z příkazové řádky, nýbrž i knihovny použitelné v širší škále aplikací.
Dalším klíčovým momentem byla standardizace. Standard PGP získal název OpenPGP a byl poprvé vydán v roce 1998 jako RFC 2440 (v informativní podobě ovšem již v roce 1996 – RFC 1991); aktuální verze je v RFC 4880 z roku 2007. V dalších dokumentech jsou obsaženy související standardy.
Krátce po vydání standardu (formálně se jedná o „navržený standard“, ale v tomto režimu je reálně většina standardů IETF) přichází poslední z hlavních událostí okolo této technologie – vydání první verze implementace GNU Privacy Guard (GnuPG, GPG). Jejím autorem byl Werner Koch a na implementaci předtím pracoval dva roky. Tato implementace, která v aktuální verzi 2.1 podporuje širokou škálu algoritmů a funkcí, nás zajímá nejvíc.
Co umí GPG
Přestože se o GPG hovoří hlavně v souvislosti s šifrování dat (zpráv, souborů), umí toho ale ve skutečnosti víc:
- symetrické, asymetrické a hybridní šifrování a dešifrování
- podepisování a kontrola podpisu
- podpora široké škály algoritmů (u verze 2.1 včetně kryptografie nad eliptickými křivkami)
- podpora pro veřejné klíče na keyserverech
- podpora pro klíče na čipových kartách
- nástroje pro správu klíčů (generování, export/import, revokaci, podepisování...)
Proto toto všechno jsou k dispozici utility spouštěné z příkazové řádky. Na rozdíl od původní implementace PGP však bohužel není u GPG k dispozici implementace ve formě knihovny, kterou by bylo možno snadno využít v dalších aplikací. Jedinou možností je tedy spouštět jednotlivé utility – předávat jim vstupní data a přebírat ta výstupní. Nemusí se to však dělat přímo, existuje knihovna nazvaná GnuPG Made Easy (GPGME), která to řeší, stačí tedy volat její API.
GPG je multiplatformní software. Lze ho využít na široké škále platforem, zejména GNU/Linux, *BSD, Microsoft Windows, Apple OS X nebo VMS. Kromě zmíněných platforem ho lze používat i na dalších, je však třeba dát pozor na to, aby byl dostupný dostatečně kvalitní zdroj entropie.
Také ve virtualizovaném prostředí může být se zdrojem entropie problém. Ne však s jeho implementační kvalitou, nýbrž s dostupností dostatečného množství pseudonáhodných dat. Proto může někdy generování klíčů trvat ve virtualizovaném prostředí i několikařádově déle než na fyzickém stroji.
K čemu všemu lze GPG využít
Ze škály dostupných funkcí vyplývá, k jakým účelům můžeme GPG v praxi využít:
- šifrování a dešifrování zpráv a souborů
- podepisování zpráv a souborů
- kontrola podpisu a integrity zpráv a souborů
- podepisování a „odpodepisování“ patchů pro zdrojové kódy
- podepisování a kontrola softwarových balíčků
- ověřování totožnosti na serverech
Uvedený seznam samozřejmě není vyčerpávající a jistě půjdou najít i další možnosti využití, i když ne vždy bude takové využití účelné.
Proč vůbec GPG (a podobné nástroje) používat
Lze to rozdělit na dvě části. Nejprve je potřeba si odpovědět na otázku, proč vůbec nějaké takové nástroje používat. V dnešní době však už určitě nikdo nepochybuje o tom, že šifrování dat je v mnoha případech nezbytností a že podobnou nezbytností je i jejich podepisování.
Mnoho citlivých dat se dostalo do nesprávných rukou a jejich další osud závisel na tom, zda byla kvalitně zašifrována či nikoliv. Ve druhém případě mohla být data zneužita, často k něčí velké škodě. Podobné je to i v případě elektronického podepisování. Pokud nemáme možnost ověřit, kdo zprávu nebo soubor vytvořil a zda nebylo do dat zasaženo, nelze mít k obsahu takových dat žádnou důvěru – mohla být podvržena nebo upravena.
Druhou otázkou je, proč používat právě GPG. Odpověď lze z části nalézt v předchozích odstavcích. Je to multiplatformní svobodný software, kvalitně implementovaný, podporuje otevřený standard OpenPGP, umí pracovat s širokou škálou algoritmů. Ještě je potřeba dodat další důležitou věc: existuje k němu řada snadno použitelných aplikací (samostatných i jako součást obecnějších programů), často s grafickým rozhraním.
Nástroje spouštěné z příkazové řádky
Než se ale k těmto nástrojům dostaneme, podíváme se – v příštím dílu seriálu – na ty, které se spouštějí z příkazové řádky. Lze jimi ovládat vše, co GPG umí.