LUKS (Linux Unified Key Setup) est le standard pour le chiffrement de disque sous Linux. Il repose sur dm-crypt et fournit un format sur disque standardisé, plusieurs phrases secrètes par volume et une gestion sécurisée des clés. Que vous ayez besoin de chiffrer une partition de données sur un serveur, de sécuriser le disque d’un ordinateur portable ou de répondre aux exigences de conformité pour les données au repos, LUKS est l’outil que tout administrateur Linux devrait maîtriser.
Ce guide couvre le chiffrement de partitions avec LUKS2, la gestion des emplacements de clés, la configuration du déverrouillage automatique au démarrage et la récupération des problèmes courants.
Prérequis
- Système Linux avec noyau 4.12+ (pour la prise en charge de LUKS2 et Argon2id)
cryptsetup2.0+ installé- Accès root ou sudo
- Une partition ou un disque de rechange à chiffrer (le formatage LUKS est destructif)
- Sauvegarde de toutes les données sur le périphérique cible
LUKS vs Autres Options de Chiffrement Linux
Avant de plonger dans le vif du sujet, voici comment LUKS se compare aux alternatives :
| Fonctionnalité | LUKS/dm-crypt | eCryptfs | fscrypt | VeraCrypt |
|---|---|---|---|---|
| Portée | Partition/disque complet | Par répertoire | Par répertoire | Partition/conteneur complet |
| Performance | Quasi native (AES-NI) | Plus lent (FS empilé) | Quasi native | Quasi native |
| Gestion des clés | Jusqu’à 32 emplacements | Enveloppe par utilisateur | Clés par répertoire | Mot de passe unique |
| Chiffrement du boot | Oui (avec initramfs) | Non | Non | Oui (bootloader personnalisé) |
| Standard sur Linux | Oui (par défaut) | Obsolète | Ext4/F2FS uniquement | Multiplateforme |
LUKS est le bon choix pour les partitions de serveur, le chiffrement complet de disque et tout scénario où vous avez besoin de plusieurs méthodes de déverrouillage (phrase secrète + fichier de clés + clé de récupération).
Chiffrer une Partition avec LUKS2
Étape 1 : Identifier Votre Périphérique Cible
lsblk -f
NAME FSTYPE SIZE MOUNTPOINT
sda 100G
├─sda1 ext4 50G /
├─sda2 swap 4G [SWAP]
└─sda3 46G
Dans cet exemple, /dev/sda3 est la partition non formatée que nous allons chiffrer. Vérifiez bien le nom du périphérique — luksFormat détruira toutes les données dessus.
Étape 2 : Installer cryptsetup
Sur Debian/Ubuntu :
sudo apt update && sudo apt install -y cryptsetup
Sur RHEL/Fedora/AlmaLinux :
sudo dnf install -y cryptsetup
Vérifiez que la version prend en charge LUKS2 :
cryptsetup --version
Vous avez besoin de la version 2.0.0 ou supérieure. Toute distribution moderne à partir de 2018 l’inclut.
Étape 3 : Initialiser le Chiffrement LUKS
sudo cryptsetup luksFormat --type luks2 /dev/sda3
Vous verrez une invite de confirmation et on vous demandera de définir une phrase secrète :
WARNING: Device /dev/sda3 already contains a 'ext4' superblock signature.
WARNING!
========
This will overwrite data on /dev/sda3 irrevocably.
Are you sure? (Type 'yes' in capital letters): YES
Enter passphrase for /dev/sda3:
Verify passphrase:
Choisissez une phrase secrète forte. C’est votre méthode de déverrouillage principale. Si vous la perdez et n’avez pas d’emplacement de clé de sauvegarde, les données sont perdues — c’est le principe même du chiffrement.
Ce que fait luksFormat en coulisses :
- Écrit un en-tête LUKS2 (16 Mo par défaut) au début de la partition
- Génère une clé maître aléatoire (AES 256 bits par défaut)
- Chiffre la clé maître avec votre phrase secrète en utilisant la dérivation de clé Argon2id
- Stocke la clé maître chiffrée dans l’emplacement de clé 0
Étape 4 : Ouvrir le Volume Chiffré
sudo cryptsetup open /dev/sda3 data_crypt
Cela demande votre phrase secrète, puis crée /dev/mapper/data_crypt — un périphérique bloc virtuel qui chiffre/déchiffre toutes les E/S de manière transparente.
Vérifiez qu’il est ouvert :
ls -la /dev/mapper/data_crypt
Étape 5 : Créer un Système de Fichiers et Monter
sudo mkfs.ext4 /dev/mapper/data_crypt
sudo mkdir -p /mnt/encrypted
sudo mount /dev/mapper/data_crypt /mnt/encrypted
Testez-le :
echo "Encryption works" | sudo tee /mnt/encrypted/test.txt
cat /mnt/encrypted/test.txt
Les données sont maintenant chiffrées au repos. Quiconque retire le disque sans la phrase secrète ne voit que des octets aléatoires.
Gérer les Emplacements de Clés LUKS
LUKS2 prend en charge jusqu’à 32 emplacements de clés. Chaque emplacement contient une copie chiffrée indépendamment de la clé maître. Cela signifie que vous pouvez avoir plusieurs phrases secrètes, fichiers de clés ou clés de récupération — tous ouvrant le même volume.
Ajouter une Phrase Secrète de Sauvegarde
sudo cryptsetup luksAddKey /dev/sda3
Vous entrerez d’abord la phrase secrète existante, puis la nouvelle. Celle-ci ira dans le prochain emplacement disponible.
Ajouter un Fichier de Clés
Les fichiers de clés permettent un déverrouillage automatisé (scripts, séquences de démarrage) sans saisir de phrase secrète :
sudo dd if=/dev/urandom of=/root/luks-keyfile bs=4096 count=1
sudo chmod 400 /root/luks-keyfile
sudo cryptsetup luksAddKey /dev/sda3 /root/luks-keyfile
Stockez les fichiers de clés en toute sécurité. Si le fichier de clés est sur le même disque non chiffré, cela annule le but. Conservez-le sur une partition root chiffrée séparée ou un jeton matériel.
Lister les Emplacements de Clés
sudo cryptsetup luksDump /dev/sda3 | grep -A5 "Keyslots:"
Pour une vue plus claire :
sudo cryptsetup luksDump /dev/sda3 | grep "Key Slot"
Supprimer un Emplacement de Clés
sudo cryptsetup luksRemoveKey /dev/sda3
Entrez la phrase secrète que vous souhaitez supprimer. Ou supprimez par numéro d’emplacement :
sudo cryptsetup luksKillSlot /dev/sda3 1
Ne supprimez jamais tous les emplacements de clés. Si vous supprimez le dernier, le volume devient définitivement inaccessible. cryptsetup vous avertira, mais ne comptez pas dessus.
Déverrouillage Automatique de LUKS au Démarrage
Pour les partitions de serveur qui doivent se monter automatiquement, vous avez deux options :
Option A : Fichier de Clés sur la Partition Root
Cela fonctionne lorsque la partition root est déjà chiffrée (ou est un disque de démarrage de confiance) et que vous souhaitez que les partitions secondaires se déverrouillent sans invite de phrase secrète.
- Créez le fichier de clés (si vous ne l’avez pas déjà fait) :
sudo dd if=/dev/urandom of=/root/luks-keyfile bs=4096 count=1
sudo chmod 400 /root/luks-keyfile
sudo cryptsetup luksAddKey /dev/sda3 /root/luks-keyfile
- Obtenez l’UUID de la partition LUKS :
sudo blkid /dev/sda3
/dev/sda3: UUID="a1b2c3d4-e5f6-7890-abcd-ef1234567890" TYPE="crypto_LUKS"
- Ajoutez à
/etc/crypttab:
echo 'data_crypt UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890 /root/luks-keyfile luks' | sudo tee -a /etc/crypttab
- Ajoutez à
/etc/fstab:
echo '/dev/mapper/data_crypt /mnt/encrypted ext4 defaults 0 2' | sudo tee -a /etc/fstab
- Reconstruisez l’initramfs :
Sur Debian/Ubuntu :
sudo update-initramfs -u
Sur RHEL/Fedora :
sudo dracut -f
Option B : Invite de Phrase Secrète au Démarrage
Si vous souhaitez la sécurité d’exiger une phrase secrète à chaque démarrage, ajoutez uniquement ceci à /etc/crypttab :
echo 'data_crypt UUID=a1b2c3d4-e5f6-7890-abcd-ef1234567890 none luks' | sudo tee -a /etc/crypttab
Le mot-clé none indique au système de demander une phrase secrète pendant le démarrage. C’est le comportement par défaut pour les partitions root chiffrées.
Vérifier l’État de Santé d’un Volume LUKS
Afficher les Détails du Volume
sudo cryptsetup luksDump /dev/sda3
Cela affiche la version LUKS, le chiffrement, le hachage, les emplacements de clés et la taille de l’en-tête. Utile pour vérifier les paramètres de chiffrement.
Tester les Performances de Chiffrement
cryptsetup benchmark
# Tests are approximate using memory only (no storage IO).
PBKDF2-sha256 1547453 iterations per second for 256-bit key
PBKDF2-sha512 987231 iterations per second for 256-bit key
Argon2id 8 iterations, 1048576 memory per thread for 256-bit key
# Algorithm | Key | Encryption | Decryption
aes-xts 256b 3512.0 MiB/s 3498.7 MiB/s
aes-xts 512b 2845.3 MiB/s 2830.1 MiB/s
Avec l’accélération matérielle AES-NI (présente sur tout processeur x86 moderne), vous verrez un débit de 2-3 Go/s — le chiffrement ajoute une surcharge négligeable.
Sauvegarder l’En-tête LUKS
Si l’en-tête LUKS est corrompu (secteurs défectueux, écrasement accidentel), vous perdez l’accès à l’ensemble du volume. Sauvegardez-le toujours :
sudo cryptsetup luksHeaderBackup /dev/sda3 --header-backup-file /root/sda3-luks-header.bak
Stockez cette sauvegarde hors système — sur une clé USB, un partage réseau sécurisé ou un coffre-fort. Quiconque possède la sauvegarde de l’en-tête et une phrase secrète valide peut déchiffrer le volume.
Restaurez-la si nécessaire :
sudo cryptsetup luksHeaderRestore /dev/sda3 --header-backup-file /root/sda3-luks-header.bak
Fermer et Démonter
Lorsque vous avez terminé, démontez et fermez proprement le volume :
sudo umount /mnt/encrypted
sudo cryptsetup close data_crypt
La partition est maintenant verrouillée. Les données sur /dev/sda3 sont inaccessibles jusqu’à ce que vous l’ouvriez à nouveau avec la phrase secrète ou le fichier de clés correct.
Résolution de Problèmes
“Device /dev/sda3 is in use” lors de la tentative de formatage : La partition est montée ou retenue par un autre processus. Exécutez lsof /dev/sda3 ou fuser -mv /dev/sda3 pour trouver ce qui l’utilise.
Le démarrage se bloque en attendant la phrase secrète : Si vous avez ajouté un volume LUKS à /etc/crypttab sans fichier de clés et que le volume n’est pas critique, ajoutez nofail aux options : data_crypt UUID=... none luks,nofail. Cela permet au démarrage de continuer après un délai d’attente.
“No key available with this passphrase” : Soit la phrase secrète est incorrecte, soit l’emplacement de clé a été supprimé. Essayez toutes les phrases secrètes que vous avez définies. Si aucune ne fonctionne, restaurez à partir d’une sauvegarde de l’en-tête.
luksFormat lent sur les gros disques : Le formatage lui-même est rapide (écrit uniquement l’en-tête). Mais si vous voulez effacer la partition de manière sécurisée d’abord, exécutez sudo cryptsetup open --type plain /dev/sda3 wipe && sudo dd if=/dev/zero of=/dev/mapper/wipe bs=1M status=progress && sudo cryptsetup close wipe avant le formatage.
Impossible de redimensionner la partition chiffrée : Fermez d’abord le volume, puis utilisez cryptsetup resize après avoir redimensionné la partition sous-jacente avec parted ou fdisk.
Résumé
- LUKS2 est le standard Linux pour le chiffrement de disque — utilisez
cryptsetup luksFormat --type luks2pour chiffrer n’importe quelle partition - Le chiffrement est transparent : une fois ouvert avec
cryptsetup open, toutes les lectures et écritures sont automatiquement chiffrées/déchiffrées - LUKS prend en charge jusqu’à 32 emplacements de clés — utilisez plusieurs phrases secrètes et fichiers de clés pour la flexibilité et la récupération
- Déverrouillage automatique au démarrage via
/etc/crypttabavec un fichier de clés stocké sur une partition root chiffrée - Sauvegardez toujours l’en-tête LUKS avec
luksHeaderBackup— la corruption de l’en-tête signifie une perte totale de données - La surcharge de performance est négligeable sur les processeurs modernes avec accélération matérielle AES-NI
- Vous ne pouvez pas chiffrer une partition en place — sauvegardez toujours les données avant d’exécuter
luksFormat
Automate SSL Certificates with Let’s Encrypt and Certbot | Configure UFW Firewall on Ubuntu Server | Restic Backups to Encrypted Cloud Storage