Avanti Indietro Indice

3. Uso delle chiavi

3.1 Creare una chiave

Con

gpg --gen-key
verrà creata una nuova coppia di chiavi (una pubblica e una privata). Il primo problema è quale algoritmo usare: maggiori informazioni sugli algoritmi si trovano nella PGP DH vs. RSA FAQ o in Applied Cryptography. La scelta predefinita (e la più usata) è quella di usare l'algoritmo DSA/ElGamal, che non è brevettato.

Il secondo problema è la lunghezza della chiave. In questo caso la scelta dipende dalle preferenze dell'utente tra sicurezza e tempo di calcolo: se una chiave è lunga, diminuisce il rischio di decifrare abusivamente un messaggio intercettato, ma aumenta il tempo di calcolo per cifrare e decifrare. Se si è preoccupati per il tempo di calcolo, ma si ha intenzione di usare la chiave per un periodo di tempo abbastanza lungo, si tenga conto dell'aumento di prestazioni dei processori, che diventano sempre più veloci. La lunghezza minima per una chiave GnuPG è di 768 bit; la lunghezza standard per le chiavi DSA è di 1024 bit, anche se molti raccomandano di usare chiavi da 2048 bit (che al momento è anche la lunghezza massima supportata da GnuPG). Se la sicurezza è il fattore di gran lunga più importante, è consigliabile scegliere la massima lunghezza di chiave disponibile.

Successivamente, il sistema chiederà di inserire nomi, commenti e indirizzi e-mail, che verranno usati per la costruzione della chiave; questi potranno essere modificati in parte anche successivamente, si veda la sezione Amministrazione delle chiavi.

Infine, occorre scegliere una password (di solito si usa il termine "passphrase", frase segreta, visto che sono ammessi gli spazi), che andrà immessa ogni volta che si useranno funzionalità che richiedono la chiave privata. Una buona passphrase ha le seguenti caratteristiche:

Si può migliorare la sicurezza anche usando Le MAiusCOLe aLTernATe allE mInusCOLe. Nello scegliere la passphrase, assicurarsi di NON DIMENTICARLA: se succedesse, non sarebbe più possibile usare la propria chiave privata, ad esempio per leggere i messaggi ricevuti. È cosa saggia anche generare un certificato che contiene queste informazioni (e conservarlo con cura in un luogo sicuro). Si veda la sezione Revocare una chiave.

Dopo aver immesso tutti i dati, il sistema inizerà a generare le chiavi. Questa operazione richiederà un po' di tempo, durante il quale il sistema deve raccogliere molti dati casuali. Si può aiutare a generare dati casuali ad esempio lavorando su un'altra finestra. Ogni chiave generata è diversa dalle altre: se si genera una chiave e dopo cinque minuti se ne genera un'altra fornendo gli stessi dati (nome, email, passphrase, ecc.), si otterrà una chiave diversa. Ecco perchè è importante non dimenticarsi la passphrase.

3.2 Esportare le chiavi

Il comando per esportare la chiave di un utente è:

gpg --export [UID]
Se non si indica un UID (User ID), verranno esportate tutte le chiavi presenti nel portachiavi. L'output predefinito è lo stdout, ma è possibile dirigere l'output su un file usando l'opzione -o. In molti casi è consigliabile usare l'opzione -a per scrivere la chiave in un file ASCII a 7 bit, invece che in un file binario.

Per allargare il proprio orizzonte e permettere ad altri di inviare messaggi in modo sicuro, occorre esportare la propria chiave pubblica e pubblicarla sulla propria home page, o tramite finger, oppure caricarla su un key server come http://www.pca.dfn.de/dfnpca/pgpkserv/, o ancora usando altri metodi.

3.3 Importare le chiavi

Quando si riceve la chiave pubblica di qualcuno, prima di usarla occorre importarla nel proprio portachiavi (si può farlo anche per più di una chiave alla volta). Il comando è il seguente:

gpg --import [nomefile]
se si omette il nome del file, i dati verranno letti dallo stdin.

3.4 Revocare una chiave

Ci sono vari motivi per voler revocare una chiave esistente, ad esempio se la chiave privata è stata smarrita o è caduta nelle mani sbagliate, oppure se non si vuole più usare lo stesso UID, oppure se la lunghezza della chiave non è più sufficiente, ecc. In tutti questi casi, il comando per revocare la chiave è:

gpg --gen-revoke
che genera un certificato di revoca. Per poter fare questo occorre la chiave privata, altrimenti chiunque potrebbe revocare la chiave. Questo ha uno svantaggio: se si dimentica la passphrase, la chiave diventa inutilizzabile e non è neanche possibile revocarla! Per evitare questo inconveniente, è buona norma creare un certificato di revoca non appena si genera la chiave; esso andrà conservato in un luogo sicuro (può essere salvato su disco, su carta, ecc.), badando che non cada nelle mani sbagliate, altrimenti qualcun altro potrebbe revocare la chiave rendendola inutilizzabile.

3.5 Amministrazione delle chiavi

Il sistema GnuPG comprende dei file che servono per immagazzinare tutte le informazioni che accompagnano le chiavi (tutte tranne i valori di fiducia nel proprietario della chiave: per maggiori informazioni in proposito si veda la sezione Firmare le chiavi). Con

gpg --list-keys
verranno mostrate tutte le chiavi esistenti. Per vedere anche le firme, si usi:
 gpg --list-sigs 
(si veda la sezione Firmare le chiavi per maggiori informazioni). Per vedere le impronte digitali si usi:
gpg --fingerprint 
Vedere le impronte digitali ("Fingerprint") serve ad assicurarsi che la chiave appartenga davvero alla persona che sostiene di esserne il proprietario (ad esempio al telefono). L'output di questo comando è una breve lista di numeri.

Per vedere la lista delle chiavi private si usi:

gpg --list-secret-keys
Si noti che non ha alcuna utilità vedere firme o impronte digitali di chiavi private.

Per cancellare una chiave pubblica si usi:

gpg --delete-key UID 
Per cancellare una chiave privata si usi:
 gpg --delete-secret-key 

C'è un altro comando importante per la gestione delle chiavi:

gpg --edit-key UID
Usando questo comando è possibile modificare (tra le altre cose) la data di scadenza di una chiave, aggiungere UID o firmare una chiave (ovviamente per questo è necessaria la propria passphrase). Dopo aver eseguito il comando --edit-key si otterrà un prompt interattivo da cui digitare i comandi successivi.

3.6 Firmare le chiavi

Come accennato nell'introduzione, il principale tallone d'Achille del sistema è l'autenticità delle chiavi pubbliche: se si usa una chiave pubblica contraffatta si può dire addio alla crittografia sicura. Per evitare questo rischio, c'è la possibilità di firmare le chiavi, ossia di porre la propria firma digitale sulla chiave, certificandone la validità. In pratica, la firma certifica che lo user ID menzionato nella chiave corrisponde alla persona che possiede la chiave. Una volta che si è certi di questo, si può usare la chiave in tutta sicurezza.

Per firmare una chiave, si usi il comando gpg --edit-key UID e successivamente il comando sign.

Bisogna firmare una chiave solo quando si è ASSOLUTAMENTE CERTI della sua autenticità!!! Questa condizione può verificarsi quando si è ricevuta la chiave direttamente da una persona (ad esempio durante un "key signing party", un raduno per la firma delle chiavi) o quando la si è ricevuta per altri mezzi e se ne è controllata l'autenticità col metodo dell'impronta digitale (ad esempio al telefono). Non si dovrebbe mai firmare una chiave a priori.

GnuPG calcola la validità delle chiavi basandosi sulle firme disponibili e sui valori di fiducia nel proprietario ("ownertrust"). La fiducia nel proprietario di una chiave rappresenta la fiducia che si ripone nella capacità del proprietario di firmare correttamente altre chiavi. I valori possibili sono:

Così, se non si ha fiducia nel proprietario di una chiave, le eventuali firme apposte da quest'ultimo su un'altra chiave veranno ignorate durante il calcolo del valore di validità della chiave. Le informazioni sulla fiducia non sono immagazzinate negli stessi file che contengono le chiavi, ma in un file separato.


Avanti Indietro Indice