Généralités système Linux

Cryptsetup : Créer une clé ou un disque USB chiffrée

Table des matières

secret



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 et crypt target :
Code BASH :
[*] Enable loadable module support
Device Drivers --->
    [*] Multiple devices driver support (RAID and LVM) --->
        <*> Device mapper support
        <*>   Crypt target 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



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) :

gnome-disques-crypt1




On nomme notre disque, et on choisi de le chiffrer comme sur l'image :

gnome-disques-crypt2




A l'étape suivante, on nous demande 2 fois la phrase de passe ;

gnome-disques-crypt3




Et c'est fait. Lors de l'insertion de notre clé, GNOME nous invite à saisir la phrase de passe pour accéder au contenu :

gnome-disques-crypt4




Si la phrase de passe est bonne, la clé USB se monte automatiquement et se démonte comme une clé classique.

:magic:
Cette page a été vue 601 fois