Un compendio veloce per gestire e manipolare le password di criptazione.

Premessa
Siamo sempre in ambiente Linux. Di seguito la raccolta delle istruzioni per gestire le passphrase di criptazione dei dischi. la raccolta è semplice e pratica. Ricordiamo alcuni elementi strutturali per Linux:
- l'archittetura del Kernel prevede che le memorie di massa sono gestite tute dal kernel indipendentemente dal tipo di drive e dal filesystem
cryptsetup
è lo strumento standard con cui si gestiscono le criptazioni dei dischi.
In sintesi si fa tutto tramite cryptsetup
indipendentemente dal tipo di device e di formattazione.
Negli esempi seguenti usiamo pen drive mappato come /dev/sdc
.
Criptazione completa
In questo caso è criptato l'intero pendrive /dev/sdc
.
Verifica l'header (utile per er avere info sulla cifratura, gli slot e altro)
sudo cryptsetup --verbose luksDump /dev/sdc
Aprire un disco criptato (necessario per qualsiasi operazione)
NB: crea, al volo, un nuovo disco decriptato e usabile (il sdc_decrypt)sudo cryptsetup --verbose luksOpen /dev/sdc sdc_decrypt
Chiudere un disco criptato
NB: fa scomparire, al volo, il disco decriptato e usabile (il sdc_decrypt)sudo cryptsetup --verbose luksClose sdc_decrypt
Montare il disco decriptato
NB: prima bisogna aprirlo con luksOpen
NB: montiamo una partizione formattata. Cf.: ultimo puntosudo mount /dev/mapper/sdc_decrypt1 /mnt
Verificare una passwordsudo cryptsetup --verbose luksOpen --test-passphrase /dev/sdc
Criptare un device (=mettere una password)sudo cryptsetup --verbose luksFormat /dev/sdc
Aggiungere una password a un device criptatosudo cryptsetup --verbose luksAddKey /dev/sdc
Modificare una passwordsudo cryptsetup --verbose luksChangeKey /dev/sdc
Rimuovere una passwordsudo cryptsetup --verbose luksRemoveKey /dev/sdc
Creare una partizione e formattarla ext4
NB: bisogna prima aprire il discosudo parted /dev/mapper/sdc_decrypt mklabel gpt
sudo parted /dev/mapper/sdc_decrypt mkpart primary ext4 0% 100%
sudo mkfs.ext4 -L NomeDisco /dev/mapper/sdc_decrypt1
Criptazione di una sola partizione
In questo caso criptiamo solo la partizione /dev/sdc1
del pendrive. A titolo didattico creiamo anche una seconda partizione non criptata.
Iniziamo creando le due partizioni. La sdc1
diventerà la partizione criptata, la sdc2
non verrà criptata. Di seguito le istruzioni del processo completosudo parted /dev/sdc mklabel gpt
sudo parted /dev/sdc mkpart primary ext4 0% 50%
sudo parted /dev/sdc mkpart primary ext4 50% 100%
sudo cryptsetup --verbose luksFormat /dev/sdc1
sudo cryptsetup --verbose luksOpen /dev/sdc1 sdc1_decrypt
sudo mkfs.ext4 -L DiscoCrypt /dev/mapper/sdc1_decrypt
sudo mkfs.ext4 -L DiscoNoCrypt /dev/sdc2
Verifica l'header (utile per er avere info sulla cifratura, gli slot e altro)sudo cryptsetup --verbose luksDump /dev/sdc1
Aprire la partizione criptata (necessario per qualsiasi operazione)
NB: crea, al volo, un nuovo disco decriptato e usabile (il sdc_decrypt)sudo cryptsetup --verbose luksOpen /dev/sdc1 sdc1_decrypt
Chiudere la partizione criptata
NB: fa scomparire, al volo, il disco decriptato e usabile (il sdc1_decrypt)sudo cryptsetup --verbose luksClose sdc1_decrypt
Montare la partizione decriptata
NB: prima bisogna aprirlo con luksOpen
NB: montiamo una partizione formattata. Cf.: ultimo puntosudo mount /dev/mapper/sdc1_decrypt /mnt
Verificare una passwordsudo cryptsetup --verbose luksOpen --test-passphrase /dev/sdc1
Criptare un device (=mettere una password)sudo cryptsetup --verbose luksFormat /dev/sdc1
Aggiungere una password a un device criptatosudo cryptsetup --verbose luksAddKey /dev/sdc1
Modificare una passwordsudo cryptsetup --verbose luksChangeKey /dev/sdc1
Rimuovere una passwordsudo cryptsetup --verbose luksRemoveKey /dev/sdc1
Note conclusive
cryptsetup
, senza nessun pacchetto aggiuntivo, è in grado di leggere e scrivere memorie di massa cifrate con BitLocker di Windows. Al momento, però, non è in grado di creare cifrature BitLocker; per questo continua a essere necessario un Windows Professional.
Quanto sopra illustrato è valido per ogni tipo di memoria di massa, non solo i pendrive. Quindi possiamo usare le stesse procedure per hardisk SATA, SAS, SCSI, NVRAM, SD, ecc... Possiamo usare gli evempi anche per volumi LVM o array RAID sia hardware che software.
Negli esempi forniti sopra si è decriptato il desco e poi la partizione usando i metanomi sdc_decrypt
e sdc1_decrypt
. Possiamo scegliere il nome che vogliamo quando apriamo una memoria cifrata. Quindi, ad esempio, avremmo potuto scegliere i nomi stefano
e stefano1
. Suggerimento: scegliere nome parlanti.
Mi sembra utile sottolineare che gli esempi sono intenzionalmente semplici. cryptsetup
permette molte scelte (aggiunte di etichette, definizione della dimensione delle chiavi, ecc...). La guida ufficiale e la guida da riga di comando riportano tutti gli argomenti e opzioni aggiuntive. Non mancano online guide come questa che spiegano un uso avanzato e le opzioni del caso.
I principali ambienti grafici di Linux (KDE, Gnome, Cinnamom, ecc...) integrano parzialmente cryptsetup
: permettono trasparentemente di montare un filesystem cifrato (anche Windows), ma non offrono un tool altrettanto trasparente e semplice per cifrare un volume o una memoria di massa.
Un'ultima nota va per gli slot. Quando creiamo una nuova cifratura viene generata una chiave per leggere-scrivere partizioni, dischi e array.
Questa chiave a sua volta è cifrata con un passphrase inserita da tastiera o da file e viene scritta in uno SLOT.| Header | Slot 0 | … | Slot 7 | Encrypted Data |
In questo modo noi possiamo decifrare prendendo la passphrase da un file magari presente su chiave usb o su un’altra partizione precedentemente decifrata oppure immettendo una stringa da tastiera. Infatti può risultare molto utile in caso della perdita del file con la chiave avere una passphrase per recuperare i dati.