
認證程序安全性
認證程序安全性
當 ACME 設定指定使用硬體綁定密鑰,或裝置管理服務要求進行 DeviceInformation 認證時,裝置會依照以下步驟執行:
作業系統會向「安全隔離區」要求一組硬體綁定密鑰,稱為已認證密鑰。對於 ACME 認證,這組密鑰會成為所簽發憑證身分的一部分。對於
DeviceInformation認證,該密鑰由作業系統產生,並在整個註冊期間內,重複用於後續所有DeviceInformation認證。作業系統會向「安全隔離區」要求進行硬體認證。它會指定已認證密鑰、新鮮度代碼,以及希望進行認證的屬性。
「安全隔離區」會產生並傳回一份新的硬體認證。
作業系統會將該硬體認證傳送至 Apple 認證伺服器。
認證伺服器會驗證該請求,並視情況拒絕簽發認證憑證,或產生一份僅包含其能夠確認之屬性與數值的認證。該認證憑證的公開密鑰會與已認證密鑰相符。
作業系統會將最終產生的認證憑證提供給裝置管理服務或 ACME 解決方案。
如需進一步瞭解如何驗證所提供的認證憑證,請參閱 Apple 開發者網站上的 Validating a Managed Device Attestation。
關於硬體認證
當「安全隔離區」產生硬體認證時,其中會包含(但不限於)以下元素:
主機板的識別碼。
已認證密鑰的公用密鑰。
下列軟體元件的雜湊值,這些雜湊值會在開機程序中計算並儲存在硬體暫存器中(類似於「密封密鑰保護」):
「安全隔離區」韌體(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,則會將 LocalPolicy 中所要求的 OID 值拷貝到認證中。
這些驗證的實際結果是:如果認證伺服器無法將該裝置識別為真正的 Apple 硬體,就不會產生任何認證。認證憑證中的每一項屬性,只有在認證伺服器能夠驗證其值時才會納入;新鮮度代碼則是唯一的例外,會在未經任何驗證的情況下直接納入。