特許第6137499号(P6137499)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ インテル・コーポレーションの特許一覧

<>
  • 特許6137499-方法および装置 図000002
  • 特許6137499-方法および装置 図000003
  • 特許6137499-方法および装置 図000004
  • 特許6137499-方法および装置 図000005
  • 特許6137499-方法および装置 図000006
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6137499
(24)【登録日】2017年5月12日
(45)【発行日】2017年5月31日
(54)【発明の名称】方法および装置
(51)【国際特許分類】
   G06F 21/57 20130101AFI20170522BHJP
   G06F 11/00 20060101ALI20170522BHJP
   G06F 9/445 20060101ALI20170522BHJP
【FI】
   G06F21/57 320
   G06F9/06 630A
   G06F9/06 610K
【請求項の数】16
【全頁数】22
(21)【出願番号】特願2014-223026(P2014-223026)
(22)【出願日】2014年10月31日
(62)【分割の表示】特願2013-529215(P2013-529215)の分割
【原出願日】2011年9月12日
(65)【公開番号】特開2015-57722(P2015-57722A)
(43)【公開日】2015年3月26日
【審査請求日】2014年12月1日
(31)【優先権主張番号】12/887,866
(32)【優先日】2010年9月22日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】591003943
【氏名又は名称】インテル・コーポレーション
(74)【代理人】
【識別番号】110000877
【氏名又は名称】龍華国際特許業務法人
(72)【発明者】
【氏名】ウィッシュマン、アレン アール.
(72)【発明者】
【氏名】ゲティ、セルジュ ディー.
(72)【発明者】
【氏名】ネヴェ デ メヴェリニ、マイケル
(72)【発明者】
【氏名】ウォリアー、ウルハス エス.
(72)【発明者】
【氏名】カーラー、アディル
(72)【発明者】
【氏名】モーラン、ダグラス アール.
(72)【発明者】
【氏名】ブランノック、カーク
【審査官】 上島 拓也
(56)【参考文献】
【文献】 特許第5643901(JP,B2)
【文献】 特開2002−007214(JP,A)
【文献】 特開2006−216048(JP,A)
【文献】 特開2007−172062(JP,A)
【文献】 特開2008−243183(JP,A)
【文献】 米国特許出願公開第2006/0059300(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/57
G06F 9/445
(57)【特許請求の範囲】
【請求項1】
コンピュータプラットフォームによって実行される方法であって、前記方法は、
第1プラットフォームファームウェアを格納するプラットフォームファームウェア記憶ロケーションを有する前記コンピュータプラットフォームのブート時に、前記コンピュータプラットフォームがリセットされるまで更新されないライトワンスレジスタを設定して、前記コンピュータプラットフォームに位置するプラットフォームファームウェア更新メカニズムを、プラットフォーム・ファームウェア・アーマリング技術(PFAT)モードに切り替える段階と、
前記プラットフォームファームウェア更新メカニズムが前記PFATモードに切り替わったことに応答して、前記プラットフォームファームウェア記憶ロケーションを持続的にロックする段階とを備え、
前記プラットフォームファームウェア記憶ロケーションが持続的にロックされると、認証コードモジュール(Authenticated Code Module:ACM)が前記プラットフォームファームウェア更新メカニズムのロック解除プロセスを実行した後に、前記ACMによる前記プラットフォームファームウェア記憶ロケーションへの書き込みが許可され、前記ACM以外のエンティティによる前記プラットフォームファームウェア記憶ロケーションへの書き込みが許可されない
方法。
【請求項2】
前記ロック解除のプロセスは、
前記プラットフォームファームウェア更新メカニズムが、PFAT保護制御レジスタに対する特別なメモリ書き込みサイクルを開始する段階を有し、
前記PFAT保護制御レジスタに対する特別なメモリ書き込みサイクルでは、前記プラットフォームファームウェア記憶ロケーションに連結されたコントローラは、前記プラットフォームファームウェア更新メカニズムから、前記プラットフォームファームウェア記憶ロケーションのアドレス空間への書き込みコマンドを受け取る請求項1に記載の方法。
【請求項3】
前記プラットフォームファームウェア記憶ロケーションにパブリック暗号化キーを供給する段階と、
前記第1プラットフォームファームウェアを更新されたファームウェアイメージで更新するリクエストを受信する段階と、
前記リクエストに応答して、前記コンピュータプラットフォーム内のシステムメモリに前記更新されたファームウェアイメージをロードする段階と、
前記ファームウェアイメージが前記システムメモリに完全にロードされた後に、前記ACMを起動する段階と、
前記パブリック暗号化キーを使用して、前記更新されたファームウェアイメージの認証を行う段階と、
前記更新されたファームウェアイメージの認証が成功したことに応答して、前記プラットフォームファームウェア記憶ロケーションに対して前記ロック解除プロセスを実行する段階と、
前記システムメモリから、認証された前記ファームウェアイメージを前記プラットフォームファームウェア記憶ロケーションにコピーする段階とを更に備える請求項2に記載の方法。
【請求項4】
前記ファームウェアイメージの前記認証が失敗した場合には、エラーを発行する段階を更に備える請求項3に記載の方法。
【請求項5】
前記第1プラットフォームファームウェアは、システム管理ファームウェアを含み、
前記コントローラは、プラットフォームコンポーネントハブを含む請求項3に記載の方法。
【請求項6】
前記第1プラットフォームファームウェアは、制御管理ファームウェアを含み、
前記コントローラは、前記コンピュータプラットフォームに位置するコントローラを含む請求項3に記載の方法。
【請求項7】
前記コンピュータプラットフォームのブートの都度、
一時的パスワードを生成する段階と、
前記ACMのみアクセス可能な安全なロケーションに前記一時的パスワードを格納する段階と、
前記一時的パスワードを、少なくとも、前記プラットフォームファームウェア記憶ロケーションに連結された前記コントローラに配信する段階とを更に備える請求項6に記載の方法。
【請求項8】
前記パブリック暗号化キーを使用した、前記更新されたファームウェアイメージの前記認証が成功したことに応答して、
前記ACMが、前記制御管理ファームウェアを更新する許可を得るべく、前記一時的パスワードを含むリクエストを前記コントローラに送信する段階と、
前記コントローラが、前記リクエストから受信した前記一時的パスワードと、前記コンピュータプラットフォームの最新のブートの間に受信した一時的パスワードとを比較する段階と、
前記2つの一時的パスワードが等しいことに応答して、前記コントローラが、前記ACMが前記制御管理ファームウェアに対する前記更新を実行することを許可する段階とを更に備える請求項7に記載の方法。
【請求項9】
第1プラットフォームファームウェアを格納するプラットフォームファームウェア記憶ロケーションを有するコンピュータプラットフォームのブート時に、前記コンピュータプラットフォームがリセットされるまで更新されないライトワンスレジスタを設定して、前記コンピュータプラットフォームに位置するプラットフォームファームウェア更新メカニズムを、プラットフォーム・ファームウェア・アーマリング技術(PFAT)モードに切り替えるロジックと、
前記プラットフォームファームウェア更新メカニズムが前記PFATモードに切り替わったことに応答して、前記プラットフォームファームウェア記憶ロケーションを持続的にロックするロジックとを備え、
前記プラットフォームファームウェア記憶ロケーションが持続的にロックされると、認証コードモジュール(Authenticated Code Module:ACM)が前記プラットフォームファームウェア更新メカニズムのロック解除プロセスを実行した後に、前記ACMによる前記プラットフォームファームウェア記憶ロケーションへの書き込みが許可され、前記ACM以外のエンティティによる前記プラットフォームファームウェア記憶ロケーションへの書き込みが許可されない装置。
【請求項10】
PFAT保護制御レジスタに対する特別なメモリ書き込みサイクルを開始するロジックを更に備え、
前記PFAT保護制御レジスタに対する特別なメモリ書き込みサイクルでは、前記プラットフォームファームウェア記憶ロケーションに連結されたコントローラは、前記プラットフォームファームウェア更新メカニズムから、前記プラットフォームファームウェア記憶ロケーションのアドレス空間への書き込みコマンドを受け取る請求項9に記載の装置。
【請求項11】
前記プラットフォームファームウェア記憶ロケーションにパブリック暗号化キーを供給し、
前記第1プラットフォームファームウェアを更新されたファームウェアイメージで更新するリクエストを受信し、
前記リクエストに応答して、前記コンピュータプラットフォーム内のシステムメモリに前記更新されたファームウェアイメージをロードし、
前記ファームウェアイメージが前記システムメモリに完全にロードされた後に前記ACMを起動し、
前記パブリック暗号化キーを使用して、前記更新されたファームウェアイメージの認証を行い、
前記更新されたファームウェアイメージの認証が成功したことに応答して、前記プラットフォームファームウェア記憶ロケーションに対して前記ロック解除プロセスを実行し、
前記システムメモリから、認証された前記ファームウェアイメージを前記プラットフォームファームウェア記憶ロケーションにコピーするロジックを更に備える請求項10に記載の装置。
【請求項12】
前記ファームウェアイメージの前記認証が失敗した場合には、エラーを発行するロジックを更に備える請求項11に記載の装置。
【請求項13】
前記第1プラットフォームファームウェアは、システム管理ファームウェアを含み、
前記コントローラは、プラットフォームコンポーネントハブを含む請求項11に記載の装置。
【請求項14】
前記第1プラットフォームファームウェアは、制御管理ファームウェアを含み、
前記コントローラは、前記コンピュータプラットフォームに位置するコントローラを含む請求項11に記載の装置。
【請求項15】
前記コンピュータプラットフォームのブートの都度、
一時的パスワードを生成し、
前記ACMのみアクセス可能な安全なロケーションに前記一時的パスワードを格納し、
前記一時的パスワードを、少なくとも、前記プラットフォームファームウェア記憶ロケーションに連結された前記コントローラに配信するロジックを更に備える請求項14に記載の装置。
【請求項16】
前記パブリック暗号化キーを使用した、前記更新されたファームウェアイメージの前記認証が成功したことに応答して、
前記制御管理ファームウェアを更新する許可を得るべく、前記一時的パスワードを含むリクエストを前記コントローラに送信するロジックと、
前記リクエストから受信した前記一時的パスワードと、前記コンピュータプラットフォームの最新のブートの間に受信した一時的パスワードとを比較する前記コントローラ内のロジックと、
2つの前記一時的パスワードが等しいことに応答して、前記ACMが前記制御管理ファームウェアに対する前記更新を実行することを許可する前記コントローラ内のロジックとを更に備える請求項15に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータプラットフォーム・ファームウェアを安全に更新することに関する。
【背景技術】
【0002】
コンピュータシステムで操作可能な命令の最初のセットは、プラットフォームファームウェアから生じる。プラットフォームファームウェアとしては、基本入出力システムと関連付けられたファームウェア、埋め込みコントローラ及びマイクロコントローラファームウェア、及び、コンピュータプラットフォーム内の記憶領域に存在するそのほかのファームウェアを含んでもよい。一般的に、プラットフォームファームウェアは、コンピュータシステムの使用期間にわたって一定のものではない。オペレーティングシステム及びソフトウェアアプリケーションが更新されるように、プラットフォームファームウェアも更新される。多くのコンピュータシステムのオペレーションにとって、ファームウェア命令は非常に重要であることから、ファームウェアの更新が行われる際に安全な態様で行われることが必須である。
【0003】
本発明が、例示を目的として説明されるが、図面によって限定されることはない。図面において、同様な参照番号は、同様な要素を指す。
【図面の簡単な説明】
【0004】
図1】プラットフォームファームウェアを安全に更新することができるコンピュータシステムの一実施形態を示した図である。
図2】システム管理ファームウェア記憶領域への書き込みを可能にするプラットフォームコンポーネントハブをロックダウンするプロセスの一実施形態を示したフローチャートである。
図3A】安全なプラットフォームファームウェア更新プロセスを開始するプロセスの一実施形態を示したフローチャートである。
図3B】安全なプラットフォームファームウェア更新プロセスを継続するプロセスの一実施形態を示したフローチャートである。
図4】コンピュータシステムのコントローラファームウェアを安全に更新するプロセスの一実施形態を示したフローチャートである。
【発明を実施するための形態】
【0005】
プラットフォームファームウェアを安全に更新することができる装置、システム、方法及びコンピュータ可読媒体の実施形態が開示される。
【0006】
コンピュータシステム内のファームウェアは、コンピュータシステムにおける1以上のデバイスに対する、多くの種類の初期化、管理及び操作命令を供給する。ファームウェアの更新は、通常、セキュリティホールの問題を伴う。悪意を持った者が、改ざんされたファームウェアをコンピュータシステムに提供することが考えられる。コンピュータシステムが動作している間は、通常、ファームウェアは標準的なウィルス対策保護レベルよりも低いレベルになっているため、セキュリティが破られてしまうと深刻な影響を及ぼす。したがって、プラットフォームファームウェアの更新の間のセキュリティは、非常に重要である。
【0007】
多くの実施形態において、プラットフォーム・ファームウェア・アーマリング技術(PFAT)モードは、コンピュータシステム内でイネーブルされる。PFATモードは、多くのエンティティがプラットフォームファームウェアを更新するのを制限する。具体的には、PFATモードでは、安全な(セキュアな)認証コード(authenticated code:AC)モードで、認証コードモジュール(authenticated code module:ACM)によって、システム管理ファームウェア更新が行われるように要求することができる。標準オペレーションモードでは、プラットフォーム・コンポーネント・ハブ(PCH)は、記憶装置への書き込みを停止させてもよい。ファームウェア更新を可能とするべく、ロジックは、ACMを起動して、ACMは、特別な書き込みサイクルをCPUレジスタに実行して、ファームウェア記憶領域への書き込みのロックを解除してもよい。多くの実施形態では、ACMは、特別な書き込みサイクルを実行してもよい唯一のエンティティであり、ファームウェア記憶領域のロックが解除されると、ACMは、実際にファームウェア更新をおこなってもよい唯一のエンティティとなる。更に、ACMは、更新されたファームウェアイメージを測定して、更新されたファームウェアの信頼性を、CPUに供給されたパブリックキーを使用して検証してもよい。
【0008】
図1には、プラットフォームファームウェアを安全に更新することができるコンピュータシステムの一実施形態が示されている。
【0009】
図には、コンピュータシステム100が図示されている。コンピュータシステムは、デスクトップ、サーバ、ワークステーション、ラップトップ、ハンドヘルドデバイス、TVセットトップ、メディアセンター、ゲームコンソール、(例えば、車に設けられる)統合システム、又は、そのほかの種類のコンピュータシステムであってもよい。幾つかの実施形態では、コンピュータシステム100は、"プロセッサ"とも称される1以上の中央演算処理装置(CPU)を備える。多くの実施形態では、複数のCPUが存在する可能性があるが、図1に示す実施形態では、図示を明瞭にする目的から、1つのCPU102のみが示されている。CPU102は、インテル(登録商標)社のCPU又は別のCPUであってもよい。CPU102は、異なる実施形態では、1以上のコアを有する。図示のCPU102は、4つのコア(コア104、106、108及び110)を有する。
【0010】
多くの実施形態では、コアはそれぞれ、1以上の実行ユニット、リタイアメントユニット、汎用及び専用レジスタのセット等のインターナル機能ブロックを含む。シングルスレッドコアでは、コアはそれぞれ、ハードウェアスレッドとも称される。コアが、マルチスレッド又はハイパースレッドである場合には、各コア内で動作するスレッドをそれぞれ、ハードウェアスレッドと称してもよい。したがって、コンピュータシステム100内で実行されるシングルスレッドは、ハードウェアスレッドと称される。例えば、図1において、コアがそれぞれシングルスレッドである場合、システム内に4つのハードウェアスレッドが存在することになる(4つのコア)。一方、各コアがマルチスレッドであり、2つのスレッドのステートを同時に維持することができる場合には、システム内に8個のハードウェアスレッドが存在することになる(1つのコアにつき2つのスレッドを有する、4つのコア)。
【0011】
CPU102は、キャッシュ112のような1以上のキャッシュを有してもよい。図示しない多くの実施形態において、キャッシュ112以外の更なるキャッシュを実装して、各コア及びメモリ内の実行ユニット間にキャッシュの複数レベル(階層)を存在させてもよい。異なる実施形態において、キャッシュ112は、異なる態様で分配されてもよい。また、別の実施形態では、キャッシュ112は、異なるサイズのうちの1つであってもよい。例えば、キャッシュ112は、8メガバイト(MB)キャッシュ、16MBキャッシュ等であってもよい。異なる実施形態では、キャッシュは、ダイレクトマップ・キャッシュ、フルアソシアティブ・キャッシュ、マルチウェイ・セットアソシアティブ・キャッシュ、又は、その他のマッピング方式のキャッシュであってもよい。多くの実施形態では、キャッシュ112は、全てのコアで共有される1つの大きな部分を有する、又は、複数の別個の機能スライス(例えば、各コアにつき1スライス)に分割されてもよい。キャッシュ112はまた、全てのコアによって共有される1つの部分、及び、コア毎の別個の機能スライスとなるその他の部分を有してもよい。
【0012】
多くの実施形態において、CPU102は、システムメモリ116と通信を行うインターフェースを提供するべく、統合システムメモリコントローラ114を有する。図示しない別の実施形態では、メモリコントローラ114は、コンピュータシステム100内の別個の部分に位置してもよい。
【0013】
システムメモリ116は、ダブルデータレート(DDR)ランダムアクセセスメモリ(DRAM)のようなDRAM、フラッシュメモリ、相変化メモリ(PCM)のような不揮発性メモリ、又は、その他の種類のメモリ技術を含んでもよい。システムメモリ116は、CPU102によって実行される命令及びデータを格納する汎用メモリであってもよい。更に、ダイレクトメモリアクセス(DMA)可能入出力(I/O)デバイスのような、システムメモリからの読み出し及び書き込みを行う能力を有するその他のデバイスが、コンピュータシステム100内に存在してもよい。
【0014】
システムメモリ116とCPU102とを連結するリンク(すなわち、バス、インターコネクト等)は、データ、アドレス、制御及びクロック情報を転送可能な1以上の光学配線、金属配線及びその他の配線(すなわち、線)を含んでもよい。
【0015】
プラットフォーム制御ハブ118(例えば、I/O制御ハブ)は、CPU102と外部I/Oデバイスとの間の通信を可能にするI/Oインターフェースを含む。ハブは、I/Oアダプタ120のような1以上のI/Oアダプタを含んでもよい。I/Oアダプタは、CPU102内で使用されているホスト通信プロトコルを、I/Oデバイス122のような特定のI/Oデバイスと互換性を有するプロトコルへと変換する。所与のI/Oアダプタが変換するプロトコルとして、例えば、ペリフェラル・コンポーネント・インターコネクト(PCI)、ユニバーサル・シリアル・バス(USB)、IDE、SCSI、及び、1394"ファイヤーワイヤ"が挙げられる。1以上の無線プロトコルI/Oアダプタが存在してもよい。無線プロトコルの例として、Bluetooth(登録商標)、IEEE802.11ベースの無線プロトコル、セルラープロトコルが挙げられる。
【0016】
多くの実施形態において、制御デバイス124は、コンピュータシステム100に存在する。制御デバイス124は、複数の機能を組み込んでもよい。例えば、RAIDストレージ制御デバイスがコンピュータシステム100内に存在してもよい。RAIDコントローラは、ハードディスクドライブ又はソリッドステートディスク(SSD)のアレイを管理してもよい。制御デバイスのその他の例として、ディスクリート帯域外管理可能エンジン(discrete out-of-band manageability engine)、埋め込みマイクロコントローラ、又は、その他の種類のコントローラが挙げられる。
【0017】
CPU間高速インターフェース126は、1以上の更なるCPUに連結されるリンクへのインターフェースを提供して、CPU間通信を可能としてもよい。例えば、CPU間高速インターフェースは、クイックパスインターコネクト(quick path interconnect:QPI)又はその他の同様なインターフェースであってもよい。
【0018】
図示していないが、多くの実施形態において、コンピュータシステム100は、仮想マシン(VM)環境において実行される1以上のゲストオペレーティングシステム(OS)を有する仮想化された環境を提供可能なハードウェア及びソフトウェアロジックを含む。仮想マシンモニタ(VMM)又はハイパーバイザを、システム内のロジックに実装して、VMの動作環境それぞれを分離してもよい(すなわち、VM及びOS及びシステム内で実行されるアプリケーションを、システムに存在するその他のVMから分離する及び互いに認知不可能とする)。
【0019】
多くの実施形態において、システム100には管理可能エンジン128に存在する。管理可能エンジンは、リモート管理、セキュリティ管理及び電力管理に関する管理ロジックを含む複数の機能を有してもよい。多くの実施形態において、管理可能エンジン128は、コンピュータシステム100で動作するオペレーティングシステム(OS)のレベル未満で動作する帯域外(OOB)通信チャネルを利用する。OOBチャネルは、通常、OSの状態に関係なく、リモートシステムとの通信を維持することができる。多くの実施形態において、OOBチャネルは、コンピュータシステム100が低電力状態又は完全にシャットダウンされている場合であっても、通信を継続することができる。ある実施形態では、管理可能エンジン128は、インテル(登録商標)アクティブ・マネージメント・テクノロジー(Active Management Technology)ハードウェアロジックを含む。別の実施形態では、その他の形式のハードウェアロジックを利用する。
【0020】
多くの実施形態において、ファームウェアは、コンピュータシステム100に格納される。コンピュータシステム100内の任意の場所に格納されたファームウェアは、"プラットフォームファームウェア"と称される場合がある。具体的には、数多くの種類のファームウェアが存在する。例えば、システム管理ファームウェア記憶ロケーション130は、システム管理ファームウェア132を格納してもよい。システム管理ファームウェア130は、拡張可能ファームウェア、基本入出力システム(BIOS)、及び/又は、ブート処理の間のように、コンピュータシステム100の鍵となる命令を供給するのに使用されてもよいその他の種類のファームウェアを含んでもよい。
【0021】
コンピュータシステム内の別のファームウェアは、制御デバイス124のプラットフォーム制御ファームウェア134を含んでもよい。このファームウェアは、制御デバイス124に連結されたプラットフォーム制御ファームウェア記憶部136に格納されてもよい。プラットフォーム制御ファームウェア132は、制御デバイス124の機能の管理に関する命令を供給してもよい。
【0022】
多くの異なる実施形態において、システム内のファームウェア記憶ロケーション(例えば、システム管理ファームウェア記憶ロケーション130、プラットフォーム制御ファームウェア記憶ロケーション136等)は、NANDフラッシュ、NORフラッシュ、相変化メモリ、又は、その他の形式の不揮発性メモリを含む。図示を簡略化するために示されていないが、CPUは、グラフィックス及びネットワークトラフィックを取り扱う高速I/Oインターフェースのような更なるインターフェースを有してもよい。多くの実施形態では、このような高速I/Oインターフェースは、1以上のPCIエクスプレスインターフェースを含んでもよい。
【0023】
コンピュータシステム100は、CPU102によって起動され署名されるソフトウェアモジュールである、認証コードモジュール(ACM)138を安全に起動するコードを格納する。ACM138は、CPU102の製造者によって管理されるプライベートキーを使用した非対称暗号を利用して署名されてもよい。CPU102がACM138を呼び出すと、最初に、CPU102、ディスクリートPCHのようなチップセット関連回路又はコンピュータシステム内のその他の回路に格納されている予め提供されたパブリックキーのハッシュを使用して認証が行われる。パブリックキーは、内部のプライベートキーによって暗号化された情報を解読するのに使用される。一般的に、パブリックキーは不変である。このような周知のセキュリティプロセスを使用してACM138を調べることにより、モジュールは、信頼できる実行環境として認証される。ACMは、セキュリティの観点から、認証コード(AC)モードで実行されてもよい。ACモードでは、全てのシステム割り込み及びイベントによってACMが中断されることはなく、その他のシステム及びDMAエージェントから保護される。ACモードで実行する場合、1つのハードウェアスレッドのみがアクティブとなり、その他のハードウェアスレッドは全てランデブー状態となり、休止/スリープ状態になる。
【0024】
コンピュータシステム100の第1ブートの間又は前に、ファームウェア更新パブリックキー140が、システム管理ファームウェア記憶部130に供給及び格納されてもよい。ファームウェア更新パブリックキー140は、ファームウェアイメージ情報を認証するのに利用されてもよい。ある実施形態では、パブリックキー140は、ファームウェアイメージの認証にのみ使用される。"パブリックキー"という言葉が使用されるが、ある実施形態では、実際の英数字の暗号化されていないキーを格納し、別の実施形態では、"パブリックキー"は、パブリックキーのハッシュを意味する場合がある。パブリックキーは、プロセッサ内又はその他の場所のリードオンリメモリ(ROM)に格納されてもよい。記憶領域を節約するために、完全なパブリックキーではなく、ハッシュを格納してもよい。コンピュータシステムに書き込むべきファームウェアイメージは、パブリックキーを含んでもよい。イメージにおけるパブリックキーは、ハッシュされて、システムROMに格納されているパブリックキーのハッシュと比較される。特定の実施形態では、更なるセキュリティ対策のために、ハッシュを暗号化してもよい。
【0025】
多くの実施形態において、コンピュータシステム100は、プラットフォーム・ファームウェア・アーマリング技術(PFAT)モードに入ることができるようになっている。PFATモードでは、プラットフォームファームウェアがロックダウンされる。PFATモードでは、ACモードで動作するACMのみが、コンピュータシステム100内のファームウェア記憶ロケーションに対する更新(すなわち、書き込み)を実行することを許可される。そして、ACMであっても、プラットフォームファームウェア記憶部への書き込みを許可するための特別なプロセスを実行することを要求される。一旦PFATモードに入ると、コンピュータシステムは、このモードから出ることができない。多くの実施形態において、コンピュータシステムのブートの都度、PFATモードに入り、任意のファームウェアが位置するメモリアドレス空間がロックダウンされる。例えば、システム管理ファームウェア記憶部130は、プラットフォーム制御ハブ118を介してCPU102と連結されることから、システム管理ファームウェア記憶部130を対象とした任意の書き込みは、プラットフォーム制御ハブ118を介してルートされる。システムがPFATモードにある場合、(安全なACMベースのロック解除プロセスを先に利用することなく)システム管理ファームウェア記憶部130のために確保されているメモリロケーションへの任意の書き込みの試みは、プラットフォーム制御ハブ118によって拒否される。安全なACMベースのロック解除プロセスについては、以下に説明する。
【0026】
多くの実施形態では、ブートプロセス間のファームウェア内で実行されているコードは、PFATモードをイネーブルするライトワンスレジスタ(write-once register)を設定してもよい。例えば、プラットフォームに位置するPFAT管理レジスタは、PFATモードをイネーブルするPFATイネーブルビットを有してもよい。ある実施形態では、PFAT管理レジスタは、プラットフォーム制御ハブ118(PFATレジスタ142A)に位置する。別の実施形態では、PFAT管理レジスタは、CPUの非コア内の別の場所に位置する(PFATレジスタ142B)。このレジスタは、PFATモードの管理と関連付けられた幾つかのビットを有してもよい。例えば、PFATレジスタは、設定されるとPFATモードをイネーブルするPFATモードイネーブルビットを含んでもよい。また、PFATレジスタは、設定されると、PFATモードイネーブルビットを更に更新することを許さない(少なくとも、プラットフォームが完全にリセットされるまで)PFATモードロックダウンビットを含んでもよい。ロックダウンビットにより、コンピュータシステム100の通常動作の間に、悪意を持った者がPFATモードをディセーブルすることができないようにする。
【0027】
上記のように、一旦PFATモードに入ると、システム管理ファームウェア記憶部130を表すメモリアドレス空間への通常の書き込みが許可されない。多くの実施形態では、コンピュータシステム100がPFATモードに入ると、プラットフォーム制御ハブ118は、システム管理ファームウェア記憶部130への書き込みが許可されないことを示すインターナルPCHロックレジスタ144を設定する。PCHロックレジスタ144が設定されると、ファームウェア記憶部130への書き込みを試みる任意のトランザクションは、プラットフォーム制御ハブ118によって破棄される。
【0028】
多くの実施形態において、OSに加えて実行されるファームウェア更新ロジック146がシステムメモリ116に存在する。ファームウェア更新ロジック146は、コンピュータシステム100に存在する特定のファームウェアを更新するリクエストを受信してもよい。この更新リクエストは、ネットワークを介してシステムアドミニストレータから送信されてもよいし、システム内(例えば、レメディエーションOSからの修正)又は他の場所から送信されてもよい。多くの実施形態において、ファームウェア更新のリクエストは、実際の更新のイメージを伴う。ファームウェアイメージは、リクエストと共に直接送られる、又は、リクエストを受信して受け付けた後に送られる。ファームウェアイメージは、ファームウェアの完全な書き換え(例えば、新しいバージョン)であってもよいし、小さな更新(例えば、ファームウェア全体のうちの小さな部分の書き換え)であってもよい。ある時点で、ファームウェア更新ロジック146は、更新の実際のイメージを受信する。ファームウェア更新イメージは、システムメモリ116内のファームウェアイメージテスト記憶部148に格納される。ファームウェア更新ロジック146がイメージ全体をテスト記憶部に格納すると、ACM138が起動されて、システムがACモードに入る。ファームウェア更新ロジック146を実行する標準モードから、ACモードで動作するACM138実行への遷移の間に、ファームウェア更新ロジック146は、ACM138に、システムメモリ116内のファームウェアイメージテスト記憶部148に対するポインタを受け渡す。この受け渡しには、ポインタを格納するべくCPU102内のレジスタが利用されてもよいし、システムメモリ116内の周知のハンドオフロケーションにポインタが格納されてもよい。
【0029】
ACモードに入り、ファームウェアイメージが格納されたロケーションが受け渡されると、ACM138は、パブリックキー140を使用してファームウェアイメージの認証プロセスを開始する。認証プロセスは、受信したファームウェアイメージの暗号を解読して調べるのに、非対称暗号化を利用してもよい。多くの実施形態において、コンピュータシステム内に格納された不変パブリックキーを使用して、ベンダから受け取ったファームウェアイメージが真正のものであるかを検証してもよい。多くの実施形態では、パブリックキーは、任意のエンティティがアクセス可能なものであり、別の実施形態では、パブリックキーを格納するストレージロケーションを読み出すことが可能なアクセス権を限定されたエンティティが有してもよい。例えば、ある実施形態では、ACモードのACM138は、CPU102に格納されたパブリックキー140にアクセスできる唯一のエンティティである。
【0030】
ACM138は、ファームウェアイメージテスト記憶部148に格納されたファームウェアイメージの認証のためのパブリックキーの検証を行う。ファームウェアイメージの認証が成功した場合(すなわち、イメージのセキュリティーが侵害されなかった場合)、ACM138は、CPU102内のロックレジスタ150に対して、特別な書き込みサイクルを実行する。多くの実施形態において、CPU102のロックレジスタ150は、ACモードのACMによって書き込みが可能な唯一の特別なMSR(モデル固有レジスタ)である。したがって、通常モードのOS又は別の同様なエンティティは、このレジスタにアクセスできない。ロックレジスタ150への特別な書き込みサイクルにより、CPU102は、プラットフォーム制御ハブ118へ送信される安全なACMベースのロック解除コマンドを生成する。この安全なロック解除コマンドが到達すると、プラットフォーム制御ハブ118内のロジックは、PCHロックレジスタ144をクリアする。PCHロックレジスタ144がクリアされると、プラットフォーム制御ハブ118は、システム管理ファームウェア記憶部130のアドレス空間への書き込みを許可する。
【0031】
ファームウェア記憶部への書き込みが許可されると、ACM138は、ファームウェアイメージテスト記憶部148のロケーションからの認証されたファームウェアイメージを、システム管理ファームウェア記憶部130へとコピーする。コピーが完了すると、ACM138は、CPUロックレジスタ150への別の特別な書き込みサイクルを発行することによって、次のロックコマンドを発行してもよく、それにより、プラットフォーム制御ハブ118に送信される安全なACMベースのロックコマンドが生成される。プラットフォーム制御ハブ118がロックコマンドを受信すると、ハブ内のロジックが、PCHロックレジスタ144を設定して、システム管理ファームウェア記憶部130が再び、書き込みをブロックする状態となる。図1の例では、システム管理ファームウェア132の更新について記載した。別の例では、更新は、プラットフォーム制御ファームウェア134に関するものであってもよい。
【0032】
コンピュータシステム100のブート毎に、一過的な(すなわち、一時的な)パスワードが生成されてもよい。一時的なパスワードを生成するロジックは、CPU102内、システム管理ファームウェア132内、又は、コンピュータシステム100の別の場所に存在してもよい。一時的なパスワードは、通常、オペレーティングシステムによって、コンピュータシステムの通常動作の前のブートシーケンスの初期段階で生成される。生成された一時的なパスワードは、CPU102内の一時的なパスワードレジスタ152にインターナルに格納される。同じパスワードが、通常動作の間にCPUとの安全なハンドシェイクを必要とするコンピュータシステム内の任意のコントローラ又はその他のデバイスに配布される。制御デバイス124のようなコントローラは、ブート時のパスワード分配の間に受信されたパスワードを格納する、内部一時的パスワード記憶ロケーション154を有してもよい。この一時的なパスワードは、安全なブートプロセスの間に、生成、分配及び格納されるため、高いセキュリティを可能にする。通常動作時と比較して、安全なブートプロセス間に不正にアクセスされる可能性は低く、このブートプロセス間に一時的なパスワードを分配することにより、パスワードが盗難される可能性が低くなる。
【0033】
コンピュータシステム100が完全に動作可能状態となる(例えば、OSが動作する)と、ファームウェア更新ロジック146が、プラットフォーム制御ファームウェア134を更新するリクエストを受信してもよい。リクエストを受信すると、上記で説明した、更新イメージをファームウェアイメージテスト記憶ロケーション148にコピーするのと同じプロセスが実行される。ファームウェア更新ロジック146は、ACM138を起動して、システムの制御をACM138に渡す。ACM138は、イメージの認証を行い、イメージの認証が成功すると、ファームウェア更新の実行を行う。システム管理ファームウェア132の場合とは異なり、ACM138は、プラットフォーム制御ファームウェア134について完全な制御を有さない。
【0034】
制御デバイス124は、自身のセキュリティプロセスを有して、CPU102とは異なる別個の動作条件を有してもよい。基本的には、制御デバイス124は、制御ファームウェア記憶部136空間への書き込みリクエストが、実際にACM138からのものであることを確かめることを望む。より安全な認証プロセスを生成するべく、ACM138は、制御デバイス124に、制御ファームウェア記憶部136内のアドレス空間に対するファームウェア更新を実行するようリクエストを送信してもよい。このACMベースのリクエストは、一時的なパスワードと共に送信される。
【0035】
受信したACM138リクエストの信頼性を検証するべく、制御デバイス124は、リクエストと共に受信した一時的なパスワードと、コンピュータシステム100の現在のブートの間に受信した既に格納されている一時的なパスワードとを比較してもよい。多くの実施形態において、制御デバイス124内の更新ロジック156が、この比較を実行する。2つのパスワードが等しい場合には、制御デバイス124は、制御ファームウェア記憶部136のアドレス空間を開放して、ACM138からの書き込みが行われる。2つのパスワードが等しくない場合には、制御ファームウェア記憶部136はロックされたままとなり、制御デバイス124は、セキュリティの問題を示すある種のエラーメッセージを生成してもよい。多くの実施形態において、CPU102内の一時的パスワードレジスタ152に一時的なパスワードを安全に保持するべく、レジスタは、ACモードのACM138のみがアクセス可能であってもよい。多くの実施形態において、ACM138が認証されたファームウェアイメージの制御ファームウェア記憶部136への書き込みを完了すると、ACM138は、更新が完了したことを示す次の通信を制御デバイス124に送信してもよい。これにより、制御デバイス124は、制御ファームウェア記憶空間136への更なる書き込みを許可しないようにすることを知ることができる。
【0036】
多くの実施形態において、ACMは、ファームウェア更新に対するロールバック保護を実装してもよい。ロールバック保護は、プラットフォームファームウェアの更新を、ファームウェアアップデートイメージの新規のバージョンのみに限定する。ある実施形態では、ファームウェアイメージは、ファームウェアバージョンを含むヘッダを有してもよく、現在存在するファームウェアが同様なヘッダを有する。ACMは、両方のヘッダを読み、新しいファームウェアイメージが、プラットフォームに現在存在するファームウェアよりも新規のバージョンのファームウェアである場合には、新規のファームウェアイメージのみ、ファームウェア記憶ロケーションへの書き込みを許可してもよい。
【0037】
図2は、プラットフォームコンポーネントハブをロックダウンして、システム管理ファームウェア記憶空間への書きこみを許可するプロセスの一実施形態を示したフローチャートである。プロセスは、ハードウェア回路、ソフトウェアコード、ファームウェアコード、又は、処理ロジックのこれら3種類の任意の組み合わせを含む処理ロジックによって実行されてもよい。本明細書において使用されている"処理ロジック"という言葉が使用されているものは、上記したようなロジックの任意の組み合わせ、及び、その他の形式のロジックに実装されてもよい。
【0038】
プロセッサのブートの間に、処理ロジックが、コンピュータシステムにおけるファームウェア更新保護メカニズムをアクティブにするPFATモードイネーブルビットを設定すること(処理ブロック200)から、プロセスが開始する。PFATモードイネーブルビットは、コンピュータシステムのPCHデバイス内のファームウェア管理レジスタに位置してもよい。PFATをイネーブルするべくPFATモードイネーブルビットが設定されると、処理ロジックは、PFATモードイネーブルロックダウンビットを設定する(処理ブロック202)。PFATモードイネーブルロックダウンビットは、PFATモードイネーブルビットの更なる変更をさせない。多くの実施形態において、PFATモードイネーブルロックダウンビットは、コンピュータシステムのブート毎ライトワンスビットである。このような実施形態では、コンピュータシステムの完全なリセットの間に、PFATモードロックダウンビットを変更可能である。各ブートにおいて、PFATモードをイネーブルするプロセス、そして、PFATモードをロックダウンするプロセスが発生する。
【0039】
図2に図示しない別の実施形態では、PFATモードイネーブルビットは、コンピュータシステムの残りの使用期間の間、書き込みを行った後は変更することができないライトワンスレジスタである。このような実施形態では、PFATモードイネーブルビットは、コンピュータシステムのブート毎に1回書き込まれて、その後は、(コンピュータシステムがリブートされるまで)、コンピュータシステムがPFATモードをイネーブルしたか否かを示す。この処理ブロックは、ブロック200として示されている。このような実施形態では、ブートプロセスの間に一度書き込みがあった後は再書き込み可能とならないため、PFATモードイネーブルロックダウンビットは必要ない。このような別の実施形態では、処理ブロック202は必要ない。
【0040】
このプロセスが終了すると、コンピュータプラットフォームは、ブート処理に戻って続きを実行する。図3Aは、安全なプラットフォームファームウェア更新プロセスを開始するプロセスの一実施形態を示したフローチャートである。
【0041】
処理ロジックは、プラットフォームファームウェアを更新するリクエストを受信すること(処理ブロック300)から開始する。このリクエストは、コンピュータシステム全体における任意の種類のファームウェアの更新と関連付けられていてもよい。ある実施形態では、これは、システム管理ファームウェアに関しての更新でもよいし、別の実施形態では、プラットフォーム制御ファームウェアに関しての更新でもよいし、更に別の実施形態では、コンピュータシステム/プラットフォームに格納されるその他の種類及びロケーションのファームウェアに関する更新であってもよい。
【0042】
次の処理ロジックでは、システムメモリ内のロケーションに、リクエストと関連付けられたファームウェアイメージをコピーする(処理ブロック302)。イメージは、更新の種類に応じて、ファームウェア全部であってもよいし、ファームウェアの一部分であってもよい。多くの実施形態では、イメージは暗号化されている。暗号化されたイメージは、パブリックキーを有効に利用する非対称アルゴリズムを使用して暗号化されていてもよい。パブリックキーは、システムが構築された時又はその後で、コンピュータシステムに備えられてもよい。パブリックキーは、システム管理ファームウェア記憶部の安全な部分のような、再書き込みができないメモリロケーションにセキュアに格納されてもよい。図3Aに戻り、ファームウェアイメージがシステムメモリにコピーされると、処理ロジックは、コンピュータシステムの安全なロケーションに格納された利用可能なパブリックキーを使用して、イメージの認証を行う(処理ブロック304)。
【0043】
図3Aのブロック304は、システム内で起動されたACM内のACモードで動作するロジックによって処理が行われてもよい。ACMの呼び出しについては、図1を参照して上記で説明した。多くの実施形態では、認証プロセスには、システムに格納された不変パブリックキーが、イメージに含まれるパブリックキーと一致するかの検証が含まれる。コンピュータシステムのセキュリティプロセスを利用して、イメージの検証を行ってもよい。イメージの真正を決定するプロセスには幾つかの形態があるが、望ましいのは、イメージが改ざんされたものでないことが確かめられることである。処理ロジックは、イメージが真正のものであると認証されたか否かを確認する(処理ブロック306)。図示されていないが、ファームウェアイメージは、暗号化された形式で送信され、認証の前にイメージの暗号解読を可能とするべくACMがアクセス可能な更なる暗号解読キーが必要となる。
【0044】
イメージの認証が不成功であった場合は、処理ロジックは、エラーメッセージをCPUに送信する(処理ブロック308)。例えば、処理ロジックは、イメージの認証に失敗/問題があったことを伝達する割り込みを発行してもよい。イメージの認証が成功した場合には(すなわち、イメージが真正であると認証された場合)、処理ロジックは、図3Bに示されるプロセスへと進む。
【0045】
図3Bは、安全なプラットフォームファームウェア更新プロセスの続きの一実施形態を示すフローチャートである。
【0046】
プロセスフローのこの時点で、処理ロジック(例えば、ACM内のロジック)は、プラットフォームファームウェア記憶ロケーションのロックを解除して、書き込みを可能にする(処理ブロック310)。プラットフォームファームウェア記憶ロケーションが、(図1を参照して上記で説明したような)システム管理ファームウェア記憶ロケーションである実施形態では、ACM内のロジックは、イメージの真正を検証する時に(図3Aのブロック306)、PCHのロックを解除して、システム管理ファームウェア記憶ロケーションへの書き込みを可能にする。プラットフォームファームウェアが制御記憶部に存在するような別の実施形態では、ファームウェア記憶部への書き込みを行うには別のプロセス(図4で説明する制御ファームウェアベースのプロセス)が必要となる。
【0047】
図3Bに戻り、プラットフォームファームウェア記憶ロケーションのロックが解除されると、処理ロジックは、ファームウェアイメージを、プラットフォームファームウェア記憶ロケーションにコピーする(処理ブロック312)。そして、認証されたイメージがプラットフォームファームウェア記憶ロケーションにコピーされた後、処理ロジックは、ファームウェア記憶ロケーションをロックして、これ以上書き込みが許可されないようにし(処理ブロック314)、プロセスが終了する。
【0048】
上記で説明したように、プラットフォームファームウェア記憶部のロックを解除するプロセスは、ファームウェア記憶部が位置する場所に依存する。プラットフォームファームウェア記憶部がシステム管理ファームウェア記憶ロケーションである場合、ロック解除プロセスは、CPUロックレジスタ(図1の150)に書き込みを行うべく、ACモードで実行されるACM(図1の138)を必要としてもよい。多くの実施形態では、CPUロックレジスタは、CPU(図1の102)アンコア内のMSRである。ACモードで動作するACMによってのみ発行される特別な書き込みMSR(WRMSR)コマンドは、CPUロックレジスタへの書き込みを行う。そしてプロセスは、PCH(図1の118)に存在するPCHロックレジスタ(図1の144)を対象とする特別な書き込みを生成する。PCHロックレジスタを対象とする書き込みコマンドは、PCHに、システム管理ファームウェア記憶部(図1の130)への書き込み能力を開放させてもよく、それにより、ACMが、新たなシステム管理ファームウェアイメージを、正しい記憶ロケーションに書き込みを行うことができる。イメージの書き込みが完了した時点で、同様なWRMSRコマンドを同じCPUロックレジスタに発行して、システム管理ファームウェア記憶部をロックすることができる。
【0049】
図4は、コンピュータシステムの制御ファームウェを安全に更新するプロセスの一実施形態を示したフローチャートである。多くの実施形態において、図4に示すプロセスフローは、対象のコントローラの処理ロジックに加えて、ACM/CPUに対する処理ロジックも含む。ロジックが処理する各ブロックを明確に示すために、図4の左側(点線の左側)は、CPU/ACMに関するロジックを表し、図4の右側(点線の左側)は、コントローラに関するロジックを表す。
【0050】
CPUベースの処理ロジックは、コンピュープラットフォームのブートシーケンスの間に、一時的パスワードを生成する段階から開始する(処理ブロック400)。一時的パスワードは、現在のシステム管理ファームウェアにより、又は、コンピュータシステム内のその他のロジックにより、ランダムに生成されてもよい。ランダムなパスワードは、CPU内のACMのみがアクセス可能な記憶ロケーションに又はCPUがアクセス可能な別の安全な記憶ロケーションに、処理ロジックによってローカルに格納される(処理ブロック402)。例えば、CPU内の一時的なパスワードレジスタ(図1の152)は、生成された一時的なパスワードを格納してもよく、このレジスタは、ACモードで動作するACMのみがアクセス可能であってもよい。
【0051】
CPUベースの処理ロジックは、この一時的なパスワードを、コントローラに送信する(処理ブロック404)。制御処理ロジックは、システムブートシーケンスの間に、一時的なパスワードを受信する(処理ブロック406)。この時点で、制御処理ロジックは、システムがまだ通常オペレーションモードに入っておらず、パスワードが改ざんされる機会がないことから、一時的なパスワードが有効であると仮定する。そして、処理ロジックは、受信した一時的なパスワードをローカルに格納する(処理ブロック408)(例えば、図1の一時的なパスワード記憶部154に格納されてもよい)。この時点で、コントローラ内の処理ロジックは、ファームウェア更新リクエストが受信されるまで待機する。
【0052】
図3Aに戻り、エンティティは、プラットフォームファームウェアの更新をリクエストしてもよく(図3Aの300)、CPU/ACMベースの処理ロジックは、図3Aに関するブロックの処理を行い、新しいコントローラ固有のプラットフォームファームウェアイメージの認証を行う。イメージが認証されると、ACM処理ロジックは、図4の次のブロックの処理を行い、リクエストに一時的なパスワードを含む制御ファームウェアの更新リクエストをコントローラに送信する(処理ブロック410)。制御ロジックは、CPUによって格納された現在の一時的パスワードと共にファームウェア更新リクエストを受信する(処理ブロック412)。次に、制御処理ロジックは、リクエストと共に受信した現在の一時的パスワードと、ブートプロセスの間に受信した信頼性の高い一時的パスワードとを比較する(処理ブロック414)。
【0053】
比較の結果パスワードが一致する場合には(処理ブロック416)、制御処理ロジックは、ACMによる制御ファームウェア記憶部への書き込みを許可して、更新応答の承諾をACMに送信する(処理ブロック418)。ACMベースの処理ロジックは、図3Bの処理ブロックにおけるコントローラ更新を続けることにより、更新処理を続けることができる。パスワードが一致しなかった場合には、制御処理ロジックは、ACMに拒否応答を送信する(同時に、制御ファームウェア記憶部への書き込みの禁止を継続する)。ACMベースのロジックは、拒否応答を受信し、エラーシーケンスを開始する(処理ブロック422)。エラーシーケンスは、割り込みの生成、エラーフラグの設定、システムのシャットダウン、又は、管理エンジン(図1の128)を介してエラーに関する帯域外情報をITアドミニストレータに送信する等、様々な形態であってもよい。
【0054】
本発明の実施形態の要素は、機械実行可能命令を格納する機械可読媒体として提供されてもよい。機械可読媒体としては、これに限定されないが、例えば、フラッシュメモリ、光学ディスク、コンパクトディスク・リードオンリーメモリ(CD−ROM)、デジタル多用途ビデオディスク(DVD)ROM、ランダムアクセスメモリ(RAM)、消去可能−プログラム可能リードオンリーメモリ(EPROM)、電気的消去可能−プログラム可能リードオンリーメモリ(EEPROM)、磁気又は光学カード、伝播媒体、又は、電子命令を格納するのに好適なその他の種類の機械可読媒体が含まれる。
【0055】
上記の記載及び/又は特許請求の範囲では、"備える(comprise)"、"含む(include)"及びこれらの派生語は、互いに同義語として使用されている場合がある。また、本明細書及び特許請求の範囲では、"結合された(coupled)"及び"接続された(connected)"並びにこれらの派生語が使用されることがある。この2つの言葉は、同義語として使用されているのではない。特定の実施例において、"接続された(connected)"は、2つ又は2つ以上の要素が物理的に又は電気的に直接互いに接触していることを示すのに使用され、"連結された(coupled)"も、2つ又は2つ以上の要素が、物理的に又は電気的に直接互いに接触していることを示すが、"連結された(coupled)"は、2つ又は2つ以上の要素が、協動又は相互作用しているが、直接接していない場合も示す。
【0056】
上記の記載において、本発明の実施形態を説明するのに特定の用語が使用されている。例えば、"ロジック"という言葉は、1以上の機能を実行するハードウェア、ファームウェア、ソフトウェア(又はこれらの任意の組み合わせ)を表している。例えば、"ハードウェア"の例としては、これに限定されないが、集積回路、有限ステートマシーン又は組み合わせロジックが含まれる。集積回路は、マイクロプロセッサのようなプロセッサ、用途特定IC、デジタル信号プロセッサ、マイクロコントローラ等の形態であってもよい。
【0057】
本明細書において、本発明の"一実施形態"又は"ある実施形態"との表現は、その実施形態に関連する特定の特徴、構造及び特性が、少なくとも本発明の実施形態の一つに含まれていることを意味する。したがって、本明細書中の様々な箇所で使用されている"一実施形態"又は"ある実施形態"という表現は、必ずしも同一の実施形態を示していない。また、本発明の1以上の実施形態において、特定の特徴、構造又は特性を好適に組み合わせてもよい。
【0058】
同様に、上記の本発明の実施形態の記載では、様々な発明の側面の1以上の理解を助ける開示を短くする目的から、様々な特徴が、1つの実施形態、その図面及び説明に組み込まれている。このような開示の方法は、特許請求される特徴が特許請求の範囲に明確に記載される以上の特徴を必要とするとの意図を反映したものではない。添付の特許請求の範囲に反映されるように、本発明の側面は、上記で開示した1つの実施形態の全ての特徴よりも少ない。したがって、添付の特許請求の範囲は、明確に詳細な説明に組み込まれる。
本発明の例を下記の各項目として示す。
[項目1]
コンピュータプラットフォームによって実行される方法であって、前記方法は、
第1プラットフォームファームウェアを格納するプラットフォームファームウェア記憶ロケーションを有する前記コンピュータプラットフォームのブート時に、前記コンピュータプラットフォームに位置するプラットフォームファームウェア更新メカニズムを、プラットフォーム・ファームウェア・アーマリング技術(PFAT)モードに切り替える段階と、
前記プラットフォームファームウェア更新メカニズムが前記PFATモードに切り替わったことに応答して、プラットフォームコンポーネントハブによって前記プラットフォームファームウェア記憶ロケーションを持続的にロックする段階とを備え、
前記プラットフォームファームウェア記憶ロケーションが持続的にロックされると、認証コードモジュール(Authenticated Code Module:ACM)が前記プラットフォームファームウェア更新メカニズムのロック解除プロセスを実行した後にのみ、前記ACMによる前記プラットフォームファームウェア記憶ロケーションへの書き込みのみが許可される方法。
[項目2]
前記ロック解除のプロセスは、
前記プラットフォームファームウェア更新メカニズムが、PFAT保護制御レジスタに対する特別なメモリ書き込みサイクルを開始する段階を有し、
前記PFAT保護制御レジスタに対する特別なメモリ書き込みサイクルでは、前記プラットフォームファームウェア記憶ロケーションに連結されたコントローラは、前記プラットフォームファームウェア更新メカニズムから、前記プラットフォームファームウェア記憶ロケーションのアドレス空間への書き込みコマンドを受け取る項目1に記載の方法。
[項目3]
前記プラットフォームファームウェア記憶ロケーションにパブリック暗号化キーを供給する段階と、
前記第1プラットフォームファームウェアを更新されたファームウェアイメージで更新するリクエストを受信する段階と、
前記リクエストに応答して、前記コンピュータプラットフォーム内のシステムメモリに前記更新されたファームウェアイメージをロードする段階と、
前記更新されたファームウェアイメージが前記システムメモリに完全にロードされた後に、前記コンピュータプラットフォームのプロセッサによって前記ACMを起動する段階と、
前記ACMによって、前記パブリック暗号化キーを使用して、前記更新されたファームウェアイメージの認証を行う段階と、
前記ACMによって、前記更新されたファームウェアイメージの認証が成功したことに応答して、前記プラットフォームファームウェア記憶ロケーションに対して前記ロック解除プロセスを実行する段階と、
前記ACMによって、前記システムメモリから、認証された前記ファームウェアイメージを前記プラットフォームファームウェア記憶ロケーションにコピーする段階とを更に備える項目2に記載の方法。
[項目4]
前記更新されたファームウェアイメージの前記認証が失敗した場合には、エラーを発行する段階を更に備える項目3に記載の方法。
[項目5]
前記第1プラットフォームファームウェアは、システム管理ファームウェアを含み、
前記コントローラは、前記プラットフォームコンポーネントハブを含む項目2から4の何れか一項に記載の方法。
[項目6]
前記第1プラットフォームファームウェアは、制御管理ファームウェアを含み、
前記コントローラは、前記コンピュータプラットフォームに位置するコントローラを含む項目3又は4に記載の方法。
[項目7]
前記コンピュータプラットフォームのブートの都度、
プロセッサ又はシステム管理ファームウェアの一方によって、一時的パスワードを生成する段階と、
前記ACMのみアクセス可能な安全なロケーションに前記一時的パスワードを格納する段階と、
前記一時的パスワードを、少なくとも、前記プラットフォームファームウェア記憶ロケーションに連結された前記コントローラに配信する段階とを更に備える項目6に記載の方法。
[項目8]
前記パブリック暗号化キーを使用した、前記更新されたファームウェアイメージの前記認証が成功したことに応答して、
前記ACMが、前記制御管理ファームウェアを更新する許可を得るべく、前記一時的パスワードを含むリクエストを前記コントローラに送信する段階と、
前記コントローラが、前記リクエストから受信した前記一時的パスワードと、前記コンピュータプラットフォームの最新のブートの間に受信した一時的パスワードとを比較する段階と、
前記2つの一時的パスワードが等しいことに応答して、前記コントローラが、前記ACMが前記制御管理ファームウェアに対する前記更新を実行することを許可する段階とを更に備える項目7に記載の方法。
[項目9]
第1プラットフォームファームウェアを格納するプラットフォームファームウェア記憶ロケーションを有するコンピュータプラットフォームのブート時に、前記コンピュータプラットフォームに位置するプラットフォームファームウェア更新メカニズムを、プラットフォーム・ファームウェア・アーマリング技術(PFAT)モードに切り替えるロジックと、
前記プラットフォームファームウェア更新メカニズムが前記PFATモードに切り替わったことに応答して、前記プラットフォームファームウェア記憶ロケーションを持続的にロックするロジックとを備え、
前記プラットフォームファームウェア記憶ロケーションが持続的にロックされると、認証コードモジュール(Authenticated Code Module:ACM)が前記プラットフォームファームウェア更新メカニズムのロック解除プロセスを実行した後にのみ、前記ACMによる前記プラットフォームファームウェア記憶ロケーションへの書き込みのみが許可される装置。
[項目10]
PFAT保護制御レジスタに対する特別なメモリ書き込みサイクルを開始するロジックを更に備え、
前記PFAT保護制御レジスタに対する特別なメモリ書き込みサイクルでは、前記プラットフォームファームウェア記憶ロケーションに連結されたコントローラは、前記プラットフォームファームウェア更新メカニズムから、前記プラットフォームファームウェア記憶ロケーションのアドレス空間への書き込みコマンドを受け取る項目9に記載の装置。
[項目11]
前記プラットフォームファームウェア記憶ロケーションにパブリック暗号化キーを供給し、
前記第1プラットフォームファームウェアを更新されたファームウェアイメージで更新するリクエストを受信し、
前記リクエストに応答して、前記コンピュータプラットフォーム内のシステムメモリに前記更新されたファームウェアイメージをロードし、
前記更新されたファームウェアイメージが前記システムメモリに完全にロードされた後に前記ACMを起動し、
前記パブリック暗号化キーを使用して、前記更新されたファームウェアイメージの認証を行い、
前記更新されたファームウェアイメージの認証が成功したことに応答して、前記プラットフォームファームウェア記憶ロケーションに対して前記ロック解除プロセスを実行し、
前記システムメモリから、認証された前記更新されたファームウェアイメージを前記プラットフォームファームウェア記憶ロケーションにコピーするロジックを更に備える項目10に記載の装置。
[項目12]
前記更新されたファームウェアイメージの前記認証が失敗した場合には、エラーを発行するロジックを更に備える項目11に記載の装置。
[項目13]
前記第1プラットフォームファームウェアは、システム管理ファームウェアを含み、
前記コントローラは、プラットフォームコンポーネントハブを含む項目10から12の何れか一項に記載の装置。
[項目14]
前記第1プラットフォームファームウェアは、制御管理ファームウェアを含み、
前記コントローラは、前記コンピュータプラットフォームに位置するコントローラを含む項目11又は12に記載の装置。
[項目15]
前記コンピュータプラットフォームのブートの都度、
一時的パスワードを生成し、
前記ACMのみアクセス可能な安全なロケーションに前記一時的パスワードを格納し、
前記一時的パスワードを、少なくとも、前記プラットフォームファームウェア記憶ロケーションに連結された前記コントローラに配信するロジックを更に備える項目14に記載の装置。
[項目16]
前記パブリック暗号化キーを使用した、前記更新されたファームウェアイメージの前記認証が成功したことに応答して、
前記制御管理ファームウェアを更新する許可を得るべく、前記一時的パスワードを含むリクエストを前記コントローラに送信するロジックと、
前記リクエストから受信した前記一時的パスワードと、前記コンピュータプラットフォームの最新のブートの間に受信した一時的パスワードとを比較する前記コントローラ内のロジックと、
前記2つの一時的パスワードが等しいことに応答して、前記ACMが前記制御管理ファームウェアに対する前記更新を実行することを許可する前記コントローラ内のロジックとを更に備える項目15に記載の装置。
[項目17]
実行されたときにコンピュータプラットフォームに、
第1プラットフォームファームウェアを格納するプラットフォームファームウェア記憶ロケーションを有する前記コンピュータプラットフォームのブート時に、前記コンピュータプラットフォームに位置するプラットフォームファームウェア更新メカニズムを、プラットフォーム・ファームウェア・アーマリング技術(PFAT)モードに切り替える段階と、
前記プラットフォームファームウェア更新メカニズムが前記PFATモードに切り替わったことに応答して、前記プラットフォームファームウェア記憶ロケーションを持続的にロックする段階とを実行させるためのプログラムであって、
前記プラットフォームファームウェア記憶ロケーションが持続的にロックされると、認証コードモジュール(Authenticated Code Module:ACM)が前記プラットフォームファームウェア更新メカニズムのロック解除プロセスを実行した後にのみ、前記ACMによる前記プラットフォームファームウェア記憶ロケーションへの書き込みのみが許可されるプログラム。
[項目18]
前記ロック解除のプロセスは、
前記プラットフォームファームウェア更新メカニズムが、PFAT保護制御レジスタに対する特別なメモリ書き込みサイクルを開始する段階を有し、
前記PFAT保護制御レジスタに対する特別なメモリ書き込みサイクルでは、前記プラットフォームファームウェア記憶ロケーションに連結されたコントローラは、前記プラットフォームファームウェア更新メカニズムから、前記プラットフォームファームウェア記憶ロケーションのアドレス空間への書き込みコマンドを受け取る項目17に記載のプログラム。
[項目19]
前記プラットフォームファームウェア記憶ロケーションにパブリック暗号化キーを供給する段階と、
前記第1プラットフォームファームウェアを更新されたファームウェアイメージで更新するリクエストを受信する段階と、
前記リクエストに応答して、前記コンピュータプラットフォーム内のシステムメモリに前記更新されたファームウェアイメージをロードする段階と、
前記更新されたファームウェアイメージが前記システムメモリに完全にロードされた後に前記ACMを呼び出す段階と、
前記パブリック暗号化キーを使用して、前記更新されたファームウェアイメージの認証を行う段階と、
前記更新されたファームウェアイメージの認証が成功したことに応答して、前記プラットフォームファームウェア記憶ロケーションに対して前記ロック解除プロセスを実行する段階と、
前記システムメモリから、認証された前記更新されたファームウェアイメージを前記プラットフォームファームウェア記憶ロケーションにコピーする段階とを更に前記コンピュータに実行させる項目18に記載のプログラム。
[項目20]
前記更新されたファームウェアイメージの前記認証が失敗した場合には、エラーを発行する段階を更に前記コンピュータに実行させる項目19に記載のプログラム。
[項目21]
前記第1プラットフォームファームウェアは、システム管理ファームウェアを含み、
前記コントローラは、プラットフォームコンポーネントハブを含む項目18から20の何れか一項に記載のプログラム。
[項目22]
前記第1プラットフォームファームウェアは、制御管理ファームウェアを含み、
前記コントローラは、前記コンピュータプラットフォームに位置するコントローラを含む項目19又は20に記載のプログラム。
[項目23]
前記コンピュータプラットフォームのブートの都度、
一時的パスワードを生成する段階と、
前記ACMのみアクセス可能な安全なロケーションに前記一時的パスワードを格納する段階と、
前記一時的パスワードを、少なくとも、前記プラットフォームファームウェア記憶ロケーションに連結された前記コントローラに配信する段階とを更に前記コンピュータに実行させる項目22に記載のプログラム。
[項目24]
前記パブリック暗号化キーを使用した、前記更新されたファームウェアイメージの前記認証が成功したことに応答して、
前記ACMが、前記制御管理ファームウェアを更新する許可を得るべく、前記一時的パスワードを含むリクエストを前記コントローラに送信する段階と、
前記コントローラが、前記リクエストから受信した前記一時的パスワードと、前記コンピュータプラットフォームの最新のブートの間に受信した一時的パスワードとを比較する段階と、
前記2つの一時的パスワードが等しいことに応答して、前記コントローラが、前記ACMが前記制御管理ファームウェアに対する前記更新を実行することを許可する段階とを更に前記コンピュータに実行させる項目23に記載のプログラム。
[項目25]
プラットフォームコンポーネントハブと、
プラットフォームファームウェアを格納するプラットフォームファームウェア記憶部と、
認証コードモジュール(authenticated code module:ACM)を格納するシステムメモリと、
コンピュータプラットフォームのブート時に、前記コンピュータプラットフォームに位置するプラットフォームファームウェア更新メカニズムを、プラットフォーム・ファームウェア・アーマリング技術(PFAT)モードに切り替えるロジックとを備え、
前記プラットフォームファームウェア更新メカニズムが前記PFATモードに切り替わったことに応答して、前記プラットフォームコンポーネントハブは、プラットフォームファームウェア記憶ロケーションを持続的にロックし、
前記プラットフォームファームウェア記憶ロケーションが持続的にロックされると、前記ACMが前記プラットフォームファームウェア更新メカニズムのロック解除プロセスを実行した後にのみ、前記ACMによる前記プラットフォームファームウェア記憶ロケーションへの書き込みのみが許可されるシステム。
図1
図2
図3A
図3B
図4