Εισαγωγή στο OpenPGP και το Key Signing Party

From Ελεύθερο Λογισμικό / Λογισμικό ανοιχτού κώδικα
Jump to: navigation, search

Η συγγραφή αυτού του κειμένου έγινε με αφορμή την άσκηση Κυβερνοάμυνας 2014 του ΓΕΕΘΑ. Στο πλαίσιο της άσκησης εγκατάσταθει key server σε ένα Virtual Machine. Για το VM δείτε το σχετικό άρθρο.

Contents

Εισαγωγή στο OpenPGP και το Key Signing Party

Εταιρεία Ελεύθερου Λογισμικού / Λογισμικού Ανοικτού Κώδικα

Απρίλιος 2014

1. Εισαγωγή ‐ Βασικές έννοιες

1.1 Κρυπτογραφία Δημoσίου Κλειδιού

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

Η Κρυπτογραφία Δημoσίου Κλειδιού δημιουργήθηκε για να λύσει αυτό το πρόβλημα. Αντί για ένα μόνο κλειδί, σε αυτή τη μέθοδο χρησιμοποιούνται δύο, το Δημόσιο και το Ιδιωτικό. Το Δημόσιο κλειδί μπορεί να διαμοιραστεί με οποιοδήποτε μέσο, είτε με φυσική παρουσία — για παράδειγμα μέσω αντιγραφής σε USB flash stick — είτε ψηφιακά, όπως με αποστολή μέσω e-mail ή ανάρτηση σε κάποια ιστοσελίδα ή μέσο κοινωνικής δικτύωσης.

Το Δημόσιο κλειδί μπορεί να το αποκτήσει οποιοσδήποτε χωρίς να επηρεαστεί η ασφάλεια αυτής της μεθόδου κρυπτογραφίας. Αντίθετα, το Ιδιωτικό κλειδί είναι διαθέσιμο μόνο στον ιδιοκτήτη του, είναι μυστικό και δεν πρέπει να περάσει στην κυριότητα τρίτων. Είναι αδύνατο να παραχθεί ένα Ιδιωτικό κλειδί από το Δημόσιο που του αντιστοιχεί, εφόσον δεν υπάρχουν παραλείψεις ή λάθη στην υλοποίηση της μεθόδου κρυπτογραφίας που χρησιμοποιείται.

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

1.2 Ψηφιακές Υπογραφές

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

Για το σκοπό αυτό εφευρέθηκε η έννοια της Ψηφιακής Υπογραφής με τη χρήση της Κρυπτογραφίας Δημοσίου Κλειδιού. Ο αποστολέας «υπογράφει» το μήνυμα του χρησιμοποιώντας το Ιδιωτικό κλειδί του και η ψηφιακή αυτή υπογραφή ενσωματώνεται στο ίδιο το μήνυμα. Στη συνέχεια, οποιοσδήποτε διαθέτει το Δημόσιο κλειδί του αποστολέα μπορεί να επιβεβαιώσει την αυθεντικότητα του μηνύματος.

1.3 Κύκλος Εμπιστευτικότητας

Μία αδυναμία που παρουσιάζει η μέθοδος Κρυπτογραφίας Δημοσίου Κλειδιού έχει να κάνει με τη δημοσιοποίηση των Δημοσίων κλειδιών. Ουσιαστικά, οποιοσδήποτε μπορεί να δημιουργήσει ζεύγη ψευδών Ιδιωτικών και Δημοσίων κλειδιών με το όνομα κάποιου άλλου. Δημοσιεύοντας αυτό το ψευδές Δημόσιο Κλειδί, ο επιτιθέμενος μπορεί να προσποιηθεί την ταυτότητα του θύματος και να παραπλανήσει τρίτους ή να αποκτήσει πρόσβαση σε απόρρητα μηνύματα που αφορούν το θύμα.

Η λύση που υιοθετήθηκε από το πρωτόκολλο OpenPGP (ανοικτό πρωτόκολλο Κρυπτογραφίας Δημοσίου Κλειδιού, RFC4880) για αυτό το πρόβλημα είναι η ψηφιακή υπογραφή των ίδιων των κλειδιών. Ένα Δημόσιο κλειδί μπορεί να υπογραφεί ψηφιακά από άλλους και η υπογραφή αυτή πιστοποιεί ότι το κλειδί αυτό ανήκει όντως στον φερόμενο ως ιδιοκτήτη του, ή πιο σωστά χρησιμοποιείται από το User Identification (UID) του.

Ένα κλειδί μπορεί να θεωρηθεί ως αυθεντικό όταν γνωρίζουμε ότι όντως ανήκει στο άτομο στο οποίο αναφέρεται. Για παράδειγμα, αν προηγηθεί προσωπική συνάντηση με τον ιδιοκτήτη του κλειδιού και επιβεβαίωση της ταυτότητάς του με την παρουσίαση κάποιου επικυρωμένου εγγράφου με φωτογραφία. Ένας άλλος τρόπος ταυτοποίησης είναι να έχει υπογράψει το Δημόσιο κλειδί που μας ενδιαφέρει ένα τρίτο πρόσωπο της εμπιστοσύνης μας, του οποίου το κλειδί γνωρίζουμε ότι είναι αυθεντικό. Όσο περισσότερες ψηφιακές υπογραφές έχει συλλέξει ένα κλειδί, τόσο περισσότερες πιθανότητες έχει να είναι αυθεντικό — εφόσον, βέβαια, και οι υπογραφές αυτές θεωρούνται αυθεντικές.

Σε κάθε περίπτωση, πάντως, πριν εμπιστευτούμε ένα Δημόσιο κλειδί καλό είναι να ελέγξουμε την ακεραιότητα του συγκρίνοντας το ψηφιακό αποτύπωμα (digital fingerprint) του με αντίγραφο του από μία έμπιστη πηγή πριν το θεωρήσουμε αξιόπιστο. Για τα ψηφιακά αποτυπώματα μπορείτε να διαβάσετε περισσότερα στη σχετική ενότητα, στη συνέχεια. Ένα παράδειγμα ψηφιακού αποτυπώματος Δημοσίου κλειδιού είναι το 9F94 AFA0 05AF ABE8 09DE DF2C 8AC7 422B 60FC F76A.

Υπογράφοντας τα Δημόσια κλειδιά άλλων — μετά την επαλήθευση τους, φυσικά — συμβάλλουμε στη δημιουργία ενός Κύκλου ΕμπιστευτικότηταςWeb of Trust). Όσο «μεγαλώνει» αυτός ο κύκλος τόσο περιορίζεται και το πρόβλημα της κυκλοφορίας πλαστών κλειδιών.

2. Το GNU Privacy Guard (GnuPG)

2.1 Εισαγωγή

Το GNU Privacy Guard, ή GnuPG εν συντομία, είναι μία υλοποίηση του πρωτοκόλλου OpenPGP, υπό την αιγίδα του Free Software Foundation (FSF) στο πλαίσιο της «οικογένειας» ανοικτού λογισμικού, GNU. Μέχρι και την ημερομηνία συγγραφής αυτού του άρθρου (Απρίλιος 2014) το GnuPG θεωρείται ως η πιο ολοκληρωμένη υλοποίηση του OpenPGP με λογισμικό ανοικτού κώδικα. Η άδεια χρήσης του προγράμματος είναι η GNU Public License (GPL) έκδοση 3. Μία άλλη υλοποίηση του OpenPGP αποτελεί το NetPGP από το NetBSD Project, το οποίο διανέμεται με την πιο ευέλικτη άδεια χρήσης BSD (στην έκδοση 2 παραγράφων).

Το GnuPG είναι διαθέσιμο για εγκατάσταση στις περισσότερες διανομές GNU/Linux και στα λειτουργικά συστήματα BSD. Διατίθενται επίσης εκδόσεις για Windows, OS X, Android και iOS με φιλικό προς το χρήστη περιβάλλον εργασίας, προσαρμοσμένο στο κάθε λειτουργικό σύστημα. Στα παραδείγματα αυτού του κειμένου αναφερόμαστε στην έκδοση για τη διανομή GNU/Linux, Debian.

2.2 Εγκατάσταση

Στο Debian GNU/Linux το GnuPG είναι διαθέσιμο από τα επίσημα αποθετήρια (package repositories) της διανομής και αποτελεί μέρος της βασικής εγκατάστασης, καθώς χρησιμοποιείται από το σύστημα για την επαλήθευση των πακέτων λογισμικού — από την έκδοση 0.6 του APT και μετά. Εναλλακτικά, μπορούμε να το εγκαταστήσουμε με την εντολή: apt-get install gnupg.

Μέχρι τώρα, ως gnupg αναφερόμαστε στην πρώτη έκδοση του προγράμματος. Η δεύτερη έκδοση του GnuPG (version 2.x) κυκλοφορεί παράλληλα με την πρώτη, καθώς περιέχει νέες δυνατότητες αλλά και σημαντικές αλλαγές στην αρχιτεκτονική του προγράμματος. Κατά συνέπεια, δημιουργεί ασυμβατότητες με την πρώτη έκδοση και δυσκολία στη μεταφορά της σε λειτουργικά συστήματα που δε βασίζονται στο Unix, όπως τα Windows. Στο Debian, η δεύτερη έκδοση του προγράμματος είναι διαθέσιμη με το πακέτο gnupg2 και μπορεί να εγκατασταθεί παράλληλα με το gnupg με την εντολή: apt-get install gnupg2.

Σημείωση: η εντολή apt-get μπορεί να εκτελείται μόνο από το χρήστη root ή με τη βοήθεια του sudo από χρήστες με λιγότερα δικαιώματα συστήματος.

3. Δημιουργία Κλειδιών και Πιστοποιητικού Ανάκλησης

3.1 Δημιουργία ζεύγους Ιδιωτικού και Δημοσίου κλειδιού

Για να δημιουργήσουμε ένα ζεύγος Ιδιωτικού και Δημοσίου Κλειδιού τρέχουμε την εντολή:

gpg --gen-key

ή

gpg2 --gen-key

αν χρησιμοποιούμε τη δεύτερη έκδοση του GnuPG, αντίστοιχα.

Και στις δύο περιπτώσεις το πρόγραμμα θα μας ρωτήσει ποιον αλγόριθμο κρυπτογραφίας επιθυμούμε να χρησιμοποιήσουμε:

gpg (GnuPG) 1.4.12; Copyright (C) 2012 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.

gpg: keyring ‘/home/eellak/.gnupg/secring.gpg’ created
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)
Your selection?

Οι επιλογές μας είναι:

  1. Αλγόριθμος RSA για κρυπτογράφηση και υπογραφή (προεπιλογή)
  2. Αλγόριθμος DSA για υπογραφή και αλγόριθμος ElGamal για κρυπτογράφηση
  3. Αλγόριθμος DSA μόνο για υπογραφή
  4. Αλγόριθμος RSA μόνο για υπογραφή

Πρέπει να αναφέρουμε ότι στις προδιαγραφές του πρωτοκόλλου OpenPGP (RFC4880), ο αλγόριθμος RSA αναφέρεται ως αποδοκιμαστέος από το 2007 και δε συνίσταται η χρήση του, παρόλο που μέχρι σήμερα δεν έχει δημοσιευθεί παραβίαση του, ακόμα και σε μεγέθη κλειδιών 1024 bits. Η δεύτερη επιλογή (DSA and Elgamal) προσφέρει ασφάλεια αντίστοιχου επιπέδου με το RSA, αλλά πολύ γρηγορότερη δημιουργία κλειδιών και υπογραφών. Για λόγους συμβατότητας θα επιλέξουμε την προεπιλεγμένη πρόταση, RSA and RSA, πατώντας Enter. Ευελπιστούμε ότι μελλοντική έκδοση του GnuPG θα υποστηρίζει νεότερους αλγορίθμους Κρυπτογραφίας Ελλειπτικών Καμπυλών, όπως ο Curve25519 από τον Daniel J. Bernstein. Οπότε και θα πρέπει να ανανεωθεί αυτό το κείμενο.

Στη συνέχεια θα μας ζητηθεί να ορίσουμε το μέγεθος των κλειδιών που επιθυμούμε, μεταξύ των τιμών 1024 και 4096 bits:

RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048)

Ο δημιουργός του PGP (προκάτοχος του OpenPGP), Phil Zimmermann σε συνέντευξη του το 2013 προτείνει να χρησιμοποιείται μέγεθος κλειδιού τουλάχιστον 3072 bits για τον αλγόριθμο RSA, οπότε θα επιλέξουμε 4096, εκτός και αν η υπολογιστική ισχύς του συστήματος μας είναι ιδιαιτέρως ανεπαρκής οπότε και θα προτιμήσουμε 2048, που είναι η προεπιλογή.

Η επόμενη επιλογή μας αφορά το αν επιθυμούμε το κλειδί μας να έχει ημερομηνία λήξεως και αν ναι, σε πόσο διάστημα (σε ημέρες, εβδομάδες, μήνες ή έτη) να λήγει:

Please specify how long the key should be valid.
         0 = key does not expire
      <n>  = key expires in n days
      <n>w = key expires in n weeks
      <n>m = key expires in n months
      <n>y = key expires in n years
Key is valid for? (0)

Το πρόγραμμα προτείνει ως προεπιλογή το κλειδί να μη λήγει. Είναι προτιμότερο, όμως, να ορισθεί ημερομηνία λήξεως για επιπλέον προστασία σε περίπτωση υποκλοπής του κλειδιού ή απώλειας του ελέγχου του. Εξάλλου, η ημερομηνία λήξεως μπορεί να μεταβληθεί ανά πάσα στιγμή μετά τη δημιουργία του κλειδιού, όπως θα δούμε και στη σχετική ενότητα. Ορίζουμε το κλειδί μας να λήγει σε ένα χρόνο από την ημερομηνία έκδοσης του, πληκτρολογώντας 1y. Το πρόγραμμα θα εμφανίσει την ακριβή ημερομηνία και ώρα που θα λήξει το κλειδί και θα μας ζητήσει επιβεβαίωση.

Στη συνέχεια, θα μας ζητηθεί να δηλώσουμε το user ID που θα αποτελέσει το σύνολο των διακριτικών πληροφοριών του κλειδιού μας, στη μορφή: "Όνομα Επώνυμο (Σχόλιo) <διεύθυνση_email@domain.tld>". Κάθε πεδίο του user ID του κλειδιού συμπληρώνεται ξεχωριστά, όπως στο παράδειγμα:

You need a user ID to identify your key; the software constructs the user ID
from the Real Name, Comment and Email Address in this form:
    "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

Real name: EELLAK Demo
Email address: info@eellak.gr
Comment: Demo key

You selected this USER-ID:
    "EELLAK Demo (Demo key) <info@eellak.gr>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit?

Μπορούμε να διορθώσουμε οποιοδήποτε πεδίο επιλέγοντας το αρχικό γράμμα — πχ. E για το e-mail. Επικυρώνουμε το user ID με O.

Το επόμενο βήμα είναι να ορίσουμε την φράση-κλειδί (passphrase) για το κλειδί μας. Το προγράμμα θα μας ζητάει να εισάγουμε τη φράση-κλειδί για το κλειδί μας κάθε φορά που το χρησιμοποιούμε και αποτελεί δικλείδα ασφαλείας σε περίπτωση υποκλοπής του Προσωπικού κλειδιού. Καλό είναι να αποτελείται από τρεις ή περισσότερες λέξεις και ιδανικά να είναι «μεταποιημένες» — πχ. να είναι σε «greeklish» και να περιέχουν πεζά, κεφαλαία, αριθμούς και ειδικά σύμβολα — ώστε να αποτρέπονται επιθέσεις με χρήση λεξικού.

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

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.

Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 284 more bytes)

Για καλύτερα αποτελέσματα προτείνεται η εγκατάσταση του haveged, που ενισχύει σημαντικά τη μηχανή παραγωγής «τυχαίων» αριθμών του λειτουργικού συστήματος. Στο Debian το haveged εγκαθίσταται με την εντολή apt-get install haveged.

Μόλις ολοκληρωθεί η δημιουργία του κλειδιού θα εμφανισθεί ένα μήνυμα σαν το παρακάτω, με πληροφορίες για το κλειδί μας:

gpg: key 60FCF76A marked as ultimately trusted
public and secret key created and signed.

gpg: checking the trustdb
gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model
gpg: depth: 0  valid:   1  signed:   0  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: next trustdb check due at 2015-04-10
pub   4096R/60FCF76A 2014-04-10 [expires: 2015-04-10]
      Key fingerprint = 9F94 AFA0 05AF ABE8 09DE  DF2C 8AC7 422B 60FC F76A
uid                  EELLAK Demo (Demo key) <info@eellak.gr>
sub   4096R/9F187D57 2014-04-10 [expires: 2015-04-10]

Μπορούμε να εμφανίσουμε τα στοιχεία του κλειδιού που δημιουργήσαμε καθώς και των υπολοίπων κλειδιών που έχουμε εισαγάγει στο «μπρελόκ» μας με την εντολή:

gpg --list-keys

/home/eellak/.gnupg/pubring.gpg
-------------------------------
 pub   4096R/60FCF76A 2014-04-10 [expires: 2015-04-10]
 uid                  EELLAK Demo (Demo key) <info@eellak.gr>
 sub   4096R/9F187D57 2014-04-10 [expires: 2015-04-10]

3.2 Δημιουργία Πιστοποιητικού Ανάκλησης

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

Ένα ανακληθέν Δημόσιο κλειδί μπορεί να χρησιμοποιηθεί για την επαλήθευση των υπογραφών που έχουμε δημιουργήσει στο παρελθόν, αλλά δε μπορεί να χρησιμοποιηθεί για την κρυπτογράφηση μελλοντικών μηνυμάτων προς εμάς. Επίσης, δε μας εμποδίζει να αποκρυπτογραφούμε παλαιότερα μηνύματα που έχουμε λάβει, εφόσον έχουμε ακόμα τον έλεγχο του Ιδιωτικού κλειδιού μας.

Για να δημιουργήσουμε ένα Πιστοποιητικό Ανάκλησης για το κλειδί μας, τρέχουμε την εντολή:

gpg --output revoke.asc --gen-revoke KeySpecifier

Αντικαθιστώντας το KeySpecifier με κάποιο διακριτικό του κλειδιού μας, όπως το ονοματεπώνυμο ή το e-mail μας, ή το Key ID του κλειδιού μας. Για παράδειγμα, για το κλειδί που δημιουργήσαμε στην προηγούμενη παράγραφο:

gpg --output revoke.asc --gen-revoke info@eellak.gr

ή

gpg --output revoke.asc --gen-revoke 60FCF76A

Το πιστοποιητικό ανάκλησης θα αποθηκευθεί ως revoke.asc. Αν παραλείψουμε το όρισμα --output στις προηγούμενες εντολές το πιστοποιητικό ανάκλησης θα εμφανισθεί στην οθόνη χωρίς να αποθηκευθεί σε κάποιο αρχείο.

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

3.3 Επεξεργασία Κλειδιού

Για να επεξεργαστούμε κάποιο κλειδί στο «μπρελόκ» μας χρησιμοποιούμε την εντολή:

gpg --edit-key KeySpecifier

Θα μεταφερθούμε σε ένα κέλυφος αλληλεπίδρασης (interactive shell) με τίτλο gpg> στο οποίο εισάγουμε εντολές για να επεξεργαστούμε το κλειδί. Για προβολή των διαθέσιμων εντολών πληκτρολογούμε help.

Για παράδειγμα, για να αλλάξουμε την ημερομηνία λήξεως του κλειδιού που δημιουργήσαμε στο προηγούμενο παράδειγμα τρέχουμε gpg --edit-key info@eellak.gr και στο κέλυφος του gpg πληκτρολογούμε expire. Αφού ορίσουμε την επιθυμητή ημερομηνία, πληκτρολογούμε save για να αποθηκευθεί η αλλαγή. Για να βγούμε από το κέλυφος του gpg χωρίς αποθήκευση των αλλαγών πληκτρολογούμε quit και στη συνέχεια θα μας ζητηθεί επιβεβαίωση.

4. Ανταλλαγή κλειδιών και επικοινωνία

4.1 Εξαγωγή και εισαγωγή κλειδιών

Όπως είδαμε και στην εισαγωγή αυτού του κειμένου, για να επικοινωνήσουμε με κάποιον χρησιμοποιώντας κρυπτογραφία πρέπει να έχουμε ανταλλάξει Δημόσια κλειδιά. Για να στείλουμε ή να δημοσιοποιήσουμε το Δημόσιο κλειδί μας πρέπει να το εξάγουμε από το «μπρελόκ» μας, με την εντολή:

gpg --output pubkey.gpg --export KeySpecifier

Αντικαθιστώντας — όπως και στην προηγούμενη ενότητα — το KeySpecifier με κάποιο διακριτικό του κλειδιού μας, όπως το ονοματεπώνυμο, το e-mail μας, ή το Key ID του κλειδιού μας. Το αρχείο pubkey.gpg που θα παραχθεί τρέχοντας την προηγούμενη εντολή είναι σε δυαδική μορφή και δε μπορεί να επικολληθεί σε κάποιο e-mail ή σε ανάρτηση σε ιστοσελίδα. Στην περίπτωση που επιθυμούμε κάτι τέτοιο μπορούμε να προσθέσουμε το όρισμα --armor και να πάρουμε ένα απλό αρχείο κειμένου ASCII. Καλό είναι να αλλαχθεί και η κατάληξη του αρχείου σε .asc σε αυτή την περίπτωση. Αν θέλουμε μόνο να επικολλήσουμε το κλειδί μπορούμε να παραλείψουμε το όρισμα --output file για να εμφανισθεί το κλειδί μας στην οθόνη, χωρίς να αποθηκευθεί σε αρχείο. Για το κλειδί του προηγούμενου παραδείγματος έχουμε:

gpg --armor --export info@eellak.gr
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.12 (GNU/Linux)

[…]
-----END PGP PUBLIC KEY BLOCK-----

Οι «τυχαίοι» χαρακτήρες που εμφανίζονται στην θέση του [...] αποτελούν το κλειδί μας. Για την επισύναψη αντιγράφουμε όλο το κείμενο, μαζί με τις γραμμές -----BEGIN… και -----END… .

Για να εισάγουμε ένα κλειδί — σε δυαδική μορφή ή σε κείμενο ASCII — στο «μπρελόκ» μας τρέχουμε την εντολή:

gpg --import pubkey.gpg

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

gpg --fingerprint KeySpecifier

Για να υπογράψουμε ένα κλειδί πρέπει να το επεξεργαστούμε. Στο κέλυφος του gpg μπορούμε επίσης να εμφανίσουμε το αποτύπωμα του κλειδιού με την εντολή fpr. Για να υπογράψουμε το κλειδί πληκτρολογούμε sign και αφού εμφανιστούν τα στοιχεία του κλειδιού θα μας ζητηθεί επιβεβαίωση. Κάθε κλειδί περιλαμβάνει και υπογραφή του εαυτού του. Για να επαληθεύσουμε τη δική μας υπογραφή πληκτρολογούμε check. Για το κλειδί του παραδείγματος μας το πρόγραμμα θα εμφανίσει τα εξής:

gpg> check
uid  EELLAK Demo (Demo key) <info@eellak.gr>
sig!       60FCF76A 2014-04-10  [self-signature]
sig!       BB7576AC 1999-06-04  Alice (Judge) <alice@cyb.org>

4.2 Κρυπτογράφηση και αποκρυπτογράφηση εγγράφων και μηνυμάτων

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

Για να κρυπτογραφήσουμε το έγγραφο unencrypted, ώστε να είναι προσβάσιμο μόνο από τον ιδιοκτήτη του κλειδιού των προηγούμενων παραδειγμάτων τρέχουμε την εντολή:

gpg --output encrypted.gpg --encrypt --recipient info@eellak.gr unencrypted

Το αρχείο encrypted.gpg που θα παραχθεί μπορεί να αποκρυπτογραφηθεί μόνο με το Ιδιωτικό κλειδί του παραλήπτη (info@eellak.gr). Για περισσότερη ασφάλεια το αρχείο συμπιέζεται, αυτόματα, μαζί με την κρυπτογράφηση.

Μπορούμε να κρυπτογραφήσουμε το αρχείο για περισσότερους παραλήπτες προσθέτοντας ένα όρισμα της μορφής --recipient alice@cyb.org, για κάθε παραλήπτη. Στην περίπτωση που επιθυμούμε να μπορούμε να αποκρυπτογραφήσουμε και εμείς (ο αποστολέας στην προκειμένη περίπτωση) το αρχείο θα πρέπει να προσθέσουμε και το δικό μας κλειδί ώς όρισμα --recipient.

Αντίστοιχα, για να αποκρυπτογραφήσουμε το αρχείο encrypted.gpg που έχει κρυπτογραφηθεί με το Δημόσιο κλειδί μας τρέχουμε:

gpg --output unencrypted --decrypt encrypted.gpg

Και στις δύο περιπτώσεις μπορούμε να παραλείψουμε το όρισμα --output, οπότε αντί για αποθήκευση σε αρχείο τα περιεχόμενα του εγγράφου θα εμφανιστούν στην οθόνη. Επίσης, μπορούμε να παραλείψουμε το αρχείο εισαγωγής και το πρόγραμμα θα δεχθεί δεδομένα από την τυπική είσοδο (standard input). Για παράδειγμα, χρησιμοποιώντας τη δυνατότητα pipeline των συστημάτων που βασίζονται στο Unix:

echo "This is unencrypted" | gpg --encrypt --recipient info@eellak.gr | gpg --decrypt

Η προηγούμενη εντολή θα επιστρέψει το μήνυμα This is unencrypted, αφού πρώτα το κρυπτογραφήσει και, στη συνέχεια αποκρυπτογραφήσει, ζητώντας να εισάγουμε την φράση-κλειδί.

Το GnuPG υποστηρίζει, επίσης, την κρυπτογράφηση εγγράφων με Συμμετρικό Κλειδί χρησιμοποιώντας το όρισμα --symmetric, για παράδειγμα:

gpg --encrypt --symmetric --output encrypted.gpg unencrypted

Θα μας ζητηθεί να δηλώσουμε φράση-κλειδί για την κρυπτογράφηση, η οποία φράση-κλειδί επίσης αποκρυπτογραφεί το έγγραφο. Ο προεπιλεγμένος αλγόριθμος για κρυπτογραφία Συμμετρικού Κλειδιού είναι ο CAST-128 (γνωστός και ως CAST5), αλλά μπορούμε να επιλέξουμε κάποιον άλλο προσθέτοντας το όρισμα --cipher-algo, συνοδευόμενο από το όνομα του αλγορίθμου. Τρέχοντας gpg --version μπορούμε να δούμε τους αλγορίθμους κρυπτογράφησης που υποστηρίζει η έκδοση του GnuPG που χρησιμοποιούμε. Για παράδειγμα, για να κρυπτογραφήσουμε το αρχείο unencrypted με τον αλγόριθμο Blowfish:

gpg --encrypt --output blowfish_encrypted.gpg --symmetric --cipher-algo BLOWFISH unencrypted

4.3 Υπογραφή μηνυμάτων και εγγράφων

Για να πιστοποιήσουμε την αυθεντικότητα ενός μηνύματος ή εγγράφου και την ακεραιότητα του περιεχομένου τους μπορούμε να χρησιμοποιήσουμε την ψηφιακή υπογραφή.

Η υπογραφή και η επαλήθευση της υπογραφής γίνεται πάλι με τη χρήση ζεύγους Ιδιωτικού/Δημοσίου κλειδιού, αλλά με διαφορετικό τρόπο σε σχέση με την κρυπτογράφηση. Υπογράφουμε ένα μήνυμα ή έγγραφο χρησιμοποιώντας το Ιδιωτικό μας κλειδί και η υπογραφή αυτή μπορεί να επαληθευθεί από τρίτους με το Δημόσιο κλειδί μας. Στην περίπτωση που το περιεχόμενο του μηνύματος, που έχουμε υπογράψει, έχει μεταβληθεί με οποιοδήποτε τρόπο, η επαλήθευση της υπογραφής θα αποτύχει.

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

Το GnuPG μας δίνει την δυνατότητα να υπογράψουμε έγγραφα με τρεις τρόπους, ανάλογα με τη χρήση που επιθυμούμε.

Χρησιμοποιώντας το όρισμα --sign ή -s, για συντομία. Αφού συμπληρώσουμε την φράση-κλειδί για το Ιδιωτικό κλειδί μας, το έγγραφο συμπιέζεται και υπογράφεται:

gpg --output signed_doc.sig --sign unsigned_doc

Το αρχείο signed_doc.sig που θα παραχθεί με την τελευταία εντολή θα είναι σε δυαδική μορφή και μπορούμε να εξάγουμε το αρχικό μήνυμα από το υπογεγραμμένο αρχείο με την εντολή:

gpg --output usigned_doc --decrypt signed_doc.sig

Ή αν θέλουμε μόνο να επαληθεύσουμε την υπογραφή, τρέχουμε:

gpg --verify signed_doc.sig

Αν η υπογραφή είναι σωστή θα εμφανισθεί ένα μήνυμα σαν το παρακάτω:

gpg: Signature made Mon 14 Apr 2014 04:35:35 PM EEST using RSA key ID 60FCF76A
gpg: Good signature from “EELLAK Demo (Demo key) <info@eellak.gr>”

Διαφορετικά, το πρόγραμμα θα εμφανίσει μήνυμα λάθους.

Στην περίπτωση που επιθυμούμε να επισυνάψουμε το υπογεγραμμένο αρχείο σε κάποιο e-mail ή να το αναρτήσουμε σε κάποια ιστοσελίδα, μπορούμε να χρησιμοποιήσουμε το όρισμα --clearsign και να δημιουργήσουμε ένα αρχείο με συνημμένο το περιεχόμενο του εγγράφου μας μαζί με την ψηφιακή υπογραφή:

gpg --output signed_doc.sig --clearsign unsigned_doc

Σε αυτή την περίπτωση το αρχείο signed_doc.sig που θα παραχθεί θα περιέχει τα εξής:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

[…]
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.12 (GNU/Linux)
 
 iQIcBAEBAgAGBQJTS9yhAAoJEIrHQitg/PdqWHoQAMtDxkZmFbYVTfF7idIKbYIc
 /djBYSQOm4AFNBvzHsrj5IRt3CecHlrgUzUKAeISfne5Z+432IQjixYXVPC/G4CH
 gIXRWkz7JPXwv4S4kFTSqtOiiRxv+K31JNnRMtwG7tYdLm75BNwlUiQxphXcde3t
 SuDSnX1u+29PgUHnABZCkpUQfr4g04ubxvQVs76+/yJtnFurSWbh9BXy3TJRgq5u
 +jzMP+oAJ3bUW08eZTWwsqijMVmn1J1BYaNp7INOuyq2vBsRbdBZ5NImBmQGRgRs
 UABpv8GKzttUDyXgTrxDAvzoIV7Dp6IGiCN3F+PHgUZk45xyGEmFUVoVzrjZKXQI
 dwhNnBp6QTKlYExiqYDAY5LHcfYaLunFldL9o4TJzmQ6k6Mko/0hkX2eoRTVveQd
 /y6G4f/jwQYNGP3D8rqHyFq3StARmVBXhsNcGRq3/Z57D+CttRhgKhtqdOGwoJVu
 cWeLKnwaGyy2DBiAUTyVfK1ICeXO0Q7WX5JfRD+BlpTTPKVUsSG53rYRud/8/D9V
 8+B8pnpjLXYgh/uNLl9RnS/96O8BwRhAl9DlrNoHX0Xx7EG2vmeGpyIBh9pxhCJZ
 BVW5Xc3Lr2ibRwulw5zmTy4SeSKwmwadnWFgMZtKtzNTERZuDdXxJa8MyCn8E62D
 h0ZzhsL9nUppGiAKfuw0
 =7UX6
 -----END PGP SIGNATURE-----

Όπου στην θέση του […] θα βρίσκεται το περιεχόμενο του αρχικού εγγράφου μας (unsigned_doc) και οι «τυχαίοι» χαρακτήρες που περιέχονται μεταξύ των γραμμών -----BEGIN PGP SIGNATURE----- και -----END PGP SIGNATURE----- αποτελούν την ψηφιακή υπογραφή.

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

Ο τρίτος τρόπος δημιουργεί την υπογραφή σε ξεχωριστό αρχείο και προτείνεται στην περίπτωση που θέλουμε να υπογράψουμε ένα αρχείο δυαδικής μορφής, όπως ένα OpenDocument έγγραφο (με κατάληξη .odt, συμβατό με το LibreOffice) ή ένα συμπιεσμένο αρχείο (πχ .tar.gz ή .zip). Για να δημιουργήσουμε μία υπογραφή σε ξεχωριστό αρχείο χρησιμοποιούμε το όρισμα --detach-sig ή -b, για συντομία. Ιδανικά, μπορούμε να το συνδιάσουμε με το όρισμα --armor για να παραχθεί η υπογραφή σε απλό αρχείο κειμένου ASCII, κατάλληλο για επισύναψη.

gpg --output archive.zip.sig --detach-sig archive.zip

ή

gpg --output archive.zip.sig.asc --detach-sig --armor archive.zip

Το αρχεία archive.zip.sig και archive.zip.sig.asc θα περιέχουν μόνο την υπογραφή. Στην περίπτωση του archive.zip.sig.asc το περιεχόμενο θα είναι:

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.12 (GNU/Linux)

iQIcBAABAgAGBQJTS+hjAAoJEIrHQitg/PdqO60QALINQsRLvL99vCSPdbv+hvpz
72VMn7AIAgQsfKrJ+RsOrl3jatrtmPYIDlEcPUhppillpVHrOU8udn+SQlx+z3R1
xGODiJ0Bk9WJXrwocx4o/Cfq1yvJHWKWGywY7gElNp+Rrsh3mzdJUJhKNj7aLv0t
rYVLBElRG6mZw1LBIfPvY8Bmkt2DgpF4vMN98YAqj19vJEEu9W8SIJR1Y/OCeS+y
C4+mzOimzAkIWmeyZN01S1DSScsQb1wH360VsbcrXTwUuhXrvGGhcSXPFbHGx6ec
ImRRmuT5yS70JTrRGL1Rw2QlAPadNRSzHz8nJyzn0f4kHhxXRnylwN8aSt3b0M2I
6h6ar6oPxG0Vuqw0rTEI8y7zpo0FbHVzexjQk3RFSyf3I4LjY60LXro2YR6ku1xv
7SjqY8JZt+vxq1NIgZ+wX6lwoJjjytNvaAJvUv7CA99alOxftL5Q4TogjIAcYsgb
pBhuv8KG5qoe/gTHDljzTJTVhLWOYIydFUy3aGsRHCG4KXl/N/UiRUd32rJpsJcv
urIdWzyeIqYBE9134rYj56AVp4Eg2NSOqdQo2RfzeYS8+lBQ/kLZG4cQpt5tHeKZ
a1F7NlGHScvr4IgKV9udOHZcXNzEea0Q0T0qNftP5LJOwqVB5AVw6nG9V3FlwKEZ
q/0qSIuIiulDQ/QLz37C
=uY+5
-----END PGP SIGNATURE-----

Για να επαληθεύσουμε την υπογραφή χρειαζόμαστε το αρχείο της υπογραφής και το αρχικό αρχείο. Επαληθεύουμε με την εντολή:

gpg --verify archive.zip.sig archive.zip

ή

gpg --verify archive.zip.sig.asc archive.zip

5. Διανομή Κλειδιών και Εξυπηρετητές Κλειδιών (Key Servers)

5.1 Εισαγωγή

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

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

Για τη λύση του προβλήματος της διανομής των κλειδιών δημιουργήθηκαν οι Εξυπηρετητές Κλειδιών Δημόσιας Χρήσης (Public Key Servers). Κάθε κλειδί που αποστέλλουμε σε ένα Key Server αποθηκεύεται στη βάση δεδομένων του ή αν υπάρχει ήδη αποθηκευμένο συγχωνεύονται σε αυτό οι αλλαγές. Υπάρχουν πολλοί δημόσιοι Key Servers — όπως ο pgp.mit.edu — οι οποιοί συγχρονίζουν τα δεδομένα τους, οπότε μπορούμε να χρησιμοποιούμε το πλησιέστερο σε εμάς. Οποιοσδήποτε ενδιαφέρεται να επικοινωνήσει μαζί μας μπορεί να ανακτήσει το Δημόσιο κλειδί μας από κάποιο δημόσιο Key Server.

5.2 Αποστολή και ανάκτηση κλειδιών από Key Server

Για να στείλουμε ένα ή περισσότερα κλειδιά σε ένα Key Server χρησιμοποιούμε το όρισμα --send-keys μαζί με κάποιο διακριτικό του κλειδιού, για κάθε κλειδί. Για να ανακτήσουμε κλειδιά χρησιμοποιούμε το όρισμα --recv-keys συνοδευόμενο, υποχρεωτικά, από το Key ID του κλειδιού. Μπορούμε να ορίσουμε το Key Server που θέλουμε να χρησιμοποιήσουμε με το όρισμα --keyserver.

Έτσι, για να στείλουμε το κλείδι που δημιουργήσαμε στο προηγούμενο παράδειγμα στο Key Server του MIT, τρέχουμε:

gpg --keyserver pgp.mit.edu --send-keys info@eellak.gr

Αντίστοιχα, για να ανακτήσουμε αυτό το Δημόσιο κλειδί από τον ίδιο Key Server:

gpg --keyserver pgp.mit.edu --recv-keys 60FCF76A

5.3 Key Server εντός «κλειστού» κύκλου

Όταν πρόκειται για επικοινωνία εντός «κλειστού» κύκλου μπορεί να χρησιμοποιηθεί ιδιωτικός εξυπηρετητής με ελεγχόμενη πρόσβαση. Ένα παράδειγμα λογισμικού ανοικτού κώδικα για δημιουργία Key Server είναι το SKS και στο Debian είναι διαθέσιμο με το πακέτο sks.

6. Key Signing Party

6.1 Εισαγωγή

Το Key Signing Party είναι η συνάντηση ανθρώπων που χρησιμοποιούν το OpenPGP, με σκοπό την ανταλλαγή και ταυτοποίηση όσο περισσότερων Δημοσίων κλειδιών γίνεται. Όπως είδαμε και στην ενότητα για τον Κύκλο Επιστευτικότητας, είναι σημαντικό να υπάρχει επιβεβαίωση της αυθεντικότητας των Δημοσίων κλειδιών πριν τη χρήση τους, για την αποφυγή πλαστογραφημένων κλειδιών.

6.2 Κατηγορίες Key Signing Parties και προϋποθέσεις συμμετοχής

Τα Key Signing Parties χωρίζονται, άτυπα, σε τρεις κατηγορίες:

  1. Ανεπίσημα Πάρτυ. Δε χρειάζονται ιδιαίτερη προετοιμασία από τους διοργανωτές και οποιοσδήποτε μπορεί να συμμετάσχει, έχοντας μαζί του τις πληροφορίες για τα κλειδιά του καθώς και ένα ή περισσότερα επίσημα έγγραφα με φωτογραφία — όπως ταυτότητα ή διαβατήριο — για την ταυτοποίηση. Καλό είναι οι συμμετέχοντες να έχουν μαζί τους εκτυπωμένα τα στοιχεία τους μαζί με το ψηφιακό αποτύπωμα του κλειδιού τους, για διευκόλυνση των υπολοίπων συμμετεχόντων.
  2. Πάρτυ με Λίστα Συμμετοχής. Μπορεί να συμμετάσχει συγκεκριμένος αριθμός ατόμων και οι διοργανωτές οφείλουν να έχουν δημιουργήσει και διαμοιράσει λίστα με τα ψηφιακά αποτυπώματα των κλειδιών των συμμετεχόντων, για άμεση επαλήθευση. Οι συμμετέχοντες οφείλουν να έχουν κοινοποιήσει το ψηφιακό αποτύπωμα του κλειδιού τους στους διοργανωτές πριν το πάρτυ. Κατά την προσέλευση των συμμετεχόντων είναι σημαντικό να επιβεβαιώνονται τα ψηφιακά αποτυπώματα των κλειδιών τους που περιέχονται στη λίστα, η οποία θα μοιραστεί στους υπόλοιπους.
  3. Πάρτυ με Λίστα Συμμετοχής με επαλήθευση κρυπτογραφίας. Ουσιαστικά, αποτελεί επέκταση του Πάρτυ με Λίστα Συμμετοχής με δυνατότητα συμμετοχής μεγάλου αριθμού ανθρώπων. Πάλι, οι διοργανωτές οφείλουν να έχουν δημιουργήσει λίστα με τα επιβεβαιωμένα ψηφιακά αποτυπώματα των συμμετεχόντων. Εφόσον έχουν επιβεβαιωθεί όλα τα κλειδιά της λίστας από τους ιδιοκτήτες τους, δημιουργείται ψηφιακό αποτύπωμα hash για την ίδια τη λίστα, το οποίο πιστοποιεί την αυθεντικότητα της. Έτσι οι συμμετέχοντες δε χρειάζεται να επιβεβαιώνουν κάθε κλειδί που θέλουν να υπογράψουν, ξεχωριστά, και απλά επιβεβαιώνουν την αυθεντικότητα της λίστας.

Σε κάθε περίπτωση, πρωτού συμμετάσχουμε σε ένα Key Signing Party, καλό είναι να έχουμε στείλει τα Δημόσια κλειδιά μας σε κάποιο Key Server, προσβάσιμο από τους υπόλοιπους συμμετέχοντες.

6.3 Μετέπειτα διαδικασίες

Μετά το πάρτυ, για να υπογράψουμε τα κλειδιά των ατόμων που επιβεβαιώσαμε την αυθεντικότητα τους ακολουθούμε την εξής, συνοπτική διαδικασία:

  1. Ανάκτηση κάθε κλειδιού από το Key Server που χρησιμοποιούμε με την εντολή: gpg --keyserver <keyserver> --recv-keys <Key ID>
  2. Εμφάνιση του ψηφιακού αποτυπώματος κάθε κλειδιού με την εντολή: gpg --fingerprint KeySpecifier και επαλήθευση με το αποτύπωμα της λίστας που συλλέξαμε στο πάρτυ.
  3. Υπογραφή του κλειδιού με το Ιδιωτικό κλειδί μας: gpg --default-key Our_Key_KeySpecifier --sign-key KeySpecifier αντικαθιστώντας τα Our_Key_KeySpecifier και KeySpecifier με κάποιο διακριτικό του δικού μας κλειδιού και του κλειδιού που θέλουμε να υπογράψουμε, αντίστοιχα. Εναλλακτικά μπορούμε να επαληθεύσουμε και να υπογράψουμε το κλειδί από το κέλυφος επεξεργασίας του gpg, όπως είδαμε στη σχετική ενότητα.
  4. Τέλος, στέλνουμε το κλειδί που υπογράψαμε στο Key Server — εφόσον και ο ιδιοκτήτης του κλειδιού είναι σύμφωνος με αυτή την ενέργεια — τρέχοντας την εντολή: gpg --keyserver <keyserver> --send-keys KeySpecifier Στην περίπτωση που ο ιδιοκτήτης δεν επιθυμεί την αποστολή του κλειδιού του σε κάποιο Key Server οφείλουμε να του στείλουμε το υπογραμμένο (από εμάς) κλειδί του με τον τρόπο που επιθυμεί, όπως για παράδειγμα με κρυπτογραφημένο e-mail.

i. Παράρτημα

i.1 Πηγές

  • The Gnu Privacy Handbook
  • OpenPGP Message Format — RFC4880
  • GnuPG Mini Howto
  • Riseup Labs: OpenPGP Best Practices
  • Heise Online: Interview mit Phil Zimmermann

i.2 Άδεια χρήσης

Το κείμενο αυτό διανέμεται υπό την άδεια χρήσης Creative Commons Αναφορά Δημιουργού - Μη Εμπορική Χρήση - Παρόμοια Διανομή 4.0 Διεθνές (CC BY-SA 4.0).

Για περισσότερες πληροφορίες επισκεφθείτε το http://creativecommons.gr.