(57)【特許請求の範囲】
【請求項１】
コンピューティング・サービスのインスタンス・ホストで、１つ以上のクレデンシャルの暗号化された表現を受信することであって、前記インスタンス・ホストは、前記インスタンス・ホスト上に実装されるコンピュート・インスタンスの実行と関連した１つ以上のセキュリティ基準を満たしており、前記１つ以上のクレデンシャルは、１つ以上の操作をクライアントの代わりに実施するために前記コンピュート・インスタンスで使用される、前記受信することと、
前記インスタンス・ホストで利用可能な秘密鍵を使用して、前記暗号化された表現から、前記１つ以上のクレデンシャルを、前記インスタンス・ホストにおける非永続メモリ位置へと抽出することであって、前記抽出することは、前記コンピュート・インスタンスが前記１つ以上のセキュリティ基準を満たすことを検証することを備える、前記抽出することと、
前記１つ以上のクレデンシャルを使用して前記コンピュート・インスタンスで前記１つ以上の操作を実施することと、
永続ストアへ前記１つ以上のクレデンシャルを保存することなく、前記インスタンス・ホストから前記１つ以上のクレデンシャルを破棄することと、
を、前記インスタンス・ホストを実装する１つ以上のコンピューティング・デバイスにより、実行する、
ことを備える、方法。
【請求項２】
前記インスタンス・ホストと関連したトラステッド・プラットフォーム・モジュール（ＴＰＭ）を使用して実行された分析に少なくとも部分的に基づき、前記インスタンス・ホストが前記１つ以上のセキュリティ基準を満たすことを検証すること、
を、前記１つ以上のコンピューティング・デバイスにより、実行することをさらに備える、請求項１に記載の方法。
【請求項３】
前記分析は、承認され予め計算されたハッシュ値と前記ＴＰＭにより生成されたハッシュ値の比較を備え、前記ＴＰＭにより生成された前記ハッシュ値は、（ａ）前記インスタンス・ホストのＢＩＯＳ（ベーシック入力／出力システム）設定、（ｂ）前記インスタンス・ホストにインストールされたハイパーバイザの構成、（ｃ）前記コンピュート・インスタンスのために使用されるゲスト・オペレーティング・システムの構成、（ｄ）仮想化管理のために前記インスタンス・ホストにインストールされた管理用オペレーティング・システムの構成、（ｅ）前記インスタンス・ホストに取り付けられた１つ以上の周辺機器のファームウェア、または（ｆ）１つ以上のハードウェア・コンフィギュレーション・レジスタに格納された値のうちの１つ以上に少なくとも部分的に基づく、請求項２に記載の方法。
【請求項４】
前記トラステッド・プラットフォーム・モジュールは、１つ以上のソフトウェア・モジュールを含む（ａ）ハードウェア暗号化プロセッサ、または（ｂ）仮想化された暗号化プロセッサのうちの１つを備える、請求項２または３に記載の方法。
【請求項５】
前記インスタンス・ホストで利用可能な前記秘密鍵を使用して前記１つ以上のクレデンシャルを前記抽出することは、前記インスタンス・ホストが信頼性のあるソフトウェアを実行していることを検証することを備える、請求項２−４のいずれか一項に記載の方法。
【請求項６】
前記１つ以上のクレデンシャルは、（ａ）スマート・カード、（ｂ）ハードウェア・セキュリティ・モジュール（ＨＳＭ）、または（ｃ）プロバイダ・ネットワークのネットワーク・アクセス可能なサービスにより実装されたＨＳＭアプライアンスのうちの１つで生成される、請求項１−５のいずれか一項に記載の方法。
【請求項７】
前記１つ以上のクレデンシャルは、暗号鍵、アプリケーション特有のセキュリティ・トークン、乱数、ノンス値、シーケンス番号、またはパスワードのうちの１つ以上を備える、請求項１−６のいずれか一項に記載の方法。
【請求項８】
前記非永続メモリ位置は、（ａ）前記インスタンス・ホストの揮発性メイン・メモリ・モジュールでの位置、（ｂ）前記インスタンス・ホストのプロセッサの専用レジスタ、（ｃ）前記インスタンス・ホストのハードウェア・プロセッサ・キャッシュの一部、または（ｄ）ＴＰＭメモリの一部のうちの１つを備える、請求項１−７のいずれか一項に記載の方法。
【請求項９】
前記クライアントが前記コンピュート・インスタンスと関連した１つ以上のセキュリティ関連の操作を要求することを可能にする１セットのプログラマティック・インタフェースを実装することと、
前記１セットのプログラマティック・インタフェースを介して、（ａ）前記インスタンス・ホストの１つ以上のリソースが前記１つ以上のセキュリティ基準を満たすことを検証する要求、（ｂ）前記暗号化された表現を生成する要求、（ｃ）前記暗号化された表現を前記インスタンス・ホストへ送信する要求、（ｄ）前記１つ以上のクレデンシャルを破棄する要求、（ｅ）前記コンピュート・インスタンスで実行する特定のアプリケーションへ、前記１つ以上のクレデンシャルのうちの１つの特定のクレデンシャルを提供する要求、または（ｆ）前記インスタンス・ホストで前記１つ以上のクレデンシャルにアクセスするために発行されたコマンド・ログのための要求のうちの１つ以上を受信することと、
を、前記１つ以上のコンピューティング・デバイスにより、実行することをさらに備える、請求項１−８のいずれか一項に記載の方法。
【請求項１０】
前記コンピュート・インスタンスが前記プロバイダ・ネットワークの別のインスタンス・ホストへ移行されることを判定し、
前記１つ以上のセキュリティ基準を満たす第二インスタンス・ホストを識別し、
前記コンピュート・インスタンスの状態情報を保存し、
前記コンピュート・インスタンスの実行を一時停止し、
前記保存された状態情報を使用して前記第二インスタンス・ホストで第二コンピュート・インスタンスを起動し、
前記第二インスタンス・ホストへ前記１つ以上のクレデンシャルを安全に送信する、
前記１つ以上のコンピューティング・デバイスにより、実行することをさらに備える、請求項１−９のいずれか一項に記載の方法。
【請求項１１】
１つ以上のメモリへ連結された１つ以上のプロセッサを含むコンピュータ・システムであって、前記１つ以上のメモリは、プログラム命令を格納し、前記プログラム命令は、前記１つ以上のプロセッサで実行時に前記システムが、
コンピューティング・サービスのコンピュート・インスタンスの実行と関連した１つ以上のセキュリティ基準を満たすインスタンス・ホストで、クライアントの代わりに１つ以上の操作を実施するために、前記コンピュート・インスタンスで使用される１つ以上のクレデンシャルの暗号化された表現を受信し、
前記インスタンス・ホストに固有の秘密鍵を使用して、前記暗号化された表現から前記１つ以上のクレデンシャルを抽出し、その抽出された前記１つ以上のクレデンシャルを利用して、前記１つ以上の操作を実施し、前記１つ以上のクレデンシャルは、前記コンピュート・インスタンスが前記１つ以上のセキュリティ基準を満たすことの検証をするときに抽出され、
永続ストアへ前記１つ以上のクレデンシャルを保存することなく、前記インスタンス・ホストから前記１つ以上のクレデンシャルを削除する、
ことを引き起こす、コンピュータ・システム。
【請求項１２】
前記インスタンス・ホストが前記１つ以上のセキュリティ基準を満たす表示は、前記インスタンス・ホストと関連したトラステッド・プラットフォーム・モジュール（ＴＰＭ）を使用して実行された分析結果に少なくとも部分的に基づき取得される、請求項１１に記載のコンピュータ・システム。
【請求項１３】
前記分析は、承認され予め計算されたハッシュ値と前記ＴＰＭにより生成されたハッシュ値の比較を備え、前記ＴＰＭにより生成された前記ハッシュ値は、（ａ）前記インスタンス・ホストのＢＩＯＳ（ベーシック入力／出力システム）設定、（ｂ）前記インスタンス・ホストにインストールされたハイパーバイザの構成、（ｃ）前記コンピュート・インスタンスのために使用されるゲスト・オペレーティング・システムの構成、（ｄ）仮想化管理のために前記インスタンス・ホストにインストールされた管理用オペレーティング・システムの構成、（ｅ）前記インスタンス・ホストへ取り付けられた１つ以上の周辺機器のファームウェア、または（ｆ）１つ以上のハードウェア・コンフィギュレーション・レジスタに格納された値のうちの１つ以上に少なくとも部分的に基づく、請求項１２に記載のコンピュータ・システム。
【請求項１４】
前記プログラム命令は、前記１つ以上のプロセッサでの実行時に、前記システムが、
前記暗号化されたクレデンシャルが前記インスタンス・ホストで受信された後に、前記インスタンス・ホストが信頼性のあるソフトウェアを実行していることを検証して、前記インスタンス・ホストへ固有の前記秘密鍵を使用して前記１つ以上のクレデンシャルを抽出する、
ことを引き起こす、請求項１２または１３に記載のコンピュータ・システム。
【請求項１５】
前記プログラム命令は、前記１つ以上のプロセッサで実行時に、前記システムが、
前記インスタンス・ホストで前記１つ以上のクレデンシャルの少なくとも１つのクレデンシャルにアクセスするために発行された１つ以上のコマンドのログ記録を格納し、
プログラマティック・インタフェースを介して前記クライアントへ前記ログ記録の表現を提供する、
こと引き起こす、請求項１１−１４のいずれか一項に記載のコンピュータ・システム。
【発明の詳細な説明】
【背景技術】
【０００１】
多くの企業及び他の組織は、コンピューティング・システムが共同設置されながら（例えば、ローカル・ネットワークの部分として）、または代わりに複数の別個の地理的位置（たとえば、１つ以上のプライベートまたはパブリック中間ネットワークを介して接続された）に設置されながらなどの、それらの操作を支援するために多数のコンピューティング・システムに相互接続するコンピュータ・ネットワークを操作する。例えば、かなりの数の相互接続されたコンピューティング・システムを収容するデータ・センタは、単一の組織により及びこれの代わりに操作されるプライベート・データ・センタ、ならびに顧客へコンピューティング・リソースを提供する事業としてエンティティにより操作されるパブリック・データ・センタのように、一般的になってきている。いくつかのパブリック・データ・センタのオペレータは、様々な顧客が所有するハードウェアのために、ネットワーク・アクセス、電力、及び安全なインストール施設を提供し、他のパブリック・データ・センタのオペレータは、彼らの顧客による使用のために利用可能にされたハードウェア・リソースをまた含む「フル・サービス」施設を提供する。
【０００２】
コモディティ・ハードウェアのための仮想化技術の出現は、様々なコンピューティング・リソースを複数の顧客が効率的かつ安全に共有することを可能にする、多様なニーズで多くの顧客のために大規模なコンピューティング・リソースを管理することに関して利益を提供している。例えば、仮想化技術は、単一の物理コンピューティング・マシンによりホストされた１つ以上の仮想マシンを各ユーザに提供することで、単一の物理コンピューティング・マシンを複数のユーザ間で共有可能にすることができる。このような各仮想マシンは、彼らが所与のハードウェア・コンピューティング・リソースの独占的なオペレータ及び管理者である錯覚をユーザに与える別個のロジカル・コンピューティング・システムとして動作して、様々な仮想マシン間でアプリケーションの隔離をまた提供するソフトウェア・シミュレーションと考えられることが可能である。
【０００３】
慣例上、典型的に、高レベルのセキュリティを必要とするアプリケーションは、アプリケーションを代わりに実行する組織が物理的及びコンピューティング環境の完全な制御を有する、顧客データ・センタに実装されている。コスト及び利便性の理由から、一部のクライアントは、高度なセキュリティを必要とするクリティカルなアプリケーションのためにプロバイダ・データ・センタで実装された、仮想化されたコンピューティング・サービスを利用したい可能性がある。しかしながら、クライアントは、使用されている実行環境がクライアントのセキュリティ要件を満たし、改ざんされていないあるレベルの保証なしでこのように行うことに消極的である可能性がある。加えて多くの場合において、クライアントのアプリケーションの一部で必要とされる鍵及び／またはパスワードのようなセキュリティ関連のメタデータは、アプリケーションのために利用されることが可能な仮想化プラットフォームから遠隔にあるクライアント構内または他の場所で生成されても良い。仮想化されたコンピューティングのために使用された実行プラットフォーム自体が安全であるとみなされる場合であっても、また潜在的なクライアントは、 悪意のある第三者により取得され乱用されるこのようなメタデータの確率を排除または少なくとも低減したい可能性がある。
【図面の簡単な説明】
【０００４】
【図１】少なくともいくつかの実施形態により、クライアントに指定されたクレデンシャルがプロバイダ・ネットワークの暗号でアテストされたリソースに保護されることができる例示的なシステム環境を図示する。
【図２】少なくともいくつかの実施形態により、仮想コンピューティング・サービスにより使用されることができるインスタンス・ホストのアーキテクチャ概要を提供する。
【図３】少なくともいくつかの実施形態により、実行環境を表現するハッシュ値を生成するトラステッド・プラットフォーム・モジュール（ＴＰＭ）により使用されても良い入力データ・ソースの実施例を図示する。
【図４】少なくともいくつかの実施形態により、トラステッド・リソース・スタックを使用するコンピュート・インスタンスを起動するクライアント及びリソース・マネージャ間の例示的なインタラクションを図示する。
【図５】少なくともいくつかの実施形態により、トラステッド・リソース・スタックで顧客に指定されたクレデンシャルの例示的な伝送、抽出及び使用を図示する。
【図６ａ−６ｂ】少なくともいくつかの実施形態により、インスタンス・ホストで非永続メモリから復号されたクレデンシャルの削除をもたらしても良いクライアント要求のそれぞれの実施例を図示する。
【図７】少なくともいくつかの実施形態により、プロバイダ・ネットワークの暗号でアテストされたリソースでクライアントに指定されたクレデンシャルを保護するために実行されても良い操作の態様を図示する流れ図である。
【図８】少なくともいくつかの実施形態により、リソース・スタックがクライアントのセキュリティ基準を満たすかどうかを判定するために実行されても良い操作の態様を図示する流れ図である。
【図９】少なくともいくつかの実施形態により、一方のインスタンス・ホストから他方へセキュリティ・クレデンシャルを利用するアプリケーションを移行するために実行されても良い操作の態様を図示する流れ図である。
【図１０】少なくともいくつかの実施形態で使用されることができる例示的なコンピューティング・デバイスを図示するブロック図である。
【発明を実施するための形態】
【０００５】
いくつかの実施形態及び例示的な図面のために実施例として本明細書に実施形態を記載するが、当業者は、実施形態が記載された実施形態または図面に限定されないことを認識するであろう。図面及びそれに対する詳細な説明が開示された特定の形式に実施形態を制限することを意図されないが、対照的に、この意図が添付の特許請求の範囲により定められるような趣旨及び範囲内に入る、すべての修正、均等物及び代替物を包含することを理解するべきである。本明細書で使用された見出しは、構成に関する目的のみのためであり、本明細書の範囲または特許請求の範囲を制限するために使用されるものではない。本出願を通して使用されるような、単語「ｍａｙ」は、強制的な意味（すなわち、しなければならないことを意味する）よりもむしろ、許容的な意味（すなわち、可能性があることを意味する）で使用される。同様に単語「ｉｎｃｌｕｄｅ」、「ｉｎｃｌｕｄｉｎｇ」、及び「ｉｎｃｌｕｄｅｓ」は、含むがこれに限定されないことを意味する。
【０００６】
プロバイダ・ネットワークの暗号でアテストされたリソースでクライアントに指定されたクレデンシャルを保護する方法及び装置の様々な実施形態を説明する。企業や公共部門の組織のようなエンティティにより設定され、分散された１セットのクライアントまたは顧客へインターネット及び／または他のネットワークを介してアクセス可能な１つ以上のサービス（様々な種類のマルチテナント及び／またはシングルテナントのクラウド・ベースのコンピューティングまたはストレージ・サービスのような）を提供するネットワークは、本明細書でプロバイダ・ネットワークと称されても良い。用語「マルチテナント」は、所与の１セットの下位のリソースを使用してサービス機能の部分を設けている１人のクライアントがまた他のクライアントのためにこの１セットのリソースを使用していることに気づかないかもしれない、サービス観の隔離された、それぞれカスタマイズ可能な異なるクライアント・エンティティを提供するこのような方式でアプリケーション及び／またはデータ仮想化を実装するように設計されるサービスを指すために本明細書で使用されても良い。プロバイダ・ネットワークは、マルチテナント・サービスに加えて、またはこれの代わりのいずれか一方で、いくつかの実施形態においてシングルテナント・サービス（プライベート・クラウドの実装のためのような）を支援しても良い。典型的に所与のプロバイダ・ネットワークは、プロバイダにより提供されたインフラストラクチャ及びサービスを実装し、構成し、分散させるために必要な、物理的及び／または仮想化されたコンピュータ・サーバ、ストレージ・デバイス、ネットワーク機器、セキュリティ関連機器及び同様のもののコレクションのような、様々なリソース・プールをホストするいくつかの大規模なデータ・センタを含んでも良い。
【０００７】
少なくともいくつかの実施形態において、プロバイダ・ネットワークの仮想コンピューティング・サービスは、コンピューティング・サービスにより選択されたあるハードウェア・プラットフォーム（「インスタンス・ホスト」と呼ばれる）上に実装された仮想マシンに各々対応する、「コンピュート・インスタンス」と呼ばれるユニットにコンピューティング・リソースをバンドルしても良い。 受け入れられた仮想化アプローチに従い、インスタンス・ホストについての詳細（使用されるプロセッサ若しくはコアの絶対的な性能、またはインスタンス・ホストを物理的に設置する特定のデータ・センタのような）、ならびにコンピュート・インスタンス及びインスタンス・ホスト間のマッピング（例えば、所与のインスタンス・ホストでいくつのコンピュート・インスタンスを実行するか、またはインスタンスがインスタンス・ホストを共有するクライアントのアイデンティティ）は、少なくともいくつかの場合においてクライアントの代わりにコンピュート・インスタンスを実行するので、クライアントに利用不可能である可能性がある。各インスタンス・ホストで、典型的にコンピューティング・サービスは、また明らかなセキュリティ上の理由からクライアントにアクセス不可能である可能性がある、ハイパーバイザ、管理用オペレーティング・システム・ドメイン、及び同様のもののような、仮想化管理ソフトウェア・スタックを展開することができる。いくつかの実施形態において、異なる種類またはカテゴリのコンピュート・インスタンス（たとえば、１つ以上のオペレーティング・システムに対応する「小規模な」、「中規模な」または「大規模な」インスタンス）は、潜在的なクライアントに利用可能にされる、各インスタンスの種類の相対的な能力及び対応する価格政策の何らかの表示でコンピューティング・サービスにより定められても良い。インスタンスの種類の定義を考えると、１つの実施形態において、クライアントは、大まかに地理的に定義された「領域」のようなプロバイダ・ネットワークのある階層のサブユニット内で彼らが取得したい各種のインスタンス数を選択することができても良い。
【０００８】
プロバイダ・ネットワークの一部のクライアントは、彼らのアプリケーションの少なくともいくつかが他よりもより高レベルのセキュリティを要求しても良い（本明細書で使用されるような用語、アプリケーションは、ユーザ・モード、カーネル／システム・モード、またはユーザ及びカーネル／システム・モードの組み合わせで実行しても良い、実行可能なプログラム・コンポーネントまたはコンポーネントの組み合わせのいずれかの種類を指しても良いことに留意する）。特に、インスタンス・ホストでのハードウェア及び仮想化管理ソフトウェア・スタックへの直接クライアント・アクセスが禁止または少なくとも非常に制約される可能性がある事実を考慮して、クライアントは、クライアント・アプリケーションのために使用される提案された実行環境が悪意のあるエンティティで改ざんまたはこれにより侵入されていないあるレベルの証明を取得したい可能性がある。少なくともいくつかの実施形態において、仮想コンピューティング・サービスは、コンピュート・インスタンスのために構成された実行環境の少なくとも一部の暗号認証または証明（例えば、信頼性のある第三者による）のための機構を提供しても良い。この認証は、例えば、許容可能な実行環境に対応するいくつかのセットの予め承認された固有値と、クライアントの代わりに所与のコンピュート・インスタンスのために使用される実行プラットフォームを表現するいくつかの署名または固有値を比較することを伴っても良い。例えば１つの実施形態において、このサービスは、セキュリティ・ハードウェア及びソフトウェア（ハードウェアまたは仮想化されトラステッド・プラットフォーム・モジュール（ＴＰＭ）のような）のいくつかの組み合わせを利用して、コンピュート・インスタンスを実装するために使用された１セットのリソース（例えば、ファームウェア、ソフトウェア及び／またはハードウェアの様々な要素）の固有な符号化を表現することを意図された１つ以上の値を計算しても良い。この１セットのリソースは、実行環境の「リソース・スタック」と本明細書で呼ばれても良い。ＴＰＭは、１つの実施形態において、例えばインスタンス・ホストのマザーボード・スロットへ取り付けられた、またはいくつかの他の適切な技術を使用してインスタンス・ホスト内に組み込まれた、１つ以上の暗号プロセッサを含んでも良い。１つの実施形態において、ＴＰＭは、例えば、ＢＩＯＳ（ベーシック入力／出力システム）、ハイパーバイザ、管理用オペレーティング・システム、コンピュート・インスタンスに対応する「ゲスト」または非管理用オペレーティング・システム、様々なデバイスでのファームウェア、及び／または複数のハードウェア・レジスタのコンテンツのいくつかの組み合わせを含む、インスタンス・ホストの構成のそれぞれの要素を表現する様々な入力に基づきハッシュ値を生成しても良い。次に、実行環境を一意的に識別することを意図される生成されたハッシュ値は、このハッシュ値を許容可能な１セットの予め計算されたハッシュ値と比較可能な、クライアント及び／または信頼性のある第三者に提供されても良い。提案された実行環境のためのハッシュ値が予め計算された値、またはクライアントが選択した特定の予め計算された値のうちの１つに一致する場合に、これは、提案された実行環境がクライアントのセキュリティ基準を満たすクライアントへ必要な保証を提供することができる。使用されたハッシュ関数は、入力ソースのうちの１つへのわずかな変更（例えば、Ｍ１に関して変更された単一行のコードを有する別のモジュールＭ２とハイパーバイザ内の実行可能なモジュールＭ１の交換）にさえ対応する予め承認されたハッシュ値に関してハッシュ値の不一致をもたらす可能性があるような方式で選択されても良い。
【０００９】
クライアントが実行したい特定のアプリケーションに応じて、クライアント・ネットワークで（またはインスタンス・ホストにない他のクレデンシャル・ソースで）最初に生成または選択される、セキュリティ鍵、パスワード及び同様のもののような様々なクレデンシャルは、このアプリケーションを実行するコンピュート・インスタンスで要求される可能性がある。クライアントは、コンピュート・インスタンスへのそれらの伝送中に悪意のある当事者からこのようなクレデンシャルを隠すようにしたい可能性がある。さらに、少なくともいくつかの種類のクレデンシャルまたは他のセキュリティ関連のメタデータについて、またクライアントは、アプリケーションが動作するインスタンス・ホストから、クレデンシャルを含むディスクのようなローカル・ストレージ・デバイスが盗まれる、若しくは削除される可能性、またはクレデンシャルがそれらにアクセス可能なリモート・ストレージ・デバイスへ書き込まれる可能性を排除したい場合がある。
【００１０】
このような厳格なセキュリティ要件を満たすために、少なくともいくつかの実施形態において、以下のアプローチのいくつかの組み合わせを使用しても良い。最初に、１セットのクレデンシャルは、対応する秘密鍵Ｋｐｒｉｖを復号用のターゲット・インスタンス・ホストで使用可能な公開鍵Ｋｐｕｂを使用して（例えば、クレデンシャル・ソースで）暗号化されても良い。いくつかの実施態様において、ターゲットとされたインスタンス・ホストでのみ秘密鍵を利用可能である鍵ペアは、暗号化及び復号のために使用されても良い。他の実施態様において、インスタンス・ホストでのみアクセス可能な秘密鍵は、以下に記載されるようにクレデンシャルを復号するために必要な複数のステップのプロセスのうちの１つ以上の他のステップで代わりに（または加えて）使用されても良い。インスタンス・ホストでのみアクセス可能な秘密鍵の使用を要求することで、暗号化されたクレデンシャルを別のマシンへコピーする任意の媒介によるクレデンシャルの復号を防止しても良い。暗号化されたクレデンシャルは、秘密鍵を使用してクレデンシャルを抽出することができる、インスタンス・ホストへ（例えば、インスタンス・ホストでＴＰＭへ、または仮想化管理ソフトウェア・スタックのコンポーネントへ）送信されても良い。
【００１１】
いくつかの実施形態において、複数の操作を伴うプロトコルは、インスタンス・ホストでクレデンシャルを抽出するために使用されても良い。例えば、１つの実装において、少なくとも以下の、（ａ）信頼性のあるソフトウェア・スタックが復号を試みるときでもターゲット・コンピュート・インスタンス及び／またはインスタンス・ホストで依然として動作していることの検証、（ｂ）インスタンス・ホストでクレデンシャルの復号を要求するエンティティまたはプロセスが復号用の適切な管理者権限を有することの検証、及び（ｃ）復号操作自体、の操作をインスタンス・ホストで実行しても良い。このような実施態様において、クレデンシャルの復号は、検証操作の両方が成功しない限り、失敗する可能性がある、または許可されない可能性がある。いくつかの実施形態において、インスタンス・ホストにインストールされたＴＰＭは、インスタンス・ホストに秘密鍵のみがアクセス可能である、それ自体の暗号鍵ペアを提供しても良い。いくつかのこのような実施形態において、ＴＰＭの秘密鍵は、１セットのクレデンシャルを抽出する際に伴われるステップのうちの１つ以上で使用されても良い。インスタンス・ホストでＴＰＭにより生成されたハッシュ値Ｈ１が１セットの許容可能なハッシュ値と先に照合され、インスタンス・ホストがセキュリティ基準を満たしたかどうかを判定する１つの実施形態において、同じハッシュ値Ｈ１は、暗号化されたクレデンシャルと併せて送信され、トラステッド・リソース・スタックを使用していることを再検証するために使用されても良い（例えば、ＴＰＭ以前に内部に格納されたハッシュ値とＨ１を比較することで、または現在のハッシュ値Ｈ２を再計算してＨ１がＨ２に一致することを検証するＴＰＭにより）。さらにクレデンシャルを保護するために、少なくともいくつかの実施形態において、抽出されたクレデンシャルは、例えば、インスタンス・ホストの揮発性メイン・メモリ中の、インスタンス・ホストのプロセッサ・キャッシュ若しくはハードウェア・レジスタのある部分中の、またはＴＰＭにより管理されたメモリ中の、アクセス権をクライアント・アプリケーションに付与することが可能である、非永続メモリ位置内にのみ格納されても良い。インスタンス・ホストの永続ストレージ位置（１つ以上の回転ディスクまたはソリッド・ステート・ディスクのような）へクレデンシャルを保存すること、またはインスタンス・ホストからネットワーク経由でアクセス可能なことは、少なくともいくつかのこのような実施形態においてクライアントの厳格なセキュリティ・ニーズの観点から許容されない可能性がある。
【００１２】
抽出されたクレデンシャルは、それらが意図されたアプリケーション（複数を含む）と、またはこれによる使用のために非永続メモリ位置からアクセスされた後に、クレデンシャルは、少なくともいくつかの実施形態において永続ストレージへそれらが一度も保存されずに削除されても良い。例えば、１つの実施形態において、クライアントは、それらを既に必要としなくなった後に明示的にクレデンシャルを削除する要求を提出しても良い、または１セットのクレデンシャルは、インスタンスを終了するときに（クライアントの要求で、またはコンピューティング・サービスの主導でのいずれかで）削除されても良い。いくつかの実施形態において、クライアントからの明示的な要求は、クレデンシャルの削除のために要求されなくても良く、代わりに、クレデンシャルは、例えば対応する非永続メモリがいくつかの他の目的のために解放または再利用されるときに、それらが使用された後にいくつかの段階で自動的に削除される可能性がある。少なくともいくつかの実施形態において、非永続メモリから復号されたクレデンシャルにアクセスするために発行されたコマンド・ログは、例えば、インスタンス・ホストでハイパーバイザまたは管理用オペレーティング・システム・インスタンスにより、維持されても良い。クライアントの要求（またはクレデンシャルを削除した後にデフォルトによる）で、このようなログのデジタル署名された表現をクライアントへ提供しても良い。ターゲットにされたインスタンス・ホストでのみ復号を正常に実行することが可能であるこのような方式で１セットのクレデンシャルを暗号化することで、及びインスタンス・ホストで永続ストレージへクレデンシャルを書き込むことを回避することで、クレデンシャルは、ＳＳＬ（セキュア・ソケット・レイヤ）、ＴＬＳ（トランスポート・レイヤ・セキュリティ）及び同様のもののようなコモン・セキュリティ・プロトコルを使用することで簡単に可能であり得ることより大きな範囲で保護され得る。
【００１３】
アテストまたは証明されたインスタンス・ホストでクライアントのアプリケーションで、またはこれにより使用される１セットのクレデンシャルは、少なくともいくつかがクライアント自身のネットワークに設置され得る、異なる実施形態の様々な異なるソースにより生成されても良い。このようなソースは、例えば、顧客のネットワーク内に設置された、スマート・カード、ＰＣＩｅ（ペリフェラル・コンポーネント・インターコネクト・エクスプレス）カード・ベースのハードウェア・セキュリティ・モジュール（ＨＳＭ）、またはスタンドアロンＬＡＮ（ローカル・エリア・ネットワーク）ベースのＨＳＭを含んでも良い。いくつかの実施形態において、プロバイダ・ネットワークは、クライアントがまたクライアントのアプリケーション用のクレデンシャル・ソースとして機能することが可能である１つ以上のＨＳＭアプライアンスへのアクセスを取得または獲得し得るセキュリティ・サービスを実装しても良い。少なくとも１つの実施形態において、セキュリティ・サービスは、いくつかのセットの承認された実行環境またはリソース・スタックに対応するハッシュ値のリストを維持する、認証／証明エンティティを含んでも良く、このようなエンティティは、クライアントにより利用され、彼らのコンピュート・インスタンス用に提案されたインスタンス・ホストが彼らのセキュリティ要件を満たすことを確認しても良い。１セットのクレデンシャルは、例えば、様々な実施形態において、暗号鍵、アプリケーション特有のセキュリティ・トークン、乱数、ノンス値、シーケンス番号、またはパスワードの任意の組み合わせを含んでも良い。
【００１４】
少なくともいくつかの実施形態において、仮想コンピューティング・サービスは、様々なセキュリティ関連の操作を要求または開始するためにクライアントにより使用されることが可能である複数のプログラマティック・インタフェースを実装しても良い。例えば、１セットのアプリケーション・プログラミング・インタフェース（ＡＰＩ）、ウェブ・ページ、コマンド・ライン・ツール、及び／またはグラフィカル・ユーザ・インタフェース（ＧＵＩ）を実装しても良い。クライアントは、このインタフェースのうちの１つ以上を利用して、特定の実行環境のリソース・スタックが１つの実施形態でクライアントのセキュリティ基準を満たす検証を要求しても良い。１セットのクレデンシャルの暗号化された表現を生成する要求、及び／またはインスタンス・ホストへ暗号化された表現を送信する要求は、いくつかの実施形態においてプログラマティック・インタフェースを起動することで行われても良い。また、非永続ストレージから１つ以上のクレデンシャルを破棄する要求、またはコンピュート・インスタンスで動作する特定のアプリケーションへ１セットのクレデンシャルを提供する要求は、少なくともいくつかの実施形態においてプログラムで行われても良い。少なくとも１つの実施形態において、クライアントは、プログラマティック・インタフェースを使用してインスタンス・ホストでクレデンシャルにアクセスするために使用されたコマンド・ログを要求しても良い。
【００１５】
いくつかの実施形態において、ハードウェアＴＰＭチップまたはチップセットは、セキュリティ強化を要求するアプリケーションのために使用される、インスタンス・ホストのうちのいくつかまたはすべてで利用されても良い。このようなＴＰＭは、他の機能のうちで、ＳＨＡ（セキュア・ハッシュ・アルゴリズム）または他のハッシュ技術を使用するハッシュ値を生成する、ＲＳＡ（リベスト、シャミア、エーデルマン）または他のアルゴリズムを使用する暗号鍵を生成する、及び／または乱数を生成することが可能である１つ以上の暗号プロセッサまたはコアを含んでも良い。加えて、いくつかの実装において、ＴＰＭは、固有な秘密鍵（ＴＰＭと関連した公開鍵に対応する）、セキュリティ関連のメトリックのための１つ以上のプラットフォーム・コンフィギュレーション・レジスタ（ＰＣＲ）、構成証明識別キー、及び／または他の目的のために使用可能な鍵を含むストレージを備えても良い。いくつかの実装において、秘密鍵は、製造中にＴＰＭチップに焼き付けられても良い。少なくとも１つの実施形態において、例えば、ハッシュ関数、鍵及び同様のものをまた生成可能な仮想化されたＴＰＭを使用して、ＴＰＭの機能性をソフトウェアに大部分または完全に実装しても良い。いくつかの実施形態において、ハッシュ関数以外の数学的な関数を使用して、実行環境リソース間で区別する際に有用な値を生成しても良い。
例示的なシステム環境
【００１６】
図１は、少なくともいくつかの実施形態により、プロバイダ・ネットワークの暗号でアテストされたリソースでクライアントに指定されたクレデンシャルを保護し得る例示的なシステム環境を説明する。示されるように、システム１００は、インスタンス・ホスト１２５Ａ及び１２５Ｂを含む、プロバイダ・ネットワーク１１０に実装された仮想コンピューティング・サービスの複数のインスタンス・ホスト１２５を含む。インスタンス・ホスト１２５は、例えばインスタンス・ホスト１２５Ａでコンピュート・インスタンスＣＩ１５０Ａ及び１５０Ｂ、ならびにインスタンス・ホスト１２５ＢでＣＩ１５０Ｋ及び１５０Ｌを含む、（ＣＩ）１５０と呼ばれる仮想マシンを実行するために使用されるリソースを各々含んでも良い。各々のインスタンス・ホスト１２５Ａ及び１２５Ｂは、インスタンス・ホスト１２５ＡでＴＰＭ１７０Ａ及びインスタンス・ホスト１２５ＢでＴＰＭ１７０Ｂのような、それぞれのトラステッド・プラットフォーム・モジュールまたはＴＰＭ１７０を含む。ＴＰＭは、対応するインスタンス・ホストがクライアントのセキュリティ基準を満たすことを検証するために使用可能な実行環境の様々な要素から導かれたハッシュ値を生成し、様々な通信コンテンツを復号及び暗号化し、乱数を生成する等のような、システム１００の複数のセキュリティ関連の機能を実装するために利用されても良い。プロバイダ・ネットワーク１１０のすべてのインスタンス・ホスト１２５が少なくともいくつかの実施形態でＴＰＭを含んでも良いとは限らないことに留意する。
【００１７】
描写された実施形態のリソース・マネージャ１８０は、１つ以上のクライアント・アプリケーションのために使用される信頼性のあるコンピューティング・プラットフォーム用の要求などの、矢印１４８で示されるような、クライアント・デバイス１３３からの様々な要求を受信してこれに応じるために応答可能であっても良い。１つ以上のクライアントに指定されたセキュリティ関連の基準を満たす実行プラットフォームのための要求に応答して、１つの実施形態において、リソース・マネージャは、クライアントの代わりに新規のインスタンスを起動することを可能にするのに十分な容量（例えば、計算能力、ストレージ容量、メモリ容量及び／またはネットワーク容量）を有するインスタンス・ホスト１２５のうちの１つを選択しても良い。クライアントのセキュリティ・ニーズに従い、ＴＰＭ１７０を含む１２５Ａのようなインスタンス・ホストを選択しても良い。次にその選択されたインスタンス・ホスト上でＴＰＭは、例えば、インスタンス・ホスト１２５に実装されたリソース・スタックの様々な要素に関連する構成情報に基づき、インスタンス・ホストの実行環境に対応するハッシュ値を生成しても良い。入力として使用されたリソース・スタックの要素は、とりわけ、ハイパーバイザ、ＢＩＯＳ設定、インスタンス・ホストで確立された管理用オペレーティング・システム・インスタンス、提案されたコンピュート・インスタンスのために使用されクライアントへ提供されるゲストまたは非管理用オペレーティング・システム・バージョン、インスタンス・ホストの様々なデバイスでのファームウェア、インスタンス・ホストで１つ以上のハードウェア・レジスタのコンテンツなどを含んでも良い。いくつかの実施形態において、ＴＰＭまたは同様のセキュリティ・モジュールは、様々な入力ソースへの読み出しアクセス権を付与されても良い。例えば、それは、インスタンス・ホストのローカルまたはリモート（例えば、ネットワーク・アクセス可能な）・ディスク、ＢＩＯＳ、様々なデバイスのファームウェア、ハイパーバイザをインストールするストレージなどで、オペレーティング・システム・インストールのコンテンツを読み出すことを許可されても良い。
【００１８】
いくつかの実施形態において、ＴＰＭにより生成されたハッシュ値は、矢印１５１により示されるように、実行プラットフォームを要求したクライアント・デバイス１３３へ送信されても良い。その後ハッシュ値を使用して、例えば、このハッシュ値がクライアントにより承認された実行環境用に生成された、予め計算されたハッシュ値に一致する場合に、インスタンス・ホストがクライアントのセキュリティ基準を満たすことを検証するために使用されても良い。いくつかの実施形態において、クライアントは、それ自体の承認されたハッシュ値のデータベースを維持しても良い。他の実施形態において、プロバイダ・ネットワーク外で第三者プラットフォーム・アテスタ１８２Ｂは、使用されても良い、またはプロバイダ・ネットワーク・リソースを利用してプロバイダ・ネットワーク内でアクセス可能であるプラットフォーム・アテスタ１８２Ａは、ハッシュ値を検証するために使用されても良い。アテスタ（プロバイダ・ネットワークへ内部に、またはこれから外部に）及び／またはクライアント・デバイス１３３自体のいずれかの種類は、描写された実施形態で承認された構成に対応するハッシュ値のリストまたはコレクションを含むアテストされた構成リポジトリ１８８へのアクセスを提供されても良い。少なくともいくつかの実施形態において、このアテスタは、様々な実行プラットフォームの、セキュリティのアービタまたは改ざん関連のステータスとして機能することに合意している信頼性のある第三者エンティティまたは組織を表現しても良い。クライアントの要件の特異性に依存する、少なくともいくつかの実施形態において、クライアントは、ＴＰＭにより生成されたハッシュ値が承認されたハッシュ値のリストのいずれかに一致するが、それが承認されたハッシュ値の指定された１つに一致することを断じて検証したくない可能性がある。アプリケーションのいくつかの種類について、クライアントは、ハッシュ値が１セットの予め承認された値のうちのいずれかに一致する構成を進んで受け入れる可能性がある。
【００１９】
いくつかの実施形態において、コンピュート・インスタンス１５０（例えば、１５０Ｂ）は、クライアントが適切なセキュリティ基準を満たしていることを示すまでクライアントの代わりに起動しない可能性がある。他の実施形態において、このインスタンスは、構成が許容可能であることをクライアントが示す前に一時的に起動しても良い。いずれの状況においても、起動したＣＩ１５０上で実行されるいくつかの種類のアプリケーションについて、インスタンス・ホスト外部の１つ以上のクレデンシャル・ソースからまたはこれらにより生成された１セットのクレデンシャルを必要とする可能性がある。このようなクレデンシャル・ソースは、プロバイダ・ネットワーク１１０（信頼性のある実行環境用の要求を発行したクライアント・ネットワーク１１５内に設置されたクレデンシャル・ソース１３７のような）の外、またはプロバイダ・ネットワーク１１０内のいずれか一方に設置しても良い。いくつかの実施形態において、プロバイダ・ネットワークは、クライアントによりクレデンシャル・ソースとして使用されることが可能な、ＨＳＭ１４０Ａまたは１４０Ｂのような、複数の専用ハードウェア・セキュリティ・モジュール（ＨＳＭ）・アプライアンス１４０へのアクセス権をクライアントが取得することを可能にするセキュリティ・サービス１８９を含んでも良い。プロバイダ・ネットワーク内に実装された仮想コンピューティング・サービス及び／または他のネットワーク・アクセス可能なサービスとは対照的に、ＨＳＭサービスは、１人のクライアントのみが一度にＨＳＭアプライアンス１４０を使用することを可能にされても良い、シングルテナントであっても良い。いくつかの実施形態において、セキュリティ・サービスのＨＳＭ１４０は、プロバイダ・ネットワーク・リソースを使用するクライアントの代わりにセットアップされた、隔離された仮想ネットワーク（ＩＶＮ）内にリソースとして出現しても良い。クライアントは、例えば、ＨＳＭ１４０及び／または他のリソースへクライアント選択のＩＰ（インターネット・プロトコル）アドレスを割り当てる能力、サブネットを構成し、ルーティング・テーブルをセットアップする能力などのような、ＩＶＮのリソース用のネットワーク構成設定に関してかなりの自由度を付与される可能性がある。このクライアントは、様々な実施形態で彼らのＨＳＭ１４０の暗号化ドメインを初期化及び管理可能であっても良い。いくつかの実施形態において、クライアント・ネットワークのクレデンシャル・ソース１３７は、クライアントのＬＡＮ（ローカル・エリア・ネットワーク）内のスタンドアロンＨＳＭ（すなわち、プロバイダ・ネットワーク・セキュリティ・サービスと関連しないＨＳＭ）、スマート・カード、及び／またはＰＣＩｅカード・ベースのＨＳＭを含んでも良い。
【００２０】
クライアントの承認されたコンピュート・インスタンス１５０でアプリケーションのために使用される１セットのクレデンシャルは、描写された実施形態でクライアントにより選択された１つ以上のソースから取得されても良い。次にクライアントは、例えば、選択された鍵ペア・ソースから公開鍵を使用して１セットのクレデンシャルを暗号化し、この暗号化されたクレデンシャルを描写された実施形態の矢印１５２及び１５３で示されるようなインスタンス・ホスト１２５へ送信する要求を提出しても良い。インスタンス・ホストで、１セットのクレデンシャルは、復号され（例えば、インスタンス・ホストに固有の秘密鍵の使用を伴う複数のステップのプロセスで）、クライアントのコンピュート・インスタンス１５０からアクセス可能な非永続メモリ位置（例えば、メイン・メモリの一部、プロセッサ・キャッシュ、またはハードウェア・レジスタ）に格納されても良い。クレデンシャルを永続ストレージ・デバイスへ書き込むことなく、クライアントのアプリケーションにより非永続メモリ位置からクレデンシャルを利用しても良い。非永続メモリ位置にのみクレデンシャルを保持することは、少なくともいくつかの場合において洗練されたネットワーク攻撃または物理的な攻撃が可能な悪質なエンティティに容易いターゲットを提供する可能性がある、ディスクのような永続ストレージ・デバイスへのクレデンシャルの書き込みよりも、安全なアプローチである可能性がある。アプリケーションが１セットのクレデンシャルを使用した後に、このクレデンシャルは、例えば、クライアントからの明示的な削除要求に応答して、またはクライアントの要求若しくはリソース・マネージャ１８０の主導で最終的にこのインスタンスを終了させるときに、非永続ストレージ内から廃棄されても良い。いくつかの実施態様において、非永続メモリ中のクレデンシャルへのアクセス・ログは、クライアントに利用可能にされても良い。
例示的なインスタンス・ホスト・アーキテクチャ
【００２１】
図２は、少なくともいくつかの実施形態により、仮想コンピューティング・サービスにより使用され得るインスタンス・ホストのアーキテクチャの概要を提供する。示されるように、インスタンス・ホスト１２５は、例えば、いくつかの数の処理コアまたはプロセッサ２７０、メイン・メモリと称され得る少なくとも１つの非永続メモリ２７２、ディスク（回転ディスク及び／またはソリッド・ステート・ディスクを含んでも良い）のような１つ以上のローカル・ストレージ・デバイス２９０、及び１つ以上のネットワーク・インタフェース・カード（ＮＩＣ）２８０を含んでも良い、複数のハードウェア・コンポーネント２１０を備えても良い。また他の非永続メモリ位置は、様々なレベルのプロセッサ・キャッシュ、レジスタ、及び同様のもののような、少なくともいくつかの実施形態においてハードウェア・レイヤ２１０中で利用可能であっても良い。いくつかの実施形態において、先に述べたように、またハードウェアのトラステッド・プラットフォーム・モジュール１７０は、インスタンス・ホスト内に組み込まれる、またはこれに取り付けられても良い。ＴＰＭ自体は、いくつかの実施形態においてクレデンシャルを保存しても良い非永続メモリ領域を含んでも良い。また１つ以上のモニタ、マウス、及び同様のもの（図２で図示せず）のような周辺機器は、いくつかの実装においてインスタンス・ホストに取り付けられても良い。
【００２２】
インスタンス・ホスト１２５のハードウェア・リソースは、描写された実施形態において、ハイパーバイザ２０８及び／またはオペレーティング・システム２３０の管理用インスタンスを備える仮想化管理ソフトウェア・スタックの支援で仮想化されても良い（例えば、各々のインスタンスがハードウェアへの排他的なアクセス権をもったかのように、インスタンス・ホストでブートまたは起動された、いくつかの仮想マシンまたはコンピュート・インスタンス１５０へ提示される）。オペレーティング・システムの管理用インスタンスは、いくつかの実施態様において「ドメイン０」または「ｄｏｍ０」とラベル付けされた「特権ドメイン」と呼ばれても良く、各々のコンピュート・インスタンス２３２のために確立されたそれぞれのオペレーティング・システムは、「非特権ドメイン」（「ｄｏｍＵ」とラベル付けされた）、「ゲスト・オペレーティング・システム」、または「ゲスト・ドメイン」と呼ばれても良い。ハードウェア・コンポーネントがコンピュート・インスタンス１５０により、例えば、オペレーティング・システムにより、またはオペレーティング・システム上で動作するアプリケーションにより要求された操作に起因して、利用されるときに、典型的にハイパーバイザ２０８は、描写された実施形態において、矢印２４６Ａ、２４６Ｂ、２４６Ｃ及び２４７で示されるように、インスタンス及びハードウェア・コンポーネント間の媒介として動作しても良い。いくつかの場合において、例えば使用されているプログラマティック・インタフェースに応じて、ハイパーバイザ及び管理用オペレーティング・システム・インスタンス２３０の両方は、インスタンス及びハードウェア間の媒介であっても良い。例えば、操作のための要求経路は、つぎの、ｄｏｍＵ−＞ハイパーバイザ−＞ｄｏｍ０−＞ハイパーバイザ−＞ハードウェア、のように流れても良く、この応答は、逆の経路を使用してインスタンスへ提供されても良い。いくつかの実施態様において、ｄｏｍ０は、１つ以上の種類のハードウェア・コンポーネントに直接アクセスする（矢印２４４で示されるような）ことが可能であって良く、ｄｏｍ０及びハードウェア間の他のインタラクションは、ハイパーバイザを通過（矢印２４５で示されるような）しても良い。
【００２３】
描写された実施形態において、ＴＰＭ１７０は、ハッシュ関数、乱数、鍵及び同様のものの効率的な生成のようなセキュリティ関連の計算のために具体的に設計された１つ以上の暗号化プロセッサまたはコアを含んでも良い。ＴＰＭ１７０のハッシュ機能は、例えば、ハッシュ関数への入力として、ハイパーバイザ、ｄｏｍ０、ｄｏｍＵ、ファームウェア及びＢＩＯＳを使用する、インスタンス・ホストの実行環境を識別するハッシュ署名を取得するために使用されても良い。ＴＰＭ１７０は、製造中にいくつかの実施態様において「焼き付けられた」公開／秘密鍵ペアの秘密鍵を含んでも良いため、この秘密鍵は、任意の他のインスタンス・ホストからアクセス不可能である。このように鍵ペアは、少なくともいくつかの実施形態において、他のどこでもない、排他的にインスタンス・ホスト１２５での使用を意図される複数セットのクレデンシャルを保護するために使用されても良い。例えば、ＴＰＭの公開鍵は、いくつかの実施形態において、クライアントへ、及び／またはプロバイダ・ネットワーク内または外に実装されたハードウェア・セキュリティ・モジュール（ＨＳＭ）のような様々なクレデンシャル・ソースからアクセス可能にされても良い。これらのソースのうちの１つからインスタンス・ホスト１２５へクレデンシャルを送信する前に、最初にそれらは、ＴＰＭの公開鍵を使用して暗号化されても良い。ＴＰＭの秘密鍵が「焼き付けられる」方式のため、このようなクレデンシャルは、ＴＰＭが存在する特定のインスタンス・ホストでのみ抽出可能であっても良い。ＴＰＭの秘密鍵は、例えば、実際の復号前の予備ステップで、または復号ステップ自体で、上記で説明されるように暗号化された複数セットのクレデンシャルを復号する際に伴われる１つ以上の操作中に使用されても良い。いくつかの実施形態において、またＴＰＭは、クレデンシャルを抽出でき、クライアントのインスタンスで動作するアプリケーションによりクレデンシャルを読み出しても良い専用の非永続メモリを含んでも良い。いくつかの実施形態において、ＴＰＭ以外のセキュリティ・コンポーネントは、ハッシュ関数、暗号化／復号化などのために使用されても良い。先に述べたように、少なくとも１つの実施形態において、仮想化されたＴＰＭは、ソフトウェアで主に実装されても良い。
実行環境のハッシュ計測
【００２４】
図３は、少なくともいくつかの実施形態により、実行環境を表現するハッシュ値を生成するためにトラステッド・プラットフォーム・モジュール（ＴＰＭ）１７０で使用されても良い入力データ・ソースの実施例を説明する。示されるように、ＴＰＭのハッシュ生成器３７０は、様々なＢＩＯＳ設定３０２、いくつかのコンポーネントまたはすべてのハイパーバイザ２０８（例えば、ハイパーバイザのソフトウェア・コード）、ｄｏｍ０または管理用オペレーティング・システム・インスタンス２３０、インスタンスのために使用されるゲスト・オペレーティング・システムまたはｄｏｍＵ、ファームウェア３４０、及び／または様々なレジスタ・コンテンツ３４２を入力として取っても良い。
【００２５】
実行環境の構成を表現するハッシュ値３７５（時としてハッシュ計測と呼ばれる）は、ＴＰＭにより生成されても良い。次にハッシュ値は、「アテストされた」ハッシュ値３９０と呼ばれても良い１セットの予め承認され予め生成されたハッシュ値と比較され、考慮される実行環境が承認された構成にマッチするかどうかを判定しても良い。少なくともいくつかの実施形態において、値３７５を生成するために使用されるハッシュ関数は、１バイトの入力（例えば、この入力に含まれる、ソフトウェア・スタック、ファームウェア及び／またはレジスタ・コンテンツ）がリファレンスまたは「アテストされた」構成に関して変更されている場合であっても、生成されたハッシュ値が基準値に一致しない可能性がある、このような方式で選択されても良い。少なくともいくつかの実施形態において、少なくともいくつかの関心のリソース・スタックに対応する予め承認されたハッシュ値は、クライアントにより獲得されても良いため、リソース・スタックの検証は、第三者とのインタラクションなしでクライアントにより実行されても良い。他の実施形態において、リソース・スタックのトラステッド・アテスタまたはサーティファイアを使用しても良い。このようなアテスタは、異なる実施形態においてプロバイダ・ネットワーク外またはプロバイダ・ネットワーク内でアクセス可能であって良い。少なくともいくつかの実施形態において、先にＴＰＭで生成されたハッシュ値３７５（例えば、インスタンス・ホスト用のアテステーション・プロセスの部分として）は、暗号化された１セットのクレデンシャルとともにインスタンス・ホストへ送信されても良く、ハッシュ値を最初に生成したため、インスタンス・ホストのリソース・スタックが改ざんされていないことを再度確認するために使用されても良い。
プログラマティック・インタフェースを介するセキュリティ関連のインタラクション
【００２６】
先に述べたように、いくつかの実施形態において、ＡＰＩ、ウェブ・ページ、ＧＵＩ及び／またはコマンド・ライン・ツールのような複数のプログラマティック・インタフェースは、プロバイダ・ネットワークに実装されても良く、クライアントがセキュリティ関連の要求を提出し、対応する応答を受信することを可能にする。図４は、少なくともいくつかの実施形態により、トラステッド・リソース・スタックを使用してコンピュート・インスタンスを起動する、クライアント・デバイス１３３及びリソース・マネージャ１８０間の例示的なインタラクションを図示する。示されるように、クライアントは、プログラマティック・インタフェース４６６のうちの１つを介してリソース・マネージャ１８０へトラステッド・コンピュート・インスタンスを起動する要求４０２を提出しても良い。クライアントは、例えば、必要なインスタンスの種類またはカテゴリ（例えば、「小規模」、「中規模」または「大規模」のようなコンピュート・インスタンスの支援された種類の中から特定の１種類を示すことで）を指定しても良い。いくつかの場合において、選択されたプログラマティック・インタフェースを介して指定されることが可能なパラメータに応じて、またクライアントは、インスタンスを好ましくは設置するべき地理的領域、選択された価格設定方針（仮想コンピューティング・サービスにより複数の価格設定方針を支援する場合に）、インスタンスを必要な期間などのような、他の選好を示しても良い。いくつかの実装において、またクライアントのセキュリティ要件を起動要求で示しても良く、例えば、セキュリティ・ポリシーを参照しても良い、または１つ以上のセキュリティ基準（第三者によるインスタンスの実行環境の認証のような）を要求４０２に含んでも良い。
【００２７】
起動要求を受信すると、リソース・マネージャ１８０は、描写された実施形態において複数のステップのプロセスを開始しても良い。第一ステップにおいて、所望の種類のインスタンスを起動し、セキュリティ基準を有する他のクライアントの選好のうちの多くをできる限り満たすのに十分な容量を有する候補のインスタンス・ホスト１２５を探し出しても良い。クライアントのセキュリティ要件を満たすために、ハードウェアまたは仮想ＴＰＭ１７０を含むインスタンス・ホストを選択しても良い。第二ステップにおいて、リソース・マネージャは、ＴＰＭ１７０へ構成ハッシュ要求を提示しても良い。入力（図３で図示されるこれらのような）としてのインスタンス・ホスト実行環境の様々な要素を使用して、ＴＰＭは、インスタンス・ホストでリソース・スタックのための構成ハッシュ値４７５を生成し、このハッシュ値をリソース・マネージャ１８０へ送信しても良い。
【００２８】
その後リソース・マネージャは、次のステップでクライアント４３３に応答してハッシュ値４７５を含んでも良い。いくつかの実施形態において、いくつかの異なる候補のインスタンス・ホストは、識別されても良く、対応するハッシュ値４７５は、承認のために要求するクライアントへすべて提供されても良い。このクライアントは、データベース（例えば、クライアントにより維持されたローカル・データベース、または数人の信頼性のある第三者により若しくはプロバイダ・ネットワークのサービスにより維持された別のデータベース）で承認され先に生成されたハッシュ値と１つのハッシュ値または複数のハッシュ値を比較しても良い。ハッシュ値のうちの１つが許容可能であることがわかる場合に、起動承認メッセージ４１０は、リソース・マネージャに送信されても良い。次にクライアントは、承認されたインスタンスにアクセス可能であっても良い。いくつかの実施形態において、インスタンスは、承認を受信した後に、起動またはブートされても良く、他の実施形態において、このインスタンスは、受け入れられる可能性があるという仮定の下で、承認を受信する前に起動されても良い。少なくとも１つの実施形態において、リソース・マネージャ１８０がクライアントのセキュリティ要件を認識する場合（例えば、クライアントが所望の構成のハッシュ値をリソース・マネージャへ示す場合）に、リソース・マネージャ自体は、候補のインスタンス・ホストがクライアントからの承認を要求する前にこの要件を満たすことを確認しても良い。１つの実施形態において、クライアントは、リソース・マネージャにこの構成を承認させても良いため、ハッシュ値は、クライアントへ送信される必要がない可能性がある。
【００２９】
上記で概説されるようにトラステッド・リソース・スタックを使用して承認されたインスタンスを起動した後に、クライアントは、外部で生成されたクレデンシャル（例えば、鍵、パスワード、トークンまたは同様のもの）を利用して、インスタンスで１つ以上のアプリケーションまたはオペレーティング・システム・プログラム／サービスを実行したい可能性がある。図５は、少なくともいくつかの実施形態により、トラステッド・リソース・スタックで顧客に指定されたクレデンシャルの例示的な伝達、抽出及び使用を説明する。描写された実施形態において、クライアントは、プログラマティック・インタフェース５６６を利用して、コンピュート・インスタンスを起動したインスタンス・ホストへプログラムで暗号化され送信される指定されたソース５３３により生成された（またはこれから利用可能な）１セットのクレデンシャルを指定することができる。
【００３０】
このようなクレデンシャル転送要求に応答して、このクレデンシャルは、例えば、インスタンス・ホストでＴＰＭ１７０と関連した公開鍵５９０を使用して、指定されたソース５３３から取得され、送信前に暗号化されても良い。次に暗号化されたクレデンシャル５０２は、ネットワーク接続経由でインスタンス・ホスト１２５へ送信されても良い。描写された実施形態において、インスタンス・ホスト１２５へ固有な秘密鍵（インスタンス・ホスト１２５の外側にアクセス不可能であっても良い、ＴＰＭ１７０と関連した秘密鍵５９０のような）は、この１セットのクレデンシャルを抽出するために使用されても良い。復号された１セットのクレデンシャル５０４は、コンピュート・インスタンス２３２から直接または間接でアクセス可能な非永続メモリ２７２に格納されても良い。少なくともいくつかの実施形態において、クレデンシャルは、インスタンス・ホスト１２５でローカルな永続ストレージ・デバイス２９０へ、またはネットワーク・アクセス可能な永続ストレージ・デバイスへ保存またはコピーされないでも良い。例えば、１つの実施形態において、特定のアプリケーション５７０のみ、この１セットのクレデンシャルを読み出すことを許可されても良く、アプリケーション５７０は、いずれの箇所にもクレデンシャルを書き込めないように設計されても良い。クレデンシャルを読み出すために発行されたコマンド・ログは、例えば、インスタンス・ホストでハイパーバイザにより、いくつかの実施形態で維持されても良く、要求に基づきクライアントへ提供されても良い。１５０Ａ及び１５０Ｂのようなインスタンスで動作する他のアプリケーションは、必要に応じてローカル及び／またはネットワーク・ストレージへの書き込みを続けても良い。いくつかの実施形態において、実装されたプログラマティック・インタフェースのうちの１つは、この１セットのクレデンシャルへのポインタを指定されたアプリケーション５７０へ提供して、このアプリケーションがクレデンシャルにアクセスすることを可能にするようにクライアントが要求することを可能にしても良い。
【００３１】
この１セットのクレデンシャルをクライアントが望むように使用した後に、いくつかの実施形態において、クライアントは、例えば、侵入者または悪意のあるエンティティにより取得されるクレデンシャルの確率を低減させるために、できる限りクレデンシャルを破棄したい可能性がある。クライアントは、いくつかの実施形態において、いくつかの代替のプログラマティック・インタフェースを提供され、クレデンシャルを削除しても良い。図６ａ及び６ｂは、少なくともいくつかの実施形態により、インスタンス・ホスト１２５で非永続メモリから復号されたクレデンシャルの削除をもたらしても良いクライアント要求のそれぞれの実施例を説明する。図６ａで描写された実施形態において、クライアント１３３は、例えば、アプリケーション５７０及びコンピュート・インスタンス１５０Ａを実行し続けながら、非永続メモリ２７２から復号されたクレデンシャル５０４を削除する要求６０２をプログラマティック・インタフェース６３６経由で発行する。したがってそれに応じて、クレデンシャルのために使用されるメモリ空間は、図６ａで「Ｘ」記号により示されるように、解放及び／または上書きされても良い。
【００３２】
あるいは、いくつかの実施形態において、非永続メモリ２７２からクレデンシャルを削除するために、クライアントは、クレデンシャルを利用したインスタンス１５０Ａを終了させる要求６０５（例えば、プログラマティック・インタフェース６３７を介して）を簡単に提出しても良い。ＴＰＭ１７０及び／または仮想化管理ソフトウェア・スタックのコンポーネントのうちの１つは、クレデンシャルへのアクセスを許可されたインスタンスのみが終了することを認識しても良く、それに応じてメモリ２７２からクレデンシャルを削除／上書きするようにしても良い。このようにして、いくつかのこのような実施形態において少なくとも、クライアントは、クレデンシャルを削除することを具体的に示す必要がなく、代わりに、クレデンシャルは、クレデンシャルを使用していたインスタンスの終了の副作用としてインスタンス・ホストから完全に削除されても良い。図６ｂの２つの「Ｘ」記号は、要求６０５の結果として、クレデンシャルを削除してインスタンス１５０Ａを終了させることを示す。いくつかの実施形態において、明示的な削除要求もインスタンス終了要求も要求されない可能性があり、代わりに、クレデンシャルは、メモリを解放する若しくはこれのガベージ・コレクションを行うときに、またはメモリをいくつかの他の目的のために再割り当てするときにメモリ２７２から自動的に削除されても良い。
【００３３】
少なくともいくつかの実施形態により、ハイパーバイザ２０８（または図６ａ及び６ｂで示されない管理用オペレーティング・システム・インスタンス２３０）のような仮想化管理スタック・コンポーネントは、インスタンス・ホスト１２５にクレデンシャルを格納した非永続メモリの部分にアクセスするために発行されたまたは受信したすべてのコマンドの追跡を続けるように構成されても良い。このようなコマンド上のメタデータを含み、クレデンシャルを読み出したインスタンス識別子及びプロセス識別子、コマンドを発行した時間、ならびに同様のもののような、ログは、描写された実施形態のハイパーバイザにより維持されても良い。クライアント要求に応答して、またはデフォルトにより、クレデンシャル・アクセス・ログ６４２のデジタル署名された表現は、例えば、削除要求６０２または終了要求６０５に対応する操作の完了後に、いくつかの実施形態においてハイパーバイザ２０８によりクライアント１３３へ提供されても良い。いくつかの実施形態において、このようなログは、例えば、削除または終了前に、いつでも要求に応じて提供されても良い。少なくとも１つの実施形態において、クライアントは、実時間でクレデンシャルへのアクセスを報告する。例えば、要求するアプリケーションがアクセスを提供される前にクライアントによりクレデンシャルのための読み出し要求を承認しなければならない、または読み出しが発生したら直ちに読み出し記録をクライアントへ提供することを要求しても良い。
【００３４】
少なくとも１つの実施形態において、インスタンス・ホストでＴＰＭまたはいくつかの他の暗号化モジュールは、アプリケーション５７０で必要とされるときに、デフォルトで暗号化された形式で（例えば、ＴＰＭの非永続メモリで）１セットのクレデンシャルを格納しても良く、オンデマンドでクレデンシャルのみを復号しても良い。いくつかの実施形態において、上記で説明されたそれらと同様に様々なインタラクションのセキュリティをさらに強化するために、鍵ペア（ＴＰＭ公開／秘密鍵ペアのような）の使用に加えて、ＳＳＬ（セキュア・ソケット・レイヤ）またはＴＬＳ（トランスポート・レイヤ・セキュリティ）のような安全なネットワーク・プロトコルを使用しても良い。
アテストされたリソースでクライアントに指定されたクレデンシャルを保護する方法
【００３５】
図７は、少なくともいくつかの実施形態により、プロバイダ・ネットワークの暗号でアテストされたリソースでクライアントに指定されたクレデンシャルを保護するために実行されても良い操作の態様を説明する流れ図である。上記で説明されるように、いくつかの実施形態においてプロバイダ・ネットワークに実装された、仮想化されたコンピューティング・サービスのクライアントは、特定の種類のアプリケーションのために信頼性のある安全な実行プラットフォームを利用したい可能性がある。それに応じて、このようなクライアントは、リソース・マネージャ１８０、または仮想化されたコンピューティング・サービスのいくつかの他の管理用コンポーネントへ、例えば、指定された性能及び機能を含む、トラステッド・コンピュート・インスタンス用の要求を提出しても良い。コンピューティング・サービスは、クライアントの要件を満たすことが可能な候補のインスタンス・ホストを識別しても良い。図７の要素７０１に示されるようないくつかの実施形態において、インスタンス・ホストでインスールまたは構成されたＴＰＭのようなセキュリティ分析コンポーネントは、例えば、ハードウェア、ファームウェア及び／またはソフトウェア・スタックの様々なコンポーネントを改ざんしていないことを確認することで、インスタンス・ホストがクライアントのセキュリティ基準を満たすかどうかを判定するために使用されても良い。クライアントの承認に基づき、選択されたインスタンス・ホストでトラステッド・リソース・スタックを使用してインスタンスを起動しても良い。
【００３６】
インスタンス・ホストでクライアントの代わりに実行された操作のために使用されるセキュリティ・クレデンシャル・ソース（例えば、鍵、トークン、パスワード、シーケンス番号、乱数、ノンス値、及び同様のもの）の表示は、例えば、インスタンス・ホストの管理用コンポーネントで、またはリソース・マネージャで、取得されても良い（要素７０４）。このようなクレデンシャル・ソースは、例えば、スマート・カード、ＰＣＩｅ（ペリフェラル・コンポーネント・インターコネクト・エクスプレス）カード・ベースのハードウェア・セキュリティ・モジュール（ＨＳＭ）、クライアント・ネットワーク内に設置されたスタンドアロンＬＡＮ（ローカル・エリア・ネットワーク）ベースのＨＳＭ、またはプロバイダ・ネットワークのネットワーク・アクセス可能なサービスにより実装されたＨＳＭアプライアンスを含んでも良い。このようにして、クレデンシャル・ソースは、クライアントのネットワーク内またはプロバイダ・ネットワーク内のいずれかに設置されても良い。例えば、クライアントの隔離された仮想ネットワーク内での使用のために、クライアントへプロバイダ・ネットワーク・データ・センタ内に設置されたＨＳＭアプライアンスを割り当てるまたは割り振るネットワーク・アクセス可能なサービスをプロバイダ・ネットワークが実装する実施形態において、クライアントは、クレデンシャルを取得するソースとしてこのようなＨＳＭアプライアンス（複数を含む）のネットワーク・アドレスまたはいくつかの他の識別を指定しても良い。クレデンシャルは、承認されたコンピュート・インスタンスで、１つ以上のアプリケーション、オペレーティング・システム・プログラム若しくはサービス、またはアプリケーション及びサービスのいくつかの組み合わせのために意図されても良い。いくつかの場合において、クレデンシャルの複数のソースは、クライアントにより示されても良い。
【００３７】
コンピュート・インスタンスで必要なクレデンシャルは、暗号化されインスタンス・ホストへ送信された、ソースから取得されても良い。いくつかの実施形態において、いくつかの選択された鍵ペア・ソースから取得された公開鍵を使用してクレデンシャルを暗号化しても良い。暗号化されたセットのクレデンシャルをインスタンス・ホストで受信しても良い（要素７０７）。クレデンシャルは、例えば、インスタンス・ホストへ固有の秘密鍵を使用して、インスタンス・ホストで抽出／復号されても良い（要素７１０）。いくつかの実施形態において、ＴＰＭの製造中にＴＰＭに焼き付けられた鍵（したがってＴＰＭをインストールするインスタンス・ホストでのみアクセス可能な）は、インスタンス・ホストでの複数のステップの復号手順の少なくとも１つのステップのために使用されても良い。いくつかの実施形態において、この複数のステップの手順は、トラステッド・リソース・スタックまたはソフトウェアをコンピュート・インスタンス及び／またはインスタンス・ホストでまだ使用していることを再検証する（例えば、ＴＰＭにより先に生成され、復号手順中の使用のためにインスタンス・ホストへ送信されるハッシュ値を使用して、）ことを備えても良い。
【００３８】
抽出されたクレデンシャルは、インスタンス・ホストで非永続メモリ内に格納されても良い（要素７１３）。例えば、様々な実施形態において、クレデンシャルは、インスタンス・ホストのメイン・メモリの一部内、プロセッサ・キャッシュ内、または１つ以上のハードウェア・レジスタ内に格納されても良い。少なくとも１つの実施態様において、ＴＰＭの、レジスタ、キャッシュまたは他の非永続メモリ位置は、クレデンシャルを格納するために使用されても良い。様々な実施形態において、クレデンシャルは、インスタンス・ホストまたはネットワーク・アクセス可能なストレージ・デバイスのいずれか一方で永続ストレージに書き込み不可、またはこれに保存不可である。
【００３９】
クレデンシャルは、クライアントの代わりにコンピュート・インスタンスで様々な操作のために利用されても良い（要素７１６）。いくつかの実施態様において、クレデンシャルは、例えば、復号へジャストインタイム・アプローチを使用しても良い、アプリケーションまたはプログラムによりそれらが必要とされるまで、暗号化された形式で保持されても良い。クレデンシャルをもはや必要としない判定を行った後に、クレデンシャルは、非永続メモリ位置から削除されても良い（要素７１９）。いくつかの実施形態において、クライアントは、プログラマティック・インタフェースを介してクレデンシャルの削除を明示的に要求しても良い。少なくとも１つの実施形態において、クレデンシャルを使用したインスタンスを終了させる要求は、非永続メモリからクレデンシャルを削除する信号として解釈されても良い。描写された実施形態において、クレデンシャルは、インスタンス・ホストの非永続メモリのみに格納されても良く（及びこれから読み出され）ても良く、永続ストレージへ決して書き込まれてはならない。
【００４０】
いくつかの実施形態において、非永続メモリ中のそれらの位置（複数を含む）からクレデンシャルを読み出すためにコンピュート・インスタンスから発行されたコマンドの監査証跡またはログは、例えば、ハイパーバイザまたは管理用オペレーティング・システム・インスタンスのような仮想化管理ソフトウェアのコンポーネントにより、インスタンス・ホストで保持されても良い。任意選択で、いくつかのこのような実施形態において、このようなログは、デフォルトにより、またはクライアント要求に応答してのいずれか一方でクライアントへデジタル署名され提供されても良い（要素７２２）。
【００４１】
図７の要素７０１で示されるように、いくつかの実施形態において、要求されたインスタンス用の潜在的なターゲット・リソース・スタックがクライアントのセキュリティ基準を満たす判定を行わなければならない可能性がある。図８は、少なくともいくつかの実施形態により、このような判定を行うために実行されても良い操作の態様を説明する流れ図である。要素８０１で示されるように、プロバイダ・ネットワークのリソース・マネージャまたは別の管理用／コントロール・プレーン・コンポーネントは、コンピュート・インスタンス用のクライアントの要求に応答してインスタンスを作成されることが可能であるゲスト仮想マシンのためにインスタンス・ホスト及びこのホストで特定のスロットを識別しても良い。このスロットは、コンピューティング、ストレージ、メイン・メモリ、ネットワーキング及び他の機能に関する利用可能な容量を表しても良く、所与のインスタンス・ホストがクライアントのために適切なスロットを含むかどうかは、いくつかの実施形態で要求された特定の種類のインスタンスに依存しても良い。要求されたコンピュート・インスタンスのために潜在的に使用されるリソース・スタックを特徴付けることに関連するメタデータ及び／またはデータを取得しても良い（要素８０４）。このような情報は、例えば、ＢＩＯＳ設定、ファームウェア・コンテンツ、インスタンス・ホストで使用するハイパーバイザ、使用に際しオペレーティング・システム（ｄｏｍ０）の管理用インスタンス、使用されるゲスト・オペレーティング・システム、及び／または様々なコンフィギュレーション・レジスタのコンテンツを含んでも良い。少なくともいくつかの実施形態において、インスタンス・ホスト内に組み込まれたＴＰＭ（またはインスタンス・ホストの様々なコンポーネントに少なくともアクセス可能な）は、リソース・スタック情報を収集するために使用されても良い。
【００４２】
収集された情報から導かれるため、この情報を収集したリソース・スタックを表すハッシュ値は、例えば、インスタンス・ホストと関連したＴＰＭにより、描写された実施形態で決定されても良い（要素８０７）。計算されたハッシュ値は、あるセットの１つ以上の先に計算され承認されたハッシュ値と比較されても良い（要素８１０）。この比較は、クライアントにより（例えば、クライアント・ネットワークで承認されたハッシュ値のデータベースを使用して）、または第三者アテスタのような、クライアントに信頼性のあるいくつかの他のエンティティによりのいずれか一方で実行されても良い。潜在的なターゲット・リソース・スタックのために計算されたハッシュ値が承認され予め計算されたハッシュ値のうちの１つに一致する（要素８１３で検出されるような）場合に、ターゲットにされたインスタンス・ホスト及びゲストＶＭは、許容可能であるとみなされても良く、コンピュート・インスタンスを起動または活性化することができる（要素８１６）。潜在的なターゲット・リソース・スタックのハッシュ値が承認されたハッシュ値に一致しない場合に、インスタンス・ホストを拒否する可能性があり、別のインスタンス・ホスト及び対応する実行環境を識別しなければならない可能性がある（要素８１９）。いくつかの実施形態において、クライアントは、ターゲットにされたリソース・スタックが満たす特定の予め計算されたハッシュ値を指定しても良いので、計測されたリソース・スタックがクライアントのセキュリティ基準を満たすか否かを判定するために単一の比較のみを要求しても良い。
【００４３】
いくつかの実施形態において、アプリケーションまたは全体のコンピュート・インスタンスは、一定の状態下で、例えば、ソース・ホストでリソースが不十分であることがわかる場合に、計画停電がソース・ホストで発生する場合に、またはその他の理由で、一方のインスタンス・ホスト（ソース・ホストと呼ばれる）から他方のインスタンス・ホスト（宛先ホスト）へ移行されなければならない可能性がある。トラステッド・リソース・スタックを識別し、その後アプリケーションまたはコンピュート・インスタンスによる使用のためにクレデンシャルを保護するため上記で説明された技術を使用していた場合に、また宛先インスタンスのセキュリティを検証しなければならない可能性があり、宛先インスタンス・ホストへクレデンシャルを転送するために安全な機構を使用しなければならない可能性がある。図９は、少なくともいくつかの実施形態により、一方のインスタンス・ホストから他方へセキュリティ・クレデンシャルを利用するアプリケーションを移行するために実行されても良い操作の態様を説明する流れ図である。
【００４４】
要素９０１で示されるように、ソース・インスタンス・ホストで（例えば、クライアントのセキュリティ要件をともなうコンプライアンスのために先に確認されているインスタンス・ホストで）特定のコンピュート・インスタンスに実行して、１セットの外部で生成されたクレデンシャルを利用するアプリケーションが別のインスタンス・ホストへ移行される判定を行っても良い。いくつかの実施形態において、自動移行技術を実装しても良く、コンピューティング・サービスは、信頼性のある宛先インスタンス・ホストへインスタンスの移行及びクレデンシャルの安全な送信のために応答可能である。このような自動移行機能を使用する（要素９０４で判定されるような）場合に、サービスは、クライアントのパフォーマンス及び他の要件と同様に、クライアントのセキュリティ基準を満たす宛先インスタンス・ホストを最初に識別しても良い（要素９０７）。図８で説明されたものと同様のアプローチは、自動移行状況において、クライアントよりもコンピューティング・サービスが宛先インスタンス・ホストを承認する担当であっても良い場合を除き、セキュリティを検証するために使用されても良い。少なくともいくつかの実施形態において、クライアントのセキュリティ基準を満たすために、ソース・インスタンス・ホストと同じハッシュ値を含む宛先インスタンス・ホストのリソース・スタックを要求する可能性がある。他の実施形態において、別のハッシュ値（例えば、別の予め計算され承認されたハッシュ値に一致するもの）は、十分であっても良い。
【００４５】
いくつかの実施形態において、同等の機能及び能力を有するそれぞれのＴＰＭで構成されるソース及び宛先インスタンス・ホストの両方を要求しても良い。信頼性のある宛先ホストを探し出した後に、ソース・インスタンスの実行を一時停止し、その状態を保存しても良い。ソース・インスタンスに対応する置換／移行インスタンスは、保存された状態を使用して宛先インスタンス・ホストで起動されても良い（要素９１０）。クレデンシャルは、ソース・ホストから宛先ホストへ安全に転送されても良い（要素９１２）。いくつかの実施形態において、インスタンスの両方は、ＴＰＭを含み、このような転送は、ソース及び宛先ＴＰＭ間のインタラクション／通信を伴っても良く、例えば宛先ＴＰＭの公開／秘密鍵ペアの使用を含んでも良い。例えば、ソース・インスタンス・ホストのＴＰＭは、暗号化されたクレデンシャルを宛先ＴＰＭへ送信する前に、宛先ＴＰＭの公開鍵を使用してクレデンシャルを暗号化しても良い。宛先インスタンス・ホストでクレデンシャルを受信した後に、それらを復号して（例えば、宛先ＴＰＭの秘密鍵を使用して）、非永続メモリ内に格納しても良い。次にクレデンシャルを使用するアプリケーションは、宛先インスタンス・ホストで非永続メモリから復号されたクレデンシャルを読み出しても良い。宛先インスタンス・ホストの選択、コンピュート・インスタンス及びアプリケーションの移行、ならびにクレデンシャルの安全な転送は、自動移行を使用する場合にクライアントとのインタラクションなしですべて実行されても良い。
【００４６】
少なくともいくつかの実施形態において、クレデンシャルの自動移行を支援しないでも良い、または自動移行オプションへの少なくとも１つの代替をクライアントに提供しても良い。このような非自動移行アプローチを行う（要素９０４でまた判定されるような）場合に、クライアントは、新規の信頼性のある実行環境を再確立しなければならない可能性がある。このクライアントは、図４に関して前述されたものと同様の方式で信頼性のある実行環境を要求する（要素９１３）ように通知されても良い。クライアントのセキュリティ基準を満たす新規の宛先インスタンス・ホストを探し出した後に、クライアントは、そこでの第二（移行された）インスタンスの起動を要求しても良い。この１セットのクレデンシャルは、指定されたクレデンシャル・ソースからもう一度取得され、宛先への送信前に暗号化されても良い（要素９１６）。宛先インスタンス・ホストで暗号化されたクレデンシャルを受信するときに、宛先インスタンス・ホストへ固有の鍵を使用してそれらを復号し、非永続メモリに格納しても良い。クレデンシャルを宛先ホストで必要としなくなった後に、それらを永続ストレージに保存しないで非永続メモリから削除しても良い。
【００４７】
いくつかの実施形態において、図７、８及び９の流れ図に図示された操作のうちの少なくともいくつかをその示されたものとは異なる順序で実行しても良く、いくつかのセットの操作を並列で実行しても良いことに留意する。他の実施形態において、これらの流れ図で示された操作のうちのいくつかは、異なる操作により省略または置換されても良い。
【００４８】
本開示の実施形態は、以下の条項を考慮したうえで記載されることが可能である。
【００４９】
条項
１．プロバイダ・ネットワークのインスタンス・ホストと関連したトラステッド・プラットフォーム・モジュール（ＴＰＭ）を使用して実行された分析に少なくとも部分的に基づき、クライアントの代わりに前記インスタンス・ホストでマルチテナント・コンピューティング・サービスのコンピュート・インスタンスの実行のために展開された複数のリソースが１つ以上のセキュリティ基準を満たすことを判定し、
前記クライアントにより示されたクレデンシャル・ソースから前記インスタンス・ホストで、前記クライアントの代わりに１つ以上の操作を実装する前記コンピュート・インスタンスで使用される１セットのクレデンシャルの暗号化された表現を受信し、
前記インスタンス・ホストに固有の秘密鍵を使用して前記インスタンス・ホストで前記暗号化された表現から前記クレデンシャルを抽出し、
前記コンピュート・インスタンスからアクセス可能な非永続メモリ位置に前記クレデンシャルを格納し、
前記クレデンシャルを使用して前記コンピュート・インスタンスで前記１つ以上の操作を実装し、
前記クレデンシャルを既に必要としない判定に応答して、永続ストアに前記クレデンシャルを保存することなく、前記非永続メモリ位置から前記クレデンシャルを削除する、
ように構成された１つ以上のコンピューティング・デバイス、
を備える、システム。
【００５０】
２．前記分析は、承認され予め計算されたハッシュ値と前記ＴＰＭにより生成されたハッシュ値の比較を備え、前記ＴＰＭにより生成された前記ハッシュ値は、（ａ）前記インスタンス・ホストのＢＩＯＳ（ベーシック入力／出力システム）設定、（ｂ）前記インスタンス・ホストにインストールされたハイパーバイザの構成、（ｃ）前記コンピュート・インスタンスのために使用されるゲスト・オペレーティング・システムの構成、（ｄ）仮想化管理のために前記インスタンス・ホストにインストールされた管理用オペレーティング・システムの構成、（ｅ）前記インスタンス・ホストに取り付けられた１つ以上の周辺機器のファームウェア、または（ｆ）１つ以上のハードウェア・コンフィギュレーション・レジスタに格納された値のうちの１つ以上に少なくとも部分的に基づく、
条項１に記載の前記システム。
【００５１】
３．前記インスタンス・ホストに固有の前記秘密鍵を使用して前記クレデンシャルを抽出するために、さらに前記１つ以上のコンピューティング・デバイスは、前記インスタンス・ホストが前記ＴＰＭにより生成された前記ハッシュ値に対応する信頼性のあるソフトウェアを実行していることを検証するように構成される、条項２に記載の前記システム。
【００５２】
４．前記１セットのクレデンシャルは、（ａ）スマート・カード、（ｂ）ハードウェア・セキュリティ・モジュール、または（ｃ）前記プロバイダ・ネットワークのネットワーク・アクセス可能なサービスにより実装されたＨＳＭアプライアンスのうちの１つで生成される、条項１に記載の前記システム。
【００５３】
５．前記非永続メモリ位置は、（ａ）前記インスタンス・ホストの揮発性メイン・メモリ・モジュールでの位置、（ｂ）前記インスタンス・ホストのプロセッサの専用レジスタ、（ｃ）前記インスタンス・ホストのハードウェア・プロセッサ・キャッシュの一部、または（ｄ）ＴＰＭメモリの一部のうちの１つを備える、条項１に記載の前記システム。
【００５４】
６．前記インスタンス・ホストがコンピュート・インスタンスの実行と関連した１つ以上のセキュリティ基準を満たす、コンピューティング・サービスのインスタンス・ホストで、クライアントの代わりに１つ以上の操作を実装する前記コンピュート・インスタンスで使用される１つ以上のクレデンシャルの暗号化された表現を受信し、
前記インスタンス・ホストで利用可能な秘密鍵を使用して前記インスタンス・ホストで非永続メモリ位置に前記暗号化された表現から前記１つ以上のクレデンシャルを抽出し、
前記１つ以上のクレデンシャルを使用して前記コンピュート・インスタンスで前記１つ以上の操作を実装し、
永続ストアへ前記１つ以上のクレデンシャルを保存することなく、前記インスタンス・ホストから前記１つ以上のクレデンシャルを破棄する、
１つ以上のコンピューティング・デバイスにより、実行する、
ことを備える、方法。
【００５５】
７．前記インスタンス・ホストと関連するトラステッド・プラットフォーム・モジュール（ＴＰＭ）を使用して実行された分析に少なくとも部分的に基づき、前記インスタンス・ホストが前記１つ以上のセキュリティ基準を満たすことを検証する、
前記１つ以上のコンピューティング・デバイスにより、実行することをさらに備える、条項６に記載の前記方法。
【００５６】
８．前記分析は、承認され予め計算されたハッシュ値と前記ＴＰＭにより生成されたハッシュ値の比較を備え、前記ＴＰＭにより生成された前記ハッシュ値は、（ａ）前記インスタンス・ホストのＢＩＯＳ（ベーシック入力／出力システム）設定、（ｂ）前記インスタンス・ホストにインストールされたハイパーバイザの構成、（ｃ）前記コンピュート・インスタンスのために使用されるゲスト・オペレーティング・システムの構成、（ｄ）仮想化管理のための前記インスタンス・ホストにインストールされた管理用オペレーティング・システムの構成、（ｅ）前記インスタンス・ホストに取り付けられた１つ以上の周辺機器のファームウェア、または（ｆ）１つ以上のハードウェア・コンフィギュレーション・レジスタに格納された値のうちの１つ以上に少なくとも部分的に基づく、条項７に記載の前記方法。
【００５７】
９．前記トラステッド・プラットフォーム・モジュールは、１つ以上のソフトウェア・モジュールを含む、（ａ）ハードウェア暗号化プロセッサ、または（ｂ）仮想化された暗号化プロセッサのうちの１つを備える、条項７に記載の前記方法。
【００５８】
１０．前記インスタンス・ホストで利用可能な前記秘密鍵を使用して前記１つ以上のクレデンシャルを前記抽出することは、前記インスタンス・ホストが信頼性のあるソフトウェアを実行していることを検証することを備える、条項７に記載の前記方法。
【００５９】
１１．前記１セットのクレデンシャルは、前記プロバイダ・ネットワークのネットワーク・アクセス可能なサービスにより実装された（ａ）スマート・カード、（ｂ）ハードウェア・セキュリティ・モジュール（ＨＳＭ）、または（ｃ）ＨＳＭアプライアンスのうちの１つで生成される、条項６に記載の前記方法。
【００６０】
１２．前記１つ以上のクレデンシャルは、暗号鍵、アプリケーション特有のセキュリティ・トークン、乱数、ノンス値、シーケンス番号、またはパスワードのうちの１つ以上を備える、ク条項６に記載の前記方法。
【００６１】
１３．前記非永続メモリ位置は、（ａ）前記インスタンス・ホストの揮発性メイン・メモリ・モジュールでの位置、（ｂ）前記インスタンス・ホストのプロセッサの専用レジスタ、（ｃ）前記インスタンス・ホストのハードウェア・プロセッサ・キャッシュの一部、または（ｄ）ＴＰＭメモリの一部のうちの１つを備える、請求項６に記載の前記方法。
【００６２】
１４．前記クライアントが前記コンピュート・インスタンスと関連した１つ以上のセキュリティ関連の操作を要求することを可能にする１セットのプログラマティック・インタフェースを実装し、
前記１セットのプログラマティック・インタフェースを介して、（ａ）前記インスタンス・ホストの１つ以上のリソースが前記１つ以上のセキュリティ基準を満たすことを検証する要求、（ｂ）前記暗号化された表現を生成する要求、（ｃ）前記インスタンス・ホストへ前記暗号化された表現を送信する要求、（ｄ）前記１つ以上のクレデンシャルを破棄する要求、（ｅ）前記コンピュート・インスタンスで実行する特定のアプリケーションへ、前記１つ以上のクレデンシャルのうちの１つの特定のクレデンシャルの表示を提供する要求、または（ｆ）前記インスタンス・ホストで前記１つ以上のクレデンシャルにアクセスするために発行されたコマンド・ログのための要求のうちの１つ以上を受信する、
前記１つ以上のコンピューティング・デバイスにより、実行することをさらに備える、条項６に記載の前記方法。
【００６３】
１５．前記コンピュート・インスタンスが前記プロバイダ・ネットワークの別のインスタンス・ホストに移行されることを判定し、
前記１つ以上のセキュリティ基準を満たす第二インスタンス・ホストを識別し、
前記コンピュート・インスタンスの状態情報を保存し、
前記コンピュート・インスタンスの実行を一時停止し、
前記保存された状態情報を使用して前記第二インスタンス・ホストで第二コンピュート・インスタンスを起動し、
前記１つ以上のクレデンシャルを前記第二インスタンス・ホストへ安全に送信する、
前記１つ以上のコンピューティング・デバイスにより、実行することをさらに備える、条項６に記載の前記方法。
【００６４】
１６．１つ以上のプロセッサでの実行時に、
コンピューティング・サービスのコンピュート・インスタンスの実行と関連した１つ以上のセキュリティ基準を満たすインスタンス・ホストで、クライアントの代わりに１つ以上の操作を実装する前記コンピュート・インスタンスで使用される１つ以上のクレデンシャルの暗号化された表現を受信し、
前記インスタンス・ホストへ固有の秘密鍵を使用して前記暗号化された表現から抽出された、前記１つ以上のクレデンシャルを利用して、前記１つ以上の操作を実装し、
前記１つ以上のクレデンシャルを永続ストアへ保存することなく、前記インスタンス・ホストから前記１つ以上のクレデンシャルを削除する、
プログラム命令を格納する非一時的なコンピュータ・アクセス可能な記憶媒体。
【００６５】
１７．前記インスタンス・ホストが前記１つ以上のセキュリティ基準を満たす表示は、前記インスタンス・ホストと関連したトラステッド・プラットフォーム・モジュール（ＴＰＭ）を使用して実行された分析結果に少なくとも部分的に基づき取得される、条項１６に記載の前記非一時的なコンピュータ・アクセス可能な記憶媒体。
【００６６】
１８．前記分析は、承認され予め計算されたハッシュ値と前記ＴＰＭにより生成されたハッシュ値の比較を備え、前記ＴＰＭにより生成された前記ハッシュ値は、（ａ）前記インスタンス・ホストのＢＩＯＳ（ベーシック入力／出力システム）設定、（ｂ）前記インスタンス・ホストにインストールされたハイパーバイザの構成、（ｃ）前記コンピュート・インスタンスのために使用されるゲスト・オペレーティング・システムの構成、（ｄ）仮想化管理のために前記インスタンス・ホストにインストールされた管理用オペレーティング・システムの構成、（ｅ）前記インスタンス・ホストに接続された１つ以上の周辺機器のファームウェア、または（ｆ）１つ以上のハードウェア・コンフィギュレーション・レジスタに格納された値のうちの１つ以上に少なくとも部分的に基づく、
条項１７に記載の前記非一時的なコンピュータ・アクセス可能な記憶媒体。
【００６７】
１９．前記インストラクションは、前記１つ以上のプロセッサでの実行時に、
前記暗号化されたクレデンシャルが前記インスタンス・ホストで受信された後に、前記インスタンス・ホストが信頼性のあるソフトウェアを実行していることを検証して前記インスタンス・ホストに固有の前記秘密鍵を使用して前記１つ以上のクレデンシャルを抽出する、
条項１６に記載の前記非一時的なコンピュータ・アクセス可能な記憶媒体。
【００６８】
２０．前記インストラクションは、前記１つ以上のプロセッサでの実行時に、
前記インスタンス・ホストで前記１つ以上のクレデンシャルのうちの少なくとも１つのクレデンシャルにアクセスするために発行された１つ以上のコマンドのログ記録を格納し、
プログラマティック・インタフェースを介して前記クライアントへ前記ログ記録の表現を提供する、
条項１６に記載の前記非一時的なコンピュータ・アクセス可能な記憶媒体。
使用事例
【００６９】
セキュリティ関連の操作を実行するコンピュート・インスタンスのために信頼性のある実行環境を識別し、このような操作のために外部で生成されたクレデンシャルの転送及び使用を保護する、上記で説明された技術は、多種多様な顧客のために有用であり得る。また高レベルのセキュリティを要求する多くの最新のアプリケーション及びプロトコルは、クレデンシャル・ソースのうちの少なくともいくつかがクライアント所有の構内にとどまる可能性があっても、いくつかの場合において、クライアント所有の構内よりプロバイダ・ネットワークからより経済的に取得されても良い、実質的なコンピューティング機能を要求しても良い。セキュリティ関連のアプリケーションを実行するプラットフォームへのクレデンシャルの送信を保護すること、及び侵入者またはハッカーへのこのようなクレデンシャルの露出の確率を低減することは、不可欠である可能性がある。加えて、少なくともいくつかのプロバイダ・ネットワークは、それらのセキュリティ関連のアプリケーションのために適切なサイズのコンピュート・インスタンスを選択すること、及び時間をかけてこのようなアプリケーションを拡張することをクライアントのために容易にさせても良い、トラステッド・プラットフォーム・モジュール（ＴＰＭ）を搭載した膨大な数のインスタンス・ホスト（異なるレベルの性能能力のために異なる数及びサイズのインスタンス・スロットを含む）を展開可能にすることができても良い。またいくつかのプロバイダ・ネットワークは、セキュリティ関連のアプリケーションのために使用される鍵のようなクレデンシャル・ソースとして機能することが可能である、例えばクラウド・ベースのハードウェア・セキュリティ・モジュール（ＨＳＭ）を含む、追加のセキュリティ・サービスを実装しても良い。
例示的なコンピュータ・システム
【００７０】
少なくともいくつかの実施形態において、リソース・マネージャ、インスタンス・ホスト、及び同様のものの様々なコンポーネントを実装する技術を有する、本明細書に記載された技術のうちの１つ以上の一部またはすべてを実装するサーバは、１つ以上のコンピュータ・アクセス可能な媒体を含む、またはこれにアクセスするように構成される汎用コンピュータ・システムを含んでも良い。図１０は、このような汎用コンピューティング・デバイス３０００を説明する。図示された実施形態において、コンピューティング・デバイス３０００は、入力／出力（Ｉ／Ｏ）インタフェース３０３０を介してシステム・メモリ３０２０（不揮発性及び揮発性メモリ・モジュールの両方を含んでも良い）へ連結された１つ以上のプロセッサ３０１０を含む。さらにコンピューティング・デバイス３０００は、Ｉ／Ｏインタフェース３０３０へ連結されたネットワーク・インタフェース３０４０を含む。 
【００７１】
様々な実施形態において、コンピューティング・デバイス３０００は、１つのプロセッサ３０１０を含むユニプロセッサ・システム、またはいくつかのプロセッサ３０１０（例えば、２、４、８、または別の適切な数）を含むマルチプロセッサ・システムであっても良い。プロセッサ３０１０は、インストラクションを実行することが可能な任意の適切なプロセッサであっても良い。例えば、様々な実施形態において、プロセッサ３０１０は、ｘ８６、ＰｏｗｅｒＰＣ、ＳＰＡＲＣ、若しくはＭＩＰＳインストラクション・セット・アーキテクチャ（ＩＳＡ）のような様々なＩＳＡのいずれか、または任意の他の適切なＩＳＡを実装する汎用または組み込みプロセッサであっても良い。マルチプロセッサ・システムにおいて、一般に各々のプロセッサ３０１０は、必ずしもそうではないが、同じＩＳＡを実装しても良い。いくつかの実施態様において、従来のプロセッサの代わりに、またはこれに加えてグラフィックス・プロセッシング・ユニット（ＧＰＵ）を使用されても良い。
【００７２】
システム・メモリ３０２０は、プロセッサ（複数を含む）３０１０によりアクセス可能なインストラクション及びデータを格納するように構成されても良い。少なくともいくつかの実施形態において、システム・メモリ３０２０は、揮発性及び不揮発性部分の両方を含んでも良く、他の実施形態において、揮発性メモリのみ使用されても良い。インスタンス・ホストのシステム・メモリの揮発性部分は、少なくともいくつかの実施形態において、復号されたクレデンシャルを格納するために使用されても良い。様々な実施形態において、システム・メモリ３０２０の揮発性部分は、スタティック・ランダム・アクセス・メモリ（ＳＲＡＭ）、シンクロナス・ダイナミックＲＡＭまたは任意の他の種類のメモリのような、任意の適切なメモリ技術を使用して実装されても良い。システム・メモリ（例えば、１つ以上のＮＶＤＩＭＭを含んでも良い）の不揮発性部分について、いくつかの実施形態において、ＮＡＮＤフラッシュ・デバイスを含む、フラッシュ・ベースのメモリ・デバイスを使用しても良い。少なくともいくつかの実施形態において、システム・メモリの不揮発性部分は、スーパーキャパシタまたは他の蓄電装置（例えば、バッテリ）のような、電源を含んでも良い。様々な実施形態において、メモリスタ・ベースの抵抗変化型メモリ（ＲｅＲＡＭ）、３次元ＮＡＮＤ技術、強誘電体ＲＡＭ、磁気抵抗ＲＡＭ（ＭＲＡＭ）、または様々な種類の相変化メモリ（ＰＣＭ）のいずれかは、システム・メモリの不揮発性部分のために少なくとも使用されても良い。図示された実施形態において、上記で説明された、これらの方法、技術、及びデータのような１つ以上の所望の機能を実装するプログラム命令及びデータは、コード３０２５及びデータ３０２６としてシステム・メモリ３０２０内に格納されて示される。先に述べたように、少なくともいくつかの実施形態において、またコンピューティング・デバイス３０００は、ハードウェアのトラステッド・プラットフォーム・モジュール（ＴＰＭ）（図１０で図示せず）を含んでも良い。
【００７３】
１つの実施形態において、Ｉ／Ｏインタフェース３０３０は、様々な種類の永続及び／または揮発性ストレージ・デバイスのようなネットワーク・インタフェース３０４０または他の周辺インタフェースを含む、デバイスのプロセッサ３０１０、システム・メモリ３０２０、及び任意の周辺機器間のＩ／Ｏトラフィックを調整するように構成されても良い。いくつかの実施形態において、Ｉ／Ｏインタフェース３０３０は、任意の必要なプロトコル、タイミングまたは他のデータ変換を実行してデータ信号を一方のコンポーネント（例えば、システム・メモリ３０２０）から他方のコンポーネント（例えば、プロセッサ３０１０）による使用のために適切なフォーマットに変換しても良い。いくつかの実施形態において、Ｉ／Ｏインタフェース３０３０は、例えば、様々なペリフェラル・コンポーネント・インターコネクト（ＰＣＩ）・バス規格またはユニバーサル・シリアル・バス（ＵＳＢ）規格のような、様々な種類の周辺バスを介して取り付けられたデバイスのための支持体を含んでも良い。いくつかの実施形態において、Ｉ／Ｏインタフェース３０３０の機能は、例えば、ノース・ブリッジ及びサウス・ブリッジのような、２つ以上の別個のコンポーネントに分割されても良い。また、いくつかの実施形態において、システム・メモリ３０２０へのインタフェースのような、Ｉ／Ｏインタフェース３０３０の機能のうちのいくつかまたはすべては、プロセッサ３０１０へ直接組み込まれても良い。
【００７４】
ネットワーク・インタフェース３０４０は、例えば、図１〜図９で図示されるような他のコンピュータ・システムまたはデバイスのような、１つのネットワークまたは複数のネットワーク３０５０へ接続されたコンピューティング・デバイス３０００及び他のデバイス３０６０間でデータを交換することを可能にするように構成されても良い。様々な実施形態において、ネットワーク・インタフェース３０４０は、例えば、イーサネット（登録商標）・ネットワークの種類のような、任意の適切な有線または無線の一般的なデータ・ネットワークを介する通信を支援しても良い。加えて、ネットワーク・インタフェース３０４０は、アナログ音声ネットワーク若しくはデジタル・ファイバ通信ネットワークのような電気通信／電話網経由での、ファイバ・チャネルＳＡＮのようなストレージ・エリア・ネットワーク経由での、または任意の他の適切な種類のネットワーク及び／またはプロトコル経由での通信を支援しても良い。
【００７５】
いくつかの実施形態において、システム・メモリ３０２０は、対応する方法及び装置の実施形態を実装するための図１〜図９に上記で説明されるようなプログラム命令及びデータを格納するように構成されたコンピュータ・アクセス可能な媒体の１つの実施形態であっても良い。しかしながら、他の実施形態において、プログラム命令及び／またはデータは、異なる種類のコンピュータ・アクセス可能な媒体上で、受信、送信または格納されても良い。一般的に言えば、コンピュータ・アクセス可能な媒体は、磁気または光媒体、例えば、Ｉ／Ｏインタフェース３０３０経由でコンピューティング・デバイス３０００へ接続されたディスクまたはＤＶＤ／ＣＤのような、非一時的なストレージ媒体またはメモリ媒体を含んでも良い。また非一時的なコンピュータ・アクセス可能な記憶媒体は、システム・メモリ３０２０または別の種類のメモリとしてコンピューティング・デバイス３０００のいくつかの実施形態に含まれても良い、ＲＡＭ（例えば、ＳＤＲＡＭ、ＤＤＲ  ＳＤＲＡＭ、ＲＤＲＡＭ、ＳＲＡＭなど）、ＲＯＭなどのような任意の揮発性または不揮発性媒体を含んでも良い。さらに、コンピュータ・アクセス可能な媒体は、伝送媒体、またはネットワーク・インタフェース３０４０を介して実装されても良いような、ネットワーク及び／または無線リンクのような通信媒体を介して搬送された、電気、電磁気、またはデジタル信号のような信号を含んでも良い。図１０で図示されるような複数のコンピューティング・デバイスの部分またはすべてを使用して、様々な実施形態において記載された機能を実装しても良い。例えば、様々な異なるデバイス及びサーバ上で動作するソフトウェア・コンポーネントは、協動して、この機能を提供しても良い。いくつかの実施形態において、記載された機能の部分は、汎用コンピュータ・システムを使用して実装されることに加えて、またはこのことの代わりに、ストレージ・デバイス、ネットワーク・デバイス、または専用コンピュータ・システムを使用して実装しても良い。本明細書で使用されるような、用語「コンピューティング・デバイス」は、少なくともすべてのこれらの種類のデバイスを指すが、これらの種類のデバイスに限定されない。
結論
【００７６】
さらに様々な実施形態は、コンピュータ・アクセス可能な媒体上に前述の説明に従い実装されたインストラクション及び／またはデータを受信、送信または格納することを備えても良い。一般的に言えば、コンピュータ・アクセス可能な媒体は、伝送媒体、またはネットワーク及び／または無線リンクのような通信媒体を介して搬送される、電気、電磁気、またはデジタル信号のような信号と同様に、磁気または光媒体、例えば、ディスクまたはＤＶＤ／ＣＤ−ＲＯＭ、ＲＡＭ（例えば、ＳＤＲＡＭ、ＤＤＲ、ＲＤＲＡＭ、ＳＲＡＭなど）のような揮発性または不揮発性媒体、ＲＯＭなどのようなストレージ・メディアまたはメモリ・メディアを含んでも良い。
【００７７】
図で図示され本明細書に記載された様々な方法は、方法の例示的な実施形態を表現する。この方法は、ソフトウェア、ハードウェア、またはそれらの組み合わせに実装されても良い。方法の順序は、変更されても良く、様々な要素は、追加、記録、結合、省略、修正などをされても良い。
【００７８】
様々な修正及び変更は、本開示の利益を有する当業者に明らかであるように行われても良い。すべてのこのような修正及び変更を包含し、それに応じて、上記の説明は限定的ではなく例示的な意味であるとみなされるべきであることを意図する。
【図１】
0006408598.tif 000002
【図２】
0006408598.tif 000003
【図３】
0006408598.tif 000004
【図４】
0006408598.tif 000005
【図５】
0006408598.tif 000006
【図６ａ】
0006408598.tif 000007
【図６ｂ】
0006408598.tif 000008
【図７】
0006408598.tif 000009
【図８】
0006408598.tif 000010
【図９】
0006408598.tif 000011
【図１０】
0006408598.tif 000012