Abbiamo diverse possibilità per criptare i dischi in Linux. Vediamo come con gli strumenti di base.
# Premessa
Lo strumenti base di //serie// in Linux è cryptsetup che abbiamo usato nell due guide "Gestione delle passphrase con dischi ZFS criptati" e "Gestione delle passphrase con dischi LVM criptati".
Un interessante tool esterno è VeraCrypt: open, come Linux, offre un'interfaccia grafica ed è cross platform (cioè: possiamo usarlo in Windows, in Mac, In Linux e altre piattaforme).
In questa guida procederemo usando cryptsetup. Il tool è già presente nel nostro sistema.
Procederemo prima con un hard disk interno SATA, poi con un pendrive USB.
Prima di procedere è opportuno tener presente che il pendrive sarà usabile su altri computer solo se hanno Linux ed il tool cryptsetup.
Criptazione HDD
Verifichiamo i dischi presenti nel nostro computer
sudo lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTSsda 8:0 0 5G 0 disksr0 11:0 1 1024M 0 rom zd0 230:0 0 500M 0 disk └─keystore-rpool 253:0 0 484M 0 crypt /run/keystore/rpoolvda 252:0 0 40G 0 disk ├─vda1 252:1 0 512M 0 part /boot/grub│ /boot/efi├─vda2 252:2 0 1,8G 0 part │ └─cryptoswap 253:1 0 1,8G 0 crypt [SWAP]├─vda3 252:3 0 2G 0 part └─vda4 252:4 0 35,7G 0 part
Il disco appena aggiunto è mappato come sda .
Procediamo criptando il disco e inserendo la passphrase "NuovoDisco#32A":
sudo cryptsetup --verify-passphrase --verbose luksFormat /dev/sda
WARNING!========This will overwrite data on /dev/sda irrevocably.
Are you sure? (Type 'yes' in capital letters): YESEnter passphrase for /dev/sda: Verify passphrase: Key slot 0 created.Command successful.
Procediamo aprendo il device criptato (ovvero attiviamo la decrittografazione):
sudo cryptsetup open --type luks /dev/sda cryptosdaEnter passphrase for /dev/sda:
NB 1: "cryptovdb" è il nome che diamo al device decrittografato. Possiamo dare un nome qualsia, ma è sempre bene scegliere nomi logici e parlanti.
NB 2: il device decrittografato lo troveremo in /dev/mapper/ con il nome scelto ( in questo esempio sarà /dev/mapper/cryptosda ).
Verifichiamo i dischi ora presenti e disponibili
sudo lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTSsda 8:0 0 5G 0 disk └─cryptosda 253:2 0 5G 0 crypt zd0 230:0 0 500M 0 disk └─keystore-rpool 253:0 0 484M 0 crypt /run/keystore/rpoolvda 252:0 0 40G 0 disk ├─vda1 252:1 0 512M 0 part /boot/grub│ /boot/efi├─vda2 252:2 0 1,8G 0 part │ └─cryptoswap 253:1 0 1,8G 0 crypt [SWAP]├─vda3 252:3 0 2G 0 part └─vda4 252:4 0 35,7G 0 part
Si noti il nuovo ``cryptosda`` come partizione di ``sda``: significa che è stato decrittografato ed è disponibile come un disco.
Possiamo ora formattare il disco:
sudo mkfs -t ext4 -L HDD-CRYPT /dev/mapper/cryptosdamke2fs 1.46.5 (30-Dec-2021)Creating filesystem with 1306624 4k blocks and 327040 inodesFilesystem UUID: 8ce48b03-80f1-4195-9731-f8493eebf209Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): doneWriting superblocks and filesystem accounting information: done
NB 1: -t ext4 qui chiediamo la formattazione nel formato "ext4" (ovvero lo standard Linux). Possiamo usare il formato che ci serve come "xfs", "btrfs", "hfs", "ntfs", "vfat", ecc...
NB 2: -L HDD-CRYPT qui diamo un'etichetta al filesystem. Qui il nome può essere quello che desideriamo
Verifichiamo la formattazione appena eseguita:
sudo blkid /dev/mapper/cryptosda /dev/mapper/cryptosda: LABEL="HDD-CRYPT" UUID="8ce48b03-80f1-4195-9731-f8493eebf209" BLOCK_SIZE="4096" TYPE="ext4"
Tutto OK. Ora montiamo il disco (faremo un montaggio al volo):
sudo mkdir /mnt/cryptosdasudo mount /dev/mapper/cryptosda /mnt/cryptosda
Proviamo a scrive, vedere e a cancellare
sudo cp -R /usr/share/doc /mnt/cryptosda/ls /mnt/cryptosda/docsudo /bin/rm -R /mnt/cryptosda/docls /mnt/cryptosda/
Criptazione PenDrive
Operiamo su un pendrive già formattato come tutti i dispositivi USB che possiamo comprare. Pertanto qualche messaggio che riporto sono warning perché le operazioni, come quella di criptazione, sono distruttive e irrecuperabili.
Verifichiamo come è stato mappato il nostro pendrive:
lsusbBus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hubBus 001 Device 002: ID ffff:5678 USB Disk 2.0Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
sudo dmesg|tail -10[12621.760637] usbcore: registered new interface driver uas[12622.763639] scsi 7:0:0:0: Direct-Access VendorCo ProductCode 2.00 PQ: 0 ANSI: 4[12622.765005] sd 7:0:0:0: Attached scsi generic sg1 type 0[12622.780063] sd 7:0:0:0: [sdb] 15728640 512-byte logical blocks: (8.05 GB/7.50 GiB)[12622.790412] sd 7:0:0:0: [sdb] Write Protect is off[12622.790429] sd 7:0:0:0: [sdb] Mode Sense: 03 00 00 00[12622.805659] sd 7:0:0:0: [sdb] No Caching mode page found[12622.805704] sd 7:0:0:0: [sdb] Assuming drive cache: write through[12622.873783] sdb:[12622.890046] sd 7:0:0:0: [sdb] Attached SCSI removable disk
sudo lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTSsda 8:0 0 5G 0 disk └─cryptosda 253:2 0 5G 0 crypt /mnt/cryptosdasdb 8:16 1 7,5G 0 disk zd0 230:0 0 500M 0 disk └─keystore-rpool 253:0 0 484M 0 crypt /run/keystore/rpoolvda 252:0 0 40G 0 disk ├─vda1 252:1 0 512M 0 part /boot/grub│ /boot/efi├─vda2 252:2 0 1,8G 0 part │ └─cryptoswap 253:1 0 1,8G 0 crypt [SWAP]├─vda3 252:3 0 2G 0 part └─vda4 252:4 0 35,7G 0 part
Il nostro pendrive "USB Disk 2.0" è stato mappato come sdb .
Procediamo criptando il pendrive e inserendo la passphrase "PenDrive#Test1":
sudo cryptsetup --verify-passphrase --verbose luksFormat /dev/sdbWARNING: Device /dev/sdb already contains a 'gpt' partition signature.
WARNING!========This will overwrite data on /dev/sdb irrevocably.
Are you sure? (Type 'yes' in capital letters): YES Enter passphrase for /dev/sdb: Verify passphrase: Existing 'gpt' partition signature on device /dev/sdb will be wiped.Existing 'gpt' partition signature on device /dev/sdb will be wiped.Existing 'PMBR' partition signature on device /dev/sdb will be wiped.Key slot 0 created.Command successful.
Procediamo //aprendo// il device criptato (ovvero attiviamo la decrittografazione):
sudo cryptsetup open --type luks /dev/sdb usbsdbEnter passphrase for /dev/sdb:
NB 1: "usbsdb" è il nome che diamo al device decrittografato. Possiamo dare un nome qualsia, ma è sempre bene scegliere nomi logici e parlanti.
NB 2: il device decrittografato lo troveremo in /dev/mapper/ con il nome scelto ( in questo esempio sarà /dev/mapper/usbsdb ).
Verifichiamo i dischi ora presenti e disponibili
sudo lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTSsda 8:0 0 5G 0 disk └─cryptosda 253:2 0 5G 0 crypt /mnt/cryptosdasdb 8:16 1 7,5G 0 disk └─usbsdb 253:3 0 7,5G 0 crypt zd0 230:0 0 500M 0 disk └─keystore-rpool 253:0 0 484M 0 crypt /run/keystore/rpoolvda 252:0 0 40G 0 disk ├─vda1 252:1 0 512M 0 part /boot/grub│ /boot/efi├─vda2 252:2 0 1,8G 0 part │ └─cryptoswap 253:1 0 1,8G 0 crypt [SWAP]├─vda3 252:3 0 2G 0 part └─vda4 252:4 0 35,7G 0 part
Si noti il nuovo usbsdb come //partizione// di sdb: significa che è stato decrittografato ed è disponibile come un disco.
Possiamo ora formattare il disco:
sudo mkfs -t exfat -L USB-CRYPT /dev/mapper/usbsdbexfatprogs version : 1.1.3Creating exFAT filesystem(/dev/mapper/usbsdb, cluster size=32768)
Writing volume boot record: doneWriting backup volume boot record: doneFat table creation: doneAllocation bitmap creation: doneUpcase table creation: doneWriting root directory entry: doneSynchronizing...
exFAT format complete!
Verifichiamo la formattazione appena eseguita:
sudo blkid /dev/mapper/usbsdb/dev/mapper/usbsdb: LABEL="USB-CRYPT" UUID="7EB6-ABE1" BLOCK_SIZE="512" TYPE="exfat" PTTYPE="dos"
Tutto OK. Ora montiamo il disco (faremo un montaggio al volo):
sudo mkdir /mnt/usbsdbsudo mount /dev/mapper/usbsdb /mnt/usbsdb
Proviamo a scrive, vedere e a cancellare
sudo cp -R /usr/share/doc /mnt/usbsdb/ls /mnt/usbsdb/docsudo /bin/rm -R /mnt/usbsdb/docls /mnt/usbsdb/
Uso PenDrive Criptato
Utile da sapere che se abbiamo usato il processo sopra non dobbiamo necessariamente usare il terminale per aprire il device e successivamente montarlo.
Con i desktop grafici riconoscono automaticamente la criptazione e richiedono la passphrase automaticamente, Una volta digitata la passphrase il pendirive viene montato automaticamente come una qualsiasi pennetta non crittografata.
Conclusione
La criptazione dei dischi è un'operazione doverosa anche nell'uso personale. I tool di installazione provvedono a fare la criptazione per noi. Resta la variante di criptazione per dischi aggiunti dopo l'installazione.
La guida ci permette di fare questo; l'operazione richiede un po' di impegno, ma nulla di eccessivamente complesso.
Da evidenziare che la guida resta elementare e non approfondisce diversi aspetti.
Un paio, però, valgono la pena di essere qui accennati:
- la criptazione può essere applicata all'intero disco che poi può essere usato in totpo o partizionato. Ma possiamo scegliere di applicare la criptazione ad una singola partizione del disco;
- cryptsetup non permette l'uso dei dispositivi criptati (come i pendrive) su altri computer a meno che non abbiano Linux;
- per ovviare al problema sopra bisogna usare altri programmi al posto di cryptsetup come, ad esempio, VeraCrypt.