Cifrare i dati presenti sull’hard disk, garantire la riservatezza delle e-mail, navigare in Internet in completo anonimato… ecco cosa è possibile fare per evitare che i nostri dati finiscano in mani sbagliate !
Il diritto alla riservatezza della propria identità è un tema che riguarda da vicino ognuno di noi. Questa considerazione assume un’importanza ancora più rilevante in campo informatico. La nostra vita, infatti, è un flusso continuo di informazioni più o meno riservate che offriamo all’esterno: dalle e-mail che inviamo, ai preziosi documenti stipati nell’hard disk, fino ad arrivare ai dati che inseriamo nei form dei siti di e-commerce. Cosa possiamo fare, dunque, per controllare e proteggere questo flusso di informazioni che ci riguardano così da vicino?
Dati sempre al sicuro
In questa Cover Story impareremo ad usare i numerosi e validi strumenti disponibili su GNU/Linux per proteggere la nostra privacy. Cominceremo da uno dei piatti forti dell’intero articolo, la cifratura di una o più partizioni dell’hard disk, infatti è proprio su questo dispositivo di memorizzazione che confluiscono tutti i nostri dati più importanti, quindi è il primo ambito in cui intervenire per garantire la nostra privacy. Passeremo poi a Internet, con particolare riferimento alla navigazione web, creando una sorta di “corsia preferenziale” protetta e isolata dal resto grazie all’utilizzo di un proxy server e di Tor, la famosa rete per la navigazione anonima e non solo. Inoltre, impareremo a proteggere le nostre email, utilizzando evoluti sistemi di cifratura grazie a funzionalità evolute presenti nei programmi di posta elettronica, come KMail ed Evolution; infine, concluderemo le parte dedicata alla gestione delle email occupandoci degli “anonymous remailer”: un pratico ed efficace sistema per rendere anonima la posta elettronica che inviamo. Per concludere, scopriremo come funziona e come è possibile usare la tecnica nota come “steganografia”, per nascondere informazioni riservate all’interno di normali immagini senza destare il minimo sospetto. La distribuzione di riferimento sulla quale abbiamo eseguito le prove è Ubuntu, ma sono sufficienti poche modifiche alle configurazioni e ai comandi descritti per adattarli a qualsiasi altra distribuzione, meglio ancora se si tratta di derivate da Ubuntu come Kubuntue Xubuntu o della storica Debian GNU/Linux. Avviamo, quindi la nostra fiammante Ubuntu 7.10 Gutsy Gibbone prepariamoci a questo emozionante tour in difesa della privacy!
Hard disk a prova di furto
Copiamo tutti i nostri dati importanti su un disco esterno e rendiamolo praticamente “inespugnabile” a qualsiasi tipo di attacco, nel caso di accesso non consentito al sistemaVogliamo rendere i nostri dati più importanti completamente inaccessibili agli estranei? Possiamo memorizzare queste informazioni sensibili su un disco rigido esterno, come ad esempio un economico hard disk da collegare alla porta USB ed utilizzare quindi un sistema di cifratura per nasconderne il contenuto, così da renderlo leggibile solo se in possesso di una determinata “chiave di accesso”. In questa prima parte scopriremo come fare.
Preparare il supporto
Colleghiamo l’hard disk esterno al PC e come prima operazione riempiamolo di dati casuali: ciò impedirà di individuare l’esatta quantità di informazioni contenute nel dispositivo, rendendo molto più difficile identificare la parola d’accesso necessaria per mostrare in chiaro le informazioni in esso contenute. Apriamo una console ed eseguiamo “sudo dd if=/dev/urandom of=/dev/sdb” (attenzione, con questo comando verrà cancellato l’intero contenuto del disco!). Inseriamo la password del nostro utente ed attendiamo pazientemente la fine della scrittura: l’inserimento di dati casuali, infatti, richiede molto tempo (circa 5 minuti per ogni Gbyte da riempire). Nel comando precedente, sostituiamo /dev/sdb con il file di dispositivo associato al nostro hard disk esterno: nel caso non lo conoscessimo, una volta connesso il disco USB digitiamo in console “dmesg | tail” e cerchiamo nell’output fornito una riga del tipo “sd 4:0:0:0: [sdb] Attached SCSI disk”; “sdb” sarà dunque il file di dispositivo del nostro hard disk. Arrivati a questo punto, installiamo il programma che ci servirà per le operazioni di cifratura mediante il comando “sudo apt-get install cryptsetup”, quindi carichiamo in memoria i moduli necessari con “sudo modprobe aes”, “sudo modprobe dm-crypt” e, infine, “sudo modprobe dm_mod”. Fatto ciò, seguiamo le istruzioni contenute nel tutorial “I dati sul disco li leggiamo solo noi!”.
I dati sul disco li leggiamo solo noi!
Prepariamo l’hard disk esterno affinché possa contenere i dati cifrati
Moduli all’avvio
Preparare il discoFacciamo caricare i moduli per la cifratura all’avvio della macchina. Apriamo una console e scriviamo “sudo nano -w /etc/modules”. All’interno dell’editor aggiungiamo le righe “aes”, “dmcrypt” e “dm_mod”. Salviamo il file e premiamo Ctrl + O seguito da Invio. Infine, usciamo dall’editor con Ctrl + X.
Inizializziamo la partizione cifrata. Per semplicità, invece di utilizzare una partizione faremo uso dell’intero hard disk. In console scriviamo “sudo cryptsetup luksFormat /dev/sdb” (invece di /dev/sdb inseriamo il dispositivo del nostro disco esterno rivelato da “dmesg | tail”). Scriviamo “YES” e premiamo Invio. 
Accesso in chiaro
Accesso al disco cifratoInseriamo la passphrase e premiamo Invio e reinseriamo la passphrase per conferma. A questo punto, apriamo l’hard disk cifrato: “sudo cryptsetup luksOpen /dev/sdb chiaro” e digitiamo la passphrase. La parola “chiaro” è il nome associato al dispositivo per accedere al contenuto in chiaro.
Abbiamo creato il dispositivo removibile contenente tutti i nostri dati più segreti debitamente protetti. Ma come fare per montare e smontare l’hard disk per utilizzarlo successivamente? Per il mount dovremo eseguire questi due comandi:
sudo cryptsetup luksOpen /dev
/sdb chiaro
sudo mount /dev/mapper/
chiaro /mnt/cripto
Per smontare il disco, invece, i comandi da eseguire sono gli stessi indicati nel terzo passaggio del tutorial “Usare l’hard disk cifrato”: “sudo umount /mnt/cripto” e, quindi, “sudo cryptsetup luksClose chiaro”. E se volessimo avere accesso all’hard disk cifrato direttamente al boot, senza dover eseguire alcun comando? Apriamo con l’editor nano il file /etc/crypttab ed inseriamo una riga simile alla seguente:
chiaro /dev/sdb none luks
Nei primi due parametri, come è facile intuire, bisogna inserire il nome da assegnare al dispositivo in chiaro (detto anche “mapping”), e il file di dispositivo (device) associato all’hard disk. A questo punto, non rimane che aggiornare il file /etc/fstab inserendo le informazioni sul disco criptati. Eseguiamo “sudo nano /etc/fstab” ed aggiungiamo al file la riga seguente:
/dev/mapper/chiaro /mnt/cripto
auto defaults 0 0
Così facendo, abbiamo prima indicato il percorso completo del file di mapping per l’hard disk cifrato, quindi abbiamo stabilito la directory di mount. Modificati questi due file di configurazione, al successivo riavvio ci verrà chiesto di inserire la passphrase per decriptare il disco USB ed il contenuto di questo sarà accessibile dalla directory /mnt/cripto. Questo è quanto occorre per rendere i dati presenti all’interno dei dischi illeggibili a chi se ne impossessa senza permesso. Solo chi conosce la passphrase è in grado di decifrare il contenuto dei file che risulta così inaccessibile. Questo sistema resiste anche agli attacchi “brute force”, che tentano di risalire alla password confrontandola con migliaia di parole contenute in un dizionario creato ad-hoc.
Gestire le passphrase
Aggiungere e rimuovere le chiavi di cifratura
Una passphrase costituisce una chiave di cifratura. Vogliamo aggiungere un’ulteriore chiave, così da permettere, ad esempio, ad un nostro conoscente fidato di sbloccare l’hard disk senza dovergli rivelare quella principale? Allora, eseguiamo il comando “sudo cryptsetup luksAddKey /dev/sdb”: ci verrà chiesto per sicurezza di inserire la passphrase iniziale, quindi dovremo digitare quella aggiuntiva. Per cancellare una delle nostre chiavi eseguiamo, invece, “sudo cryptsetup luksDelKey dispositivo num_chiave”: le chiavi attribuite ad un dispositivo si contano partendo da 0 (numero della chiave iniziale), quindi per eliminare la passphrase appena inserita eseguiamo il comando “sudo cryptsetup luksDelKey /dev/sdb 1”.
Usare l’hard disk cifrato
Come formattare l’hard disk e i comandi per poterlo utilizzare
Il file system
Scrittura dati A questo punto, possiamo formattare l’hard disk cifrato. Eseguiamo “sudo mkfs.ext3 /dev/mapper/chiaro”. “mkfs.ext3” è il comando per formattare utilizzando il file system Ext3, mentre /dev/mapper/chiaroè il percorso completo del dispositivo per accedere all’hard disk, ma questa volta in forma decifrata.
Smontare il discoCreiamo una directory dove montare l’hard disk, ad esempio /mnt/cripto: “sudo mkdir /mnt/cripto”. Montiamo il disco con mount passando come primo argomento il dispositivo per l’accesso in chiaro (/dev/mapper/chiaro), quindi la directory di mount: “sudo mount /dev/mapper/chiaro /mnt/cripto”.
A guardia del webOra possiamo copiare nella directory /mnt/cripto tutti i file che vogliamo tenere al sicuro. Fatto ciò, per smontare il disco esterno eseguiamo “sudo umount /mnt/cripto”, seguito da “sudo cryptsetup luksClose chiaro”. Con il secondo comando disattiveremo il dispositivo per l’accesso in chiaro all’hard disk.
L’utilizzo di un proxy come Privoxy non garantisce l’anonimato, ma è il primo passo per proteggerci quando siamo su Internet filtrando i dati che ci arrivano dall’esterno
Il secondo passaggio fondamentale per proteggere la nostra privacy è controllare il flusso dei dati in transito da e verso il web. Per fare ciò ci serviremo di un proxy: un software, cioè, che si pone fra noi ed i server gestendo lo scambio delle informazioni. In questa prima parte dedicata al web ci occuperemo di Privoxy, un proxy che fa da filtro durante la navigazione web e ci permette, da una parte, di impedire l’invio verso l’esterno di dati personali senza nostra esplicita richiesta, dall’altra, di eliminare la pubblicità indesiderata dalle pagine web che visitiamo. Vediamo come funziona. Apriamo una console e scriviamo “sudo apt-get install privoxy”. Privoxy è un demone e sarà avviato automaticamente ad ogni boot della macchina: per bloccarne momentaneamente il funzionamento, comunque, possiamo eseguire il comando “sudo /etc/init.d/privoxy stop” mentre con “sudo /etc/init.d/privoxy restart” potremo riavviarlo. Per un utilizzo elementare del programma non è necessario modificare alcun file di configurazione, tutto quello che dobbiamo fare è istruire il nostro web browser in modo tale da far passare i dati in entrata ed in uscita per Privoxy, come spiegato nel tutorial “Privoxy, configurazione di base”.
Setup avanzato
La configurazione iniziale di privoxy fornisce un sufficiente grado di protezione per la privacy ma, ad esempio, potremmo volere attivare una politica di gestione dei cookie meno permissiva. Privoxy fornisce un’interfaccia di configurazione web, disattivata in alcune sue parti in Ubuntu; per abilitarla nella sua interezza, quindi, apriamo con nano da root il file /etc/privoxy/config e cambiamo la riga “enable-edit-actions 0” in “enableedit- actions 1”. Apriamo il web browser (dopo aver configurato Firefox come indicato nel tutorial) e puntiamolo alla pagina “http://p.p/edit-actionslist? f=global”: qui possiamo scegliere il grado di protezione del programma, cliccando sui pulsanti “Set to Cautious”, “Set to Medium” (il default) e “Set to Advanced”. La pagina web principale della configurazione è “http://p.p/”.
Privoxy, configurazione di base
Installato privoxy e rendiamolo operativo in tre semplici passaggi
Il browser web
Configurazione proxyPer default privoxy si mette in ascolto sulla porta 8118: bisogna istruire Firefox in modo tale che faccia passare il traffico web per questa porta. Lanciamo il nostro browser preferito ed andiamo sul menu Modifica/Preferenze. Nella finestra che appare clicchiamo sull’icona “Avanzate” in alto.
Svuotare la cacheSelezioniamo la linguetta “Rete” e clicchiamo sul pulsante “Impostazioni”. Mettiamo la spunta sull’opzione “Configurazione manuale del proxy”. Come “Proxy HTTP” inseriamo “127.0.0.1” e, a destra, mettiamo come Porta 8118. Stesso setup per la riga “Proxy SSL”. Clicchiamo, infine, su “OK”.
Adesso non rimane che cancellare l’intero contenuto della cache su disco del browser, così da eliminare i dati “pericolosi”. Restando nella linguetta “Rete” clicchiamo sul pulsante “Svuota adesso”, presente nella sezione Cache della finestra. A questo punto bisogna solo premere” Chiudi”.
Identità nascosta
È possibile navigare in Internet e tutto il resto senza rivelare a nessuno chi siamo? La risposta è si, e noi vi mostreremo come è semplice farlo utilizzando la rete anonima Tor
Privoxy ci ha permesso di proteggere le nostre informazioni personali da occhi indiscreti e filtrare il traffico che arriva verso il nostro PC da Internet. (in realtà questo Privoxy può funzionare anche come cache web per tenere in locale una copia delle pagine visitate, in modo da riuscire a caricarle più velocemente nel momento in cui qualche client ne fa richiesta). Il passo successivo è puntare al completo anonimato durante le nostre scorribande sul web. Per raggiungere questa meta agognata faremo uso della rete anonima Tor. In pratica, si tratta di una sorta di un proxy che, durante le sessioni di navigazione su Internet, invia le richieste che noi facciamo ai server che vogliamo visitare, ad un’ampia e sempre mutevole serie di router (i server della rete Tor). Un simile articolato passaggio dei dati fra questi router e l’impiego della crittografia nello scambio delle informazioni, quindi, fanno sì che sia praticamente impossibile rintracciare la nostra posizione, non solo per i siti web destinatari ma anche per qualsiasi intermediario che si trovi tra noi ed essi, rendendo dunque vano qualunque tentativo di analisi del traffico. In sintesi, la nostra identità resterà sempre sconosciuta, pur garantendoci la navigazione.
Tor e Privoxy: unione perfetta
Nel tutorial “Navigare anonimi con Tor”, scopriremo come far comunicare Privoxy con Tor per costruire un sistema in grado di garantire la nostra privacy sempre e ovunque. In realtà è possibile utilizzare direttamente Tor, senza dover necessariamente passare per un secondo proxy server: perché, allora, aumentare la complessità della configurazione con l’impiego aggiuntivo di Privoxy? Il motivo è semplice. Quando si fa uso del solo Tor è possibile che le richieste DNS vengano effettuate in modo diretto, senza passare cioè per la rete Tor; fatto che indebolisce inevitabilmente l’anonimato, facilitando l’individuazione del nostro indirizzo IP. Un altro problema è che Tor, di per sé, non può impedire che vengano inviate ad un server web preziose informazioni personali (nome, cognome, dati vari presenti all’interno dei cookie, ecc…). L’utilizzo combinato di Privoxy e Tor, dunque, risolve entrambi i problemi perché le richieste DNS verranno fatte passare necessariamente attraverso Privoxy, che allo stesso tempo svolgerà il compito per il quale lo abbiamo già utilizzato in precedenza, cioè il filtraggio del normale traffico web.
Navigare anonimi con Tor
L’accoppiata con Privoxy rende impossibile a chiunque scoprire la nostra identità
Tor chiama Privoxy
Passaggio obbligatoPer installare Tor apriamo una console ed eseguiamo “sudo aptget install tor”. A questo punto, dobbiamo farlo dialogare con Privoxy, in modo tale che per la navigazione venga utilizzando comunque il proxy. Per fare ciò è necessario modificare il file di configurazione di Privoxy /etc/privoxy/config.
Più facile con FirefoxLanciamo quindi “sudo nano /etc/privoxy/config”. Nel file inseriamo la riga “forward-socks4a / 127.0.0.1:9050 .”Dove, 127.0.0.1 è l’indirizzo IP di Tor (macchina locale) mentre 9050 è la porta su cui questo risponde. Prima di procedere, assicuriamoci di aver seguito i passi visti prima per configurare Privoxy.
Il PC come server TorQuesto browser dispone di un’estensione che rende l’uso di Tor quasi banale. Andiamo sulla pagina web di Torbutton e clicchiamo su “Install Now/Installa adesso”. Riavviamo Firefox. Cliccando in basso a destra nel browser attiveremo (Tor Enabled) e disattiveremo (Tor Disabled) la navigazione anonima.
Ecco come divenire parte attiva della rete anonima senza consumare troppa banda
Le direttive giuste
Il nome del serverPer attivare un relay il software che ci serve è contenuto nel pacchetto Tor che abbiamo installato in precedenza. Per la configurazione bisogna, invece, modificare il file /etc/tor/torrc. Apriamo dunque una console ed eseguiamo “sudo nano /etc/tor/torrc”. Nella parte finale del file cerchiamo la riga che inizia con ‘#Nickname’.
La porta di reteDecommentiamo la riga togliendo il carattere # iniziale e diamo un nome al nostro relay, ad esempio “myprivacy”: la riga di testo diventerà “Nickname myprivacy”. A questo punto, spostiamoci più in basso e individuiamo la riga “#BandwidthRate”. Per offire banda in upload a 256 Kbit/s modifchiamola in “BandwidthRate 20 KB”
La cifratura dei dati non bastaSpostiamoci ancora più avanti nel file torrc e decommentiamo la riga “#ORPort 9001” facendola diventare “ORPort 9001”. Salviamo e chiudiamo l’editor, dopodiché riavviamo Tor con “sudo /etc/init.d/tor restart”. Se usiamo un firewall (quello del router ADSL, ad esempio) assicuriamoci che permetta l’accesso alla porta 9001 dall’esterno.
Ecco perché criptare una sessione di navigazione non è sufficiente?
Le sessioni web in cui vengono comunicati dati sensibili sono comunemente cifrate: pensiamo, ad esempio, agli acquisti online per i quali è necessario fornire gli estremi della carta di credito. Tutto ciò non basta per assicurare la nostra privacy? No. I pacchetti che transitano su Internet sono formati da un’intestazione e dal blocco vero e proprio dei dati. Anche in caso di cifratura, l’intestazione viaggia in chiaro: questa contiene informazioni come sorgente, destinazione e percorso di instradamento; tutto ciò è più che sufficiente per fornire dati su di noi che non vorremmo rendere pubblici. La rete Tor pone rimedio a questo problema.
Da client a router Tor
Abbiamo visto come sia semplice utilizzare il client Tor per navigare nel web in modo anonimo. La rete Tor funziona grazie al contributo volontario di utenti che mettono a disposizione la loro banda attivando un router Tor (detto anche relay): più router compongono la rete anonima, più Tor diventa veloce ed efficiente. Per attivare un relay sulla propria macchina è sufficiente una comune connessione ADSL 640/256 Kbit/s. Questa operazione, oltre a migliorare le prestazioni della rete, renderà più robusto l’anonimato anche dal lato client (infatti, in caso di attacco, sarà impossibile stabilire se il vostro indirizzo ha attivato direttamente la connessione o ha semplicemente avuto il ruolo di router nella propagazione della connessione alla rete Tor). Vediamo come attivare un router sul nostro PC nel tutorial “Il PC come server Tor”.
Gli accessi al relay
Data la natura anonima della rete Tor, è possibile che i relay vengano utilizzati per commettere abusi. Per evitare questo, la configurazione di default di tor pone alcuni limiti ai servizi attivi: ad esempio, viene chiusa la porta 25 così da impedire che un relay venga utilizzato per inviare email di spam. Alla pagina http://wiki.noreply.org/noreply/ TheOnionRouter/ TorFAQ#DefaultPorts troviamo un elenco delle porte chiuse (righe “reject”) e di quelle aperte (righe “accept”). Per modificare la configurazione in tal senso è possibile intervenire sul file /etc/tor/torrc: l’opzione da usare è ExitPolicy. Ad esempio, per far sì che il nostro relay non venga mai reso disponibile come exit node inseriamo la riga “ExitPolicy reject *:*”. In tal modo, il relay sarà di tipo middleman ed il nostro IP non comparirà mai nei log dei web server contattati dai client tor.
E-mail sicure con GnuPG
A volte i nostri messaggi possono andare nelle mani sbagliate. Allora, l’unico modo per proteggerle è renderle leggibili solo a chi vogliamo noi. Ecco come
Dopo esserci occupati della riservatezza dei dati presenti sull’hard disk e dell’anonimato durante la navigazione web, è il momento di proteggere da sguardi indiscreti le e-mail. Per fare questo ci serviremo di un sistema di crittografia a chiave pubblica, chiamato OpenPGP. Scopriamone caratteristiche e funzionalità nelle pagine che seguono.
Quando a proteggerci è una coppia di chiavi
Crittografia a chiave pubblica: l’uso di una simile terminologia può spaventare e, almeno per quanto riguarda gli utenti meno smaliziati, è probabile che faccia venire in mente più dei film di spionaggio che dei normali software per computer. In realtà, il funzionamento di questo sistema di criptazione è concettualmente piuttosto elementare: un utente che voglia usufruirne non fa altro che creare una coppia di chiavi, una privata ed una pubblica (da qui il nome). La chiave privata deve essere conosciuta soltanto dall’utente, mentre quella pubblica va distribuita e consegnata a tutti coloro da cui l’utente stesso vuole ricevere messaggi cifrati. Grazie a queste due chiavi potremo firmare e decrittare messaggi: per “firmare” si intende la possibilità di attestare con certezza la paternità di un messaggio (ad esempio, noi firmiamo con la nostra chiave privata un messaggio su di uno newsgroup e l’autenticità di questo potrà poi essere verificata da un qualsiasi destinatario mediante l’utilizzo della nostra chiave pubblica). Per crittare un messaggio, invece, ci serviremo della chiave pubblica dell’utente a cui vogliamo inviarlo.
Prima operazione, creare la chiave
Nel primo dei tutorial presentati in questa sezione, “La chiave di cifratura personale”, ci occuperemo di come creare una coppia di chiavi utilizzando il programma GnuPG, un software distribuito con licenza GNU GPL compatibile con OpenPGP. In particolare, al termine del terzo passaggio, una volta inserita e confermata la passphrase (che servirà a proteggere l’accesso alla nostra chiave privata), dovremo “aiutare” la generazione di dati casuali per la chiave spostando il puntatore del mouse, premendo dei tasti a caso o, semplicemente, continuando ad usare il PC come facciamo di solito. Alla fine dell’operazione otterremo il cosiddetto key-id, il codice di identificazione per la nostra chiave: cerchiamo nell’output in console una riga del tipo “pub 1024D/2E5EFA5F 2007-12-10”, il nostro key-id sarà costituito dagli 8 caratteri successivi a ‘1024D/’ (nell’esempio “2E5EFA5F”).
La chiave di cifratura personale
I passaggi per crearne una senza scadenza per il nostro utente
Il tipo di chiave
Con o senza scadenzaApriamo una console e scriviamo “gpg –gen-key”. Ci verrà chiesto di indicare il tipo di chiave da utilizzare. Confermiamo la scelta di default, ‘DSA and Elgamal” premendo Invio. Quindi stabiliamo le dimensioni della chiave. Anche qui, premiamo Invio per accettare la scelta di default (2048 bit).
Dati personaliA questo punto, dobbiamo indicare la durata della chiave. Possiamo anche sceglierne una senza scadenza (scelta di default), nel qual caso è sufficiente premere Invio. Altrimenti possiamo specificarne la durata. Ad esempio, inserendo come risposta “3m” la chiave scadrà dopo tre mesi.
Revocare una chiavePremiamo “y” e poi Invio per confermare i dati inseriti. A questo punto digitiamo nome e cognome, il nostro indirizzo e-mail e un commento (per lasciarlo vuoto premiamo Invio), dopodiché scriviamo “o” e diamo un Invio. Infine, inseriamo una passphrase, ancora Invio e reinseriamola per conferma.
Qualcuno è riuscito ad ottenere la nostra chiave privata? Ritiriamola!
Quando una chiave privata arriva in mano ad estranei è ormai compromessa e quindi inutilizzabile. Lo stesso accade se dimentichiamo la passphrase o perdiamo la chiave stessa. In tutti questi casi dobbiamo avvertire gli altri che la chiave non deve essere più usata. Per fare ciò, creiamo appena possibile un certificato di revoca: in console eseguiamo “gpg — output revoca.asc –gen-revoke nome” (al posto di ‘nome’ inseriamo il nostro nome, l’email oppure il key-id). Spostiamo in luogo sicuro il file revoca.asc. Quando vorremo disattivare la chiave basterà importare il certificato con “gpg — import revoca.asc” ed inviare la nostra chiave aggiornata (e debitamente revocata) al keyserver, nel modo spiegato nel tutorial “Memorizzare la chiave in un keyserver”.
Come importare una chiave
Nel tutorial “Memorizziamo la chiave in un keyserver” abbiamo imparato il modo più semplice per rivelare agli altri la nostra chiave pubblica. Ora vediamo come ottenere l’inverso, cioè come importare nel nostro “keyring” la chiave pubblica di qualcun altro. Quello di cui abbiamo bisogno è un file ASCII con la chiave: possiamo ottenerlo inserendo il nominativo da cercare nella pagina principale del sito keyserver. veridis.com e cliccando poi sul pulsante Search, oppure facendoci spedire via e-mail il file dall’utente stesso. Una volta che questo file è nelle nostre mani, apriamo una console e digitiamo “gpg –import key.asc” (key.asc è il nome del file ASCII con la chiave pubblica che vogliamo importare).
Controllare le “impronte digitali”
Per sicurezza, controlliamo che la chiave appena ottenuta sia effettivamente di chi crediamo: contattiamolo (basta una telefonata!) e facciamoci leggere il fingerprint relativo alla sua chiave; un fingerprint non è altro che una sorta di “impronta digitale” che attesta che la chiave pubblica in nostro possesso sia autentica. Eseguiamo in console il comando “gpg –fingerprint”: in output otterremo l’elenco delle chiavi disponibili con i relativi fingerprint; cerchiamo le righe che riguardano la chiave che ci interessa e confrontiamo il fingerprint ottenuto in precedenza con il codice presente nella linea “Key fingerprint =”: in pratica i due valori devono corrispondere esattamente. In tal caso, possiamo apporre una firma alla chiave pubblica, così da attestarne la validità in modo definitivo. Per farlo, eseguiamo “gpg – -edit-key amico” (amico è il nome o l’indirizzo e-mail del proprietario della chiave, completi o parziali) e sulla linea di comando di gpg digitiamo “sign”, dopodiché premiamo Invio. Infine, usciamo dalla modalità interattiva del programma con “ quit2”.
Memorizzare la chiave in un keyserver
Distribuiamo la nostra chiave pubblica, così da poter ricevere e-mail protette
Esportare la chiave
Quale Keyserver?Apriamo una console e scriviamo “gpg -a –export > public.key”. Con questo comando abbiamo creato un file, public.key, contenente la versione in ASCII (testo semplice) della nostra chiave pubblica. Possiamo inserire questo file nel nostro sito web personale oppure memorizzarlo in un keyserver.
Upload sul serverScegliamo la seconda ipotesi: in questo modo coloro che intendono inviarci e-mail cifrate dovranno semplicemente cercare il nostro nome nel keyserver. Con il web browser apriamo l’indirizzo “ http://keyserver.veridis.com”. Nella prima pagina, al centro, clicchiamo sulla scritta “Import your key”.
Inviare e-mail criptateNella nuova pagina clicchiamo su “Sfoglia…” e con il selettore di file raggiungiamo e selezioniamo il file public.key creato in precedenza. A questo punto, premiamo sul pulsante “Submit”. Adesso la nostra chiave è inserita nel keyserver: in alto nella pagina comparirà una riga con i dati salienti che la riguardano.
Arrivati a questo punto, disponiamo di tutto il necessario per poter inviare messaggi di posta cifrati. Per completare questo discorso, nel tutorial “Posta cifrata e firmata con Evolution”, quindi, vedremo come configurare il client e-mail Evolution (presente come predefinito in molte distribuzioni che utilizzano Gnome) per raggiungere tale scopo. Inoltre, nel tutorial “KMail incontra GnuPG”, scopriremo come inviare e-mail criptate con il client KMail, il programma di posta predefinito nelle distribuzioni che utilizzano KDE. Infine, impareremo a leggere le e-mail cifrate inviateci da altri utenti.
Gestire le chiavi con un semplice clic
Posta cifrata e firmata con EvolutionCerto, GnuPG è uno strumento universale: può essere utilizzato all’interno di qualsiasi ambiente, grafico o meno, e fornisce un numero copioso di funzionalità (oltretutto, su Ubuntu lo troviamo installato di default). Quando però il nostro “portachiavi” arriverà a contenere decine e decine di chiavi i limiti di gestione mediante un software a linea di comando, seppur valido, si fanno sentire. Quello che bisogna fare, allora, è ricorrere all’utilizzo di una più intuitiva interfaccia grafica, che ci consenta di compiere le operazioni più ripetitive con qualche semplice clic del mouse (per le operazioni più articolate e complesse, invece, è sempre consigliabile usare direttamente GnuPG). I programmi più evoluti per svolgere questo tipo di compito, sono Seahorsee Kgpg, due software grafici, rispettivamente per i desktop Gnome e KDE, che permettono di sfruttare le potenzialità di GnuPG senza dover ricorrere alla riga di comando. I due programmi sono molto simili: permettono di creare nuove chiavi PGP, ottenere informazioni su quelle esistenti, importarle ed esportarle, effettuare backup dei keyring, ricercare chiavi sui server remoti e così via. Ad esempio, con SeaHorse, per creare una nuova chiave non dobbiamo far altro che andare sul menu Chiave e selezionare la voce “Crea una nuova chiave”: nella finestra che compare clicchiamo due volte su “Chiave PGP” ed inseriamo poi, nome e cognome, indirizzo e-mail, tipo di cifratura, ecc…
Come proteggere le e-mail con GnuPG e il client di posta per Gnome
Il nostro KEY-ID
Nuovo messaggioSelezioniamo Modifica/ Preferenze, entriamo nella sezione “Account di posta’” e clicchiamo due volte sulla voce relativa al nostro account email predefinito. Successivamente, nella finestra Editor account andiamo sulla linguetta “Sicurezza” e in “ID della chiave PGP/GPG” inseriamo il nostro key-id.
Invio posta cifrataClicchiamo su “OK” in basso e poi su “Chiudi” per tornare alla finestra principale del programma. A questo punto, premiamo su “Nuovo” in alto per scrivere un nuovo messaggio. Nella finestra Composizione messaggio entriamo nel menu “Sicurezza” e selezionamo le opzioni “Firma PGP” e “Cifratura PGP”.
Cifrare le e-mail con KdeAssicuriamoci di inserire come destinatario dell’e-mail un utente del quale abbiamo la chiave pubblica PGP nel “portachiavi”. Così facendo, quando cliccheremo sull’icona “Invia” comparirà una finestra in cui dovremo inserire la passphrase: servirà per firmare l’e-mail con la nostra chiave privata.
Dalla parte di chi leggeNel tutorial “KMail incontra GnuPG”, scopriremo come configurare il client di posta di KDE per poter inviare e-mail criptate. Dopo aver seguito i passaggi del tutorial, potremo spedire un messaggio di posta cifrato: andiamo come di consueto su File/Nuovo/Nuovo messaggio e nella finestra del compositore dei messaggi inseriamo come destinatario una persona di cui conosciamo la chiave pubblica PGP. A questo punto, clicchiamo sulle icone “Firma il messaggio” e “Cifra il messaggio” presenti in alto nella barra degli strumenti.
Con i tutorial su Evolution e KMail abbiamo imparato ad inviare e-mail cifrate con GnuPG. Ma cosa succede quando siamo noi a ricevere un messaggio cifrato? Innanzitutto, ci verrà chiesto di inserire la nostra passphrase. Come sappiamo, infatti, un messaggio cifrato per poter essere letto esclusivamente da noi viene criptato utilizzando la nostra chiave pubblica: per “sbloccarlo”, quindi, è necessario ottenere l’accesso alla nostra chiave privata, e ciò richiede, appunto, l’inserimento della passphrase corretta. Se l’email è stata firmata dal mittente, inoltre, il programma di posta confronterà la firma con la sua chiave pubblica presente nel nostro keyring e, se le due corrispondono, ci informerà che la firma è valida. Digitata la passphrase, al termine del corpo dell’e-mail apparirà un’icona con le scritte “Firma valida” e “Cifrato”. Cliccando sull’icona comparirà una finestra informativa che visualizzerà dettagli aggiuntivi sulla firma digitale e sulla crittografia utilizzata nel messaggio.
KMail incontra GnuPG
Anche il client e-mai di KDE è in grado di usare la posta cifrata. Ecco come si fa
Sezione sicurezza
Le nostre chiaviEseguiamo KMail (K/Internet /Kontact) e selezioniamoImpostazioni/ Configura KMail. Clicchiamo su “Sicurezza” a sinistra, quindi selezioniamo la scheda “Moduli crittografici”. Assicuriamoci che sia presente la spunta su “OpenPGP(gpg)”. Infine, premiamo sulla sezione “Identit�?” visibile in alto a sinistra.
Il formato giustoSelezioniamo l’identit�? predefinita e clicchiamo su “Modifica”, dopodiché spostiamoci su “Crittografia”. Nella riga della “Chiave di firma OpenPGP” clicchiamo sul pulsante “Cambia” e selezioniamo dall’elenco il nostro key-id; indichiamo così anche il nostro key-id per la “Chiave di cifratura OpenPGP”.
Inviare e-mail anonimeCome “formato crittografico” assicuriamoci che sia selezionato “Tutti” o “OpenPGP/MIME”, poi clicchiamo sul pulsante “OK” in basso e di nuovo su “OK” per uscire dalla finestra di configurazione. A questo punto, il setup di KMail è terminato e possiamo scrivere la nostra prima email cifrata.
Impariamo ad usare i cosiddetti anonymous remailer, quei particolari sistemi per inviare massaggi di posta senza mostrare il nome del mittente a chi le riceve
Vogliamo inviare delle email senza dover rivelare il nostro indirizzo di posta elettronica? Quello che ci serve è Mixmaster, un programma appartenente alla categoria degli anonymous remailer: si tratta di un complesso sistema che, utilizzando una catena di server remailer per l’inoltro delle e-mail, consente di nascondere efficacemente la nostra identit�? al destinatario ed a tutti coloro che cercassero di intercettare i nostri messaggi. Per poter utilizzare proficuamente Mixmaster è consigliabile installare sul PC un mail server (programma per lo smistamento della posta, non presente di default su Ubuntu e su molte altre distribuzioni). In questo caso specifico ci serviremo di Postfix, più semplice da configurare rispetto, ad esempio, a Sendmail ( www.sendmail.org). In questa sezione, quindi, impareremo come spedire e-mail anonime direttamente dal nostro PC.
Ottenere un indirizzo valido
Per usare Mixmaster installiamo PostfixMolti dei server remailer contattati da Mixmaster accettano esclusivamente messaggi di posta che provengano da un indirizzo FQDN valido; in caso contrario, rispediscono indietro l’e-mail. Per tale ragione, se utilizziamo una connessione ADSL con IP dinamico è consigliabile collegare un nome di dominio al nostro indirizzo mediante un servizio come DynDNS ( www.dyndns.com). Vediamo brevemente come procedere. Entriamo nel sito di DynDNS con il nostro browser e creiamo un nuovo account cliccando su “Create Account”; una volta inseriti i nostri dati personali, DynDNS ci invier�? una e-mail: clicchiamo sul primo URL presente al suo interno. Nel browser verr�? aperta una nuova pagina. Da qui, premiamo su “Add Host Services”, scegliamo l’Host name ed il dominio che vogliamo (ad esempio linux99 come host name e dyndns.org come dominio: il nome di dominio sar�? perciò linux99. dyndns.org) e clicchiamo su “Use auto detected IP” per legare il nome di dominio al nostro attuale indirizzo IP. Infine, selezioniamo “Create Host” per terminare la configurazione. Fatto ciò, attiviamo un mail server sul nostro PC seguendo il tutorial “Per usare Mixmaster installiamo Postfix”. A questo punto, tutto è pronto per installare e configurare il ramailer anonimo Mixmaster, quindi apriamo una console ed eseguiamo“sudo apt-get install mixmaster”. Per scrivere ed inviare le email anonime basta seguire le istruzioni fornite nel tutorial “Inviare un’email anonima”. L’unico difetto, è che per la composizione dei messaggi di posta il programma richiamer�? come editor di default vi: non certo il sistema più comodo per scrivere una e-mail. Vediamo, quindi, come risolvere in parte questo problema servendoci dell’editor nano, sempre testuale ma decisamente più immediato da utilizzare. Apriamo con il nostro editor preferito il file .bashrc presente nella nostra home directory (comando “nano .bashrc”), quindi al termine del file aggiungiamo la riga “export EDITOR=nano”; salviamo il file e usciamo dall’editor. Chiudiamo la console in esecuzione e apriamone un’altra. A questo punto Mixmaster è pronto all’uso.
Il mail server è indispensabile per l’utilizzo del remailer anonimo. Installiamolo!
Server per internet
Il dominio di invioApriamo una console ed eseguiamo “sudo apt-get install postfix”. Nel terminale comparir�? una schermata che ci invita a selezionare il tipo di configurazione preferita per Postfix: premiamo Tab e poi Invio per passare alla schermata successiva. Qui selezioniamo “Sito internet”, dopodiché premiamo ancora Tab ed Invio.
Postfix è attivo?A questo punto, inseriamo il nome di dominio da cui saranno inviate le nostre e-mail. Per compatibilit�? con tutti i remailer che accettano esclusivamente nomi di dominio esistenti, inseriamo l’indirizzo che abbiamo scelto nella procedura descritta nel paragrafo “Ottenere un indirizzo valido”. Infine, premiamo Invio.
L’IP cambia, il nome restaTerminata questa fase, scomparir�? la schermata per la configurazione e sul terminale appariranno le informazioni sull’attuale impostazione di Postfix. Controlliamo che il mail server sia attivo: in console scriviamo “netstat – vat” e verifichiamo che sia presente una riga contenente “*:smtp”. Postfix è in funzione!
Inviare un’email anonima con MixmasterNel paragrafo “Ottenere un indirizzo valido” abbiamo parlato di come ottenere un nome di dominio valido. Ma come fare per aggiornare in automatico l’indirizzo collegato ad esso, dato che il nostro IP è dinamico? Quello che ci serve è ddclient: installiamolo con “sudo apt-get install ddclient”, quindi proseguiamo per configurarlo. Eseguito il comando per l’installazione comparir�? una schermata di configurazione: premiamo Invio per confermare l’utilizzo del sito www.dyndns.com e inseriamo il nome di dominio scelto (nel nostro esempio, linux99.dyndns.org). Ssubito dopo digitiamo il nome utente che abbiamo registrato su DynDNS e la relativa password. Infine, inseriamo l’interfaccia di rete che usiamo per connetterci ad Internet (eth0, ad esempio).
Come creare una catena di remailer per “anonimizzare” la nostra posta elettronica
Il destinatario
Il messaggioApriamo una console ed eseguiamo il comando “mixmaster”. L’interfaccia del programma è spartana ma di semplice utilizzo. Premiamo “m” per spedire una e-mail. Quando appare la scritta “Send message to:” inseriamo l’indirizzo di posta a cui inviare il messaggio e premiamo Invio. Infine, indichiamo l’oggetto dell’e-mail e premiamo Invio.
Invio della postaA questo punto, premiamo “e” per caricare l’editor. Scriviamo il messaggio da inviare, quindi salviamo (Ctrl + O e poi Invio) e usciamo dall’editor nano con Ctrl + X. Comparir�? la pagina principale per l’inoltro (visibile in figura). Per sicurezza spediamo due copie della stessa email: per farlo basta premere il tasto “r”, poi “2” e, quindi, Invio.
Per l’invio delle e-mail utilizzeremo una catena di quattro remailer scelti a caso. Nel caso volessimo, invece, sceglierli uno ad uno premiamo il pulsante “c”, dopodiché selezioniamo sulla tastiera le lettere corrispondenti ai remailer che vogliamo utilizzare e premiamo Invio. Infine, premiamo “m” e poi “s” per inviare il messaggio anonimo.
L’arte della steganografia
Impariamo ad utilizzare la tecnica che consente di occultare messaggi segreti all’interno di immagini e file multimediali senza destare il minimo sospetto per chi li usa
La steganografia (scrittura nascosta) è quella tecnica che consente di nascondere messaggi all’interno di altri file, solitamente audio, video e immagini, senza che il contenuto di questi ne risulti in apparenza alterato. Ecco come funziona. Come programma per la steganografia ci occuperemo di Steghide. Installiamolo sulla nostra macchina con “sudo apt-get install steghide” e seguiamo il tutorial “Nascondiamo un testo in un’immagine”. In questo caso specifico, “daremo in pasto” a Steghide un file di testo da nascondere all’interno di un’immagine JPEG. In pratica, il file di testo sarà compresso, cifrato e, infine, inserito all’interno dell’immagine. Inoltre, vedremo come il messaggio segreto, contenuto nel testo, verrà protetto da una passphrase, in modo tale che se anche l’immagine venisse identificata come steganografica ci sarebbe comunque bisogno di un codice d’accesso per poter leggere il contenuto nascosto al suo interno.
Dati nascosti
Quanti ne può contenere un file?
Abbiamo un testo segreto piuttosto voluminoso da inviare? Allora, bisogna scegliere un “file di copertura” abbastanza grande da poterlo contenere. Per farlo, passiamo i vari file candidati per questo compito a Steghide nel modo seguente: “steghide info immagine1.jpg”. Nell’output del comando troveremo una riga simile a “capacity: 31,1 KB”. In questo caso specifico, il valore 31,1 KB, indica le dimensioni massime del messaggio nascosto che il file immagine1. jpg potrà contenere.
A caccia di messaggi nascosti
Come riconoscere i file modificati e tentare di decifrarli
Vogliamo valutare la robustezza di Steghide? Per questo compito ci viene in aiuto Stegdetect ( www.outg uess.org/detection.php) . Installiamolo con “sudo apt-get install stegdetect” ed eseguiamolo in una directory contenente immagini sospette: “stegdetect *.jpg”. Il programma ci indicherà in quali file è possibile che siano contenuti dati nascosti. Nel pacchetto di Stegdetect è presente anche stegbreak, un tool che tramite l’utilizzo di tecniche “brute force” tenta di individuare la passphrase usata per proteggere i file steganografici. Non usiamo mai passphrase banali!
Nascondiamo un testo in un’immagine
A volte un bel paesaggio può celare in realtà dati segretissimi… Vediamo come!
Il testo nella foto
Password di protezioneI passaggi sono pochi e molto semplici da seguire. Apriamo una console ed eseguiamo il comando “steghide embed -ef segreto.txt -cf pic.jpg -sf stego. jpg”: sostituiamo a segreto.txt il file di testo da nascondere, a pic.jpg l’immagine di “copertura” ed a stego.jpg l’immagine finale con dentro il testo nascosto.
Estrazione messaggioInseriamo una passphrase per proteggere i dati nascosti, quindi riscriviamola per confermare. Possiamo ottenere informazioni generiche sul file appena creato (stego.jpg) così: “steghide info stego.jpg”. Per ottenere informazioni anche sui dati nascosti premiamo “y” e inseriamo la passphrase scelta prima.
Vediamo come estrarre i dati nascosti presenti nell’immagine. Per fare ciò abbiamo bisogno della passphrase con cui questi sono stati protetti. In console eseguiamo “steghide extract – sf stego.jpg” (stego.jpg è il file che contiene il testo segreto). Digitata la passphrase, troveremo il testo nella directory corrente.