Intelプロセッサ搭載MacのrecoveryOSおよび診断環境
recoveryOS
recoveryOSはメインのmacOSとは完全に分離されていて、recoveryOSの内容はすべてBaseSystem.dmgという名前のディスクイメージファイルに保存されています。また、関連するファイルとして、BaseSystem.dmgの整合性の検証に使用するBaseSystem.chunklistもあります。chunklistは、BaseSystem.dmgの10 MBチャンクのハッシュリストです。Unified Extensible Firmware Interface(UEFi)ファームウェアはchunklistファイルの署名を評価したあと、BaseSystem.dmgのハッシュを一度に1チャンクずつ評価します。これにより、chunklistに記されている署名付きコンテンツと一致することを確認できます。一致しないハッシュがあると、ローカルのrecoveryOSからのブートは中断され、UEFIファームウェアはインターネットrecoveryOSからのブートを試みます。
検証が問題なく完了すると、UEFIファームウェアはBaseSystem.dmgをRAMディスクとしてマウントし、ここに含まれるboot.efiを起動します。UEFIファームウェアがboot.efiを詳細に確認する必要はなく、boot.efiがカーネルを確認する必要もありません。オペレーティングシステムの全コンテンツの整合性はすでに確認されているためです(これらの要素はOSの構成要素です)。
Apple Diagnostics
ローカルの診断環境を起動する手順はrecoveryOSの起動の手順とほぼ同じです。AppleDiagnostics.dmgとAppleDiagnostics.chunklistという別個のファイルを使用しますが、検証方法はBaseSystemファイルのときと同じです。UEFIファームウェアは、boot.efiを起動するのではなく、ディスクイメージ(.dmgファイル)内にあるdiags.efiという名前のファイルを起動します。このファイルは、ほかの各種UEFIドライバを呼び出してハードウェアに接続し、ハードウェア内のエラーを確認する役割を担います。
インターネットrecoveryOSと診断環境
ローカルのリカバリまたは診断環境の起動中にエラーが発生すると、UEFIファームウェアはインターネットからイメージをダウンロードすることを試みます。(ユーザはブート時に特別なキーシーケンスを押したままにすることで、インターネットからイメージを取得することを明確に要求することもできます。)OS復旧サーバからダウンロードしたディスクイメージとchunklistの整合性の検証は、ストレージデバイスから取得したイメージの場合と同じ方法で行われます。
OS復旧サーバとの接続にはHTTPが使用されますが、ダウンロードしたすべてのコンテンツは前述の通りに整合性が確認されます。このため、ネットワークを制御して改ざんを試みる攻撃から保護されます。チャンクの1つが整合性の検証に失敗すると、OS復旧サーバからの要求を11回繰り返し、それでも失敗した場合は起動を断念してエラーを表示します。
2011年にインターネットリカバリモードと診断モードがMacコンピュータに追加されたとき、より単純なトランスポートを使用し、チャンクリストメカニズムを使用してコンテンツ認証を処理する方が、UEFIファームウェアでより複雑なHTTPS機能を実装し、その結果ファームウェアの攻撃対象領域が増えるよりもよいと判断されました。