Generarea cheilor OpenPGP cu backup#

(Nitrokey Start - 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.

Generarea cheilor#

La început, trebuie să generați o cheie la nivel local. Puteți decide ce atribute ale cheii să utilizați și - cel mai important - puteți exporta cheia și o puteți păstra undeva unde să o salvați în cazul în care aveți nevoie să o restaurați.

Cheia principală și subcheia de criptare#

Putem folosi comanda gpg --full-generate-key --expert` pentru a începe o generare ghidată a cheilor cu toate opțiunile posibile. Se poate alege tipul de cheie (de obicei RSA (1) sau ECC (9)), lungimea cheii și alte atribute. Următoarea ieșire este doar un exemplu simplu, puteți alege și alte valori.

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

Tabelul următor ilustrează ce algoritm poate fi utilizat pe fiecare dispozitiv, în cazul în care doriți să utilizați atribute de cheie diferite.

Start

Pro + Stocare

Pro 2 + Storage 2

rsa1024

rsa2048

rsa3072

rsa4096

curve25519 (ECC)

NIST (ECC)

Brainpool (ECC)

secp256k1

Subcheie pentru autentificare#

Aveți acum o cheie principală cu capacitatea de a semna și certifica (marcată ca [SC]) și o cheie secundară pentru criptare (marcată ca [E]). Este necesar să aveți o altă subcheie pentru cazurile de utilizare în care este necesară autentificarea. Această subcheie este generată în etapa următoare. Introduceți gpg --edit-key --expert keyID pentru a începe procesul, în timp ce „keyID” este fie id-ul cheii, fie adresa de e-mail utilizată în timpul generării cheii.

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

Acum vă aflați în modul interactiv al GnuPG și puteți adăuga o cheie prin simpla tastare a addkey. Trebuie să alegeți cheia pe care doriți să o utilizați. Este esențial să alegeți „set your own capabilities”, deoarece dorim să avem capacitatea „authenticate” (autentificare), care nu este disponibilă altfel. Comutăm semnarea și criptarea prin tastarea s și e` și activăm autentificarea prin tastarea 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

Am renunțat cu q`. După aceea, trebuie să răspundem la aceleași întrebări ca și înainte. În cele din urmă, avem un set de chei gata de utilizare pe care îl putem importa în dispozitivul nostru.

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

Acum este momentul potrivit pentru a face o copie de rezervă a cheii. Vă rugăm să păstrați această copie de rezervă în siguranță. Cea mai bună practică este să nu aveți niciodată această cheie pe un computer obișnuit care are conexiune la internet, astfel încât cheia să nu fie compromisă. Puteți crea o copie de rezervă cu ceva de genul:

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

Cheie de import#

Aveți o cheie principală și două chei secundare care pot fi importate în Nitrokey. Înainte de a continua, vă rugăm să vă asigurați că aveți într-adevăr o copie de rezervă a cheii, dacă aveți nevoie de una. Comanda keytocard` folosită în pașii următori va șterge cheia de pe disc!

Începem procesul accesând din nou interfața interactivă a GnuPG cu gpg --edit-key --expert keyID, în timp ce keyID` este fie id-ul cheii, fie adresa de e-mail utilizată în timpul generării cheii.

> 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

Tocmai am importat cheia principală pe card. Acum vom continua cu cele două chei secundare. Scriem key 1 pentru a selecta subcheia de criptare și scriem keytocard<x> din nou și selectăm slotul de utilizat.

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

Acum deselectăm prima cheie cu key 1 și selectăm a doua subcheie cu key 2` și o mutăm de asemenea cu keytocard. După aceea ieșim și salvăm modificările.

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

Cheile dvs. sunt acum mutate pe Nitrokey și astfel sunt securizate în hardware. Felicitări!

Exportarea cheii publice și utilizarea serverului de chei#

Deși puteți începe să utilizați Nitrokey imediat după ce ați generat cheile pe sistemul dumneavoastră, trebuie să importați cheia publică pe fiecare sistem pe care doriți să utilizați Nitrokey. Așadar, pentru a fi pregătit, aveți două opțiuni: Fie salvați cheia publică oriunde doriți și o utilizați pe un alt sistem, fie salvați cheia publică pe o pagină web/server de chei.

Generarea unui fișier cu cheie publică#

Pentru a obține un fișier simplu cu cheia dvs. publică, puteți folosi gpg --armor --export keyID > pubkey.asc`. Utilizați fie amprenta digitală ca „keyID” (uitați-vă la gpg -K pentru a o obține), fie folosiți pur și simplu adresa dvs. de e-mail ca identificator.

Puteți purta acest fișier cu dumneavoastră sau îl puteți trimite oricui doriți. Acest fișier nu este deloc secret. Dacă doriți să utilizați Nitrokey pe un alt sistem, mai întâi importați această cheie publică prin gpg --import pubkey.asc și apoi tastați gpg --card-status astfel încât sistemul să știe unde să caute această cheie. Asta este tot.

Încărcarea cheii publice#

Dacă nu doriți să aveți la dumneavoastră un fișier de chei publice, îl puteți încărca pe keyserver. Puteți face acest lucru tastând gpg --keyserver search.keyserver.net --send-key keyID. Dacă folosiți o altă mașină, puteți pur și simplu să o importați folosind gpg --keyserver search.keyserver.net --recv-key keyID.

O altă posibilitate este să modificați setarea URL-ului de pe cardul dumneavoastră. Porniți din nou gpg --card-edit și setați mai întâi URL-ul unde se află cheia (de exemplu, pe serverul de chei sau pe pagina dvs. web etc.) prin intermediul comenzii url. De acum încolo puteți importa cheia pe un alt sistem folosind doar comanda fetch în cadrul gpg --card-edit environment.