Generování klíčů OpenPGP se zálohováním

The following instructions explain the generation of OpenPGP keys and how to copy them to the Nitrokey. This method has the advantage of providing a backup of the keys in case of losing or breaking the Nitrokey. The instructions are based on the command line interface of GnuPG. Thus, you need to have GnuPG installed on your system. The newest GnuPG version for Windows can be found here and the newest version for MacOS can be found here. Users of Linux systems please install GnuPG with help of the package manager.

Generování klíčů

Nejprve je třeba vygenerovat klíč lokálně. Můžete se rozhodnout, které atributy klíče použijete, a - což je nejdůležitější - klíč můžete exportovat a uložit pro případ, že byste jej potřebovali obnovit.

Hlavní klíč a dílčí šifrovací klíč

Příkazem gpg --full-generate-key --expert spustíme řízené generování klíče se všemi možnými volbami. Můžete zvolit typ klíče (obvykle RSA (1) nebo ECC (9)), délku klíče a další atributy. Následující výstup je jen jednoduchý příklad, můžete zvolit i jiné hodnoty.

> gpg --full-generate-key --expert
gpg (GnuPG) 2.2.10; Copyright (C) 2018 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Please select what kind of key you want:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (sign only)
   (4) RSA (sign only)
   (7) DSA (set your own capabilities)
   (8) RSA (set your own capabilities)
   (9) ECC and ECC
  (10) ECC (sign only)
  (11) ECC (set your own capabilities)
  (13) Existing key
Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
Requested keysize is 2048 bits
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want for the subkey? (2048)
Requested keysize is 2048 bits
Please specify how long the key should be valid.
         0 = key does not expire
        = key expires in n days
      w = key expires in n weeks
      m = key expires in n months
      y = key expires in n years
Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y

GnuPG needs to construct a user ID to identify your key.

Real name: Jane Doe
Email address: jane@example.com
Comment:
You selected this USER-ID:
    "Jane Doe "

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
gpg: key 0EFFB0704391497C marked as ultimately trusted
gpg: revocation certificate stored as '/home/nitrokey//.gnupg/openpgp-revocs.d/9D12C91F6FC4CD6E10A1727A0EFFB0704391497C.rev'
public and secret key created and signed.

pub   rsa2048 2018-09-17 [SC]
      9D12C91F6FC4CD6E10A1727A0EFFB0704391497C
uid                      Jane Doe
sub   rsa2048 2018-09-17 [E]

Poznámka

Informace o podporovaných algoritmech naleznete na stránce faq.

Dílčí klíč pro ověřování

Nyní máte hlavní klíč s možností podepisování a certifikace (označený jako [SC]) a dílčí klíč pro šifrování (označený jako [E]). Je nutné mít další dílčí klíč pro případy použití, kdy je potřeba ověřování. Tento dílčí klíč se vygeneruje v dalším kroku. Pro zahájení procesu zadejte gpg --edit-key --expert keyID, přičemž „keyID“ je buď id klíče, nebo e-mailová adresa použitá při generování klíče.

> gpg --edit-key --expert jane@example.com
gpg (GnuPG) 2.2.10; Copyright (C) 2018 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Secret key is available.

sec  rsa2048/0EFFB0704391497C
     created: 2018-09-17  expires: never       usage: SC
     trust: ultimate      validity: ultimate
ssb  rsa2048/A9A814C210F16700
     created: 2018-09-17  expires: never       usage: E
[ultimate] (1). Jane Doe

gpg>

Nyní jste v interaktivním režimu GnuPG a můžete přidat klíč jednoduše zadáním addkey. Je třeba vybrat klíč, který chcete použít. Zásadní je zvolit „nastavit vlastní schopnosti“, protože chceme mít k dispozici schopnost „ověřit“, která jinak není k dispozici. Podepisování a šifrování přepínáme zadáním s a e a aktivujeme ověření zadáním a.

gpg> addkey
Please select what kind of key you want:
   (3) DSA (sign only)
   (4) RSA (sign only)
   (5) Elgamal (encrypt only)
   (6) RSA (encrypt only)
   (7) DSA (set your own capabilities)
   (8) RSA (set your own capabilities)
  (10) ECC (sign only)
  (11) ECC (set your own capabilities)
  (12) ECC (encrypt only)
  (13) Existing key
Your selection? 8

Possible actions for a RSA key: Sign Encrypt Authenticate
Current allowed actions: Sign Encrypt

   (S) Toggle the sign capability
   (E) Toggle the encrypt capability
   (A) Toggle the authenticate capability
   (Q) Finished

Your selection? s

Possible actions for a RSA key: Sign Encrypt Authenticate
Current allowed actions: Encrypt

   (S) Toggle the sign capability
   (E) Toggle the encrypt capability
   (A) Toggle the authenticate capability
   (Q) Finished

Your selection? e

Possible actions for a RSA key: Sign Encrypt Authenticate
Current allowed actions:

   (S) Toggle the sign capability
   (E) Toggle the encrypt capability
   (A) Toggle the authenticate capability
   (Q) Finished

Your selection? a

Possible actions for a RSA key: Sign Encrypt Authenticate
Current allowed actions: Authenticate

   (S) Toggle the sign capability
   (E) Toggle the encrypt capability
   (A) Toggle the authenticate capability
   (Q) Finished

Your selection? q

Končíme q. Poté musíme odpovědět na stejné otázky jako dříve. Konečně máme připravenou sadu klíčů, kterou můžeme importovat do našeho zařízení.

RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)
Requested keysize is 2048 bits
Please specify how long the key should be valid.
         0 = key does not expire
        = key expires in n days
      w = key expires in n weeks
      m = key expires in n months
      y = key expires in n years
Key is valid for? (0)
Key does not expire at all
Is this correct? (y/N) y
Really create? (y/N) y
We need to generate a lot of random bytes. It is a good idea to perform
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.

sec  rsa2048/0EFFB0704391497C
     created: 2018-09-17  expires: never       usage: SC
     trust: ultimate      validity: ultimate
ssb  rsa2048/A9A814C210F16700
     created: 2018-09-17  expires: never       usage: E
ssb  rsa2048/61F186B8B0BBD5D5
     created: 2018-09-17  expires: never       usage: A
[ultimate] (1). Jane Doe

gpg> quit
Save changes? (y/N) y

Nyní je vhodná doba pro zálohování klíče. Tuto zálohu si velmi dobře zabezpečte. Nejlepší je nemít tento klíč nikdy na běžném počítači, který je připojen k internetu, aby nedošlo k jeho ohrožení. Zálohu můžete vytvořit pomocí např:

> gpg --export-secret-keys jane@example.com > sec-key.asc

Klíčový import

Máte hlavní klíč a dva dílčí klíče, které lze importovat do klíče Nitrokey. Než budete pokračovat, ujistěte se, že máte skutečně zálohu klíče, pokud ji potřebujete. Příkaz keytocard použitý v následujících krocích odstraní váš klíč z disku!

Proces zahájíme opětovným přístupem do interaktivního rozhraní GnuPG pomocí gpg --edit-key --expert keyID, přičemž keyID je buď id klíče, nebo e-mailová adresa použitá při generování klíče.

> gpg --edit-key --expert jane@example.com
gpg (GnuPG) 2.2.10; Copyright (C) 2018 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Secret key is available.

sec  rsa2048/0EFFB0704391497C
     created: 2018-09-17  expires: never       usage: SC
     trust: ultimate      validity: ultimate
ssb  rsa2048/A9A814C210F16700
     created: 2018-09-17  expires: never       usage: E
ssb  rsa2048/61F186B8B0BBD5D5
     created: 2018-09-17  expires: never       usage: A
[ultimate] (1). Jane Doe

gpg> keytocard
Really move the primary key? (y/N) y
Please select where to store the key:
   (1) Signature key
   (3) Authentication key
Your selection? 1

sec  rsa2048/0EFFB0704391497C
     created: 2018-09-17  expires: never       usage: SC
     trust: ultimate      validity: ultimate
ssb  rsa2048/A9A814C210F16700
     created: 2018-09-17  expires: never       usage: E
ssb  rsa2048/61F186B8B0BBD5D5
     created: 2018-09-17  expires: never       usage: A
[ultimate] (1). Jane Doe

Na kartu jsme právě importovali hlavní klíč. Nyní budeme pokračovat se dvěma dílčími klíči. Zadáme key 1 pro výběr šifrovacího podklíče a zadáme keytocard a opět vybereme slot, který chceme použít.

gpg> key 1

sec  rsa2048/0EFFB0704391497C
     created: 2018-09-17  expires: never       usage: SC
     trust: ultimate      validity: ultimate
ssb* rsa2048/A9A814C210F16700
     created: 2018-09-17  expires: never       usage: E
ssb  rsa2048/61F186B8B0BBD5D5
     created: 2018-09-17  expires: never       usage: A
[ultimate] (1). Jane Doe

gpg> keytocard
Please select where to store the key:
   (2) Encryption key
Your selection? 2

sec  rsa2048/0EFFB0704391497C
     created: 2018-09-17  expires: never       usage: SC
     trust: ultimate      validity: ultimate
ssb* rsa2048/A9A814C210F16700
     created: 2018-09-17  expires: never       usage: E
ssb  rsa2048/61F186B8B0BBD5D5
     created: 2018-09-17  expires: never       usage: A
[ultimate] (1). Jane Doe

Nyní zrušíme výběr prvního klíče pomocí key 1 a vybereme druhý podklíč pomocí key 2 a přesuneme ji také pomocí keytocard. Poté ukončíme práci a uložíme změny.

gpg> key 1

sec  rsa2048/0EFFB0704391497C
     created: 2018-09-17  expires: never       usage: SC
     trust: ultimate      validity: ultimate
ssb  rsa2048/A9A814C210F16700
     created: 2018-09-17  expires: never       usage: E
ssb  rsa2048/61F186B8B0BBD5D5
     created: 2018-09-17  expires: never       usage: A
[ultimate] (1). Jane Doe

gpg> key 2

sec  rsa2048/0EFFB0704391497C
     created: 2018-09-17  expires: never       usage: SC
     trust: ultimate      validity: ultimate
ssb  rsa2048/A9A814C210F16700
     created: 2018-09-17  expires: never       usage: E
ssb* rsa2048/61F186B8B0BBD5D5
     created: 2018-09-17  expires: never       usage: A
[ultimate] (1). Jane Doe

gpg> keytocard
Please select where to store the key:
   (3) Authentication key
Your selection? 3

sec  rsa2048/0EFFB0704391497C
     created: 2018-09-17  expires: never       usage: SC
     trust: ultimate      validity: ultimate
ssb  rsa2048/A9A814C210F16700
     created: 2018-09-17  expires: never       usage: E
ssb* rsa2048/61F186B8B0BBD5D5
     created: 2018-09-17  expires: never       usage: A
[ultimate] (1). Jane Doe

gpg> quit
Save changes? (y/N) y

Vaše klíče jsou nyní přesunuty do klíče Nitrokey a tím hardwarově zabezpečeny. Gratulujeme!

Exportování veřejného klíče a používání serveru Keyserver

Přestože můžete začít používat klíč Nitrokey ihned po vygenerování klíčů ve svém systému, je třeba importovat veřejný klíč do každého systému, ve kterém chcete klíč Nitrokey používat. Chcete-li být připraveni, máte tedy dvě možnosti: Buď si veřejný klíč uložíte kamkoli a použijete ho v jiném systému, nebo si veřejný klíč uložíte na webovou stránku/keyserver.

Generování souboru veřejného klíče

Chcete-li získat jednoduchý soubor svého veřejného klíče, stačí použít gpg --armor --export keyID > pubkey.asc. Jako „keyID“ použijte buď otisk prstu (podívejte se na gpg -K a získejte jej), nebo jako identifikátor použijte pouze svou e-mailovou adresu.

Tento soubor můžete nosit s sebou nebo ho poslat komukoli, komu se vám líbí. Tento soubor není vůbec tajný. Pokud chcete použít klíč Nitrokey v jiném systému, nejprve tento veřejný klíč importujte pomocí gpg --import pubkey.asc a poté zadejte gpg --card-status, aby systém věděl, kde má tento klíč hledat. To je vše.

Nahrání veřejného klíče

If you don’t want to carry a public key file, you can upload it to keyserver. For the common SKS federated keyservers, for example, keyserver.ubuntu.com. Type gpg --keyserver keyserver.ubuntu.com --send-key keyID. If you are using another machine, you can just import it by using gpg --keyserver keyserver.ubuntu.com --recv-key keyID.

Můžete také použít openpgp.keys.org. Doporučený způsob je gpg --export your_address@example.net. Pokud používáte jiný počítač, můžete jej prostě importovat pomocí gpg --auto-key-locate hkps://keys.openpgp.org.

Another possibility is to change the URL setting on your card. Start gpg --card-edit again and first set the URL where the key is situated (e.g. on the keyserver or on your webpage etc.) via the url command. From now on you can import the key on another system by just using the fetch command within the gpg --card-edit environment.