採用 Intel 架構的 Mac 所適用的 RecoveryOS 和診斷環境
RecoveryOS
RecoveryOS 與主要 macOS 完全隔離,且完整內容均儲存在 BaseSystem.dmg 磁碟映像檔中。此外還有一個關聯的 BaseSystem.chunklist,用於驗證 BaseSystem.dmg 的完整性。chunklist 是一連串 10 MB BaseSystem.dmg 區塊的雜湊。統一可延伸韌體介面(UEFi)韌體會評估 chunklist 檔案的簽章,然後一次評估 BaseSystem.dmg 的一個區塊。這有助於確保其與 chunklist 中已簽署的內容相符。如果這些雜湊中有任一個不相符,便會中止從本機 RecoveryOS 開機,然後 UEFI 韌體會改為嘗試從網際網路 RecoveryOS 開機。
如果驗證成功完成,UEFI 韌體會將 BaseSystem.dmg 裝載為 RAM 磁碟,並啟動其中的 boot.efi 檔案。UEFI 韌體不需要對 boot.efi 執行特定檢查,boot.efi 也不需要檢查核心,因為作業系統的完整內容(這些元素只是其子集)已通過完整性檢查。
Apple 診斷
啟動本機診斷環境的程序大部分與啟動 RecoveryOS 相同。系統會使用獨立的 AppleDiagnostics.dmg 和 AppleDiagnostics.chunklist 檔案,但是驗證方式與 BaseSystem 檔案相同。無需啟動 boot.efi,UEFI 韌體會啟動磁碟映像(.dmg 檔案)裡的 diags.efi 檔案,然後這個檔案會負責叫用其他各種 UEFI 驅動程式,這些驅動程式可以連接並檢查硬體中的錯誤。
網際網路 RecoveryOS 和診斷環境
如果啟動本機復原或診斷環境時發生錯誤,UEFI 韌體會嘗試改從網際網路下載映像檔。(使用者也可具體要求使用啟動時保留的特殊密鑰序列來從網際網路擷取映像檔)。從 OS 復原伺服器下載的磁碟映像檔和 chunklist 之完整性驗證方式,與從儲存裝置所下載的項目相同。
雖然連線至 OS 復原伺服器時是使用 HTTP,但下載的完整內容仍會進行上文所說明的完整性檢查,因此受到保護而免於遭擁有網路控制權的攻擊者操縱。當單獨的區塊沒有通過完整性驗證,系統會先從 OS 復原伺服器重新要求該區塊 11 次,然後再放棄並顯示錯誤。
Mac 電腦的網際網路復原和診斷模式是於 2011 年加入,當時決定最好使用較簡單的 HTTP 傳輸,以及使用 chunklist 機制來處理內容認證,而非在 UEFI 韌體中實作較複雜的 HTTPS 功能,因此增加了韌體的攻擊面。