Mail criptate e/o firmate con standard OpenPGP usando Icedove/Thunderbird ed Enigmail
Versioni Compatibili Debian 8 "jessie" Debian 9 "stretch" Debian 10 "buster" |
Introduzione
La crittografia è l'unico modo per proteggere la propria privacy dall'invio di un'email fino alla sua ricezione, in quanto garantisce che venga letta soltanto a destinazione, meglio se con un client di posta esterno (anche nell'eventualità che OpenPGP sia supportato). Ciò assicura che nelle caselle mail di chi invia e riceve il messaggio resti memorizzata soltanto la versione criptata.
L'uso di crittografia asimmetrica, basata su una coppia di chiavi pubblica e privata, consente l'impiego di crittografia anche in presenza di più di due contatti senza compromessi sulla sicurezza. Infatti è sufficiente diffondere le sole chiavi pubbliche, avendo cura soltanto di garantirne l'autenticità. La sicurezza delle email inviate dipende invece dalla sola chiave privata, da tenere segreta e al sicuro, che consentirà sia di decifrare i messaggi criptati ricevuti sia di inviare messaggi autenticati con firma digitale.
WOT: Web of Trust
In questa guida tratto il solo standard aperto OpenPGP, usando Thunderbird (precedentemente pacchettizzato come Icedove con leggere variazioni) con estensione Enigmail e GnuPG: tutti e tre software liberi e multi piattaforma. Per maggiori dettagli rimando agli approfondimenti in fondo alla guida. Quello che è importante sapere è il funzionamento della rete di fiducia (WOT: web of trust), con cui si stabilisce l'autenticità delle chiavi pubbliche dei propri contatti.
OpenPGP anziché basarsi su un'autorità centralizzata o su una struttura gerarchica, come invece SSL/MIME, prevede che ogni contatto imposti la fiducia verso gli altri e, a seconda della fiducia che gli viene riconosciuta, possa garantire per quella di terzi. È un metodo molto pratico per gruppi che non hanno un ordine gerarchico, come possono essere appunto i contatti email e per cui sarebbe eccessivamente oneroso o di difficile gestione il ricorso a una Certificate Authority.
È inoltre possibile avvalersi di keyserver online per caricare la propria chiave pubblica e cercare quelle dei propri contatti. Enigmail supporta il tutto automaticamente, se lo si desidera.
Client di posta
Per quanto l'uso dello standard OpenPGP garantisca la compatibilità tra tutti i client che lo supportano, ho preferito utilizzare soltanto programmi diffusi su tutte le piattaforme in modo user-friendly, così che si possa aiutare i propri contatti più facilmente a configurare questi programmi. Fa eccezione chiaramente la parte di installazione, che dipende dal sistema operativo utilizzato e di cui sarà qui trattata solo la parte per Debian.
Ho voluto inoltre concentrarmi su software sufficientemente rodato, su cui sia sensato applicarsi un minimo per costruire qualcosa destinato a durare nel tempo. E perfino Enigmail, anche se è un'estensione, ha più di dieci anni e gode di ottima salute.
Installazione
Per l'installazione dare il seguente comando con privilegi di amministrazione, qualora qualcuno dei pacchetti utilizzati non sia ancora presente sul sistema:
# apt install thunderbird enigmail
Thunderbird è il client di posta scelto, in precedenza disponibile come Icedove (un fork supportato da Debian per problemi minori di licenza con la versione ufficiale che era distribuita da Mozilla, ma ora che sono stati superati non è più presente nei repository in favore dell'ufficiale thunderbird).
Enigmail è un'estensione per Thunderbird che aggiunge al client di posta un menù Enigmail da utilizzarsi sia per la gestione delle chiavi, sia per la codifica/decodifica e la firma/verifica delle email. In caso non si utilizzino gli stessi repository per tutti i pacchetti, per esempio in presenza di backports, accertarsi che thunderbird ed enigmail provengano dal medesimo. In alternativa installare l'estensione in un secondo momento, dal menù Tools -> Add-ons
del client email.
Gnupg enigmail richiede la versione 2 di GnuPG (GNU Privacy Guard) per funzionare, che è fornita dal pacchetto gnupg, installato già di default in Debian. Tuttavia per Debian 8 (Jessie) e precedenti tale pacchetto contiene la versione 1 di GnuPG e per poter installare enigmail è necessario installare la seconda con: # apt install gnupg2 |
Configurazione
Avviato Thunderbird, aggiungere i propri account mail. La finestra dovrebbe aprirsi in automatico se non ce ne sono ancora, ma in caso contrario serve solo qualche click dal menù File -> New -> Mail Account...
, e poi basta seguire la procedura guidata o quella manuale.
Procedura automatica
Si crea (o si importa, se era già stata generata) una coppia di chiavi per ciascun account dal menù Enigmail -> Setup Wizard
, che guiderà passo-passo alle configurazioni più comuni, effettuando le scelte più tecniche in modo automatico.
In particolare fa scegliere se firmare in automatico tutte le email, il che non comporta problemi di compatibilità per nessun destinatario. Maggiore attenzione invece va posta riguardo la possibilità di criptare di default tutte le email, dato che in assenza della chiave pubblica del destinatario l'estensione farebbe scegliere quale chiave pubblica utilizzare (ma se il destinatario non possiede la corrispondente chiave privata la mail risulterà illeggibile) ed è pertanto sconsigliata.
Si possono a ogni modo impostare regole personalizzate in un secondo momento, in modo da abilitare la cifratura delle mail a seconda del proprio destinatario. Le chiavi sono generate automaticamente utilizzando RSA a 2048 bit e hanno una scadenza di 5 anni.
Procedura manuale
Dal menù Enigmail -> Key Management
si aprirà una nuova finestra, e dal menù Generate -> New Key Pair
sono disponibili più opzioni sulla coppia di chiavi da creare, in particolare si può scegliere una grandezza fino a 4096 bit. Si ricorda solo che è consigliabile l'uso di chiavi RSA di almeno 2048 bit e con una scadenza non superiore ai 10 anni.
Per vedere tutte le chiavi presenti e gestite da GnuPG va messa la spunta sull'opzione relativa, altrimenti di default verranno visualizzate solo quelle che hanno un qualche problema.
Consigli e altri dettagli
Che si scelga la strada guidata o quella manuale per la generazione della coppia di chiavi RSA, la scelta della passphrase è molto importante e serve a prevenire il furto della propria chiave privata. Dovrà poi essere inserita ogni volta che si decripta una mail ricevuta o se ne firma una da inviare, ma può essere tenuta in memoria per tot minuti per ridurre il numero di richieste.
Altrettanto importante è il certificato di revoca (Revocation certificate), da generare e tenere al sicuro per evitarne l'uso da parte di terzi, meglio su supporto esterno dato che non ha utilità per nessuna operazione ordinaria, ma serve per comunicare che la propria chiave privata è stata compromessa.
Si consulti per maggiori dettagli la documentazione sul sito ufficiale per le impostazioni base, e questa per quelle avanzate.
Esportazione delle chiavi
Se si utilizzano più PC per gestire le email criptate e/o firmate è necessario esportare la propria coppia di chiavi, compresa la chiave privata, dal PC in cui sono state generate per importarla nelle altre, in caso contrario questa sezione può essere saltata. Vanno esportate anche le chiavi pubbliche ottenute mediante scambio diretto.
Dalla finestra aperta da Enigmail -> Key Management
, si spunta Display All Keys by Default
, si seleziona la propria coppia di chiavi (è presente in grassetto, ma una volta sola) e tutte le chiavi pubbliche che si intendono esportare, e si clicca su File -> Export Keys to File
avendo cura di scegliere Export Secret Keys per esportare anche la propria chiave privata.
Dopo aver copiato i file esportati su ciascuna macchina di destinazione, basta importarli da Enigmail -> Key Management
e poi File -> Import Keys from File
.
È necessario impostare il livello di fiducia su tutte le chiavi non firmate da una fonte firmata. Si veda la sezione dedicata.
Gestione delle chiavi pubbliche
Ora tutto è pronto, ci manca soltanto la chiave pubblica di ogni contatto a cui desideriamo inviare mail criptate. A sua volta tale contatto necessiterà di conoscere la nostra chiave pubblica per poterci rispondere in modo criptato. Sono possibili diversi metodi, con diversi pregi e difetti a seconda dell'ampiezza della propria rete di contatti che ricorre a email criptate e/o autenticate con firma digitale.
Si noti che per firmare una mail non è necessaria nessuna delle due cose. Conoscere la nostra chiave pubblica serve al destinatario unicamente per poter verificare l'autenticità della nostra firma digitale, ma può essere data anche in un secondo momento. È quindi possibile inviare email firmate anche a contatti che non utilizzano OpenPGP, purché non siano criptate.
Se si è preoccupati soltanto della propria privacy e non si hanno dubbi sull'autenticità dei mittente delle email scambiate, è sufficiente invece l'uso di email solo cifrate senza firma digitale.
Scambio diretto
Il più immediato è sicuramente lo scambio diretto della chiave pubblica. Si può fare in qualunque modo, compreso via email se non si è paranoici riguardo l'attacco man in the middle, ma con una web mail che utilizzi il protocollo HTTPS sarebbe (teoricamente... ) possibile soltanto dal fornitore del servizio.
Scambio dei file
Il metodo più generale basta esportare la propria chiave pubblica da Enigmail -> Key Management
, mettendo la spunta su Display All Keys by Default
. Poi cliccare con il tasto destro del mouse e scegliere Export Keys to file
, cliccando infine su Export Public Keys only per esportare la sola chiave pubblica.
Inviare in qualche modo sicuro la chiave al destinatario, il quale da Enigmail -> Key Management
la importerà dal menù File -> Import Keys from File
.
Una volta importata e spuntato Display All Keys by Default
, firmare la chiave localmente con Sign key. Si veda la parte sul livello di fiducia per maggiori dettagli.
Scambio via email
Dal menù Enigmail della finestra di composizione di un nuovo messaggio oppure dal menù Enigmail -> Key Management -> File
, scegliere l'opzione di inviare per email la propria chiave pubblica. Chiaramente, salvo si possieda la chiave pubblica del destinatario, il messaggio deve essere inviato non cifrato.
Una volta ricevuto un messaggio contenente in allegato una chiave pubblica, è sufficiente aprirlo, espandere la lista degli allegati e cliccare con il tasto destro sull'allegato, un file di testo ASCII armored con nome esadecimale ed estensione asc, scegilendo Import OpenPGP Key. Se era stato firmato, non possedendo ancora la chiave pubblica, l'autenticità della firma sarà giudicata non verificata (Unverified signature). Dopo aver importato la chiave la firma sarà invece considerata buona, nel senso che è stata effettuata con la chiave privata associata alla chiave pubblica importata, ma comunque giudicata non fidata (Untrusted signature) finché non si sarà impostato il suo livello di fiducia.
Da Details, in alto a destra nel tab del messaggio ricevuto, dopo l'importazione cliccare su Sign Sender's Key. Si veda la parte successiva.
Livello di fiducia
Si imposta il livello di confidenza riguardo l'autenticità della chiave pubblica e la sua corrispondenza con un dato contatto.
Firmando una chiave pubblica (Sign Key...) si garantisce della sua autenticità, impostando il tipo di controllo effettuato per garantirne l'autenticità. Di default la firma è solo locale, ossia non può essere esportata. È tuttavia possibile esportare la chiave pubblica altrui, e in tal caso la propria firma ricopre il ruolo di garante della sua autenticità. In tal caso è comunque buona prassi di etiquette contattare prima il possessore della chiave pubblica.
Se invece si imposta il livello di fiducia su una chiave pubblica non firmata (Set Owner Trust...), si determina la fiducia concessa al proprietario della corrispondente chiave privata riguardo le chiavi pubbliche di cui garantisce, perché da lui firmate.
Se si è in dubbio è in genere preferibile firmare la chiave pubblica localmente, con Sign Key... e spunta su Local signature (cannot be exported), ed evitare di cliccare su Set Owner Trust....
Keyserver
Per semplificare la fase di diffusione della propria chiave pubblica, è possibile effettuare l'upload su un keyserver, che sarà interrogato da chi intende comunicare con noi per recuperare la nostra chiave.
Uno svantaggio di tale approccio è la diffusione del proprio indirizzo email, il che può portare a un incremento dello spam, se non si possiedono filtri o policy adeguate; e anche che ci si deve in un certo senso fidare del gestore del keyserver. Il vantaggio di tale approccio consiste nell'enorme semplificazione della procedura di scambio.
Upload
Enigmail si occupa in automatico di tutto e possiede già una lista dei keyserver più diffusi. La lista può essere modificata in Enigmail -> Preferences
, scegliendo di mostrare le impostazioni avanzate e accedendo alla tab keyserver.
Per l'upload cliccare in Enigmail -> Key Management
con il tasto destro del mouse sulla chiave, poi scegliere Upload Public Keys to Keyserver e il keyserver a cui inviare la chiave.
Ricerca
Se si vuole verificare la firma digitale di una mail autenticata oppure si vuole inviare una mail criptata a un destinatario di cui non si ha la chiave pubblica, è necessario ricercarla su un keyserver, purché chiaramente ne sia stato effettuato l'upload.
Quando si riceve una mail basta aprirla e cliccare Details seguito da Import Public Key. Se si utilizza un keyserver in genere chi invia email si occupa di segnalare l'URL del keyserver da cui recuperare la chiave pubblica (l'opzione si trova in Edit -> Account Settings -> OpenPGP Security -> Advanced
).
Per inviare una mail criptata, dopo aver spuntato Enigmail -> Encrypt Message
, se non si possiede la chiave pubblica del destinatario verrà chiesto quale utilizzare (usarne una diversa renderà il messaggio illeggibile per il destinatario, salvo uno stesso contatto utilizzi più account o comunque abbia accesso alle relative chiavi private). Cliccare invece su Download Missing Keys per scaricarla da un keyserver.
Utilizzo
Dopo che due contatti sono entrati in possesso della chiave pubblica dell'altro, possono iniziare a comunicare in modo cifrato e a verificare l'autenticità delle firme digitali.
Si può scegliere se criptare un'email a ogni invio, utilizzando il menù Enigmail presente nella finestra di composizione di un nuovo messaggio. La scelta di default è presenta in Edit -> Account Settings -> OpenPGP Security (di un dato account)
.
In alternativa da Enigmail -> Edit Per-Recipient Rules
si possono inserire regole personalizzate per ciascun destinatario.
Come verifica effettuare un test inviando una mail criptata a un contatto di cui si possiede la chiave pubblica, dopo aver controllato nel menù Enigmail di composizione del messaggio che sia spuntata l'opzione relativa alla crittografia. Il messaggio sarà leggibile dal proprio client di posta, mentre accedendo alla propria webmail questo risulterà del tutto illeggibile. Lo stesso avverrà a destinazione.
Se l'email è stata firmata il destinatario sarà informato anche sulla sua autenticità. Ovvero non solo che è stato inviato da un contatto che conosce la sua chiave pubblica (e le credenziali per accedere alla casella email del mittente), ma che possiede la chiave privata (segreta) associata al mittente (verificabile da chiunque conosca la corrispondente chiave pubblica).
Disinstallazione
Se si desidera disinstallare il programma, è bene ricordare che tutte le mail criptate non saranno più leggibili se non si dispone di altro software compatibile con OpenPGP. C'è quindi il problema anche di comunicare ai propri contatti di non utilizzare più la propria chiave pubblica, se necessario anche sfruttando il certificato di revoca precedentemente creato, oltre che rimuovendo la propria chiave dai keyserver in cui è stato effettuato l'upload.
Inoltre Enigmail per motivi di sicurezza non salva i messaggi in forma decriptata, li decifra solo per visualizzarli utilizzando la propria chiave privata. Ricordato questo, per disinstallare tutto basta procedere con la rimozione dei pacchetti precedentemente installati o anche della sola estensione.
Fonti
I collegamenti ai software utilizzati ne facilitano il recupero su altre piattaforme. Per Windows in particolare GnuPG è distribuito in forma binaria all'interno della suite di programmi Gpg4win, che include anche altre cose e di cui è sufficiente la versione Light. E non è necessario che le versioni in uso siano equivalenti per poter comunicare.
Gli approfondimenti a quanto esposto servono invece per chiarire gli aspetti teorici legati a OpenPGP e gli usi più avanzati di Enigmail.
Software utilizzati
Approfondimenti
- Crittografia asimmetrica
- Chiavi simmetriche e chiavi pubbliche
- Web of trust
- PGP (Pretty Good Privacy)
- GnuPG (GNU Privacy Guard)
- Handbook di Enigmail
Guida scritta da: HAL 9000 16:32, 14 set 2019 (CEST) | Debianized 20% |
Estesa da: | |
Verificata da: | |
Verificare ed estendere la guida | Cos'è una guida Debianized |