Differenze tra le versioni di "GNU Privacy Guard"

Da GolemWiki.
Jump to navigation Jump to search
(Creata la pagina copiando senza formattazione gli appunti di Maria Grazia)
 
m (→‎Introduzione: Spiegata l'origine di OpenPGP)
 
(52 versioni intermedie di 5 utenti non mostrate)
Riga 1: Riga 1:
comunicare in pace - minikit di sopravvivenza
+
= Introduzione =
 +
[https://gnupg.org/ GNU Privacy Guard (GnuPG o GPG)] è un programma libero che implementa lo standard [https://www.openpgp.org/ OpenPGP] definito nel [https://www.ietf.org/rfc/rfc4880.txt RFC4880], derivato dal programma PGP (Pretty Good Privacy) di [https://philzimmermann.com/IT/background/index.html Phil Zimmermann].
 +
Nel PGP sono usate sia la crittografia asimmetrica (a chiave pubblica) che quella simmetrica.
 +
La chiave pubblica del destinatario serve al mittente unicamente per cifrare la chiave comune per un algoritmo di crittografia simmetrica che sarà usata per cifrare il testo in chiaro del messaggio.
 +
Un destinatario decifra un messaggio protetto da GPG usando la chiave di sessione con l'algoritmo simmetrico. Tale chiave di sessione è inclusa nel messaggio in maniera criptata ed è decifrata usando la chiave privata del destinatario.
 +
L'utilizzo di due cifrature oltre che a velocizzare l'esecuzione del programma (la cifratura a chiave simmetrica è molto più veloce di quella asimmetrica) permette di poter cifrare uno stesso messaggio per più destinatari.
  
Generare una chiave
+
= Manuale =
man gpg
 
gpg --help
 
  
Da utente normale: gpg --gen-key e rispondere alle domande che fa il programma.
+
Un veloce aiuto
 +
man gpg
  
Controllare: gpg --list-keys
+
Un rapido promemoria delle opzioni più comuni
 +
gpg --help
  
Fare subito il certificato di revoca
+
= Generare una chiave =
 +
Da utente normale:
 +
gpg --gen-key
 +
e rispondere alle domande che fa il programma.
  
gpg --output revoca.asc  --gen-revoke  <ID>
+
'''Controllare''' che sia stata davvero creata
 +
gpg --list-keys
  
dove <ID> = "ultime 8 cifre dell'impronta della chiave"
+
== Certificato di revoca ==
 +
Il certificato di revoca serve per invalidare la chiave nel caso in cui questa venga compromessa.
 +
Chiunque sia in possesso del certificato di revoca può revocare la chiave corrispondente, per cui è bene tenerlo in un posto sicuro.
 +
Poiché, nel momento in cui si ha bisogno del certificato di revoca, potremmo non essere più in grado di generarlo, conviene generarlo subito dopo la creazione della chiave, e prima di iniziare a utilizzarla pubblicamente.
 +
gpg --output certificato-di-revoca.asc --gen-revoke ''ID''
 +
dove <code>ID</code> è dato dalle ultime 8 cifre dell'impronta (fingerprint) della chiave.
  
Scambiarsi le chiavi
+
= Utilizzo pratico =
  
Inviare la chiave ad un keyserver
+
== Criptare un documento ==
 +
gpg -o file1.ext.gpg -e -r UserID file1.ext
  
gpg --keyserver keyserver.linux.it --send-key <ID>
+
Esempio:
 +
gpg -o tesi.odt.gpg -e -r spookyh@gmail.com tesi.odt
  
Importare una chiave da un keyserver
+
== Decriptare un documento ==
 +
gpg -o file1.ext -d file1.gpg
  
gpg --keyserver keyserver.linux.it --recv-keys<ID>
+
== Firmare un documento ==
 +
Il mittente può usare PGP per ''firmare'' un messaggio con l'algoritmo di firma RSA o Digital Signature Algorithm (DSA). Per fare ciò viene calcolato un hash (message digest) dal testo in chiaro e successivamente da questo hash è creata la [http://it.wikipedia.org/wiki/Firma_digitale firma digitale] usando la chiave privata del mittente.
  
la chiave viene cercata sul keyserver e importata in /home/utente/.gnupg/pubring.gpg
+
gpg -o file1.ext.sig -s file1.ext
  
in /home/utente/.gnupg/secring.gpg sono archiviate le chiavi segrete
+
== Verificare un documento ==
 +
gpg --verify file1.sig
  
Esempi di keyserver:
+
= Importare ed esportare chiavi (locali) =
* sks.keyserver.penguin.de
+
Importare una chiave (pubblica)
* keyserver.kjsl.com
+
gpg --import chiave.asc (o .txt)
* keyserver .linux.it
 
  
Editare una chiave
+
Esportare la propria chiave pubblica
 +
gpg -a -o chiave_pubblica.asc --export
  
Per fare operazioni sulle chiavi dobbiamo editarle:
+
== Esportare la propria chiave privata ==
 +
{{Note
 +
|type=attention
 +
|text=La chiave privata può essere utilizzata per impersonare la vostra identità, perciò '''NON''' inviarla mai a '''nessuno''', ed esportarla solo per effettuarne backup, naturalmente da custodire in un luogo sicuro.
 +
}}
 +
gpg --armor --export-secret-keys <ID> > secret-key.gpg.asc
  
gpg --edit-key <ID>
+
= Condividere le chiavi pubbliche =
  
per convalidarne il nostro uso dobbiamo firmarle
+
Inviare la chiave ad un keyserver:
 +
gpg --keyserver keyserver.linux.it --send-key <ID>
  
> sign  e rispondere;
+
Importare una chiave da un keyserver:
 +
gpg --keyserver keyserver.linux.it --recv-keys <ID>
  
si possono fare molte altre cose, ad esempio:
+
Importare una chiave da un keyserver con '''tutte le firme a essa associate''', e non solo quelle del proprietario della chiave:
 +
gpg --keyserver-options no-self-sigs-only --keyserver keyserver.linux.it --recv-keys <ID>
  
>trust      cambiare i valori di fiducia
+
{{Note|text=Le opzioni di base di GPG per l'importazione da keyserver sono d'ignorare tutte le firme che non siano quelle del proprietario della chiave, tranne quando si tratta di un server LDAP. In quel caso il comportamento predefinito è inverso. Per importare ogni firma associata alla chiave pubblica, usare l'opzione del keyserver ''no-self-sigs-only''.|type=info}}
  
>fpr            vedere la fingerprint
+
Se ci fidiamo del proprietario e vogliamo mostrare pubblicamente la nostra fiducia, possiamo firmare la chiave appena importata e esportare la firma su un keyserver (vedere sezioni successive).
  
>expire    cambiare la data di scadenza
+
== Keyserver ==
 +
Quando si carica una chiave su un keyserver, poi questo la condivide con gli altri keyserver che fanno parte dello stesso circuito.
 +
Non esiste un'entità centralizzata o un circuito di riferimento per scelta di progettazione e, a volte, questo può generare confusione nell'utilizzatore.
 +
Inoltre, alcuni keyserver potrebbero non essere sempre accessibili.
  
>passwd    cambiare la password
+
Tra i keyserver più noti:
 +
* keys.openpgp.org
 +
* keyserver.ubuntu.com
 +
* keys.gnupg.net
 +
* pgp.surfnet.nl
 +
* pgp.circl.lu
 +
* pgp.mit.edu
  
>lsign      firmare localmente in modo non esportabile
+
= Editare una chiave =
 +
Per fare operazioni e modifiche dobbiamo "editare" le chiavi, aprendo l'editor interattivo:
 +
gpg --edit-key <ID>
  
quindi ricordarsi...
+
{{Note
 +
|type=warning
 +
|text=Prima di uscire dall'editor, ricordarsi di '''salvare''', altrimenti le modifiche vanno perdute
 +
}}
  
>save           oppure
+
* firmare
>quit  
+
> sign
 +
* cambiare i valori di fiducia
 +
> trust
 +
* vedere la fingerprint
 +
> fpr
 +
* cambiare la data di scadenza
 +
> expire
 +
* cambiare la password
 +
> passwd
 +
* firmare localmente in modo non esportabile
 +
> lsign
 +
* sempre '''ricordarsi di salvare'''
 +
> save
 +
* oppure uscire
 +
> quit
 +
 
 +
Digitare <code>help</code> per una lista esaustiva.
  
 
Tutte le modifiche da rendere pubbliche vanno inviate ad un keyserver.
 
Tutte le modifiche da rendere pubbliche vanno inviate ad un keyserver.
  
Revocare una chiave
+
= Revocare una chiave =
avendo già il certificato di revoca:
 
gpg --import  revoca.asc 
 
gpg --keyserver keyserver.linux.it --send-key  <ID>
 
  
Rete di fiducia
+
Avendo già il certificato di revoca:
Una chiave importata può essere firmata con un certo grado di fiducia  con firma esportabile. Possiamo rispedirla al proprietario, se lui la importa nel suo portachiavi avrà la propria chiave firmata da noi. Ognuno può quindi aggiungere alla propria chiave le firme dei conoscenti, che hanno firme di altri....
+
gpg --import certificato-di-revoca.asc
Vediamo come firmarsi le chiavi, esportarle, importarle
+
  gpg --keyserver pgp.surfnet.nl --send-key ''ID''
  
Un'occhiata al nostro database
+
= Gestione delle chiavi =
 +
Controllare il database delle chiavi: questo comando mostra tutte le chiavi che abbiamo con molte informazioni.
 +
gpg --list-keys --with-colons
  
gpg --list-keys --with-colons 
+
Fornisce tutti i valori di fiducia assegnati alle varie chiavi. (Informazioni private)
fornisce tutte le chiavi che abbiamo con molte informazioni   
+
gpg --list-ownertrust
  
gpg --list-ownertrust
+
== Controllo firme ==
fornisce tutti i valori di fiducia assegnati alle varie chiavi. (Informazioni private)
+
gpg --check-sigs
 +
gpg --list-sigs
  
Controllo firme: gpg --check-sigs      gpg --list-sigs
+
== Esportare le chiavi altrui ==
+
Abbiamo importato e firmato la chiave di <ID>.  
Importare ed esportare
 
Abbiamo la nostra chiave, importato e firmato la chiave di <ID>.  
 
  
 
Rimandiamola al proprietario:
 
Rimandiamola al proprietario:
gpg --armor -export -o firma1  <ID>
+
gpg --armor -export -o firma.sig <ID>
  
crea un file di nome firma1 nella directory corrente che contiene la chiave firmata. Spedire al proprietario firma1.
+
Questo comando crea un file di nome ''firma.sig'' nella directory corrente, che contiene la chiave firmata.
 +
Spedire al proprietario ''firma.sig''.
  
 
Chi riceve la propria chiave firmata da altri può decidere inserirla nel proprio portachiavi, con
 
Chi riceve la propria chiave firmata da altri può decidere inserirla nel proprio portachiavi, con
gpg --import firma1  si aggiungono al portachiavi le nuove firme ma anche i nuovi ID che il mittente ha sulla sua chiave, col rispettivo valore di fiducia. Bisogna fare molta attenzione a firmare le chiavi degli altri.
+
gpg --import firma.sig
 +
si aggiungono al portachiavi le nuove firme ma anche i nuovi ID che il mittente ha sulla sua chiave, col rispettivo valore di fiducia.
 +
 
 +
Firmare le chiavi degli altri implica dar loro fiducia, e, spesso, anche aver verificato la loro identità in maniera sicura.
 +
Se non ci fidiamo, non firmiamo.
 +
Se si firmano a caso tutte le chiavi che capitano a tiro, si perde la reputazione che si ha presso gli altri partecipanti della rete.
  
Facciamolo sapere
 
 
Se vogliamo fare un uso pubblico di questa fiducia reciproca possiamo mandare la nostra  chiave, contenente la nuova firma, al keyserver:
 
Se vogliamo fare un uso pubblico di questa fiducia reciproca possiamo mandare la nostra  chiave, contenente la nuova firma, al keyserver:
gpg --keyserver keyserver.kjsl.com --send-key <ID mia chiave>
+
gpg --keyserver pgp.circl.lu --send-key <ID mia chiave>
 +
 
 +
Periodicamente occorre aggiornare il proprio portachiavi digitale, così da venire a conoscenza delle modifiche sulle chiavi degli altri.
 +
gpg --keyserver pgp.circl.lu --refresh-keys
 +
 
 +
= Rete di fiducia =
 +
Una chiave non è valida solo se è firmata di persona, ma se:
  
Rete di fiducia
+
* è firmata da un numero sufficiente di chiavi valide, cioè da almeno una chiave di cui ci si fida pienamente o da tre chiavi con fiducia marginale
Una chiave non è valida solo se è firmata di persona, ma anche se:
+
* il percorso delle chiavi per risalire alla chiave in questione è di pochi passi (generalmente, al massimo 5)
È firmata da un numero sufficiente di chiavi valide, cioè da almeno una chiave di cui ci si fida pienamente o da tre chiavi con fiducia marginale
 
Il percorso delle chiavi per risalire alla chiave in questione è al massimo di cinque passi.
 
  
Gestire la rete
+
Questi parametri sono configurabili, e possono essere resi più o meno stringenti, a seconda dell'uso che intendiamo fare della rete di fiducia GPG.
gpg.conf  ha due opzioni:
 
--completes-needed n    numero di utilizzatori con fiducia piena che presentano un nuovo utente (default 1)
 
--marginals-needed n    numero di utilizzatori con fiducia parziale che presentano un nuovo utente (default 3)
 
  
Questioni pratiche
+
Gestire la rete di fiducia gpg.conf ha due opzioni:
Come usare la firma nella posta:
 
scrivere il testo del messaggio (txt)
 
gpg --clearsign titolo      diventa titolo.asc,
 
inviare titolo.asc;
 
verificare un messaggio firmato
 
gpg  --verify titolo.asc
 
  
Visuale
+
--completes-needed n
Esistono vari programmi a interfaccia grafica per kde:
+
numero di utilizzatori con fiducia piena che presentano un nuovo utente (default 1)
gpa - gnu private assistant,  kgpg,...
 
  
(Da qua in poi c'è da aggiustare l'html delle formule)
+
--marginals-needed n
 +
numero di utilizzatori con fiducia parziale che presentano un nuovo utente (default 3)
  
 +
A seconda dell'importanza del messaggio, ognuno può consapevolmente valutare quanta fiducia dare alle chiavi.
  
<big style="font-family: serif;">Approfondimenti</big><br style="font-family: serif;">
+
= GUI =
<span style="font-family: serif;">Viene generata una chiave DSA -digital signature standard-&nbsp; firma con funzioni di hash e algoritmo a chiave pubblica per cifrare il valore di hash. (Message Digest 5, Secure Hash Algorithm-1; non invertibili- resistenti alle collisioni) . <br>
+
Esistono vari programmi a interfaccia grafica:
Questa chiave raccoglie anche le firme delle altre persone che hanno confermato la nostra identit&agrave;.<br>
+
* ''Seahorse'', per gestire le chiavi e i certificati, comprese quelle ssh, per un ambiente GTK
 +
* ''Kleopatra'', per gestire le chiavi e i certificati, comprese quelle ssh, per KDE
 +
* ''Pinentry'' (anche da riga di comando) si ricorda la password della chiave per il tempo impostato (default 5 minuti)
  
</span>
+
= Rete di fiducia =
<span style="font-family: serif;">Viene anche generata una sottochiave ElGamal per cifrare documenti.<br></span>
+
Web of trust: una chiave importata può essere firmata con un certo grado di fiducia. Possiamo rispedirla al proprietario o caricare la firma su un keyserver, e se lui la importa nel suo portachiavi, avrà la propria chiave firmata da noi.
<br style="font-family: serif;">
+
Ognuno può quindi aggiungere le firme dei conoscenti alla propria chiave, che a loro volta hanno firme di altri.
<span style="font-family: serif;"><big>Diffie-Hellman <small>(tanto per incuriosire un po')</small><br></big>
+
In questo modo è possibile creare la propria rete di fiducia, scegliendo un livello accettabile di indirezione.
A e B possono scambiarsi un segreto in rete: A sceglie&nbsp; p
 
primo,
 
un g&lt;p, pubblica p e g. A sceglie a segreto e calcola&nbsp;&nbsp; g<sup>a</sup>
 
mod p , lo dice a B. B sceglie b segreto e calcola&nbsp; g<sup>b</sup>
 
  
mod p , lo dice a A. A calcola (g<sup>b</sup>)<sup>a</sup> mod p, B
+
== GPG Keysigning Party ==
calcola (g<sup>a</sup>)<sup>b</sup> mod p, che forniscono lo stesso
+
Ogni tanto vengono organizzati degli incontri per consentire ai possessori di chiavi GPG di ampliare la loro rete di fiducia.
valore, ed &egrave; il loro segreto.&nbsp;&nbsp; <br>
 
Es p=23 g=5&nbsp;&nbsp; A sceglie 7&nbsp; 5<sup>7</sup>mod 23
 
(=17);&nbsp; B sceglie 5&nbsp;&nbsp;&nbsp; 5<sup>5</sup> mod 23 (=20) .
 
A calcola 20<sup>7</sup>mod 23 (=21),&nbsp; B 17<sup>5</sup> mod 23
 
(=21).&nbsp; Il segreto scambiato &egrave; 21.<br>
 
  
</span>
+
Cosa si deve fare per un ''keysigning party'':
<big style="font-family: serif;"><br>Crittografia a chiave pubblica <small>(e questo &egrave; anche peggio, e puramente indicativo)</small><br>
+
* '''generare la propria coppia di chiavi''' e il corrispondente certificato di revoca, se non si è già fatto;
</big><span style="font-family: serif;">1978 - R.S.A. dal teorema di Eulero-Fermat:</span><br style="font-family: serif;">
+
* '''inviare''' la propria chiave ad un keyserver, almeno qualche giorno prima del party;
<span style="font-family: serif;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+
* preparare dei '''biglietti''' con scritto il proprio nome e cognome, indirizzo email, ID e impronta (fingerprint) della vostra chiave;
a <sup>k &#966; (m)+1</sup> = a (modm)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+
* recarsi al party portando con sé i biglietti e uno o più '''documenti di identità''';
 +
* scambiarsi le chiavi '''verificando l'identità''' di chi dichiara di esserne il legittimo proprietario;
 +
* tornati a casa, scaricare le chiavi da un keyserver utilizzando l'ID; poi '''controllare l'impronta''' (fingerprint) e infine firmare la chiave col grado di fiducia desiderato e rispedirla al server.
  
dove &#966; (m)
+
{{Note|text=Per scaricare le firme altrui da un keyserver che non sia un server LDAP, specificare l'opzione del keyserver no-self-sigs-only con la sintassi ''--keyserver-options no-self-sigs-only''|type=info}}
  
&egrave; la funzione di Eulero di m</span><br style="font-family: serif;">
+
= Risorse =
<span style="font-family: serif;">se due numeri s e t sono tali
+
* [https://build.golem.linux.it/gpg-keysigning-party/gpg-keysigning-party.pdf] prontuario veloce (PDF) per un keysigning party
che&nbsp; st&nbsp; = k&#966;(m)+1 allora uno
+
* [https://www.gnupg.org/howtos/it/keysigning_party.html#prep] approfondimenti, dalla documentazione ufficiale
&egrave; la chiave privata e uno &egrave; la chiave pubblica. Il
+
* [https://cirw.in/gpg-decoder/] GPG online decoder, utile per ispezionare chiavi pubbliche al volo
sistema funziona scegliendo opportunamente m (prodotto di due primi
 
'grandi'). La chiave pubblica &egrave; (s, m),&nbsp; quella privata (t,
 
m).</span><br style="font-family: serif;">
 
  
<span style="font-family: serif;">Viene usato un sistema di
+
[[Category: Howto]]
crittografia misto (messaggio cifrato con
 
cifrature simmetriche la cui chiave usata &egrave; inviata col
 
messaggio e cifrata a chiave pubblica).</span><br style="font-family: serif;">
 

Versione attuale delle 16:02, 11 ago 2023

Introduzione

GNU Privacy Guard (GnuPG o GPG) è un programma libero che implementa lo standard OpenPGP definito nel RFC4880, derivato dal programma PGP (Pretty Good Privacy) di Phil Zimmermann. Nel PGP sono usate sia la crittografia asimmetrica (a chiave pubblica) che quella simmetrica. La chiave pubblica del destinatario serve al mittente unicamente per cifrare la chiave comune per un algoritmo di crittografia simmetrica che sarà usata per cifrare il testo in chiaro del messaggio. Un destinatario decifra un messaggio protetto da GPG usando la chiave di sessione con l'algoritmo simmetrico. Tale chiave di sessione è inclusa nel messaggio in maniera criptata ed è decifrata usando la chiave privata del destinatario. L'utilizzo di due cifrature oltre che a velocizzare l'esecuzione del programma (la cifratura a chiave simmetrica è molto più veloce di quella asimmetrica) permette di poter cifrare uno stesso messaggio per più destinatari.

Manuale

Un veloce aiuto

man gpg

Un rapido promemoria delle opzioni più comuni

gpg --help

Generare una chiave

Da utente normale:

gpg --gen-key

e rispondere alle domande che fa il programma.

Controllare che sia stata davvero creata

gpg --list-keys

Certificato di revoca

Il certificato di revoca serve per invalidare la chiave nel caso in cui questa venga compromessa. Chiunque sia in possesso del certificato di revoca può revocare la chiave corrispondente, per cui è bene tenerlo in un posto sicuro. Poiché, nel momento in cui si ha bisogno del certificato di revoca, potremmo non essere più in grado di generarlo, conviene generarlo subito dopo la creazione della chiave, e prima di iniziare a utilizzarla pubblicamente.

gpg --output certificato-di-revoca.asc --gen-revoke ID

dove ID è dato dalle ultime 8 cifre dell'impronta (fingerprint) della chiave.

Utilizzo pratico

Criptare un documento

gpg -o file1.ext.gpg -e -r UserID file1.ext

Esempio:

gpg -o tesi.odt.gpg -e -r spookyh@gmail.com tesi.odt

Decriptare un documento

gpg -o file1.ext -d file1.gpg

Firmare un documento

Il mittente può usare PGP per firmare un messaggio con l'algoritmo di firma RSA o Digital Signature Algorithm (DSA). Per fare ciò viene calcolato un hash (message digest) dal testo in chiaro e successivamente da questo hash è creata la firma digitale usando la chiave privata del mittente.

gpg -o file1.ext.sig -s file1.ext

Verificare un documento

gpg --verify file1.sig

Importare ed esportare chiavi (locali)

Importare una chiave (pubblica)

gpg --import chiave.asc (o .txt)

Esportare la propria chiave pubblica

gpg -a -o chiave_pubblica.asc --export

Esportare la propria chiave privata

Golem-template-note-attention.png La chiave privata può essere utilizzata per impersonare la vostra identità, perciò NON inviarla mai a nessuno, ed esportarla solo per effettuarne backup, naturalmente da custodire in un luogo sicuro.


gpg --armor --export-secret-keys <ID> > secret-key.gpg.asc

Condividere le chiavi pubbliche

Inviare la chiave ad un keyserver:

gpg --keyserver keyserver.linux.it --send-key <ID>

Importare una chiave da un keyserver:

gpg --keyserver keyserver.linux.it --recv-keys <ID>

Importare una chiave da un keyserver con tutte le firme a essa associate, e non solo quelle del proprietario della chiave:

gpg --keyserver-options no-self-sigs-only --keyserver keyserver.linux.it --recv-keys <ID>

Golem-template-note-info.png Le opzioni di base di GPG per l'importazione da keyserver sono d'ignorare tutte le firme che non siano quelle del proprietario della chiave, tranne quando si tratta di un server LDAP. In quel caso il comportamento predefinito è inverso. Per importare ogni firma associata alla chiave pubblica, usare l'opzione del keyserver no-self-sigs-only.


Se ci fidiamo del proprietario e vogliamo mostrare pubblicamente la nostra fiducia, possiamo firmare la chiave appena importata e esportare la firma su un keyserver (vedere sezioni successive).

Keyserver

Quando si carica una chiave su un keyserver, poi questo la condivide con gli altri keyserver che fanno parte dello stesso circuito. Non esiste un'entità centralizzata o un circuito di riferimento per scelta di progettazione e, a volte, questo può generare confusione nell'utilizzatore. Inoltre, alcuni keyserver potrebbero non essere sempre accessibili.

Tra i keyserver più noti:

  • keys.openpgp.org
  • keyserver.ubuntu.com
  • keys.gnupg.net
  • pgp.surfnet.nl
  • pgp.circl.lu
  • pgp.mit.edu

Editare una chiave

Per fare operazioni e modifiche dobbiamo "editare" le chiavi, aprendo l'editor interattivo:

gpg --edit-key <ID>

Golem-template-note-warning.png Prima di uscire dall'editor, ricordarsi di salvare, altrimenti le modifiche vanno perdute


  • firmare
> sign
  • cambiare i valori di fiducia
> trust
  • vedere la fingerprint
> fpr
  • cambiare la data di scadenza
> expire
  • cambiare la password
> passwd
  • firmare localmente in modo non esportabile
> lsign
  • sempre ricordarsi di salvare
> save
  • oppure uscire
> quit

Digitare help per una lista esaustiva.

Tutte le modifiche da rendere pubbliche vanno inviate ad un keyserver.

Revocare una chiave

Avendo già il certificato di revoca:

gpg --import certificato-di-revoca.asc
gpg --keyserver pgp.surfnet.nl --send-key ID

Gestione delle chiavi

Controllare il database delle chiavi: questo comando mostra tutte le chiavi che abbiamo con molte informazioni.

gpg --list-keys --with-colons

Fornisce tutti i valori di fiducia assegnati alle varie chiavi. (Informazioni private)

gpg --list-ownertrust

Controllo firme

gpg --check-sigs
gpg --list-sigs

Esportare le chiavi altrui

Abbiamo importato e firmato la chiave di <ID>.

Rimandiamola al proprietario:

gpg --armor -export -o firma.sig <ID>

Questo comando crea un file di nome firma.sig nella directory corrente, che contiene la chiave firmata. Spedire al proprietario firma.sig.

Chi riceve la propria chiave firmata da altri può decidere inserirla nel proprio portachiavi, con

gpg --import firma.sig

si aggiungono al portachiavi le nuove firme ma anche i nuovi ID che il mittente ha sulla sua chiave, col rispettivo valore di fiducia.

Firmare le chiavi degli altri implica dar loro fiducia, e, spesso, anche aver verificato la loro identità in maniera sicura. Se non ci fidiamo, non firmiamo. Se si firmano a caso tutte le chiavi che capitano a tiro, si perde la reputazione che si ha presso gli altri partecipanti della rete.

Se vogliamo fare un uso pubblico di questa fiducia reciproca possiamo mandare la nostra chiave, contenente la nuova firma, al keyserver:

gpg --keyserver pgp.circl.lu --send-key <ID mia chiave>

Periodicamente occorre aggiornare il proprio portachiavi digitale, così da venire a conoscenza delle modifiche sulle chiavi degli altri.

gpg --keyserver pgp.circl.lu --refresh-keys

Rete di fiducia

Una chiave non è valida solo se è firmata di persona, ma se:

  • è firmata da un numero sufficiente di chiavi valide, cioè da almeno una chiave di cui ci si fida pienamente o da tre chiavi con fiducia marginale
  • il percorso delle chiavi per risalire alla chiave in questione è di pochi passi (generalmente, al massimo 5)

Questi parametri sono configurabili, e possono essere resi più o meno stringenti, a seconda dell'uso che intendiamo fare della rete di fiducia GPG.

Gestire la rete di fiducia gpg.conf ha due opzioni:

--completes-needed n

numero di utilizzatori con fiducia piena che presentano un nuovo utente (default 1)

--marginals-needed n

numero di utilizzatori con fiducia parziale che presentano un nuovo utente (default 3)

A seconda dell'importanza del messaggio, ognuno può consapevolmente valutare quanta fiducia dare alle chiavi.

GUI

Esistono vari programmi a interfaccia grafica:

  • Seahorse, per gestire le chiavi e i certificati, comprese quelle ssh, per un ambiente GTK
  • Kleopatra, per gestire le chiavi e i certificati, comprese quelle ssh, per KDE
  • Pinentry (anche da riga di comando) si ricorda la password della chiave per il tempo impostato (default 5 minuti)

Rete di fiducia

Web of trust: una chiave importata può essere firmata con un certo grado di fiducia. Possiamo rispedirla al proprietario o caricare la firma su un keyserver, e se lui la importa nel suo portachiavi, avrà la propria chiave firmata da noi. Ognuno può quindi aggiungere le firme dei conoscenti alla propria chiave, che a loro volta hanno firme di altri. In questo modo è possibile creare la propria rete di fiducia, scegliendo un livello accettabile di indirezione.

GPG Keysigning Party

Ogni tanto vengono organizzati degli incontri per consentire ai possessori di chiavi GPG di ampliare la loro rete di fiducia.

Cosa si deve fare per un keysigning party:

  • generare la propria coppia di chiavi e il corrispondente certificato di revoca, se non si è già fatto;
  • inviare la propria chiave ad un keyserver, almeno qualche giorno prima del party;
  • preparare dei biglietti con scritto il proprio nome e cognome, indirizzo email, ID e impronta (fingerprint) della vostra chiave;
  • recarsi al party portando con sé i biglietti e uno o più documenti di identità;
  • scambiarsi le chiavi verificando l'identità di chi dichiara di esserne il legittimo proprietario;
  • tornati a casa, scaricare le chiavi da un keyserver utilizzando l'ID; poi controllare l'impronta (fingerprint) e infine firmare la chiave col grado di fiducia desiderato e rispedirla al server.

Golem-template-note-info.png Per scaricare le firme altrui da un keyserver che non sia un server LDAP, specificare l'opzione del keyserver no-self-sigs-only con la sintassi --keyserver-options no-self-sigs-only


Risorse

  • [1] prontuario veloce (PDF) per un keysigning party
  • [2] approfondimenti, dalla documentazione ufficiale
  • [3] GPG online decoder, utile per ispezionare chiavi pubbliche al volo