Создание ключа подписания политики LocalPolicy и управление им
Создание
При первой установке macOS на заводе-изготовителе или при стирании и последующей установке с использованием кабельного подключения компьютер Mac запускает код с диска оперативной памяти временного восстановления, чтобы задать заводские настройки. Во время этого процесса среда восстановления создает новую пару из открытого и личного ключей, которые находятся в Secure Enclave. Этот личный ключ называется ключом удостоверения владельца (OIK). Если ключ OIK уже существует, он уничтожается в ходе этого процесса. Среда восстановления также инициализирует ключ, используемый для блокировки активации, то есть ключ удостоверения пользователя (UIK). В рамках этого процесса, который выполняется только на компьютере Mac с чипом Apple, когда сертификация ключа UIK запрашивается для блокировки активации, включаются запрошенные ограничения, которые будут введены во время проверки политики LocalPolicy. Если устройство не может получить ключ UIK, сертифицированный для блокировки активации (например потому, что устройство на данный момент связано с учетной записью «Найти Mac» и объявлено пропавшим), тогда это устройство не сможет продолжить создавать политику LocalPolicy. Если устройству выдан сертификат удостоверения пользователя (ucrt), этот сертификат содержит ограничения, накладываемые сервером на политику, а также ограничения политики, запрошенные пользователем в расширении X.509 версии 3.
В случае успешного извлечения блокировки активации или сертификата ucrt
информация об этом сохраняется в базе данных на стороне сервера, а также передается обратно на устройство. После того как устройство получило сертификат ucrt, запрос открытого ключа, который соответствует ключу OIK, передается на сервер центра основной аттестации (BAA). Центр BAA проверяет сертификацию ключа OIK с использованием открытого ключа из сертификата ucrt, который хранится в базе данных, доступ к которой открыт для центра BAA. Если центру BAA удается проверить сертификацию, он сертифицирует открытый ключ, возвращая сертификат удостоверения владельца (OIC), подписанный центром BAA и содержащий ограничения, сохраненные в сертификате ucrt. Сертификат OIC передается обратно в Secure Enclave. С этого момента, когда Secure Enclave подписывает новую политику LocalPolicy, Secure Enclave вносит сертификат OIC в манифест Image4. Низкоуровневый загрузчик располагает встроенным доверенным корневым сертификатом центра BAA, поэтому загрузчик считает сертификат OIC доверенным, что ведет к тому, что подпись LocalPolicy в целом признается доверенной.
Ограничения RemotePolicy
Все файлы манифеста Image4, а не только политики LocalPolicy, содержат ограничения в отношении оценки манифеста Image4. Эти ограничения закодированы с помощью специальных идентификаторов объектов (OID) в некорневом сертификате. Библиотека проверки манифеста Image4 выполняет поиск идентификатора OID со специальным ограничением сертификата во время проверки подписи, а затем автоматически оценивает указанные в нем ограничения. Ограничения имеют следующую форму:
параметр X должен существовать;
параметр X должен отсутствовать;
параметр X должен иметь определенное значение.
Так, например, ограничения сертификата для «персонализированных» подписей будут содержать условие «Параметр ECID должен существовать», а для «глобальных» подписей ограничения будут содержать условие «Параметр ECID должен отсутствовать». Эти ограничения направлены на то, чтобы все файлы Image4, подписанные с помощью указанного ключа, соответствовали определенным требованиям во избежание создания ошибочно подписанного манифеста Image4.
В контексте политик LocalPolicy эти ограничения сертификата Image4 рассматриваются как относящиеся к политике RemotePolicy. Политики LocalPolicy у сред загрузки иного типа могут иметь другую политику RemotePolicy. Политика RemotePolicy используется для ограничения политики LocalPolicy среды recoveryOS, чтобы при загрузке recoveryOS она загружалась так, как если бы применялась политика «Высший уровень безопасности». Это повышает доверие к целостности recoveryOS как среды загрузки, в которой допускается изменение политики. Политика RemotePolicy ограничивает возможность хранения в политике LocalPolicy идентификатора ECID компьютера Mac, на котором была создана политика LocalPolicy, а также возможность хранения определенного хеша случайного значения nonce удаленной политики (rpnh
) в компоненте защищенного хранилища на этом компьютере Mac. rpnh
, а значит и политика RemotePolicy, изменяется только при выполнении действий, связанных с функциями «Найти Mac» и «Блокировка активации». К таким действиям относятся: регистрация, отмена регистрации, удаленная блокировка и удаленное стирание. Ограничения политики RemotePolicy определяются и указываются во время сертификации ключа удостоверения пользователя (UIK), а также вносятся в выпущенный сертификат удостоверения пользователя (ucrt). Некоторые ограничения политики RemotePolicy, такие как ECID, ChipID и BoardID, определяются сервером. Таким образом можно предупредить подписание файлов LocalPolicy на одном устройстве для другого. Устройство может задать другие ограничения политики RemotePolicy, что поможет не допустить понижения уровня безопасности политики LocalPolicy без локальной аутентификации и одновременно удаленной аутентификации. Локальная аутентификация требуется для доступа к текущему ключу OIK, а удаленная аутентификация необходима для учетной записи, в которой выполнена блокировка активации устройства.