--- categories: ['OpenBSD','Système','Base'] date: 2019-12-22T12:59:26+01:00 description: "Mise en place d'un chiffrement intégral de disque dur lors de l'installation d'OpenBSD, avec gestion de passphrase ou mieux d'une clé USB de déverouillage." draft: false lastmod: 2020-01-08T18:55:00+01:00 tags: ['OpenBSD','FDE','bioctl'] title: "OpenBSD: Chiffrement intégral de disque dur (FDE, bioctl)" translationKey: 'openbsd-bioctl-fde' --- ## 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 {{< anchor "clé USB" "clé-usb-déverrouillage" >}}. ## Documentation * https://www.openbsd.org/faq/faq14.html *(en anglais)* * https://wiki.obsd4a.net/openbsd.org:faq:faq14 * {{< man softraid 4 >}} * {{< man bioctl 8 >}} * {{< man fdisk 8 >}} * {{< man disklabel 8 >}} ## Installation Dès le démarrage du binaire d'installation, l'invite de commande de l'installateur propose le choix suivant : {{< code "sys-openbsd-bioctl-fde-installer-welcome" sh >}} Il faut choisir d'aller dans le shell ; tapez donc {{< kbd s >}} puis la touche {{< kbd 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 {{< note info >}}Cette étape prend un temps certain, qui dépend de la taille de votre disque dur, mais attendez vous à patienter quelques heures…{{< /note >}} 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 {{< abbr MBR "Master Boot Record" >}}, la commande sera : `# fdisk -iy sd0` #### GPT Par contre si vous utilisez une structure {{< abbr GPT "GUID Partition Table" >}}, 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 {{< note warning >}}Ce n'est pas parce que nous utilisons le formatage RAID que nous créons un RAID. Rappelez-vous, nous utilisons le sous-système `softraid` pour utiliser le binaire `bioctl` qui permet le chiffrement du disque, excluant l'usage d'un RAID.{{< /note >}} {{< note info >}}Dans cet exemple, nous utiliserons tout l'espace disque disponible dans une seule partition. Il est bien sûr possible de partitionner à votre souhait… ce qui nécessitera autant de clé de chiffrement !{{< /note >}} La commande `disklabel` nous sert à créer le schéma de partitionnement : {{< code "sys-openbsd-bioctl-fde-disklabel-sd0" sh >}} Ajoutons une partition de la taille totale, de type RAID : {{< code "sys-openbsd-bioctl-fde-disklabel-sd0-aa" sh >}} Puis, enregistrons et quittons : {{< code "sys-openbsd-bioctl-fde-disklabel-sd0-wq" sh >}} ### bioctl Créons le périphérique chiffré `sd1` sur la partition `a` ; nous le ferons en utilisant le binaire `bioctl` : {{< code "sys-openbsd-bioctl-fde-bioctl-sd0" sh >}} Nous verrons comment utiliser une {{< anchor "clé USB" "clé-usb-déverrouillage" >}} 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 {{< anchor makedev 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 "sys-openbsd-bioctl-fde-installer-available-disks" sh >}} ## 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'{{< anchor initialiser "clé-usb-fdisk" >}}, créer le {{< anchor "schéma de partitionnement" "clé-usb-disklabel" >}} adéquat puis la {{< anchor chiffrer "clé-usb-bioctl" >}}. Ce processus peut normalement être fait après l'{{< anchor "usage de `biotcl`" bioctl >}}… 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 ! {{< note tip >}}Il est possible de spécifier la taille ainsi : `1024`, au lieu de `1M` !{{< /note >}} {{< code "sys-openbsd-bioctl-fde-disklabel-sd2" sh >}} ### Clé USB : bioctl Maintenant, chiffrons notre clé USB : {{< code "sys-openbsd-bioctl-fde-bioctl-sd2" sh >}} 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 {{< note warning >}}ATTENTION à votre fichier `img`. Ne le laissez pas à la portée de tout le monde. Protégez-le ! {{< /note >}} 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` {{< note tip >}}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 ! {{< /note >}} ### Clé USB : Restauration {{< note tip >}} Si vous avez suivi ma recommandation de chiffrer avec GPG votre sauvegarde ; il vous faudra utiliser GPG pour déchiffrer le fichier GPG avant la restauration, tel que :
`gpg2 --output bckp-key.img --decrypt bckp-key.gpg` {{< /note >}} Pour la restaurer, il faudra utiliser `dd`, tel que : `# dd bs=8192 seek=1 if=bckp-key.img of=/dev/rsd2a` ### Clé USB : Copie {{< note warning >}}Ne laissez pas traîner votre clé de secours n'importe où !
Rangez-la dans un endroit évident pour vous, seulement vous…{{< /note >}} Pour créer une nouvelle clé USB de secours, il faudra {{< anchor "l'initialiser" "clé-usb-fdisk" >}}, {{< anchor "créer la table de partitionnement" "clé-usb-disklabel" >}}, et copier la sauvegarde comme si c'était une {{< anchor restauration "clé-usb-restauration" >}}. ;) ## Documentations tierces * {{< wp "Master_boot_record" >}} * {{< wp "GUID_Partition_Table" >}} ----