Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Email sicure per evitare intercettazioni sulla rete

Teoria e strumenti per evitare intercettazioni nella posta
Teoria e strumenti per evitare intercettazioni nella posta
Link copiato negli appunti

Argomenti scottanti come l'intercettazione telefonica o il monitoraggio del traffico internet sono di grande attualità. La possibilità che informazioni personali trasmesse a persone fidate possano essere carpite da sconosciuti o da enti governativi ha sempre un grande impatto sull'opinione pubblica che, nella maggior parte dei casi, tra sdegno e rassegnazione, si limita a prendere atto della cosa.

In ambito internet il problema diventa particolarmente rilevante a causa dell'enorme mole di dati che ogni giorno transita sulla rete e dell'intrinseca insicurezza di molti dei più diffusi protocolli. Questo non significa che non siano possibili transazioni sicure sulla grande rete. Il protocollo https, per esempio, permette di creare connessioni http attraverso canali criptati per rendere sicuri i pagamenti online o l'autenticazione a servizi importanti. Il protocollo ssh consente di amministrare in modo sicuro macchine remote o di creare tunnel criptati attraverso i quali fare passare servizi inerentemente insicuri. Se però andiamo ad analizzare la situazione di altri diffusissimi protocolli, le cose cambiano in peggio.

Il servizio da sempre più usato su internet è la posta elettronica ma il formato adottato per la composizione dei suoi messaggi è forse quanto di più insicuro possa esistere sulla rete. Tutte le informazioni in essa contenute sono facilmente leggibili per chiunque abbia accesso ai sistemi su cui transita l'email. Come se non bastasse, il ricevente non ha alcuna garanzia sull'autenticità del mittente che può essere falsificato con tecniche più che banali. Queste due mancanze sono la ragione per cui un messaggio che transiti attraverso un server di posta aziendale possa essere intercettato da chi abbia accesso al server stesso e il motivo per cui le fonti di virus e spam non siano facili da individuare per il ricevente.

In questo articolo, che pubblicheremo in due diverse puntate (la seconda e ultima mercoledì prossimo), si discuteranno le basi delle tecniche crittografiche che ci consentiranno di inviare messaggi protetti attraverso mezzi insicuri come la posta elettronica. Si introdurrà il funzionamento degli algoritmi simmetrici, di quelli a chiave pubblica e della firma digitale. Per finire si indicheranno alcuni programmi e servizi che ci saranno d'aiuto nel realizzare il nostro obiettivo.

Basi di crittografia

Lo scopo del paragrafo non sarà quello di entrare nei dettagli di questa tematica assai complessa, che richiederebbe ben più di un semplice articolo, quanto piuttosto di fornire una infarinatura essenziale a chi sia totalmente a digiuno dell'argomento. Per chi volesse approfondire l'argomento è disponibile la guida alla crittografia pubblicata su HTML.it.

Crittografare significa letteralmente "scrivere in modo nascosto". La crittografia raggruppa quindi le tecniche che consentono di occultare informazioni riservate. Nei secoli e nei decenni passati sono stati molti gli algoritmi inventati per criptare messaggi. Quelli più vecchi hanno oggi valenza puramente storica in quanto la loro intrinseca debolezza è stata ben dimostrata. La moderna crittografia basa il suo fondamento sull'assunto che la sicurezza di un sistema crittografico dipenda unicamente dalla segretezza della chiave e non dalla segretezza del suo algoritmo. Questo è il motivo per il quale tutti i principali algoritmi usati al giorno d'oggi sono pubblicamente disponibili. La chiave rappresenta il segreto che ci consente di accedere ai dati criptati. In modo semplicistico possiamo vederla come una password di accesso.

Algoritmi simmetrici

Gli algoritmi simmetrici sono stati i primi ad essere inventati. In questo genere di sistema viene usata una sola chiave per criptare e per decriptare il messaggio. La chiave è il segreto condiviso che deve essere noto sia al mittente, che vuole inviare i dati, sia al destinatario, che desidera decifrarli. Questa necessità pone alcuni problemi:

  • perchè una comunicazione rimanga privata deve esistere un'unica chiave per ogni coppia di possibili interlocutori. Ciò significa che, se si comunica abitualmente con N altri utenti, dovremo condividere N diversi segreti. Se consideriamo un gruppo di N persone, ognuna delle quali voglia comunicare con tutte le altre, il numero di chiavi necessarie cresce quadraticamente con il numero di utenti. Per una comunità numerosa la cosa diventa facilmente ingestibile.
  • gli utenti devono preliminarmente concordare la chiave. Se l'unico modo per condividere il segreto è un mezzo intrinsecamente insicuro si vanifica totalmente l'utilità del sistema crittografico. La chiave infatti potrebbe essere intercettata durante la comunicazione ed usata per decifrare i messaggi che seguono.

Gli algoritmi a chiave simmetrica hanno d'altra parte il grande vantaggio di essere particolarmente veloci nelle operazioni di cifratura, il che li rende ideali per operare su messaggi di grandi dimensioni. DES, 3DES, AES e Blowfish sono alcuni tra i più conosciuti appartenenti a questa categoria.

Algoritmi asimmetrici

Gli algoritmi asimmetrici vengono anche denominati a chiave pubblica. A differenza del caso precedente sono ora necessarie due chiavi per potere operare. Ogni utente possiede una coppia di chiavi strettamente correlate tra di loro. La chiave privata è il segreto che deve essere custodito unicamente dall'utente. La chiave pubblica deve invece essere comunicata a chiunque ci voglia inviare dei dati riservati. Si noti che la chiave pubblica deriva da quella privata ma non consente in alcun modo di risalire a questa.

L'algoritmo asimmetrico prevede i seguenti passi:

  • un utente che voglia inviare dei dati riservati deve criptare il messaggio usando la chiave pubblica del destinatario. Questa chiave, essendo pubblica, potrà essere tranquillamente diffusa su canali non sicuri.
  • l'algoritmo asimmetrico prevede che solo la chiave privata possa decriptare un messaggio cifrato con la relativa chiave pubblica. Poichè la chiave privata è il personale segreto del destinatario, questo sarà l'unico in grado di leggere i dati.

Questa categoria di algoritmi, di cui si coglie facilmente l'asimmetria del funzionamento, risolve entrambi i problemi dei sistemi simmetrici. In questo caso infatti è sufficiente che ognuno possieda la propria coppia di chiavi. Per una comunicazione tra N utenti si hanno 2xN chiavi, funzione lineare e non più quadratica in N. È inoltre possibile distribuire le chiavi pubbliche su canali non protetti.

In contropartita, il difetto maggiore è l'estrema complessità e lentezza dell'algoritmo che lo porta a non essere efficiente nel crittografare messaggi lunghi. Per ovviare al problema si combinano le due tecniche per ottenere un algoritmo ibrido:

  • il mittente sceglie una chiave simmetrica casuale con la quale cripta il messaggio. Usa la chiave pubblica del destinatario per crittografare la chiave simmetrica e spedisce il tutto. Essendo la chiave simmetrica molto più corta del messaggio, il procedimento risulta efficiente.
  • il destinatario usa la propria chiave privata per decifrare la chiave simmetrica con la quale recupera il messaggio originale in breve tempo.

Uno dei più famosi algoritmi a chiave pubblica è RSA.

Nella prima parte di questo articolo abbiamo imparato le basi teoriche del funzionamento degli algoritmi crittografici e abbiamo visto come questi possano essere utilizzati per criptare dati e informazioni. In questa seconda parte prenderemo in considerazione la firma digitale e illustreremo come mettere in pratica le nozioni acquisite utilizzando alcuni programmi e servizi gratuiti. 

Firma digitale

I metodi analizzati sinora non consentono ancora al destinatario di verificare l'identità del mittente (autenticazione). La firma digitale permette di realizzare lo scopo esattamente come la firma autografa farebbe per i documenti cartacei.

La firma digitale basa il suo funzionamento su un algoritmo asimmetrico. Ancora una volta, per motivi di efficienza, il messaggio non viene trattato direttamente con tale algoritmo che si preferisce invece applicare ad una impronta molto più breve del messaggio stesso chiamata hash. Un hash è una stringa di lunghezza fissa di pochi byte ottenuta da un messaggio di lunghezza arbitraria attraverso una particolare funzione matematica. Per la natura non reversibile di tale funzione non è possibile risalire al messaggio originale a partire dall'hash. È chiaro inoltre che ad ogni particolare hash può corrispondere più di un messaggio poichè i possibili hash sono in numero inferiore ai possibili messaggi. Caratteristica della funzione matematica usata, però, è che non è possibile individuare, in un tempo ragionevole, due messaggi diversi che diano origine allo stesso hash (hash libero da collisioni). Queste caratteristiche permettono di affermare che l'hash può essere considerato come una impronta digitale del messaggio stesso.

A questo punto non ci rimane che autenticare il mittente. Per fare questo si applica all'hash un algoritmo asimmetrico in maniera inversa a quanto fatto per criptare i dati nel paragrafo precedente. In questo caso il ruolo delle chiavi viene infatti scambiato:

  • Il mittente userà la propria chiave privata per criptare l'hash che allegherà al messaggio;
  • Il destinatario calcolerà l'hash del messaggio ricevuto, userà la chiave pubblica del mittente per decriptare l'hash allegato e li confronterà. Se risultano uguali  il mittente è proprio chi dice di essere. Questo è vero perchè, dualmente al caso precedente, solo la chiave pubblica del mittente decodificherà correttamente l'hash criptato con la relativa chiave privata. E quest'ultima è posseduta unicamente dal legittimo proprietario.

Algoritmi di hashing molto diffusi sono MD5 e SHA.

Se a questo punto volessimo unire le caratteristiche di confidenzialità a quelle di autenticazione, potremmo criptare con  la chiave pubblica del destinatario il messaggio appena firmato, proprio come descritto nel paragrafo precedente.

Certification Authorities

Per finire un breve cenno al ruolo delle Certification Authorities (CA). Il discorso fatto per gli algoritmi asimmetrici ha un anello debole: chi ci garantisce che chi ci ha fornito la sua chiave pubblica sia veramente chi dice di essere? Un malintenzionato potrebbe infatti intromettersi in tale comunicazione e sostituire la chiave pubblica legittima con la propria. Dopo averla ricevuta non potremmo in nessun modo verificare la sua autenticità. A questo punto intercettando la successiva comunicazione criptata il malintenzionato potrebbe ricostruire il messaggio con la propria chiave privata. Per scongiurare scenari di questo tipo sono nate le Certification Authorities, enti indipendenti che si occupano di rilasciare certificati che associno un determinato utente alla propria chiave pubblica. Per ulteriori informazioni si consulti il seguente documento.

Software di crittografia

Dopo aver parlato di teoria passiamo alla pratica illustrando brevemente alcuni programmi in grado di implementare i concetti descritti. Il primo e più famoso software di crittografia disponibile al pubblico è senz'altro PGP. Su questo programma è già stata pubblicato un tutorial in passato, per la sua descrizione si rimanda quindi all'articolo.

GnuPG e WinPT

GnuPG (Gnu Privacy Guard), anche noto come GPG, è un progetto opensource e multipiattaforma completamente gratuito che implementa lo standard OpenPGP. Tale standard usa un sistema ibrido a chiave simmetrica/pubblica, come descritto nel precedente articolo, e permette sia di criptare informazioni che di firmarle.

Questo programma funziona unicamente da riga di comando ma esistono numerosi frontend e plugin di terze parti che permettono il suo utilizzo da una più comoda interfaccia grafica o come estensione per client di posta.
Agli utenti Windows si consiglia l'uso di WinPT (Windows Privacy Tray), di cui è possibile scaricare un comodo installer contenente sia il programma di crittografia vero e proprio che l'interfaccia grafica. Il programma è disponibile solo in lingua inglese.

Una volta installato e avviato WinPT, ci verrà chiesto di generare la nostra coppia di chiavi oppure di importarne una già posseduta. Nel caso decidessimo di generarla dovremo inserire il nostro nome e il nostro indirizzo email, necessari per una identificazione del possessore, e fornire una password di sicurezza che ci verrà richiesta ogni volta si renda necessario l'uso della chiave privata. Al termine dell'operazione ci verrà fornita la possibilità di effettuale un backup di sicurezza su supporto rimovibile delle chiavi generate.

Nell'area di notifica sarà presente l'icona del programma utile per una rapida attivazione delle sue funzioni. Tramite un doppio click su tale icona avvieremo il key manager contenente tutte le chiavi memorizzate. L'icona di una chiave azzurra appaiata ad una gialla testimonia la presenza della coppia di chiavi pubblica e privata appena generata. Se desideriamo esportare la chiave pubblica per distribuirla a terzi, è sufficiente selezionarla e dal menu Key scegliere la voce Export. La chiave verrà salvata in un file di estensione .asc che potremo inviare via email a chiunque sia interessato. Se vogliamo importare una chiave speditaci da un conoscente basterà usare la voce Import dallo stesso menu. Questa verrà visualizzata in azzurro nel Keymanager a testimonianza del fatto che si tratta di una semplice chiave pubblica.

Figura 1. Importare una chiave in GnuGP

Importare una chiave in GnuGP

Supponiamo a questo punto di voler criptare o firmare un file. Sarà sufficiente fare click con il tasto destro sulla sua icona e dal menu contestuale GPGee scegliere l'operazione desiderata. Se scegliamo la voec Encrypt (PK), ad esempio, ci verrà chiesto di selezionare dall'elenco delle chiavi pubbliche quella che desideriamo usare. Verrà così creata una versione criptata del file, avente estensione .gpg, che potremo inviare via email come allegato al nostro destinatario. Si ricordi a tal proposito che è essenziale usare la chiave pubblica del destinatario per criptare il file!

Se decidiamo di decriptare un file avente estensione .gpg che ci è stato inviato, dovremo selezionare l'opportuna voce dallo stesso menu contestuale. Ci verrà richiesta la password che abbiamo inserito inizialmente a protezione della nostra chiave privata e finalmente otterremo il nostro file decriptato.

Funzioni simili sono disponibili per firmare digitalmente i dati. È possibile creare una firma separata dal documento (detached) oppure inglobata nel documento stesso (attached).

Cliccando col tasto destro sull'icona di WinPT presente nell'area di notifica, è possibile attivare altre interessanti funzioni. Tra queste troviamo la possibilità di criptare il contenuto degli appunti o della finestra corrente. In questo caso il risultato è fornito in formato ascii per consentirne la gestione con qualsiasi editor di testo o direttamente come corpo di una email.

Software e servizi di crittografia

Enigmail

Agli utenti di Mozilla Thunderbird si consiglia invece una comoda estensione di nome Enigmail che aggiunge le funzioni di GnuPG direttamente nel client di posta. Per poter usare le nuove funzioni è necessario avere preventivamente installato GPG. Se non vi interessa il frontend grafico WinPT potete installare semplicemente la versione a riga di comando. Enigmail può essere tradotto in italiano attraverso una piccola patch ma è comunque indispensabile l'installazione dell'estensione in lingua inglese.

Installato Enigmail noteremo la presenza di nuovo menu OpenPGP nella finestra principale. Se non abbiamo ancora provveduto a creare la nostra coppia di chiavi possiamo procedere alla loro generazione scegliendo la voce Gestione delle chiavi dal suddetto menu. Nella nuova finestra selezioniamo Genera / Nuova coppia di chiavi. La procedura di creazione è simile a quella già descritta per WinPT. Dopo avere inserito i dati necessari ci viene proposta la memorizzazione di un certificato di revoca, utile per invalidare la nostra chiave pubblica nel caso dovessimo smarrire quella privata. Se desideriamo invece importare delle nuove chiavi o esportare quelle già memorizzate è sufficiente selezionare l'opportuna voce dal menu file presente nella finestra di gestione.

Per poter utilizzare correttamente Enigmail è necessario indicare all'estensione la posizione dell'eseguibile di GPG. Per fare questo selezioniamo la voce Impostazioni dal menu OpenPGP. Nella scheda Generale inseriamo il percorso al programma che potrà assomigliare a qualcosa del tipo c:programmiGNUGnuPGgpg.exe.

A questo punto è giunto il momento di fare una prova concreta ed inviare una email criptata. Nella finestra di composizione noteremo un nuovo pulsante OpenPGP. Premendolo possiamo decidere se cifrare o firmare l'email prima di inviarla. Enigmail verifica automaticamente la presenza della chiave pubblica del destinatario nell'elenco di chiavi da noi possedute e in caso positivo la usa in modo trasparente per criptare l'email. In caso contrario ci verrà richiesto quale chiave pubblica utilizzare. Se decidiamo di firmare il messaggio dovremo inserire la pass frase per avere accesso alla nostra chiave privata.

Figura 2. Firmare un messaggio con Enigmail

Firmare un messaggio con Enigmail

Questa utile estensione possiede una grandissima quantità di impostazioni che ne permettono un elevata configurabilità. Per ulteriori informazioni si consiglia di leggere una guida in italiano a Enigmail o la pagina ufficiale dell'estensione.

Hushmail

Per tutti gli amanti della posta sul web si accenna infine alla disponibilità di un servizio di webmail PGP-compatibile. Con Hushmail è infatti possibile usare le proprie chiavi crittografiche da qualsiasi parte del mondo attraverso il web. Oltre a vari servizi a pagamento, Hushmail offre la possibilità di creare un account in modo completamente gratuito. La casella di posta è consultabile via webmail ed è protetta da filtri antispam e antivirus.

Come accennato, oltre alle consuete funzionalità, Hushmail offre caratteristiche di crittografia attraverso gli Hushtools. Sarà possibile quindi criptare, decriptare, firmare e verificare qualsiasi messaggio in modo compatibile allo standard OpenPGP attraverso un semplice browser.

La sicurezza intrinseca di questo servizio è comunque condizionata al fatto che il computer usato per navigare sia sicuro. Se su questo è installato un keylogger in grado di memorizzare i tasti digitati dall'utente tutta la sicurezza sarà vanificata.

Ti consigliamo anche