GnuPG è uno strumento per comunicare in modo sicuro. Questo capitolo è una breve guida riguardante il nocciolo funzionale di GnuPG; include la creazione di coppie di chiavi, scambio e verifica di chiavi, cifratura e decifratura di documenti e autenticazione di documenti con firme digitali.
GnuPG utilizza la crittografia a chiave pubblica per permettere a coloro che lo utilizzano di comunicare in sicurezza. In un sistema a chiave pubblica ogni utente ha una coppia di chiavi consistenti in una chiave privata e una chiave pubblica. La chiave privata di una persona viene tenuta segreta; non deve mai essere rivelata.
La chiave pubblica può essere data a tutti coloro con i quali l'utente vuole comunicare.
GnuPG utilizza uno schema in qualche modo più sofisticato per il quale un utente possiede una coppia di chiavi primaria e zero o più coppie di chiavi subordinate addizionali. La coppia di chiavi primaria e quelle subordinate sono raggruppate assieme per facilitare la gestione delle chiavi e il mazzo così ottenuto può spesso essere considerato semplicemente come un'unica coppia di chiavi.
Generare una nuova coppia di chiavi.
L'opzione a linea di comando --gen-key è utilizzata per creare una nuova coppia di chiavi primaria.
alice% gpg --gen-key
gpg (GnuPG) 0.9.4; Copyright (C) 1999 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.Per favore scegli che tipo di chiave vuoi:
(1) DSA e ElGamal (default)
(2) DSA (firma solo)
(4) ElGamal (firma e cifra)
Cosa scegli?
GnuPG è in grado di creare diversi tipi di coppie di chiavi, ma una chiave primaria deve essere capace di fare firme. Ci sono pertanto solo tre opzioni. L'opzione 1 crea in realtà due coppie di chiavi: una coppia di chiavi di tipo DSA che rappresenta la coppia di chiavi primaria ed è utilizzabile solo per firmare; una coppia di chiavi subordinata di tipo ElGamal, usata per criptare. L'opzione 2 è simile alla precedente ma crea solo una coppia di chiavi DSA. L'opzione 4[1]crea una singola coppia di chiavi ElGamal utilizzabile sia per firmare che per criptare. In tutti i casi è possibile in un secondo momento creare sotto-chiavi addizionali per cifrature e firme.
È necessario anche scegliere la dimensione della chiave. La dimensione di una chiave DSA deve essere compresa fra 512 e 1024 bit mentre una chiave ElGamal può essere di qualsiasi dimensione. GnuPG, però, richiede che le chiavi non siano più piccole di 768 bit. Accade quindi che, se si è scelta l'opzione 1 e successivamente si sceglie una dimensione per la chiave maggiore di 1024 bit, la chiave ElGamal avrà la dimensione richiesta, mentre la chiave DSA sarà di 1024 bit.
Sto per generare una nuova coppia di chiavi ELG-E.
la dimensione minima è 768 bit
la dimensione predefinita è 1024 bit
la dimensione massima consigliata è 2048 bit
Di che dimensioni vuoi la chiave? (1024)
Più lunga è la chiave maggiore è la sicurezza contro attacchi a forza bruta, anche se in pratica per un utilizzo comune la dimensione di default della chiave è adeguata. Con una chiave lunga, infatti, diventa più economico aggirare la cifratura piuttosto che provare a romperla. Inoltre cifratura e decifratura sono più lente e una dimensione maggiore della chiave può influenzare negativamente la lunghezza della firma. Una volta scelta, la dimensione della chiave non può più essere modificata.
Infine è necessario scegliere una data di scadenza. Se è stata scelta l'opzione 1, la data di scadenza verrà utilizzata sia per la coppia di chiavi ElGamal che per quella DSA.
Per favore specifica per quanto la chiave sarà valida.
0 = la chiave non scadrà
<n> = la chiave scadrà dopo n giorni
<n>w = la chiave scadrà dopo n settimane
<n>m = la chiave scadrà dopo n mesi
<n>y = la chiave scadrà dopo n anni
Chiave valida per? (0)
Per la maggior parte degli utenti una chiave che non scade risulta adeguata. Il tempo di scadenza, in caso contrario, dovrebbe essere scelto con cura in quanto, anche se è possibile cambiare la data di scadenza dopo che la chiave è stata creata, potrebbe risultare dificile comunicare un cambiamento alle persone che possiedono quella chiave pubblica.
È necessario fornire un identificativo utente[2] in aggiunta ai parametri della chiave. Lo User ID viene utilizzato per associare la chiave che si sta creando ad una persona reale.
Ti serve uno User ID per identificare la tua chiave; il software costruisce l'user id a partire da Nome e Cognome, Commento e Indirizzo di Email indicati in questa forma:
"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
Nome e Cognome:
Solamente uno User ID viene creato nel momento in cui si genera una nuova chiave. È comunque possibile aggiungere ulteriori User ID in seguito nel caso in cui si desiderasse utilizzare la chiave in due o più contesti diversi, come ad esempio sul lavoro e all'interno della propria sezione di partito. Uno User ID deve essere creato con cura in quanto non può più essere modificato.
GnuPG necessita di una ``frase d'ordine''[3] per proteggere le chiavi primarie e subordinate che si possiedono.
Ti serve una passphrase per proteggere la tua chiave segreta.
Inserisci la passphrase:
Non ci sono limiti alla lunghezza della passphrase, la quale dovrebbe essere scelta con attenzione. Dal punto di vista della sicurezza, la passphrase usata per sbloccare la chiave privata è uno dei punti più deboli di GnuPG (così come di altri sistema di crittografia a chiave pubblica), in quanto è l'unica protezione che si possiede nel caso in cui un'altra persona entri in possesso della propria chiave privata. Idealmente la passphrase non dovrebbe utilizzare parole prese da un dizionario e dovrebbe usare tanto caratteri minuscoli e minuscoli quanto caratteri non-alfabetici. Una buona passphrase è cruciale per un uso sicuro di GnuPG.
Generare un certificato di revoca.
Una volta che la propria coppia di chiavi è stata creata, si dovrebbe immediatamente generare un certificato di revoca per la chiave pubblica primaria utilizzando l'opzione --gen-revoke. Se ci si dimentica la passphrase o se la propria chiave privata viene compromessa o persa, questo certificato di revoca può essere pubblicato per segnalare ad altri che la chiave pubblica non deve più essere usata. Una chiave pubblica revocata può comunque ancora essere utilizzata per verificare firme fatte in passato, ma non può più essere usata per cifrare futuri messaggi. Inoltre la revoca non influisce sulla propria capacità di decifrare messaggi spediti in passato, se si possiede ancora l'accesso alla chiave privata.
alice% gpg --output revoca.asc -
-gen-revoke mia_chiave
[...]
L'argomento mia_chiave deve essere uno specificatore di chiave, cioè o l'ID della propria coppia primaria di chiavi o una qualsiasi altra parte dello User ID che identifica la propria coppia di chiavi. Il certificato generato verrà riposto nel file revoca.asc. Se l'opzione --output è omessa, il risultato verrà stampato sullo standard output. Poiché il certificato è breve, si può pensare di stamparne una copia e tenerlo al sicuro da qualche parte, ad esempio nella propria cassetta di sicurezza. Il certificato non dovrebbe venir riposto in luoghi dove altri possono aver accesso in quanto chiunque può pubblicare il certificato di revoca e rendere la chiave pubblica corrispondente inutile.