Progetto

Generale

Profilo

EncryptedFilesystemUsingLUKS » Cronologia » Versione 8

Versione 7 (Amministratore Truelite, 08-08-2006 13:03) → Versione 8/30 (Amministratore Truelite, 08-08-2006 13:03)

[[TracNav(TOC)]] 

 h1. 
 = Come creare un filesystem cifrato usando LUKS 


 "LUKS":http://luks.endorphin.org/ = 

 [http://luks.endorphin.org/ LUKS] è un acronimo di "Linux Unified Key Setup" e si propone come lo standard per la crittografia dei dischi in sistemi linux (e non solo), offrendo un formato standard "on-disc", la possibilità di avere più di una coppia chiave-passphrase per l'accesso ed una gestione sicura di tutte le chiavi. 

 Un disco criptato con LUKS, nel caso lo si sia formattato con una filesystem compatibile (es. vfat) è accessibile anche dai sistemi Windows, usando "FreeOTFE":http://www.freeotfe.org/. [http://www.freeotfe.org/ FreeOTFE]. 

 <pre> 

 <pre> 

 <pre> 

 La macchina utilizzata al momento della scrittura di questa guida è utilizza una distribuzione GNU/Linux Ubuntu 6.06, relase "Dapper Drake" con kernel 2.6.15; è necessaria una versione di cryptsetup compilata con il supporto LUKS, molto probabilmente la versione attualmente presente in Debian Sid/Unstable dovrebbe andare bene, mentre credo che quella di Sarge non abbia il supporto necessario; è comunque possibile verificare la compatibilità lanciando il comando {{{cryptsetup --help}}} e controllando la presenza delle opzioni relative a LUKS. 

 Nel caso in cui il comando non fosse presente, è sufficente installarlo con {{{apt-get install cryptsetup}}}. 

 A questo punto è possibile iniziare il lavoro di preparazione del dispositivo, in questo caso una chiavetta USB da 128MB, rilevata dal sistema come {{{/dev/sda}}}. 

 La prima cosa da fare è verificare l'affidabilità del dispositivo ed, al tempo stesso, riempire tutto lo spazio disponibile con dei dati casuali rendendo di fatto molto più difficoltosi degli eventuali tentativi di attacco e compromissione del filesystem cifrato che verrà creato in seguito. 
 Prima di iniziare, va tenuto presente il fatto che a seconda della dimensione del disco, questo processo può richiedere molte ore, quindi se dovete lanciarlo su di un disco molto grande, vi conviene farlo prima di andare a dormire. 

 <pre> 
 {{{ 
 badblocks -c 10240 -s -w -t random -v /dev/sda 
 </pre> 

 <pre> 
 }}} 

 Se siete particolarmente paranoici potete utilizzare {{{ "/dev/urandom" }}} come sorgente di dati casuali e riempirci il disco. La casualità dei dati sarà migliore rispetto a quella del metodo precedente, ma l'operazione farà un uso intensivo della CPU e richiederà molte ore. 
 Il comando da eseguire è: 
 <pre> 
 {{{ 
 dd if=/dev/urandom of=/dev/sda 
 </pre> 

 <pre> 

 <pre> 

 }}} 

 Successivamente va partizionato il disco. In questo caso l'obiettivo è di creare un'unica partizione che occupi tutto lo spazio disponibile e per farlo ci sono diverse alternative, sia da linea di comando come {{{fdisk}}} o {{{cfdisk}}} che grafiche come {{{gparted}}} e {{{qtparted}}}. 

 Verrà quindi creata una nuova partizione, riconosciuta dal sistema come {{{/dev/sda1}}}. 

 A questo punto è possibile cifrare la partizione con LUKS e poi "agganciarla" al device-mapper, in modo che dm-crypt possa presentarla in maniera "trasparente" al sistema. Sottolineo l'importanza della scelta di una passphrase abbastanza lunga e complessa poiché l'utilizzo di una frase corta e/o facilmente indovinabile vanificherebbe l'utilizzo della crittografia. 
 I comandi da eseguire sono quindi: 
 <pre> 
 {{{ 
 cryptsetup --verbose --verify-passphrase luksFormat /dev/sda1 

 cryptsetup luksOpen /dev/sda1 sda1 
 </pre> 

 <pre> 
 <pre> 
 }}} 

 Se tutto è andato a buon fine, l'esecuzione del comando {{{ls -l /dev/mapper/}}} dovrebbe restituire il seguente output, confermando l'avvenuto "aggancio" della partizione criptata al device mapper. 
 {{{ 
 total 0 
 crw------- 1 root root 10, 63 Jul 16 01:34 control 
 brw-r----- 1 root root 253, 0 Jul 16 01:52 sda1 
 </pre> 

 }}} 

 Va quindi creato un filesystem sulla partizione criptata: 
 <pre> 
 {{{ 
 mkfs.ext3 -j -m 1 /dev/mapper/sda1 
 </pre> 

 }}} 

 e sarà possibile montarlo con 
 <pre> 
 {{{ 
 mount /dev/mapper/sda1 /mnt 
 </pre> 

 }}} 

 mentre i comandi per smontare filesystem e partizione criptata sono 
 <pre> 
 {{{ 
 umount /mnt 
 cryptsetup luksClose /dev/mapper/sda1 
 </pre> 

 }}} 

 Le distribuzioni sufficentemente moderne usano hal, d-bus e gnome-volume-manager (o l'equivalente per KDE) per la gestione dei volumi disponibili nel sistema: quando viene collegata al sistema la chiavetta usb contenente la partizione crittografata con LUKS, questa viene riconosciuta e compare una finestra che chiede di inserire la passphrase. 
 Se la passphrase inserita è corretta, la partizione viene montata e sarà possibile utilizzarla normalmente da tutte le applicazioni.