Le e-mail (o posta elettronica) sono da sempre considerate come una "evoluzione" della classica corrispondenza, quella fatta di lettere e buste di tangibile carta. Ma questa idea, mediata dalla associazione di riferimenti terminologici e grafici, anche se non completamente falsa, non tiene conto di una grossa e sostanziale differenza: la riservatezza.

Aggiornamento: aggiunta Verifica della chiave, correzioni varie

Infatti anche se la libertà e la segretezza della corrispondenza e di ogni altra forma di comunicazione è garantita per legge (Art.15 della Costituzione della Repubblica Italiana) spesso rinunciamo a questo nostro importante diritto scegliendo un fornitore di posta elettronica che, in cambio di un servizio gratuito (o presunto tale... ) si arroga il diritto di "leggere" e schedare il contenuto delle nostre mail inviate e ricevute (violando, quindi, anche la privacy del nostro interlocutore).

Un'altro problema (che fortunamente appartiene al passato!) è che le nostre mail viaggiavano su connessioni non cifrate dal nostro computer fino al server di destinazione, rendendole di fatto potenzialmente intercettabili da chiunque.

Purtroppo, però, resta ancora attuale il problema del trasporto in chiaro delle e-mail, dal MTA del mittente a quello del destinatario. Esistono (e sono sempre più frequentemente adottate) estensioni come STARTTLS che offrono il supporto alla crittografia opportunistica: si tratta senza dubbio di migliorie rispetto agli scambi in chiaro ma non di una "soluzione" (per definizione: si ritorna alla comunicazione in chiaro se non supportata da tutti i MTA coinvolti nel trasferimento oppure in caso di attacchi MITM inoltre, solitamente, mittente e destinatario non sono informati in merito all'effettiva trasmissione dell'e-mail in chiaro).

Inoltre, cosa succederebbe se qualcuno riuscisse a violare il nostro account di posta? Potrebbe anche lui leggere tutta la nostra corrispondenza!! Per porre rimedio a questi problemi e mettere al riparo la nostra posta da tutti gli spioni possiamo avvalerci di PGP.

Scrivere email riservate tutta sicurezza: guida crittografia PGP

PGP, acronimo che sta per Pretty Good Privacy (una Privacy Abbastanza Buona) è il nome di un programma di crittografia per le e-mail (ma non solo) originariamente inventato da Phil Zimmermann nel 1991 e che, data la sua alta affidabilità, è diventato nel 1997 uno standard chiamato OpenPGP. Tutti i programmi che rispettano tale standard (come, ad esempio, GnuPG) sono quindi perfettamente compatibili tra loro.

Come funziona?

Senza entrare troppo in particolari tecnici cerchiamo di capire come funziona questa tecnologia. Fondamentalmente essa si basa su un complesso calcolo matematico che, se siamo a conoscenza di un particolare dato (o se vogliamo, di uno dei termini dell'equazione), può essere risolto in pochi secondi da qualsiasi computer o anche dal nostro cellulare; ma se ci manca questo termine, per risolvere questo calcolo possono occorrere molti anni anche al più potente dei supercomputer esistenti. La forza di questa tecnologia sta proprio nel fatto che nonostante siamo a conoscenza dell'esatto funzionamento e basandosi questo su regole matematiche, non c'è modo di "barare": per risolvere questo complesso calcolo in maniera veloce si deve per forza conoscere un particolare termine dell'equazione altrimenti occorre necessariamente un sacco di tempo e un sacco di risorse. Questo è anche il motivo per cui si parla di "Pretty Good Privacy" (una privacy abbastanza buona) e non di una "privacy assoluta" perché fra 10 anni se qualcuno (che dispone di un supercomputer... ) vorrà leggere una mail che io ho mandato oggi criptata con PGP, potrà farlo; ma probabilmente quello che io ho scritto oggi sarà poco interessante fra 10 anni...

Scendiamo leggermente più nel dettaglio del funzionamento. PGP si basa su un sistema di crittografia asimmetrica che si compone di due chiavi, una pubblica e una privata, per ogni persona che partecipa alla comunicazione. Le chiavi sono complementari e sono necessarie entrambe per criptare e decriptare un messaggio. La sola chiave pubblica, che consente la criptazione del messaggio, non consente la decriptazione che può avvenire solo con la chiave privata. Il nome delle chiavi è piuttosto esplicativo ed è assolutamente importante che la chiave privata rimanga tale, solo noi dobbiamo poter accedere a questa chiave (perché è quel famoso termine dell'equazione che consente di risolvere il calcolo velocemente!!), non dobbiamo perderla (è quindi meglio averne una copia di sicurezza) e allo stesso modo è assolutamente importante che la chiave pubblica sia diffusa il più possibile (in questo modo si scongiura la possibilità che qualcuno possa spacciarsi per noi con una diversa chiave pubblica).

Se correttamente utilizzato PGP offre due garanzie: la riservatezza del contenuto della comunicazione e la certezza dell'identità della persona con la quale stiamo comunicando. Per capire ancora meglio il funzionamento, facciamo un semplice esempio pratico: i famosissimi Alice e Bob vogliono comunicare con mail criptate con PGP. Perché questo avvenga, entrambi devono avere le loro chiavi private e pubbliche, devono scambiarsi, tramite un canale sicuro (per esempio, incontrandosi di persona o tramite un'app di messaggistica privata e non intercettabile o tramite i key server pubblici avendo l'accortezza di verificare il fingerprint nei modi che vedremo più avanti), la loro chiave pubblica e a questo punto possono cominciare la comunicazione privata. Alice scrive un messaggio a Bob, cripta il messaggio con la chiave pubblica di Bob e "firma" questo messaggio con la propria chiave privata. Bob riceve il messaggio criptato da Alice, per prima cosa, con la chiave pubblica di Alice, controlla la "firma" in modo da essere sicuro che il messaggio provenga proprio da lei e poi con, la propria chiave privata decripta il messaggio così da poterlo leggere. Il sistema ha un ulteriore protezione: nel malaugurato caso che la nostra chiave privata venga rubata, è stato previsto che questa chiave sia "bloccata" con una passphrase in modo da rendere inutile la chiave privata da sola.

PGP in pratica: Thunderbird + enigmail + gpg

Vediamo adesso come creare il nostro "portachiavi" con le chiavi privata e pubblica. Configureremo un account di posta per utilizzare GnuPG (o più brevemente GPG) su un popolare programma che è disponibile per tutti i principali sistemi operativi (Linux, Windows e Mac OS): Thunderbird. La guida che segue è stata fatta utilizzando tutti e tre i sistemi operativi citati poiché i passaggi sono pressoché identici per tutti se non è diversamente indicato. Thunderbird non supporta nativamente GPG ma ha bisogno di due altri componenti: l'eseguibile gpg e il componente aggiuntivo Enigmail. Se avete già installato Thunderbird e avete già un account di posta configurato potete passare subito all'installazione di Enigmail, altrimenti andate avanti leggendo qui sotto.

Iniziamo ad installare Thunderbird, qui possiamo trovare la versione per il nostro sistema operativo:

  • per Linux possiamo installarlo con il gestore di pacchetti della nostra distribuzione (consiglio: se il nostro gestore di pacchetti supporta il controllo delle dipendenze, possiamo installare direttamente Enigmail così che, come dipendenze, verranno installati in un solo colpo anche Thunderbird e GPG!).

    Scrivere email riservate tutta sicurezza: guida crittografia PGP

  • per Windows, seguiamo tutta la procedura;

    Scrivere email riservate tutta sicurezza: guida crittografia PGP

  • per Mac OS stessa cosa;

    Scrivere email riservate tutta sicurezza: guida crittografia PGP

Configuriamo adesso il nostro account di posta su Thunderbird: all'apertura ci verrà chiesto se vogliamo creare un nuovo indirizzo di posta o se vogliamo utilizzare uno già esistente; io scelgo di configurarne uno già esistente; se volete creare un nuovo account, vi consiglio di sceglierlo fra questi. Inserisco adesso il mio nome, la mia mail e la mia password

Scrivere email riservate tutta sicurezza: guida crittografia PGP

controllo la configurazione automatica e se necessario apporto alcune modifiche e il mio account è già configurato

Scrivere email riservate tutta sicurezza: guida crittografia PGP

È la volta di Enigmail:

  • Linux è già apposto;
  • per Windows e Mac la procedura è la stessa: apriamo Thunderbird, andiamo sul menu (le tre lineette in alto a destra), scegliamo Componenti aggiuntivi, Esplora e nel campo di ricerca cerchiamo enigmail; clicchiamo su Installa, aspettiamo la fine dell'installazione e poi riavviamo Thunderbird.

    Scrivere email riservate tutta sicurezza: guida crittografia PGP

    Adesso se andiamo sempre in Componenti aggiuntivi, Estensioni e clicchiamo su Preferenze (o Opzioni) in prossimità di Enigmail dovrebbe apparirci un avviso che ci dice che Enigmail non riesce a trovare GnuPG

    Scrivere email riservate tutta sicurezza: guida crittografia PGP

    Clicchiamo su Procedura guidata di configurazione

    Scrivere email riservate tutta sicurezza: guida crittografia PGP

    Avvia subito la configurazione poi Avanti (o Continua)

    Scrivere email riservate tutta sicurezza: guida crittografia PGP

    Preferisco la configurazione standard

    Scrivere email riservate tutta sicurezza: guida crittografia PGP

    Installa e attendiamo la fine del download di GpgTools per Mac e di Gpg4Win per Windows; al termine del download su entrambi i sistemi partirà l'installazione guidata che necessita solo di qualche click per arrivare al termine.

    Scrivere email riservate tutta sicurezza: guida crittografia PGP

A questo punto la configurazione diventa uguale anche per Linux. Scelgo l'account di posta per il quale voglio creare la coppia di chiavi e scelgo una passphrase robusta (che contiene lettere maiuscole, lettere minuscole, numeri e caratteri speciali!!)

Scrivere email riservate tutta sicurezza: guida crittografia PGP

Attendiamo pazientemente la fine della creazione delle chiavi che richiede parecchi minuti

Scrivere email riservate tutta sicurezza: guida crittografia PGP

Al termine ci verrà chiesto di salvare anche il certificato di revoca. Questo certificato è molto importante, servirà per invalidare la nostra chiave in caso di compromissione (se venisse rubata meglio non affidarsi solo alla passphrase poiché quest'ultima potrebbe essere scoperta con una attacco brute force in poche ore) o semplicemente qualora volessimo aggiornare la nostra chiave. Tenete presente che solitamente per diffondere la chiave pubblica il più possibile, si carica su appositi "key server" dai quali, per una questione di sicurezza, non potrà più essere rimossa ma solo invalidata con questo certificato!! Scegliamo di salvarla in una cartella a portata di mano (la trasferiremo in un posto più sicuro in un secondo momento) e andiamo avanti per completare il processo

Scrivere email riservate tutta sicurezza: guida crittografia PGP

Andiamo adesso a vedere le nostre chiavi: da Thunderbird, Menu, Enigmail e Gestione chiavi: qui vedremo la coppia di chiavi appena creata e se clicchiamo con il tasto destro del mouse avremo due importanti operazioni da fare; una di queste è Esporta chiavi in un file

Scrivere email riservate tutta sicurezza: guida crittografia PGP

Selezioniamo poi Esporta chiavi segrete e salviamole insieme al certificato di revoca precedentemente salvato.

Scrivere email riservate tutta sicurezza: guida crittografia PGP

Il mio consiglio a questo punto è di masterizzare un CD (anche se sono solo pochi byte... ) con entrambi questi file e conservarlo in un luogo sicuro. Dopodiché sarà buona regola cancellare questi file ma per il momento teniamo disponibile la nostra chiave privata, potrebbe tornarci utile per configurare GPG sul nostro smartphone...

L'altra operazione da fare con la nostra chiave è condividere la chiave pubblica caricandola su un key server selezionando l'opzione Invia chiavi pubbliche al server

Scrivere email riservate tutta sicurezza: guida crittografia PGP

E scegliendo poi uno di questi server:

  • keys.gnupg.net
  • hkp://subkeys.pgp.net
  • http://pgp.mit.edu
  • hkp://pool.sks-keyservers.net

Scrivere email riservate tutta sicurezza: guida crittografia PGP

Bene siamo quasi pronti per mandare una mail criptata, manca solo la chiave pubblica del destinatario. Per ottenerla, si possono visitare con un browser uno dei key server sopra scritti e fare una ricerca per parola chiave (meglio utilizzare l'indirizzo email, se lo conosciamo). Altrimenti potremo far recuperare la chiave pubblica ad Enigmail (vedremo poi come fare... ).

Inviare una mail.

Scriviamo un nuovo messaggio; nella finestra che ci apparirà noteremo subito una scritta rossa che ci dice Questo messaggio non sarà né firmato, né cifrato. Se clicchiamo su questa scritta apparirà una finestra dove potremo selezionare Cifra messaggio e Firma messaggio

Scrivere email riservate tutta sicurezza: guida crittografia PGP

Noteremo anche che è possibile scegliere tra Usa PGP in linea e Usa PGP/MIME: cosa sono e quale scegliere?

Sono due diversi sistemi di criptazione delle mail, la più moderna è "MIME" e consente di creare un pacchetto dati contenente tutta la mail (corpo del messaggio, oggetto della mail ed eventuali allegati) completamente criptato ed è quindi il sistema più sicuro da utilizzare MA purtroppo ci sono ancora molti client di posta che non gestiscono bene questo sistema. Per questo motivo è meglio, per il momento, utilizzare sempre il vecchio ma affidabile sistema "in linea" che ha il limite di criptare solo il testo del messaggio e niente altro; potremo comunque garantirci un certo livello di riservatezza utilizzando un Oggetto della mail quanto più generico possibile e inserendo allegati precedentemente criptati o semplicemente "zippati" con una buona password. Enigmail comunque riconosce la presenza degli allegati e, se è stato scelto il metodo "in linea", prima di inviare la mail, chiede se vogliamo criptare anche l'allegato. Dobbiamo tenere presente che nessuno dei due metodi è in grado di proteggerci dalla raccolta dei metadati: sarà sempre possibile vedere chi si scambia mail, quando e da dove. Per evitare questo problema o almeno per limitarlo, dovremo necessariamente affidarci agli anonymous remailer.

Una volta compiuta questa operazione noteremo che la scritta rossa è cambiata e che l'icona del lucchetto (che indica la cifratura) e della matita (che indica la firma) sono colorate. A questo punto possiamo completare la mail (allegando se vogliamo anche la nostra chiave pubblica) e quando saremo pronti cliccare su Invia. Se non abbiamo ancora la chiave pubblica del destinatario, abbiamo la possibilità di farla cercare da Enigmail con il tasto Scarica le chiavi mancanti. Selezioniamo un server e poi OK, attendiamo la breve ricerca, verifichiamo che sia la chiave giusta, selezioniamola e confermiamo per importarla nel nostro portachiavi. D'ora in poi questa chiave sarà subito disponibile sul nostro sistema.

Scrivere email riservate tutta sicurezza: guida crittografia PGP

A questo punto dovremo scegliere se vogliamo utilizzare anche la nostra chiave pubblica per cifrare il messaggio. Questo è importante se vogliamo rileggere la mail inviata in un secondo momento!!!

Scrivere email riservate tutta sicurezza: guida crittografia PGP

Verifica della chiave

La verifica della chiave è un passaggio molto importante per essere sicuri che il destinatario a cui vogliamo scrivere sia effettivamente quello con cui vogliamo avere una corrispondenza. Se i due interlocutori si sono scambiati la chiave pubblica personalmente, non ci sono problemi ma altrimenti la verifica della chiave diventa un passaggio fondamentale. Per verificare la chiave solitamente si comparano più fonti (i key server, il blog di un contatto, la chiave passata da un amico, ... ), si controlla la corrispondenza dei dati associati alla chiave stessa (nome, email, foto se presente e ogni altro dato) e generalmente si verificano (per esempio, mettendosi in contatto telefonico diretto con il proprietario della chiave) gli ultimi 8 (o 16) valori del fingerprint (che altro non è che un hash della chiave stessa), quello che Enigmail indica come ID chiave. Ma controllare il solo ID chiave è però sconsigliato in quanto è possibile generare artificiosamente delle chiavi pubbliche con differenti fingerprint ma che hanno un ID chiave uguale. Meglio quindi perdere un po' più di tempo verificando l'intero fingerprint della chiave. Un'altro metodo per la verifica delle chiavi è quello del web-of-trust (da non confondere con WOT).

Ricevere una mail criptata

Quando riceviamo una mail criptata, se tentiamo di aprirla vedremo che sarà illeggibile (questa sarà la sola cosa che il nostro foritore di posta o qualunque altro curioso riuscirà a leggere!!) e ci verrà automaticamente richiesta la nostra passphrase per decriptarla

Scrivere email riservate tutta sicurezza: guida crittografia PGP

una volta inserita la passphrase, si "sbloccherà" la nostra chiave privata che Enigmail utilizzerà per decriptare il messaggio così che la mail sarà ora leggibile

Scrivere email riservate tutta sicurezza: guida crittografia PGP

GPG su smartphone

Sarebbe bello avere uno strumento così potente anche sul proprio cellulare e fortunatamente è possibile! Su Android è necessario installare un particolare programma di posta e lasciar perdere quelli che ci sono di default più un'altra applicazione che gestisce le chiavi e contiene gpg. Il programma di posta è K9-Mail e il gestore di chiavi è OpenKeyChain; entrambe queste app si trovano anche su www.f-droid.org.

Una volta installati entrambi i programmi apriamo K9-Mail e configuriamo come al solito il nostro account di posta

Scrivere email riservate tutta sicurezza: guida crittografia PGP

Dopo andiamo sul menu (i tre puntini), selezioniamo Impostazioni, Impostazioni account

Scrivere email riservate tutta sicurezza: guida crittografia PGP

Andiamo adesso su Crittografia e poi su Fornitore OpenPGP dove selezioneremo, ovviamente, OpenKeyChain.

Scrivere email riservate tutta sicurezza: guida crittografia PGP

Adesso dovremo salvare sul nostro telefono la nostra chiave privata che abbiamo esportato in precedenza da Enigmail. Una volta fatto questo, possiamo aprire il file manager di Android e tappare sulla chiave; dovrebbe aprirsi un menu Apri con dove avremo la possibilità di selezionare l'opzione Importa Chiave (se questo metodo non funzionasse, è possible importare la chiave direttamente da OpenKeyChain con l'opzione Import from file)

Scrivere email riservate tutta sicurezza: guida crittografia PGP

Si aprirà così OpenKeyChain che ci mostrerà la nostra chiave pubblica e privata, selezioniamole entrambe e clicchiamo su Importa chiavi selezionate

Scrivere email riservate tutta sicurezza: guida crittografia PGP

Al termine dell'importazione la nostra chiave sarà visibile nella schermata principale di OpenKeyChain. Notate la piccola lente di ingrandimento posta in alto a destra: è l'icona caratteristica della ricerca e in questo caso serve, sia per cercare le chiavi localmente salvate sia per cercarle su un key server!

Scrivere email riservate tutta sicurezza: guida crittografia PGP

Quando riceveremo una mail criptata, ci verrà richiesta la nostra passphrase, proprio come su Thunderbird!

Scrivere email riservate tutta sicurezza: guida crittografia PGP

e dopo qualche secondo, il messaggio sarà leggibile e la firma verificata

Scrivere email riservate tutta sicurezza: guida crittografia PGP

Per spedire una mail criptata, sarà sufficiente selezionare un contatto di cui già possediamo la chiave pubblica e selezionare Cifra e Firma prima di inviarla

Scrivere email riservate tutta sicurezza: guida crittografia PGP

Esistono applicazioni compatibili con lo standard OpenPGP anche per WindowsPhone (questa , per esempio) e iPhone/iPad (ce ne sono molte, ma io vi consiglio questa), ma purtroppo non posso guidarvi nella configurazione di queste applicazioni.

Se volete altri dettagli su PGP, potete dare un'occhiata al sito di "Autodifesa Email" di FSF, dove c'è la possibilità di eseguire un test per l'utilizzo di PGP (vedi step 3). In alternativa potete utilizzare la mia mail per fare una prova (ma non approfittatevene!!); a questo punto dovreste sapere come e dove trovare la mia chiave pubblica (il cui fingerprint è 1A30DEB6F95CC13C9340A06A5FE941362AD14273) .

Questo articolo non è certo una trattazione completa dell'argomento ma si può considerare come la "soglia di ingresso" verso un mondo molto più vasto di quanto possa sembrare da queste poche righe, poiché non sono state prese in considerazione molte cose importanti come le sotto-chiavi, la data di scadenza della chiave privata (e la sua importanza!) mentre altre ugualmente importanti necessiterebbero di un accurato approfondimento come gli anonymous remailer e il web-of-trust.