(57)【特許請求の範囲】
【請求項１】
コンピュータプラットフォームによって実行される方法であって、前記方法は、
第１プラットフォームファームウェアを格納するプラットフォームファームウェア記憶ロケーションを有する前記コンピュータプラットフォームのブート時に、前記コンピュータプラットフォームに位置するプラットフォームファームウェア更新メカニズムを、プラットフォーム・ファームウェア・アーマリング技術（ＰＦＡＴ）モードに切り替える段階と、
前記プラットフォームファームウェア更新メカニズムが前記ＰＦＡＴモードに切り替わったことに応答して、プラットフォームコンポーネントハブによって前記プラットフォームファームウェア記憶ロケーションを持続的にロックする段階とを備え、
前記プラットフォームファームウェア記憶ロケーションが持続的にロックされると、認証コードモジュール（Ａｕｔｈｅｎｔｉｃａｔｅｄ  Ｃｏｄｅ  Ｍｏｄｕｌｅ：ＡＣＭ）が前記プラットフォームファームウェア更新メカニズムのロック解除プロセスを実行した後にのみ、前記ＡＣＭによる前記プラットフォームファームウェア記憶ロケーションへの書き込みのみが許可される方法。
【請求項２】
前記ロック解除のプロセスは、
前記プラットフォームファームウェア更新メカニズムが、ＰＦＡＴ保護制御レジスタに対する特別なメモリ書き込みサイクルを開始する段階を有し、
前記ＰＦＡＴ保護制御レジスタに対する特別なメモリ書き込みサイクルでは、前記プラットフォームファームウェア記憶ロケーションに連結されたコントローラは、前記プラットフォームファームウェア更新メカニズムから、前記プラットフォームファームウェア記憶ロケーションのアドレス空間への書き込みコマンドを受け取る請求項１に記載の方法。
【請求項３】
前記プラットフォームファームウェア記憶ロケーションにパブリック暗号化キーを供給する段階と、
前記第１プラットフォームファームウェアを更新されたファームウェアイメージで更新するリクエストを受信する段階と、
前記リクエストに応答して、前記コンピュータプラットフォーム内のシステムメモリに前記更新されたファームウェアイメージをロードする段階と、
前記更新されたファームウェアイメージが前記システムメモリに完全にロードされた後に、前記コンピュータプラットフォームのプロセッサによって前記ＡＣＭを起動する段階と、
前記ＡＣＭによって、前記パブリック暗号化キーを使用して、前記更新されたファームウェアイメージの認証を行う段階と、
前記ＡＣＭによって、前記更新されたファームウェアイメージの認証が成功したことに応答して、前記プラットフォームファームウェア記憶ロケーションに対して前記ロック解除プロセスを実行する段階と、
前記ＡＣＭによって、前記システムメモリから、認証された前記ファームウェアイメージを前記プラットフォームファームウェア記憶ロケーションにコピーする段階とを更に備える請求項２に記載の方法。
【請求項４】
前記更新されたファームウェアイメージの前記認証が失敗した場合には、エラーを発行する段階を更に備える請求項３に記載の方法。
【請求項５】
前記第１プラットフォームファームウェアは、システム管理ファームウェアを含み、
前記コントローラは、前記プラットフォームコンポーネントハブを含む請求項２から４の何れか一項に記載の方法。
【請求項６】
前記第１プラットフォームファームウェアは、制御管理ファームウェアを含み、
前記コントローラは、前記コンピュータプラットフォームに位置するコントローラを含む請求項３又は４に記載の方法。
【請求項７】
前記コンピュータプラットフォームのブートの都度、
プロセッサ又はシステム管理ファームウェアの一方によって、一時的パスワードを生成する段階と、
前記ＡＣＭのみアクセス可能な安全なロケーションに前記一時的パスワードを格納する段階と、
前記一時的パスワードを、少なくとも、前記プラットフォームファームウェア記憶ロケーションに連結された前記コントローラに配信する段階とを更に備える請求項６に記載の方法。
【請求項８】
前記パブリック暗号化キーを使用した、前記更新されたファームウェアイメージの前記認証が成功したことに応答して、
前記ＡＣＭが、前記制御管理ファームウェアを更新する許可を得るべく、前記一時的パスワードを含むリクエストを前記コントローラに送信する段階と、
前記コントローラが、前記リクエストから受信した前記一時的パスワードと、前記コンピュータプラットフォームの最新のブートの間に受信した一時的パスワードとを比較する段階と、
前記２つの一時的パスワードが等しいことに応答して、前記コントローラが、前記ＡＣＭが前記制御管理ファームウェアに対する前記更新を実行することを許可する段階とを更に備える請求項７に記載の方法。
【請求項９】
第１プラットフォームファームウェアを格納するプラットフォームファームウェア記憶ロケーションを有するコンピュータプラットフォームのブート時に、前記コンピュータプラットフォームに位置するプラットフォームファームウェア更新メカニズムを、プラットフォーム・ファームウェア・アーマリング技術（ＰＦＡＴ）モードに切り替えるロジックと、
前記プラットフォームファームウェア更新メカニズムが前記ＰＦＡＴモードに切り替わったことに応答して、前記プラットフォームファームウェア記憶ロケーションを持続的にロックするロジックとを備え、
前記プラットフォームファームウェア記憶ロケーションが持続的にロックされると、認証コードモジュール（Ａｕｔｈｅｎｔｉｃａｔｅｄ  Ｃｏｄｅ  Ｍｏｄｕｌｅ：ＡＣＭ）が前記プラットフォームファームウェア更新メカニズムのロック解除プロセスを実行した後にのみ、前記ＡＣＭによる前記プラットフォームファームウェア記憶ロケーションへの書き込みのみが許可される装置。
【請求項１０】
ＰＦＡＴ保護制御レジスタに対する特別なメモリ書き込みサイクルを開始するロジックを更に備え、
前記ＰＦＡＴ保護制御レジスタに対する特別なメモリ書き込みサイクルでは、前記プラットフォームファームウェア記憶ロケーションに連結されたコントローラは、前記プラットフォームファームウェア更新メカニズムから、前記プラットフォームファームウェア記憶ロケーションのアドレス空間への書き込みコマンドを受け取る請求項９に記載の装置。
【請求項１１】
前記プラットフォームファームウェア記憶ロケーションにパブリック暗号化キーを供給し、
前記第１プラットフォームファームウェアを更新されたファームウェアイメージで更新するリクエストを受信し、
前記リクエストに応答して、前記コンピュータプラットフォーム内のシステムメモリに前記更新されたファームウェアイメージをロードし、
前記更新されたファームウェアイメージが前記システムメモリに完全にロードされた後に前記ＡＣＭを起動し、
前記パブリック暗号化キーを使用して、前記更新されたファームウェアイメージの認証を行い、
前記更新されたファームウェアイメージの認証が成功したことに応答して、前記プラットフォームファームウェア記憶ロケーションに対して前記ロック解除プロセスを実行し、
前記システムメモリから、認証された前記更新されたファームウェアイメージを前記プラットフォームファームウェア記憶ロケーションにコピーするロジックを更に備える請求項１０に記載の装置。
【請求項１２】
前記更新されたファームウェアイメージの前記認証が失敗した場合には、エラーを発行するロジックを更に備える請求項１１に記載の装置。
【請求項１３】
前記第１プラットフォームファームウェアは、システム管理ファームウェアを含み、
前記コントローラは、プラットフォームコンポーネントハブを含む請求項１０から１２の何れか一項に記載の装置。
【請求項１４】
前記第１プラットフォームファームウェアは、制御管理ファームウェアを含み、
前記コントローラは、前記コンピュータプラットフォームに位置するコントローラを含む請求項１１又は１２に記載の装置。
【請求項１５】
前記コンピュータプラットフォームのブートの都度、
一時的パスワードを生成し、
前記ＡＣＭのみアクセス可能な安全なロケーションに前記一時的パスワードを格納し、
前記一時的パスワードを、少なくとも、前記プラットフォームファームウェア記憶ロケーションに連結された前記コントローラに配信するロジックを更に備える請求項１４に記載の装置。
【請求項１６】
前記パブリック暗号化キーを使用した、前記更新されたファームウェアイメージの前記認証が成功したことに応答して、
前記制御管理ファームウェアを更新する許可を得るべく、前記一時的パスワードを含むリクエストを前記コントローラに送信するロジックと、
前記リクエストから受信した前記一時的パスワードと、前記コンピュータプラットフォームの最新のブートの間に受信した一時的パスワードとを比較する前記コントローラ内のロジックと、
前記２つの一時的パスワードが等しいことに応答して、前記ＡＣＭが前記制御管理ファームウェアに対する前記更新を実行することを許可する前記コントローラ内のロジックとを更に備える請求項１５に記載の装置。
【請求項１７】
実行されたときにコンピュータプラットフォームに、
第１プラットフォームファームウェアを格納するプラットフォームファームウェア記憶ロケーションを有する前記コンピュータプラットフォームのブート時に、前記コンピュータプラットフォームに位置するプラットフォームファームウェア更新メカニズムを、プラットフォーム・ファームウェア・アーマリング技術（ＰＦＡＴ）モードに切り替える段階と、
前記プラットフォームファームウェア更新メカニズムが前記ＰＦＡＴモードに切り替わったことに応答して、前記プラットフォームファームウェア記憶ロケーションを持続的にロックする段階とを実行させるためのプログラムであって、
前記プラットフォームファームウェア記憶ロケーションが持続的にロックされると、認証コードモジュール（Ａｕｔｈｅｎｔｉｃａｔｅｄ  Ｃｏｄｅ  Ｍｏｄｕｌｅ：ＡＣＭ）が前記プラットフォームファームウェア更新メカニズムのロック解除プロセスを実行した後にのみ、前記ＡＣＭによる前記プラットフォームファームウェア記憶ロケーションへの書き込みのみが許可されるプログラム。
【請求項１８】
前記ロック解除のプロセスは、
前記プラットフォームファームウェア更新メカニズムが、ＰＦＡＴ保護制御レジスタに対する特別なメモリ書き込みサイクルを開始する段階を有し、
前記ＰＦＡＴ保護制御レジスタに対する特別なメモリ書き込みサイクルでは、前記プラットフォームファームウェア記憶ロケーションに連結されたコントローラは、前記プラットフォームファームウェア更新メカニズムから、前記プラットフォームファームウェア記憶ロケーションのアドレス空間への書き込みコマンドを受け取る請求項１７に記載のプログラム。
【請求項１９】
前記プラットフォームファームウェア記憶ロケーションにパブリック暗号化キーを供給する段階と、
前記第１プラットフォームファームウェアを更新されたファームウェアイメージで更新するリクエストを受信する段階と、
前記リクエストに応答して、前記コンピュータプラットフォーム内のシステムメモリに前記更新されたファームウェアイメージをロードする段階と、
前記更新されたファームウェアイメージが前記システムメモリに完全にロードされた後に前記ＡＣＭを呼び出す段階と、
前記パブリック暗号化キーを使用して、前記更新されたファームウェアイメージの認証を行う段階と、
前記更新されたファームウェアイメージの認証が成功したことに応答して、前記プラットフォームファームウェア記憶ロケーションに対して前記ロック解除プロセスを実行する段階と、
前記システムメモリから、認証された前記更新されたファームウェアイメージを前記プラットフォームファームウェア記憶ロケーションにコピーする段階とを更に前記コンピュータに実行させる請求項１８に記載のプログラム。
【請求項２０】
前記更新されたファームウェアイメージの前記認証が失敗した場合には、エラーを発行する段階を更に前記コンピュータに実行させる請求項１９に記載のプログラム。
【請求項２１】
前記第１プラットフォームファームウェアは、システム管理ファームウェアを含み、
前記コントローラは、プラットフォームコンポーネントハブを含む請求項１８から２０の何れか一項に記載のプログラム。
【請求項２２】
前記第１プラットフォームファームウェアは、制御管理ファームウェアを含み、
前記コントローラは、前記コンピュータプラットフォームに位置するコントローラを含む請求項１９又は２０に記載のプログラム。
【請求項２３】
前記コンピュータプラットフォームのブートの都度、
一時的パスワードを生成する段階と、
前記ＡＣＭのみアクセス可能な安全なロケーションに前記一時的パスワードを格納する段階と、
前記一時的パスワードを、少なくとも、前記プラットフォームファームウェア記憶ロケーションに連結された前記コントローラに配信する段階とを更に前記コンピュータに実行させる請求項２２に記載のプログラム。
【請求項２４】
前記パブリック暗号化キーを使用した、前記更新されたファームウェアイメージの前記認証が成功したことに応答して、
前記ＡＣＭが、前記制御管理ファームウェアを更新する許可を得るべく、前記一時的パスワードを含むリクエストを前記コントローラに送信する段階と、
前記コントローラが、前記リクエストから受信した前記一時的パスワードと、前記コンピュータプラットフォームの最新のブートの間に受信した一時的パスワードとを比較する段階と、
前記２つの一時的パスワードが等しいことに応答して、前記コントローラが、前記ＡＣＭが前記制御管理ファームウェアに対する前記更新を実行することを許可する段階とを更に前記コンピュータに実行させる請求項２３に記載のプログラム。
【請求項２５】
プラットフォームコンポーネントハブと、
プラットフォームファームウェアを格納するプラットフォームファームウェア記憶部と、
認証コードモジュール（authenticated code module：ＡＣＭ）を格納するシステムメモリと、
コンピュータプラットフォームのブート時に、前記コンピュータプラットフォームに位置するプラットフォームファームウェア更新メカニズムを、プラットフォーム・ファームウェア・アーマリング技術（ＰＦＡＴ）モードに切り替えるロジックとを備え、
前記プラットフォームファームウェア更新メカニズムが前記ＰＦＡＴモードに切り替わったことに応答して、前記プラットフォームコンポーネントハブは、プラットフォームファームウェア記憶ロケーションを持続的にロックし、
前記プラットフォームファームウェア記憶ロケーションが持続的にロックされると、前記ＡＣＭが前記プラットフォームファームウェア更新メカニズムのロック解除プロセスを実行した後にのみ、前記ＡＣＭによる前記プラットフォームファームウェア記憶ロケーションへの書き込みのみが許可されるシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータプラットフォーム・ファームウェアを安全に更新することに関する。
【背景技術】
【０００２】
コンピュータシステムで操作可能な命令の最初のセットは、プラットフォームファームウェアから生じる。プラットフォームファームウェアとしては、基本入出力システムと関連付けられたファームウェア、埋め込みコントローラ及びマイクロコントローラファームウェア、及び、コンピュータプラットフォーム内の記憶領域に存在するそのほかのファームウェアを含んでもよい。一般的に、プラットフォームファームウェアは、コンピュータシステムの使用期間にわたって一定のものではない。オペレーティングシステム及びソフトウェアアプリケーションが更新されるように、プラットフォームファームウェアも更新される。多くのコンピュータシステムのオペレーションにとって、ファームウェア命令は非常に重要であることから、ファームウェアの更新が行われる際に安全な態様で行われることが必須である。
【０００３】
本発明が、例示を目的として説明されるが、図面によって限定されることはない。図面において、同様な参照番号は、同様な要素を指す。
【図面の簡単な説明】
【０００４】
【図１】プラットフォームファームウェアを安全に更新することができるコンピュータシステムの一実施形態を示した図である。
【図２】システム管理ファームウェア記憶領域への書き込みを可能にするプラットフォームコンポーネントハブをロックダウンするプロセスの一実施形態を示したフローチャートである。
【図３Ａ】安全なプラットフォームファームウェア更新プロセスを開始するプロセスの一実施形態を示したフローチャートである。
【図３Ｂ】安全なプラットフォームファームウェア更新プロセスを継続するプロセスの一実施形態を示したフローチャートである。
【図４】コンピュータシステムのコントローラファームウェアを安全に更新するプロセスの一実施形態を示したフローチャートである。
【発明を実施するための形態】
【０００５】
プラットフォームファームウェアを安全に更新することができる装置、システム、方法及びコンピュータ可読媒体の実施形態が開示される。
【０００６】
コンピュータシステム内のファームウェアは、コンピュータシステムにおける１以上のデバイスに対する、多くの種類の初期化、管理及び操作命令を供給する。ファームウェアの更新は、通常、セキュリティホールの問題を伴う。悪意を持った者が、改ざんされたファームウェアをコンピュータシステムに提供することが考えられる。コンピュータシステムが動作している間は、通常、ファームウェアは標準的なウィルス対策保護レベルよりも低いレベルになっているため、セキュリティが破られてしまうと深刻な影響を及ぼす。したがって、プラットフォームファームウェアの更新の間のセキュリティは、非常に重要である。
【０００７】
多くの実施形態において、プラットフォーム・ファームウェア・アーマリング技術（ＰＦＡＴ）モードは、コンピュータシステム内でイネーブルされる。ＰＦＡＴモードは、多くのエンティティがプラットフォームファームウェアを更新するのを制限する。具体的には、ＰＦＡＴモードでは、安全な（セキュアな）認証コード（authenticated code：ＡＣ）モードで、認証コードモジュール（authenticated code module：ＡＣＭ）によって、システム管理ファームウェア更新が行われるように要求することができる。標準オペレーションモードでは、プラットフォーム・コンポーネント・ハブ（ＰＣＨ）は、記憶装置への書き込みを停止させてもよい。ファームウェア更新を可能とするべく、ロジックは、ＡＣＭを起動して、ＡＣＭは、特別な書き込みサイクルをＣＰＵレジスタに実行して、ファームウェア記憶領域への書き込みのロックを解除してもよい。多くの実施形態では、ＡＣＭは、特別な書き込みサイクルを実行してもよい唯一のエンティティであり、ファームウェア記憶領域のロックが解除されると、ＡＣＭは、実際にファームウェア更新をおこなってもよい唯一のエンティティとなる。更に、ＡＣＭは、更新されたファームウェアイメージを測定して、更新されたファームウェアの信頼性を、ＣＰＵに供給されたパブリックキーを使用して検証してもよい。
【０００８】
図１には、プラットフォームファームウェアを安全に更新することができるコンピュータシステムの一実施形態が示されている。
【０００９】
図には、コンピュータシステム１００が図示されている。コンピュータシステムは、デスクトップ、サーバ、ワークステーション、ラップトップ、ハンドヘルドデバイス、ＴＶセットトップ、メディアセンター、ゲームコンソール、（例えば、車に設けられる）統合システム、又は、そのほかの種類のコンピュータシステムであってもよい。幾つかの実施形態では、コンピュータシステム１００は、"プロセッサ"とも称される１以上の中央演算処理装置（ＣＰＵ）を備える。多くの実施形態では、複数のＣＰＵが存在する可能性があるが、図１に示す実施形態では、図示を明瞭にする目的から、１つのＣＰＵ１０２のみが示されている。ＣＰＵ１０２は、インテル（登録商標）社のＣＰＵ又は別のＣＰＵであってもよい。ＣＰＵ１０２は、異なる実施形態では、１以上のコアを有する。図示のＣＰＵ１０２は、４つのコア（コア１０４、１０６、１０８及び１１０）を有する。
【００１０】
多くの実施形態では、コアはそれぞれ、１以上の実行ユニット、リタイアメントユニット、汎用及び専用レジスタのセット等のインターナル機能ブロックを含む。シングルスレッドコアでは、コアはそれぞれ、ハードウェアスレッドとも称される。コアが、マルチスレッド又はハイパースレッドである場合には、各コア内で動作するスレッドをそれぞれ、ハードウェアスレッドと称してもよい。したがって、コンピュータシステム１００内で実行されるシングルスレッドは、ハードウェアスレッドと称される。例えば、図１において、コアがそれぞれシングルスレッドである場合、システム内に４つのハードウェアスレッドが存在することになる（４つのコア）。一方、各コアがマルチスレッドであり、２つのスレッドのステートを同時に維持することができる場合には、システム内に８個のハードウェアスレッドが存在することになる（１つのコアにつき２つのスレッドを有する、４つのコア）。
【００１１】
ＣＰＵ１０２は、キャッシュ１１２のような１以上のキャッシュを有してもよい。図示しない多くの実施形態において、キャッシュ１１２以外の更なるキャッシュを実装して、各コア及びメモリ内の実行ユニット間にキャッシュの複数レベル（階層）を存在させてもよい。異なる実施形態において、キャッシュ１１２は、異なる態様で分配されてもよい。また、別の実施形態では、キャッシュ１１２は、異なるサイズのうちの１つであってもよい。例えば、キャッシュ１１２は、８メガバイト（ＭＢ）キャッシュ、１６ＭＢキャッシュ等であってもよい。異なる実施形態では、キャッシュは、ダイレクトマップ・キャッシュ、フルアソシアティブ・キャッシュ、マルチウェイ・セットアソシアティブ・キャッシュ、又は、その他のマッピング方式のキャッシュであってもよい。多くの実施形態では、キャッシュ１１２は、全てのコアで共有される１つの大きな部分を有する、又は、複数の別個の機能スライス（例えば、各コアにつき１スライス）に分割されてもよい。キャッシュ１１２はまた、全てのコアによって共有される１つの部分、及び、コア毎の別個の機能スライスとなるその他の部分を有してもよい。
【００１２】
多くの実施形態において、ＣＰＵ１０２は、システムメモリ１１６と通信を行うインターフェースを提供するべく、統合システムメモリコントローラ１１４を有する。図示しない別の実施形態では、メモリコントローラ１１４は、コンピュータシステム１００内の別個の部分に位置してもよい。
【００１３】
システムメモリ１１６は、ダブルデータレート（ＤＤＲ）ランダムアクセセスメモリ（ＤＲＡＭ）のようなＤＲＡＭ、フラッシュメモリ、相変化メモリ（ＰＣＭ）のような不揮発性メモリ、又は、その他の種類のメモリ技術を含んでもよい。システムメモリ１１６は、ＣＰＵ１０２によって実行される命令及びデータを格納する汎用メモリであってもよい。更に、ダイレクトメモリアクセス（ＤＭＡ）可能入出力（Ｉ／Ｏ）デバイスのような、システムメモリからの読み出し及び書き込みを行う能力を有するその他のデバイスが、コンピュータシステム１００内に存在してもよい。
【００１４】
システムメモリ１１６とＣＰＵ１０２とを連結するリンク（すなわち、バス、インターコネクト等）は、データ、アドレス、制御及びクロック情報を転送可能な１以上の光学配線、金属配線及びその他の配線（すなわち、線）を含んでもよい。
【００１５】
プラットフォーム制御ハブ１１８（例えば、Ｉ／Ｏ制御ハブ）は、ＣＰＵ１０２と外部Ｉ／Ｏデバイスとの間の通信を可能にするＩ／Ｏインターフェースを含む。ハブは、Ｉ／Ｏアダプタ１２０のような１以上のＩ／Ｏアダプタを含んでもよい。Ｉ／Ｏアダプタは、ＣＰＵ１０２内で使用されているホスト通信プロトコルを、Ｉ／Ｏデバイス１２２のような特定のＩ／Ｏデバイスと互換性を有するプロトコルへと変換する。所与のＩ／Ｏアダプタが変換するプロトコルとして、例えば、ペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）、ユニバーサル・シリアル・バス（ＵＳＢ）、ＩＤＥ、ＳＣＳＩ、及び、１３９４"ファイヤーワイヤ"が挙げられる。１以上の無線プロトコルＩ／Ｏアダプタが存在してもよい。無線プロトコルの例として、Ｂｌｕｅｔｏｏｔｈ（登録商標）、ＩＥＥＥ８０２．１１ベースの無線プロトコル、セルラープロトコルが挙げられる。
【００１６】
多くの実施形態において、制御デバイス１２４は、コンピュータシステム１００に存在する。制御デバイス１２４は、複数の機能を組み込んでもよい。例えば、ＲＡＩＤストレージ制御デバイスがコンピュータシステム１００内に存在してもよい。ＲＡＩＤコントローラは、ハードディスクドライブ又はソリッドステートディスク（ＳＳＤ）のアレイを管理してもよい。制御デバイスのその他の例として、ディスクリート帯域外管理可能エンジン（discrete out-of-band manageability engine）、埋め込みマイクロコントローラ、又は、その他の種類のコントローラが挙げられる。
【００１７】
ＣＰＵ間高速インターフェース１２６は、１以上の更なるＣＰＵに連結されるリンクへのインターフェースを提供して、ＣＰＵ間通信を可能としてもよい。例えば、ＣＰＵ間高速インターフェースは、クイックパスインターコネクト（quick path interconnect：ＱＰＩ）又はその他の同様なインターフェースであってもよい。
【００１８】
図示していないが、多くの実施形態において、コンピュータシステム１００は、仮想マシン（ＶＭ）環境において実行される１以上のゲストオペレーティングシステム（ＯＳ）を有する仮想化された環境を提供可能なハードウェア及びソフトウェアロジックを含む。仮想マシンモニタ（ＶＭＭ）又はハイパーバイザを、システム内のロジックに実装して、ＶＭの動作環境それぞれを分離してもよい（すなわち、ＶＭ及びＯＳ及びシステム内で実行されるアプリケーションを、システムに存在するその他のＶＭから分離する及び互いに認知不可能とする）。
【００１９】
多くの実施形態において、システム１００には管理可能エンジン１２８に存在する。管理可能エンジンは、リモート管理、セキュリティ管理及び電力管理に関する管理ロジックを含む複数の機能を有してもよい。多くの実施形態において、管理可能エンジン１２８は、コンピュータシステム１００で動作するオペレーティングシステム（ＯＳ）のレベル未満で動作する帯域外（ＯＯＢ）通信チャネルを利用する。ＯＯＢチャネルは、通常、ＯＳの状態に関係なく、リモートシステムとの通信を維持することができる。多くの実施形態において、ＯＯＢチャネルは、コンピュータシステム１００が低電力状態又は完全にシャットダウンされている場合であっても、通信を継続することができる。ある実施形態では、管理可能エンジン１２８は、インテル（登録商標）アクティブ・マネージメント・テクノロジー（Active Management Technology）ハードウェアロジックを含む。別の実施形態では、その他の形式のハードウェアロジックを利用する。
【００２０】
多くの実施形態において、ファームウェアは、コンピュータシステム１００に格納される。コンピュータシステム１００内の任意の場所に格納されたファームウェアは、"プラットフォームファームウェア"と称される場合がある。具体的には、数多くの種類のファームウェアが存在する。例えば、システム管理ファームウェア記憶ロケーション１３０は、システム管理ファームウェア１３２を格納してもよい。システム管理ファームウェア１３０は、拡張可能ファームウェア、基本入出力システム（ＢＩＯＳ）、及び／又は、ブート処理の間のように、コンピュータシステム１００の鍵となる命令を供給するのに使用されてもよいその他の種類のファームウェアを含んでもよい。
【００２１】
コンピュータシステム内の別のファームウェアは、制御デバイス１２４のプラットフォーム制御ファームウェア１３４を含んでもよい。このファームウェアは、制御デバイス１２４に連結されたプラットフォーム制御ファームウェア記憶部１３６に格納されてもよい。プラットフォーム制御ファームウェア１３２は、制御デバイス１２４の機能の管理に関する命令を供給してもよい。
【００２２】
多くの異なる実施形態において、システム内のファームウェア記憶ロケーション（例えば、システム管理ファームウェア記憶ロケーション１３０、プラットフォーム制御ファームウェア記憶ロケーション１３６等）は、ＮＡＮＤフラッシュ、ＮＯＲフラッシュ、相変化メモリ、又は、その他の形式の不揮発性メモリを含む。図示を簡略化するために示されていないが、ＣＰＵは、グラフィックス及びネットワークトラフィックを取り扱う高速Ｉ／Ｏインターフェースのような更なるインターフェースを有してもよい。多くの実施形態では、このような高速Ｉ／Ｏインターフェースは、１以上のＰＣＩエクスプレスインターフェースを含んでもよい。
【００２３】
コンピュータシステム１００は、ＣＰＵ１０２によって起動され署名されるソフトウェアモジュールである、認証コードモジュール（ＡＣＭ）１３８を安全に起動するコードを格納する。ＡＣＭ１３８は、ＣＰＵ１０２の製造者によって管理されるプライベートキーを使用した非対称暗号を利用して署名されてもよい。ＣＰＵ１０２がＡＣＭ１３８を呼び出すと、最初に、ＣＰＵ１０２、ディスクリートＰＣＨのようなチップセット関連回路又はコンピュータシステム内のその他の回路に格納されている予め提供されたパブリックキーのハッシュを使用して認証が行われる。パブリックキーは、内部のプライベートキーによって暗号化された情報を解読するのに使用される。一般的に、パブリックキーは不変である。このような周知のセキュリティプロセスを使用してＡＣＭ１３８を調べることにより、モジュールは、信頼できる実行環境として認証される。ＡＣＭは、セキュリティの観点から、認証コード（ＡＣ）モードで実行されてもよい。ＡＣモードでは、全てのシステム割り込み及びイベントによってＡＣＭが中断されることはなく、その他のシステム及びＤＭＡエージェントから保護される。ＡＣモードで実行する場合、１つのハードウェアスレッドのみがアクティブとなり、その他のハードウェアスレッドは全てランデブー状態となり、休止／スリープ状態になる。
【００２４】
コンピュータシステム１００の第１ブートの間又は前に、ファームウェア更新パブリックキー１４０が、システム管理ファームウェア記憶部１３０に供給及び格納されてもよい。ファームウェア更新パブリックキー１４０は、ファームウェアイメージ情報を認証するのに利用されてもよい。ある実施形態では、パブリックキー１４０は、ファームウェアイメージの認証にのみ使用される。"パブリックキー"という言葉が使用されるが、ある実施形態では、実際の英数字の暗号化されていないキーを格納し、別の実施形態では、"パブリックキー"は、パブリックキーのハッシュを意味する場合がある。パブリックキーは、プロセッサ内又はその他の場所のリードオンリメモリ（ＲＯＭ）に格納されてもよい。記憶領域を節約するために、完全なパブリックキーではなく、ハッシュを格納してもよい。コンピュータシステムに書き込むべきファームウェアイメージは、パブリックキーを含んでもよい。イメージにおけるパブリックキーは、ハッシュされて、システムＲＯＭに格納されているパブリックキーのハッシュと比較される。特定の実施形態では、更なるセキュリティ対策のために、ハッシュを暗号化してもよい。
【００２５】
多くの実施形態において、コンピュータシステム１００は、プラットフォーム・ファームウェア・アーマリング技術（ＰＦＡＴ）モードに入ることができるようになっている。ＰＦＡＴモードでは、プラットフォームファームウェアがロックダウンされる。ＰＦＡＴモードでは、ＡＣモードで動作するＡＣＭのみが、コンピュータシステム１００内のファームウェア記憶ロケーションに対する更新（すなわち、書き込み）を実行することを許可される。そして、ＡＣＭであっても、プラットフォームファームウェア記憶部への書き込みを許可するための特別なプロセスを実行することを要求される。一旦ＰＦＡＴモードに入ると、コンピュータシステムは、このモードから出ることができない。多くの実施形態において、コンピュータシステムのブートの都度、ＰＦＡＴモードに入り、任意のファームウェアが位置するメモリアドレス空間がロックダウンされる。例えば、システム管理ファームウェア記憶部１３０は、プラットフォーム制御ハブ１１８を介してＣＰＵ１０２と連結されることから、システム管理ファームウェア記憶部１３０を対象とした任意の書き込みは、プラットフォーム制御ハブ１１８を介してルートされる。システムがＰＦＡＴモードにある場合、（安全なＡＣＭベースのロック解除プロセスを先に利用することなく）システム管理ファームウェア記憶部１３０のために確保されているメモリロケーションへの任意の書き込みの試みは、プラットフォーム制御ハブ１１８によって拒否される。安全なＡＣＭベースのロック解除プロセスについては、以下に説明する。
【００２６】
多くの実施形態では、ブートプロセス間のファームウェア内で実行されているコードは、ＰＦＡＴモードをイネーブルするライトワンスレジスタ（write-once register）を設定してもよい。例えば、プラットフォームに位置するＰＦＡＴ管理レジスタは、ＰＦＡＴモードをイネーブルするＰＦＡＴイネーブルビットを有してもよい。ある実施形態では、ＰＦＡＴ管理レジスタは、プラットフォーム制御ハブ１１８（ＰＦＡＴレジスタ１４２Ａ）に位置する。別の実施形態では、ＰＦＡＴ管理レジスタは、ＣＰＵの非コア内の別の場所に位置する（ＰＦＡＴレジスタ１４２Ｂ）。このレジスタは、ＰＦＡＴモードの管理と関連付けられた幾つかのビットを有してもよい。例えば、ＰＦＡＴレジスタは、設定されるとＰＦＡＴモードをイネーブルするＰＦＡＴモードイネーブルビットを含んでもよい。また、ＰＦＡＴレジスタは、設定されると、ＰＦＡＴモードイネーブルビットを更に更新することを許さない（少なくとも、プラットフォームが完全にリセットされるまで）ＰＦＡＴモードロックダウンビットを含んでもよい。ロックダウンビットにより、コンピュータシステム１００の通常動作の間に、悪意を持った者がＰＦＡＴモードをディセーブルすることができないようにする。
【００２７】
上記のように、一旦ＰＦＡＴモードに入ると、システム管理ファームウェア記憶部１３０を表すメモリアドレス空間への通常の書き込みが許可されない。多くの実施形態では、コンピュータシステム１００がＰＦＡＴモードに入ると、プラットフォーム制御ハブ１１８は、システム管理ファームウェア記憶部１３０への書き込みが許可されないことを示すインターナルＰＣＨロックレジスタ１４４を設定する。ＰＣＨロックレジスタ１４４が設定されると、ファームウェア記憶部１３０への書き込みを試みる任意のトランザクションは、プラットフォーム制御ハブ１１８によって破棄される。
【００２８】
多くの実施形態において、ＯＳに加えて実行されるファームウェア更新ロジック１４６がシステムメモリ１１６に存在する。ファームウェア更新ロジック１４６は、コンピュータシステム１００に存在する特定のファームウェアを更新するリクエストを受信してもよい。この更新リクエストは、ネットワークを介してシステムアドミニストレータから送信されてもよいし、システム内（例えば、レメディエーションＯＳからの修正）又は他の場所から送信されてもよい。多くの実施形態において、ファームウェア更新のリクエストは、実際の更新のイメージを伴う。ファームウェアイメージは、リクエストと共に直接送られる、又は、リクエストを受信して受け付けた後に送られる。ファームウェアイメージは、ファームウェアの完全な書き換え（例えば、新しいバージョン）であってもよいし、小さな更新（例えば、ファームウェア全体のうちの小さな部分の書き換え）であってもよい。ある時点で、ファームウェア更新ロジック１４６は、更新の実際のイメージを受信する。ファームウェア更新イメージは、システムメモリ１１６内のファームウェアイメージテスト記憶部１４８に格納される。ファームウェア更新ロジック１４６がイメージ全体をテスト記憶部に格納すると、ＡＣＭ１３８が起動されて、システムがＡＣモードに入る。ファームウェア更新ロジック１４６を実行する標準モードから、ＡＣモードで動作するＡＣＭ１３８実行への遷移の間に、ファームウェア更新ロジック１４６は、ＡＣＭ１３８に、システムメモリ１１６内のファームウェアイメージテスト記憶部１４８に対するポインタを受け渡す。この受け渡しには、ポインタを格納するべくＣＰＵ１０２内のレジスタが利用されてもよいし、システムメモリ１１６内の周知のハンドオフロケーションにポインタが格納されてもよい。
【００２９】
ＡＣモードに入り、ファームウェアイメージが格納されたロケーションが受け渡されると、ＡＣＭ１３８は、パブリックキー１４０を使用してファームウェアイメージの認証プロセスを開始する。認証プロセスは、受信したファームウェアイメージの暗号を解読して調べるのに、非対称暗号化を利用してもよい。多くの実施形態において、コンピュータシステム内に格納された不変パブリックキーを使用して、ベンダから受け取ったファームウェアイメージが真正のものであるかを検証してもよい。多くの実施形態では、パブリックキーは、任意のエンティティがアクセス可能なものであり、別の実施形態では、パブリックキーを格納するストレージロケーションを読み出すことが可能なアクセス権を限定されたエンティティが有してもよい。例えば、ある実施形態では、ＡＣモードのＡＣＭ１３８は、ＣＰＵ１０２に格納されたパブリックキー１４０にアクセスできる唯一のエンティティである。
【００３０】
ＡＣＭ１３８は、ファームウェアイメージテスト記憶部１４８に格納されたファームウェアイメージの認証のためのパブリックキーの検証を行う。ファームウェアイメージの認証が成功した場合（すなわち、イメージのセキュリティーが侵害されなかった場合）、ＡＣＭ１３８は、ＣＰＵ１０２内のロックレジスタ１５０に対して、特別な書き込みサイクルを実行する。多くの実施形態において、ＣＰＵ１０２のロックレジスタ１５０は、ＡＣモードのＡＣＭによって書き込みが可能な唯一の特別なＭＳＲ（モデル固有レジスタ）である。したがって、通常モードのＯＳ又は別の同様なエンティティは、このレジスタにアクセスできない。ロックレジスタ１５０への特別な書き込みサイクルにより、ＣＰＵ１０２は、プラットフォーム制御ハブ１１８へ送信される安全なＡＣＭベースのロック解除コマンドを生成する。この安全なロック解除コマンドが到達すると、プラットフォーム制御ハブ１１８内のロジックは、ＰＣＨロックレジスタ１４４をクリアする。ＰＣＨロックレジスタ１４４がクリアされると、プラットフォーム制御ハブ１１８は、システム管理ファームウェア記憶部１３０のアドレス空間への書き込みを許可する。
【００３１】
ファームウェア記憶部への書き込みが許可されると、ＡＣＭ１３８は、ファームウェアイメージテスト記憶部１４８のロケーションからの認証されたファームウェアイメージを、システム管理ファームウェア記憶部１３０へとコピーする。コピーが完了すると、ＡＣＭ１３８は、ＣＰＵロックレジスタ１５０への別の特別な書き込みサイクルを発行することによって、次のロックコマンドを発行してもよく、それにより、プラットフォーム制御ハブ１１８に送信される安全なＡＣＭベースのロックコマンドが生成される。プラットフォーム制御ハブ１１８がロックコマンドを受信すると、ハブ内のロジックが、ＰＣＨロックレジスタ１４４を設定して、システム管理ファームウェア記憶部１３０が再び、書き込みをブロックする状態となる。図１の例では、システム管理ファームウェア１３２の更新について記載した。別の例では、更新は、プラットフォーム制御ファームウェア１３４に関するものであってもよい。
【００３２】
コンピュータシステム１００のブート毎に、一過的な（すなわち、一時的な）パスワードが生成されてもよい。一時的なパスワードを生成するロジックは、ＣＰＵ１０２内、システム管理ファームウェア１３２内、又は、コンピュータシステム１００の別の場所に存在してもよい。一時的なパスワードは、通常、オペレーティングシステムによって、コンピュータシステムの通常動作の前のブートシーケンスの初期段階で生成される。生成された一時的なパスワードは、ＣＰＵ１０２内の一時的なパスワードレジスタ１５２にインターナルに格納される。同じパスワードが、通常動作の間にＣＰＵとの安全なハンドシェイクを必要とするコンピュータシステム内の任意のコントローラ又はその他のデバイスに配布される。制御デバイス１２４のようなコントローラは、ブート時のパスワード分配の間に受信されたパスワードを格納する、内部一時的パスワード記憶ロケーション１５４を有してもよい。この一時的なパスワードは、安全なブートプロセスの間に、生成、分配及び格納されるため、高いセキュリティを可能にする。通常動作時と比較して、安全なブートプロセス間に不正にアクセスされる可能性は低く、このブートプロセス間に一時的なパスワードを分配することにより、パスワードが盗難される可能性が低くなる。
【００３３】
コンピュータシステム１００が完全に動作可能状態となる（例えば、ＯＳが動作する）と、ファームウェア更新ロジック１４６が、プラットフォーム制御ファームウェア１３４を更新するリクエストを受信してもよい。リクエストを受信すると、上記で説明した、更新イメージをファームウェアイメージテスト記憶ロケーション１４８にコピーするのと同じプロセスが実行される。ファームウェア更新ロジック１４６は、ＡＣＭ１３８を起動して、システムの制御をＡＣＭ１３８に渡す。ＡＣＭ１３８は、イメージの認証を行い、イメージの認証が成功すると、ファームウェア更新の実行を行う。システム管理ファームウェア１３２の場合とは異なり、ＡＣＭ１３８は、プラットフォーム制御ファームウェア１３４について完全な制御を有さない。
【００３４】
制御デバイス１２４は、自身のセキュリティプロセスを有して、ＣＰＵ１０２とは異なる別個の動作条件を有してもよい。基本的には、制御デバイス１２４は、制御ファームウェア記憶部１３６空間への書き込みリクエストが、実際にＡＣＭ１３８からのものであることを確かめることを望む。より安全な認証プロセスを生成するべく、ＡＣＭ１３８は、制御デバイス１２４に、制御ファームウェア記憶部１３６内のアドレス空間に対するファームウェア更新を実行するようリクエストを送信してもよい。このＡＣＭベースのリクエストは、一時的なパスワードと共に送信される。
【００３５】
受信したＡＣＭ１３８リクエストの信頼性を検証するべく、制御デバイス１２４は、リクエストと共に受信した一時的なパスワードと、コンピュータシステム１００の現在のブートの間に受信した既に格納されている一時的なパスワードとを比較してもよい。多くの実施形態において、制御デバイス１２４内の更新ロジック１５６が、この比較を実行する。２つのパスワードが等しい場合には、制御デバイス１２４は、制御ファームウェア記憶部１３６のアドレス空間を開放して、ＡＣＭ１３８からの書き込みが行われる。２つのパスワードが等しくない場合には、制御ファームウェア記憶部１３６はロックされたままとなり、制御デバイス１２４は、セキュリティの問題を示すある種のエラーメッセージを生成してもよい。多くの実施形態において、ＣＰＵ１０２内の一時的パスワードレジスタ１５２に一時的なパスワードを安全に保持するべく、レジスタは、ＡＣモードのＡＣＭ１３８のみがアクセス可能であってもよい。多くの実施形態において、ＡＣＭ１３８が認証されたファームウェアイメージの制御ファームウェア記憶部１３６への書き込みを完了すると、ＡＣＭ１３８は、更新が完了したことを示す次の通信を制御デバイス１２４に送信してもよい。これにより、制御デバイス１２４は、制御ファームウェア記憶空間１３６への更なる書き込みを許可しないようにすることを知ることができる。
【００３６】
多くの実施形態において、ＡＣＭは、ファームウェア更新に対するロールバック保護を実装してもよい。ロールバック保護は、プラットフォームファームウェアの更新を、ファームウェアアップデートイメージの新規のバージョンのみに限定する。ある実施形態では、ファームウェアイメージは、ファームウェアバージョンを含むヘッダを有してもよく、現在存在するファームウェアが同様なヘッダを有する。ＡＣＭは、両方のヘッダを読み、新しいファームウェアイメージが、プラットフォームに現在存在するファームウェアよりも新規のバージョンのファームウェアである場合には、新規のファームウェアイメージのみ、ファームウェア記憶ロケーションへの書き込みを許可してもよい。
【００３７】
図２は、プラットフォームコンポーネントハブをロックダウンして、システム管理ファームウェア記憶空間への書きこみを許可するプロセスの一実施形態を示したフローチャートである。プロセスは、ハードウェア回路、ソフトウェアコード、ファームウェアコード、又は、処理ロジックのこれら３種類の任意の組み合わせを含む処理ロジックによって実行されてもよい。本明細書において使用されている"処理ロジック"という言葉が使用されているものは、上記したようなロジックの任意の組み合わせ、及び、その他の形式のロジックに実装されてもよい。
【００３８】
プロセッサのブートの間に、処理ロジックが、コンピュータシステムにおけるファームウェア更新保護メカニズムをアクティブにするＰＦＡＴモードイネーブルビットを設定すること（処理ブロック２００）から、プロセスが開始する。ＰＦＡＴモードイネーブルビットは、コンピュータシステムのＰＣＨデバイス内のファームウェア管理レジスタに位置してもよい。ＰＦＡＴをイネーブルするべくＰＦＡＴモードイネーブルビットが設定されると、処理ロジックは、ＰＦＡＴモードイネーブルロックダウンビットを設定する（処理ブロック２０２）。ＰＦＡＴモードイネーブルロックダウンビットは、ＰＦＡＴモードイネーブルビットの更なる変更をさせない。多くの実施形態において、ＰＦＡＴモードイネーブルロックダウンビットは、コンピュータシステムのブート毎ライトワンスビットである。このような実施形態では、コンピュータシステムの完全なリセットの間に、ＰＦＡＴモードロックダウンビットを変更可能である。各ブートにおいて、ＰＦＡＴモードをイネーブルするプロセス、そして、ＰＦＡＴモードをロックダウンするプロセスが発生する。
【００３９】
図２に図示しない別の実施形態では、ＰＦＡＴモードイネーブルビットは、コンピュータシステムの残りの使用期間の間、書き込みを行った後は変更することができないライトワンスレジスタである。このような実施形態では、ＰＦＡＴモードイネーブルビットは、コンピュータシステムのブート毎に１回書き込まれて、その後は、（コンピュータシステムがリブートされるまで）、コンピュータシステムがＰＦＡＴモードをイネーブルしたか否かを示す。この処理ブロックは、ブロック２００として示されている。このような実施形態では、ブートプロセスの間に一度書き込みがあった後は再書き込み可能とならないため、ＰＦＡＴモードイネーブルロックダウンビットは必要ない。このような別の実施形態では、処理ブロック２０２は必要ない。
【００４０】
このプロセスが終了すると、コンピュータプラットフォームは、ブート処理に戻って続きを実行する。図３Ａは、安全なプラットフォームファームウェア更新プロセスを開始するプロセスの一実施形態を示したフローチャートである。
【００４１】
処理ロジックは、プラットフォームファームウェアを更新するリクエストを受信すること（処理ブロック３００）から開始する。このリクエストは、コンピュータシステム全体における任意の種類のファームウェアの更新と関連付けられていてもよい。ある実施形態では、これは、システム管理ファームウェアに関しての更新でもよいし、別の実施形態では、プラットフォーム制御ファームウェアに関しての更新でもよいし、更に別の実施形態では、コンピュータシステム／プラットフォームに格納されるその他の種類及びロケーションのファームウェアに関する更新であってもよい。
【００４２】
次の処理ロジックでは、システムメモリ内のロケーションに、リクエストと関連付けられたファームウェアイメージをコピーする（処理ブロック３０２）。イメージは、更新の種類に応じて、ファームウェア全部であってもよいし、ファームウェアの一部分であってもよい。多くの実施形態では、イメージは暗号化されている。暗号化されたイメージは、パブリックキーを有効に利用する非対称アルゴリズムを使用して暗号化されていてもよい。パブリックキーは、システムが構築された時又はその後で、コンピュータシステムに備えられてもよい。パブリックキーは、システム管理ファームウェア記憶部の安全な部分のような、再書き込みができないメモリロケーションにセキュアに格納されてもよい。図３Ａに戻り、ファームウェアイメージがシステムメモリにコピーされると、処理ロジックは、コンピュータシステムの安全なロケーションに格納された利用可能なパブリックキーを使用して、イメージの認証を行う（処理ブロック３０４）。
【００４３】
図３Ａのブロック３０４は、システム内で起動されたＡＣＭ内のＡＣモードで動作するロジックによって処理が行われてもよい。ＡＣＭの呼び出しについては、図１を参照して上記で説明した。多くの実施形態では、認証プロセスには、システムに格納された不変パブリックキーが、イメージに含まれるパブリックキーと一致するかの検証が含まれる。コンピュータシステムのセキュリティプロセスを利用して、イメージの検証を行ってもよい。イメージの真正を決定するプロセスには幾つかの形態があるが、望ましいのは、イメージが改ざんされたものでないことが確かめられることである。処理ロジックは、イメージが真正のものであると認証されたか否かを確認する（処理ブロック３０６）。図示されていないが、ファームウェアイメージは、暗号化された形式で送信され、認証の前にイメージの暗号解読を可能とするべくＡＣＭがアクセス可能な更なる暗号解読キーが必要となる。
【００４４】
イメージの認証が不成功であった場合は、処理ロジックは、エラーメッセージをＣＰＵに送信する（処理ブロック３０８）。例えば、処理ロジックは、イメージの認証に失敗／問題があったことを伝達する割り込みを発行してもよい。イメージの認証が成功した場合には（すなわち、イメージが真正であると認証された場合）、処理ロジックは、図３Ｂに示されるプロセスへと進む。
【００４５】
図３Ｂは、安全なプラットフォームファームウェア更新プロセスの続きの一実施形態を示すフローチャートである。
【００４６】
プロセスフローのこの時点で、処理ロジック（例えば、ＡＣＭ内のロジック）は、プラットフォームファームウェア記憶ロケーションのロックを解除して、書き込みを可能にする（処理ブロック３１０）。プラットフォームファームウェア記憶ロケーションが、（図１を参照して上記で説明したような）システム管理ファームウェア記憶ロケーションである実施形態では、ＡＣＭ内のロジックは、イメージの真正を検証する時に（図３Ａのブロック３０６）、ＰＣＨのロックを解除して、システム管理ファームウェア記憶ロケーションへの書き込みを可能にする。プラットフォームファームウェアが制御記憶部に存在するような別の実施形態では、ファームウェア記憶部への書き込みを行うには別のプロセス（図４で説明する制御ファームウェアベースのプロセス）が必要となる。
【００４７】
図３Ｂに戻り、プラットフォームファームウェア記憶ロケーションのロックが解除されると、処理ロジックは、ファームウェアイメージを、プラットフォームファームウェア記憶ロケーションにコピーする（処理ブロック３１２）。そして、認証されたイメージがプラットフォームファームウェア記憶ロケーションにコピーされた後、処理ロジックは、ファームウェア記憶ロケーションをロックして、これ以上書き込みが許可されないようにし（処理ブロック３１４）、プロセスが終了する。
【００４８】
上記で説明したように、プラットフォームファームウェア記憶部のロックを解除するプロセスは、ファームウェア記憶部が位置する場所に依存する。プラットフォームファームウェア記憶部がシステム管理ファームウェア記憶ロケーションである場合、ロック解除プロセスは、ＣＰＵロックレジスタ（図１の１５０）に書き込みを行うべく、ＡＣモードで実行されるＡＣＭ（図１の１３８）を必要としてもよい。多くの実施形態では、ＣＰＵロックレジスタは、ＣＰＵ（図１の１０２）アンコア内のＭＳＲである。ＡＣモードで動作するＡＣＭによってのみ発行される特別な書き込みＭＳＲ（ＷＲＭＳＲ）コマンドは、ＣＰＵロックレジスタへの書き込みを行う。そしてプロセスは、ＰＣＨ（図１の１１８）に存在するＰＣＨロックレジスタ（図１の１４４）を対象とする特別な書き込みを生成する。ＰＣＨロックレジスタを対象とする書き込みコマンドは、ＰＣＨに、システム管理ファームウェア記憶部（図１の１３０）への書き込み能力を開放させてもよく、それにより、ＡＣＭが、新たなシステム管理ファームウェアイメージを、正しい記憶ロケーションに書き込みを行うことができる。イメージの書き込みが完了した時点で、同様なＷＲＭＳＲコマンドを同じＣＰＵロックレジスタに発行して、システム管理ファームウェア記憶部をロックすることができる。
【００４９】
図４は、コンピュータシステムの制御ファームウェを安全に更新するプロセスの一実施形態を示したフローチャートである。多くの実施形態において、図４に示すプロセスフローは、対象のコントローラの処理ロジックに加えて、ＡＣＭ／ＣＰＵに対する処理ロジックも含む。ロジックが処理する各ブロックを明確に示すために、図４の左側（点線の左側）は、ＣＰＵ／ＡＣＭに関するロジックを表し、図４の右側（点線の左側）は、コントローラに関するロジックを表す。
【００５０】
ＣＰＵベースの処理ロジックは、コンピュープラットフォームのブートシーケンスの間に、一時的パスワードを生成する段階から開始する（処理ブロック４００）。一時的パスワードは、現在のシステム管理ファームウェアにより、又は、コンピュータシステム内のその他のロジックにより、ランダムに生成されてもよい。ランダムなパスワードは、ＣＰＵ内のＡＣＭのみがアクセス可能な記憶ロケーションに又はＣＰＵがアクセス可能な別の安全な記憶ロケーションに、処理ロジックによってローカルに格納される（処理ブロック４０２）。例えば、ＣＰＵ内の一時的なパスワードレジスタ（図１の１５２）は、生成された一時的なパスワードを格納してもよく、このレジスタは、ＡＣモードで動作するＡＣＭのみがアクセス可能であってもよい。
【００５１】
ＣＰＵベースの処理ロジックは、この一時的なパスワードを、コントローラに送信する（処理ブロック４０４）。制御処理ロジックは、システムブートシーケンスの間に、一時的なパスワードを受信する（処理ブロック４０６）。この時点で、制御処理ロジックは、システムがまだ通常オペレーションモードに入っておらず、パスワードが改ざんされる機会がないことから、一時的なパスワードが有効であると仮定する。そして、処理ロジックは、受信した一時的なパスワードをローカルに格納する（処理ブロック４０８）（例えば、図１の一時的なパスワード記憶部１５４に格納されてもよい）。この時点で、コントローラ内の処理ロジックは、ファームウェア更新リクエストが受信されるまで待機する。
【００５２】
図３Ａに戻り、エンティティは、プラットフォームファームウェアの更新をリクエストしてもよく（図３Ａの３００）、ＣＰＵ／ＡＣＭベースの処理ロジックは、図３Ａに関するブロックの処理を行い、新しいコントローラ固有のプラットフォームファームウェアイメージの認証を行う。イメージが認証されると、ＡＣＭ処理ロジックは、図４の次のブロックの処理を行い、リクエストに一時的なパスワードを含む制御ファームウェアの更新リクエストをコントローラに送信する（処理ブロック４１０）。制御ロジックは、ＣＰＵによって格納された現在の一時的パスワードと共にファームウェア更新リクエストを受信する（処理ブロック４１２）。次に、制御処理ロジックは、リクエストと共に受信した現在の一時的パスワードと、ブートプロセスの間に受信した信頼性の高い一時的パスワードとを比較する（処理ブロック４１４）。
【００５３】
比較の結果パスワードが一致する場合には（処理ブロック４１６）、制御処理ロジックは、ＡＣＭによる制御ファームウェア記憶部への書き込みを許可して、更新応答の承諾をＡＣＭに送信する（処理ブロック４１８）。ＡＣＭベースの処理ロジックは、図３Ｂの処理ブロックにおけるコントローラ更新を続けることにより、更新処理を続けることができる。パスワードが一致しなかった場合には、制御処理ロジックは、ＡＣＭに拒否応答を送信する（同時に、制御ファームウェア記憶部への書き込みの禁止を継続する）。ＡＣＭベースのロジックは、拒否応答を受信し、エラーシーケンスを開始する（処理ブロック４２２）。エラーシーケンスは、割り込みの生成、エラーフラグの設定、システムのシャットダウン、又は、管理エンジン（図１の１２８）を介してエラーに関する帯域外情報をＩＴアドミニストレータに送信する等、様々な形態であってもよい。
【００５４】
本発明の実施形態の要素は、機械実行可能命令を格納する機械可読媒体として提供されてもよい。機械可読媒体としては、これに限定されないが、例えば、フラッシュメモリ、光学ディスク、コンパクトディスク・リードオンリーメモリ（ＣＤ−ＲＯＭ）、デジタル多用途ビデオディスク（ＤＶＤ）ＲＯＭ、ランダムアクセスメモリ（ＲＡＭ）、消去可能−プログラム可能リードオンリーメモリ（ＥＰＲＯＭ）、電気的消去可能−プログラム可能リードオンリーメモリ（ＥＥＰＲＯＭ）、磁気又は光学カード、伝播媒体、又は、電子命令を格納するのに好適なその他の種類の機械可読媒体が含まれる。
【００５５】
上記の記載及び／又は特許請求の範囲では、"備える（comprise）"、"含む（include）"及びこれらの派生語は、互いに同義語として使用されている場合がある。また、本明細書及び特許請求の範囲では、"結合された（coupled）"及び"接続された（connected）"並びにこれらの派生語が使用されることがある。この２つの言葉は、同義語として使用されているのではない。特定の実施例において、"接続された（connected）"は、２つ又は２つ以上の要素が物理的に又は電気的に直接互いに接触していることを示すのに使用され、"連結された（coupled）"も、２つ又は２つ以上の要素が、物理的に又は電気的に直接互いに接触していることを示すが、"連結された（coupled）"は、２つ又は２つ以上の要素が、協動又は相互作用しているが、直接接していない場合も示す。
【００５６】
上記の記載において、本発明の実施形態を説明するのに特定の用語が使用されている。例えば、"ロジック"という言葉は、１以上の機能を実行するハードウェア、ファームウェア、ソフトウェア（又はこれらの任意の組み合わせ）を表している。例えば、"ハードウェア"の例としては、これに限定されないが、集積回路、有限ステートマシーン又は組み合わせロジックが含まれる。集積回路は、マイクロプロセッサのようなプロセッサ、用途特定ＩＣ、デジタル信号プロセッサ、マイクロコントローラ等の形態であってもよい。
【００５７】
本明細書において、本発明の"一実施形態"又は"ある実施形態"との表現は、その実施形態に関連する特定の特徴、構造及び特性が、少なくとも本発明の実施形態の一つに含まれていることを意味する。したがって、本明細書中の様々な箇所で使用されている"一実施形態"又は"ある実施形態"という表現は、必ずしも同一の実施形態を示していない。また、本発明の１以上の実施形態において、特定の特徴、構造又は特性を好適に組み合わせてもよい。
【００５８】
同様に、上記の本発明の実施形態の記載では、様々な発明の側面の１以上の理解を助ける開示を短くする目的から、様々な特徴が、１つの実施形態、その図面及び説明に組み込まれている。このような開示の方法は、特許請求される特徴が特許請求の範囲に明確に記載される以上の特徴を必要とするとの意図を反映したものではない。添付の特許請求の範囲に反映されるように、本発明の側面は、上記で開示した１つの実施形態の全ての特徴よりも少ない。したがって、添付の特許請求の範囲は、明確に詳細な説明に組み込まれる。
【図１】
0005643901.tif 000002
【図２】
0005643901.tif 000003
【図３Ａ】
0005643901.tif 000004
【図３Ｂ】
0005643901.tif 000005
【図４】
0005643901.tif 000006