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 MOUNTPOINTS
sda 8:0 0 5G 0 disk
sr0 11:0 1 1024M 0 rom
zd0 230:0 0 500M 0 disk
└─keystore-rpool 253:0 0 484M 0 crypt /run/keystore/rpool
vda 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): YES
Enter 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 cryptosda
Enter 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 MOUNTPOINTS
sda 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/rpool
vda 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/cryptosda
mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 1306624 4k blocks and 327040 inodes
Filesystem UUID: 8ce48b03-80f1-4195-9731-f8493eebf209
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing 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/cryptosda
sudo mount /dev/mapper/cryptosda /mnt/cryptosda
Proviamo a scrive, vedere e a cancellare
sudo cp -R /usr/share/doc /mnt/cryptosda/
ls /mnt/cryptosda/doc
sudo /bin/rm -R /mnt/cryptosda/doc
ls /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:
lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID ffff:5678 USB Disk 2.0
Bus 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 lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 5G 0 disk
└─cryptosda 253:2 0 5G 0 crypt /mnt/cryptosda
sdb 8:16 1 7,5G 0 disk
zd0 230:0 0 500M 0 disk
└─keystore-rpool 253:0 0 484M 0 crypt /run/keystore/rpool
vda 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/sdb
WARNING: 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 usbsdb
Enter 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 MOUNTPOINTS
sda 8:0 0 5G 0 disk
└─cryptosda 253:2 0 5G 0 crypt /mnt/cryptosda
sdb 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/rpool
vda 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/usbsdb
exfatprogs version : 1.1.3
Creating exFAT filesystem(/dev/mapper/usbsdb, cluster size=32768)
Writing volume boot record: done
Writing backup volume boot record: done
Fat table creation: done
Allocation bitmap creation: done
Upcase table creation: done
Writing root directory entry: done
Synchronizing...
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/usbsdb
sudo mount /dev/mapper/usbsdb /mnt/usbsdb
Proviamo a scrive, vedere e a cancellare
sudo cp -R /usr/share/doc /mnt/usbsdb/
ls /mnt/usbsdb/doc
sudo /bin/rm -R /mnt/usbsdb/doc
ls /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.