Šifrování a podepisování datové komunikace s pomocí GnuPG

logo-gnupg-light-purple-bg
GnuPG je kompletní implementací OpenPGP standardu RFC4880. GnuPG (GPG) umožňuje šifrovat a podepisovat data a datovou komunikaci, obsahuje sofistikovanou správu kryptografických klíčů a systém veřejných adresářů tyto klíče shromažďující a distribuující. GPG také poskytuje podporu pro S/MIME a SSH. Na rozdíl od služby/sítě TOR není GnuPG primárně určeno pro poskytnutí anonymity, ale k zabezpečení soukromí.Tyto nástroje jsou nejčastěji využívány pro digitální podepisování zdrojových kódů a softwarových balíčků distribucí GNU/Linux. Každý, kdo s linuxem pracoval, se s GPG alespoň náznakem setkal.

Do podvědomí široké veřejnosti se však dostal zejména díky nejznámějšímu whistleblowerovi Edwardu Snowdenovi, který tento systém používá pro komunikaci s médii a uveřejňování informací.

V jednoduchosti je využíván systém symetrického šifrování, kde je použito soukromého (privátního) klíče pro podepisování a dešifrování přijatých dat, a veřejného klíče umožňujícího (soukromým klíčem) podepsaná data ověřit, případně pro příjemce data zašifrovat (pro dešifrování je nutný soukromý klíč). Těchto vlastností se často používalo  a používá pro komunikaci pomocí emailu, kdy nebyly dostupné implementace SSL/TLS.

Nástroje GPG jsou dostupné prakticky ve všech moderních distribucích GNU/Linux. Pro Windows existuje implementace Gpg4win. Veškeré funkce a příkazy jsou vzájemně kompatibilní.

Jak je uvedeno výše, předpokladem pro fungování je existence soukromého a veřejného klíče (nebo také, klíč má soukromou a veřejnou část). Soukromý klíč nesmí být za žádných okolností sdělen další osobě. V takovém případě by mohlo dojít ke kompromitaci. Pro zmírnění tohoto nebezpečí je soukromý klíč chráněn heslem. Oproti tomu u veřejného klíče je výhodné jeho distribuci na veřejná místa. V takovém případě může prakticky každý ověřovat platnost zpráv, případně zprávy pro držitele soukromého klíče šifrovat. Veřejný klíč je možné ze soukromého jednoduchým způsobem získat. Opačně, tedy z veřejného získat soukromý, možné není. Klíče je možné generovat za pomocí rozličných algoritmů a bitových délek. Algoritmus a délka klíče určují náročnost na možné prolomení, ale také na výpočetní výkon a množství entropie při šifrování a podepisování zpráv.

Vygenerování klíčů

Generování GPG klíčů je možné pomocí příkazové řádky, případně grafickými nástroji (Kleopatra – součástí Gpg4win). Pokud nejsme s GPG dostatečně seznámeni, určitě použijeme některé z grafických rozhraní. Eliminujeme tím množství chyb.

Dle uvážení můžeme generovat např. klíč pouze pro podpis. Délka klíče zcela vyhovuje přednastavená 2048 bitů, algoritmus RSA.

Generování z příkazového řádku:

Generování za pomoci aplikace Kleopatra:

Důležitým výstupním parametrem je otisk klíče (fingerprint). Ten je pro každý soukromý klíč jedinečný a umožňuje jeho kontrolu. Někteří uživatelé jej uvádějí např. na vizitkách.

Takto vygenerované klíče je vhodné zálohovat.

Zálohování klíče

Zálohování, nebo také export, klíče je důležitým krokem. Exportovaný soukromý klíč můžeme importovat na další zařízení (smartphone, notebook) nebo uložit na bezpečném místě pro potřeby pozdější obnovy. V případě jeho ztráty je vhodné, pokud jsme veřejnou část umístili do některého z repositářů na internetu, zneplatnit (revokovat). Tím dáme najevo, že je klíč z nějakého důvodu zrušen. Každý, kdo veškeré klíče automaticky na internetu ověřuje, je o této zkutečnosti informován.

Export je možné opět provádět z příkazové řádky nebo v grafické aplikaci.

Exportování soukromého klíče:

Exportování veřejného klíče:

Exportování míry důvěryhodnosti:

Míra důvěryhodnosti označuje, jak tomuto klíči důvěřujeme. Naše vlastní klíče mají nastavenu důvěru „ultimate“. Tuto důvěru můžeme pro každý klíč měnit.

Veřejné klíče můžeme také exportovat na některý z veřejných serverů (parametr --send-keys key IDs).

Import klíče

Import klíče je jednoduchou záležitostí. Po zadání příkazu nástroj čeká na vložení klíče. Zadávání ukončíme vložením ^D (Ctrl+D).

Importovat můžeme jak soukromé, tak veřejné klíče. Pro import soukromého klíče ale použijeme heslo, které jsme zadali při jeho vytváření.

Import důvěryhodnosti:

Grafická aplikace umožňuje stejné vlastnosti.

Pokud importujeme veřejný klíč, můžeme to provést z některého z veřejných serverů. To samozřejmě platí pouze v případě, že je na takovém serveru umístěn.

Jeho vyhledání provedeme na základě jeho ID nebo otisku. Ve většině implementací GPG je důležité před ID nebo otisk zadat znaky „0x“:

Podpis a ověření datových zpráv

Podpis zpráv je jeden z nejčastějších úkonů. Jeho provedení je následující:

Pro ověření slouží parametr --verify. Důležitým předpokladem je, že veřejný klíč podepsané osoby musíme mít nejdříve naimportován.

Zašifrování a dešifrování datové zprávy

Text mezi řádky —–BEGIN PGP MESSAGE—–—–END PGP MESSAGE—– obsahuje šifrovanou zprávu.
Pro šifrování musíme mít veřejný klíč osoby, pro kerou je zpráva určena.

Dešifrování provedeme s použitím parametru --verify. Je však důležité, abychom vlastnili příslušný soukromý klíč.

Spolupráce s dalšími nástroji

GPG umožňuje spolupráci s dalšími nástroji, kde se stará o automatické podepisování/ověřování a šifrování/dešifrování všech zpráv. Pokud například používáme komunikační nástroj Pidgin, máme k dispozici modul Pidgin-GPG. Pro Microsoft Outlook můžeme použít např. OutlookPrivacyPlugin. Některé emailové a komunikační programy mají podporu GPG přímo integrovánu.

GPG používá také řada nástrojů pro správu verzí, jako například GIT. Bez něho bychom si v dnešní době asi těžko představili vývoj jádra Linux.

Závěr

GPG se pro komunikaci používá zejména v různých komunitách. Byť je OpenPGP standardem, jeho používání v běžné praxi naráží na mnoho úskalí, kde k tomu stěžejnímu patří nutnost existence šifrovacích klíčů a alespoň základní znalost jejich ochrany. Pokud ale chceme, aby byla naše komunikace opravdu soukromá, je GPG jedna z nejlepších možností, jak toho dosáhnout.

Co naplat, i já využívám možností skýtající GPG a i přes to, že dnes nejrozšířenějším standardem je použití SSL/TLS.

GPG Key-ID: 1854B87D
GPG Fingerprint: EFCB3447B7551FD5E757098463091A121854B87D

Související

Přístup k místním síťovým službám přes anonymní síť TOR
Množství entropie v GNU/Linux

Leave a Reply