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.
In questo caso, abbiamo scelto Gpg4Win, un pacchetto distribuito nella forma di “software libero” (quindi, tra le altre cose, completamente gratuito sia per utilizzi personali che commerciali), recentemente arrivato alla sua seconda versione. Gpg4Win può essere pensato come un’implementazione per Windows di GnuPG (il funzionamento del software poggia infatti, essenzialmente, proprio su GnuPG) che include anche tutta una serie di moduli aggiuntivi e plug-in. Ricorrendo a Gpg4Win, ad esempio, non solo si potrà crittografare il contenuto dei messaggi di posta elettronica, ma cifrare file e cartelle, interfacciarsi con Outlook 2003, Outlook 2007 e con l’interfaccia del sistema operativo.
Perché ricorrere alla crittografia in due parole
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 un intero articolo.
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”.
Crittografia a chiave privata (asimmetrica) e funzionamento di GnuPG
Iniziamo col rammentare il significato di crittografia asimmetrica o “a chiave privata” dal momento che GnuPG utilizza tale meccanismo per proteggere il contenuto delle e-mail 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).
Moduli di Gpg4Win e gestione dei certificati
I moduli di Gpg4Win
Come anticipato nell’introduzione, Gpg4Win – pur basando il “cuore” del suo funzionamento su GnuPG – integra tutta una serie di moduli, in grado di assolvere molteplici compiti. I vari moduli (o componenti) sono attivabili o disattivabili già in fase d’installazione del prodotto.
La procedura d’installazione di Gpg4Win (in Windows deve essere necessariamente avviata utilizzando un account utente dotato di diritti amministrativi) propone i seguenti componenti:
– GnuPG: il “motore” vero e proprio (deve essere sempre installato)
– 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)
– GpgOL: plug-in per Outlook 2003 e 2007 (crittografia dei messaggi di posta elettronica)
– GpgEX: plug-in per la shell di Windows (crittografia di file e cartelle)
– Claws Mail: un client di posta completo che integra il plug-in per GnuPG
– manuali (“kompendium” e “novice manual”)
Per impostazione predefinita, il client di posta elettronica Claws Mail non viene automaticamente installato. Optiamo quindi per le impostazioni di default: vedremo successivamente come interfacciare Gpg4Win, ad esempio, con Microsoft Outlook.
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).
![](/app/uploads/2023/05/gpg4win_0809_03.gif)
Differenze tra OpenPGP e 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).
Passphrase, fingerprint ed esportazione del certificato
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…).
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… E’ bene verificare più e più volte di aver scelto di esportare la sola chiave pubblica. Per far ciò, dopo aver cliccato su 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 dovrà vedere unicamente l’indicazione “…pgp public key…”.
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.
Crittografare messaggi di posta elettronica e file
Cifrare e decifrare le e-mail
Kleopatra mette a disposizione anche l’interfaccia grafica per la gestione delle operazioni di cifratura e decifratura, sia che si stia crittografando un messaggio di posta elettronica, sia che ci si accinga a cifrare un file memorizzato sul disco fisso.
Per decifrare un messaggio, Kleopatra richiede l’inserimento della passphrase specificata a protezione del proprio certificato.
Per cifrare e decifrare le e-mail con Ggp4Win e Kleopatra, gli utenti di Outlook 2003 e 2007 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. Per importare un certificato altrui basta cliccare, in Kleopatra, sul menù File, Import certificates… e selezionare il file .asc o .pgp che si è ricevuto. Inserendo uno o più keyserver nella sezione Settings, Configure Kleopatra, Directory services, si potrà ricercare le chiavi pubbliche delle persone d’interesse.
Gli autori di Gpg4Win consigliano i seguenti keyserver:
* 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
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.
![](/app/uploads/2023/05/gpg4win_0809_07.gif)
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.
Crittografare 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 dei file.
![](/app/uploads/2023/05/gpg4win_0809_05.gif)
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.
Com’è possibile notare, anche GgpEX si interfaccia strettamente con Kleopatra per la scelta del certificato da usare per firmare, cifrare e decifrare i file.
La finestra 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 altrimenti non si sarà poi in grado di decodificare il contenuto dei file cifrati.
Successivamente, per decifrare uno o più file basterà cliccarvi sempre con il tasto destro del mouse quindi ricorrere al comando Decrypt and verify.
![](/app/uploads/2023/05/icon_arrow-348.gif)