Cryptsetup : Créer une clé ou un disque USB chiffrée
Table des matières
Dans cet article, nous allons voir comment créer une partition chiffrée avec cryptsetup.
Le but est de chiffrer une clé USB ou un disque externe, mais cela peut aussi fonctionner sur une partition de votre système.
La clé USB utilisée dans ce tuto s'appelle /dev/sdf. Adaptez à votre cas.
On n'utilisera pas LVM car ce n'est pas nécessaire (contrairement aux installations de systèmes chiffrés)
Le média USB devra être totalement effacé
cryptsetup doivent être installés.
Disposer des droits root pour créer les partitions.
Côté kernel, si on le compile (Gentoo ou kernel perso), veiller à :
Activer device mapper, crypt target et le support FUSE :
Activer les cryptographic API :
On va créer une partition de base (qui sera le futur conteneur), de la taille totale du disque (mais vous pouvez tout à fait créer 2 partitions, 1 chiffrée et l'autre non) :
La partition créée s'appelle /dev/sdf1.
On ne formate pas la partition avec quelque outil mkfs que ce soit.
On va créer le conteneur chiffré avec la commande suivante :
Si on veut préciser l'algo de chiffrement, la taille de clé, etc... :
Un avertissement s'affiche indiquant que les données seront supprimées. On valide avec YES en majuscules et on saisi 2 fois sa phrase de passe :
Et voilà !
On va ouvrir le conteneur avec luksOpen. J'appelle mon conteneur usbcrypt (on met le nom qu'on veut) :
La "partition" chiffrée est accessible via /dev/mapper/$NOM ici /dev/mapper/usbcrypt
On peut alors formater le contenu de ce conteneur pour y placer des fichiers (en ext4 par exemple) :
Ici, retrouvez quelques commandes de base résumées dans ce capitre.
Pour ajouter une phrase secrète :
Pour supprimer une phrase secrète :
Pour en modifier une : Ajouter la nouvelle et supprimez l'ancienne
Nombre de clés dans keyslots = 8 maximum (de 0 à 7)
Pour ajouter un label à une partition chiffrée :
On vérifie avec :
Ici, toutes les commandes ont été saisies dans un terminal, si vous souhaitez comprendre comment ça marche, ou que vous le faites sur un serveur.
On peut aussi le faire en graphique avec GNOME Disques !
Depuis GNOME Disques, on sélectionne le disque, puis on créé une nouvelle partition (Formater le disque avant si besoin) :
On nomme notre disque, et on choisi de le chiffrer comme sur l'image :
A l'étape suivante, on nous demande 2 fois la phrase de passe ;
Et c'est fait. Lors de l'insertion de notre clé, GNOME nous invite à saisir la phrase de passe pour accéder au contenu :
Si la phrase de passe est bonne, la clé USB se monte automatiquement et se démonte comme une clé classique.
Introduction
Dans cet article, nous allons voir comment créer une partition chiffrée avec cryptsetup.
Le but est de chiffrer une clé USB ou un disque externe, mais cela peut aussi fonctionner sur une partition de votre système.
La clé USB utilisée dans ce tuto s'appelle /dev/sdf. Adaptez à votre cas.
On n'utilisera pas LVM car ce n'est pas nécessaire (contrairement aux installations de systèmes chiffrés)
Prérequis
Le média USB devra être totalement effacé
cryptsetup doivent être installés.
Disposer des droits root pour créer les partitions.
Côté kernel, si on le compile (Gentoo ou kernel perso), veiller à :
Activer device mapper, crypt target et le support FUSE :
Code BASH :
[*] Enable loadable module support Device Drivers ---> [*] Block Devices ---> <*> Loopback device support [*] Multiple devices driver support (RAID and LVM) ---> <*> Device mapper support <*> Crypt target support File systems ---> <*> FUSE (Filesystem in Userspace) support
Activer les cryptographic API :
Code BASH :
[*] Cryptographic API ---> <*> XTS support <*> SHA224 and SHA256 digest algorithm <*> AES cipher algorithms <*> AES cipher algorithms (x86_64) <*> User-space interface for hash algorithms <*> User-space interface for symmetric key cipher algorithms <*> RIPEMD-160 digest algorithm <*> SHA384 and SHA512 digest algorithms <*> Whirlpool digest algorithms <*> LRW support <*> Serpent cipher algorithm <*> Twofish cipher algorithm
Création de la partition chiffrée
Créer la partition de base
On va créer une partition de base (qui sera le futur conteneur), de la taille totale du disque (mais vous pouvez tout à fait créer 2 partitions, 1 chiffrée et l'autre non) :
Code BASH :
cfdisk /dev/sdf
La partition créée s'appelle /dev/sdf1.
On ne formate pas la partition avec quelque outil mkfs que ce soit.
Chiffrer la partition de base
On va créer le conteneur chiffré avec la commande suivante :
Code BASH :
cryptsetup --verify-passphrase luksFormat /dev/sdf1
Si on veut préciser l'algo de chiffrement, la taille de clé, etc... :
Code BASH :
cryptsetup --verify-passphrase --cipher serpent-cbc-essiv:sha256 --key-size 256 luksFormat /dev/sdf1
Un avertissement s'affiche indiquant que les données seront supprimées. On valide avec YES en majuscules et on saisi 2 fois sa phrase de passe :
Code TEXT :
WARNING! ======== Cette action écrasera définitivement les données sur /dev/sdb1. Are you sure? (Type 'yes' in capital letters): YES Saisissez la phrase secrète pour /dev/sdb1 : Vérifiez la phrase secrète :
Et voilà !
Créer un système de fichiers
On va ouvrir le conteneur avec luksOpen. J'appelle mon conteneur usbcrypt (on met le nom qu'on veut) :
Code BASH :
cryptsetup luksOpen /dev/sdf1 usbcrypt
La "partition" chiffrée est accessible via /dev/mapper/$NOM ici /dev/mapper/usbcrypt
On peut alors formater le contenu de ce conteneur pour y placer des fichiers (en ext4 par exemple) :
Code BASH :
mkfs.ext4 /dev/mapper/usbcrypt
Opérations de base
Ici, retrouvez quelques commandes de base résumées dans ce capitre.
Monter la partition chiffrée
Code BASH :
cryptsetup luksOpen /dev/sdf1 usbcrypt
Code BASH :
mount /dev/mapper/usbcrypt /mnt/
Démonter la partition chiffrée
Code BASH :
umount /dev/mapper/usbcrypt
Code BASH :
cryptsetup luksClose usbcrypt
Changer la phrase de passe
Pour ajouter une phrase secrète :
Code BASH :
cryptsetup luksAddKey /dev/sdf1
Code TEXT :
Entrez une phrase secrète existante : Entrez une nouvelle phrase secrète pour l'emplacement de clé : Vérifiez la phrase secrète :
Pour supprimer une phrase secrète :
Code BASH :
cryptsetup luksRemoveKey /dev/sdf1
Code TEXT :
Entrez la phrase secrète à effacer :
Pour en modifier une : Ajouter la nouvelle et supprimez l'ancienne
Avoir des infos sur le conteneur LUKS
Code BASH :
cryptsetup luksDump /dev/sdf1
Nombre de clés dans keyslots = 8 maximum (de 0 à 7)
Code TEXT :
LUKS header information Version: 2 Epoch: 7 Metadata area: 16384 [bytes] Keyslots area: 16744448 [bytes] UUID: c327f67a-bca7-45c4-a709-140492fab6e8 Label: USBCRYPT 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: 4 Memory: 521625 Threads: 2 Salt: 4d 6d 65 ed 80 e9 32 82 1b 29 9a 58 dc 41 59 08 b8 6e 08 9b 30 55 2d d6 6e 5c 77 03 93 70 36 43 AF stripes: 4000 AF hash: sha256 Area offset:32768 [bytes] Area length:258048 [bytes] Digest ID: 0 1: luks2 Key: 512 bits Priority: normal Cipher: aes-xts-plain64 Cipher key: 512 bits PBKDF: argon2i Time cost: 4 Memory: 522440 Threads: 2 Salt: 98 ef 75 8c 8a fc a6 ed e4 3f 18 9e ab bc 13 66 32 17 5e 05 0e f6 a4 fc 48 69 e6 25 0c f0 43 2f AF stripes: 4000 AF hash: sha256 Area offset:290816 [bytes] Area length:258048 [bytes] Digest ID: 0 Tokens: Digests: 0: pbkdf2 Hash: sha256 Iterations: 63197 Salt: cc 45 06 77 63 8a a2 5a 87 8e 0e 7c ac 2b a8 73 45 34 ff 24 81 6f 84 06 cf a9 b5 8d 09 f6 30 c8 Digest: a8 1a 12 e0 f9 07 c3 ac 63 2d 39 b7 88 e2 b9 6e 23 e9 42 ce 73 68 bf ed 6b e7 ce 42 93 39 d5 57
Ajouter un label
Pour ajouter un label à une partition chiffrée :
Code BASH :
cryptsetup config /dev/sdf1 --label USBCRYPT
On vérifie avec :
Code BASH :
lsblk -f /dev/sdf
Code TEXT :
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINT sdf └─sdf1 crypto_LUKS 2 USBCRYPT c327f67a-bca7-45c4-a709-140492fab6e8 └─usbcrypt ext4 1.0 abd77fef-c2ed-4ca8-98dc-104f051749a9
Le faire en graphique c'est possible
Ici, toutes les commandes ont été saisies dans un terminal, si vous souhaitez comprendre comment ça marche, ou que vous le faites sur un serveur.
On peut aussi le faire en graphique avec GNOME Disques !
Depuis GNOME Disques, on sélectionne le disque, puis on créé une nouvelle partition (Formater le disque avant si besoin) :
On nomme notre disque, et on choisi de le chiffrer comme sur l'image :
A l'étape suivante, on nous demande 2 fois la phrase de passe ;
Et c'est fait. Lors de l'insertion de notre clé, GNOME nous invite à saisir la phrase de passe pour accéder au contenu :
Si la phrase de passe est bonne, la clé USB se monte automatiquement et se démonte comme une clé classique.