Environnements de diagnostic et recoveryOS d’un Mac avec processeur Intel
recoveryOS
La partition de récupération recoveryOS est entièrement séparée de la partition macOS principale, et le contenu est entièrement stocké dans un fichier d’image disque nommé BaseSystem.dmg. Une liste de blocs BaseSystem.chunklist associée est également utilisée pour vérifier l’intégrité du fichier BaseSystem.dmg. La liste de blocs est une série de hachages pour des blocs de 10 Mo du fichier BaseSystem.dmg. Le programme interne UEFI (Unified Extensible Firmware Interface, interface micrologicielle extensible unifiée) évalue la signature de la liste de blocs avant d’évaluer le hachage d’un bloc du fichier BaseSystem.dmg à la fois, ce qui veille à garantir qu’il corresponde au contenu signé figurant dans la liste. Si la correspondance ne peut être établie pour un de ces hachages, le démarrage à partir de la partition locale de recoveryOS est abandonné, et le programme interne UEFI tente plutôt de démarrer à partir de recoveryOS sur Internet.
Si la vérification est un succès, le programme interne UEFI monte le fichier BaseSystem.dmg en tant que disque virtuel et lance le fichier boot.efi qu’il contient. Le programme interne UEFI n’a pas à vérifier le fichier boot.efi, et celui-ci n’a pas à vérifier le noyau, car l’intégrité du contenu complet du système d’exploitation (dont ces éléments sont un sous-ensemble) a déjà été vérifiée.
Diagnostic Apple
La procédure de démarrage de l’environnement de diagnostic local est presque la même que pour le lancement de recoveryOS. Des fichiers distincts AppleDiagnostics.dmg et AppleDiagnostics.chunklist sont utilisés, mais ils sont vérifiés de la même façon que les fichiers BaseSystem. Plutôt que de lancer boot.efi, le programme interne UEFI lance un fichier à l’intérieur de l’image disque (fichier .dmg) nommé diags.efi, qui appelle ensuite divers autres pilotes UEFI pouvant interfacer avec le matériel et vérifier la présence d’erreurs.
Environnement de diagnostic et recoveryOS sur Internet
Si une erreur est survenue lors du lancement de l’environnement de récupération ou de diagnostic local, le programme interne UEFI tente plutôt de télécharger les images à partir d’Internet. (Un utilisateur peut également demander spécifiquement la récupération des images par Internet en appuyant sur des séquences de touches particulières au démarrage.) La validation de l’intégrité des images disques et des listes de blocs téléchargées auprès du serveur de récupération du système d’exploitation est effectuée de la même façon que pour les images récupérées à partir d’un dispositif de stockage.
Bien que la connexion au serveur de récupération du système d’exploitation soit établie par HTTP, l’intégrité du contenu téléchargé complet est vérifiée de la façon mentionnée ci-dessus. Par conséquent, celui-ci est protégé contre toute manipulation par un assaillant ayant pris le contrôle du réseau. Si la procédure de vérification de l’intégrité échoue pour l’un des blocs, la demande auprès du serveur de récupération du système d’exploitation est répétée 11 fois avant son abandon et l’affichage d’une erreur.
Lorsque les modes de récupération et de diagnostic par Internet ont été ajoutés aux ordinateurs Mac en 2011, on a convenu qu’il valait mieux utiliser le transport HTTP et traiter les authentifications du contenu au moyen d’un mécanisme de liste de blocs, plutôt que d’implémenter HTTPS, un protocole plus complexe, dans le programme interne UEFI, et donc d’augmenter la surface d’attaque du programme interne.