Среды recoveryOS и диагностики для компьютера Mac с процессором Intel
recoveryOS
Операционная система восстановления recoveryOS полностью отделена от основной macOS, и все ее содержимое хранится в файле образа диска с именем BaseSystem.dmg. Также имеется связанный с ним файл BaseSystem.chunklist, который используется для проверки целостности BaseSystem.dmg. Список фрагментов .chunklist представляет собой серию хешей для 10‑мегабайтных фрагментов BaseSystem.dmg. Прошивка унифицированного расширяемого интерфейса (UEFi) оценивает подпись файла списка фрагментов, а затем поочередно оценивает хеши фрагментов из файла BaseSystem.dmg. помогая убедиться, что они соответствуют подписанному содержимому списка фрагментов. Если один из хешей не совпадает, загрузка из локальной среды recoveryOS прерывается и прошивка UEFI пытается выполнить загрузку из recoveryOS в интернете.
Если проверка пройдена успешно, прошивка UEFI подключает BaseSystem.dmg в качестве диска оперативной памяти и запускает содержащийся в нем файл boot.efi. Прошивке UEFI не нужно проверять boot.efi, а boot.efi не нужно проверять ядро, поскольку целостность всего содержимого операционной системы уже была проверена, а эти элементы составляют только ее часть.
Диагностика Apple
Процедура загрузки локальной диагностической среды в основном аналогична запуску recoveryOS. При этом используются отдельные файлы AppleDiagnostics.dmg и AppleDiagnostics.chunklist, однако их проверка выполняется так же, как и проверка файлов BaseSystem. Вместо запуска boot.efi прошивка UEFI запускает из образа диска (.dmg) файл с именем diags.efi, который отвечает за вызов ряда других драйверов UEFI, которые могут устанавливать соединение с оборудованием и проверять его на наличие ошибок.
Среды recoveryOS и среды диагностики, загружаемые из интернета
Если при запуске локальной среды восстановления или диагностики произошла ошибка, прошивка UEFI пытается загрузить образы из интернета. (Пользователь также может запросить загрузку образов из интернета, нажав при загрузке особое сочетание клавиш.) Проверка целостности образов диска и списков фрагментов, загруженных с сервера восстановления операционной системы, выполняется таким же способом, как для образов, извлеченных с устройства хранения.
Поскольку подключение к серверу восстановления операционной системы выполняется по протоколу HTTP, все полностью загруженные данные проверяются на целостность (как описано ранее). Таким образом они защищаются от манипуляций, если злоумышленник контролирует сеть. Если отдельный фрагмент не проходит проверку целостности, система запрашивает его 11 раз у сервера восстановления операционной системы, прежде чем прекратить попытки и выдать ошибку.
После того как в 2011 году на компьютеры Mac были добавлены режимы восстановления и диагностики, загружаемые из интернета, было принято решение использовать более простой транспортный протокол HTTP и использовать для аутентификации содержимого механизм списка фрагментов вместо реализации в прошивке UEFI более сложного транспорта HTTPS, что повышает уязвимость прошивки.