Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forums MacBidouille _ [Hackintosh] Tutoriels _ Activer le SecureBoot sur Clover

Écrit par : iPotable 1 Jan 2016, 00:33

Activer le SecureBoot sur son Hackintosh




Le SecureBoot qu'est-ce que c'est exactement ?

Le SecureBoot est une technologie développée par Microsoft destinée à sécuriser le démarrage des PCs UEFI (rien à voir avec le SIP d'Apple donc). Le principe consiste à signer les fichiers d'amorcage .efi avec une clé de chiffrement (RSA2048). Les fichiers .efi signés avec les clés approuvées sont considérés comme sûrs par le firmware de la carte mère. Si un fichier .efi signé a été altéré, le démarrage sur celui ci sera refusé. Si un fichier .efi n'est pas signé, le démarrage sera également refusé. Cela permet entre autre d'empêcher des programmes malintentionnés de type https://en.wikipedia.org/wiki/Rootkit#bootkit de nuire.

Comme cela a été développé par Microsoft, cela est totalement transparent pour Windows. Quelques distributions Linux le supportent également. C'est également le cas pour Clover ! Mais il faut parcourir un chemin semé de quelques embûches pour y parvenir (pas de grosses embûches, je vous rassure). Si vous souhaitez approfondir le sujet, ce site anglophone est riche en informations : http://www.rodsbooks.com/efi-bootloaders/secureboot.html.

Également, pour pouvoir réussir cet objectif, il est nécessaire de ne pas avoir un PC avec un firmware UEFI de merde bridé (typiquement les Hewlett Packard). tongue.gif

Le SecureBoot de Microsoft et le System Integrity Protection d'Apple sont deux choses bien à part, j'insiste là dessus. On peut choisir d'activer les deux, d'en activer qu'un seul des deux, ou d'en activer aucun, vous faîtes comme vous le souhaitez.

Comment installe t-on ce SecureBoot avec Clover alors ?

— Clover compilé avec support du SecureBoot

Tout d'abord, la version de Clover que vous avez probablement installée n'est pas compilée avec le support du SecureBoot, car c'est le cas par défaut, et c'est également comme cela qu'est distribué officiellement Clover depuis SourceForge.

Qu'à cela ne tienne, vous trouverez la dernière version compilée par mes soins avec le support du SecureBoot https://mega.nz/#F!sJIEFT6b!XpUhbLu4gsTtkhvtdzXHHA.

Mais pour les versions ultérieures elles ne seront pas toujours proposées sur ce tuto. Vous pouvez les compiler vous même en vous armant d'un peu de patience. Vous aurez besoin pour cela de Xcode au complet, avec les Command Line Tools. Vous avez deux options :


Téléchargez http://www.insanelymac.com/forum/files/file/589-build-clovercommand/. Sélectionnez l'option de compilation avec macros custom et sélectionnez ENABLE_SECURE_BOOT, puis entrez b pour lancer la compilation.


Téléchargez https://github.com/JrCs/CloverGrowerPro. Vous pouvez laisser les valeurs par défaut données par CloverGlowerPro sauf lorsqu'il vous demandera pour le SecureBoot : vous devrez taper "yes".

La compilation de Clover avec CloverGrowerPro ne fonctionne pas sous OS X ≥ 10.11.3 et Xcode ≥ 7.3 mais vous pouvez le compiler sous OS X ≤ 10.11.2 et Xcode ≤ 7.2.1 et l'utiliser ensuite sous OS X ≥ 10.11.3.

Pour le moment, installez donc cette version de Clover compilée pour le support SecureBoot comme vous installeriez Clover habituellement.

— SbSignTools

Vous aurez besoin des outils en ligne de commande SbSignTools pour signer les fichiers binaires .efi.
Ha oui aussi, vous devez être un minimum à l'aise avec le Terminal pour réussir le tuto.
Vous pouvez télécharger les outils SbSignTools ici : https://mega.nz/#!FFZhzTJI!1olkNmh01MyR6vB3QmarhXnNfLprwsN9CQo6-dzPwJ8.

Deux méthodes pour l'installation

On arrive à un moment où il va falloir faire un choix. laugh.gif

On peut choisir soit d'utiliser les clés de son firmware UEFI en les exportant sur une clé USB et en signant les fichier .efi avec. Cela revient donc à faire confiance à Microsoft, dont les clés sont publiques (et donc n'importe qui peut signer n'importe quoi avec à peu près). On peut sinon choisir de fabriquer ses propres clés, que l'on garde pour soi (on n'est jamais mieux servi que par soi même tongue.gif ). Étant donné que beaucoup de choses sont similaires on va entremêler les deux méthodes avec des zolies couleurs.
Tout ce qui concerne la méthode "j'utilise mes propres clés de chiffrement" sont dans cette couleur.
Tout ce qui concerne la méthode "j'utilise les clés de chiffrement déjà présentes dans mon firmware" sont dans cette couleur.

Commençons par ajouter ceci dans notre config.plist :
Code
<Boot>
   <dict>
       ...
       <key>Secure</key>
       <true/>
       ...
   </dict>


On va donc créer nos propres clés de la façon suivante dans le Terminal (en remplacant "Your Name" par votre nom) :
Code
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.key -out MOK.crt -nodes -days 3650 -subj "/CN=Your Name/"
     openssl x509 -in MOK.crt -out MOK.cer -outform DER

Une fois ces deux commandes tapées, vous obtiendrez trois fichiers MOK.key, MOK.crt, et MOK.cer qui constituent vos clés. Gardez les précieusement.

On choisit d'utiliser les clés de Microsoft (et celles que vous auriez ajouté dans votre firmware dans une vie antérieure).
Il faut commencer par aller dans votre firmware, selon les menus divers et variés dirigez vous vers le SecureBoot et la gestion des clés de celui-ci.
Ici cherchez un menu permettant de sauvegarder ou d'exporter les clés, en fonction du constructeur, et enregistrez les soit dans une clé usb FAT32, soit dans la partition efi.
Votre firmware devrait vous avoir sorti des fichiers sous la forme macle.rsa et macle.pem.


Maintenant, vous allez monter la partition EFI de votre Hack et signer tous les fichier .efi de Clover.

Pour signer un fichier .efi, il faut utiliser le programme sbsign de la façon suivante en adaptant le chemin vers vos clés :
Code
sbsign --key chemin/vers/MOK.key --cert chemin/vers/MOK.crt --output mon-fichier-signe.efi mon-fichier-pas-signe.efi


Vous pouvez donc signer vos fichiers .efi de la façon suivante en adaptant le chemin vers les clés :
Code
sbsign --key /chemin/vers/macle.rsa --cert /chemin/vers/macle.pem --output mon-fichier-signe.efi mon-fichier-pas-signe.efi


Je vous déconseille de mettre le même nom pour le fichier signé et le fichier non signé, car je ne sais pas du tout quel effet ça peut engendrer, et ça pourrait bien vous causer du tort. Sauvegardez les originaux, et placez les versions signées ensuite à la place.

Vous trouverez des fichiers .efi dans /Volumes/EFI/EFI/BOOT/, dans /Volumes/EFI/EFI/CLOVER, dans /Volumes/EFI/EFI/CLOVER/drivers64UEFI, et dans /Volumes/EFI/EFI/CLOVER/Tools. Il est important de tous les signer pour ne pas se retrouver bloqué. (Je sais c'est long et fastidieux mais à vous de scripter ça si le cœur vous en dit. wink.gif )

Dernier fichier à signer, celui qui se trouve dans /System/Library/CoreServices/boot.efi ! Ce petit coquin est verrouillé remarquez. Dans le terminal déverrouillez le :
Code
sudo chflags nouchg /System/Library/CoreServices/boot.efi

Sauvegardez le, signez le, et mettez la version signée à la place.
Rétablissez les droits :
Code
sudo chown root:wheel /System/Library/CoreServices/boot.efi
     sudo chmod 644 /System/Library/CoreServices/boot.efi
     sudo chflags uchg /System/Library/CoreServices/boot.efi


Bravo, vous avez signé tous vos .efi. biggrin.gif

Il ne vous reste plus qu'à donner votre clé à votre firmware !
Pour cela, mettez le fichier MOK.cer sur une clé usb formattée en FAT32, ou même dans la partition EFI pourquoi pas (par contre et par sécurité, n'oubliez pas de l'enlever une fois que c'est terminé).
A partir de là en fonction de votre firmware UEFI avec des interfaces qui peuvent changer d'un constructeur à l 'autre, on va essayer de généraliser un peu.
Allez dans le menu qui concerne le SecureBoot, dans la gestion des clés, il y aura quelque chose comme append key db que vous devrez sélectionner pour ajouter votre clé de chiffrement depuis votre clé usb ou votre partition efi.


Vous n'avez plus qu'à activer le SecureBoot et c'est terminé ! cool.gif

Ha oui, n'oubliez pas qu'il arrive parfois qu'Apple modifie le fichier /System/Library/CoreServices/boot.efi lors de certaines mises à jour. whistle.gif

Je viens de découvrir à ce sujet, que Clover a lui également sa propre politique sur le SecureBoot.

En gros une fois qu'il a été validé par le firmware de la carte mère, il est libre de ses actes. Du coup pour vérifier si le boot.efi dans /System/Library/CoreServices, il nous donne plusieurs options de configurations (je ne pense pas qu'on puisse lui faire mémoriser dans le config.plist, ça peut se comprendre).

Par défaut, il choisit Deny pour refuser donc tout ce qui n'est pas signé. Après, si lors d'une mise à jour d'OS X Apple a modifié le boot.efi et qu'il n'est plus signé, on peut changer ce réglage en allant sur l’icône en forme de cadenas.
Comme ça on peut resigner notre boot.efi.

Ceci est aussi valable si on veut booter sur une clé d'install sans désactiver le SecureBoot. Cela dit si on utilise trop souvent ce genre de manipulation, on perd un peu l'intérêt du SecureBoot. Cela sert donc avant tout pour dépanner.

Bon et bien voilà, ce tuto est terminé. Il est possible qu'il soit régulièrement mit à jour pour diverses raisons et également pour mettre des liens vers les nouvelles versions de Clover gracieusement compilées pour la communauté.

https://mega.nz/#F!sJIEFT6b!XpUhbLu4gsTtkhvtdzXHHA

Écrit par : polyzargone 1 Jan 2016, 00:55

Super boulot !

Un grand merci à toi et à très vite pour la suite smile.gif.

Écrit par : iPotable 1 Jan 2016, 01:42

Citation (polyzargone @ 1 Jan 2016, 00:55) *
Super boulot !

Un grand merci à toi et à très vite pour la suite smile.gif.


Merci biggrin.gif

Bon je vais écrire la suite parce qu'en fait ya pas mal de points communs dans la deuxième méthode avec la première, je dirai de lire au dessus happy.gif

Je suis un gros feignant tongue.gif

Écrit par : Sebinouse 3 Jan 2016, 12:13

Très joli tuto : limpide et agréable à lire.

Du coup je vais peut être me laisser tenter tongue.gif

Écrit par : iPotable 3 Jan 2016, 20:39

J'ai enfin réussi à compiler Clover biggrin.gif
Yavait quelques emmerdements sur mon Hack, j'ai fais le ménage, maintenant ça fonctionne. laugh.gif


Écrit par : iPotable 4 Jan 2016, 03:13

J'ai modifié la structure du tuto pour le rendre plus agréable à lire, et pour moins se perdre.

Écrit par : iPotable 16 Feb 2016, 13:05

Je viens de tomber sur une information de Slice qui explique pourquoi il est impossible de compiler Clover sous 10.11.3 : https://sourceforge.net/p/cloverefiboot/code/3345/

En fait avec 10.11.3, Apple a dû passer gcc et clang en version 5, et Slice confirme que la compilation ne passe pas avec ces versions. Après si vous vous voulez vous éviter d'installer une version antérieure sur une autre partition pour compiler, vous pouvez essayer de mettre gcc et clang en 4.9, mais je ne suis pas sûr du résultat. À vous de voir.

Écrit par : iPotable 15 May 2016, 20:52

Ceux pour qui la compilation avec CloverGrowerPro ne fonctionne pas sous OS X ≤ 10.11.2, il faut taper les commandes suivantes avant de lancer la compilation en mettant le chemin correspondant à votre toolchain pour l'aider à trouver nasm :

Code
mkdir -p ~/src/opt
ln -s /path/to/toolchain ~/src/opt/local


Edit: Aussi évitez de compiler avec Xcode 7.3+ pour le moment. Restez sous Xcode 7.2.1.

Écrit par : Maxime87 18 May 2016, 17:15

Un boulot d'enfer! un grand grand merci....;

Écrit par : iPotable 11 Aug 2016, 20:30

https://www.nextinpact.com/news/100963-secure-boot-microsoft-a-laisse-porte-derobee-ouverte.htm

(Ceci allait forcément arriver un jour où l'autre connaissant Microsoft)

Écrit par : iPotable 30 Oct 2016, 18:22

Nouvel outil, nouvelles possibilités. smile.gif


Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)