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
- https://www.openbsd.org/faq/faq14.html (en anglais)
- https://wiki.obsd4a.net/openbsd.org:faq:faq14
- softraid(4)
- bioctl(8)
- fdisk(8)
- disklabel(8)
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
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
softraid
pour utiliser le binaire bioctl
qui permet le chiffrement du disque, excluant l’usage d’un RAID.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 !
1024
, au lieu de 1M
!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
img
. Ne le laissez pas à la portée de tout le monde. Protégez-le !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
Je vous encourage TRÈS FORTEMENT à chiffrer ce fichier .img avec GPG, puis à détruire le fichier .img ; par exemple, sous OpenBSD :
$ gpg2 --output bckp-key.gpg --encrypt --recipient courriel@domaine.tld bckp-key.img
$ rm -fP bckp-key.img
Bien sûr, cela nécessite que vous ayez créer une clé GPG pour votre courriel !
Clé USB : Restauration
gpg2 --output bckp-key.img --decrypt bckp-key.gpg
Pour la restaurer, il faudra utiliser dd
, tel que :
# dd bs=8192 seek=1 if=bckp-key.img of=/dev/rsd2a
Clé USB : Copie
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 . ;)