OpenBSD: Chiffrement intégral de disque dur (FDE, bioctl)

Article publié, le et modifié le
6 minute(s) de lecture

Cet article contient 1175 mots.
Source brute de l'article : MD

Description

Le Chiffrement Intégral de Disque *(Full Disk Encryption, en anglais)* est une opération simple à réaliser sous OpenBSD.

Elle nécessite l’usage du binaire de chiffrement bioctl qui utilise le sous-système softraid - même si cela utilise le principe du RAID logiciel, ne pas confondre avec la mise en place de RAID, qui est un processus assez similaire, dans l’usage de binaire et sous-système ; les deux usages cumulés sont impossibles.

Dans cet article, nous verrons succinctement comment chiffrer dès l’installation un disque entier et l’utiliser soit avec une passphrase de sécurité, soit avec une clé USB .

Documentation

Installation

Dès le démarrage du binaire d’installation, l’invite de commande de l’installateur propose le choix suivant :

Code : sh

Welcome to the OpenBSD/*** X.X installation program.
  (I)nstall, (U)pgrade, (A)utoinstall or (S)hell? s

Il faut choisir d’aller dans le shell ; tapez donc s puis la touche ENTRÉE .

En admettant que le disque principal se nomme sd0

Makedev

Dans un premier temps, il nous faut nous assurer que le nœud existe réellement :

# cd /dev && sh MAKEDEV sd0

urandom

Info

Assurons-nous que le disque dur soit vierge de toutes données :

# dd if=/dev/urandom of=/dev/rsd0c bs=1m

Ce processus remplit le disque dur dans son entier de données aléatoire. Cela permet d’éviter la déduction par une tierce personne de l’espace disque réellement utilisé.

fdisk

Initialisons le disque dur à l’aide de l’outil fdisk :

MBR

Si vous avez démarré sur un Bios, utilisant la structure de partitionnement MBR , la commande sera :

# fdisk -iy sd0

GPT

Par contre si vous utilisez une structure GPT , généralement utilisée dans le contexte d’un Bios UEFI, mais peut aussi être utilisée dans le contexte des BIOS “historiques” (PC BIOS), l’usage deviendra :

# fdisk -iy -g -b 960 sd0

disklabel

Attention
Info

La commande disklabel nous sert à créer le schéma de partitionnement :

Code : sh

# disklabel -E sd0
Label editor (enter '?' for help at any prompt)
sd0>

Ajoutons une partition de la taille totale, de type RAID :

Code : sh

  sd0> a a
  offset: [64]
  size: [39825135] *
  FS type: [4.2BSD] RAID
  sd0>

Puis, enregistrons et quittons :

Code : sh

  sd0> w
  sd0> q
  No label changes.

bioctl

Créons le périphérique chiffré sd1 sur la partition a ; nous le ferons en utilisant le binaire bioctl :

Code : sh

# bioctl -c C -l sd0a softraid0
  New passphrase:
  Re-type passphrase:
  sd1 at scsibus2 targ 1 lun 0: <OPENBSD, SR CRYPTO, 005> SCSI2 0/direct fixed
  sd1: 19445MB, 512 bytes/sector, 39824607 sectors
  softraid0: CRYPTO volume attached as sd1

Nous verrons comment utiliser une clé USB pour déverouiller le système au moment du démarrage en lieu et place de la passphrase !

makedev

Mais dans un premier temps, il nous faut créer le nœud du périphérique sd1 ; répétez donc l’étape du makedev en remplaçant par sd1.

zero

Ensuite, il faut remplir de zéro ou de données aléatoires le premier secteur de ce nouveau périphérique, soit :

# dd if=/dev/zero of=/dev/rsd1c bs=1m count=1

ou par :

# dd if=/dev/urandom of=/dev/rsd1c bs=1m count=1

exit

Cela étant fini, il sera possible de reprendre le processus d’installation, après avoir écrit exit dans l’invite de commande shell (appelé prompt, en anglais)

Lorsque le processus d’installation demandera sur quel disque il faut installer le système d’exploitation, ne vous trompez pas, répondez bien sd1, tel que :

Code : sh

Available disks are: sd0 sd1.
  Which disk is the root disk? ('?' for details) [sd0] sd1

Clé USB : Déverrouillage

Dans l’état actuel, une fois le système d’exploitation OpenBSD installé, lors du démarrage, il sera demandé de taper la passphrase correspondante. Néanmoins, il est possible et intéressant de pouvoir utiliser une clé USB - ce qui est même recommandé, car celle-ci sera chiffrée elle aussi - en lieu et place !

Donc, après le redémarrage du système d’exploitation, il faudra connecter la clé USB, pour l’ initialiser , créer le schéma de partitionnement adéquat puis la chiffrer . Ce processus peut normalement être fait après l’ usage de `biotcl` … il faudra adapter ce qui doit l’être !

En admettant que la clé soit reconnue en tant que périphérique sd2

Clé USB : fdisk

Comme lors du processus d’installation, nous utiliserons à nouveau fdisk, tel que :

# fdisk -iy sd2

Clé USB : disklabel

Nous avons juste besoin d’une partition de type RAID, d’un seul Mo !

Astuce

Code : sh

# disklabel -E sd2
  Label editor (enter '?' for help at any prompt)
  sd0> a a
  offset: [64]
  size: [39825135] 1M
  FS type: [4.2BSD] RAID
  sd0> w
  sd0> q
  No label changes.

Clé USB : bioctl

Maintenant, chiffrons notre clé USB :

Code : sh

# bioctl -c C -k sd2a -l sd0a softraid0
  sd3 at scsibus3 targ 1 lun 0: <OPENBSD, SR CRYPTO, 005> SCSI2 0/direct fixed
  sd3: 19445MB, 512 bytes/sector, 39824607 sectors
  softraid0: CRYPTO volume attached as sd3

Et voilà !

Il ne vous reste plus qu’à connecter votre clé USB, pour pouvoir démarrer votre système d’exploitation avant le démarrage de celui-ci. La passphrase correspondante ne vous sera pas demandée !

Clé USB : Sauvegarde

Attention

Pour sauvegarder la clé USB, en faire une image et pouvoir en créer une deuxième ou la restaurer au besoin, nous utiliserons l’utilitaire dd, tel que :

# dd bs=8192 skip=1 if=/dev/rsd2a of=bckp-key.img

Astuce

Clé USB : Restauration

Astuce

Pour la restaurer, il faudra utiliser dd, tel que :

# dd bs=8192 seek=1 if=bckp-key.img of=/dev/rsd2a

Clé USB : Copie

Attention

Pour créer une nouvelle clé USB de secours, il faudra l'initialiser , créer la table de partitionnement , et copier la sauvegarde comme si c’était une restauration . ;)

Documentations tierces