Chiffrage partitions

Mise à jour : Debian 10.8 Buster

Sommaire

1 - Installation

$ sudo aptitude install cryptsetup

2 - Phrase de passe et fichier de phrase de passe

2.1 - Phrases de passe

2.2 - Fichiers de phrase de passe

$ dd if=/dev/urandom bs=512 count=4 of=/etc/keys/file.key
$ sudo chown 600 /etc/keys/file.key
$ echo -n "Ceci est 1 {phrase de passe*!" |sudo tee /etc/keys/file.key

Noter l’utilisation de l'option -n : "do not output the trailing newline" qui est nécessaire pour que la phrase de passe entrée depuis le terminal et le fichier correspondant soient équivalents

3 - Chiffrage partition

3.1 - Initialisation

Il est préconisé d'initialiser la partition avec des données aléatoires pour rendre plus difficile la localisation et le déchiffrage des informations.

Utiliser les données aléatoires générées par
$ sudo dd if=/dev/urandom of=/dev/sdb1 status=progres conv=fsync
$ sudo dd if=/dev/random of=/dev/sdb1 status=progress conv=fsync

3.2 - Chiffrage (création du conteneur)

$ sudo cryptsetup luksFormat  -s 512 -h sha512 /dev/sdb1

WARNING!
========
Cette action écrasera définitivement les données sur /dev/sdb1.

Are you sure? (Type uppercase yes): YES
Saisissez la phrase secrète :
Vérifiez la phrase secrète :

Réponse YES en majuscule, puis saisir et retaper la phrase de passe

$ sudo cryptsetup luksFormat /dev/sdb1 /etc/keys/file.key

WARNING!
========
Cette action écrasera définitivement les données sur /dev/sdb2.

Are you sure? (Type uppercase yes): YES
$ sudo cryptsetup luksFormat -q /dev/sdb1 /etc/keys/file.key
$ lsblk -f /dev/sdb
NAME FSTYPE LABEL UUID MOUNTPOINT
sdb
├─sdb1 crypto_LUKS e328780d-deb0-46d3-8ca4-c30eb441e14f

3.3 - Formatage luks de type 1 et 2

$ sudo cryptsetup luksFormat --type luks1 -s 512 -h sha512 /dev/sdb1
$ sudo cryptsetup luksDump /dev/sdb1 |grep Version
Version: 1
$ sudo cryptsetup convert /dev/sdb1 --type luks1

Il est prudent de faire une sauvegarde de l'entête avant la conversion!!!

4 - Utilisation

4.1 - Ouverture du container

$ sudo cryptsetup open /dev/sdb1 secret
$ sudo cryptsetup open /dev/sdb1 secret --key-file=/etc/keys/file.key
$ lsblk -f /dev/sdb
NAME FSTYPE LABEL UUID MOUNTPOINT
sdb
└─sdb1 crypto_LUKS e328780d-deb0-46d3-8ca4-c30eb441e14f
└─secret
$ ls -l /dev/mapper
total 0
lrwxrwxrwx 1 root root 7 mai 25 01:02 secret -> ../dm-0
crw------- 1 root root 10, 236 mai 25 00:47 control

Il est désormais possible de manipuler (formater, monter, ...) la partition "dissimulée" comme une partition "habituelle", en utilisant comme identifiant /dev/mapper/contenu à la place de /dev/sdb1

4.2 - Vérification de l'état du container

$ sudo cryptsetup status secret
/dev/mapper/contenu is active.
type: LUKS1
cipher: aes-xts-plain64
keysize: 512 bits
device: /dev/sdb1
offset: 4096 sectors
size: 3899520 sectors
mode: read/write

4.3 - Mise en place d'un système de fichier

$ sudo mkfs.ext4 -L BU /dev/mapper/secret
$ lsblk -f /dev/sdb
NAME FSTYPE LABEL UUID MOUNTPOINT
sdb
└─sdb1 crypto_LUKS e328780d-deb0-46d3-8ca4-c30eb441e14f
└─secret ext4 BU 60552e12-9a34-4b6d-9b2b-e09c3fddeec2

$ sudo blkid
.....
/dev/sdb1: UUID="e328780d-deb0-46d3-8ca4-c30eb441e14f" TYPE="crypto_LUKS" PARTUUID="97876783-01"
/dev/mapper/secret: LABEL="BU" UUID="60552e12-9a34-4b6d-9b2b-e09c3fddeec2" TYPE="ext4"

4.4 - Montage

Le container peut désormais être monté en utilisant comme un périphérique bloc en utilisant /dev/mapper/contenu

$ sudo mount /dev/mapper/secret /mnt

4.5 - Clôture

$ sudo umount /mnt
$ sudo cryptsetup close secret

L'état du conteneur passe à "inactive"

$ sudo cryptsetup status contenu
/dev/mapper/secret is inactive
$ sudo eject /dev/sdb