(57)【特許請求の範囲】
【請求項１】
データ処理システム内で、信頼されるプラットフォーム・モジュールを使用するための方法であって、前記データ処理システム内の信頼されるプラットフォームが少なくとも１つの不揮発性メモリを有し、
（ａ）前記データ処理システム上で実行されているハイパーバイザを使用して、前記データ処理システム内の信頼されるプラットフォーム内に格納された秘密データを読み取るステップと、
（ｂ）暗号化秘密データ値を生成するために、前記秘密データのコピーを暗号化するように前記データ処理システム内の信頼されるプラットフォーム・モジュールに要求するステップと、
（ｃ）以前に生成された暗号化秘密データ値を、前記信頼されるプラットフォーム内の不揮発性メモリに格納するステップと、
（ｄ）複数の格納された暗号化秘密データ値を生成するために、前記データ処理システム内のそれぞれの信頼されるプラットフォーム・モジュールについて、ステップ（ｂ）および（ｃ）を繰り返すステップであって、各々の格納された暗号化秘密データ値が、前記信頼されるプラットフォーム・モジュールと関連付けられる、ステップと、
（ｅ）不揮発性メモリから暗号化秘密データ値を取り出すステップと、
（ｆ）復号化秘密データ値を生成するために、前記取り出された暗号化秘密データ値を生成した前記信頼されるプラットフォーム・モジュールに対して、前記取り出された暗号化秘密データ値の復号化を要求するステップと、
（ｇ）前記データ処理システム内の各々の信頼されるプラットフォーム・モジュールについて、ステップ（ｅ）および（ｆ）を繰り返すステップと、
（ｈ）前記復号化秘密データ値を比較するステップと、
（ｉ）前記復号化秘密データ値の前記比較に基づいて、ゼロまたは１つ以上の欠陥のある信頼されるプラットフォーム・モジュールを識別するステップと、
（ｊ）信頼されるプラットフォーム・モジュールに関連付けられた前記復号化秘密データ値が、前記データ処理システム内の異なる信頼されるプラットフォーム・モジュールに関連付けられた１つまたは複数の復号化秘密データ値と一致しない場合、前記信頼されるプラットフォーム・モジュールを欠陥のあるものと指定するステップと、
を有する方法。
【請求項２】
前記データ処理システムの起動時または再起動時にステップ（ｅ）から（ｉ）が発生する、請求項１に記載の方法。
【請求項３】
前記信頼されるプラットフォームの製造時にステップ（ａ）から（ｄ）が発生する、請求項１に記載の方法。
【請求項４】
エンティティが前記信頼されるプラットフォームの所有権を取得する時にステップ（ａ）から（ｄ）が発生する、請求項１に記載の方法。
【請求項５】
データ処理システム内で信頼されるプラットフォーム・モジュールを使用するための、コンピュータ可読媒体上のコンピュータ・プログラムであって、前記データ処理システム内の信頼されるプラットフォームが少なくとも１つの不揮発性メモリを有し、
前記データ処理システム上で実行されているハイパーバイザを使用して、前記データ処理システム内の信頼されるプラットフォーム内に格納された秘密データを読み取るための手段と、
暗号化秘密データ値を生成するために、前記秘密データのコピーを暗号化するように前記データ処理システム内の信頼されるプラットフォーム・モジュールに要求するための手段と、
以前に生成された暗号化秘密データ値を、前記信頼されるプラットフォーム内の不揮発性メモリに格納するための手段と、
前記データ処理システム内の他の各々の信頼されるプラットフォーム・モジュールについて暗号化秘密データ値を繰り返し生成することで、不揮発性メモリが複数の暗号化秘密データ値を含み、そのそれぞれが自分自身を生成した信頼されるプラットフォーム・モジュールに関連付けられるようにするための手段と、
不揮発性メモリから暗号化秘密データ値を取り出すための手段と、
復号化秘密データ値を生成するために、前記取り出された暗号化秘密データ値を生成した前記信頼されるプラットフォーム・モジュールに対して、前記取り出された暗号化秘密データ値の復号化を要求するための手段と、
前記データ処理システム内の他の各々の信頼されるプラットフォーム・モジュールについて、復号化秘密データ値を繰り返し生成するための手段と、
前記復号化秘密データ値を比較するための手段と、
前記復号化秘密データ値の前記比較に基づいて、ゼロまたは１つ以上の欠陥のある信頼されるプラットフォーム・モジュールを識別するための手段と、
信頼されるプラットフォーム・モジュールに関連付けられた前記復号化秘密データ値が、前記データ処理システム内の異なる信頼されるプラットフォーム・モジュールに関連付けられた１つまたは複数の復号化秘密データ値と一致しない場合、前記信頼されるプラットフォーム・モジュールを欠陥のあるものと指定するための手段と、
を有するコンピュータ・プログラム。
【請求項６】
前記データ処理システムの起動時または再起動時に、欠陥のある信頼されるプラットフォーム・モジュールを識別するための前記手段が使用される、請求項５に記載のコンピュータ・プログラム。
【請求項７】
前記信頼されるプラットフォームの製造時に、暗号化秘密データ値を繰り返し生成するための前記手段が使用される、請求項５に記載のコンピュータ・プログラム。
【請求項８】
エンティティが前記信頼されるプラットフォームの所有権を取得する時に、暗号化秘密データ値を繰り返し生成するための前記手段が使用される、請求項５に記載のコンピュータ・プログラム。
【請求項９】
データ処理システム内で信頼されるプラットフォーム・モジュールを使用するための装置であって、前記データ処理システム内の信頼されるプラットフォームが少なくとも１つの不揮発性メモリを有し、
前記データ処理システム上で実行されているハイパーバイザを使用して、前記データ処理システム内の信頼されるプラットフォーム内に格納された秘密データを読み取るための手段と、
暗号化秘密データ値を生成するために、前記秘密データのコピーを暗号化するように前記データ処理システム内の信頼されるプラットフォーム・モジュールに要求するための手段と、
以前に生成された暗号化秘密データ値を、前記信頼されるプラットフォーム内の不揮発性メモリに格納するための手段と、
前記データ処理システム内の他の各々の信頼されるプラットフォーム・モジュールについて暗号化秘密データ値を繰り返し生成することで、不揮発性メモリが複数の暗号化秘密データ値を含み、そのそれぞれが自分自身を生成した信頼されるプラットフォーム・モジュールに関連付けられるようにするための手段と、
不揮発性メモリから暗号化秘密データ値を取り出すための手段と、
復号化秘密データ値を生成するために、前記取り出された暗号化秘密データ値を生成した前記信頼されるプラットフォーム・モジュールに対して、前記取り出された暗号化秘密データ値の復号化を要求するための手段と、
前記データ処理システム内の他の各々の信頼されるプラットフォーム・モジュールについて、復号化秘密データ値を繰り返し生成するための手段と、
前記復号化秘密データ値を比較するための手段と、
前記復号化秘密データ値の前記比較に基づいて、ゼロまたは１つ以上の欠陥のある信頼されるプラットフォーム・モジュールを識別するための手段と、
信頼されるプラットフォーム・モジュールに関連付けられた前記復号化秘密データ値が、前記データ処理システム内の異なる信頼されるプラットフォーム・モジュールに関連付けられた１つまたは複数の復号化秘密データ値と一致しない場合、前記信頼されるプラットフォーム・モジュールを欠陥のあるものと指定するための手段と、
を有する装置。
【請求項１０】
前記データ処理システムの起動時または再起動時に、欠陥のある信頼されるプラットフォーム・モジュールを識別するための前記手段が使用される、請求項９に記載の装置。
【請求項１１】
前記信頼されるプラットフォームの製造時に、暗号化秘密データ値を繰り返し生成するための前記手段が使用される、請求項９に記載の装置。
【請求項１２】
エンティティが前記信頼されるプラットフォームの所有権を取得する時に、暗号化秘密データ値を繰り返し生成するための前記手段が使用される、請求項９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は改良データ処理システムに関し、具体的に言えば、暗号化を使用したデータ・ストレージ保護のための方法および装置に関する。
【背景技術】
【０００２】
ほとんどのデータ処理システムは、保護が必要な機密データおよび機密オペレーションを含む。たとえば、構成情報の完全性は不正な修正から保護される必要があり、パスワード・ファイルなどの他の情報は不正な開示から保護される必要がある。他の例として、データ処理システムはそれ自体を他のデータ処理システムに対して確実に識別できるようにする必要がある。
【０００３】
所与のデータ処理システムのオペレータは、多くの異なるタイプのセキュリティ・メカニズムを採用してデータ処理システムを保護することができる。たとえば、データ処理システム上のオペレーティング・システムは、様々な認証および許可方式などの様々なソフトウェア・メカニズムを提供して機密データを保護することが可能であり、ある特定のハードウェア・デバイスおよびソフトウェア・アプリケーションは、ハードウェア・セキュリティ・トークンおよび生体情報感知デバイスなどのハードウェア・メカニズムに依拠して機密情報を保護することが可能である。
【０００４】
しかしながら、データ処理システムのデータおよびそのオペレーションの完全性は、信頼性の問題に集約される。他のエンティティ（主体）が特定のデータ項目または特定のオペレーションに関してデータ処理システムとの信頼関係を確立するための何らかの方法を有する場合、そのエンティティはデータ処理システムのデータおよびオペレーションを検証または受諾することができる。
【０００５】
したがってデータ処理システムを保護する機能は、データ処理システム内で信頼を生成または定着させる方法によって制限される。データ処理システムの保護の問題に対処するために、企業連合はトラステッド・コンピューティング・グループ（Trusted Computing Group：ＴＣＧ）を結成し、信頼されるコンピューティングに関するオープン・スタンダードおよび仕様を開発および公表した。トラステッド・コンピューティング・グループの仕様によれば、所与のデータ処理システム内の信頼、またはデータ処理システムと他のエンティティとの間の信頼は、信頼されるプラットフォーム・モジュール（Trusted Platform Module：ＴＰＭ）と名付けられたデータ処理システム内のハードウェア構成要素の存在に基づくものである。
【０００６】
信頼されるプラットフォーム・モジュールは、ある一定の暗号化鍵データを物理的に保証し保護する。それぞれの信頼されるプラットフォーム・モジュールは製造時点では固有である。信頼されるプラットフォーム・モジュールが失敗すると、デバイスによって保護された暗号化鍵の素材は使用できなくなる。
【０００７】
現在の信頼されるプラットフォーム・アーキテクチャは、デスクトップ・コンピュータまたはポータブル・コンピュータなどの単一のシステムに結び付けられた、低コストのセキュリティ・モジュールに的を絞ったものである。これら低コストのセキュリティ・モジュールは必ずしも障害を起こしやすい傾向があるものではなく、デスクトップ・コンピュータ内のセキュリティ・モジュールの障害は、一般に高性能サーバ内の同様のセキュリティ・モジュールの障害よりも結果的に低コストかつ労働力を必要としないものであって、許容できない単一箇所の障害を避けるために冗長な機能を備えて製造されることが多い。
【非特許文献１】１９９７年２月、Internet Engineering Task Force（ＩＥＴＦ）のクラウチック等による「ＨＭＡＣ：メッセージ認証のための鍵付きハッシュ」と題するRequest for Comments（ＲＦＣ）２１０４
【発明の開示】
【発明が解決しようとする課題】
【０００８】
したがって、信頼されるプラットフォーム・モジュールの可用性を向上させるためのメカニズムを有することが有利となろう。具体的には、システムの可用性を保証しながら、低コストの信頼されるプラットフォーム・モジュールを使用できるようにすることが有利となろう。
【課題を解決するための手段】
【０００９】
データ処理システム内で複数の信頼されるプラットフォーム・モジュールを冗長な方法で使用できるようにする方法、システム、装置、およびコンピュータ・プログラムである。データ処理システム上で実行されているハイパーバイザは、データ処理システムの信頼されるプラットフォーム内に格納された秘密データを読み取った後、秘密データのコピーを暗号化するようにデータ処理システム内の各信頼されるプラットフォーム・モジュールに要求し、それによって暗号化秘密データ値の複数バージョンが生成される。暗号化秘密データ値は、信頼されるプラットフォーム内の不揮発性メモリに格納される。その後何らかの時点で、暗号化秘密データ値が取り出され、以前の暗号化を実行した信頼されるプラットフォーム・モジュールによって復号化され、その後互いに比較される。復号化された値のいずれかがこの比較オペレーションからある一定の値と一致しない場合、一致しない復号化値についての相当する信頼されるプラットフォーム・モジュールは、以前に暗号化した値を正しく復号化できなかったことから欠陥のあるものと指定される。一定数の複数の信頼されるプラットフォーム・モジュールを確立することで、システムの信頼されるプラットフォーム・モジュールのブート（Bootstrap：起動）に使用される秘密材料を安心して安全に格納するための信頼性機構が提供される。
【００１０】
本発明の特徴と考えられる新しい機能は、添付の特許請求の範囲に記載される。本発明それ自体、他の目的、およびその利点は、添付の図面と共に読む以下の詳細な説明を参照すると最もよく理解されるであろう。
【発明を実施するための最良の形態】
【００１１】
一般に、本発明を備えるかまたはこれに関することが可能なデバイスは、多種多彩なデータ処理技術を含む。したがって本発明をより詳細に説明する前に、背景として分散データ処理システム内のハードウェアおよびソフトウェア構成要素の典型的な編成について説明する。
【００１２】
次に図を参照すると、図１は、それぞれが本発明の一部を実現化可能なデータ処理システムの典型的なネットワークを示す図である。分散データ処理システム１００はネットワーク１０１を含み、これは分散データ処理システム１００内で互いに接続された様々なデバイスとコンピュータとの間に通信リンクを提供するために使用可能な媒体である。ネットワーク１０１は、電線または光ファイバ・ケーブルなどの永久接続、あるいは電話または無線通信を介して行われる一時接続を含むことができる。記載された例では、サーバ１０２およびサーバ１０３がストレージ・ユニット１０４と共にネットワーク１０１に接続される。さらに、クライアント１０５〜１０７もネットワーク１０１に接続される。クライアント１０５〜１０７およびサーバ１０２〜１０３は、メインフレーム、パーソナル・コンピュータ、携帯情報端末（ＰＤＡ）などの様々なコンピューティング・デバイスで表すことができる。分散データ処理システム１００は、追加のサーバ、クライアント、ルータ、他のデバイス、および図示されていないピアツーピア・アーキテクチャを含むことができる。
【００１３】
記載された例では、分散データ処理システム１００は、軽量ディレクトリ・アクセス・プロトコル（Lightweight Directory Access Protocol：ＬＤＡＰ）、伝送制御プロトコル／インターネット・プロトコル（Transport Control Protocol/Internet Protocol：ＴＣＰ／ＩＰ）、ハイパーテキスト転送プロトコル（Hypertext TransportProtocol：ＨＴＴＰ）、無線アプリケーション・プロトコル（WirelessApplication Protocol：ＷＡＰ）、その他などの、様々なプロトコルを使用して互いに通信するネットワークおよびゲートウェイの世界的な集まりを表す、ネットワーク１０１を備えたインターネットを含むことができる。もちろん、分散データ処理システム１００は、たとえばイントラネット、ローカル・エリア・ネットワーク（Local Area Network：ＬＡＮ）、またはワイド・エリア・ネットワーク（Wide Area Network：ＷＡＮ）などの、いくつかの異なるタイプのネットワークを含むこともできる。たとえばサーバ１０２は、クライアント１０９および無線通信リンクを組み込んだネットワーク１１０を直接サポートする。ネットワーク実行可能電話１１１は無線リンク１１２を介してネットワーク１１０に接続し、ＰＤＡ１１３は無線リンク１１４を介してネットワーク１１０に接続する。電話１１１およびＰＤＡ１１３は、ブルートゥース（商標）無線技術などの適切な技術を使用する無線リンク１１５を横切ってそれらの間で直接データを転送し、いわゆるパーソナル・エリア・ネットワーク（Personal Area Networks：ＰＡＮ）またはパーソナル・アドホック・ネットワークを作成することもできる。同様の方法で、ＰＤＡ１１３は無線通信リンク１１６を介してＰＤＡ１０７にデータを転送することができる。
【００１４】
本発明は、様々なハードウェア・プラットフォーム上で実現化可能であり、図１は異種コンピューティング環境の一例として示されたものであって、本発明に関するアーキテクチャ上の制限として示すよう意図されたものではない。
【００１５】
次に図２を参照すると、本発明が実現化可能な、図１に示されたようなデータ処理システムの典型的なコンピュータ・アーキテクチャが示されている。データ処理システム１２０は、内部システム・バス１２３に接続された１つまたは複数の中央処理ユニット（ＣＰＵ）１２２を含み、内部システム・バス１２３は、ランダム・アクセス・メモリ（ＲＡＭ）１２４と、読取り専用メモリ１２６と、プリンタ１３０、ディスク・ユニット１３２、またはオーディオ出力システムなどの図示されていない他のデバイスなどの様々なＩ／Ｏデバイスをサポートする入力／出力アダプタ１２８とを相互に接続する。システム・バス１２３は、通信リンク１３６へのアクセスを提供する通信アダプタ１３４も接続する。ユーザ・インターフェース・アダプタ１４８は、キーボード１４０およびマウス１４２、またはタッチ・スクリーン、スタイラス、マイクロフォン、その他などの図示されていない他のデバイスなどの、様々なユーザ・デバイスを接続する。ディスプレイ・アダプタ１４４は、システム・バス１２３をディスプレイ・デバイス１４６に接続する。
【００１６】
当業者であれば、図２中のハードウェアがシステムの実現化に応じて変わる場合があることを理解されよう。たとえばシステムは、Ｉｎｔｅｌ（登録商標）Ｐｅｎｔｉｕｍ（登録商標）に基づくプロセッサおよびデジタル信号プロセッサ（Digital Signal Processor：ＤＳＰ）などの１つまたは複数のプロセッサと、１つまたは複数タイプの揮発性および不揮発性メモリとを有することができる。図２に記載されたハードウェアに加えて、またはこれらの代わりに、他の周辺デバイスを使用することができる。記載された例は、本発明に関するアーキテクチャ上の制限を示唆することを意味するものではない。
【００１７】
本発明は様々なハードウェア・プラットフォーム上で実現化可能であることに加えて、様々なソフトウェア環境でも実現化可能である。典型的なオペレーティング・システムを使用して、各データ処理システム内でのプログラムの実行を制御することができる。たとえば、１つのデバイスがＵｎｉｘ（登録商標）のオペレーティング・システムを実行する一方で、他のデバイスが単純なＪａｖａ（登録商標）ランタイム環境を含むことができる。代表的なコンピュータ・プラットフォームは、グラフィック・ファイル、ワード・プロセッシング・ファイル、拡張可能マークアップ言語（Extensible Markup Language：ＸＭＬ）、ハイパーテキスト・マークアップ言語（Hypertext Markup Language：ＨＴＭＬ）、ハンドヘルド・デバイス・マークアップ言語（Handheld Device Markup Language：ＨＤＭＬ）、無線マークアップ言語（Wireless Markup Language：ＷＭＬ）、ならびに様々な他のフォーマットおよびタイプのファイルなどの、様々なフォーマットのハイパーテキスト文書にアクセスするための良く知られたソフトウェア・アプリケーションである、ブラウザを含むことができる。
【００１８】
本発明は、図１および図２に関して上記で述べたように、様々なハードウェアおよびソフトウェア・プラットフォームで実現化することができる。しかしながらより具体的に言えば、本発明は信頼されるコンピューティング・プラットフォームを実行可能にすることを対称にしたものである。本発明についてより詳細に説明する前に、本発明のオペレーション効率および他の利点を評価するための、信頼されるコンピューティング・プラットフォームに関する何らかの背景情報が提供されている。本発明は、おそらく１つまたは複数の標準に従った様々な信頼されるコンピューティング・プラットフォームに関して実現化可能であるが、以下に記載する本発明の例は、トラステッド・コンピューティング・グループ（Trusted Computing Group：ＴＣＧ）によって公表されてきた標準および／または仕様からの用語および例を採用しており、これらの例は、本発明の実施形態に対するアーキテクチャ、機能、または定義上の制限を示唆することを意味するものでないことに留意されたい。
【００１９】
次に図３を参照すると、信頼されるプラットフォーム・アーキテクチャのモデルを使用して構築されたデータ処理システム内のいくつかの構成要素を示すブロック図が示されている。信頼されるプラットフォーム・アーキテクチャは、特定の計算環境または特定クラスのデバイス用に実現化可能であり、図３はＴＣＧのＰＣ特有の実現化仕様に従った信頼されるプラットフォーム・アーキテクチャを示している。
【００２０】
システム２００は、そのプラットフォーム２０８上での、オペレーティング・システム２０２、アプリケーション２０４、およびドライバ２０６などのソフトウェア構成要素の実行をサポートする。ソフトウェア構成要素は、図１に示されたネットワーク１０１などのネットワークを介して受信可能であるか、または、たとえばハード・ディスク２１０上に格納することができる。プラットフォーム２０８は、アドオン・カード２１４および、ＣＰＵ２１８およびメモリ２２０などのソフトウェアを実行するための典型的な構成要素を含むマザーボード２１６上で、ソフトウェア構成要素を実行するための電力を電源２１２から受け取るが、マザーボード２１６は複数のＣＰＵを含むことができる。インターフェース２２２はマザーボードをシステム２００内の他のハードウェア構成要素に接続し、ファームウェア２２４はＰＯＳＴ  ＢＩＯＳ（電源オン自己診断テスト基本入出力システム：Power-On Self-Test Basic Input/Output System）２２６を含む。
【００２１】
マザーボード２１６は信頼される構築ブロック（Trusted Building Block：ＴＢＢ）２２８も備え、さらにマザーボード２１６は、ＴＢＢ２２８と製造業者によって物理的または論理的に取り付けおよび供給された他の構成要素と共に、製造業者によって供給される。ＴＢＢ２２８は、測定用信頼コア・ルート（Core Root of Trust for Measurement：ＣＲＴＭ）構成要素２３０、信頼されるプラットフォーム・モジュール（Trusted Platform Module：ＴＰＭ）２３２、ＣＲＴＭとマザーボード２１６との接続、およびＴＰＭとマザーボード２１６との接続の組み合わせを備える。
【００２２】
ＴＰＭ２３２については、図４に関して以下でより詳細に説明する。ＣＲＴＭ２３０は、プラットフォームのリセット時に実行されるプラットフォームの初期設定コードの不変部分であり、プラットフォームの実行はいかなるプラットフォーム・リセット・イベント時にもＣＲＴＭで開始されなければならない。この方法では、プラットフォームにおける信頼はＣＲＴＭおよびＴＰＭの挙動に基づくものであり、すべての測定における信頼はＣＲＴＭの完全性に基づくものである。図３に示された例では、ＢＩＯＳはＢＩＯＳブート・ブロックおよびＰＯＳＴ  ＢＩＯＳ２２６を含むものと想定することが可能であり、これらはそれぞれ互いに無関係に更新可能な独立構成要素であって、製造業者はＢＩＯＳブート・ブロックの更新、修正、および保守を管理しなければならないが、第三者の供給業者がＰＯＳＴ  ＢＩＯＳ構成要素を更新、修正、または保守することも可能である。図３に示された例では、ＣＲＴＭはＢＩＯＳブート・ブロックであると想定することが可能であり、ＰＯＳＴ  ＢＩＯＳは信頼チェーンの測定済み構成要素である。
【００２３】
次に図４を参照すると、ＴＣＧ仕様に従った信頼されるプラットフォーム・モジュールの主要な構成要素の一部を示すブロック図が示されている。信頼されるプラットフォーム・モジュール３００は入力／出力構成要素３０２を備え、これが、適切なプロトコル符号化／復号化オペレーションの実行および適切な構成要素へのメッセージのルーティングによって、通信バス３０４を介した情報の流れを管理する。暗号化コプロセッサ３０６は、信頼されるプラットフォーム・モジュール内で暗号化オペレーションを実行する。鍵生成プログラム３０８は、対称鍵およびＲＳＡ非対称暗号化鍵のペアを作成する。たとえば、１９９７年２月、Internet Engineering Task Force（ＩＥＴＦ）のクラウチック等による「ＨＭＡＣ：メッセージ認証のための鍵付きハッシュ（Keyed-Hashing for Message Authentication）」と題するRequest for Comments（ＲＦＣ）２１０４によれば、ＨＭＡＣエンジン３１０はＨＭＡＣ（メッセージ認証のための鍵付きハッシュ）計算を実行し、これによって２者間で伝送される情報の妥当性を検査するために完全性チェックとして秘密鍵を使用してメッセージ認証コードが算出される。
【００２４】
乱数発生器３１２は、ｎｏｎｃｅ、キー、または他の値などの様々な値の計算用のランダム性のソースとして働く。ＳＨＡ−１エンジン３１４はＳＨＡ−１ハッシュ・アルゴリズムを実現化する。パワー検出器３１６は、プラットフォームのパワー状態と関連して信頼されるプラットフォーム・モジュールのパワー状態を管理する。Ｏｐｔ−ｉｎ構成要素３１８は、持続および揮発性フラグの状態を維持し、信頼されるプラットフォーム・モジュールをイネーブルおよびディスエーブルにできるようにそれらのフラグに関連付けられたセマンティクスを強制する。実行エンジン３２０はプログラム・コードを実行して、信頼されるプラットフォーム・モジュールが入力／出力構成要素３０２を通じて受け取るコマンドを実行する。不揮発性メモリ３２２は信頼されるプラットフォーム・モジュールに関連付けられた持続的なＩＤおよび状態を格納するものであり、この不揮発性メモリは静的データ項目を格納できるが、信頼されるプラットフォーム・モジュール所有者によって許可されたエンティティごとに動的データ項目を格納するために利用することも可能であり、一方、揮発性メモリ３２４は動的データ項目を格納する。
【００２５】
図３および図４に関して説明してきた信頼されるコンピューティング・プラットフォームに関する背景情報を考慮しながら、以下では残りの図面に関して本発明を詳細に説明する。前述のように、典型的な信頼されるプラットフォームは、潜在的に破局的な一時点の障害として、信頼されるプラットフォーム・アーキテクチャ内に信頼されるプラットフォーム・モジュールが存在するように設計されており、これが高性能サーバまたは同様の高価格コンピュータ・デバイスにおいて許容できない挙動となる。本発明は、以下でより詳細に説明されるように、信頼されるプラットフォーム・モジュールに冗長性を与えることによって、この問題に対処する。
【００２６】
次に図５を参照すると、本発明の一実施形態に従った、冗長な信頼されるプラットフォーム・モジュールを含む信頼されるプラットフォーム上のいくつかの構成要素を示すブロック図が示されている。ハイパーバイザ・ランタイム４００は、その中で秘密データ４０４が、システムＴＰＭ機能ユニット４０２の製造時に製造業者によって投入されたか、またはシステムＴＰＭ機能ユニット４０２によって生成された、システムＴＰＭ機能ユニット４０２を含む。不揮発性ＲＡＭ４０６はセキュアなデータストアを提供するものであり、ハイパーバイザ４００に対しては不揮発性ＲＡＭ４０６へのアクセスが物理的にハードウェア制限されており、ハイパーバイザ４００は不揮発性ＲＡＭ４０６を使用して秘密データ４０４の異なる暗号化バージョンを格納する。ハイパーバイザ４００は、ＴＰＭ４０８、ＴＰＭ４１０、ＴＰＭ４１２の機能を呼び出して、暗号化された秘密データ４１４、暗号化された秘密データ４１６、および暗号化された秘密データ４１８を、それぞれ生成する。複数のＴＰＭが冗長的な方法で使用可能であり、以下でより詳細に説明するように、信頼されるプラットフォームは、ハイパーバイザ４００内のＴＰＭ完全性比較ユニット４２０を使用することで冗長性オペレーションを完了するために、最低３つの信頼されるプラットフォーム・モジュールを備える。
【００２７】
次に図６を参照すると、本発明の一実施形態に従った、複数の冗長で物理的な信頼されるプラットフォーム・モジュールを採用するデータ処理システムに関する構成プロセスを示す流れ図が示されている。このプロセスは、データ処理システムの信頼されるプラットフォーム上にあるハイパーバイザが、データ処理システムのブート時に使用されることになる暗号化された秘密データがまだ生成されていないかどうかを検出することによって開始されるものであって、たとえばハイパーバイザが、信頼されるプラットフォーム上の不揮発性ＲＡＭ（ＮＶＲＡＭ）が暗号化された秘密データをまだ格納していないかどうかを判別する（ステップ５０２）。好ましいことには、不揮発性ＲＡＭ内の所定の場所が暗号化された秘密データ用に保持され、ハイパーバイザはそれらの特定の場所で有効なデータをチェックすることができる。秘密データは、信頼されるプラットフォームの製造時に製造業者によって投入されたか、または製造プロセス時または信頼されるプラットフォームの所有権を取得するプロセスなどの何らかの他の時点で、信頼されるプラットフォームによって生成されたものと想定することができる。図６に示されたプロセスは、信頼されるプラットフォームの製造時に発生するか、またはあるエンティティが信頼されるプラットフォームの所有権を取得する際に発生するものとすることができる。
【００２８】
不揮発性ＲＡＭが暗号化された秘密データをまだ保持していないと判別されると、ハイパーバイザは信頼されるプラットフォーム上のそれぞれの信頼されるプラットフォーム・モジュールに対して、秘密データを暗号化するように要求する。ハイパーバイザは秘密データのコピーを取得し（ステップ５０４）、秘密データの暗号化バージョンの生成にまだ使用されていないＴＰＭがあるかどうかを判別して（ステップ５０６）、ＴＰＭがなければプロセスは終了する。すべてのＴＰＭが秘密データの暗号化バージョンをすでに生成したのでなければ、ハイパーバイザは次の未使用のＴＰＭに秘密データのコピーを暗号化するようにとの要求を送信し（ステップ５０８）、その後不揮発性ＲＡＭに格納される（ステップ５１０）。ハイパーバイザは各ＴＰＭを呼び出し、これによってプロセスが終了するまでに、冗長なＴＰＭを介して複数の秘密データの暗号化バージョンが生成される。信頼されるプラットフォームの製造または構成時にこのプロセスを実行することにより、図６に示されたプロセスは、信頼されるプラットフォーム・モジュールが欠陥のあるものになったかどうかを判別するために後で使用可能な、チェックポイント値のセットを作成する。
【００２９】
次に図７を参照すると、本発明の一実施形態に従った、複数の冗長で物理的な信頼されるプラットフォーム・モジュールを採用するデータ処理システムに関するブート・プロセスの一部を示す流れ図が示されている。このプロセスは、たとえば、データ処理システムの起動または再起動時に、信頼されるプラットフォーム上の不揮発性ＲＡＭ内に以前に格納された秘密データの複数の暗号化バージョンを、たとえば図６に記載されたプロセスを使用してハイパーバイザが読み取ったとき（ステップ６０２）に、データ処理システムの信頼されるプラットフォーム上のハイパーバイザを開始することで開始される。ハイパーバイザは、暗号化バージョンを生成したそれぞれのＴＰＭを使用して、それぞれの秘密データの暗号化バージョンを復号化する（ステップ６０４）。
【００３０】
次にハイパーバイザは、すべての復号化された値が互いに等しいか否かを判別するために、復号化された値を互いに比較する（ステップ６０６）。復号化された値が互いにすべて等しい場合、ハイパーバイザはそのブート・プロセスを続行することが可能であり（ステップ６０８）、プロセスは終了する。任意の他の復号化された値に等しい復号化された値がないと判別された場合（ステップ６１０）、ブート・プロセスは停止する（ステップ６１２）か、別の方法として、ブート・プロセスはデータ処理システム上のＴＰＭ機能なしで続行する。
【００３１】
その後プロセスは、復号化された値の間で一定数を充足しているかどうかの判別を試行することによって続行される。言い換えれば、復号化された値が比較され、等しい値は論理的にグループ化されて、等しい値のセットが有効な値のセットの大多数を表すかどうか、すなわち有効な値の５０パーセントを超えているかどうかを判別する。超えている場合は、一定数を充足している。等しい値のセットはあるが、それが有効な値のセットの大多数を表していない場合、一定数を充足していない。代替実施形態では、おそらくはデータ処理システム内のＴＰＭの数に依存した、他の比較アルゴリズムを使用することができる。
【００３２】
したがって、復号化された値の間に一定数の充足があると判別された場合、大多数のＴＰＭと一致する値の生成に失敗したそれぞれのＴＰＭ用にエラー・フラグが設定され（ステップ６１４）、ブート・プロセスを続行することが可能であり（ステップ６１６）、言い換えれば、一定数を充足した値を生成するのに失敗したそれぞれのＴＰＭには、エラー状態にある旨のフラグが立てられる。別の方法として、ＴＰＭを欠陥があるものと指定するための他の方法を使用することもできる。
【００３３】
たとえば、再度図５を参照すると、信頼されるプラットフォームの例には最低３つのＴＰＭが示されている。３つのＴＰＭを備えたシステムに対して図７に示されたプロセスを使用すると、以前に暗号化された秘密データに関して２つのＴＰＭが２つの一致する復号化された値を生成することができる場合は、ブート・プロセスを続行することが可能であり、言い換えれば、少なくとも２つの一致する復号化された値により、一定数の充足があると判別される。
【００３４】
次に図８を参照すると、本発明の一実施形態に従った、複数の冗長で物理的な信頼されるプラットフォーム・モジュールを採用するデータ処理システムに、新しい信頼されるプラットフォーム・モジュールを組み込むためのプロセスを示す流れ図が示されている。図８に示されたプロセスは、たとえば図７に示されたプロセスを使用し、おそらくはその後、システム管理者が発見および再検討するためにそのイベントをログ記録しておくことによって、失敗したＴＰＭは以前に検出されてフラグが立てられているものと想定する。その後、失敗したＴＰＭは物理的に除去され、新しいＴＰＭに置き換えられることになる。
【００３５】
プロセスは、その後の何らかの時点でハイパーバイザが新しいＴＰＭを検出すると開始される（ステップ７０２）。必要であれば、ハイパーバイザは、置き換えられたＴＰＭから対応するデータを保持するために予約されていた、信頼されるプラットフォーム上の不揮発性ＲＡＭ内の適切な場所を消去する（ステップ７０４）。ハイパーバイザは秘密データのコピーを取得し（ステップ７０６）、秘密データのコピーを暗号化する旨の要求を新しいＴＰＭに送信し（ステップ７０８）、その後このコピーは不揮発性ＲＡＭ内の所定の場所に格納されるため、結果として不揮発性ＲＡＭは、図７に関して上記で述べた方法でデータ処理システムをブートする際に、ＴＰＭ完全性チェック・オペレーションを完了するために必要なすべてのデータを含む。
【００３６】
上記で述べた詳細な説明に鑑みて、本発明の利点は明らかであろう。そのそれぞれがデータ処理システム内の信頼されるプラットフォーム・モジュールに対応する暗号化された秘密データの複数のコピーを不揮発性ＲＡＭ内に維持することによって、データ処理システム内のハイパーバイザは、暗号化された秘密データのコピーを復号化すること、および復号化された値の間に定足数を確立するための試みにおいて復号化された値を比較することにより、１つまたは複数のＴＰＭの障害を検出することができる。復号化された値の間に一定数の充足が見つかった場合、データ処理システムは、そうでなければ典型的な従来のシステムでは失敗したＴＰＭによって引き起こされる可能性のあったデータ処理システム全体におよぶ破局的な障害を被ることなしに、動作を続行することができる。
【００３７】
以上、本発明について、完全に機能しているデータ処理システムとの関連において説明してきたが、当業者であれば本発明のプロセスが、配布の実施に実際に使用される特定タイプの信号搬送媒体に関わりなく、コンピュータ読取り可能媒体における命令の形および様々な他の形で配布可能なことを理解されるであろうということに留意されたい。コンピュータ読取り可能媒体の例には、ＥＰＲＯＭ、ＲＯＭ、テープ、フロッピィ・ディスク、ハード・ディスク・ドライブ、ＲＡＭ、およびＣＤ−ＲＯＭなどの記録媒体が含まれる。
【００３８】
方法は、通常、望ましい結果につながる自己矛盾のない一連のステップであると考えられる。これらのステップは、物理量の物理的操作が必要である。通常、これらの量は格納、転送、組み合わせ、比較、およびその他の操作が可能な電気または磁気信号の形を取るが、必ずしもそうである必要はない。主として一般的に使用されるという理由で、時にはこれらの信号をビット、値、パラメータ、項目、要素、オブジェクト、記号、文字、項、数、またはその他と呼ぶことが便利な場合がある。しかしながら、これらの用語および同様の用語はすべて適切な物理量に関連付けられるものであり、これらの量に適用される単なる便利なラベルであることに留意されたい。
【００３９】
以上、本発明について例示の目的で提示してきたが、開示された実施形態を網羅的であるかまたはこれらに限定されるものであることを意図するものではない。当業者であれば、多くの修正および変形形態が明らかとなろう。これらの実施形態は、本発明の諸原理およびその実際の応用例を説明するため、および様々な実施形態を他の企図された用途に好適であるような様々な修正と共に実現化するために他の当業者が本発明を理解できるようにするために、選択されたものである。
【図面の簡単な説明】
【００４０】
【図１】それぞれが本発明を実現化可能なデータ処理システムの典型的なネットワークを示す図である。
【図２】本発明が実現化可能なデータ処理システム内で使用することのできる、典型的なコンピュータ・アーキテクチャを示す図である。
【図３】典型的な信頼されるプラットフォーム・アーキテクチャの一例を示すブロック図である。
【図４】典型的な信頼されるプラットフォーム・モジュールの主要な構成要素の一部を示すブロック図である。
【図５】本発明の一実施形態に従った、冗長な信頼されるプラットフォーム・モジュールを含む信頼されるプラットフォーム上のいくつかの構成要素を示すブロック図である。
【図６】本発明の一実施形態に従った、複数の冗長で物理的な信頼されるプラットフォーム・モジュールを採用するシステムに関する構成プロセスを示す流れ図である。
【図７】本発明の一実施形態に従った、複数の冗長で物理的な信頼されるプラットフォーム・モジュールを採用するデータ処理システムに関するブート・プロセスを示す流れ図である。
【図８】本発明の一実施形態に従った、複数の冗長で物理的な信頼されるプラットフォーム・モジュールを採用するデータ処理システムに、新しい信頼されるプラットフォーム・モジュールを組み込むためのプロセスを示す流れ図である。
【符号の説明】
【００４１】
４００    ハイパーバイザ・ランタイム
４０２    システムＴＰＭ機能ユニット
４０４    秘密データ
４０６    不揮発性ＲＡＭ
４０８    ＴＰＭ  Ａ
４１０    ＴＰＭ  Ｂ
４１２    ＴＰＭ  Ｃ
４１４    暗号化された秘密データ（バージョンＡ）
４１６    暗号化された秘密データ（バージョンＢ）
４１８    暗号化された秘密データ（バージョンＣ）
４２０    ＴＰＭ完全性比較ユニット
【図１】
0004843246.tif 000002
【図２】
0004843246.tif 000003
【図３】
0004843246.tif 000004
【図４】
0004843246.tif 000005
【図５】
0004843246.tif 000006
【図６】
0004843246.tif 000007
【図７】
0004843246.tif 000008
【図８】
0004843246.tif 000009