セキュアブートは、 統合拡張ファームウェアインターフェース(UEFI )の機能であり、ロード前にすべての低レベルのファームウェアおよびソフトウェアコンポーネントを検証します。 UEFI セキュア ブートでは、起動時に、UEFI ファームウェア ドライバー (別名、オプション ROM)、拡張ファームウェア インターフェイス (EFI) アプリケーション、オペレーション システムのドライバーとバイナリを含むブート ソフトウェアの各部分の署名がチェックされます。 署名が有効またはOEMによって信頼されている場合、マシンは起動し、ファームウェアがオペレーティングシステムに制御権を与えます。
コンポーネントとプロセス
セキュア ブートは、これらの重要なコンポーネントに依存します。
- プラットフォーム キー (PK) - プラットフォーム所有者 (Microsoft) とファームウェアの間の信頼関係を確立します。 半分のパブリック部分は PKpub で、半分のプライベート部分は PKpriv です。
- キー登録キー データベース (KEK) - OS とプラットフォーム ファームウェアの間の信頼関係を確立します。 半分のパブリック部分は KEKpub で、半分のプライベート部分は KEKpriv です。
- 署名データベース (db) - プラットフォーム ファームウェアとの対話を許可されているファームウェアとソフトウェア コード モジュールの信頼された署名者 (公開キーと証明書) のダイジェストを保持します。
- 取り消された署名データベース(dbx) - OEMが悪意のある、脆弱なもの、侵害されたもの、または信頼できないと特定したコードモジュールの取り消されたダイジェストを保持します。 もしハッシュが署名のデータベースに存在し、取り消された署名のデータベースに存在する場合、取り消された署名データベースが優先されます。
以下の図とプロセスは、OEMがこれらの部品をどのように更新するかを説明します。
OEM は、製造時にコンピューターの不揮発性 RAM (NV-RAM) にセキュア ブート ダイジェストを格納します。
- OEMは、UEFIアプリケーション、オペレーティングシステムローダー(Microsoft Operating System LoaderやBoot Managerなど)、信頼できるUEFIドライバーの署名器やイメージハッシュを署名データベースに埋め込みます。
- OEMは、もはや信頼できなくなったモジュールのダイジェストを撤回された署名のdbxに入力します。
- OEMは、署名データベースや取り消された署名データベースを更新できる署名鍵を鍵登録鍵(KEK)データベースに埋め込みます。 物理的にその場にいる認可ユーザーは、正しいキーで署名された更新やファームウェアメニューを使ってデータベースを編集できます。
- OEMがdb、dbx、KEKデータベースを追加し、最終的なファームウェア検証とテストを終えると、OEMはファームウェアの編集をロックし、プラットフォームキー(PK)を生成します。 OEMはPKを使ってKEKへの更新署名やSecure Bootのオフにできます。
ブートプロセスの各段階で、システムはファームウェア、ブートローダー、オペレーティングシステム、カーネルドライバー、その他のブートチェーンの成果物のダイジェストを計算し、許容値と比較します。 システムは信頼できないと判明したファームウェアやソフトウェアの読み込みを許可しません。 Secure Bootは低レベルのマルウェア注入や起動前のマルウェア攻撃をブロックできます。
Azure フリートでのセキュア ブート
現在、Azureのコンピュートフリートに導入され、顧客ワークロードをホストするすべてのマシンは、セキュアブートが有効な工場フロアから出荷されています。 ハードウェア構築と統合パイプラインのあらゆる段階でターゲットを絞ったツールとプロセスが設置されており、プロセスが誤ってまたは悪意を持ってSecure Bootの有効化を元に戻さないようにしています。
db と dbx のダイジェストが正しいことを検証することで、次のことが確実になります。
- ブートローダーはデータベースのエントリの一つに存在します。
- ブートローダーの署名は有効です。
- ホストは信頼できるソフトウェアで起動します。
KEKpubおよびPKpubの署名の検証により、信頼できる第三者のみが信頼できるソフトウェアの定義を変更する権限を持つことが確認されました。 最後に、Secure Bootが有効であることを確実にすることで、システムがこれらの定義を強制していることが確認されます。
次のステップ
Microsoftがどのようにプラットフォームの整合性とセキュリティを推進しているかについては、以下をご覧ください: