Secure Boot, une fonctionnalité source de divergences

Unified Extensible Firmware Interface

Présentation

A la fin des années 90, Intel travaille au développement d'un outil moderne et flexible capable de remplacer le BIOS et mieux s'adapter aux évolutions du matériel. Développé en C, il offre une plus grande souplesse quant à sa maintenance.
Conçu pour être moins dépendant du matériel que le BIOS, ce nouveau processus convainc assez vite un grand nombre de constructeurs.
En 2005, la version 1.10 de l'EFI marque la fin des travaux d'INTEL seul sur cette technologie et le début d'un projet de plus grande envergure qui deviendra par la suite un standard: l'UEFI.
La même année est donc créé le Forum UEFI en charge de ce standard, constitué de grands noms du monde de l'informatique. L'objectif de ce groupe de travail est de promouvoir, mais surtout gérer la standardisation de l'UEFI. Ce regroupement est une force puisqu'il garantit la mise à disposition de ressources performante, en continu pour permettre à la spécification d'évoluer et répondre aux besoins du marché.
Le bureau des directeurs du Forum UEFI est constitué de représentants des firmes suivantes:

La structure de l'UEFI s'appuie sur quatre concepts fondamentaux.

Ci-dessous, il nous est possible d'observer les différentes interactions entre les composants d'un système respectant le standard UEFI. Le firmware est capable de récupérer l'Os loader disponible sur le disque (ou autre support de stockage) via les services de boot, puis de lancer celui-ci via l'EFI Os loader qui est un type particulier d'application EFI, fournit par l'UEFI. Une fois lancée cette application à la charge de l'amorçage du système d'exploitation; en s'appuyant sur les services de boot nécessaire, elle peut donc initialiser les différents composants du système indispensable à la prise en main de la machine par le système d'exploitation.

UEFI-Concept

La première release de la spécification de l'UEFI voit le jour en Janvier 2006; elle est en fait la version 2.0 de l'EFI.
En 2007, sa version 2.1 apporte les notions de cryptographie, l'authentification réseau, la possibilité de construire une interface graphique.
Dans sa version courante (2.3.1), la spécification intègre la définition des variables de Secure Boot, protocole garantissant l'intégrité du matériel, mais aussi du système d'exploitation présent sur une machine.

La spécification de l'UEFI est disponible ici

Séquence de boot

Comme vu précédemment, l'UEFI devra garantir les fonctionnalités servies par le BIOS en les améliorant. Cela implique la gestion de l'amorçage du système. Bien que la spécification ne définit pas l'implémentation du POST (Power-On Self-Test), durant la phase suivante c'est l'UEFI qui prend la main et va assurer le bon démarrage du système d'exploitation.

Pour cela l'UEFI s'appuie sur les drivers et services de boot ainsi que le Boot Manager (gestionnaire de boot).
Pendant la séquence de boot, les ressources sont gérées par le firmware et contrôlées via les services de boot fournit par l'UEFI.

Une fois le système d'exploitation initialisé et prêt à démarrer, les services et drivers de boot sont libérés et ne peuvent plus être appelés. Seuls les runtime service fournis par l'UEFI pourront être utilisés par le système d'exploitation.

UEFI-BootSequence

Secure Boot

Parmi les services de boot fournis par l'UEFI, l'un d'entre eux mérite une attention particulière, tant ce dernier devrait influer sur l'utilisation des machines. Il s'agit de Secure Boot dont les variables supportées ont été définies dans la dernière version de la spécification de l'UEFI.

Concrètement, il s'agit d'un protocole garantissant l'intégrité du matériel et du système d'exploitation installés sur les machines. Basé sur un système de signature utilisant une paire de clés (privée/publique), le protocole est capable de vérifier que le matériel (ou système d'exploitation) installé est connu et "digne de confiance". Par conséquent, en utilisant cette fonctionnalité de l'UEFI, il ne sera pas possible d'installer de périphérique (carte vidéo ou réseau par exemple) ou système d'exploitation, ci ceux-ci ne disposent pas de signature connues.

Afin de satisfaire cette vérification, le protocole s'appuie sur une plateforme d'authentification contenant une liste des signatures du matériel autorisé et parallèlement celle de ceux blacklistés. Cette plateforme d'authentification est elle aussi signée et mise en place par les constructeurs à la fabrication des cartes mères. Cela implique que ces derniers définissent à la construction les certificats qu'ils considèrent comme étant dignes de confiance donc installés sur leurs machines.
La finalité étant de protéger principalement la séquence de boot contre l'intrusion de malware.

Secure Boot-PlatformKey

Ce service est donc appelé durant la séquence de boot aussi bien, lors du chargement des drivers que celui des applications et notamment celui de l'Os Loader.
Cette fonctionnalité risque de limiter la liberté que peut avoir un utilisateur quand au choix du matériel qu'il souhaite embarquer sur sa machine, dans la mesure où celui-ci doit être connu de la base de signature pour pouvoir fonctionner sur une machine utilisant l'UEFI. Il en est de même pour les systèmes d'exploitation.
La version de l'UEFI définissant Secure Boot datant de 2011, il encore tôt pour connaître sa réelle implémentation ainsi que la position tenue par les constructeurs quant à cette fonctionnalité.

Cependant l'annonce du nouveau-né de Microsoft, Windows 8 à quelque peu précipité les interrogations concernant ce service et le futur du PC.