セキュアな初期プログラム・ロード (IPL) プロセス
セキュア・ブート機能は、システム・プロセッサー上で稼働する無許可のファームウェアを介したカスタマー・データへの不正アクセス、許可されたサービス・プロセッサー・ファームウェア内のセキュリティーの脆弱性を利用したカスタマー・データへの不正アクセス、フレキシブル・サービス・プロセッサー (FSP) 経由でアクセスしたハードウェア・サービス・インターフェースを介したカスタマー・データへの不正アクセスを防止します。
- オペレーティング・システム・ソフトウェア・ベースの攻撃によるカスタマー・データへの不正アクセス。
- システム管理者による不正。
- ハードウェアへの物理攻撃 (例えば、チップの交換やバス・トラフィックの記録など)。
セキュア・ブート機能は、POWER9™ プロセッサー・ハードウェアにプロセッサー・ベースの信頼チェーンを実装します。これは、POWER9 ファームウェア・スタックによって有効にされます。セキュア・ブート機能は、信頼できるファームウェア・ベースを提供することで、仮想化環境におけるカスタマー・データの機密性と保全性を強化します。
POWER9 プロセッサー・ベースのサーバーのトラステッド・ブート機能により、システム構成および初期プログラム・ロード (IPL) パス・コードを測定できるようになります。これは、後でシステムの初期 IPL パス構成の構成証明を行う際に証拠として使用することができます。 Core Root of Trust for Measurement (CRTM) を作成するために、セキュア・ブート・フローが使用されます。このフローは、Trusted Platform Module (TPM) との通信が確立されるまで、IPL プロセスの各フェーズに暗号検査を追加します。セキュア・ブート・フローを使用することで、コア・プロセッサーで稼働する必要があるすべてのファームウェアの保全性が確保され、無許可のファームウェアや悪意を持って変更されたファームウェアが実行されるのを防止できます。 いずれかの時点でコードの認証に失敗すると、IPL プロセスは完了できません。
POWER9 システムのセキュア・ブート機能は、プラットフォームのブート・プロセス全体の信頼を確立します。 ここでの信頼できる とは、IPL プロセス中に実行されるコードが、そのプラットフォームの製造元から提供されたものであり、プラットフォームの製造元によって署名されており、変更されていないことを意味します。
POWER9 プロセッサー・ベースのサーバーで使用可能なセキュア・モード保護は、FSP およびサービス・インターフェースによるカスタマー・データへの読み取り/書き込みアクセスを防止し、ホスト・プロセッサーでの信頼できないコードの実行を防止し、セキュア・ブート・プロセスのすべてのキーポイントにわたって信頼性を保持することで、信頼性を保持します。
POWER9 セキュア・ブート機能は、プロセッサー・ベースの信頼チェーンを実装します。このチェーンは、暗黙的に信頼できるコンポーネントから開始されますが、他のコンポーネントは、ホスト・プロセッサー・コアで実行される前に、保全性を確保するために認証および検査されます。 Serial Electrically Erasable Programmable ROM (SEEPROM) 内のロックされたプロセッサーにある検証コードは、初期ファームウェア・ロードを検証します。 ファームウェアは、後続のファームウェアが信頼できる必要がある場合、および POWER9 プロセッサー・コアで実行するためにロードされる場合には、そのすべてのファームウェアの暗号シグニチャーを検証します。 POWER9 システムでは、SEEPROM セキュリティー・スイッチは自己ブート・エンジン (SBE) コード内で設定され、システムの製造元 (MFG) の組み立てラインで固定されます。これが、セキュアな IPL フローをハードウェアが実施するための基礎になります。物理的セキュリティー・モードのジャンパーは、システムのバックプレーン で使用可能です。システムに物理的にアクセスすれば、このジャンパーを使用して、プロセッサーのセキュア・モード・スイッチをオーバーライドすることができます。セキュア IPL プロセスは、Power® プラットフォームでのトラステッド・コンピューティングをさらに強化します。
以下の図は、セキュア・ブートおよびトラステッド・ブートの IPL プロセスの動作を示しています。

セキュア・ブート機能は、ロックされた SEEPROM、SBE、およびホスト・ブート・ベース・コード (ホスト・ブート拡張コードの小さい部分を含む) を Core Root of Trust for Measurement (CRTM) として構築し、Power Hypervisor (PHYP)、区画ファームウェア (PFW)、選択されたアジャンクト区画 (物理トラステッド・プラットフォーム・モジュール (pTPM)、仮想トラステッド・プラットフォーム・モジュール (vTPM)、ホスト・ブート・ランタイム、および暗号化アジャンクト)、オンチップ・コントローラー (OCC – 温度管理) を組み込むために信頼チェーンを拡張します。 この信頼ドメインとプロセッサー・ハードウェア・セキュリティーのサポートにより、どのようなハードウェアあるいはファームウェアのメカニズムを使用しても、カスタマー・データの表示や変更を行うことができないようにすることができます。
完全なトラステッド・ファームウェア・スタックは、署名されたイメージを使用して認証され、トラステッド・メモリーのロケーションで実行されます。 FSP は、ホスト・サーバーの信頼ドメインの外部にあり、変更/表示ユニット (ADU) レジスター、その他の保護されたレジスター、およびトラステッド・メモリー領域へのアクセスはブロックされます。 自己ブート・エンジン (SBE) は、プロセッサー・レジスターの読み取り/書き込みスキャン通信 (SCOM) 機能のブラックリストをフィルタリングすることで、FSP ブロックを実施します。 SCOM 機能は、プロセッサー・チップの SEEPROM 領域にあるセキュア・アクセス・スイッチによって有効にされます。
以下の図は、セキュア・ブート環境を示しています。

セキュア・ブート・プロセスが開始されると、FSP エレメントは、ブート要求およびブート・タイプに関する詳細をシステム内のプロセッサー・チップに送信します。 内部的には、セキュア・ブート・ロジックの状態は、以前に設定された値がクリアされており、適切な既知の状態から開始されます。 この状態は、以前に実行されたテンパリング要求もすべてクリアされています。 悪意のある攻撃者がこの初期ステップをスキップするのを防止するために、ハードウェア保護メカニズムが実装されています。 FSP から内部チップへのアクセスはロックされ、セキュア・ブート・エンジンが、モジュール上にあるセキュアかつ不揮発性でロックされているメモリーから、初期化コードのフェッチを開始します。 このコードは、基本的なチップの初期化を実行し、TPM をリセットします。
ブート・プロセスの初期ステップが完了すると、自己ブート・エンジン(SBE) は SEEPROM からホスト・ブート・ローダーおよび検証コードを、プロセッサー・チップの内部 L3 キャッシュにロードします。 その後、プロセッサー・コアが開始され、ブート・ローダーが初期ホスト・ブート・ベース (HBB) コードをプロセッサー NOR (PNOR) フラッシュ・チップからフェッチし、それを L3 キャッシュにロードします。セキュア・モードでは、L3 キャッシュからの検証コードを使用して、トラステッド・キャッシュで使用可能になった HBB イメージが検証されます。 初期フラッシュ・コードの検証が完了した後、プロセッサー・コアは引き続きトラステッド・メモリー・スペースからの検証済みコードを実行し、HB 拡張機能 (HBI) をロードして検証します。 HBI が測定され、シグニチャーが検証されてコピーされた後、図セキュア・ブートおよびトラステッド・ブートのフローのステップ 1 に示されているように、有効な認証を示す測定結果 (イメージ・ハッシュ) が TPM に記録されます。 この時点で、実行されるすべてのコードが完全に PNOR フラッシュ・チップに入っており、システムにアクセスした他のメカニズムはありません。 これは、トラステッド・ブートの境界と呼ばれます。検証に失敗した場合、システムは即時に停止され、ハードウェア保護メカニズムによって保護することで、信頼できないコードや不正なコードが実行されることを防ぎます。
その後、HB コードは新しいトラステッド・イメージを使用して、セキュアな不揮発性メモリーの保留中の更新を管理します。 Core Root of Trust (CRTM) を保護するために、HB コードはセキュア・メモリーをロックすることで、そのメモリーに対する追加の書き込みアクセスを防止します (このアクションは、システムがリブートされると、この信頼できる状態に戻すことを意味します)。その後、HB コードは、オンチップ・メモリー・コントローラーおよび取り付けられたメモリー DIMM (Dual Inline Memory Module) を初期化します。 また、HB コードは、メモリー・コヒーレント・インターフェースをシステム内の他のチップに構築する前に、そのコードが実行されるプロセッサーに直接取り付けられた他のチップも初期化します。 これらの他のチップも、セキュアで信頼できる状態であることを確認するために検証されます。
その後、上位のファームウェア・スタック・コンポーネントがロード、検証、実行され、その測定結果が TPM に記録されます。 このアクションでは、図セキュア・ブートおよびトラステッド・ブートのフローに示されたステップ 2 を実行します。 図セキュア・ブートおよびトラステッド・ブートのフローのステップ 3 では、Power Hypervisor (PHYP) ペイロードがメイン・メモリーにロードされます。 その後、コードは暗号で認証され、認証に成功すると PHYP の実行が開始されます。 PHYP コードの認証測定の結果は TPM に記録されます。 同様に、図セキュア・ブートおよびトラステッド・ブートのフローに示されたステップ 4 から 8 が実行され、ロックされていないフラッシュ・メモリーからトラステッド・メモリーにコードをロードします。コードが暗号で認証された後、各種アジャンクトと区画ファームウェア (PFW) が実行されます。