特許第6082166号(P6082166)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ アマゾン テクノロジーズ インコーポレイテッドの特許一覧

特許6082166複数許可データセキュリティ及びアクセス
<>
  • 特許6082166-複数許可データセキュリティ及びアクセス 図000002
  • 特許6082166-複数許可データセキュリティ及びアクセス 図000003
  • 特許6082166-複数許可データセキュリティ及びアクセス 図000004
  • 特許6082166-複数許可データセキュリティ及びアクセス 図000005
  • 特許6082166-複数許可データセキュリティ及びアクセス 図000006
  • 特許6082166-複数許可データセキュリティ及びアクセス 図000007
  • 特許6082166-複数許可データセキュリティ及びアクセス 図000008
  • 特許6082166-複数許可データセキュリティ及びアクセス 図000009
  • 特許6082166-複数許可データセキュリティ及びアクセス 図000010
  • 特許6082166-複数許可データセキュリティ及びアクセス 図000011
  • 特許6082166-複数許可データセキュリティ及びアクセス 図000012
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6082166
(24)【登録日】2017年1月27日
(45)【発行日】2017年2月15日
(54)【発明の名称】複数許可データセキュリティ及びアクセス
(51)【国際特許分類】
   H04L 9/14 20060101AFI20170206BHJP
   H04L 9/08 20060101ALI20170206BHJP
   G06F 21/60 20130101ALI20170206BHJP
【FI】
   H04L9/00 641
   H04L9/00 601A
   H04L9/00 601C
   G06F21/60 320
【請求項の数】15
【全頁数】35
(21)【出願番号】特願2016-521485(P2016-521485)
(86)(22)【出願日】2014年6月16日
(65)【公表番号】特表2016-522658(P2016-522658A)
(43)【公表日】2016年7月28日
(86)【国際出願番号】US2014042569
(87)【国際公開番号】WO2014204862
(87)【国際公開日】20141224
【審査請求日】2015年12月21日
(31)【優先権主張番号】13/922,875
(32)【優先日】2013年6月20日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】506329306
【氏名又は名称】アマゾン テクノロジーズ インコーポレイテッド
(74)【代理人】
【識別番号】110001243
【氏名又は名称】特許業務法人 谷・阿部特許事務所
(72)【発明者】
【氏名】グレゴリー ブランチェック ロス
(72)【発明者】
【氏名】マシュー ジェームズ レン
【審査官】 青木 重徳
(56)【参考文献】
【文献】 特開2001−236259(JP,A)
【文献】 国際公開第2013/057757(WO,A1)
【文献】 特開2002−82611(JP,A)
【文献】 特表2006−522507(JP,A)
【文献】 特開2008−219178(JP,A)
【文献】 特開2009−232012(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/08
G06F 21/60
(57)【特許請求の範囲】
【請求項1】
実行可能命令群で構成される1つ以上のコンピュータシステムによる制御の下で、
コンピューティングリソースサービスプロバイダからアクセス不能な第1情報、及び前記コンピューティングリソースサービスプロバイダの顧客からアクセス不能な第2情報に少なくとも部分的に基づいて、暗号化された第1鍵、及び前記第1鍵で暗号化されたデータを、少なくとも、
1回以上の処理を、前記第2情報を使用して実行する要求であって、前記コンピューティングリソースサービスプロバイダが前記第2情報を、前記コンピューティングリソースサービスプロバイダの他の顧客群に代わって管理される他の情報から選択することができるための情報を含む、前記要求を前記コンピューティングリソースサービスプロバイダに提示することにより取得し、そして
前記第1鍵で暗号化された前記データ、及び暗号化された第1鍵を保持して、前記第1鍵で暗号化された前記データの復号化を許可するためには、前記第1情報及び前記第2情報を使用する必要があるようにする、コンピュータ実装式方法。
【請求項2】
前記第1情報は第2鍵を含み、前記第2情報は第3鍵を含む、請求項1に記載の方法。
【請求項3】
前記第1鍵で暗号化された前記データを、前記第1情報にアクセスできる第2コンピューティングリソースサービスプロバイダに送信すること、そして
前記第2コンピューティングリソースサービスプロバイダから、前記第1鍵で暗号化され、更に前記第1情報を使用して暗号化された前記データを含む第3情報を取得すること、を含み、そして
前記第1鍵で暗号化された前記データ、及び暗号化された第1鍵を保持することは、前記第3情報、及び暗号化された第1鍵を、前記第1情報及び前記第2情報の両方にアクセスできないデータストレージシステムに格納することをさらに含む、請求項1に記載の方法。
【請求項4】
前記コンピューティングリソースサービスプロバイダは前記第1鍵にアクセスできない、請求項1に記載の方法。
【請求項5】
前記第1鍵は、第1鍵要素及び第2鍵要素を含む複数の鍵要素から導出することができ、そして
前記暗号化された第1鍵は、前記第1情報を使用して暗号化される前記第1鍵要素と、前記第2情報を使用して暗号化される前記第2鍵要素と、を含む、請求項1に記載の方法。
【請求項6】
前記第1情報には前記顧客からアクセス可能である、請求項1に記載の方法。
【請求項7】
前記第1鍵で暗号化された前記データを取得することは、第2コンピューティングリソースサービスプロバイダに、1回以上の処理を、前記第1情報を使用して実行させることを含む、請求項1に記載の方法。
【請求項8】
前記第1情報は、前記コンピュータシステムがアクセスできる第2鍵であり、そして
前記第1鍵で暗号化された前記データを取得することは、1回以上の処理を、前記第2鍵を使用して実行することを含む、請求項1に記載の方法。
【請求項9】
前記暗号化された第1鍵、及び前記第1鍵で暗号化されたデータを取得すること、及び前記第1鍵で暗号化された前記データ、及び前記暗号化された第1鍵を永続的に格納することは、格納処理を実行するためにファイルシステムインターフェースに命令を出す結果として実行される、請求項1に記載の方法。
【請求項10】
コンピューティングリソース集合を含むシステムであって、
前記コンピューティングリソース集合は、
複数のエンティティに代わって複数の鍵を管理するように構成される第1サービスを運用し、
データを前記複数の鍵にアクセスすることなく格納するように構成される第2サービスを運用し、そして
前記複数のエンティティの中の1つのエンティティに対応するクライアントコンピューティングデバイスに、実行可能命令群を供給するように集合的に構成され、前記実行可能命令群により、前記クライアントコンピューティングデバイスは少なくとも、
要求を提示して、1回以上の暗号化処理を、前記要求で指定された、前記複数の鍵の中の第1鍵を使用して実行し、
前記要求に応じて、前記1回以上の暗号化処理の実行結果を受信し、
前記結果、及び前記システムからアクセス不能な第2鍵に少なくとも部分的に基づいて、暗号化データを含み、かつ少なくとも前記第1鍵及び前記第2鍵の両方の鍵の使用が、前記データを復号化するために必要になるように構成される情報を生成し、そして
前記生成した情報をストレージデバイスに送信する、前記システム。
【請求項11】
前記暗号化データは第3鍵で暗号化され、そして
前記情報は、前記第1鍵及び前記第2鍵に少なくとも部分的に基づいて暗号化された前記第3鍵を含む、請求項10に記載のシステム。
【請求項12】
前記クライアントコンピューティングデバイスは前記第3鍵にアクセスできる、請求項11に記載のシステム。
【請求項13】
前記第1サービス及び前記第2サービスはそれぞれ、対応するウェブサービスアプリケーションプログラミングインターフェースを供給し、
前記要求を前記第1サービスのウェブサービスインターフェースを介して受信し、そして
前記生成した情報を送信することは、ウェブサービスコールを前記第2サービスのウェブサービスインターフェースに提示することを含む、請求項10に記載のシステム。
【請求項14】
前記システムは前記第2鍵にアクセスできない、請求項10に記載のシステム。
【請求項15】
前記実行可能命令群はスクリプト言語の形式である、請求項10に記載のシステム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2013年6月20日に出願された同時係属中の米国特許出願第13/922,875号に対する優先権を主張するものであり、この米国特許出願の内容が全て、本明細書において参照されることにより本明細書に組み込まれる。
【背景技術】
【0002】
コンピューティングリソース及び関連データのセキュリティは、多くの状況において非常に重要である。一例として、組織は多くの場合、コンピューティングデバイス群が構成するネットワーク群を利用して、一連の堅牢なサービスを、これらの組織のユーザに提供する。ネットワーク群は、複数の地理的領域境界に跨って構築される場合が多く、かつ他のネットワーク群に接続される場合が多い。組織は、例えば組織の運用を、コンピューティングリソース群が構成する内部ネットワーク群、及び他の組織が管理するコンピューティングリソース群の両方を使用して支援する必要がある。組織のコンピュータ群は、例えば他の組織のコンピュータ群と通信して、別の組織のサービスを利用しながらデータにアクセスし、かつ/またはデータを供給することができる。多くの例では、組織はネットワーク群を、他の組織が管理するハードウェアを使用してリモートに構成して運用することにより、インフラストラクチャのコストを低減して他の利点を実現している。コンピューティングリソース群をこのようにして構成する場合、組織が保有するリソース群及びデータへのアクセスがセキュアであることを確実にすることは、特にこのような構成の規模及び複雑さが大きくなるにつれて、困難な解決課題となり得る。
【0003】
多くの例では、種々のエンティティは、他のエンティティが提供するコンピューティングリソースサービス群を活用することが有利であることを見出している。このように活用する際に、多くの場合、データの転送、及びデータの格納が、サードパーティが制御するコンピューティングリソース内で行なわれる。データセキュリティを強化する環境を運用するためにこのようなサードパーティの労力が多大になっているにも拘わらず、正当に評価されているかどうかは別にして、信用が欠如していて、サードパーティが運用するサービス群を利用しようとする意欲が失われている。更に、サードパーティが運用するサービスを利用する組織は、組織が保有するデータのセキュリティを強化して、例えば、データへのアクセスがある悪意のある従業員または他者が起こり得るダメージをあまり起こさないようにしたいと考えるかもしれない。データを種々のエンティティの間で、組織を運営している間に移動させる場合、データのセキュリティを確保するのは普通、面倒であり、複雑であり、大量のリソースを消費する。
【0004】
本開示による種々の実施形態は、これらの図面を参照して説明される。
【図面の簡単な説明】
【0005】
図1】本開示の種々の態様を示す概略図を示している。
図2】種々の実施形態を実施することができる例示的な環境を示している。
図3】少なくとも1つの実施形態による暗号化サービスを実行するために使用することができる環境の例示的な例を示している。
図4】本開示の種々の態様を示す概略図の例示的な例を示している。
図5】少なくとも1つの実施形態によるデータをセキュアに格納する方法の例示的な例を示している。
図6】少なくとも1つの実施形態によるデータをセキュアに格納する方法の例示的な例を示している。
図7】少なくとも1つの実施形態によるデータをセキュアに格納する方法の例示的な例を示している。
図8】少なくとも1つの実施形態によるデータをセキュアに格納する方法の例示的な例を示している。
図9】少なくとも1つの実施形態によるデータを格納するプロセスの例示的な例を示している。
図10】少なくとも1つの実施形態によるデータにアクセスするプロセスの例示的な例を示している。
図11】種々の実施形態を実施することができる環境を示している。
【発明を実施するための形態】
【0006】
以下の説明では、種々の実施形態について説明する。説明のために、特定の構成及び詳細について記載して、これらの実施形態に対する完全な理解が得られるようにしている。しかしながら、この技術分野の当業者であれば、これらの実施形態は、特定の詳細を用いることなく実施することができることも理解できるであろう。更に、公知の特徴は、説明されている実施形態を不明瞭にすることがないように省略されるか、または簡略化されている可能性がある。
【0007】
本明細書において記載され、かつ提案される方法は、データを暗号化して、単一のエンティティがデータに、許可なくアクセスすることが絶対に出来ないようにする方法に関するものである。幾つかの実施形態では、データを暗号化するプロセスでは、複数のエンティティが関与し、そしてごく普通に「keys(鍵)」とも称される複数の暗号化キーを使用する。使用するこれらの鍵には、別のエンティティからではなく、1つの関連エンティティからアクセス可能であり、全種類の鍵が、データの復号化を許可するために必要となる(例えば、データの復号化は、1種類以上の鍵を取得する必要を伴なうことなく、かつ許可なく行なわれる)。このように、鍵が危殆化した場合(例えば、無許可のエンティティが、当該鍵へのアクセスを得た場合)、当該鍵を使用してデータを復号化することができず、データを復号化するためには必ず、他のエンティティが保管する1種類以上の更に別の鍵にアクセスする必要があるようになっている。
【0008】
幾つかの実施形態では、コンピューティングリソースプロバイダの顧客は、コンピューティングリソースサービスプロバイダがアクセスできない顧客鍵にアクセスできる。同様に、コンピューティングリソースサービスプロバイダは、顧客がアクセスできない管理鍵にアクセスできる。しかしながら、顧客は、要求をコンピューティングリソースサービスプロバイダに提示して、コンピューティングリソースプロバイダに指示することにより、暗号化処理を、管理鍵を用いて実行させることができる。これらの要求は、管理鍵を、当該管理鍵に関連する識別子で指定することができる。管理鍵は、顧客(及び、他のエンティティ)が絶対に管理鍵にアクセスできない状態を保ちながら、顧客について専用に管理することができる。種々の実施形態では、データは、顧客鍵及び管理鍵の両方の鍵が、データを復号化するために必要になるように暗号化される。幾つかの実施形態では、複数のコンピューティングリソースサービスプロバイダ(または、普通、複数のサードパーティエンティティ)は、暗号化プロセスにおいて、各サードパーティが専用に保持する鍵が、データの復号化を許可するために必要となるように利用される。
【0009】
種々の実施形態では、コンピュータ可読記憶媒体は実行可能命令群を格納し、実行可能命令群が顧客コンピュータシステムの1つ以上のプロセッサで実行されると、実行可能命令群により、コンピュータシステムは、データフローを調整して当該データを、複数の鍵を使用して暗号化するようになる。コンピューティングリソースプロバイダが、種々のプログラミングモジュールを含むダウンロード可能なクライアントライブラリの一部のような実行可能命令群を供給することにより、コンピューティングリソースサービスプロバイダが提供するサービス群を利用することができる。別の例として、実行可能命令群は、JavaScript(登録商標)の形式で、または別の解釈言語、及び/またはスクリプト言語の形式で表現することができる。複数の顧客は、実行可能命令群を利用して、暗号化プロセス及び/または復号化プロセスに関与する鍵を有する種々のエンティティの間のデータフローを調整して、これらの顧客のデータセキュリティを、1つのエンティティにおける危殆化では無許可データアクセスを行なうためには不十分であるようにすることにより強化することができる。
【0010】
以下に更に詳細に説明するように、幾つかの実施形態では、システムは、1つ以上のプロセッサと、コンピュータメモリと、を含む1つ以上のコンピュータシステムを備え、当該メモリは命令群を含み、命令群が1つ以上のプロセッサで実行されると、命令群により、当該システムは種々の処理を実行するようになる。これらの処理には、(コンピューティングリソースサービスプロバイダの顧客のコンピューティングデバイスのような)クライアントから要求を受信して暗号化処理を、要求に指定される第1鍵を使用して実行することを挙げることができる。当該システムは、命令群に従って、当該要求に応じて、1つ以上のコンピュータシステムを運用するサービスプロバイダが制御する少なくとも1つの鍵を使用して暗号化された暗号化鍵を送信することができる。当該システムは更に、命令群に従って、暗号化鍵を使用して暗号化されたデータを受信することができ、暗号化鍵を使用して暗号化されたデータは更に、クライアント鍵で暗号化される。暗号化鍵を使用して暗号化されたデータを受信すると、当該システムは、命令群に従って、暗号化データに関連して1回以上の処理を、例えば暗号化データを1つ以上のデータストレージデバイスに永続的に格納することにより実行することができる。
【0011】
図1は、本開示の種々の態様を示す概略図である。図1に示すように、本明細書において記載され、かつ提案される種々の方法は、暗号化データに適用することができる。具体的には、当該データは、本明細書において記載される種々の方法に従って暗号化することができるので、複数の鍵が、データを復号化するために必要になる。複数の鍵は、異なるエンティティによって保持することができるので、いずれの特定のエンティティも当該データを、当該エンティティがアクセスできるいずれの鍵を用いても復号化することができない。以下に更に詳細に説明するように、データを復号化するために必要な複数の鍵は、個別の鍵群とすることができる、かつ/または同じ鍵から生成される鍵群とすることができる。
【0012】
図2は、本開示の種々の実施形態を実施することができる環境200の例示的な例を示している。環境200では、コンピューティングリソースサービスプロバイダ202は、多種多様なサービスを顧客204に提供することができる。顧客204は、組織であって、コンピューティングリソースサービスプロバイダ202が提供する種々のサービスを利用して、情報を保持することにより、当該組織の従業員に配信することができる、組織とすることができ、これらの従業員は、種々の地理的場所に位置することができる。更に、顧客204は、種々のサービスを利用してコンテンツを遠く離れた場所の作業グループに配信することができる個人とすることができる。図2に示すように、顧客204は、コンピューティングリソースサービスプロバイダ202と、インターネットのような1つ以上の通信ネットワーク206を介して通信することができる。顧客204からコンピューティングリソースサービスプロバイダ202への各種の通信を行なうと、コンピューティングリソースサービスプロバイダ202は、本明細書において記載される種々の方法、またはこれらの方法の変形例に従って動作するようになる。
【0013】
上に説明したように、コンピューティングリソースサービスプロバイダ202は、種々のコンピューティングリソースサービスを、当該プロバイダの顧客群に提供することができる。コンピューティングリソースサービスプロバイダが提供するこれらのサービスは、この例では、仮想コンピュータシステムサービス208と、ブロックレベルデータストレージサービス210と、暗号化サービス212(鍵管理サービスとも称される)と、オンデマンドデータストレージサービス214と、1種類以上の他のサービス216と、を含むが、本開示の全ての実施形態が、このようなサービス群を全て含んでいる訳ではなく、更なるサービスを、本明細書において明示的に記載されるサービス群の他に、またはサービス群に代わって提供することができる。これらのサービスの各サービスは、1つ以上のウェブサービスインターフェースを含むことができ、これらのウェブサービスインターフェースにより顧客204は、適切に設定されるAPIコールを種々のサービスに対して、ウェブサービス要求を通じて行なうことができる。更に、これらのサービスの各サービスは、1つ以上のサービスインターフェースを含むことができ、これらのサービスインターフェースにより、これらのサービスが互いにアクセスすることができる(例えば、仮想コンピュータシステムサービス208の仮想コンピュータシステムは、データをオンデマンドデータストレージサービスに格納するか、またはオンデマンドデータストレージサービスから取り出すことができ、かつ/またはブロックデータストレージサービスが提供する1つ以上のブロックレベルデータストレージデバイスにアクセスすることができる)。
【0014】
仮想コンピュータシステムサービス208は、仮想マシンインスタンスを、仮想コンピューティングシステム上に、コンピューティングリソースサービスプロバイダ202の顧客群204に代わってインスタンス化するように構成されるコンピューティングリソース集合とすることができる。コンピューティングリソースサービスプロバイダ202の顧客群204は、(適切に設定され、かつ認証されたAPIコールを通じて)仮想コンピュータシステムのサービスと対話して、仮想コンピュータシステム群をプロビジョニングして動作させることができ、これらの仮想コンピュータシステムは、コンピューティングリソースサービスプロバイダ202がホストして動作を行なわせる物理的コンピューティングデバイス群上でインスタンス化される。これらの仮想コンピュータシステムは、種々の目的に使用することができ、例えばウェブサイトをサポートするサーバとして動作する、ビジネスアプリケーションを動作させる、または普通、顧客のコンピューティングパワーとして機能することなどの目的である。これらの仮想コンピュータシステムの他の用途は、データベースの用途、電子商取引の用途、ビジネスの用途、及び/または他の用途をサポートするためのものである場合がある。
【0015】
ブロックレベルデータストレージサービス210は、顧客204に関するデータを、ブロックレベルストレージデバイス群(及び/またはその仮想化デバイス)を使用して格納するように集合的に動作するコンピューティングリソース集合を含むことができる。ブロックレベルデータストレージサービス210のブロックレベルストレージデバイス群は、例えば仮想コンピュータシステムサービス208が提供する仮想コンピュータシステム群に動作可能に接続されることにより、これらのコンピュータシステムの論理ユニット群(例えば、仮想ドライブ群)として機能することができる。ブロックレベルストレージデバイスにより、対応する仮想コンピュータシステムが使用する、かつ/または生成するデータを永続的に格納することができ、この場合、仮想コンピュータシステムサービス208は、ほんの一時的にデータストレージとなることができる。
【0016】
図2に示すように、コンピューティングリソースサービスプロバイダ202は、図3に関連して以下に更に詳細に説明される暗号化サービスを実施することができる。一般的に、暗号化サービスは、コンピューティングリソース集合とすることができ、これらのコンピューティングリソースは、コンピューティングリソースサービスプロバイダの顧客群の暗号化鍵を管理して使用するように集合的に構成される。暗号化サービス212が使用する鍵群は、これらの顧客が、要求を提示して(暗号化、復号化、及びメッセージ署名のような)暗号化処理及び/または鍵更新のような他の処理を実行する場合に参照することができる関連識別子を有することができる。暗号化サービスは、これらの暗号化鍵をセキュアに保持して、無許可の関係者によるアクセスを防止することができる。
【0017】
コンピューティングリソースサービスプロバイダ202は更に、オンデマンドデータストレージサービスを含むことができる。オンデマンドデータストレージサービス214は、データを格納する及び/またはデータにアクセスする複数要求を同時に処理するように構成されるコンピューティングリソース集合とすることができる。オンデマンドデータストレージサービス208は、コンピューティングリソース群(例えば、データベース群)を使用して実施することができ、これらのコンピューティングリソースにより、オンデマンドデータストレージサービス208は、データの位置を特定してデータを迅速に取り出すことができるので、データを当該データに関する要求に応じて供給することができる。例えば、オンデマンドデータストレージサービスは、格納データを保持して、データオブジェクトに関する要求が取り出されると、当該データオブジェクトを当該要求に応じて供給することができる(または、データオブジェクトを流し始めることができる)。説明したように、オンデマンドデータストレージサービス214に格納されるデータは、体系化することによりデータオブジェクト群とすることができる。これらのデータオブジェクトは、場合によっては、サイズに対するある特定の制約を除き、任意のサイズを有することができる。従って、オンデマンドデータストレージサービス214は、種々のサイズの非常に多くのデータオブジェクトを格納することができる。オンデマンドデータストレージサービス214は、キーバリューストアとして実施することができ、このキーバリューストアはデータオブジェクト群を、これらのデータオブジェクトの識別子に関連付けることができ、これらの識別子を顧客204が使用して、オンデマンドデータストレージサービス210に格納されるデータオブジェクト群に関連する他の処理を取り出すか、または実行することができる。オンデマンドデータストレージサービス214には、暗号化サービス212からアクセス可能とすることもできる。例えば、幾つかの実施形態では、暗号化サービスは、オンデマンドデータストレージサービスを利用して、これらの顧客の鍵を暗号化方式で格納することができ、この場合、これらの顧客鍵を復号化するために使用することができる鍵群には、暗号化サービス212の特定のデバイス群からのみアクセス可能とすることができる。データストレージサービスに対する顧客、別のサービス、または他のエンティティからのアクセスは、適切に設定されるAPIコールを通じて行なうことができる。
【0018】
コンピューティングリソースサービスプロバイダ202は更に、1種類以上の他のサービス216を、当該プロバイダの顧客群204の要求に応じて保持することができる。例えば、コンピューティングリソースサービスプロバイダ202は、データベースサービスを、当該プロバイダの顧客群204のために保持することができる。データベースサービスは、コンピューティングリソース集合とすることができ、これらのコンピューティングリソースを集合的に動作させて、1種類以上のデータベースを一人以上の顧客204のために実行することができる。コンピューティングリソースサービスプロバイダ202の顧客群204は、データベースサービスのデータベースを、適切に設定されるAPIコールを利用することにより運用して管理することができる。これにより今度は、顧客204は、これらの処理をデータベース内に保持して、おそらくはこれらの処理をスケーリングすることを可能にすることができる。他のサービスとして、限定されないが、オブジェクトレベルアーカイブデータストレージサービス、他のサービス群を管理する、かつ/または監視するサービス、及び/または他のサービスを挙げることができる。
【0019】
上に論じたように、本開示の種々の実施形態は、暗号化サービスを提供することに関するものである。暗号化サービスは、上に説明したような暗号化サービスシステムにより提供することができる。従って、図3は、種々の実施形態による暗号化サービス300の例示的な例を示している。図3に示すように、かつ上に論じたように、暗号化サービス300は、フロントエンドシステム及びバックエンドシステムから論理的に構成される。フロントエンドシステム及びバックエンドシステムは共に、本明細書において記載される処理を実行するように構成される1つ以上のコンピュータシステムにより実現することができる。例えば、図3に示すように、暗号化サービス300のフロントエンドシステムは、要求API306及びポリシー設定API308を実装する。要求APIは1つの実施形態では、暗号化処理及び他の処理を要求して暗号化サービスで実行するように設定されるAPIである。従って、要求をフロントエンドシステムに対して、要求APIを介して行なうことにより、このような暗号化処理を暗号化サービスで実行することができる。
【0020】
要求APIは、処理可能な以下の例示的な上位要求により設定することができる:
CreateKey(KeyID)
Encrypt(KeyID,Data,[AAD])
Decrypt(KeyID,Ciphertext,[AAD])
Shred(KeyID)
ReKey(Ciphertext,OldKeyID,NewKeyID)
【0021】
CreateKey(KeyID)要求により、1つの実施形態では、暗号化サービスは、要求の中に特定されるKeyIDで特定される鍵を生成するようになる。要求を受信すると、暗号化サービスは、鍵を作成して当該鍵をKeyIDに関連付けることができる。KeyID群は、必ずではないが、独自の識別子とすることができることは周知のことであるはずである。例えば、KeyIDは、ある一群の鍵を特定することができる。例えば、幾つかの実施形態では、鍵交代が行なわれる。鍵交代では、使用する暗号を実際に解読するために十分な数の復号化データが収集されるのを防止するように鍵群を他の鍵群と取り替えることを含み得る。暗号化サービスとは異なるエンティティからの指示で実行される場合、CreateKey(KeyID)要求を使用して、暗号化サービスが新規の鍵を生成して、KeyIDで特定される古い鍵と取り替えることができる。古い鍵は、KeyIDで特定される状態を保つことができるが、例えば復号化(古い鍵を使用して既に暗号化されているデータの復号化)にしか使用することができず、その後の暗号化には使用することができない。別の例として、幾つかの実施形態では、暗号化サービスのユーザ群は、これらのユーザ固有の鍵識別子を与えることができるので、2人の異なる顧客が同じ識別子を与える可能性がある。このような例では、当該識別子で、鍵を一意的に特定することができない可能性がある、またはある一群の鍵を一意的に特定することができない可能性さえある。種々の対策を実施して、これを解決することができる。例えば、暗号化サービスのユーザに関連する識別情報または他の情報を使用して、正当な鍵または一群の鍵を特定することができる。更に他の実施形態では、暗号化サービスは、KeyIDをランダムに割り当てる、順番に割り当てることができる、またはいずれか他の方法を用いて割り当てることができる。
【0022】
KeyIDが鍵を一意的に特定しない場合、種々のシステムを実施して、正しい機能を実行できることに留意されたい。例えば、種々の実施形態では、KeyIDで特定されるある一群の鍵は有限である。KeyIDで特定される鍵を使用した復号化処理が要求される場合、更なるデータ(例えば、暗号化が行なわれた時刻を示すタイムスタンプ)により、使用すべき正しい鍵を確認することができる。幾つかの実施形態では、暗号文は、鍵バージョンを示す情報を含むことができる。幾つかの実施形態では、可能な全通りの鍵を使用して、異なるデータ復号化を行なう。限られた数の鍵しかないので、正しい復号化は、与えられるこれらの鍵から選択することができる。幾つかの実施形態では、鍵を用いた復号化は、暗号化サービスで、暗号文が、当該鍵に少なくとも部分的に基づいて作成されなかったことを、例えば認証暗号化を使用することにより検出することができるように行なわれる。他の変形例も、本開示の範囲に含まれると考えられる。
【0023】
Encrypt(KeyID,Data,[AAD])要求を使用して、暗号化サービスで、指定データを、KeyIDで特定される鍵を使用して暗号化することができる。追加認証データ(AAD)は、種々の目的に使用することができ、必ずしも暗号化される訳ではないが、例えば電子署名、メッセージ認証コード、または普通、AADに含まれる鍵ハッシュ値で認証されるデータとすることができる。幾つかの実施形態では、AADの少なくとも一部を含む暗号文が作成される。幾つかの他の実施形態では、AADは、復号化中に個別に供給される。幾つかの他の実施形態では、AADは、復号化時に、要求及び/または他のメタデータに少なくとも部分的に基づいて作成されて、復号化が、メタデータがパスするときにのみ無事に行なわれるようになる。幾つかの実施形態では、ポリシーは、暗号化処理を特定のAADに対して実行することができるかどうかについて制限することができる。Encrypt(KeyID,Data,[AAD])要求の処理では、暗号化サービスによって強制されるプログラミングロジック及び/またはポリシーにより、AADが特定の値を含むとともに、AADが真正である(例えば、最初の送信が行なわれて以降は、変更されていない)ことが必要となる。同様に、Decrypt(KeyID,Ciphertext,[AAD])要求を使用して、暗号化サービスで、指定暗号文を、KeyIDで特定される鍵を使用して復号化することができる。Decrypt(KeyID,Ciphertext,[AAD])要求に含まれるAADは、上に説明した通りに使用することができる。例えば、Decrypt(KeyID,Ciphertext,[AAD])の処理では、暗号化サービスによって強制されるプログラミングロジック及び/またはポリシーにより、AADが特定の値を含むとともに、AADが真正である(例えば、最初の送信が行なわれて以降は、変更されていない)ことが必要となり得る。
【0024】
1つの実施形態では、Shred(KeyID)を使用して、暗号化サービスで、指定KeyIDで特定される鍵またはある1群の鍵を電子的に破棄することができる。電子的に破棄することは、当該鍵にアクセスできなくすることを含むことができる。例えば、Shred(KeyID)要求を使用して、暗号化システムが、1つ以上のハードウェアデバイスに命令して、SecureErase(セキュア消去)処理を、指定KeyIDで特定される1種類以上の鍵に対して実行させることができる。一般的に、KeyIDで特定される鍵(群)は、いずれかの適切な方法で、例えばデータに上書きして当該鍵を他のデータ(例えば、一連の0または1、或いはランダム符号列)で符号化することにより、かつ/または当該鍵の格納先の揮発性メモリの電源を落とすことにより、電子的に破棄することができる。鍵(群)が、1つの鍵で暗号化されて格納される場合、これらの鍵を暗号化するために使用される当該鍵は、電子的に破棄することができ、それにより、鍵(群)へのアクセス不能化を行なうことができる。幾つかの実施形態では、破棄処理により、破棄されたKeyIDを示す復号化処理が、その後の所定の或る時点で故障し得る。鍵(群)への起こり得る全てのアクセスを確実に、かつ永続的に阻止する他の方法を用いてもよい。
【0025】
1つの実施形態では、ReKey(Ciphertext,OldKeyID,NewKeyID)要求を使用して、暗号化サービスで、暗号文を異なる鍵で暗号化することができる。暗号化サービスで、ReKey(Ciphertext,OldKeyID,NewKeyID)要求を受信する場合、当該暗号化サービスで、OldKeyIDで特定される鍵を使用して、指定暗号文を復号化し、次にNewKeyIDで特定される鍵を使用して、復号化した暗号文を暗号化することができる。NewKeyIDで特定される鍵が未だ存在しない場合、暗号化サービスで、使用すべき鍵を作成して、当該作成鍵を、上に説明したCreate(KeyID)要求に関連して説明したようにして、指定NewKeyIDに関連付けることができる。幾つかの実施形態では、ReKey処理は、データを暗号化サービスの分離インスタンス群の間で転送することができるように機能させることができる。幾つかの実施形態では、ポリシーにより、rekey処理を、暗号文に対して実行することができるが、同じ要求者が、暗号文を直接復号化することはできないかもしれない。幾つかの実施形態では、ReKeyは、暗号文の鍵を、第1アカウントに第1KeyIDで特定される鍵から、第2アカウントにKeyIDで特定される鍵に変更する処理をサポートすることができる。
【0026】
同様に、フロントエンドシステムは、ポリシー設定APIを実装することができ、このポリシー設定APIにより、1つの実施形態では、ユーザ群は、ポリシー群を設定して、暗号化処理及び他のポリシー関連処理を実行する要求を提示することができる。種々の実施形態では、ポリシー群は、鍵群、鍵グループ群、アカウント群、ユーザ群、及び他の論理エンティティ群に関連付けることができる。ポリシー設定APIを介して設定することができる例示的なポリシー群が以下に提供される。1つの実施形態では、暗号化サービスポリシー設定APIは、以下の要求を含む:
SetKeyPolicy(KeyID,Policy)
Suspend(KeyID,Public Key)
Reinstate(KeyID,Private Key)
【0027】
1つの実施形態では、SetKeyPolicy(KeyID,Policy)要求を使用して、暗号化サービスで、ポリシーを、KeyIDで特定される鍵(または、ある1群の鍵)に格納することができる。ポリシーは、要求される暗号化処理を特定の状況において実行することができるかどうかを決定する情報とすることができる。当該ポリシーは、eXtensinble Access Control Markup Language(XACML)、Enterprise Privacy Authorization Language(EPAL)、Amazon Web Services Access Policy Language、Microsoft SecPolのような宣言型アクセス制御ポリシー言語で符号化するか、または暗号化処理が実行されるために満たされる必要がある1つ以上の条件を符号化するいずれかの適切な方法で符号化することができる。ポリシー群は、いずれの処理を実行することができるか、いつ処理を実行することができるか、いずれのエンティティが、実行される処理に対する要求の許可を行なうことができるか、いずれの情報が、許可される特定の要求について必要とされるかなどについて規定することができる。更に、上に与えられるこれらの例の他に、またはこれらの例の代わりに、ポリシー群は、アクセス制御リスト、ユーザ群に関する優先権、及び/または演算用ビットマスクを使用して規定される、かつ/または強制されることができる。例示的なポリシー群を以下に示す。
【0028】
幾つかの実施形態では、暗号化サービスは、中止処理を、例えばSuspend(KeyID,Public Key)APIコールを用いてサポートすることができる。中止処理により、暗号化サービスの顧客は、運用者が暗号化サービスで鍵を使用するのを拒否する、または運用者が暗号化サービスで鍵にアクセスするのを拒否することができる。これは、秘密裏の正当な命令に懸念を持つ顧客にとって、または暗号化サービスの運用者が所定の処理を、鍵を使用して実行せざるを得ないような他の状況に懸念を持つ顧客にとって有用となり得る。これはまた、特定のデータをロックして、当該データにオンラインではアクセス不能にしたい顧客にとって有用となり得る。幾つかの実施形態では、中止処理では、公開鍵を顧客から受け取って、所定のKeyIDで特定される鍵を、受け取った公開鍵で暗号化して、KeyIDで指定される鍵を破棄することにより、プロバイダは中止された鍵に、公開鍵に関連する秘密鍵が、例えばKeyIDを指定するとともに秘密鍵を含むReinstate(KeyID,Private Key)APIコールを用いて提供されない限りアクセスできなくなる。幾つかの他の実施形態では、中止処理では、指定KeyIDに関連する鍵を、暗号化サービスが管理し、かつ限定されないが、瞬時に中止処理するために生成される鍵を含む別の鍵を使用して暗号化することを含むかもしれない。この処理で作成される暗号文は、顧客に供給することができ、暗号化サービス内に保持することはできない。次に、KeyIDで特定される元の鍵を破棄することができる。暗号化サービスは、供給される暗号文を受信して、中止された鍵を再び取り込むように機能することができる。幾つかの実施形態では、暗号文は、暗号化サービスから、復号化された暗号文が顧客に返送されるのを防止するように作成することができる。
【0029】
図3に示すように、暗号化サービス300はバックエンドシステム302を含み、このバックエンドシステム302自体が、幾つかの実施形態では、種々のコンポーネントを備える。例えば、バックエンドシステム302は、この例では、要求処理システム(要求処理ユニットまたは要求処理コンポーネントとも称される)304を含み、この要求処理システム304は、暗号化サービス300のサブシステムとすることができ、このサブシステムは、処理を、要求API306またはポリシー設定API308のいずれかを介して受信する要求に応じて実行するように構成される。例えば、要求処理コンポーネントは、要求APIを介して受信する要求を受信することができ、ポリシー設定APIは、このような要求が真正であり、従って要求を満たすことができるかどうかを判断して、これらの要求を満たすことができる。要求を満たすことは、例えば暗号化処理を実行すること、及び/または実行してしまっていることを含む。要求処理ユニットは、認証インターフェース310と対話するように構成することができ、この認証インターフェース310により、要求処理ユニットは要求が真正であるかどうかを判断することができる。認証インターフェースは、認証システムと対話するように構成することができ、この認証システムは、コンピューティングリソースサービスプロバイダの複数のサービスが利用する認証システムとすることができる。例えば、要求を要求処理ユニットが受信すると、要求処理ユニットは、認証インターフェースを利用して認証サービスと対話することができ、この認証サービスは、該当する場合には、認証証明を付与することができ、この認証証明を使用して暗号化処理を実行することができる。要求処理システム304は更に、コンピューティングリソースサービスプロバイダの他のサービス群と対話することができるインターフェースを備えるように構成することができる。例えば、顧客鍵が、暗号化方式でデータストレージサービスに格納される実施形態では、要求処理システム304は、APIコールをデータストレージサービスに提出して顧客鍵を必要に応じて取得することができる。暗号化サービスでは更に、顧客鍵を暗号化方式でローカルデータストレージシステムに格納する、または暗号化方式または非暗号化方式で、以下に説明する1つ以上のセキュリティモジュール312に格納することができる。
【0030】
暗号化サービス300のバックエンドシステムは、この例示的な例では、複数のセキュリティモジュール群312(暗号化モジュール群)と、ポリシー強制モジュール314と、調整モジュール316と、を含む。調整モジュールは、これらのセキュリティモジュール312を調整するように構成されるシステムとすることができる。例えば、幾つかの実施形態では、調整モジュールは、暗号化ドメイン(簡単に「domain(ドメイン)」とも称される)の構成要素として特定されるセキュリティモジュール群312が確実に、当該ドメインに一致する処理パラメータ群に従って動作するように構成される。一例として、各セキュリティモジュールは、当該ドメインに対応するドメイン鍵にアクセスすることができる。顧客鍵は、ドメイン鍵で暗号化することができ、これらのセキュリティモジュールの外部に格納する(例えば、バックエンドシステムに格納する及び/またはデータストレージサービスを使用して格納する)ことができるので、これらのセキュリティモジュール312は、セキュリティモジュール群が使用し得る全ての顧客鍵を格納する必要を伴なうことなく動作することができる。簡単に言うと、顧客が、暗号化処理をKeyIDで特定される鍵を使用して実行するように要求する場合、KeyIDで特定される暗号化顧客鍵をセキュリティモジュールに供給することができ、このセキュリティモジュールがドメイン鍵を使用して、顧客鍵を復号化し、そして復号化顧客鍵を使用して、要求された処理を、復号化顧客鍵を使用して実行することができる。
【0031】
別の例として、調整モジュール316は、セキュリティモジュール群312がそれぞれ確実に、一連の共通ルールを承認前に(例えば、再設定前に)更新後の一連の処理パラメータに強制するように構成することができる。例えば、各セキュリティモジュールは、処理パラメータ群に対するある特定の変更を許可するために十分な1つ以上の演算子集合を規定する定足数ルール(quorum rule)を強制することができ、これらの変更として、例えばドメイン鍵に対する変更(例えば、ドメイン鍵を交代させるための変更)、ドメインを含む一連のセキュリティモジュールの構成要素に対する変更、ドメインのための演算子集合に対する変更(例えば、ドメインに変更を加えることに関わることを許可された変更)などを挙げることができる。
【0032】
図3に記載される実施形態では、セキュリティモジュール群のうちの1つ以上のセキュリティモジュールはハードウェアセキュリティモジュール群とすることができるが、種々の実施形態では、セキュリティモジュールは、本明細書において記載される機能を有するように構成される任意の適切なコンピュータデバイスとすることができる。各セキュリティモジュールは、1つの実施形態では、KeyID群に関連する複数の鍵を格納する、かつ/またはKeyID群に関連する外部格納鍵群が暗号化される際に使用される鍵群を格納するかのいずれかである。各セキュリティモジュールは、これらの鍵をセキュアに格納して、暗号化サービス300の他のコンポーネント群、及び/または他のシステムの他のコンポーネント群からアクセス不能にするように構成することができる。例えば、セキュリティモジュール群が上に説明したようなドメイン鍵群を格納する幾つかの実施形態では、1つのドメインのセキュリティモジュール群だけが、対応するドメイン鍵を格納することができる。全ての他のエンティティは、ドメイン鍵にアクセスできない。
【0033】
種々の実施形態では、セキュリティモジュール群のうちの幾つかのセキュリティモジュールまたは全てのセキュリティモジュールは、少なくとも1つのセキュリティ規則を遵守する。例えば、幾つかの実施形態では、セキュリティモジュール群はそれぞれ、FIPS刊行物140−2に概説されている1種類以上のセキュリティレベルのような、FIPS(米国連邦情報処理規格)刊行物140−1及び/または140−2に概説されているFederal Information Processing Standard(FIPS:米国連邦情報処理規格)に準拠していることが証明されている。更に、幾つかの実施形態では、各セキュリティモジュールは、Crytographic Module Validation Program(CMVP:暗号モジュール認証プログラム)で認証されている。上に説明したように、セキュリティモジュールは、ハードウェアセキュリティモジュール(HSM)として、またはHSMの幾つかの機能または全ての機能を有する別のセキュリティモジュールとして実装することができる。幾つかの実施形態では、認証されたモジュールを使用してブートストラップ処理を行なう。幾つかの実施形態では、顧客群は、認証されたモジュール群に格納され、かつ認証されたモジュール群によってのみ処理される幾つかの鍵、及びソフトウェアで処理される他の鍵を設定することができる。幾つかの実施形態では、これらの種々の選択肢に関連する性能またはコストは異なり得る。
【0034】
セキュリティモジュール群は、暗号化処理を、要求処理ユニット304から供給される命令群に従って実行するように構成することができる。例えば、要求処理ユニットは、暗号文及びKeyIDを適切なセキュリティモジュールに、当該セキュリティモジュールに対する命令群を添付して供給することにより、KeyIDに関連する鍵を使用させて暗号文を復号化させ、それに応じて平文を生成させることができる。顧客鍵がセキュリティモジュール群の外部に格納される実施形態では、要求処理ユニット304は、KeyIDで特定される暗号化鍵にアクセスする(例えば、ローカルストレージシステムまたは外部暗号化サービスから)ことができ、当該暗号化鍵をセキュリティモジュールに供給することができ、このセキュリティモジュールが次に、当該鍵を復号化し、次に当該鍵を使用することができる。
【0035】
1つの実施形態では、暗号化サービス300のバックエンドシステムは、鍵空間を形成する複数の鍵をセキュアに格納する。セキュリティモジュール群の各セキュリティモジュールは、全ての鍵を鍵空間に格納することができる。しかしながら、種々変形例が、本開示の範囲内で想到される。例えば、セキュリティモジュール群の各セキュリティモジュールは、鍵空間の部分空間を保持することができる。セキュリティモジュール群が保持する鍵空間の部分空間群は、これらの鍵が、セキュリティモジュール群全体に亘って余分に格納されるように重複させることができる。幾つかの実施形態では、ある特定の鍵は、指定された地理的な地域にのみ格納することができる。幾つかの実施形態では、ある特定の鍵には、特定の認証レベルまたは認可レベルを有する運用者からのみアクセス可能にすることができる。幾つかの実施形態では、ある特定の鍵は、特定のサードパーティプロバイダがデータストレージサービスのプロバイダとの契約に従って運用するモジュールに格納することができ、かつ当該モジュールにのみ使用することができる。幾つかの実施形態では、セキュリティモジュール群を積極的に制御するためには、顧客が許可して更に別のエンティティを強制的に参加させるか、または更に別の管轄区域を介入させて行動を強制するのではなく、正当な命令で、鍵の使用を強制しようと努める必要がある。幾つかの実施形態では、顧客には、顧客の暗号文が格納されて顧客の鍵が格納される管轄区域に関する個別の選択肢が提供される。幾つかの実施形態では、鍵を格納するセキュリティモジュール群は、監視情報をこれらの鍵の所有者に提供するように構成することができ、セキュリティモジュール群は、作成され、かつ提供されるこのような監視情報が顧客によってもみ消されることがないように構成することができる。幾つかの実施形態では、セキュリティモジュール群は、顧客が作成する署名を独自に証明して、(例えば、セキュリティモジュール群をホストする)プロバイダが、処理をセキュリティモジュール群に格納される鍵を利用して実行することができないように構成することができる。更に、幾つかのセキュリティモジュールは、鍵空間の全てを保持することができ、幾つかのセキュリティモジュールは、鍵空間の部分空間群を保持することができる。他の変形例も、本開示の範囲内で想到される。異なるセキュリティモジュールが、鍵空間の異なる部分空間を保持する例では、要求処理ユニットは、例えば関連付けテーブルまたは他の機構を用いて、いずれのセキュリティモジュールに指示して、暗号化処理を種々の要求に応じて実行させるかを判断するように構成することができる。
【0036】
1つの実施形態では、ポリシー強制モジュール314は、情報を要求処理ユニットから取得して、当該情報に少なくとも部分的に基づいて、APIを介して受信する要求を実行することができるかどうかを判断するように構成される。例えば、暗号化処理を実行する要求が要求APIを介して受信される場合、要求処理ユニットは、ポリシー強制モジュールと対話して、要求を満たす処理が、要求内に指定されたKeyIDに適用可能なポリシーのようないずれかの適用可能なポリシー、及び/または要求者に関連するポリシーのような他のポリシーに従って許可されるかどうかを判断することができる。ポリシー強制モジュールが、要求を満たす処理を許可する場合、要求処理ユニットは、それに応じて、適切なセキュリティモジュールに指示して暗号化処理を、要求を満たすように実行させることができる。
【0037】
本明細書において説明される全ての図と同じように、非常に多くの変形例が、本開示の範囲内で想到される。例えば、図3は、セキュリティモジュール群とは別体のポリシー強制モジュールを示している。しかしながら、各セキュリティモジュールは、別体として図示されるポリシー強制モジュールの他に、またはポリシー強制モジュールの代わりに、1つのポリシー強制モジュールを含むことができる。従って、各セキュリティモジュールは、ポリシーを強制するように独自に構成することができる。更に、別の例として、各セキュリティモジュールは、別体のポリシー強制モジュールが強制するポリシー群とは異なるポリシー群を強制する1つのポリシー強制モジュールを含むことができる。非常に多くの変形例が、本開示の範囲内で想到される。
【0038】
図3に示すように、暗号化サービス300はログ記録モジュール318を含むことができる。ログ記録モジュールは、種々の動作を、暗号化サービスの種々の処理を追跡する処理に関連して実行するように構成されるシステムとすることができる。例えば、要求API306に提示される要求は、ログ記録モジュール318によって他のデータに関連付けて記録することができ、他のデータとして、例えば要求のたびに、要求が顧客に代わり偽装して提示された当該顧客の識別子、要求を送信した顧客(例えば、従業員または契約者)に関連する識別情報、要求の種類(例えば、幾つかのAPIコール種別のうちのいずれのコール種別が使用されたか)、要求が承認されたかどうかに関する情報、要求が満たされたかどうかに関する情報、要求が承認されなかった全ての理由(該当する場合)に関する情報、要求を満たすために使用される鍵の識別子などを挙げることができる。ログ記録モジュールは更に、KeyID群で特定される鍵のカウンタを維持するように構成することができる。1回以上の処理が鍵を使用して実行されたことを示す情報をログ記録モジュールが受信すると、ログ記録モジュールは、鍵のカウンタをそれに応じて更新することができる。カウンタは、暗号化鍵の破損に影響する種類の処理に対応して更新することができる。例えば、暗号化処理により、カウンタが大きくなるのに対し、復号化処理によって大きくなることがない。幾つかの実施形態では、カウンタは、ログ記録モジュールによって維持されないが、カウンタは、ログに、ログ記録モジュールからアクセスして、実行された処理の回数を計算することにより更新されることになることに注目されたい。
【0039】
図4は、本開示の種々の態様を示す概略図を示している。図4に示すように、サービスプロバイダ402は、種々のサービスをサービスプロバイダの顧客群404に提供する。図4に示すように、サービスプロバイダ402は、顧客404がアクセスできない管理鍵406にアクセスできる。同様に、顧客404は、サービスプロバイダ402がアクセスできない顧客鍵408にアクセスできる。本明細書において記載される鍵、または普通、全ての鍵は、1種類以上の暗号鍵に使用することができるように構成されるデータとすることができる。データは、顧客404とサービスプロバイダ402との間で、顧客404が、サービスプロバイダ402が提供するこれらのサービスを利用することに関連して送信することができる。サービスプロバイダ402と顧客404との間で授受されるデータは、受信側ではなく送信側がアクセスできる鍵を使用して暗号化することができる。例えば、図4に示すように、データ410は、サービスプロバイダ402が管理鍵406で暗号化して、暗号化形式で顧客404に送信される。同様に、以下に更に詳細に説明されるデータ412は、データ410に関連付けることができ、顧客鍵408を使用して暗号化されて、暗号化形式でサービスプロバイダ402に送信される。このようにして、顧客404はデータ410を、管理鍵406にアクセスできない結果として復号化することができない。同様に、サービスプロバイダ402は、顧客鍵408を使用して暗号化されているデータ412を、サービスプロバイダ402が顧客鍵408にアクセスできない結果として復号化することができない。
【0040】
図4に示すように、環境400は、アクセス障壁を、顧客ネットワークとプロバイダネットワークとの間に含む。アクセス障壁は、顧客ネットワークとプロバイダネットワークとの間の論理的障壁及び/または物理的障壁とすることができ、一方のネットワークのデータに、他方のネットワーク内のデバイス群から自由にアクセス可能にはならないようになっている。例えば、顧客ネットワーク及びプロバイダネットワークは、公衆通信ネットワークによって分離することができる。顧客ネットワーク及びプロバイダネットワークはそれぞれ、1つ以上のファイアウォール、ポリシー管理システム、アクセス制御機構、及び/または他のアクセス制御機構を用いることにより、アクセスを制限することができる。アクセス障壁は、顧客404とプロバイダ402との間の全てのデータアクセスを制限する必要はないが、他のアクセスを制限しながら一部のアクセスを自由に許可することができることに注目されたい。例えば、サービスプロバイダは、公にアクセス可能なウェブサービスインターフェースを利用することができる。しかしながら、サービスプロバイダ402は、プロバイダネットワークを、管理鍵406に顧客404からアクセス可能にならないように構成することができる。同様に、顧客404は、顧客ネットワークを、顧客鍵408にサービスプロバイダ402からアクセス不能となるように構成することができる。顧客ネットワーク及びプロバイダネットワークは、完全に分離されたネットワーク群とする必要はないことに留意されたい。例えば、顧客ネットワークの一部の部分または全部を、プロバイダネットワークのコンピューティングリソース群がホストすることができる。例えば、ネットワークの一部の部分または全部は、サービスプロバイダ402がホストする物理的コンピュータシステム群からなる重複ネットワークとして実現することができる。顧客ネットワークは、サービスプロバイダ402のハードウェアリソース群によって仮想コンピュータシステムサービスの一部として実行される1つ以上の仮想コンピュータシステムを備えることができる。他の変形例も、本開示の範囲内で想到される。
【0041】
図5は、本開示の1つの実施形態を示す概略図を示している。図5の概略図は、顧客ネットワーク502及びプロバイダネットワーク504を備える環境を示しており、この場合、顧客及びプロバイダは上に説明した通りとすることができる。顧客ネットワークは顧客506が(ローカルで、かつ/またはリモートで)管理することができ、人物の姿で図示される顧客506は、組織としてもよい。プロバイダは、サービスを顧客506に提供するサービスプロバイダとすることができ、幾つかの実施形態では、プロバイダは、コンピューティングリソースサービスプロバイダである。上に論じたように、顧客ネットワーク502及びプロバイダネットワーク504は、アクセス障壁によって分離される。論じたように、アクセス障壁は、1つ以上の物理的障壁及び/または論理的障壁を顧客ネットワーク502とプロバイダネットワーク504との間に含むことができる。以下に更に詳細に論じるように、顧客506は、データをサービスプロバイダとの間で送受信することができる。顧客506、一般的に、本明細書において記載される顧客は、このようなデータを、コンピュータ可読記憶媒体に組み込まれるコンピュータ可読命令群に従って送信することができ、これらの命令は、顧客506のコンピュータシステムで実行される。
【0042】
顧客506のコンピュータシステムは、以下に列挙されるコンピューティングデバイス群のいずれかのコンピューティングデバイスのようなコンピューティングデバイスとすることができる。幾つかの実施形態では、顧客のコンピュータシステムはモバイルデバイス(例えば、携帯電話機及び/またはタブレットコンピューティングデバイス)である。モバイルデバイスは、鍵群(例えば、顧客鍵群)を格納して、鍵群を、ユーザに関連する複数のモバイルデバイス(例えば、ユーザの携帯電話機、パーソナルコンピュータ、及びタブレットコンピューティングデバイス)の間で同期させるように構成することができる。同期は、1種類以上の企業向け同期製品を利用して行なわれる。同期を行なう際に、Bluetooth(登録商標)、近距離無線通信(NFC)、または別のローカル通信方法のような1種類以上の通信方法を利用することができる。更に、クライアント506のコンピュータシステムへの/コンピュータシステムからの種々の通信は、クライアントコンピュータシステム上で実行されるブラウザまたは他のアプリケーションにより調整することができる。ブラウザ及び/または他のアプリケーションは、暗号化サービス及びデータストレージサービスとの通信を、顧客にコンピューティングリソースサービスプロバイダのサーバから供給される実行可能命令群に従って調整することができる。例えば、コンピューティングリソースサービスプロバイダは、実行可能コードをJavaScript(登録商標)または別のスクリプト言語のようなアクティブコンテンツ形式で供給することができる。
【0043】
図5に示すように、CKと略記される顧客鍵にアクセスできる顧客506は、要求を暗号化サービス508に提示して、DKと略記されるデータ鍵を取得する。暗号化サービス508は、要求の認証を行なって、真正である場合に、データ鍵を含む応答、及び管理鍵で暗号化されたデータ鍵({DK}MK)を供給することができ、この場合、管理鍵は、上に説明したように、暗号化サービス508が顧客に代わって管理する鍵とすることができる。表記{A}Bは、データAが鍵Bで暗号化されることを示すことに留意されたい。別の表現をすると、{A}Bは、暗号鍵に入力Bを適用する処理に少なくとも部分的に基づいて取得されるデータを示している。{A}Bは、必ずではないが、暗号鍵の直接的な出力とすることができ、間接的な出力とすることもできることに留意されたい。例えば、暗号をAに鍵Bを使用して適用して得られる出力は、場合によっては別の鍵を用いる更に別の暗号への入力とすることができる。図5に示す管理鍵は、MKと略記される。
【0044】
データ鍵及び管理鍵で暗号化されたデータ鍵を暗号化サービス508から受信すると、顧客506は、データ鍵を使用してデータを暗号化することができ、そして顧客固有の顧客鍵を使用して、管理鍵で暗号化されているデータ鍵を暗号化することができる。更に、データを、データ鍵を使用して暗号化した後、顧客506は、データ鍵を、例えばデータ鍵を格納している全てのメモリに上書きできるようにすることにより、電子的に破棄することができる。一般的に、データ鍵は、顧客が、データ鍵への直接的なアクセスを失効する(すなわち、顧客は、平文のデータ鍵にアクセスするためには1回以上の暗号化処理を実行する必要がある、かつ/または実行してしまっている必要がある)ようないずれかの適切な方法で破棄することができる。このようにして、データ鍵には、管理鍵及び顧客鍵の両方にアクセスできる場合にのみアクセス可能になり、このためには、複数のエンティティによる協同動作が必要であり、これらのエンティティの各エンティティは、以下に説明するように、両方の鍵にアクセスできない。
【0045】
次に、顧客は、データ鍵で暗号化されたデータ、及び管理鍵及び顧客鍵で暗号化されたデータ鍵を保持することができる。例えば、図5に示すように、顧客は、データ鍵で暗号化されたデータ、及び管理鍵及び顧客鍵の両方の鍵で暗号化されたデータ鍵(例えば、{{DK}MKCK)を、サービスプロバイダが運用するデータストレージサービス510に送信する。データ鍵で暗号化されたデータ{Data}DK、及び管理鍵及び顧客鍵の両方の鍵で暗号化されたデータ鍵{{DK}MKCKは、他の方法で保持してもよい。例えば、{Data}DK及び{{DK}MKCKは、顧客が、ローカルに顧客ネットワーク502内のデバイスに格納することができる、または図示されない異なるサービスプロバイダのデータストレージサービスを利用して格納することができる。{Data}DK及び{{DK}MKCKは、例えば組み合わせて、単一のデータオブジェクトとして(例えば、{Data}DK及び{{DK}MKCKを分離して、{Data}DKを{{DK}MKCKから区別できる区切り文字を用いて)格納することにより、互いに関連付けて格納することができる。別の構成として、{Data}DK及び{{DK}MKCKはそれぞれ、互いに関連付けられる個別のデータオブジェクト群として格納することができ、この場合、関連付けは、データベースにより保持する、かつ/または一方のデータオブジェクトまたは両方のデータオブジェクトに格納されるデータ(例えば、基準情報)により保持することができる。更に、{Data}DK及び{{DK}MKCKは、同じ場所に格納される必要はない。例えば、顧客は、{{DK}MKCKをローカルに格納することができるが、データストレージサービス510または別のデータストレージサービスを利用して{Data}DKを格納してもよい。他の変形例も、本開示の範囲内で想到される。
【0046】
図6は、本開示による別の実施形態を示す例示的な概略図を示している。図6に示す概略図では、環境は、顧客ネットワーク602と、第1プロバイダネットワーク604と、第2プロバイダネットワーク606と、を含む。顧客ネットワーク602及び第1プロバイダネットワーク604は、図5に関連して上に説明した顧客ネットワーク502及びプロバイダネットワーク504のようなネットワークとすることができる。第2プロバイダネットワーク606は、上に説明したようなネットワークとすることができるが、第1プロバイダネットワーク604のサービスプロバイダとは異なるエンティティによって運用することができる。更に、第1プロバイダネットワーク604及び第2プロバイダネットワーク606は、例えば異なるフォーマットのAPIコールをサポートすることにより、かつ/または要求に異なる処理を施すことにより、異なる動作を行なうことができる。図6に示すように、顧客ネットワーク602、第1プロバイダネットワーク604、及び第2プロバイダネットワーク606は上に説明したように、アクセス障壁によって分離される。
【0047】
図6に示すように、顧客608は要求を第1プロバイダ暗号化サービス610に提示してデータ鍵を要求する。要求は、図5に関連して説明したように、例えば適切に設定されるウェブサービスAPIコールとして提示することができる。図5に関連して上に説明した構成と同様に、第1プロバイダ暗号化サービス610は、第1サービスプロバイダが顧客に代わって管理する管理鍵にアクセスすることができる。図6では、第1サービスプロバイダが管理する管理鍵は、MK1と略記され、図6に関連して、「first managed key(第1管理鍵)」とも称される。データ鍵が要求されると、第1プロバイダ暗号化サービス610は、データ鍵、及び第1管理鍵で暗号化されたデータ鍵、すなわちDK及び{{DK}MK1}を含む応答を要求に応じて返すことができる。
【0048】
図5に関連して上に説明したように、顧客は、第1サービスプロバイダから受信するデータ鍵を用いてデータを暗号化するためにデータ鍵を使用することができる。次に、顧客608は、要求を第2プロバイダ暗号化サービス612に提示して、データ鍵で暗号化されたデータ({Data})を、図にMK2と略記される第2管理鍵を使用して暗号化することができる。第2プロバイダ暗号化サービス612は、要求に応答して、データ鍵で暗号化されたデータ{Data}DKを暗号化することができる。具体的には、第2プロバイダ暗号化サービス612は、{Data}DKを、第2管理鍵MK2を使用して暗号化することができ、顧客608からの要求に応答して、データ鍵で暗号化され、かつ第2管理鍵で暗号化されたデータ{{Data}DKMKを返すことができる。次に、顧客608は、要求を第1サービスプロバイダのデータストレージサービス614に提示して、データ鍵及び第2管理鍵の両方の鍵で暗号化されたデータ、及び第1管理鍵で暗号化されたデータ鍵を格納することができる、すなわち{{Data}DKMK2及び{{DK}MK1}を格納する要求を提示することができる。図5と同じように、かつ本明細書において例示される他のプロセスと同じように、{{Data}DKMK2を格納する第1要求、及び{{DK}MK1}を格納する第2要求のような複数の要求を提示することができる。
【0049】
このようにして、データにアクセスするためには、データ鍵DKにアクセスするための第1管理鍵MK1、及びデータにアクセスするための第2管理鍵MK2の両方の鍵を使用する必要がある。
【0050】
本明細書において記載される他の実施形態と同じように、更に別の変形例が、本開示の範囲内で想到される。例えば、図6に示す実施形態に代わる別の構成として、顧客608は、第2プロバイダ暗号化サービス612が、データ鍵で暗号化されたデータではなく、第1管理鍵で暗号化されたデータを暗号化するように要求することができる。応答は、第2プロバイダ暗号化サービスからそれに応じて返すことができる、すなわち、応答は{{DK}MK1MK2を含むことができる。顧客用に暗号化されたデータが、例えば第2プロバイダ暗号化サービスのデータストレージサービスにおける顧客608のローカルデータストア、及び/または他の場所に保持されるような他の変形例は、本開示の範囲内で想到される。
【0051】
図7は、本開示の別の実施形態を示す概略図を示している。図示のように、概略図は、顧客ネットワーク702と、プロバイダネットワーク704と、を含む環境を示しており、これらのネットワークは、上に説明したようなネットワーク群とすることができ、かつ上に説明したように、アクセス障壁によって分離することができる。図7に示すように、顧客706は、CKと略記される顧客鍵にアクセスすることができる。図5に関連して上に説明した実施形態とは異なり、図7では、プロバイダネットワーク704を運用するサービスプロバイダは、データを暗号化するために使用されるDKと略記されるデータ鍵に決してアクセスすることができない。図7に示す実施形態では、顧客706は、データ鍵に、例えばデータ鍵自体を作成することにより、またはデータ鍵を、不図示の別のサービスプロバイダのような別のエンティティから受け取ることによりアクセスできる。
【0052】
図示の実施形態では、顧客706は、要求を、プロバイダネットワーク704を運用するサービスプロバイダの暗号化サービス708に提示する。上に説明したように、要求は、顧客鍵で暗号化されたデータ鍵を暗号化するように適切に設定されるAPIコールとすることができる。顧客は、例えば顧客鍵を使用して、データ鍵を暗号化して、顧客鍵で暗号化されたデータ鍵を暗号化サービス708に、要求で提供しまっている可能性がある。暗号化サービス708は要求に、顧客鍵で暗号化されたデータ鍵を、上に説明したような顧客706に対応する管理鍵を使用して暗号化することにより応答することができる。従って、応答は、顧客鍵及び管理鍵の両方の鍵で暗号化されたデータ鍵、例えば{{DK}CKMKを含むことができる。次に、顧客は、データ鍵で暗号化されたデータ、及び顧客鍵及び管理鍵の両方の鍵で暗号化されたデータ鍵を保持することができる。このようにして、顧客鍵及び管理鍵の両方の鍵が、データ鍵にアクセスしてデータを復号化するために必要となる。顧客は、例えばデータ鍵で暗号化されたデータ、及び顧客鍵及び管理鍵の両方の鍵で暗号化されたデータ鍵を、プロバイダネットワーク704を運用するサービスプロバイダのデータストレージサービスを利用して格納することができる、または上に説明したように、別の場所に格納することができる。
【0053】
幾つかの実施形態では、データ鍵は、複数の鍵要素から生成され、これらの鍵要素は、異なるエンティティからアクセス可能な異なる鍵を使用して個々に暗号化されて、同様の結果を達成する。従って、図8は、本開示の1つの実施形態の例示的な例を示している。図8は具体的には、上に説明したような顧客ネットワーク802及びプロバイダネットワーク804を含む環境を例示する概略図を示している。同様に、顧客ネットワーク802及びプロバイダネットワーク804は、上に説明したようなアクセス障壁によって分離することができる。この図に示すように、DKと略記されるデータ鍵は、複数の鍵要素から生成される。この例では、これらの鍵要素は、DK1及びDK2と略記され、データ鍵は普通、DK1及びDK2の関数であると考えることができる。幾つかの実施形態では、例えばDK1及びDK2は、指定された順番で連結させることにより、データ鍵DKを生成することができる。しかしながら、DK1及びDK2を入力として使用するいずれの関数を使用しても、DKを作成することができる。また、DK1及びDK2は、DKから生成することができる、または逆に、DKは、DK1及びDK2から生成することができることに留意されたい。例えば、DK1及びDK2を取得し、次に合成することができる、またはDKを取得し、そして分割する、またはその他には、処理することにより、DK1及びDK2を決定することができる。
【0054】
図8に示す実施形態では、顧客はDK及び顧客鍵CKにアクセスできる。データ鍵には、いずれかの適切な方法で、例えばデータ鍵を上に説明したような異なるエンティティから取得することにより、またはデータ鍵自体を生成することによりアクセスできる。また、図示のように、顧客は、データ鍵DK1及びDK2の鍵要素にアクセスすることができる。図示の実施形態では、顧客は要求をプロバイダネットワーク804の暗号化サービス808に提示する。上に論じたように、暗号化サービス808は、MKと略記される管理鍵にアクセスすることができ、この管理鍵は、顧客806に代わって管理される。暗号化サービス808は要求に応答して、第2データ鍵DK2を暗号化することができ、この場合、応答は、管理鍵で暗号化された第2データ鍵{DK2}MKを含む。顧客は、データ鍵の第1鍵要素DK1を、顧客鍵を使用して暗号化することができる。次に、{Data}DK、{DK1}CK、及び{DK2}MKは、例えばプロバイダネットワークを運用するサービスプロバイダが運用するデータストレージサービス810に保持するか、または上に説明したように、別の方法で保持することができる。例えば、顧客806は、適切に設定される1回以上のAPIコールを通じて、データストレージサービス810で、{Data}DK、{DK1}CK、及び{DK2}MKを互いに関連付けて1つ以上のデータオブジェクトに格納するようにすることができる。
【0055】
図9は、種々の実施形態によるデータをセキュアに格納するために実行することができるプロセス900の例示的な例を示している。プロセス900は、いずれかの適切なシステムにより、例えば実行可能命令群で構成される顧客のコンピュータシステムが、上に説明したように、1つ以上のサービスプロバイダと通信することにより実行することができる。1つの実施形態では、プロセス900は、データをデータ鍵で暗号化する(902)ことを含む。データ鍵は、システムがプロセス900をいずれかの適切な方法で実行することにより取得することができる。例えば、図5図6を参照すると、データ鍵は、暗号化サービスから取得することができる。他の例では、プロセス900を実行するシステムは、データ鍵自体を生成することができる。更に、データをデータ鍵で暗号化する処理902は、種々の実施形態による種々の方法で実行することができる。例えば、プロセス900を実行するシステムは、データを、データ鍵自体を使用して暗号化することができる。別の例として、プロセス900を実行するシステムは、データを、データ鍵にアクセスできる別のシステムに送信して、他のシステムがデータを、データ鍵を使用して暗号化するようにする。一般的に、データは、データ鍵を使用して、いずれかの適切な方法で暗号化することができる(902)。
【0056】
要求をサービスプロバイダに送信して暗号化処理を、管理鍵を使用して実行することができる(904)。要求により管理鍵を特定することができ、この管理鍵は、サービスプロバイダがプロセス900を実行するシステムに代わって、または当該システムに接続される顧客に代わって管理する鍵とすることができる。実行対象の特定の暗号化処理は、種々の実施形態に応じて変えることができる。例えば、図5を参照するに、暗号化処理は、データ鍵を、管理鍵を使用して暗号化することを含むことができる。同様に、図6を参照するに、暗号化処理は、データ鍵を、プロセス900の実行段階に基づいて使用される幾つかの管理鍵のうちの1つの管理鍵を使用して暗号化することを含むことができる。図7を参照するに、暗号化処理は、顧客鍵または別の管理鍵のような別の鍵で既に暗号化されているデータ鍵を暗号化することを含むことができる。図8を参照するに、暗号化処理では、データ鍵の1つの鍵要素を、管理鍵を使用して復号化することができる。図9には図示されていないが、プロセス900では、図6に図示されているように、更に別の要求を、同じサービスプロバイダまたは別のサービスプロバイダに対して行なうこともできる。
【0057】
1つの実施形態では、プロセス900において更に、管理鍵及び顧客鍵の両方の鍵(及び、場合によっては、1種類以上の他の鍵)で暗号化されたデータ鍵を取得する(906)。図5を参照するに、例えば管理鍵及び顧客鍵の両方の鍵で暗号化されたデータ鍵を取得する処理906は、管理鍵で暗号化されたデータ鍵を受信し、そして顧客鍵を使用して、管理鍵で暗号化された受信データ鍵を暗号化することを含むことができる。図7を参照するに、管理鍵及び顧客鍵の両方の鍵で暗号化されたデータ鍵を取得する処理906では、データ鍵を、顧客鍵を使用して暗号化し、そして顧客鍵で暗号化されたデータ鍵をサービスプロバイダに送信して、管理鍵で更に暗号化することができる(そして、このような暗号化の結果を取得する)。図8を参照するに、管理鍵及びデータ鍵の両方の鍵で暗号化されたデータ鍵を取得する処理906は、データ鍵の一部を、平文または暗号化方式のいずれでも、サービスプロバイダに送信して、管理鍵を使用して暗号化すること(そして、このような暗号化の結果を取得すること)を含むことができる。
【0058】
種々の実施形態では、プロセス900において、データを保持して(すなわち、永続的に格納して)、複数の鍵がデータにアクセスするために必要になるようにする(908)。例えば、図9に示すように、図5図8に関連して上に説明したように、プロセス900は、データ鍵で暗号化されたデータ;及び管理鍵及び顧客鍵の両方の鍵で暗号化されたデータを永続的に格納する(例えば、別のシステムに格納させる)ことを含むことができる。
【0059】
上に説明したように、本開示の種々の実施形態では、暗号化されたデータをセキュアに格納して、当該データには、複数の鍵にアクセスできる場合に限りアクセス可能となるようにすることができる。図10は、本明細書において記載される種々の実施形態によるデータにアクセスする過程を示す例示的な例を示している。図10に示すように、プロセス1000は、データ鍵で暗号化されたデータだけでなく、管理鍵及び顧客鍵の両方の鍵で暗号化されたデータ鍵を取得する(1002)ことを含む。管理鍵及び顧客鍵の両方の鍵で暗号化されたデータ鍵は、本明細書において記載されるプロセス900及び/または他の方法に従って永続的に格納することができる。1つの実施形態では、プロセス1000は、要求をサービスプロバイダに送信して復号化処理を、管理鍵を使用して実行すること(1004)を含む。復号化処理は、種々の実施形態に応じて変えることができ、例えば図5図6を参照するに、復号化処理は、管理鍵で暗号化されたデータ鍵を復号化することを含むことができる。管理鍵で暗号化されたデータ鍵は、管理鍵で暗号化されて顧客鍵で暗号化されたデータ鍵を復号化することにより取得することができる。図7を参照するに、復号化処理は、顧客鍵で暗号化されて管理鍵で暗号化されたデータ鍵を復号化する処理とすることができる。別の表現をすると、図5図8の表記を利用して、復号化処理では、{{DK}CKMKを復号化して{DK}CKを取得することができる。図8を参照するに、復号化処理は、管理鍵を使用してデータ鍵の1つの鍵要素を復号化することを含むことができる。一般的に、復号化処理の結果を使用して、データ鍵を取得することができる(1006)。プロセス1000は、データを、例えば1つのエンティティがデータ鍵にアクセスできる場合のように、既に取得されているデータ鍵を使用して復号化することを含むことができる。
【0060】
本明細書において記載される全てのプロセスと同じように、種々変形例は、本開示の範囲内で想到される。例えば、図10には図示されないが、プロセス1000は、更なる処理を含むことができ、例えばある特定のデータを同じサービスプロバイダ、または別のサービスプロバイダが復号化することができる。例えば、データを暗号化するプロセスが、第2サービスプロバイダが管理鍵を使用して、データ鍵の一部の要素または全ての要素を暗号化することを含む場合、管理鍵にアクセスできる第2サービスプロバイダまたは他のエンティティに、適切な復号化処理を実行させることができる。一般的に、暗号化が、本明細書において記載されるこれらの処理に追加される処理を含む実施形態では、データへのアクセスは、適切な復号化処理を行なうことを含むことができる。
【0061】
非常に多くの他の変形例は、本開示の範囲内で想到される。例えば、上に説明したように、顧客コンピュータシステムは、本明細書において記載される種々のプロセスを、コンピュータ可読記憶媒体に符号化された実行可能命令群に従って実行することができる。これらの命令は、顧客コンピュータシステムにサービスプロバイダから供給することができ、例えばサービスプロバイダが提供する実行可能コードプログラミングモジュール群からなるクライアントライブラリの一部から供給することができる。サービスプロバイダは、このようなコードに、インターネットまたは別のネットワークを介してアクセス可能とすることができる。更に、種々の実施形態が、本明細書において、異なる鍵にアクセスできる2つ、または3つの異なるエンティティを使用するものとして例示されているが、本開示の範囲は、関連エンティティ群のこのような実施形態、及び数に限定されない。例えば、本明細書において例示され、かつ記載されるこれらの方法は、鍵群にアクセスできる更なるエンティティ群が関与するように拡張することができる。一般的に、データ及び/または鍵群は、異なるエンティティから受け取る複数の鍵を用いて隠蔽する(例えば、暗号化する)ことができる。顧客コンピュータシステムは、種々のエンティティの動作(例えば、暗号化/復号化)を調整して、データを暗号化するためには、全てのエンティティが関与する必要があるように構成することができる、またはこのようにして暗号化されたデータを復号化するように構成することができる。
【0062】
幾つかの例では、(例えば、サービスプロバイダが実行する)1回以上の暗号化処理は、追加認証データ(AAD)の使用をサポートする暗号化アルゴリズムを使用して実行される。1つの実施形態では、AADは、暗号化されようとするデータとともに、暗号化アルゴリズムへの入力として使用されるデータである。AADは、平文で保持することができる。暗号化アルゴリズムは、対応する復号化において、暗号文及び未改ざんのAADが、復号を成功させるために必要となるように構成することができる。更に、システム(例えば、サービスプロバイダシステム)は、AADを使用してポリシーを強制することができる。例えば、メタデータ(例えば、IPアドレス、識別情報、データを格納するために使用される論理データコンテナの論理データコンテナ識別子など)に含まれる1つ以上の値を使用して、復号化が、これらの値に少なくとも部分的に基づいて設定される1つ以上のポリシーにより許可されるかどうかを判断することができる。このようにして、暗号化アルゴリズム及びポリシーの両方が、データへの許可アクセスのみが確実に許可されるように機能する。別の表現をすると、未改ざんのAAD、及び復号化を許可するポリシーの両方があることが、データへのアクセスが行なわれる前に必要になる。
【0063】
更に、上に記載される種々の方法では、1つ以上のサービスプロバイダと種々の通信を行ない、これらの通信は、クライアントコンピュータシステム(例えば、上に説明した顧客のコンピュータシステム)により調整することができる。クライアントコンピュータシステムに指示して、1つ以上の方法を利用させるコードは、クライアントコンピュータシステムのアプリケーション群を生成するために使用されるソフトウェア開発キット(SDK)に組み込むことができる。また、幾つかの実施形態では、クライアントコンピュータシステムをプログラムして、上に説明したこれらの方法のうちの1つ以上の方法を、種々のトリガーに関連して利用することができる。1つの例では、アプリケーションは、ファイルシステムインターフェース(例えば、ファイルシステムドライバインターフェース)または(例えば、データストレージサービスを利用する仮想ストレージデバイス用の)ストレージデバイスインターフェースとなることができる。上に説明した種々の方法は必要に応じて、種々のコマンドを、インターフェースを介して受信すると利用することができる。例えば、データをファイルシステムまたはストレージデバイスに格納するコマンドを通知するインターフェースとの対話により、暗号化が、上に説明した種々実施形態のうちの1つ以上の実施形態に従って実行されるようにすることができる。同様に、データをファイルシステムまたはストレージデバイスから取り出すコマンドを通知するインターフェースと対話することにより、上に説明した1つ以上の方法を利用してデータを復号化することができる。このような方法は、他のインターフェースに適用することもできる。
【0064】
別の変形例は、本開示の範囲内で想到される。本明細書において記載される種々の方法を取り入れた方法は、下位互換性が可能となるように利用することができる。種々の方法を利用するアプリケーションは、例えば構成を読み出して、サービスプロバイダと対話する方法、及びいずれの鍵を使用すべきか(すなわち、いずれの鍵が、鍵自体を用いるか、及びいずれの鍵をサービスプロバイダに対して指定すべきか)を判断することができる。このようにして、SDK(ソフトウェア開発キット)を用いてエンコード化する方法が経時的に変化する場合、既に利用した方法を使用して暗号化され、かつ格納されたデータは、それにも拘らず、アクセス可能な状態を保持することができる。SDKは、プログラミングロジックを含むことができ、プログラミングロジックにより、いずれの方法を使用すべきか(方法がある場合に)、いずれの鍵を使用すべきかなどについての選択が可能になる。いずれの方法を使用すべきか(方法がある場合に)、かつ/またはいずれの鍵を使用すべきかについて判断するために、SDK(ソフトウェア開発キット)のプログラミングロジックは、クライアントコンピュータシステムに対して設定されるローカル構成に関する情報、サービスプロバイダコンピュータシステムから提供される、かつ/または他の方法で提供される情報を利用することができる。
【0065】
本開示の種々実施形態は、以下の項に記載することができる。
【0066】
第1項.
媒体に格納される命令群を有するコンピュータ可読記憶媒体であって、命令群がコンピューティングリソースサービスプロバイダの顧客のコンピュータシステムの1つ以上のプロセッサで実行されると、命令群により当該コンピュータシステムは:
データを第1鍵で暗号化し、
第2鍵及び第3鍵に少なくとも部分的に基づいて暗号化された当該第1鍵を取得し、当該顧客は当該第2鍵にアクセスできず、当該コンピューティングリソースサービスプロバイダは当該第3鍵にアクセスできず、当該第2鍵及び当該第3鍵に少なくとも部分的に基づいて暗号化された当該第1鍵を取得することは:
1回以上の暗号化処理を、当該第2鍵を使用して実行する要求であって、当該コンピューティングリソースサービスプロバイダが当該第2鍵を、当該コンピューティングリソースサービスプロバイダの顧客群に代わって管理される複数の鍵から選択することができるための情報を含む、当該要求を当該コンピューティングリソースサービスプロバイダに提示することを含み、そして
当該第1鍵で暗号化された当該データを、当該第2鍵及び当該第3鍵に少なくとも部分的に基づいて暗号化された当該第1鍵に関連付けて格納する、コンピュータ可読記憶媒体。
【0067】
第2項.
当該第2鍵及び当該第3鍵に少なくとも部分的に基づいて暗号化された当該第1鍵を取得することは:
当該コンピューティングリソースサービスプロバイダから、当該第2鍵で暗号化された当該第1鍵を受信すること、そして
当該第2鍵で暗号化された受信済みの当該第1鍵を暗号化することを含む、第1項に記載のコンピュータ実装式方法。
【0068】
第3項.
当該第2鍵及び当該第3鍵に少なくとも部分的に基づいて暗号化された当該第1鍵を取得することは:
当該コンピューティングリソースサービスプロバイダから、当該第2鍵で暗号化された当該第1鍵を受信すること、そして
第2コンピューティングリソースサービスプロバイダに、当該第3鍵を使用させて、当該第2鍵で暗号化された受信済みの当該第1鍵を暗号化させることを含む、第1項または第2項に記載のコンピュータ実装式方法。
【0069】
第4項.
当該第2鍵及び当該第3鍵に少なくとも部分的に基づいて暗号化された当該第1鍵を取得することは:
当該第3鍵を使用して当該第1鍵を暗号化すること、そして
当該要求により、暗号化された当該第1鍵を取得することを含む、先行する項のいずれか一項に記載のコンピュータ実装式方法。
【0070】
第5項.
当該第1鍵は、第1鍵要素及び第2鍵要素に少なくとも部分的に基づいて設定され、
当該要求により当該第1鍵要素を取得して、当該コンピューティングリソースサービスプロバイダで当該第2鍵を使用することにより暗号化し、
第2鍵に少なくとも部分的に基づいて暗号化された当該第1鍵を取得することは、当該第2鍵要素を当該第3鍵で暗号化することを含む、先行する項のいずれか一項に記載のコンピュータ実装式方法。
【0071】
第6項.
当該第1鍵で暗号化された当該データを格納することは、当該コンピューティングリソースサービスプロバイダが運用するデータストレージサービスに、当該第1鍵で暗号化された当該データ、及び当該第2鍵及び当該第3鍵に少なくとも部分的に基づいて暗号化された当該第1鍵を送信することを含む、先行する項のいずれか一項に記載のコンピュータ実装式方法。
【0072】
第7項.
実行可能命令群で構成される1つ以上のコンピュータシステムによる制御の下で、
コンピューティングリソースサービスプロバイダからアクセス不能な第1情報、及び当該コンピューティングリソースサービスプロバイダの顧客からアクセス不能な第2情報に少なくとも部分的に基づいて、暗号化された第1鍵、及び該第1鍵で暗号化されたデータを、少なくとも:
1回以上の暗号化処理を、当該第2情報を使用して実行する要求であって、当該コンピューティングリソースサービスプロバイダが当該第2情報を、当該コンピューティングリソースサービスプロバイダの他の顧客群に代わって管理される他の情報から選択することができるための情報を含む、要求を当該コンピューティングリソースサービスプロバイダに提示することにより取得し、そして
当該第1鍵で暗号化された当該データ、及び暗号化された第1鍵を保持して、当該第1鍵で暗号化された当該データの復号化を許可するためには、当該第1情報及び当該第2情報を使用することが必要になるようにする、コンピュータ実装式方法。
【0073】
第8項.
当該第1情報は第2鍵を含み、当該第2情報は第3鍵を含む、第7項に記載の方法。
【0074】
第9項.
当該方法は更に:
当該第1鍵で暗号化された当該データを、当該第1情報にアクセスできる第2コンピューティングリソースサービスプロバイダに送信すること、そして
当該第2コンピューティングリソースサービスプロバイダから、当該第1鍵で暗号化され、当該第1情報を使用して更に暗号化された当該データを含む第3情報を取得すること、を含み、そして
当該第1鍵で暗号化された当該データ、及び暗号化された第1鍵を保持することは、当該第3情報、及び暗号化された第1鍵を、当該第1情報及び当該第2情報の両方にアクセスできないデータストレージシステムに格納することを含む、第7項または第8項に記載の方法。
【0075】
第10項.
当該コンピューティングリソースサービスプロバイダは当該第1鍵にアクセスできない、第7項乃至第9項のいずれか一項に記載の方法。
【0076】
第11項.
当該第1鍵は、第1鍵要素及び第2鍵要素を含む複数の鍵要素から導出することができ、そして
暗号化された当該第1鍵は:当該第1情報を使用して暗号化される当該第1鍵要素と、当該第2情報を使用して暗号化される当該第2鍵要素と、を含む、第7項乃至第10項のいずれか一項に記載の方法。
【0077】
第12項.
当該第1情報に当該顧客からアクセス可能である、第7項乃至第11項のいずれか一項に記載の方法。
【0078】
第13項.
コンピューティングリソース集合を含むシステムであって、
当該コンピューティングリソース集合は:
複数のエンティティに代わって複数の鍵を管理するように構成される第1サービスを運用し、
データを、当該複数の鍵にアクセスすることなく格納するように構成される第2サービスを運用し、そして
複数のエンティティの中の1つのエンティティに対応するクライアントコンピューティングデバイスに実行可能命令群を供給するように集合的に構成され、当該実行可能命令群により、当該クライアントコンピューティングデバイスが、少なくとも:
要求を提示して、1回以上の暗号化処理を、当該要求で指定された、当該複数の鍵の中の第1鍵を使用して実行し、
当該要求に応じて、当該1回以上の暗号化処理の実行結果を受信し、
当該結果、及び当該システムからアクセス不能な第2鍵に少なくとも部分的に基づいて、暗号化データを含み、かつ少なくとも当該第1鍵及び当該第2鍵の両方の鍵の使用が、当該データを復号化するために必要になるように構成される情報を生成し、そして
当該生成した情報を当該ストレージデバイスに送信するようになる、当該システム。
【0079】
第14項.
当該暗号化データは第3鍵で暗号化され、そして
当該情報は、当該第1鍵及び当該第2鍵に少なくとも部分的に基づいて暗号化された当該第3鍵を含む、第13項に記載のシステム。
【0080】
第15項.
当該クライアントコンピューティングデバイスは当該第3鍵にアクセスできる、第14項に記載のシステム。
【0081】
第16項.
当該第1サービス及び当該第2サービスはそれぞれ、対応するウェブサービスアプリケーションプログラミングインターフェースを供給し、
当該要求を当該第1サービスのウェブサービスインターフェースを介して受信し、そして
当該生成した情報を送信することは、ウェブサービスコールを当該第2サービスのウェブサービスインターフェースに提示することを含む、第13項乃至第15項のいずれか一項に記載のシステム。
【0082】
第17項.
当該システムは当該第2鍵にアクセスできない、第13項乃至第16項のいずれか一項に記載のシステム。
【0083】
第18項.
当該実行可能命令群はスクリプト言語の形式である、第13項乃至第17項のいずれか一項に記載のシステム。
【0084】
第19項.
媒体に格納される命令群を有するコンピュータ可読記憶媒体であって、当該命令群がコンピュータシステムの1つ以上のプロセッサで実行されると、当該命令群により当該コンピュータシステムが:
コンピューティングリソースサービスプロバイダからアクセス不能な第1情報、及び第2情報に少なくとも部分的に基づいて、暗号化された第1鍵、及び該第1鍵で暗号化されたデータを、少なくとも:
1回以上の暗号化処理を、当該第2情報を使用して実行する要求であって、当該コンピューティングリソースサービスプロバイダが当該第2情報を、当該コンピューティングリソースサービスプロバイダの顧客群に代わって管理される他の情報から選択することができるための情報を含む、要求を当該コンピューティングリソースサービスプロバイダに提示することにより取得し、そして
当該第1鍵で暗号化された当該データ、及び暗号化された第1鍵を永続的に格納して、平文の当該データへのアクセスを許可するためには、当該第1情報及び当該第2情報を使用することが必要になるようにする、コンピュータ可読記憶媒体。
【0085】
第20項.
当該第1鍵で暗号化された当該データ、及び暗号化された当該第1鍵を永続的に格納することは、当該コンピューティングリソースサービスプロバイダのデータストレージサービスを利用して、当該第1鍵で暗号化された当該データ、及び暗号化された当該第1鍵のうちの少なくとも一方を格納することを含む、第19項に記載のコンピュータ可読記憶媒体。
【0086】
第21項.
当該コンピューティングリソースサービスプロバイダは当該第1鍵にアクセスできない、第19項または第20項に記載のコンピュータ可読記憶媒体。
【0087】
第22項.
当該第1鍵で暗号化された当該データを取得することは、第2コンピューティングリソースサービスプロバイダに、1回以上の処理を、当該第1情報を使用して実行させることを含む、第19項乃至第21項のいずれか一項に記載のコンピュータ可読記憶媒体。
【0088】
第23項.
当該第1情報は、当該コンピュータシステムがアクセスできる第2鍵であり、そして
当該第1鍵で暗号化された当該データを取得することは、1回以上の処理を、当該第2鍵を使用して実行することを含む、第19項乃至第22項のいずれか一項に記載のコンピュータ可読記憶媒体。
【0089】
第24項.
当該第1情報は第2鍵であり、当該第2情報は第3鍵であり、そして
当該第2鍵及び当該第3鍵の両方の鍵を使用して、当該第1鍵で暗号化された当該データを取得する、第19項乃至第23項のいずれか一項に記載のコンピュータ可読記憶媒体。
【0090】
第25項.
当該実行可能命令群は、当該暗号化された第1鍵、及び当該第1鍵で暗号化されたデータを取得すること、及び当該第1鍵で暗号化された当該データ、及び当該暗号化された第1鍵を永続的に格納することが、格納処理を実行するためにファイルシステムインターフェースに命令を出す結果として実行されるように構成される、第19項乃至第24項のいずれか一項に記載のコンピュータ可読記憶媒体。
【0091】
第26項.
当該1回以上の処理では、追加認証データをサポートする暗号化アルゴリズムを使用し、
当該要求は、当該コンピューティングリソースサービスプロバイダが追加認証データとして使用することができるメタデータを含み、当該コンピューティングリソースサービスプロバイダは、1つ以上のポリシーを、当該メタデータに少なくとも部分的に基づいて強制するように構成される、第19項乃至第25項のいずれか一項に記載のコンピュータ可読記憶媒体。
【0092】
図11は、種々の実施形態による種々態様を実行する例示的な環境1100の種々態様を示している。理解されるように、ウェブ環境を利用して説明を進めるが、異なる環境を必要に応じて利用して、種々の実施形態を実現することができる。当該環境は電子クライアントデバイス1102を含み、電子クライアントデバイス1102は、要求、メッセージ、または情報を適切なネットワーク1104を介して送受信し、情報を当該デバイスのユーザに返送するように動作することができるいずれかの適切なデバイスを含むことができる。このようなクライアントデバイスの例として、パーソナルコンピュータ、携帯電話機、ハンドヘルドメッセージングデバイス、ラップトップコンピュータ、タブレットコンピュータ、セットトップボックス、携帯情報端末、埋め込み式コンピュータシステム、電子ブックリーダなどを挙げることができる。当該ネットワークは、いずれかの適切なネットワークを含むことができ、適切なネットワークとして、イントラネット、インターネット、携帯電話ネットワーク、ローカルエリアネットワーク、または他のいずれかのこのようなネットワーク、またはこれらの組み合わせを挙げることができる。このようなシステムに使用されるコンポーネントは、選択されるネットワーク及び/または環境の種類によって少なくとも部分的に異なる。通信をこのようなネットワークを介して行なうためのプロトコル及びコンポーネントは、公知であるので、ここで詳細に説明することはしない。ネットワーク経由の通信は、有線接続または無線接続、及び有線接続及び無線接続の組み合わせにより可能になる。この例では、ネットワークは、当該環境が、要求を受信し、当該要求に応じてコンテンツを処理するウェブサーバ1106を含むことからインターネットを含むが、他のネットワークの場合、この技術分野の当業者には明らかなように、同様の目的を果たす別のデバイスを用いることができる。
【0093】
例示的な環境は、少なくとも1つのアプリケーションサーバ1108と、データストア1110と、を含む。チェーン接続することができる、またはその他には、構成することができ、かつ対話して、データを適切なデータストアから取得するようなタスクを実行することができる幾つかのアプリケーションサーバ、層、または他の要素、プロセスまたはコンポーネントを設けることができることを理解されたい。サーバは、本明細書において使用されるように、種々の方法で実装することができ、例えばハードウェアデバイス、または仮想コンピュータシステムとして実現することができる。いくつかの状況では、サーバは、コンピュータシステム上で実行されるプログラミングモジュールを指し得る。本明細書において使用されるように、「data store」という用語は、データを格納し、データにアクセスし、そしてデータを取り出すことができる任意のデバイス、またはデバイス群を組み合わせた複合デバイスを指し、複合デバイスは、任意の標準環境、分散環境、またはクラスタ環境における複数のデータサーバ、データベース、データストレージデバイス、及びデータストレージ媒体の組み合わせを含むことができる。アプリケーションサーバは、データストアと必要に応じて一体となってクライアントデバイスの1種類以上のアプリケーションの種々の機能を実行し、アプリケーションのデータアクセス及びビジネスロジックの一部の部分を(大部分をも)処理するいずれかの適切なハードウェア及びソフトウェアを含むことができる。アプリケーションサーバは、アクセス制御サービスをデータストアと連携して提供し、かつテキスト、グラフィックス、オーディオ、及び/またはビデオのようなコンテンツを生成してユーザに転送することができ、これらのコンテンツをユーザにウェブサーバを介して、この例におけるハイパーテキストマークアップ言語(HyperText Markup Language:「HTML」)、拡張マークアップ言語(Extensible Markup Language:「XML」)、または別の適切な構造化言語で配信することができる。全ての要求及び応答の処理だけでなく、クライアントデバイス1102とアプリケーションサーバ1108との間でのコンテンツの配信は、ウェブサーバで行なうことができる。本明細書において説明される構造化コードは、本明細書の他の箇所で説明されているように、適切ないずれのデバイスまたはホストマシンでも実行することができるので、ウェブサーバ及びアプリケーションサーバは必要ではなく、単なる例示的なコンポーネントに過ぎないことを理解されたい。更に、本明細書において、単一のデバイスにより実行されるものとして説明される処理は、そうでないことが文脈から明らかな場合を除き、分散システムを形成することができる複数のデバイスにより集合的に実行することができる。
【0094】
データストア1110は、幾つかの個別のデータテーブルと、データベース群または他のデータストレージ機構群と、本開示の特定の態様に関連するデータを格納する媒体と、を含むことができる。例えば、図示のデータストアは、コンテンツを生産側に配信するために使用することができる生産データ1112及びユーザ情報1116を格納する機構を含むことができる。データストアは更に、ログデータ1114を格納する機構を含むものとして図示され、ログデータ1114は、報告、分析、または他のこのような目的に使用することができる。ページ画像情報の場合のように、データストアに格納する必要があり、かつ正確な情報にアクセスするために必要な他の多くの要素が存在し得、これらの要素は、上に列挙した機構群のいずれかの機構に、必要に応じて格納するか、またはデータストア1110内の更なる機構に格納することができる。データストア1110は、当該データストアに接続されるロジックを介して、命令群をアプリケーションサーバ1108から受信し、それに応じてデータを取得する、更新する、またはその他には処理するように動作することができる。1つの例では、ユーザは、当該ユーザが運用するデバイスを介して、ある特定の種類のアイテムに関する検索要求を提示する可能性がある。この場合、データストアは、ユーザ情報にアクセスしてユーザの識別情報を確認し、そしてカタログ詳細情報にアクセスして、当該種類のアイテム群に関する情報を取得する可能性がある。次に、当該情報をユーザに、例えばユーザがユーザデバイス1102のブラウザを介して閲覧することができるウェブページに列挙される結果に含めて返送することができる。特定の注目アイテムに関する情報は、ブラウザの専用ページで閲覧するか、または専用ウィンドウで閲覧することができる。しかしながら、本開示の種々実施形態は、必ずしもウェブページの文脈に限定されず、もっと広く、要求が必ずしもコンテンツに対する要求ではない場合のような一般的な要求の処理にも適用することができることに留意されたい。
【0095】
各サーバは通常、一般的管理及び当該サーバの動作に関する実行可能プログラム命令群を供給するオペレーティングシステムを含み、かつ通常、命令群を格納するコンピュータ可読記憶媒体(例えば、ハードディスク、ランダムアクセスメモリ、リードオンリメモリなど)を含み、命令群がサーバのプロセッサで実行されると、サーバは、当該サーバの所望の機能を実行することができる。オペレーティングシステムのために適する実施態様及びこれらのサーバの一般的機能は、公知であるか、または市販されており、本明細書における開示内容を勘案すればこの技術分野の当業者によって容易に実現される。
【0096】
1つの実施形態の環境は、通信リンクを介して、1つ以上のコンピュータネットワークまたは直接接続を使用して相互接続される幾つかのコンピュータシステム及びコンポーネントを利用する分散計算環境である。しかしながら、この技術分野の当業者であれば、このようなシステムは、図11に示す数よりも少ない数の、または多い数のコンポーネントを有するシステムにおいて同じように良好に動作することができることを理解できるであろう。従って、図11のシステム1100の図は、本質的に例示に過ぎず、本開示の範囲に限定されないものとして捉えられるべきである。
【0097】
種々の実施形態は更に、多種多様な動作環境で実装することができ、これらの動作環境は、幾つかの場合では、複数のアプリケーションのうちのいずれかのアプリケーションを動作させるために使用することができる1つ以上のユーザコンピュータ、コンピューティングデバイス、または処理デバイスを含むことができる。ユーザデバイスまたはクライアントデバイスは、標準的なオペレーティングシステムを実行するデスクトップコンピュータ、ラップトップコンピュータ、またはタブレットコンピュータのような複数の汎用パーソナルコンピュータの任意のものだけでなく、モバイルソフトウェアを実行し、複数のネットワークプロトコル、及びメッセージングプロトコルをサポートすることができるセルラーデバイス、ワイヤレスデバイス、及びハンドヘルドデバイスのうちの任意のものを含むことができる。このようなシステムは、多種多様な市販のオペレーティングシステムのうちのいずれかのオペレーティングシステム、及び開発及びデータベース管理のような目的の他の公知のアプリケーションを実行する複数のワークステーションを含むこともできる。これらのデバイスは、ダミー端末、シンクライアント、ゲーム用システム、及びネットワーク経由で通信することができる他のデバイスのような他の電子デバイスを含むこともできる。
【0098】
本開示の種々の実施形態は、この技術分野の当業者が良く知っている少なくとも1つのネットワークを利用し、これらのネットワークは、多種多様な市販のプロトコルのうちのいずれかのプロトコルを使用する通信をサポートし、市販のプロトコルとして、例えばTransmission Control Protocol/Internet Protocol(伝送制御プロトコル/インターネットプロトコル:「TCP/IP」)、Open System Interconnection(開放型システム間相互接続:「OSI」)モデルの種々のレイヤで動作するプロトコル、File Transfer Protocol(ファイル転送プロトコル:「FTP」)、Universal Plug and Play(ユニバーサルプラグアンドプレイ:「UpnP」)、Network File System(ネットワークファイルシステム:「NFS」)、Common Internet File System(共通インターネットファイルシステム:「CIFS」)、及びAppleTalkを挙げることができる。ネットワークは、例えばローカルエリアネットワーク、ワイドエリアネットワーク、仮想専用ネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、及びこれらの任意の組み合わせとすることができる。
【0099】
ウェブサーバを利用する実施形態では、ウェブサーバは、Hypertext Transfer Protocol(ハイパーテキスト転送プロトコル:「HTTP」)サーバ、FTPサーバ、Common Gateway Interface(共通ゲートウェイインターフェース:「CGI」)サーバ、データサーバ、Javaサーバ、及びビジネスアプリケーションサーバを含む多種多様なサーバアプリケーション、または中間層アプリケーションのうちのいずれかのアプリケーションを実行することができる。サーバ(群)は、プログラムまたはスクリプトを、ユーザデバイスからの要求に応答して、例えばJava(登録商標)、C、C#、またはC++、またはPerl、Python、或いはTCLのようないずれかのスクリプト言語だけでなく、これらの組み合わせのようないずれかのプログラム言語で記述される1つ以上のスクリプトまたはプログラムとして実装することができる1つ以上のウェブアプリケーションを実行することにより、実行することもできる。サーバ(群)は、限定されないが、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、及びIBM(登録商標)から市販されているサーバを含むデータベースサーバを含むこともできる。
【0100】
当該環境は、上に論じたように、多種多様なデータストア、及び他のメモリ媒体及び記憶媒体を含むことができる。これらは、コンピュータ群のうちの1つ以上のコンピュータにローカルに設けられる(かつ/または1つ以上のコンピュータに常駐する)記憶媒体、またはネットワークを介して接続されるコンピュータ群の全てのコンピュータのうちのいずれかの、または全てのコンピュータから遠く離れて設けられる記憶媒体に常駐するように、多種多様な場所に常駐させることができる。特定の一連の実施形態では、情報は、この技術分野の当業者が良く知っているストレージエリアネットワーク(「SAN」)に常駐させることができる。同様に、コンピュータ、サーバ、または他のネットワークデバイスに付属する機能を実行するために必要なファイルは全て、必要に応じて、ローカルに格納する、かつ/またはリモートに格納することができる。システムがコンピュータ化デバイスを含む場合、このような各デバイスは、バスを介して電気的に接続することができるハードウェア要素を含むことができ、これらの要素は、例えば少なくとも1つの中央処理装置(「CPU」または「プロセッサ」)、少なくとも1つの入力デバイス(例えば、マウス、キーボード、コントローラ、タッチスクリーン、またはキーパッド)、及び少なくとも1つの出力デバイス(例えば、ディスプレイ装置、プリンタ、またはスピーカ)を含む。このようなシステムは、ディスクドライブ、光ストレージデバイスのような1つ以上のストレージデバイス、及びランダムアクセスメモリ(「RAM」)またはリードオンリメモリ(「ROM」)のような固体記憶装置だけでなく、着脱可能な媒体装置、メモリカード、フラッシュカードなどを含むこともできる。
【0101】
このようなデバイスは、上に説明したように、コンピュータ可読記憶媒体リーダ、通信デバイス(例えば、モデム、ネットワークカード(無線または有線)、赤外線通信デバイスなど)、及び作業メモリを含むこともできる。コンピュータ可読記憶媒体リーダは、コンピュータ可読記憶媒体に接続することができる、またはコンピュータ可読記憶媒体を収容するように構成することができ、このコンピュータ可読記憶媒体は、リモートストレージデバイス、ローカルストレージデバイス、固定記憶装置、及び/または着脱可能な記憶装置だけでなく、コンピュータ可読情報を一時的に、かつ/またはより永続的に格納し、記憶し、送信し、そして取り出す記憶媒体を表わす。システム及び種々のデバイスは更に通常、オペレーティングシステム及びクライアントアプリケーションまたはウェブブラウザのようなアプリケーションプログラムを含む、少なくとも1つの作業メモリ装置の内部に格納される複数のソフトウェアアプリケーション、モジュール、サービスまたは他の要素を含むことになる。別の実施形態は、上に説明した例に由来する非常に多くの変形例を有することができることを理解されたい。例えば、顧客の仕様に合わせたハードウェアを用いることもできる、かつ/または特定の要素をハードウェアとして、ソフトウェア(アプレットのようなポータブルソフトウェアを含む)として、またはハードウェア及びソフトウェアの両方として実装することができる。更に、ネットワーク入力/出力デバイスのような他のコンピューティングデバイスとの接続を用いることができる。
【0102】
コードまたはコードの一部を格納する記憶媒体及びコンピュータ可読媒体は、この技術分野で公知の、または使用されるいずれかの適切な媒体を含むことができ、適切な媒体として、限定されないが、いずれかの方法または技術で実装されてコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータのような情報を格納する、かつ/または伝送する揮発性媒体、及び不揮発性媒体、着脱可能な媒体、及び非着脱可能な媒体のような記憶媒体及び通信媒体を挙げることができ、このような方法または技術として、RAM、ROM、Electrically Erasable Programmable Read−Only Memory(電気的消去可能なプログラマブルリードオンリメモリ:「EEPROM」)、フラッシュメモリ、または他のメモリ技術、Compact Disc Read−Only Memory(コンパクトディスクリードオンリメモリ:「CD−ROM」)、デジタル多用途ディスク(DVD)、または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶装置、または所望の情報を格納するために使用することができ、かつシステムデバイスからアクセスできるいずれかの他の媒体を挙げることができる。本明細書において提供される開示及び教示に基づいて、この技術分野の当業者であれば、種々の実施形態を実現する他の手法及び/または方法を理解できるであろう。
【0103】
従って、本明細書及び図面は、限定的な意味ではなく、例示として見なされるべきである。しかしながら、種々の修正及び変更を本発明に、これらの請求項に記載される本発明の広い思想及び範囲から逸脱しない限り加えることができることは明らかである。
【0104】
他の変形例は、本開示の思想に含まれる。従って、開示されるこれらの方法は、種々の修正、及び別の構成の影響を受けやすいが、その例示されるある特定の実施形態は、これらの図面に図示され、かつ上に詳細に説明されてきた。しかしながら、本発明は、開示される特定の構成または形態に限定されるものではなく、全ての修正、代替構造、及び均等物を、添付の請求項に規定される本発明の思想及び範囲に含まれるものとして包含するものである。
【0105】
用語「a」及び「an」及び「the」、及び類似の指示用語を、本開示の実施形態を記載する文脈(特に以下の特許請求の範囲の文脈)に使用しているのは、本明細書で別途明示がある場合を除き、または文脈上明らかに矛盾する場合を除き、単数と複数の両方を含むものと捉えられるべきである。用語「comprising(備える、含む)」、「having(有する)」、「including(含む)」、及び「containing(含む)」は、別段定めがない限り、制限的でない用語(すなわち「これに限定されないが〜を含む」ことを意味する)として捉えられるべきである。「connected(接続される)」という用語は、修飾されず、かつ物理的接続を指す場合、介在物が存在する場合であっても、一部または全部が〜の内部に収容される、〜に取り付けられる、または接合されて合体するものとして解釈されるべきである。本明細書における値の範囲の記載は、本明細書で別途明示がある場合を除き、各個別の値が、当該範囲に収まる状態を個々に指す手短な方法として利用され、各個別の値は、本明細書で個々に記載されているかのように、本明細書に組み込まれる。「set(集合)」(例えば、「a set of items(アイテム集合)」)または「subset(部分集合)」という用語の使用は、別段定めがない限り、または文脈上明らかに矛盾する場合を除き、1つ以上のメンバーを含む空でない集合として捉えられるべきである。更に、別段定めがない限り、または文脈上明らかに矛盾する場合を除き、対応する集合の「subset(部分集合)」という表現は、必ずしも、対応する集合の適正な部分集合を指している訳ではなく、部分集合及び集合は等しくてもよい。
【0106】
別段の指定がない限り、または文脈上明らかに矛盾する場合を除き、文脈についてその他として、「at least one of A, B, and C(A、B、及びCの少なくとも1つ)」または「at least one of A, B, and C(A、B、及びCの少なくとも1つ)」という形式のフレーズのような接続語は一般的に、アイテム、用語などを、AまたはBまたはCのいずれかとすることができる、またはA及びB及びCからなる集合のいずれかの空でない部分集合とすることができることを提示するために使用されると理解される。例えば、3つのメンバーを有し、かつ上の接続フレーズに使用される集合の例示的な例では、「at least one of A, B, and C(A、B、及びCの少なくとも1つ)」及び「at least one of A, B, and C(A、B、及びCの少なくとも1つ)」は、次の集合:{A}、{B}、{C}、{A、B}、{A、C}、{B、C}、{A、B、C}のうちのいずれかの集合を指す。従って、このような接続語は、一般的に、特定の実施形態が、at least one of A(少なくとも1つのA)、at least one of B(少なくとも1つのB)、及びat least one of C(少なくとも1つのC)をそれぞれ提示する必要があることを意味するものとして捉えられてはならない。
【0107】
別段の指示がない限り、または文脈上明らかに矛盾する場合を除き、本明細書において記載されるプロセス群の処理は、いずれかの適切な順番で実行することができる。本明細書において記載されるプロセス群(または、プロセス群の変形例、及び/または組み合わせ)は、実行可能命令群で構成される1つ以上のコンピュータシステムによる制御の下に実行することができ、かつ1つ以上のプロセッサ上で、ハードウェアにより、またはこれらの組み合わせにより集合的に実行されるコード(例えば、実行可能命令群、1つ以上のコンピュータプログラム、または1つ以上のアプリケーション)として実装することができる。コードは、コンピュータ可読記憶媒体に、例えば1つ以上のプロセッサで実行することができる複数の命令を含むコンピュータプログラムの形式で格納することができる。コンピュータ可読記憶媒体は、非一時的な媒体とすることができる。
【0108】
いずれかの例、及び全ての例、または本明細書中に提供される例示的な言い回し(例えば「such as」)は、単に本発明の実施形態を一層明らかにするために使用されているのであり、他に特許請求されない限り、本発明の範囲を限定するものではない。本明細書中のいかなる言い回しも、いずれかの特許請求されていない要素が本発明の実施に不可欠であることを示していると捉えられるべきではない。
【0109】
本明細書では、本発明を実施するために本願発明者らには判明している最良の形態を含む本開示の好適な実施形態が記述されている。この技術分野の当業者であれば、これまでの説明を読むと、これらの好適な実施形態の変形例が明らかになるであろう。本願発明者らは、当業者であればこのような変形例を必要に応じて用いると予測し、本願発明者らは、本開示の実施形態が、本明細書において詳細に記載される方法以外の方法で実施されるものと考える。従って、適用法によって認められる限り、本明細書に添付の請求項には、記載される主題の全ての修正物及び均等物を含む。更に、主題の全ての可能な修正物に含まれる上に記載の構成要素群の任意の組み合わせは、別段の指定がない限り、または文脈上明らかに矛盾する場合を除き、本開示の範囲に包含される。
【0110】
本明細書において列挙される出版物、特許出願、及び特許を含むすべての参考文献は、参照されることにより、各参考文献が個々に、かつ詳細に提示されて、かつ参考文献の全内容が本明細書において述べられる場合と同程度に、参照されることにより本明細書に組み込まれる。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11