Criptare una unità di memoria esterna USB - 22/08/2007

In questo breve articolo illustrerò il procedimento necessario per criptare il filesystem di una unità di memoria esterna usb, che sia hard disk esterno oppure una comune usb stick. Io utilizzerò una chiavetta usb da 128 Mb.

Iniziamo con l'installare i programmi di cui abbiamo bisogno. Su debianè sufficiente un

apt-get install cryptsetup util-linux dosfstools e2fsprogs

Fatto questo colleghiamo l'unità di memoria esterna al pc e identifichiamo tramite un `dmesg` a quale device a caratteriè stata assegnata, nel mio caso /dev/sda. Se si ha la necessità di suddividere l'unità in più partizioni, per esempio lasciandone alcune in chiaro ed altre criptate, lanciare il comando `cfdisk /dev/sda`: io procederò creando una prima partizione da 30Mb da criptare con filesytem ext3 e una seconda da circa 100Mb da lasciare in chiaro con filesystem fat.
I device assegnati alle partizioni sono rispettivamente /dev/sda1 per quella ext3 e /dev/sda5 per quella fat.

Formattiamo subito sda5:

debian:/home/andrea# mkfs.vfat /dev/sda5
mkfs.vfat 2.11 (12 Mar 2005)
debian:/home/andrea#

Creiamo un mapper device che punterà a `/dev/sda1` e inseriamo una password quando richiesto:


debian:/home/andrea# cryptsetup create usbstick /dev/sda1
Enter passphrase:
debian:/home/andrea# ls /dev/mapper/
control  usbstick
debian:/home/andrea#

Da questo momento in poi `/dev/mapper/usbstick` sarà il riferimento alla partizione criptata e dovrà essere ricreato ogni qualvolta vogliamo accedervi.
Procediamo quindi alla formattazione della partizione:


debian:/home/andrea# mkfs.ext3 /dev/mapper/usbstick
mke2fs 1.40-WIP (14-Nov-2006)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
7328 inodes, 29224 blocks
1461 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=30146560
4 block groups
8192 blocks per group, 8192 fragments per group
1832 inodes per group
Superblock backups stored on blocks:
8193, 24577
Writing inode tables: done
Creating journal (1400 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 33 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
debian:/home/andrea#

Montiamo la partizione e assegnamo i permessi:

debian:/home/andrea# mkdir /mnt/usbstick/
debian:/home/andrea# mount /dev/mapper/usbstick /mnt/usbstick/
debian:/home/andrea# chmod 777 /mnt/usbstick/

Adesso possiamo copiare i nostri file riservati in `/mnt/usbstick` e poi smontare la partizione. Voglio precisare che ogni qualvolta si scollegherà e ricollegherà il dispositivo durante la stessa sessione di lavoro molto probabilmente il kernel gli assegnerà device differenti e consecutivi. In tal caso sarà necessario rimuore il mapper device creato precedentemente per poi ricrearlo correttamente:

debian:/home/andrea# cryptsetup remove usbstick
debian:/home/andrea# cryptsetup create usbstick /dev/sdb1
Enter passphrase:
debian:/home/andrea# mount /dev/mapper/usbstick /mnt/usbstick/

Altra precisazione: nel caso in cui verrà inserita una password errata cryptsetup non restituirà alcun errore, bensì andrà comunque a creare il mapper device. Solo successivamente, durante il montaggio del device, verrà restituito un errore poichà il filesystem verrà ritenuto inconsistente.

debian:/home/andrea# mount /dev/mapper/usbstick /mnt/usbstick/
mount: you must specify the filesystem type




Name:
Email: (Will not appear online)
Comment:
Security Code: