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

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
Nessun oggetto della modifica
 
(70 versioni intermedie di 8 utenti non mostrate)
Riga 1: Riga 1:
==Introduzione==
{{Versioni compatibili|Wheezy|Jessie|Stretch|Buster}}
Apt-cacher � un programma che ha lo scopo di creare una cache di pacchetti deb su un server, per poi renderli disponibili a tutte le macchine presenti sulla LAN. In questo modo � possibile limitare la banda utlizzata in uscita e velocizzare i tempi di installazione.


A differenza di apt-proxy (http://apt-proxy.sourceforge.net/), apt-cacher ha una struttura completamente piatta, per cui i pacchetti dela cache sono conservati in una unica directory anche se provengono da repository diversi; questa soluzione ne rende l'utilizzo pi� semplice e immediato.
== Introduzione ==
                             
Generalmente si tende a pensare che un accesso indesiderato ai nostri dati possa avvenire da un'intrusione da rete. Certamente questo è lo scenario tipico, ma non bisognerebbe scordare che il più delle volte per accedere a un dato contenuto su un certo supporto, basta avere accesso "fisico" al supporto stesso.<br/>
==Installazione==
Questo è molto più importante oggi giorno di quanto non fosse fino a pochi anni fa a causa della diffusione di sistemi di memorizzazione di massa portabili, estremamente comodi e che ci stiamo abituando ad avere sempre con noi, nello zaino, in una tasca o marsupio.<br/>
Per installare apt-cache � sufficiente digitare sul server che dovr� contenere la cache
Altro scenario interessante è quello nel quale i dati in questione sono contenuti in un computer acceso e connesso alla rete, ma sono dati che ci interessa avere a disposizione esclusiva del nostro utente, e quindi se un'intrusione ci deve proprio essere è utile rendere all'intruso la vita molto dura nell'ottenimento di quei dati sensibili.
<pre>
 
# apt-get install apt-cacher
In questa guida sono contenuti i passi necessari per cifrare una partizione o una periferica (rimovibile o meno) o creare un file che useremo come loop device cifrata (con il vantaggio di essere estremamente trasportabile e archiviabile). Questo sarà mostrato nello scenario più semplice, quello con accesso ai file da parte di un singolo utente.<br/>
</pre>
La tecnologia usata è quella nota col nome di [http://code.google.com/p/cryptsetup/ LUKS] (Linux Unified Keys Setup),, che consente l'utilizzo della crittografia in scenari molto più articolati, con una base di compatibilità che andrà sempre crescendo in tutto il mondo Linux (questo è uno degli obiettivi del progetto).<br/>
È bene fare le cose fin da subito compatibili con uno standard che sarà sempre più importante oltre che ricco di potenzialità, soprattutto riflettendo sull'accresciuta rilevanza data alla riservatezza dei propri dati digitali, anche dagli utenti semplici.


==Configurazione==
== Prerequisiti e preparazione del sistema ==
Per configurare apt-cacher � necessario:
=== Moduli da caricare ===
Non c'è nulla da fare, è già tutto pronto. Se si volesse saperne di più, o se si sta utilizzando un [[kernel]] personalizzato, si raccomanda la lettura della [[#Moduli del kernel|sezione "Moduli del kernel"]] di questa guida.


1) modificare il file
=== Pacchetti necessari ===
<pre>
Per ottenere <code>cryptmount</code> e <code>cryptsetup</code> servirà installare i relativi pacchetti con [[privilegi di amministrazione]]:
/etc/default/apt-cacher
</pre>
ponendo ad 1 il valore di AUTOSTART. In questo modo apt-cacher si avvier� automaticamente ad ogni sessione. Nel caso vogliate avviare/fermare apt-cacher manualmente baster� usare il comando
<pre>
# /etc/init.d/apt-cacher {start|stop|restart|force-reload}
</pre>
2) modificare il file
<pre>
<pre>
/etc/apt-cacher/apt-cacher.conf
# apt install cryptmount cryptsetup
</pre>
</pre>
che contiene tutte le opzioni configurabili.
questo installerà anche tutte le [[dipendenze]] necessarie. In particolare verranno installati i pacchetti e le librerie per implementare il sistema di mappatura dei dispositivi (device-mapper) per il [[kernel]] Linux tramite il modulo <code>dm-crypt</code>.<br/>
Riportiamo il file di configurazione originale per completezza
Sia <code>cryptmount</code> che <code>cryptsetup</code> si propongono come frontend per l'utente finale allo scopo di consentire l'uso del Device Mapper.
<pre>
#################################################################
# This is the config file for apt-cacher. On most Debian systems
# you can safely leave the defaults alone.
#################################################################


# cache_dir is used to set the location of the local cache. This can
== Preparazione del file o della periferica ==
# become quite large, so make sure it is somewhere with plenty of space.
Per la preparazione del file system (su file o su periferica a blocchi fisica) criptato secondo LUKS possiamo usare <code>cryptmount</code> se vogliamo caratteristiche base di quest'ultimo. Per avere accesso a un supporto completo di LUKS, come dice il manuale stesso di <code>cryptmount</code>, è necessario usare <code>cryptsetup</code>.
cache_dir=/var/cache/apt-cacher


# The email address of the administrator is displayed in the info page
== Cryptsetup ==
# and traffic reports.
Per preparare un file di dimensione fissata (in base alla quantità e tipo di dati che vorremo salvare cifrati) usiamo il comando <code>dd</code>:<pre>$ dd if=/dev/zero of=/home/nomeutente/immagine_cifrata ibs=1M count=100</pre>
admin_email=root@localhost
per creare un file da poi usare di 100 MB nella home dell'utente ''nomeutente''.


# For the daemon startup settings please edit the file /etc/default/apt-cacher.
=== File ordinario montato in loop ===
Autentichiamoci come [[privilegi di amministrazione|root]] e montiamo il file appena creato in loop. Prima di tutto impostiamo il file appena creato come una [[loop device]]:
<pre>
# losetup -f /home/nomeutente/immagine_cifrata
</pre>
Controllare poi quale è stata associata con (in questo caso <code>/dev/loop0</code>, la prima):
# losetup -a
'''/dev/loop0''': ... ('''/home/nomeutente/immagine_cifrata''')


# Daemon port setting, only useful in stand-alone mode. You need to run the
=== Periferica a blocchi fisica ===
# daemon as root to use privileged ports (<1024).
Per chi invece di cifrare un file montato in loop, deve cifrare una block device ordinaria, basta che sappia quale nome le abbia assegnato il kernel (con precisione, perché la procedura seguente cancellerà tutti i dati nella periferica).
daemon_port=3142
{{Box|Periferiche|D'ora in poi chiameremo <code>/dev/periferica</code> la block device sulla quale scriveremo i dati cifrati, sia essa la periferica in loop del paragrafo precedente (<code>/dev/loop/0</code>) o una periferica ordinaria}}
Creiamo la partizione LUKS, con parametri di default (la scelta raccomandata, salvo esigenze particolari):
<pre>
# cryptsetup --verify-passphrase --verbose luksFormat /dev/periferica


# optional settings, user and group to run the daemon as. Make sure they have
WARNING!
# sufficient permissions on the cache and log directories. Comment the settings
========  ========
# to run apt-cacher as the native user.
This will overwrite data on /dev/periferica irrevocably.
group=www-data
user=www-data


# optional setting, binds the listening daemon to one specified IP. Use IP
Are you sure? (Type uppercase yes):
# ranges for more advanced configuration, see below.
</pre>
# daemon_addr=localhost
Come dice il messaggio bisogna rispondere con uno <code>'''YES'''</code> interamente maiuscolo.<br/>
Ci verrà di seguito chiesta una parola d'ordine e la sua conferma; mentre le digiteremo non vedremo nulla cambiare nel terminale:
<pre>
Enter LUKS passphrase:
Verify passphrase:


# If your apt-cacher machine is directly exposed to the Internet and you are
Command successful.
# worried about unauthorised machines fetching packages through it, you can
</pre>
# specify a list of IPv4 addresses which are allowed to use it and another
# list of IPv4 addresses which aren't.
# Localhost (127.0.0.1) is always allowed. Other addresses must be matched
# by allowed_hosts and not by denied_hosts to be permitted to use the cache.
# Setting allowed_hosts to "*" means "allow all".
# Otherwise the format is a comma-separated list containing addresses,
# optionally with masks (like 10.0.0.0/22), or ranges of addresses (two
# addresses separated by a hyphen, no masks, like '192.168.0.3-192.168.0.56').
allowed_hosts=*
denied_hosts=


# And similiarly for IPv6 with allowed_hosts_6 and denied_hosts_6.
=== Mappare e montare la partizione criptata ===
# Note that IPv4-mapped IPv6 addresses (::ffff:w.x.y.z) are truncated to
A questo punto dobbiamo dare istruzioni al device mapper di mappare la periferica LUKS appena creata in una block device virtuale sulla quale scrivere i nostri dati in chiaro (e poi essi saranno scritti cifrati su <code>/dev/periferica</code>):
# w.x.y.z and are handled as IPv4.
<pre># cryptsetup open --type luks /dev/periferica criptata</pre>
allowed_hosts_6=fec0::/16
Questo creerà la periferica <code>'''/dev/mapper/criptata'''</code>, sulla quale noi andremo a creare il file system che più ci interessa (su periferiche piccole come quella in esempio non conviene usare un file system con indicizzazione come reiserfs o ext3, bensì un più semplice ext2 o una FAT):
denied_hosts_6=
<pre># mkfs -t ext2 /dev/mapper/criptata</pre>
Non ci rimane che montarla in una cartella di prova per verificare che sia tutto corretto (funzionamento, dimensioni desiderate ecc.):
<pre># mount /dev/mapper/criptata /mnt/prova</pre>


# This thing can be done by Apache but is much simplier here - limit access to
=== Rimozione della periferica criptata ===
# Debian mirrors based on server names in the URLs
Per rimuovere la periferica cifrata bisogna innanzi tutto smontarla, poi bisogna dire a ''cryptsetup'' di chiudere la periferica (il che automaticamente eliminerà il nodo creato dal device mapper):
#allowed_locations=ftp.uni-kl.de,ftp.nerim.net,debian.tu-bs.de
<pre>
# umount /mnt/prova
# cryptsetup close criptata
</pre>


# Apt-cacher can generate usage reports every 24 hours if you set this
=== Rimozione di una loop device ===
# directive to 1. You can view the reports in a web browser by pointing
Nel caso in cui la nostra periferica sia un file montato in loop, è consigliabile eliminare il collegamento che il nostro file immagine ha con la periferica loop cui l'abbiamo associato; questo ci permetterà di spostare o eliminare il file senza creare malfunzionamenti nelle periferiche di loop, così come ci consentirà di aprire nuove periferiche in loop ripartendo dalla numero 0:
# to your cache machine with '/apt-cacher/report' on the end, like this:
<pre>
#     http://yourcache.example.com/apt-cacher/report
# losetup -d /dev/loop0
# Generating reports is very fast even with many thousands of logfile
</pre>
# lines, so you can safely turn this on without creating much
# additional system load.
generate_reports=1


# Apt-cacher can clean up its cache directory every 24 hours if you set
== Cryptmount ==
# this directive to 1. Cleaning the cache can take some time to run
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 di amministrazione]].<br/>
# (generally in the order of a few minutes) and removes all package
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:
# files that are not mentioned in any existing 'Packages' lists. This
<pre>
# has the effect of deleting packages that have been superseded by an
nome1 {
# updated 'Packages' list.
      chiave=valore
clean_cache=1
      chiave=valore
      ...
}


# The directory to use for apt-cacher access and error logs.
nome2 {
# The access log records every request in the format:
      chiave=valore
# date-time|client ip address|HIT/MISS/EXPIRED|object size|object name
      chiave=valore
# The error log is slightly more free-form, and is also used for debug
      ...
# messages if debug mode is turned on.
}
# Note that the old 'logfile' and 'errorfile' directives are
...
# deprecated: if you set them explicitly they will be honoured, but it's
...
# better to just get rid of them from old config files.
</pre>
logdir=/var/log/apt-cacher
;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.
;fstype: il tipo di file system (ext2, ext3, ext4, etc.) utilizzato per montare il dispositivo cifrato. Questo campo è obbligatorio.
;keyfile: il file che conterrà la chiave per decifrare il file system cifrato. Nel caso si scelga "luks" come valore per "keyformat", è fortemente consigliato utilizzare lo stesso valore scelto per "dev" oppure lasciare questo campo senza un valore. Questo campo è obbligatorio.
;keyformat: il tipo di sistema utilizzato per interagire con la chiave contenuta in "keyfile". In questa guida si farà riferimento al valore "luks" mentre, se non specificato, verrà assunto il valore di default "builtin".<br/>Per visualizzare tutti i formati disponibili è possibile eseguire il comando <code>cryptmount -k</code> .<br/>Il formato <code>builtin</code> salva la chiave in un file separato (da specificare nel campo <code>keyfile</code>), con "luks" invece la chiave è conservata all'inizio del file system. {{Box|Nota|Questa assunzione fatta da luks (che le chiavi, che possono essere multiple, risiedano all'inizio del file system) impedisce l'uso di luks con la possibilità di cryptmount di creare più file system criptati all'interno della stessa periferica. }}
;dir:il [[mountpoint]] che specifica il percorso assoluto della directory in cui verrà montato il file system cifrato. Crearlo se non dovesse esistere oppure, se già presente, assicurarsi che non contenga alcun file/directory al suo interno e che sia stato creato dallo stesso utente con cui si vuole in seguito montare il file system cifrato. In pratica un mountpoint creato da [[root]] impedirà il mount ad un utente normale (a meno di cambiare i permessi del punto di mount).
;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> .


# apt-cacher can use different methods to decide whether package lists need to
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.
# be updated,
# A) looking at the age of the cached files
# B) getting HTTP header from server and comparing that with cached data. This
# method is more reliable and avoids desynchronisation of data and index files
# but needs to transfer few bytes from the server every time somebody requests
# the files ("apt-get update")
# Set the following value to the maximum age (in hours) for method A or to 0
# for method B
expire_hours=0


# Apt-cacher can pass all its requests to an external http proxy like
=== File system criptato su partizione ===
# Squid, which could be very useful if you are using an ISP that blocks
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/>
# port 80 and requires all web traffic to go through its proxy. The
<u>Tutti i file presenti sulla partizione, se non salvati, verranno persi</u>.
# format is 'hostname:port', eg: 'proxy.example.com:8080'.
http_proxy=proxy.example.com:8080


# Use of an external proxy can be turned on or off with this flag.
==== Creazione di una voce in <code>cmtab</code> ====
# Value should be either 0 (off) or 1 (on).
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à:
use_proxy=0
<pre>
partizione_criptata {
        keyformat=luks
        dev=/dev/sda5
        keyfile=/dev/sda5
        dir=/home/pippo/crypt
        fstype=ext4
        mountoptions=nodev,nosuid
        cipher=aes
}
</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).


# External http proxy sometimes need authentication to get full access. The
==== Creazione della chiave ====
# format is 'username:password'.
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.
http_proxy_auth=proxyuser:proxypass
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).


# Use of external proxy authentication can be turned on or off with this flag.
Durante questa fase verrà chiesto:
# Value should be either 0 (off) or 1 (on).
#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.
use_proxy_auth=0
#di inserire per due volte una password a scelta.


# Rate limiting sets the maximum bandwidth in bytes per second to use
==== Creazione del file system ====
# for fetching packages. Syntax is fully defined in 'man wget'.
L'operazione finale consiste nella creazione del file system vero e proprio e nella sua mappatura.<br/>
# Use 'k' or 'm' to use kilobits or megabits / second: eg, 'limit=25k'.
Diciamo a <code>cryptmount</code> di preparare il volume per la creazione del file system:
# Use 0 or a negative value for no rate limiting.
<pre>
limit=0
# cryptmount --prepare partizione_criptata
 
# Debug mode makes apt-cacher spew a lot of extra debug junk to the
# error log (whose location is defined with the 'logdir' directive).
# Leave this off unless you need it, or your error log will get very
# big. Acceptable values are 0 or 1.
debug=0
 
# Adapt the line in the usage info web page to match your server configuration
# example_sources_line=deb&nbsp;http://<b>my.cacher.server:3142/</b>ftp.au.debian.org/debian&nbsp;unstable&nbsp;main&nbsp;contrib&nbsp;non-free
 
# Print a 410 (Gone) HTTP message with the specified text when accessed via
# CGI. Useful to tell users to adapt their sources.list files when the
# apt-cacher server is beeing relocated (via apt-get's error messages while
# running "update")
#cgi_advise_to_use = Please use http://cacheserver:3142/ as apt-cacher access URL
#cgi_advise_to_use = Server relocated. To change sources.list, run perl -pe "s,/apt-cacher\??,:3142," -i /etc/apt/sources.list
 
# Server mapping - this allows to hide real server names behind virtual paths
# that appear in the access URL. This method is known from apt-proxy. This is
# also the only method to use FTP access to the target hosts. The syntax is simple, the part of the beginning to replace, followed by a list
#of mirror urls, all space separated. Multiple profile are separated by semicolons
# path_map = debian ftp.uni-kl.de/pub/linux/debian ftp2.de.debian.org/debian ; ubuntu archive.ubuntu.com/ubuntu ;
#security security.debian.org/debian-security ftp2.de.debian.org/debian-security
# Note that you need to specify all target servers in the allowed_locations
# options if you make use of it. Also note that the paths should not overlap
# each other. FTP access method not supported yet, maybe in the future.
</pre>
</pre>
 
Diamo il comando di creazione del file system:
Le opzioni pi� importanti sono:
 
# <code>cache_dir</code> che determina la directory in cui verr� salvata la cache
# <code>allowed_hosts</code> che specifica uno o pi� indirizzi a cui limitare l'accesso alla cache
# <code>daemon_port</code> che specifica la porta sulla quale ascolta apt-cacher
 
==Client==
Non � necessario installare apt-cacher sui client. Per accedere alla cache potrete:
 
'''Metodo 1''' (pi� veloce)
 
modificare il file
 
<pre>
<pre>
/etc/apt/apt.conf
# mke2fs -t ext4 /dev/mapper/partizione_criptata
</pre>
</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>.}}
inserendo una riga da del tipo
Chiudiamo la fase di preparazione:
 
<pre>
<pre>
Acquire::http::Proxy "http://server_con_cache:porta/";
# cryptmount --release partizione_criptata
</pre>
</pre>


Chiariamo il concetto con un esempio. <br>
=== File system criptato su file ===
Supponiamo che il server abbia hostname computer e apt-cacher ascolti sulla porta 3142 (quella di default).  
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.
 
La nuova riga da inserire per utilizzare la cache sar�


==== Creazione di una voce in <code>cmtab</code> ====
Analogamente a quanto visto per una partizione, è necessario creare una voce nel file <code>/etc/cryptmount/cmtab</code>. Ad esempio:
<pre>
<pre>
Acquire::http::Proxy "http://computer:3142/";
file_criptato {
        keyformat=luks
        dev=/home/pippo/file_criptato.img
        keyfile=/home/pippo/file_criptato.img
        dir=/home/pippo/cryptfile
        fstype=ext4
        mountoptions=nodev,nosuid,noexec
}
</pre>
</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.


 
==== Creazione del file ====
'''Metodo 2'''
A differenza di quanto avveniva per la partizione, in questo caso il file deve essere effettivamente creato con:
 
dovrete solo modificare il file
 
<pre>
<pre>
/etc/apt/sources.list
$ dd if=/dev/zero of=/home/pippo/file_criptato.img bs=1M count=512
</pre>
</pre>
Per un file delle dimensioni di circa 512MB.<br/>
Notare che il comando va impartito come '''utente normale'''.


inserendo una riga da del tipo
==== Creazione della 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>
<pre>
deb http://server_con_cache:porta/repository_da_utilizzare/debian [flavour] [sezioni]
# cryptmount --generate-key 32 file_criptato
</pre>
</pre>


Chiariamo il concetto con un esempio. <br>
==== Creazione del file system ====
Supponiamo che il server abbia hostname computer e apt-cacher ascolti sulla porta 3142 (quella di default). Supponiamo poi che il repository utilizzato sia
Anche quest'operazione è in tutto e per tutto identica a quanto visto in precedenza:
 
<pre>
<pre>
deb http://ftp.it.debian.org/debian unstable main contrib non-free
# cryptmount --prepare file_criptato
</pre>  
# mke2fs -t ext4 /dev/mapper/file_criptato
 
# cryptmount --release file_criptato
La nuova riga da inserire per utilizzare la cache sar�
</pre>


== Uso del volume cifrato ==
Il grande vantaggio rispetto a cryptsetup è nell'uso quotidiano. Infatti, non è più richiesta l'autenticazione come super utente per montare o smontare il volume criptato (né che sia un volume fisico o un file in loop).
Ogni utente può dare:
<pre>
<pre>
deb http://computer:3142/ftp.it.debian.org/debian unstable main contriib non-free
$ cryptmount -m criptata
</pre>
</pre>
 
o anche semplicemente:
 
----
 
Baster� poi salvare e lanciare un
 
<pre>
<pre>
# apt-get update
$ cryptmount criptata
</pre>
</pre>
inserire la parola d'ordine, e usare il file system appena montato. Tutta la sicurezza è, a parte gli ottimi algoritmi di hash e cifratura usati che scongiurano, ragionevolmente, attacchi di forza bruta, nella parola d'accesso.


per cominciare ad utilizzare la cache.  
Uno schema di funzionamento diverso, quello con la chiave conservata altrove è interessante perché separa chiave e dati, lasciando alla memoria dell'utente solo il terzo ingrediente. Questo non è però nello standard luks, quindi non relativo a questa guida.
 
Importante notare che tutte le righe dovranno presentare la dicitura deb http e non deb ftp.
 
==Importare Pacchetti==
A questo punto siamo pronti per usare apt-cacher. Se per� si hanno gi� a disposizione tanti pacchetti installati sul server e presenti nella directory


Per smontare la periferica criptata basta, essendo autenticati come l'utente che ha montato il volume o super user:
<pre>
<pre>
/var/cache/apt/archives
$ cryptmount -u criptata
</pre>
</pre>


potreste volerli importare nella cache. Niente di pi� semplice :)
=== Gestione manuale ===
Per una gestione manuale dei volumi, bisogna usare i comandi <code>losetup</code>, <code>crytpsetup</code> e <code>mount</code>.<br/>
Uno script è forse il modo più indicato per avere un controllo estremamente preciso delle operazioni svolte in allocazione della risorsa criptata e seguente chiusura; due esempi in tal direzione sono presenti nella guida [[LUKS gestione manuale dei volumi: cryptsetup]].


Copiate tutti i pacchetti nella directory
== Approfondimenti ==
=== Moduli del kernel ===
==== Kernel precompilato Debian ====
{{Box|Hardware|A livello hardware la cifratura con algoritmo AES è molto leggera quindi può essere eseguita anche su macchine molto datate, o piccoli sistemi embedded.}}
La prima cosa da controllare prima di cimentarsi nella criptazione è l'abilitazione del kernel a usare l'algoritmo AES.<br/>
In un terminale eseguiamo:
<pre>$ cat /proc/crypto</pre>
e dovremmo ottenere (in base anche ai moduli caricati) qualcosa tipo:
<pre>
name        : aes
driver      : aes-asm
module      : aes_i586
priority    : 200
refcnt      : 1
selftest    : passed
type        : cipher
blocksize    : 16
min keysize  : 16
max keysize  : 32


name        : aes
driver      : aes-generic
module      : aes_generic
priority    : 100
refcnt      : 1
selftest    : passed
type        : cipher
blocksize    : 16
min keysize  : 16
max keysize  : 32
[...]
name        : md5
driver      : md5-generic
module      : kernel
priority    : 0
refcnt      : 1
selftest    : passed
type        : shash
blocksize    : 64
digestsize  : 16</pre>
Ovviamente a noi interessano le sezioni che iniziano con <code>'''name        : aes'''</code>. Se non dovessero comparire dobbiamo controllare che i moduli responsabili dell'<code>'''aes'''</code> siano caricati e ottenere un output simile a questo:
<pre>
<pre>
/var/cache/apt-cacher/import
$ lsmod |grep aes
aes_i586              16608  0
aes_generic            37066  1 aes_i586
</pre>
</pre>
 
(o aes-x86_64 in caso di architettura per kernel amd64).<br/>
e poi lanciate il comando
AES ci serve per la cifratura, ora dobbiamo pensare all'hash. Per l'hash serve l'algoritmo <code>sha256</code> (ovviamente potremmo voler usare lo <code>sha512</code>, per cui basterebbe cambiare il 256 in 512 in ogni occorrenza). È precompilato nel kernel Debian, ma non è detto che sia caricato (nel <code>/proc/crypto</code>, soprariportato, non è infatti presente) quindi carichiamolo:
 
<pre># modprobe sha256_generic</pre>
Nel file <code>/proc/crypto</code> si dovrebbero essere aggiunte le seguenti righe:
<pre>
<pre>
# /usr/share/apt-cacher/apt-cacher-import.pl
name        : sha256
</pre>
driver      : sha256-generic
module      : sha256_generic
priority    : 0
refcnt      : 3
selftest    : passed
type        : shash
blocksize    : 64
digestsize  : 32
name        : sha256
driver      : sha256-generic
module      : sha256_generic
priority    : 0
refcnt      : 1
type        : digest
blocksize    : 64
digestsize  : 32</pre>


che mette a disposizione tutti i pacchetti importati nella cache.
Infine l'ultimo modulo da caricare nel kernel è <code>dm-crypt</code>, la cui assenza impedisce a cryptmount di completare le operazioni richieste.<pre># modprobe dm-crypt</pre>


Non resta che augurare happy caching!
==== Kernel personalizzato ====
Se non usiamo un kernel precompilato Debian, dobbiamo controllare che l'algoritmo di cifratura sia stato compilato: dal menu "'''Linux Kernel Configuration'''" seguiamo la voce "'''Cryptographic options  --->'''" e abilitiamo la voce:
<pre>AES cipher algorithms</pre>
o la strettamente legata:
<pre>AES cipher algorithms (i586)</pre>


=== Pagine di manuale ===
*Principali:
::<code>$ man cryptsetup</code>
::<code>$ man cryptmount</code>
*Per il file di configurazione di <code>cryptmount</code>:
::<code>$ man cmtab</code>


----
{{Autori
Autore: giorsat <br>
|Autore = [[Utente:GipPasso|GipPasso]]
Esteso da: [[Utente:Sal|Sal]]
|Estesa_da=
: [[Utente:S3v|S3v]] 15:49, 3 mag 2016 (CEST) (cryptmount) (CEST)
|Verificata_da=
: [[Utente:HAL 9000|HAL 9000]] 10:07, 29 set 2019 (CEST)
|Numero_revisori = 1
}}


[[Categoria:Server]][[Categoria:Apt]]
[[Categoria:Filesystem]]
[[Categoria:Repository]]
[[Categoria:Crittografia]]

Versione attuale delle 08:09, 29 set 2019

Debian-swirl.png Versioni Compatibili

Debian 7 "wheezy"
Debian 8 "jessie"
Debian 9 "stretch"
Debian 10 "buster"

Introduzione

Generalmente si tende a pensare che un accesso indesiderato ai nostri dati possa avvenire da un'intrusione da rete. Certamente questo è lo scenario tipico, ma non bisognerebbe scordare che il più delle volte per accedere a un dato contenuto su un certo supporto, basta avere accesso "fisico" al supporto stesso.
Questo è molto più importante oggi giorno di quanto non fosse fino a pochi anni fa a causa della diffusione di sistemi di memorizzazione di massa portabili, estremamente comodi e che ci stiamo abituando ad avere sempre con noi, nello zaino, in una tasca o marsupio.
Altro scenario interessante è quello nel quale i dati in questione sono contenuti in un computer acceso e connesso alla rete, ma sono dati che ci interessa avere a disposizione esclusiva del nostro utente, e quindi se un'intrusione ci deve proprio essere è utile rendere all'intruso la vita molto dura nell'ottenimento di quei dati sensibili.

In questa guida sono contenuti i passi necessari per cifrare una partizione o una periferica (rimovibile o meno) o creare un file che useremo come loop device cifrata (con il vantaggio di essere estremamente trasportabile e archiviabile). Questo sarà mostrato nello scenario più semplice, quello con accesso ai file da parte di un singolo utente.
La tecnologia usata è quella nota col nome di LUKS (Linux Unified Keys Setup),, che consente l'utilizzo della crittografia in scenari molto più articolati, con una base di compatibilità che andrà sempre crescendo in tutto il mondo Linux (questo è uno degli obiettivi del progetto).
È bene fare le cose fin da subito compatibili con uno standard che sarà sempre più importante oltre che ricco di potenzialità, soprattutto riflettendo sull'accresciuta rilevanza data alla riservatezza dei propri dati digitali, anche dagli utenti semplici.

Prerequisiti e preparazione del sistema

Moduli da caricare

Non c'è nulla da fare, è già tutto pronto. Se si volesse saperne di più, o se si sta utilizzando un kernel personalizzato, si raccomanda la lettura della sezione "Moduli del kernel" di questa guida.

Pacchetti necessari

Per ottenere cryptmount e cryptsetup servirà installare i relativi pacchetti con privilegi di amministrazione:

# apt install cryptmount cryptsetup

questo installerà anche tutte le dipendenze necessarie. In particolare verranno installati i pacchetti e le librerie per implementare il sistema di mappatura dei dispositivi (device-mapper) per il kernel Linux tramite il modulo dm-crypt.
Sia cryptmount che cryptsetup si propongono come frontend per l'utente finale allo scopo di consentire l'uso del Device Mapper.

Preparazione del file o della periferica

Per la preparazione del file system (su file o su periferica a blocchi fisica) criptato secondo LUKS possiamo usare cryptmount se vogliamo caratteristiche base di quest'ultimo. Per avere accesso a un supporto completo di LUKS, come dice il manuale stesso di cryptmount, è necessario usare cryptsetup.

Cryptsetup

Per preparare un file di dimensione fissata (in base alla quantità e tipo di dati che vorremo salvare cifrati) usiamo il comando dd:

$ dd if=/dev/zero of=/home/nomeutente/immagine_cifrata ibs=1M count=100

per creare un file da poi usare di 100 MB nella home dell'utente nomeutente.

File ordinario montato in loop

Autentichiamoci come root e montiamo il file appena creato in loop. Prima di tutto impostiamo il file appena creato come una loop device:

# losetup -f /home/nomeutente/immagine_cifrata

Controllare poi quale è stata associata con (in questo caso /dev/loop0, la prima):

# losetup -a
/dev/loop0: ... (/home/nomeutente/immagine_cifrata)

Periferica a blocchi fisica

Per chi invece di cifrare un file montato in loop, deve cifrare una block device ordinaria, basta che sappia quale nome le abbia assegnato il kernel (con precisione, perché la procedura seguente cancellerà tutti i dati nella periferica).

Info.png Periferiche
D'ora in poi chiameremo /dev/periferica la block device sulla quale scriveremo i dati cifrati, sia essa la periferica in loop del paragrafo precedente (/dev/loop/0) o una periferica ordinaria

Creiamo la partizione LUKS, con parametri di default (la scelta raccomandata, salvo esigenze particolari):

# cryptsetup --verify-passphrase --verbose luksFormat /dev/periferica

WARNING!
========  ========
This will overwrite data on /dev/periferica irrevocably.

Are you sure? (Type uppercase yes):

Come dice il messaggio bisogna rispondere con uno YES interamente maiuscolo.
Ci verrà di seguito chiesta una parola d'ordine e la sua conferma; mentre le digiteremo non vedremo nulla cambiare nel terminale:

Enter LUKS passphrase:
Verify passphrase:

Command successful.

Mappare e montare la partizione criptata

A questo punto dobbiamo dare istruzioni al device mapper di mappare la periferica LUKS appena creata in una block device virtuale sulla quale scrivere i nostri dati in chiaro (e poi essi saranno scritti cifrati su /dev/periferica):

# cryptsetup open --type luks /dev/periferica criptata

Questo creerà la periferica /dev/mapper/criptata, sulla quale noi andremo a creare il file system che più ci interessa (su periferiche piccole come quella in esempio non conviene usare un file system con indicizzazione come reiserfs o ext3, bensì un più semplice ext2 o una FAT):

# mkfs -t ext2 /dev/mapper/criptata

Non ci rimane che montarla in una cartella di prova per verificare che sia tutto corretto (funzionamento, dimensioni desiderate ecc.):

# mount /dev/mapper/criptata /mnt/prova

Rimozione della periferica criptata

Per rimuovere la periferica cifrata bisogna innanzi tutto smontarla, poi bisogna dire a cryptsetup di chiudere la periferica (il che automaticamente eliminerà il nodo creato dal device mapper):

# umount /mnt/prova
# cryptsetup close criptata

Rimozione di una loop device

Nel caso in cui la nostra periferica sia un file montato in loop, è consigliabile eliminare il collegamento che il nostro file immagine ha con la periferica loop cui l'abbiamo associato; questo ci permetterà di spostare o eliminare il file senza creare malfunzionamenti nelle periferiche di loop, così come ci consentirà di aprire nuove periferiche in loop ripartendo dalla numero 0:

# losetup -d /dev/loop0

Cryptmount

Il passo di base da compiere con cryptmount è modificare il file di configurazione /etc/cryptmount/cmtab. Per questa operazione e per usare l'opzione --generate-key è necessario avere i privilegi di amministrazione.
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:

nome1 {
       chiave=valore
       chiave=valore
       ...
}

nome2 {
       chiave=valore
       chiave=valore
       ...
}
...
...
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.
fstype
il tipo di file system (ext2, ext3, ext4, etc.) utilizzato per montare il dispositivo cifrato. Questo campo è obbligatorio.
keyfile
il file che conterrà la chiave per decifrare il file system cifrato. Nel caso si scelga "luks" come valore per "keyformat", è fortemente consigliato utilizzare lo stesso valore scelto per "dev" oppure lasciare questo campo senza un valore. Questo campo è obbligatorio.
keyformat
il tipo di sistema utilizzato per interagire con la chiave contenuta in "keyfile". In questa guida si farà riferimento al valore "luks" mentre, se non specificato, verrà assunto il valore di default "builtin".
Per visualizzare tutti i formati disponibili è possibile eseguire il comando cryptmount -k .
Il formato builtin salva la chiave in un file separato (da specificare nel campo keyfile), con "luks" invece la chiave è conservata all'inizio del file system.
Info.png Nota
Questa assunzione fatta da luks (che le chiavi, che possono essere multiple, risiedano all'inizio del file system) impedisce l'uso di luks con la possibilità di cryptmount di creare più file system criptati all'interno della stessa periferica.
dir
il mountpoint che specifica il percorso assoluto della directory in cui verrà montato il file system cifrato. Crearlo se non dovesse esistere oppure, se già presente, assicurarsi che non contenga alcun file/directory al suo interno e che sia stato creato dallo stesso utente con cui si vuole in seguito montare il file system cifrato. In pratica un mountpoint creato da root impedirà il mount ad un utente normale (a meno di cambiare i permessi del punto di mount).
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 /proc/crypto .

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.
Tutti i file presenti sulla partizione, se non salvati, verranno persi.

Creazione di una voce in cmtab

La creazione di una voce nel file /etc/cryptmount/cmtab segue la sintassi per chiave/valore scritta in precedenza. Qui verrà utilizzata questa configurazione da adattare alle proprie necessità:

partizione_criptata {
        keyformat=luks
        dev=/dev/sda5
        keyfile=/dev/sda5
        dir=/home/pippo/crypt
        fstype=ext4
        mountoptions=nodev,nosuid
        cipher=aes
}

in particolare:

partizione_criptata
è il nome univoco assegnato che verrà utilizzato da cryptmount 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:
$ mkdir /home/pippo/crypt
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 cmatb alla partizione cifrata. Ad esempio con:

# cryptmount --generate-key 32 partizione_criptata

Viene generata una chiave di 32 byte (256 bit) per "partizione_criptata".
La lunghezza della chiave dipende dall'algoritmo di cifratura scelto (in questo caso "aes") tramite il valore "cipher" in "cmtab".
Consultare il file /proc/crypto 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:

  1. 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.
  2. 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.
Diciamo a cryptmount di preparare il volume per la creazione del file system:

# cryptmount --prepare partizione_criptata

Diamo il comando di creazione del file system:

# mke2fs -t ext4 /dev/mapper/partizione_criptata
Info.png Nota
Si noti che la periferica su cui scrivere in chiaro e che è poi mappata, attraverso il cifratore, su quella fisica, è in /dev/mapper esattamente come quando si fanno le cose manualmente con cryptsetup, che altro non è che uno strumento più a basso livello per l'interazione con dm_crypt.

Chiudiamo la fase di preparazione:

# cryptmount --release partizione_criptata

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.

Creazione di una voce in cmtab

Analogamente a quanto visto per una partizione, è necessario creare una voce nel file /etc/cryptmount/cmtab. Ad esempio:

file_criptato {
        keyformat=luks
        dev=/home/pippo/file_criptato.img
        keyfile=/home/pippo/file_criptato.img
        dir=/home/pippo/cryptfile
        fstype=ext4
        mountoptions=nodev,nosuid,noexec
}

in particolare:

file_criptato
è il nome univoco assegnato che verrà utilizzato da cryptmount 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.
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.

Creazione del file

A differenza di quanto avveniva per la partizione, in questo caso il file deve essere effettivamente creato con:

$ dd if=/dev/zero of=/home/pippo/file_criptato.img bs=1M count=512

Per un file delle dimensioni di circa 512MB.
Notare che il comando va impartito come utente normale.

Creazione della 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:

# cryptmount --generate-key 32 file_criptato

Creazione del file system

Anche quest'operazione è in tutto e per tutto identica a quanto visto in precedenza:

# cryptmount --prepare file_criptato
# mke2fs -t ext4 /dev/mapper/file_criptato
# cryptmount --release file_criptato

Uso del volume cifrato

Il grande vantaggio rispetto a cryptsetup è nell'uso quotidiano. Infatti, non è più richiesta l'autenticazione come super utente per montare o smontare il volume criptato (né che sia un volume fisico o un file in loop). Ogni utente può dare:

$ cryptmount -m criptata

o anche semplicemente:

$ cryptmount criptata

inserire la parola d'ordine, e usare il file system appena montato. Tutta la sicurezza è, a parte gli ottimi algoritmi di hash e cifratura usati che scongiurano, ragionevolmente, attacchi di forza bruta, nella parola d'accesso.

Uno schema di funzionamento diverso, quello con la chiave conservata altrove è interessante perché separa chiave e dati, lasciando alla memoria dell'utente solo il terzo ingrediente. Questo non è però nello standard luks, quindi non relativo a questa guida.

Per smontare la periferica criptata basta, essendo autenticati come l'utente che ha montato il volume o super user:

$ cryptmount -u criptata

Gestione manuale

Per una gestione manuale dei volumi, bisogna usare i comandi losetup, crytpsetup e mount.
Uno script è forse il modo più indicato per avere un controllo estremamente preciso delle operazioni svolte in allocazione della risorsa criptata e seguente chiusura; due esempi in tal direzione sono presenti nella guida LUKS gestione manuale dei volumi: cryptsetup.

Approfondimenti

Moduli del kernel

Kernel precompilato Debian

Info.png Hardware
A livello hardware la cifratura con algoritmo AES è molto leggera quindi può essere eseguita anche su macchine molto datate, o piccoli sistemi embedded.

La prima cosa da controllare prima di cimentarsi nella criptazione è l'abilitazione del kernel a usare l'algoritmo AES.
In un terminale eseguiamo:

$ cat /proc/crypto

e dovremmo ottenere (in base anche ai moduli caricati) qualcosa tipo:

name         : aes
driver       : aes-asm
module       : aes_i586
priority     : 200
refcnt       : 1
selftest     : passed
type         : cipher
blocksize    : 16
min keysize  : 16
max keysize  : 32

name         : aes
driver       : aes-generic
module       : aes_generic
priority     : 100
refcnt       : 1
selftest     : passed
type         : cipher
blocksize    : 16
min keysize  : 16
max keysize  : 32
[...]
name         : md5
driver       : md5-generic
module       : kernel
priority     : 0
refcnt       : 1
selftest     : passed
type         : shash
blocksize    : 64
digestsize   : 16

Ovviamente a noi interessano le sezioni che iniziano con name  : aes. Se non dovessero comparire dobbiamo controllare che i moduli responsabili dell'aes siano caricati e ottenere un output simile a questo:

$ lsmod |grep aes
aes_i586               16608  0 
aes_generic            37066  1 aes_i586

(o aes-x86_64 in caso di architettura per kernel amd64).
AES ci serve per la cifratura, ora dobbiamo pensare all'hash. Per l'hash serve l'algoritmo sha256 (ovviamente potremmo voler usare lo sha512, per cui basterebbe cambiare il 256 in 512 in ogni occorrenza). È precompilato nel kernel Debian, ma non è detto che sia caricato (nel /proc/crypto, soprariportato, non è infatti presente) quindi carichiamolo:

# modprobe sha256_generic

Nel file /proc/crypto si dovrebbero essere aggiunte le seguenti righe:

name         : sha256
driver       : sha256-generic
module       : sha256_generic
priority     : 0
refcnt       : 3
selftest     : passed
type         : shash
blocksize    : 64
digestsize   : 32
name         : sha256
driver       : sha256-generic
module       : sha256_generic
priority     : 0
refcnt       : 1
type         : digest
blocksize    : 64
digestsize   : 32

Infine l'ultimo modulo da caricare nel kernel è dm-crypt, la cui assenza impedisce a cryptmount di completare le operazioni richieste.

# modprobe dm-crypt

Kernel personalizzato

Se non usiamo un kernel precompilato Debian, dobbiamo controllare che l'algoritmo di cifratura sia stato compilato: dal menu "Linux Kernel Configuration" seguiamo la voce "Cryptographic options --->" e abilitiamo la voce:

AES cipher algorithms

o la strettamente legata:

AES cipher algorithms (i586)

Pagine di manuale

  • Principali:
$ man cryptsetup
$ man cryptmount
  • Per il file di configurazione di cryptmount:
$ man cmtab




Guida scritta da: GipPasso Swirl-auth40.png Debianized 40%
Estesa da:
S3v 15:49, 3 mag 2016 (CEST) (cryptmount) (CEST)
Verificata da:
HAL 9000 10:07, 29 set 2019 (CEST)

Verificare ed estendere la guida | Cos'è una guida Debianized