Návody
PGP a šifrování
PGP - Pretty Good Privacy
Z Support
Pretty Good Privacy (česky bychom řekli dost dobré soukromí) je balík programů, který umožňuje šifrovat a dešifrovat zprávy, digitálně je podepisovat, ověřovat identitu odesílatele a spravovat klíče. V podstatě je PGP možné použít stejným způsobem jako PKI.
Základní rozdíl mezi PGP a PKI je v přístupu ověřování majitele veřejného klíče - PKI využívá centrální certifikační autoritu (organizace má vlastní certifikační autoritu nebo využívá služeb třetí strany), zatímco PGP je založeno na decentralizovaných certifikačních autoritách, kdy každý uživatel PGP může vystupovat jako certifikační autorita. Každý z přístupů má své výhody, PGP je využíváno zejména uživateli, kteří nemají přístup k centrální certifikační autoritě nebo potřebují bezpečně komunikovat s lidmi, jejichž certifikační autoritě nedůvěřují.
Obsah[skrýt] |
Základní informace o PGP
Jak funguje PGP a další podrobné údaje lze nalézt například na stránkách http://www.pgp.cz, http://cs.wikipedia.org nebo http://www.pgpi.org/.
Pavučina důvěry
Ověření majitele veřejného klíče je možné buď přímo (osobně ověřená identita a fingerprint) nebo nepřímo, když identitu ověřil někdo jiný považovaný za důvěryhodného. Pokud takováto důvěryhodná osoba důvěřuje někomu dalšímu, můřemu mu také důvěřovat. Prakticky lze různým lidem důvěřovat různě, proto je míra důvěry odstupňovaná (nevím, nevěřím, částečně věřím, úplně věřím). Pavučina důvěry zachycuje tyto závislosti a umožňuje vyhodnocovat míru důvěry pro veřejné klíče uživatelů, které ověřil někdo jiný.
Detailnější popis je uveden na stánce http://www.softnov.cz
PGP party
Všechny certifikační autority vždy musí ověřit komu vydávají certifikáty. Chce-li uživatel PGP podepsat něčí veřejný klíč, stává se také certifikační autoritou a musí si tedy ověřit komu daný veřejný klíč patří. Pro takovéto účely jsou pořádány tzv. PGP party.
Běžný průběh takovéto party je následující. Každý z účastníků si na PGP party přinese své údaje (KEY-ID, KEYNAME a FINGERPRINT) vytištené na kouscích papíru. Potom každý účastník postupně obejde všechny ostatní účastníky a vymění si navzájem kousky papíru se svými údaji přičemž si podle nějakého dokladu ověří totožnost. Na konci PGP party všichni odchází s balíčkem údajů o cizích klíčích.
Teprve po návratu ke svému počítači proběhne vlastní akt podpisu veřejných klíčů.
GPG - GNU Privacy Guard
GNU Privacy Guard (GnuPG nebo GPG) je svobodná alternativa k PGP, vydaná pod GNU General Public License. K dispozici je pro většinu operačních systémů. Další informace o PGP lze nalézt například na stránkách http://www.gpg.cz/ nebo http://cs.wikipedia.org/wiki/GNU_Privacy_Guard
Instalace
V linuxových distribucích je GnuPG obvykle jako samostatný balíček, instalace je následující:
apt-get install gnupg
Pro některé další operační systémy (např. Windows) je potřeba instalační balíček stáhnout z adresy http://www.pgpi.org/download/gnupg/ a spustit instalaci.
Běžné operace s GnuPG
Následující operace jsou ty nejběžněji používané.
Vytvoření PGP klíče
Vytvoření páru (privátní a veřejný) klíčů je prováděno příkazem
gpg --gen-key
Je dobré vybrat si délku klíče minimálně 2048 bitů a expiraci nastavit na nikdy. Klíčovou frázi je potřeba si pamatovat, protože tato znalost je vyžadována při podepisování a dalších činnostech. Výsledkem je výstup např.
pub 1024D/BCB88B92 2007-05-10 Ales Padrta <Tato e-mailová adresa je chráněna před spamboty. Pro její zobrazení musíte mít povolen Javascript.>
Key fingerprint = 6328 6BF1 6835 AC7F BF8B F756 D8DB 958F BCB8 8B92
sub 2048g/07B6F0B9 2007-05-10
Ve výstupu lze identifikovat následující důležité informace :
- KEYNAME - v příkladu Ales Padrta <Tato e-mailová adresa je chráněna před spamboty. Pro její zobrazení musíte mít povolen Javascript.>
- KEY-ID - v příkladu BCB88B92
- FINGERPRINT - v příkladu 6328 6BF1 6835 AC7F BF8B F756 D8DB 958F BCB8 8B92
V následujícím kroku je potřeba vytvořit revokační certifikát pro případ zapomenutí klíčové fráze nebo kompromitace privátního klíče. Toto se provádí příkazem
gpg --output revoke.asc --gen-revoke Tato e-mailová adresa je chráněna před spamboty. Pro její zobrazení musíte mít povolen Javascript.
Vzniklý soubor musí být bezpečně uschován, protože jeho zveřejněním bude veřejný klíč zneplatněn.
Pokud jste se dostali až sem, měli byste mít následující soubory (v adresáři c:\gnupg nebo ~/.gnupg:
- secring.gpg - zde jsou uloženy všechny privátní klíče (vytvořené příkazem gpg --gen-key)
- punring.gpg - zde jsou uloženy všechny veřejné klíče (vytvořené příkazem gpg --gen-key nebo stažené)
- revoke.asc - revokační certifikát (každý vytvořený pár klíčů má vlastní soubor)
- trustdb.gpg - zde jou uloženy informace o pavučině důvěry
V souboru secring.gpg jsou uloženy privátní klíče, takže je nutné jej chránit jako oko v hlavě.
Výměna veřejných klíčů
Pro ověření podpisu je potřeba znát veřejný klíč odesílatele a pro zašifrování veřejný klíč adresáta. Nyní mám přeci pouze svůj veřejný klíč, jak se dostat k ostatním veřejným klíčům? V podstatě to jde dvěma způsoby, buď přímým zasláním nebo pomocí serveru spravujícího veřejné klíče PGP. Prakticky je používána spíše druhá varianta.
Přímá výměna vyžaduje exportování veřejných klíčů do souboru, který je pak poslán adresátovi. Export je realizován příkazem
pgp --output pubkeys.pgp --export
Chcete-li zaslat pouze omezenou množinu klíčů, zadejte část nebo celé KEYNAME, např.
pgp --output pubkeys_pavels.pgp --export Pavel
Případně můžete klíč specifikovat jeho KEY-ID, např.
pgp --output pubkeys_pavels.pgp --export BCB88B92
Příjemce si pak následně importuje všechny veřejné klíče ze zaslaného souboru příkazem
pgp --import pubkeys.pgp
Tím jsou veřejné klíče přidány do souboru pubring.gpg, případně jsou aktualizovány informace o podpisech klíčů.
Pro zjednodušení existuje pro správu podpisů veřejných klíčů řada serverů, které výměny veřejných klíčů zajišťují. Informace zaslané na jeden server se automaticky vypropagují na ostatní. Mezi takovéto podpisové servery patří např. wwwkeys.cz.pgp.net.
Poslání veřejného klíče specifikovaného svým KEY-ID na server wwwkeys.cz.pgp.net je prováděno příkazem
gpg --keyserver wwwkeys.cz.pgp.net --send-keys <KEY-ID>
Některé verze GnuPG umožňují také hromadné poslání všech veřejných klíčů a jejich podpisů ze souboru pubring.gpg na specifikovaný server příkazem
gpg --keyserver wwwkeys.cz.pgp.net --send-keys
Hromadné zasílání je potřeba potvrdit
Do you really want to send all your public keys to the keyserver? (y/N)
Také lze (opět pouze u některých verzí) omezit množinu veřejných klíčů zadáním celého či části KEYNAME, např.
gpg --keyserver wwwkeys.cz.pgp.net --send-keys Pavel
Stažení konkrétního veřejného klíče s KEY-ID 1BEDF25D ze serveru wwwkeys.cz.pgp.net je prováděno příkazem
gpg --keyserver wwwkeys.cz.pgp.net --recv-key 1BEDF25D
Není možné stahovat více veřejných klíčů najednou. Veřejný klíč je opět přidán do souboru pubring.gpg s aktuálními informacemi o jeho podpisech.
Protože jsou veřejné klíče v průbehu času porůznu podepisovány, je vhodné si občas aktualizovat informace. Místo postupného stahování jednotlivých klíčů je používán příkaz
gpg --refresh-keys --keyserver wwwkeys.cz.pgp.net
Jsou aktualizovány informace o všech klíčích v souboru pubring.gpg.
Výpis informací o stažených veřejných klíčích
Seznam všech dostupných veřejných klíčů lze vypsat příkazem
gpg --list-keys
Opět je možné výpis omezit zadáním části KEYNAME nebo KEY-ID
gpg --list-keys Pavel
gpg --list-keys BCB88B92
Výpis FINGERPRINTU všech dostupných veřejných klíčů je prováděn příkazem
gpg --fingerprint
S omezením pro KEYNAME nebo KEY-ID pak příkazy
gpg --fingerprint Pavel
gpg --list-keys BCB88B92
Podepisování veřejných klíčů
Nejprve je potřeba získat KEYNAME, KEY-ID a FINGERPRINT klíče, který má být podepsán. Také je nutné se přesvědčit, kdo vlastní příslušný privární klíč. Postup těchto úkonů je popsán v kapitole o PGP party.
- Stažení klíče, který má být podepsán
gpg --keyserver wwwkeys.cz.pgp.net --recv-key <Key_ID>
- Ověření fingerprintu klíče (vypsaný fingerprint musí souhlasit s tím z PGP party)
gpg --fingerprint <Key_ID>
- Podepsání klíče (je-li vše v pořádku)
gpg --sign-key <Key_ID>
- Také se lze podívat, kdo všechno klíč podepsal
gpg --edit-key <Key_ID>
check
- Odeslání podepsaného klíče na server
gpg --keyserver wwwkeys.cz.pgp.net --send-key <Key_ID>
Práce s pavučinou důvěry
Nastavení míry důvěry pro jednotlivé klíče je prováděno příkazy
gpg --edit-key <KEY-ID>
trust
Poté je potřeba vybrat míru důvěry
- Nevím nebo neřeknu - neúčastní se výpočtů důvěry
- Nedůvěřuji - při výpočtu důvěry je ignorován
- Důvěřuji částečně - částečná důvěra
- Důvěřuji úplně - plná důvěra
- Důvěřuji absolutně - pouze pro vlastníky příslušného tajného klíče
Veřejný klíč je považován za důvěryhodný pokud je podepsán x klíči s úplnou důvěrou nebo y klíči s částečnou důvěrou. Hodnoty x a y jsou věcí každého uživatele, obvykle je x = 2 a y = 4.
Vytvoření pavučiny důvery je provedeno spuštěním příkazu
gpg --update-trustdb
Postupně jsou procházeny všechny klíče a uživatel je dotazován jak moc danému člověku věří. V podstatě dávkové spuštění výše uvedeného. Na základě uvedených informací je vypočítána pavučina důvěry
Občas je potřeba pavučinu důvěry přepočítat kvůli revokacím, novým podpisům apod. To by mělo být prováděno automaticky, nicméně tuto aktivitu lze vyvolat také příkazem
gpg --check-trustdb
Oproti příkazu gpg --update-trustdb se liší tím, že zde není žádná interakce s uživatelem. Jsou použity pouye klíče s již zadanou důvěryhodností.
Používání PGP na více počítačích
Pokud je potřeba používat PGP na více počítačích současně, např. pracovní stanice a notebook, je nepraktické uchovávat veřejné i privátní klíče na několika místech současně. Nehledě na nutnost zabezpečit citlivé údaje na všech počítačích.
Proto je vhodným řešením uchovávat všechny klíče na jednom místě (např. flashdisku) a přimět GnuPG, aby klíče vždy hledalo v tomto umístění místo standardního c:\gnupg nebo ~/.gnupg. Následující příklady předpokládají, že obsah zmíňených adresářů byl přesunut na flashdisk do adresáře gnupg.
MS Windows
- Vytvořit v registrech klíč
HKEY_CURRENT_USER\Software\GNU\GnuPG
- Do vytvořeného klíče zadat položku HomeDir, která specifikuje adresář obsahující informace o klíčích (zde např. f:/gnupg). Mlčky předpokládejme, že MS Windows flashdisku přiřadí vždy stejné písmeno (obvykle tomu tak je).
Linux
- Vytvořit symbolický link (pro systém, který připojí flashdisk jako /media/usb0).
ln -s /media/usb0/gnupg ~./gnupg
Po provední těchto kroků už stačí pouze přijít ke správně nakonfigurovanému počítači, připojit flashdisk a používat PGP. Pokud není připojen, PGP nebude schopno pracovat.
PGP v Mozille Thunderbird
Do poštovního klienta Mozilla Thunderbird existuje add-on nazvaný Enigmail, který umožňuje snadné používání PGP v e-mailové komunikaci (oveřování, podepisování a šifrování pošty). Pro svou činnost využívá funkce GnuPG, takže potřeba mít GnuPG nainstalováno. Více informací je na stránce projektu Enigmail
Instalace
V linuxových distribucích je Enigmail obvykle jako samostatný balíček, instalace je tedy jednoduchá:
apt-get install enigmail
Pro ostatní OS je potřeba stáhnout na disk instalační balíček ve formátu xpi, k nalezení je například na stránkách
a naistalovat jej jako add-on
- V menu Mozilla Thunderbird otevřít menu Nástroje -> Správce doplňků
- Tlačítko Instalovat ...
- Nalézt dříve stažený soubor xpi
- Po proběhnuté instalaci je nutné Mozillu Thunderbird restartovat
Další informace o instalaci a řešení častých problémů je popsáno na stránce http://enigmail.spi.cz/help.html
Konfigurace
Postup při konfigurování Enigmailu je pěkně popsán krok za krokem na stránce http://enigmail.spi.cz/konfigurace.html. V některých verzích je zpřístupněno jenom základní nastavení, ostatní záložky se objeví až po zaškrtnutí políčka Zobrazit experní nastavení. Další doporučení a poznatky
- Zapisujete-li KEY-ID používaného klíče ručně nezapomeňte, že musí začínat 0x, jinak nebude rozpoznán
- Do položky pamatovat heslo vložte 0 (passphrase se nebude nikam ukládat)
Používání
Ověřování elektronických podpisů veřejnými klíči PGP je prováděno automaticky. Při otevření takového e-mailu se v horní částí zobrazí barevný proužek informující o výsledku ověření. Dále je v pravé části vidět (ne)zapečetěná obálka indikující tutéž informaci.
- Důvěryhodný správný podpis - zpráva byla podepsána odpovídajícím privátním klíčem a daný veřejný klíč je považován za důvěryhodný (ověřený buď osobně nebo pavučinou důvěry)
- Nedůvěryhodný správný podpis - zpráva byla podepsána odpovídajícím privátním klíčem, ale veřejný klíč nebyl dostatečně ověřen
- Nesprávný podpis - zpráva byla podepsána jiným privátním klíčem než tvrdí veřejný klíč
- Chyba - ověření se technicky nepovedlo (některé verze mají problém s kódováním příloh)
Dešifrování příchozích zpráv šifrovaných vaším veřejným klíčem je prováděno automaticky při otevření šifrovaného e-mailu. Před dešifrováním je požadována passphrase vašeho privátního klíče
Pro posílání a šifrování elektronicky podpsaných zpráv přibyla v horní liště hlavního okna ikonka s popiskem OpenPGP. Kliknutím na tuto ikonu mužete zaškrtnout zda zprávu chcete podepsat a/nebo zašifrovat. Pro posílání šifrované zprávy je nutné mít stažený veřejný klíč adresáta - což Enigmail oznámí a pokusí se daný klíč stáhnout ze zadaných PGP keyserverů.