Gpg4Win (GNU Privacy Guard for Windows) è un ottimo software opensource distribuito sotto licenza GNU GPL che permette di crittografare il contenuto dei file presenti sul disco fisso od in qualunque altra unità di memorizzazione nonché di cifrare e firmare i normali messaggi di posta elettronica.
L’applicazione, giunta a metà marzo 2011 alla versione 2.1, si arricchisce di numerose novità: intanto, la suite – studiata per funzionare sui sistemi Windows – diviene pienamente compatibile con Windows 7 ed è adesso in grado di crittografare non soltanto singoli file ma anche intere cartelle.
L’applicazione è capace di integrarsi con Microsoft Outlook mediante l’installazione di uno speciale plugin così come con la shell di Windows: facendo clic con il tasto destro del mouse, dall’interfaccia del sistema operativo, su un singolo elemento oppure su un insieme di essi, è possibile accedere rapidamente alle funzionalità di Gpg4Win.
Gli sviluppatori si sono sforzati di rendere Gpg4Win un’applicazione più semplice da utilizzare: le procedure di codifica, decodifica, firma e verifica appaiono adesso nettamente più “intuitive” rispetto al passato.
Gpg4Win integra diversi moduli: GnuPG, il “motore” crittografico vero e proprio; Kleopatra, un gestore di certificati in grado di supportare OpenPGP e X.509 (S/MIME); GPA, un gestore di certificati alternativo per OpenPGP e X.509 (S/MIME) dotato di interfaccia grafica; GpgOL, il plugin per Outlook che consente di cifrare direttamente i messaggi di posta elettronica; GpgEX, plugin per la shell di Windows (crittografia di file e cartelle) e Claws Mail, un client di posta completo che integra il plugin per GnuPG.
Come detto, il “cuore” del funzionamento di Gpg4Win risiede in GnuPG, un software opensource distribuito sotto licenza GNU GPL che si propone come valida alternativa alla celeberrima suite crittografica PGP, ideata da Phil Zimmermann. Direttamente supportato, ad esempio, dal governo tedesco, GnuPG consente di utilizzare una soluzione di cifratura asimmetrica per proteggere, da occhi indiscreti, il contenuto dei messaggi di posta elettronica scambiati con i propri interlocutori.
Sebbene GnuPG operi essenzialmente da riga di comando, esistono numerose implementazioni gratuite (“front-end”) per il programma, compatibili con i vari sistemi operativi. Gpg4Win è appunto una di queste; probabilmente la migliore per la piattaforma Windows.
La storia della crittografia si perde nella notte dei tempi. Il primo utilizzo documentato della crittografia, ossia di metodologie aventi come obiettivo quello di rendere un messaggio incomprensibile da parte delle persone non autorizzate a leggerlo, risale al 1900 a.C. quando uno scriba egizio fece uso, per preparare una iscrizione, di geroglifici “non-standard”.
Alcuni esperti sono però convinti che la crittografia sia nata spontaneamente dopo l’invenzione della scrittura per essere impiegata nelle applicazioni più disparate: dalla consegna di missive diplomatiche ai piani di battaglia.
Esempi “storici” dell’uso della crittografia sono il “codice di Cesare” o “cifrario di Cesare”, un algoritmo che operava per sostituzione monoalfabetica (ogni lettera del testo di partenza veniva sostituita, nel testo cifrato, con la lettera che si trova, nell’alfabeto, un certo numero di posizioni dopo; provate a decifrare il messaggio FKLHGLDPRULQIRUCL) ed il “codice Enigma”, usato dai nazisti durante la Seconda Guerra Mondiale.
La crittografia è divenuta oggi assolutamente essenziale nelle telecomunicazioni ed in molte applicazioni che necessitano la garanzia di un’elevata protezione dei dati. Su Internet, poi, sono davvero notevoli i rischi che si corrono veicolando informazioni importanti “in chiaro”, senza impiegare una qualche forma di cifratura.
La possibilità di accedere ad Internet da parte di chiunque implica notevoli problematiche di sicurezza dal momento che la Rete è ovviamente utilizzabile anche da parte di malintenzionati e le applicazioni sono divenute sempre più delicate (si pensi, per esempio, ad applicazioni commerciali, bancarie e fiscali).
Nelle moderne comunicazioni, soprattutto quelle afferenti ad applicazioni “delicate”, è quindi necessario che siano sempre rispettati i seguenti requisiti:
– Autenticazione. Il processo che permette di attestare l’identità di ciascun partecipante ad una comunicazione. Le prime forme di autenticazione che si sono usate in Rete erano basate su verifiche operate su nomi o su indirizzi. Entrambi questi controlli non possono essere considerati affidabili.
– Segretezza. E’ indispensabile fare in modo che nessuno possa leggere un messaggio, fatta eccezione per il destinatario desiderato.
– Integrità. La protezione da modifiche non autorizzate operate sul messaggio trasmesso. Il materiale inviato al destinatario non deve poter essere alternato in alcun modo prima di essere consegnato.
– Non ripudio. Un meccanismo atto a fornire la certezza che chi trasmette un messaggio non possa negare di averlo inviato.
Facciamo un paio di esempi di attacchi alla sicurezza.
Un malintenzionato può mettere in atto il cosiddetto “sniffing di pacchetti” ossia può cercare di “spiare” il contenuto dei pacchetti dati in transito alla ricerca di informazioni utili. Questa tipologia di attacco è molto semplice da mettere in atto su reti LAN dato che le schede di rete Ethernet in modalità promiscua leggono tutti i pacchetti dati in transito.
Il “packet sniffing” non è necessariamente un’attività illecita. Un amministratore di rete può servirsene, ad esempio, per monitorare quali protocolli e quindi quali applicazioni vengono impiegate all’interno della LAN e per “smascherare” eventuali operazioni sospette.
Uno tra i migliori “packet sniffer” è l’opensource WireShark: gli abbiamo dedicato alcuni articoli.
Un’altra modalità di attacco è lo “spoofing di indirizzi IP” che si concretizza nella generazione di pacchetti IP contenenti, come indirizzo IP del mittente, un indirizzo falso che non corrisponde a quello realmente usato dall’aggressore. Il ricevente non può sapere se l’indirizzo è stato falsificato.
La crittografia non solo protegge i dati trasmessi in Rete evitando che possano essere alterati o sottratti da parte di aggressori, ma può essere adottata anche per autenticare un utente.
Quando si parla di crittografia, sono essenzialmente tre gli schemi ai quali ci si riferisce: crittografia a chiave simmetrica, crittografia a chiave pubblica (o asimmetrica) ed utilizzo di funzioni hash.
In tutti i casi il messaggio di partenza viene definito testo in chiaro o “plaintext“. Tale messaggio viene quindi crittografato (”ciphertext“) in modo tale da risultare incomprensibile alle persone non autorizzate infine può essere decifrato e riportato a “plaintext”.
Installazione di Gpg4Win
Per installare Gpg4Win è sufficiente fare doppio clic sul suo eseguibile: la procedura d’installazione offrirà la possibilità di selezionare i componenti da installare. Gli elementi proposti sono quelli brevemente introdotti in precedenza:
Alla comparsa della finestra seguente, è necessario spuntare la casella Root certificate defined or skip configuration.
Come creare la propria coppia di chiavi: Kleopatra
GnuPG, il “motore” utilizzato da Gpg4Win impiega la crittografia asimmetrica o “a chiave privata” per proteggere il contenuto dei messaggi di posta rendendolo incomprensibile da parte di qualunque persona non autorizzata.
L’algoritmo di codifica usato per cifrare un testo è pubblico. Ciò significa che è noto a tutti e quindi, potenzialmente, anche ad un malintenzionato. La “chiave” ossia il “segreto” che permette di decifrare un messaggio e risalire al testo in chiaro non deve essere invece conosciuta da parte dell’aggressore.
Negli algoritmi a chiave simmetrica, le chiavi sono identiche e segrete mentre nel caso degli algoritmi a chiave pubblica, le due chiavi impiegate sono differenti: una è pubblica e nota a chiunque, l’altra è privata e nota soltanto al legittimo proprietario.
La caratteristica dei sistemi crittografici asimmetrici consiste nel fatto che per ogni persona che voglia avviare una comunicazione “sicura” sono due le due chiavi generate: l’una detta “pubblica”, l’altra “privata”.
La chiave “privata” viene impiegata per decodificare un documento e deve essere mantenuta sempre segreta da parte del proprietario; la chiave “pubblica”, invece, deve essere distribuita e resa nota. Quest’ultima servirà ad una qualunque persona per cifrare un’e-mail o comunque un testo a noi destinato.
Un esempio. Alice vuole inviare a Bob un messaggio impedendone l’eventuale lettura da parte di malintenzionati. Alice utilizza allora la chiave pubblica di Bob (precedentemente trasmessale via e-mail, pubblicata sul sito web di Bob o su un “keyserver”) e cifra il testo. Per la decodifica del testo, Bob dovrà utilizzare la sua chiave privata che è nota esclusivamente a lui essendo segreta. Chiunque dovesse intercettare il messaggio trasmesso da Alice a Bob non potrebbe risalire al contenuto dal momento che per riportarlo in chiaro è necessaria la chiave privata di Bob.
Inoltre, rispetto alla soluzione a chiave simmetrica, quella asimmetrica non implica che i due interlocutori si debbano incontrare per scambiarsi la chiave segreta (od utilizzino un altro canale per l’invio della stessa; a tal proposito si creerebbero nuovi dubbi sulla sicurezza del canale trasmissivo) dal momento che i messaggi sono sempre crittografabili usando la chiave pubblica dell’altro.
GnuPG provvede a crittografare il contenuto dei messaggi utilizzando le coppie di chiavi individualmente generate dai due interlocutori. Le chiavi pubbliche possono essere scambiate utilizzando qualunque canale, anche non sicuro.
Va comunque ben sottolineato come una chiave pubblica non sia di per sé associata ad una “persona” ma soltanto ad una chiave privata. In altre parole, non si può avere la garanzia che una chiave pubblica sia stata effettivamente creata da una certa persona. Per risolvere questo problema sono nate le “certification authority” (CA) che si occupano di rilasciare dei certificati digitali che attestano la corrispondenza di una chiave pubblica con un determinata persona. Le CA si occupano di controllare l’identità di un utente producendo, dopo le necessarie verifiche, un certificato che è firmato digitalmente dalla CA stessa (gode della fiducia delle parti coinvolte nella comunicazione).
Creazione della propria coppia di chiavi
Una coppia di chiavi crittografiche si compone, come detto, di una chiave pubblica e di una chiave privata o segreta. Aggiungendo informazioni personali come indirizzo e-mail, user id,… è possibile ottenere un certificato personale contenente, a sua volta, le due chiavi personali.
Suggeriamo di prendere confidenza con il processo di creazione delle chiavi, ricorrendo a Gpg4Win, fintanto che non si sarà certi di averne ben compreso il meccanismo.
Per avviare la procedura di generazione della coppia di chiavi utilizziamo Kleopatra, uno dei componenti integrati nel pacchetto di Gpg4Win.
La finestra che comparirà a video risulterà completamente vuota in quanto non si è al momento creato od importato alcun certificato.
Per creare un nuovo certificato, basta cliccare sul menù File, New certificate. A questo punto, il programma invita a scegliere tra la generazione di una coppia di chiavi OpenPGP o X.509 (S/MIME).
OpenPGP ed X.509 o S/MIME sono due standard riconosciuti che possono essere impiegati per la creazione e la gestione di certificati a chiave pubblica. Sia la coppia di chiavi crittografiche OpenPGP che quella X.509 viene creata sul sistema locale ma mentre la prima viene certificata da parte di amici e conoscenti, la seconda lo è da parte di una “certification authority” (CA).
Le procedure di creazione di una coppia di chiavi OpenPGP od S/MIME sono piuttosto simili. In entrambi i casi, è necessario introdurre informazioni generali come nome e cognome, indirizzo di posta elettronica, un eventuale commento. Lo spazio per il commento può essere normalmente lasciato vuoto. Tuttavia, se si sta facendo una prova, sarebbe bene indicare la parola “test”: tale indicazione sarà pubblicamente visibile.
Nel caso dei certificati S/MIME, Kleopatra richiede di introdurre alcuni dati aggiuntivi (nome e cognome o “common name”, indirizzo e-mail, locazione geografica, organizzazione, codice associato alla nazione: IT nel caso dell’Italia).
La procedura di creazione della coppia di chiavi è piuttosto semplice. Cliccando sul pulsante Advanced settings è possibile accedere ad alcune impostazioni di tipo avanzato e specificare, eventualmente, una data di scadenza per la chiave.
Cliccando sul pulsante Create key verrà avviata la procedura di generazione delle chiavi.
A questo punto, in prima istanza, verrà richiesto l’inserimento della cosiddetta “passphrase”. Tale parola chiave verrà usata per impedire ad altri utenti che facciano uso del vostro personal computer, di sfruttare la vostra chiave segreta. Consigliamo di scegliere una passphrase complessa (preferibilmente una stringa alfanumerica contenente anche caratteri speciali). E’ bene fare in modo che l’indicatore Quality raggiunga il 100% (barra di colore verde).
Dopo aver riconfermato la passphrase scelta, verrà ultimata la generazione della coppia di chiavi.
La speciale “impronta” (fingerprint) mostrata nella finestra di dialogo finale ha come obiettivo quello di garantire che non vi siano altre persone ad utilizzare un certificato identico.
Per esportare in locale il certificato contenente chiave pubblica e privata, si potrà cliccare sul pulsante Make a backup of your certificate specificando poi il percorso ove deve essere memorizzato. Il certificato può comunque essere eventualmente esportato anche in seguito ricorrendo al menù File di Kleopatra.
Cliccando sul pulsante Finish, il certificato OpenPGP appena creato verrà inserito nella scheda My cerificates di Kleopatra e sarà immediatamente utilizzabile.
Se, invece, si è preferito optare per la creazione di un certificato S/MIME, si potrà salvare su disco (pulsante Save request to file…; il file risultante avrà estensione .p10) od inviare tramite e-mail la richiesta di ratifica da parte di una CA riconosciuta. Il file .p10 dovrà poi essere manualmente trasmesso ad un’organizzazione in grado di rilasciare un certificato valido (CA).
Facendo doppio clic su uno qualunque dei propri certificati sinora generati (scheda My certificates) è possibile visualizzarne i dettagli ed impostarne eventualmente una data di scadenza (Change expiry date…).
Gestione delle chiavi pubbliche ed utilizzo dei keyserver
Inviare ai propri interlocutori il certificato OpenPGP
Come primo passo, è necessario esportare la chiave pubblica contenuta nel certificato in formato .asc o .gpg (il primo può essere agevolmente letto con un qualunque editor di testo). Per procedere, è sufficiente selezionare il proprio certificato OpenPGP dalla scheda My certificates di Kleopatra quindi cliccare sul menù File, Export certificates…
In questo modo, si esporterà solamente la chiave pubblica ossia quella che potrà essere trasmessa a colleghi, amici e conoscenti oppure pubblicata online sui “keyserver”. Dopo aver cliccato sul comando File, Export certificates…, quindi digitato un nome per il file seguito dall’estensione .asc, suggeriamo di aprire il file .asc con un qualunque editor di testo (va benissimo anche il Blocco Note di Windows): si noterà la presenzsa dell’indicazione “BEGIN PGP PUBLIC KEY BLOCK
” a testimonianza che si ha di fronte proprio la chiave pubblica.
Per trasmettere ai propri interlocutori, con i quali si vogliono scambiare messaggi cifrati, la propria chiave privata basterà selezionare tutto il contenuto del file ed inviare, ad esempio, tramite un normale messaggio e-mail.
Cliccando su File, Export certificates to server, si potrà esportare la parte pubblica del proprio certificato su un server accessibile da parte di chiunque. Coloro che desiderano inviarvi e-mail cifrate potranno così recuperare la vostra chiave pubblica connettendosi al keyserver.
Per default, Kleopatra utilizza il server keys.gnupg.net
ma è possibile inserirne di nuovi cliccando sul menù Settings, Configure Kleopatra, su Directory services quindi su New.
Gestione dei certificati altrui
Scambiare messaggi crittografati con qualunque interlocutore è semplice perché Kleopatra è capace di conservare nei propri archivi le chiavi pubbliche necessarie per avviare l’operazione di cifratura dei testi. Per importare un certificato altrui basta cliccare, in Kleopatra, sul menù File, Import certificates… e selezionare il file contenente la chiave pubblica che si è ricevuto. Inserendo uno o più keyserver nella sezione Settings, Configure Kleopatra, Directory services, si potranno ricercare le chiavi pubbliche delle persone d’interesse.
Gli autori di Gpgp4Win suggeriscono i seguenti “key server“:
hkp://blackhole.pca.dfn.de
hkp://pks.gpg.cz
hkp://pgp.cns.ualberta.ca
hkp://minsky.surfnet.nl
hkp://keyserver.ubuntu.com
hkp://keyserver.pramberger.at
http://keyserver.pramberger.at
http://gpg-keyserver.de
Crittografare e decifrare i messaggi di posta elettronica con Outlook
Per cifrare e decifrare le e-mail con Ggp4Win e Kleopatra, gli utenti di Microsoft Outlook troveranno disponibile, ad installazione completata, il plug-in denominato GpgOL.
Scambiare messaggi crittografati con qualunque interlocutore è semplice perché Kleopatra è capace di conservare nei propri archivi le chiavi pubbliche necessarie per avviare l’operazione di cifratura dei testi.
Avviando Outlook, dopo l’installazione di Gpg4Win, verrà visualizzata una finestra di benvenuto che informa circa l’aggiunta del plug-in GpgOL.
Come primo passo, è bene controllare le impostazioni del plug-in cliccando sul menù Strumenti, Opzioni, GpgOL di Outlook.
Per impostazione predefinita, GpgOL utilizza lo standard OpenPGP: per attivare S/MIME è necessario spuntare la casella Enable the S/MIME support. Le altre opzioni sono autoesplicative e consentono di cifrare o firmare di default tutti i nuovi messaggi, di impostare OpenPGP o S/MIME come standard predefinito e così via.
In fase di composizione del messaggio, i pulsanti della barra degli strumenti Encrypt message with GnuPG e Sign message with GnuPG consentono, rispettivamente di crittografare e firmare digitalmente i messaggi di posta elettronica sfruttando il plug-in GpgOL, Kleopatra ed il motore GnuPG.
Gli stessi comandi sono accessibili anche dal menù Strumenti di Outlook.
Dopo aver cliccato sul pulsante Invia, comparirà una finestra di dialogo di Kleopatra attraverso la quale si dovrà provvedere a selezionare il certificato del destinatario. Se Kleopatra non mostra automaticamente il certificato dell’interlocutore a cui è diretto il messaggio, significa che – molto probabilmente – esso non è mai stato aggiunto tra i certificati disponibili. Il controllo viene effettuato basandosi sull’indirizzo di posta elettronica del destinatario.
I certificati gestiti mediante l’utilizzo di Kleopatra possono essere ovviamente utilizzati anche con altri client di posta elettronica che supportino gli standard S/MIME od OpenPGP.
Come detto, i due formati sono tra loro incompatibili. Diversamente da OpenPGP che per i suoi certificati poggia su un sistema web of trust, i corrispondenti S/MIME presuppongono l’intervento di una Certification Authority (CA).
Sui client di posta elettronica che, di default, supportano solo S/MIME, è necessario tipicamente installare dei plugin aggiuntivi. Nel caso di Mozilla Thunderbird, ad esempio, è possibile orientarsi su Enigmail, un’estensione che consente di aprire il client e-mail al supporto per OpenPGP.
Una volta installa l’estensione Enigmail (menù Strumenti, Componenti aggiuntivi di Thunderbird, scheda Esplora, pulsante Installa; bisognerà scegliere il file .xpi
scaricato dal sito ufficiale del progetto), si noterà la presenza del nuovo menù OpenPGP:
Cliccando sulla voce Procedura guidata di configurazione, verrà avviata una comoda procedura passo-passo che guiderà nella configurazione delle chiavi da usare per le operazioni di cifratura e decodifica del contenuto dei messaggi di posta. Enigmail è in grado di rilevare le chiavi disponibili sul personal computer e già create utilizzando il software Kleopatra.
Facendo clic su Impostazioni è possibile analizzare, nel dettaglio, tutte le regolazioni di Enigmail mentre Gestione delle chiavi permette di esaminare le proprie chiavi e quelle, pubbliche, degli interlocutori.
Crittografare cartelle e file memorizzati sul disco
Ggp4Win offre anche gli strumenti per crittografare il contenuto dei file memorizzati sul disco che si desiderano rendere illeggibili alle persone non autorizzate. E’ il componente GpgEX a farsi carico delle operazioni di cifratura e decifratura del contenuto di file e cartelle.
GpgEX si integra con l’interfaccia di Windows aggiungendo i suoi comandi al menù contestuale del sistema operativo (il menù che compare cliccando con il tasto destro del mouse su un qualunque file).
Una volta selezionati uno o più file da cifrare, cliccandovi con il tasto destro del mouse si potrà scegliere il comando Sign and encrypt: si aprirà la finestra di GgpEX che permetterà di firmare digitalmente e crittografare gli elementi indicati.
Il programma consente di crittografare (e firmare) tutto il contenuto di un’intera cartella. E’ sufficiente cliccare col tasto destro del mouse sulla directory d’interesse quindi scegliere il comando Sign and encrypt.
Come si vede, il modulo GgpEX può comprimere tutti i file specificati od un’intera cartella utilizzando il formato TAR). Il contenuto dell’archivio compresso, una volta creato, viene automaticamente crittografato.
GgpEX si interfaccia strettamente con Kleopatra per la scelta del certificato da usare per firmare, cifrare e decifrare i file.
La finestra For whom do you want to encrypt to? permette di scegliere il certificato da usare per firmare e cifrare i file selezionati. Ovviamente si dovrà selezionare uno dei propri certificati (clic sul pulsante Add) altrimenti non si sarà poi in grado di decodificare il contenuto dei file cifrati.
Successivamente, per decifrare uno o più file (memorizzati in formato .gpg
) basterà cliccarvi sempre con il tasto destro del mouse quindi ricorrere al comando Decrypt and verify. del menù contestuale di Windows.
E’ ovviamente possibile, dall’interfaccia di Windows, selezionare più file crittografati ed invocare poi il comando Decrypt and verify.