Le système fonctionne comme GPG lorsque plusieurs personnes sont capables de déchiffrer un message : une clé unique (symmétrique) permet le déchiffrement, mais celle-ci est, à son tour, chiffrée avec la clé publique de chaque personne. Dans le cas de LUKS, les deux niveaux de chiffrement sont réalisés avec des clés symmétriques.

Pré-requis

L'implémentation la plus populaire de LUKS est probablement celle fournie avec la couche DM (Device Mapper) de Linux, via le module noyau dm-crypt, et l'utilitaire cryptsetup. C'est donc un paquetage à installer.

Initialiser un volume LUKS

Utiliser LUKS nécessite l'écriture préalable d'un bloc d'en-tête sur le volume à chiffrer. Comme toutes les autres, cette opération est réalisée avec l'utilitaire cryptsetup. Ici, une première clé de chiffrement sera demandée par le programme :

cryptsetup --size 256 --cipher 'aes-cbc-essiv:sha256' luksFormat /dev/nomvolume

On utilise ici une clé de type AES-256-CBC-SHA, je vous invite à consulter la page de manuel cryptsetup(8) pour une description détaillée des options.

Ouvrir un volume chiffré

L'accès à un volume chiffré se fait généralement au démarrage du système. Une clé valide devra être saisie par l'utilisateur :

cryptsetup luksOpen /dev/nomvolume luks-nomvolume

Le résultat de cette opération est la création par le système d'un périphérique de type bloc, /dev/mapper/luks-nomvolume. Il représente la version déchiffrée de /dev/nomvolume.

Fermer un volume déchiffré

C'est simplement l'opération inverse de la précédente.

cryptsetup luksClose luks-nomvolume

Gestion des clés dans l'en-tête

Ajouter une clé de déchiffrement

Cryptsetup permet la gestion des huit slots de clés présents dans l'en-tête LUKS. Notamment, on voudra être en mesure d'ajouter une nouvelle clé à l'en-tête :

cryptsetup luksAddKey /dev/nomvolume

Afficher les informations sur l'en-tête LUKS

Permet de voir quel(s) slot(s) sont occupés dans l'en-tête LUKS :

cryptsetup luksDump /dev/nomvolume

Supprimer une clé de l'en-tête LUKS

cryptsetup luksDelKey /dev/nomvolume numero_de_slot

Activation automatique au démarrage

Certaines distributions supportent l'activation automatique des volumes chiffrés, à l'aide d'un fichier /etc/crypttab. Son utilisation reste analogue à la phase d'ouverture du volume chiffré :

# Contenu de /etc/crypttab
# target source device key file options
luks-nomvolume /dev/nomvolume none luks

Remarques

Il est intéressant de noter que toutes les clés dans l'en-tête LUKS ont le même poids administratif. Par conséquent, chaque clé permettra la gestion de l'ensemble des informations dans l'en-tête, ce qui est à prendre en considération lors de l'intégration de LUKS dans les politiques de sécurité corporatives.