Δημιουργία κλειδιού OpenPGP με δημιουργία αντιγράφων ασφαλείας#

(Nitrokey Pro 2 - macOS)

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.

Παραγωγή κλειδιών#

Αρχικά, πρέπει να δημιουργήσετε ένα κλειδί τοπικά. Μπορείτε να αποφασίσετε, ποια χαρακτηριστικά του κλειδιού θα χρησιμοποιήσετε και - το πιο σημαντικό - μπορείτε να εξάγετε το κλειδί και να το κρατήσετε κάπου αποθηκευμένο σε περίπτωση που χρειαστεί να επαναφέρετε το κλειδί.

Κύριο κλειδί και υποκλειδί κρυπτογράφησης#

Μπορούμε να χρησιμοποιήσουμε την εντολή gpg --full-generate-key --expert για να ξεκινήσουμε μια καθοδηγούμενη παραγωγή κλειδιών με όλες τις πιθανές επιλογές. Μπορείτε να επιλέξετε τον τύπο του κλειδιού (συνήθως RSA (1) ή ECC (9)), το μήκος του κλειδιού και άλλα χαρακτηριστικά. Η παρακάτω έξοδος είναι ένα απλό παράδειγμα, μπορείτε να επιλέξετε άλλες τιμές.

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

Ο παρακάτω πίνακας δείχνει ποιος αλγόριθμος μπορεί να χρησιμοποιηθεί σε ποια συσκευή, σε περίπτωση που θέλετε να χρησιμοποιήσετε διαφορετικά χαρακτηριστικά κλειδιών.

Έναρξη

Pro + Αποθήκευση

Pro 2 + Αποθήκευση 2

rsa1024

rsa2048

rsa3072

rsa4096

curve25519 (ECC)

NIST (ECC)

Brainpool (ECC)

secp256k1

Υποκλειδί για έλεγχο ταυτότητας#

Τώρα έχετε ένα κύριο κλειδί με δυνατότητα υπογραφής και πιστοποίησης (σημειωμένο ως [SC]) και ένα υποκλειδί για κρυπτογράφηση (σημειωμένο ως [E]). Είναι απαραίτητο να έχετε άλλο ένα υποκλειδί για περιπτώσεις χρήσης στις οποίες απαιτείται αυθεντικοποίηση. Αυτό το υποκλειδί δημιουργείται στο επόμενο βήμα. Πληκτρολογήστε gpg --edit-key --expert keyID για να ξεκινήσετε τη διαδικασία, ενώ το «keyID» είναι είτε το id του κλειδιού είτε η διεύθυνση ηλεκτρονικού ταχυδρομείου που χρησιμοποιήθηκε κατά τη δημιουργία του κλειδιού.

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

Τώρα βρίσκεστε στη διαδραστική λειτουργία του GnuPG και μπορείτε να προσθέσετε ένα κλειδί πληκτρολογώντας απλά addkey. Πρέπει να επιλέξετε το κλειδί που θέλετε να χρησιμοποιήσετε. Είναι ζωτικής σημασίας να επιλέξετε το «set your own capabilities», επειδή θέλουμε να έχουμε τη δυνατότητα «authenticate», η οποία δεν είναι διαθέσιμη διαφορετικά. Αλλάζουμε την υπογραφή και την κρυπτογράφηση πληκτρολογώντας s και e και ενεργοποιούμε την αυθεντικοποίηση πληκτρολογώντας 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

Σταματάμε με q. Στη συνέχεια πρέπει να απαντήσουμε στις ίδιες ερωτήσεις όπως και πριν. Τέλος, έχουμε ένα έτοιμο σετ κλειδιών το οποίο μπορούμε να εισάγουμε στη συσκευή μας.

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

Τώρα είναι η κατάλληλη στιγμή για να δημιουργήσετε αντίγραφα ασφαλείας του κλειδιού σας. Παρακαλώ κρατήστε αυτό το αντίγραφο ασφαλείας πολύ ασφαλές. Η καλύτερη πρακτική είναι να μην έχετε ποτέ αυτό το κλειδί σε έναν συνηθισμένο υπολογιστή που έχει σύνδεση στο διαδίκτυο, έτσι ώστε το κλειδί να μην παραβιαστεί ποτέ. Μπορείτε να δημιουργήσετε ένα αντίγραφο ασφαλείας με κάτι σαν:

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

Βασική εισαγωγή#

Έχετε ένα κύριο κλειδί και δύο δευτερεύοντα κλειδιά που μπορούν να εισαχθούν στο Nitrokey σας. Πριν προχωρήσετε, βεβαιωθείτε ότι έχετε όντως ένα αντίγραφο ασφαλείας του κλειδιού, αν το χρειάζεστε. Η εντολή keytocard που χρησιμοποιείται στα επόμενα βήματα θα διαγράψει το κλειδί σας από το δίσκο σας!

Ξεκινάμε τη διαδικασία με πρόσβαση στο διαδραστικό περιβάλλον του GnuPG και πάλι με gpg --edit-key --expert keyID, ενώ ``keyID<x><x=»130»></x>` είναι είτε το id του κλειδιού είτε η διεύθυνση ηλεκτρονικού ταχυδρομείου που χρησιμοποιήθηκε κατά τη δημιουργία του κλειδιού.

> 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

Μόλις εισαγάγαμε το κύριο κλειδί στην κάρτα. Τώρα συνεχίζουμε με τα δύο υποκλειδιά. Πληκτρολογούμε key 1 για να επιλέξουμε το υποκλειδί κρυπτογράφησης και πληκτρολογούμε ξανά keytocard και επιλέγουμε την υποδοχή που θα χρησιμοποιήσουμε.

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

Τώρα αποεπιλέγουμε το πρώτο κλειδί με key 1 και επιλέγουμε το δεύτερο υποκλειδί με key 2 και το μετακινούμε και αυτό με keytocard. Στη συνέχεια τερματίζουμε και αποθηκεύουμε τις αλλαγές.

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

Τα κλειδιά σας έχουν πλέον μεταφερθεί στο Nitrokey και είναι έτσι ασφαλισμένα σε υλικό. Συγχαρητήρια!

Εξαγωγή δημόσιου κλειδιού και χρήση διακομιστή κλειδιών#

Παρόλο που μπορείτε να αρχίσετε να χρησιμοποιείτε το Nitrokey αμέσως μετά τη δημιουργία των κλειδιών στο σύστημά σας, πρέπει να εισάγετε το δημόσιο κλειδί σας σε κάθε σύστημα στο οποίο θέλετε να χρησιμοποιήσετε το Nitrokey. Έτσι, για να είστε προετοιμασμένοι, έχετε δύο επιλογές: Είτε αποθηκεύετε το δημόσιο κλειδί οπουδήποτε θέλετε και το χρησιμοποιείτε σε ένα άλλο σύστημα είτε αποθηκεύετε το δημόσιο κλειδί σε μια ιστοσελίδα/διακομιστή κλειδιών.

Δημιουργία αρχείου δημόσιου κλειδιού#

Για να λάβετε ένα απλό αρχείο με το δημόσιο κλειδί σας, μπορείτε απλώς να χρησιμοποιήσετε gpg --armor --export keyID > pubkey.asc. Χρησιμοποιήστε είτε το δακτυλικό αποτύπωμα ως «keyID» (κοιτάξτε στο gpg -K για να το βρείτε) είτε απλά χρησιμοποιήστε τη διεύθυνση ηλεκτρονικού ταχυδρομείου σας ως αναγνωριστικό.

Μπορείτε να έχετε αυτό το αρχείο μαζί σας ή να το στείλετε σε όποιον θέλετε. Αυτό το αρχείο δεν είναι καθόλου μυστικό. Αν θέλετε να χρησιμοποιήσετε το Nitrokey σε ένα άλλο σύστημα, πρώτα εισάγετε αυτό το δημόσιο κλειδί μέσω gpg --import pubkey.asc και στη συνέχεια πληκτρολογείτε gpg --card-status ώστε το σύστημα να ξέρει πού να αναζητήσει αυτό το κλειδί. Αυτό είναι όλο.

Ανέβασμα του δημόσιου κλειδιού#

Εάν δεν θέλετε να έχετε μαζί σας ένα δημόσιο αρχείο κλειδιού, μπορείτε να το ανεβάσετε στον διακομιστή κλειδιών. Μπορείτε να το κάνετε αυτό πληκτρολογώντας gpg --keyserver search.keyserver.net --send-key keyID. Αν χρησιμοποιείτε άλλο μηχάνημα, μπορείτε απλά να το εισάγετε χρησιμοποιώντας gpg --keyserver search.keyserver.net --recv-key keyID.

Μια άλλη δυνατότητα είναι να αλλάξετε τη ρύθμιση URL στην κάρτα σας. Ξεκινήστε ξανά το gpg --card-edit και ρυθμίστε πρώτα τη διεύθυνση URL όπου βρίσκεται το κλειδί (π.χ. στον διακομιστή κλειδιών ή στην ιστοσελίδα σας κ.λπ.) μέσω της εντολής url. Από εδώ και στο εξής μπορείτε να εισάγετε το κλειδί σε ένα άλλο σύστημα χρησιμοποιώντας απλώς την εντολή fetch εντός της εντολής gpg --card-edit environment.