(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-11-18
(45)【発行日】2022-11-29
(54)【発明の名称】セキュアキー管理
(51)【国際特許分類】
H04L 9/08 20060101AFI20221121BHJP
【FI】
H04L9/08 B
(21)【出願番号】P 2019525807
(86)(22)【出願日】2017-11-07
(86)【国際出願番号】 US2017060261
(87)【国際公開番号】W WO2018089319
(87)【国際公開日】2018-05-17
【審査請求日】2020-11-02
(32)【優先日】2016-11-14
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2017-03-14
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】314015767
【氏名又は名称】マイクロソフト テクノロジー ライセンシング,エルエルシー
(74)【代理人】
【識別番号】100118902
【氏名又は名称】山本 修
(74)【代理人】
【識別番号】100106208
【氏名又は名称】宮前 徹
(74)【代理人】
【識別番号】100120112
【氏名又は名称】中西 基晴
(74)【代理人】
【識別番号】100162846
【氏名又は名称】大牧 綾子
(72)【発明者】
【氏名】ラング,ジョナサン・イー
【審査官】打出 義尚
(56)【参考文献】
【文献】米国特許出願公開第2015/0033316(US,A1)
【文献】特表2013-528872(JP,A)
【文献】特開2012-155725(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/08
(57)【特許請求の範囲】
【請求項1】
第1の複数のハードウェアマシンを備える計算ファブリックであって、前記第1の複数のハードウェアマシンの各々が第1の管理エンクレーブとテナントエンクレーブとを実行し、前記テナントエンクレーブ中に1つまたは複数のテナントキーを
前記第1の管理エンクレーブにより与えることができることを除いて、前記テナントエンクレーブが、前記テナントエンクレーブ中にないアプリケーションコードによってアクセスすることが防がれるアプリケーションアドレス空間の保護された領域に対応し、前記第1の管理エンクレーブは、前記第1の管理エンクレーブが前記テナントエンクレーブに前記1つまたは複数のテナントキーを与えることを許可されることを除いて、前記第1の管理エンクレーブ中にないアプリケーションコードによってアクセスすることが防がれるアプリケーションアドレス空間の保護された領域に対応する、計算ファブリックと、
第2の複数のハードウェアマシンを備えるキーファブリックであって、前記第2の複数のハードウェアマシンの各々が第2の管理エンクレーブを実行し、前記第2の複数のハードウェアマシンの各々について、前記第2の管理エンクレーブが、1つまたは複数の暗号化されたテナントキーを前記第2の複数のハードウェアマシンの各々にローカルにおよび排他的に記憶させるように構成され、前記第1の管理エンクレーブおよび前記第2の管理エンクレーブの各々は、相互に承認可能および認証可能な管理エンクレーブアプリケーションコードを実行し、それにより、異なるハードウェアマシンの管理エンクレーブが管理エンクレーブアプリケーションコードを承認および認証することによって、テナントキーを信頼された様式で前記管理エンクレーブ間で受け渡すことを可能にする、キーファブリックと
を備えるシステム。
【請求項2】
前記第1の管理エンクレーブおよび前記第2の管理エンクレーブの各々が、同等のアプリケーションコードを実行することによって、相互に承認可能および認証可能な管理エンクレーブアプリケーションコードを実行する、請求項1に記載のシステム。
【請求項3】
前記第1の管理エンクレーブおよび前記第2の管理エンクレーブの各々が、同じアプリケーションコードの異なるバージョンとして検証することができる同じアプリケーションコードの異なるバージョンを実行することによって、相互に承認可能および認証可能な管理エンクレーブアプリケーションコードを実行する、請求項1に記載のシステム。
【請求項4】
前記第1の管理エンクレーブおよび前記第2の管理エンクレーブが、管理エンクレーブのためのエンクレーブ構成証明を含む構成証明の証明書を検証することによって同じアプリケーションコードの異なるバージョンを検証するように構成され、前記エンクレーブ構成証明が、署名局の検証可能な証明と、アプリケーションコードがどの機能を有するかの署名局宣言の検証可能な証明と、アプリケーションコードの署名局宣言バージョンの検証可能な証明とを含む、請求項3に記載のシステム。
【請求項5】
前記第2の管理エンクレーブの各々は、各第2の管理エンクレーブが動作しているマシンのためのマシンキーを使用してテナントキーを暗号化および解読するように構成された、請求項1に記載のシステム。
【請求項6】
前記システムがテナントキーを生成するように構成された、請求項1に記載のシステム。
【請求項7】
前記システムがテナントからテナントキーを受信するように構成された、請求項1に記載のシステム。
【請求項8】
ハードウェアマシンであって、
1つまたは複数のハードウェアプロセッサを備え、1つまたは複数のハードウェアプロセッサは、
テナントエンクレーブであって、1つまたは複数の管理エンクレーブが前記テナントエンクレーブ中にキーを与えることができることを除いて、前記テナントエンクレーブ自体中にないアプリケーションコードによるアクセスが防がれるアプリケーションアドレス空間の保護された領域に対応する、テナントエンクレーブと、
前記テナントエンクレーブに結合された管理エンクレーブであって、前記テナントエンクレーブにキーを与えるように構成され、前記管理エンクレーブ自体中にないアプリケーションコードによるアクセスが防がれるアプリケーションアドレス空間の保護された領域に対応する、管理エンクレーブと
を備えるハードウェアマシン。
【請求項9】
前記管理エンクレーブは、相互に承認可能および認証可能なアプリケーションコードを実行する他の管理エンクレーブと通信するように構成され、それにより、管理エンクレーブが管理エンクレーブアプリケーションコードを承認および認証することによって、テナントキーを信頼された様式で前記管理エンクレーブ間で受け渡すことができる、請求項8に記載のハードウェアマシン。
【請求項10】
前記管理エンクレーブが、同等のアプリケーションコードを実行する他の管理エンクレーブと通信するように構成された、請求項9に記載のハードウェアマシン。
【請求項11】
前記管理エンクレーブが、同じアプリケーションコードの異なるバージョンとして検証することができる同じアプリケーションコードの異なるバージョンを実行する他の管理エンクレーブと通信するように構成された、請求項9に記載のハードウェアマシン。
【請求項12】
前記管理エンクレーブが、管理エンクレーブのためのエンクレーブ構成証明を含む構成証明の証明書を検証することによって同じアプリケーションコードの異なるバージョンを検証するように構成され、前記エンクレーブ構成証明が、署名局の検証可能な証明と、アプリケーションコードがどの機能を有するかの署名局宣言の検証可能な証明と、前記アプリケーションコードの署名局宣言バージョンの検証可能な証明とを含む、請求項11に記載のハードウェアマシン。
【請求項13】
前記テナントエンクレーブが、クラウドサービステナントのための機能を実施するように構成され、前記管理エンクレーブが、前記テナントエンクレーブ中にテナントキーを与えるように構成された、請求項8に記載のハードウェアマシン。
【請求項14】
クラウドシステム上のテナントをセキュアに管理する方法であって、
キー管理ファブリック中の管理エンクレーブによりテナントキーを取得するステップと、
クラウドサービスにおける計算ファブリック中のハードウェアマシン上の管理エンクレーブにおいて、前記ハードウェアマシン上のテナントエンクレーブ中に前記テナントキーを与えるステップであって、前記計算ファブリックの管理エンクレーブは、前記計算ファブリックの管理エンクレーブ自体中にないアプリケーションコードによるアクセスが防がれるアプリケーションアドレス空間の保護された領域に対応し、テナントエンクレーブは、前記計算ファブリックの管理エンクレーブが前記テナントエンクレーブにキーを与えることができることを除いて、前記テナントエンクレーブ自体中にないアプリケーションコードによるアクセスが防がれるアプリケーションアドレス空間の保護された領域に対応し、前記テナントエンクレーブが、クラウドサービステナントのための機能を実施するように構成された、与えるステップと
を含む方法。
【請求項15】
前記テナントキーを取得するステップは、前記計算ファブリックの管理エンクレーブと同じアプリケーションコードのバージョンを実行している別の管理エンクレーブが、相互に承認可能および認証可能な管理エンクレーブコードを実行していると検証することにより、前記別の管理エンクレーブからテナントキーを取得するステップを含み、それにより、前記計算ファブリックの前記管理エンクレーブが管理エンクレーブコードを承認および認証することによって、信頼された方式で、前記計算ファブリックの前記管理エンクレーブと前記別の管理エンクレーブの間でテナントキーを受け渡すことができる、請求項1
4に記載の方法。
【請求項16】
前記別の管理エンクレーブが、相互に承認可能および認証可能なアプリケーションコードを実行していると検証するステップは、前記別の管理エンクレーブが前記計算ファブリックの前記管理エンクレーブによって実行されているアプリケーションコードと同じアプリケーションコードを実行していることを検証するステップを含む、請求項1
5に記載の方法。
【請求項17】
前記別の管理エンクレーブが相互に承認可能および認証可能な管理エンクレーブコードを実行していることを検証するステップは、別の管理エンクレーブが前記計算ファブリックの前記管理エンクレーブとは異なるバージョンのアプリケーションコードを実行していることを検証するステップを含むが、前記計算ファブリックの前記管理エンクレーブとは異なるバージョンのアプリケーションコードとして検証することができる、請求項1
5に記載の方法。
【請求項18】
前記別の管理エンクレーブが前記管理エンクレーブとは異なるバージョンのアプリケーションコードを実行していることを検証するステップは、別の管理エンクレーブのエンクレーブ構成証明を含む構成証明の証明書を検証するステップを含み、前記エンクレーブ構成証明は、署名局の検証可能な証明と、アプリケーションコードがどの機能を有するかの署名局宣言の検証可能な証明と、アプリケーションコードの署名局宣言バージョンの検証可能な証明とを含む、請求項1
7に記載の方法。
【請求項19】
前記テナントキーを取得するステップは、クラウドテナントからテナントキーを取得するステップを含む、請求項1
4に記載の方法。
【発明の詳細な説明】
【背景技術】
【0001】
背景および関連技術
[0001]コンピューターおよびコンピューティングシステムは、現代の生活のほぼあらゆる側面に影響を及ぼしている。コンピューターは、一般に、仕事、レクリエーション、ヘルスケア、輸送、エンターテインメント、家政などに関与する。
【0002】
[0002]さらに、ネットワーク接続を介して他のコンピューティングシステムに相互接続されるコンピューティングシステムの能力によって、コンピューティングシステム機能を向上させることができる。ネットワーク接続は、限定はしないが、ワイヤードもしくはワイヤレスイーサネット(登録商標)を介した接続、セルラー接続、さらには、直列、並列、USBを通したコンピューター間接続、または他の接続を含んでもよい。接続は、コンピューティングシステムが、他のコンピューティングシステムにおけるサービスにアクセスし、他のコンピューティングシステムからアプリケーションデータを迅速におよび効率的に受信することを可能にする。
【0003】
[0003]コンピューティングシステムの相互接続は、いわゆる「クラウド」コンピューティングシステムなど、分散コンピューティングシステムを容易にしている。本明細書では、「クラウドコンピューティング」は、低減された管理労力またはサービスプロバイダー対話でプロビジョニングし、リリースすることができる構成可能なコンピューティングリソース(たとえば、ネットワーク、サーバー、ストレージ、アプリケーション、サービスなど)の共有プールへの、ユビキタスで、便利で、オンデマンドのネットワークアクセスを可能にするためのシステムまたはリソースでもよい。様々な特性(たとえば、オンデマンドセルフサービス、広域ネットワークアクセス(broad network access)、リソースプーリング、迅速な弾力性(rapid elasticity)、測定されるサービス(measured service)など)、サービスモデル(たとえば、サービスとしてのソフトウェア(「SaaS:Software as a Service」)、サービスとしてのプラットフォーム(「PaaS:Platform as a Service」)、サービスとしてのインフラストラクチャ(「IaaS:Infrastructure as a Service」)、および展開モデル(たとえば、プライベートクラウド、コミュニティクラウド、パブリッククラウド、ハイブリッドクラウドなど)からクラウドモデルを構成することができる。
【0004】
[0004]クラウドコンピューティングシステムには、クラウドサービスプロバイダーおよびテナント顧客がある。テナント顧客は、クラウドコンピューティングシステムリソースを使用することを望むが、これらの顧客は、概して、クラウドサービスプロバイダーにおける個人、たとえば、クラウドサービスプロバイダー従業員またはクラウドサービスプロバイダーリソースへの物理的アクセスを有する他者が顧客のデータへのアクセスを有することを望まない。したがって、テナント顧客は、第三者が、実際にデータを閲覧することが可能でない状態でデータを管理することを望む。
【0005】
[0005]本明細書で請求される主題は、欠点を解決する実施形態、または上記で説明された環境などの環境においてのみ動作する実施形態に限定されない。むしろ、この背景は、本明細書で説明されるいくつかの実施形態を実施してもよい1つの例示的な技術分野を示すために与えられるにすぎない。
【発明の概要】
【課題を解決するための手段】
【0006】
[0006]本明細書に示される一実施形態は、マシンを含む。マシンはエンクレーブを含む。エンクレーブは、1つまたは複数の管理エンクレーブがそのエンクレーブ中にキーを与えることができることを除いて、エンクレーブ自体中にないアプリケーションコードについてアクセスが防がれるアプリケーションアドレス空間の保護された領域を含む。マシンは、エンクレーブに結合された管理エンクレーブをさらに含む。管理エンクレーブは、エンクレーブにキーを与えるように構成される。管理エンクレーブは、管理エンクレーブ自体中にないアプリケーションコードについてアクセスが防がれるアプリケーションアドレス空間の保護された領域である。
【0007】
[0007]本発明の概要は、発明を実施するための形態において以下でさらに説明される概念の選択を簡略化された形で紹介するために与えられる。本発明の概要は、請求される主題の主要な特徴または本質的な特徴を識別するものではなく、請求される主題の範囲を決定する際の補助として使用されるものでもない。
【0008】
[0008]追加の特徴および利点は、以下の説明に記載され、一部はその説明から明らかであり、または、本明細書の教示の実施によって学習することができる。本発明の特徴および利点は、添付の特許請求の範囲で詳細に指摘される器具および組合せによって実現し、取得することができる。本発明の特徴は、以下の説明および添付の特許請求の範囲からより十分に明らかになるか、または、以下に記載するように本発明の実施によって学習することができる。
【0009】
[0009]上記で具陳された利点および特徴ならびに他の利点および特徴を取得することができる様式について説明するために、添付の図面に示されている特定の実施形態を参照することによって、上記で手短に説明された主題のより詳細な説明が与えられる。これらの図面が、一般的な実施形態を示すにすぎず、したがって、範囲を限定するものと見なされるべきではないことを理解して、実施形態は、添付の図面の使用によって追加の特異性および詳細とともに説明および解説される。
【図面の簡単な説明】
【0010】
【
図1】[0010]管理エンクレーブとエンクレーブとを含むマシン、および構成証明の証明書(attestation certificate)を示す図である。
【
図2】[0011]計算ファブリック(compute fabric)とキーファブリック(key fabric)とを含むクラウドシステムを示す図である。
【
図3】[0012]クラウドシステム上のテナントをセキュアに管理する方法を示す図である。
【発明を実施するための形態】
【0011】
[0013]本明細書に示される実施形態は、ハードウェアベースのキー保護システム、およびクラウドコンピューティングシステム中の仮想マシン(VM)のハードウェアベースの保護のための機能を含む。特に、いくつかの現代のプロセッサは、選択されたコードおよびデータを開示または修正から保護するために使用することができる、ハードウェア命令およびアーキテクチャコンポーネントを含む。アプリケーションは、セキュリティを高める、CPU強化「エンクレーブ」または保護された実行領域に区分することができる。特に、本明細書で使用されるエンクレーブは、エンクレーブ自体中にないソフトウェアについてアクセスが防がれるアプリケーションのアドレス空間の保護された領域である。保護されたデータおよびコードはCPUレベルで保護されるので、危害を受けたプラットフォーム上でさえこのセキュリティを維持することができる。すなわち、CPUは、外部ソフトウェアがエンクレーブにアクセスするのを防ぐことができる。これらのエンクレーブは、セキュアテナントデータ暗号化キー転送と、テナントデータに基づいて動作するためのセキュア仮想マシンとを実装するために使用することができる。そのようなエンクレーブおよび保護されたコンピューティングの一例は、カリフォルニア州サンタクララのIntel Corporationから利用可能なIntel SGX(ソフトウェアガードエクステンション(Software Guard Extensions))において利用可能である。
【0012】
[0014]
図1はマシン100を示す。マシン100は、プログラミング命令を実行するように構成された物理ハードウェアデバイスである。たとえば、マシンは、中央処理装置(CPU)を含んでもよい。マシンはエンクレーブ102を含む。エンクレーブ102は、保護されたコードおよびデータを含む保護された実行領域である。エンクレーブ102は、エンクレーブ102が(CPUレベルで制限されるように)制限されたイングレス(ingress)およびエグレス(egress)を有するという点で保護される。特に、実行コードおよび/またはデータがエンクレーブ中に入れられると、外部エンティティは、実行コードおよび/またはデータを調べることができない。これは、プロセッサ状態とレジスタ状態の両方を含む。さらに、外部エンティティは、実行コードおよび/またはデータを修正することができない。データを外部レジスタ104中に入れることができ、エンクレーブ102中で実行しているコードがそれにアクセスすることができるが、エンクレーブ102は、必要とするとき、このコードにアクセスする。以下に示されているように、エンクレーブ102中に、キー108などのキーを管理エンクレーブ106が与えることができる場合を除いて、データをエンクレーブ102中に強制的に与えることはできない。
【0013】
[0015]述べられたように、
図1は管理エンクレーブ106を示す。管理エンクレーブは、管理エンクレーブが保護された実行領域であるという点で、エンクレーブ102と同様である。しかしながら、1つの差異は、エンクレーブ102中に、キー108などのキーを与える能力を管理エンクレーブ106が有することである。
【0014】
[0016]エンクレーブ102からのエグレスが制限される間、エンクレーブ102が生成し、エンクレーブ102の外部に与えることができる1つのアイテムは、構成証明の証明書110である。構成証明の証明書110は、エンクレーブが、特定のプラットフォーム上で動作しており、エンクレーブ102自体に関する情報とともに特定の管理エンクレーブによって管理されることを認証するために使用される、検証可能な情報を含むことができる。
【0015】
[0017]特に、エンクレーブ102によって生成された構成証明の証明書110は、プラットフォーム構成証明112を含む。プラットフォーム構成証明112は、エンクレーブ102が特定のプラットフォーム上で実装されていることの検証可能な証明(verifiable proof)を含む。これは、たとえば、特定のマシン100を含んでもよい。たとえば、マシン100は、特定のマシン100に固有である検証可能な証明を作成するために評価することができるシリアル番号または他の特性もしくはコンポーネントを含んでもよい。たとえば、プロセッサのシリアル番号および/またはマシン100の他の特性もしくはコンポーネントを使用して検証可能な証明を作成するために、ハッシュアルゴリズムを使用してもよい。たとえば、ハッシュアルゴリズムは、マシン100中の異なるコンポーネントのシリアル番号、マシン100中のコンポーネントのいくつかのモデル番号(または他の特性)のセット、またはマシン100の他の特性に対してハッシングしてもよい。
【0016】
[0018]代替的に、これは、単に、マシン100が属するプラットフォームが概してエンクレーブサポートを有することの検証可能な証明でもよい。たとえば、マシン100がエンクレーブサポートを含むことの検証可能な証明を与えてもよい。
【0017】
[0019]エンクレーブ102によって生成された構成証明の証明書110は、管理構成証明114を含む。管理構成証明114は、エンクレーブ102が管理エンクレーブ106によって管理されていることの、エンクレーブ102のフィンガープリントなどの検証可能な証明を含む。たとえば、エンクレーブ102を管理するために管理エンクレーブが使用されていることの検証可能な証明を作成するために、管理エンクレーブ中のコードを使用してもよい。たとえば、ハッシュアルゴリズムを管理エンクレーブ106のコードおよび/またはデータに適用して検証可能な証明を生成してもよく、検証可能な証明は、次いで、管理構成証明114において使用することができる。
【0018】
[0020]エンクレーブ102によって生成された構成証明の証明書110は、エンクレーブ構成証明116を含む。エンクレーブ構成証明116は、エンクレーブについての検証可能な証明を含む。たとえば、エンクレーブ構成証明116は、エンクレーブ106中のコードおよび/またはデータのフィンガープリントを含んでもよい。
【0019】
[0021]エンクレーブ102によって生成された構成証明の証明書110は、暗号化機能118を含む。暗号化機能118は、データを暗号化するために使用することができ、データは、次いで、レジスタ104に入れられる。たとえば、暗号化機能118は、ディフィーへルマン(Diffie-Hellman)キー交換など、公開キー交換方式のための公開キー交換の一部として使用することができる。このようにして、データをエンクレーブ102にセキュアに与えることができる。
【0020】
[0022]これを基礎として、クラウドサービスのテナントのための仮想マシンを実装する際のこの特殊なプロセッサ機能の使用を示す、
図2に注目する。特に、一般にクラウドサービス200の顧客テナントはセキュアインフラストラクチャを有さず、したがって、テナントは、クラウドサービスプロバイダーからリソースを購入し、クラウドサービスプロバイダーは、セキュアインフラストラクチャを与えることが可能である。クラウドサービス200では、計算リソース(たとえば、プロセッササイクル)などのクラウドリソース、メモリリソース、およびストレージリソースが、いくつかの異なるテナントの間で共有される。クラウドサービス200における物理マシンは、リソースをホストし、必要に応じて様々なテナントのためのリソースを与える。しかしながら、テナントはまた、クラウドサービスプロバイダーが、暗号化されていないテナントデータへのアクセスを有することを希望しない。したがって、特定のテナントは、そのテナントのデータに関連付けられたキー108を有し、キー108は、テナントのデータ120が他のテナントにまたはクラウドサービス200における個人に露出されないことを保証するセキュアなやり方で使用される。異なるマシン上のリソースが共有され、異なる時間に異なるテナントのために異なるマシンを使用することができるので、キー108は、異なるマシンの間で共有可能であり、クラウドサービス200によって保持される必要があり、クラウドサービス200がキー108についての値を知らないことの検証可能な証明が与えられる必要がある。
【0021】
[0023]図示の例では、キー管理ファブリック124および計算ファブリック126を使用することによって、これを達成することができる。
[0024]キー管理ファブリック124は、いくつかのマシン110-2-1~100-2-mを備え、いくつかのマシン110-2-1~100-2-mは、クラウドサービス200におけるマシンから選択され、特定のテナントのためのキー108を管理するように構成される。このようにして、望まれるのと同数の冗長レベルでテナントのためのキーを冗長的に記憶することができる。
【0022】
[0025]キー管理ファブリック124中の各マシンは、それぞれ、ローカルストレージ122-1~122-mに結合される。
[0026]
図2は計算ファブリック126を示す。計算ファブリックは、いくつかのマシン100-1-1~100-1-nを備え、いくつかのマシン100-1-1~100-1-nは、クラウドサービス200において利用可能なマシンから選択され、テナントのための仮想マシンを実装するように構成される。特に、テナントは、いくつかの仮想マシンがテナントのために動作することを希望する。エンクレーブ102-1-1~102-1-nを使用してこれらの仮想マシンを実装することができる。特に、エンクレーブ102-1-1~102-1-n中でVMコードを実装することができる。各エンクレーブのためのコードを、クラウドサービスプロバイダーによって与えることができ、または、テナントによってクラウドサービスプロバイダーに与えて、テナントのためのエンクレーブを実装することができる。いずれの場合も、テナントは、エンクレーブについてのフィンガープリントを有する各エンクレーブのためのエンクレーブ構成証明を含む、VMを動作させるエンクレーブによって生成された構成証明の証明書を検査することによって、VMを検証することができる。
【0023】
[0027]マシン100-1-1~100-1-nおよび100-2-1~100-2-mが各々、それぞれ管理エンクレーブ106-1-1~106-1-nおよび106-2-1~106-2-mを有することに留意されたい。いくつかの実施形態では、管理エンクレーブ106-1-1~106-1-nおよび106-2-1~106-2-mはすべて、それらの中で実行している同じ実行可能コードを有する。したがって、テナントのためのマシン上のエンクレーブは、キーファブリック124中にあるのか計算ファブリック126中にあるのかにかかわらず、すべて、
図1に示されているものなど、同じ管理構成証明をもつ構成証明の証明書を生成する。これは、管理エンクレーブ106-1-1~106-1-nおよび106-2-1~106-2-mの各々が、セキュアなやり方で互いと通信し、管理構成証明を生成することができない管理エンクレーブとの通信を拒否することを可能にする。この機能を使用して、特定のテナントのためのセキュアキー作成および管理を達成することができる。
【0024】
[0028]とはいえ、以下でより詳細に説明されるように、管理エンクレーブを検証するために他のモダリティーを使用することができることに留意されたい。たとえば、代替実施形態では、同じフィンガープリントを共有しない2つの管理エンクレーブは、依然として、互いを信頼できると認識することができる。エンクレーブは、複雑で柔軟なポリシーを実装することができる。したがって、たとえば、管理エンクレーブ106-1-1~106-1-nは、異なり、管理エンクレーブ106-2-1~106-2-mとは異なるフィンガープリントを有してもよいが、依然として、信頼性分析に基づいて互いと通信することが可能である場合がある。同様に、管理エンクレーブ106-1-1~106-1-nのうちの1つまたは複数は、互いとは異なるが、依然として、信頼性分析に基づいて互いと通信することが可能である場合がある。同様に、管理エンクレーブ106-2-1~106-2-mのうちの1つまたは複数は、互いとは異なるが、依然として、信頼性分析に基づいて互いと通信することが可能である場合がある。
【0025】
[0029]たとえば、いくつかの実施形態では、管理エンクレーブは、別の管理エンクレーブが同じコードの異なるバージョンを実行していると決定することが可能である場合がある。たとえば、コード作成者、署名局(signing authority)に関係する情報を検証するために構成証明の証明書(たとえば、構成証明の証明書110)のエンクレーブ構成証明(たとえば、エンクレーブ構成証明116)を検査することによって、または他のやり方で、これを達成することができる。たとえば、エンクレーブ構成証明は、署名局の指示、コードの機能が何であるかの署名局宣言(signing authority declaration)の指示、およびコードの署名局宣言バージョンの指示の3つすべてを使用して作成されたインジケーターを含んでもよい。受信管理エンクレーブは、これらの3つのインジケーターを検証するための機能を含んでもよい。
【0026】
[0030]したがって、管理エンクレーブは、管理エンクレーブコード中に組み込まれた一致機能(matching functionality)を有してもよい。この一致機能は、エンクレーブ構成証明における完全な一致を必要とするように構成することができるか、または、承認された変更を可能にすることができる。
【0027】
[0031]たとえば、以下のシナリオを考慮する。第1のシナリオでは、管理エンクレーブ106-2-1が構成証明の証明書110-1を生成する。構成証明の証明書110-1は、エンクレーブ構成証明116-1を含む。エンクレーブ構成証明116-1は、管理エンクレーブ106-2-1に関する情報を含む。たとえば、示されている本シナリオでは、管理エンクレーブ106-2-1は、管理エンクレーブ106-2-1を実装するコードのハッシュを計算するための機能を含んでもよい。この例では、管理エンクレーブは、他の管理エンクレーブを信頼するために、一致するコードを必要とする。したがって、管理エンクレーブ106-1-1が構成証明の証明書110-1を受信した場合、管理エンクレーブ106-1-1は、管理エンクレーブ106-1-1が、それ自体の管理エンクレーブコードをハッシングすることによってエンクレーブ構成証明116-1を生成することができる場合のみ、管理エンクレーブ106-2-1を信頼する。
【0028】
[0032]代替実施形態では、管理エンクレーブは、他の管理エンクレーブがまったく同じコードを実行していないときでも、それらの他の管理エンクレーブを信頼することができると決定することが可能である場合がある。たとえば、管理エンクレーブ106-2-1は、構成証明の証明書110-1を生成する場合があり、構成証明の証明書110-1は、管理エンクレーブ106-2-1中で実行している管理エンクレーブコードの作成者の検証可能な証明と、管理エンクレーブ106-2-1中で実行しているエンクレーブコードの目的の検証可能な証明と、管理エンクレーブ106-2-1中で実行している管理エンクレーブコードのバージョンの検証可能な証明とに基づくエンクレーブ構成証明116-1を含む。管理エンクレーブ106-1-1を含む、管理エンクレーブの各々は、構成証明の証明書110-1を受信し、エンクレーブ構成証明116-1を検証するための機能を含んでもよい。
【0029】
[0033]以下は、いくつかの実施形態において検証がどのように機能するかの様々な例を示す。構成証明の証明書は、エンクレーブを一意に識別することができる情報を含んでいる。これは、作成されたときにエンクレーブ中にロードされたコードおよびデータのすべてのデジタルフィンガープリントを含み、随意に、何らかの信用局(trusted authority)によって署名された識別情報をも含むことができる。最も単純な場合には、管理エンクレーブが以下のような事を行うことによって、(たとえば2つの管理エンクレーブ間の)検証を実施することができる。
【0030】
[0034]1)他方の管理エンクレーブに構成証明報告を送るように依頼する。
[0035]2)他方の管理エンクレーブからの構成証明報告が信頼できる構成証明報告であることを示すために、その構成証明報告がリモートシステムによって正しく署名されることを検証する。
【0031】
[0036]3)CPUにそれ自体のための構成証明報告を準備するように依頼する(その構成証明報告はCPUから直接来たので信頼できる)。
[0037]4)自己構成証明(self-attestation)中に存在する識別情報をリモート構成証明中に存在する識別情報と比較する。それらの識別情報が一致する場合、管理エンクレーブは、それ自体の別のコピーと通信しており、したがって、それを信頼することができる。
【0032】
[0038]異なるバージョンの管理エンクレーブによって使用されるか、またはエンクレーブと管理エンクレーブとの間で使用される代替バージョンは、ステップ3~4の代わりに、リモート構成証明中の識別情報と、どのアイデンティティが信頼できるエンクレーブを表すかを決定するために使用されるポリシー情報との比較を行うことである。
【0033】
[0039]キー108をキーファブリック124に冗長的に記憶することができる。キーファブリック124は、いくつかの異なるやり方でキー108を取得することができる。たとえば、いくつかの実施形態では、テナントは、管理エンクレーブ106-2-1など、管理エンクレーブのうちの1つにキー108を与えてもよい。代替的に、管理エンクレーブは、マシンからキー108を取得するための機能を含んでもよい。したがって、たとえば、管理エンクレーブ106-2-1は、マシン100-2-1におけるCPUが適切なアルゴリズムを使用して適切なキーを計算することを要求してもよい。
【0034】
[0040]キー108を冗長的に記憶するために、管理エンクレーブ106は互いとキーを共有することが可能であるが、関連付けられたエンクレーブがテナントのデータを解読することができるように、管理エンクレーブ106がそれらの関連付けられたエンクレーブ中でキー108を与えることができることを除いて、他の危害を受けた管理エンクレーブ、または、いくつかの実施形態では、同じコード(またはコードの承認されたおよび検証可能なバージョン、たとえば、管理エンクレーブコードの異なるバージョン)を実行していない他の管理エンクレーブを含む、他のエンティティとキーを共有しない。上述のように、管理エンクレーブ106-2-1は、マシン100-2-1におけるCPUが何らかの適切なアルゴリズムを使用して適切なキーを計算することを要求してもよい。その導出のルートが、管理エンクレーブによって他のエンクレーブに後で与えられるキーである。したがって、管理エンクレーブは、CPUがキー導出のために使用するロケーション中にキーを与える。代替実施形態では、管理エンクレーブは、キーを与えるために、別のマシンにおける特殊レジスタ中にキーを入れる。
【0035】
[0041]管理エンクレーブは、いくつかの実施形態では、同じ管理エンクレーブコード、または上記で説明されたものなどの他の承認されたコードを管理エンクレーブが実行していると決定することなどによって、別の管理エンクレーブが信頼されると管理エンクレーブが決定することができない限り、別の管理エンクレーブにキー108を与えない。管理構成証明が一致すると決定するために管理エンクレーブの構成証明の証明書を検査することによって、これを達成することができる。したがって、この例では、管理エンクレーブは、別の管理エンクレーブが同じフィンガープリント、または承認されたフィンガープリントを有すると決定することができ、したがって、他の管理エンクレーブと通信することは安全である。
【0036】
[0042]管理エンクレーブ106-2-1~106-2-mの各々は、特定のマシンに固有のマシンキーを使用して管理キーを暗号化し、その特定のマシン上で、管理エンクレーブは、それぞれ、暗号化されたキー108-1~108-mを作成し、暗号化されたキー108-1~108-mを、それらのそれぞれのマシンに関連付けられたストレージ122-1~122-mに記憶するために動作している。管理エンクレーブ106-2-1~106-2-mの各々は、暗号化されたテナントキーを、各々のそれぞれのマシン上で、ローカルにおよび排他的にストレージに記憶するように構成される。すなわち、キー管理ファブリック中で動作する管理エンクレーブは、顧客キーを、暗号化された形態でそれらのローカルストレージに、それらのローカルストレージのみに記憶する能力を有する。
【0037】
[0043]仮想マシンをスピンアップする(spin up)ために、計算ファブリック126中のマシンが、管理エンクレーブ106およびエンクレーブ102をスピンアップする。たとえば、
図2に示されている例では、マシン100-1-1が、管理エンクレーブ106-1-1およびエンクレーブ102-1-1をスピンアップする。管理エンクレーブ106-1-1は、キーファブリック124中の管理エンクレーブ106-2-1~106-2-mと同じコードを実行する。したがって、管理エンクレーブ106-1-1は、構成証明の証明書を使用して、管理エンクレーブ106-2-1~106-2-mとセキュアに通信することができる。これは、キーファブリック124中の管理エンクレーブが、暗号化されたテナントキーをストレージから取り出し、暗号化されたキーを解読し、計算ファブリック中の管理エンクレーブにキー108を与えることを可能にする。たとえば、管理エンクレーブ106-2-1は、暗号化されたキー108-1をストレージ122-1から取り出してもよい。管理エンクレーブ106-2-1は、キー108を取得するために、マシン100-2-1のためのマシンキーを使用して、暗号化されたキー108-1を解読することができる。次いで、管理エンクレーブ106-1-1にキー108を与えることができる。
【0038】
[0044]マシン100-1-1において、管理エンクレーブ106-1-1は、エンクレーブ102-1-1中にキー108を与えることができる。次いで、エンクレーブ102-1-1は、ストレージ120からテナントについてのデータを取得し、キー108を使用してデータを解読することができる。一実施形態では、CPUによって定義されたエンクレーブアーキテクチャは、管理エンクレーブのみに利用可能な特権命令を提供してもよく、特権命令は、管理エンクレーブがエンクレーブのアドレス空間中に直接キーを送出することを許可する。別の実施形態では、管理エンクレーブとエンクレーブとは、相互認証を使用して(構成証明を介して)セキュア接続を確立することができ、管理エンクレーブは、セキュア接続を介してキーを送出することができる。
【0039】
[0045]テナントのエンクレーブ中でのキー可搬性を希望するテナントは、クラウドサービス200がテナントの代わりにキー管理を行うことを信頼しなければならないか、または、テナント自体のキー管理システムを供給しなければならないかのいずれかである。いずれのモデルも、クラウドサービスがキーを秘密にしておくことを顧客が信頼する必要なしに実装することができ、これは、ハードウェアが顧客のためにそれを行うからである。したがって、要約すれば、設計は以下の通りでもよい。
【0040】
[0046]設計はキー管理ファブリックを含み、キー管理ファブリックは、(クラウドプロバイダーが書き込むことができるかまたは顧客が供給することができる)顧客ごとのキー管理エンクレーブをホストするサーバーのセットを含む。各サーバーは、その顧客のためのマスターキーを記憶する、顧客ごとの(移行不可能な)管理エンクレーブを実行することが可能である。
【0041】
[0047]2.新しい顧客マスターキーが望まれるとき、キー管理ファブリックは、各キー管理サーバー上で顧客の管理エンクレーブのインスタンスを開始する。1つのインスタンスが新しいランダムキーを生成し、次いで、(各エンドポイントがその顧客のための正しい管理エンクレーブであることを検証するためにエンクレーブ構成証明を使用して)新しいランダムキーをすべての他のインスタンスに分配する。次に、顧客のマスターキーが十分に複製される。
【0042】
[0048]3.各管理エンクレーブは、マスターキーを封印するためのCPU導出暗号化キーを取得する。この封印キーは、エンクレーブアーキテクチャによって生成され、マシン固有秘密と管理エンクレーブの暗号学的ハッシュとを含む。次に、各マスターキーは、ハードウェア保護されたキーを使用して各キー管理サーバー上に残存される。
【0043】
[0049]4.顧客ワークロードエンクレーブがマスターキーを必要とするとき、顧客ワークロードエンクレーブは、顧客固有管理エンクレーブのインスタンスへの接続を取得するためにキー管理ファブリックに接触する。顧客ワークロードエンクレーブは、そのエンクレーブへのセキュア接続を確立し、それが正しい管理エンクレーブからキーを取得していることを検証するために構成証明を使用し、次いで、キーを取得する。
【0044】
[0050]そのようなシステムは、以下の性質のうちの1つまたは複数を有してもよい。
[0051]A.各マスターキーは(CPUのエンクレーブキー保護によって)正確なキー管理コードに特有の暗号化キーで封印されるので、クラウドデータセンターが、マスターキーを開示することを強要されることは不可能である。開示を許可するために管理エンクレーブを修正しようとする試みは、封印キーの変更を生じ、したがって、マスターキーが成功裡に解読されることを防ぐ。さらに、マスターキーを管理エンクレーブの開示可能(disclosure-capable)バージョンに明かすようにそのエンクレーブの開示抵抗性(disclosure-resistant)バージョンを説得しようとする試みは、(各管理エンクレーブは、マスターキーを、開示抵抗性であることがわかっている管理エンクレーブのバージョンのみに明かすので)構成証明によって防がれる。
【0045】
[0052]B.各顧客ワークロードは、それのキーが管理エンクレーブの特定の開示抵抗性バージョンによって与えられていることの構成証明を行うことができるので、管理エンクレーブがマスターキーの開示を許可しないことを検証することができる。疑い深い顧客は、管理エンクレーブ自体を供給することによってこの保証を取得することができる。
【0046】
[0053]C.キー利用可能性を保証するためにキー管理ファブリックが十分な複製を与えるので、マスターキーは災害から保護される。
[0054]次に、以下の説明は、実施することができるいくつかの方法および方法の行為に言及する。方法の行為をある順序で説明するか、または特定の順序で行われるものとしてフローチャートで示す場合があるが、特に明記されていない限り、特定の順序付けは必要とされず、または、行為は、その行為が実施されるより前に別の行為が完了することに依存するので、特定の順序付けは必要とされない。
【0047】
[0055]次に
図3を参照すると、方法300が示されている。方法300は、クラウドシステム上のテナントをセキュアに管理するための行為を含む。方法は、テナントキーを取得すること(行為302)を含む。たとえば、方法300では、クラウドサービスのテナントからテナントキーを取得してもよい。代替または追加として、クラウドサービスにおいてテナントキーを生成し、それを管理エンクレーブが取得してもよい。代替または追加として、特定の管理エンクレーブが別の管理エンクレーブからテナントキーを取得してもよい。以下でより詳細に説明されるように、管理エンクレーブが同じアプリケーションコードを実行することによって、これを可能にすることができる。同じアプリケーションコードが同じアプリケーションコードの異なるバージョンを含んでもよいことに留意されたい。すなわち、ある管理エンクレーブはアプリケーションコードのあるバージョンを実行していてもよく、異なる管理エンクレーブは同じアプリケーションコードの異なるバージョンを実行している。しかしながら、管理エンクレーブは、それにもかかわらず、(同じバージョンであるのか異なるバージョンであるのかにかかわらず)アプリケーションコードを検証することによって互いにテナントキーを受け渡すことが可能である場合がある。
【0048】
[0056]方法300は、クラウドサービスにおける計算ファブリック中のマシン上の管理エンクレーブにおいて、マシン上のエンクレーブ中にテナントキーを与えること(行為302)をさらに含む。管理エンクレーブとエンクレーブとは、所与のエンクレーブについて、管理エンクレーブがテナントエンクレーブにキーを与えることができることを除いて、所与のエンクレーブ自体中にないアプリケーションコードについてアクセスが防がれるアプリケーションアドレス空間の保護された領域である。いくつかの実施形態では、管理エンクレーブと同じマシン上で動作しているエンクレーブ中にテナントキーを与えることのみが可能であるように管理エンクレーブを制限することができる。したがって、たとえば、管理エンクレーブ106-1-1は、管理エンクレーブ106-1-1とエンクレーブ102-1-1とが両方とも同じマシン100-1-1上で動作しているので、エンクレーブ102-1-1中にキー108を与えることが可能である。しかしながら、管理エンクレーブ106-1-1は、管理エンクレーブ106-1-1とエンクレーブ102-1-2とが異なるマシン上にあるので、エンクレーブ102-1-2中にキー108を与えることが可能でない。
【0049】
[0057]エンクレーブは、クラウドサービステナントのための機能を実施するように構成される。アプリケーションコードはエンクレーブの異なるインスタンス中にある場合があるが、そのアプリケーションコードが同じアプリケーションコードである限り、それは、そのエンクレーブにアクセスすることができることに留意されたい。たとえば、管理エンクレーブ106-2-1は、管理エンクレーブ106-2-1と管理エンクレーブ106-1-1の両方が同じアプリケーションコードを実行している場合、管理エンクレーブ106-1-1にキー108を与えることが可能である場合がある。述べられたように、
図2に示されている構成証明の証明書110-1など、構成証明の証明書を使用して、これを確認することができる。
【0050】
[0058]本明細書で使用される同じ「アプリケーションコード」が同じコードの異なるバージョンを含んでもよいことにさらに留意されたい。しかしながら、同じアプリケーションコードの異なるバージョンとの通信を可能にするように、管理エンクレーブ中のアプリケーションコードを構成することができる。たとえば、管理エンクレーブ106-2-1は、管理エンクレーブ106-2-1と管理エンクレーブ106-1-1の両方が同じアプリケーションコードの異なるバージョンを実行している場合、管理エンクレーブ106-1-1にキー108を与えることが可能である場合がある。述べられたように、
図2に示されている構成証明の証明書110-1など、構成証明の証明書を使用して、これを確認することができる。たとえば、いくつかの実施形態は、管理エンクレーブのためのエンクレーブ構成証明を含む構成証明の証明書を検証してもよい。エンクレーブ構成証明は、署名局の検証可能な証明と、アプリケーションコードがどの機能を有するかの署名局宣言の検証可能な証明と、アプリケーションコードの署名局宣言バージョンの検証可能な証明とを含む。
【0051】
[0059]したがって、方法300を実施してもよく、テナントキーを取得することは、同じアプリケーションコードのバージョンを実行している別の管理エンクレーブが相互に承認可能および認証可能な管理エンクレーブコードを実行していることを検証することによって、別の管理エンクレーブからテナントキーを取得することを含み、それにより、管理エンクレーブが管理エンクレーブコードを承認および認証することによって、テナントキーを信頼された様式で管理エンクレーブ間で受け渡すことができる。
【0052】
[0060]いくつかのそのような実施形態では、別の管理エンクレーブが相互に承認可能および認証可能なアプリケーションコードを実行していることを検証することは、別の管理エンクレーブが同等のアプリケーションコードを実行していることを検証することを含む。
【0053】
[0061]代替または追加として、いくつかのそのような実施形態では、別の管理エンクレーブが相互に承認可能および認証可能な管理エンクレーブコードを実行していることを検証することは、別の管理エンクレーブが、アプリケーションコードの異なるバージョンとして検証することができるアプリケーションコードの異なるバージョンを実行していることを検証することを含む。
【0054】
[0062]いくつかのそのような実施形態では、別の管理エンクレーブが管理エンクレーブコードの異なるバージョンを実行していることを検証することは、管理エンクレーブのためのエンクレーブ構成証明を含む構成証明の証明書を検証することを含む。エンクレーブ構成証明は、署名局の検証可能な証明と、アプリケーションコードがどの機能を有するかの署名局宣言の検証可能な証明と、アプリケーションコードの署名局宣言バージョンの検証可能な証明とを含む。
【0055】
[0063]いくつかの実施形態では、管理エンクレーブとエンクレーブとは、キー発行管理エンクレーブが信頼できる発行者であり、受信側エンクレーブがキーの信頼できる受信側であることを検証するために相互認証および構成証明を使用する、ピア(peer)である。たとえば、上記で説明されたように構成証明の証明書を使用することによって、これを実施することができる。特に、管理エンクレーブとエンクレーブとは、各々、相互に承認されたおよび検証可能なコードを他方が使用していることを検証してもよい。これは、管理エンクレーブとエンクレーブとが上記で定義されたように同じコードを実行することによって、または何らかの他の相互に同意されたコードによってである場合がある。
【0056】
[0064]1つまたは複数のプロセッサと、コンピューターメモリなどのコンピューター可読媒体とを含むコンピューターシステムによって、ここで示されている実施形態を実施することができる。特に、コンピューターメモリは、1つまたは複数のプロセッサによって実行されたとき、実施形態において具陳された行為など、様々な機能を実施させるコンピューター実行可能命令を記憶してもよい。
【0057】
[0065]本発明の実施形態は、以下でより詳細に説明されるように、コンピューターハードウェアを含む専用または汎用コンピューターを備えるかまたは利用してもよい。本発明の範囲内の実施形態は、コンピューター実行可能命令および/またはデータ構造を搬送または記憶するための物理的および他のコンピューター可読媒体をも含む。そのようなコンピューター可読媒体は、汎用または専用コンピューターシステムがアクセスすることができる任意の利用可能な媒体とすることができる。コンピューター実行可能命令を記憶するコンピューター可読媒体は、物理的記憶媒体である。コンピューター実行可能命令を搬送するコンピューター可読媒体は、伝送媒体である。したがって、限定ではなく例として、本発明の実施形態は、少なくとも2つの明確に異なる種類のコンピューター可読媒体、すなわち、物理的コンピューター可読記憶媒体および伝送コンピューター可読媒体を備えることができる。
【0058】
[0066]物理的コンピューター可読記憶媒体は、RAM、ROM、EEPROM、CD-ROMもしくは(CD、DVDなどの)他の光ディスクストレージ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または、コンピューター実行可能命令もしくはデータ構造の形態で所望のプログラムコード手段を記憶するために使用することができ、汎用もしくは専用コンピューターがアクセスすることができる、任意の他の媒体を含む。
【0059】
[0067]「ネットワーク」は、コンピューターシステムおよび/もしくはモジュールならびに/または他の電子デバイス間での電子データのトランスポートを可能にする1つまたは複数のデータリンクとして定義される。情報がネットワークまたは別の通信接続(ハードワイヤード、ワイヤレス、またはハードワイヤードもしくはワイヤレスの組合せのいずれか)を介してコンピューターに転送されるかまたは与えられるとき、コンピューターは、適切に接続を伝送媒体と見なす。伝送媒体は、コンピューター実行可能命令またはデータ構造の形態の所望のプログラムコード手段を搬送するために使用することができ、汎用または専用コンピューターがアクセスすることができるネットワークおよび/またはデータリンクを含むことができる。上記の組合せも、コンピューター可読媒体の範囲内に含まれる。
【0060】
[0068]さらに、様々なコンピューターシステムコンポーネントに達すると、コンピューター実行可能命令またはデータ構造の形態のプログラムコード手段を、伝送コンピューター可読媒体から物理的コンピューター可読記憶媒体に自動的に転送することができる(またはその逆も同様である)。たとえば、ネットワークまたはデータリンクを介して受信されたコンピューター実行可能命令またはデータ構造を、ネットワークインターフェースモジュール(たとえば、「NIC」)内のRAMにバッファし、次いで、最終的に、コンピューターシステムRAMにおよび/またはコンピューターシステムにおけるあまり揮発性でないコンピューター可読物理的記憶媒体に転送することができる。したがって、コンピューター可読物理的記憶媒体を、同じく(さらには主に)伝送媒体を利用するコンピューターシステムコンポーネント中に含めることができる。
【0061】
[0069]コンピューター実行可能命令は、たとえば、汎用コンピューター、専用コンピューター、または専用処理デバイスに、ある機能または機能のグループを実施させる命令およびデータを含む。コンピューター実行可能命令は、たとえば、2進数、アセンブリ言語などの中間フォーマット命令、さらにはソースコードでもよい。主題が、構造的特徴および/または方法論的行為に特有の言語で説明されたが、添付の特許請求の範囲において定義される主題は、必ずしも上記で説明された説明された特徴または行為に限定されるとは限らないことを理解されたい。むしろ、説明された特徴および行為は、特許請求の範囲を実装することの例示的な形態として開示される。
【0062】
[0070]パーソナルコンピューター、デスクトップコンピューター、ラップトップコンピューター、メッセージプロセッサ、ハンドヘルドデバイス、マルチプロセッサシステム、マイクロプロセッサベースまたはプログラマブルコンシューマエレクトロニクス、ネットワークPC、ミニコンピューター、メインフレームコンピューター、携帯電話、PDA、ページャー、ルーター、スイッチなどを含む、多くのタイプのコンピューターシステム構成をもつネットワークコンピューティング環境において、本発明を実施することができることを、当業者は諒解されよう。ネットワークを通して(ハードワイヤードデータリンク、ワイヤレスデータリンクによって、またはハードワイヤードデータリンクとワイヤレスデータリンクとの組合せによってのいずれかで)リンクされるローカルコンピューターシステムとリモートコンピューターシステムが両方ともタスクを実施する分散システム環境においても、本発明を実施することができる。分散システム環境では、ローカルメモリストレージデバイスとリモートメモリストレージデバイスの両方中にプログラムモジュールがあってもよい。
【0063】
[0071]代替的に、または追加として、少なくとも部分的に、1つまたは複数のハードウェア論理コンポーネントによって、本明細書で説明される機能を実施することができる。たとえば、および限定はしないが、例示的なタイプの、使用することができるハードウェア論理コンポーネントは、フィールドプログラマブルゲートアレイ(FPGA)、プログラム固有集積回路(ASIC)、プログラム固有標準製品(ASSP)、システムオンチップシステム(SOC)、複合プログラマブル論理デバイス(CPLD)などを含む。
【0064】
[0072]本発明は、それの趣旨または特性から逸脱することなく、他の特定の形態で具現化することができる。説明された実施形態は、すべての点で例示的にすぎず、限定的でないと見なされるべきである。本発明の範囲は、したがって、上記の説明によってというよりむしろ添付の特許請求の範囲によって示される。特許請求の範囲の等価の意味および範囲内に入るすべての変更は、特許請求の範囲内に包含されるべきである。