Ergo: tutti i miei documenti e video personali (ehm...) erano accessibili da pigs+dogs.
Ora la situazione è migliorata: i portatili sono venduti a prezzi più o meno abbordabili a seconda delle esigenze, Ubuntu è diventato più usabile di Windows e quindi tutti i documenti e i video personali (ri-ehm...) sono protetti almeno dagli occhi della famiglia.
Poi però venne il cloud computing...
Dropbox, Box e GDrive (per citare solo quelli che uso abitualmente) hanno dato a tutti la possibilità di salvare nel cloud diversi GB di file in una modalità facilmente accessibile ed utilizzabile. La possibilità di avere una cartella residente su disco che viene automaticamente sincronizzata nel web, oltre che quella di accedere da qualunque altro computer ai proprio file è (lasciatemi passare la citazione per chi la capisce) UNA FIGATA PAZZESCA!
La connessione poi è (generalmente) effettuata tramite protocollo https, quindi un canale cifrato, pertanto non ci sono problemi di tipo Man in the middle di cui preoccuparsi.
Tutto bello quindi? Certo che no: il problema è che tutti i dati sono salvati su cloud in chiaro! Se siete paranoici come me questo non dovrebbe essere un aspetto accettabile.
Quindi, oltre che per salvare i vostri video personali (tri-ehm... nel caso non abbiate capito il motivo degli "ehm" vi suggerisco di guardare un certo video), vi presento una possibilità un po' più seria: un archivio virtuale contenente tutti i documenti sensibili in vostro possesso, per esempio quelli relativi al vostro conto corrente. Tale archivio dovrà comprendere codici di sicurezza, numeri di carte di credito, pin, e chi più ne ha più ne metta... mi pare evidente che tali informazioni debbano essere cifrate tanto nel vostro computer (per quanto a prova di hackeraggio sia) quanto in qualunque altro dispositivo o locazione sul web in vostro possesso.
La protezione però non basta; vogliamo avere una soluzione che abbia le seguenti caratteristiche:
- Deve funzionare anche in sistemi diversi da quello di origine: se salvate i dati del vostro archivio su un computer mi pare evidente che sia preferibile poter accedere a tali file anche da altre macchine, a condizione di avere installato le giuste applicazioni. Un archivio virtuale che sia accessibile da una sola macchina è un grosso pericolo: se la macchina si rompe i vostri dati saranno senza ombra di dubbio al sicuro... ma non potrete più leggerli in alcun modo.
- Deve essere trasparente: non vogliamo avere un applicazione che deve essere avviata per poter accedere all'area dati protetta ma un accesso all'area dati indistinguibile da un file system. Quindi vogliamo poter fare copie e spostamenti di file e vogliamo poter aprire i file direttamente dalle applicazioni che ci servono.
- Deve essere protetta da password: non vogliamo dover dare in pasto al sistema di codifica file o altre cose astruse... vogliamo solo fornire una password al momento dell'apertura dell'area protetta e basta.
- L'area di protezione deve essere una directory: cosa c'è di più semplice di una directory per definire un'area di memoria protetta? Con una directory il cui contenuto sia cifrato tutti i nostri problemi si risolverebbero.
Come potete osservare non ho detto nulla su storage nel cloud perché l'ultimo punto definito è la condizione necessaria e sufficiente per poter far funzionare il sistema con Dropbox, Box, o GDrive: se mettiamo la cartella cifrata nella cartella sincronizzata tra i vari servizi allora automaticamente i nostri dati cifrati verranno riportati automaticamente anche nei nostri account in internet.
Fuse ed EncFS
Come fare ad ottenere quanto specificato sopra? Con due prodotti Open Source: FUSE ed EncFS.FUSE è un modulo di kernel (stiamo parlando di sistemi Unix quindi GNU/Linux e Mac OS X ad esempio) che consente agli utenti di creare e gestire filesystem senza avere permessi amministrativi. Si tratta di un modulo particolarmente utile in quanto consente di definire dei file system virtuali, ovvero dei file system che si basano su altri file system (in genere concreti) per darne una visione gerarchica e le funzionalità POSIX classiche. Ad esempio esistono dei progetti che consentono di montare tramite FUSE un collegamento FTP o SFTP direttamente in una directory del sistema utilizzato. In questo modo non è necessario utilizzare le direttive previste dai protocolli ma è sufficiente accedere alla directory montata (modificandola e leggendola a piacimento dal file browser di propria scelta) per interagire con la sorgente dati FTP o SFTP in maniera completamente trasparente.
EncFS è un file system virtuale basato su FUSE che effettua la cifratura in real time dei file che vengono inseriti all'interno della directory montata. Di fatto quello che realizza è il seguente scenario:
- L'utente crea una directory vuota.
- EncFS viene istruito per utilizzare la directory creata come sorgente dati.
- L'utente monta tramite FUSE il filesystem EncFS in una directory di sua scelta specificando la password di decrittazione da lui scelta al momento della creazione del filesystem EncFS.
- Ogni file che viene inserito nella directory montata viene automaticamente aggiunto in forma cifrata nella directory sorgente grazie all'utilizzo di FUSE.
- Ogni file che viene letto dalla directory montata viene decifrato "on-the-fly" per il suo utilizzo di qualunque cosa esso si tratti.
Sounds cool right?
Configurazione EncFS
Veniamo ora alla configurazione della directory cifrata con EncFS.- Installare FUSE ed EncFS nel vostro sistema. Nel caso di (XK)Ubuntu, come sempre è molto semplice: basta digitare da linea di comando le magiche parole
$ sudo apt-get install encfs fuse
per installare tutti i pacchetti necessari con soddisfazione automatica delle dipendenze (e nonostante ciò io continuo a sentireidiotipersone che sostengono che "uso windows perché Linux è troppo difficile!").
- Creare una directory vuota in cui inserire i dati che saranno cifrati. Per farlo basta un bel
mkdir .secure
nella giusta directory per risolvere il problema. Ci sono un paio di osservazioni da fare su questo punto:
- Personalmente vi suggerirei di utilizzare una directory nascosta da utilizzare come sorgente, ovvero una directory che comincia con ".". In questo modo non vi verrà voglia di estirparla dall'albero delle vostre directory e vi consentirà di metterla dove volete senza che dia fastidio a guardarla.
- Scegliete un nome corto perché poi dovrete utilizzarla per eseguire il mount.
- Se volete far si che venga salvata con il vostro account su cloud, inseritela in qualche sottodirectory della directory sincronizzata con il servizio di archiviazione che avete. Io ho testato con successo il sistema su Dropbox, GDrive e Box, ma credo che non ci siano problemi se usate altri servizi.
- Inizializzare la directory cifrata con EncFS. Con EncFS installato creare una nuova directory cifrata è estremamente facile seguendo il processo interattivo. Prima di tutto è necessario eseguire il seguente comando:
$ encfs /path/verso/directory/nascosta/.secure /path/verso/desktop/Sicura
Ovviamente sostituite i path verso le destinazioni corrette nel vostro sistema. Io personalmente vi suggerisco di montare la directory sul Desktop del vostro sistema in maniera da averla sempre sottocchio come se fosse una chiavetta... comunque fate un po' come vi pare. Ricordatevi comunque che dovete specificare i path assoluti verso le directory perché altrimenti encfs si arrabbia.
Se avete dato invio al comando precedente il sistema vi chiederà di creare la directory "Sicura" che avete specificato.
La directory "/path/verso/desktop/Sicura" non esiste. Deve essere creata? (y/n) y
Ovviamente rispondete y (si).
A questo punto inizia la creazione del file system vero e proprio
Creazione nuovo volume cifrato. Scegliere tra una delle seguenti opzioni: digitare "x" per la modalità di configurazione per esperti, digitare "p" per la modalità paranoica preconfigurata. qualsiasi altra cosa o una riga vuota selezionerà la modalità standard. ?> p
Essendo paranoici scegliamo la modalità paranoia (nota: la modalità standard è comunque valida, è più veloce ma è un po' meno sicura... decidete voi quale scegliere. La modalità per esperti vi consente anche di scegliere l'algoritmo di crittografia da usare).
Selezionata la configurazione standard. Configurazione terminata. Il file system da creare avrà le seguenti proprietà: Cifrario file system: "ssl/aes", versione 3:0:2 Codifica nome dei file: "nameio/block", versione 3:0:1 Dimensione chiave: 192 bit Dimensione blocco: 1024 byte Ogni file contiene 8 byte di intestazione con dati del vettore di inizializzazione unici. Nomi dei file cifrati usando la modalità di concatenazione del vettore di inizializzazione. File holes passed through to ciphertext. Ora è necessario creare una password per il proprio file system. È necessario ricordare questa password, dato che non esiste alcun modo per recuperarla automaticamente. In ogni caso, la password potrà essere cambiata utilizzando encfsctl. Nuova password di Encfs: **** Conferma password di Encfs: ****
Inserite la password che verrà impiegata da AES per la crittografia e datene conferma. Congratulazioni! Avete creato il vostro primo filesystem cifrato.
- Test del sistema. Per verificare il funzionamento del sistema di crittografia provate a creare un semplice file di testo della directory reale con il seguente comando:
$ echo "Ciao" > /path/verso/desktop/Sicura/prova
Se provate ad accedere al file ovviamente potete farlo senza nessun problema. La cosa interessante è vedere cosa c'è adesso in/path/verso/directory/nascosta/.secure
.
Questo è l'output eseguito sul mio calcolatore:
$ ls -la /path/verso/directory/nascosta/.secure totale 16 drwx------ 2 francesco francesco 4096 set 20 18:27 . drwxr-xr-x 3 francesco francesco 4096 set 20 18:18 .. -rw-rw-r-- 1 francesco francesco 1076 set 20 18:24 .encfs6.xml -rw-rw-r-- 1 francesco francesco 13 set 20 18:27 ojaqkSvUvsImzfDlX0j5vs96
Interessante direi! Abbiamo il file di configurazione della directory cifrata.encfs6.xml
e un file intelligibile chiamato (nel mio caso)ojaqkSvUvsImzfDlX0j5vs96
. Se visualizzate il contenuto apparirà come una sequenza di caratteri apparentemente casuali... in realtà è la parola "Ciao" cifrata.
- Smontare la directory cifrata. Se avete finito di giocare con i dati sensibili e volete far calare il sipario sul contenuto in chiaro è necesario smontare il filesystem virtuale. Per farlo basta eseguire il comando
$ fusermount -u /path/verso/desktop/Sicura
e la directory in chiaro verrà completamente svuotata.
- Rimontare una directory cifrata. Se volete accedere e rimontare la directory cifrata è sufficiente eseguire lo stesso identico comando usato per la creazione:
$ encfs /path/verso/directory/nascosta/.secure /path/verso/desktop/Sicura Password di EncFS: ****
Il sistema ovviamente vi richiederà la password che avete fornito alla creazione e se sarà corretta la directory verrà montata nel secondo argomento del comando (quindi se lo desiderate potete anche cambiare la directory in cui accedere ai vostri file in chiaro).
Una piccola nota personale su questo sistema: il contenuto delle vostre directory cifrate non è completamente opaco perché, sebbene i nomi di file e directory che creerete nelle directory montate saranno offuscati, la struttura dei file rimarrà sempre visibile. Dal mio punto di vista si tratta di un drawback accettabile considerando che i vantaggi sono decisamente superiori:
- L'intera struttura cifrata può essere trasferita senza alcun problema in qualunque supporto: basta copiare la directory nascosta altrove per poterla rimontare con la stessa facilità (proprio a causa del mantenimento della struttura ad albero originale).
- Il sistema funziona anche su sistemi operativi diversi: ho testato personalmente tale caratteristica creando una directory con EncFS su Mac OS X e montandola con successo su XUbuntu.
- La corruzione di un file non compromette l'intera struttura: se un file si danneggia quello sarà l'unico file inaccessibile in tutta la directory cifrata, tutti gli altri saranno perfettamente leggibili.