Содержимое файла LocalPolicy для компьютера Mac с чипом Apple
LocalPolicy — это файл Image4, подписанный Secure Enclave. Image4 представляет собой формат структуры данных в кодировке ASN.1 (абстрактная синтаксическая нотация версии 1) DER, который используется для описания информации об объектах безопасной последовательности загрузки на платформах Apple. В модели безопасной загрузки на основе Image4 запрос политик выполняется во время установки программного обеспечения с помощью запроса на подписание к центральному серверу подписания Apple. Если политика была приемлемой, сервер подписания возвращает подписанный файл Image4, который содержит набор последовательностей четырехзначных кодов (4CC). Во время загрузки эти подписанные файлы Image4 и 4CC оцениваются программным обеспечением, таким как загрузочное ПЗУ или низкоуровневый загрузчик.
Передача права владения между операционными системами
Правом владения называется право доступа к ключу удостоверения владельца (OIK). Право владения необходимо, чтобы разрешить пользователям заново подписывать политику LocalPolicy после внесения изменений в политику или программное обеспечение. Ключ OIK защищен иерархией ключей, как описано в разделе Технология защиты запечатыванием ключей (SKP), и ключом OIK, защищенным тем же ключом шифрования ключа (KEK), что и ключ шифрования тома (VEK). Это означает, что обычно защита обеспечивается паролем пользователя и измерениями операционной системы и политики. Для всех операционных систем компьютера Mac существует один ключ OIK. Следовательно, во время установки второй операционной системы требуется, чтобы пользователи первой операционной системы явным образом передали право владения пользователям второй операционной системы. Однако пользователи второй операционной системы еще не существуют на момент запуска установщика из первой операционной системы. Пользователи операционных систем обычно не создаются, пока не выполнена загрузка операционной системы и пока не запущен Ассистент настройки. Поэтому для установки второй операционной системы на компьютере Mac с чипом Apple требуется выполнить два следующих действия:
создать политику LocalPolicy для второй операционной системы;
создать учетную запись пользователя для передачи права владения.
При запуске Ассистента установки и подготовке к установке дополнительного пустого тома отображается запрос о том, требуется ли скопировать учетную запись пользователя с текущего тома, чтобы сделать ее учетной записью первого пользователя второго тома. Если пользователь одобряет запрос, то создание учетной записи пользователя в действительности представляет собой ключ шифрования ключей (KEK), полученный из пароля выбранного пользователя и аппаратных ключей. Полученный ключ KEK затем используется для шифрования ключа OIK, так как он передается второй операционной системе. Затем из Ассистента установки во второй операционной системе появляется запрос пароля пользователя, с помощью которого новая операционная система получает доступ к ключу OIK в Secure Enclave. Если было решено не копировать учетную запись пользователя, создание учетной записи пользователя выполняется по описанной схеме, но вместо пароля пользователя используется пустой пароль. Этот второй вариант существует для определенных сценариев системного администрирования. Однако пользователям, которым необходимо выполнить установку на несколько томов и передать право владения наиболее надежным способом, следует всегда выбирать копирование учетной записи пользователя первой операционной системы во вторую.
Политика LocalPolicy на компьютере Mac с чипом Apple
На компьютере Mac с чипом Apple управление локальной политикой безопасности было делегировано приложению, запускаемому в Secure Enclave. Такое программное обеспечение может использовать учетные данные пользователя и режим загрузки основного ЦП, чтобы определить, кто может изменять политику безопасности и из какой среды загрузки. Это мешает вредоносному программному обеспечению использовать элементы управления политики безопасности во вред пользователю путем исключения возможности получить дополнительные права.
Свойства манифеста политики LocalPolicy
В файле LocalPolicy содержится ряд кодов 4CC уровня архитектуры, которые имеются почти во всех файлах Image4, таких как BORD (обозначает плату или идентификатор модели), CHIP (обозначает определенный чип Apple) или универсальный идентификатор чипа (ECID). Однако приведенные ниже коды 4CC касаются исключительно политик безопасности, которые может настраивать пользователь.
Примечание. Apple использует термин одна парная подлинная среда recoveryOS (1TR) для обозначения загрузки парной среды recoveryOS путем физического нажатия и удерживания кнопки питания. Она отличается от загрузки обычной среды recoveryOS, которая выполняется с помощью энергонезависимой памяти, вызывается двойным нажатием и удерживанием или может произойти при возникновении ошибок загрузки. Необходимость физического нажатия определенным способом позволяет гарантировать, что среда загрузки будет недоступна для проникшего в macOS злоумышленника, который использует только программное обеспечение.
Хеш случайного значения nonce политики LocalPolicy (lpnh)
Тип: OctetString (48)
Изменяемые среды: 1TR, recoveryOS, macOS
Описание:
lpnh
используется для защиты от повтора политики LocalPolicy. Это хеш SHA384 случайного значения nonce политики LocalPolicy (LPN), который хранится в компоненте защищенного хранилища и доступ к которому осуществляется через загрузочное ПЗУ Secure Enclave или через Secure Enclave. Необработанное значение функции антиповтора никогда не доступно процессору приложений, а доступно только sepOS. Злоумышленнику, пытающемуся убедить низкоуровневый загрузчик в том, что предоставленная им прошлая политика LocalPolicy является корректной, потребовалось бы поместить значение в компонент защищенного хранилища, который хеширует его в то же значениеlpnh
, содержащееся в политике LocalPolicy, которую злоумышленник пытается использовать повторно. Обычно в системе существует только одно корректное число LPN (за исключением обновлений программного обеспечения, когда одновременно корректными являются два значения, чтобы обеспечить возможность возврата к старому программному обеспечению в случае сбоя обновления). При изменении любой политики LocalPolicy любой операционной системы все политики подписываются заново с помощью нового значения lpnh, соответствующего новому числу LPN, которое хранится в компоненте защищенного хранилища. Это изменение происходит при изменении пользователем настроек безопасности или создании новых операционных систем с новой политикой LocalPolicy для каждой из них.
Хеш случайного значения nonce удаленной политики (rpnh)
Тип: OctetString (48)
Изменяемые среды: 1TR, recoveryOS, macOS
Описание:
rpnh
аналогичноlpnh
, однако оно обновляется только при обновлении удаленной политики, например при изменении состояния регистрации в Локаторе. Это изменение происходит при изменении пользователем состояния своего Mac в Локаторе.
Хеш случайного значения nonce среды recoveryOS (ronh)
Тип: OctetString (48)
Изменяемые среды: 1TR, recoveryOS, macOS
Описание: хеш
ronh
аналогичен lpnh, но он есть только в политике LocalPolicy для системной среды recoveryOS. Он обновляется вместе с системной средой recoveryOS, в том числе при обновлении программного обеспечения. Здесь используется значение функции антиповтора, которое отделено отlpnh
иrpnh
, поэтому, когда Локатор выключает устройство, существующие операционные системы можно выключить (путем удаления их LPN и RPN из компонента защищенного хранилища), одновременно оставив возможность загрузки системной среды recoveryOS. Таким образом можно повторно активировать операционные системы, когда владелец системы подтверждает получение прав контроля системы путем ввода своего пароля iCloud, используемого для доступа к учетной записи Локатора. Это изменение происходит, когда пользователь обновляет системную среду recoveryOS или создает новые операционные системы.
Хеш манифеста Image4 следующего этапа (nsih)
Тип: OctetString (48)
Изменяемые среды: 1TR, recoveryOS, macOS
Описание: в поле nsih находится хеш SHA384 структуры данных манифеста Image4, которая описывает загруженную macOS. В манифесте Image4 macOS содержатся измерения для всех объектов загрузки, таких как iBoot, статический доверенный кэш, дерево устройств, загрузочная коллекция ядра и корневой хеш подписанного системного тома (SSV). Когда низкоуровневому загрузчику предписывается загрузить определенную macOS, предполагается, что он проверит, совпадает ли хеш прикрепленного к iBoot манифеста Image4 macOS с тем, который был зафиксирован в поле
nsih
политики LocalPolicy. Таким образомnsih
фиксирует намерение пользователя, касающееся операционной системы, для которой создана политика LocalPolicy. Пользователи меняют значениеnsih
неявным образом во время обновления программного обеспечения.
Хеш манифеста Image4 Cryptex1 (spih)
Тип: OctetString (48)
Изменяемые среды: 1TR, recoveryOS, macOS
Описание: в поле
spih
находится хеш SHA384 структуры данных манифеста Image4 Cryptex1. Манифест Image4 Cryptex1 содержит измерения своих пространств cryptex, печати их файловой системы и связанный с ними доверенный кэш. Когда выполняется загрузка macOS, ядро XNU и уровень защиты страниц (PPL) обеспечивают совпадение хеша манифеста Image4 Cryptex1 с тем, который был опубликован из поляspih
политики LocalPolicy. Пользователи меняют значениеspih
неявным образом при установке Быстрого ответа на угрозы или при обновлении ПО. Хеш манифеста Image4 Cryptex1 может быть обновлен независимо от хеша манифеста Image4 следующего этапа.
Генерирование Cryptex1 (stng)
Тип: 64-битное целое число без знака
Изменяемые среды: 1TR, recoveryOS, macOS
Описание: поле
stng
является значением счетчика с информацией о последнем обновлении хеша манифеста Image4 Cryptex1 в политике LocalPolicy. Оно предоставляет значение функции антиповтора вместо значенияlpnh
при оценке локальной политики на уровне защиты страниц для применения Incoming Cryptex. Пользователи увеличивают значениеstng
неявным образом при установке Быстрого ответа на угрозы или при обновлении ПО.
Хеш политики вспомогательной коллекции ядра (AuxKC) (auxp)
Тип: OctetString (48)
Изменяемые среды: macOS
Описание:
auxp
— это хеш SHA384 политики списка авторизованных пользователем расширений ядра (UAKL). Он используется во время создания AuxKC, способствуя тому, чтобы в AuxKC были включены только расширения ядра, авторизованные пользователем. Для настройки этого поля необходимо свойствоsmb2
. Пользователи изменяют значениеauxp
неявным образом при изменении UAKL путем утверждения расширения ядра в диалоговом окне раздела «Системные настройки» > «Конфиденциальность и безопасность» (macOS 13 или новее) либо в панели «Системные настройки» > «Защита и безопасность» (macOS 12 или более старые версии).
Хеш манифеста Image4 вспомогательной коллекции ядра (AuxKC) (auxi)
Тип: OctetString (48)
Изменяемые среды: macOS
Описание: после того как система подтвердит, что хеш UAKL соответствует тому, что указано в поле
auxp
политики LocalPolicy, она запрашивает подпись AuxKC у приложения процессора Secure Enclave, которое отвечает за подписание политики LocalPolicy. Затем хеш SHA384 подписи манифеста Image4 AuxKC помещается в политику LocalPolicy во избежание возможной путаницы и совпадения с подписанными ранее AuxKC в операционной системе во время ее загрузки. Если загрузчик iBoot находит полеauxi
в политике LocalPolicy, он пытается загрузить AuxKC из хранилища и проверить его подпись. Он также проверяет соответствие хеша манифеста Image4, вложенного в AuxKC, значению в полеauxi
. Если по какой-либо причине системе не удается загрузить AuxKC, она продолжает загрузку без этого объекта загрузки и (как следствие) без загрузки сторонних расширений ядра. Полеauxp
является обязательным для настройки поля auxi в политике LocalPolicy. Пользователи изменяют значениеauxi
неявным образом при изменении UAKL путем утверждения расширения ядра в диалоговом окне раздела «Системные настройки» > «Конфиденциальность и безопасность» (macOS 13 или новее) либо в панели «Системные настройки» > «Защита и безопасность» (macOS 12 или более старые версии).
Хеш ответа вспомогательной коллекции ядра (AuxKC) (auxr)
Тип: OctetString (48)
Изменяемые среды: macOS
Описание:
auxr
— это хеш SHA384 ответа AuxKC, в котором указывается точный набор расширений ядра, которые были включены в AuxKC. Ответ AuxKC может быть поднабором UAKL, поскольку расширения ядра могут быть исключены из AuxKC, даже будучи авторизованными пользователем, если известно, что их можно использовать для атак на систему. Кроме того, некоторые расширения ядра, которые можно использовать для взлома границы между пользователем и ядром, могут привести к ограничению функционала, что выражается, например, в невозможности использовать Apple Pay или воспроизвести контент 4K/HDR. Пользователям, которым требуются такие функциональные возможности, необходимо выбрать включение AuxKC с более широким набором ограничений. Полеauxp
является обязательным для настройки поляauxr
в LocalPolicy. Пользователи изменяют значениеauxr
неявным образом при создании новой коллекции AuxKC в разделе «Системные настройки» > «Конфиденциальность и безопасность» (macOS 13 или новее) либо в панели «Системные настройки» > «Защита и безопасность» (macOS 12 или более старые версии).
Хеш манифеста Image4 CustomOS (coih)
Тип: OctetString (48)
Изменяемые среды: 1TR
Описание:
coih
представляет собой хеш SHA384 манифеста Image4 CustomOS. Полезная нагрузка для этого манифеста используется iBoot (вместо ядра XNU) для передачи управления. Пользователи неявно изменяют значениеcoih
, когда используют инструмент командной строкиkmutil configure-boot
в 1TR.
UUID группы томов APFS (vuid)
Тип: OctetString (16)
Изменяемые среды: 1TR, recoveryOS, macOS
Описание:
vuid
указывает на группу томов, которую ядру следует использовать в качестве корневого тома. Это поле в основном носит информативный характер, и оно не используется для ограничений безопасности. Этотvuid
неявно задается пользователем при создании новой установки операционной системы.
UUID группы ключа шифрования ключа (KEK) (kuid)
Тип: OctetString (16)
Изменяемые среды: 1TR, recoveryOS, macOS
Описание:
kuid
указывает на том, который был загружен. Ключ шифрования ключей обычно используется для защиты данных. В политиках LocalPolicy он используется для защиты ключа подписания политики LocalPolicy.kuid
неявно задается пользователем при создании новой установки операционной системы.
Измерение политики надежной загрузки парной среды recoveryOS (prot)
Тип: OctetString (48)
Изменяемые среды: 1TR, recoveryOS, macOS
Описание: измерение политики надежной загрузки (TBPM) парной среды recoveryOS — это особое итерационное вычисление хеша SHA384 на основе манифеста Image4 политики LocalPolicy без случайных значений функции антиповтора. Это вычисление выполняется для предоставления согласованного измерения с течением времени (поскольку случайные значения функции антиповтора, как и
lpnh
, часто обновляются). Полеprot
, которое содержится только в политике LocalPolicy macOS, обеспечивает создание пары для указания политики LocalPolicy recoveryOS, которая соответствует политике LocalPolicy macOS.
Наличие подписанной Secure Enclave локальной политики recoveryOS (hrlp)
Тип: логическое значение
Изменяемые среды: 1TR, recoveryOS, macOS
Описание:
hrlp
указывает, является ли значениеprot
(описанное ранее) измерением подписанной Secure Enclave локальной политики recoveryOS или нет. Если нет, тогда политика LocalPolicy recoveryOS подписана сервером интернет-подписания Apple, который подписывает такие объекты, как файлы Image4 macOS.
Версия локальной операционной системы (значение love)
Тип: логическое значение
Изменяемые среды: 1TR, recoveryOS, macOS
Описание: значение
love
обозначает версию операционной системы, для которой создана политика LocalPolicy. Эта версия получена из манифеста следующего этапа во время создания политики LocalPolicy. Она используется, чтобы вводить ограничения для парных сред recoveryOS.
Безопасная мультизагрузка (smb0)
Тип: логическое значение
Изменяемые среды: 1TR, recoveryOS
Описание: если свойство
smb0
задано и является истинным, низкоуровневый загрузчик разрешает глобальную подпись следующего этапа манифеста Image4 вместо требования персональной подписи. Пользователи могут изменить это поле с помощью Утилиты безопасной загрузки или с помощьюbputil
для перехода на сниженный уровень безопасности.
Безопасная мультизагрузка (smb1)
Тип: логическое значение
Изменяемые среды: 1TR
Описание: если свойство
smb1
задано и является истинным, загрузчик iBoot разрешает подпись Secure Enclave для объектов загрузки, таких как настраиваемая коллекция ядра, с использованием того же ключа, что и для LocalPolicy. Наличие свойстваsmb0
является обязательным для наличия свойстваsmb1
. Пользователи могут изменить это поле с помощью инструментов командной строки, таких какcsrutil
илиbputil
, для выбора режима низкого уровня безопасности.
Безопасная мультизагрузка (smb2)
Тип: логическое значение
Изменяемые среды: 1TR
Описание: если свойство
smb2
задано и является истинным, загрузчик iBoot разрешает подпись Secure Enclave для вспомогательной коллекции ядра с использованием того же ключа, что и для LocalPolicy. Наличие свойстваsmb0
является обязательным для наличия свойстваsmb2
. Пользователи могут изменить это поле с помощью Утилиты безопасной загрузки или с помощьюbputil
для выбора режима сниженной безопасности и включения сторонних расширений ядра.
Безопасная мультизагрузка (smb3)
Тип: логическое значение
Изменяемые среды: 1TR
Описание: если свойство
smb3
задано и является истинным, пользователь устройства дал разрешение на контроль операционной системы через систему управления мобильными устройствами (MDM). Наличие этого поля предписывает приложению процессора Secure Enclave, управляющему политикой LocalPolicy, принять проверку подлинности MDM вместо требования локальной аутентификации пользователя. Пользователи могут изменить это поле с помощью Утилиты безопасной загрузки или утилитыbputil
для включения управления сторонними расширениями ядра и обновлениями программного обеспечения. (В macOS 11.2 и новее MDM также позволяет инициировать обновление до новейшей версии macOS, если используется высший уровень безопасности.)
Безопасная мультизагрузка (smb4)
Тип: логическое значение
Изменяемые среды: macOS
Описание: если имеется истинное значение
smb4
, устройство разрешает доступ к своей операционной системе через MDM с помощью Apple School Manager, Apple Business Manager или Apple Business Essentials. Наличие этого поля предписывает политике LocalPolicy, управляющей программой Secure Enclave, принять проверку подлинности MDM вместо требования локальной аутентификации пользователя. Это поле изменяется с помощью MDM, если в любой из трех служб обнаружен серийный номер устройства.
Защита целостности системы (sip0)
Тип: 64-битное целое число без знака
Изменяемые среды: 1TR
Описание:
sip0
содержит биты существующей политики защиты целостности системы (SIP), которые ранее хранились в энергонезависимой памяти. В него добавляются биты новой политики SIP (вместо использования полей политики LocalPolicy, как указано ниже), если они используются только в macOS, а не низкоуровневым загрузчиком. Пользователи могут изменить это поле с помощью утилитыcsrutil
из 1TR, чтобы отключить SIP и выбрать режим низкого уровня безопасности.
Защита целостности системы (sip1)
Тип: логическое значение
Изменяемые среды: 1TR
Описание: если имеется истинное значение
sip1
, загрузчик iBoot разрешает сбои при проверке корневого хеша подписанного системного тома (SSV). Пользователи могут изменить это поле с помощьюcsrutil
илиbputil
из 1TR.
Защита целостности системы (sip2)
Тип: логическое значение
Изменяемые среды: 1TR
Описание: если имеется истинное значение sip2, загрузчик iBoot не блокирует аппаратный регистр настраиваемой текстовой области только для чтения (CTRR), а аппаратный регистр помечает память ядра как недоступную для записи. Пользователи могут изменить это поле с помощью
csrutil
илиbputil
из 1TR.
Защита целостности системы (sip3)
Тип: логическое значение
Изменяемые среды: 1TR
Описание: если имеется истинное значение
sip3
, загрузчик iBoot не применяет свой встроенный список разрешений для переменной boot-args в энергонезависимой памяти, что в противном случае привело бы к фильтрации параметров, переданных ядру. Пользователи могут изменить это поле с помощьюcsrutil
илиbputil
из 1TR.
Сертификаты и RemotePolicy
Как описано в разделе Создание ключа подписания политики LocalPolicy и управление им, манифест Image4 политики LocalPolicy Image4 также содержит сертификат удостоверения владельца (OIC) и встроенную политику RemotePolicy.