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


zip Gestione delle passphrase con dischi criptati: compendio


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 punto

sudo mount /dev/mapper/sdc_decrypt1 /mnt

Verificare una password

sudo 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 criptato

sudo cryptsetup --verbose luksAddKey /dev/sdc

Modificare una password

sudo cryptsetup --verbose luksChangeKey /dev/sdc

Rimuovere una password

sudo cryptsetup --verbose luksRemoveKey /dev/sdc

Creare una partizione e formattarla ext4
NB: bisogna prima aprire il disco

sudo 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 completo

sudo 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 punto

sudo mount /dev/mapper/sdc1_decrypt /mnt

Verificare una password

sudo 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 criptato

sudo cryptsetup --verbose luksAddKey /dev/sdc1

Modificare una password

sudo cryptsetup --verbose luksChangeKey /dev/sdc1

Rimuovere una password

sudo 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.