Raven - Blog
21. Juillet 2022

LUKS : le standard de chiffrement sous Linux

Posté le 21. Juillet 2022  •  4 minutes  • 808 mots  • Autres langues:  English

Un peu comme pour mon article sur TLS, je suis dans l’obligation de faire un point de langage avant de commencer : on dit chiffrer, bordel !

Pardon pour la forme, mais dans le milieu informatique les termes “crypter”, “cryptage” et autre “désencrypter”, ça n’existe pas et ça me fait saigner des oreilles. Si vous voulez une explication claire et limpide sur ce sujet, je vous recommande chaudement la ressource, que dis-je, le bien public qu’est le site : chiffrer.info.

On dit chiffrer bordel !

Dans cet article, je vais vous présenter LUKS, pour Linux Unified Key Setup, qui est le standard de chiffrement pour les systèmes basés sur GNU/Linux. Bien évidemment, il existe des alternatives mais on peut tout de même parler de LUKS comme un incontournable.

Chiffrement d’une partition

Dans notre exemple, nous utilisons Debian 11. Je vous recommande d’utiliser LVM pour gérer vos partitions et notamment s’il y a du chiffrement. Mais vous pouvez utiliser des partitions physiques sur vos disques si vous le souhaitez.

1
lvcreate -L 500M -n datasLuksLV VG1
1
cryptsetup luksFormat /dev/VG1/datasLuksLV

Vous pouvez préciser diverses options disponibles dans le man de cryptsetup. Toutefois, les options par défaut sont en adéquation aux règles de l’art si votre distribution est récente ainsi que votre version de cryptsetup.

C’est à cette étape que vous devez choisir la passphrase qui permettra de déchiffrer la partition. Faites-vous plaisir sur la génération aléatoire : au moins 150 bits d’entropie pour cette passphrase qui protègera vos données. Stockez-la dans votre gestionnaire de mot de passe.

Notez que l’on peut mettre jusqu’à 8 clés/passphrase différentes car il y a 8 slots (pour avoir différentes passphrases pour différents utilisateurs par exemple).

1
cryptsetup luksOpen /dev/VG1/datasLuksLV datasLuks
1
mkfs.ext4 /dev/mapper/datasLuks
1
mount /dev/mapper/datasLuks /mnt/datasLuks

Vous êtes libre ensuite d’adapter votre fstab. Votre partition chiffrée est désormais prête à l’usage 👍

Gestion de l’en-tête LUKS

L’en-tête LUKS contient les métadonnées nécessaires au déchiffrement de la partition :

L’en-tête est placé en début de partition, s’il est perdu ou illisible (suite à un secteur disque défectueux par exemple) alors toute votre partition chiffrée sera perdue car elle ne sera plus ouvrable.

L’en-tête LUKS doit donc absolument être sauvegardé au même titre que votre passphrase

Afficher l’en-tête LUKS

Voici la sortie de la commande cryptsetup luksDump /dev/VG1/datasLuksLV :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
LUKS header information
Version:       	2
Epoch:         	3
Metadata area: 	16384 [bytes]
Keyslots area: 	16744448 [bytes]
UUID:          	66490eef-77e1-4271-ba81-ab70466a3962
Label:         	(no label)
Subsystem:     	(no subsystem)
Flags:       	(no flags)

Data segments:
  0: crypt
	offset: 16777216 [bytes]
	length: (whole device)
	cipher: aes-xts-plain64
	sector: 512 [bytes]

Keyslots:
  0: luks2
	Key:        512 bits
	Priority:   normal
	Cipher:     aes-xts-plain64
	Cipher key: 512 bits
	PBKDF:      argon2i
	Time cost:  18
	Memory:     242178
	Threads:    2
	Salt:       83 a5 d8 a1 24 c6 7d db 8b 18 51 51 8a f7 3c 2a
	            e6 cd 37 e3 24 2b 9f 13 77 ee 6c 16 14 9e cd ed
	AF stripes: 4000
	AF hash:    sha256
	Area offset:32768 [bytes]
	Area length:258048 [bytes]
	Digest ID:  0
Tokens:
Digests:
  0: pbkdf2
	Hash:       sha256
	Iterations: 125547
	Salt:       ba 52 04 a7 cd 7e 7d b1 51 28 c9 35 b8 8f 03 ac
	            09 43 97 03 01 16 ad d3 b6 3c 5d d3 7b 3a 44 d0
	Digest:     9c de 6f c5 4d b7 c5 35 86 4a ac c3 ea 64 36 3c
	            8a 49 8d fe 0f 16 35 9e 2d 1c e2 8d 79 70 20 6a

Sauvegarder l’en-tête LUKS

1
cryptsetup luksHeaderBackup /dev/VG1/datasLuksLV --header-backup-file headerLuks.backup

Restaurer l’en-tête LUKS

1
cryptsetup luksHeaderRestore /dev/VG1/datasLuksLV --header-backup-file headerLuks.backup

Supprimer l’en-tête LUKS

Il est possible de supprimer l’en-tête et donc rendre les données définitivement inaccessibles s’il n’y a pas de backup. Cela peut aussi être utile si les données de cet en-tête sont corrompues et que l’on souhaite ensuite procéder à une restauration.

1
cryptsetup luksErase /dev/VG1/datasLuksLV

Vous avez désormais les bases pour chiffrer vos partition avec LUKS. Dans mon prochain article, je vous présenterai :

UPDATE du 12/08/2022 : Je viens de mettre en ligne l’article, cliquez ici !


Ressources :

Follow me

Subscribe to my RSS feed !