LocalPolicy 簽署密鑰的建立與管理
建立
一開始在廠內安裝 macOS 時,或者在執行連線式清除安裝時,Mac 會從暫時還原 RAM 磁碟執行程式碼以初始化其預設狀態。在此過程中,還原環境將建立一對新的公用密鑰和專用密鑰,分別保存在「安全隔離區」中。專用密鑰稱為擁有人身份密鑰(OIK)。如有任何 OIK 已經存在,則會在此過程中被銷毀。還原環境還會初始化用於「啟用鎖」的密鑰;即用户身份密鑰(UIK)。該過程的一部份(這對配備 Apple 晶片的 Mac 而言是專有程序)是在為「啟用鎖」要求 UIK 認證時,會包括一組在驗證時在 LocalPolicy 上強制執行的要求限制。如果裝置無法為「啟用鎖」取得 UIK 認證(例如,由於該裝置目前連繫至「尋找我的 Mac」帳户並且回報為遺失),則該裝置將無法繼續建立 Local Policy。如果向裝置核發了用户身份憑證(ucrt),則該 ucrt 在 X.509 v3 擴充套件中包含伺服器所施加的規則限制和用户要求的規則限制。
成功取得「啟用鎖」/ucrt
後,它會儲存在伺服器端的資料庫中,且還會傳回到裝置。裝置具有 ucrt 後,與 OIK 對應的公用密鑰認證要求會傳送到基本認證機構(BAA)伺服器。BAA 會使用儲存在 BAA 可取用資料庫中的 ucrt 中的公用密鑰來確認 OIK 認證要求。如果 BAA 可以確認認證,將會驗證公用密鑰,並傳回擁有人身份憑證(OIC);OIC 由 BAA 簽署並包含儲存在 ucrt 中的限制。OIC 會被傳送回「安全隔離區」。從那時起,只要「安全隔離區」簽署了新的 LocalPolicy,它就會將 OIC 附加到 Image4。LLB 對 BAA 根憑證具有內置信任,這讓其可信任 OIC,也可讓其信任 LocalPolicy 完整簽署。
RemotePolicy 限制
所有 Image4 檔案(並非只有 Local Policy)都包含對 Image4 資料檔評估設定的限制。這些限制都會使用分葉憑證中的特殊物件識別碼(OID)加以編碼。進行簽署評估時,Image4 驗證庫會在憑證中查找特殊憑證限制 OID,然後機械式評估其中指定的限制。限制的形式有以下幾種:
X 必須存在
X 必須不存在
X 必須有指定值
舉例來説,如為「個人化」簽署,憑證限制就會包含「ECID 必須存在」,而如是「全域」簽署,則會包含「ECID 必須不存在」。這些限制的設計旨在確保由指定的密鑰簽署的所有 Image4 檔案,都必須遵守特定要求,以避免產生錯誤簽署的 Image4 資料檔。
在每個 LocalPolicy 中,這些 Image4 憑證限制稱為 RemotePolicy。對於不同開機環境的 LocalPolicy,可以有不同的 RemotePolicy。RemotePolicy 用於限制 RecoveryOS LocalPolicy,讓 RecoveryOS 啟動時,行為只能和以「完整保安」啟動一樣。這提高了對 RecoveryOS 開機環境完整性的信任,可在這個環境中更改規則。RemotePolicy 會將 LocalPolicy 限制為包含產生 LocalPolicy 的 Mac 之 ECID,以及儲存在該 Mac 上「安全儲存元件」中的特定「遙距規則」隨機數雜湊值 (rpnh
)。僅當對「尋找我的 Mac」和「啟用鎖」採取了如註冊、取消註冊、遙距鎖定和遙距清除之類的操作時,rpnh
以及 RemotePolicy 才會更改。「遙距規則」限制是在用户身份密鑰(UIK)認證時確定和指定的,並已登入到已核發的「用户身份憑證」(ucrt)。伺服器確定某些「遙距規則」限制,例如 ECID、ChipID 和 BoardID。其設計用意是防止一部裝置為另一部裝置簽署 LocalPolicy 檔案。裝置可能會指定其他「遙距規則」限制,以協助防止在沒有提供取用目前 OIK 所需的本機驗證和裝置鎖鎖定之帳户的遙距驗證之情況下,讓 Local Policy 的保安降級。