(57)【要約】【課題】キー生成のためのシステムおよび方法を提供する。【解決手段】データは、複数の鍵が、当該データを復号化するために必要となるように暗号化される。これらの鍵には、異なるエンティティからアクセス可能となることにより、単一のエンティティが、これらの鍵の全てにアクセスするということはできない。少なくとも１つの鍵がサービスプロバイダによって管理される。サービスプロバイダの顧客コンピュータシステムは、これらの鍵にアクセスできる種々のエンティティの間の通信を調整するように指示する実行可能命令群で構成することができる。その結果、１つの鍵に関連したセキュリティの危殆化だけでは、データの復号化が可能になることはない。【選択図】図１
2018170802.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、コンピュータ実行可能命令を有するメモリと、を備えるコンピュータによって実行される方法であって、前記コンピュータ実行可能命令が前記プロセッサによって実行されることで、前記コンピュータが、
コンピューティングリソースサービスプロバイダの顧客から、前記顧客からアクセス不能な管理鍵を用いて１つまたは複数の動作を実行するための要求を受信するステップであって、前記要求は、前記コンピューティングリソースサービスプロバイダが、前記コンピューティングリソースサービスプロバイダの顧客に代わって管理される他の鍵から前記管理鍵を選択することを可能にする情報を含む、ステップと、
前記顧客に、
データ鍵と、
前記管理鍵の下で暗号化されたデータ鍵と、
を提供するステップと、
前記顧客から、前記データ鍵の下で暗号化されたデータと、顧客鍵の下でさらに暗号化された前記管理鍵の下で暗号化されたデータ鍵と、を受信するステップと、
前記管理鍵および前記顧客鍵の下で暗号化されたデータ鍵と、前記データ鍵の下で暗号化された前記データと、を永続的ストレージに格納するステップであって、前記顧客鍵と、前記顧客からアクセス不能な前記管理鍵と、は、前記永続的ストレージからの平文形式の前記データにアクセスするために全体的には十分であるが個別的には不十分である複数の鍵のうちの一部である、ステップと、
を実行する、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１３年６月２０日に出願された同時係属中の米国特許出願第１３／９２２，８７５号に対する優先権を主張するものであり、この米国特許出願の内容が全て、本明細書において参照されることにより本明細書に組み込まれる。
【背景技術】
【０００２】
コンピューティングリソース及び関連データのセキュリティは、多くの状況において非常に重要である。一例として、組織は多くの場合、コンピューティングデバイス群が構成するネットワーク群を利用して、一連の堅牢なサービスを、これらの組織のユーザに提供する。ネットワーク群は、複数の地理的領域境界に跨って構築される場合が多く、かつ他のネットワーク群に接続される場合が多い。組織は、例えば組織の運用を、コンピューティングリソース群が構成する内部ネットワーク群、及び他の組織が管理するコンピューティングリソース群の両方を使用して支援する必要がある。組織のコンピュータ群は、例えば他の組織のコンピュータ群と通信して、別の組織のサービスを利用しながらデータにアクセスし、かつ／またはデータを供給することができる。多くの例では、組織はネットワーク群を、他の組織が管理するハードウェアを使用してリモートに構成して運用することにより、インフラストラクチャのコストを低減して他の利点を実現している。コンピューティングリソース群をこのようにして構成する場合、組織が保有するリソース群及びデータへのアクセスがセキュアであることを確実にすることは、特にこのような構成の規模及び複雑さが大きくなるにつれて、困難な解決課題となり得る。
【０００３】
多くの例では、種々のエンティティは、他のエンティティが提供するコンピューティングリソースサービス群を活用することが有利であることを見出している。このように活用する際に、多くの場合、データの転送、及びデータの格納が、サードパーティが制御するコンピューティングリソース内で行なわれる。データセキュリティを強化する環境を運用するためにこのようなサードパーティの労力が多大になっているにも拘わらず、正当に評価されているかどうかは別にして、信用が欠如していて、サードパーティが運用するサービス群を利用しようとする意欲が失われている。更に、サードパーティが運用するサービスを利用する組織は、組織が保有するデータのセキュリティを強化して、例えば、データへのアクセスがある悪意のある従業員または他者が起こり得るダメージをあまり起こさないようにしたいと考えるかもしれない。データを種々のエンティティの間で、組織を運営している間に移動させる場合、データのセキュリティを確保するのは普通、面倒であり、複雑であり、大量のリソースを消費する。
【０００４】
本開示による種々の実施形態は、これらの図面を参照して説明される。
【図面の簡単な説明】
【０００５】
【図１】本開示の種々の態様を示す概略図を示している。
【図２】種々の実施形態を実施することができる例示的な環境を示している。
【図３】少なくとも１つの実施形態による暗号化サービスを実行するために使用することができる環境の例示的な例を示している。
【図４】本開示の種々の態様を示す概略図の例示的な例を示している。
【図５】少なくとも１つの実施形態によるデータをセキュアに格納する方法の例示的な例を示している。
【図６】少なくとも１つの実施形態によるデータをセキュアに格納する方法の例示的な例を示している。
【図７】少なくとも１つの実施形態によるデータをセキュアに格納する方法の例示的な例を示している。
【図８】少なくとも１つの実施形態によるデータをセキュアに格納する方法の例示的な例を示している。
【図９】少なくとも１つの実施形態によるデータを格納するプロセスの例示的な例を示している。
【図１０】少なくとも１つの実施形態によるデータにアクセスするプロセスの例示的な例を示している。
【図１１】種々の実施形態を実施することができる環境を示している。
【発明を実施するための形態】
【０００６】
以下の説明では、種々の実施形態について説明する。説明のために、特定の構成及び詳細について記載して、これらの実施形態に対する完全な理解が得られるようにしている。しかしながら、この技術分野の当業者であれば、これらの実施形態は、特定の詳細を用いることなく実施することができることも理解できるであろう。更に、公知の特徴は、説明されている実施形態を不明瞭にすることがないように省略されるか、または簡略化されている可能性がある。
【０００７】
本明細書において記載され、かつ提案される方法は、データを暗号化して、単一のエンティティがデータに、許可なくアクセスすることが絶対に出来ないようにする方法に関するものである。幾つかの実施形態では、データを暗号化するプロセスでは、複数のエンティティが関与し、そしてごく普通に「ｋｅｙｓ（鍵）」とも称される複数の暗号化キーを使用する。使用するこれらの鍵には、別のエンティティからではなく、１つの関連エンティティからアクセス可能であり、全種類の鍵が、データの復号化を許可するために必要となる（例えば、データの復号化は、１種類以上の鍵を取得する必要を伴なうことなく、かつ許可なく行なわれる）。このように、鍵が危殆化した場合（例えば、無許可のエンティティが、当該鍵へのアクセスを得た場合）、当該鍵を使用してデータを復号化することができず、データを復号化するためには必ず、他のエンティティが保管する１種類以上の更に別の鍵にアクセスする必要があるようになっている。
【０００８】
幾つかの実施形態では、コンピューティングリソースプロバイダの顧客は、コンピューティングリソースサービスプロバイダがアクセスできない顧客鍵にアクセスできる。同様に、コンピューティングリソースサービスプロバイダは、顧客がアクセスできない管理鍵にアクセスできる。しかしながら、顧客は、要求をコンピューティングリソースサービスプロバイダに提示して、コンピューティングリソースプロバイダに指示することにより、暗号化処理を、管理鍵を用いて実行させることができる。これらの要求は、管理鍵を、当該管理鍵に関連する識別子で指定することができる。管理鍵は、顧客（及び、他のエンティティ）が絶対に管理鍵にアクセスできない状態を保ちながら、顧客について専用に管理することができる。種々の実施形態では、データは、顧客鍵及び管理鍵の両方の鍵が、データを復号化するために必要になるように暗号化される。幾つかの実施形態では、複数のコンピューティングリソースサービスプロバイダ（または、普通、複数のサードパーティエンティティ）は、暗号化プロセスにおいて、各サードパーティが専用に保持する鍵が、データの復号化を許可するために必要となるように利用される。
【０００９】
種々の実施形態では、コンピュータ可読記憶媒体は実行可能命令群を格納し、実行可能命令群が顧客コンピュータシステムの１つ以上のプロセッサで実行されると、実行可能命令群により、コンピュータシステムは、データフローを調整して当該データを、複数の鍵を使用して暗号化するようになる。コンピューティングリソースプロバイダが、種々のプログラミングモジュールを含むダウンロード可能なクライアントライブラリの一部のような実行可能命令群を供給することにより、コンピューティングリソースサービスプロバイダが提供するサービス群を利用することができる。別の例として、実行可能命令群は、ＪａｖａＳｃｒｉｐｔ（登録商標）の形式で、または別の解釈言語、及び／またはスクリプト言語の形式で表現することができる。複数の顧客は、実行可能命令群を利用して、暗号化プロセス及び／または復号化プロセスに関与する鍵を有する種々のエンティティの間のデータフローを調整して、これらの顧客のデータセキュリティを、１つのエンティティにおける危殆化では無許可データアクセスを行なうためには不十分であるようにすることにより強化することができる。
【００１０】
以下に更に詳細に説明するように、幾つかの実施形態では、システムは、１つ以上のプロセッサと、コンピュータメモリと、を含む１つ以上のコンピュータシステムを備え、当該メモリは命令群を含み、命令群が１つ以上のプロセッサで実行されると、命令群により、当該システムは種々の処理を実行するようになる。これらの処理には、（コンピューティングリソースサービスプロバイダの顧客のコンピューティングデバイスのような）クライアントから要求を受信して暗号化処理を、要求に指定される第１鍵を使用して実行することを挙げることができる。当該システムは、命令群に従って、当該要求に応じて、１つ以上のコンピュータシステムを運用するサービスプロバイダが制御する少なくとも１つの鍵を使用して暗号化された暗号化鍵を送信することができる。当該システムは更に、命令群に従って、暗号化鍵を使用して暗号化されたデータを受信することができ、暗号化鍵を使用して暗号化されたデータは更に、クライアント鍵で暗号化される。暗号化鍵を使用して暗号化されたデータを受信すると、当該システムは、命令群に従って、暗号化データに関連して１回以上の処理を、例えば暗号化データを１つ以上のデータストレージデバイスに永続的に格納することにより実行することができる。
【００１１】
図１は、本開示の種々の態様を示す概略図である。図１に示すように、本明細書において記載され、かつ提案される種々の方法は、暗号化データに適用することができる。具体的には、当該データは、本明細書において記載される種々の方法に従って暗号化することができるので、複数の鍵が、データを復号化するために必要になる。複数の鍵は、異なるエンティティによって保持することができるので、いずれの特定のエンティティも当該データを、当該エンティティがアクセスできるいずれの鍵を用いても復号化することができない。以下に更に詳細に説明するように、データを復号化するために必要な複数の鍵は、個別の鍵群とすることができる、かつ／または同じ鍵から生成される鍵群とすることができる。
【００１２】
図２は、本開示の種々の実施形態を実施することができる環境２００の例示的な例を示している。環境２００では、コンピューティングリソースサービスプロバイダ２０２は、多種多様なサービスを顧客２０４に提供することができる。顧客２０４は、組織であって、コンピューティングリソースサービスプロバイダ２０２が提供する種々のサービスを利用して、情報を保持することにより、当該組織の従業員に配信することができる、組織とすることができ、これらの従業員は、種々の地理的場所に位置することができる。更に、顧客２０４は、種々のサービスを利用してコンテンツを遠く離れた場所の作業グループに配信することができる個人とすることができる。図２に示すように、顧客２０４は、コンピューティングリソースサービスプロバイダ２０２と、インターネットのような１つ以上の通信ネットワーク２０６を介して通信することができる。顧客２０４からコンピューティングリソースサービスプロバイダ２０２への各種の通信を行なうと、コンピューティングリソースサービスプロバイダ２０２は、本明細書において記載される種々の方法、またはこれらの方法の変形例に従って動作するようになる。
【００１３】
上に説明したように、コンピューティングリソースサービスプロバイダ２０２は、種々のコンピューティングリソースサービスを、当該プロバイダの顧客群に提供することができる。コンピューティングリソースサービスプロバイダが提供するこれらのサービスは、この例では、仮想コンピュータシステムサービス２０８と、ブロックレベルデータストレージサービス２１０と、暗号化サービス２１２（鍵管理サービスとも称される）と、オンデマンドデータストレージサービス２１４と、１種類以上の他のサービス２１６と、を含むが、本開示の全ての実施形態が、このようなサービス群を全て含んでいる訳ではなく、更なるサービスを、本明細書において明示的に記載されるサービス群の他に、またはサービス群に代わって提供することができる。これらのサービスの各サービスは、１つ以上のウェブサービスインターフェースを含むことができ、これらのウェブサービスインターフェースにより顧客２０４は、適切に設定されるＡＰＩコールを種々のサービスに対して、ウェブサービス要求を通じて行なうことができる。更に、これらのサービスの各サービスは、１つ以上のサービスインターフェースを含むことができ、これらのサービスインターフェースにより、これらのサービスが互いにアクセスすることができる（例えば、仮想コンピュータシステムサービス２０８の仮想コンピュータシステムは、データをオンデマンドデータストレージサービスに格納するか、またはオンデマンドデータストレージサービスから取り出すことができ、かつ／またはブロックデータストレージサービスが提供する１つ以上のブロックレベルデータストレージデバイスにアクセスすることができる）。
【００１４】
仮想コンピュータシステムサービス２０８は、仮想マシンインスタンスを、仮想コンピューティングシステム上に、コンピューティングリソースサービスプロバイダ２０２の顧客群２０４に代わってインスタンス化するように構成されるコンピューティングリソース集合とすることができる。コンピューティングリソースサービスプロバイダ２０２の顧客群２０４は、（適切に設定され、かつ認証されたＡＰＩコールを通じて）仮想コンピュータシステムのサービスと対話して、仮想コンピュータシステム群をプロビジョニングして動作させることができ、これらの仮想コンピュータシステムは、コンピューティングリソースサービスプロバイダ２０２がホストして動作を行なわせる物理的コンピューティングデバイス群上でインスタンス化される。これらの仮想コンピュータシステムは、種々の目的に使用することができ、例えばウェブサイトをサポートするサーバとして動作する、ビジネスアプリケーションを動作させる、または普通、顧客のコンピューティングパワーとして機能することなどの目的である。これらの仮想コンピュータシステムの他の用途は、データベースの用途、電子商取引の用途、ビジネスの用途、及び／または他の用途をサポートするためのものである場合がある。
【００１５】
ブロックレベルデータストレージサービス２１０は、顧客２０４に関するデータを、ブロックレベルストレージデバイス群（及び／またはその仮想化デバイス）を使用して格納するように集合的に動作するコンピューティングリソース集合を含むことができる。ブロックレベルデータストレージサービス２１０のブロックレベルストレージデバイス群は、例えば仮想コンピュータシステムサービス２０８が提供する仮想コンピュータシステム群に動作可能に接続されることにより、これらのコンピュータシステムの論理ユニット群（例えば、仮想ドライブ群）として機能することができる。ブロックレベルストレージデバイスにより、対応する仮想コンピュータシステムが使用する、かつ／または生成するデータを永続的に格納することができ、この場合、仮想コンピュータシステムサービス２０８は、ほんの一時的にデータストレージとなることができる。
【００１６】
図２に示すように、コンピューティングリソースサービスプロバイダ２０２は、図３に関連して以下に更に詳細に説明される暗号化サービスを実施することができる。一般的に、暗号化サービスは、コンピューティングリソース集合とすることができ、これらのコンピューティングリソースは、コンピューティングリソースサービスプロバイダの顧客群の暗号化鍵を管理して使用するように集合的に構成される。暗号化サービス２１２が使用する鍵群は、これらの顧客が、要求を提示して（暗号化、復号化、及びメッセージ署名のような）暗号化処理及び／または鍵更新のような他の処理を実行する場合に参照することができる関連識別子を有することができる。暗号化サービスは、これらの暗号化鍵をセキュアに保持して、無許可の関係者によるアクセスを防止することができる。
【００１７】
コンピューティングリソースサービスプロバイダ２０２は更に、オンデマンドデータストレージサービスを含むことができる。オンデマンドデータストレージサービス２１４は、データを格納する及び／またはデータにアクセスする複数要求を同時に処理するように構成されるコンピューティングリソース集合とすることができる。オンデマンドデータストレージサービス２０８は、コンピューティングリソース群（例えば、データベース群）を使用して実施することができ、これらのコンピューティングリソースにより、オンデマンドデータストレージサービス２０８は、データの位置を特定してデータを迅速に取り出すことができるので、データを当該データに関する要求に応じて供給することができる。例えば、オンデマンドデータストレージサービスは、格納データを保持して、データオブジェクトに関する要求が取り出されると、当該データオブジェクトを当該要求に応じて供給することができる（または、データオブジェクトを流し始めることができる）。説明したように、オンデマンドデータストレージサービス２１４に格納されるデータは、体系化することによりデータオブジェクト群とすることができる。これらのデータオブジェクトは、場合によっては、サイズに対するある特定の制約を除き、任意のサイズを有することができる。従って、オンデマンドデータストレージサービス２１４は、種々のサイズの非常に多くのデータオブジェクトを格納することができる。オンデマンドデータストレージサービス２１４は、キーバリューストアとして実施することができ、このキーバリューストアはデータオブジェクト群を、これらのデータオブジェクトの識別子に関連付けることができ、これらの識別子を顧客２０４が使用して、オンデマンドデータストレージサービス２１０に格納されるデータオブジェクト群に関連する他の処理を取り出すか、または実行することができる。オンデマンドデータストレージサービス２１４には、暗号化サービス２１２からアクセス可能とすることもできる。例えば、幾つかの実施形態では、暗号化サービスは、オンデマンドデータストレージサービスを利用して、これらの顧客の鍵を暗号化方式で格納することができ、この場合、これらの顧客鍵を復号化するために使用することができる鍵群には、暗号化サービス２１２の特定のデバイス群からのみアクセス可能とすることができる。データストレージサービスに対する顧客、別のサービス、または他のエンティティからのアクセスは、適切に設定されるＡＰＩコールを通じて行なうことができる。
【００１８】
コンピューティングリソースサービスプロバイダ２０２は更に、１種類以上の他のサービス２１６を、当該プロバイダの顧客群２０４の要求に応じて保持することができる。例えば、コンピューティングリソースサービスプロバイダ２０２は、データベースサービスを、当該プロバイダの顧客群２０４のために保持することができる。データベースサービスは、コンピューティングリソース集合とすることができ、これらのコンピューティングリソースを集合的に動作させて、１種類以上のデータベースを一人以上の顧客２０４のために実行することができる。コンピューティングリソースサービスプロバイダ２０２の顧客群２０４は、データベースサービスのデータベースを、適切に設定されるＡＰＩコールを利用することにより運用して管理することができる。これにより今度は、顧客２０４は、これらの処理をデータベース内に保持して、おそらくはこれらの処理をスケーリングすることを可能にすることができる。他のサービスとして、限定されないが、オブジェクトレベルアーカイブデータストレージサービス、他のサービス群を管理する、かつ／または監視するサービス、及び／または他のサービスを挙げることができる。
【００１９】
上に論じたように、本開示の種々の実施形態は、暗号化サービスを提供することに関するものである。暗号化サービスは、上に説明したような暗号化サービスシステムにより提供することができる。従って、図３は、種々の実施形態による暗号化サービス３００の例示的な例を示している。図３に示すように、かつ上に論じたように、暗号化サービス３００は、フロントエンドシステム及びバックエンドシステムから論理的に構成される。フロントエンドシステム及びバックエンドシステムは共に、本明細書において記載される処理を実行するように構成される１つ以上のコンピュータシステムにより実現することができる。例えば、図３に示すように、暗号化サービス３００のフロントエンドシステムは、要求ＡＰＩ３０６及びポリシー設定ＡＰＩ３０８を実装する。要求ＡＰＩは１つの実施形態では、暗号化処理及び他の処理を要求して暗号化サービスで実行するように設定されるＡＰＩである。従って、要求をフロントエンドシステムに対して、要求ＡＰＩを介して行なうことにより、このような暗号化処理を暗号化サービスで実行することができる。
【００２０】
要求ＡＰＩは、処理可能な以下の例示的な上位要求により設定することができる：
ＣｒｅａｔｅＫｅｙ（ＫｅｙＩＤ）
Ｅｎｃｒｙｐｔ（ＫｅｙＩＤ，Ｄａｔａ，［ＡＡＤ］）
Ｄｅｃｒｙｐｔ（ＫｅｙＩＤ，Ｃｉｐｈｅｒｔｅｘｔ，［ＡＡＤ］）
Ｓｈｒｅｄ（ＫｅｙＩＤ）
ＲｅＫｅｙ（Ｃｉｐｈｅｒｔｅｘｔ，ＯｌｄＫｅｙＩＤ，ＮｅｗＫｅｙＩＤ）
【００２１】
ＣｒｅａｔｅＫｅｙ（ＫｅｙＩＤ）要求により、１つの実施形態では、暗号化サービスは、要求の中に特定されるＫｅｙＩＤで特定される鍵を生成するようになる。要求を受信すると、暗号化サービスは、鍵を作成して当該鍵をＫｅｙＩＤに関連付けることができる。ＫｅｙＩＤ群は、必ずではないが、独自の識別子とすることができることは周知のことであるはずである。例えば、ＫｅｙＩＤは、ある一群の鍵を特定することができる。例えば、幾つかの実施形態では、鍵交代が行なわれる。鍵交代では、使用する暗号を実際に解読するために十分な数の復号化データが収集されるのを防止するように鍵群を他の鍵群と取り替えることを含み得る。暗号化サービスとは異なるエンティティからの指示で実行される場合、ＣｒｅａｔｅＫｅｙ（ＫｅｙＩＤ）要求を使用して、暗号化サービスが新規の鍵を生成して、ＫｅｙＩＤで特定される古い鍵と取り替えることができる。古い鍵は、ＫｅｙＩＤで特定される状態を保つことができるが、例えば復号化（古い鍵を使用して既に暗号化されているデータの復号化）にしか使用することができず、その後の暗号化には使用することができない。別の例として、幾つかの実施形態では、暗号化サービスのユーザ群は、これらのユーザ固有の鍵識別子を与えることができるので、２人の異なる顧客が同じ識別子を与える可能性がある。このような例では、当該識別子で、鍵を一意的に特定することができない可能性がある、またはある一群の鍵を一意的に特定することができない可能性さえある。種々の対策を実施して、これを解決することができる。例えば、暗号化サービスのユーザに関連する識別情報または他の情報を使用して、正当な鍵または一群の鍵を特定することができる。更に他の実施形態では、暗号化サービスは、ＫｅｙＩＤをランダムに割り当てる、順番に割り当てることができる、またはいずれか他の方法を用いて割り当てることができる。
【００２２】
ＫｅｙＩＤが鍵を一意的に特定しない場合、種々のシステムを実施して、正しい機能を実行できることに留意されたい。例えば、種々の実施形態では、ＫｅｙＩＤで特定されるある一群の鍵は有限である。ＫｅｙＩＤで特定される鍵を使用した復号化処理が要求される場合、更なるデータ（例えば、暗号化が行なわれた時刻を示すタイムスタンプ）により、使用すべき正しい鍵を確認することができる。幾つかの実施形態では、暗号文は、鍵バージョンを示す情報を含むことができる。幾つかの実施形態では、可能な全通りの鍵を使用して、異なるデータ復号化を行なう。限られた数の鍵しかないので、正しい復号化は、与えられるこれらの鍵から選択することができる。幾つかの実施形態では、鍵を用いた復号化は、暗号化サービスで、暗号文が、当該鍵に少なくとも部分的に基づいて作成されなかったことを、例えば認証暗号化を使用することにより検出することができるように行なわれる。他の変形例も、本開示の範囲に含まれると考えられる。
【００２３】
Ｅｎｃｒｙｐｔ（ＫｅｙＩＤ，Ｄａｔａ，［ＡＡＤ］）要求を使用して、暗号化サービスで、指定データを、ＫｅｙＩＤで特定される鍵を使用して暗号化することができる。追加認証データ（ＡＡＤ）は、種々の目的に使用することができ、必ずしも暗号化される訳ではないが、例えば電子署名、メッセージ認証コード、または普通、ＡＡＤに含まれる鍵ハッシュ値で認証されるデータとすることができる。幾つかの実施形態では、ＡＡＤの少なくとも一部を含む暗号文が作成される。幾つかの他の実施形態では、ＡＡＤは、復号化中に個別に供給される。幾つかの他の実施形態では、ＡＡＤは、復号化時に、要求及び／または他のメタデータに少なくとも部分的に基づいて作成されて、復号化が、メタデータがパスするときにのみ無事に行なわれるようになる。幾つかの実施形態では、ポリシーは、暗号化処理を特定のＡＡＤに対して実行することができるかどうかについて制限することができる。Ｅｎｃｒｙｐｔ（ＫｅｙＩＤ，Ｄａｔａ，［ＡＡＤ］）要求の処理では、暗号化サービスによって強制されるプログラミングロジック及び／またはポリシーにより、ＡＡＤが特定の値を含むとともに、ＡＡＤが真正である（例えば、最初の送信が行なわれて以降は、変更されていない）ことが必要となる。同様に、Ｄｅｃｒｙｐｔ（ＫｅｙＩＤ，Ｃｉｐｈｅｒｔｅｘｔ，［ＡＡＤ］）要求を使用して、暗号化サービスで、指定暗号文を、ＫｅｙＩＤで特定される鍵を使用して復号化することができる。Ｄｅｃｒｙｐｔ（ＫｅｙＩＤ，Ｃｉｐｈｅｒｔｅｘｔ，［ＡＡＤ］）要求に含まれるＡＡＤは、上に説明した通りに使用することができる。例えば、Ｄｅｃｒｙｐｔ（ＫｅｙＩＤ，Ｃｉｐｈｅｒｔｅｘｔ，［ＡＡＤ］）の処理では、暗号化サービスによって強制されるプログラミングロジック及び／またはポリシーにより、ＡＡＤが特定の値を含むとともに、ＡＡＤが真正である（例えば、最初の送信が行なわれて以降は、変更されていない）ことが必要となり得る。
【００２４】
１つの実施形態では、Ｓｈｒｅｄ（ＫｅｙＩＤ）を使用して、暗号化サービスで、指定ＫｅｙＩＤで特定される鍵またはある１群の鍵を電子的に破棄することができる。電子的に破棄することは、当該鍵にアクセスできなくすることを含むことができる。例えば、Ｓｈｒｅｄ（ＫｅｙＩＤ）要求を使用して、暗号化システムが、１つ以上のハードウェアデバイスに命令して、ＳｅｃｕｒｅＥｒａｓｅ（セキュア消去）処理を、指定ＫｅｙＩＤで特定される１種類以上の鍵に対して実行させることができる。一般的に、ＫｅｙＩＤで特定される鍵（群）は、いずれかの適切な方法で、例えばデータに上書きして当該鍵を他のデータ（例えば、一連の０または１、或いはランダム符号列）で符号化することにより、かつ／または当該鍵の格納先の揮発性メモリの電源を落とすことにより、電子的に破棄することができる。鍵（群）が、１つの鍵で暗号化されて格納される場合、これらの鍵を暗号化するために使用される当該鍵は、電子的に破棄することができ、それにより、鍵（群）へのアクセス不能化を行なうことができる。幾つかの実施形態では、破棄処理により、破棄されたＫｅｙＩＤを示す復号化処理が、その後の所定の或る時点で故障し得る。鍵（群）への起こり得る全てのアクセスを確実に、かつ永続的に阻止する他の方法を用いてもよい。
【００２５】
１つの実施形態では、ＲｅＫｅｙ（Ｃｉｐｈｅｒｔｅｘｔ，ＯｌｄＫｅｙＩＤ，ＮｅｗＫｅｙＩＤ）要求を使用して、暗号化サービスで、暗号文を異なる鍵で暗号化することができる。暗号化サービスで、ＲｅＫｅｙ（Ｃｉｐｈｅｒｔｅｘｔ，ＯｌｄＫｅｙＩＤ，ＮｅｗＫｅｙＩＤ）要求を受信する場合、当該暗号化サービスで、ＯｌｄＫｅｙＩＤで特定される鍵を使用して、指定暗号文を復号化し、次にＮｅｗＫｅｙＩＤで特定される鍵を使用して、復号化した暗号文を暗号化することができる。ＮｅｗＫｅｙＩＤで特定される鍵が未だ存在しない場合、暗号化サービスで、使用すべき鍵を作成して、当該作成鍵を、上に説明したＣｒｅａｔｅ（ＫｅｙＩＤ）要求に関連して説明したようにして、指定ＮｅｗＫｅｙＩＤに関連付けることができる。幾つかの実施形態では、ＲｅＫｅｙ処理は、データを暗号化サービスの分離インスタンス群の間で転送することができるように機能させることができる。幾つかの実施形態では、ポリシーにより、ｒｅｋｅｙ処理を、暗号文に対して実行することができるが、同じ要求者が、暗号文を直接復号化することはできないかもしれない。幾つかの実施形態では、ＲｅＫｅｙは、暗号文の鍵を、第１アカウントに第１ＫｅｙＩＤで特定される鍵から、第２アカウントにＫｅｙＩＤで特定される鍵に変更する処理をサポートすることができる。
【００２６】
同様に、フロントエンドシステムは、ポリシー設定ＡＰＩを実装することができ、このポリシー設定ＡＰＩにより、１つの実施形態では、ユーザ群は、ポリシー群を設定して、暗号化処理及び他のポリシー関連処理を実行する要求を提示することができる。種々の実施形態では、ポリシー群は、鍵群、鍵グループ群、アカウント群、ユーザ群、及び他の論理エンティティ群に関連付けることができる。ポリシー設定ＡＰＩを介して設定することができる例示的なポリシー群が以下に提供される。１つの実施形態では、暗号化サービスポリシー設定ＡＰＩは、以下の要求を含む：
ＳｅｔＫｅｙＰｏｌｉｃｙ（ＫｅｙＩＤ，Ｐｏｌｉｃｙ）
Ｓｕｓｐｅｎｄ（ＫｅｙＩＤ，Ｐｕｂｌｉｃ  Ｋｅｙ）
Ｒｅｉｎｓｔａｔｅ（ＫｅｙＩＤ，Ｐｒｉｖａｔｅ  Ｋｅｙ）
【００２７】
１つの実施形態では、ＳｅｔＫｅｙＰｏｌｉｃｙ（ＫｅｙＩＤ，Ｐｏｌｉｃｙ）要求を使用して、暗号化サービスで、ポリシーを、ＫｅｙＩＤで特定される鍵（または、ある１群の鍵）に格納することができる。ポリシーは、要求される暗号化処理を特定の状況において実行することができるかどうかを決定する情報とすることができる。当該ポリシーは、ｅＸｔｅｎｓｉｎｂｌｅ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ（ＸＡＣＭＬ）、Ｅｎｔｅｒｐｒｉｓｅ  Ｐｒｉｖａｃｙ  Ａｕｔｈｏｒｉｚａｔｉｏｎ  Ｌａｎｇｕａｇｅ（ＥＰＡＬ）、Ａｍａｚｏｎ  Ｗｅｂ  Ｓｅｒｖｉｃｅｓ  Ａｃｃｅｓｓ  Ｐｏｌｉｃｙ  Ｌａｎｇｕａｇｅ、Ｍｉｃｒｏｓｏｆｔ  ＳｅｃＰｏｌのような宣言型アクセス制御ポリシー言語で符号化するか、または暗号化処理が実行されるために満たされる必要がある１つ以上の条件を符号化するいずれかの適切な方法で符号化することができる。ポリシー群は、いずれの処理を実行することができるか、いつ処理を実行することができるか、いずれのエンティティが、実行される処理に対する要求の許可を行なうことができるか、いずれの情報が、許可される特定の要求について必要とされるかなどについて規定することができる。更に、上に与えられるこれらの例の他に、またはこれらの例の代わりに、ポリシー群は、アクセス制御リスト、ユーザ群に関する優先権、及び／または演算用ビットマスクを使用して規定される、かつ／または強制されることができる。例示的なポリシー群を以下に示す。
【００２８】
幾つかの実施形態では、暗号化サービスは、中止処理を、例えばＳｕｓｐｅｎｄ（ＫｅｙＩＤ，Ｐｕｂｌｉｃ  Ｋｅｙ）ＡＰＩコールを用いてサポートすることができる。中止処理により、暗号化サービスの顧客は、運用者が暗号化サービスで鍵を使用するのを拒否する、または運用者が暗号化サービスで鍵にアクセスするのを拒否することができる。これは、秘密裏の正当な命令に懸念を持つ顧客にとって、または暗号化サービスの運用者が所定の処理を、鍵を使用して実行せざるを得ないような他の状況に懸念を持つ顧客にとって有用となり得る。これはまた、特定のデータをロックして、当該データにオンラインではアクセス不能にしたい顧客にとって有用となり得る。幾つかの実施形態では、中止処理では、公開鍵を顧客から受け取って、所定のＫｅｙＩＤで特定される鍵を、受け取った公開鍵で暗号化して、ＫｅｙＩＤで指定される鍵を破棄することにより、プロバイダは中止された鍵に、公開鍵に関連する秘密鍵が、例えばＫｅｙＩＤを指定するとともに秘密鍵を含むＲｅｉｎｓｔａｔｅ（ＫｅｙＩＤ，Ｐｒｉｖａｔｅ  Ｋｅｙ）ＡＰＩコールを用いて提供されない限りアクセスできなくなる。幾つかの他の実施形態では、中止処理では、指定ＫｅｙＩＤに関連する鍵を、暗号化サービスが管理し、かつ限定されないが、瞬時に中止処理するために生成される鍵を含む別の鍵を使用して暗号化することを含むかもしれない。この処理で作成される暗号文は、顧客に供給することができ、暗号化サービス内に保持することはできない。次に、ＫｅｙＩＤで特定される元の鍵を破棄することができる。暗号化サービスは、供給される暗号文を受信して、中止された鍵を再び取り込むように機能することができる。幾つかの実施形態では、暗号文は、暗号化サービスから、復号化された暗号文が顧客に返送されるのを防止するように作成することができる。
【００２９】
図３に示すように、暗号化サービス３００はバックエンドシステム３０２を含み、このバックエンドシステム３０２自体が、幾つかの実施形態では、種々のコンポーネントを備える。例えば、バックエンドシステム３０２は、この例では、要求処理システム（要求処理ユニットまたは要求処理コンポーネントとも称される）３０４を含み、この要求処理システム３０４は、暗号化サービス３００のサブシステムとすることができ、このサブシステムは、処理を、要求ＡＰＩ３０６またはポリシー設定ＡＰＩ３０８のいずれかを介して受信する要求に応じて実行するように構成される。例えば、要求処理コンポーネントは、要求ＡＰＩを介して受信する要求を受信することができ、ポリシー設定ＡＰＩは、このような要求が真正であり、従って要求を満たすことができるかどうかを判断して、これらの要求を満たすことができる。要求を満たすことは、例えば暗号化処理を実行すること、及び／または実行してしまっていることを含む。要求処理ユニットは、認証インターフェース３１０と対話するように構成することができ、この認証インターフェース３１０により、要求処理ユニットは要求が真正であるかどうかを判断することができる。認証インターフェースは、認証システムと対話するように構成することができ、この認証システムは、コンピューティングリソースサービスプロバイダの複数のサービスが利用する認証システムとすることができる。例えば、要求を要求処理ユニットが受信すると、要求処理ユニットは、認証インターフェースを利用して認証サービスと対話することができ、この認証サービスは、該当する場合には、認証証明を付与することができ、この認証証明を使用して暗号化処理を実行することができる。要求処理システム３０４は更に、コンピューティングリソースサービスプロバイダの他のサービス群と対話することができるインターフェースを備えるように構成することができる。例えば、顧客鍵が、暗号化方式でデータストレージサービスに格納される実施形態では、要求処理システム３０４は、ＡＰＩコールをデータストレージサービスに提出して顧客鍵を必要に応じて取得することができる。暗号化サービスでは更に、顧客鍵を暗号化方式でローカルデータストレージシステムに格納する、または暗号化方式または非暗号化方式で、以下に説明する１つ以上のセキュリティモジュール３１２に格納することができる。
【００３０】
暗号化サービス３００のバックエンドシステムは、この例示的な例では、複数のセキュリティモジュール群３１２（暗号化モジュール群）と、ポリシー強制モジュール３１４と、調整モジュール３１６と、を含む。調整モジュールは、これらのセキュリティモジュール３１２を調整するように構成されるシステムとすることができる。例えば、幾つかの実施形態では、調整モジュールは、暗号化ドメイン（簡単に「ｄｏｍａｉｎ（ドメイン）」とも称される）の構成要素として特定されるセキュリティモジュール群３１２が確実に、当該ドメインに一致する処理パラメータ群に従って動作するように構成される。一例として、各セキュリティモジュールは、当該ドメインに対応するドメイン鍵にアクセスすることができる。顧客鍵は、ドメイン鍵で暗号化することができ、これらのセキュリティモジュールの外部に格納する（例えば、バックエンドシステムに格納する及び／またはデータストレージサービスを使用して格納する）ことができるので、これらのセキュリティモジュール３１２は、セキュリティモジュール群が使用し得る全ての顧客鍵を格納する必要を伴なうことなく動作することができる。簡単に言うと、顧客が、暗号化処理をＫｅｙＩＤで特定される鍵を使用して実行するように要求する場合、ＫｅｙＩＤで特定される暗号化顧客鍵をセキュリティモジュールに供給することができ、このセキュリティモジュールがドメイン鍵を使用して、顧客鍵を復号化し、そして復号化顧客鍵を使用して、要求された処理を、復号化顧客鍵を使用して実行することができる。
【００３１】
別の例として、調整モジュール３１６は、セキュリティモジュール群３１２がそれぞれ確実に、一連の共通ルールを承認前に（例えば、再設定前に）更新後の一連の処理パラメータに強制するように構成することができる。例えば、各セキュリティモジュールは、処理パラメータ群に対するある特定の変更を許可するために十分な１つ以上の演算子集合を規定する定足数ルール（ｑｕｏｒｕｍ  ｒｕｌｅ）を強制することができ、これらの変更として、例えばドメイン鍵に対する変更（例えば、ドメイン鍵を交代させるための変更）、ドメインを含む一連のセキュリティモジュールの構成要素に対する変更、ドメインのための演算子集合に対する変更（例えば、ドメインに変更を加えることに関わることを許可された変更）などを挙げることができる。
【００３２】
図３に記載される実施形態では、セキュリティモジュール群のうちの１つ以上のセキュリティモジュールはハードウェアセキュリティモジュール群とすることができるが、種々の実施形態では、セキュリティモジュールは、本明細書において記載される機能を有するように構成される任意の適切なコンピュータデバイスとすることができる。各セキュリティモジュールは、１つの実施形態では、ＫｅｙＩＤ群に関連する複数の鍵を格納する、かつ／またはＫｅｙＩＤ群に関連する外部格納鍵群が暗号化される際に使用される鍵群を格納するかのいずれかである。各セキュリティモジュールは、これらの鍵をセキュアに格納して、暗号化サービス３００の他のコンポーネント群、及び／または他のシステムの他のコンポーネント群からアクセス不能にするように構成することができる。例えば、セキュリティモジュール群が上に説明したようなドメイン鍵群を格納する幾つかの実施形態では、１つのドメインのセキュリティモジュール群だけが、対応するドメイン鍵を格納することができる。全ての他のエンティティは、ドメイン鍵にアクセスできない。
【００３３】
種々の実施形態では、セキュリティモジュール群のうちの幾つかのセキュリティモジュールまたは全てのセキュリティモジュールは、少なくとも１つのセキュリティ規則を遵守する。例えば、幾つかの実施形態では、セキュリティモジュール群はそれぞれ、ＦＩＰＳ刊行物１４０−２に概説されている１種類以上のセキュリティレベルのような、ＦＩＰＳ（米国連邦情報処理規格）刊行物１４０−１及び／または１４０−２に概説されているＦｅｄｅｒａｌ  Ｉｎｆｏｒｍａｔｉｏｎ  Ｐｒｏｃｅｓｓｉｎｇ  Ｓｔａｎｄａｒｄ（ＦＩＰＳ：米国連邦情報処理規格）に準拠していることが証明されている。更に、幾つかの実施形態では、各セキュリティモジュールは、Ｃｒｙｔｏｇｒａｐｈｉｃ  Ｍｏｄｕｌｅ  Ｖａｌｉｄａｔｉｏｎ  Ｐｒｏｇｒａｍ（ＣＭＶＰ：暗号モジュール認証プログラム）で認証されている。上に説明したように、セキュリティモジュールは、ハードウェアセキュリティモジュール（ＨＳＭ）として、またはＨＳＭの幾つかの機能または全ての機能を有する別のセキュリティモジュールとして実装することができる。幾つかの実施形態では、認証されたモジュールを使用してブートストラップ処理を行なう。幾つかの実施形態では、顧客群は、認証されたモジュール群に格納され、かつ認証されたモジュール群によってのみ処理される幾つかの鍵、及びソフトウェアで処理される他の鍵を設定することができる。幾つかの実施形態では、これらの種々の選択肢に関連する性能またはコストは異なり得る。
【００３４】
セキュリティモジュール群は、暗号化処理を、要求処理ユニット３０４から供給される命令群に従って実行するように構成することができる。例えば、要求処理ユニットは、暗号文及びＫｅｙＩＤを適切なセキュリティモジュールに、当該セキュリティモジュールに対する命令群を添付して供給することにより、ＫｅｙＩＤに関連する鍵を使用させて暗号文を復号化させ、それに応じて平文を生成させることができる。顧客鍵がセキュリティモジュール群の外部に格納される実施形態では、要求処理ユニット３０４は、ＫｅｙＩＤで特定される暗号化鍵にアクセスする（例えば、ローカルストレージシステムまたは外部暗号化サービスから）ことができ、当該暗号化鍵をセキュリティモジュールに供給することができ、このセキュリティモジュールが次に、当該鍵を復号化し、次に当該鍵を使用することができる。
【００３５】
１つの実施形態では、暗号化サービス３００のバックエンドシステムは、鍵空間を形成する複数の鍵をセキュアに格納する。セキュリティモジュール群の各セキュリティモジュールは、全ての鍵を鍵空間に格納することができる。しかしながら、種々変形例が、本開示の範囲内で想到される。例えば、セキュリティモジュール群の各セキュリティモジュールは、鍵空間の部分空間を保持することができる。セキュリティモジュール群が保持する鍵空間の部分空間群は、これらの鍵が、セキュリティモジュール群全体に亘って余分に格納されるように重複させることができる。幾つかの実施形態では、ある特定の鍵は、指定された地理的な地域にのみ格納することができる。幾つかの実施形態では、ある特定の鍵には、特定の認証レベルまたは認可レベルを有する運用者からのみアクセス可能にすることができる。幾つかの実施形態では、ある特定の鍵は、特定のサードパーティプロバイダがデータストレージサービスのプロバイダとの契約に従って運用するモジュールに格納することができ、かつ当該モジュールにのみ使用することができる。幾つかの実施形態では、セキュリティモジュール群を積極的に制御するためには、顧客が許可して更に別のエンティティを強制的に参加させるか、または更に別の管轄区域を介入させて行動を強制するのではなく、正当な命令で、鍵の使用を強制しようと努める必要がある。幾つかの実施形態では、顧客には、顧客の暗号文が格納されて顧客の鍵が格納される管轄区域に関する個別の選択肢が提供される。幾つかの実施形態では、鍵を格納するセキュリティモジュール群は、監視情報をこれらの鍵の所有者に提供するように構成することができ、セキュリティモジュール群は、作成され、かつ提供されるこのような監視情報が顧客によってもみ消されることがないように構成することができる。幾つかの実施形態では、セキュリティモジュール群は、顧客が作成する署名を独自に証明して、（例えば、セキュリティモジュール群をホストする）プロバイダが、処理をセキュリティモジュール群に格納される鍵を利用して実行することができないように構成することができる。更に、幾つかのセキュリティモジュールは、鍵空間の全てを保持することができ、幾つかのセキュリティモジュールは、鍵空間の部分空間群を保持することができる。他の変形例も、本開示の範囲内で想到される。異なるセキュリティモジュールが、鍵空間の異なる部分空間を保持する例では、要求処理ユニットは、例えば関連付けテーブルまたは他の機構を用いて、いずれのセキュリティモジュールに指示して、暗号化処理を種々の要求に応じて実行させるかを判断するように構成することができる。
【００３６】
１つの実施形態では、ポリシー強制モジュール３１４は、情報を要求処理ユニットから取得して、当該情報に少なくとも部分的に基づいて、ＡＰＩを介して受信する要求を実行することができるかどうかを判断するように構成される。例えば、暗号化処理を実行する要求が要求ＡＰＩを介して受信される場合、要求処理ユニットは、ポリシー強制モジュールと対話して、要求を満たす処理が、要求内に指定されたＫｅｙＩＤに適用可能なポリシーのようないずれかの適用可能なポリシー、及び／または要求者に関連するポリシーのような他のポリシーに従って許可されるかどうかを判断することができる。ポリシー強制モジュールが、要求を満たす処理を許可する場合、要求処理ユニットは、それに応じて、適切なセキュリティモジュールに指示して暗号化処理を、要求を満たすように実行させることができる。
【００３７】
本明細書において説明される全ての図と同じように、非常に多くの変形例が、本開示の範囲内で想到される。例えば、図３は、セキュリティモジュール群とは別体のポリシー強制モジュールを示している。しかしながら、各セキュリティモジュールは、別体として図示されるポリシー強制モジュールの他に、またはポリシー強制モジュールの代わりに、１つのポリシー強制モジュールを含むことができる。従って、各セキュリティモジュールは、ポリシーを強制するように独自に構成することができる。更に、別の例として、各セキュリティモジュールは、別体のポリシー強制モジュールが強制するポリシー群とは異なるポリシー群を強制する１つのポリシー強制モジュールを含むことができる。非常に多くの変形例が、本開示の範囲内で想到される。
【００３８】
図３に示すように、暗号化サービス３００はログ記録モジュール３１８を含むことができる。ログ記録モジュールは、種々の動作を、暗号化サービスの種々の処理を追跡する処理に関連して実行するように構成されるシステムとすることができる。例えば、要求ＡＰＩ３０６に提示される要求は、ログ記録モジュール３１８によって他のデータに関連付けて記録することができ、他のデータとして、例えば要求のたびに、要求が顧客に代わり偽装して提示された当該顧客の識別子、要求を送信した顧客（例えば、従業員または契約者）に関連する識別情報、要求の種類（例えば、幾つかのＡＰＩコール種別のうちのいずれのコール種別が使用されたか）、要求が承認されたかどうかに関する情報、要求が満たされたかどうかに関する情報、要求が承認されなかった全ての理由（該当する場合）に関する情報、要求を満たすために使用される鍵の識別子などを挙げることができる。ログ記録モジュールは更に、ＫｅｙＩＤ群で特定される鍵のカウンタを維持するように構成することができる。１回以上の処理が鍵を使用して実行されたことを示す情報をログ記録モジュールが受信すると、ログ記録モジュールは、鍵のカウンタをそれに応じて更新することができる。カウンタは、暗号化鍵の破損に影響する種類の処理に対応して更新することができる。例えば、暗号化処理により、カウンタが大きくなるのに対し、復号化処理によって大きくなることがない。幾つかの実施形態では、カウンタは、ログ記録モジュールによって維持されないが、カウンタは、ログに、ログ記録モジュールからアクセスして、実行された処理の回数を計算することにより更新されることになることに注目されたい。
【００３９】
図４は、本開示の種々の態様を示す概略図を示している。図４に示すように、サービスプロバイダ４０２は、種々のサービスをサービスプロバイダの顧客群４０４に提供する。図４に示すように、サービスプロバイダ４０２は、顧客４０４がアクセスできない管理鍵４０６にアクセスできる。同様に、顧客４０４は、サービスプロバイダ４０２がアクセスできない顧客鍵４０８にアクセスできる。本明細書において記載される鍵、または普通、全ての鍵は、１種類以上の暗号鍵に使用することができるように構成されるデータとすることができる。データは、顧客４０４とサービスプロバイダ４０２との間で、顧客４０４が、サービスプロバイダ４０２が提供するこれらのサービスを利用することに関連して送信することができる。サービスプロバイダ４０２と顧客４０４との間で授受されるデータは、受信側ではなく送信側がアクセスできる鍵を使用して暗号化することができる。例えば、図４に示すように、データ４１０は、サービスプロバイダ４０２が管理鍵４０６で暗号化して、暗号化形式で顧客４０４に送信される。同様に、以下に更に詳細に説明されるデータ４１２は、データ４１０に関連付けることができ、顧客鍵４０８を使用して暗号化されて、暗号化形式でサービスプロバイダ４０２に送信される。このようにして、顧客４０４はデータ４１０を、管理鍵４０６にアクセスできない結果として復号化することができない。同様に、サービスプロバイダ４０２は、顧客鍵４０８を使用して暗号化されているデータ４１２を、サービスプロバイダ４０２が顧客鍵４０８にアクセスできない結果として復号化することができない。
【００４０】
図４に示すように、環境４００は、アクセス障壁を、顧客ネットワークとプロバイダネットワークとの間に含む。アクセス障壁は、顧客ネットワークとプロバイダネットワークとの間の論理的障壁及び／または物理的障壁とすることができ、一方のネットワークのデータに、他方のネットワーク内のデバイス群から自由にアクセス可能にはならないようになっている。例えば、顧客ネットワーク及びプロバイダネットワークは、公衆通信ネットワークによって分離することができる。顧客ネットワーク及びプロバイダネットワークはそれぞれ、１つ以上のファイアウォール、ポリシー管理システム、アクセス制御機構、及び／または他のアクセス制御機構を用いることにより、アクセスを制限することができる。アクセス障壁は、顧客４０４とプロバイダ４０２との間の全てのデータアクセスを制限する必要はないが、他のアクセスを制限しながら一部のアクセスを自由に許可することができることに注目されたい。例えば、サービスプロバイダは、公にアクセス可能なウェブサービスインターフェースを利用することができる。しかしながら、サービスプロバイダ４０２は、プロバイダネットワークを、管理鍵４０６に顧客４０４からアクセス可能にならないように構成することができる。同様に、顧客４０４は、顧客ネットワークを、顧客鍵４０８にサービスプロバイダ４０２からアクセス不能となるように構成することができる。顧客ネットワーク及びプロバイダネットワークは、完全に分離されたネットワーク群とする必要はないことに留意されたい。例えば、顧客ネットワークの一部の部分または全部を、プロバイダネットワークのコンピューティングリソース群がホストすることができる。例えば、ネットワークの一部の部分または全部は、サービスプロバイダ４０２がホストする物理的コンピュータシステム群からなる重複ネットワークとして実現することができる。顧客ネットワークは、サービスプロバイダ４０２のハードウェアリソース群によって仮想コンピュータシステムサービスの一部として実行される１つ以上の仮想コンピュータシステムを備えることができる。他の変形例も、本開示の範囲内で想到される。
【００４１】
図５は、本開示の１つの実施形態を示す概略図を示している。図５の概略図は、顧客ネットワーク５０２及びプロバイダネットワーク５０４を備える環境を示しており、この場合、顧客及びプロバイダは上に説明した通りとすることができる。顧客ネットワークは顧客５０６が（ローカルで、かつ／またはリモートで）管理することができ、人物の姿で図示される顧客５０６は、組織としてもよい。プロバイダは、サービスを顧客５０６に提供するサービスプロバイダとすることができ、幾つかの実施形態では、プロバイダは、コンピューティングリソースサービスプロバイダである。上に論じたように、顧客ネットワーク５０２及びプロバイダネットワーク５０４は、アクセス障壁によって分離される。論じたように、アクセス障壁は、１つ以上の物理的障壁及び／または論理的障壁を顧客ネットワーク５０２とプロバイダネットワーク５０４との間に含むことができる。以下に更に詳細に論じるように、顧客５０６は、データをサービスプロバイダとの間で送受信することができる。顧客５０６、一般的に、本明細書において記載される顧客は、このようなデータを、コンピュータ可読記憶媒体に組み込まれるコンピュータ可読命令群に従って送信することができ、これらの命令は、顧客５０６のコンピュータシステムで実行される。
【００４２】
顧客５０６のコンピュータシステムは、以下に列挙されるコンピューティングデバイス群のいずれかのコンピューティングデバイスのようなコンピューティングデバイスとすることができる。幾つかの実施形態では、顧客のコンピュータシステムはモバイルデバイス（例えば、携帯電話機及び／またはタブレットコンピューティングデバイス）である。モバイルデバイスは、鍵群（例えば、顧客鍵群）を格納して、鍵群を、ユーザに関連する複数のモバイルデバイス（例えば、ユーザの携帯電話機、パーソナルコンピュータ、及びタブレットコンピューティングデバイス）の間で同期させるように構成することができる。同期は、１種類以上の企業向け同期製品を利用して行なわれる。同期を行なう際に、Ｂｌｕｅｔｏｏｔｈ（登録商標）、近距離無線通信（ＮＦＣ）、または別のローカル通信方法のような１種類以上の通信方法を利用することができる。更に、クライアント５０６のコンピュータシステムへの／コンピュータシステムからの種々の通信は、クライアントコンピュータシステム上で実行されるブラウザまたは他のアプリケーションにより調整することができる。ブラウザ及び／または他のアプリケーションは、暗号化サービス及びデータストレージサービスとの通信を、顧客にコンピューティングリソースサービスプロバイダのサーバから供給される実行可能命令群に従って調整することができる。例えば、コンピューティングリソースサービスプロバイダは、実行可能コードをＪａｖａＳｃｒｉｐｔ（登録商標）または別のスクリプト言語のようなアクティブコンテンツ形式で供給することができる。
【００４３】
図５に示すように、ＣＫと略記される顧客鍵にアクセスできる顧客５０６は、要求を暗号化サービス５０８に提示して、ＤＫと略記されるデータ鍵を取得する。暗号化サービス５０８は、要求の認証を行なって、真正である場合に、データ鍵を含む応答、及び管理鍵で暗号化されたデータ鍵（｛ＤＫ｝MK）を供給することができ、この場合、管理鍵は、上に説明したように、暗号化サービス５０８が顧客に代わって管理する鍵とすることができる。表記｛Ａ｝Bは、データＡが鍵Ｂで暗号化されることを示すことに留意されたい。別の表現をすると、｛Ａ｝Bは、暗号鍵に入力Ｂを適用する処理に少なくとも部分的に基づいて取得されるデータを示している。｛Ａ｝Bは、必ずではないが、暗号鍵の直接的な出力とすることができ、間接的な出力とすることもできることに留意されたい。例えば、暗号をＡに鍵Ｂを使用して適用して得られる出力は、場合によっては別の鍵を用いる更に別の暗号への入力とすることができる。図５に示す管理鍵は、ＭＫと略記される。
【００４４】
データ鍵及び管理鍵で暗号化されたデータ鍵を暗号化サービス５０８から受信すると、顧客５０６は、データ鍵を使用してデータを暗号化することができ、そして顧客固有の顧客鍵を使用して、管理鍵で暗号化されているデータ鍵を暗号化することができる。更に、データを、データ鍵を使用して暗号化した後、顧客５０６は、データ鍵を、例えばデータ鍵を格納している全てのメモリに上書きできるようにすることにより、電子的に破棄することができる。一般的に、データ鍵は、顧客が、データ鍵への直接的なアクセスを失効する（すなわち、顧客は、平文のデータ鍵にアクセスするためには１回以上の暗号化処理を実行する必要がある、かつ／または実行してしまっている必要がある）ようないずれかの適切な方法で破棄することができる。このようにして、データ鍵には、管理鍵及び顧客鍵の両方にアクセスできる場合にのみアクセス可能になり、このためには、複数のエンティティによる協同動作が必要であり、これらのエンティティの各エンティティは、以下に説明するように、両方の鍵にアクセスできない。
【００４５】
次に、顧客は、データ鍵で暗号化されたデータ、及び管理鍵及び顧客鍵で暗号化されたデータ鍵を保持することができる。例えば、図５に示すように、顧客は、データ鍵で暗号化されたデータ、及び管理鍵及び顧客鍵の両方の鍵で暗号化されたデータ鍵（例えば、｛｛ＤＫ｝MK｝CK）を、サービスプロバイダが運用するデータストレージサービス５１０に送信する。データ鍵で暗号化されたデータ｛Ｄａｔａ｝DK、及び管理鍵及び顧客鍵の両方の鍵で暗号化されたデータ鍵｛｛ＤＫ｝MK｝CKは、他の方法で保持してもよい。例えば、｛Ｄａｔａ｝DK及び｛｛ＤＫ｝MK｝CKは、顧客が、ローカルに顧客ネットワーク５０２内のデバイスに格納することができる、または図示されない異なるサービスプロバイダのデータストレージサービスを利用して格納することができる。｛Ｄａｔａ｝DK及び｛｛ＤＫ｝MK｝CKは、例えば組み合わせて、単一のデータオブジェクトとして（例えば、｛Ｄａｔａ｝DK及び｛｛ＤＫ｝MK｝CKを分離して、｛Ｄａｔａ｝DKを｛｛ＤＫ｝MK｝CKから区別できる区切り文字を用いて）格納することにより、互いに関連付けて格納することができる。別の構成として、｛Ｄａｔａ｝DK及び｛｛ＤＫ｝MK｝CKはそれぞれ、互いに関連付けられる個別のデータオブジェクト群として格納することができ、この場合、関連付けは、データベースにより保持する、かつ／または一方のデータオブジェクトまたは両方のデータオブジェクトに格納されるデータ（例えば、基準情報）により保持することができる。更に、｛Ｄａｔａ｝DK及び｛｛ＤＫ｝MK｝CKは、同じ場所に格納される必要はない。例えば、顧客は、｛｛ＤＫ｝MK｝CKをローカルに格納することができるが、データストレージサービス５１０または別のデータストレージサービスを利用して｛Ｄａｔａ｝DKを格納してもよい。他の変形例も、本開示の範囲内で想到される。
【００４６】
図６は、本開示による別の実施形態を示す例示的な概略図を示している。図６に示す概略図では、環境は、顧客ネットワーク６０２と、第１プロバイダネットワーク６０４と、第２プロバイダネットワーク６０６と、を含む。顧客ネットワーク６０２及び第１プロバイダネットワーク６０４は、図５に関連して上に説明した顧客ネットワーク５０２及びプロバイダネットワーク５０４のようなネットワークとすることができる。第２プロバイダネットワーク６０６は、上に説明したようなネットワークとすることができるが、第１プロバイダネットワーク６０４のサービスプロバイダとは異なるエンティティによって運用することができる。更に、第１プロバイダネットワーク６０４及び第２プロバイダネットワーク６０６は、例えば異なるフォーマットのＡＰＩコールをサポートすることにより、かつ／または要求に異なる処理を施すことにより、異なる動作を行なうことができる。図６に示すように、顧客ネットワーク６０２、第１プロバイダネットワーク６０４、及び第２プロバイダネットワーク６０６は上に説明したように、アクセス障壁によって分離される。
【００４７】
図６に示すように、顧客６０８は要求を第１プロバイダ暗号化サービス６１０に提示してデータ鍵を要求する。要求は、図５に関連して説明したように、例えば適切に設定されるウェブサービスＡＰＩコールとして提示することができる。図５に関連して上に説明した構成と同様に、第１プロバイダ暗号化サービス６１０は、第１サービスプロバイダが顧客に代わって管理する管理鍵にアクセスすることができる。図６では、第１サービスプロバイダが管理する管理鍵は、ＭＫ１と略記され、図６に関連して、「ｆｉｒｓｔ  ｍａｎａｇｅｄ  ｋｅｙ（第１管理鍵）」とも称される。データ鍵が要求されると、第１プロバイダ暗号化サービス６１０は、データ鍵、及び第１管理鍵で暗号化されたデータ鍵、すなわちＤＫ及び｛｛ＤＫ｝MK1｝を含む応答を要求に応じて返すことができる。
【００４８】
図５に関連して上に説明したように、顧客は、第１サービスプロバイダから受信するデータ鍵を用いてデータを暗号化するためにデータ鍵を使用することができる。次に、顧客６０８は、要求を第２プロバイダ暗号化サービス６１２に提示して、データ鍵で暗号化されたデータ（｛Ｄａｔａ｝）を、図にＭＫ２と略記される第２管理鍵を使用して暗号化することができる。第２プロバイダ暗号化サービス６１２は、要求に応答して、データ鍵で暗号化されたデータ｛Ｄａｔａ｝DKを暗号化することができる。具体的には、第２プロバイダ暗号化サービス６１２は、｛Ｄａｔａ｝DKを、第２管理鍵ＭＫ２を使用して暗号化することができ、顧客６０８からの要求に応答して、データ鍵で暗号化され、かつ第２管理鍵で暗号化されたデータ｛｛Ｄａｔａ｝DK｝MKを返すことができる。次に、顧客６０８は、要求を第１サービスプロバイダのデータストレージサービス６１４に提示して、データ鍵及び第２管理鍵の両方の鍵で暗号化されたデータ、及び第１管理鍵で暗号化されたデータ鍵を格納することができる、すなわち｛｛Ｄａｔａ｝DK｝MK2及び｛｛ＤＫ｝MK1｝を格納する要求を提示することができる。図５と同じように、かつ本明細書において例示される他のプロセスと同じように、｛｛Ｄａｔａ｝DK｝MK2を格納する第１要求、及び｛｛ＤＫ｝MK1｝を格納する第２要求のような複数の要求を提示することができる。
【００４９】
このようにして、データにアクセスするためには、データ鍵ＤＫにアクセスするための第１管理鍵ＭＫ１、及びデータにアクセスするための第２管理鍵ＭＫ２の両方の鍵を使用する必要がある。
【００５０】
本明細書において記載される他の実施形態と同じように、更に別の変形例が、本開示の範囲内で想到される。例えば、図６に示す実施形態に代わる別の構成として、顧客６０８は、第２プロバイダ暗号化サービス６１２が、データ鍵で暗号化されたデータではなく、第１管理鍵で暗号化されたデータを暗号化するように要求することができる。応答は、第２プロバイダ暗号化サービスからそれに応じて返すことができる、すなわち、応答は｛｛ＤＫ｝MK1｝MK2を含むことができる。顧客用に暗号化されたデータが、例えば第２プロバイダ暗号化サービスのデータストレージサービスにおける顧客６０８のローカルデータストア、及び／または他の場所に保持されるような他の変形例は、本開示の範囲内で想到される。
【００５１】
図７は、本開示の別の実施形態を示す概略図を示している。図示のように、概略図は、顧客ネットワーク７０２と、プロバイダネットワーク７０４と、を含む環境を示しており、これらのネットワークは、上に説明したようなネットワーク群とすることができ、かつ上に説明したように、アクセス障壁によって分離することができる。図７に示すように、顧客７０６は、ＣＫと略記される顧客鍵にアクセスすることができる。図５に関連して上に説明した実施形態とは異なり、図７では、プロバイダネットワーク７０４を運用するサービスプロバイダは、データを暗号化するために使用されるＤＫと略記されるデータ鍵に決してアクセスすることができない。図７に示す実施形態では、顧客７０６は、データ鍵に、例えばデータ鍵自体を作成することにより、またはデータ鍵を、不図示の別のサービスプロバイダのような別のエンティティから受け取ることによりアクセスできる。
【００５２】
図示の実施形態では、顧客７０６は、要求を、プロバイダネットワーク７０４を運用するサービスプロバイダの暗号化サービス７０８に提示する。上に説明したように、要求は、顧客鍵で暗号化されたデータ鍵を暗号化するように適切に設定されるＡＰＩコールとすることができる。顧客は、例えば顧客鍵を使用して、データ鍵を暗号化して、顧客鍵で暗号化されたデータ鍵を暗号化サービス７０８に、要求で提供しまっている可能性がある。暗号化サービス７０８は要求に、顧客鍵で暗号化されたデータ鍵を、上に説明したような顧客７０６に対応する管理鍵を使用して暗号化することにより応答することができる。従って、応答は、顧客鍵及び管理鍵の両方の鍵で暗号化されたデータ鍵、例えば｛｛ＤＫ｝CK｝MKを含むことができる。次に、顧客は、データ鍵で暗号化されたデータ、及び顧客鍵及び管理鍵の両方の鍵で暗号化されたデータ鍵を保持することができる。このようにして、顧客鍵及び管理鍵の両方の鍵が、データ鍵にアクセスしてデータを復号化するために必要となる。顧客は、例えばデータ鍵で暗号化されたデータ、及び顧客鍵及び管理鍵の両方の鍵で暗号化されたデータ鍵を、プロバイダネットワーク７０４を運用するサービスプロバイダのデータストレージサービスを利用して格納することができる、または上に説明したように、別の場所に格納することができる。
【００５３】
幾つかの実施形態では、データ鍵は、複数の鍵要素から生成され、これらの鍵要素は、異なるエンティティからアクセス可能な異なる鍵を使用して個々に暗号化されて、同様の結果を達成する。従って、図８は、本開示の１つの実施形態の例示的な例を示している。図８は具体的には、上に説明したような顧客ネットワーク８０２及びプロバイダネットワーク８０４を含む環境を例示する概略図を示している。同様に、顧客ネットワーク８０２及びプロバイダネットワーク８０４は、上に説明したようなアクセス障壁によって分離することができる。この図に示すように、ＤＫと略記されるデータ鍵は、複数の鍵要素から生成される。この例では、これらの鍵要素は、ＤＫ１及びＤＫ２と略記され、データ鍵は普通、ＤＫ１及びＤＫ２の関数であると考えることができる。幾つかの実施形態では、例えばＤＫ１及びＤＫ２は、指定された順番で連結させることにより、データ鍵ＤＫを生成することができる。しかしながら、ＤＫ１及びＤＫ２を入力として使用するいずれの関数を使用しても、ＤＫを作成することができる。また、ＤＫ１及びＤＫ２は、ＤＫから生成することができる、または逆に、ＤＫは、ＤＫ１及びＤＫ２から生成することができることに留意されたい。例えば、ＤＫ１及びＤＫ２を取得し、次に合成することができる、またはＤＫを取得し、そして分割する、またはその他には、処理することにより、ＤＫ１及びＤＫ２を決定することができる。
【００５４】
図８に示す実施形態では、顧客はＤＫ及び顧客鍵ＣＫにアクセスできる。データ鍵には、いずれかの適切な方法で、例えばデータ鍵を上に説明したような異なるエンティティから取得することにより、またはデータ鍵自体を生成することによりアクセスできる。また、図示のように、顧客は、データ鍵ＤＫ１及びＤＫ２の鍵要素にアクセスすることができる。図示の実施形態では、顧客は要求をプロバイダネットワーク８０４の暗号化サービス８０８に提示する。上に論じたように、暗号化サービス８０８は、ＭＫと略記される管理鍵にアクセスすることができ、この管理鍵は、顧客８０６に代わって管理される。暗号化サービス８０８は要求に応答して、第２データ鍵ＤＫ２を暗号化することができ、この場合、応答は、管理鍵で暗号化された第２データ鍵｛ＤＫ２｝MKを含む。顧客は、データ鍵の第１鍵要素ＤＫ１を、顧客鍵を使用して暗号化することができる。次に、｛Ｄａｔａ｝DK、｛ＤＫ１｝CK、及び｛ＤＫ２｝MKは、例えばプロバイダネットワークを運用するサービスプロバイダが運用するデータストレージサービス８１０に保持するか、または上に説明したように、別の方法で保持することができる。例えば、顧客８０６は、適切に設定される１回以上のＡＰＩコールを通じて、データストレージサービス８１０で、｛Ｄａｔａ｝DK、｛ＤＫ１｝CK、及び｛ＤＫ２｝MKを互いに関連付けて１つ以上のデータオブジェクトに格納するようにすることができる。
【００５５】
図９は、種々の実施形態によるデータをセキュアに格納するために実行することができるプロセス９００の例示的な例を示している。プロセス９００は、いずれかの適切なシステムにより、例えば実行可能命令群で構成される顧客のコンピュータシステムが、上に説明したように、１つ以上のサービスプロバイダと通信することにより実行することができる。１つの実施形態では、プロセス９００は、データをデータ鍵で暗号化する（９０２）ことを含む。データ鍵は、システムがプロセス９００をいずれかの適切な方法で実行することにより取得することができる。例えば、図５〜図６を参照すると、データ鍵は、暗号化サービスから取得することができる。他の例では、プロセス９００を実行するシステムは、データ鍵自体を生成することができる。更に、データをデータ鍵で暗号化する処理９０２は、種々の実施形態による種々の方法で実行することができる。例えば、プロセス９００を実行するシステムは、データを、データ鍵自体を使用して暗号化することができる。別の例として、プロセス９００を実行するシステムは、データを、データ鍵にアクセスできる別のシステムに送信して、他のシステムがデータを、データ鍵を使用して暗号化するようにする。一般的に、データは、データ鍵を使用して、いずれかの適切な方法で暗号化することができる（９０２）。
【００５６】
要求をサービスプロバイダに送信して暗号化処理を、管理鍵を使用して実行することができる（９０４）。要求により管理鍵を特定することができ、この管理鍵は、サービスプロバイダがプロセス９００を実行するシステムに代わって、または当該システムに接続される顧客に代わって管理する鍵とすることができる。実行対象の特定の暗号化処理は、種々の実施形態に応じて変えることができる。例えば、図５を参照するに、暗号化処理は、データ鍵を、管理鍵を使用して暗号化することを含むことができる。同様に、図６を参照するに、暗号化処理は、データ鍵を、プロセス９００の実行段階に基づいて使用される幾つかの管理鍵のうちの１つの管理鍵を使用して暗号化することを含むことができる。図７を参照するに、暗号化処理は、顧客鍵または別の管理鍵のような別の鍵で既に暗号化されているデータ鍵を暗号化することを含むことができる。図８を参照するに、暗号化処理では、データ鍵の１つの鍵要素を、管理鍵を使用して復号化することができる。図９には図示されていないが、プロセス９００では、図６に図示されているように、更に別の要求を、同じサービスプロバイダまたは別のサービスプロバイダに対して行なうこともできる。
【００５７】
１つの実施形態では、プロセス９００において更に、管理鍵及び顧客鍵の両方の鍵（及び、場合によっては、１種類以上の他の鍵）で暗号化されたデータ鍵を取得する（９０６）。図５を参照するに、例えば管理鍵及び顧客鍵の両方の鍵で暗号化されたデータ鍵を取得する処理９０６は、管理鍵で暗号化されたデータ鍵を受信し、そして顧客鍵を使用して、管理鍵で暗号化された受信データ鍵を暗号化することを含むことができる。図７を参照するに、管理鍵及び顧客鍵の両方の鍵で暗号化されたデータ鍵を取得する処理９０６では、データ鍵を、顧客鍵を使用して暗号化し、そして顧客鍵で暗号化されたデータ鍵をサービスプロバイダに送信して、管理鍵で更に暗号化することができる（そして、このような暗号化の結果を取得する）。図８を参照するに、管理鍵及びデータ鍵の両方の鍵で暗号化されたデータ鍵を取得する処理９０６は、データ鍵の一部を、平文または暗号化方式のいずれでも、サービスプロバイダに送信して、管理鍵を使用して暗号化すること（そして、このような暗号化の結果を取得すること）を含むことができる。
【００５８】
種々の実施形態では、プロセス９００において、データを保持して（すなわち、永続的に格納して）、複数の鍵がデータにアクセスするために必要になるようにする（９０８）。例えば、図９に示すように、図５〜図８に関連して上に説明したように、プロセス９００は、データ鍵で暗号化されたデータ；及び管理鍵及び顧客鍵の両方の鍵で暗号化されたデータを永続的に格納する（例えば、別のシステムに格納させる）ことを含むことができる。
【００５９】
上に説明したように、本開示の種々の実施形態では、暗号化されたデータをセキュアに格納して、当該データには、複数の鍵にアクセスできる場合に限りアクセス可能となるようにすることができる。図１０は、本明細書において記載される種々の実施形態によるデータにアクセスする過程を示す例示的な例を示している。図１０に示すように、プロセス１０００は、データ鍵で暗号化されたデータだけでなく、管理鍵及び顧客鍵の両方の鍵で暗号化されたデータ鍵を取得する（１００２）ことを含む。管理鍵及び顧客鍵の両方の鍵で暗号化されたデータ鍵は、本明細書において記載されるプロセス９００及び／または他の方法に従って永続的に格納することができる。１つの実施形態では、プロセス１０００は、要求をサービスプロバイダに送信して復号化処理を、管理鍵を使用して実行すること（１００４）を含む。復号化処理は、種々の実施形態に応じて変えることができ、例えば図５〜図６を参照するに、復号化処理は、管理鍵で暗号化されたデータ鍵を復号化することを含むことができる。管理鍵で暗号化されたデータ鍵は、管理鍵で暗号化されて顧客鍵で暗号化されたデータ鍵を復号化することにより取得することができる。図７を参照するに、復号化処理は、顧客鍵で暗号化されて管理鍵で暗号化されたデータ鍵を復号化する処理とすることができる。別の表現をすると、図５〜図８の表記を利用して、復号化処理では、｛｛ＤＫ｝CK｝MKを復号化して｛ＤＫ｝CKを取得することができる。図８を参照するに、復号化処理は、管理鍵を使用してデータ鍵の１つの鍵要素を復号化することを含むことができる。一般的に、復号化処理の結果を使用して、データ鍵を取得することができる（１００６）。プロセス１０００は、データを、例えば１つのエンティティがデータ鍵にアクセスできる場合のように、既に取得されているデータ鍵を使用して復号化することを含むことができる。
【００６０】
本明細書において記載される全てのプロセスと同じように、種々変形例は、本開示の範囲内で想到される。例えば、図１０には図示されないが、プロセス１０００は、更なる処理を含むことができ、例えばある特定のデータを同じサービスプロバイダ、または別のサービスプロバイダが復号化することができる。例えば、データを暗号化するプロセスが、第２サービスプロバイダが管理鍵を使用して、データ鍵の一部の要素または全ての要素を暗号化することを含む場合、管理鍵にアクセスできる第２サービスプロバイダまたは他のエンティティに、適切な復号化処理を実行させることができる。一般的に、暗号化が、本明細書において記載されるこれらの処理に追加される処理を含む実施形態では、データへのアクセスは、適切な復号化処理を行なうことを含むことができる。
【００６１】
非常に多くの他の変形例は、本開示の範囲内で想到される。例えば、上に説明したように、顧客コンピュータシステムは、本明細書において記載される種々のプロセスを、コンピュータ可読記憶媒体に符号化された実行可能命令群に従って実行することができる。これらの命令は、顧客コンピュータシステムにサービスプロバイダから供給することができ、例えばサービスプロバイダが提供する実行可能コードプログラミングモジュール群からなるクライアントライブラリの一部から供給することができる。サービスプロバイダは、このようなコードに、インターネットまたは別のネットワークを介してアクセス可能とすることができる。更に、種々の実施形態が、本明細書において、異なる鍵にアクセスできる２つ、または３つの異なるエンティティを使用するものとして例示されているが、本開示の範囲は、関連エンティティ群のこのような実施形態、及び数に限定されない。例えば、本明細書において例示され、かつ記載されるこれらの方法は、鍵群にアクセスできる更なるエンティティ群が関与するように拡張することができる。一般的に、データ及び／または鍵群は、異なるエンティティから受け取る複数の鍵を用いて隠蔽する（例えば、暗号化する）ことができる。顧客コンピュータシステムは、種々のエンティティの動作（例えば、暗号化／復号化）を調整して、データを暗号化するためには、全てのエンティティが関与する必要があるように構成することができる、またはこのようにして暗号化されたデータを復号化するように構成することができる。
【００６２】
幾つかの例では、（例えば、サービスプロバイダが実行する）１回以上の暗号化処理は、追加認証データ（ＡＡＤ）の使用をサポートする暗号化アルゴリズムを使用して実行される。１つの実施形態では、ＡＡＤは、暗号化されようとするデータとともに、暗号化アルゴリズムへの入力として使用されるデータである。ＡＡＤは、平文で保持することができる。暗号化アルゴリズムは、対応する復号化において、暗号文及び未改ざんのＡＡＤが、復号を成功させるために必要となるように構成することができる。更に、システム（例えば、サービスプロバイダシステム）は、ＡＡＤを使用してポリシーを強制することができる。例えば、メタデータ（例えば、ＩＰアドレス、識別情報、データを格納するために使用される論理データコンテナの論理データコンテナ識別子など）に含まれる１つ以上の値を使用して、復号化が、これらの値に少なくとも部分的に基づいて設定される１つ以上のポリシーにより許可されるかどうかを判断することができる。このようにして、暗号化アルゴリズム及びポリシーの両方が、データへの許可アクセスのみが確実に許可されるように機能する。別の表現をすると、未改ざんのＡＡＤ、及び復号化を許可するポリシーの両方があることが、データへのアクセスが行なわれる前に必要になる。
【００６３】
更に、上に記載される種々の方法では、１つ以上のサービスプロバイダと種々の通信を行ない、これらの通信は、クライアントコンピュータシステム（例えば、上に説明した顧客のコンピュータシステム）により調整することができる。クライアントコンピュータシステムに指示して、１つ以上の方法を利用させるコードは、クライアントコンピュータシステムのアプリケーション群を生成するために使用されるソフトウェア開発キット（ＳＤＫ）に組み込むことができる。また、幾つかの実施形態では、クライアントコンピュータシステムをプログラムして、上に説明したこれらの方法のうちの１つ以上の方法を、種々のトリガーに関連して利用することができる。１つの例では、アプリケーションは、ファイルシステムインターフェース（例えば、ファイルシステムドライバインターフェース）または（例えば、データストレージサービスを利用する仮想ストレージデバイス用の）ストレージデバイスインターフェースとなることができる。上に説明した種々の方法は必要に応じて、種々のコマンドを、インターフェースを介して受信すると利用することができる。例えば、データをファイルシステムまたはストレージデバイスに格納するコマンドを通知するインターフェースとの対話により、暗号化が、上に説明した種々実施形態のうちの１つ以上の実施形態に従って実行されるようにすることができる。同様に、データをファイルシステムまたはストレージデバイスから取り出すコマンドを通知するインターフェースと対話することにより、上に説明した１つ以上の方法を利用してデータを復号化することができる。このような方法は、他のインターフェースに適用することもできる。
【００６４】
別の変形例は、本開示の範囲内で想到される。本明細書において記載される種々の方法を取り入れた方法は、下位互換性が可能となるように利用することができる。種々の方法を利用するアプリケーションは、例えば構成を読み出して、サービスプロバイダと対話する方法、及びいずれの鍵を使用すべきか（すなわち、いずれの鍵が、鍵自体を用いるか、及びいずれの鍵をサービスプロバイダに対して指定すべきか）を判断することができる。このようにして、ＳＤＫ（ソフトウェア開発キット）を用いてエンコード化する方法が経時的に変化する場合、既に利用した方法を使用して暗号化され、かつ格納されたデータは、それにも拘らず、アクセス可能な状態を保持することができる。ＳＤＫは、プログラミングロジックを含むことができ、プログラミングロジックにより、いずれの方法を使用すべきか（方法がある場合に）、いずれの鍵を使用すべきかなどについての選択が可能になる。いずれの方法を使用すべきか（方法がある場合に）、かつ／またはいずれの鍵を使用すべきかについて判断するために、ＳＤＫ（ソフトウェア開発キット）のプログラミングロジックは、クライアントコンピュータシステムに対して設定されるローカル構成に関する情報、サービスプロバイダコンピュータシステムから提供される、かつ／または他の方法で提供される情報を利用することができる。
【００６５】
本開示の種々実施形態は、以下の項に記載することができる。
【００６６】
第１項.
媒体に格納される命令群を有するコンピュータ可読記憶媒体であって、命令群がコンピューティングリソースサービスプロバイダの顧客のコンピュータシステムの１つ以上のプロセッサで実行されると、命令群により当該コンピュータシステムは：
データを第１鍵で暗号化し、
第２鍵及び第３鍵に少なくとも部分的に基づいて暗号化された当該第１鍵を取得し、当該顧客は当該第２鍵にアクセスできず、当該コンピューティングリソースサービスプロバイダは当該第３鍵にアクセスできず、当該第２鍵及び当該第３鍵に少なくとも部分的に基づいて暗号化された当該第１鍵を取得することは：
１回以上の暗号化処理を、当該第２鍵を使用して実行する要求であって、当該コンピューティングリソースサービスプロバイダが当該第２鍵を、当該コンピューティングリソースサービスプロバイダの顧客群に代わって管理される複数の鍵から選択することができるための情報を含む、当該要求を当該コンピューティングリソースサービスプロバイダに提示することを含み、そして
当該第１鍵で暗号化された当該データを、当該第２鍵及び当該第３鍵に少なくとも部分的に基づいて暗号化された当該第１鍵に関連付けて格納する、コンピュータ可読記憶媒体。
【００６７】
第２項．
当該第２鍵及び当該第３鍵に少なくとも部分的に基づいて暗号化された当該第１鍵を取得することは：
当該コンピューティングリソースサービスプロバイダから、当該第２鍵で暗号化された当該第１鍵を受信すること、そして
当該第２鍵で暗号化された受信済みの当該第１鍵を暗号化することを含む、第１項に記載のコンピュータ実装式方法。
【００６８】
第３項．
当該第２鍵及び当該第３鍵に少なくとも部分的に基づいて暗号化された当該第１鍵を取得することは：
当該コンピューティングリソースサービスプロバイダから、当該第２鍵で暗号化された当該第１鍵を受信すること、そして
第２コンピューティングリソースサービスプロバイダに、当該第３鍵を使用させて、当該第２鍵で暗号化された受信済みの当該第１鍵を暗号化させることを含む、第１項または第２項に記載のコンピュータ実装式方法。
【００６９】
第４項．
当該第２鍵及び当該第３鍵に少なくとも部分的に基づいて暗号化された当該第１鍵を取得することは：
当該第３鍵を使用して当該第１鍵を暗号化すること、そして
当該要求により、暗号化された当該第１鍵を取得することを含む、先行する項のいずれか一項に記載のコンピュータ実装式方法。
【００７０】
第５項．
当該第１鍵は、第１鍵要素及び第２鍵要素に少なくとも部分的に基づいて設定され、
当該要求により当該第１鍵要素を取得して、当該コンピューティングリソースサービスプロバイダで当該第２鍵を使用することにより暗号化し、
第２鍵に少なくとも部分的に基づいて暗号化された当該第１鍵を取得することは、当該第２鍵要素を当該第３鍵で暗号化することを含む、先行する項のいずれか一項に記載のコンピュータ実装式方法。
【００７１】
第６項．
当該第１鍵で暗号化された当該データを格納することは、当該コンピューティングリソースサービスプロバイダが運用するデータストレージサービスに、当該第１鍵で暗号化された当該データ、及び当該第２鍵及び当該第３鍵に少なくとも部分的に基づいて暗号化された当該第１鍵を送信することを含む、先行する項のいずれか一項に記載のコンピュータ実装式方法。
【００７２】
第７項．
実行可能命令群で構成される１つ以上のコンピュータシステムによる制御の下で、
コンピューティングリソースサービスプロバイダからアクセス不能な第１情報、及び当該コンピューティングリソースサービスプロバイダの顧客からアクセス不能な第２情報に少なくとも部分的に基づいて、暗号化された第１鍵、及び該第１鍵で暗号化されたデータを、少なくとも：
１回以上の暗号化処理を、当該第２情報を使用して実行する要求であって、当該コンピューティングリソースサービスプロバイダが当該第２情報を、当該コンピューティングリソースサービスプロバイダの他の顧客群に代わって管理される他の情報から選択することができるための情報を含む、要求を当該コンピューティングリソースサービスプロバイダに提示することにより取得し、そして
当該第１鍵で暗号化された当該データ、及び暗号化された第１鍵を保持して、当該第１鍵で暗号化された当該データの復号化を許可するためには、当該第１情報及び当該第２情報を使用することが必要になるようにする、コンピュータ実装式方法。
【００７３】
第８項．
当該第１情報は第２鍵を含み、当該第２情報は第３鍵を含む、第７項に記載の方法。
【００７４】
第９項．
当該方法は更に：
当該第１鍵で暗号化された当該データを、当該第１情報にアクセスできる第２コンピューティングリソースサービスプロバイダに送信すること、そして
当該第２コンピューティングリソースサービスプロバイダから、当該第１鍵で暗号化され、当該第１情報を使用して更に暗号化された当該データを含む第３情報を取得すること、を含み、そして
当該第１鍵で暗号化された当該データ、及び暗号化された第１鍵を保持することは、当該第３情報、及び暗号化された第１鍵を、当該第１情報及び当該第２情報の両方にアクセスできないデータストレージシステムに格納することを含む、第７項または第８項に記載の方法。
【００７５】
第１０項．
当該コンピューティングリソースサービスプロバイダは当該第１鍵にアクセスできない、第７項乃至第９項のいずれか一項に記載の方法。
【００７６】
第１１項．
当該第１鍵は、第１鍵要素及び第２鍵要素を含む複数の鍵要素から導出することができ、そして
暗号化された当該第１鍵は：当該第１情報を使用して暗号化される当該第１鍵要素と、当該第２情報を使用して暗号化される当該第２鍵要素と、を含む、第７項乃至第１０項のいずれか一項に記載の方法。
【００７７】
第１２項．
当該第１情報に当該顧客からアクセス可能である、第７項乃至第１１項のいずれか一項に記載の方法。
【００７８】
第１３項.
コンピューティングリソース集合を含むシステムであって、
当該コンピューティングリソース集合は：
複数のエンティティに代わって複数の鍵を管理するように構成される第１サービスを運用し、
データを、当該複数の鍵にアクセスすることなく格納するように構成される第２サービスを運用し、そして
複数のエンティティの中の１つのエンティティに対応するクライアントコンピューティングデバイスに実行可能命令群を供給するように集合的に構成され、当該実行可能命令群により、当該クライアントコンピューティングデバイスが、少なくとも：
要求を提示して、１回以上の暗号化処理を、当該要求で指定された、当該複数の鍵の中の第１鍵を使用して実行し、
当該要求に応じて、当該１回以上の暗号化処理の実行結果を受信し、
当該結果、及び当該システムからアクセス不能な第２鍵に少なくとも部分的に基づいて、暗号化データを含み、かつ少なくとも当該第１鍵及び当該第２鍵の両方の鍵の使用が、当該データを復号化するために必要になるように構成される情報を生成し、そして
当該生成した情報を当該ストレージデバイスに送信するようになる、当該システム。
【００７９】
第１４項.
当該暗号化データは第３鍵で暗号化され、そして
当該情報は、当該第１鍵及び当該第２鍵に少なくとも部分的に基づいて暗号化された当該第３鍵を含む、第１３項に記載のシステム。
【００８０】
第１５項.
当該クライアントコンピューティングデバイスは当該第３鍵にアクセスできる、第１４項に記載のシステム。
【００８１】
第１６項．
当該第１サービス及び当該第２サービスはそれぞれ、対応するウェブサービスアプリケーションプログラミングインターフェースを供給し、
当該要求を当該第１サービスのウェブサービスインターフェースを介して受信し、そして
当該生成した情報を送信することは、ウェブサービスコールを当該第２サービスのウェブサービスインターフェースに提示することを含む、第１３項乃至第１５項のいずれか一項に記載のシステム。
【００８２】
第１７項．
当該システムは当該第２鍵にアクセスできない、第１３項乃至第１６項のいずれか一項に記載のシステム。
【００８３】
第１８項.
当該実行可能命令群はスクリプト言語の形式である、第１３項乃至第１７項のいずれか一項に記載のシステム。
【００８４】
第１９項.
媒体に格納される命令群を有するコンピュータ可読記憶媒体であって、当該命令群がコンピュータシステムの１つ以上のプロセッサで実行されると、当該命令群により当該コンピュータシステムが：
コンピューティングリソースサービスプロバイダからアクセス不能な第１情報、及び第２情報に少なくとも部分的に基づいて、暗号化された第１鍵、及び該第１鍵で暗号化されたデータを、少なくとも：
１回以上の暗号化処理を、当該第２情報を使用して実行する要求であって、当該コンピューティングリソースサービスプロバイダが当該第２情報を、当該コンピューティングリソースサービスプロバイダの顧客群に代わって管理される他の情報から選択することができるための情報を含む、要求を当該コンピューティングリソースサービスプロバイダに提示することにより取得し、そして
当該第１鍵で暗号化された当該データ、及び暗号化された第１鍵を永続的に格納して、平文の当該データへのアクセスを許可するためには、当該第１情報及び当該第２情報を使用することが必要になるようにする、コンピュータ可読記憶媒体。
【００８５】
第２０項.
当該第１鍵で暗号化された当該データ、及び暗号化された当該第１鍵を永続的に格納することは、当該コンピューティングリソースサービスプロバイダのデータストレージサービスを利用して、当該第１鍵で暗号化された当該データ、及び暗号化された当該第１鍵のうちの少なくとも一方を格納することを含む、第１９項に記載のコンピュータ可読記憶媒体。
【００８６】
第２１項．
当該コンピューティングリソースサービスプロバイダは当該第１鍵にアクセスできない、第１９項または第２０項に記載のコンピュータ可読記憶媒体。
【００８７】
第２２項．
当該第１鍵で暗号化された当該データを取得することは、第２コンピューティングリソースサービスプロバイダに、１回以上の処理を、当該第１情報を使用して実行させることを含む、第１９項乃至第２１項のいずれか一項に記載のコンピュータ可読記憶媒体。
【００８８】
第２３項．
当該第１情報は、当該コンピュータシステムがアクセスできる第２鍵であり、そして
当該第１鍵で暗号化された当該データを取得することは、１回以上の処理を、当該第２鍵を使用して実行することを含む、第１９項乃至第２２項のいずれか一項に記載のコンピュータ可読記憶媒体。
【００８９】
第２４項．
当該第１情報は第２鍵であり、当該第２情報は第３鍵であり、そして
当該第２鍵及び当該第３鍵の両方の鍵を使用して、当該第１鍵で暗号化された当該データを取得する、第１９項乃至第２３項のいずれか一項に記載のコンピュータ可読記憶媒体。
【００９０】
第２５項．
当該実行可能命令群は、当該暗号化された第１鍵、及び当該第１鍵で暗号化されたデータを取得すること、及び当該第１鍵で暗号化された当該データ、及び当該暗号化された第１鍵を永続的に格納することが、格納処理を実行するためにファイルシステムインターフェースに命令を出す結果として実行されるように構成される、第１９項乃至第２４項のいずれか一項に記載のコンピュータ可読記憶媒体。
【００９１】
第２６項．
当該１回以上の処理では、追加認証データをサポートする暗号化アルゴリズムを使用し、
当該要求は、当該コンピューティングリソースサービスプロバイダが追加認証データとして使用することができるメタデータを含み、当該コンピューティングリソースサービスプロバイダは、１つ以上のポリシーを、当該メタデータに少なくとも部分的に基づいて強制するように構成される、第１９項乃至第２５項のいずれか一項に記載のコンピュータ可読記憶媒体。
【００９２】
図１１は、種々の実施形態による種々態様を実行する例示的な環境１１００の種々態様を示している。理解されるように、ウェブ環境を利用して説明を進めるが、異なる環境を必要に応じて利用して、種々の実施形態を実現することができる。当該環境は電子クライアントデバイス１１０２を含み、電子クライアントデバイス１１０２は、要求、メッセージ、または情報を適切なネットワーク１１０４を介して送受信し、情報を当該デバイスのユーザに返送するように動作することができるいずれかの適切なデバイスを含むことができる。このようなクライアントデバイスの例として、パーソナルコンピュータ、携帯電話機、ハンドヘルドメッセージングデバイス、ラップトップコンピュータ、タブレットコンピュータ、セットトップボックス、携帯情報端末、埋め込み式コンピュータシステム、電子ブックリーダなどを挙げることができる。当該ネットワークは、いずれかの適切なネットワークを含むことができ、適切なネットワークとして、イントラネット、インターネット、携帯電話ネットワーク、ローカルエリアネットワーク、または他のいずれかのこのようなネットワーク、またはこれらの組み合わせを挙げることができる。このようなシステムに使用されるコンポーネントは、選択されるネットワーク及び／または環境の種類によって少なくとも部分的に異なる。通信をこのようなネットワークを介して行なうためのプロトコル及びコンポーネントは、公知であるので、ここで詳細に説明することはしない。ネットワーク経由の通信は、有線接続または無線接続、及び有線接続及び無線接続の組み合わせにより可能になる。この例では、ネットワークは、当該環境が、要求を受信し、当該要求に応じてコンテンツを処理するウェブサーバ１１０６を含むことからインターネットを含むが、他のネットワークの場合、この技術分野の当業者には明らかなように、同様の目的を果たす別のデバイスを用いることができる。
【００９３】
例示的な環境は、少なくとも１つのアプリケーションサーバ１１０８と、データストア１１１０と、を含む。チェーン接続することができる、またはその他には、構成することができ、かつ対話して、データを適切なデータストアから取得するようなタスクを実行することができる幾つかのアプリケーションサーバ、層、または他の要素、プロセスまたはコンポーネントを設けることができることを理解されたい。サーバは、本明細書において使用されるように、種々の方法で実装することができ、例えばハードウェアデバイス、または仮想コンピュータシステムとして実現することができる。いくつかの状況では、サーバは、コンピュータシステム上で実行されるプログラミングモジュールを指し得る。本明細書において使用されるように、「ｄａｔａ  ｓｔｏｒｅ」という用語は、データを格納し、データにアクセスし、そしてデータを取り出すことができる任意のデバイス、またはデバイス群を組み合わせた複合デバイスを指し、複合デバイスは、任意の標準環境、分散環境、またはクラスタ環境における複数のデータサーバ、データベース、データストレージデバイス、及びデータストレージ媒体の組み合わせを含むことができる。アプリケーションサーバは、データストアと必要に応じて一体となってクライアントデバイスの１種類以上のアプリケーションの種々の機能を実行し、アプリケーションのデータアクセス及びビジネスロジックの一部の部分を（大部分をも）処理するいずれかの適切なハードウェア及びソフトウェアを含むことができる。アプリケーションサーバは、アクセス制御サービスをデータストアと連携して提供し、かつテキスト、グラフィックス、オーディオ、及び／またはビデオのようなコンテンツを生成してユーザに転送することができ、これらのコンテンツをユーザにウェブサーバを介して、この例におけるハイパーテキストマークアップ言語（ＨｙｐｅｒＴｅｘｔ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ：「ＨＴＭＬ」）、拡張マークアップ言語（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ：「ＸＭＬ」）、または別の適切な構造化言語で配信することができる。全ての要求及び応答の処理だけでなく、クライアントデバイス１１０２とアプリケーションサーバ１１０８との間でのコンテンツの配信は、ウェブサーバで行なうことができる。本明細書において説明される構造化コードは、本明細書の他の箇所で説明されているように、適切ないずれのデバイスまたはホストマシンでも実行することができるので、ウェブサーバ及びアプリケーションサーバは必要ではなく、単なる例示的なコンポーネントに過ぎないことを理解されたい。更に、本明細書において、単一のデバイスにより実行されるものとして説明される処理は、そうでないことが文脈から明らかな場合を除き、分散システムを形成することができる複数のデバイスにより集合的に実行することができる。
【００９４】
データストア１１１０は、幾つかの個別のデータテーブルと、データベース群または他のデータストレージ機構群と、本開示の特定の態様に関連するデータを格納する媒体と、を含むことができる。例えば、図示のデータストアは、コンテンツを生産側に配信するために使用することができる生産データ１１１２及びユーザ情報１１１６を格納する機構を含むことができる。データストアは更に、ログデータ１１１４を格納する機構を含むものとして図示され、ログデータ１１１４は、報告、分析、または他のこのような目的に使用することができる。ページ画像情報の場合のように、データストアに格納する必要があり、かつ正確な情報にアクセスするために必要な他の多くの要素が存在し得、これらの要素は、上に列挙した機構群のいずれかの機構に、必要に応じて格納するか、またはデータストア１１１０内の更なる機構に格納することができる。データストア１１１０は、当該データストアに接続されるロジックを介して、命令群をアプリケーションサーバ１１０８から受信し、それに応じてデータを取得する、更新する、またはその他には処理するように動作することができる。１つの例では、ユーザは、当該ユーザが運用するデバイスを介して、ある特定の種類のアイテムに関する検索要求を提示する可能性がある。この場合、データストアは、ユーザ情報にアクセスしてユーザの識別情報を確認し、そしてカタログ詳細情報にアクセスして、当該種類のアイテム群に関する情報を取得する可能性がある。次に、当該情報をユーザに、例えばユーザがユーザデバイス１１０２のブラウザを介して閲覧することができるウェブページに列挙される結果に含めて返送することができる。特定の注目アイテムに関する情報は、ブラウザの専用ページで閲覧するか、または専用ウィンドウで閲覧することができる。しかしながら、本開示の種々実施形態は、必ずしもウェブページの文脈に限定されず、もっと広く、要求が必ずしもコンテンツに対する要求ではない場合のような一般的な要求の処理にも適用することができることに留意されたい。
【００９５】
各サーバは通常、一般的管理及び当該サーバの動作に関する実行可能プログラム命令群を供給するオペレーティングシステムを含み、かつ通常、命令群を格納するコンピュータ可読記憶媒体（例えば、ハードディスク、ランダムアクセスメモリ、リードオンリメモリなど）を含み、命令群がサーバのプロセッサで実行されると、サーバは、当該サーバの所望の機能を実行することができる。オペレーティングシステムのために適する実施態様及びこれらのサーバの一般的機能は、公知であるか、または市販されており、本明細書における開示内容を勘案すればこの技術分野の当業者によって容易に実現される。
【００９６】
１つの実施形態の環境は、通信リンクを介して、１つ以上のコンピュータネットワークまたは直接接続を使用して相互接続される幾つかのコンピュータシステム及びコンポーネントを利用する分散計算環境である。しかしながら、この技術分野の当業者であれば、このようなシステムは、図１１に示す数よりも少ない数の、または多い数のコンポーネントを有するシステムにおいて同じように良好に動作することができることを理解できるであろう。従って、図１１のシステム１１００の図は、本質的に例示に過ぎず、本開示の範囲に限定されないものとして捉えられるべきである。
【００９７】
種々の実施形態は更に、多種多様な動作環境で実装することができ、これらの動作環境は、幾つかの場合では、複数のアプリケーションのうちのいずれかのアプリケーションを動作させるために使用することができる１つ以上のユーザコンピュータ、コンピューティングデバイス、または処理デバイスを含むことができる。ユーザデバイスまたはクライアントデバイスは、標準的なオペレーティングシステムを実行するデスクトップコンピュータ、ラップトップコンピュータ、またはタブレットコンピュータのような複数の汎用パーソナルコンピュータの任意のものだけでなく、モバイルソフトウェアを実行し、複数のネットワークプロトコル、及びメッセージングプロトコルをサポートすることができるセルラーデバイス、ワイヤレスデバイス、及びハンドヘルドデバイスのうちの任意のものを含むことができる。このようなシステムは、多種多様な市販のオペレーティングシステムのうちのいずれかのオペレーティングシステム、及び開発及びデータベース管理のような目的の他の公知のアプリケーションを実行する複数のワークステーションを含むこともできる。これらのデバイスは、ダミー端末、シンクライアント、ゲーム用システム、及びネットワーク経由で通信することができる他のデバイスのような他の電子デバイスを含むこともできる。
【００９８】
本開示の種々の実施形態は、この技術分野の当業者が良く知っている少なくとも１つのネットワークを利用し、これらのネットワークは、多種多様な市販のプロトコルのうちのいずれかのプロトコルを使用する通信をサポートし、市販のプロトコルとして、例えばＴｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ（伝送制御プロトコル／インターネットプロトコル：「ＴＣＰ／ＩＰ」）、Ｏｐｅｎ  Ｓｙｓｔｅｍ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ（開放型システム間相互接続：「ＯＳＩ」）モデルの種々のレイヤで動作するプロトコル、Ｆｉｌｅ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ（ファイル転送プロトコル：「ＦＴＰ」）、Ｕｎｉｖｅｒｓａｌ  Ｐｌｕｇ  ａｎｄ  Ｐｌａｙ（ユニバーサルプラグアンドプレイ：「ＵｐｎＰ」）、Ｎｅｔｗｏｒｋ  Ｆｉｌｅ  Ｓｙｓｔｅｍ（ネットワークファイルシステム：「ＮＦＳ」）、Ｃｏｍｍｏｎ  Ｉｎｔｅｒｎｅｔ  Ｆｉｌｅ  Ｓｙｓｔｅｍ（共通インターネットファイルシステム：「ＣＩＦＳ」）、及びＡｐｐｌｅＴａｌｋを挙げることができる。ネットワークは、例えばローカルエリアネットワーク、ワイドエリアネットワーク、仮想専用ネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、及びこれらの任意の組み合わせとすることができる。
【００９９】
ウェブサーバを利用する実施形態では、ウェブサーバは、Ｈｙｐｅｒｔｅｘｔ  Ｔｒａｎｓｆｅｒ  Ｐｒｏｔｏｃｏｌ（ハイパーテキスト転送プロトコル：「ＨＴＴＰ」）サーバ、ＦＴＰサーバ、Ｃｏｍｍｏｎ  Ｇａｔｅｗａｙ  Ｉｎｔｅｒｆａｃｅ（共通ゲートウェイインターフェース：「ＣＧＩ」）サーバ、データサーバ、Ｊａｖａサーバ、及びビジネスアプリケーションサーバを含む多種多様なサーバアプリケーション、または中間層アプリケーションのうちのいずれかのアプリケーションを実行することができる。サーバ（群）は、プログラムまたはスクリプトを、ユーザデバイスからの要求に応答して、例えばＪａｖａ（登録商標）、Ｃ、Ｃ＃、またはＣ＋＋、またはＰｅｒｌ、Ｐｙｔｈｏｎ、或いはＴＣＬのようないずれかのスクリプト言語だけでなく、これらの組み合わせのようないずれかのプログラム言語で記述される１つ以上のスクリプトまたはプログラムとして実装することができる１つ以上のウェブアプリケーションを実行することにより、実行することもできる。サーバ（群）は、限定されないが、Ｏｒａｃｌｅ（登録商標）、Ｍｉｃｒｏｓｏｆｔ（登録商標）、Ｓｙｂａｓｅ（登録商標）、及びＩＢＭ（登録商標）から市販されているサーバを含むデータベースサーバを含むこともできる。
【０１００】
当該環境は、上に論じたように、多種多様なデータストア、及び他のメモリ媒体及び記憶媒体を含むことができる。これらは、コンピュータ群のうちの１つ以上のコンピュータにローカルに設けられる（かつ／または１つ以上のコンピュータに常駐する）記憶媒体、またはネットワークを介して接続されるコンピュータ群の全てのコンピュータのうちのいずれかの、または全てのコンピュータから遠く離れて設けられる記憶媒体に常駐するように、多種多様な場所に常駐させることができる。特定の一連の実施形態では、情報は、この技術分野の当業者が良く知っているストレージエリアネットワーク（「ＳＡＮ」）に常駐させることができる。同様に、コンピュータ、サーバ、または他のネットワークデバイスに付属する機能を実行するために必要なファイルは全て、必要に応じて、ローカルに格納する、かつ／またはリモートに格納することができる。システムがコンピュータ化デバイスを含む場合、このような各デバイスは、バスを介して電気的に接続することができるハードウェア要素を含むことができ、これらの要素は、例えば少なくとも１つの中央処理装置（「ＣＰＵ」または「プロセッサ」）、少なくとも１つの入力デバイス（例えば、マウス、キーボード、コントローラ、タッチスクリーン、またはキーパッド）、及び少なくとも１つの出力デバイス（例えば、ディスプレイ装置、プリンタ、またはスピーカ）を含む。このようなシステムは、ディスクドライブ、光ストレージデバイスのような１つ以上のストレージデバイス、及びランダムアクセスメモリ（「ＲＡＭ」）またはリードオンリメモリ（「ＲＯＭ」）のような固体記憶装置だけでなく、着脱可能な媒体装置、メモリカード、フラッシュカードなどを含むこともできる。
【０１０１】
このようなデバイスは、上に説明したように、コンピュータ可読記憶媒体リーダ、通信デバイス（例えば、モデム、ネットワークカード（無線または有線）、赤外線通信デバイスなど）、及び作業メモリを含むこともできる。コンピュータ可読記憶媒体リーダは、コンピュータ可読記憶媒体に接続することができる、またはコンピュータ可読記憶媒体を収容するように構成することができ、このコンピュータ可読記憶媒体は、リモートストレージデバイス、ローカルストレージデバイス、固定記憶装置、及び／または着脱可能な記憶装置だけでなく、コンピュータ可読情報を一時的に、かつ／またはより永続的に格納し、記憶し、送信し、そして取り出す記憶媒体を表わす。システム及び種々のデバイスは更に通常、オペレーティングシステム及びクライアントアプリケーションまたはウェブブラウザのようなアプリケーションプログラムを含む、少なくとも１つの作業メモリ装置の内部に格納される複数のソフトウェアアプリケーション、モジュール、サービスまたは他の要素を含むことになる。別の実施形態は、上に説明した例に由来する非常に多くの変形例を有することができることを理解されたい。例えば、顧客の仕様に合わせたハードウェアを用いることもできる、かつ／または特定の要素をハードウェアとして、ソフトウェア（アプレットのようなポータブルソフトウェアを含む）として、またはハードウェア及びソフトウェアの両方として実装することができる。更に、ネットワーク入力／出力デバイスのような他のコンピューティングデバイスとの接続を用いることができる。
【０１０２】
コードまたはコードの一部を格納する記憶媒体及びコンピュータ可読媒体は、この技術分野で公知の、または使用されるいずれかの適切な媒体を含むことができ、適切な媒体として、限定されないが、いずれかの方法または技術で実装されてコンピュータ可読命令、データ構造、プログラムモジュール、または他のデータのような情報を格納する、かつ／または伝送する揮発性媒体、及び不揮発性媒体、着脱可能な媒体、及び非着脱可能な媒体のような記憶媒体及び通信媒体を挙げることができ、このような方法または技術として、ＲＡＭ、ＲＯＭ、Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ（電気的消去可能なプログラマブルリードオンリメモリ：「ＥＥＰＲＯＭ」）、フラッシュメモリ、または他のメモリ技術、Ｃｏｍｐａｃｔ  Ｄｉｓｃ  Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ（コンパクトディスクリードオンリメモリ：「ＣＤ−ＲＯＭ」）、デジタル多用途ディスク（ＤＶＤ）、または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスク記憶装置、または他の磁気記憶装置、または所望の情報を格納するために使用することができ、かつシステムデバイスからアクセスできるいずれかの他の媒体を挙げることができる。本明細書において提供される開示及び教示に基づいて、この技術分野の当業者であれば、種々の実施形態を実現する他の手法及び／または方法を理解できるであろう。
【０１０３】
従って、本明細書及び図面は、限定的な意味ではなく、例示として見なされるべきである。しかしながら、種々の修正及び変更を本発明に、これらの請求項に記載される本発明の広い思想及び範囲から逸脱しない限り加えることができることは明らかである。
【０１０４】
他の変形例は、本開示の思想に含まれる。従って、開示されるこれらの方法は、種々の修正、及び別の構成の影響を受けやすいが、その例示されるある特定の実施形態は、これらの図面に図示され、かつ上に詳細に説明されてきた。しかしながら、本発明は、開示される特定の構成または形態に限定されるものではなく、全ての修正、代替構造、及び均等物を、添付の請求項に規定される本発明の思想及び範囲に含まれるものとして包含するものである。
【０１０５】
用語「ａ」及び「ａｎ」及び「ｔｈｅ」、及び類似の指示用語を、本開示の実施形態を記載する文脈（特に以下の特許請求の範囲の文脈）に使用しているのは、本明細書で別途明示がある場合を除き、または文脈上明らかに矛盾する場合を除き、単数と複数の両方を含むものと捉えられるべきである。用語「ｃｏｍｐｒｉｓｉｎｇ（備える、含む）」、「ｈａｖｉｎｇ（有する）」、「ｉｎｃｌｕｄｉｎｇ（含む）」、及び「ｃｏｎｔａｉｎｉｎｇ（含む）」は、別段定めがない限り、制限的でない用語（すなわち「これに限定されないが〜を含む」ことを意味する）として捉えられるべきである。「ｃｏｎｎｅｃｔｅｄ（接続される）」という用語は、修飾されず、かつ物理的接続を指す場合、介在物が存在する場合であっても、一部または全部が〜の内部に収容される、〜に取り付けられる、または接合されて合体するものとして解釈されるべきである。本明細書における値の範囲の記載は、本明細書で別途明示がある場合を除き、各個別の値が、当該範囲に収まる状態を個々に指す手短な方法として利用され、各個別の値は、本明細書で個々に記載されているかのように、本明細書に組み込まれる。「ｓｅｔ（集合）」（例えば、「ａ  ｓｅｔ  ｏｆ  ｉｔｅｍｓ（アイテム集合）」）または「ｓｕｂｓｅｔ（部分集合）」という用語の使用は、別段定めがない限り、または文脈上明らかに矛盾する場合を除き、１つ以上のメンバーを含む空でない集合として捉えられるべきである。更に、別段定めがない限り、または文脈上明らかに矛盾する場合を除き、対応する集合の「ｓｕｂｓｅｔ（部分集合）」という表現は、必ずしも、対応する集合の適正な部分集合を指している訳ではなく、部分集合及び集合は等しくてもよい。
【０１０６】
別段の指定がない限り、または文脈上明らかに矛盾する場合を除き、文脈についてその他として、「ａｔ  ｌｅａｓｔ  ｏｎｅ  ｏｆ  Ａ，  Ｂ，  ａｎｄ  Ｃ（Ａ、Ｂ、及びＣの少なくとも１つ）」または「ａｔ  ｌｅａｓｔ  ｏｎｅ  ｏｆ  Ａ，  Ｂ，  ａｎｄ  Ｃ（Ａ、Ｂ、及びＣの少なくとも１つ）」という形式のフレーズのような接続語は一般的に、アイテム、用語などを、ＡまたはＢまたはＣのいずれかとすることができる、またはＡ及びＢ及びＣからなる集合のいずれかの空でない部分集合とすることができることを提示するために使用されると理解される。例えば、３つのメンバーを有し、かつ上の接続フレーズに使用される集合の例示的な例では、「ａｔ  ｌｅａｓｔ  ｏｎｅ  ｏｆ  Ａ，  Ｂ，  ａｎｄ  Ｃ（Ａ、Ｂ、及びＣの少なくとも１つ）」及び「ａｔ  ｌｅａｓｔ  ｏｎｅ  ｏｆ  Ａ，  Ｂ，  ａｎｄ  Ｃ（Ａ、Ｂ、及びＣの少なくとも１つ）」は、次の集合：｛Ａ｝、｛Ｂ｝、｛Ｃ｝、｛Ａ、Ｂ｝、｛Ａ、Ｃ｝、｛Ｂ、Ｃ｝、｛Ａ、Ｂ、Ｃ｝のうちのいずれかの集合を指す。従って、このような接続語は、一般的に、特定の実施形態が、ａｔ  ｌｅａｓｔ  ｏｎｅ  ｏｆ  Ａ（少なくとも１つのＡ）、ａｔ  ｌｅａｓｔ  ｏｎｅ  ｏｆ  Ｂ（少なくとも１つのＢ）、及びａｔ  ｌｅａｓｔ  ｏｎｅ  ｏｆ  Ｃ（少なくとも１つのＣ）をそれぞれ提示する必要があることを意味するものとして捉えられてはならない。
【０１０７】
別段の指示がない限り、または文脈上明らかに矛盾する場合を除き、本明細書において記載されるプロセス群の処理は、いずれかの適切な順番で実行することができる。本明細書において記載されるプロセス群（または、プロセス群の変形例、及び／または組み合わせ）は、実行可能命令群で構成される１つ以上のコンピュータシステムによる制御の下に実行することができ、かつ１つ以上のプロセッサ上で、ハードウェアにより、またはこれらの組み合わせにより集合的に実行されるコード（例えば、実行可能命令群、１つ以上のコンピュータプログラム、または１つ以上のアプリケーション）として実装することができる。コードは、コンピュータ可読記憶媒体に、例えば１つ以上のプロセッサで実行することができる複数の命令を含むコンピュータプログラムの形式で格納することができる。コンピュータ可読記憶媒体は、非一時的な媒体とすることができる。
【０１０８】
いずれかの例、及び全ての例、または本明細書中に提供される例示的な言い回し（例えば「ｓｕｃｈ ａｓ」）は、単に本発明の実施形態を一層明らかにするために使用されているのであり、他に特許請求されない限り、本発明の範囲を限定するものではない。本明細書中のいかなる言い回しも、いずれかの特許請求されていない要素が本発明の実施に不可欠であることを示していると捉えられるべきではない。
【０１０９】
本明細書では、本発明を実施するために本願発明者らには判明している最良の形態を含む本開示の好適な実施形態が記述されている。この技術分野の当業者であれば、これまでの説明を読むと、これらの好適な実施形態の変形例が明らかになるであろう。本願発明者らは、当業者であればこのような変形例を必要に応じて用いると予測し、本願発明者らは、本開示の実施形態が、本明細書において詳細に記載される方法以外の方法で実施されるものと考える。従って、適用法によって認められる限り、本明細書に添付の請求項には、記載される主題の全ての修正物及び均等物を含む。更に、主題の全ての可能な修正物に含まれる上に記載の構成要素群の任意の組み合わせは、別段の指定がない限り、または文脈上明らかに矛盾する場合を除き、本開示の範囲に包含される。
【０１１０】
本明細書において列挙される出版物、特許出願、及び特許を含むすべての参考文献は、参照されることにより、各参考文献が個々に、かつ詳細に提示されて、かつ参考文献の全内容が本明細書において述べられる場合と同程度に、参照されることにより本明細書に組み込まれる。
【図１】
2018170802.tif 000003
【図２】
2018170802.tif 000004
【図３】
2018170802.tif 000005
【図４】
2018170802.tif 000006
【図５】
2018170802.tif 000007
【図６】
2018170802.tif 000008
【図７】
2018170802.tif 000009
【図８】
2018170802.tif 000010
【図９】
2018170802.tif 000011
【図１０】
2018170802.tif 000012
【図１１】
2018170802.tif 000013
【手続補正書】
【提出日】平成30年9月3日(2018.9.3)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
サービスプロバイダの顧客においてデータ暗号化鍵をローカルに生成するステップと、
前記データ暗号化鍵を使用して前記サービスプロバイダの前記顧客においてローカルにデータを暗号化して暗号化済データとするステップと、
前記サービスプロバイダによって動作させられる鍵管理サービスに要求を送信して、前記サービスプロバイダに、管理鍵を使用して前記データ暗号化鍵を暗号化して暗号化済データ鍵とすることを実行させるステップと、
前記暗号化済データと前記暗号化済データ鍵の両方を前記サービスプロバイダのストレージサービスにおいて格納するステップと、
を含む方法。
【請求項２】
前記要求は、前記データ暗号化鍵を暗号化するために使用される前記管理鍵を特定する、請求項１に記載の方法。
【請求項３】
前記データ暗号化鍵は対称暗号化鍵である、請求項１に記載の方法。
【請求項４】
前記管理鍵は対称暗号化鍵である、請求項１に記載の方法。
【請求項５】
前記要求は認証されたアプリケーションプログラミングインターフェースコールである、請求項１に記載の方法。
【請求項６】
前記暗号化済データと前記暗号化済データ鍵の両方を前記サービスプロバイダの前記ストレージサービスに格納するステップは、アプリケーションプログラミングインターフェースコールを前記ストレージサービスに送信することを含み、前記アプリケーションプログラミングインターフェースコールは前記データと前記暗号化済データ鍵の両方を含む、請求項１に記載の方法。
【請求項７】
前記データ暗号化鍵および前記管理鍵はそれぞれ必要であるが、前記ストレージサービスにおいて前記データが格納されるときに前記データを復号するには個別的には不十分である、請求項１に記載の方法。
【請求項８】
前記サービスプロバイダが平文形式の前記データ暗号化鍵にアクセスすることを防止するステップをさらに含む、請求項１に記載の方法。
【請求項９】
コンピュータシステムの１つまたは複数のプロセッサによって実行されると、前記コンピュータシステムに、
サービスプロバイダの顧客においてデータ暗号化鍵を取得することと、
前記データ暗号化鍵を使用して前記サービスプロバイダとは異なる場所においてデータを暗号化して暗号化済データとすることと、
ネットワークを介して、前記サービスプロバイダによって動作させられる鍵管理サービスに要求を送信して、前記サービスプロバイダに、管理鍵を使用して前記データ暗号化鍵を暗号化して暗号化済データ鍵とすることを実行させることと、
前記暗号化済データと前記暗号化済データ鍵の両方をストレージサービスにおいて格納するステップと、
を実行させる命令を記憶するコンピュータ可読記録媒体。
【請求項１０】
前記命令は前記コンピュータシステムに、前記データ暗号化鍵をローカルに生成することによって前記データ暗号化鍵を取得することを実行させる、請求項９に記載のコンピュータ可読記録媒体。
【請求項１１】
前記要求は、
前記要求は前記鍵管理サービスに前記管理鍵を示して、前記鍵管理サービスが、前記鍵管理サービスによって複数の顧客のために管理される複数の管理鍵から前記管理鍵を選択することを可能にする、請求項９に記載のコンピュータ可読記録媒体。
【請求項１２】
前記管理鍵は対称暗号化鍵である、請求項９に記載のコンピュータ可読記録媒体。
【請求項１３】
前記データ暗号化鍵は対称暗号化鍵である、請求項９に記載のコンピュータ可読記録媒体。
【請求項１４】
前記要求を送信することはＨＴＴＰを使用して実行される、請求項９に記載のコンピュータ可読記録媒体。
【請求項１５】
前記命令は、前記コンピュータシステムに、ＡＰＩコールを送信して前記鍵管理サービスに前記管理鍵を生成させることを実行させる命令をさらに含む、請求項９に記載のコンピュータ可読記録媒体。
【請求項１６】
前記データ暗号化鍵および前記管理鍵は、前記ストレージサービスにおいて前記データが格納されるときに前記データを復号するには個別的には不十分である、請求項９に記載のコンピュータ可読記録媒体。
【請求項１７】
前記命令は、実行されると前記コンピュータシステムに、前記暗号化済データ鍵を復号する要求を送信することによって前記データ暗号化鍵を取得することを実行させる命令をさらに含み、前記要求は前記鍵管理サービスに前記管理鍵を示す、請求項９に記載のコンピュータ可読記録媒体。