Nell'articolo "How to Use Edward Snowden’s Three Tips for Digital Privacy", c'è il chiaro suggerimento "Encrypt your hard drive".
Come ho mostrato nell'articolo "Recuperare files definitivamente cancellati (FAT, NTFS, ext2, ext3, ext4)", è abbastanza facile recuperare files apparentemente cancellati per sempre (cosa che, peraltro, ho fatto con successo in più occasioni negli ultimi 15 anni). Esistono anche laboratori specializzati che riescono a recuperare dati da supporti danneggiati a livello fisico.
Nella guida seguente, do per scontato per l'utente abbia dimestichezza con l'uso del terminale e di gparted. Per chi è a digiuno di questi argomenti, posso indicare qualche guida:
- Uso del terminale
- Principali comandi Linux - Riga di comando
- Introduzione all'uso del terminale
- Full tutorial di Gparted (con spiegazione della differenza tra Windows e Linux nel modo di identificare le partizioni)
- Manuale di GParted
E' inoltre necessario aver ben chiaro come vengono indicate le partizioni in Linux e soprattutto qual è il nome del device che si vuole crittografare. Un metodo semplice per essere sicuri di non sbagliare l'identificativo del device, che solitamente è /dev/sda, /dev/sdb, /dev/sdc o simili, è quello di scollegare il device, reinserirlo e dare subito dopo il comando "dmesg", che mostrerà molte informazioni, alla fine delle quali ci sarà il nome del device appena collegato, ad esempio:
[ 2693.132221] usb 2-1.1: Product: External USB 3.0 [ 2693.132226] usb 2-1.1: Manufacturer: TOSHIBA [ 2693.132769] usb-storage 2-1.1:1.0: USB Mass Storage device detected [ 2693.132986] scsi9 : usb-storage 2-1.1:1.0 [ 2695.785890] scsi 9:0:0:0: Direct-Access TOSHIBA External USB 3.0 5438 PQ: 0 ANSI: 6 [ 2695.786530] sd 9:0:0:0: Attached scsi generic sg2 type 0 [ 2695.788410] sd 9:0:0:0: [sdc] 1953525164 512-byte logical blocks: (1.00 TB/931 GiB)
In questo caso, il disco Toshiba collegato è identificato come /dev/sdc. Sbagliare il nome del device può fare disastri e comportare perdite di dati irreversibili. Inoltre attenzione: ogni volta che il dispositivo viene collegato può cambiare nome, quindi lo stesso disco che adesso viene visto come /dev/sdc potrebbe essere visto in futuro con un'altra lettera, ad esempio /dev/sdb (questo è vero soprattutto per chi usa più di un disco esterno).
La prima operazione da fare, prima di crittografare un intero disco, è non solo quella di cancellarlo completamente, ma anche distruggere al meglio le tracce dei dati in esso depositati. Con GNU/Linux, è sufficiente usare shred, ad esempio con un comando del tipo:
sudo shred -v /dev/sdX
dove al posto di sdX va indicato il device da utilizzare. Se si tratta del disco interno del computer, allora sarà necessario un live cd/dvd per avviare una versione di GNU/Linux. Shred scriverà dati pseudo-causali: questo è importante per rendere molto difficile la distinzione tra i nuovi dati crittografati e lo spazio non utilizzato del disco, oltreché per rendere estremamente difficile l'eventuale recupero dei dati preesistenti. Shred, di default, esegue tre scritture del disco, ma il numero di passaggi può essere cambiato. Da notare che non tutti condividono questo approccio, preferendo sovrascrivere l'intero disco con tutti bit impostati a zero, ad esempio con:
sudo dd if=/dev/zero of=/dev/sdX
Per chi vuole approfondire gli aspetti teorici e pratici legati alla distruzione dei dati, consiglio la lettura dell'articolo "Secure Deletion of Data from Magnetic and Solid-State Memory".
Dopo aver ripulito il disco con shred, ci sono distribuzioni, come Linux Mint, che in fase di installazione permettono di scegliere automaticamente se si vuole che l'intero disco venga crittografato. Per creare invece manualmente una partizione crittografata, ad esempio su un disco esterno, è possibile usare gparted, fornito di default in varie distribuzioni oppure installabile a parte, per creare la tabella della partizioni e una partizione, ad esempio sdX1 (dove "sdX" corrisponde al device e "1" alla prima partizione), dopodiché:
sudo cryptsetup luksFormat /dev/sdX1
sudo cryptsetup luksOpen /dev/sdX1 cryptdocs
sudo mkfs.ext4 -L etichetta /dev/mapper/cryptdocs
Et voilà! ;)
Al posto di "etichetta", è possibile specificare il nome che si desidera dare alla partizione: non è necessario, il parametro -L può essere omesso, ma consiglio vivamente di usarlo nel caso in cui si abbiano più dischi esterni (in modo da non far confusione).
Attenzione ai permessi di scrittura: la nuova partizione criptata ext4 sarà di default accessibile in scrittura soltanto a root. Per risolvere il problema, è sufficiente usare chown per cambiare il proprietario del device. Ad esempio, se l'utente che userà il device è "pippo", allora è possibile cambiare il proprietario con:
sudo chown -R pippo:pippo /media/pippo/etichetta/
dove "pippo:pippo" indica l'utente "pippo" e il gruppo "pippo", mentre /media/pippo/etichetta indica la directory in cui è montata la partizione criptata.
Per ogni approfondimento su cryptsetup, rimando all'eccellente pagina con le FAQ: https://code.google.com/p/cryptsetup/wiki/FrequentlyAskedQuestions
Per quanto riguarda il montaggio, una distribuzione come Linux Mint lo fa automaticamente, dopo aver chiesto la password.
Teniamo al sicuro i nostri dati,
Francesco Galgani,
16 luglio 2014