Volumi criptati LUKS - Creazione e uso con cryptmount: differenze tra le versioni

esteso paragrafo relativo a cryptmount
m (template Autori)
(esteso paragrafo relativo a cryptmount)
Riga 141: Riga 141:


== Cryptmount ==
== Cryptmount ==
Il passo di base da compiere con <code>cryptmount</code> è modificare il file di configurazione <code>/etc/cryptmount/cmtab</code>. Per questa operazione e per usare l'opzione <code>--generate-key</code> è necessario essere super utente (quello col costumino azzurro attillatissimo sotto i mutandoni rossi...).<br/>
Il passo di base da compiere con <code>cryptmount</code> è modificare il file di configurazione <code>/etc/cryptmount/cmtab</code>. Per questa operazione e per usare l'opzione <code>--generate-key</code> è necessario avere i privilegi dell'utente [[root]].<br/>
La struttura del file è costituita da un nome (utilizzato dal device mapper per identificare un dispositivo) seguito da un blocco racchiuso da parentesi graffe che contiene coppie chiave/valore. È possibile inserire più nomi a cui assegnare il proprio blocco specifico. Ad esempio:
La struttura del file è costituita da un nome (utilizzato dal device mapper per identificare un dispositivo) seguito da un blocco racchiuso da parentesi graffe che contiene coppie chiave/valore. È possibile inserire più nomi a cui assegnare il proprio blocco specifico. Ad esempio:
<pre>
<pre>
Riga 147: Riga 147:
       chiave=valore
       chiave=valore
       chiave=valore
       chiave=valore
      chiave=valore
      chiave=valore
      ...
       ...
       ...
}
}
Riga 156: Riga 153:
       chiave=valore
       chiave=valore
       chiave=valore
       chiave=valore
      chiave=valore
      chiave=valore
      ...
       ...
       ...
}
}
Riga 164: Riga 158:
...
...
</pre>
</pre>
;NOME:utilizzato dal sistema di mappatura dei dispositivi per identificare ''univocamente'' un dispositivo (sia esso un file, una partizione o un disco). Può essere scelto liberamente.
;nome:utilizzato dal sistema di mappatura dei dispositivi per identificare ''univocamente'' un dispositivo (sia esso un file o una partizione). Può essere scelto liberamente.
;dev: la partizione da cifrare o il file che conterrà il file system cifrato. Quest'ultimo caso è utile se, ad esempio, si vuole avere un file system cifrato (con all'interno file e directory) senza avere una partizione separata. Questo campo è obbligatorio.
;dev: la partizione da cifrare o il file che conterrà il file system cifrato. Quest'ultimo caso è utile se, ad esempio, si vuole avere un file system cifrato (con all'interno file e directory) senza avere una partizione separata. Questo campo è obbligatorio.
;fstype: il tipo di file system (ext2, ext3, ext4, etc.) utilizzato per montare il dispositivo cifrato. Questo campo è obbligatorio.
;fstype: il tipo di file system (ext2, ext3, ext4, etc.) utilizzato per montare il dispositivo cifrato. Questo campo è obbligatorio.
Riga 173: Riga 167:
;cipher:l'algoritmo di cifratura utilizzato per ottenere il file system cifrato. La scelta varia in base alle proprie necessità, alla capacitò di calcolo della macchina e, ovviamente, alla disponibilità dei moduli di cifratura compilati per il proprio [[kernel]]; una lista è visibile nella directory <code>/proc/crypto</code> .
;cipher:l'algoritmo di cifratura utilizzato per ottenere il file system cifrato. La scelta varia in base alle proprie necessità, alla capacitò di calcolo della macchina e, ovviamente, alla disponibilità dei moduli di cifratura compilati per il proprio [[kernel]]; una lista è visibile nella directory <code>/proc/crypto</code> .


Eccone un esempio:
Nei prossimi paragrafi verranno elencati i passi per creare un file system criptato con LUKS per un'intera partizione oppure per un file system criptato contenuto in un singolo file.
 
=== File system criptato su partizione ===
Se si ha a disposizione una partizione su cui creare un file system criptato, è possibile utilizzarla in modo molto semplice per contenere file e directory cifrate.<br/>
<u>Tutti i file presenti sulla partizione, se non salvati, verranno persi</u>.
 
==== Creazione di una voce in <code>cmtab</code> ====
La creazione di una voce nel file <code>/etc/cryptmount/cmtab</code> segue la sintassi per chiave/valore scritta in precedenza. Qui verrà utilizzata questa configurazione da adattare alle proprie necessità:
<pre>
<pre>
criptata {
partizione_criptata {
         keyformat=luks
         keyformat=luks
         dev=/path/criptata.img
         dev=/dev/sda5
         keyfile=/path/criptata.img
         keyfile=/dev/sda5
         dir=/path/criptata
         dir=/home/pippo/crypt
         fstype=ext2
         fstype=ext4
         mountoptions=defaults
         mountoptions=defaults
         cipher=aes
         cipher=aes
}
}
</pre>
</pre>
in particolare:
;partizione_criptata:è il nome '''univoco''' assegnato che verrà utilizzato da <code>cryptmount</code> per identificare il file system criptato.
;dev=/dev/sda5:è il device associato alla partizione che si intende criptare. Va modificato in base alla partizione scelta.
;dir=/home/pippo/crypt:il punto di mount, ossia la directory "crypt" all'interno della home dell'utente "pippo". Questa directory deve esistere, in caso contrario deve essere creata dal normale utente (quindi '''non''' root) con:<pre>$ mkdir /home/pippo/crypt</pre>Chiaramente si può scegliere liberamente il nome e il [[path]] della directory, purché l'utente ne possegga i permessi di scrittura, e il nome ("pippo" va sostituito con quello del proprio utente).
==== Creazione della chiave ====
La creazione della chiave viene effettuata tramite il comando "cryptmount --generate-key" eseguito come utente root. Questo comando accetta due parametri: la lunghezza della chiave (espressa in byte) e il nome assegnato in <code>cmatb</code> alla partizione cifrata.
Ad esempio con:
<pre># cryptmount --generate-key 32 partizione_criptata</pre>
Viene generata una chiave di 32 byte (256 bit) per "partizione_criptata".<br/>
La lunghezza della chiave dipende dall'algoritmo di cifratura scelto (in questo caso "aes") tramite il valore "cipher" in "cmtab".<br/>
Consultare il file <code>/proc/crypto</code> per ottenere la lunghezza minima o massima consentita (valori "min keysize" e "max keysize") per un certo algoritmo. Ad esempio, per l'algoritmo "xts" è permessa una lunghezza massima di 64 byte (512 bit).
Durante questa fase verrà chiesto:
#di digitare la parole 'yes" per confermare l'operazione. Questo, come riporta anche il messaggio che apparirà sullo schermo, distruggerà probabilmente tutti i dati presenti sulla partizione scelta. Se si è pensato ad un backup, questa è l'ultima occasione per farlo.
#di inserire per due volte una password a scelta.
==== Creazione del file system ====
L'operazione finale consiste nella creazione del file system vero e proprio e nella sua mappatura.<br/>
Diciamo a <code>cryptmount</code> di preparare il volume per la creazione del file system:
<pre>
# cryptmount --prepare partizione_criptata
</pre>
Diamo il comando di creazione del file system:
<pre>
# mke2fs -t ext4 /dev/mapper/partizione_criptata
</pre>
{{Box|Nota|Si noti che la periferica su cui scrivere in chiaro e che è poi mappata, attraverso il cifratore, su quella fisica, è in <code>/dev/mapper</code> esattamente come quando si fanno le cose manualmente con cryptsetup, che altro non è che uno strumento più a basso livello per l'interazione con <code>dm_crypt</code>.}}
Chiudiamo la fase di preparazione:
<pre>
# cryptmount --release partizione_criptata
</pre>
=== File system criptato su file ===
Nel caso non si abbia una partizione dedicata (o non si voglia crearne una), la scelta di un file come "contenitore" del file system criptato è una soluzione decisamente comoda. Questo approccio ha il vantaggio, oltre a quello di essere semplice da implementare e da gestire, di permettere un'agevole copia del file stesso per esigenze di backup.


Nell'esempio si è configurato cryptmount per usare un file ordinario, da montare in loop; si sarebbe potuto specificare una periferica a blocchi fisica, modificando il parametro <code>dev</code>.<br/>
==== Creazione di una voce in <code>cmtab</code> ====
Ultima considerazione, è l'opportunità di creare la cartella <code>/path/mount-point-crip</code>.
Analogamente a quanto visto per una partizione, è necessario creare una voce nel file <code>/etc/cryptmount/cmtab</code>. Ad esempio:
<pre>
file_criptato {
        keyformat=luks
        dev=/home/pippo/file_criptato.img
        keyfile=/home/pippo/file_criptato.img
        dir=/home/pippo/cryptfile
        fstype=ext4
        mountoptions=defaults
        cipher=aes
}
</pre>
in particolare:
;file_criptato:è il nome '''univoco''' assegnato che verrà utilizzato da <code>cryptmount</code> per identificare il file system criptato.
;dev=/home/pippo/file_criptato.img:è il nome del file che conterrà il file system criptato. Può trovarsi in punto qualunque del file system, purché l'utente vi abbia accesso in scrittura.<br/>Il nome qui scelto ("file_criptato.img") è puramente indicativo.
;dir=/home/pippo/cryptfile:il punto di mount, ossia la directory "cryptfile" all'interno della home dell'utente "pippo". Valgono le stesse considerazioni scritte per un file system criptato su partizione.


Se usiamo un file in loop, creiamolo con il comando <code>dd</code>, esattamente come fatto per cryptsetup.
==== Creazione del file ====
A differenza di quanto avveniva per la partizione, in questo caso il file deve essere effettivamente creato con:
<pre>
$ dd if=/dev/zero of=/home/pippo/file_criptato.img bs=1M count=512
</pre>
Per un file delle dimensioni di circa 512MB.<br/>
Notare che il comando va impartito come '''utente normale'''.


=== Creazione della chiave ===
==== Creazione della chiave ====
Diamo a cryptmount, necessariamente da super utente, istruzioni per creare la chiave:
La creazione della chiave è identica a quella già vista per una partizione e valgono ancora le considerazioni precedentemente illustrate, cambia solo il nome identificativo:
<pre>cryptmount --generate-key 32 criptata</pre>
<pre>
Si noti che basta indicare a cryptmount <code>criptata</code> non solo durante l'uso ma anche nella fase di creazione.
# cryptmount --generate-key 32 file_criptato
</pre>


=== Formattazione ===
==== Creazione del file system ====
Diciamo a cryptmount di preparare il volume per la formattazione:
Anche quest'operazione è in tutto e per tutto identica a quanto visto in precedenza:
<pre>cryptmount --prepare criptata</pre>
<pre>
Diamo il comando di formattazione vero e proprio:
# cryptmount --prepare file_criptato
<pre>mkfs -t ext2 /dev/mapper/criptata</pre>
# mke2fs -t ext4 /dev/mapper/file_criptato
{{Box|Nota|Si noti che la periferica su cui scrivere in chiaro e che è poi mappata, attraverso il cifratore, su quella fisica, è in <code>/dev/mapper</code> esattamente come quando si fanno le cose manualmente con cryptsetup, che altro non è che uno strumento più a basso livello per l'interazione con <code>dm_crypt</code>.}}
# cryptmount --release file_criptato
Chiudiamo la fase di preparazione (a parte l'attenzione da mettere ai permessi da dare alla cartella di più alto livello creata da mkfs, come sempre al primo montaggio di un file system appena creato):
</pre>
<pre>cryptmount --release criptata</pre>


== Uso del volume cifrato ==
== Uso del volume cifrato ==
Riga 224: Riga 281:
|Autore = [[Utente:GipPasso|GipPasso]]
|Autore = [[Utente:GipPasso|GipPasso]]
|Estesa_da=
|Estesa_da=
: [[Utente:S3v|S3v]] 20:12, 4 feb 2016 (CEST)
: [[Utente:S3v|S3v]] 15:49, 3 mag 2016 (CEST) (cryptmount) (CEST)
|Verificata_da=
|Verificata_da=
: [[Utente:HAL 9000|HAL 9000]] 18:46, 20 giu 2014 (CEST)
: [[Utente:HAL 9000|HAL 9000]] 18:46, 20 giu 2014 (CEST)
6 999

contributi