Il computer è un dispositivo molto personale, ma può capitare di prestarlo o consentirne l’uso a qualcuno di nostra conoscenza. Potremmo creare un account per gli ospiti o un utente separato ma la nostra home sarebbe comunque visibile ad occhi indiscreti. Può capitare anche che il nostro portatile venga rubato e, in tal caso, i dati potrebbero essere completamente messi a nudo. Esiste tuttavia la possibilità di proteggere il PC grazie a strumenti come eCryptfs che si occupa di blindare i nostri documenti grazie a una complessa cifratura, sia che si trovino su un’intera partizione del disco sia che si trovino in una specifica cartella. Di seguito scopriremo come applicare la cifratura su una cartella utente di Ubuntu così da mettere al sicuro tutto ciò che contiene.
L’operazione è abbastanza semplice e immediata, considerato che il software è già pacchettizzato per la maggior parte delle distro in circolazione. Nel nostro caso, lanciamo il comando sudo apt-get -y install ecryptfs-utils
.
Per questo test useremo una directory apposita: lanciamo mkdir /home/username/cryptedfolder
per crearla. Possiamo usare anche una cartella utente ma con dei dovuti accorgimenti che scopriremo in seguito.
Per ragioni di sicurezza, se la cartella che useremo è stata scelta e non creata facciamo un backup dei file in essa contenuti: lanciamo il comando cp -pfr /home/username/cryptedfolder /tmp/
per creare una copia nella directory tmp .
La cifratura della cartella è un’operazione semplice, basta lanciare il comando mount -t ecryptfs /home/username/cryptedfolder /home/username/cryptedfolder
. Così facendo useremo ecryptfs come filesystem per criptare la cartella.
Se è la prima volta che usiamo il mount con eCryptfs ci verrà posta qualche domanda. La prima è relativa alla password che intendiamo usare per criptare la directory. Scegliamo quella che preferiamo e confermiamo con Invio .
La password è stata scelta, ma quale algoritmo di cifratura useremo per la nostra cartella? Conviene affidarci ad AES : selezioniamolo e premiamo Invio . Scegliamo 32 byte come dimensione per la chiave e proseguiamo.
Perchè AES? Advanced Encryption Standard è un algoritmo di cifratura molto sicuro usato anche dal governo degli Stati Uniti basato su un sistema a blocchi. L’algoritmo esegue una serie di operazioni matematiche su matrici di byte combinando i byte con la chiave di cifratura ed effettuando sostituzioni, spostamenti e combinazioni. Risulta decisamente veloce e sicuro sebbene sia stato descritto nel dettaglio il suo schema di funzionamento. Molti studiosi stanno cercando di condurre attacchi contro l’algoritmo in questione, specialmente contro le chiavi di cifratura a 256 bit definite di livello TOP SECRET, ma senza alcun risultato. Gli attacchi di tipo brute force anche combinati non sono stati in grado di metterlo in difficoltà. Pertanto, questo algoritmo va ben oltre le aspettative di sicurezza di un normale utente.
Alla richiesta Enable plaintext passthrough rispondiamo No così da non consentire l’uso di file non criptati nella cartella. Rispondiamo No anche alla richiesta Enable filename encryption così da non criptare il nome dei file. Confermiamo le successive richieste.
Per verificare che il file system usato per il mount sia davvero eCryptfs lanciamo il comando mount
e cerchiamo il rigo /home/cryptedfolder on /home/cryptedfolder type ecryptfs . Se alla fine è presente “ecryptfs” significa che tutto è andato per il verso giusto.
Ricopiamo i file salvati in precedenza ( cp -pfr /tmp/cryptedfolder/ /home/username/
e rm -fr /tmp/cryptedfolder/
). Infine, copiamo un qualsiasi file all’interno della directory (ad esempio hosts con cp /etc/hosts /home/username/cryptedfolder
).
Se lanciamo cat /home/username/cryptedfolder/hosts
vediamo il file in chiaro ma se usiamo sudo umount /home/username/cryptedfolder
per smontare la cartella e riproviamo a lanciare cat /home/username/cryptedfolder/hosts
ecco apparire una serie di caratteri insensati: la cifratura è andata a buon fine.
Per mantenere elevato il livello di sicurezza possiamo trasformare una comune chiavetta USB in una chiave di cifratura. Ecco come.
Prima di tutto dobbiamo identificare la partizione della pendrive: apriamo il Terminale e lanciamo il comando fdisk -l . Appare una lista delle partizioni, nel nostro esempio /dev/sdb1 è il disco (formattato con file system FAT32 ).
Creiamo dunque una cartella dove montare la partizione ( sudo mkdir /mnt/mydisk
) e montiamo il nostro disco con mount /dev/sdb1 /mnt/mydisk
. Con il comando mount possiamo verificare che tutto sia andato bene e controllare il file system usato ( vfat ).
Ci serve ora la firma usata da eCryptfs per identificare la cartella crittografata. Per verificare quale identificativo ecryptfs avesse usato in precedenza lanciamo il comando cat /root/.ecryptfs/sig-cache.txt
e prendiamo nota del contenuto del file.
Creiamo ora un file di configurazione che servirà da supporto per il mount automatico. Per fare ciò, lanciamo il comando sudo nano /root/.ecryptfsrc
e al suo interno inseriamo la riga key=passphrase:passphrase_passwd_file=/mnt/mydisk/passw.txt
.
A seguire, inseriamo anche ecryptfs_sig=signaturevistaprima, ecryptfs_cipher=aes, ecryptfs_key_bytes=32, ecryptfs_passthrough=n, ecryptfs_enable_filename_crypto=n
. Da questo link possiamo scaricarlo già pronto all’uso.
Nei passi precedenti abbiamo specificato un file passw.txt . Creiamolo con nano /mnt/mydisk/passw.txt
e al suo interno inseriamo la riga di testo passphrase_passwd=miapassword
inserendo ovviamente la chiave di cifratura al posto di miapassword .
Abbiamo quasi ultimato le configurazioni necessarie: non resta che attuare qualche modifica al file fstab per indicare al sistema operativo quale file system e quale cartella usare durante il montaggio. Provvederemo a montare prima il disco USB così da essere certi che la chiave sia a disposizione del sistema quando ne farà richiesta tramite il file ecryptfsrc che abbiamo appena creato. Grazie alla signature e grazie alle righe di testo successive (che specificheranno la lunghezza della chiave e le regole da applicare il sistema) sarà anche in grado di riconoscere la cartella che andrà a montare. Naturalmente tutti questi parametri coincidono con quelli scelti la prima volta che abbiamo criptato i dati. Un semplice riavvio si occuperà di attuare le modifiche e di effettuare il mount automatico e potremo finalmente verificare che i dati siano stati decifrati come previsto.
Configuriamo dunque il sistema per montare automaticamente le partizioni criptate all’avvio ed avere i file subito disponibili.
La prima operazione da attuare è la modifica del file fstab. Usiamo il comando nano /etc/fstab
per editare il file e aggiungiamo la linea /dev/sdb1 /mnt/mydisk vfat ro 0 0
facendo attenzione a sostituire vfat e sdb1 con il file system e la partizione desiderata.
Aggiungiamo anche la riga /home/username/cryptedfolder /home/username/cryptedfolder ecryptfs defaults 0 0
che servirà per il mount automatico della cartella. Prestiamo attenzione che venga inserita in coda alla precedente, altrimenti non disporremo della chiave di cifratura.
Affinché venga effettuato il mount dobbiamo riavviare il sistema. Prima di fare ciò usiamo sudo umount /home/username/cryptedfolder
per smontare la cartella e solo dopo usiamo sudo reboot
da terminale e attendiamo pazientemente che il sistema si riavvii.
Per verificare che tutto sia andato per il verso giusto possiamo usare il comando cat /home/username/cryptedfolder/hosts
: il file è leggibile in chiaro? Se così è stato vedremo apparire il contenuto invece dei soliti caratteri illeggibili.