(57)【要約】  保護されたマシン。マシンはエンクレーブを含む。エンクレーブは、１つまたは複数の管理エンクレーブがそのエンクレーブ中にキーを与えることができることを除いて、エンクレーブ自体中にないアプリケーションコードについてアクセスが防がれるアプリケーションアドレス空間の保護された領域を含む。マシンは、エンクレーブに結合された管理エンクレーブをさらに含む。管理エンクレーブは、エンクレーブにキーを与えるように構成される。管理エンクレーブは、管理エンクレーブ自体中にないアプリケーションコードについてアクセスが防がれるアプリケーションアドレス空間の保護された領域である。
2019536363.tif 000002
【特許請求の範囲】
【請求項１】
第１の複数のマシンを備える計算ファブリックであって、前記第１の複数のマシンの各々が第１の管理エンクレーブとテナントエンクレーブとを実行し、前記第１の複数のマシンの各々について、前記第１の管理エンクレーブが、前記テナントエンクレーブ中に１つまたは複数のテナントキーを与えるように構成され、前記テナントエンクレーブが、前記テナントエンクレーブ中にないアプリケーションコードについてアクセスが防がれるアプリケーションアドレス空間の保護された領域に対応し、前記第１の管理エンクレーブは、前記第１の管理エンクレーブが前記テナントエンクレーブに前記１つまたは複数のテナントキーを与えることを許可されることを除いて、前記第１の管理エンクレーブ中にないアプリケーションコードについてアクセスが防がれるアプリケーションアドレス空間の保護された領域に対応する、計算ファブリックと、
第２の複数のマシンを備えるキーファブリックであって、前記第２の複数のマシンの各々が第２の管理エンクレーブを実行し、前記第２の複数のマシンの各々について、前記第２の管理エンクレーブが、１つまたは複数の暗号化されたテナントキーを前記第２のマシンにローカルにおよび排他的に記憶させるように構成され、前記第１の管理エンクレーブおよび前記第２の管理エンクレーブの各々は、相互に承認可能および認証可能な管理エンクレーブアプリケーションコードを実行し、それにより、異なるマシンの管理エンクレーブが管理エンクレーブアプリケーションコードを承認および認証することによって、テナントキーを信頼された様式で前記管理エンクレーブ間で受け渡すことを可能にする、キーファブリックと
を備えるシステム。
【請求項２】
前記第１の管理エンクレーブおよび前記第２の管理エンクレーブの各々が、同等のアプリケーションコードを実行することによって、相互に承認可能および認証可能な管理エンクレーブアプリケーションコードを実行する、請求項１に記載のシステム。
【請求項３】
前記第１の管理エンクレーブおよび前記第２の管理エンクレーブの各々が、同じアプリケーションコードの異なるバージョンとして検証することができる同じアプリケーションコードの異なるバージョンを実行することによって、相互に承認可能および認証可能な管理エンクレーブアプリケーションコードを実行する、請求項１に記載のシステム。
【請求項４】
前記第１の管理エンクレーブおよび前記第２の管理エンクレーブが、管理エンクレーブのためのエンクレーブ構成証明を含む構成証明の証明書を検証することによって同じアプリケーションコードの異なるバージョンを検証するように構成され、前記エンクレーブ構成証明が、署名局の検証可能な証明と、アプリケーションコードがどの機能を有するかの署名局宣言の検証可能な証明と、アプリケーションコードの署名局宣言バージョンの検証可能な証明とを含む、請求項３に記載のシステム。
【請求項５】
前記第２の管理エンクレーブの各々は、各第２の管理エンクレーブが動作しているマシンのためのマシンキーを使用してテナントキーを暗号化および解読するように構成された、請求項１に記載のシステム。
【請求項６】
前記システムがテナントキーを生成するように構成された、請求項１に記載のシステム。
【請求項７】
前記システムがテナントからテナントキーを受信するように構成された、請求項１に記載のシステム。
【請求項８】
テナントエンクレーブであって、１つまたは複数の管理エンクレーブが前記テナントエンクレーブ中にキーを与えることができることを除いて、前記テナントエンクレーブ自体中にないアプリケーションコードについてアクセスが防がれるアプリケーションアドレス空間の保護された領域に対応する、テナントエンクレーブと、
前記テナントエンクレーブに結合された管理エンクレーブであって、前記テナントエンクレーブにキーを与えるように構成され、前記管理エンクレーブ自体中にないアプリケーションコードについてアクセスが防がれるアプリケーションアドレス空間の保護された領域に対応する、管理エンクレーブと
を備えるマシン。
【請求項９】
前記管理エンクレーブは、相互に承認可能および認証可能なアプリケーションコードを実行する他の管理エンクレーブと通信するように構成され、それにより、管理エンクレーブが管理エンクレーブアプリケーションコードを承認および認証することによって、テナントキーを信頼された様式で前記管理エンクレーブ間で受け渡すことができる、請求項８に記載のマシン。
【請求項１０】
前記管理エンクレーブが、同等のアプリケーションコードを実行する他の管理エンクレーブと通信するように構成された、請求項９に記載のマシン。
【請求項１１】
前記管理エンクレーブが、同じアプリケーションコードの異なるバージョンとして検証することができる同じアプリケーションコードの異なるバージョンを実行する他の管理エンクレーブと通信するように構成された、請求項９に記載のマシン。
【請求項１２】
前記管理エンクレーブが、管理エンクレーブのためのエンクレーブ構成証明を含む構成証明の証明書を検証することによって同じアプリケーションコードの異なるバージョンを検証するように構成され、前記エンクレーブ構成証明が、署名局の検証可能な証明と、アプリケーションコードがどの機能を有するかの署名局宣言の検証可能な証明と、前記アプリケーションコードの署名局宣言バージョンの検証可能な証明とを含む、請求項１１に記載のマシン。
【請求項１３】
前記管理エンクレーブが、前記マシンのためのマシンキーを使用してテナントキーを暗号化および解読するように構成された、請求項８に記載のマシン。
【請求項１４】
前記テナントエンクレーブが、クラウドサービステナントのための機能を実施するように構成され、前記管理エンクレーブが、前記テナントエンクレーブ中にテナントキーを与えるように構成された、請求項８に記載のマシン。
【請求項１５】
クラウドシステム上のテナントをセキュアに管理する方法であって、
テナントキーを取得するステップと、
クラウドサービスにおける計算ファブリック中のマシン上の管理エンクレーブにおいて、前記マシン上のテナントエンクレーブ中に前記テナントキーを与えるステップであって、前記管理エンクレーブは、前記管理エンクレーブ自体中にないアプリケーションコードについてアクセスが防がれるアプリケーションアドレス空間の保護された領域に対応し、テナントエンクレーブは、前記管理エンクレーブが前記テナントエンクレーブにキーを与えることができることを除いて、前記テナントエンクレーブ自体中にないアプリケーションコードについてアクセスが防がれるアプリケーションアドレス空間の保護された領域に対応し、前記テナントエンクレーブが、クラウドサービステナントのための機能を実施するように構成された、与えるステップと
を含む方法。
【発明の詳細な説明】
【背景技術】
【０００１】
背景および関連技術
[0001]コンピューターおよびコンピューティングシステムは、現代の生活のほぼあらゆる側面に影響を及ぼしている。コンピューターは、一般に、仕事、レクリエーション、ヘルスケア、輸送、エンターテインメント、家政などに関与する。
【０００２】
[0002]さらに、ネットワーク接続を介して他のコンピューティングシステムに相互接続されるコンピューティングシステムの能力によって、コンピューティングシステム機能を向上させることができる。ネットワーク接続は、限定はしないが、ワイヤードもしくはワイヤレスイーサネット（登録商標）を介した接続、セルラー接続、さらには、直列、並列、ＵＳＢを通したコンピューター間接続、または他の接続を含んでもよい。接続は、コンピューティングシステムが、他のコンピューティングシステムにおけるサービスにアクセスし、他のコンピューティングシステムからアプリケーションデータを迅速におよび効率的に受信することを可能にする。
【０００３】
[0003]コンピューティングシステムの相互接続は、いわゆる「クラウド」コンピューティングシステムなど、分散コンピューティングシステムを容易にしている。本明細書では、「クラウドコンピューティング」は、低減された管理労力またはサービスプロバイダー対話でプロビジョニングし、リリースすることができる構成可能なコンピューティングリソース（たとえば、ネットワーク、サーバー、ストレージ、アプリケーション、サービスなど）の共有プールへの、ユビキタスで、便利で、オンデマンドのネットワークアクセスを可能にするためのシステムまたはリソースでもよい。様々な特性（たとえば、オンデマンドセルフサービス、広域ネットワークアクセス（ｂｒｏａｄ  ｎｅｔｗｏｒｋ  ａｃｃｅｓｓ）、リソースプーリング、迅速な弾力性（ｒａｐｉｄ  ｅｌａｓｔｉｃｉｔｙ）、測定されるサービス（ｍｅａｓｕｒｅｄ  ｓｅｒｖｉｃｅ）など）、サービスモデル（たとえば、サービスとしてのソフトウェア（「ＳａａＳ：Ｓｏｆｔｗａｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ」）、サービスとしてのプラットフォーム（「ＰａａＳ：Ｐｌａｔｆｏｒｍ  ａｓ  ａ  Ｓｅｒｖｉｃｅ」）、サービスとしてのインフラストラクチャ（「ＩａａＳ：Ｉｎｆｒａｓｔｒｕｃｔｕｒｅ  ａｓ  ａ  Ｓｅｒｖｉｃｅ」）、および展開モデル（たとえば、プライベートクラウド、コミュニティクラウド、パブリッククラウド、ハイブリッドクラウドなど）からクラウドモデルを構成することができる。
【０００４】
[0004]クラウドコンピューティングシステムには、クラウドサービスプロバイダーおよびテナント顧客がある。テナント顧客は、クラウドコンピューティングシステムリソースを使用することを望むが、これらの顧客は、概して、クラウドサービスプロバイダーにおける個人、たとえば、クラウドサービスプロバイダー従業員またはクラウドサービスプロバイダーリソースへの物理的アクセスを有する他者が顧客のデータへのアクセスを有することを望まない。したがって、テナント顧客は、第三者が、実際にデータを閲覧することが可能でない状態でデータを管理することを望む。
【０００５】
[0005]本明細書で請求される主題は、欠点を解決する実施形態、または上記で説明された環境などの環境においてのみ動作する実施形態に限定されない。むしろ、この背景は、本明細書で説明されるいくつかの実施形態を実施してもよい１つの例示的な技術分野を示すために与えられるにすぎない。
【発明の概要】
【課題を解決するための手段】
【０００６】
[0006]本明細書に示される一実施形態は、マシンを含む。マシンはエンクレーブを含む。エンクレーブは、１つまたは複数の管理エンクレーブがそのエンクレーブ中にキーを与えることができることを除いて、エンクレーブ自体中にないアプリケーションコードについてアクセスが防がれるアプリケーションアドレス空間の保護された領域を含む。マシンは、エンクレーブに結合された管理エンクレーブをさらに含む。管理エンクレーブは、エンクレーブにキーを与えるように構成される。管理エンクレーブは、管理エンクレーブ自体中にないアプリケーションコードについてアクセスが防がれるアプリケーションアドレス空間の保護された領域である。
【０００７】
[0007]本発明の概要は、発明を実施するための形態において以下でさらに説明される概念の選択を簡略化された形で紹介するために与えられる。本発明の概要は、請求される主題の主要な特徴または本質的な特徴を識別するものではなく、請求される主題の範囲を決定する際の補助として使用されるものでもない。
【０００８】
[0008]追加の特徴および利点は、以下の説明に記載され、一部はその説明から明らかであり、または、本明細書の教示の実施によって学習することができる。本発明の特徴および利点は、添付の特許請求の範囲で詳細に指摘される器具および組合せによって実現し、取得することができる。本発明の特徴は、以下の説明および添付の特許請求の範囲からより十分に明らかになるか、または、以下に記載するように本発明の実施によって学習することができる。
【０００９】
[0009]上記で具陳された利点および特徴ならびに他の利点および特徴を取得することができる様式について説明するために、添付の図面に示されている特定の実施形態を参照することによって、上記で手短に説明された主題のより詳細な説明が与えられる。これらの図面が、一般的な実施形態を示すにすぎず、したがって、範囲を限定するものと見なされるべきではないことを理解して、実施形態は、添付の図面の使用によって追加の特異性および詳細とともに説明および解説される。
【図面の簡単な説明】
【００１０】
【図１】[0010]管理エンクレーブとエンクレーブとを含むマシン、および構成証明の証明書（ａｔｔｅｓｔａｔｉｏｎ  ｃｅｒｔｉｆｉｃａｔｅ）を示す図である。
【図２】[0011]計算ファブリック（ｃｏｍｐｕｔｅ  ｆａｂｒｉｃ）とキーファブリック（ｋｅｙ  ｆａｂｒｉｃ）とを含むクラウドシステムを示す図である。
【図３】[0012]クラウドシステム上のテナントをセキュアに管理する方法を示す図である。
【発明を実施するための形態】
【００１１】
[0013]本明細書に示される実施形態は、ハードウェアベースのキー保護システム、およびクラウドコンピューティングシステム中の仮想マシン（ＶＭ）のハードウェアベースの保護のための機能を含む。特に、いくつかの現代のプロセッサは、選択されたコードおよびデータを開示または修正から保護するために使用することができる、ハードウェア命令およびアーキテクチャコンポーネントを含む。アプリケーションは、セキュリティを高める、ＣＰＵ強化「エンクレーブ」または保護された実行領域に区分することができる。特に、本明細書で使用されるエンクレーブは、エンクレーブ自体中にないソフトウェアについてアクセスが防がれるアプリケーションのアドレス空間の保護された領域である。保護されたデータおよびコードはＣＰＵレベルで保護されるので、危害を受けたプラットフォーム上でさえこのセキュリティを維持することができる。すなわち、ＣＰＵは、外部ソフトウェアがエンクレーブにアクセスするのを防ぐことができる。これらのエンクレーブは、セキュアテナントデータ暗号化キー転送と、テナントデータに基づいて動作するためのセキュア仮想マシンとを実装するために使用することができる。そのようなエンクレーブおよび保護されたコンピューティングの一例は、カリフォルニア州サンタクララのＩｎｔｅｌ  Ｃｏｒｐｏｒａｔｉｏｎから利用可能なＩｎｔｅｌ  ＳＧＸ（ソフトウェアガードエクステンション（Ｓｏｆｔｗａｒｅ  Ｇｕａｒｄ  Ｅｘｔｅｎｓｉｏｎｓ））において利用可能である。
【００１２】
[0014]図１はマシン１００を示す。マシン１００は、プログラミング命令を実行するように構成された物理ハードウェアデバイスである。たとえば、マシンは、中央処理装置（ＣＰＵ）を含んでもよい。マシンはエンクレーブ１０２を含む。エンクレーブ１０２は、保護されたコードおよびデータを含む保護された実行領域である。エンクレーブ１０２は、エンクレーブ１０２が（ＣＰＵレベルで制限されるように）制限されたイングレス（ingress）およびエグレス（egress）を有するという点で保護される。特に、実行コードおよび／またはデータがエンクレーブ中に入れられると、外部エンティティは、実行コードおよび／またはデータを調べることができない。これは、プロセッサ状態とレジスタ状態の両方を含む。さらに、外部エンティティは、実行コードおよび／またはデータを修正することができない。データを外部レジスタ１０４中に入れることができ、エンクレーブ１０２中で実行しているコードがそれにアクセスすることができるが、エンクレーブ１０２は、必要とするとき、このコードにアクセスする。以下に示されているように、エンクレーブ１０２中に、キー１０８などのキーを管理エンクレーブ１０６が与えることができる場合を除いて、データをエンクレーブ１０２中に強制的に与えることはできない。
【００１３】
[0015]述べられたように、図１は管理エンクレーブ１０６を示す。管理エンクレーブは、管理エンクレーブが保護された実行領域であるという点で、エンクレーブ１０２と同様である。しかしながら、１つの差異は、エンクレーブ１０２中に、キー１０８などのキーを与える能力を管理エンクレーブ１０６が有することである。
【００１４】
[0016]エンクレーブ１０２からのエグレスが制限される間、エンクレーブ１０２が生成し、エンクレーブ１０２の外部に与えることができる１つのアイテムは、構成証明の証明書１１０である。構成証明の証明書１１０は、エンクレーブが、特定のプラットフォーム上で動作しており、エンクレーブ１０２自体に関する情報とともに特定の管理エンクレーブによって管理されることを認証するために使用される、検証可能な情報を含むことができる。
【００１５】
[0017]特に、エンクレーブ１０２によって生成された構成証明の証明書１１０は、プラットフォーム構成証明１１２を含む。プラットフォーム構成証明１１２は、エンクレーブ１０２が特定のプラットフォーム上で実装されていることの検証可能な証明（ｖｅｒｉｆｉａｂｌｅ  ｐｒｏｏｆ）を含む。これは、たとえば、特定のマシン１００を含んでもよい。たとえば、マシン１００は、特定のマシン１００に固有である検証可能な証明を作成するために評価することができるシリアル番号または他の特性もしくはコンポーネントを含んでもよい。たとえば、プロセッサのシリアル番号および／またはマシン１００の他の特性もしくはコンポーネントを使用して検証可能な証明を作成するために、ハッシュアルゴリズムを使用してもよい。たとえば、ハッシュアルゴリズムは、マシン１００中の異なるコンポーネントのシリアル番号、マシン１００中のコンポーネントのいくつかのモデル番号（または他の特性）のセット、またはマシン１００の他の特性に対してハッシングしてもよい。
【００１６】
[0018]代替的に、これは、単に、マシン１００が属するプラットフォームが概してエンクレーブサポートを有することの検証可能な証明でもよい。たとえば、マシン１００がエンクレーブサポートを含むことの検証可能な証明を与えてもよい。
【００１７】
[0019]エンクレーブ１０２によって生成された構成証明の証明書１１０は、管理構成証明１１４を含む。管理構成証明１１４は、エンクレーブ１０２が管理エンクレーブ１０６によって管理されていることの、エンクレーブ１０２のフィンガープリントなどの検証可能な証明を含む。たとえば、エンクレーブ１０２を管理するために管理エンクレーブが使用されていることの検証可能な証明を作成するために、管理エンクレーブ中のコードを使用してもよい。たとえば、ハッシュアルゴリズムを管理エンクレーブ１０６のコードおよび／またはデータに適用して検証可能な証明を生成してもよく、検証可能な証明は、次いで、管理構成証明１１４において使用することができる。
【００１８】
[0020]エンクレーブ１０２によって生成された構成証明の証明書１１０は、エンクレーブ構成証明１１６を含む。エンクレーブ構成証明１１６は、エンクレーブについての検証可能な証明を含む。たとえば、エンクレーブ構成証明１１６は、エンクレーブ１０６中のコードおよび／またはデータのフィンガープリントを含んでもよい。
【００１９】
[0021]エンクレーブ１０２によって生成された構成証明の証明書１１０は、暗号化機能１１８を含む。暗号化機能１１８は、データを暗号化するために使用することができ、データは、次いで、レジスタ１０４に入れられる。たとえば、暗号化機能１１８は、ディフィーへルマン（Ｄｉｆｆｉｅ−Ｈｅｌｌｍａｎ）キー交換など、公開キー交換方式のための公開キー交換の一部として使用することができる。このようにして、データをエンクレーブ１０２にセキュアに与えることができる。
【００２０】
[0022]これを基礎として、クラウドサービスのテナントのための仮想マシンを実装する際のこの特殊なプロセッサ機能の使用を示す、図２に注目する。特に、一般にクラウドサービス２００の顧客テナントはセキュアインフラストラクチャを有さず、したがって、テナントは、クラウドサービスプロバイダーからリソースを購入し、クラウドサービスプロバイダーは、セキュアインフラストラクチャを与えることが可能である。クラウドサービス２００では、計算リソース（たとえば、プロセッササイクル）などのクラウドリソース、メモリリソース、およびストレージリソースが、いくつかの異なるテナントの間で共有される。クラウドサービス２００における物理マシンは、リソースをホストし、必要に応じて様々なテナントのためのリソースを与える。しかしながら、テナントはまた、クラウドサービスプロバイダーが、暗号化されていないテナントデータへのアクセスを有することを希望しない。したがって、特定のテナントは、そのテナントのデータに関連付けられたキー１０８を有し、キー１０８は、テナントのデータ１２０が他のテナントにまたはクラウドサービス２００における個人に露出されないことを保証するセキュアなやり方で使用される。異なるマシン上のリソースが共有され、異なる時間に異なるテナントのために異なるマシンを使用することができるので、キー１０８は、異なるマシンの間で共有可能であり、クラウドサービス２００によって保持される必要があり、クラウドサービス２００がキー１０８についての値を知らないことの検証可能な証明が与えられる必要がある。
【００２１】
[0023]図示の例では、キー管理ファブリック１２４および計算ファブリック１２６を使用することによって、これを達成することができる。
[0024]キー管理ファブリック１２４は、いくつかのマシン１１０−２−１〜１００−２−ｍを備え、いくつかのマシン１１０−２−１〜１００−２−ｍは、クラウドサービス２００におけるマシンから選択され、特定のテナントのためのキー１０８を管理するように構成される。このようにして、望まれるのと同数の冗長レベルでテナントのためのキーを冗長的に記憶することができる。
【００２２】
[0025]キー管理ファブリック１２４中の各マシンは、それぞれ、ローカルストレージ１２２−１〜１２２−ｍに結合される。
[0026]図２は計算ファブリック１２６を示す。計算ファブリックは、いくつかのマシン１００−１−１〜１００−１−ｎを備え、いくつかのマシン１００−１−１〜１００−１−ｎは、クラウドサービス２００において利用可能なマシンから選択され、テナントのための仮想マシンを実装するように構成される。特に、テナントは、いくつかの仮想マシンがテナントのために動作することを希望する。エンクレーブ１０２−１−１〜１０２−１−ｎを使用してこれらの仮想マシンを実装することができる。特に、エンクレーブ１０２−１−１〜１０２−１−ｎ中でＶＭコードを実装することができる。各エンクレーブのためのコードを、クラウドサービスプロバイダーによって与えることができ、または、テナントによってクラウドサービスプロバイダーに与えて、テナントのためのエンクレーブを実装することができる。いずれの場合も、テナントは、エンクレーブについてのフィンガープリントを有する各エンクレーブのためのエンクレーブ構成証明を含む、ＶＭを動作させるエンクレーブによって生成された構成証明の証明書を検査することによって、ＶＭを検証することができる。
【００２３】
[0027]マシン１００−１−１〜１００−１−ｎおよび１００−２−１〜１００−２−ｍが各々、それぞれ管理エンクレーブ１０６−１−１〜１０６−１−ｎおよび１０６−２−１〜１０６−２−ｍを有することに留意されたい。いくつかの実施形態では、管理エンクレーブ１０６−１−１〜１０６−１−ｎおよび１０６−２−１〜１０６−２−ｍはすべて、それらの中で実行している同じ実行可能コードを有する。したがって、テナントのためのマシン上のエンクレーブは、キーファブリック１２４中にあるのか計算ファブリック１２６中にあるのかにかかわらず、すべて、図１に示されているものなど、同じ管理構成証明をもつ構成証明の証明書を生成する。これは、管理エンクレーブ１０６−１−１〜１０６−１−ｎおよび１０６−２−１〜１０６−２−ｍの各々が、セキュアなやり方で互いと通信し、管理構成証明を生成することができない管理エンクレーブとの通信を拒否することを可能にする。この機能を使用して、特定のテナントのためのセキュアキー作成および管理を達成することができる。
【００２４】
[0028]とはいえ、以下でより詳細に説明されるように、管理エンクレーブを検証するために他のモダリティーを使用することができることに留意されたい。たとえば、代替実施形態では、同じフィンガープリントを共有しない２つの管理エンクレーブは、依然として、互いを信頼できると認識することができる。エンクレーブは、複雑で柔軟なポリシーを実装することができる。したがって、たとえば、管理エンクレーブ１０６−１−１〜１０６−１−ｎは、異なり、管理エンクレーブ１０６−２−１〜１０６−２−ｍとは異なるフィンガープリントを有してもよいが、依然として、信頼性分析に基づいて互いと通信することが可能である場合がある。同様に、管理エンクレーブ１０６−１−１〜１０６−１−ｎのうちの１つまたは複数は、互いとは異なるが、依然として、信頼性分析に基づいて互いと通信することが可能である場合がある。同様に、管理エンクレーブ１０６−２−１〜１０６−２−ｍのうちの１つまたは複数は、互いとは異なるが、依然として、信頼性分析に基づいて互いと通信することが可能である場合がある。
【００２５】
[0029]たとえば、いくつかの実施形態では、管理エンクレーブは、別の管理エンクレーブが同じコードの異なるバージョンを実行していると決定することが可能である場合がある。たとえば、コード作成者、署名局（ｓｉｇｎｉｎｇ  ａｕｔｈｏｒｉｔｙ）に関係する情報を検証するために構成証明の証明書（たとえば、構成証明の証明書１１０）のエンクレーブ構成証明（たとえば、エンクレーブ構成証明１１６）を検査することによって、または他のやり方で、これを達成することができる。たとえば、エンクレーブ構成証明は、署名局の指示、コードの機能が何であるかの署名局宣言（ｓｉｇｎｉｎｇ  ａｕｔｈｏｒｉｔｙ  ｄｅｃｌａｒａｔｉｏｎ）の指示、およびコードの署名局宣言バージョンの指示の３つすべてを使用して作成されたインジケーターを含んでもよい。受信管理エンクレーブは、これらの３つのインジケーターを検証するための機能を含んでもよい。
【００２６】
[0030]したがって、管理エンクレーブは、管理エンクレーブコード中に組み込まれた一致機能（ｍａｔｃｈｉｎｇ  ｆｕｎｃｔｉｏｎａｌｉｔｙ）を有してもよい。この一致機能は、エンクレーブ構成証明における完全な一致を必要とするように構成することができるか、または、承認された変更を可能にすることができる。
【００２７】
[0031]たとえば、以下のシナリオを考慮する。第１のシナリオでは、管理エンクレーブ１０６−２−１が構成証明の証明書１１０−１を生成する。構成証明の証明書１１０−１は、エンクレーブ構成証明１１６−１を含む。エンクレーブ構成証明１１６−１は、管理エンクレーブ１０６−２−１に関する情報を含む。たとえば、示されている本シナリオでは、管理エンクレーブ１０６−２−１は、管理エンクレーブ１０６−２−１を実装するコードのハッシュを計算するための機能を含んでもよい。この例では、管理エンクレーブは、他の管理エンクレーブを信頼するために、一致するコードを必要とする。したがって、管理エンクレーブ１０６−１−１が構成証明の証明書１１０−１を受信した場合、管理エンクレーブ１０６−１−１は、管理エンクレーブ１０６−１−１が、それ自体の管理エンクレーブコードをハッシングすることによってエンクレーブ構成証明１１６−１を生成することができる場合のみ、管理エンクレーブ１０６−２−１を信頼する。
【００２８】
[0032]代替実施形態では、管理エンクレーブは、他の管理エンクレーブがまったく同じコードを実行していないときでも、それらの他の管理エンクレーブを信頼することができると決定することが可能である場合がある。たとえば、管理エンクレーブ１０６−２−１は、構成証明の証明書１１０−１を生成する場合があり、構成証明の証明書１１０−１は、管理エンクレーブ１０６−２−１中で実行している管理エンクレーブコードの作成者の検証可能な証明と、管理エンクレーブ１０６−２−１中で実行しているエンクレーブコードの目的の検証可能な証明と、管理エンクレーブ１０６−２−１中で実行している管理エンクレーブコードのバージョンの検証可能な証明とに基づくエンクレーブ構成証明１１６−１を含む。管理エンクレーブ１０６−１−１を含む、管理エンクレーブの各々は、構成証明の証明書１１０−１を受信し、エンクレーブ構成証明１１６−１を検証するための機能を含んでもよい。
【００２９】
[0033]以下は、いくつかの実施形態において検証がどのように機能するかの様々な例を示す。構成証明の証明書は、エンクレーブを一意に識別することができる情報を含んでいる。これは、作成されたときにエンクレーブ中にロードされたコードおよびデータのすべてのデジタルフィンガープリントを含み、随意に、何らかの信用局（ｔｒｕｓｔｅｄ  ａｕｔｈｏｒｉｔｙ）によって署名された識別情報をも含むことができる。最も単純な場合には、管理エンクレーブが以下のような事を行うことによって、（たとえば２つの管理エンクレーブ間の）検証を実施することができる。
【００３０】
[0034]１）他方の管理エンクレーブに構成証明報告を送るように依頼する。
[0035]２）他方の管理エンクレーブからの構成証明報告が信頼できる構成証明報告であることを示すために、その構成証明報告がリモートシステムによって正しく署名されることを検証する。
【００３１】
[0036]３）ＣＰＵにそれ自体のための構成証明報告を準備するように依頼する（その構成証明報告はＣＰＵから直接来たので信頼できる）。
[0037]４）自己構成証明（ｓｅｌｆ−ａｔｔｅｓｔａｔｉｏｎ）中に存在する識別情報をリモート構成証明中に存在する識別情報と比較する。それらの識別情報が一致する場合、管理エンクレーブは、それ自体の別のコピーと通信しており、したがって、それを信頼することができる。
【００３２】
[0038]異なるバージョンの管理エンクレーブによって使用されるか、またはエンクレーブと管理エンクレーブとの間で使用される代替バージョンは、ステップ３〜４の代わりに、リモート構成証明中の識別情報と、どのアイデンティティが信頼できるエンクレーブを表すかを決定するために使用されるポリシー情報との比較を行うことである。
【００３３】
[0039]キー１０８をキーファブリック１２４に冗長的に記憶することができる。キーファブリック１２４は、いくつかの異なるやり方でキー１０８を取得することができる。たとえば、いくつかの実施形態では、テナントは、管理エンクレーブ１０６−２−１など、管理エンクレーブのうちの１つにキー１０８を与えてもよい。代替的に、管理エンクレーブは、マシンからキー１０８を取得するための機能を含んでもよい。したがって、たとえば、管理エンクレーブ１０６−２−１は、マシン１００−２−１におけるＣＰＵが適切なアルゴリズムを使用して適切なキーを計算することを要求してもよい。
【００３４】
[0040]キー１０８を冗長的に記憶するために、管理エンクレーブ１０６は互いとキーを共有することが可能であるが、関連付けられたエンクレーブがテナントのデータを解読することができるように、管理エンクレーブ１０６がそれらの関連付けられたエンクレーブ中でキー１０８を与えることができることを除いて、他の危害を受けた管理エンクレーブ、または、いくつかの実施形態では、同じコード（またはコードの承認されたおよび検証可能なバージョン、たとえば、管理エンクレーブコードの異なるバージョン）を実行していない他の管理エンクレーブを含む、他のエンティティとキーを共有しない。上述のように、管理エンクレーブ１０６−２−１は、マシン１００−２−１におけるＣＰＵが何らかの適切なアルゴリズムを使用して適切なキーを計算することを要求してもよい。その導出のルートが、管理エンクレーブによって他のエンクレーブに後で与えられるキーである。したがって、管理エンクレーブは、ＣＰＵがキー導出のために使用するロケーション中にキーを与える。代替実施形態では、管理エンクレーブは、キーを与えるために、別のマシンにおける特殊レジスタ中にキーを入れる。
【００３５】
[0041]管理エンクレーブは、いくつかの実施形態では、同じ管理エンクレーブコード、または上記で説明されたものなどの他の承認されたコードを管理エンクレーブが実行していると決定することなどによって、別の管理エンクレーブが信頼されると管理エンクレーブが決定することができない限り、別の管理エンクレーブにキー１０８を与えない。管理構成証明が一致すると決定するために管理エンクレーブの構成証明の証明書を検査することによって、これを達成することができる。したがって、この例では、管理エンクレーブは、別の管理エンクレーブが同じフィンガープリント、または承認されたフィンガープリントを有すると決定することができ、したがって、他の管理エンクレーブと通信することは安全である。
【００３６】
[0042]管理エンクレーブ１０６−２−１〜１０６−２−ｍの各々は、特定のマシンに固有のマシンキーを使用して管理キーを暗号化し、その特定のマシン上で、管理エンクレーブは、それぞれ、暗号化されたキー１０８−１〜１０８−ｍを作成し、暗号化されたキー１０８−１〜１０８−ｍを、それらのそれぞれのマシンに関連付けられたストレージ１２２−１〜１２２−ｍに記憶するために動作している。管理エンクレーブ１０６−２−１〜１０６−２−ｍの各々は、暗号化されたテナントキーを、各々のそれぞれのマシン上で、ローカルにおよび排他的にストレージに記憶するように構成される。すなわち、キー管理ファブリック中で動作する管理エンクレーブは、顧客キーを、暗号化された形態でそれらのローカルストレージに、それらのローカルストレージのみに記憶する能力を有する。
【００３７】
[0043]仮想マシンをスピンアップする（ｓｐｉｎ  ｕｐ）ために、計算ファブリック１２６中のマシンが、管理エンクレーブ１０６およびエンクレーブ１０２をスピンアップする。たとえば、図２に示されている例では、マシン１００−１−１が、管理エンクレーブ１０６−１−１およびエンクレーブ１０２−１−１をスピンアップする。管理エンクレーブ１０６−１−１は、キーファブリック１２４中の管理エンクレーブ１０６−２−１〜１０６−２−ｍと同じコードを実行する。したがって、管理エンクレーブ１０６−１−１は、構成証明の証明書を使用して、管理エンクレーブ１０６−２−１〜１０６−２−ｍとセキュアに通信することができる。これは、キーファブリック１２４中の管理エンクレーブが、暗号化されたテナントキーをストレージから取り出し、暗号化されたキーを解読し、計算ファブリック中の管理エンクレーブにキー１０８を与えることを可能にする。たとえば、管理エンクレーブ１０６−２−１は、暗号化されたキー１０８−１をストレージ１２２−１から取り出してもよい。管理エンクレーブ１０６−２−１は、キー１０８を取得するために、マシン１００−２−１のためのマシンキーを使用して、暗号化されたキー１０８−１を解読することができる。次いで、管理エンクレーブ１０６−１−１にキー１０８を与えることができる。
【００３８】
[0044]マシン１００−１−１において、管理エンクレーブ１０６−１−１は、エンクレーブ１０２−１−１中にキー１０８を与えることができる。次いで、エンクレーブ１０２−１−１は、ストレージ１２０からテナントについてのデータを取得し、キー１０８を使用してデータを解読することができる。一実施形態では、ＣＰＵによって定義されたエンクレーブアーキテクチャは、管理エンクレーブのみに利用可能な特権命令を提供してもよく、特権命令は、管理エンクレーブがエンクレーブのアドレス空間中に直接キーを送出することを許可する。別の実施形態では、管理エンクレーブとエンクレーブとは、相互認証を使用して（構成証明を介して）セキュア接続を確立することができ、管理エンクレーブは、セキュア接続を介してキーを送出することができる。
【００３９】
[0045]テナントのエンクレーブ中でのキー可搬性を希望するテナントは、クラウドサービス２００がテナントの代わりにキー管理を行うことを信頼しなければならないか、または、テナント自体のキー管理システムを供給しなければならないかのいずれかである。いずれのモデルも、クラウドサービスがキーを秘密にしておくことを顧客が信頼する必要なしに実装することができ、これは、ハードウェアが顧客のためにそれを行うからである。したがって、要約すれば、設計は以下の通りでもよい。
【００４０】
[0046]設計はキー管理ファブリックを含み、キー管理ファブリックは、（クラウドプロバイダーが書き込むことができるかまたは顧客が供給することができる）顧客ごとのキー管理エンクレーブをホストするサーバーのセットを含む。各サーバーは、その顧客のためのマスターキーを記憶する、顧客ごとの（移行不可能な）管理エンクレーブを実行することが可能である。
【００４１】
[0047]２．新しい顧客マスターキーが望まれるとき、キー管理ファブリックは、各キー管理サーバー上で顧客の管理エンクレーブのインスタンスを開始する。１つのインスタンスが新しいランダムキーを生成し、次いで、（各エンドポイントがその顧客のための正しい管理エンクレーブであることを検証するためにエンクレーブ構成証明を使用して）新しいランダムキーをすべての他のインスタンスに分配する。次に、顧客のマスターキーが十分に複製される。
【００４２】
[0048]３．各管理エンクレーブは、マスターキーを封印するためのＣＰＵ導出暗号化キーを取得する。この封印キーは、エンクレーブアーキテクチャによって生成され、マシン固有秘密と管理エンクレーブの暗号学的ハッシュとを含む。次に、各マスターキーは、ハードウェア保護されたキーを使用して各キー管理サーバー上に残存される。
【００４３】
[0049]４．顧客ワークロードエンクレーブがマスターキーを必要とするとき、顧客ワークロードエンクレーブは、顧客固有管理エンクレーブのインスタンスへの接続を取得するためにキー管理ファブリックに接触する。顧客ワークロードエンクレーブは、そのエンクレーブへのセキュア接続を確立し、それが正しい管理エンクレーブからキーを取得していることを検証するために構成証明を使用し、次いで、キーを取得する。
【００４４】
[0050]そのようなシステムは、以下の性質のうちの１つまたは複数を有してもよい。
[0051]Ａ．各マスターキーは（ＣＰＵのエンクレーブキー保護によって）正確なキー管理コードに特有の暗号化キーで封印されるので、クラウドデータセンターが、マスターキーを開示することを強要されることは不可能である。開示を許可するために管理エンクレーブを修正しようとする試みは、封印キーの変更を生じ、したがって、マスターキーが成功裡に解読されることを防ぐ。さらに、マスターキーを管理エンクレーブの開示可能（ｄｉｓｃｌｏｓｕｒｅ−ｃａｐａｂｌｅ）バージョンに明かすようにそのエンクレーブの開示抵抗性（ｄｉｓｃｌｏｓｕｒｅ−ｒｅｓｉｓｔａｎｔ）バージョンを説得しようとする試みは、（各管理エンクレーブは、マスターキーを、開示抵抗性であることがわかっている管理エンクレーブのバージョンのみに明かすので）構成証明によって防がれる。
【００４５】
[0052]Ｂ．各顧客ワークロードは、それのキーが管理エンクレーブの特定の開示抵抗性バージョンによって与えられていることの構成証明を行うことができるので、管理エンクレーブがマスターキーの開示を許可しないことを検証することができる。疑い深い顧客は、管理エンクレーブ自体を供給することによってこの保証を取得することができる。
【００４６】
[0053]Ｃ．キー利用可能性を保証するためにキー管理ファブリックが十分な複製を与えるので、マスターキーは災害から保護される。
[0054]次に、以下の説明は、実施することができるいくつかの方法および方法の行為に言及する。方法の行為をある順序で説明するか、または特定の順序で行われるものとしてフローチャートで示す場合があるが、特に明記されていない限り、特定の順序付けは必要とされず、または、行為は、その行為が実施されるより前に別の行為が完了することに依存するので、特定の順序付けは必要とされない。
【００４７】
[0055]次に図３を参照すると、方法３００が示されている。方法３００は、クラウドシステム上のテナントをセキュアに管理するための行為を含む。方法は、テナントキーを取得すること（行為３０２）を含む。たとえば、方法３００では、クラウドサービスのテナントからテナントキーを取得してもよい。代替または追加として、クラウドサービスにおいてテナントキーを生成し、それを管理エンクレーブが取得してもよい。代替または追加として、特定の管理エンクレーブが別の管理エンクレーブからテナントキーを取得してもよい。以下でより詳細に説明されるように、管理エンクレーブが同じアプリケーションコードを実行することによって、これを可能にすることができる。同じアプリケーションコードが同じアプリケーションコードの異なるバージョンを含んでもよいことに留意されたい。すなわち、ある管理エンクレーブはアプリケーションコードのあるバージョンを実行していてもよく、異なる管理エンクレーブは同じアプリケーションコードの異なるバージョンを実行している。しかしながら、管理エンクレーブは、それにもかかわらず、（同じバージョンであるのか異なるバージョンであるのかにかかわらず）アプリケーションコードを検証することによって互いにテナントキーを受け渡すことが可能である場合がある。
【００４８】
[0056]方法３００は、クラウドサービスにおける計算ファブリック中のマシン上の管理エンクレーブにおいて、マシン上のエンクレーブ中にテナントキーを与えること（行為３０２）をさらに含む。管理エンクレーブとエンクレーブとは、所与のエンクレーブについて、管理エンクレーブがテナントエンクレーブにキーを与えることができることを除いて、所与のエンクレーブ自体中にないアプリケーションコードについてアクセスが防がれるアプリケーションアドレス空間の保護された領域である。いくつかの実施形態では、管理エンクレーブと同じマシン上で動作しているエンクレーブ中にテナントキーを与えることのみが可能であるように管理エンクレーブを制限することができる。したがって、たとえば、管理エンクレーブ１０６−１−１は、管理エンクレーブ１０６−１−１とエンクレーブ１０２−１−１とが両方とも同じマシン１００−１−１上で動作しているので、エンクレーブ１０２−１−１中にキー１０８を与えることが可能である。しかしながら、管理エンクレーブ１０６−１−１は、管理エンクレーブ１０６−１−１とエンクレーブ１０２−１−２とが異なるマシン上にあるので、エンクレーブ１０２−１−２中にキー１０８を与えることが可能でない。
【００４９】
[0057]エンクレーブは、クラウドサービステナントのための機能を実施するように構成される。アプリケーションコードはエンクレーブの異なるインスタンス中にある場合があるが、そのアプリケーションコードが同じアプリケーションコードである限り、それは、そのエンクレーブにアクセスすることができることに留意されたい。たとえば、管理エンクレーブ１０６−２−１は、管理エンクレーブ１０６−２−１と管理エンクレーブ１０６−１−１の両方が同じアプリケーションコードを実行している場合、管理エンクレーブ１０６−１−１にキー１０８を与えることが可能である場合がある。述べられたように、図２に示されている構成証明の証明書１１０−１など、構成証明の証明書を使用して、これを確認することができる。
【００５０】
[0058]本明細書で使用される同じ「アプリケーションコード」が同じコードの異なるバージョンを含んでもよいことにさらに留意されたい。しかしながら、同じアプリケーションコードの異なるバージョンとの通信を可能にするように、管理エンクレーブ中のアプリケーションコードを構成することができる。たとえば、管理エンクレーブ１０６−２−１は、管理エンクレーブ１０６−２−１と管理エンクレーブ１０６−１−１の両方が同じアプリケーションコードの異なるバージョンを実行している場合、管理エンクレーブ１０６−１−１にキー１０８を与えることが可能である場合がある。述べられたように、図２に示されている構成証明の証明書１１０−１など、構成証明の証明書を使用して、これを確認することができる。たとえば、いくつかの実施形態は、管理エンクレーブのためのエンクレーブ構成証明を含む構成証明の証明書を検証してもよい。エンクレーブ構成証明は、署名局の検証可能な証明と、アプリケーションコードがどの機能を有するかの署名局宣言の検証可能な証明と、アプリケーションコードの署名局宣言バージョンの検証可能な証明とを含む。
【００５１】
[0059]したがって、方法３００を実施してもよく、テナントキーを取得することは、同じアプリケーションコードのバージョンを実行している別の管理エンクレーブが相互に承認可能および認証可能な管理エンクレーブコードを実行していることを検証することによって、別の管理エンクレーブからテナントキーを取得することを含み、それにより、管理エンクレーブが管理エンクレーブコードを承認および認証することによって、テナントキーを信頼された様式で管理エンクレーブ間で受け渡すことができる。
【００５２】
[0060]いくつかのそのような実施形態では、別の管理エンクレーブが相互に承認可能および認証可能なアプリケーションコードを実行していることを検証することは、別の管理エンクレーブが同等のアプリケーションコードを実行していることを検証することを含む。
【００５３】
[0061]代替または追加として、いくつかのそのような実施形態では、別の管理エンクレーブが相互に承認可能および認証可能な管理エンクレーブコードを実行していることを検証することは、別の管理エンクレーブが、アプリケーションコードの異なるバージョンとして検証することができるアプリケーションコードの異なるバージョンを実行していることを検証することを含む。
【００５４】
[0062]いくつかのそのような実施形態では、別の管理エンクレーブが管理エンクレーブコードの異なるバージョンを実行していることを検証することは、管理エンクレーブのためのエンクレーブ構成証明を含む構成証明の証明書を検証することを含む。エンクレーブ構成証明は、署名局の検証可能な証明と、アプリケーションコードがどの機能を有するかの署名局宣言の検証可能な証明と、アプリケーションコードの署名局宣言バージョンの検証可能な証明とを含む。
【００５５】
[0063]いくつかの実施形態では、管理エンクレーブとエンクレーブとは、キー発行管理エンクレーブが信頼できる発行者であり、受信側エンクレーブがキーの信頼できる受信側であることを検証するために相互認証および構成証明を使用する、ピア（ｐｅｅｒ）である。たとえば、上記で説明されたように構成証明の証明書を使用することによって、これを実施することができる。特に、管理エンクレーブとエンクレーブとは、各々、相互に承認されたおよび検証可能なコードを他方が使用していることを検証してもよい。これは、管理エンクレーブとエンクレーブとが上記で定義されたように同じコードを実行することによって、または何らかの他の相互に同意されたコードによってである場合がある。
【００５６】
[0064]１つまたは複数のプロセッサと、コンピューターメモリなどのコンピューター可読媒体とを含むコンピューターシステムによって、ここで示されている実施形態を実施することができる。特に、コンピューターメモリは、１つまたは複数のプロセッサによって実行されたとき、実施形態において具陳された行為など、様々な機能を実施させるコンピューター実行可能命令を記憶してもよい。
【００５７】
[0065]本発明の実施形態は、以下でより詳細に説明されるように、コンピューターハードウェアを含む専用または汎用コンピューターを備えるかまたは利用してもよい。本発明の範囲内の実施形態は、コンピューター実行可能命令および／またはデータ構造を搬送または記憶するための物理的および他のコンピューター可読媒体をも含む。そのようなコンピューター可読媒体は、汎用または専用コンピューターシステムがアクセスすることができる任意の利用可能な媒体とすることができる。コンピューター実行可能命令を記憶するコンピューター可読媒体は、物理的記憶媒体である。コンピューター実行可能命令を搬送するコンピューター可読媒体は、伝送媒体である。したがって、限定ではなく例として、本発明の実施形態は、少なくとも２つの明確に異なる種類のコンピューター可読媒体、すなわち、物理的コンピューター可読記憶媒体および伝送コンピューター可読媒体を備えることができる。
【００５８】
[0066]物理的コンピューター可読記憶媒体は、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭもしくは（ＣＤ、ＤＶＤなどの）他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または、コンピューター実行可能命令もしくはデータ構造の形態で所望のプログラムコード手段を記憶するために使用することができ、汎用もしくは専用コンピューターがアクセスすることができる、任意の他の媒体を含む。
【００５９】
[0067]「ネットワーク」は、コンピューターシステムおよび／もしくはモジュールならびに／または他の電子デバイス間での電子データのトランスポートを可能にする１つまたは複数のデータリンクとして定義される。情報がネットワークまたは別の通信接続（ハードワイヤード、ワイヤレス、またはハードワイヤードもしくはワイヤレスの組合せのいずれか）を介してコンピューターに転送されるかまたは与えられるとき、コンピューターは、適切に接続を伝送媒体と見なす。伝送媒体は、コンピューター実行可能命令またはデータ構造の形態の所望のプログラムコード手段を搬送するために使用することができ、汎用または専用コンピューターがアクセスすることができるネットワークおよび／またはデータリンクを含むことができる。上記の組合せも、コンピューター可読媒体の範囲内に含まれる。
【００６０】
[0068]さらに、様々なコンピューターシステムコンポーネントに達すると、コンピューター実行可能命令またはデータ構造の形態のプログラムコード手段を、伝送コンピューター可読媒体から物理的コンピューター可読記憶媒体に自動的に転送することができる（またはその逆も同様である）。たとえば、ネットワークまたはデータリンクを介して受信されたコンピューター実行可能命令またはデータ構造を、ネットワークインターフェースモジュール（たとえば、「ＮＩＣ」）内のＲＡＭにバッファし、次いで、最終的に、コンピューターシステムＲＡＭにおよび／またはコンピューターシステムにおけるあまり揮発性でないコンピューター可読物理的記憶媒体に転送することができる。したがって、コンピューター可読物理的記憶媒体を、同じく（さらには主に）伝送媒体を利用するコンピューターシステムコンポーネント中に含めることができる。
【００６１】
[0069]コンピューター実行可能命令は、たとえば、汎用コンピューター、専用コンピューター、または専用処理デバイスに、ある機能または機能のグループを実施させる命令およびデータを含む。コンピューター実行可能命令は、たとえば、２進数、アセンブリ言語などの中間フォーマット命令、さらにはソースコードでもよい。主題が、構造的特徴および／または方法論的行為に特有の言語で説明されたが、添付の特許請求の範囲において定義される主題は、必ずしも上記で説明された説明された特徴または行為に限定されるとは限らないことを理解されたい。むしろ、説明された特徴および行為は、特許請求の範囲を実装することの例示的な形態として開示される。
【００６２】
[0070]パーソナルコンピューター、デスクトップコンピューター、ラップトップコンピューター、メッセージプロセッサ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラマブルコンシューマエレクトロニクス、ネットワークＰＣ、ミニコンピューター、メインフレームコンピューター、携帯電話、ＰＤＡ、ページャー、ルーター、スイッチなどを含む、多くのタイプのコンピューターシステム構成をもつネットワークコンピューティング環境において、本発明を実施することができることを、当業者は諒解されよう。ネットワークを通して（ハードワイヤードデータリンク、ワイヤレスデータリンクによって、またはハードワイヤードデータリンクとワイヤレスデータリンクとの組合せによってのいずれかで）リンクされるローカルコンピューターシステムとリモートコンピューターシステムが両方ともタスクを実施する分散システム環境においても、本発明を実施することができる。分散システム環境では、ローカルメモリストレージデバイスとリモートメモリストレージデバイスの両方中にプログラムモジュールがあってもよい。
【００６３】
[0071]代替的に、または追加として、少なくとも部分的に、１つまたは複数のハードウェア論理コンポーネントによって、本明細書で説明される機能を実施することができる。たとえば、および限定はしないが、例示的なタイプの、使用することができるハードウェア論理コンポーネントは、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラム固有集積回路（ＡＳＩＣ）、プログラム固有標準製品（ＡＳＳＰ）、システムオンチップシステム（ＳＯＣ）、複合プログラマブル論理デバイス（ＣＰＬＤ）などを含む。
【００６４】
[0072]本発明は、それの趣旨または特性から逸脱することなく、他の特定の形態で具現化することができる。説明された実施形態は、すべての点で例示的にすぎず、限定的でないと見なされるべきである。本発明の範囲は、したがって、上記の説明によってというよりむしろ添付の特許請求の範囲によって示される。特許請求の範囲の等価の意味および範囲内に入るすべての変更は、特許請求の範囲内に包含されるべきである。
【図１】
2019536363.tif 000003
【図２】
2019536363.tif 000004
【図３】
2019536363.tif 000005
【国際調査報告】
2019536363.tif 000006
2019536363.tif 000007