L'environnement système est une debian etch installée en 64bits sur une dedibox. Je vais utiliser le chiffrement de bloc avec LUKS utilisant dm-crypt. Nous ne chiffrerons pas la partition racine du système mais bien une partition de données.

Il faut tout d'abord vérifier qu'on a les outils nécessaires au chiffrement de partition.

# apt-get install cryptsetup dmsetup hashalot
[...]

Maintenant que les outils de base sont installés, on vérifie leur compatibilité avec l'utilisation qu'on souhaite en faire.

# cryptsetup --help
cryptsetup-luks 1.0.5
[...]
# dmsetup targets
zero             v1.0.0
mirror           v1.0.20
snapshot-origin  v1.6.0
snapshot         v1.6.0
crypt            v1.5.0
striped          v1.1.0
linear           v1.0.2
error            v1.0.1

# cat /proc/crypto | grep name
name         : aes
name         : sha256
name         : sha224
name         : sha1
name         : md5

la commande cryptsetup installée supporte bien LUKS et le noyau est capable de supporter le chiffrement.

Pour les architectures supportant le 64bit.

# modprobe aes-x86_64
# cat /proc/crypto
name         : aes
driver       : aes-asm
module       : aes_x86_64
priority     : 200
refcnt       : 1
type         : cipher
blocksize    : 16
min keysize  : 16
max keysize  : 32
[...]

Le module peut-être éventuellement ajouté au fichier /etc/modules.

Je dois maintenant créer la partition qui va être chiffrée et la déclarer au système grâce à partprobe.

# cfdisk /dev/sda
[...]
# apt-get install parted
[...]
# partprobe /dev/sda

Pour chiffrer une partition avec LUKS, il faut la "formater" avec cryptsetup et ensuite la déclarer au système "device mapper". Il est conseillé d'utiliser une phrase de mot de passe complexe.

# cryptsetup luksFormat /dev/sda8

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

Are you sure? (Type uppercase yes): YES
Enter LUKS passphrase:
Verify passphrase:
Command successful.
# cryptsetup luksOpen /dev/sda8 data
Enter LUKS passphrase: 
key slot 0 unlocked.
Command successful.
# ls /dev/mapper/
control  data

C'est gagné, la partition est maintenant accessible grâce au chemin /dev/mapper/data.

Il faut formater la partition, ici j'utilise ext3.

# mkfs.ext3 -m 0 /dev/mapper/data

La partition peut maintenant être utilisée par le système.

Pour assurer le montage de la partition au démarrage, il faut la déclarer dans le fichier /etc/crypttab. Cette déclaration permet de faire l'ouverture LUKS et la déclaration à "dev mapper" en une opération. Ensuite /etc/fstab pourra prendre le relais.

# cat /etc/crypttab
# <target name> <source device>         <key file>      <options>
data    /dev/sda8       none            luks,timeout=1

Ps: Le titre vient des "Bruce Schneier facts".
Ps2: Le formatage de la partition peut également se faire avec un version plus longue de la commande cryptsetup :

# cryptsetup --verify-passphrase --verbose --hash=sha256 --cipher=aes-cbc-essiv:sha256 --key-size=256 luksFormat /dev/sda8
[...]