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 |
