Gestion des phrases de passe et des en-têtes Luks

Mise à jour : Debian 10.8 Buster

Ce document décrit la gestion des phrases de passe et des en-têtes Luks

Sommaire

1 - Gestion des phrases de passe

1.1 - Slots disponibles

$ sudo  cryptsetup luksDump /dev/sdb1 |grep ENABLED
Key Slot 0: ENABLED
$ sudo cryptsetup luksDump /dev/sdb6 |grep luks2
0: luks2
1: luks2

1.2 - Ajout d'une nouvelle phrase de passe

$ sudo cryptsetup luksAddKey /dev/sdb1
Entrez une phrase de passe existante :
Entrez une nouvelle phrase secrète pour l'emplacement de clé :
Vérifiez la phrase secrète :
$ sudo cryptsetup luksAddKey /dev/sdb1 --key-file <chemin/fichier/phrase_existante>
Entrez une nouvelle phrase secrète pour l'emplacement de clé :
Vérifiez la phrase secrète :
$ sudo cryptsetup luksAddKey /dev/sdb1 --key-file <chemin/fichier/phrase_existante> <chemin/fichier/phrase_nouvelle>
$ sudo cryptsetup luksAddKey /dev/sdb1 --key-slot 3

1.2 - Suppression

Attention : luks ne prévient pas si l'on supprime la dernière phrase de passe! Une fois la dernière phrase de passe supprimée, l'accès au conteneur et à son contenu sera définitivement perdu (sauf si recharge de l'entête : voir ci-dessous).

$ sudo cryptsetup luksRemoveKey /dev/sdb1
Entrez la phrase secrète à effacer :
$ sudo cryptsetup luksRemoveKey /dev/sdb1 --key-file /etc/keys/passphrase
$ sudo cryptsetup luksKillSlot /dev/sdb1 2
Entrez toute phrase secrète restante :
$ sudo cryptsetup luksKillSlot /dev/sdb1 2 --key-file /etc/keys/passphrase

1.3 - Remplacement

$ sudo cryptsetup luksChangeKey /dev/sdb1
Entrez la phrase secrète à changer :
Entrez la nouvelle phrase secrète :
Vérifiez la phrase secrète :
$ sudo cryptsetup luksChangeKey /dev/sdb2 --key-file boot.key root.key

2 - Gestion des en-têtes Luks

2.1 - Protection

L’en-tête luks et les phrases de passe qui y sont stockés ne sont pas protégés en cas de bloc ou secteur défectueux. La corruption de l'en-tête provoquera la perte de l'accès au conteneur et à son contenu.

Il est donc conseillé de sauvegarder l'en-tête, par exemple dans une ou des partitions non chiffrées (boot, ESP, ...) et dans un gestionnaire de mots de passe sauvegardé.

$ sudo cryptsetup luksHeaderBackup /dev/sdb1 --header-backup-file <nom_fichier_backup>
$ sudo chown <user>:<user> <nom_fichier_backup>
.... et faire une sauvegarde du fichier!
$ sudo cryptsetup -v --header <nom_fichier_backup> luksOpen /dev/sdb1 test
$ sudo cryptsetup luksHeaderRestore /dev/sdb1 --header-backup-file <nom_fichier_backup>

WARNING!

========

Périphérique /dev/sdb1 contient déjà un en-tête LUKS. Remplacer l'en-tête détruira les emplacements de clés actuels.

Are you sure? (Type uppercase yes): YES

2.2 - Effacement

Sous réserve que le mot de passe n'ait pas été divulgué et que l'en-tête n'ait pas été recopié, la suppression de l'en-tête rend les données irrécupérables, ce qui peut-être utilisé comme méthode d'effacement des données.

$ sudo cryptsetup luksDump /dev/sdb1 |grep "offset:"
offset: 16777216 [bytes]
Area offset:32768 [bytes]

Dans le cas présent, l'offset est de 16777216 octets, soit 16 MiB

$ calc 16777216/1024/1024
16
$ sudo cryptsetup luksHeaderBackup /dev/sdb1 --header-backup-file header
$ du -h header
16M header
$ sudo dd if=/dev/zero of=/dev/sdb1 bs=1M count=16
16+0 enregistrements lus
16+0 enregistrements écrits
16777216 octets (17 MB, 16 MiB) copiés, 0,00894077 s, 1,9 GB/s