Určitě nebude od věci vysvětlit základy asymetrické kryptografie, na které je technologie PGP postavena. Asymetrická kryptografie pracuje tak, že šifra nepoužívá jeden, ale hned dva různé klíče. První slouží k šifrování a jeho výstupem je zašifrovaná zpráva. Tu lze přečíst (dešifrovat) jen a pouze pomocí druhého klíče. Tento způsob má oproti tradičním šifrám, které používají tentýž klíč pro šifrování i dešifrování, jednu velkou výhodu. Svůj šifrovací (veřejný) klíč můžete umístit na veřejném, ale důvěryhodném místě (například osobní WWW stránka nebo klíčový server), kde si ho každý může zkopírovat a zašifrovat s ním utajovanou zprávu. Tu pak může bez obav poslat a bude mít jistotu, že si ji může přečíst pouze adresát, respektive držitel soukromého (dešifrovacího) klíče.
Právě zacházení se soukromým klíčem je bezpečnostně nejkritičtější částí technologie PGP. Pokud privátní klíč používáte jen na svém počítači, ke kterému nikdo kromě vás nemá přístup, je všechno v pořádku. Pokud jej ale máte na počítači, který kromě vás používá více lidí, je nutné si privátní klíč dodatečně chránit dostatečně kvalitním heslem, tzv. passphrase, jehož zadáním bude podmíněna jakákoliv manipulace s klíčem.
Vedle šifrování zpráv řeší PGP i problematiku jejich autenticity. Princip je podobný jako v případě šifrování. Odesílatel připojí ke zprávě zvláštní dodatek, který se jednocestně vygeneruje z textu zprávy pomocí některé z hashovacích funkcí. Tento dodatek, tzv. „message digest“, zašifruje svým soukromým klíčem, čímž vznikne elektronický podpis. Příjemce si opatří veřejný klíč odesílatele, dešifruje přiložený podpis a porovná jej s tím, jak by měl vypadat podle jeho výpočtu. Pokud oba výsledky souhlasí, lze zprávu považovat za autentickou.
Různé verze programů PGP jsou k mání pro různé sw. platformy včetně Linuxu, avšak tyto programy obsahují celou řadu patentovaných technologií, které velmi omezují možnosti šíření, zejména ve vztahu k dostupnosti zdrojového kódu, a kromě toho je lze zdarma používat pouze pro osobní potřebu.
Celý problém byl vyřešen klasickým linuxovým způsobem. Vznikl projekt, GnuPG, který je pokusem o Opensource implementaci technologie PGP s přiměřenou kompatibilitou se standardem OpenPGP podle RFC 2440. Právě GnuPG je nejpoužívanějším programem svého druhu v Linuxu a jeho praktickému použití bude věnován příští, praktičtější díl tohoto článku.
Jak je v Linuxu zvykem, GnuPG je program pracující ve znakovém režimu, který se ovládá pomocí sofistikovaných příkazových zkratek. Uživatelé zvyklí na GUI prostředí si možná budou chtít stáhnout nějakou grafickou nadstavbu usnadnňující práci s programem. Za všechny jmenujme například Gpa nebo Seahorse.
Nejpoužívanější aplikací GnuPG je šifrování elektronické pošty. Proto budeme potřebovat také mailového klienta, který GnuPG podporuje. Zřejmě nejlépe je podpora dotažena v Muttovi, ale PGP podporují i další mailery, například Pine, KMail nebo Evolution.
V této souvislosti je nutné zmínit se o dvou přístupech při podepisování elektronické pošty. Jedna skupina programů používá metodu, při které se podpis spolu s identifikačními znaky začlení přímo do těla podepisované zprávy, takže příjemce obdrží něco jako:
----BEGIN PGP SIGNED MESSAGE----- tady je vlastní zpráva ----BEGIN PGP SIGNATUTE---- tady je připojen vlastní elektronický podpis ----END PGP SIGNATURE---
Druhé, novější řešení připojí podpis jako MIME přílohu (formát application/pgp), takže vlastní tělo zprávy zůstane beze změny. Samozřejmě elegatnější je druhá metoda, ale ne všechny mailery podporují MIME a ne vždy je možné posílat mail s přílohou (například některé emailové konference přílohy filtrují). Pokud váš poštovní program rozumí MIME formátu, můžete zpracovávat i plaintextový formát, filtrujete-li si poštu přes procmail nebo jiný MDA.
Pro samotné šifrování používá GnuPG šifru RSA, přesněji DSA nebo ElGamal. Kromě nich umí GnuPG pracovat také se symetrickými (s jedním klíčem) šiframi 3DES, Blowfish, CAST5 a Twofish, které můžete použít například pro bezpečnou úschovu dat. Pro vytváření elektronických podpisů se používají technologie MD5, RIPEMD160 a SHA1. Z chybějících vlastností je nutné zaznamenat absenci šifry IDEA (z patentových důvodů), kterou používá program PGP 2.x a kterou také vyžaduje specifikace OpenPGP. Díky tomu mohou vzniknout problémy s kompatibilitou, pokud odesílatel používá algoritmus, který příjemcův program neakceptuje.
V příštím díle si ukážeme praktický příklad, jak si vygenerovat svůj vlastní elektronický podpis pomocí programu GnuPG, jak bezpečně zveřejnit svůj veřejný klíč na síti a jak vypadá použití elektonického podpisu ve vybraných emailových programech.