Creare un FS cifrato
Vediamo come creare ora un FS cifrato, in maniera tale da proteggere i dati in esso contenuti; in caso di perdita del supporto informatico che le contiene (hard disk del notebook, hard disk usb esterno, penna usb, …) le informazioni in esso contenute risulteranno illegibili.
Il procedimento può applicarsi all’intero supporto o a parte di esso; ad esempio, per un hard disk interno, potremmo creare un file system protetto e montarlo quando ci serve, oppure utilizzare una pen drive interamente.
Per creare tale tipo di FS, utilizzeremo LUKS (Linux Unified Key Setup), che è uno speciale formato per volumi cifrati. LUKS mette dei metadati davanti ai dati cifrati reali; i metadati contengono l’algoritmo di cifratura, la lunghezza della chiave, il metodo di concatenazione dei blocchi, …., per cui non c’è alcun bisogno di memorizzare questi parametri. Queste caratteristiche rendono LUKS particolarmente vantaggioso quando viene usato con chiavette USB. Inoltre LUKS utilizza una chiave master che viene cifrata usando l’hash della passphrase; in questo modo è possibile cambiare la passphrase e utilizzare più passphrase.
ATTENZIONE: procedendo con i comandi indicati in questo paragrafo si rischia di rendere illegibile il proprio disco rigido; fate attenzione ai comandi che impartite ed alle partizioni che usate.
Visualizziamo le partizioni del nostro disco:
# fdisk -l Disk /dev/sda: 1000.2 GB, 1000204886016 bytes, 1953525168 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 4096 bytes I/O size (minimum/optimal): 4096 bytes / 4096 bytes Disk label type: dos Disk identifier: 0x000xxxxxx Device Boot Start End Blocks Id System /dev/sda4 327684094 1009671410 340993658+ /dev/sda5 327684096 344068095 8192000 82 Linux swap / Solaris /dev/sda6 344070144 958470143 307200000 83 Linux
Creiamo una nuova partizione (sda7) da 10 GB:
/dev/sda7 958472192 979443711 10485760 83 Linux
Su questo device creeremo un volume cifrato; il comando cryptsetup è il comando che viene usato per creare un volume LUKS:
# cryptsetup luksFormat /dev/sda7
WARNING!
========
This will overwrite data on /dev/sda1 irrevocably.
Are you sure? (Type uppercase yes): YES
Enter passphrase: <== Inserire la master password
Verify passphrase: <== Reinserire la master password
Una volta creato il nostro device, lo apriamo per potervi accedere:
# cryptsetup luksOpen /dev/sda7 my_secure_partion Enter passphrase for /dev/sda7: <== Inserire la master password
Il nostro device è ora montato sotto /dev/mapper/my_secure_partition; per essere utilizzabile, la prima volta deve essere formattato:
# mkfs.ext4 /dev/mapper/my_secure_partion
La partizione creata può essere montata (ad esempio sotto /mnt/secret) ed utilizzata come una partizione normale:
# mkdir /mnt/secret # mount /dev/mapper/my_secure_partion /mnt/secret
Quando la partizione non servirà più, la potremo smontare e chiudere:
# umount /mnt/secret # cryptsetup luksClose /dev/mapper/my_secure_partion
Riepilogando, le operazioni da fare per utilizzare il nostro device cifrato sono davvero molto semplici:
- aprire il nostro device cifrato (cryptsetup luksOpen) e montare la partizione; - smontare la partizione e chiudere il device cifrato (cryptsetup luksClose)
Se volessimo montare al boot la nostra partizione cifrata, dovremmo modificare i due file /etc/crypttab e /etc/fstab:
# echo "my_secure_partion /dev/sda7 none luks >> /etc/crypttab # echo "/dev/mapper/my_secure_partion /secret ext4 acl,user_xattr,nofail 0 2" >> /etc/fstab