Avere la possibilità con Linux di creare un disco virtuale criptato e portatile è il modo migliore di mettere al sicuro i nostri dati sensibili più preziosi ed ai quali teniamo di più.
Viaggiare o lavorare in mobilità, infatti molto spesso significa usare un notebook, o altri dispositivi mobili. Molto spesso abbiamo la necessità di salvare alcuni dati piuttosto importanti su dispositivi di storage, quali dischi esterni, chiavette USB, oppure nel Hard Disk del Laptop. Questi dispositivi sono quindi deputati a contenere dati per noi molto importanti e che pertanto devono rimanere al riparo da accessi non autorizzati.
A maggior ragione, perché tali dispositivi potrebbero anche essere accidentalmente dimenticati, smarriti, o rubati, oppure sottratti con l’inganno. Non possiamo permettere che chi entra in possesso dei nostri dispositivi fisici, entri in possesso anche dei nostri dati!
Un modo per evitare che i nostri dati siano accessibili a persone a noi consiste nel depositarli in uno speciale contenitore criptato, accessibile solo al legittimo proprietario. Un po’ come mettere i gioielli di famiglia in una cassetta di sicurezza della quale solo noi possediamo la chiave.
Di depositare cioè i dati in un disco virtuale criptato.
Che cos’è un disco virtuale
La definizione più chiara e sintetica di disco virtuale è che un disco virtuale è un disco che non c’è; ossia, un disco che non puoi né vedere, né toccare. Semplicemente perché un disco virtuale non è un disco «vero» come gli hard drive che, negli anni ci sono diventati familiari e sappiamo riconoscere a colpo d’occhio.
Esso è semplicemente un Drive Virtuale, al quale si può accedere normalmente ai dati in Lettura/Scrittura, con un software appropriato. Il nostro drive virtuale, dunque, altro non è che un file, la cui struttura logica interna è perfettamente identica alla struttura logica di un disco fisico. Solo che è appunto un file come tutti gli altri, ed esso può trovarsi in una cartella qualsiasi del nostro sistema.
L’unica differenza sostanziale tra un disco fisico ed un disco virtuale risiede nel fatto che per accedere a quest’ultimo serve un software specifico. Tutto sommato, anche un hard drive fisico ha bisogno di software appropriato (Driver) per potervi accedere.
All’interno del nostro disco virtuale, quindi saranno logicamente presenti delle partizioni; alcune di esse potranno essere delle partizioni primarie oppure estese, secondo il normale ed ormai consolidato sistema di partizioni. Ci saranno uno o più volumi, che possono essere montati per accedere al contenuto interno ed in definitiva ai file.
In sintesi; un disco virtuale criptato non è altro che un file «contenitore» (o Container). Un file che può essere utilizzato esattamente come se fosse un normalissimo volume di un altrettanto normale hard disk, al cui contenuto è applicata una cifratura dei dati.
Tipo di disco virtuale
Per creare il nostro disco virtuale, utilizzeremo il Linux Unified Key Setup (LUKS), il metodo per cifrare file, interi hard disk, singole partizioni ed altri dispositivi Storage.
Nella fattispecie, per creare il file contenitore che ci serve, utilizzeremo comando Linux cryptsetup
; uno dei comandi Linux incluso nell’omonimo pacchetto software.
Il tipo di cifratura che applicheremo al dispositivo di storage (nel nostro caso, un file all’interno del file-system) è in formato luks2
, lo standard più recente utilizzato nel mondo Linux.
Notare che il software cryptsetup
, pur essendo in grado di creare file criptati solo in formato LUKS, è in grado di aprire e di operare pienamente con file criptati nei seguenti formati:
- Volumi Plain,
- Volumi LUKS, Linux Unified Key Setup, utilizzato per questo tutorial;
- loop-AES, altro software di cifratura di Linux;
- TrueCrypt (incluso il più recente VeraCrypt);
- BitLocker, il noto software di Drive Encryption di Microsoft©;
- FileVault2, Il Drive Encryption per Mac OS X.
Il che lo rende uno strumento essenziale per la compatibilità con altri sistemi operativi (i.e. Windows, Mac OS, ecc.).
Creazione di un disco virtuale
1. Creazione del file container
La prima cosa da fare è creare il container vero e proprio. Ovvero, creare il file che conterrà l’immagine del nostro drive virtuale, che non a caso chiameremo “file-immagine”. Creeremo quindi un file di grandezza predefinita inizialmente vuoto; all’interno del quale andremo successivamente a definire la struttura interna. Il file, come detto, è di grandezza predefinita, ma a pensarci bene, anche gli hard disk hanno una grandezza predefinita.
Creiamo il contenitore con il comando seguente:
$ dd if=/dev/urandom of=miocontenitore.img bs=1M count=512
Con il comando utilizzato per l’esempio qui sopra, ho appena creato il file-immagine miocontenitore.img
, allocando uno spazio predefinito di 512 MB, ma può essere di qualsiasi dimensione.
Notare che, per motivi di sicurezza, durante la creazione del file, lo spazio allocato è anche riempito con dati casuali, tramite l’uso di /dev/urandom
in input. In alternativa, avrei potuto usare /dev/zero
, nel qual caso il file sarebbe riempito di zeri (byte il cui valore numerico è zero).
2. Creazione di un volume LUKS
Ora creiamo il volume cifrato LUKS all’interno del file container; in altre parole, formattiamo il dispositivo come segue:
$ sudo cryptsetup --type luks2 --verify-passphrase luksFormat miocontenitore.img
Notare che il comando cryptsetup
dell’esempio precedente ci chiede la conferma di sovrascrittura del nostro file contenitore, oltre alla password (passphrase) da assegnare al file-contenitore.
Di seguito l’esempio dell’output completo del comando:
$ sudo cryptsetup --type luks2 --verify-passphrase luksFormat miocontenitore.img WARNING! ======== This will overwrite data on miocontenitore.img irrevocably. Are you sure? (Type uppercase yes): YES Enter passphrase for miocontenitore.img: Verify passphrase: $
3. Apertura del volume LUKS
Apro il volume LUKS in modo che sia possibile gestire il volume.
$ sudo cryptsetup open --type luks2 miocontenitore.img miovolume
Che dovrebbe aver creato un nuovo entry in /dev/mapper
per il volume miovolume
.
$ ls -l /dev/mapper/miovolume lrwxrwxrwx 1 root root 7 May 31 20:44 /dev/mapper/miovolume -> ../dm-2 $
4. Creazione del Filesystem
Ora finalmente possiamo creare il filesystem che ci interessa. In questo esempio andremo a creare un filesystem Ext4, ma potremmo crearne uno NTFS o in qualsiasi altro standard supportato da Linux..
Creo quindi il filesystem con il seguente comando:
$ sudo mkfs.ext4 -L Volume1 /dev/mapper/miovolume
Notare che il comando qui sopra può generare un output anche piuttosto corposo, secondo la grandezza del volume. Qui di seguito l’output completo del comando:
$ sudo mkfs.ext4 -L Volume1 /dev/mapper/miovolume mke2fs 1.45.5 (07-Jan-2020) Creating filesystem with 126976 4k blocks and 126976 inodes Filesystem UUID: b9051d48-f913-406d-b84f-2efd87a5e877 Superblock backups stored on blocks: 32768, 98304 Allocating group tables: done Writing inode tables: done Creating journal (4096 blocks): done Writing superblocks and filesystem accounting information: done $
A questo punto può essere utile creare un punto di ‘mount’ in modo da non essere costretti ca crearlo ogni volta che utilizzerò il mio disco virtuale.
Creo il mio punto di mount con il comando:
$ sudo mkdir /mnt/crypto1
Notare che ho creato il mio punto di mount sotto la cartella /mnt
. Tutti i miei punti di mount sono solitamente creati sotto la cartella /mnt
; ciò mi è molto utile per mantenere un ordine dei filesystem montati.
5. Chiudo il volume
Ora che il filesystem è pronto, possiamo chiudere il volume LUKS, come segue:
$ sudo cryptsetup close miovolume
Utilizzo del disco virtuale
I) Apertura e montaggio del disco virtuale
Ora che il disco virtuale è stato creato, il volume è stato inizializzato ed il filesystem è stato installato, qui di seguito riportiamo la corretta procedura di utilizzo del nostro disco virtuale.
$ sudo cryptsetup open --type luks2 miocontenitore.img miovolume $ sudo mount /dev/mapper/miovolume /mnt/crypto1/
II) Utilizzo normale
Una volta aperto e montato il nostro disco virtuale criptato, posso tranquillamente utilizzarlo senza pensare alle sue caratteristiche particolari. Copia, visualizzazione. creazione, cancellazione di uno o più file contenuti nel disco virtuale, esattamente come se stessi lavorando nel mio disco principale, o nel mio disco esterno.
Il che significa che un disco virtuale criptato non pone alcuna limitazione rispetto all’utilizzo di un disco fisico interno o esterno che sia. Insomma, la mia sessione di lavoro non sarà minimamente influenzata dal fatto che sto utilizzando un disco virtuale criptato.
III) Smontaggio e chiusura del disco virtuale
Finito di lavorare con i contenuti del mio disco virtuale, smonto e chiudo il device:
$ sudo umount /mnt/crypto1 $ sudo cryptsetup close miovolume
Una volta smontato il file-system /mnt/crypto1
e chiuso il volume miovolume
, il file torna ad essere completamente inaccessibile fino alla prossima sessione di lavoro.
Conclusioni
Abbiamo visto quanto può essere semplice creare un disco virtuale criptato e soprattutto, quanto può essere facile utilizzarlo quotidianamente, mantenendo costantemente al sicuro i file al suo interno. Diversamente dall’utilizzo di SSL per la cifratura di semplici file di cui abbiamo già parlato, con LUKS attraverso cryptsetup
è possibile applicare la crittografia ad un intero hard disk o simularne uno in un unico file.
Avere la possibilità di mantenere sempre al sicuro le informazioni che reputiamo essere le più preziose ci mette al riparo di alcuni dei più subdoli attacchi informatici che mirano a sottrarci informazioni sensibili.
CondividiDisclaimer
Questa pagina potrebbe contenere link di affiliazione. Gli acquisti o gli ordini che effettuerai tramite tali link possono generare commissioni che ci aiutano a sostenere questo sito web.