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

Οι ακόλουθες οδηγίες εξηγούν τη δημιουργία κλειδιών OpenPGP και τον τρόπο αντιγραφής τους στο Nitrokey. Αυτή η μέθοδος έχει το πλεονέκτημα ότι παρέχει ένα αντίγραφο ασφαλείας των κλειδιών σε περίπτωση απώλειας ή θραύσης του Nitrokey. Οι οδηγίες βασίζονται στη διεπαφή γραμμής εντολών του GnuPG. Συνεπώς, θα πρέπει να έχετε εγκαταστήσει το GnuPG στο σύστημά σας. Η νεότερη έκδοση του GnuPG για Windows βρίσκεται εδώ και η νεότερη έκδοση για MacOS βρίσκεται εδώ. Οι χρήστες συστημάτων Linux παρακαλούνται να εγκαταστήσουν το GnuPG με τη βοήθεια του διαχειριστή πακέτων.

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

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

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

Μπορούμε να χρησιμοποιήσουμε την εντολή 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]

Σημείωση

Για πληροφορίες σχετικά με τους υποστηριζόμενους αλγορίθμους, ανατρέξτε στο faq

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

Τώρα έχετε ένα κύριο κλειδί με δυνατότητα υπογραφής και πιστοποίησης (σημειωμένο ως [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 ώστε το σύστημα να ξέρει πού να αναζητήσει αυτό το κλειδί. Αυτό είναι όλο.

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

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.

Μπορείτε επίσης να χρησιμοποιήσετε το openpgp.keys.org. Ο συνιστώμενος τρόπος είναι να το κάνετε αυτό με το gpg --export your_address@example.net. Αν χρησιμοποιείτε άλλο μηχάνημα, μπορείτε απλά να το εισάγετε χρησιμοποιώντας το 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.