Generovanie kľúča OpenPGP so zálohovaním#

(Nitrokey Pro 2 - Windows)

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.

Generovanie kľúčov#

Najprv je potrebné vygenerovať kľúč lokálne. Môžete sa rozhodnúť, ktoré atribúty kľúča použijete, a čo je najdôležitejšie, môžete kľúč exportovať a uložiť ho na nejaké miesto pre prípad, že by ste ho potrebovali obnoviť.

Hlavný kľúč a šifrovací podkľúč#

Príkazom gpg --full-generate-key --expert môžeme spustiť riadené generovanie kľúčov so všetkými možnými voľbami. Môžete si vybrať typ kľúča (zvyčajne RSA (1) alebo ECC (9)), dĺžku kľúča a ďalšie atribúty. Nasledujúci výstup je len jednoduchý príklad, môžete zvoliť aj iné 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]

V nasledujúcej tabuľke je znázornené, ktorý algoritmus možno použiť na ktorom zariadení v prípade, že chcete použiť rôzne atribúty kľúča.

Štart

Pro + Storage

Pro 2 + úložisko 2

rsa1024

rsa2048

rsa3072

rsa4096

krivka25519 (ECC)

NIST (ECC)

Brainpool (ECC)

secp256k1

Podkľúč pre overovanie#

Teraz máte hlavný kľúč s možnosťou podpisovania a certifikácie (označený ako [SC]) a podkľúč na šifrovanie (označený ako [E]). Je potrebné mať ďalší podkľúč pre prípady použitia, v ktorých je potrebné overovanie. Tento podkľúč sa vygeneruje v ďalšom kroku. Na spustenie procesu zadajte gpg --edit-key --expert keyID, pričom „keyID“ je buď id kľúča, alebo e-mailová adresa použitá počas generovania kľúča.

> 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>

Teraz ste v interaktívnom režime GnuPG a môžete pridať kľúč jednoduchým zadaním addkey. Musíte vybrať kľúč, ktorý chcete použiť. Rozhodujúce je vybrať možnosť „nastaviť vlastné schopnosti“, pretože chceme mať možnosť „overiť“, ktorá inak nie je k dispozícii. Podpisovanie a šifrovanie prepíname zadaním s a e a aktivujeme overenie zadaní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

Ukončíme q. Potom musíme odpovedať na rovnaké otázky ako predtým. Nakoniec máme pripravenú sadu kľúčov, ktorú môžeme importovať do nášho zariadenia.

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

Teraz je vhodný čas na zálohovanie kľúča. Túto zálohu si veľmi dobre zabezpečte. Najlepším postupom je nemať tento kľúč nikdy na bežnom počítači, ktorý má pripojenie na internet, aby sa kľúč nikdy neohrozil. Zálohu môžete vytvoriť pomocou niečoho takého:

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

Import kľúčov#

Máte hlavný kľúč a dva vedľajšie kľúče, ktoré môžete importovať do kľúča Nitrokey. Pred pokračovaním sa uistite, že máte naozaj zálohu kľúča, ak ju potrebujete. Príkaz keytocard použitý v nasledujúcich krokoch vymaže váš kľúč z disku!

Proces začneme opätovným prístupom do interaktívneho rozhrania GnuPG pomocou gpg --edit-key --expert keyID, pričom keyID je buď id kľúča, alebo e-mailová adresa použitá počas generovania kľúča.

> 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

Práve sme importovali hlavný kľúč na kartu. Teraz pokračujeme s dvoma vedľajšími kľúčmi. Zadáme key 1 na výber šifrovacieho podkľúča a zadáme keytocard a opäť vyberieme slot na použitie.

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

Teraz zrušíme výber prvého kľúča pomocou key 1 a vyberieme druhý podkľúč pomocou key 2 a presunieme ho tiež pomocou keytocard. Potom ukončíme prácu a uložíme zmeny.

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 kľúče sú teraz presunuté do zariadenia Nitrokey, a tým hardvérovo zabezpečené. Gratulujeme!

Exportovanie verejného kľúča a používanie servera Keyserver#

Hoci môžete začať používať svoj Nitrokey hneď po vygenerovaní kľúčov vo vašom systéme, musíte importovať svoj verejný kľúč do každého systému, v ktorom chcete Nitrokey používať. Aby ste boli pripravení, máte teda dve možnosti: Buď si verejný kľúč uložíte kdekoľvek a použijete ho v inom systéme, alebo si verejný kľúč uložíte na webovú stránku/keyserver.

Generovanie súboru verejného kľúča#

Ak chcete získať jednoduchý súbor svojho verejného kľúča, stačí použiť gpg --armor --export keyID > pubkey.asc. Ako „keyID“ použite buď odtlačok prsta (pozrite sa na gpg -K, aby ste ho získali), alebo jednoducho použite svoju e-mailovú adresu ako identifikátor.

Tento súbor môžete nosiť so sebou alebo ho poslať komukoľvek, komu sa vám páči. Tento súbor nie je vôbec tajný. Ak chcete použiť kľúč Nitrokey v inom systéme, najprv importujte tento verejný kľúč prostredníctvom gpg --import pubkey.asc a potom zadajte gpg --card-status, aby systém vedel, kde má tento kľúč hľadať. To je všetko.

Odoslanie verejného kľúča#

Ak nechcete nosiť verejný súbor kľúča so sebou, môžete ho nahrať na keyserver. Môžete to urobiť zadaním gpg --keyserver search.keyserver.net --send-key keyID. Ak používate iný počítač, môžete ho jednoducho importovať pomocou gpg --keyserver search.keyserver.net --recv-key keyID.

Ďalšou možnosťou je zmeniť nastavenie adresy URL na karte. Spustite `gpg --card-edit znova a najprv nastavte URL adresu, na ktorej sa kľúč nachádza (napr. na keyserveri alebo na vašej webovej stránke atď.) prostredníctvom príkazu url. Odteraz môžete kľúč importovať do iného systému len pomocou príkazu fetch v rámci gpg --card-edit environment.