Creare un FS cifrato

Published by Lello on

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