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:
- AMD
- American Megatrends Inc.
- Apple Computer, Inc.
- Dell
- Hewlett Packard
- IBM
- Insyde
- Intel
- Lenovo
- Microsoft
- Phoenix Technologies
La structure de l'UEFI s'appuie sur quatre concepts fondamentaux.
-
La réutilisation de l'existant concernant la définition des interfaces de base.
En effet, afin de garder le bénéfice des travaux réalisés dans le passé concernant aussi bien la communication avec le firmware que celle avec le système d'exploitation, un certain nombre de normes couramment mises en ouvre sur les plates-formes doivent être présents. Il est ici question de spécifications liées à l'architecture processeur d'une machine. Pour être conforme au standard UEFI il est donc nécessaire d'embarquer ces implémentations. - Le système de partitions, tel qu'il est implémenté, le choix du système de partition supporté garantit les échanges sécurisés entre des supports de constructeurs différents.
- Les services dits de Boot, qui fournissent des interfaces pour les périphériques et fonctionnalités du système qui peuvent être utilisés au démarrage. Ceux-ci ne sont accessibles que lors de la phase d'amorçage de la machine.
- les services dits Runtime, sont les "équivalents" des services de boot mais disponible uniquement pendant l'exécution du système d'exploitation.
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.

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.
- Le Boot Manager
Embarqué dans l'UEFI, c'est lui qui à la charge de la phase préalable au lancement du système. Pour cela il fait appel aux différents services et drivers de boot afin de réaliser les tests et initialisations nécessaires au bon lancement du système d'exploitation. Cela comprend la recherche de la cible de boot et la gestion du fait qu'elle soit amorçable ou pas. Dans cette recherche de la cible de boot, le Boot Manager est amené à charger des images qui correspondent à des applications au sens UEFI, contenant du code exécutable. Si dans cette phase, une intervention utilisateur est nécessaire, c'est également lui qui s'en occupe. - l'Os loader
Parmi les applications chargées par le Boot Manager, l'une d'entre elles est assez particulière puisque c'est elle qui contient le code permettant de charger le système d'exploitation. Elle va donc répertorier la ou les cibles de boot et tenter de démarrer sur l'une d'entre elles dans l'ordre trouvé. Les vérifications matériels nécessaires à ce niveau sont réalisées également par appel aux services de boot.

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.

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.