(57)【要約】  この方法および関連する装置は、仮想トラステッドプラットフォームモジュール（ＴＰＭ）を提供する。ある実施例では、仮想ＴＰＭサービスは、物理ＴＰＭを含む処理システムにおいて使用される仮想ＴＰＭを作成する。仮想ＴＰＭサービスは、物理ＴＰＭの仮想ＴＰＭに対する鍵を格納しうる。そして、仮想ＴＰＭサービスは、エミュレートされた物理ＴＰＭの機能を提供するために、仮想ＴＰＭを使用しうる。一実施例では、仮想ＴＰＭサービスは、処理システムの仮想マシンに対して物理ＴＰＭをエミュレートするために、仮想ＴＰＭを使用しうる。他の実施例についても説明され、特許請求される。
2008500651.tif 000002
【特許請求の範囲】
【請求項１】
物理ＴＰＭを含む処理システムで使用するために仮想トラステッドプラットフォームモジュール（ＴＰＭ）を作成することと、
前記仮想ＴＰＭの鍵を前記物理ＴＰＭ内に格納することと、
エミュレートされた物理ＴＰＭの機能を提供するために前記仮想ＴＰＭを使用することと
を備える方法。  
【請求項２】
前記仮想ＴＰＭ１２０Ａのメモリ空間内に仮想プラットフォーム構成レジスタ（ＰＣＲ）を作成することと、
前記仮想ＰＣＲを使用して標準ＰＣＲの処理をエミュレートすることと
を更に備える請求項１に記載の方法。
【請求項３】
エミュレートされた物理ＴＰＭの機能を提供するために前記仮想ＴＰＭを使用する前記処理は、
前記処理システム内の仮想マシンに対してハードウェアＴＰＭをエミュレートするために前記仮想ＴＰＭを使用すること
を備える請求項１に記載の方法。
【請求項４】
前記仮想ＴＰＭは第１の仮想ＴＰＭを備え、
前記仮想マシンは第１の仮想マシンを備え、
前記方法は、更に、
前記処理システムにおいて第２の仮想ＴＰＭを作成することと、
前記第２の仮想ＴＰＭの鍵を前記物理ＴＰＭに格納することと、
前記第２の仮想ＴＰＭを使用して前記第２の仮想マシンに対して物理ＴＰＭをエミュレートすることと
を備える請求項３に記載の方法。
【請求項５】
前記仮想ＴＰＭの鍵を前記物理ＴＰＭに格納する前記処理は、前記仮想ＴＰＭの認定鍵（ＥＫ）および前記仮想ＴＰＭのストレージルート鍵（ＳＲＫ）を含むグループから選択される、少なくとも１つの鍵を格納することを備える請求項１に記載の方法。
【請求項６】
前記仮想ＴＰＭに対して認定鍵（ＥＫ）を生成することを更に備え、前記ＥＫは、前記仮想マシンに対する環境に結合される請求項１に記載の方法。
【請求項７】
前記ＥＫに対する認証情報を認証局に伝送することと、
前記認証局から認定証明書を取得することと
を更に備える請求項６に記載の方法。
【請求項８】
前記ＥＫに対する認証情報を仮想認証局（ＣＡ）に伝送することと、
前記仮想ＣＡから前記仮想ＴＰＭに対する認定証明書を取得することと、
前記認定証明書をプライバシーＣＡに伝送することと、
前記プライバシーＣＡから識別証明書を取得することと
を更に備える請求項６に記載の方法。
【請求項９】
エミュレートされた物理ＴＰＭの機能を提供するために前記仮想ＴＰＭを使用する前記処理は、
仮想マシンに関連付けられた仮想証明識別鍵（ＡＩＫ）に対する識別証明書をプライバシー認証局（ＣＡ）から取得することと、
前記識別証明書をチャレンジャーに伝送することと
を備える請求項１に記載の方法。
【請求項１０】
処理システム内の仮想マシンに対して、前記処理システム内の物理ＴＰＭに対するＥＫの少なくとも１部に基づく仮想認定鍵（ＥＫ）を生成することと
前記仮想ＥＫを前記物理ＴＰＭに格納することと、
前記仮想マシンに対して仮想証明識別鍵を生成することと、
前記仮想ＡＩＫの証明書を取得するために、前記仮想ＥＫの認定証明書を使用することと
を備える方法。
【請求項１１】
前記ＥＫの認定証明書をサードパーティに伝送することと、
前記仮想ＥＫに対する認定証明書を前記サードパーティから受け取ることと
を更に備える請求項１０に記載の方法。
【請求項１２】
前記サードパーティは、仮想認証局（ＣＡ）を含む請求項１１に記載の方法。
【請求項１３】
マシンアクセス可能な媒体と、
前記マシンアクセス可能な媒体にエンコードされた、ハードウェアＴＰＭを有する処理システムによって実行されたときに処理システムに処理を実行させる命令群と
を備え、
前記処理は、
仮想トラステッドプラットフォームモジュール（ＴＰＭ）を作成することと、
前記仮想ＴＰＭに対する鍵を前記ハードウェアＴＰＭ内に格納することと、
エミュレートされた物理ＴＰＭの機能を提供するために前記仮想ＴＰＭを使用することと
を含む装置。
【請求項１４】
前記仮想ＴＰＭは第１の仮想ＴＰＭを備え、
前記命令群によって実行される前記処理は、更に、
前記処理システム内に第２の仮想ＴＰＭを作成することと、
前記第２の仮想ＴＰＭに対する鍵を前記ハードウェアＴＰＭに格納することと
を備える請求項１３に記載の装置。
【請求項１５】
エミュレートされた物理ＴＰＭの機能を提供するために前記仮想ＴＰＭを使用する前記処理は、
仮想証明識別鍵（ＡＩＫ）に対する識別証明書をプライバシー認証局（ＣＡ）から取得することと、
前記識別証明書をチャレンジャーに伝送することと
を備える請求項１３に記載の装置。
【請求項１６】
エミュレートされた物理ＴＰＭの機能を提供するために前記仮想ＴＰＭを使用する前記処理は、
前記処理システムの仮想マシンに対してハードウェアＴＰＭをエミュレートするために、前記仮想ＴＰＭを使用すること
を備える請求項１３に記載の装置。
【請求項１７】
プロセッサと、
前記プロセッサと通信可能になるように接続されたトラステッドプラットフォームモジュール（ＴＰＭ）と、
前記ＴＰＭに格納された認定鍵（ＥＫ）と、
前記プロセッサ上で実行される仮想マシン（ＶＭ）と、
前記ＶＭに関連付けられた仮想ＴＰＭと、
前記ＴＰＭに格納された前記ＥＫに基づく、前記ＶＭに関連付けられた仮想認定鍵（ＥＫ）と
を備える処理システム。
【請求項１８】
前記プロセッサ上で実行される仮想ＴＰＭサービスを更に備え、
前記仮想ＴＰＭサービスは、前記ＶＭに対して前記仮想ＴＰＭを作成するためにＴＰＭを使用する
請求項１７に記載の処理システム。
【請求項１９】
プロセッサと、
前記プロセッサと通信可能になるように接続された物理トラステッドプラットフォームモジュール（ＴＰＭ）と、
前記プロセッサと通信可能になるように接続されたマシンアクセス可能な媒体と、
仮想ＴＰＭを実装するために前記マシンアクセス可能な媒体にエンコードされた命令群と
を備え、
前記仮想ＴＰＭサービスが実行する処理は、
仮想トラステッドプラットフォームモジュール（ＴＰＭ）を作成することと、
前記仮想ＴＰＭに対する鍵を前記物理ＴＰＭに格納することと、
エミュレートされた物理ＴＰＭの機能を提供するために前記仮想ＴＰＭを使用することと
を含む処理システム。
【請求項２０】
前記処理システムは、１つ以上のサーバ内に複数のプロセッサを備え、
エミュレートされた物理ＴＰＭの機能を提供するために前記仮想ＴＰＭを使用する前記処理は、
前記処理システムの第１のパーティションに第１の仮想ＴＰＭを提供することと、
前記処理システムの第２のパーティションに第２の仮想ＴＰＭを提供することと
を備える請求項１９に記載の装置。
【請求項２１】
エミュレートされた物理ＴＰＭの機能を提供するために前記仮想ＴＰＭを使用する前記処理は、
１つ以上のサービスコプロセッサに論理ＴＰＭを提供すること
を備える請求項１９に記載の装置。
【請求項２２】
トラステッドプラットフォームモジュール（ＴＰＭ）と、
前記ＴＰＭに格納された認定鍵と、
仮想マシン（ＶＭ）に対して、前記ＥＫの少なくとも一部分に基づく仮想ＥＫを生成する仮想ＴＰＭサービスと
を備える装置。
【請求項２３】
前記仮想ＥＫは前記ＴＰＭに格納される請求項２２に記載の装置。
【請求項２４】
前記仮想ＴＰＭサービスによって生成される、前記仮想マシンに対する仮想証明識別鍵（ＡＩＫ）と、
前記仮想ＥＫに対する証明書と、
前記仮想ＡＩＫに対する証明書と
を更に備える請求項２２に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、概して、データ処理分野に関する。本開示は、特に、トラステッドプラットフォームモジュールのセキュアな仮想化を提供する方法および関連する装置に関する。
【背景技術】
【０００２】
従来の処理システムは、中央演算処理装置（ＣＰＵ）およびランダムアクセスメモリ（ＲＡＭ）のようなハードウェアリソースと、オペレーティングシステム（ＯＳ）および１つ以上のエンドユーザプログラムまたはアプリケーションのようなソフトウェアリソースとを含みうる。アプリケーションは、概して、特定のＯＳ上で動作するように開発される。典型的な従来のコンピュータシステムは、開始されると、エンドユーザプログラムまたはアプリケーションをロードする前にＯＳをロードする。ＯＳは、概して、処理システム内のソフトウェアアプリケーションとハードウェア間の媒介として動作する。
【０００３】
ＲＡＭおよび１つ以上のＣＰＵに加えて、処理システムは、トラステッドプラットフォームモジュール（ＴＰＭ）を含んでもよい。ＴＰＭは、処理システム内に存在し、処理システムのセキュリティを向上させる多様な機能およびサービスを提供する。例えば、ＴＰＭは、データを保護するため、および、システム構成を証明するために使用されうる。ＴＰＭのサブコンポーネントは、実行エンジンと、セキュア不揮発（ＮＶ）メモリまたはストレージとを含んでもよい。セキュアＮＶメモリは、暗号化鍵のような機密情報を格納するために使用され、実行エンジンは、ＴＰＭによって実装されるセキュリティポリシーに従って機密情報を保護する。
【０００４】
ＴＰＭは、設計原理、ＴＰＭの構造、およびＴＰＭコマンドなどの部分を含む、２００３年１０月２日付のＴｒｕｓｔｅｄ  Ｃｏｍｐｕｔｉｎｇ  Ｇｒｏｕｐ（ＴＣＧ）ＴＰＭ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｖｅｒｓｉｏｎ  １．２（以下、「ＴＰＭ仕様」と称する）のような仕様に従って実装されうる。ＴＰＭ仕様は、ＴＣＧによって発表され、インターネット（アドレス：ｗｗｗ．ｔｒｕｓｔｅｄｃｏｍｐｕｔｉｎｇｇｒｏｕｐ．ｏｒｇ／ｈｏｍｅ）から入手可能である。
【０００５】
一般的に、ＴＣＧ準拠のＴＰＭは、プラットフォームの性質に基づき、プラットフォームの同一性および／または整合性の証明のような、セキュリティサービスを提供する。ＴＰＭによって概して検討されるプラットフォームの性質は、１つまたは複数のプロセッサおよびチップセットのようなプラットフォームのハードウェアコンポーネントと、ファームウェアおよびＯＳのようなプラットフォームのソフトウェアコンポーネントとを含む。ＴＰＭは、また、ソフトウェア処理の監査およびロギングと、プラットフォームのブート整合性、ファイルの整合性、およびソフトウェアライセンスの検証をサポートしうる。従って、ＴＰＭは、プラットフォームに対して、信頼のルートを提供すると言われる。それに応じて、サードパーティは、要求側システムによるＴＰＭベースのプラットフォーム証明の提供を必要とする、セキュリティポリシーを実装しうる。例えば、サードパーティは、クライアントシステムからの正当なＴＰＭベースのプラットフォーム証明を伴わない限り、クライアントからの要求を拒否するように、サーバを構成しうる。
【０００６】
しかしながら、従来の処理システムがＴＰＭを使用する場合、処理システムが同時にサポートしうるソフトウェア環境は、１つのみである。
【０００７】
最近、インテル社は、単一の処理システム内に複数の独立したソフトウェア環境を提供する技術の開発を開始した。例えば、インテル社によって開発された技術は、各ＯＳが実質的に当該ＯＳ専用の物理マシンにおいて動作するかのように、同一マシン上で複数のＯＳが同時に実行することを可能にする形で、処理システムのハードウェアリソースをパーティションおよび管理する機能を含む。そのような処理システムにおいては、各ＯＳは、実質的に独立したソフトウェア環境内で動作しうる。そのような独立した環境は、パーティションまたは仮想マシン（ＶＭ）と称されうる。
【０００８】
本発明の特徴および効果は、添付の特許請求の範囲、以下の１つ以上の実施例に関する詳細な説明、および対応する図から明らかになるであろう。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施例に関する特定の態様が実装されうる、適切なデータ処理環境を示すブロック図である。
【００１０】
【図２】本発明の実施例による、適切な仮想マシンアーキテクチャを示すブロック図である。
【００１１】
【図３】本発明の一実施例による、仮想ＴＰＭを提供する処理を示すフローチャートである。
【００１２】
【図４】本発明の一実施例による、仮想ＴＰＭを使用する処理を示すフローチャートである。
【発明を実施するための最良の形態】
【００１３】
仮想ＴＰＭ（ｖＴＰＭ）は、ＴＰＭのような機能を提供する論理デバイスである。本開示は、仮想ＴＰＭを提供するためのシステム、方法、および装置に関する１つ以上の実施例を説明する。
【００１４】
図１は、本発明の実施例に関する特定の態様が実装されうる、適切なデータ処理環境１２を示すブロック図である。データ処理環境１２は、１つ以上のシステムバス２４、または、他の通信経路または媒体を介して、集合的に種々の他のコンポーネントに接続された、１つ以上のプロセッサまたは中央演算処理装置（ＣＰＵ）２２を含む、処理システム２０を有する。
【００１５】
本願明細書で使用される「処理システム」および「データ処理システム」は、概して、単一のマシン、または、集合的に接続されて動作するマシンまたはデバイスを含む。典型的な処理システムは、分散コンピューティングシステム、スーパーコンピュータ、高性能コンピュータシステム、コンピュータクラスタ、メインフレームコンピュータ、ミニコンピュータ、クライアント−サーバシステム、パーソナルコンピュータ、ワークステーション、サーバ、ポータブルコンピュータ、ラップトップコンピュータ、タブレット、電話、パーソナルデジタルアシスタント（ＰＤＡ）、携帯端末、音声および／またはビデオデバイスのような娯楽装置、および、情報を処理または伝送する他の装置を含むが、これらに限定されない。
【００１６】
処理システム２０は、少なくとも部分的に、キーボード、マウス、などのような従来の入力装置からの入力によって、および／または、他のマシン、仮想現実（ＶＲ）環境との相互作用、生物識別フィードバック、または、他の入力ソースまたは信号から受信された命令によって制御されうる。処理システム２０は、ネットワークコントローラ、モデム、または他の通信接続などを介して、１つ以上のリモートデータ処理システム７６および７８への１つ以上の接続を使用しうる。処理システムは、ローカルエリアネットワーク（ＬＡＮ）、ワイドエリアネットワーク（ＷＡＮ）、イントラネット、インターネットなどのような、物理および／または論理ネットワーク８０によって、相互接続されうる。ネットワーク８０を含む通信は、有線および／または無線の短距離または長距離搬送波、および、無線周波（ＲＦ）、衛星、マイクロ波、電気電子技術者協会（ＩＥＥＥ）８０２．１１、Ｂｌｕｅｔｏｏｔｈ、光、赤外線、ケーブル、レーザーなどのようなプロトコルを使用することができる。
【００１７】
処理システム２０内において、プロセッサ２２は、ランダムアクセスメモリ（ＲＡＭ）２６、リードオンリーメモリ（ＲＯＭ）のような１つ以上の揮発性または不揮発性データストレージデバイス、ｉｎｔｅｇｒａｔｅｄ  ｄｒｉｖｅ  ｅｌｅｃｔｒｏｎｉｃｓ（ＩＤＥ）ハードディスクドライブのような大容量ストレージデバイス、および／または、フロッピーディスク、光ストレージ、テープ、フラッシュメモリ、メモリスティック、デジタルビデオディスク、ｂｉｏｌｏｇｉｃａｌ  ｓｔｏｒａｇｅなどのような他のデバイスまたは媒体に、集合的に接続されうる。本開示の目的のために、「ＲＯＭ」は、概して、消去可能ＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）、フラッシュＲＯＭ、フラッシュメモリなどのような、不揮発性メモリデバイスを指すために使用されうる。プロセッサ２２は、また、ビデオコントローラ、ｓｍａｌｌ  ｃｏｍｐｕｔｅｒ  ｓｙｓｔｅｍ  ｉｎｔｅｒｆａｃｅ（ＳＣＳＩ）コントローラ、ネットワークコントローラ、ユニバーサルシリアルバス（ＵＳＢ）コントローラ、キーボードおよびマウスのような入力デバイスなどの、追加のコンポーネントに集合的に接続されうる。処理システム２０は、また、多様なシステムコンポーネントと通信可能となるように接続することを目的として、メモリコントローラハブ、入出力（Ｉ／Ｏ）コントローラハブ、ＰＣＩルートブリッジなどのような、１つ以上のブリッジまたはハブ２７を含んでもよい。
【００１８】
例えばネットワークコントローラのような、いくつかのコンポーネントは、ＰＣＩバスと通信するためのＰＣＩコネクタのようなインタフェースを有する、アダプタカードとして実装されうる。一実施例では、１つ以上のデバイスは、プログラム可能又はプログラム不可能な論理デバイス、または、アレイ、特定用途向け集積回路（ＡＳＩＣ）、組込みコンピュータ、スマートカードなどのコンポーネントを用いて、組込みコントローラとして実装されうる。
【００１９】
図に示されるように、処理システム２０は、また、プロセッサ２４に通信可能となるように接続されたＴＰＭ３０を含む。ＴＰＭ３０は、また、物理ＴＰＭまたはハードウェアＴＰＭ（ｈｗＴＰＭ）３０と称されうる。一実施例では、ＴＰＭ３０は、処理システム２０のシステムマザーボードまたはバックプレーン上に存在する、組込みデバイスとして実装される。ＴＰＭ３０は、揮発性プラットフォーム構成レジスタ（ＰＣＲ）３２および認証セッション、永続データ整合性レジスタ（ＤＩＲ）３６、認証ダイジェスト、および、一般使用の持続的ストレージを含む、いくつかのストレージ機能を有する。これらの機能のそれぞれは、対応するメモリ内のデータ構造を有してもよい。
【００２０】
本発明は、マシンによってアクセスされた場合に、マシンにタスクを実行させる、または、抽象データタイプまたは低レベルハードウェアコンテキストを定義させる、命令、関数、手続、データ構造、アプリケーションプログラムなどを含む、関連データを参照して説明されうる。データは、揮発性および／または不揮発性データストレージ内に格納されうる。
【００２１】
例えば、ＲＡＭ２６は、ＴＰＭのセキュアな仮想化を提供するための、１つ以上の命令セットを含んでもよい。例示される実施例では、これらの命令群は、仮想マシンモニタ（ＶＭＭ）１０６内に部分的にまたは完全に存在しうる、仮想ＴＰＭサービス１０４を実装しうる（図２を参照）。処理システム２０は、処理システム２０内の１つ以上の仮想マシンをサポートすることを目的として、ブート時にＶＭＭ１０６をＲＡＭ２６にロードしうる。処理システム２０は、ＶＭＭ１０６を実装する命令群をＲＯＭ、および／または、例えば１つ以上のローカルまたはリモートの大容量ストレージデバイスからロードしうる。ＴＰＭのセキュアな仮想化をサポートするために追加の命令群が使用される場合、これらの命令群も、ＲＯＭ、および／または、例えば１つ以上のローカルまたはリモートの大容量ストレージデバイスからロードされうる。
【００２２】
図２は、処理システム２０内の、ＶＭＭ１０６を含む仮想マシンアーキテクチャの例を示すブロック図である。その最も低いレベルは、ＴＰＭ３０、および、プロセッサ２４、ハブ２７（集合的にプロセッサおよびチップセット２３として示される）などの他のハードウェアコンポーネントである。動作中には、処理システム２０は、また、マイクロカーネル１００およびサービスＯＳ１０２のような、ソフトウェアまたはファームウェアコンポーネントの実行により実装される、ＶＭＭ１０６を含む。マイクロカーネル１００は、命令スケジュールなどのようなシステム管理タスクを目的とした、命令群の小規模な中核を含んでもよい。サービスＯＳ１０２は、仮想マシンを作成および管理することを目的とした、デバイスドライバおよび環境仮想化ソフトウェアを含んでもよい。
【００２３】
例示される実施例では、ＶＭＭ１０６は、また、ｖＴＰＭを作成および管理するための、仮想ＴＰＭサービス１０４を含む。仮想ＴＰＭサービス１０４は、また、それぞれのｖＴＰＭへのアクセスを有する仮想マシンを提供しうる。例示される実施例では仮想ＴＰＭサービス１０４のようなソフトウェアモジュールはＶＭＭ１０６内に存在するが、代替の実施例では、これらのモジュールは、ファームウェアまたは他の保護された環境に存在してもよい。
【００２４】
仮想ＴＰＭサービスは、多様なＶＭＭアーキテクチャに対して提供されうる。いくつかの実施例では、仮想ＴＰＭサービスをＶＭＭに組み込む必要は無い。更に、いくつかの実施例では、仮想ＴＰＭサービスは、ＶＭＭの一部でなくてもよい。
【００２５】
例示される実施例では、仮想ＴＰＭサービス１０４は、保護されたホストメモリ内に存在する。例えば、処理システム２０は、ＴＰＭサービス１０４をハードウェアによって保護されたメモリの隔離エリアにロードして実行することを目的として、米国特許番号６５０７９０４、６６３３９６３、および６６７８８２５に記載される技術を使用しうる。例示される実施例では、保護されたメモリは、ソフトウェア／命令群が干渉または参照することなく実行できることを保証する。代替の実施例では、保護されたメモリを提供することを目的として、他の技術が使用されうる。例えば、環境は、保護されたメモリを提供するシステム管理モード（ＳＭＭ）を含んでもよい、または、改変防止ソフトウェアコンパイラを用いて保護された実行環境が作成されてもよい。他のコンポーネント（例：ＶＭＭ１０６、マイクロカーネル１００、仮想ＴＰＭ１２０Ａおよび１２０Ｂなど）は、また、保護されたメモリに存在しうる。
【００２６】
例示される実施例では、ＶＭＭ１０６は、それぞれが自身の独立したゲストＯＳ、および、自身の独立したトラステッドソフトウェアスタックまたはＴＣＧソフトウェアスタック（ＴＳＳ）１０８Ａおよび１０８Ｂを実行する、仮想マシン１１０Ａおよび１１０Ｂをサポートする。例示される実施例では、ＴＳＳ１０８Ａおよび１０８Ｂは、ＴＣＧ標準に準拠する。
【００２７】
以下において詳細に説明されるように、仮想ＴＰＭサービス１０４は、仮想マシン１１０Ａおよび１１０Ｂに対してそれぞれ独立した仮想ＴＰＭ１２０Ａおよび１２０Ｂを提供することを目的として、ＴＰＭ３０を使用しうる。
【００２８】
図２の太線矢印は、仮想化イベント（ＶＥ）を表す。例えば、左上の矢印は、ＶＭ１１０ＡからサービスＯＳ１０２への制御の移行を含むＶＥを表す。右上の矢印は、ＶＭ１１０ＡがＴＰＭへのアクセスを試みた場合にトリガーされるＶＥを表す。図に示されるように、仮想ＴＰＭサービス１０４は、一番下の矢印が示すようにｖＴＰＭ１２０Ａを参照することによってイベントを処理することを目的として、ＶＥをインターセプトする。例示される実施例では、ＶＭ１１０ＡはｖＴＰＭ１２０Ａ以外のＴＰＭを認識しない可能性があるが、仮想ＴＰＭサービス１０４は、ｖＴＰＭ１２０Ａをサポートすることを目的として、ｈｗＴＰＭ３０を使用しうる。
【００２９】
例示される実施例では、各ｖＴＰＭは、認定鍵（ＥＫ）、ストレージルート鍵（ＳＲＫ）、認定証明書（ＥＫ証明書）、ユーザ鍵階層、プラットフォーム構成レジスタ（ＰＣＲ）、単調カウンタ、内部永続ストレージ、データ整合性レジスタ（ＤＩＲ）などを含む、自身のＴＰＭ構造を有する。再び図１を参照すると、右下の凡例によって示されるように、ストレージ鍵は背景無地の楕円、証明アイデンティティ鍵は背景が水平線の楕円、そして署名鍵は背景がドットパターンの楕円で示される。更に、太字の楕円は、ＴＰＭ３０のＰＣＲ３２に関連付けられた鍵を示す。鍵間の線は、鍵間の親子関係を示す。例えば、これらの線は、ＳＲＫ５０がＴＲＭ３０内の特定のハードウェア鍵と、各ｖＴＰＭ内の特定の仮想鍵とに対して親鍵であることを示す。証明書は、平行四辺形で表される。
【００３０】
ｖＴＰＭ内の仮想鍵、および、他の構造またはオブジェクトは、ハードウェアＴＰＭ鍵またはオブジェクトと同一の構造を有しうるが、仮想ＴＰＭ内の仮想オブジェクトは、ＥＫ５２、ＳＲＫ５０、およびＰＣＲ３２のようなＴＰＭ３０内の標準オブジェクトへの単なる参照ではない。以下において詳細に説明されるように、各仮想ＴＰＭは、仮想ＥＫ（ｖＥＫ）６４、仮想ＳＲＫ（ｖＳＲＫ）６６、仮想ＰＣＲ（ｖＰＣＲ）９２、および仮想ＤＩＲ（ｖＤＩＲ）９４のような、自身の独立したオブジェクトを取得する。これらの仮想オブジェクトは、ハードウェアＴＰＭのオブジェクトに基づくまたは由来しうる。例えば、例示される実施例では、仮想ＳＲＫおよび仮想ＥＫは、ハードウェアＳＲＫの子である。または、ネストされたｖＴＰＭの場合、仮想ＳＲＫは、最終的にはハードウェアＳＲＫに基づく。ｖＴＰＭ鍵がｖＳＲＫにルートされることを可能にすることによって、このモデルはｖＴＰＭのネストを可能にする。
【００３１】
ｖＥＫ６４、ｖＳＲＫ６６、およびｖＰＣＲ９２のような仮想ＴＰＭオブジェクトは、仮想署名鍵（ｖＳｉｇ）６８、仮想ＡＩＫ（ｖＡＩＫ）７０、および仮想ストレージ／暗号化鍵（ｖＥｎｃ）７２のようなｖＴＰＭ１２０Ａ内のさらなる仮想オブジェクトの基礎として、それぞれ動作する。例示される実施例では、各ｖＴＰＭは、ハードウェアＴＰＭ（ｈｗＴＰＭ）によって提供される全ての機能を、同一のアプリケーションプログラムインタフェース（ＡＰＩ）で提供する。例えば、ｖＴＰＭ１２０Ａは、自身のｖＤＩＲ９４、ｖＰＣＲ９２、ｖＡＩＫ７０などを含んでもよい。結果的に、各ＶＭのゲストＯＳは、対応するｖＴＰＭがｈｗＴＰＭでないことを全く認識しなくてもよい。従って、ＶＭは、レガシーＯＳコードを使用しうる。更に、例示される実施例によると、従来のｈｗＴＰＭを有する処理システムは、ｈｗＴＰＭへの変更を必要とすることなく、ｖＴＰＭを提供するように構成されうる。
【００３２】
ｖＰＣＲ９２のような仮想ＰＣＲは、ｈｗＴＰＭのリソース制約を有さないが、設定可能な数の使用可能なＰＣＲを有することができる。例示される実施例では、ｖＰＣＲ９２は、ｖＴＰＭ１２０Ａのメモリ空間に格納され、ｖＴＰＭ１２０Ａは、ｖＰＣＲ９２上の標準ＰＣＲ処理をエミュレートする。
【００３３】
例示される実施例では、ｖＴＰＭ１２０Ａは、シミュレートされた永続的な単調カウンタを提供することを目的として、ソフトウェアを使用する。カウンタの数は、実質的に無制限でありうる。例示される実施例では、ｖＴＰＭ１２０Ａは、少なくとも、ｈｗＴＰＭから想定される４つのカウンタを提供する。ｖＴＰＭカウンタは、ハードウェアＴＰＭカウンタへの直接のリンクを必要としなくてもよい。
【００３４】
仮想マシンアーキテクチャは、仮想鍵および関連データを保護することを目的として、ハードウェアＴＰＭを使用しうる。一実施例では、ｖＴＰＭ鍵階層および関連データは、標準ｈｗＴＰＭ内で保護される。例えば、仮想ＴＰＭ鍵は、以下に説明されるように、ｖＴＰＭ１２０Ａによって暗号化されるまでハードウェアＴＰＭに格納されたまま解放されなくてもよい。結果として、仮想ＴＰＭのセキュリティが侵害された場合、関連するｖＴＰＭの公開部分は、不正使用される可能性があるが、不正使用される可能性があるのはセキュリティ侵害の期間のみである。例示される実施例では、全ての鍵がハードウェアＴＰＭ内に存在するので、プライベート鍵は、盗まれることができない、または、セキュリティ侵害が終われば使用されることができない。
【００３５】
本発明による処理システムは、また、ｖＴＰＭが従来のＴＰＭ証明サービスを提供することを可能にする、証明プロトコルアーキテクチャを提供しうる。仮想ＴＰＭを認識しないリモートのチャレンジャーは、完全に証明処理に入る。更に、ｖＴＰＭを認識するリモートのチャレンジャーは、追加のプロトコルなしで、ｖＴＰＭからｈｗＴＰＭを区別することができ、ｖＴＰＭをホストするプラットフォームを信頼するかどうかを決定しうる。
【００３６】
例示される実施例では、仮想ＴＰＭ（ｖＴＰＭ）が動作していない場合、そのｖＴＰＭの永続データ構造は、ディスク上に格納され、親ＳＲＫによりｖＴＰＭサービスのＰＣＲに対して封印される。このように、ＴＰＭ３０は、ｖＴＰＭが実行していないときであっても、ｖＴＰＭを保護する。
【００３７】
例示される実施例において、ｖＴＰＭ１２０Ａは、単一ユーザ認証セッション下において自身およびｈｗＴＰＭの両方から認識されない形で、ＴＰＭ機能を提供する。ｖＴＰＭ１２０Ａは、ユーザおよびｈｗＴＰＭの両方を用いて独立した認証セッションを維持することによって、この目的を達成する。すなわち、ユーザは、ｖＴＰＭがｈｗＴＰＭであるかのように、ｖＴＰＭ１２０Ａを用いて認証セッションを作成する。ｖＴＰＭ１２０Ａは、ｈｗＴＰＭがする確認と同一の全ての認証確認を、このセッションに基づいて完了しうる。ｖＴＰＭ１２０が要求された関数を直接提供できる場合、ｖＴＰＭ１２０Ａは、単にセッションナンスを更新して応答する。ｖＴＰＭ１２０Ａがサービスを提供するためにハードウェアＴＰＭを必要とする場合、ｖＴＰＭ１２０Ａは、この要求を行うことを目的として、認証セッションを作成する、または、ｈｗＴＰＭとの既存の認証セッションを再利用する。ｖＴＰＭ１２０ＡがｈｗＴＰＭの使用を完了すると、ｖＴＰＭ１２０Ａは、ユーザセッション上のナンスを更新して応答する。
【００３８】
図３は、本発明の一実施例による仮想ＴＰＭを提供する処理を示すフローチャートである。従来のＴＰＭのように、図１に示されるＳＲＫ５０、ＥＫ５２、および、ＥＫ証明５４のような標準の証明書を含むＴＰＭ３０が処理システム２０において起動された後に、図３の処理は、開始する。ブロック２１０から２１４において、ＶＭＭ１０６は、仮想ＴＰＭをサポートするための準備として、仮想ＴＰＭサービス１０４を初期化することを目的としていくつかの処理を実行する。例えば、ブロック２１０において、ＶＭＭ１０６は、証明鍵（ＣＫ）５６と称されるＡＩＫを作成する。ＶＭＭ１０６は、ＣＫ５６を作成することを目的として、ＡＩＫを作成する標準の処理を使用しうる。次に、仮想ＴＰＭサービス１０４は、ｖＥＫ６４のような仮想認定鍵を証明する場合に、ＣＫ５６を使用しうる。ブロック２１２において、仮想ＴＰＭサービス１０４は、サードパーティ、または、プライバシー認証局（ＣＡ）７６のようなトラステッドサードパーティ（ＴＴＰ）からＣＫ５６に対する証明書５８を取得する。ＣＫ証明書５８は、プライバシーＣＡ７６によって署名され、ＣＫ５６が正当なＴＰＭによって保護されていることを保証する。
【００３９】
ブロック２１４において、ＶＭＭ１０６は、結合鍵（ＢＫ）５７と称されるＡＩＫを作成する。ＢＫ５７は、後に、データがｖＴＰＭサービス１０４からリリースされた場合に、ｖＴＰＭを保護することを目的として使用されうる。例えば、例示される実施例では、ｖＴＰＭ１２０Ａは、ｈｗＴＰＭが永続鍵およびレジスタを保護する方法と同様の方法で、永続データを保護する。しかしながら、リリースされたデータを保護することを目的として、ｖＴＰＭ１２０Ａは、ｖＥＫ６４によってラップされた鍵ｂｌｏｂ、ｖＳＲＫ６６によってラップされた鍵ｂｌｏｂ、ｖＥＫ６４に対する認証データ、ｖＳＲＫ６６に対する認証データ、ｖＤＩＲ９４、およびロードされる永続鍵に対するラップされた鍵ｂｌｏｂを、ＢＫ５７に結合する。
【００４０】
ｖＴＰＭ１２０Ａに関して、場所を実装することを目的とするバスコントローラの論理的等価物は、ＶＭＭ１０６である。このように、ｖＴＰＭ１２０Ａは、ＶＭＭ１０６が命令を出すいかなる場所においても動作する。ＶＭＭ１０６は、必要に応じて、ｖＴＰＭ１２０Ａの現在の場所を変更するために、いかなる適切な技術も使用しうる。
【００４１】
ＶＭＭ１０６が仮想ＴＰＭサービス１０４を初期化すると、仮想ＴＰＭサービス１０４は、要求に応じて仮想ＴＰＭを作成しうる。
【００４２】
例示される実施例において、初期化されると、各仮想ＴＰＭは、仮想ＴＰＭがハードウェアＴＰＭであるかのように、証明のような従来の機能を処理およびサポートできる。仮想ＴＰＭがこのように動作することを可能にすることを目的として、ハードウェアＴＰＭが有することを期待されるものと同様の証明書が、仮想ＴＰＭに提供される。例えば、以下において詳細に説明されるように、一実施例では、新規のｖＴＰＭのそれぞれに対して、仮想ＴＰＭサービス１０４は、新規ｖＥＫ、新規仮想ＳＲＫ（ｖＳＲＫ）、およびｖＥＫに対する証明書を作成または取得する。ｖＥＫ証明書は、ｖＥＫがＴＰＭ仕様に従って安全に格納されることを示す。更に、プラットフォーム証明書および適合証明書は、仮想ＴＰＭソフトウェアベンダによって提供されうる。
【００４３】
例示される実施例において、ブロック２１６から２２２は、仮想マシンに対して仮想ＴＰＭを初期化する処理を示す。例えば、仮想マシン１１０Ａの作成要求に応じて、仮想ＴＰＭサービス１０４は、ブロック２１６に示されるように、ｖＥＫ６４と称されるストレージ鍵を作成することを目的としてＴＰＭ３０を使用しうる。更に、仮想ＴＰＭサービス１０４は、ｖＥＫ６４を、仮想ＴＰＭサービス１０４と、仮想ＴＰＭサービス１０４が存在するブート環境のＰＣＲ値とに結合することを目的として、ＴＰＭ３０を使用しうる。ｖＥＫ６４に対する初期認証データも作成され、ｖＴＰＭ１２０Ａ内に格納されうる。
【００４４】
ブロック２１８において、仮想ＴＰＭサービス１０４は、ｖＥＫ６４を証明することを目的として、ＣＫ５６を使用する。例えば、仮想ＴＰＭサービス１０４は、ｖＥＫ６４を証明するため、および、ｖＥＫ６４に対するＴＰＭ＿ＣＥＲＴＩＦＹ＿ＩＮＦＯのような証明情報を取得するために、ＴＰＭ３０のＴＰＭ＿ＣｅｒｔｉｆｙＫｅｙ関数を使用しうる。例示される実施例では、ｖＥＫ６４に対するこの証明情報は、ＣＫ５６によって署名され、ｖＥＫ６４に結合されたＰＣＲ情報（例：ＰＣＲ３２の情報）を含む。この処理は、ｖＥＫ６４がプライバシーＣＡ７６によって承認されたハードウェアＴＰＭ内に格納されることを、保証しうる。例示される実施例では、プライバシーＣＡ７６はＣＫ証明書５８に署名しているので、ｖＥＫ６４のＰＣＲ結合に対するＣＫ５６による証明書は、プライバシーＣＡ７６がｖＥＫ６４はＴＣＧ標準により良好と考えられるｈｗＰＴＭ内に存在すると示しているかのように、信頼される。
【００４５】
ブロック２２０において、仮想ＴＰＭサービス１０４は、ｖＴＰＭのＥＫ証明書要求を、サードパーティ、または、仮想ＣＡ７８と称されるＴＴＰに対して送信しうる。この証明書要求は、ＣＫ証明書５８と、ＣＫ５６によって署名されたｖＥＫ６４に対する証明書情報とを含んでもよい。
【００４６】
仮想化ＣＡ７８は、プライバシーＣＡによって信頼される認証局でありうる。仮想化ＣＡ７８は、概して、ＴＰＭの他の製造者として認識されうる。例示される実施例では、仮想化ＣＡ７８は、ｖＴＰＭを認識しており、承認されたまたは「安全」な仮想ＴＰＭ環境と、未承認のまたは「安全でない」仮想ＴＰＭ環境とを区別することができる。一実施例では、仮想化ＣＡ７８は、有効なＴＰＭ仮想化を行うことを目的としてＴＰＭ仮想化の存在を認識する必要がある、処理システム２０の外部に存在する唯一のエンティティである。
【００４７】
仮想化ＣＡ７８が、ＰＣＲ結合を含むＣＡ証明書５８およびｖＥＫ６４に対する証明書情報を検証して要求が承認されたかどうかを検証したあと、仮想化ＣＡ７８は、署名されたｖＥＫ証明書６０を処理システム２０に戻す。例示される実施例では、ｖＥＫ証明書６０は、ｖＥＫ６４が識別可能な環境内で実行する仮想ＴＰＭに関連付けられていることを示すデータを含む、モデルフィールドを有する。ブロック２２２において、仮想ＴＰＭサービス１０４は、署名されたｖＥＫ証明書６０を受け取りうる。
【００４８】
このように、上記の処理は、以下に示す信頼の連鎖を確立する。ＣＫ証明書５８は、プライバシーＣＡ７６によって署名された証明書であり、ＣＫ５６が正規のＴＰＭ内の正規のＡＩＫであることを示す。ｖＥＫ６４に対する証明書情報は、ＣＫ５６に従って、ｖＥＫ６４がＰＣＲの特定のセットに結合され、かつ、同一の正規のＴＰＭ内に格納された鍵であることを示す。プライバシーＣＡ７６がＣＫ証明書５８を作成したので、仮想化ＣＡ７８は、ＣＫ５６によって作成されたｖＥＫ６４に対する証明書情報を信頼する。ＥＫが結合されたｖＴＰＭ環境を仮想化ＣＡ７８が承認した場合、仮想化ＣＡ７８は、ｖＥＫ６４が正規のＴＰＭを表すことを示すことを目的として、ｖＥＫ６４に対する認定証明書を作成する。更に、ｖＥＫ証明書６０において、仮想化ＣＡ７８は、当該ＴＰＭが仮想でありかつ証明期間中はリモートチャレンジャーの裁量において信頼されることができることを示す、モデル情報を含んでもよい。
【００４９】
ブロック２２４から２２６は、仮想ｖＴＰＭに対するさらなる処理を示す。一実施例では、これらの処理を実行することを目的として、仮想ＴＰＭサービス１０４は、ｖＴＰＭ１２０ＡがｈｗＴＰＭであるかのようにｖＴＰＭ１２０Ａを初期化することを目的として、標準関数群を使用する。例えば、仮想ＴＰＭサービス１０４は、ブロック２２４および２２６にそれぞれ示されるように、ｖＥＫ６４の公開部分を取得することを目的としてＴＰＭ＿Ｇｅｔ＿ＰＵＢＥＫを呼び出してもよく、ｖＳＲＫ６６を作成することを目的としてＴＰＭ＿ＴａｋｅＯｗｎｅｒｓｈｉｐを呼び出してもよい。例示される実施例では、仮想ＴＰＭサービス１０４は、ｖＳＲＫをｖＥＫ６４と同一のＰＣＲ（すなわち、ＰＣＲ３２）に結合する。仮想ＴＰＭサービス１０４は、ｖＥＫ６４の公開部分により暗号化された形で認証をｖＴＰＭ１２０Ａに提供しうる。その後、これらの認証は、ｖＥＫ６４を用いてｖＴＰＭ１２０Ａによって復号化されうる。例示される実施例では、証明書がＴＰＭ＿ＢＯＵＮＤ＿ＤＡＴＡではないので、証明書を復号化することを目的としてレガシー鍵ｖＥＫ６４が使用される。
【００５０】
例示される実施例では、ｖＥＫ６４に対する認証データは、ｖＥＫ６４の作成中に、ｖＴＰＭ１２０Ａ内に格納されたものからＴＰＭ＿ＴａｋｅＯｗｎｅｒｓｈｉｐの呼び出しにおいて提供されたものに変更される。
【００５１】
そして、ＶＭ１１０Ａは、ブロック２２８に示され、かつ、図４に関連して以下において詳細に説明されるように、ｖＴＰＭ１２０ＡがｈｗＴＰＭであるかのように、ｖＴＰＭ１２０Ａを使用しうる。そして、ブロック２４０に示されるように、仮想ＴＰＭサービス１０４は、作成されている新規ＶＭが新規ｖＴＰＭを必要とするかどうかを決定する。必要とする場合、処理は、上記に説明されたように、例えば、新規ＶＭに対して新規ｖＥＫが作成されるように、新規ｖＴＰＭのインスタンスを作成するための処理が実行されるブロック２１６に戻りうる。新規ＶＭが作成されていない場合、仮想ＴＰＭサービス１０４は、ＶＭ１１０Ａに対してｖＴＰＭ１２０Ａを提供することを目的として、ＴＰＭ３０の使用を継続する。
【００５２】
図４は、ｖＴＰＭ１２０Ａのような仮想ＴＰＭを利用するための処理の実施例を示すフローチャートである。説明される処理は、図３のブロック２２８において要約される処理のいくつかに関する、より多くの詳細を提供する。例えば、ブロック３１０から３１４は、ｖＴＰＭ１２０ＡがｈｗＴＰＭであるかのようにｖＴＰＭ１２０Ａを使用するＶＭ１１０Ａに対して、ｖＡＩＫを作成する処理を示す。仮想ＴＰＭ１２０Ａは、ＴＰＭ３０においてｖＡＩＫ７０を作成し、ハードウェアＴＰＭが一般的にｖＡＩＫに対して作成する通常のドキュメントを作成しうる。
【００５３】
例えば、ブロック３１０において、ＶＭ１１０Ａは、ＴＰＭ＿ＭａｋｅＩｄｅｎｔｉｔｙを呼び出すことによって、ｖＴＰＭ１２０Ａ内にｖＡＩＫを作成する。呼び出しに応じて、ｖＴＰＭ１２０Ａは、ＴＰＭ３０に対して、ＴＰＭ３０内に新規のＴＣＧ＿ＳＩＧＮＩＮＧ＿ＫＥＹ鍵を作成するように指示する。新規の仮想証明アイデンティティ鍵として動作するこの署名鍵は、ｖＡＩＫ７０として図１に示される。このように、ｈｗＴＰＭの視点からは、仮想ＡＩＫは、「ＡＩＫ」型の鍵ではなく、署名鍵でありうる。しかしながら、ｈｗＴＰＭの外部に対しては、仮想ＡＩＫは、「ＡＩＫ」型の鍵として動作しかつ認識される。
【００５４】
そして、ｖＡＩＫ７０に対するＴＣＧ＿ＩＤＥＮＴＩＴＹ＿ＣＯＮＴＥＮＴＳは、ｖＴＰＭ１２０ＡおよびＴＳＳ１０８Ａによって作成される。そして、ＴＳＳ１０８Ａは、ＴＣＧ＿ＩＤＥＮＴＩＴＹ＿ＲＥＱを作成することを目的として、ＴＳＳ＿ＣｏｌｌａｔｅＩｄｅｎｔｉｔｙＲｅｑｕｅｓｔを実行しうる。この呼び出しは、使用されるＥＫ証明書がｈｗＴＰＭに対するＥＫ証明書ではなくｖＥＫ証明書６０であること以外、通常通りに行われうる。
【００５５】
ブロック３１２において示されるように、ＶＭ１１０Ａ内で実行されるＴＳＳ１０８Ａは、その後、ｖＡＩＫ７０およびｖＥＫ証明書６０のようなドキュメントを含む要求を、プライバシーＣＡ７６に送信する。そして、プライバシーＣＡ７６は、ドキュメントを検証する。更に、プライバシーＣＡ７６は、ＴＰＭ仮想化を認識しなくてもよく、仮想化ＣＡ７８からのｖＥＫ承認証明書６０を他のＴＰＭ製造者の証明書として信頼してもよい。ドキュメントの検証後、プライバシーＣＡ７６は、ｖＡＩＫ７０に対して新規のアイデンティティ証明書６２を作成し、その証明書に署名し、処理システム２０に対して送信する。それによって、ＴＳＳ１０８Ａは、ブロック３１４において示されるように、ｖＡＩＫ証明書６２をプライバシーＣＡ７６から受信しうる。
【００５６】
次に、ブロック３２０から３２４は、証明要求を処理する動作例を示す。ブロック３２０において、ｖＴＰＭ１２０Ａは、受信されたコマンドがＶＭ１１０Ａの信頼性に関する証明を必要とするかどうかを決定する。そのような要求が受信された場合、ＴＳＳ１０８Ａは、ｖＰＣＲ９２を引用することを目的としてｖＴＰＭ１２０Ａを使用し、ブロック３２２において示されるように、引用したＰＣＲに署名することを目的としてｖＡＩＫ７０を使用しうる。ブロック３２４に示されるように、ＶＭ１１０Ａがリモートのエンティティからチャレンジされた場合、ＴＳＳ１０８Ａは、ｖＡＩＫ７０がｈｗＴＰＭであるかのうように、ｖＡＩＫ証明書６２をリモートのエンティティに送信しうる。
【００５７】
一実施例によると、チャレンジャーがｖＴＰＭを認識している場合、チャレンジャーは、モデル情報を入手でき、ＶＭ１１０Ａによって使用されているＴＰＭがｖＴＰＭであることを検知し、下位層のプラットフォーム構成が信頼されるべきかどうかを決定できる。モデル情報は、下位層のプラットフォーム構成を一意的に識別しうる。
【００５８】
チャレンジャーが下位層のプラットフォームを信頼する場合、ｖＴＰＭはハードウェアＴＰＭにルートされており、かつ、そのハードウェアＴＰＭに対してのみ使用可能であることをプライバシーＣＡ７６が示すことを、チャレンジャーは認識する。チャレンジャーがｖＴＰＭの特定の構成を信頼しない場合、チャレンジャーは、トランザクションを拒否することを選択できる。更に、チャレンジャーがｖＴＰＭを認識しないレガシーアプリケーションである場合、チャレンジャーは、単にプライバシーＣＡ７６の署名に対する信頼判断に基づいて証明の結論を得るために、標準ＴＰＭプロトコルを使用できる。
【００５９】
同様の方法において、ｖＴＰＭ１２０Ａは、従来のハードウェアＴＰＭが単調システムに対して提供できる、全ての他の機能をＶＭに提供しうる。
【００６０】
このように、開示される実施例は、複数の専用ハードウェアＴＰＭを必要とすることなく、ＶＭ内のソフトウェアに対する修正を必要とすることなく、さらに、システムと相互作用するリモートのエンティティに対する修正を必要とすることなく、複数のＶＭがＴＰＭ機能を使用することを可能にしている。本開示によると、仮想ＴＰＭは、リモートのエンティティに対して証明を提供することを目的として、ＶＭ内のＯＳおよびアプリケーションを判定できる。更に、ハードウェアＴＰＭおよびチャレンジャーが上記のＴＰＭ  Ｖｅｒｓｉｏｎ  １．２  Ｄｅｓｉｇｎ  Ｓｐｅｃｉｆｉｃａｔｉｏｎのような現在のＴＰＭ仕様に記載される機能のみを使用する場合でも、仮想ＴＰＭは、ハードウェアＴＰＭのチャレンジャーに対して、仮想マシンの状態を証明できる。仮想マシンのゲストＯＳは、ハードウェアＴＰＭが共有されていることを認識しないままであってもよい。また、システム内のＶＭ間において、信頼関係は、必要とされない。
【００６１】
図１に示されるように、０以上のｖＳｉｇ６８、０以上のｖＡＩＫ７０、および０以上のｖＥｎｃ７２は、各ｖＴＰＭに対して作成されうる。上記に説明されるように、一実施例では、ｖＳｉｇ６８、ｖＥｎｃ７２などのような仮想鍵は、作成され、ｈｗＴＰＭ内に格納されうる。結果として、ｖＴＰＭは、ｖＴＰＭ内に格納される鍵を永続的に漏洩しない形で鍵を格納し、作成することができる。
【００６２】
あるいは、柔軟性および／または性能を向上することを目的として、仮想鍵は、ｖＴＰＭソフトウェアによって作成され使用されることができる。例えば、仮想鍵は、ｈｗＴＰＭ内に格納されなくてもよく、または、ｈｗＴＰＭによって直接保護されなくてもよい。仮想ＴＰＭに属するまたは仮想ＴＰＭによって生成されるプライベート鍵は、ハードウェアＴＰＭによって処理されなくてもよく、ハードウェアＴＰＭは、暗号化処理を実行することを目的としてこれらのプライベート鍵を使用しなくてもよい。その代わりに、仮想ＴＰＭは、ホストプロセッサおよび暗号化ソフトウェアとそのプライベート鍵を使用して、暗号化処理を実行してもよい。これを行うことを目的として、仮想ＴＰＭサービスは、プライベート鍵を保護されたホストメモリ内に格納しうる。しかしながら、プライベート鍵が使用されていない間は、仮想ＴＰＭサービスは、ソフトウェア構成に対して鍵をラップすることを目的として、ハードウェアＴＰＭ機能を使用しうる。
【００６３】
これらの処理は、ｖＴＰＭに、ハードウェアＴＰＭよりも高い性能で、ｖＴＰＭソフトウェアにおいてオブジェクトを暗号化、複合化、署名、および検証することを可能にする。このように、これらのオプションは、例えば、大量の暗号化または性能が重視されるサーバ環境において、好ましい。しかしながら、パフォーマンスの向上によるトレードオフは、ｖＴＰＭのセキュリティが侵害された場合に仮想鍵が永続的に侵害されうることである。
【００６４】
本願明細書において図と共に説明される原理および実施例を考慮して、例示される実施例がそのような原理から逸脱することなく、配置および詳細について修正されることができると認識されるであろう。例えば、仮想ＴＰＭは、仮想マシンと関連して説明されたが、他の実施例は、ハードウェアＴＰＭを共有するサーバまたはサーバグループ内のパーティションのような、他のタイプのシステムの一部分と関連して使用されるｖＴＰＭを有することができる。（例えば、仮想ＴＰＭは、２つの論理的な２プロセッサシステムにパーティションされた４プロセッサシステムにおいて使用されうる。）本願明細書における開示は、また、論理ＴＰＭをハードウェアプラットフォーム上の１つ以上のサービスコプロセッサ、または、１つ以上の他のタイプの独立した処理要素に対して提供するために使用されることができる。
【００６５】
さらに、他の実施例は、ハードウェアＴＰＭをエミュレートせず、ハードウェアＴＰＭの機能を拡張および／または拡大するｖＴＰＭサービスを含む（例：より多くのＰＣＲ、より多くのストレージなどを提供することによって）。他の実施例は、また、セキュアＯＳ上、マネージドランタイム環境（ＭＲＴＥ）上、サービスプロセッサまたはコプロセッサ、プラットフォームのシステム管理モード（ＳＭＭ）などにおいて実行される仮想ＴＰＭサービスを含む。
【００６６】
また、上記においては特定の実施例が重点的に説明されたが、他の構成も意図されている。特に、本願明細書において「ある実施例では」「他の実施例では」などの表現が使用されるが、これらの表現は、概して、実施例の可能性を意味するものであって、本発明を特定の実施構成例に限定することを意図したものではない。本願明細書で使用されているように、これらの表現は、同一の、または、他の実施例に統合されうる複数の異なる実施例を指す。
【００６７】
同様に、実施例の処理は、特定のシーケンスにおいて実行される特定の処理に関して説明されたが、本発明の多くの代替態様を引き出すために、これらの処理に対して多くの変更を加えることができる。例えば、他の実施例は、開示された全ての処理よりも少ない処理を使用する処理、追加の処理を使用する処理、同一の処理を異なるシーケンスで使用する処理、および、本願明細書において開示された個々の処理が結合、分割、または変更された処理を含んでも良い。
【００６８】
本発明の他の実施例は、また、本発明の処理を実行するための命令群をエンコードしたマシンアクセス可能な媒体を含む。そのような実施例は、また、プログラム製品と称されてもよい。そのようなマシンアクセス可能な媒体は、フロッピーディスク、ハードディスク、ＣＤ−ＲＯＭ、ＲＯＭおよびＲＡＭのような記憶媒体と、アンテナ、導線、光ファイバ、マイクロ波、電磁波、および他の電磁気または光搬送波とを含み、これらに限定されない。それに応じて、命令群および他のデータは、パケット、シリアルデータ、パラレルデータ、伝播信号などの形で伝達環境またはネットワークを介して送信されてもよく、分散環境において使用されてもよく、シングルまたはマルチプロセッサ装置によってアクセスされるためにローカルおよび／またはリモートに格納されてもよい。
【００６９】
本願明細書において示されるハードウェアおよびソフトウェアコンポーネントは、それぞれが実質的に他のコンポーネントから独立してデザイン、製造、または更新されることができるように、適度に自己完結した機能要素を示すことが理解されるであろう。他の実施例では、コンポーネントの多くは、本願明細書において図と共に説明される機能を提供するために、ハードウェア、ソフトウェアまたは、ハードウェアとソフトウェアの組合せとして実装されうる。
【００７０】
本願明細書において説明された実施例から多様な変形が導きだされるので、この詳細な記載は、説明することを意図したものであって、本発明の範囲を制限するものとして理解されるべきではない。従って、本発明の特許請求の範囲は、添付の特許請求の範囲および趣旨の範囲内に収まる全ての実施態様と、そのような実施態様の全ての均等物である。
【図１】
2008500651.tif 000003
【図２】
2008500651.tif 000004
【図３】
2008500651.tif 000005
【図４】
2008500651.tif 000006
【国際調査報告】
2008500651.tif 000007
2008500651.tif 000008
2008500651.tif 000009