Notice icon attention yellow.png Τα περιεχόμενα του ιστότοπου δεν ανανεώνονται από το καλοκαίρι του 2015. Τα άρθρα πιθανόν να έχουν ελλείψεις ή ανακρίβειες. Συμβουλευτείτε και μια δεύτερη πηγή γνώσης πριν εφαρμόσετε πρακτικές οδηγίες.

Gpg Passphrase Cache with Gnome Keyring

Από Skytales
Αναθεώρηση ως προς 02:22, 29 Δεκεμβρίου 2013 από τον Luigi (Συζήτηση | συνεισφορές) (Μια λύση)

(διαφορά) ←Παλαιότερη αναθεώρηση | Τελευταία αναθεώρηση (διαφορά) | Νεώτερη αναθεώρηση → (διαφορά)
Μετάβαση σε: πλοήγηση, αναζήτηση
Notice icon rfc purple.png Ζητούνται σχόλια και παρατηρήσεις.

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

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

Αφήστε τα σχόλια σας στη σελίδα συζήτησης αυτού του άρθρου.


Προστασία του ιδιωτικού PGP κλειδιού[επεξεργασία]

Το private key ενός ζεύγους κλειδιών PGP, προστατεύεται από ένα passphrase που γνωρίζει ο χρήστης. Έτσι όταν το private key είναι απαραίτητο για μια διαδικασία, όπως για παράδειγμα η ψηφιακή υπογραφή ή η αποκρυπτογράφηση ενός email, το εκάστοτε λογισμικό που διαχειρίζεται τα gpg κλειδιά ζητάει το passphrase από τον χρήστη για να προχωρήσει.

Για να μην ζητάνε κάθε φορά το passphrase του ιδιωτικού κλειδιού, πράγμα που ίσως είναι κουραστικό, πολλά προγράμματα αποθηκεύουν προσωρινά (cache) το passphrase του χρήστη. Προσωρινά σημαίνει ότι η απομνημόνευση του passphrase διαρκεί συγκεκριμένο χρονικό διάστημα.

Θεωρείται κακή έως επικίνδυνη πρακτική να αποθηκεύεται για μεγάλο χρονικό διάστημα το passphrase αυτό, καθώς αυτό σημαίνει ότι το private key είναι διαθέσιμο ή "ξεκλείδωτο" για οποιονδήποτε αποκτήσει πρόσβαση στον υπολογιστή αυτόν.

Το background[επεξεργασία]

Μια συνηθισμένη περίπτωση είναι o συνδυασμός Thunderbird (email client) και Enigmail (addon), με σκοπό την χρήση PGP κλειδιών στα email. To enigmail παρέχει το γραφικό περιβάλλον διαχείρισης των κλειδιών σε συνεργασία με το λογισμικό gpg που πρέπει να είναι εγκατεστημένο στο σύστημα.

Στα Preferences του OpenPGP (του μενού που προστέθηκε με το Enigmail), στην καρτέλα Advanced υπάρχει μια επιλογή που λέει "Use gpg-agent for passphrases". Το enigmail, ρωτάει σχετικά με πιο πρόγραμμα θέλει ο χρήστης να διαχειρίζεται τα passphrases των ιδιωτικών του κλειδιών. Είτε ο χρήστης θα επιλέξει το enigmail να διαχειρίζεται τα passphrase αυτά, είτε θα επιλέξει τον gpg-agent του λειτουργικού του συστήματος.

Στις νεότερες διανομές Linux με γραφικό περιβάλλον Gnome 3 (πχ Debian GNU/Linux wheezy), το gnome-keyring έχει ενσωματωμένο gpg-agent, πράγμα που σημαίνει ότι αναλαμβάνει τη διαχείριση των κλειδιών, συμπεριλαμβανομένου και του πώς ο χρήστης θα εισάγει το passphrase για το ιδιωτικό κλειδί.

Το πρόβλημα[επεξεργασία]

Το παράξενο (ίσως και bug) είναι ότι το gnome-keyring "επιβάλλει" το δικό του gpg-agent, ανεξαρτήτως του τι επιλέγει ο χρήστης στο OpenPGP Preferences του enigmail.

Για να γίνουν ακόμα χειρότερα τα πράγματα, το gnome-keyring δεν είχε καμία προφανή γραφική ρύθμιση για το πότε λήγει η απομνημόνευση (timeout cache) του passphrase.

Αυτό σήμαινει ότι άπαξ και χρησιμοποιήσω το passphrase του ιδιωτικού μου κλειδιού για να αποκρυπτογραφήσω ένα εισερχόμενο email, αυτό θα έμενε αναγνώσιμο για όλους, μέχρι να απενεργοποιήσω τον υπολογιστή ή να κάνω logout ως χρήστης.

Μια λύση[επεξεργασία]

σε ένα terminal έδωσα τα εξής :

 luigi@new-york:~$ gsettings list-recursively org.gnome.crypto.cache

που επέστρεψε

 org.gnome.crypto.cache gpg-cache-authorize false
 org.gnome.crypto.cache gpg-cache-method 'session'
 org.gnome.crypto.cache gpg-cache-ttl 300

το πρόβλημα λοιπόν φαίνεται να είναι στην τιμή του gpg-cache-method, που είναι 'session' . Πιθανώς, το 'session' αφορά στο login που έχει κάνει ο χρήστης με το Gnome.

Άλλαξα λοιπόν την τιμή αυτή με :

  luigi@new-york:~$ gsettings set org.gnome.crypto.cache gpg-cache-method 'idle'

Αντίστοιχά μπορώ να ορίσω και τον χρόνο της gpg-cache ως εξής :

  luigi@new-york:~$ gsettings set org.gnome.crypto.cache gpg-cache-ttl 60

ο χρόνος μετριέται σε seconds.

Σε περίπτωση που χρησιμοποείτε άλλο desktop enviromment τότε θα πρέπει να αλλάξετε τις τιμές για το αντίστοιχο περιβάλλον. Για παράδειγμα αν χρησιμοποείτε mate αντί για gnome οι τιμές που θα έπρεπε να αλλάξετε είναι οι εξής:

 org.mate.crypto.cache gpg-cache-authorize false
 org.mate.crypto.cache gpg-cache-method 'session'
 org.mate.crypto.cache gpg-cache-ttl 60

Σε περίπτωση που δεν είστε σίγουροι για το περιβάλλον σας, μπορείτε να τρέξετε το εξής:

 luigi@new-york:~$ gsettings list-recursively > gsett.txt

Η παραπάνω εντολή θα κάνει export όλες τις τιμές που θα επιστρέψει το gsettings list-recursively σε ένα αρχείο txt με όνομα gsett. Οπότε στη συνέχεια μπορείτε να ανοίξετε το αρχείο txt και με ένα search να βρείτε για ποια περιβάλλοντα υπάρχουν οι επιλογές gpg-cache-authorize , gpg-cache-method και gpg-cache-ttl. Στη συνέχεια μπορείτε να αλλάξετε για το καθένα τις τιμές όπως αναφέραμε παραπάνω.

Πράγματι, σε Thunderbird με Enigmail, το passphrase αποθηκεύεται για το προκαθορισμένο χρονικό διάστημα. It works!