
Documentazione
- Wiki Ubuntu TrueCrypt + Dmsetup
Dal momento che cifrare i dispositivi con dmsetup ,direttamente, risulta troppo complicato per la maggior parte degli utenti, ci concentreremo su cryptsetup e una sua implementazione chiamata Luks, in grado di offrire un doppio livello di cifratura come gli altri tools (vedi Cryptoloop o AES-Loop).
Dm-crypt e’ un device mapper che utilizza le API (cryptoapi) del kernel serie 2.6, ma naturalmente non e’ possibile utilizzare direttamente il modulo senza un programma userspace dedicato a questo. Cryptestup, ed in particolare Luks (Linux Unified Key Setup), utilizzano l’header della partizione per immagazzinare le informazioni di encryption-setup, consentendoci (in contrasto con altri metodi di cifratura) di gestire:
* Modifica passphrase del volume cifrato senza re-crittare i dati
* Possibilita’ di assegnare piu’ passphrase per lo stesso volume cifrato
* Trasporto e migrazione dati su altri sistemi
La cosa importante da tenere a mente e’ che queste features non hanno impatto negativo sulla sicurezza generale dei nostri dati. La compatibilita’ con le API di Windows non e’ ancora possibile, ma presto lo sara’ grazie a TrueCrypt.
- Breve parentesi sulla sicurezza -
- Documento PDF Chaos Communication Camp 2007
Tecnicamente, la chiave cifrata, risiede nella memoria mentre il disco e’ in uso. Se un attaccante puo’ avere accesso fisico alla RAM, ha la possibilita’ di ottenere queste chiavi ed utilizzare in un qualsiasi momento. Ci sono alcune tecniche per evitare una situazione del genere:
Oltre all’accesso diretto o remoto con privilegi di root a /dev/mem, in alcuni sistemi (specialmente i notebook), durante l’ibernazione questi dati vengono scritti proprio nella memoria RAM. I software di virtualizzazione si comportano nella stessa maniera quando mandiamo in sospensione il sistema virtuale, ed infine persino la porta Firewire concede di default l’accesso DMA. Qualcuno, in un precedente articolo, mi chiedeva quale fosse il problema della sicurezza legato alla decisione degli sviluppatori di Ubuntu nel “lockare” l’accesso root alla porta firewire (raw1394) cambiando gruppo..ebbene pensiamo ad un dispositivo “embedded” disegnato specificatamente per essere connesso ad una macchina con porta firewire: Possiamo copiare interamente la memoria sul nostro dispositivo dotato di hard disk o flash memory, e con essa tutti i dati sensibili del legittimo proprietario senza lasciare alcuna traccia.

Il secondo problema e’ relativo alla semplicita’ (vedi immagine) di ricerca della chiave nella Dump Memory, tramite un semplice editor esadecimale (hex-editor).
Aggiornamento 22 Settembre 2010 10:56 (local time). Si ringrazia rent0n per la segnalazione
Prima di effettuare qualsiasi modifica alla partizione, riempire la stessa di dati “random” per rendere piu’ difficile la decrittazione:
/sbin/badblocks -c 10240 -s -w -t random -v /dev/sdX
- Guida alla cifratura con dm-crypt e cryptosetup -
Il modulo fondamentale per proseguire con questa guida (dm-crypt), proviene dal pacchetto cryptsetup:
sudo aptitude install cryptsetup hashalot
Una volta installato, aggiungiamo dm-crypt e gli altri moduli in /etc/modules, per fare in modo che vengano caricati all’avvio:
sudo echo dm_crypt >> /etc/modules
sudo echo dm_mod >> /etc/modules
Carichiamo il modulo:
sudo modprobe dm-crypt
1- Creare la partizione da crittare:
Qui bisogna lanciare prima:
ls -lR /dev/disk
In questo modo possiamo vedere come e’ stata mappata la nostra pendrive da Udev. Nell’esempio si trova collegata a /dev/sdg.
sudo cryptsetup luksFormat /dev/sdg
Ci verra’ chiesto di confermare la totale cancellazione della partizione. Per accettare digitiamo YES (caratteri maiuscoli).
Inseriamo due volte la chiave scelta (passphrase):
dyve@kubuntu:~$ sudo cryptsetup luksFormat /dev/sdf
WARNING!
========
This will overwrite data on /dev/sdg irrevocably.
Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
Command successful.
dyve@kubuntu:~$
2- Mappare la partizione crittata:
Scegliamo il nome da assegnare al nuovo device /dev/mapper:
sudo cryptsetup luksOpen /dev/sdg divi
Controlliamo l’aggiunta con:
ls /dev/mapper
dyve@kubuntu:~$ ls /dev/mapper
control divi
dyve@kubuntu:~$
3- Formattare la partizione crittata:
Scegliamo ad esempio il filesystem EXT3:
sudo mkfs.ext3 /dev/mapper/divi
4- Montare la partizione
:
Creiamo prima un mountpoint (divi):
sudo mkdir /media/divi
Montiamo la partizione nel punto di montaggio appena creato:
sudo mount /dev/mapper/divi /media/divi
Per smontare la partizione:
sudo umount /media/divi
Se vogliamo nuovamente montare la partizione, naturalmente non e’ piu’ necessario creare il filesystem:
sudo cryptsetup luksOpen /dev/sdg divi
dyve@kubuntu:~$ sudo cryptsetup luksOpen /dev/sdg divi
Enter LUKS passphrase:
key slot 0 unlocked.
Command successful.
dyve@kubuntu:~$
sudo mount /dev/mapper/divi /media/divi
5- Montare la partizione al boot:
Inseriamo in /etc/crypttab:
divi /dev/sdg none luks,check=ext2,retry=5
Analogamente in /etc/fstab:
# CryptoDevices
/dev/mapper/divi /media/divi auto defaults 0 0
NB: Per essere sicuri che la nostra pendrive o il nostro hard disk vengano riconosciuti in maniera permanente, non dobbiamo aggiungere il Device (/dev/sdg) bensi’ l’UUID, prelevandolo sempre con:
ls -lR /dev/disk
Durante il boot ci verra’ chiesta la password assegnata al dispositivo crittato. Possiamo sbagliare la pass per 5 volte (retry=5), dopodiche’ il sistema proseguira’ il boot normalmente senza montare il dispositivo crittato, che monteremo poi successivamente.
6- Aggiungere / Rimuovere le chiavi:
sudo cryptsetup luksAddKey /dev/sdg
sudo cryptsetup luksDelKey /dev/sdg
7- Smontare la partizione in sicurezza:
In aggiunta a quanto detto precedentemente, con dmsetup possiamo controllare i devicemappings. Se fosse ancora presente, chiunque potrebbe accedervi, persino a dispositivo non montato. Per smontare correttamente il dispositivo, lanciamo in sequenza:
sudo umount /media/divi && sudo cryptsetup luksClose divi
Con uno script diventa piu’ facile:
kate ~/umount.sh
#!/bin/sh
sudo umount /media/divi && sudo cryptsetup luksClose divi
Rendiamolo eseguibile:
sudo chmod a+x ~/umount.sh
Assegnamogli un icona e inseriamo il tutto nel nostro pannello.

Abbiamo visto come utilizzare dm-crypt e cryptsetup con dispositivi di archiviazione di massa rimovibili, adesso utilizziamo altri moduli del kernel e creiamo una ISO di backup (dati personali, directory) con chiave di cifratura, da masterizzare in seguito con un qualsiasi software di masterizzazione:
- AES – Cryptoloop -
Prima di caricare questi due moduli, installiamo le relative utility probabilmente non presenti di default nel nostro sistema. Per Ubuntu/Kubuntu:
sudo apt-get install loop-aes-utils aespipe
sudo modprobe aes cryptoloop
- Creare una immagine ISO crittata -
Utilizziamo mkisofs e una chiave 256-bit AES con l’utility aespipe, dove $backup= file da comprimere in ISO:
sudo mkisofs -r $backup | aespipe -e aes256 > $backup.iso
La password che andremo ad inserire dovra’ essere di almeno 20 caratteri. Apriamo il nostro programma di masterizzaqzione (k3b, Brasero) e selezioniamo ISO – CD/DVD:

- Montare un CD/DVD crittato -
L’utility losetup ci permette di creare un device di loopback per collegare il nostro CD/DVD cifrato alla linuxbox. Si tratta, in sostanza, di una partizione decrittata virtuale che rappresenta la partizione del CD/DVD, e puo’ essere montata normalmente con:
sudo losetup -e aes-256 /dev/loop0 /dev/scd0
Inseriamo la password specificata in precedenza e montiamo finalmente il disco con:
sudo mount -t iso9660 /dev/loop0 /media/cdrom
Per smontare il disco:
sudo umount /media/cdrom
sudo losetup -d /dev/loop0
Losetup puo’ essere saltato aggiungendo l’opzione -oencryption=aes-256 al comando di mount. In questo modo il device di loopack verra’ scollegato automaticamente:
sudo mount -t iso9660 /dev/scd0 /media/cdrom -oencryption=aes-256
Al termine del nostro lavoro sul disco:
sudo umount /media/cdrom
AES e Cryptoloop si possono utilizzare anche per crittare gli hard disk. Facciamo un esempio con una partizione /dev/sda1:
Come da manuale, generiamo del garbage (dati random) prima di iniziare con la cifratura vera e propria::
sudo dd if=/dev/urandom of=/dev/sda1 bs=1M
sudo losetup -e aes-256 /dev/loop0 /dev/sda1
La nuova partizione crittata (con chiave AES), accessibile via /dev/loop0, necessita ora di un filesystem:
sudo mkfs.ext3 /dev/loop0
Montiamo la partizione:
sudo mkdir /media/encrypted
sudo mount -t ext3 /dev/loop0 /media/encrypted
Smontaggio:
sudo umount /mnt/encrypted
sudo losetup -d /dev/loop0
Come nell’esempio precedente, saltiamo losetup:
sudo mount -t ext3 /dev/sda1 /media/encrypted -oencryption=aes-256
sudo umount /media/encrypted
Il tuo indirizzo ip:
38.107.179.232




on
on
on
Grande divilinu! Non so se lo hai fatto per me, ma mi piace pensarlo! Ti avevo suggerito questo articolo e non sai quanto mi fa piacere leggerlo ora!
saluti
pixQuota
bravo divi
già fatto il pdf … grazie
LuNaQuota
grazie..
divilinuQuota
se interessa ad altri un’altro metodo di cifratura http://forum.ubuntu-it.org/index.php/topic,145984.0.html
e se divi vorrà metterlo sul suo blog non c’è problema
ugaciakaQuota
@ugaciaka
il tool, che riassume quello che hai scritto, l’ho gia’ notato:
http://www.kde-apps.org/content/show.php/K-EncFS?content=54078
divilinuQuota
sì beh quello che ho scritto io è una risoluzione semplice. Ma non sai quanto ho penato per capire che rlog non serviva (dannati quelli di linux pro che davano per scontato una suse boh…) non serviva per gli utenti debian e derivati! L’ho scoperto leggendo la guida di k-encfs…quindi ho preso due piccioni con una fava!
ugaciakaQuota
ma è possibile anche crittare un server mail? in questo caso si avrebbe più sicurezza senza nessun inconveniente. oppure anche gli utenti dovrebbero sapere la password per leggere la loro mail? e in caso di web server?
grazie
ciao
matteoQuota
Cifrare un disco serve nel caso in cui vogliamo che i dati in esso contenuti non possano essere letti da nessuno (nessuno, senza password, puo’ montare il disco..ma solo cancellarlo)
Nel caso di un webserver, o un server mail, a parte il discorso fatto prima, il disco cifrato non serve a molto perche’ e’ gia’ montato..quindi nessuno deve inserire password per leggere le e-mail e non innalza il grado di sicurezza.
DivilinuxQuota
Ottim guida, la migliore che ho trovato in rete. Più chiara e semplice anche del dm-crypt wiki e di ArchWiki.
Solo un appunto: può essere utile, prima di iniziare il processo riempire il disco con dati random, in modo da rendere la decrittazione più difficile:
# /sbin/badblocks -c 10240 -s -w -t random -v /dev/sdX
Grazie!
rent0nQuota
@ rent0n:
Grazie a te per l’aggiunta. E’ da tempo che non faccio la revisione di questi articoli.
DivilinuxQuota