Nel precedente articolo su Bitcoin e crittografia abbiamo introdotto la "crittografia asimmetrica" o a "chiave pubblica" e abbiamo visto come questa sia stata utilizzata da Bitcoin per fini diversi da quelli tradizionalmente assegnati alla crittografia: non più per cifrare comunicazioni ma per creare un sistema monetario alternativo e decentralizzato. Su questo, vedi anche Come funziona Bitcoin.
In questo articolo torniamo all'uso "classico" della crittografia, anche in questo caso quella "asimmetrica" o a "chiave pubblica", e vediamo come firmare, cifrare e decifrare le nostre email grazie al sistema della coppia di chiavi che caratterizza tale tipo di crittografia.
Aggiornamento:
Questa guida è applicabile alle versioni di Thunderbird fino alla 68.
In seguito al rilascio di Thunderbird 78, Enigmail non è più necessario né installabile: questo perché ora Thunderbird consente di cifrare, decifrare e firmare le email senza dover ricorrere a componenti esterni come Enigmail.
Se non l'hai ancora fatto, ti consigliamo di aggiornare Thunderbird: la versione 68 non rilascia più aggiornamenti di sicurezza da Settembre 2020.
Questa guida rimane comunque utile perché introduce concetti e passaggi propri alla crittografia a chiave pubblica che troverai nella guida aggiornata.
Vai alla guida aggiornata: Crittografia e firma digitale con Thunderbird
Crittografia e privacy
L'utilizzo della crittografia consente di aumentare drasticamente la privacy delle proprie comunicazioni. Ci si chiederà: perché dovrei interessarmene?
Le ragioni che richiedono misure volte a realizzare uno standard più elevato di privacy possono essere varie e dipendere da circostanze ed esigenze particolari. Tra queste, vi sono senz'altro quelle dei professionisti tenuti a particolari doveri di riservatezza, per i quali l'adozione di misure "rafforzate" a tutela della privacy e dunque segretezza delle comunicazioni può essere vista come un preciso dovere professionale; questo, soprattutto nell'epoca attuale caratterizzata dalla crescente rilevanza di tutto quanto attiene alla sicurezza informatica.
Per gli avvocati in particolare, il dovere di riservatezza rientra tra quelli previsti dalla deontologia. Non sarà privo di senso proporre e consigliare, agli avvocati in particolare, l'adozione della crittografia a chiave pubblica, e in particolare lo standard OpenPgp come implementato da GPG, per la firma e cifratura dei messaggi di posta elettronica.
La guida affronta tutti i passaggi necessari ed è, nelle intenzioni, accessibile anche a chi risulti sprovvisto di particolare competenze in materia.
Indice
Si parte: di cosa abbiamo bisogno
- Thunderbird: il noto client di posta elettronica. Potete scaricare la versione adatta al vostro sistema operativo dal sito di Thunderbird.
- Enigmail: si tratta di una estensione di Thunderbird che si occupa di gestire la cifratura e la firma delle email che inviamo con Thunderbird. In questa guida ci occuperemo della configurazione di Enigmail. Sul sito di Enigmail sono disponibili ulteriori risorse come forum e documentazione ufficiale.
- GPG: si tratta di un software che consente di cifrare, decifrare e firmare dati. Utilizza il sistema della crittografia a chiave pubblica o asimmetrica e della
coppia di chiavi di cui abbiamo parlato nel precedente articolo su Bitcoin e crittografia .
- Gli utenti di Windows possono scaricare ed installare GPG4Win;
- chi usa Mac può invece scaricare GPG Suite dal sito di GPGTools; fate attenzione però: avete bisogno solo di GpgSuite, scaricabile gratuitamente, e non degli altri prodotti offerti pagamento.
- Gli utenti di Linux con tutta probabilità troveranno GPG già installato.
In questa guida consideriamo il caso in cui si sia già provveduto a :
- Installare Thunderbird e configurarlo con un indirizzo di posta elettronica
- scaricare la versione di GPG adatta al proprio sistema operativo prima di iniziare la configurazione di Enigmail; in caso contrario, durante la configurazione sarà Enigmail a proporre l'installazione di GPG.
Vediamo di seguito come installare e configurare Enigmail su Thunderbird.
Installazione di Enigmail
Come detto, Enigmail è l'estensione di Thunderbird che consente di utilizzare le funzionalità di Gpg; va scaricata direttamente tramite Thunderbird.
Dal menu in alto su Thunderbird cliccare su "Strumenti", poi "Componenti aggiuntivi". Cercare Enigmail tra le estensioni; una volta trovato, basterà cliccare su "Aggiungi a Thunderbird".
Nota: con Thunderbird potreste avere impostato un layout che non prevede la barra del menu, nel qual caso potete aprire il menu dai 3 trattini a destra.
Configurare Enigmail
Dopo aver installato Enigmail, al riavvio di Thunderbird, dovrebbe partire automaticamente la procedura guidata di configurazione. Qualora non dovesse succedere, è possibile avviare la procedura guidata dal menu in alto, cliccando su Enigmail e poi "Procedura guidata di configurazione". Come abbiamo detto, potreste avere un layout che non prevede la barra del menu, nel qual caso potete aprire il menu dai 3 trattini a destra, scegliendo di visualizzare la barra dei menu oppure accedere subito ad Enigmail.
Per cominciare, possiamo scegliere una configurazione semplificata di Enigmail; potremo applicare modifiche e personalizzazioni in seguito.
Creazione delle chiavi
Come prima cosa, serve la coppia di chiavi (pubblica e privata) . Qualora ne avessimo già una salvata nel nostro computer, Enigmail se ne accorgerebbe e ci chiederebbe se vogliamo usarla. In caso contrario, ci verrà proposto di creare nuove chiavi.
- Seleziona account email la coppia di chiavi va associata all'account email che se ne servirà. Nel nostro esempio abbiamo un solo indirizzo email impostato su Thunderbird ed è l'unico che Enigmail ci propone.
- Passphrase. la password, o meglio, passphrase, ci darà il controllo delle chiavi e ci verrà chiesta ogni qualvolta dovremo servirci delle chiavi per cifrare, decifrare o firmare. Come vedremo, è il mittente che utilizza liberamente la nostra chiave pubblica per inviarci un messaggio cifrato: spetta a noi decifrare il messaggio attraverso la nostra chiave privata e, in assenza della passphrase, non c'è modo di decifrare quanto cifrato con la nostra chiave pubblica. È dunque fondamentale creare una buona password e non perderla. Fate attenzione.
Creazione del certificato di revoca.
Una volta creata la coppia di chiavi, è necessario creare un certificato di revoca; a tal fine, ci verrà chiesto di inserire la passphrase appena creata.
Cos'è un certificato di revoca? Nel malaugurato caso in cui si sia smarrita o compromessa la chiave privata, o si sia persa la passphrase che la sblocca, il certificato di revoca ci darà la possibilità di invalidare la coppia di chiavi su cui non si ha più controllo. Potrebbe infatti darsi che qualcun'altro si serva delle chiavi per firmare e decifrare comunicazioni dirette al titolare delle chiavi smarrite.
Il certificato di revoca ha l'autorità per "rinnegare" la paternità sulla coppia di chiavi: essendo creato contestualmente alle chiavi, ed essendo a queste legato da una relazione matematica definita dall'algoritmo, solo il titolare delle chiavi può disporre del corrispondente certificato (a meno di non aver perso anche quello) ed avere dunque l'autorità per dichiarare non più valide le sue chiavi.
Va da sé che il certificato di revoca va' conservato separatamente dalla chiave privata, così da non perdere il controllo su entrambe in caso di furto o smarrimento del dispositivo su cui sono memorizzate.
Ad ogni modo, il certificato non impedisce la funzionalità tecnica della coppia di chiavi: si tratta di una misura volta a limitare i danni per il futuro, impedendo che altri facciano affidamento su delle chiavi che, non essendo più nelle nostre disponibilità, non possono essere più collegate alla nostra identità.
Con la creazione di chiavi e certificato di revoca, la configurazione è completa.
Come usare Enigmail e Gpg
Con Thunderbird ed Enigmail così configurati, possiamo:
- Firma digitale
- Firmare una email
- verificare una email inviataci firmata
- Cifratura
- inviare una mail cifrata
- decifrare una mail
Come abbiamo visto, il vantaggio della crittografia a chiave pubblica sta nel fatto che per instaurare un canale di comunicazione "sicuro" con qualcuno, non serve altro che scambiarsi le rispettive chiavi pubbliche.
Le funzionalità sopra elencate presuppongono lo scambio e l'importazione delle chiavi pubbliche.
Esportazione delle chiavi.
Possiamo voler esportare le chiavi per :
- backup: consigliato!
- comunicare la nostra chiave pubblica (e solo questa) ad un nostro amico con cui vogliamo comunicare in maniera sicura.
Per esportare le chiavi, andiamo su "Enigmail", poi "Gestione delle chiavi": tasto destro sull'indirizzo associato alle chiavi da esportare.
...e ci viene posta una buona domanda:
Nel caso stiamo esportando le chiavi per farne un backup, e dunque conservarle entrambe e non comunicarle a nessuno, possiamo esportare anche la
chiave privata; ove invece volessimo solo salvare la chiave pubblica per comunicarla a qualcuno, ad esempio tramite una pennetta usb, cliccheremo su
"Esporta solo le chiavi pubbliche". In entrambi i casi, scaricheremo un file con estensione .asc
La chiave pubblica può essere anche spedita via mail, come allegato
Importazione delle chiavi
Per inviare una email cifrata, dobbiamo preventivamente importare la chiave pubblica del destinatario, accedendo sempre a "Gestione delle chiavi" come sopra, per poi andare su File e "Importa chiavi da un file". Ci verrà chiesto di selezionare la o le chiavi dalla memoria del nostro computer. Le chiavi importate saranno poi elencate nella finestra "Gestione chiavi Enigmail".
Condivisione della chiave pubblica
Come abbiamo visto, la chiave pubblica va fornita a chiunque voglia utilizzarla per inviarci un messaggio cifrato. Tra i vari modi per distribuire la nostra chiave (inviarla in allegato via mail, consegnarla tramite un pennetta usb etc...) c'è il caricamento su un keyserver.
Condivisione chiavi su keyserver
Possiamo pensare ad un keyserver come ad un elenco telefonico dove sono salvate le chiavi pubbliche e relativi indirizzi email. Così come con gli elenchi telefonici però, è possibile che si finisca nel mirino di spammer a caccia di indirizzi email: si tratta di una ragione spesso addotta contro l'utilizzo dei keyserver. Personalmente, non so quanto frequentati siano i keyserver da parte degli spammer. Non è che manchino altre fonti più accessibili per fare incetta di indirizzi da spammare.
Ad ogni modo, qualora ci si volesse servire di un keyserver, è probabile che ce ne sia uno già impostato in automatico; è possibile sostituirlo o aggiungerne un altro così:
Passiamo all'azione: utilizzi pratici di Enigmail
Firma di una email
Supponiamo di non avere la chiave pubblica del destinatario: non possiamo cifrare una mail da inviargli, ma potremmo comunque inviare una mail firmata, allegando la nostra chiave pubblica. In tal modo, il destinatario potrà scaricare ed importare la nostra chiave pubblica e verificare la firma.
Il mittente scrive la mail, selezionando "Allega la mia Chiave pubblica":
Il mittente può scegliere se rendere automatica la cifratura e la firma, cliccando "Cifra messaggio" e "Firma messaggio" (immagine precedente, le prime due opzioni dal menu a tendina); oppure, può scegliere ad ogni invio se cifrare e firmare o meno. In tale ultimo caso, per firmare la mail bisognerà cliccare l'icona evidenziata in rosso:
che così viene spuntata in verde:
Il destinatario riceve la mail, che non può verificare perché ancora sprovvisto della chiave pubblica del mittente:
Il destinatario, scegliendo di accettare l'allegato, ed importare la chiave pubblica del mittente, verifica la firma.
Per quanto la firma risulti verificata, viene contrassegnata come "senza fiducia": questo accade perché la chiave è stata appena importata e non è stata ancora firmata dal destinatario. Vedremo questo in seguito.
Cifra email
Come ormai sappiamo, per inviare un messaggio cifrato dobbiamo avere preventivamente importato la chiave pubblica del destinatario.
Per cifrare l'email che stiamo per inviare bisogna spuntare l'icona con il lucchetto; possiamo spuntare anche l'icona della firma e la mail verrà anche firmata.
Il destinatario dovrà decifrare la email ricevuta attraverso la propria chiave privata, "sorella" di quella tramite cui l'email è stata cifrata dal mittente. Al destinatario verrà dunque chiesto di inserire la passphrase per decifrare e visualizzare l' email ricevuta:
La firma delle chiavi e il "web of trust"
Rimane a questo punto da affrontare un aspetto fondamentale. Il sistema che abbiamo fin qui illustrato non esclude il furto di identità: potrei sempre creare una coppia di chiavi e far circolare quella pubblica (associata ad un indirizzo email fittizio) facendo credere che questa appartenga a qualcuno che io non sono, di fatto intercettando e decifrando i messaggi a lui inviati. Mi occorrebbe un indirizzo di posta elettronica con il nome e il cognome di qualcuno, creare una coppia di chiavi associandola a tale indirizzo e il gioco è fatto. Chiunque potrebbe comunicare in maniera segreta...ma con la persona sbagliata!
Come faccio allora a sapere che la chiave pubblica appartiene veramente a "Tizio"? Si osservi che con GPG non vi sono autorità che identificano un soggetto e certificano la legittima appartenenza delle chiavi. Il sistema è decentralizzato e spetta agli utenti verificare la titolarità delle chiavi.
Come fare?
Verificare la chiave
DOMANDA: ricevo una chiave via email da un amico, o qualcuno che si presenta come tale: come verifico che si tratti proprio di chi dice di essere? RISPOSTA: gli telefono e gli chiedo di leggermi l'impronta digitale (fingerprint) della sua chiave. Ove l'impronta coincida con quella della chiave che ho ricevuto, posso star sicuro che la chiave gli appartiene e la sua titolarità è confermata.
Vediamo come visualizzare l'impronta digitale della chiave:
Ancora meglio, nel caso si tratti di un estraneo che ha intenzione di comunicare con me in maniera riservata:
- verifico la sua identità chiedendo di mostrarmi un suo documento
- controllo l'impronta della sua chiave
- chiedo conferma dell'indirizzo email associato alla chiave che intende utilizzare per comunicare con me.
Tutto ciò è efficace, ma poco pratico.
Firmare le chiavi
Con OpenPGP, lo standard seguito da GPG, è previsto un sistema per generare affidamento sulla titolarità apparente delle chiavi anche in mancanza di una loro diretta verifica. Tale sistema si basa sulla firma delle chiavi.
Così come è possibile firmare email, documenti, files, è possibile firmare anche una chiave. Ogni chiave recherà la lista delle firme ad essa apposte.
La firma di una chiave non va presa alla leggera: essa esprime la nostra fiducia sulla effettiva titolarità della chiave a chi si presenta come titolare. Pertanto, un atteggiamento responsabile richiede che vengano firmate solo le chiavi che abbiamo verificato direttamente. In tal modo, anche chi non ha personalmente verificato una chiave, può vedere quante volte una chiave è stata firmata e di quanta "fiducia" (trust) gode.
Dalle firme apposte alle chiavi GPG fa' dipendere anche la validità delle chiavi: se utilizziamo una chiave pubblica per verificare una firma, questa farà il suo lavoro, ma ove non sia stata preventivamente da noi firmata, la firma verrà etichettata come "Senza fiducia". In pratica, abbiamo la chiave del mittente con cui verifichiamo la firma, ma questa non basta a darci alcuna indicazione circa il fatto se il mittente sia veramente chi dice di essere.
Vediamo dunque come firmare le chiavi.
La terza immagine in alto: ci viene chiesto di specificare il grado di affidamento che nutriamo nella appartenenza della chiave.
"Firma localmente"
Si noti anche "Firma localmente (non può essere esportata)". Sappiamo che le chiavi sono destinate a circolare, e con esse anche le firme a loro apposte e il loro "carico di fiducia".
Tuttavia, potrebbe darsi che chi firma non abbia intenzione di rendere pubblica la propria firma alla chiave ove questa venga successivamente condivisa.
In tal caso, il segno di spunta su "Firma localmente" rende la firma alla chiave rilevante solo a "scopi interni", ossia all'uso che ne facciamo tramite la nostra installazione di Thunderbird ed Enigmail.
Owner trust: la fiducia nel proprietario
Va da sé che la fiducia nelle chiavi firmate dipende anche dalla fiducia nei firmatari (e le chiavi a tal fine utilizzate) : se so che Tizio firma in maniera disinvolta senza verificare la effettiva appartenenza delle chiavi, avrò poca fiducia nelle chiavi firmate da Tizio.
Secondo lo standard OpenPgp la stessa affidabilità di un soggetto in quanto firmatario è oggetto di valutazione: posso fidarmi della sua cura nel verificare le chiavi che firma?
Vediamo come impostare la fiducia nel proprietario (owner trust):
Fiducia nel proprietario e validità delle chiavi
L'affidabilità di cui gode un firmatario (o meglio: delle chiavi che utilizza) si trasmette alle chiavi che firma arrivando a determinare la stessa validità delle stesse. Tuttavia, si tratta in questo caso di una valutazione che rileva solo per la nostra installazione di GPG e dunque Thunderbird/Enigmail: la valutazione circa l'attendibilità di una chiave in quanto firmataria di altre chiavi non circola insieme alla chiave.
La fiducia nelle chiavi in quanto firmatarie (di nuovo: "owner trust") si trasmette alle chiavi da esse firmate in assenza di una nostra firma: se firmiamo una chiave, questa è ritenuta valida. Il ragionamento è: firmi la chiave? Bene avrai fatto le tue valutazioni circa la attendibilità della stessa e questa è valida indipendentemente dalla fiducia che riponi nelle altre chiavi che l'hanno firmata prima di te.
In mancanza di una nostra firma, la fiducia nel firmatario decide circa la validità della firma. In questi casi, una firma è ritenuta valida se:
- è stata già firmata da qualcuno (e la sua chiave) per cui abbiamo impostato come livello di fiducia: "mi fido completamente". Vedi su.
- è stata firmata da almeno 3 chiavi per le quali abbiamo impostato come livello di fiducia: "mi fido marginalmente"
In ogni caso, la validità delle chiavi non può essere ricavata indirettamente per un numero indefinito di passaggi: si dovrà comunque risalire ad una chiave che ho firmato personalmente e la catena non può essere più lunga di 5 chiavi, inclusa la mia. Il che vuol dire: firmo una chiave e questa è valida: primo anello di una catena; la chiave che ho firmato firma a sua volta un'altra chiave, e, indipendentemente dalla fiducia in essa riposta (mi fido "marginalmente" o "completamente"), questo è un secondo passaggio; così via si prosegue fino ad un massimo di 5 chiavi complessive inclusa la mia. Detto altrimenti: firmo direttamente una chiave e solo le prossime 3 potranno essere valide senza che io le firmi direttamente.
Revoca chiavi
Come abbiamo visto all'inizio, nel generare la coppia di chiavi abbiamo creato anche un certificato di revoca, da utilizzare nel
caso in cui la chiave privata venisse smarrita o la passphrase compromessa, ad esempio. In tali casi dobbiamo invalidare le chiavi caricando il certificato
di revoca; la procedura è la stessa di quella che abbiamo visto per importare le chiavi. Anche il certificato di revoca è infatti un file con estensione
.asc
.
Nel caso non avessimo il certificato di revoca, potremmo revocare comunque la chiave a patto di ricordare la passphrase. Bisognerà selezionare la chiave dalla finestra "Gestione chiavi" e poi "cliccare su "Revoca chiave".
Creazione successiva del certificato di revoca
Qualora non si fosse proceduto con la creazione del certificato di revoca al momento di creare le chiavi, è possibile (oltre che consigliato) crearlo successivamente selezionando la chiave dalla finestra "Gestione chiavi" e poi "cliccare su "Crea e salva un certificato di revoca".
Conclusioni
Se avete letto fin qui, dovreste essere ora pronti a mettere in pratica quanto imparato; direi di provare.
Potete scaricare la mia chiave pubblica da qui. e scrivermi a
Vi invito a scaricare la mia chiave ed utilizzarla come mostrato nella guida per mandarmi un messaggio. Sarei contento di ricevere anche commenti e suggerimenti su come migliorare la guida, o chiarire quanto dovesse risultare poco chiaro.
Spero la guida sarà di vostra utilità, grazie per l'attenzione.
Vincenzo Lalli
Di formazione legale, appassionato da sempre di tecnologia ed informatica; esperienza professionale acquisita a cavallo tra i due mondi, finora piuttosto lontani tra loro. Mi dedico ad esplorare le crescenti interazioni tra il Diritto e la tecnologia, e a dare il mio contributo alla causa dell'innovazione nel settore legale; a tal fine, ho dato vita ad Avvocloud.net.