
證明程序保安
證明程序保安
當 ACME 設定指定了硬件綁定密鑰,或當裝置管理服務要求 DeviceInformation 證明時,裝置就會使用以下步驟:
作業系統向「安全隔離區」要求硬件綁定密鑰,稱為證明密鑰。對於 ACME 證明,此密鑰是已核發憑證身份的一部份。對於
DeviceInformation證明,該密鑰由作業系統產生,並會在註冊生命週期內的所有後續DeviceInformation證明中重複使用。作業系統向「安全隔離區」要求硬件綁定密鑰。其會指定證明密鑰、新鮮度代碼,以及其想要證明的屬性。
「安全隔離區」產生並傳回新的硬件證明。
作業系統將硬件證明傳送到 Apple 證明伺服器。
證明伺服器會驗證要求,並選擇拒絕簽發證明憑證,或是產生只包含其能夠確認的屬性和值的證明。證明憑證的公用密鑰與受證明密鑰相符。
作業系統將所得的證明憑證提供給裝置管理服務或 ACME 解決方案。
如需更多關於驗證所提供之證明憑證的資料,請參閲 Apple 開發者網站上的驗證「受管理裝置證明」。
關於硬件證明
當「安全隔離區」產生硬件證明時,其中包括(但不限於)以下元素:
主邏輯板的識別碼。
證明密鑰的公用密鑰。
以下軟件元件的雜湊值,這些值是在開機程序中計算並儲存在硬件暫存器中(類似「密封密鑰保護」):
「安全隔離區」韌體(sepOS)。
附加至 LLB 的 Image4 資料檔,其中亦包含所有其他系統配對韌體的測量值。
作業系統 Image4 資料檔,其中包含所有作業系統配對韌體的測量值。
其他裝置專屬值,例如 ECID 和 ChipID。
在 Mac 電腦上,LocalPolicy 的詳細資料。
新鮮度代碼。
如「安全隔離區」無法為證明密鑰解除封裝,「安全隔離區」就會拒絕產生硬件證明。這可確保證明密鑰已綁定到該特定的「安全隔離區」,且所有其他已證明屬性均連繫至該密鑰。
所有這些元素都會被編譯成自訂的二進位結構,並以 UIK 簽署。這會將硬件證明與 Apple 的證明伺服器可驗證的特定身份聯繫起來,使其能夠將要求連繋至特定的啟用記錄相關聯,從而連繫至特定的製造記錄。
產生證明憑證
當 Apple 證明伺服器收到證明要求時會:
驗證硬件證明的用户身份密鑰(UIK)簽署。如簽署無效,就不會產生證明。
在 Apple 的啟用記錄中尋找與 UIK 公用密鑰對應的
ucrt。如果找不到ucrt,就不會產生證明。尋找與裝置
ucrt對應的scrt。scrt是 Apple 伺服器在製造期間,根據晶片身份密鑰(SIK)簽發的憑證。SIK 由「安全隔離區」產生,其公用密鑰是在製造期間從裝置中收集。SIK 用於在啟用期間驗證正在啟用的裝置之「安全隔離區」是否擁有專用密鑰。SIK 在裝置的整個使用週期內會一直存在,並作為唯一識別碼。使用scrt就可以取得裝置的製造記錄。如果找不到記錄,就不會產生證明。驗證硬件元件的身份是否與製造記錄相符。如果元件身份與製造記錄不相符,就不會產生證明。
將新鮮度代碼(如有)複製到證明。
如證明有所要求:
將計算所得的軟件元件雜湊值與組建記錄中的已知雜湊值進行比較。如為相符,正式版本編號會被插入證明;如不相符,則會省略 OID 或其值為空白。
建立 LLB、「安全隔離區」或主作業系統的映像檔時,系統會計算雜湊值,並將雜湊值與這些映像檔的正式版本編號一併記錄在組建記錄資料庫中。
根據 ECID 和 ChipID 計算 UDID。
如裝置為 Mac,將所要求 OID 的值從 LocalPolicy 複製到證明中。
這些驗證的實際結果是,如證明伺服器無法識別該裝置為原廠 Apple 硬件,就不會產生證明。證明憑證中的每個屬性只有在證明伺服器能夠驗證屬性值的情況下才會被包含在內,但新鮮度代碼除外,其無需任何驗證即可被包含。