(58)【調査した分野】(Int.Cl.,DB名)
コンピューティングリソースプロバイダの1つ以上のコンピューティングリソースへのアクセスを提供するためのコンピュータで実装される方法であって、前記コンピューティングリソースプロバイダの前記1つ以上のコンピューティングリソースは、複数のキーゾーンのうちの1つのキーゾーンにおけるコンピューティングリソースの論理的グループの一部であり、前記方法は、
実行可能な命令を備えて構成された1つ以上のコンピュータシステムの制御下で、
認証当事者から、メッセージと、前記メッセージの署名と、前記認証当事者と共有される秘密信用情報から導出されたキーに関する一式の1つ以上の制限と、を符号化している電子情報を受信することであって、前記署名は、ハッシュベースのメッセージ認証符号関数を前記メッセージ、前記秘密信用情報、および前記一式の1つ以上の制限に適用することによって決定可能であるが、前記ハッシュベースのメッセージ認証符号関数のみを有するが、前記一式の1つ以上の制限を有しない場合は決定できず、前記秘密信用情報は、中央キー権限者から取得され、かつ、前記キーゾーンに対応する、受信することと、
前記一式の1つ以上の制限の少なくともサブセットを少なくとも部分的に使用して生成されたキーを得ることと、
前記1つ以上のコンピュータシステムによって、
前記得られたキーに少なくとも部分的に基づく第1の入力と、
前記一式の1つ以上の制限に少なくとも部分的に基づく第2の入力と、
を前記ハッシュベースのメッセージ認証符号関数に少なくとも入力することによって、ハッシュベースのメッセージ認証符号関数の値を計算することと、
前記1つ以上のコンピュータシステムによって、かつ前記計算された値に少なくとも部分的に基づいて、前記署名が有効であるかどうかを決定することと、
前記署名が有効であることが決定されたとき、前記1つ以上のコンピューティングリソースへのアクセスを提供することと、
を含む、コンピュータで実装される方法であり、
前記電子情報を受信することと、前記生成されたキーを得ることと、前記ハッシュベースのメッセージ認証符号関数の値を計算することと、前記署名が有効であるかどうかを決定することと、前記1つ以上のコンピューティングリソースへのアクセスを提供することとが、第1の地理的場所にある第1のサーバシステムにおいて実行され、
第2の地理的場所にある第2のサーバシステムが、前記秘密信用情報に少なくとも部分的に基づいて、前記署名とは異なる別の署名を生成し、
前記第1のサーバシステムおよび第2のサーバシステムが、いずれも前記秘密信用情報を欠失し、
前記第1のサーバシステムおよび第2のサーバシステムがそれぞれ、情報を欠失しており、前記情報は、当該情報から同一の署名が生成されるものであり、前記同一の署名は、前記ハッシュベースのメッセージ認証符号関数を使用して前記メッセージから生成され得る、コンピュータで実装される方法。
前記一式の1つ以上の制限を符号化するための前記電子情報が、文書によって符号化され、前記要求が満たされるべきであることを前記一式の1つ以上の制限が示すかどうかを決定することが、前記要求が受信される文脈に対して前記文書を評価することを含む、請求項2に記載のコンピュータで実装される方法。
コンピューティングリソースプロバイダの1つ以上のコンピューティングリソースへのアクセスを提供するためのコンピュータで実装される方法であって、前記コンピューティングリソースプロバイダの前記1つ以上のコンピューティングリソースは、複数のキーゾーンのうちの1つのキーゾーンにおけるコンピューティングリソースの論理的グループの一部であり、前記方法は、
実行可能な命令を備えて構成された1つ以上のコンピュータシステムの制御下で、
(i)メッセージと、(ii)前記メッセージの第1の署名と、(iii)一式の1つ以上のパラメータと、を符号化している電子情報を得ることであって、前記第1の署名が、(i)前記メッセージ、(ii)秘密信用情報、および(iii)前記一式の1つ以上のパラメータに基づいて生成され、前記第1の署名がさらに、前記メッセージおよび前記秘密信用情報のみを有するが、前記一式の1つ以上のパラメータを有しない場合は決定できない、得ることと、
前記秘密信用情報と、前記一式の1つ以上のパラメータのうちの少なくともサブセットと、に基づいて、第2の信用情報を導出することであって、前記秘密信用情報は、中央キー権限者から取得され、かつ、前記キーゾーンに関連付けられた、第2の信用情報を導出することと、
前記導出された第2の信用情報に少なくとも部分的に基づいて、第2の署名を生成することと、
前記第1の署名が、前記第2の署名と一致するかどうかを決定することと、
前記生成された第2の署名が、前記第1の署名と一致するとき、1つ以上のコンピューティングリソースへのアクセスを提供することと、
を含む、コンピュータで実装される方法であり、
前記電子情報を得ることと、前記第2の信用情報を導出することと、前記第2の署名を生成することと、前記第1の署名が前記第2の署名と一致するかどうかを決定することと、前記1つ以上のコンピューティングリソースへのアクセスを提供することとが、第1の地理的場所にある第1のサーバシステムにおいて実行され、
第2の地理的場所にある第2のサーバシステムが、前記秘密信用情報に少なくとも部分的に基づいて、前記第1の署名とは異なる別の署名を生成し、
前記第1のサーバシステムおよび第2のサーバシステムが、いずれも前記秘密信用情報を欠失し、
前記第2の信用情報を導出することは、前記一式の1つ以上のパラメータおよび前記秘密信用情報の少なくとも一部を関数に入力することを含み、
前記第1のサーバシステムおよび第2のサーバシステムがそれぞれ、情報を欠失しており、前記情報は、当該情報から同一の署名が生成されるものであり、前記同一の署名は、前記関数を使用して前記メッセージから生成され得る、コンピュータで実装される方法。
前記第2の信用情報を導出することが、前記秘密信用情報と、前記一式の1つ以上のパラメータの前記少なくともサブセットと、を関数に入力することを含む、請求項7に記載のコンピュータで実装される方法。
前記秘密信用情報および前記1つ以上のパラメータの前記少なくともサブセットを前記関数に入力することが、ハッシュベースのメッセージ認証符号(HMAC)の一部として行われる、請求項9に記載のコンピュータで実装される方法。
前記第2の署名を生成することが、前記関数の出力および前記一式の1つ以上のパラメータからのパラメータの両方を前記関数に入力することを含む、請求項8に記載のコンピュータで実装される方法。
前記1つ以上のパラメータを符号化するための前記電子情報が、前記一式の1つ以上のパラメータを符号化する電子文書を含む、請求項7に記載のコンピュータで実装される方法。
前記1つ以上のパラメータは、前記別のコンピュータシステムによって、少なくとも部分的に実施される、前記中間キーの使用に対する1つ以上の制限を符号化するためのものである、請求項16に記載の非一時的コンピュータ可読ストレージ媒体。
前記1つ以上のパラメータが、前記中間キーが使用可能である期間、前記中間キーが使用可能である場所、および前記中間キーがアクセスを得るために使用可能である1つ以上のサービスのうちの少なくとも1つに対応する、請求項16に記載の非一時的コンピュータ可読ストレージ媒体。
前記命令が、前記コンピュータシステムによって実行されるとき、前記コンピュータシステムが、前記秘密信用情報へアクセスする必要なしに、前記署名を生成することを可能にする、請求項16に記載の非一時的コンピュータ可読ストレージ媒体。
一式の前記1つ以上のパラメータを有するとき、前記署名が、共有された前記秘密信用情報または前記中間キーのいずれかを使用して、前記署名生成プロセスによって決定可能である、請求項19に記載の非一時的コンピュータ可読ストレージ媒体。
前記中間キーを取得することが、ハッシュ関数に、少なくとも1つの前記ハッシュ関数の出力が前記パラメータのうちの少なくとも1つとともに入力されるアルゴリズムを行うことを含む、請求項19に記載の非一時的コンピュータ可読ストレージ媒体。
前記コンピュータシステムに、前記キー権限者コンピュータシステムから前記導出されたキーをさらに受信させる前記命令が、前記コンピュータシステムに、前記メッセージの受信前に、前記キー権限者コンピュータシステムから前記導出されたキーを受信させる、請求項26に記載のコンピュータシステム。
【発明を実施するための形態】
【0014】
図1は、様々な実施形態に従って、本開示の態様を実現するための、例示の環境100の態様を示す。当然のことながら、ウェブベース環境が説明の目的で使用されるが、様々な実施形態を実現するために異なる環境が適宜使用されてよい。環境は、電子クライアントデバイス102を含み、それには、適切なネットワーク104によって要求、メッセージ、または情報を送信および受信し、デバイスのユーザに情報を返信するように動作可能な任意の適切なデバイスを含み得る。そのようなクライアントデバイスの例としては、パーソナルコンピュータ、携帯電話、携帯型メッセージングデバイス、ラップトップコンピュータ、セットトップボックス、パーソナルデータアシスタント、電子書籍リーダ等が挙げられる。ネットワークは、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、または任意の他のそのようなネットワークもしくはそれらの組み合わせを含む、任意の適切なネットワークを含むことができる。そのようなシステムに使用される構成要素は、選択されるネットワークおよび/または環境のタイプに少なくとも部分的に依存し得る。そのようなネットワークを介して通信するためのプロトコルおよび構成要素は、よく知られているため、本明細書において詳述されない。ネットワーク上の通信は、有線または無線接続、およびそれらの組み合わせによって使用可能であり得る。この例において、要求を受信し、それに応答してコンテンツを提供するために、環境がウェブサーバ106を含むので、ネットワークは、インターネットを含むが、他のネットワークの場合、当業者には明らかとなるように、同様の目的を果たす代替デバイスが使用され得る。
【0015】
実例となる環境は、少なくとも1つのアプリケーションサーバ108およびデータストア110を含む。連鎖され得るか、または他の方法で構成されてよく、適切なデータストアからデータを取得する等のタスクを行うように相互にやりとりすることができる、いくつかのアプリケーションサーバ、階層、または他の要素、プロセス、もしくは構成要素が存在し得ることが理解されるべきである。本明細書において使用されるとき、「データストア」という用語は、データを記憶し、アクセスし、検索取得することができる、任意のデバイスまたはデバイスの組み合わせを指し、任意の組み合わせおよび数のデータサーバ、データベース、データストレージデバイス、およびデータストレージ媒体を、任意の標準、分散、またはクラスタ化環境に含み得る。アプリケーションサーバは、クライアントデバイスのための1つ以上のアプリケーションの態様を実行するために、必要に応じてデータストアと統合するための任意の適切なハードウェアおよびソフトウェアを含んでよく、アプリケーションのためのデータアクセスおよびビジネス論理の大部分を処理する。アプリケーションサーバは、データストアと協働してアクセス制御サービスを提供し、ユーザに伝送されるテキスト、グラフィック、オーディオ、および/またはビデオ等のコンテンツを生成することができ、この例ではHTML、XML、または別の適切な構造化言語の形態で、ウェブサーバによってユーザに提供され得る。全ての要求および応答の処理、ならびにクライアントデバイス102とアプリケーションサーバ108との間のコンテンツの送達は、ウェブサーバによって処理され得る。本明細書において論じられる構造化符号は、本明細書の他の部分で論じられる任意の適切なデバイスまたはホストマシン上で実行され得るため、ウェブサーバおよびアプリケーションサーバは必要とされず、単なる例示の構成要素であることが理解されるべきである。
【0016】
データストア110は、特定の態様に関するデータを記憶するために、いくつかの別個のデータテーブル、データベース、または他のデータストレージ機構および媒体を含み得る。例えば、例示されるデータストアは、生産データ112およびユーザ情報116を記憶するための機構を含み、それらの情報は、生産サイドのコンテンツを提供するために使用され得る。データストアは、報告、分析、または他のそのような目的に使用され得る、ログデータ114を記憶するための機構を含むことも示される。例えば、ページ画像情報のため、および正しい情報にアクセスするためにデータストアに記憶される必要があり得る、多くの他の態様が存在し得ることを理解されるべきであり、必要に応じて上に列挙された機構のいずれにも、またはデータストア110内の追加の機構内にも記憶され得る。データストア110は、それと関連付けられた論理を通じて、アプリケーションサーバ108から命令を受信し、それに応答してデータを取得、更新、または他の方法で処理するように動作可能である。一実施例において、ユーザは、あるタイプのアイテムの検索要求を送信してもよい。この場合、データストアは、ユーザ情報にアクセスしてユーザの識別を検証してよく、カタログ詳細情報にアクセスして、そのタイプのアイテムに関する情報を得ることができる。次に情報は、例えば、ユーザデバイス102上のブラウザを介してユーザが見ることができるウェブページ上に列挙する結果において、ユーザに戻され得る。対象の特定のアイテムに関する情報は、ブラウザの専用ページまたはウィンドウ内で見ることができる。
【0017】
各サーバは、通常、そのサーバの一般的な管理および操作のための実行可能なプログラム命令を提供するオペレーティングシステムを含み、通常、サーバのプロセッサによって実行されるとき、サーバがその意図される機能を実行することができる命令を記憶するコンピュータ可読ストレージ媒体(例えば、ハードディスク、ランダムアクセスメモリ、読み取り専用メモリ等)を含む。サーバのオペレーティングシステムおよび一般的な機能性に適切な実装は、既知であるか、または市販されており、特に本明細書における開示に照らして、当業者によって容易に実装される。
【0018】
一実施形態における環境は、1つ以上のコンピュータネットワークまたは直接接続を使用して、通信リンクを介して相互接続されるいくつかのコンピュータシステムおよび構成要素を利用する、分散コンピューティング環境である。しかしながら、当業者であれば、そのようなシステムが、
図1に示されるよりも少数または多数の構成要素を有するシステム内で等しく良好に動作し得ることを理解するであろう。したがって、
図1におけるシステム100の描写は、性質的に例示的であると見なされるべきであり、本開示の範囲に限定するものではない。
【0019】
図2は、少なくとも1つの実施形態に従って、複数のフォルトゾーン204を管理するコンピューティングリソースプロバイダ202を含む環境200の例示説明となる実施例を示す。コンピューティングリソースプロバイダは、一実施形態において、1人以上の顧客206のためにコンピュータハードウェアを運用する組織である。コンピューティングリソースプロバイダは、様々な方法でコンピューティングリソースを提供し得る。例えば、一実施形態において、コンピューティングリソースプロバイダ202は、顧客206によって使用するための構成されるハードウェアを管理する。コンピューティングリソースプロバイダ202は、顧客206がハードウェアを使用してコンピューティングリソースを、プログラムによって構成することを可能にするインターフェースを提供する。例えば、コンピューティングリソースプロバイダは、顧客によってプログラムで制御される仮想コンピュータシステムを実行する、ハードウェアサーバを維持してよい。別の実施例として、コンピューティングリソースプロバイダ202は、高耐久性データストレージおよびブロックレベルのデータストレージ等の遠隔データストレージソリューションを提供するために、様々なデータストアを管理し得る。
【0020】
フォルトゾーンは、一実施形態において、各フォルトゾーンが別のフォルトゾーンの故障に耐えるように、1つ以上のフォルト境界によって分離されるコンピューティングリソースの集合である。実施例として、各フォルトゾーン204は、別個のデータセンターであってよい。したがって、恐らく停電または他の妨害イベントに起因して1つのデータセンターが運転を中断した場合、他のデータセンターは、運転を継続し得る。フォルトゾーンはそれぞれ、異なる地理的場所にあってよく、フォルトゾーンのうちのいくつか、または全部が地政学的境界によって分離され得る。例えば、フォルトゾーンの2つ以上は異なる国にあってよい。例示の目的で、本開示は、フォルトゾーンがデータセンターである多数の例を提供することに留意すべきである。しかしながら、フォルトゾーンは、多数の他の方法で定義され得る。例えば、同じデータセンター内の別個の部屋は、様々な実施形態に従うと、別個のフォルトゾーンとして見なされ得る。別の実施例として、同じ場所にあるが、異なるバックアップ発電機により支援される、および/または異なるネットワークリソースにより支援されるコンピューティングリソースは、異なるフォルトゾーンとして見なされ得る。さらに別の実施例として、データセンターを、データセンターの各群がフォルトゾーンとして見なされ得るように群化してもよい。さらに、フォルトゾーンに障害が発生し得る多くの理由があり得、送電網の稼働、パブリックネットワークの稼働、電力の政治的主張に関する理由、および他の理由を含む。
【0021】
一実施形態において、顧客206は、インターネット等のネットワーク208によってコンピューティングリソースプロバイダ202と通信する。顧客206は、フォルトゾーン204の1つ以上において構成されたリソースを有してよく、リソースを構成および操作するために、コンピューティングリソースプロバイダのウェブサービスアプリケーションプログラミングインターフェース(API)を起動させるメッセージ等の電子メッセージを送信することによってリソースと通信し得る。顧客は、顧客のリソースに影響を及ぼす、可能性のある障害の影響を低下させるために、複数のフォルトゾーン内のリソースを利用してよい。コンピューティングリソースプロバイダ202のリソースを利用して公衆がアクセス可能なウェブサイトを運営する顧客は、例えば、別個の複数フォルトゾーン内にウェブサーバおよび他のサーバを維持し、1つのフォルトゾーン内のサーバが故障した場合に、別のフォルトゾーン内のサーバにアクセスすることによって、公衆が依然としてウェブサイトにアクセスできるようにする。
【0022】
図3は、フォルトゾーン302の内側の環境300の例示説明となる実施例を示し、そのフォルトゾーンは、
図2に例示されるコンピューティングリソースプロバイダのフォルトゾーンであり得る。フォルトゾーン302は、一実施形態において、顧客のために様々なサービスを提供するために使用されるコンピューティングリソースを含む。例えば、
図3に示されるように、フォルトゾーン302は、永続的データストレージサービスを提供するために使用されるコンピューティングリソースを含み、顧客のために比較的大量のデータを安価に重複して記憶し得る。そのようなサービスは、大量のデータストレージおよび/またはデータストレージのセキュリティが必要とされるが、入力/出力性能が高優先度でない場合に使用され得る。フォルトゾーン306は、ブロックレベルのストレージデバイス、物理デバイス、および/または仮想デバイスの使用を顧客に提供する、ブロックデータストレージサービス306を含んでもよい。顧客は、例えば、ブロックレベルのストレージデバイスを、同じく顧客に利用されるコンピュータシステムに取り付けてもよい。コンピューティングサービスを顧客に提供し得る仮想コンピュータシステムサービス308も示される。一実施形態において、仮想コンピュータシステムサービス308は、コンピューティングリソースプロバイダによって維持される物理サーバ上の顧客のための仮想コンピュータシステムを実装することによって、コンピューティングサービスを提供するが、物理コンピュータシステムが顧客使用のために顧客に割り当てられる等の変型が可能である。仮想コンピュータシステムに関する一実施形態において、顧客は、それらのニーズに従って仮想コンピュータシステムをプログラムで管理してよい。例えば、
図3に示されるように、顧客は、仮想コンピューティングサービスプロバイダの顧客のサーバ顧客に対する仮想コンピュータシステムサービス308の仮想コンピュータシステムを構成してもよい。仮想コンピュータシステムは、例えば、公衆がアクセス可能なウェブサイトを稼働するように構成されてよい。仮想コンピューティングリソースプロバイダの顧客およびその顧客の顧客は、様々な実施形態において、
図2に関して上述のネットワーク208であり得る、ネットワーク310によりサービスと通信することによって、フォルトゾーン302内で運用される様々なサービスにアクセスしてよい。
【0023】
図3に示される様々な実施形態が、図面に示され、本明細書に記載される全ての例示的な実施形態と同様に、性質的に例示であり、変型も本開示の範囲内であると見なされることに留意すべきである。例えば、例示されるものとは異なる他のサービスは、例示されるサービスに加えて、または代わりにフォルトゾーン302内で提供され得る。
図3において省略(「・・・」)で示されるように、例えば、追加のサービスがフォルトゾーン302内で稼働され得る。さらに、いくつかのサービスは他のサービスを利用してもよい。例えば、複数のサービス(例えば、ブロックレベルのデータストレージサービス306および仮想コンピュータシステムサービス308)は、関連データベースサービス、電子メールサービス、および一般に、コンピューティングリソースプロバイダのリソースを使用して提供され得る任意のタイプのコンピューティングサービス等の他のサービスを提供するために一緒に利用されてよい。
【0024】
図3に例示されるように、コンピューティングリソースプロバイダのサービスのそれぞれは、別個の検証手段312を含んでよい。検証手段は、コンピューティングデバイス、コンピューティングデバイスの集合、アプリケーションモジュール、または顧客によって、および可能性として他のコンピュータシステムによって行われた様々な証明を検証する他のリソースであってもよい。一実施形態において、検証手段312のそれぞれは、以下でさらに詳述されるように、本明細書において様々な実施形態に従って生成され、次にコンピューティングリソースにアクセスする要求と併せて顧客によって提供されるメッセージ署名を検証する。キーおよび他の関連情報は、中央キー権限者から検証手段に伝播されて、検証手段が情報を検証することを可能にし得る。検証手段を有する各サービスは、特定の実施形態の例示説明となる実施例であるが、他の設定が本開示の範囲内であることに留意すべきである。例えば、単一の検証手段が、複数のサービス、ひいては全サービスを支援し得、さらには複数のフォルトゾーンを支援し得る。
【0025】
図4は、少なくとも1つの実施形態に従って、
図3に示される環境等の環境を支援するために使用され得る、コンピューティングリソース構成の例示説明となる実施例を示す。
図4は、
図3内のフォルトゾーンがデータセンターである特定の実施例を特定的に示す。したがって、
図4に戻ると、データセンター402は、複数のサーバラック404〜406を含んでよい。データセンター402は、
図4に示されるデータセンター等の本開示の様々な実施形態において使用され得る、1つ以上のデータセンターの実施例である。サーバラック404とサーバラック406との間の省略(「・・・」)は、データセンター402が、任意の適切な数のサーバラックを含んでよいことを示すが、明確にするために、
図4では2つのみが示される。各サーバラック404〜406は、複数のサーバコンピュータ408〜414および416〜422に対する電力およびデータ通信等のサービスの維持に関与し得る。ここでも省略(「・・・」)は、サーバラック404〜406が任意の適切な数のサーバコンピュータを含み得ることを示す。例えば、サーバコンピュータ408〜422は、1つ以上の仮想コンピュータシステム(VCS)サーバおよび/または1つ以上のデータストアサーバを含み得る。各サーバ408〜422は、実装リソース専用ユニットに対応し得る。
【0026】
図4において、各サーバラック404〜406は、ラックスイッチ424〜426を含むように描かれる。ラックスイッチ424および426は、デジタルデータのパケットと、それらそれぞれの一式のサーバコンピュータ408〜414および416〜422とのスイッチングに関与し得る。ラックスイッチ424〜426は、データセンタースイッチング構造428に通信で接続され、次にデータセンター402を、インターネットを含む1つ以上の他のコンピュータネットワークに接続する、一式のエッジルータ430に通信で接続され得る。スイッチング構造は、1つ以上のスイッチング層に配列された1つ以上のスイッチタイプの複数の相互接続されたスイッチ432〜438(明確にするために、
図4では4つのみが示される)、ならびにルータ、ゲートウェイ、ブリッジ、ハブ、リピータ、ファイヤーウォール、コンピュータ、およびそれらの適切な組み合わせを含む、任意の適切な一式のネットワーキング構成要素を含み得る。少なくとも1つの実施形態において、ラックスイッチ424〜426およびエッジルータ430は、スイッチング構造428の一部として見なされる。ラックスイッチ424〜426、エッジルータ430、およびスイッチング構造428の構成要素は、
図2のネットワークハードウェア224の例である。
【0027】
上記のように、本開示の様々な実施形態は、異なる理由で付与される様々なレベルの権限を可能にする。
図5は、コンピューティング環境に関与する様々な要素が、少なくとも1つの実施形態に従って、異なる範囲の権限を割り当てられ得る例示の様式を示す図表である。
図5において、コンピューティングリソースプロバイダ502が示される。一実施形態において、コンピューティングリソースプロバイダ502は、
図5に例示されるように、そのリソースに対して権限を有し、その権限をリソースの使用において、様々な参加者の間で分配することができる。本明細書における他の例示および説明と一致する例示の目的で、
図5は、ドメインに対して権限を有するコンピューティングリソースプロバイダ502を示す。しかしながら、本開示の実施形態は、権限ドメインの他の所有者にも適用可能である。例えば、権限の所有者は、政府もしくは政府機関、別の機関の下部組織、または一般にいくつかのドメインに対して権限を有する任意のエンティティであってよい。
【0028】
図5の例示説明となる実施例に戻ると、コンピューティングリソースプロバイダ502は、異なるサブエンティティが、異なるサブドメインに対して権限を有することを可能にすることによってその権限を管理する。例えば、この図に示されるように、コンピューティングリソースプロバイダのいくつかのフォルトゾーン504のそれぞれには、コンピューティングリソースプロバイダ502のドメインの対応するサブドメインが提供される。したがって、各フォルトゾーンは、それ自体のリソースに対して権限を有し得るが、別のフォルトゾーンのリソースに対しては権限を有さない(しかしながら、いくつかの例では、いくつかのサブドメインに対する権限が共有されてもよい)。したがって、一実施形態に従って、フォルトゾーンは、フォルトゾーン内のコンピューティングリソースへのアクセスをユーザに提供し得るが、別のフォルトゾーンのコンピューティングリソースへのアクセスは提供し得ない。
【0029】
上記のように、各フォルトゾーンは、1つ以上のサービス506を含み得る。したがって、
図5に示されるように、各サービスは、対応するフォルトゾーン506のドメインのサブドメインに対応可能であり得る。したがって、サービスは、一実施形態において、そのサービスによってアクセス可能なリソースへのアクセスを提供することができるが、他のサービスによってアクセス可能なリソースへのアクセスは提供できない。各サービスは、1人以上の顧客508に提供され得るため、各顧客は、対応するサービス506の権限のサブドメインに関与し得る。したがって、一実施形態において、顧客は、対応するサービスに関与するそれ自体のリソースへのアクセスを提供し得るが、別の顧客に対するアクセスは提供し得ない。具体的な例示説明となる実施例として、サービスが仮想コンピューティングリソースサービスである場合、顧客は、それ自体の仮想コンピュータシステムへのアクセス(例えば、パブリックアクセス)を提供し得るが、許可なしでは、他の顧客の仮想コンピュータシステムへのアクセスを提供することはできない。
【0030】
記載のとおり、
図5に示される権限の特定の割り当ては、例示説明の目的であり、多数の変型が本開示の範囲内であると見なされる。記載のとおり、本開示の実施形態は、コンピューティングリソースプロバイダによって管理されるドメインの外側にある権限のドメインに適用可能であり、サブドメインは、特定のニーズおよび環境に従って決定され得る。さらに、
図5は、権限の最小サブドメインを有する仮想リソースプロバイダの顧客を示す。しかしながら、本開示の技術は、顧客ドメインを1つ以上のサブドメインに分割することを可能にし得る。
【0031】
本開示の様々な実施形態は、メッセージ署名に関する。
図6は、少なくとも1つの実施形態に従って、メッセージ署名検証プロセスの参加者の間で情報が通信され得る例示の様式を示す図表600である。一実施形態において、キーソース602は、メッセージ送信者604および署名検証手段606の両方にキーを提供する。キーソースは、少なくともメッセージ送信者604および署名検証手段606にキーを提供するように構成されたコンピュータシステムであり得る。キーソースはまた、本明細書に記載される様々な実施形態を含む、様々な技術を使用してキーを生成し得るか、または別のソースから生成されたキーを得てもよい。メッセージ送信者604は、メッセージおよび署名を署名検証手段606に送信するように構成されたコンピュータシステム、または署名検証手段606に関連して動作する他の構成要素であり得る。メッセージ送信者604のコンピュータシステムは、例えば、コンピューティングリソースプロバイダの顧客のコンピュータシステムであり得る。署名検証手段606は、以下で論じられるように、メッセージおよび署名を受信し、その署名を分析してメッセージが本物であることを検証するように構成されたコンピュータシステムであり得る。つまり、署名検証手段606は、受信された署名およびメッセージを分析して、署名が正しいキーKを使用して生成されたかどうかを決定し得る。
図6は、キーソース602が、メッセージ送信者604と署名検証手段606とを分離することを示すが、メッセージ送信者または署名検証手段のいずれかもキーソースであり得ることに留意すべきである。例えば、コンピューティングリソースプロバイダの顧客は、それら自身のキーを提供し得る。次に顧客キーは、署名の検証のために署名検証手段に提供されてよい。さらに、メッセージ送信者604および署名検証手段606は、それぞれ異なるキーをキーソース602から受信し得る。例えば、メッセージ送信者604は、キーを受容してよく、署名検証手段606は、本開示の様々な実施形態を使用して、メッセージ送信者604によって受信されたキーから導出されたキーを受信し得る。
【0032】
図6に示されるように、署名検証手段606は、メッセージおよび対応する署名をメッセージ送信者604から受信する。メッセージは、例えば、コンピューティングサービス608へのアクセスの電子要求であり得る。メッセージは、例えば、ウェブサービスに対するAPIコールを符号化し得る。署名およびメッセージの分析が、そのメッセージが本物であることを示す場合、次に署名検証手段は、メッセージ送信者が要求されたアクセスを有し得ることをサービス(またはそのサービスへのアクセスを制御する構成要素)を通知する。例えば、署名検証手段は、受信されたメッセージをサービスに渡し、そのサービスが要求を満たすことを可能にし得る。したがって、サービスは、上述の様々なサービス等の要求を満たすために動作可能なコンピュータシステムであってよい。
図6の様々な構成要素および他の構成要素に関する様々な説明は、それらの構成要素が、ある動作を行うように構成されたコンピュータシステムとして実装され得るとして説明するが、構成要素は、その動作を行うように集約的に構成されたコンピューティングデバイスのネットワーク等の複数のコンピューティングデバイスをも含み得ることに留意されたい。
【0033】
図7は、一実施形態に従って、メッセージに署名するためのプロセス700の例示説明となる実施例を示すフローチャートである。プロセス700(もしくは本明細書に記載される任意の他のプロセス、あるいはそれらの変型および/または組み合わせ)の一部または全部は、実行可能な命令を備えて構成された1つ以上のコンピュータシステムの制御下で行われてよく、1つ以上のプロセッサ上でハードウェアにより集約的に実行するコード(例えば、実行可能な命令、1つ以上のコンピュータプログラム、もしくは1つ以上のアプリケーション)、またはそれらの組み合わせとして実装されてよい。コードは、コンピュータ可読ストレージ媒体上で、例えば、1つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形態で記憶されてもよい。コンピュータ可読ストレージ媒体は、非一時的であり得る。
【0034】
一実施形態において、プロセス700は、キーKを得ること701を含む。キーは、任意の適切な様式で得ることができる。例えば、キーは、プロセス700を行うコンピュータシステムによって生成されてよい。キーは、プロセス700を行うコンピュータシステムによって電子的に受信され得る。一般的に、キーを得ることは、任意の適切な様式で行われてよい。キーは、利用される特定の署名アルゴリズムのための任意の適切なキーであってよい。例えば、ハッシュベースのメッセージ認証符号(HMAC)スキームが、セキュアハッシュアルゴリズム(SHA)−256暗号ハッシュ関数とともに使用されている場合、キーは、例えば、64バイト以下のシーケンス等のバイトシーケンスであり得る。異なる暗号ハッシュ関数、例えば、SHA−224、SHA−384、およびSHA−512も使用され得る。
【0035】
一実施形態において、プロセスは、メッセージMを正規化して、正規化されたメッセージM
cを形成することも含む。メッセージを正規化することは、検証手段がそのメッセージの署名が有効であるかどうかを検証することを可能にする形式で、メッセージ内に情報を配置することを含み得る。一般に、多くの情報通信プロトコルは、メッセージを成すビットを変換するが、そのメッセージは意味的に同一のままである。結果として、2つの意味的に同一のメッセージが、異なるビットセットを含んでよく、したがって異なる署名を生じ得る。したがって、正規化は、署名が検証され得ることを保証する、単純な方法を可能にする。しかしながら、本開示のいくつかの実施形態は、メッセージの正規化を必要としないことに留意すべきである。例えば、利用される様々なプロトコルが、異なるビットセットを含む意味的に同一のメッセージを生じない場合、正規化は必須でない場合があり、省略されてよい。一般的に、正規化は、署名されたメッセージの操作なしに、署名検証が良好に行われ得るいかなる場合においても省略されてよい。
【0036】
一実施形態において、署名は、HMAC(K,M
c)を計算することによって生成され、HMAC()は、上述のようなHMAC関数である。HMAC関数は、本開示の様々な実施形態に対してそれらを特に有用にするいくつかの特性を有する。例えば、HMAC関数は、コンピュータシステムによって効率的に計算することができ、それによって他のタスクに対して使用可能なコンピューティングリソースを残す。さらに、HMAC関数は原像計算困難性(非変換性)である。例えば、KがキーでありMがメッセージである署名S=HMAC(K,M)が与えられた場合、本質的にキーKに関する情報は得られない。例えば、SからKを決定することは、計算上不可能であるか、または少なくとも実践的はない。HMAC関数は第二原像計算困難性でもある。言い換えれば、S=HMAC(K,M)およびMが与えられた場合、S=HMAC(K,M′)となるように、Mとは異なるメッセージM′を決定することは不可能であるか、または少なくとも計算上実践的でない。さらに、HMAC関数は、偽造困難性である。例えば、S=HMAC(K,M)のオラクルが与えられた場合、そのオラクルをN回(Nは正の整数)クエリすることは、最大N個の署名−メッセージ対を可能にする。言い換えれば、一式の署名−メッセージ対が与えられた場合、キーを決定することや、またはそのセット内にないメッセージに対して正しい署名を生成する関数を決定することは不可能であるか、または計算上実践的でない。
【0037】
HMAC関数は、様々な実施形態に対して特に有用であるが、他の関数も使用することができる。例えば、HMAC関数の上記特性を持つ任意の関数が使用されてもよい。さらに、必ずしも上記特性の全部(またはいずれか)を有するとは限らない他の関数は、例えば、セキュリティが最大の関心事でない場合、および/またはセキュリティが関心事であるが、他の機構を通じて維持される場合に使用され得る。様々な実施形態の様々な例示説明は、HMAC関数への特定の入力を示すが、変型も可能であることに留意すべきである。例えば、HMAC関数(または他の関数)の入力は異なり得る。上述のように、例えば、ある入力はキーである。しかしながら、この入力は、キーから導出され得るか、またはそうでなければ少なくとも部分的にキーに基づき得る。例示説明となる実施例として、入力は、接尾辞、接頭辞、またはその他としてキーに追加される、署名スキーム識別子(恐らくバージョン識別子)等の情報とともにキーを含み得る。別の実施例として、入力は、別のキーであり得る、キーの情報へのマッピングを使用することによって得られる情報であってよい。同様に、メッセージとして示される入力は、メッセージから導出され得る。本開示の範囲内であると考えられる別の例示の変型として、署名は、HMAC関数の出力ではないが、HMAC関数(または他の適切な関数)の出力から導出された1つ以上の値であり得る。いくつかの実施形態において、キーおよびメッセージは、逆順で関数に渡され得る。
【0038】
図7の説明に戻り、署名がHMAC(K,Mc)を計算することによって一旦生成されると、その署名およびメッセージMは、署名を検証するコンピューティングデバイス、またはメッセージおよび署名の通信のためにインターフェースを提供するコンピューティングデバイス等の署名検証プロセスに関与する別のコンピューティングデバイスであり得る、受信者に提供される708。本明細書に明示的に記載される全ての実施形態と同様に、変型は、本開示の範囲内であると見なされる。例えば、正規化されたメッセージM
Cが、メッセージMの代わりに、またはそれに加えて受信者に提供され得る。さらに、メッセージMおよび署名を受信者に提供することは、キーをキー識別子と関連付けるデータストアにおいて、識別するために使用され得るキー識別子等の他の情報を提供することを含んでもよい。さらに、以下に論じられる、ポリシーを符号化するパラメータ等の他の情報が、メッセージMおよび署名とともに提供されてよい。
【0039】
図8は、少なくとも一実施形態に従って、署名検証のためのプロセス800の例示説明となる実施例を示すフローチャートである。
図8に示されるプロセス800は、
図2に記載されるような検証手段によって行われてよい。さらに、プロセス800は、署名およびメッセージの受信に応答して、例えば、
図7のプロセス700を行った別のコンピュータシステムに応答して行われてよい。一実施形態において、プロセス800は、上述のように、キーKを得ること802を含む。キーKを得ることは、様々な実施形態において他の動作を含んでもよい。例えば、プロセス800が、複数のキーから(例えば、コンピューティングリソースプロバイダの複数の顧客から)生成された署名を検証するコンピュータシステムによって使用される場合、キーKを得ることは、データストア内の複数のキーからキーを選択することを含む。データストアは、様々なキーを、検証のための署名を送信するものと関連付けてよい。例えば、コンピューティングリソースプロバイダの各顧客は、データストアを参照し、適切なキーを識別するために使用されるキー識別子(または複数のキー識別子)を有してよい。キー識別子は、メッセージおよびその署名の送信に関連して送信され得るか、またはそうでなければログイン信用情報の送信時等に決定され得る。キー識別子の受信者(例えば、メッセージ検証手段)は、データストアを参照してキー識別子に対応するキーがデータストア内にあるかどうかを決定してよく、そうでない場合は、次に、例えば、本明細書に記載される技術を使用して、共有された秘密信用情報から直接または間接的にキーを導出することによってキー自体を生成してよい。これを可能にするために、受信者は、一実施形態において、受信者が既に持っている情報(例えば、共有された秘密信用情報から導出されたキー)からキーを導出するために必要な情報を符号化する、キー導出パスへのアクセスを有してよい。この情報は、署名の付いたメッセージの送信者から受信者に提供され得るか、またはそうでなければ受信者が入手できるようにし得る。例えば、受信者は、現在の日付で、その割り当てられた領域およびコードを使用してキーを自動的に生成するようにプログラム化され得る。一般的に、署名を生成するために使用されたキー(またはいくつかの実施形態では、署名を検証するために使用され得る別のキー)を得る任意の方法を使用することができる。受信者は、目前の要求、または受信者に既知である、ある種の他の特性に関して、許容できるキーおよび許容できないキー導出パスに関してポリシーを実施し得る。
【0040】
一実施形態において、署名SおよびメッセージMが受信される804。署名SおよびメッセージMは、
図7のプロセス700を行ったコンピューティングデバイス等の送信者から電子的で受信され得る。次にメッセージMは、一実施形態に従って、M
cを決定するように正規化される806。メッセージMの正規化は、様々な実施形態において、署名Sが検証され得ることを保証する。したがって、一実施形態において、プロセス800は、HMAC(K,M
c)を計算することによって署名S′を生成すること808を含む。一実施形態において、S′は、HMAC(K,M
c)に等しいが、S′は、様々な実施形態においてHMAC(K,M
c)から導出され得る。例示の目的で、プロセス800の残りは、S′=HMAC(K,M
c)であるが、数値的変型が本開示の範囲内であるという前提で説明される。
【0041】
したがって、一実施形態において、S′が受信された署名Sに等しいかどうかの決定が行われる810。言い換えれば、例えば、それがキーKを使用して生成された署名であるため、受信された署名が十分であるかどうかの決定が行われる。したがって、一実施形態において、S′およびSが等しくないことが決定された場合810、署名は検証されない812。しかしながら、S′がSに等しい場合、署名が検証される814。署名が検証されたかどうかに応じて、適切な動作が行われ得る。例えば、メッセージが、コンピューティングリソースへのアクセスの要求であった場合、要求されたアクセスは(少なくとも一時的に)否定され得る。同様に、メッセージがコンピューティングリソースへのアクセスの要求であり、署名が検証された場合、要求されたアクセスが許可され得る。しかしながら、行われる適切な動作は、署名が受信および検証される理由(複数可)に応じて様々な実施形態において広く異なり得ることに留意すべきである。
【0042】
上記のとおり、本開示の様々な実施形態は、多数の環境に適用する。多くの環境において、セキュリティ管理の様々な態様の集中管理を有することが有用である。
図9は、例えば、少なくとも一実施形態に従って、キーを配布する例示の様式を示す図表900である。
図9において、中央キー権限者は、ある組織によって利用される様々なキーを含む、1つ以上のデータストア(集約的に「データストア」と称される)を維持する。キーは、例えば、組織のコンピューティングデバイスのユーザに対応し得る。ユーザ群の各ユーザには、例えば、1つ以上のキーが割り当てられてよい。一実施形態において、少なくともいくつかのキーが、組織の顧客(および/または顧客のユーザ)に対応する。例えば、一実施形態において、組織は、コンピューティングリソースプロバイダであり、コンピューティングリソースプロバイダの各顧客は、顧客のユーザが、コンピューティングリソースプロバイダによって維持されるコンピューティングリソースにアクセスすることを許可する1つ以上のキーに対応する。
図7とともに上述の変型に従って、
図8のプロセス800の他の適合もまた、本開示の範囲内である。
【0043】
図9に示されるように、キー権限者902は、キーを複数のキーゾーン904に伝播する。キーゾーンは、受信されたキーが有効である組織のドメインであり得る。例えば、
図2を参照すると、各キーゾーン904は、データセンター等のフォルトゾーンに対応し得る。キーゾーンは、必ずしもそうとは限らないが、地理的に定義され得る。例えば、各キーゾーンは、国、地域、または他の地理的に定義された地域に対応し得る。キーゾーンは、他の方法で定義されてもよい。例えば、各キーゾーンは、コンピューティングリソースプロバイダによって組織の顧客に提供されるサービス等に対応し得る。キーゾーンは、示されてはいないが、サブゾーンを有し得る。例えば、キーゾーンは、国に対応し得る。その国の内には複数の地域が存在し得、それぞれキーゾーンのサブゾーンに対応する。キーは、そのような実施形態においてサブゾーンに伝播され得る。
【0044】
図9に示されるように、キーゾーン904は、キーゾーンの1つ以上の検証手段906にキーを伝播し得る。例えば、キーゾーンがデータセンターに対応する場合、データセンターのコンピューティングデバイスは、そのデータセンター内でコンピューティングリソースによって支援される複数のサービスのそれぞれに対する検証手段にキーを伝播し得る。このように、検証手段を使用して、様々な要求に関連して送信された署名を検証することができる。これは、特に要求が行われるサービスからキー権限者902が地理的に遠位である場合、キー権限者自体のコンピューティングリソースが署名を検証するのを軽減し、待ち時間および帯域幅要件も減少させる。
【0045】
キー伝播は様々な方法で行われてよい。一実施形態において、キーは、様々な受信者に対して、セキュアチャネルにより配布される。いくつかの実施形態において、キー権限者は、各キーゾーンに同一のキーを伝播する。またいくつかのキーは、複数のキーゾーンにおいて使用可能であり得る。キー権限者902は、複数のキーゾーンにおいて使用可能であるキーを、それらの複数のキーゾーンに伝播し得る一方で、それらのキーが使用できないキーゾーンにキーを伝播しないようにする。このようにして、コンピューティングリソースプロバイダの実施例において、キー権限者902は、顧客に対するキーを、その顧客がキーを使用できるキーゾーンのみに、例えば、顧客のコンピューティングリソースを維持するために使用されるデータセンター等に伝播し得る。
【0046】
本開示の様々な実施形態はまた、多くの利益を提供する様式でキー伝播を提供する。
図10は、少なくとも一実施形態に従って、様々な権限の範囲を提供する様式でキーを配布する例示の様式を示す図表1000である。
図10にあるように、図表1000は、例えば、
図9に関連する上記説明に従って、キーを直接または間接的に様々なキーゾーン1004および検証手段1006に伝播するキーKを有するキー権限者1002を含む。例示の目的で、図表1000は、単一のキーK、およびKから導出されたキーに関して説明されるが、本明細書に記載される実施形態では、キー権限者が多数のキーに対してそのような動作を行うときに適用される。
【0047】
図10に示されるように、キーKは、Kから導出される他のキーの基礎として使用される。例えば、KからキーK
1が導出され、第1のキーゾーン(キーゾーン
1)に伝播される。したがって、キーK
1(またはキーK
1から導出されたキー)は、第1のキーゾーンにおいて使用可能であるが、K
1(またはキーK
1から導出されたキー)を有しない他のキーゾーンでは使用できない。同様に、多数の他のキーゾーンのそれぞれは、キーKから導出された対応する異なるキーを受信する。
図10は、キー権限者1002から対応するキーゾーンに伝播されるキーKから導出されたキーを示すが、変型も可能であることを留意すべきである。例えば、キーKは、キーゾーンに伝播されてよく、キーKを受信する各キーゾーンは、キーKを使用して1つ以上の対応するキーを導出し得る。例えば、「キーゾーン
1」と標識されるキーゾーン1004は、キーKを受信して、K
1を導出し得る。一般的に、キー導出および伝播に関与する様々なタスクは、様々な実施形態に例示されるものとは異なって行われてもよい。
【0048】
図10の例示説明となる実施例に示されるように、キーゾーン1004によって受信されたキーを使用して、さらに伝播されるキーを導出する。例えば、「キーゾーン
2」と標識されるキーゾーン1004を参照すると、キーKから導出されるキーK
2を使用して追加のキーK
2′およびK
2′′を導出する。キーK
2′およびK
2′′は、署名を検証する際に検証手段1006によって使用するために、対応する検証手段1006に伝播される。したがって、K
2′を受信する検証手段は、一実施形態において、K
2′′を使用して生成された署名を検証することができるが、K
2′を受信しなかった検証手段は、署名を検証することができない。
図9および10に示される様式(またはその変型)でキーを伝播することによって利益が得られる。例えば、1つ以上の集中型検証手段の代わりに複数の場所にある多数の検証手段にキーを伝播することによって、より短い待ち時間が達成される。さらに、
図10を参照すると、導出されたキーを、次いで追加のキーを導出する他のデバイスに伝播することによって、複数の場所にある複数のデバイス上に計算を拡散することができ、それによってより迅速なキー導出およびフォルトトレランスの増加を可能にする。
【0049】
キーの導出は、多数の方法で行われ得る。
図11は、少なくとも一実施形態に従って、キー導出のプロセス1100の例示説明となる実施例を示すフローチャートである。一実施形態において、プロセス100は、例えば、上述の様式でキーK
iを得ること1002を含む。キーK
iは、上述のような任意の適切なキーであり得る。さらに、キーK
iは、必ずしもそうとは限らないが、例えば、プロセス1100または別のプロセスの実行によって、別のキーから導出され得る。キーK
iを得ると、新たなキーがK
iから導出される。
図11の例示説明となる実施例において、新たなキーK
i+1は、HMAC(K
i,R
i+1)として計算され(または少なくとも部分的にそれに基づき)、式中、R
i+1は、キーK
i+1に対する1つ以上の制限を識別する情報である。R
i+1は、例えば、どこでキーK
i+1が使用可能であるかを示す情報を符号化するビットのシーケンスであり得る。例えば、R
i+1は、キーK
i+1が使用され得るキーゾーンを符号化し得る。制限は、地理、時間、ユーザ識別、サービス等に少なくとも部分的に基づいてよい。例となる制限は、以下の説明において提供される。
【0050】
さらに、以下でさらに論じられるように、プロセス1100は、キーを導出するために複数可使用されてもよい。例えば、プロセス1100(またはその変型)を使用して生成されたキーは、同一または別の制限を使用して、別のキーを生成するために使用されてよい。図の用語を使用すると、R
i+1は、例えば、K
i+1が使用され得る場所を示す情報を符号化するビットのシーケンスであり得る。K
i+1は、プロセスの次の反復のためにキーK
iとなる。例えば、プロセス1100を使用して地理的制限に基づいてキーを生成した場合、生成されたキーは、日付に基づく制限を有するキーを生成するために使用され得る。そのようなプロセスは、キーを導出するために複数の制限を使用するために複数回利用されてよい。以下でさらに完全に論じられるように、キーを導出するために複数の制限を使用することによって、1つ以上の検証手段が、署名を検証する間に、ポリシーを実施することができる。簡潔な例示的実施例として、署名検証プロセスの一部として、検証手段は、現在の日付の符号化等の制限を使用して、予想される署名を決定し得る。異なる日付で生成された署名が提供された場合、一実施形態に従うと、その署名の検証は失敗する。一般に、署名の使用がキーを導出するために使用された制限に準拠しない場合、一実施形態に従って、署名の検証は失敗し得る。
【0051】
図12は、少なくとも一実施形態に従った、複数の制限を使用するキーの導出の例示説明となる実施例を示す図表1200である。
図12において、キーは、複数の制限を使用して導出される。この実施例において、キーおよび日付制限を使用して、日付キー(図ではKdate)を決定する。図において、日付は、2011年7月15日に対応して20110715として符号化するが、日付は異なって符号化されてもよく、一般に、情報は、図に示されるものとは異なって符号化されてもよい。日付キーは、地域制限とともに使用されて、地域キー(Kregion)を導出する。この実施例において、地域は、米国内のいくつかの地域の1つに対応し得る、地域識別子「USA−zone−1」で符号化される。Kregionキーは、サービス制限とともに使用され、サービスキーKserviceを導出する。この実施例において、サービスは、その頭字語VCSによって符号化された仮想コンピュータシステムサービスである。Kserviceキーは、要求識別子とともに使用され、署名キー、つまりサービスに対する要求に署名するために使用されるキーを導出する。この実施例において、要求識別子は「vcs_request」であり、VCSサービスに提出され得る特定タイプの要求に対応し得る。例えば、「vcs_request」は、仮想コンピュータシステムを提供、停止、または別の方法で修正する要求に対応し得る。署名キーは、要求とともに送信され得る署名を生成するために使用される。署名は、上記のような任意の適切な様式で生成され得る。
【0052】
図12に示されるように、要求は、署名を生成するためのHMAC関数への入力として、メッセージM
cを形成するように正規化され得る。当然のことながら、正規化が必須でない場合、およびHMAC関数以外の関数が使用される場合を含む変型が、様々な実施形態に従って利用されてもよい。さらに、
図12は、一実施形態に従って、署名の導出の特定の例を示す。しかしながら、署名を導出する際に、より多数または少数の制限が使用されてよく、制限は、例示されるものとは異なる順序で使用されてもよい。さらに、
図12は署名の導出を示すが、全てのアプリケーションにおいて署名として見なされない場合がある他のオブジェクトを導出するためにこの技術が適用されてもよい。例えば、
図12(および他の場所)で示される技術は、一般にキーを導出するために使用され得る。
【0053】
図13は、少なくとも一実施形態に従って、署名を導出するための関数1300の例示説明となる実施例である。
図13に示されるように、署名は以下のように計算される。
HMAC(HMAC(HMAC(HMAC(HMAC(K,date),region),service),protocol),Mc)
この実施例において、Kはキーであり、「date」は日付の符号化であり、「region」は地域の識別子の符号化であり、「service」はサービスの識別子の符号化であり、「protocol」は、特定のメッセージ符号化プロトコルに対応し、M
cは正規化されたメッセージである。したがって、
図13に例示されるように、署名は、同一のHMAC関数を複数回、それぞれ異なる制限をHMAC関数への入力として用いて計算することによって計算される。署名キーは、この実施例において、
HMAC(HMAC(HMAC(HMAC(K,date),region),service),protocol)
であり、それ自体はHMAC関数を複数回、それぞれ異なる制限を用いて使用することによって導出される。
【0054】
図13の実施例において、様々な制限は、それぞれドメインを定義し、定義されたドメインの交点は、署名キーを用いて生成された署名が有効となる様式を定義する。この特定の実施例において、
図13に示される署名キーを用いて生成された署名は、特定された日付で、特定された地域において、特定されたプロトコルを使用して特定されたサービスに有効となる。したがって、要求が署名キーを使用するが、署名キーへの入力によって特定されたものとは異なる日付で署名される場合、要求への署名は、要求が特定されたサービスのために特定の地域において行われた場合であっても無効であると見なされ得る。
【0055】
本明細書に記載される他の実施形態と同様に、変型は本開示の範囲内であると見なされる。例えば、
図13は、HMAC関数の反復使用を示す。署名を導出するために複数の関数が使用されてよく、いくつかの実施形態において、HMAC関数は、導出の全ての部分で使用されるわけではない。また記載されるように、異なる制限および異なる数の制限が、様々な実施形態において使用されてもよい。
【0056】
キー導出は、様々な実施形態に従って、多くの方法で行われ得る。例えば、単一のコンピューティングデバイスが、いくつかの実施形態に従って、署名キーを計算することができる。他の実施形態に従うと、複数のコンピューティングデバイスが、署名キーを集約的に計算し得る。特定の例示説明となる実施例として、
図13を参照すると、1つのコンピュータが、
Kregion=HMAC(HMAC(K,date),region)
を計算してよく、別のコンピュータが、
署名キー=HMAC(Kregion,Service)
を計算し得る。
【0057】
別の実施例として、別個のコンピュータシステムが、署名キーの計算において異なる層を実行し得る。前節の実施例を参照すると、単一のコンピュータがKregionを計算する代わりに、1つのコンピュータが、
Kdate=HMAC(K,date)
を計算してよく、別のコンピュータが、
Kregion=HMAC(Kdate,region)
を計算し得る。
図14は、少なくとも一実施形態に従って、複数のキー導出がどのように実行および使用され得るかの例示説明となる実施例である。特に、
図14は、署名キー(または様々な他の実施形態では他のキー)を集約的に計算するコンピュータシステムの分散セットの構成部員を示す例示の図表1500を示す。
図14に示されるように、そのセットの各構成部員は、キーを生成して、生成されたキーを別のコンピュータシステムに提供する、キープロバイダコンピュータシステム1402である。例えば、Key Provider
1と標識されるキープロバイダは、(別のソースから、またはそのキー自体を生成することによって)キーKを得て、キーおよび制限(R
1と標識される)を使用して、キーK
1を生成する。Key Provider
1は、キーK
1をKey Provider
2に渡し、それがK
2および別の制限R
2を使用して別のキーK
2を生成する。Key Provider
2は、キーK
2をKey Provider
3に渡し、それがK
3および別の制限R
3を使用して、別のキーK
3を生成する。キープロバイダが特定の実施形態においていくつ存在するかに応じて、このプロセスは、Key Provider
Nー1がキーK
N−1をKey Provider
Nに渡すまで継続してよく、それがK
N−1および別の制限R
Nを使用して別の署名キーK
Nを生成する。キーK
Nは、次に検証手段コンピュータシステム1404に渡される。キーKまたはKから導出された任意のキー(複数可)(一般に図面ではK
iと称される)は、例えば、セキュアキー交換アルゴリズムを通じて、署名者コンピュータシステム1406に渡されてもよい。
【0058】
署名者コンピュータシステム1406は、また、様々な実施形態において、例えば、制限R
1〜R
Nが署名者に提供され、および/または公的に提供される場合、それ自体がK
Nを生成してもよい。さらに、署名者コンピュータシステム1406は、様々な実施形態において、それ自体がK
Nを導出するためにプロセスの一部のみを行い得る。例えば、署名者は、(恐らく適切なキープロバイダコンピュータシステムから)K
iを得てよく、いくつかの整数iはN未満であり、制限R
i+1〜R
Nである。署名者は、次にK
iおよび制限R
i+1〜R
Nを使用して署名キーK
Nを生成する。他の変型も本開示の範囲内であると見なされる。
【0059】
署名者コンピュータシステム1406は、キーK
Nを使用して、検証手段1404によって検証されるメッセージを署名し得る。例えば、例示説明されるように、署名者1406は、署名S=HMAC(K
N,M
C)を計算し、M
Cは、メッセージMの正規化バージョンであり、これも検証手段に送信される。検証手段はK
Nを有するため、検証手段は、独立して、メッセージMを正規化し、HMAC(K
N,M
C)を計算して、計算の結果が受信された署名Sと一致するかどうかを決定することができる。
【0060】
図14に示されるプロセスの変型、および本明細書に記載される他のプロセスは、HMAC関数の複数使用を伴うものとして示されるが、キーを導出するために複数の異なる関数が使用されてもよいことを留意すべきである。例えば、異なるタイプのメッセージ認証符号(MAC)関数が、キーを導出する際に異なる時点で使用され得る。例えば、あるタイプのMAC関数の出力が、別のタイプのMAC関数への入力の基礎として使用され得る。一般に、他のタイプの関数が、キー導出プロセスにおいて、HMAC関数の代わりに、および/またはそれに加えて使用されてよく、様々な実施形態において、キーを導出するために同一タイプの関数を複数回使用する必要はなく、関数が要求されるたびに異なる関数が使用されてもよい。
【0061】
図15は、少なくとも一実施形態に従って、キーが複数の制限を使用して導出され得る例示の様式を示す図表1500である。
図15に示される実施例は、コンピューティングリソースプロバイダの顧客等の顧客に関する。しかしながら、記載されるように、
図15に関連して説明される技術を含む本明細書に記載される技術は、多くの他の文脈において使用されてもよい。
【0062】
示されるように、顧客キーK
custは、一式の顧客長期キーの一部であり、それぞれが顧客によって一定期間、例えば、顧客がキーを更新する、新しいキーが割り当てられるか、またはそうでなければキーを変更するまで使用されるキーであってよい。キーは、1人以上の顧客によって無期限に使用されてもよい。顧客キーK
custは、例えば、上に例示説明される様式で1つ以上の地域キーを導出するために使用される。例えば、
図15に示されるように、2つの地域キーが、例えば、HMAC(K
cust,USA‐E‐1)およびHMAC(K
cust,USA‐N‐1)を計算することによって生成されてよく、式中、USA‐E‐1およびUSA‐N‐1は、それぞれの地域の識別子である。同様に、地域キーは、日付キーを符号化するために使用される日付によって有効性が制限され得る日付キーを導出するために使用されてよい。日付キーのそれぞれは、例えば、上記の様式でサービスキーを導出するために使用され得る。
【0063】
このように、様々な実施形態において、サービスキーは、その日付で、キーを符号化するために使用される地域内のみにおいて、それぞれのサービスと併せて使用され得る。新たな日付キーは、それぞれの日に生成されてよいが、地域キーおよび顧客長期キーは、より低頻度で生成され得る。例えば、
図15において、また本開示の他の場所で示される複数の制限キー導出は、多くの利点を提供する。例えば、署名キーが破られる場合(例えば、第三者によって不正に得られる場合)、
図15に関連して記載される様式でキーを導出することによって、セキュリティ違反は特定の領域、特定の日付、および特定のサービスに関連して制限される。他のサービスは影響を受けないままである。同様の利点は、キーが導出され得る他の方法で適用可能である。
【0064】
図16は、例えば、少なくとも一実施形態に従って、キーが導出され得る別の例示の様式を示す図表1600である。
図16は、
図16のものに類似する様式で概念を示す。
図16においては、しかしながら、顧客長期キーが、日付キーを導出するために使用される。日付キーは、地域キーを導出するために使用される。地域キーは、サービスキーを導出するために使用される。導出は、本明細書に記載される様々な実施形態に従って達成され得る。
【0065】
図17は、少なくとも一実施形態に従って、キーが導出され得るさらに別の例示の様式を示す図表1700である。
図17において、顧客長期キーが、月キーを導出するために使用される。月キーは、地域キーを導出するために使用される。地域キーは、日付キーを導出するために使用される。日付キーは、サービスキーを定義するために使用される。様々なキーの導出は、上記説明と一致する様式で行われてよい。
【0066】
論じられるように、本開示の様々な技術は、セッションを生成する新規の方法を可能にする。セッションは、一式の1つ以上の動作が許可される期間であってよく、セッションの満了(または他の終了)によって、その一式の1つ以上の動作が許可されなくなる。
図18は、少なくとも一実施形態に従って、セッションを開始するためのプロセス1800の例示説明となる実施例を示すフローチャートである。プロセス1800は、任意の適切なコンピューティングデバイスによって、またはコンピューティングデバイスの任意の適切な集合によって全体的に行われてよい。例えば、プロセス1800は、コンピューティングリソースプロバイダの顧客のクライアントデバイスによって行われ得る。別の実施例として、別の実施形態において、
図3を参照すると、フォルトゾーンのサービスのうちの1つは、セッションサービスであってよく、そのサービスを提供することに関与する1つ以上のコンピューティングデバイスが、プロセス1800を行い得る。
【0067】
図18に戻ると、一実施形態において、プロセス1800は、キーKを得ること1802を含む。キーKは、例えば、上記の様式で、他のキーを使用して導出されたキー等の任意の適切なキーであり得る。例えば、キーKは、プロセス1800の実行に関与するコンピューティングデバイスに伝播されていてもよい。ある時点で(例えば、図に示されるように、キーKを得るとき)、一実施形態において、セッションを開始する要求が受信され得る1804。要求は、上記のような電子要求であってよい。さらに、要求は、一実施形態において、本開示の様々な技術を使用して署名および検証される。また、要求は、プロセス1800を実現するために使用される特定の環境に応じて、異なる要求であってよい。例えば、プロセス1800がクライアントデバイス(例えば、コンピューティングリソースプロバイダの顧客の顧客デバイス)によって行われてセッションを生成する場合、そのセッションを開始する要求は、クライアントデバイスのモジュールによって受信されてよい。
【0068】
一実施形態において、セッションのためのセッションパラメータが決定される1806。セッションパラメータは、生成されるセッションに対する1つ以上の制限を示す情報であり得る。例示のパラメータとしては、限定するものではないが、期間、生成されるセッションキーの許容されるユーザの識別子、生成されるセッションキーが使用可能である1つ以上のサービス、セッションキーを使用して行われ得る動作に対する制限、上記の制限のいずれか、およびその他が挙げられる。パラメータは、生成されるセッションキーを伴う計算が一貫していることを保証する既定のフォーマット要件に従って電子的に符号化され得る。例えば、日付は、フォーマットYYYYMMDDで符号化される必要があり得る。他のパラメータは、それら独自のフォーマット要件を有し得る。さらに、セッションパラメータを決定することは、様々な方法で行われてよい。例えば、パラメータは、セッションのデフォルトパラメータであってよく、セッションキーが、セッション開始の要求者に許可された動作範囲に対して、既定の期間(例えば、24時間の期間)のみ使用可能であるようにする。別の実施例として、パラメータは、受信された要求の一部として、またはそうでなければそれに関連して提供されてよい。例えば、パラメータは、要求者からのユーザ入力に従って生成され得、既定のスキームに従って符号化され得る。
【0069】
一実施形態において、パラメータが決定されると、パラメータを使用して、セッションキーK
sを計算する1808。セッションキーK
sを計算することは、多数の方法で行われてよい。例えば、一実施形態において、セッションキーK
Sは、以下のように(またはそうでなければ少なくとも部分的に基づいて)計算されてよく、
HMAC(K,Session_Parameters)
式中、Session_Parametersは、決定された1806パラメータの符号化である。Session_Parametersは、計算の一貫性を保証する既定の様式で符号化されてよい。セッションキーK
Sは、
図19に関連して以下に記載される様式等の他の方法で計算されてもよい。
【0070】
一旦セッションキーK
Sが計算されると1808、一実施形態において、セッションキーK
Sは使用するために提供される。セッションキーを提供することは、様々な実施形態において多くの方法で行われ得る。例えば、セッションキーは、要求者がそのセッションキーを用いてメッセージに署名することを可能にするように、要求者のモジュールに提供されてよい。セッションキーは、他のデバイスがそのセッションキーを用いてメッセージに署名することを可能にするように、ネットワークにより別のデバイスに提供されてもよい。例えば、セッションキーは、セッションが開始される受任者に提供されてもよい。例えば、要求者は、セッションを開始する要求内で、またはそれに関連して受任者を特定していてもよい。セッションキーは、電子メールまたは他の電子アドレス等の要求者(すなわち、委任者)によって提供された情報に従って、電子的に提供されてよい。
【0071】
記載されるように、
図19は、一実施形態に従って、署名を生成するために使用され得るプロセス1900の例示説明となる実施例を示す。プロセス1900は、
図18に関連して上述のプロセス1800を行う1つ以上のコンピューティングデバイス等の1つ以上のコンピューティングデバイスによって行われ得る。プロセス1900は、
図19に示されるように、上記のようにセッションパラメータを受信することを含む。得られたセッションパラメータを用いて、一実施形態において、中間キーΚ
i+1が、以下のように計算され1904、
K
i+1=HMAC(K
i,P
i)
式中、K
iは、K
i+1の第1の計算のための
図18の記載におけるキーKであってよく、P
iは、セッションパラメータのi番目のパラメータである。セッションパラメータは、キー署名の計算の一貫性を保証するために、既定の順序に従って順序付けされてよい。
【0072】
一実施形態において、セッションキーを生成する際に使用される追加のパラメータがあるかどうかの決定が行われる1906。追加のパラメータがある場合、一実施形態において、指数iは1つ増加し1908、Κ
i+1が再度計算される1904。しかしながら、追加のパラメータがないと決定された場合は、次にK
SがΚ
i+1の値に設定される1910。
【0073】
図20は、少なくとも一実施形態に従って、セッション中に1つ以上のコンピューティングリソースへのアクセスを得るためのプロセス2000の例示説明となる実施例を示すフローチャートである。
図20は、1つ以上のコンピューティングリソースへのアクセスを得るためのプロセス2000を提示するが、本明細書に記載される他のプロセスと同様に、プロセス2000は、署名プロセスが使用される任意の状況に対して修正されてよいことを留意すべきである。プロセス2000は、
図1に示されるクライアントコンピュータシステム、および/または本明細書の他の場所に記載される顧客コンピュータシステム等の1つ以上のコンピューティングリソースへのアクセスを要求するユーザのコンピュータシステムによって行われ得る。一実施形態において、プロセス2000は、セッションキーK
Sを得ることを含む。セッションキーは、電子メッセージ等の任意の適切な様式で得ることができる。セッションキーは、1つ以上のコンピューティングリソースへのアクセスの委任者のコンピュータシステム、またはK
Sを生成するためのプロセスを行った1つ以上のコンピュータシステムと関連して動作するコンピュータシステム等の別のコンピュータシステムから得られてもよい。
【0074】
一実施形態において、要求Rが生成される2004。要求Rは、上記のようにメッセージであってよい。要求Rは、次に正規化され2006、一実施形態において、署名は、例えば、その署名をHMAC(K
S,R
C)として(またはそうでなければそれに少なくとも部分的に基づいて)計算することによって正規化されたメッセージから計算される2008。署名が生成されると、署名Sおよび要求Rが提供される2010。例えば、上述のように、署名Sおよび要求Rは、要求を管理し、署名を検証することに関与するコンピュータシステムのインターフェースに電子的に提供され得る。署名Sおよび要求Rは、一般的な署名およびメッセージと同様に、単一の通信、別個の通信において一緒に、または複数の通信によって集約的に提供されてよい。他の情報が、署名Sおよび要求Rに関連して提供されてもよい。例えば、識別情報が、受信された署名を検証するために用いる署名を生成するために、検証手段が適切なキーを選択することを可能にするように提供され得る。識別は、例えば、比較のために署名を生成する際に使用されるべきキーの識別子であり得る。他の情報が、様々な実施形態において適宜提供および使用されてもよい。
【0075】
図21は、少なくとも一実施形態に従って、1つ以上のコンピューティングリソースに対して要求されたアクセスを許可するかどうかを決定するための、プロセス2100の例示説明となる実施例を示すフローチャートである。
図12に示されるように、プロセス2100は、署名キーK
sを得ること2102を含む。署名キーを得ることに関する本明細書における他の記述と同様に、署名キーは、例えば、その署名キーを別のソースから受信する、署名キーをメモリから検索取得する、署名キーを使用可能な情報から計算する等によって、様々な方法で得ることができる。
【0076】
一実施形態において、受信された要求Rは、例えば、上記の様式で正規化されて、R
Cを形成する。本明細書に記載される他のプロセスと同様に、変型が可能であることに留意すべきである。例えば、プロセス2100(または別のプロセス)の変型を行うコンピュータシステムは、単に正規化されたメッセージを受信してよく、正規化は、別のコンピューティングデバイスによって行われてもよい。
図21の説明に戻ると、署名S′が、HMAC(K
S,R
C)として(またはそうでなければそれに少なくとも部分的に基づいて)計算される。計算された署名キーS′を受信された署名Sと比較して2110、2つの署名が同等であるかどうかを決定する。2つの署名が同等でないと決定された場合、セッションは、無効であると決定され2112、要求の却下等の適切な動作が行われ得る。2つの署名が同等であると決定された場合、セッションは有効であると見なされ2114、1つ以上のコンピューティングリソースへのアクセスを付与する等の適切な動作が行われ得る。
【0077】
本開示の技術は、上述のように、権限の委任を許可するために使用されてよい。
図22は、少なくとも一実施形態に従って、権限を委任するためのプロセス2200の例示説明となる実施例を示すフローチャートである。プロセス2200は、コンピューティングデバイス、例えば、1つ以上のコンピューティングリソースへのアクセスを委任しようとするユーザのコンピューティングデバイス、またはコンピューティングリソースプロバイダのコンピューティングデバイス、あるいは任意の適切なコンピューティングデバイスによって行われてよい。図に示されるように、プロセス2200は、セッションキーK
siを得ること2202を含む。得られたセッションキーK
siは、上記のキーが得られるものとして説明される様式等の任意の適切な方法で得られてよい。さらに、セッションキーは、1つ以上のコンピューティングリソースへのアクセスを委任するプロセスの一部として生成されたキーであってもよい。例えば、セッションキーは、プロセス2200、またはその変型を行うことによって生成されていてもよい。
【0078】
一実施形態において、セッションパラメータが決定される2004。セッションパラメータは、
図18に関連して上述のような任意の適切な方法で決定されてよい。決定された2004セッションパラメータを用いて、新たなセッションキーK
s(i+1)が、上述のように生成されてよく、
図19に関連して上述のものを含む。一旦生成されると、新たなセッションキーは、受任者に提供されてよい。例えば、セッションキーは、電子メッセージで受任者に送信されてよい。セッションキーは、直接または間接的に受任者に提供されてもよい。例えば、セッションキーは、委任者に付与されてもよく、その委任者は、セッションキーを1人以上の受任者に提供する責任を有し得る。他の情報が受任者に提供されてもよい。例えば、セッションパラメータは、受任者がセッションパラメータに署名を提供することができ、それによって受信者(例えば、検証手段)が、提供された署名が有効であるかどうかを検証するために予測された署名を生成することを可能にするように受任者に提供されてもよい。例えば、受信者は、パラメータを使用して、秘密信用情報からセッションキーまたはそこから導出されたキーを生成し、そのセッションキーを使用して、対応する署名されたメッセージの正規化バージョンのための署名を生成し得る。一般的に、パラメータは、受信者がメッセージの署名を検証することを可能にするように、任意の適切な様式で署名の受信者が使用できるようにしてよく、受信者が受任者から独立してパラメータへのアクセスを有する場合、受任者は必ずしもパラメータにアクセスする必要はない。
【0079】
図23は、例えば、特権がどのように複数回委任され得るかを示す図表2300を示す。委任者2302は、1つ以上のアクセス特権を受任者2304に付与しようとする場合がある。しかしながら、受任者2304は、この実施例では、1つ以上の特権を別の受任者2306に提供しようとするかもしれない。したがって、この実施例では、受任者2304は委任者になり得る。同様に、受任者2306は、別の受任者にアクセスを提供しようとする場合があり、またその受任者は別の受任者にアクセスを許可しようとする等、最終的に1つ以上の特権がさらに別の受任者2308に付与される。
【0080】
したがって、この実施例では、元の委任者2302は、上述のように、フォルトゾーンのサービスであり得るセッションベースの認証サービス2310に委任要求を送信する。これに応答して、一実施形態において、セッションベースの認証サービスは、例えば、
図22に関連して上述のように、セッションキーを生成して委任者2302に提供する。委任者2302は次に、一実施形態において、セッションベースの認証サービス2310から受信したセッションキーを受任者2304に提供する。受任者2304は、セッションキーを別の受任者2306に提供し得る。このようにして、受任者2306は、受任者2304によって受信された特権の範囲を受信し、それは受任者2306に提供された特権の範囲と同一である。
【0081】
しかしながら、
図23に示されるように、受任者2304は、委任要求をセッションベースの認証サービス2310に提出し、その委任要求に応答して、セッションベースの認証サービス2310によって生成されていた異なるセッションキーを受信し得る。受任者2304は、この新たなセッションキーを次の受任者2306に提供してよい。次の受任者2306は、そのセッションキーをさらに別の受任者に提供し得るか、または上記のように、委任要求をセッションベースの認証サービス2310に送信してもよく、セッションベースの認証サービス2310は、次にセッションキーを生成して、そのセッションキーを、委任要求を送信した受任者2306に提供する。
図23に示されるように、これは継続し得、受任者の1人以上は、自身が受信したセッションキーを使用しようと試み得る。
【0082】
この特定の実施例において、受任者2308は、要求に関連して、セッションキーをコンピューティングリソース2312に提供する。上記のように、要求は、セッションキーを含み得るが、そのセッションキーは、要求とは別個に提供されてもよい。コンピューティングリソース2312は、上記のコンピューティングリソースのいずれか、または一般にいかなるコンピューティングリソースのでもあり得る。ポリシー管理サービス2314は、例えば上記の検証手段を含んでよく、コンピューティングリソースの要求時に、要求を検証し得る。コンピューティングリソース2312およびポリシー管理サービス2314は、
図23では別個に示されるが、単一の構成要素であってもよい。さらに、
図23は、セッションキーを生成するために使用される単一のセッションベースの認証サービス2310を示すが、様々な実施形態が異なるセッションベースの認証サービスを利用し得る。
【0083】
上記のように、本明細書に提供される例示の実施例に加えて、多数の変型が本開示の範囲内であると見なされる。
図24は、一実施形態に従って、キーが複数の権限者からのキーを使用して導出され得る様式の例示説明となる実施例を表す図表2400を示す。
図23において、顧客キーK
custは、コンピューティングリソースプロバイダによって維持される一式の顧客キーから生じる。上記の実施形態と同様に、
図23は、コンピューティングリソースプロバイダに関連して例示説明となる実施例を論じたが、他の変型も本開示の範囲内であると見なされる。
【0084】
図24において、一式の権限キーが維持され、各権限キーは異なる権限ドメインに対応する。顧客キーK
custから導出された各権限キーは、例えば、上記のように、異なるフォルトゾーンに伝播されてもよい。フォルトゾーンは、例えば、異なる行政区内のデータセンターであり得る。しかしながら、
図24は、単一の顧客キーK
custから導出されたそれぞれの分割された権限キーを示すが、変型も可能であることに留意すべきである。例えば、分割された権限キーは、独立して導出されてもよい。別の実施例として、1つ以上の分割された権限キーは、共通キーから導出されてよく、1つ以上の他のキーは、別の共通キーから導出され得る等である。
【0085】
一実施形態において、複数の権限者が、権限を組み合わせて、1つ以上のコンピューティングリソースへのアクセスを可能にすることができる。例えば、
図24に示されるように、分割された権限キーのサブセットを使用して、他のキーを導出してもよい。例えば、
図23に示されるように、Auth1およびAuth2と標識される2つの権限キーを使用して、統合された権限キーを導出する。統合された権限キーを導出するために、一実施形態において、例えば上記のように、HMAC(f(Auth1,Auth2),R)の値が計算され、式中、Rはある種の制限である。この実施例において、fは分割された権限キーの関数であり、二次元を越え得る。例えば、3つの分割された権限キーAuth1、Auth2、およびAuth3が、
図23に示されるように、関数f(Auth1,Auth2,Auth3)において使用され、統合された権限キーを、HMAC(f(Auth1,Auth2,Auth3),R)として(またはそうでなければそれに少なくとも部分的に基づいて)計算する。
【0086】
異なる権限からのキーを構成する多くの変型も本開示の範囲内であると見なされる。例えば、一つの権限者が、本開示の様々な実施形態を使用して、キー(K
spec)を生成し得る(または生成している)。各権限K
specは、部分的キーシードに対応してよく、そのK
specを生成するために使用される制限の公的に使用可能な符号化(または他の方法でメッセージ署名者および署名検証手段が使用可能な符号化)であり得る。例えば、部分的キーシードは、(K1/201108io/usa‐east‐l/DDS,K2/201108io/org_name/jpl/DDS)であってよく、スラッシュ間の各文字列は制限である。そのような情報の符号化は、キーパスと称され得る。より一般的な実施例として、部分的キーシードは、X
1/…/X
nであってよく、各X
i(は1〜nのi間)は、上記のパラメータ等のパラメータに対応する。適用可能な権限者からの部分的キーシードは、n−タプルとして符号化されてよく、キーシードと称される。直上の実施例のn−タプルは、(spec
1,spec
2,…,spec
n)であってよく、各エントリは、対応するK
specに対するキーパスである。キーシード(および/またはキーパス)は、キー保持者が署名/キーを生成することによって権限を与える精密なキー使用(全ての権限を与えられたキー間の完全な制限)を符号化することに留意すべきである。さらに、メッセージ署名者および署名検証手段の両方が使用可能な部分的キーシードを用いる場合、例えば、メッセージ署名者が、署名キーを生成するためにパラメータが使用された順序を特定する情報を有するため、したがって署名キーおよびメッセージを生成することができるため、キーおよび署名を生成するために使用されるパラメータの任意の順序が可能である。
【0087】
次に適用可能な権限者、つまり、キーが生成される権限者のそれぞれに対するHMAC(K
spec,key‐seed)の値が得られ得るか、または計算され得る。この値は、様々な実施形態において、メッセージに署名するために署名キーを得るクライアントによって計算され得るか、または別のデバイスによって計算され、後次にそのクライアントに提供され得る。これらの値のそれぞれは、以下の考察の目的で、部分的キーと称され得る。これらの部分的キーのそれぞれの意味は、一実施形態において、以下の構成(および以下の構成の所与の変型)と組み合わされたときのみ、それらが有効であるということであり、組み合わされると、キーシード内で符号化された特化の交点を形成する。
【0088】
署名キーを生成してメッセージに署名するために、以下の値を求め、
K
S=HMAC(partial_key
1+…+partial_key
n,key‐seed)
式中、「+」は、式中記号で囲まれた部分的キーに対するいくつかの連想演算を意味し得る。「+」記号は、例えば、部分的キーを含むビットに対する排他的OR(XOR)操作であり得る。「+」記号は、いくつかの他の適切な操作または関数を意味してもよい。
【0089】
メッセージに署名するために使用される署名を検証するために、検証手段は、上述のように、各部分的キーを得て、上記のように部分的キーを組み合わせて署名キーを形成し、受信したメッセージに署名して、その結果を予想された結果と比較して署名を検証する。
【0090】
本開示の例示の実施形態は、以下の付記を考慮して説明され得る。
付記1. サービスを提供するためのコンピュータで実装される方法であって、
実行可能な命令を備えて構成された1つ以上のコンピュータシステムの制御下で、
認証当事者から、メッセージと、前記メッセージの署名と、前記認証当事者と共有される秘密信用情報から導出されたキーに関する一式の1つ以上の制限とを符号化
している電子情報を受信することであって、前記署名は、ハッシュベースのメッセージ認証符号関数を前記メッセージ、前記秘密信用情報、および前記一式の1つ以上の制限に適用することによって決定可能であるが、前記ハッシュベースのメッセージ認証符号関数のみを有するが、前記一式の1つ以上の制限を有しない場合は決定できない、受信することと、
前記一式の1つ以上の制限の少なくともサブセットを少なくとも部分的に使用して生成されたキーを得ることと、
前記1つ以上のコンピュータシステムによって、
前記得られたキーに少なくとも部分的に基づく第1の入力と、
前記一式の1つ以上の制限に少なくとも部分的に基づく第2の入力と、
を前記ハッシュベースのメッセージ認証符号関数に少なくとも入力することによって、ハッシュベースのメッセージ認証符号関数の値を計算することと、
前記1つ以上のコンピュータシステムによって、かつ前記計算された値に少なくとも部分的に基づいて、前記署名が有効であるかどうかを決定することと、
前記署名が有効であることが決定されたとき、1つ以上のコンピューティングリソースへのアクセスを提供することと、
を含む、コンピュータで実装される方法。
付記2. 前記メッセージが、前記1つ以上のコンピューティングリソースへのアクセスの要求を含み、
前記方法が、前記一式の1つ以上の制限が、前記要求が満たされるべきであることを示すかどうかを決定することを含み、
前記1つ以上のコンピューティングリソースへのアクセスを提供することが、制限が、前記要求が満たされるべきであることを示すことを決定することを条件とする、付記1に記載のコンピュータで実装される方法。
付記3. 前記一式の1つ以上の制限を符号化する前記情報が、文書によって符号化され、前記一式の制限が、前記要求が満たされるべきであることを示すかどうかを決定することが、前記要求が受信される文脈に対して前記文書を評価することを含む、請求項2に記載のコンピュータで実装される方法。
付記4. 前記メッセージが、前記1つ以上のコンピューティングリソースのうちのコンピューティングリソースにアクセスする要求を含み、
前記一式の1つ以上の制限を符号化する前記情報が、前記コンピューティングリソースを特定する情報を含み、
前記1つ以上のコンピューティングリソースへのアクセスを提供することが、前記コンピューティングリソースが前記特定されたコンピューティングリソースと一致するとき、前記コンピューティングリソースへのアクセスを提供することを含む、付記1に記載のコンピュータで実装される方法。
付記5. 前記一式の1つ以上の制限を符号化する前記情報が、前記メッセージが有効である期間に対応し、
前記署名が有効であるかどうかを決定することが、前記メッセージが前記対応する期間の間に送信されたかどうかに少なくとも部分的に基づく、付記1に記載のコンピュータで実装される方法。
付記6. 前記一式の1つ以上の制限を符号化する前記情報が、場所に少なくとも部分的に基づく制限に対応し、
前記署名が有効であるかどうかを決定することが、前記1つ以上のコンピュータシステムのうちの少なくとも1つの場所が、前記対応する場所と一致するかどうかに少なくとも部分的に基づく、付記1に記載のコンピュータで実装される方法。
付記7. サービスを提供するためのコンピュータで実装される方法であって、
実行可能な命令を備えて構成された1つ以上のコンピュータシステムの制御下で、
(i)メッセージ、(ii)前記メッセージの第1の署名、および(iii)一式の1つ以上のパラメータを符号化
している電子情報を得ることであって、前記第1の署名が、(i)前記メッセージ、(ii)秘密信用情報、および(iii)前記一式の1つ以上のパラメータに少なくとも部分的に基づいて生成され、前記第1の署名がさらに、前記メッセージおよび前記秘密信用情報のみを有するが、前記一式の1つ以上のパラメータを有しない場合は決定できない、得ることと、
前記秘密信用情報および前記一式の1つ以上のパラメータのうちの少なくともサブセットに少なくとも部分的に基づいて、第2の信用情報を導出することと、
前記導出された第2の信用情報に少なくとも部分的に基づいて、第2の署名を生成することと、
前記第1の署名が、前記第2の署名と一致するかどうかを決定することと、
前記生成された第2の署名が、前記第1の署名と一致するとき、1つ以上のコンピューティングリソースへのアクセスを提供することと、
を含む、コンピュータで実装される方法。
付記8. 前記第2の信用情報を得ることが、前記秘密信用情報および前記一式の1つ以上のパラメータの前記少なくともサブセットを関数に入力することを含む、付記7に記載のコンピュータで実装される方法。
付記9. 前記関数が、対称メッセージ認証関数である、付記8に記載のコンピュータで実装される方法。
付記10. 前記対称メッセージ認証関数が、ハッシュ関数である、付記9に記載のコンピュータで実装される方法。
付記11. 前記秘密信用情報および前記1つ以上のパラメータの前記少なくともサブセットを前記関数に入力することが、ハッシュベースのメッセージ認証符号(HMAC)の一部として行われる、付記9に記載のコンピュータで実装される方法。
付記12. 前記第2の署名を生成することが、前記関数の出力および前記一式の1つ以上のパラメータからのパラメータの両方を前記関数に入力することを含む、付記8に記載のコンピュータで実装される方法。
付記13. 前記1つ以上のパラメータを符号化する前記情報が、前記一式の1つ以上のパラメータを符号化する電子文書を含む、付記7に記載のコンピュータで実装される方法。
付記14. 前記第2の署名を生成することが、キーに少なくとも部分的に基づき、
前記一式の1つ以上のパラメータが、前記キーの使用に対する1つ以上の制限を含み、
前記1つ以上のコンピューティングリソースへのアクセスを提供することが、前記1つ以上の制限に従って行われる、付記8に記載のコンピュータで実装される方法。
付記15. 前記キーが、前記秘密信用情報の関数への入力の結果に少なくとも部分的に基づく、付記14に記載のコンピュータで実装される方法。
付記16. 命令が記憶された非一時的コンピュータ可読ストレージ媒体であって、コンピュータシステムによって実行されるとき、少なくとも、
中間キーであって、少なくとも秘密信用情報および前記中間キーの使用のための1つ以上のパラメータから導出された中間キーを取得することと、
前記取得された中間キーに少なくとも部分的に基づいて、メッセージの署名をもたらす署名生成プロセスの少なくとも一部を適用することであって、前記署名生成プロセスが、前記署名生成プロセスによって、前記メッセージ、前記秘密信用情報、および前記署名を有するが、前記1つ以上の制限を欠くコンピューティングデバイスに対して前記署名が決定できないように構成される、適用することと、
前記メッセージ、前記署名、および前記1つ以上のパラメータを、前記1つ以上のパラメータおよび前記メッセージ、前記署名に少なくとも部分的に基づいて分析して、前記署名が有効であるかどうかを決定するように構成された別のコンピュータシステムに提供することと、
を前記コンピュータシステムに行わせる命令を記憶する、非一時的コンピュータ可読ストレージ媒体。
付記17. 前記1つ以上のパラメータが、前記別のコンピュータシステムによって、少なくとも部分的に実施される、前記中間キーの使用に対する1つ以上の制限を符号化する、付記16に記載の非一時的コンピュータ可読ストレージ媒体。
付記18. 前記1つ以上の制限が、前記中間キーが使用可能である期間、前記中間キーが使用可能である場所、および前記中間キーがアクセスを得るために使用可能である1つ以上のサービスのうちの少なくとも1つに対応する、付記16に記載の非一時的コンピュータ可読ストレージ媒体。
付記19. 前記命令が、前記コンピュータシステムによって実行されるとき、前記コンピュータシステムが、前記秘密信用情報へアクセスをする必要なしに、前記署名を生成することを可能にする、付記16に記載の非一時的コンピュータ可読ストレージ媒体。
付記20. 前記一式の1つ以上のパラメータを有するとき、前記署名が、前記共有された秘密信用情報または前記中間キーのいずれかを使用して、前記署名生成プロセスによって決定可能である、付記19に記載の非一時的コンピュータ可読ストレージ媒体。
付記21. 前記中間キーを取得することが、ハッシュ関数のうちの少なくとも1つの出力が、前記パラメータのうちの少なくとも1つとともに、前記ハッシュ関数に入力されるアルゴリズムを行うことを含む、付記19に記載の非一時的コンピュータ可読ストレージ媒体。
付記22. コンピュータシステムであって、
1つ以上のプロセッサと、
コンピュータシステムの1つ以上のプロセッサによって実行されるとき、前記コンピュータシステムに少なくとも、
メッセージ、前記メッセージの署名、および1つ以上のパラメータを集約的に符号化
している1つ以上の電子通信を受信することであって、前記署名が、前記秘密信用情報および前記1つ以上のパラメータに少なくとも部分的に基づいて生成される、符号化することと、
前記1つ以上のパラメータに少なくとも部分的に基づいて、前記1つ以上のパラメータおよび前記秘密信用情報の少なくとも一部から導出されたが前記秘密信用情報を有しない、前記中間信用情報、前記メッセージおよび署名を分析して、前記署名が有効であるかどうかを決定することと、
前記署名が有効であることを決定することを条件として1つ以上のアクションを行うことと、
を行わせる命令を含む、メモリと、
を備える、コンピュータシステム。
付記23. 前記メモリおよび1つ以上のプロセッサが、第1の地理的場所にある第1のサーバシステムの一部であり、
前記コンピュータシステムが、第2の地理的場所にある第2のサーバシステムを備え、前記第2のサーバシステムが、前記秘密信用情報に少なくとも部分的に基づいて、異なる署名を生成するように構成され、
前記第1のサーバシステムおよび第2のサーバシステムが、いずれも前記秘密信用情報を欠失し、
前記メッセージおよび署名を分析することが、前記1つ以上のパラメータおよび前記中間信用情報の前記少なくとも一部を関数に入力することを含み、
前記第1のサーバシステムおよび第2のサーバシステムがそれぞれ、前記関数を使用して前記メッセージから同じ署名が生成され得る情報を欠失する、付記22に記載のコンピュータシステム。
付記24. 前記コンピュータシステムが、サービスに対応し、
前記1つ以上のアクションが、前記サービスへのアクセスを提供することを含む、付記22に記載のコンピュータシステム。
付記25. 前記1つ以上のパラメータが、前記サービスにアクセスする際に使用するための前記中間信用情報の使用を制限する、付記24に記載のコンピュータシステム。
付記26. 前記メッセージおよび署名を分析することが、ハッシュ関数を前記中間信用情報に適用することを含み、
前記1つ以上のパラメータが、前記中間信用情報の使用に対する複数の制限を含み、
前記コンピュータシステムが、前記制限を実施するように構成される、付記22に記載のコンピュータシステム。
付記27. 前記メッセージおよび署名を分析することが、ハッシュ関数を前記秘密信用情報から導出されたキーに適用することを含み、
前記命令が、前記コンピュータシステムの前記1つ以上のプロセッサによって実行されるとき、前記コンピュータシステムに前記導出されたキーをキー権限者コンピュータシステムからさらに受信させる、付記22に記載のコンピュータシステム。
付記28. 前記コンピュータシステムに、前記キー権限者コンピュータシステムから前記導出されたキーをさらに受信させる前記命令が、前記コンピュータシステムに、前記メッセージの受信前に、前記キー権限者コンピュータシステムから前記導出されたキーを受信させる、付記27に記載のコンピュータシステム。
付記29. 前記中間信用情報が、前記コンピュータシステムとは異なる別のコンピュータシステムによって決定される、付記22に記載のコンピュータシステム。
【0091】
様々な実施形態はさらに、多種多様な動作環境内で実装することができ、場合によっては、1つ以上のユーザコンピュータ、コンピューティングデバイス、または多数のアプリケーションのいずれかを操作するために使用することができる処理デバイスを含み得る。ユーザまたはクライアントデバイスは、標準的なオペレーティングシステムを実行するデスクトップまたはラップトップコンピュータ、ならびにモバイルソフトウェアを実行し、多数のネットワーキングおよびメッセージングプロトコルを支援することができるセルラー、ワイヤレス、および携帯型デバイス等の多数の汎用パーソナルコンピュータのいずれかを含むことができる。そのようなシステムは、開発およびデータベース管理等の目的で、多様な市販のオペレーティングシステムおよび他の既知のアプリケーションのうちのいずれかを実行する多数のワークステーションを含むこともできる。これらのデバイスは、ダミー端末、シンクライアント、ゲーミングシステム等の他の電子デバイス、およびネットワークを介して通信することができる他のデバイスを含むこともできる。
【0092】
大半の実施形態は、TCP/IP、OSI、FTP、UPnP、NFS、CIFS、およびAppleTalk等の多様な市販のプロトコルを使用する通信を支援するために、当業者によく知られている少なくとも1つのネットワークを利用する。ネットワークは、例えば、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、ワイヤレスネットワーク、およびそれらの任意の組み合わせであり得る。
【0093】
ウェブサーバを利用する実施形態において、ウェブサーバは、HTTPサーバ、FTPサーバ、CGIサーバ、データサーバ、Javaサーバ、およびビジネスアプリケーションサーバを含む多様なサーバまたは中間階層アプリケーションのいずれかを実行することができる。サーバ(複数可)は、例えば、Java(登録商標)、C、C#もしくはC++等の任意のプログラミング言語、またはPerl、Python、もしくはTCL等の任意のスクリプト言語、ならびにそれらの組み合わせで書かれた1つ以上のスクリプトまたはプログラムとして実装され得る1つ以上のウェブアプリケーションを実行することによって、ユーザデバイスからの要求に応答してプログラムまたはスクリプトを実行することも可能であり得る。サーバ(複数可)は、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、およびIBM(登録商標)から市販されているものを含むが、これらに限定されないデータベースサーバを含んでもよい。
【0094】
環境は、上述のように、多様なデータストア、ならびに他のメモリおよびストレージ媒体を含み得る。これらは、例えば、コンピュータの1つ以上対してローカルである(および/またはその中に存在する)か、またはネットワーク全体のコンピュータのいずれかもしくは全てから遠隔にあるストレージ媒体上等の様々な場所に存在し得る。特定の一式の実施形態において、情報は、当業者によく知られているストレージエリアネットワーク(「SNA」)内に存在し得る。同様に、コンピュータ、サーバ、または他のネットワークデバイスに属した関数を行うための任意の必須ファイルは、必要に応じてローカルに、および/または遠隔的に記憶され得る。システムがコンピュータ化デバイスを含む場合、そのようなデバイスはそれぞれ、バスを介して電子的に連結され得るハードウェア要素を含むことができ、それらの要素は、例えば、少なくとも1つの中央演算装置(CPU)、少なくとも1つの入力デバイス(例えば、マウス、キーボード、コントローラ、タッチスクリーン、またはキーパッド)、および少なくとも1つの出力デバイス(例えば、ディスプレイデバイス、プリンタ、またはスピーカ)を含む。そのようなシステムは、ディスクドライブ、光学ストレージデバイス、および固体ストレージデバイス(例えば、ランダムアクセスメモリ(「RAM」)または読み取り専用メモリ(「ROM」))、ならびにリムーバブルメディアデバイス、メモリカード、フラッシュカード等の1つ以上のストレージデバイスを含んでもよい。
【0095】
そのようなデバイスは、コンピュータ可読ストレージ媒体リーダ、通信デバイス(例えば、モデム、ネットワークカード(無線または有線)、赤外線通信デバイス等)、および上記のようなワーキングメモリを含むこともできる。コンピュータ可読ストレージ媒体リーダは、遠隔、ローカル、固定、および/またはリムーバブルストレージデバイスを表すコンピュータ可読ストレージ媒体、ならびにコンピュータ可読情報を一時的および/またはより永久的に含有、記憶、伝送、および検索取得するためのストレージ媒体と接続され得るか、またはそれらを受信するように構成され得る。システムおよび様々なデバイスは、通常、多数のソフトウェアアプリケーション、モジュール、サービス、または少なくとも1つのワーキングメモリデバイス内に位置する他の要素(クライアントアプリケーションまたはウェブブラウザ等のオペレーティングシステムおよびアプリケーションプログラムを含む)も含む。当然のことながら、代替実施形態は、上記のものからの多数の変型を有してもよい。例えば、カスタマイズされたハードウェアが使用されてもよく、および/または特定の要素が、ハードウェア、ソフトウェア(アプレット等のポータブルソフトウェアを含む)、またはそれら両方において実現されてもよい。さらに、ネットワーク入力/出力デバイス等の他のコンピューティングデバイスへの接続が用いられてもよい。
【0096】
符号または符号の一部を含むためのストレージ媒体およびコンピュータ可読媒体は、当該技術分野において既知であるか、または使用される任意の適切な媒体を含むことができ、例えば、限定するものではないが、コンピュータ可読命令、データ構造、プログラムモジュール、もしくは他のデータ等の情報の記憶および/または伝送のための任意の方法または技術において実装される揮発性および不揮発性、リムーバブルおよび非リムーバブル媒体が挙げられ、RAM、ROM、EEPROM、フラッシュメモリもしくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)、または他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージもしくは他の磁気ストレージデバイス、または所望の情報を記憶するために使用することができ、かつシステムデバイスによってアクセスされ得る任意の他の媒体を含む。本明細書で提供される開示および教示に基づいて、当業者であれば、様々な実施形態を実現するための他の手段および/または方法を理解するであろう。
【0097】
本明細書および図面は、したがって、制限的な意味ではなく例示説明として見なされるものである。しかしながら、請求項に記載される本発明の広義の趣旨および範囲から逸脱することなく、様々な修正および変更がそこに行われ得ることは明らかとなるであろう。
【0098】
他の変型も本開示の趣旨に含まれる。したがって、開示される技術は、様々な修正および代替構成を許すが、それらのある例示の実施形態が図面に示され、上で詳細に説明された。しかしながら、本発明を開示される特定の形態(複数可)に限定する意図はなく、反対に、添付の請求項において定義される、本発明の趣旨および範囲内に含まれる全ての修正、代替構成、および相当物を網羅することを意図することを理解すべきである。
【0099】
開示される実施形態を説明する文脈における(特に以下の請求項の文脈における)用語「a」、「an」、および「the」ならびに同様の指示語の使用は、本明細書において別段の指示がない限り、または文脈に明らかに矛盾するものでない限り、単数および複数の両方を網羅すると解釈される。用語「備える(comprising)」、「有する(having)」、「含む(includeing)」、および「含有する(containing)」は、別段の記載がない限り、制限のない用語(すなわち、「含むが、それに限定されない」を意味するもの)として解釈される。用語「接続される(connected)」は、介在するものがある場合であっても、部分的または全体的にその中に含有される、そこに取り付けられる、または一緒に接合されるものと解釈される。本明細書における値の範囲の列挙は、本明細書において別段の指示がない限り、単にその範囲内に含まれるそれぞれ別個の値を個別に参照する簡略的な方法として機能することが意図され、各別個の値が、本明細書において個別に列挙されるかのように、本明細書に組み込まれる。本明細書に記載される全ての方法は、本明細書において別段の指示がない限り、または文脈と明らかに矛盾しない限り、任意の適切な順序で行われ得る。本明細書に提供される任意および全ての実施例、または例示的言語(例えば、「等」)の使用は、単に本発明の実施形態をさらに明らかにすることが意図され、別段の請求がない限り、本発明の範囲に対して制限を課すものではない。明細書におけるどの表現も、任意の請求されていない要素を本発明の実施に必須であると示すものと解釈されるべきではない。
【0100】
本開示の好適な実施形態が、本明細書において、本発明を実行するために発明者らに既知の最良の形態を含んで説明される。それらの好適な実施形態の変型は、前記の説明を読むことで、当業者に明らかとなり得る。発明者らは、熟練者がそのような変型を必要に応じて用いることを予期し、また発明者らは、本発明が本明細書において特定的に説明されるものとは別の方法で実施されることを意図する。したがって、本発明は、適用可能な法律によって許可されるように、本明細書に添付される請求項に列挙される主題の全ての改変および相当物を含む。さらに、その全ての考えられる変型における上述の要素の任意の組み合わせが、本明細書において別段の指示がない限り、または文脈と明らかに矛盾しない限り、本発明によって包含される。
【0101】
本明細書において引用される出版物、特許出願、および特許を含む全ての参照文献は、各参照文献が参照により個別かつ特定的に組み込まれ、その全体が本明細書において記載されるのと同じ程度に、参照により本明細書に組み込まれる。