Používáme GPG k šifrování a podpisům #2

Autor: Polarkac, dne 29. listopadu 2015

Tagy: Polarkac, GPG, asymetricke, sifrovani, podpisy, OpenPGP, bezpecnost

V předchozím článku jsme si vygenerovali klíče, které budeme používat. Nyní si ukážeme, jak klíče můžeme distribuovat, jak cizí klíče vložíme do klíčenky a zašifrujeme si první zprávu.

Distribuce klíčů

Úplně nejzákladnější metoda, jak předat klíč někomu jinému, je klíč exportovat a předat mu ho jako soubor, třeba na flash disku. Výhodou této metody je, že si navzájem můžeme ověřit identity, že předáváné klíče jsou od očekávaných osob. Nevýhodou naopak je, že se musíte osobně sejít, což v případě lidí z různých zemí není úplně ideální.

Další jednoduchou metodou je zaslat klíč emailem. Toto už má ale jednu zásadní nevýhodu. Nemáte stoprocentní jistotu, že někdo neodeslal podvodný klíč. V tomto případě je dobré ověřit si otisk přijatého klíče s danou osobou například po telefonu.

V případě, že máte své osobní stránky, můžete svůj klíč zveřejnit zde. Opět zde platí, že byste si měli ověřit pravost klíče i další metodou, stejně jako u emailu.

Poslední, nejčastější metodou je zveřejnit klíče na keyserver. GPG podporuje už v základu odeslání klíče na keyserver, takže stačí zadat pouze příkaz

gpg --keyserver adresa.keyserver.com --send-key pohlreichlukas

Nejpoužívanějšími keyservery jsou například pgp.mit.edu, keys.gnupg.net nebo pool.sks-keyservers.net. Poslední zmiňovaný keyserver je ve skutečnosti tzv. pool, který synchronizuje klíče s mnoha keyservery včetně již zmíněných.

Pro stažení klíče z keyserveru do klíčenky použijte příkaz

gpg --keyserver adresa.keyserver.com --recv-key identifikator

V tomto případě je nutné zadat keyserver, kde je klíč nahrán. Pokud uživatel nahrál klíč pouze na jeden keyserver, tak musíte použít ten. V případě identifikátoru doporučuji použít otisk, jelikož část jména nebo emailu nemusí být jednoznačná a může najít více klíčů.

Exportování veřejných klíčů

Výstupem exportu není pouze jeden veřejný klíč, ale všechny veřejné klíče a podklíče, které patří k hlavnímu klíči (master key). GPG nám při výběru formátu exportovaných klíčů dává dvě možnosti v závislosti na metodě distribuce.

Klíče můžeme exportovat v binární podobě. Toto ovšem nemusí být žádoucí, když například publikujeme klíč na webu. V takovém případě můžeme exportovat klíč v ASCII-armored formátu. Binární podoba klíčů se převede do Base64 kódování, které používá pouze alfanumerické znaky. Takto vypadá můj ASCII-armored veřejný klíč.

gpg --output nazevSouboru --export identifikator
gpg --output nazevSouboru --armor --export identifikator

nazevSouboru je soubor, do kterého bude klíč exportován, a identifikator je otisk klíče, část jména nebo emailu. Pokud nepoužijeme přepínač --output, tak se výstup zobrazí v terminálu.

Importování veřejných klíčů

Jednu metodu pro importování už jsme si ukázali, a to import klíče z keyserveru. Pro importování klíče, který nám přišel emailem nebo jsme si ho stáhli na webu, použijeme příkaz

gpg --import souborKlice.pub

Nyní máme klíč v klíčence a můžeme ho začít používat pro šifrování zpráv nebo ověřování podpisů.

Šifrování souboru nebo zprávy

Stejně jako u exportování klíče i zde máme na výběr mezi binárním nebo ASCII-armored formátem pro zašifrovanou zprávu nebo soubor. Příkaz pro šifrování je následující

gpg --output nazevSouboru --armor --encrypt --recipient prijemce souborKSifrovani

nazevSouboru je opět soubor, do kterého se uloží výstup. prijemce je otisk, část jména nebo emailu klíče, který použijeme pro šifrování. souborKSifrovani je soubor, jehož obsah budeme šifrovat.

Je důležité poznamenat, že pokud uvedeme příjemce, kterým nejsme my sami, tak nebudeme schopni zprávu dešifrovat. V případě, že bychom chtěli soubor zašifrovat pro příjemce i pro sebe, abychom ho mohli v budoucnu dešifrovat, tak musíme uvést více příjemců, z nichž jeden je sám odesílatel.

gpg --output nazevSouboru --armor --encrypt --recipient prijemce --recipient pohlreich souborKSifrovani

V obou případech můžeme vynechat přepínač --armor, což nám soubor uloži v binární formě. Také můžeme vynechat přepínač --output, pokud chceme výstup zobrazit v terminálu a nechceme jej uložit do souboru.

V případě, že chceme zašifrovat jen nějakou krátkou zprávu, můžeme vynechat souborKSifrovani. Po spuštění příkazu máme možnost vložit nebo napsat text, který chceme zašifrovat. Pomocí Ctrl+D ukončíme vstup (odešleme EOF) a GPG nám vrátí/zapíše zašifrovanou zprávu.

Ukázka:

-----BEGIN PGP MESSAGE-----
Version: GnuPG v2

hQIMAxYaQuhDeVQiAQ/9HwSET5vOGBDLdum6SrKpGnqiSwB3w4PtHg88+LIajEDF
2ake8s/dB6m20MyBp4OEof1JVsny4tf969fQEq9yL/ylFDowqfmVQMqYIIG3sj2t
+qJgaG3wn0TP22jK3kmcVsRj6co//9z72pRVrIjDy8qhoPk/Z1plJwaXEe+47/vv
qnATD2F7ADxm/ATgO+zJ41DhRCOOt3SuSbTB9FgAa9PiPm39FG4og8cMzQ2aRs+O
0hEhtmsZeJbTm/21UEkqRi8WBiTZGECRoDS2WCG7zb1DqahZqyc8d+/rEf7OKTWl
FUKyAEqdRZh3X3iHIUxAbtEyNQmEWgqjTzUBDlmr/L8g1g4PQDMrJdkyhdqEcydq
FHg/+sGFl5RjWYQoSxrzoGUU2RcfdKvUaxcWvpKkxsAzrmppX1aT28sm+7ThQ+aW
GmIvm5sbHhOzcXDkIou+/AfvKBerZeILpu9oKei8+vdTeuwIAX2EZevlBp+ldaaw
OFHalbBH4YWIdPx9ESLnJztYLIEnW+2WYjd1s8kuhKY1QIte0pZzNEXHEet+2Ypr
VsudOOCSqW0VNYZVngiq0h4LEGnBS8zCRNG4CxoQyo7xeRIJVKkyuIcJ6dOVS3/U
GYijsKRh44OEGZbPQfnoX1ppUYOZULuystR99FyWGqUtM7nSfnhDqpjZ5vDQZvHS
XQGTnXOS7lxtM7wWF6S7EntGS8tW0qDYJWk+K2t1L/YJmX6fwmk20s+WkuKvh+PN
3z0WI0cAd50+vbf8hvJJNdF32Bw8Ii15XB6VnRZVhAN+9FXg4uO2PKgZQf4D2w==
=q+0n
-----END PGP MESSAGE-----

Dešifrování souboru nebo zprávy

Dešifrování je naprosto triviální záležitost, na kterou si vystačíme s příkazem

gpg --decrypt zasifrovanySoubor

GPG nás po spuštění příkazu vyzve k zadání hesla pro váš soukromý klíč.

Pokud byl soubor určen nám, byl zašifrován naším veřejným klíčem, tak se nám v terminálu zobrazí dešifrovaná zpráva. Pokud chceme dešifrovanou zprávu uložit do souboru, použijeme přepínač --output.

Stejně jako u šifrování, můžeme i tady vynechat vstupní soubor a zadat/vložit zašifrovanou zprávu na vstup. V tomto případě musíme dodržet jedno pravidlo. Z ukázky zašifrované zprávy výše se zaměřte na první a poslední řádek (BEGIN PGP MESSAGE a END PGP MESSAGE). Tyto řádky musíme na vstup zkopírovat také.

Komentáře

Přidávat komentáře můžou pouze přihlášení uživatelé.