Portál AbcLinuxu, 30. dubna 2025 21:26
GPG (GNU Privacy Guard) vychází z PGP (Pretty Good Privacy). Jedná se o open-source programový balík pro bezpečnou komunikaci a předávání dat. Umožňuje šifrování a dešifrování, podepisování a kontrolu podpisu různých dat, třeba emailů. Spoustu informací je možné se dozvědět z GnuPG handbooku, i když to o čem tu píšu, se v něm nedočtete.
Aby vám to fungovalo i pod Windows, budete potřebovat tento balík, v Linuxu máte GPG už pravděpodobně nainstalované, protože balíčky jsou často podepsané GPG klíčem. V článku budu pro public key block používat označení certifikát, protože se mi zdá výstižnější.
Chcete-li si vytvořit GPG certifikát, musíte mít vytvořen pár veřejného a tajného klíče, váš certifikát je pak podepsán tímto tajným klíčem. Tomuto říkáme primární klíč. Svůj certifikát můžete později libovolně editovat, přidávat další identity (jméno + emailová adresa), přidat fotku, měnit primární identitu a co je pro nás nejdůležitější, přidávat a odvolávat sekundární klíče.
Primární klíč máme jen jeden, sekundárních klíčů můžeme mít libovolný počet. Ke každé změně certifikátu potřebujeme primární klíč, avšak k šifrování a podepisování si vystačíme se sekundárním klíčem. Pokud nějakým způsobem přijdeme o primární klíč, přišli jsme o všechno a budeme muset začít znovu od začátku, odvolat celý náš certifikát se všemi identitami, vytvořit nový a ještě k tomu napsat všem přátelům, aby si stáhli náš nový certifikát, čímž příliš dobrý dojem neuděláme . Nabízí se nám tedy možnost používat pouze sekundární klíče a primární klíč si dobře uschovat a používat ho jen po dobu nezbytně nutnou, tedy úpravy našeho certifikátu a podepisování identit lidí, kterým důvěřujeme.
Nejprve si vytvoříme primární klíč, zvolíme pouze DSA, neomezenou dobu platnosti, vyplníme svoje iniciály a zvolíme si heslo, kterým bude náš klíč chráněný. Tímto jsme vytvořili primární klíč certifikátu.
gpg --gen-key
Nyní spustíme editaci GPG certifikátu příkazem
gpg --edit user_id
Pomocí příkazu addkey přidáme sekundární klíče k našemu certifikátu, bude nám stačit jeden DSA pro podepisování a jeden ElGamal pro šifrování. U sekundárních klíčů nastavíme dobu platnosti např. na 2 roky. Po vypršení doby jejich platnosti můžeme pomocí primárního klíče vytvořit nové.
Nyní si ještě doplníme další emailové adresy u své identity příkazem adduid. Příkazem keyserver si nastavte preferovaný keyserver na pks.gpg.cz. Příkazem addphoto je ještě možné přiložit k certifikátu vlastní fotografii, ale certifikát se pak značně zvětší.
Po dokončení této konfigurace zadáme save a ukončíme program.
Nyní máme v naší databázi sekundární klíče včetně primárního klíče. Ovšem pokud by nám někdo tuto databázi odcizil, kompromitoval by tak nejen používané klíče, ale též primární klíč a tudíž celý certifikát. Sekundární klíče můžeme libovolně odvolávat a vytvářet nové. Uložíme si proto primární klíč na nějaké externí medium a z databáze ho vymažeme, budeme ho používat pouze pro změny certifikátu. Ke správné funkci, podepisování a šifrování mailů nám sekudární klíče postačí.
gpg --export-secret-keys > gpg.secret gpg --export-secret-subkeys > gpg.subsecret gpg --delete-secret-keys user_id gpg --import gpg.subsecret
Soubor gpg.secret si uložíme na externí medium a smažeme. Externí medium dobře uschováme .
GPG bohužel není na náš postup dokonale připraveno a tak můžete narazit na problém při zpětném importu tajného klíče. Pokud před importem nejdříve z databáze smažete sekundární klíče, měl by jít primární klíč naimportovat zpět bez problémů. Jen si dejte pozor, abyste o sekundární klíče nepřišli.
Používání sekundárních klíčů přináší však také několik úskalí, až vám někdo bude posílat zašifrovaný soubor, může se stát, že pro šifrování použije špatný klíč, než váš aktuálně používaný sekundární a vy pak tuto zprávu pravděpodobně nepřečtete. Nicméně zatím jsem na tento problém nenarazil.
Ověřit si co za privátní klíče máme v počítači můžeme pomocí
gpg -K
resp.
gpg --list-secret-keys
znakem # jsou označené certifikáty ke kterým nemáme privátní klíč
Primární klíč tedy máme bezpečně uschovaný, vše relativně funkční a teď už jen nahrajeme svoji identitu na keyserver.
gpg [--keyserver pks.gpg.cz] --send-keys user_id [user_id ...]
Do Thunderbirdu si doinstalujeme Enigmail a nastavíme klíč, který chceme používat. Defaultní nastavení nebude fungovat, je třeba ho trošku změnit. Začněte psát novou zprávu, v menu Enigmail vyberte Výchozí nastavení tvorby zpráv->Nastavení podepisování/šifrování, zvolte volbu Použít konkrétní OpenPGP klíč a vyberte správný klíč.
Import certifikátu z keyserveru
gpg [--keyserver pks.gpg.cz] --recv-keys keyid [keyid ...]
Obnovení stavu všech klíčů z keyserveru, stažení nových podpisů a identit
gpg --refresh-keys [--keyserver pks.gpg.cz]
Klíč můžete importovat buď z keyserveru nebo ze souboru pomocí
gpg --import public.gpg
Chcete-li podepsat něčí klíč, musíte ho mít naimportovaný do své databáze. Vlastní podepsání je jednoduché, měli byste si ovšem zkontrolovat, zda sedí fingerprint klíče a nastavit, jak moc jste prověřili, že certifikát patří skutečně dané osobě
gpg --sign-key jina_osoba_id
Nový podpis můžete nahrát na keyserver
gpg --send-keys jina_osoba_id [--keyserver pks.gpg.cz]
Kontrola podepsaného souboru, je možné specifikovat buď soubor obsahující zároveň podpis nebo zvlášt soubor s podpisem a podepsaný soubor
gpg --verify [[sigfile]] [[signed-files]]
Podepsání souboru
gpg -u user_id --armor --sign filename
Ve svém domovském adresáři si vytvořte skript s následujícím obsahem, nezapomeňte změnit userid na svoje id. Upozorňuji, že tento skript není zcela bezpečný! Stále se nám rozšifrovaný soubor může v nevhodnou chvíli odswapovat na disk, což ovšem řeší šifrovaný swap. Po ukončení editace stačí pro uložení a opuštění editoru Ctrl-K X. VIčkařům mohu nabídnout tento postup.
#!/bin/bash userid=vase_id rm -f secrnew.asc mv -f secret.zal secret.zal.2 cp secret.asc secret.zal printf "Zadej heslo:\e[0;30;40m" read passphr printf "\e[0m" echo $passphr | gpg --passphrase-fd 0 -d secret.asc > /dev/null if [ $? -ne 0 ] ; then echo "Spatne heslo!" exit 1 fi echo $passphr | gpg --passphrase-fd 0 -d secret.asc | joe - | gpg -e -r $userid -a -o secrnew.asc unset passphr if [ $? -eq 0 ] && [ -f secrnew.asc ] ; then mv -f secrnew.asc secret.asc chmod 600 secret.asc fi
Doufám, že jsem Vás navedl správným směrem a budete odteď používat GnuPG zase o něco bezpečněji. Za značné zlepšení skriptu pro ukládání hesel bych chtěl poděkovat joeovi (a nemyslím ten editor).
The GNU Privacy Handbook
GnuPG HOWTOs Collection
Using multiple subkeys in GPG
Tiskni
Sdílej:
Co používáš na skladování hesel?tužku a papír? fix a okraj monitoru?
trap "rm -r -f $TEMP; exit 1" HUP
a podobně)
Možná by šlo po rozšifrování poslat data pajpou vimu, po ukončení editace ve vimu poslat data pajpou gnupg a zašifrovat. Samozřejmě by to chtělo nastavit vim aby si nikde nedělal zálohy, pracovní soubory a podobné neřády.
Já používám vim + GPG podle tohoto návodu: http://www.vi-improved.org/wiki/index.php/VimGpg
Mírně jsem si jej přizpůsobil, možná to není ideální ale považuji to za dostatečné.
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.