Capitolo 4. Uso quotidiano di GnuPG

Sommario
Definire i propri requisiti di sicurezza
Costruire la propria rete della fiducia
Usare GnuPG legalmente

GnuPG è uno strumento complesso che coinvolge questioni tecniche, sociali e legali. Da un punto di vista tecnico è stato progettato per venir usato in situazioni con requisiti di sicurezza notevolmente differenti, fatto che ha complicato la gestione delle chiavi. Da un punto di vista sociale, l'uso di GnuPG non è una decisione strettamente personale. Per utilizzare veramente GnuPG entrambe le parti coinvolte nella comunicazione devono usarlo effettivamente. Infine, a partire all'incirca dal 1999, le leggi riguardanti la criptazione digitale, in particolare la legalità dell'uso di GnuPG, variano da stato a stato e sono tutt'ora dibattute dai governi di molte nazioni.

Il presente capitolo affronta queste tematiche. Esso fornisce pratici consigli su come usare GnuPG per soddisfare alle proprie esigenze di sicurezza. Suggerisce anche dei modi per promuovere l'uso di GnuPG come strumento per comunicazioni sicure fra sé ed i propri colleghi, quando questi non lo utilizzano già. Infine, viene sottolineato lo status legale di GnuPG all'interno dello stato corrente delle leggi sulla criptazione nel mondo.

Definire i propri requisiti di sicurezza

GnuPG è uno strumento per proteggere la propria privacy. La propria privacy è protetta se è possibile corrispondere con altri senza che nessuno possa intromettersi e legga i vostri messaggi.

Il modo in cui si dovrebbe usare GnuPG dipende dalla determinazione e dalla ricchezza di risorse di coloro i quali vogliono leggere i vostri messaggi criptati. Un ficcanaso può essere un amministratore di sistema senza scrupoli che legge a caso la posta altrui; può essere una spia industriale che sta provando a rubare i segreti industriali della vostra compagnia; può essere un'agenzia per il rispetto della legge che cerca di accusarvi. L'utilizzo di GnuPG per proteggersi contro spioni casuali sarà differente dall'uso di GnuPG per proteggersi contro avversari determinati. L'obiettivo, in ultima analisi, consiste nel rendere più costoso il recupero dei dati non criptati di quanto valgano i dati stessi.

La personalizzazione del proprio uso di GnuPG orbita attorno a quattro punti:

Una dimensione della chiave scelta bene protegge dagli attacchi a forza bruta sferrati contro i messaggi criptati. Proteggere la propria chiave privata evita che un malintenzionato possa semplicemente usare la propria chiave privata per decifrare messaggi criptati e firmare messaggi a vostro nome. La corretta gestione della propria rete della fiducia evita che dei malintenzionati fingano di essere le persone con le quali usualmente si comunica. Infine, decidere per questi elementi di personalizzazione rispettando i propri requisiti di sicurezza è il modo in cui si bilancia il lavoro extra dovuto all'uso di GnuPG con la privacy che esso offre.

Scegliere la dimensione della chiave

La scelta della dimensione di una chiave dipende dalla chiave. In OpenPGP una coppia di chiavi pubblica/privata possiede, normalmente, più di una chiave. Al minimo possiede una chiave di firma principale e probabilmente una o più sotto-chiavi addizionali di cifratura. Utilizzando i parametri preimpostati per la generazione di chiavi con GnuPG, la chiave principale sarà di tipo DSA e le sotto-chiavi di tipo ElGamal.

Per lo standard DSA sono previste chiavi fino a 1024 bit. Questo valore non è particolarmente alto data la tecnologia di fattorizzazione di oggi, ma è ciò che lo standard specifica. Senza esitazioni si dovrebbero quindi usare chiavi DSA da 1024 bit.

Le chiavi ElGamal, d'altro canto, possono essere di qualsiasi dimensione. Poiché GnuPG è un sistema a chiave pubblica ibrido, la chiave pubblica viene usata per criptare una chiave di sessione da 128 bit, mentre la chiave privata è usata per decriptarla. Ciò nonostante, la dimensione della chiave influenza la velocità di cifratura e decifratura in quanto il costo di questi algoritmi cresce esponenzialmente con il crescere della dimensione della chiave. Chiavi grandi, inoltre, richiedono più tempo ad essere generate e più spazio per essere salvate. Infine, c'è una riduzione del ritorno di sicurezza che una chiave grande fornisce. Dopo tutto, se la chiave è tanto grande da resistere ad un attacco a forza bruta, uno spione semplicemente cambierebbe metodo e cercherebbe di ottenere i dati in chiaro in un altro modo. Esempi di tali metodi alternativi sono il furto in appartamento e la rapina. 1024 bit è perciò la dimensione di chiave raccomandata. Se si ha sinceramente bisogno di una dimensione di chiave maggiore, allora probabilmente si conoscono già tutte queste problematiche e ci si dovrebbe rivolgere pertanto ad un esperto in sicurezza di dati.

Proteggere la propria chiave privata

Proteggere la propria chiave privata è il lavoro più importante che si deve considerare quando si vuole utilizzare GnuPG correttamente. Se qualcuno ottiene la vostra chiave privata, allora tutti i dati criptati con quella chiave privata possono essere decifrati e firme fatte in vostro nome. Se si perde la propria chiave privata, allora non sarà più possibile decriptare documenti cifrati personalmente in futuro o nel passato e non sarà più possibile fare alcuna firma. La sola perdita della propria chiave privata è un evento catastrofico.

In qualsiasi modo si utilizzi GnuPG si dovrebbe riporre in un posto sicuro il certificato di revoca della propria chiave pubblica e salvare una copia della propria chiave privata su un supporto protetto da scrittura. Per esempio, si potrebbe masterizzare un CD-ROM e riporlo nella cassetta di sicurezza della propria banca in una busta sigillata. In alternativa, si potrebbe salvare il tutto su un dischetto e nasconderlo da qualche parte in casa propria. Qualsiasi cosa si pensi di fare, chiave privata e certificato di revoca dovrebbero essere messi su un supporto che garantisca il mantenimento dei dati per tanto tempo quanto ci si aspetta di utilizzare la chiave e si dovrebbe salvarli con più attenzione di quanta se ne faccia per la propria chiave privata di uso quotidiano.

Nel tentativo di salvaguardare la propria chiave, GnuPG non salva su disco la chiave privata così com'è. Essa viene invece criptata utilizzando un algoritmo di cifratura simmetrico. Questo è il motivo per cui si necessita di una passphrase per poter accedere alla chiave. In questo modo ci sono due barriere che un malintenzionato deve superare per poter accedere alla vostra chiave privata: deve aver effettivamente accessso alla chiave e deve riuscire a superare la cifratura.

Il salvataggio sicuro della propria chiave privata è importante, ma c'è un costo da sostenere. Idealmente si dovrebbe tenere la chiave privata su un disco rimovibile e protetto in scrittura, come un floppy, e lo si dovrebbe utilizzare su una macchina con un unico utente non connessa ad alcuna rete. Ciò può risultare sconveniente o impossibile. Per esempio può accadere che non si possieda un computer ma ci ritrovi costretti ad utilizzarne uno al lavoro o a scuola. Oppure potrebbe succedere che ci si vedrebbe costretti a scollegare il proprio computer da una connessione permanente ogni volta che si voglia usare GnuPG.

Tutto questo non significa che non si possa o non si debba usare GnuPG. Piuttosto si è deciso che i dati da proteggere sono abbastanza importanti da venir cifrati, ma non così importanti da richiedere un impegno ulteriore affinché la prima barriera risulti più robusta. È una questione di scelta.

Una buona passphrase è assolutamente cruciale nell'uso di GnuPG. Qualsiasi malintenzionato che riesca a guadagnare l'accesso alla propria chiave privata deve oltrepassare la cifratura della chiave privata stessa. Invece di indovinare brutalmente la chiave, il malintenzionato cercherà quasi certamente di indovinare la passphrase.

Il motivo per cui si prova prima con la passphrase consiste nel fatto che la maggior parte delle persone sceglie una passphrase più facile da indovinare di una chiave casuale a 128 bit. Se la passphrase è una parola, è molto più economico provare tutte le parole presenti nei dizionari delle lingue del mondo. Anche se i caratteri della parola sono permutati, per esempio ``putcomter'' invece di ``computer'', è comunque più semplice provare con delle parole da dizionario a cui sono applicate delle regole di permutazione. Lo stesso problema si applica a citazioni. Generalmente le passphrase basate su frasi del linguaggio naturale sono poveri esempi di passphrase, in quanto esiste poca casualità e molta ridondanza nel linguaggio naturale.

Una buona passphrase è quella passphrase che si riesce a ricordare, ma che altri difficilmente possono indovinare. Essa dovrebbe includere caratteri presi da tutto lo spettro dei caratteri stampabili presenti sulla tastiera. Ciò include i caratteri alfabetici maiuscoli, numeri e caratteri speciali come } e |. Bisonga essere creativi e spendere un po' di tempo nel considerare la propria passphrase; una buona scelta è importante per assicurare la propria privacy.

Scegliere la data di scadenza e usare le sotto-chiavi.

Per default, quando si crea una nuova coppia di chiavi, vengono generate una chiave di firma principale DSA ed una sotto-chiave di cifratura ElGamal. Ciò risulta inconveniente in quanto i ruoli giocati dalle due chiavi sono differenti e si potrebbe perciò volere che le chiavi abbiano una differente durata. La chiave di firma principale viene usata per fare le firme digitali e raccoglie le firme delle altre persone che hanno confermato la vostra identità. La chiave di cifratura viene usata solo per decifrare i documenti criptati che si ricevono. Tipicamente una firma digitale possiede un tempo di vita lungo, cioè eterno, in quanto non si vuole perdere le firme applicate alla propria chiave per la raccolta delle quali si è lavorato duramente. D'altro canto, la sotto-chiave di cifratura dovrebbe essere cambiata periodicamente per un'ulteriore sicurezza, poiché, se una chiave di cifratura viene violata, il malintenzionato può leggere tutti i documenti cifrati con quella chiave sia nel futuro che nel passato.

Accade quasi sempre che non si desidera avere una data di scadenza per la propria chiave principale. Ci sono due ragioni per le quali si potrebbe scegliere il contrario. La prima è che si intende usare la chiave per un periodo limitato. Per esempio la si potrebbe usare per un evento, come una campagna politica, dopo il quale non sarebbe più utile. Un'altra ragione consiste nel fatto che se si dovesse perdere il controllo della chiave senza possedere un certificato di revoca con il quale revocarla, avendo un data di scadenza sulla chiave principale ci si assicura che alla fine essa cadrà comunque in disuso.

Cambiare le sotto-chiavi di cifratura è semplice ma può risultare sconveniente. Se si genera una nuova coppia di chiavi con una data di scadenza per la sotto-chiave, alla fine tale chiave scadrà. Appena prima della scadenza si aggiungerà allora una nuova sottochiave e si renderà nota la propria chiave pubblica aggiornata. Chi desidera corrispondere con voi dovrà, una volta che la sotto-chiave è scaduta, recuperare la chiave aggiornata in quanto non sarà più in grado di cifrare con la chiave scaduta. Ciò può essere sconveniente a seconda di come si distribuisce la chiave. Fortunatamente, però, non saranno necessarie altre firme in quanto la nuova sotto-chiave sarà stata firmata mediante la vostra chiave di firma principale, la quale, verosimilmente, è già stata convalidata dai vostri corrispondenti.

Questa sconvenienza può o meno valere la sicurezza aggiunta. Proprio come è possibile fare di persona, un malintenzionato può tuttavia leggere tutti i documenti criptati con la sotto-chiave scaduta [se riuscisse ad entrarne in possesso, ndt]. Cambiare le sotto-chiavi protegge solo i documenti futuri. Per leggere i documenti cifrati con la nuova sotto-chiave, un malintenzionato avrebbe bisogno di cominciare un nuovo attacco utilizzando una qualsiasi delle tecniche adottate la prima volta nei vostri confronti.

Per concludere, ha senso avere solo una sotto-chiave di cifratura valida in un mazzo. Non c'è nessun guadagno in termini di sicurezza nell'avere due o più sotto-chiavi attive. Può certamente esserci un numero qualsiasi di chiavi scadute in un mazzo, in modo tale che documenti cifrati in passato possano ancora essere decifrati, ma è sufficiente che solo una sotto-chiave sia attiva in un dato momento.

Gestire la propria rete della fiducia

Così come per la protezione della propria chiave, anche la gestione della propria rete della fiducia rappresenta un altro aspetto dell'uso di GnuPG che richiede la ponderazione di sicurezza a sfavore della semplicità di utilizzo. Se si sta utilizzando GnuPG per proteggersi contro spioni e falsari casuali, allora ci si può permettere di avere relativamente una buona fiducia delle firme di altre persone. Viceversa, se si è preoccupati che possa esserci un malintenzionato ben determinato nel voler invadere la propria privacy, allora si dovrebbe avere molta meno fiducia nelle firme altrui e si dovrebbe spendere molto più tempo nella verificarle personale.

Qualsiasi siano i propri requisiti di sicurezza, però, si dovrebbe sempre prestare attenzione quando si firmano le chiavi degli altri. È egoistico firmare una chiave possedendo la sola confidenza nella validità della chiave sufficiente a soddisfare i propri requisiti di sicurezza. Altre persone, con richieste di sicurezza più stringenti, potrebbero voler dipendere dalla propria firma. Se non possono dipendere da voi, ciò indebolisce la rete della fiducia e rende più difficoltosa la comunicazione per gli utenti di GnuPG. Si utilizzi la stessa cura nel firmare chiavi che si vorrebbero altri usassero quando si dipende dalle loro firme.

In pratica gestire la propria rete della fiducia si riduce a concedere fiducia agli altri e nell'aggiustare le opzioni --marginals-needed e --completes-needed. Qualsiasi chiave si firmi personalmente verrà considerata valida, ma, tranne che per piccoli gruppi, non sarebbe pratico firmare di persona la chiave di ogni corrispondente con i quali si desideri comunicare. Si dovrà pertanto concedere della fiducia agli altri.

Risulta probabilmente saggio essere precisi nel concedere la propria fiducia e quindi usare le opzioni per regolare l'attenzione che GnuPG debba porre nella convalida delle chiavi. Come esempio concreto ci si potrebbe fidare totalmente solo di alcuni stretti amici, che si sa essere attenti nella firma delle chiavi, e fidarsi solo marginalmente di tutti gli altri presenti nel proprio mazzo di chiavi. Di coseguenza si potrebbe impostare --completes-needed a 1 e --marginals-needed a 2. Se si è più preoccupati per la sicurezza, si potrebbero scegliere dei valori pari a 1 e 3 o 2 e 3 rispettivamente. Se invece si è meno preoccupati di eventuali attacchi alla propria privacy e si desidera solo un po' di ragionevole confidenza circa la validità delle chiavi, si possono impostare i valori 1 e 1. In generale, se i valori per queste opzioni sono grandi, ciò implica che un numero maggiore di persone dovranno cospirare contro di voi per veder convalidare una chiave che non appartiene effettivamente alla persona alla quale si pensa appartenga.