Šifrování pomocí GPG: Porovnání verzí

Z Milan Kerslager
Přejít na: navigace, hledání
(Generování klíčů: výklad)
(Struktura, klíčenka)
Řádka 2: Řádka 2:
  
 
== Úvod ==
 
== Úvod ==
Program <code>gpg</code> má pouze textové rozhraní. Pro grafické uživatelské rozhraní existují nadstavby, například Kleopatra (pro Linux i Windows), Seahorse pro GNOME, KGPG pro KDE. Klienti pro elektronickou poštu používají GPG pomocí pluginů (Outlook používá plugin [[csw:Enigmail|Enigmail]] nebo ji mají vestavěnou jako [[csw:Mozilla Thunderbird|Mozilla Thunderbird]] (od roku 2019). Dále se budeme věnovat pouze nástroji <code>gpg</code> pro příkazový řádek. Základní informace zjistíme pomocí:
+
Program <code>gpg</code> má pouze textové rozhraní. Pro grafické uživatelské rozhraní existují nadstavby, například Kleopatra (pro Linux i Windows), Seahorse pro GNOME, KGPG pro KDE. Klienti pro elektronickou poštu používají GPG pomocí pluginů (Outlook používá plugin [[csw:Enigmail|Enigmail]] nebo ji mají vestavěnou jako [[csw:Mozilla Thunderbird|Mozilla Thunderbird]] (od roku 2019). Dále se budeme věnovat pouze nástroji <code>gpg</code> pro příkazový řádek.
 +
 
 +
=== Generování klíčů ===
 +
Při generování klíčů je využit generátor náhodných čísel, který těží entropii z vnějšího prostředí (při nedostatku entropie trvá generování dlouho, doporučuji generovat síťový provoz, hýbat myší, psát na klávesnici). Pokud by nebylo náhodné číslo dostatečně náhodné, kvalita klíčů by byla nízká (šly by například uhádnout). Klíče jsou jednoznačně identifikovány svým hashem (otisk, fingerprint). Spojení s osobou je pomocí jména, příjmení a e-mailové adresy (v pokročilém režimu lze vyplnit komentář, který může upřesnit účel klíče). Klíč lze nahrát na [[enw:Key server (cryptographic)|server s klíči]], čímž vznikne vaše digitální identita. Tuto identitu obvykle postupně potvrzují ostatní uživatelé pomocí [[csw:Síť důvěry|sítí důvěry]] tím, že váš klíč podepisují (viz [[csw:Setkání s podepisováním klíčů|Setkání s podepisováním klíčů]]).
 +
 
 +
=== Klíčenka ===
 +
Klíče se ukládají na vaši vlastní klíčenku (v Linuxu do vašeho domácího adresáře do <code>~/.gnupg</code>). Smazáním tohoto adresáře kompletně odstraníte celou klíčenku. Klíčenka může být bezpečněji umístěna na smartcard, která podporuje OpenPGP standard (např. některé modely YubiKey). Při přenášení klíčů je vhodnější klíče exportovat než kopírovat celý adresář klíčenky, protože při importu dochází ke slučování do klíčenky, nikoliv přepsání jejího obsahu.
 +
 
 +
=== Hlavní klíč a podklíče ===
 +
GPG generuje standardně tzv. hlavní klíč (''masterkey'') a k němu jeden podklíč (''subkey''). Hlavní klíč tvoří vaši identitu a slouží i k podepisování hlavních klíčů ostatních uživatelů využívajících sítě důvěry. Proto je privátní klíč od hlavního klíče potřeba velmi pečlivě chránit heslovou frází (dlouhým heslem) a nejlépe uložením mimo počítače připojené k internetu. V případě kompromitace privátního klíče od hlavního klíče by se za vás mohl kdokoliv vydávat (kompromitace znamená, že klíč někdo zkopíruje). Kompromitace hlavního klíče znamená, že vaše identita a důvěra v ní skončila a musíte si vybudovat novou (od nuly). Hlavní klíč i podklíče sdílí stejnou heslovou frázi.
 +
 
 +
=== Kompromitace klíče ===
 +
Kvůli riziku kompromitace klíče a postupnému stárnutí šifer (už nejsou považovány za bezpečné) je velmi vhodné omezit platnost klíče. Platnost klíče se dá v případě potřeby prodlužovat. V případě kompromitace je možné klíč zneplatnit (odvolat klíč) vytvořením certifikátu (pomocí hlavního klíče) a jeho nahráním na server s klíči. Certifikát pro zneplatnění klíče je proto vhodné vytvořit hned po vygenerování klíčů a pečlivě uložit mimo počítač (vypálit na CD, USB flash, vytisknout a podobně), protože v případě ztráty privátního klíče už nejde certifikát vytvořit a tím ani zneplatnit klíče.
 +
 
 +
Hlavní klíč umožňuje libovolné vytváření a zneplatňování podklíčů, které pod něj patří a umožňuje i prodlužování jeho platnosti. Je možné do něj přidávat další e-mailové adresy, případně je zneplatňovat.
 +
 
 +
== Základy ==
 +
 
 +
Základní informace zjistíme pomocí <code>gpg --version</code>:
  
 
<pre>
 
<pre>
Řádka 22: Řádka 40:
 
</pre>
 
</pre>
  
 +
=== Výpis klíčů na klíčence ===
 
Seznam všech veřejných klíčů na vaší klíčence:
 
Seznam všech veřejných klíčů na vaší klíčence:
 
  gpg --list-keys
 
  gpg --list-keys
Řádka 32: Řádka 51:
  
 
=== Generování klíčů ===
 
=== Generování klíčů ===
Při generování klíčů je využit generátor náhodných čísel, který těží entropii z vnějšího prostředí (při nedostatku entropie trvá generování dlouho, doporučuji generovat síťový provoz, hýbat myší, psát na klávesnici). Pokud by nebylo náhodné číslo dostatečně náhodné, kvalita klíčů by byla nízká (šly by například uhádnout). Klíče jsou jednoznačně identifikovány svým hashem (otisk, fingerprint). Spojení s osobou je pomocí jména, příjmení a e-mailové adresy (v pokročilém režimu lze vyplnit komentář, který může upřesnit účel klíče). Klíč lze nahrát na [[enw:Key server (cryptographic)|server s klíči]], čímž vznikne vaše digitální identita. Tuto identitu obvykle postupně potvrzují ostatní uživatelé pomocí [[csw:Síť důvěry|sítí důvěry]] tím, že váš klíč podepisují (viz [[csw:Setkání s podepisováním klíčů|Setkání s podepisováním klíčů]]).
 
 
=== Hlavní klíč a podklíče ===
 
GPG generuje standardně tzv. hlavní klíč (''masterkey'') a k němu jeden podklíč (''subkey''). Hlavní klíč tvoří vaši identitu a slouží i k podepisování hlavních klíčů ostatních uživatelů využívajících sítě důvěry. Proto je privátní klíč od hlavního klíče potřeba velmi pečlivě chránit heslovou frází (dlouhým heslem) a nejlépe uložením mimo počítače připojené k internetu. V případě kompromitace privátního klíče od hlavního klíče by se za vás mohl kdokoliv vydávat (kompromitace znamená, že klíč někdo zkopíruje). Kompromitace hlavního klíče znamená, že vaše identita a důvěra v ní skončila a musíte si vybudovat novou (od nuly). Hlavní klíč i podklíče sdílí stejnou heslovou frázi.
 
 
=== Kompromitace klíče ===
 
Kvůli riziku kompromitace klíče a postupnému stárnutí šifer (už nejsou považovány za bezpečné) je velmi vhodné omezit platnost klíče. Platnost klíče se dá v případě potřeby prodlužovat. V případě kompromitace je možné klíč zneplatnit (odvolat klíč) vytvořením certifikátu (pomocí hlavního klíče) a jeho nahráním na server s klíči. Certifikát pro zneplatnění klíče je proto vhodné vytvořit hned po vygenerování klíčů a pečlivě uložit mimo počítač (vypálit na CD, USB flash, vytisknout a podobně), protože v případě ztráty privátního klíče už nejde certifikát vytvořit a tím ani zneplatnit klíče.
 
 
Hlavní klíč umožňuje libovolné vytváření a zneplatňování podklíčů, které pod něj patří a umožňuje i prodlužování jeho platnosti. Je možné do něj přidávat další e-mailové adresy, případně je zneplatňovat.
 
 
 
 
Při generování páru klíčů lze využít jednoduchou metodu:
 
Při generování páru klíčů lze využít jednoduchou metodu:
 
  gpg --gen-key
 
  gpg --gen-key

Verze z 9. 12. 2023, 20:22

GnuPG je program umožňující používat asymetrickou kryptografii založenou na využívání dvou klíčů: privátního a veřejného. Zatímco privátní klíč je uchováván v tajnosti, veřejný klíč je volně dostupný. Oba klíče jsou vytvářeny společně, ale z jednoho nelze odvodit druhý (proto je možné dávat veřejný klíč volně k dispozici). Program gpg je opensource nástupce komerčního programu PGP.

Úvod

Program gpg má pouze textové rozhraní. Pro grafické uživatelské rozhraní existují nadstavby, například Kleopatra (pro Linux i Windows), Seahorse pro GNOME, KGPG pro KDE. Klienti pro elektronickou poštu používají GPG pomocí pluginů (Outlook používá plugin Enigmail nebo ji mají vestavěnou jako Mozilla Thunderbird (od roku 2019). Dále se budeme věnovat pouze nástroji gpg pro příkazový řádek.

Generování klíčů

Při generování klíčů je využit generátor náhodných čísel, který těží entropii z vnějšího prostředí (při nedostatku entropie trvá generování dlouho, doporučuji generovat síťový provoz, hýbat myší, psát na klávesnici). Pokud by nebylo náhodné číslo dostatečně náhodné, kvalita klíčů by byla nízká (šly by například uhádnout). Klíče jsou jednoznačně identifikovány svým hashem (otisk, fingerprint). Spojení s osobou je pomocí jména, příjmení a e-mailové adresy (v pokročilém režimu lze vyplnit komentář, který může upřesnit účel klíče). Klíč lze nahrát na server s klíči, čímž vznikne vaše digitální identita. Tuto identitu obvykle postupně potvrzují ostatní uživatelé pomocí sítí důvěry tím, že váš klíč podepisují (viz Setkání s podepisováním klíčů).

Klíčenka

Klíče se ukládají na vaši vlastní klíčenku (v Linuxu do vašeho domácího adresáře do ~/.gnupg). Smazáním tohoto adresáře kompletně odstraníte celou klíčenku. Klíčenka může být bezpečněji umístěna na smartcard, která podporuje OpenPGP standard (např. některé modely YubiKey). Při přenášení klíčů je vhodnější klíče exportovat než kopírovat celý adresář klíčenky, protože při importu dochází ke slučování do klíčenky, nikoliv přepsání jejího obsahu.

Hlavní klíč a podklíče

GPG generuje standardně tzv. hlavní klíč (masterkey) a k němu jeden podklíč (subkey). Hlavní klíč tvoří vaši identitu a slouží i k podepisování hlavních klíčů ostatních uživatelů využívajících sítě důvěry. Proto je privátní klíč od hlavního klíče potřeba velmi pečlivě chránit heslovou frází (dlouhým heslem) a nejlépe uložením mimo počítače připojené k internetu. V případě kompromitace privátního klíče od hlavního klíče by se za vás mohl kdokoliv vydávat (kompromitace znamená, že klíč někdo zkopíruje). Kompromitace hlavního klíče znamená, že vaše identita a důvěra v ní skončila a musíte si vybudovat novou (od nuly). Hlavní klíč i podklíče sdílí stejnou heslovou frázi.

Kompromitace klíče

Kvůli riziku kompromitace klíče a postupnému stárnutí šifer (už nejsou považovány za bezpečné) je velmi vhodné omezit platnost klíče. Platnost klíče se dá v případě potřeby prodlužovat. V případě kompromitace je možné klíč zneplatnit (odvolat klíč) vytvořením certifikátu (pomocí hlavního klíče) a jeho nahráním na server s klíči. Certifikát pro zneplatnění klíče je proto vhodné vytvořit hned po vygenerování klíčů a pečlivě uložit mimo počítač (vypálit na CD, USB flash, vytisknout a podobně), protože v případě ztráty privátního klíče už nejde certifikát vytvořit a tím ani zneplatnit klíče.

Hlavní klíč umožňuje libovolné vytváření a zneplatňování podklíčů, které pod něj patří a umožňuje i prodlužování jeho platnosti. Je možné do něj přidávat další e-mailové adresy, případně je zneplatňovat.

Základy

Základní informace zjistíme pomocí gpg --version:

$ gpg --version
gpg (GnuPG) 2.2.27
libgcrypt 1.9.4
Copyright (C) 2021 Free Software Foundation, Inc.
License GNU GPL-3.0-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/<váš_login>/.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

Výpis klíčů na klíčence

Seznam všech veřejných klíčů na vaší klíčence:

gpg --list-keys

Seznam všech privátních klíčů na vaší klíčence:

gpg --list-secret-keys

Seznam všech podpisů pod všemi veřejnými klíči vytvořenými v rámci sítí důvěry:

gpg --with-sig-list --list-keys

Generování klíčů

Při generování páru klíčů lze využít jednoduchou metodu:

gpg --gen-key

Nebo využít možnosti změny parametrů (např. komentář ke klíči):

gpg --full-generate-key

Pokud nemáte staré zařízení (např. YubiKey 4, které podporuje jen šifru RSA), doporučuji používat šifry nad eliptickými křivkami (např. EdDSA – ed25519):

gpg --expert --full-generate-key

zvolit ECC and ECC => 9 a Curve 25519 => 1
zvolte vhodnou platnost (dá se dodatečně prodloužit, např. 3 roky) => 3y
jméno a příjmení, nedoporučuji používat čárky a háčky (nelze dodatečně změnit, jen přidat/odebrat)
e-mailová adresa identifikuje vaši osobu (jeden e-mail může být v různých klíčích)
komentář je například upřesnění účelu klíče (nelze dodatečně změnit, jen přidat/odebrat)
heslová fráze chrání váš privátní klíč