Créer et utiliser une partition chiffrée avec LUKS sous Linux

Mise à jour : 6 juin 2017

Quelques mots sur LUKS

LUKS, pour Linux Unified Key Setup, est le standard GNU/Linux pour le chiffrement des disques.

Une partition chiffrée est chiffrée via une clé, clé qui est générée lors de la création de la partition chiffrée et qui est protégée par un mot de passe (appelée phrase secrète).

LUKS a la particularité de supporter de multiples clés pour un même volume chiffré (ce qui permet de partager un accès sans divulger sa propre clé et/ou son propre mot de passe, de créer une clé/mot de passe de secours, …).

Une des utilisations possibles (que je conseille et détaille par la suite) et de laisser LUKS stocker les clés et donc de n’utiliser que le mot de passe lié à une clé pour déverrouiller une partition chiffrée.

Pour connaitre les paramètres de chiffrement compilés par défaut sur votre système (dont le type et la taille de la clé) :

 
sudo cryptsetup --help

# sur mon système (Linux version 3.16.0-4-amd64 (debian-kernel@lists.debian.org) (gcc version 4.8.4 (Debian 4.8.4-1) ) #1 SMP Debian 3.16.39-1+deb8u2 (2017-03-07)) :
#Paramètres de chiffrement compilés par défaut :
# loop-AES: aes, Clé 256 bits
# plain: aes-cbc-essiv:sha256, Clé: 256 bits, Hachage mot de passe: ripemd160
# LUKS1: aes-xts-plain64, Clé: 256 bits, Hachage en-tête LUKS: sha1, RNG: /dev/urandom

Créer une partition chiffrée avec LUKS

  Repérer le disque (et ses actuelles partitions)

Repérer la partition à chiffrer, ou le disque sur laquelle elle est située si l’on veut modifier les partitions de ce disque.

 
sudo fdisk -l
# ou
tree /dev/disk
# ou, si la partition était montée :
mount

Par la suite, le disque que je prend comme exemple est /dev/sdX sur lequel je chiffre la partition /dev/sdX1

  Démonter la partition  si elle était montée

Nous allons modifier la partition ( création d’une partition sécurisée, formatage), il est donc nécessaire de la démonter.
Si vous souhaitez modifier la table des partitions du disque, il est nécessaire de démonter toutes les partitions du disque.

 
sudo umount /mnt/mount_point_of_sdX1  
# ou
sudo umount /dev/sdX1 

  Editer la table des partitions du disque (optionnel)

Si vous souhaitez modifier la table des partitions du disque, voila la marche à suivre. Il est bien entendu possible de ne chiffrer que  certaines partitions d’un même disque. 

 
# lancer fdisk pour le disque 
#  l'argument est le périphérique disque (/dev/sdX dans mes exemples)
#  et non un lien (/dev/disk/by-label/...)
sudo fdisk /dev/sdX

# commandes fdisk : 
# 'm' afficher l'aide
m

# 'p' afficher la table de partitions
p # vérifier la table actuelle

# 'd' supprimer la partition
d # supprimer les partitions existantes

# 'g' créer une nouvelle table vide de partitions GPT
g # GPT est le standard à utiliser

# 'n' ajouter une nouvelle partition 
n # entrer un numéro et une taille quand demandé

# 'w' écrire la table sur le disque et quitter 
w

  Créer une partition LUKS sur la partition

  • cryptsetup --verbose luksFormat --verify-passphrase /dev/sdX1
    # WARNING!
    # ========
    # Cette action écrasera définitivement les données sur /dev/sdX1.
    #
    # Are you sure? (Type uppercase yes): YES
    # Saisissez la phrase secrète :
    # Vérifiez la phrase secrète :
    # Opération réussie.
    

    Choisissez une phrase secrète digne de sécurité !

    Pour choisir une clé de taille spécifique, utiliser l’argument
    – – key-size
    Attention aux ressources CPU nécessaires ! A mon sens, la valeur par défaut (256 bits) est suffisante.

    Attention, si la partition que vous chiffrez est un disque logiciel RAID (type md RAID array), vous devriez ajouter l’argument – – align-payload=xxx : cela permet d’aligner les blocs chiffrés avec les bandes (stripes) du RAID.
    Consultez l’aide ou ce site pour savoir comment calculer la valeur à donner à cet argument.

  Ouvrir la partition chiffrée

Avant de formater, il est nécessaire d’ouvrir la partition chiffrée (et il faudra le faire à chaque démarrage ou après la fermeture de la partition chiffrée).

 
sudo cryptsetup -v luksOpen /dev/sdX1 monVolume 

Le mot de passe vous est demandé.

Attention !
A présent, pour accéder au contenu de la partition chiffrée /dev/sdX1, il ne faut pas utiliser /dev/sdX1 mais le mapper créé lors de l’ouverture de la partition chiffrée : /dev/mapper/monVolume
(le nom du mapper a été spécifié lors de l’ouverture avec cryptsetup luksOpen /dev/sdX1 monVolume).

  Formater la partition chiffrée

Maintenant que la partition est ouverte et que l’on y accède via le mapper, nous pouvons la formater.

 
sudo mke2fs -t ext4 -L monVolume /dev/mapper/monVolume

Voila ! Il est à présent possible de monter le mapper, et de se servir de notre partition chiffrée. Voir ci-dessous.

Ouvrir puis montrer la partition chiffrée

  Ouvrir la partition chiffrée

 
sudo cryptsetup -v luksOpen /dev/sdX1 monVolume 
  • /dev/sdX1 est la partition sur laquelle a été créée la partition chiffrée LUKS ;
  • monVolume est le nom donné au mapper ;
  • Bien-sûr, le mot de passe vous est demandé.

Attention !
Pour accéder au contenu de la partition chiffrée /dev/sdX1, il ne faut pas utiliser /dev/sdX1 mais le mapper :  /dev/mapper/monVolume

  Monter le mapper de la partition chiffrée

 
# Création du point de montage (une fois pour toute)
sudo mkdir /mnt/monVolume

# Montage du mapper
sudo mount -v /dev/mapper/monVolume /mnt/monVolume

Démontrer puis fermer la partition chiffrée

  Démonter le mapper de la partition chiffrée

 
# Démontage du mapper
sudo umount -v /dev/mapper/monVolume
# ou
sudo umount -v /mnt/monVolume 

  Fermer la partition chiffrée

 
sudo cryptsetup -v luksClose monVolume 

 Scripts bash

  Ouvrir une partition chiffrée

 
# Ca viendra ...

  Fermer une partition chiffrée

 
# Ca viendra ...

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *