3.1. Úvod do OpenPGP

OpenPGP označuje kryptografický protokol v počátcích určený hlavně pro zabezpečení e-mailových zpráv 1. Příjemce může ověřit, zda zpráva nebyla změněna během cesty a zda podpisujícím je konkrétní držitel privátního klíče. Zprávy lze zašifrovat pro určeného příjemce (držitele konkrétního privátního klíče).

OpenPGP podporuje též šifrování a podepisování datových souborů, tj. je možné šifrovat a ověřovat integritu jakýchkoliv dat. Příkladem může být podepisování balíčků v unixových distribucích či podepisování zápisů (commits) v gitu. Existují i různá pokročilá využití – např. transparentní šifrování konfiguračních souborů s hesly před uložením do veřejného úložiště (git-crypt 2).

OpenPGP používá asymetrickou kryptografii (kryptografie s veřejným klíčem) s dvojicemi klíčů – veřejný klíč, který může znát kdokoliv, a soukromý klíč, který by měl znát pouze vlastník. Z veřejného klíče nelze reálně odvodit soukromý klíč.

3.1.1. Začátky PGP

První verzi šifrovacího programu Pretty Good Privacy (PGP) napsal Phil Zimmermann roku 1991 pro bezpečnou výměnu zpráv a souborů mezi protijadernými aktivisty přes veřejné sítě, v té době nejčastěji přes BBS (Bulletin board system).

O program, který byl pro nekomerční využití byl zdarma včetně zdrojových kódů, byl mezi uživateli zájem. Brzy se rozšířil i na Internet a stal se de-facto standardem v oblasti bezplatných programů pro šifrování a podepisování souborů a elektronické pošty.

V roce 1993 byl autor obžalován za nepovolený vývoz zbraní z USA, neboť v té době pro vývoz kryptografických systémů s klíčem delším než 40 bitů byla potřeba licence na export vojenského materiálu. Program PGP používal od začátku klíče s minimální délkou 128 bitů. Autor v roce 1996 spor vyhrál – zdrojový kód nechal vydat jako knihu a poté se odkazoval na první dodatek ústavy USA (svoboda vyznání, tisku, projevu, shromažďování). Tento spor je součástí tzv. první války o kryptografii, která skončila v roce 2000 uvolněním pravidel pro vývoz kryptografického software z USA.

Po ukončení soudního sporu autor s dalšími založil firmu PGP Inc., která začala připravovat komerční verzi. Díky akvizicím a obchodním transakcím se komerční práva k programu a značce PGP přesouvala mezi různými firmami.

3.1.2. PGP, OpenPGP, GnuPG a GPG

V roce 1996 vyšlo RFC 1991, které popisuje formát zpráv a souborů pro PGP. V roce 1997 firma PGP Inc. předložila IETF návrh standardu na protokol OpenPGP, který v roce 1998 vyšel jako RFC 2440. Protokol prošel aktivním vývoje, v současné době je platné RFC 4880 z roku 2007.

Existují dvě hlavní implementace protokolu OpenPGP – první je komerční s názvem PGP. Druhá implementace s názvem GNU Privacy Guard (zkratka GnuPG, neoficiálně i GPG) je pod svobodnou licencí GNU a její vývoj zaštituje organizace GNU Project. Základní řádkový program z této implementace se jmenuje gpg.

GnuPG je součástí většiny unixových distribucí, existují porty pro MacOS (GPGtools 3) či do Windows (Gpg4win 4). Součástí Gpg4win je též rozšíření do poštovního klienta Outlook od firmy Microsoft. Pomocí rozšíření Enigmail 5 se doplní podpora OpenPGP do poštovního klienta Thunderbird.

Na unixových systémech se lze v současnosti setkat se třemi verzemi GnuPG:

  • Verze 1.4 (Classic) s monolitickou aplikací gpg.

  • Verze 2.0 (Stable) má oddělenou kryptografickou knihovnu, což umožňuje snazší používání OpenPGP z jiných aplikací. Součástí je textová a grafická aplikace pro dotazování na hesla (tj. lze snadněji používat v grafickém uživatelském prostředí). Další novinkou je podporu standardu S/MIME.

  • Verze 2.1 (Modern) přidává podporu kryptografie založené na eliptických křivkách.

Z hlediska ovládání jsou mezi verzemi minimální rozdíly. Verze 1.4 může být nainstalována společně s verzí 2.0 nebo 2.1. Pro starší verzi se použije příkaz gpg1, pro novější gpg2. Na kterou verzi odkazuje příkaz gpg lze zjistit pomocí přepínače --version:

gpg --version
gpg (GnuPG) 2.1.17
libgcrypt 1.7.5
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Home: /home/pavlicek/.gnupg
Supported algorithms:
Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
        CAMELLIA128, CAMELLIA192, CAMELLIA256
        Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
        Compression: Uncompressed, ZIP, ZLIB, BZIP2

Ve skriptech bude popsána verze 2.1, která bude defaultní v Debianu verze 9.

Podrobné informace o programu gpg lze vyčíst z manuálových stránek man gpg. Základní syntaxe je následující:

gpg [přepínače] [parametry]

Přepínače začínají dvěma pomlčkami, několik jich má i jednopísmennou variantu s jednou pomlčkou. Sémanticky lze z přepínačů vyčlenit příkazy, které označují základní akci, která se má po spuštění gpg provést. Příkladem je --help, --version, --sign, --encrypt, --verify či –edit-key. Pokud se nezadá žádný přepínač, ale pouze jméno souboru, tak se akce odvodí od typu souboru – zašifrovaný soubor se dešifruje, u podepsaného souboru se zkontroluje podpis.

1

V RFC 4880 je napsáno, že pojem OpenPGP označuje kryptografický software založený na PGP a na standardu. Dle převládajícího názoru pojem OpenPGP označuje kryptografický standard a neměl by se používat pro označení programů, viz např. https://help.ubuntu.com/community/GnuPrivacyGuardHowto.

2

https://www.agwa.name/projects/git-crypt/

3

https://gpgtools.org/

4

https://www.gpg4win.org/

5

https://www.enigmail.net/index.php/en/