セキュア ブート
セキュア ブートは、低レベルのファームウェアとソフトウェアのすべてのコンポーネントを読み込み前に検証することを必須とする Unified Extensible Firmware Interface (UEFI) の機能です。 UEFI セキュア ブートでは、起動時に、UEFI ファームウェア ドライバー (別名、オプション ROM)、拡張ファームウェア インターフェイス (EFI) アプリケーション、オペレーション システムのドライバーとバイナリを含むブート ソフトウェアの各部分の署名がチェックされます。 署名が有効であるか、相手先ブランド供給業者 (OEM) によって信頼されている場合、コンピューターが起動し、ファームウェアによってオペレーティング システムに制御が与えられます。
コンポーネントとプロセス
セキュア ブートは、これらの重要なコンポーネントに依存します。
- プラットフォーム キー (PK) - プラットフォーム所有者 (Microsoft) とファームウェアの間の信頼関係を確立します。 半分のパブリック部分は PKpub で、半分のプライベート部分は PKpriv です。
- キー登録キー データベース (KEK) - OS とプラットフォーム ファームウェアの間の信頼関係を確立します。 半分のパブリック部分は KEKpub で、半分のプライベート部分は KEKpriv です。
- 署名データベース (db) - プラットフォーム ファームウェアとの対話を許可されているファームウェアとソフトウェア コード モジュールの信頼された署名者 (公開キーと証明書) のダイジェストを保持します。
- 失効済み署名データベース (dbx) - 悪意がある、脆弱である、侵害されている、または信頼されていないものとして識別されたコード モジュールの失効済みダイジェストを保持します。 ハッシュが署名データベースと失効済み署名データベースに含まれている場合、失効済み署名データベースが優先されます。
次の図とプロセスは、これらのコンポーネントがどのように更新されるかを示しています。
OEM は、製造時にコンピューターの不揮発性 RAM (NV-RAM) にセキュア ブート ダイジェストを格納します。
- 署名 DB には、UEFI アプリケーション、オペレーティング システム ローダー (Microsoft オペレーティング システム ローダー、ブート マネージャーなど)、および信頼されている UEFI ドライバーの署名者またはイメージ ハッシュが格納されます。
- 失効済み署名 dbx には、信頼されなくなったモジュールのダイジェストが格納されます。
- キー登録キー (KEK) データベースには、署名データベースおよび失効済み署名データベースを更新するために使用できる署名キーが格納されます。 データベースは、正しいキーを使用して署名された更新を介して、または実在の許可されているユーザーによるファームウェア メニューを使用した更新を介して編集することができます。
- db、dbx、KEK の各データベースが追加され、最終的なファームウェア検証とテストが完了した後、OEM はファームウェアが編集されないようにロックし、プラットフォーム キー (PK) を生成します。 PK は、KEK への更新に署名するため、またはセキュア ブートをオフにするために使用できます。
ブート プロセスの各段階で、ファームウェア、ブートローダー、オペレーティング システム、カーネル ドライバー、およびその他のブート チェーン成果物のダイジェストが計算され、許容値と比較されます。 信頼されていないことが判明したファームウェアおよびソフトウェアは、読み込みが許可されません。 したがって、低レベルのマルウェア インジェクションやプリブート マルウェアの攻撃をブロックできます。
Azure フリートでのセキュア ブート
現在、顧客ワークロードをホストするために Azure コンピューティング フリートにオンボードおよびデプロイされているすべてのコンピューターは、セキュア ブートが有効になっている状態で工場から出荷されています。 ハードウェア ビルドアウトと統合パイプラインのすべての段階で、対象を絞ったツールとプロセスが導入されており、セキュア ブートの有効化が偶発的にまたは悪意による操作によって取り消されることがないようになっています。
db と dbx のダイジェストが正しいことを検証することで、次のことが確実になります。
- ブートローダーがいずれかの db エントリに存在する
- ブートローダーの署名が有効である
- 信頼されたソフトウェアでホストが起動する
KEKpub と PKpub の署名を検証することで、信頼された当事者のみが、どのようなソフトウェアを信頼できると見なすかについての定義を変更する権限を持っていることを確認できます。 最後に、セキュア ブートがアクティブになっていることを確認することで、これらの定義が適用されていることを検証できます。
次のステップ
プラットフォームの整合性とセキュリティを強化する方法の詳細については、次を参照してください。