JP5301609B2 - ファームウェア・イメージのマルチオーナによる配布 - Google Patents

ファームウェア・イメージのマルチオーナによる配布 Download PDF

Info

Publication number
JP5301609B2
JP5301609B2 JP2011130480A JP2011130480A JP5301609B2 JP 5301609 B2 JP5301609 B2 JP 5301609B2 JP 2011130480 A JP2011130480 A JP 2011130480A JP 2011130480 A JP2011130480 A JP 2011130480A JP 5301609 B2 JP5301609 B2 JP 5301609B2
Authority
JP
Japan
Prior art keywords
code module
owner
code
signed
updated
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2011130480A
Other languages
English (en)
Other versions
JP2012003758A (ja
Inventor
サクティクマール パルサミー
シー. スワンソン ロバート
ジェイ. ジンマー ヴィンセント
エー. ロスマン マイケル
ブルス マリック
Original Assignee
インテル コーポレイション
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by インテル コーポレイション filed Critical インテル コーポレイション
Publication of JP2012003758A publication Critical patent/JP2012003758A/ja
Application granted granted Critical
Publication of JP5301609B2 publication Critical patent/JP5301609B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/572Secure firmware programming, e.g. of basic input output system [BIOS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/22Microcontrol or microprogram arrangements
    • G06F9/223Execution means for microinstructions irrespective of the microinstruction function, e.g. decoding of microinstructions and nanoinstructions; timing of microinstructions; programmable logic arrays; delays and fan-out problems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Description

本開示は、コンピュータシステムのBIOS及びその他のファームウエアコードの配布(デプロイメント:deployment)に関する。
[著作権表示]
本明細書に含まれる資料は、著作権により保護される。本著作権の権利者は、何人に対しても特許商標庁の特許出願又は保存資料としての本開示のファクシミリイメージによる複製については許諾する。しかしながら、それ以外については、著作権を留保する。
当初、IBM PCコンパチブルのコンピュータに対して開発されたBIOS(Basic Input/Output System)は、システムBIOSとしても知られている。そして、ファームウエアインターフェースを定義するデファクトスタンダードとなっている。このBIOSは、ブート・ファームウェアであり、電源オン時において、PCが実行する最初のコードとして設計されている。BIOSの最初の機能は、システムデバイスを特定し、テストし、イニシャライズすることである。システムデバイスとしては、例えば、ビデオディスプレイ・カード、ハードディスク、及びフロッピー(登録商標)ディスクその他のハードウェアが挙げられる。このイニシャライズは、マシンを既知の状態に準備する。これによって、準拠した媒体に保存されているオペレーティングシステムのようなソフトウェアをロードし、実行し、PCをコントロールすることができる。この処理は、ブート、又はブートアップ(ブートストラップの略)として知られている。
BIOSプログラムは、標準入出力機能の小規模なライブラリを提供する。これは、キーボード、テキストディスプレイ機能などの周辺機器を操作し制御するために呼び出される。システムの電源がオンとなった場合、BIOSは、システム構成セッティングをチェックし、かつ、ハードウエアコンポーネントとオペレーティングシステムとの間のトランスレータの役割を果たすプログラムをメモリにロードする。例えば、ユーザがキーボードを押すと、信号が、キーボード例外ハンドラに送られる。これは、プロセッサに対して、これが何であるかを示し、かつ、これをオペレーティングシステムに伝える。
BIOSは、プロセッサが、16ビットモードで動作していた頃にIBM PCのために開発された。そして、メモリのアドレス可能な範囲も1メガバイトに制限されていた。また、BIOSのコードもIBM PC ATハードウェアに依存するものであった。オペレーティングシステムは、その後32ビットプロセッサに対して開発され、BIOSから提供される16ビット・ランタイムインターフェースの利用に頼らずに、入出力をハンドリングするデバイスドライバを包含するようになった。このようなデバイスドライバは、通常プラットフォームファームウエアによって提供され、オペレーティングシステムがロードされる前のBIOSイニシャライズの間にメモリにロードされる。オペレーティングシステムは、多くの周辺機器とインターフェスをとらなければならないため、このようなプラットフォームファームウエアは、通常システム製造業者以外のエンティティによって提供される。多くの関係者が関与するため、ファームウェアの配布は、複雑になっている。
現在のコンピュータの環境におけるマルウエア(悪意あるソフト)の増加により、ファームウェアの検証(verify)が重要となってきている。デジタル署名、すなわちデジタル署名方式は、デジタルやドキュメントの真正性を示すための数学的方式である。有効なデジタル署名は、受領者に対して、そのメッセージが既知の発信者により作成されたこと、及び途中でそれが改変されていないことを信じさせるものである。デジタル署名は、ソフトウェアの配布においてよく用いられる。そして、ファームウェア・イメージの配布においても、デジタル署名を用いることが望まれる。
本発明の実施例は、サイン付きルートファームウエアイメージを配布(deploy)するための方法、装置、システム、コンピュータプログラム、及びコンピュータプログラムプロダクトを提供する。これには、システム配布チャネルにおける異なるエンティティ(主体)により署名されているコード・モジュールが含まれる。
一実施例において、方法は、第1のコードのオーナによって署名されている第1のコード・モジュール、及び第2のコードのオーナによって署名されている第2のコード・モジュールを含む署名付きファームウェア・イメージを取得するステップを含む。本方法は、更に、アップデートされた第1のコード・モジュールを取得するステップであって、前記アップデートされた第1のコード・モジュールは、前記第1のコード・モジュールのアップデートされたコードを含む、ステップと、前記アップデートされた第1のコード・モジュールが前記第1のコードのオーナによって署名されていることを検証したことに応答して、前記アップデートされた第1のコード・モジュールによって、前記署名付きファームウェア・イメージをアップデートするステップと;前記アップデートされた第1のコード・モジュールが前記第1のコードのオーナによって署名されていることを検証するステップと;を含む。前記署名付きファームウェア・イメージは、前記第1のコードのオーナによって前記第1のコード・モジュールによりアップデートし、かつ、前記第2のコードのオーナによって前記第2のコード・モジュールによりアップデートすることを許可するアクセスコントロールリストを更に含む。
本発明は、更に、アクセスコントロールトークンを取得するステップであって、前記アクセスコントロールトークンは、第3のコードのオーナのためのパブリックキー、及び前記第3のコードのオーナが前記署名付きファームウェア・イメージの第3のコード・モジュールをアップデートする許可を含む、ステップと;前記アクセスコントロールトークンが前記アクセスコントロールリストから許可されたコードのオーナによって署名されていることを検証するステップと;前記許可されたコードのオーナが前記第3のコード・モジュールをアップデートする許可を与えられていることを検証するステップと;前記第3のコードのオーナのための前記パブリックキー、及び前記第3のコードのオーナが前記第3のコード・モジュールをアップデートする前記許可を含むよう、前記アクセスコントロールリストをアップデートするステップと;を有する。
本発明は、更に、前記第3のコードのオーナからアップデートされた第3のコード・モジュールを受信するステップと;前記アップデートされた第3のコード・モジュールが前記第3のコードのオーナによって署名されていることを検証するステップと;前記アップデートされた第3のコード・モジュールが前記第3のコードのオーナによって署名されていることが検証されたことに応答して、前記アップデートされた第3のコード・モジュールによって前記署名付きファームウェア・イメージをアップデートするステップと;を有する。
従来技術における署名付きファームウェア・イメージのブロック図である。 本発明の一実施例に従った、ルートファームウエアコードのオーナの署名付きファームウェア・イメージのブロック図である。 本発明の一実施例に従った、ルートファームウエアコードのオーナのアクセスコントロールリストを示す図2Aのブロック図である。 本発明の一実施例に従った、ルートファームウエアコードのオーナ、及びOEMファームエアコードのオーナのファームウェア・イメージを示すブロック図である。 本発明の一実施例に従った、OEMファームエアコードのオーナのアクセスコントロールリストを示す図2Cのブロック図である。 本発明の一実施例に従った、ルートファームウエアコードのオーナ、OEMファームエアコードのオーナ、及びチャネルディストリビュータファームエアコードのオーナのファームウェア・イメージを示すブロック図である。 本発明の一実施例に従った、チャネルディストリビュータファームエアコードのオーナのアクセスコントロールリストを示す図2Eのファームウェア・イメージのブロック図である。 図2Aないし図2Fの署名付きファームウェア・イメージの署名、及び権限の委任のプロセスを示すブロック図である。 本発明の一実施例に従った、図2Aないし図2F及び図3の署名付きファームエアイメージのアクセスコントロールリストのアップデートの方法を示すフローチャートである。 本発明の一実施例に従った、図2Aないし図2F及び図3の署名付きファームエアイメージのアップデートの方法を示すフローチャートである。 本発明の一実施例に従った、複数のテナントにより署名されているファームウェア・イメージを可能とするよう構成されたシステムのブロック図である。
本発明は、従来のBIOSプラットフォームファームウエアの一体構造のイメージアップデートプロセスを改善するものであり、また、各自のファームウエアコードモジュールに異なるオーナが署名をすることを可能とする。本発明は、特定のBIOS、プラットフォームコードモジュール、ドライバ、又はアプリケーションに対するアップデートの実行を可能とする。プラットフォームファームウエアが高度になり、そして、セキュリティの側面等の重要な機能を提供することが必要になったため、BIOSやプラットフォームファームウエアの障害は、迅速に取り除かなければならない。そして、これらは、システムのフラッシュメモリ領域の全BIOSやプラットフォームファームウエアの単一のイメージを製造業者に要求するのではなく、エンタープライズマネージメントサーバにより提供することが必要である。
本明細書において、本発明の「一実施例」、「実施例」とは、実施例に則して記載された特定の特徴、構造、特性が、少なくとも1つの実施例に含まれることを意味する。したがって、明細書全体に亘って「一実施例において」、「一実施例に従って」等の記載は、必ずしも、同じ実施例を参照しているわけではない。
説明において、本発明をより良く理解するために、具体的詳細が明記されている。なお、当業者は、明細書における詳細な説明なくして、実施例を実施することができる。更に、発明を不明りょうにしないために、周知の技術の説明は詳細に行っていない。本明細書には、様々な実施例が提示されている。これらは、本発明の単なる特定の実施例に過ぎない。本発明の技術的範囲は示された実施例に限定されることはない。
マルウエアの高度化に伴って、ファームウェアのイメージなどのシステムソフトウエアのプロバイダは、特定のバージョンのファームウェア・イメージが真正であり、改変されたものでないことを証明することが望まれている。このような証明は、暗号方式に従って、ファームウエアイメージファイルのデジタル署名により提供される。例えば、Rivest Shamir Adleman(RSA)暗号化アルゴリズムが挙げられる。これは、データの暗号化及び署名のために、パブリック及びプライベートキーを提供する。本明細書において記載された発明は、RSAに基づくデジタル署名アルゴリズムに限定されない。すなわち、信憑性を証明するデジタル署名を提供するあらゆる方法が、本発明の技術的範囲に属することは言うまでもない。
デジタル署名方式は、典型的には3つのアルゴリズムから構成されている。(1)可能なプライベートキーのセットから一律にアットランダムにプライベートキーを選択するキー生成アルゴリズム。このアルゴリズムは、プライベートキー及び対応するパブリックキーを出力する。(2)メッセージ及びプライベートキーが与えられると、署名を処理する署名アルゴリズム。(3)メッセージ、パブリックキー及び署名が与えられると、信憑性を求められたそのメッセージを受け入れるか却下する署名検証アルゴリズム。二つの中心的なプロパティが必要である。第1は、固定されたメッセージから生成された署名、及び、プライベートキーは、対応するパブリックキーを用いることによって、そのメッセージの信憑性を証明しなければならない。第2に、プライベートキーを保持しない者に対して有効な署名を生成することは、計算上実行不可能である。
図1は、従来の署名付きファームウェア・イメージのブロック図を示す。ルートファームエアイメージ110は、単一のエンティティのプライベートキー120によって署名される。プライベートキー120のオーナのみが、ルートファームウエア110をアップデートできる。例えば、システム製造業者がルートファームウエアイメージ110を、ルート製造業者のプライベートキー120で署名したと仮定する。もし、ルートファームウエアの証明後に、配布の連鎖の中で他のエンティティ(例えば、OEMや、チャネルカスタマ)が、ルートファームエアイメージ110内のモジュールへのアップデートが必要となった場合、これらのエンティティは、自身のカスタマイズしたファームウエアイメージコードモジュールを、プライベートキー120のオーナに提供し、次回のルートファームウエアイメージ110のリリースに含めてもらう必要がある。このような、インプリメンテーションは、カスタマイズされたファームエアイメージモジュールを維持するためのインフラストラクチャを必要とする。そして、アップデートされたルートファームウエアイメージ110を外部のエンティティのスケジュールに合わせなければならない。
プライベートキー120のオーナ以外のエンティティにより提供されるカスタマイズされたファームウエアイメージコードモジュールを許し、セキュリティを破ることは、ルートファームウエアイメージ110全体のセキュリティを犠牲にすることとなる。このようなセキュリティを破ることは、プライベートキー120のオーナのみが訂正できる。このため、今日のインプリメンテーションの多くは、配布チャネルの下流の端のエンティティによってのみ署名される。システム製造業者が提供するルートファームウエアイメージコードモジュール、及び/又は、OEMは、上述の問題を回避するために、しばしば署名なしとなる。しかしながら、多くのファームウエアイメージコードモジュールのプロバイダによるデジタル署名が無いと、システムのエンドユーザは、そのファームエアイメージが信用のおけるものであるかを検討しなくてはならない。
図2Aは、本発明の実施例に従った、ルートファームウエアイメージコードのオーナによって署名されているファームエアイメージのブロック図である。この例では、ルートファームウエアイメージの最初のオーナ、例えば、システム製造業者(以下「Root(ルート)」と言う。)は、ルートプライベートキー22によって、ファームエアイメージコードモジュールの各々(5つのファームエアボリューム(FV1 211、 FV2 213、 FV3 215、 FV4 217、及びFV5 219))に署名をした。コード・モジュールに署名をすることは、デジタル署名をコード・モジュールに添付することである。本明細書における実施例において、コード・モジュールに対する署名は、コード・モジュールを含むファームエアボリュームに関連した署名を記載することで示す。同様に、定められたコード・モジュールをアップデートする機関は、コード・モジュールを含むファームエアボリュームをアップデートする機関として示される。当業者は、1以上のコード・モジュールが定められたファームエアボリュームに含まれることを理解する。そして、ファームエアボリュームの異なるコード・モジュールは、異なる署名、及び/又は、アップデート機関を持つ。なお、単純化するために、コード・モジュールとファームエアボリュームとは、本明細書では、1対1の関係を有するよう記載される。
表230Aは、ルートコードのオーナ「Root」のためのパブリックキー231、及びコードのオーナ「Root」のためのアクセスコントロールリスト(ACL)232を含むセキュリティ情報を提供する。ACL232は、パブリックキー231に所有されているファームエアイメージコードモジュール(すなわちファームウエアボリューム)を示す。更に詳細なアクセスコントロールリスト232は、図2Bに示されている。
図2Bは、本発明の実施例に従って、ルートファームエアコードのオーナ「Root」のアクセスコントロールリストを示す図2Aのファームウェア・イメージである。図示された実施例において、ACL232は、ファームウエアモジュールボリュームFV1 211、FV2 213、FV3 215、FV4 217、及びFV5 219に、コード・モジュールに対するポインタ232Aないし232Eを含んでいる。これらのポインタは、図3を用いて以下に詳述する。
図2Cは、ルートファームウエアコードのオーナ及びOEMファームエアコードのオーナ(以下、「OEM」と言う。)の両方により署名されているファームウェア・イメージのブロック図を示す。この実施例では、ファームエアイメージのコード・モジュールの第2のオーナ、例えばシステム製造業者のOEMカスタマで、図2Aのパブリックキー220を持つ者が、カスタマイズされたルートファームウエアモジュールを提供する。例えば、OEMファームエアコードのオーナは、ブレードサーバ製品としてコンピュータシステムをオファーする。そして、そのコードのオーナ「OEM」によって提供されるファームウエアイメージコードモジュールは、ブレードサーバ構成で動作するためのファームウェアを構成(configure)してもよい。
図2Cにおいて、第2のオーナ(OEM)は、OEMプライベートキー240によって、ファームエアイメージ内の選択されたファームウエアボリューム(以下「OEMファームウェア・イメージ210B」と言う。)に署名する。この実施例では、ファームエアボリュームFV3 215、及びFV5 219は、OEMプライベートキー240で署名されている。表230Bは、OEMコードのオーナ及び、ファームエアイメージコードモジュール(すなわち、ファームエアボリューム)を表すアクセスコントロールリスト(ACL)421のためのパブリックキー241を含む新しいセキュリティ情報を提供する。ACL242に関する詳細は、図2Dを用いて詳述する。
図2Dは、本発明の実施例に従った、「OEM」のためのアクセスコントロールリストを示す図2Cのファームウェア・イメージのブロック図である。例示されたこの実施例において、ACL242は、二つのファームウエアボリュームFV3 215、及びFV5 219の各々へのポインタ242C及び242Eを含んでいる。この新しいセキュリティ情報は、表230Bの一部である。これは、図2A及び図2Bを用いて説明したように、ファームエアコードのオーナ「Root」のためのパブリックキー231及びACL232を含む。しかしながら、FV3 215、及びFV5 219をアップデートするために、ルートファームエアコードのオーナ「Root」ファームエアコードのオーナ「OEM」の権限の委任を受けている。そして、ACL232のポインタ232C及び232Eは、ACL242のポインタ242C、及び242Eにより上書きされる。ファームウエアコードモジュールのアップデートの権限の委任のプロセスについては、図3ないし図5を用いて更に以下に説明する。
図2Eは、本発明の実施例に従った、ルートファームエアコードのオーナ「Root」、OEMファームエアコードのオーナ「OEM」、及びチャネルディストリビュータファームエアコードのオーナ「Chnl」によって署名されているファームエアイメージのブロック図である。この実施例において、ファームウェア・イメージのコード・モジュールの第3のオーナ、例えば、図2Bのプライベートキー240を所有するOEMのチャネルカスタマは、カスタマイズされたルートファームウエアモジュールを提供した。第3のオーナ「Chnl」は、ファームエアイメージの一つのファームエアボリューム(以下、チャネルカスタマファームエアイメージ210Cと言う。)に署名を行った。この実施例において、ファームエアボリュームFV5 219は、Chnlのプライベートキー250で署名されている。表230Cは、新たなセキュリティ情報を提供する。すなわち、これには、チャネルカスタマーオーナ「Chnl」のパブリックキー251、及びパブリックキー251により所有されるファームエアイメージコードモジュール(すなわちファームエアボリューム)を示すアクセスコントロールリスト(ACL)252が含まれる。
図2Fは、本発明の実施例に従った、チャネルディストリビュータファームエアコードのオーナ「Chnl」のためのアクセスコントロールリストを示す図2Eのファームエアイメージのブロック図である。示された実施例において、ACL252は、ファームエアボリュームFV5 219へのポインタ252Eを含む。この新しいセキュリティ情報は、表230Cの一部である。これは、図2A及び図2Bを参照して説明したルートファームエアコードのオーナ「Root」のパブリックキー231及びACL232、及び、図2C及び図2Dを参照して説明したファームウエアコードのオーナ「OEM」のパブリックキー241及びACL242を含む。ポインタ252Eは、ファームウエアコードのオーナ「Root」のACL232のポインタ232E、及び、ファームウエアコードのオーナ「OEM」のACL242の242Eを上書きする。
図3は、図2Aないし図2Fの署名付きファームエアイメージをアップデートするための署名及び権限の委任のためのプロセスを示すブロック図である。最初、ルートファームエアイメージ310Aが、ルートファームエアコードのオーナ「Root」により署名されている。これについては、図2Aのルートファームエアイメージ210Aを参照して説明した。テーブル330Aは、パブリックキー331(プライベートキー320を有する「Root」オーナに対応)を持つエンティティが、アクセスコントロールリスト332を持つことを示す。アクセスコントロールリスト332は、ポインタ332Aないし332Eを含み、パブリックキー331のオーナがコード・モジュールをアップデートすることを可能とする。コード・モジュールは、ファームウエアボリュームFV1 311、FV2 313、FV3 315、FV4 317、及びFV5 319の各々に含まれている。
アクション3.1において、プライベートキー320のオーナである「Root」は、ルートファームエアイメージ310Aの後のアップデートを許可するために、署名付きトークン360を生成する。トークン360に署名することによって、プライベートキー320のオーナである「Root」ファームエアコードのオーナは、「Root」パブリックキー321をトークン360に関連付ける。トークン360は、権限が委任されるための情報を含ませるために生成される。例えば、ルートファームエア310Aをアップデートすることを許可されたエンティティのパブリックキー362、及び、対応するパブリックキー362でアップデートできるルートファームウエアイメージ310A内のファームエアモジュールを示すアクセスコントロールリスト364が挙げられる。この実施例において、ファームエアコードのオーナ「OEM」のパブリックキー362が、トークン360に含まれている。加えて、OEMパブリックキー362のオーナがファームエアボリュームFV3 315及びFV5 319をアップデートすることを許すアクセスコントロールリスト364が含まれている。
アクション3.2において、ルートファームウエアイメージ310Aがアップデートされる前に、トークン360によって委任されるべき権限が検証される。ルートファームエアイメージ310Aは、トークン360のパブリックキーのオーナ、すなわちトークンパブリックキー321のオーナ「Root」が、トークン360に含まれるファームエアボリュームをアップデートすることを許可されていることを保証するために、表330Aを調べる。この実施例では、表330Aは、トークン360(Root)のパブリックキー321のオーナが、表330Aに存在することを保証するために調べられ、そして、トークン360のパブリックキー321のオーナ(Root)が、ファームエアボリュームFV3 315及びFV5 319をアップデートする権限を持つことが調べられる。
アクション3.3において、トークン360のパブリックキー321のオーナ(Root)が、ファームエアボリュームFV3 315及びFV5 319をアップデートする権限を持つことが確認された後、FV3 315、及びFV5 319内のコードがアップデートされ、OEMファームエアイメージ310Bが形成される。OEMファームエアイメージ310B内の表330Bも、パブリックキー333及び対応するアクセスコントロールリスト(ACL)334として、「OEM」ファームウエアコードのオーナのパブリックキーを含むようアップデートされる。表330Bのアップデートの結果、アクセスコントロールリストは、「Root」ファームエアコードのオーナの3個のポインタ(FV1 311への332A、FV2 313への332B、及びFV4 317への332D)と、「OEM」ファームエアコードのオーナの2個のポインタ(FV3 315への334C、及びFV5 319への334E)を含むこととなる。
アクション3.4において、「OEM」ファームエアコードのオーナ(プライベートキー340のオーナ)は、OEMファームエアイメージ310Bの後のアップデートを許可するために、署名付きトークン370を生成する。トークン370に署名することによって、プライベートキー340のオーナすなわち、「OEM」ファームエアコードのオーナは、「OEM」パブリックキー341をトークン370に関連付ける。権限を委任するための情報を含めるために、トークン370が生成される。例えば、OEMファームエアイメージ310Bのアップデートを許可されたエンティティのパブリックキー372、及び、対応するパブリックキー372によってアップデートできるOEMファームエアイメージ310B内のファームウエアモジュールを示すアクセスコントロールリスト374が含まれる。この実施例において、ファームウエアコードのオーナ「Chnl」のパブリックキー372が、トークン370に含まれている。そして、Chnlパブリックキー372のオーナがファームウエアボリュームFV5 319をアップデートすることを許すアクセスコントロールリスト374も含まれている。
アクション3.5において、OEMファームエアイメージ310Bがアップデートされる前に、トークン370による委任される権限が検証されるOEMファームエアイメージ310Bは、トークン370のパブリックキー341のオーナが、トークン370に含まれるファームウエアボリュームをアップデートすることを許可されていることを保証するために、表330Bを調べるこの実施例では、表330Bは、トークン370のパブリックキー341のオーナ(OEM)が、表330Bに存在することを保証するために調べられ、そして、トークン370のパブリックキー341のオーナ(OEM)が、ファームエアボリュームFV5 319をアップデートする権限を持つことが調べられる。
アクション3.6において、トークン360のパブリックキーのオーナ(OEM)が、ファームウエアボリュームFV5 319をアップデートする権限を持つことが確認された後、FV5 319内のコードがアップデートされ、チャネルカスタマファームエアイメージ310Cが形成される。チャネルカスタマファームエアイメージ310C内の表330Cも、パブリックキー335及び対応するアクセスコントロールリスト(ACL)336として、「Chnl」ファームエアコードのオーナのパブリックキーを含むようアップデートされる。表330Cのアップデートの結果、アクセスコントロールリストは、「Root」ファームエアコードのオーナの3個のポインタ(FV1 311への332A、FV2 313への332B、及びFV4 317への332D)と、「OEM」ファームエアコードのオーナの1個のポインタ(FV3 315への334C)と、「Chnl」ファームエアコードのオーナの1個のポインタ(FV5 319への336E)を含むこととなる。
図4は、本発明の実施例に従った、図2Aないし図2F及び図3の署名付きファームウェア・イメージのアクセスコントロールリストのアップデートのための方法のフローチャートを示す。図4に示されたステップは、現在のファームエアイメージのオーナによって実行される。すなわち、図3の署名付きファームエアイメージ310Aが、署名付きファーウエアイメージをアップデートする他のエンティティに権限を委任する。ファームウェア・イメージをアップデートする権限を委任するエンティティを、本明細書では以下「委任エンティティ(delegating entity)」と言う。図2Aないし図2Fの上述の実施例では、図4に示されたステップは、アクション3.2及び3.3において「OEM」ファームウエアコードのオーナに権限を委任するために、「Root」ファームエアコードのオーナによって実行される。同様に、図4のステップは、アクション3.5及び3.6において、「Chnl」ファームウエアコードのオーナに権限を委任するために、「OEM」ファームウエアコードのオーナによって実行される。図4のステップは、現在のファームエアイメージのアクセスコントロールリストのアップデートのために実行される。例えば、ルートファームエアイメージ310Aのアクセスコントロールリスト330A、又はOEMファームエアイメージ310Bのアクセスコントロールリスト330Bが挙げられる。
「アクセスコントロール(AC)転送トークンの取得」ステップ410において、図3のアクセスコントロールトークン360又はトークン370が委任エンティティから取得される。図2Aないし図2F及び図3を参照して既に述べたように、図3のアクセスコントロールトークン、例えばトークン360又はトークン370は、配布チャネル(distribution channel)において、一つのエンティティによって生成され、配布チャネルの次のエンティティを許可し、定められたバージョンのファームエアイメージを修正する。このアクセスコントロールトークンは、委任エンティティのプライベートキーを使用することによって署名され、そして、委任エンティティのパブリックキーが、すなわち、アクセスコントロールトークンに関連付けられる。配布チャネルにおける委任エンティティからアクセスコントロールトークンが取得されると、制御は、「委任エンティティの識別、及び委任エンティティのパブリックキーの署名とACLとの照合」ステップ420に移行する。
「委任エンティティの識別、及び委任エンティティのパブリックキーの署名とACLとの照合」ステップ420において、委任エンティティが、アクセスコントロールトークンに署名したエンティティとして識別される。図3の実施例のアクション3.2を実行するときに、委任エンティティは、「Root」ファームウエアコードのオーナである。アクセスコントロールトークンに関連するパブリックキーが、ファームウェア・イメージのアクセスコントロールリストに対してアップデートする権利を委任されていると判断されるパブリックキーと照合される。アクセスコントロールトークンに関連するパブリックキーが、ファームウェア・イメージのアクセスコントロールリストに見いだされる場合、制御は、「AC転送トークンの署名の検証」ステップ430に移る。
「AC転送トークンの署名の検証」ステップ430において、委任エンティティのパブリックキーがアクセスコントロールトークンの署名の検証に用いられる。この署名の検証を実行するために、署名付きアクセスコントロールトークンからハッシュ値が計算されてもよい。パブリックキーは、デジタル署名及び署名付きデータの復号にも用いられてもよい。そして、復号されたデータから別のハッシュ値が計算できる。2つの計算されたハッシュ値が一致した場合、デジタル署名が有効であると認識してもよい。アクセスコントロールトークンの署名が検証された後、制御は、「ACLの変更を要求するコード・モジュールの特定」ステップ440に移る。
「ACLの変更を要求するコード・モジュールの特定」ステップ440において、権限が委任されることになっているファームウエアボリュームが特定される。アクション3.2の例で、アクセスコントロールトークン360において特定されたファームウエアボリュームは、ボリュームFV3 315、及びFV5 319であった。ファームエアボリュームが特定されると、制御は、「委任エンティティがACを変更する権限があることの検証」ステップ450に移行する。
「委任エンティティがACを変更する権限があることの検証」ステップ450において、委任エンティティは、現在のファームウェア・イメージのアクセスコントロールリストを変更する権限を有しているか否かが判断される。上述したように、委任エンティティである、「Root」ファームウエアコードのオーナは、ファームエアボリュームFV1 311ないしFV5 319のファームウエアボリュームのアクセスコントロールリストのオーナであることが指定されている。したがって、委任エンティティは、これらのファームウエアボリュームのアクセスコントロールリストを変更する権限を有する。制御は、「ACLのアップデート:新しいエンティティのパブリックキーの挿入とコード・モジュールのACLのアップデート」ステップ460に移る。
「ACLのアップデート:新しいエンティティのパブリックキーの挿入とコード・モジュールのACLのアップデート」ステップ460において、権限が委任されるエンティティ(この実施例の場合には、「OEM」ファームウエアコードのオーナ)のパブリックキーが、アクセスコントロールリストに追加され、そして、ファームウエアボリュームFV3 315及びFV5 319のアクセスコントロールリストがアップデートされる。ファームウエアボリュームFV3 315、及びFV5 319をアップデートする権限は、「OEM」ファームウエアコードのオーナに委任されている。
図5は、本発明の実施例に従った、図2Aないし図2F及び図3の署名付きファームウェア・イメージのアップデートの方法のフローチャートを示す。「署名付きモジュールの処理」ステップ510において、現在のファームウェア・イメージ、すなわちルートファームウエアイメージ310Aは、署名付きモジュールの処理のリクエストを受け付ける。署名付きモジュールの処理は、例えば署名付きモジュールに含まれる複数のファームウエアモジュールの情報のラップを解き(unwrapping)、及び/又は、署名付きモジュールの署名に使われるキーのラップを解く。署名付きコード・モジュールの各々は、図5のステップに基づいて処理される。制御は、「パブリックキーの署名とACLとの照合、及びアップデートするエンティティの識別」ステップ520に移行する。
「パブリックキーの署名とACLとの照合、及びアップデートするエンティティの識別」ステップ520において、署名付きモジュールを署名するのに用いたプライベートキーに対応するパブリックキーが、現在のファームウェア・イメージのアクセスコントロールリストと比較され、アップデートするエンティティが識別される。署名付きモジュールのパブリックキーが、現在のファームウェア・イメージのアクセスコントロールリストに見いだされる場合、制御は、「モジュールの署名の検証」ステップ530に移行する。
「モジュールの署名の検証」ステップ530において、モジュールの署名が検証される。署名の検証を実行するために、署名付きモジュールからハッシュ値が計算されてもよい。このパブリックキーは、デジタル署名の復号及び署名付きデータの復号に用いられてもよい。そして、復号されたデータからハッシュ値が計算できる。2つの計算されたハッシュ値が一致した場合、デジタル署名は、有効であると判断してもよい。モジュールの署名が検証された後、制御は、「アップデートのためのコード・モジュールの特定」ステップ540に移行する。
「アップデートのためのコード・モジュールの特定」ステップ540で、現在のファームウェア・イメージにおいてアップデートされるべきファームウエアボリュームのコード・モジュールが特定される。ファームウエアボリュームのコード・モジュールが特定されると、制御は、「アップデートするエンティティが、要求されているコード・モジュールをアップデートする権限を有するかの検証」ステップ550に移行する。
「アップデートするエンティティが、要求されているコード・モジュールをアップデートする権限を有するかの検証」ステップ550において、アップデートするエンティティが、要求されているファームウエアボリュームをアップデートする権限を有するか否かが判断される。アップデートするエンティティが権限を有する場合、制御は、「コード・モジュールのアップデート」ステップ560に移行する。「コード・モジュールのアップデート」ステップ560において、現在のファームウェア・イメージのコード・モジュールがアップデートされる。
図6は、本発明の実施例に従った、ファームウェア・イメージが複数のコードのオーナに署名されることを実現するよう構成されたシステムのブロック図である。プラットフォーム600は、ホストコンピュータシステムに対応し、デスクトップマネージメントインターフェース(DMI)611を介してチップセット620に接続されたプロセッサ610を有する。プロセッサ610は、処理パワーをプラットフォーム600に提供し、シングルコア又はマルチコアプロセッサであってもよく、1つ以上のプロセッサがプラットフォーム600に含まれてもよい。プロセッサ610は、一つ以上のシステムバス、通信パス又はメディア(図示せず)を介して、プラットフォーム600の他のコンポーネントに接続されてもよい。
チップセット620は、管理エンジン(manageability engine(ME))630を含む。これは、埋め込まれたマイクロプロセッサとしてインプリメントされ、チップセットプロセッサ610とは独立に動作し、プラットフォーム600の構成及び動作を管理する。一実施例において、プロセッサ610は、ホストオペレーティングシステム(図示せず)の指示のもとに動作し、管理エンジン(ME)630は、安全で隔離された環境を提供し、これはホストオペレーティングシステムがアクセスすることができない。一実施例において、管理エンジン(ME)630は、ユーザの信頼性を証明し、周辺デバイスのアクセスを制御し、プラットフォーム600の記憶デバイスに格納されたデータの保護のための暗号キーを管理する。エンタープライズサービス670を用いることにより、管理エンジン(ME)630は、構成のためのエンタープライズ全体のポリシや、例えばプラットフォーム600のプラットフォームの管理の一貫性を維持する。マルチオーナにより署名されているファームエアアップデートの管理は、管理エンジン(ME630)により実行されるファームウェアとしてインプリメントされてもよい。
ME630と、エンタープライズサービス670との通信は、アウトオブバンド通信チャネル671を介してなされる。一実施例において、アウトオブバンド通信チャネル671は、ホストシステムの管理エンジン(ME)630と、ホストシステムを管理するエンタープライズサービス670との安全な通信チャネルである。プラットフォーム600と、エンタープライズサービス670との安全な通信を可能とする暗号化/復号化キーは、チップセット620及び管理エンジン(ME)630の製造段階において、図6のフラッシュメモリ690に格納されてもよい。
図6に示される実施例において、管理エンジン(ME)630は、管理エンジンコントローラインターフェース(MECI)631を介して、マイクロコントローラ640に接続される。一実施例において、マイクロコントローラ640は、汎用目的のコントローラであり、ストレージ命令及びその他の高速化された処理を実行する。図示された実施例において、管理エンジン(ME)630は、マイクロコントローラ640の動作を制御し、これは更に記憶コントローラ650の動作を制御する。記憶コントローラ650は、例えば記憶デバイス652などの記憶デバイスのためのコントローラであり、マイクロコントローラ640及びME630が記憶デバイス652に記憶されているデータにアクセスすることを可能とする。
プラットフォーム600は、更にメモリデバイス例えばダイナミックランダムアクセスメモリ(DRAM)612、スタティックランダムアクセスメモリ(SRAM)622をチップセット620内に有する。そして、フラッシュメモリ690及び記憶デバイス652は、記憶コントローラ650を介してアクセスできる。このようなメモリデバイスは、ランダムアクセスメモリ(RAM)及びリードオンリーメモリ(ROM)を含んでもよい。開示の目的のため、「ROM」の語は、不揮発性メモリデバイス一般を指すものとして用いる。例えば、EPROM、EEPROM、フラッシュROM、フラッシュメモリ等が挙げられる。記憶デバイス652は、大容量記憶デバイス、例えばIDEハードドライブ、及び/又は、他の媒体、例えばフロッピー(登録商標)ディスク、光記憶、テープ、フラッシュメモリ、メモリスティック、デジタルビデオディスク、生物学的記憶装置等がある。
フラッシュメモリ690は、フラッシュインターフェース691を介して、チップセット620からアクセスできる。記憶装置652および/またはメモリデバイスDRAM612、SRAM622及びフラッシュメモリ690に記憶されるデータは、暗号化されてもよい。
フラッシュメモリ690は、プラットフォーム600をイニシャライズするために使用されるファームウェアを含む。このイニシャライズ・ファームウェアは、システムコンポーネント・ハードウェア(例えばビデオディスプレイ・カード及びハードディスク)及び管理エンジン(ME)630を含む一部の他のハードウェアデバイスを特定し、かつ初期化するために、BIOSファームウェア692を含む。BIOSファームウェア692は知られているように、プラットフォーム600のシステムコンポーネント・ハードウェアを低い能力状態において作動させるため、オペレーティングシステムを含むさまざまなメディアに記憶される他のソフトウェアプログラムがロードされ、実行され、そしてプラットフォーム600の制御を受ける。BIOSファームエア692は、BIOS/ME通信モジュール630を含み、これは、ブート処理の間に、管理エンジン(ME)630の初期の構成(configuration)を可能とする。一実施例において、管理エンジン(ME)630は、プラットフォーム600にオペレーティングシステムがロードされる直前に、通知を受けるために、BIOS/ME通信モジュール693に登録する。この通知は、オペレーティングシステムがロードされる準備のために、管理エンジン(ME)630に特定の命令を実行させる。
フラッシュメモリ690は、ネットワークコントローラ660を構成するためのネットワークコントローラファームウエア695、及びチップセット620を構成するためのチップセットファームウエア696を含む。フラッシュメモリ690は、また、データ領域698を含む。実施例において、データ領域698は、暗号化され、管理エンジン(ME)630によってのみ読み込まれてもよい。BIOS/ブート・ファームウェアのマルチ・オーナ・マネジメントサービスを提供するためにME630によって使用される情報は、フラッシュメモリ690の、又は、記憶装置652上のデータ領域698に記憶されてもよい。
プロセッサ610は、また、付加的なコンポーネント(例えばビデオ・コントローラ、小型コンピューターシステムインターフェース(SCSI)コントローラ、ネットワーク制御装置、ユニバーサルシリアルバス(USB)コントローラ、入力装置(例えばキーボード及びマウス)、など)に、通信できるよう接続されてもよい。プラットフォーム600は、また、様々なシステムコンポーネントと通信できるよう接続するために、一つ以上のブリッジ又はハブを含んでもよい(例えばメモリーコントローラ・ハブ、入出力(I/O)コントローラ・ハブ、PCIルート・ブリッジ、その他)。本明細書で、「バス」の語は、共用の通信経路、及びポイント・ツー・ポイント経路を参照するものとして用いられる。
一部のコンポーネント(例えばネットワーク制御装置660例えば)は、バスによって通信するためのインターフェース(例えばPCIコネクタ)を有するアダプターカードとしてインプリメントされてもよい。実施例において、コントローラが組み込まれたのと同様に、コンポーネント(例えばプログラム可能な、又は、プログラム可能でないロジック・デバイス、又は、アレイ)、特定用途向け集積回路(ASIC)、組み込み型コンピュータ、スマートカード、などを用いて一つ以上のデバイスがインプリメントされてもよい。
本明細書で使用している、「処理システム」の語及び「データ処理システム」の語は、広く単一の機械を含み、又は、一緒に動作する、通信可能に接続された機械、又は、デバイスを含むことを意図している。処理システムの例としては、分散型計算システム、スーパーコンピュータ、高性能コンピューティング・システム、計算クラスタ、メインフレームコンピュータ、ミニコンピュータ、クライアント・サーバ・システム、パソコン、ワークステーション、サーバ、ポータブルコンピュータ、ラップトップコンピュータ、タブレット、電話、パーソナル携帯情報機器(PDA)、携帯デバイス、娯楽デバイス(例えばオーディオおよび/またはビデオ・デバイス)及び情報を処理し又は伝送するための、その他のデバイスが挙げられるが、これらに限定されるものではない。
プラットフォーム600は、従来の入力装置(例えばキーボード、マウス、その他)からの入力によっておよび/または他の機械、生物測定フィードバック、又は、他の入力源、又は、信号から受信される命令によって、少なくともその一部が制御されてもよい。プラットフォーム600は、一つ以上のリモート・データ処理システム(図示せず)への一つ以上の接続を利用してもよい。例えばネットワーク・インタフェース制御装置(NIC)660、モデム、又は、他の通信ポート、又は、カップリング、が挙げられる。
プラットフォーム600は、物理的なおよび/または論理的ネットワーク(例えばローカル・エリア・ネットワーク(LAN)、広域ネットワーク(WAN)、イントラネット、インターネット、など)を介して、他の処理システム(図示せず)に相互接続してもよい。ネットワークに含まれる通信は、無線周波数(RF)、衛星、マイクロ波、IEEE802.11、ブルートゥース、光学で、赤外線、ケーブル、レーザー、その他、を含む、さまざまな有線および/または無線の、ショートレンジ、又は、ロングレンジキャリア及びプロトコルを利用してもよい。
本願明細書において開示されるメカニズムの実施例はハードウェア、ソフトウェア、ファームウェア、又は、この種のインプリメンテーション・アプローチの組合せによってインプリメントされてもよい。本発明の実施例は、少なくとも一つのプロセッサ、データ記憶システム(揮発性の及び不揮発性メモリおよび/または記憶要素を含む))、少なくとも一つの入力装置、及び少なくとも一つの出力装置を含むプログラマブルシステムで実行されるコンピュータプログラムとしてインプリメントされてもよい。
プログラムコードはデータを入力し、本願明細書において記載されている機能を実行し、かつ出力情報を生成するために適用されてもよい。本発明の実施例は、本発明のオペレーションを実行するための命令を格納した機械可読の媒体を含む。また、媒体は、本明細書に記載された構成、回路、装置、プロセッサ、及び/又は、システムの特徴を定義するHDL等のデザインデータを含む。これらの、実施例は、プログラムプロダクトとも呼ばれる。
このような、機械がアクセス可能な媒体としては、機械又はデバイスが生成または形成したパーティクルの具体的配置、例えばハードディスク、フロッピー(登録商標)ディスクを含む他のいかなる種類のディスク、光ディスク、コンパクトディスク読取り専用メモリ(CD−ROM)、CD−RW、光磁気ディスク、読取り専用メモリ(ROM)のような半導体デバイス、ダイナミック・ランダム・アクセス・メモリ(DRAM)のようなランダムアクセスメモリ(RAM)、SRAM、EPROM、フラッシュ・プログラマブル・メモリ(FLASH)、EEPROM、磁気又は光カード、又は、電子命令を記憶することに適している他のいかなる種類のメディア、が含まれる。
出力情報は、周知の方法で、一つ以上の出力装置に適用されてもよい。本発明を適用する処理システムは、例えば、プロセッサを有するいかなるシステムも含む。すなわち、デジタルシグナルプロセッサ(DSP)、マイクロコントローラ、特定用途向け集積回路(ASIC)、又は、マイクロプロセッサ、が含まれる。
プログラムは、処理システムによって通信する高水準手順、又は、オブジェクト指向プログラミング言語でインプリメントされてもよい。また、必要に応じて、プログラムは、アセンブリ、又は、機械言語でインプリメントされてもよい。事実、本願明細書に記載されているメカニズムは、技術的範囲に関し、いかなる特定のプログラミング言語にも制限されない。いずれにせよ、言語は、コンパイル、又は、インタープリタ言語であってもよい。
複数の所有者の署名付きファームウェアを配布するための方法とシステムの実施例が、本願明細書において示されている。本発明の具体例が図と共に記載されているが、添付の請求の範囲の範囲内において、多くの変更、バリエーション及び修正を行うことができることは当業者にとって明らかである。したがって、当業者は、変更及び修正は、本発明の広範な内容から逸脱することなく、なされることができると理解するはずである。添付の請求項の技術的範囲は、これらの変更、バリエーション、及び修正を、包含する。
600 プラットフォーム
610 プロセッサ
620 チップセット
670 エンタープライズサービス
690 フラッシュメモリ

Claims (9)

  1. コンピュータ実行する方法であって:
    第1のコード・モジュールのオーナによって署名されている第1のコード・モジュール、及び第2のコード・モジュールのオーナによって署名されている第2のコード・モジュールを含む署名付きファームウェア・イメージを取得するステップと、
    アップデートされた第1のコード・モジュールを取得するステップであって、前記アップデートされた第1のコード・モジュールは、前記第1のコード・モジュールのアップデートされたコード・モジュールを含む、ステップと、
    前記アップデートされた第1のコード・モジュールが前記第1のコード・モジュールのオーナによって署名されていることを検証するステップと;
    前記アップデートされた第1のコード・モジュールが前記第1のコード・モジュールのオーナによって署名されていることを検証したことに応答して、前記アップデートされた第1のコード・モジュールによって、前記署名付きファームウェア・イメージをアップデートするステップであって、前記署名付きファームウェア・イメージは、アクセスコントロールリストを更に含み、前記アクセスコントロールリストは、前記第1のコード・モジュールのオーナによって前記第1のコード・モジュールがアップデートされ、又は、前記第2のコード・モジュールのオーナによって前記第2のコード・モジュールがアップデートされることを許可する、ステップと;
    アクセスコントロールトークンを取得するステップであって、前記アクセスコントロールトークンは、第3のコード・モジュールのオーナのためのパブリックキー、及び前記第3のコード・モジュールのオーナが前記署名付きファームウェア・イメージの第3のコード・モジュールをアップデートする許可を含む、ステップと;
    前記アクセスコントロールトークンが前記アクセスコントロールリストから許可されたコード・モジュールのオーナによって署名されていることを検証するステップと;
    前記許可されたコード・モジュールのオーナが前記第3のコード・モジュールをアップデートする許可を与えられていることを検証するステップと;
    前記第3のコード・モジュールのオーナのための前記パブリックキー、及び前記第3のコード・モジュールのオーナが前記第3のコード・モジュールをアップデートする前記許可を含むよう、前記アクセスコントロールリストをアップデートするステップと;
    を有する方法。
  2. 前記第3のコード・モジュールのオーナからアップデートされた第3のコード・モジュールを受信するステップと;
    前記アップデートされた第3のコード・モジュールが前記第3のコード・モジュールのオーナによって署名されていることを検証するステップと;
    前記アップデートされた第3のコード・モジュールが前記第3のコード・モジュールのオーナによって署名されていることが検証されたことに応答して、前記アップデートされた第3のコード・モジュールによって前記署名付きファームウェア・イメージをアップデートするステップと;
    を有する請求項記載の方法。
  3. 前記署名付きファームウェア・イメージをアップデートする前に、前記第1のコード・モジュールのオーナが、前記第1のコード・モジュールをアップデートする許可を与えられていることを検証するステップ;
    を更に有する請求項1記載の方法。
  4. 署名付きファームウェア・イメージを取得するための手段であって、前記署名付きファームウェア・イメージは、第1のコード・モジュールのオーナによって署名されている第1のコード・モジュール、及び第2のコード・モジュールのオーナによって署名されている第2のコード・モジュールを含む、手段と;
    アップデートされた第1のコード・モジュールを取得するための手段であって、前記アップデートされた第1のコード・モジュールは、前記第1のコード・モジュールのためのアップデートされたコード・モジュールを含む、手段と;
    前記アップデートされた第1のコード・モジュールが前記第1のコード・モジュールのオーナによって署名されていることを検証するための手段と;
    前記アップデートされた第1のコード・モジュールが前記第1のコード・モジュールのオーナによって署名されていることが検証されたことに応答して、前記アップデートされた第1のコード・モジュールによって前記署名付きファームウェア・イメージをアップデートするための手段であって、前記署名付きファームウェア・イメージは、アクセスコントロールリストを更に含み、前記アクセスコントロールリストは、前記第1のコード・モジュールのオーナによって前記第1のコード・モジュールがアップデートされ、又は、前記第2のコード・モジュールのオーナによって前記第2のコード・モジュールがアップデートされることを許可する、手段と;
    アクセスコントロールトークンを受信するための手段であって、前記アクセスコントロールトークンは、第3のコード・モジュールのオーナのためのパブリックキー、及び前記第3のコード・モジュールのオーナが前記署名付きファームウェア・イメージの第3のコード・モジュールをアップデートする許可を含む、手段と;
    前記アクセスコントロールトークンが前記アクセスコントロールリストから許可されたコード・モジュールのオーナによって署名されていることを検証するための手段と;
    前記許可されたコード・モジュールのオーナが前記第3のコード・モジュールをアップデートする許可を与えられていることを検証するための手段と;
    前記第3のコード・モジュールのオーナのための前記パブリックキー、及び前記第3のコード・モジュールのオーナが前記第3のコード・モジュールをアップデートする前記許可を含むよう、前記アクセスコントロールリストをアップデートするための手段と;
    を有するシステム。
  5. 前記第3のコード・モジュールのオーナからアップデートされた第3のコード・モジュールを受信するための手段と;
    前記アップデートされた第3のコード・モジュールが前記第3のコード・モジュールのオーナによって署名されていることを検証するための手段と;
    前記アップデートされた第3のコード・モジュールが前記第3のコード・モジュールのオーナによって署名されていることが検証されたことに応答して、前記アップデートされた第3のコード・モジュールによって前記署名付きファームウェア・イメージをアップデートするための手段と;
    を更に有する請求項記載のシステム。
  6. 前記署名付きファームウェア・イメージをアップデートする前に、前記第1のコード・モジュールのオーナが前記第1のコード・モジュールをアップデートする許可を与えられていることを検証するための手段;
    を更に有する請求項記載のシステム。
  7. 第1のコード・モジュールのオーナによって署名されている第1のコード・モジュール、及び第2のコード・モジュールのオーナによって署名されている第2のコード・モジュールを含む署名付きファームウェア・イメージを取得するステップと、
    アップデートされた第1のコード・モジュールを取得するステップであって、前記アップデートされた第1のコード・モジュールは、前記第1のコード・モジュールのアップデートされたコード・モジュールを含む、ステップと、
    前記アップデートされた第1のコード・モジュールが前記第1のコード・モジュールのオーナによって署名されていることを検証するステップと;
    前記アップデートされた第1のコード・モジュールが前記第1のコード・モジュールのオーナによって署名されていることを検証したことに応答して、前記アップデートされた第1のコード・モジュールによって、前記署名付きファームウェア・イメージをアップデートするステップであって、前記署名付きファームウェア・イメージは、アクセスコントロールリストを更に含み、前記アクセスコントロールリストは、前記第1のコード・モジュールのオーナによって前記第1のコード・モジュールがアップデートされ、又は、前記第2のコード・モジュールのオーナによって前記第2のコード・モジュールがアップデートされることを許可する、ステップと;
    アクセスコントロールトークンを受信するステップであって、前記アクセスコントロールトークンは、第3のコード・モジュールのオーナのためのパブリックキー、及び前記第3のコード・モジュールのオーナが前記署名付きファームウェア・イメージの第3のコード・モジュールをアップデートする許可を含む、ステップと;
    前記アクセスコントロールトークンが前記アクセスコントロールリストから許可されたコード・モジュールのオーナによって署名されていることを検証するステップと;
    前記許可されたコード・モジュールのオーナが前記第3のコード・モジュールをアップデートする許可を与えられていることを検証するステップと;
    前記第3のコード・モジュールのオーナのための前記パブリックキー、及び前記第3のコード・モジュールのオーナが前記第3のコード・モジュールをアップデートする前記許可を含むよう、前記アクセスコントロールリストをアップデートするステップと;
    をコンピュータに実行させる命令を有するプログラム。
  8. 前記第3のコード・モジュールのオーナからアップデートされた第3のコード・モジュールを受信するステップと;
    前記アップデートされた第3のコード・モジュールが前記第3のコード・モジュールのオーナによって署名されていることを検証するステップと;
    前記アップデートされた第3のコード・モジュールが前記第3のコード・モジュールのオーナによって署名されていることが検証されたことに応答して、前記アップデートされた第3のコード・モジュールによって前記署名付きファームウェア・イメージをアップデートするステップと;
    をコンピュータに実行させる命令を更に有する請求項記載のプログラム。
  9. 前記署名付きファームウェア・イメージをアップデートする前に、前記第1のコード・モジュールのオーナが、前記第1のコード・モジュールをアップデートする許可を与えられていることを検証するステップ;
    をコンピュータに実行させる命令を更に有する請求項記載のプログラム。
JP2011130480A 2010-06-11 2011-06-10 ファームウェア・イメージのマルチオーナによる配布 Expired - Fee Related JP5301609B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US12/814,246 US8566613B2 (en) 2010-06-11 2010-06-11 Multi-owner deployment of firmware images
US12/814,246 2010-06-11

Publications (2)

Publication Number Publication Date
JP2012003758A JP2012003758A (ja) 2012-01-05
JP5301609B2 true JP5301609B2 (ja) 2013-09-25

Family

ID=44337607

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011130480A Expired - Fee Related JP5301609B2 (ja) 2010-06-11 2011-06-10 ファームウェア・イメージのマルチオーナによる配布

Country Status (9)

Country Link
US (1) US8566613B2 (ja)
EP (1) EP2395449B1 (ja)
JP (1) JP5301609B2 (ja)
KR (1) KR101312832B1 (ja)
CN (2) CN102289627B (ja)
HK (1) HK1165038A1 (ja)
RU (1) RU2510952C2 (ja)
SG (1) SG176870A1 (ja)
WO (1) WO2011156738A2 (ja)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8566613B2 (en) * 2010-06-11 2013-10-22 Intel Corporation Multi-owner deployment of firmware images
US8428929B2 (en) * 2010-09-30 2013-04-23 Intel Corporation Demand based USB proxy for data stores in service processor complex
US8924737B2 (en) * 2011-08-25 2014-12-30 Microsoft Corporation Digital signing authority dependent platform secret
CN103777971A (zh) * 2012-10-23 2014-05-07 新加坡商华科国际股份有限公司 电子装置、更新固件的方法与电脑可读取记录媒体
KR101416381B1 (ko) 2012-12-17 2014-08-06 현대자동차 주식회사 펌웨어 업데이트 시스템 및 방법
US9160542B2 (en) 2013-03-18 2015-10-13 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Authorizing use of a test key signed build
GB2515536A (en) * 2013-06-27 2014-12-31 Ibm Processing a guest event in a hypervisor-controlled system
US9524390B2 (en) * 2014-09-09 2016-12-20 Dell Products, Lp Method for authenticating firmware volume and system therefor
WO2016076880A1 (en) 2014-11-14 2016-05-19 Hewlett Packard Enterprise Development Lp Secure update of firmware and software
CN104636140B (zh) * 2015-01-29 2018-05-29 小米科技有限责任公司 固件压缩方法、固件解压方法和装置
KR101782378B1 (ko) * 2016-11-03 2017-09-27 시큐리티플랫폼 주식회사 서명된 공개 키를 이용한 시큐어 부트 방법
US10872155B2 (en) * 2016-11-16 2020-12-22 Samsung Electronics Co., Ltd. Computing system for managing firmware and firmware managing method thereof
US10489594B2 (en) 2017-07-19 2019-11-26 Dell Products, Lp System and method for secure migration of virtual machines between host servers
US10551814B2 (en) * 2017-07-20 2020-02-04 Fisher-Rosemount Systems, Inc. Generic shadowing in industrial process plants
DE102017219188A1 (de) * 2017-10-26 2019-05-02 Robert Bosch Gmbh Verfahren zum Aktualisieren von Softwarekomponenten eines Netzwerkteilnehmers eines Netzwerks
US11170105B2 (en) 2019-02-28 2021-11-09 International Business Machines Corporation Verifying updates based on update behavior-based profiles
US11113188B2 (en) 2019-08-21 2021-09-07 Microsoft Technology Licensing, Llc Data preservation using memory aperture flush order
US20220058270A1 (en) * 2020-08-21 2022-02-24 Arm Limited System, devices and/or processes for delegation of cryptographic control of firmware authorization management
US12039318B2 (en) * 2020-10-26 2024-07-16 Micron Technology, Inc. Endpoint customization via online firmware store
CN116964580A (zh) * 2021-02-24 2023-10-27 谷歌有限责任公司 数字设备的可信计算
CN117494079B (zh) * 2023-12-25 2024-03-26 飞腾信息技术有限公司 一种镜像权转移方法、安全启动方法及相关装置

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5844986A (en) 1996-09-30 1998-12-01 Intel Corporation Secure BIOS
US7069452B1 (en) 2000-07-12 2006-06-27 International Business Machines Corporation Methods, systems and computer program products for secure firmware updates
RU2258252C2 (ru) * 2000-07-25 2005-08-10 Макровижн Корпорейшн Система и способ проверки подлинности динамически подключаемых исполняемых образов
KR20030033396A (ko) 2001-10-22 2003-05-01 주식회사 지트랜코리아 무선 단말기의 업그레이드 방법
US7036007B2 (en) 2002-09-09 2006-04-25 Intel Corporation Firmware architecture supporting safe updates and multiple processor types
US7644288B2 (en) * 2003-03-19 2010-01-05 Ricoh Company, Ltd. Image forming apparauts that checks authenticity of an update program
JP2004303209A (ja) 2003-03-19 2004-10-28 Ricoh Co Ltd 画像形成装置、プログラム更新方法、及び更新用記憶媒体
US7017040B2 (en) 2003-12-04 2006-03-21 Intel Corporation BIOS update file
US20050132357A1 (en) * 2003-12-16 2005-06-16 Microsoft Corporation Ensuring that a software update may be installed or run only on a specific device or class of devices
US20050262497A1 (en) * 2004-05-19 2005-11-24 Microsoft Corporation System and method for generating embedded resource updates for output device
JP2006058995A (ja) 2004-08-18 2006-03-02 Nippon Telegr & Teleph Corp <Ntt> アクセス権限設定装置、方法およびシステム
US7730326B2 (en) 2004-11-12 2010-06-01 Apple Inc. Method and system for updating firmware stored in non-volatile memory
US8464348B2 (en) * 2004-11-15 2013-06-11 Microsoft Corporation Isolated computing environment anchored into CPU and motherboard
KR20070064872A (ko) * 2005-12-19 2007-06-22 엘지전자 주식회사 케이블 방송의 소프트웨어 수신방법
US20070294404A1 (en) * 2006-06-15 2007-12-20 International Business Machines Corporation Method and system for authorization and access control delegation in an on demand grid environment
US8001385B2 (en) 2006-06-21 2011-08-16 Intel Corporation Method and apparatus for flash updates with secure flash
US7770165B2 (en) 2006-08-25 2010-08-03 Microsoft Corporation Providing firmware updates to portable media devices
US20080126854A1 (en) * 2006-09-27 2008-05-29 Anderson Gary D Redundant service processor failover protocol
US8245307B1 (en) * 2006-12-18 2012-08-14 Nvidia Corporation Providing secure access to a secret
JP2008305035A (ja) * 2007-06-06 2008-12-18 Hitachi Ltd 装置、更新方法、および制御ソフト。
US8495354B2 (en) 2008-09-24 2013-07-23 Hewlett-Packard Development Company, L.P. Apparatus for determining during a power-on sequence, a value to be written to a first register in a secure area and the same value to a second register in non-secure area, which during a protected mode, the value is compared such that if it is equal, enabling writing to a memory
US8566613B2 (en) * 2010-06-11 2013-10-22 Intel Corporation Multi-owner deployment of firmware images

Also Published As

Publication number Publication date
WO2011156738A2 (en) 2011-12-15
RU2011153332A (ru) 2013-07-10
HK1165038A1 (zh) 2012-09-28
US8566613B2 (en) 2013-10-22
CN102289627A (zh) 2011-12-21
EP2395449A1 (en) 2011-12-14
JP2012003758A (ja) 2012-01-05
SG176870A1 (en) 2012-01-30
US20110307712A1 (en) 2011-12-15
RU2510952C2 (ru) 2014-04-10
KR101312832B1 (ko) 2013-09-27
CN102934073A (zh) 2013-02-13
KR20110138165A (ko) 2011-12-26
EP2395449B1 (en) 2019-02-13
WO2011156738A3 (en) 2012-04-05
CN102289627B (zh) 2015-07-29

Similar Documents

Publication Publication Date Title
JP5301609B2 (ja) ファームウェア・イメージのマルチオーナによる配布
US11741230B2 (en) Technologies for secure hardware and software attestation for trusted I/O
JP5526450B2 (ja) ハードウェア構成を変更する方法、ハードウェア構成の変更を遠隔位置において可能にする方法、及びそのための装置
CN111324895B (zh) 用于客户端设备的信任服务
US8370610B2 (en) Remote configuration of computing platforms
US11416616B2 (en) Secure boot chain for live boot systems
CN112187803B (zh) 使用服务器的tpm的远程密码服务
US10303879B1 (en) Multi-tenant trusted platform modules
US8738915B2 (en) System and method for establishing perpetual trust among platform domains
JP2010073193A5 (ja)
CN103119560A (zh) 用于服务处理器复合体中的数据存储的基于需求的usb代理
KR20130101964A (ko) 플랫폼 컴포넌트들의 보안 업그레이드 또는 다운그레이드를 위한 방법 및 시스템
US20060095505A1 (en) Providing a trustworthy configuration server
US20240291636A1 (en) Spdm-based firmware protection system and method
US12021983B2 (en) Disaggregated key management in a distributed system
US20240296234A1 (en) Systems and methods for key distribution of low end spdm devices
US12095931B2 (en) Chained cryptographically signed certificates to convey and delegate trust and authority in a multiple node environment
TW202314533A (zh) 可獨立升級的擴充基座

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20121225

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20130325

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20130328

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130425

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130521

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130619

R150 Certificate of patent or registration of utility model

Ref document number: 5301609

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees