Utiliser un disque avec une partition chiffrée

Sous Linux Slackware il est possible depuis la version 12.0 d'utiliser une partition chiffrée pour conserver ses données.

Voici un petit récapitulatif dans le cas d'une utilisation avec un disque externe. Pour une utilisation sur un disque interne, les informations complémentaires se trouvent dans le fichier README_CRYPT.TXT présent à la racine de votre DVD Slackware.

Notez que l'on parle bien de disque externe et non de clé USB, la tenue dans le temps de ces dernières étant bien inférieure à celles des disques (la procédure doit être utilisable, à vos risques et périls).

Pour le reste de l'article, il est admis que votre disque est détecté en tant que /dev/sdb avec une seule partition /dev/sdb1. Et que ce disque ne comporte rien d'important que vous n'ayez sauvegardé préalablement.

Branchez votre disque mais ne le montez pas ; s'il est monté automatiquement, démontez-le.

Brouiller le disque

C'est une étape facultative et assez longue : elle consiste à remplir la partition de données aléatoires afin d'éviter un éventuelle analyse par des personnes trop curieuses (en clair, vous êtes paranoïaque).

dd if=/dev/urandom of=/dev/sdb1

Chiffrer la partition

Les opérations sérieuses commencent, le disque sera chiffré avec l'algorithme AES utilisé par défaut et une clé de 256 bits, ce qui assure une protection relativement pérenne d'un point de vue cryptographique.

Une phrase secrète vous sera demandée, pensez à utiliser une phrase suffisamment longue pour avoir une sécurité robuste (10 caractères sont un minimum).

cryptsetup -s 256 -y luksFormat /dev/sdb1

Vérifier le chiffrement et accéder à la partition

Pour être sûr que tout est en place, vous pouvez utiliser l'option luksDump pour connaître l'état de votre disque :

cryptsetup luksDump /dev/sdb1

Vous retrouverez de manière brute les informations sur le chiffrement et la première clé utilisée.

Votre disque peut maintenant être ouvert, toujours via la commande cryptsetup avec la demande de votre phrase secrète :

cryptsetup luksOpen /dev/sdb1 cryptdisk

Cela ne rend pas votre disque immédiatement utilisable. Vous obtenez un nouveau périphérique déclaré dans /dev/mapper sous le nom cryptdisk (vous pouvez donc choisir un autre nom arbitrairement, cela permet également l'accès à différents disques chiffrés avec des noms différents).

Et avant une première utilisation, vous devez formater ce nouveau disque pour pouvoir l'utiliser comme tout autre espace de stockage.

mkfs.ext2 /dev/mapper/cryptdisk

Bien sûr ext3 ou ext4 peuvent être utilisés si vous le préférez.

Et votre disque peut maintenant être monté et utilisé :

mount /dev/mapper/cryptdisk /media/hd0

Fermer l'accès au disque chiffré

Une fois vos opérations terminées, vous devrez démonter le disque et refermer l'accès chiffré via les commandes suivantes :

umount /media/hd0
cryptsetup luksClose cryptdisk

Le disque peut ensuite être débranché.

En cas d'arrêt normal de la machine, le disque sera refermé "proprement". En cas de coupure sauvage (déconnexion USB, coupure électrique) le disque se retrouvera inaccessible et il sera nécessaire de rouvrir l'accès avec la phrase secrète (on ne peut donc pas accéder aux données en débranchant sauvagement un disque et en le rebranchant sur une autre machine).

Utilisation régulière

Les opérations de mise en place ayant été effectuées, vous pouvez utiliser votre disque avec ces deux blocs de deux commandes pour respectivement ouvrir et monter le disque et démonter et fermer le disque :

cryptsetup luksOpen /dev/sdb1 cryptdisk
mount /dev/mapper/cryptdisk /media/hd0
umount /media/hd0
cryptsetup luksClose cryptdisk

Et pour quelques options de plus...

Quelques autres commandes qui peuvent vous être utiles...

Votre disque n'est pas vérifié lors d'un montage s'il n'est pas déclaré dans le fichier /etc/fstab ; vous devez donc lancer manuellement une vérification après avoir ouvert l'accès chiffré, mais avant de monter le disque :

cryptsetup luksOpen /dev/sdb1 cryptdisk
fsck /dev/mapper/cryptdisk

Vous pouvez ajouter sept clés après la première, ce qui peut vous permettre de partager votre disque avec d'autres personnes.

Toujours après avoir branché votre disque, lancez la commande suivante pour ajouter une clé dans un emplacement (slot) disponible. Vous devrez saisir une clé secrète déjà en place.

cryptsetup luksAddKey /dev/sdb1

Et si vous souhaitez supprimer une clé :

cryptsetup luksRemoveKey /dev/sdb1

La phrase secrète de la clé à supprimer sera alors demandée, mais vous devrez également fournir une autre phrase secrète valide pour confirmer l'opération.

cryptsetup luksKillSlot /dev/sdb1 1

Le chiffre en dernier argument correspond à l'emplacement de clé que vous souhaitez libérer (le premier étant zéro, on supprime donc ici le deuxième) et seule une autre phrase secrète que celle de la clé à supprimer sera demandée.

Vous pouvez vérifier l'ajout et la suppression de clés avec l'option luksDump comme présenté précédemment.

Quelques liens

dm-crypt à l'origine de cette fonctionnalité

Linux Unified Key Setup (LUKS) facilitant l'utilisation de dm-crypt

Page du blog de Denis Bodor sur le sujet

Page du blog de Sylvain Sarméjeanne sur une tentative de forçage d'une partition chiffrée

publié le 20 novembre 2009