以下の説明において、様々な実施形態が説明される。説明の目的で、実施形態の徹底的な理解を提供するために具体的な構成及び詳細が述べられる。しかしながら、当業者には、実施形態がその具体的な詳細を伴わずに実践され得るということもまた明らかになるであろう。さらに、公知の特徴は、説明される実施形態を不明瞭にしないために、省略または簡素化され得る。
本明細書に記載及び提案される技術は、分散コンピューティングリソースを含む環境における、強化されたデータセキュリティを可能にする。一実施例では、分散コンピューティング環境は、適切なコンピューティングリソースによって実装され得る1つ以上のデータサービスを含む。データサービスは、様々な動作がデータに関連して実行されることを可能にし得る。1つの例示的な実施例としては、分散コンピューティング環境は1つ以上のデータ格納サービスを含む。電子要求がデータ格納サービスに伝送され、データ格納動作を実行し得る。動作の例は、データ格納サービスを使用してデータを格納すること、及びデータ格納サービスを使用してデータ格納サービスによって格納されたデータを読み出すことである。データ格納サービスを含むデータサービスは、データを操作する動作もまた実行し得る。例えば、いくつかの実施形態では、データ格納サービスはデータを暗号化することができる。
本開示の様々な実施形態は、適切なコンピューティングリソースを使用して実装される暗号サービスを含む、分散コンピューティング環境を含む。暗号サービスは、平文の暗号化及び暗号文の解読等の、暗号動作を実行するための電子要求を受信してそれに応答する、分散システムによって実装され得る。いくつかの実施形態では暗号サービスは鍵を管理する。暗号動作を実行するための要求に応答して、暗号サービスは管理される鍵を使用する暗号動作を実行し得る。例えば、暗号サービスは、受信された要求に応答して、暗号動作を実行するための適切な鍵を選択して、暗号動作を実行して、暗号動作の1つ以上の結果を提供することができる。代替の構成では、暗号サービスはエンベロープ鍵(例えば具体的なデータアイテムを暗号化するために使用されるセッション鍵)を生成して、そのエンベロープ鍵をシステムに戻し、サービスの暗号動作を発動することができる。システムは、その後エンベロープ鍵を使用して暗号動作を実行することができる。
いくつかの実施形態では、暗号サービスはコンピューティングリソースサービスプロバイダの複数のテナントの鍵を管理する。コンピューティングリソースのテナントは、コンピューティングリソースプロバイダの顧客として動作するエンティティ(例えば組織または個人)であり得る。顧客は、コンピューティングリソースプロバイダによって物理的にホストされるリソースを、遠隔的にかつプログラムで構成して動作させ得る。顧客が暗号サービスに、暗号動作を実行するための要求を提出するとき(またはエンティティが暗号サービスに要求を提出するとき)、暗号サービスは、顧客のために、暗号サービスによって管理される鍵を選択して、暗号動作を実行する。暗号サービスによって管理される鍵は、他のユーザ及び/またはデータサービスは、他人が鍵へのアクセスを有さないように、安全に管理され得る。あるエンティティ(例えば、ユーザ、顧客、サービス)による別のエンティティの鍵へのアクセスの欠如は、そのエンティティが他人の鍵を得る許可された方法を有さないということ、及び/または、そのエンティティが、そのエンティティの方向で鍵を使用する他人の鍵を管理するシステムを行わせる許可された方法を有さないということ、を意味し得る。例えば、暗号サービスは、顧客、他の顧客の両方が、顧客の鍵(複数可)へのアクセスを有さず、かつ、暗号サービスに、顧客の鍵(複数可)を使用して暗号動作を実行させることができないように、鍵を管理し得る。別の実施例として、暗号サービスは、データ格納サービス等の他のサービスが、暗号サービスがいくつかまたは全ての鍵を使用して、暗号動作を実行させることができないように、鍵を管理し得る。鍵への許可なしのアクセスは、例えば許可なしのアクセスが困難または不可能になるように、適切なセキュリティ手段によって防止され得る。困難は、コンピュータ使用上非実用的である及び/またはアクセスが得られるために非許可(例えば、違法、不法、及び/または許可証明の危殆化等の別様で許可されないもの)が生じる必要性によるものであり得る。様々な実施形態に従うシステムは、鍵へのアクセスを得るための、コンピュータ非実用性の客観的尺度を保証するように構成され得る。かかる尺度は、例えば時間量に関して測定され、平均では、鍵への許可されたアクセスのために必要とされる、暗号化された情報をクラッキングするために、コンピュータ能力の定義されたユニット(例えば時間の単位当たりの特定の動作)を有するコンピュータを取り得る。
述べられたように、暗号サービスは、コンピューティングリソースプロバイダの顧客等の様々なエンティティから要求を受信し得る。暗号サービスは、コンピューティングリソースプロバイダの内部のエンティティからもまた要求を受信し得る。例えば、いくつかの実施形態では、コンピューティングリソースプロバイダによって実装されるデータサービスは、暗号サービスに暗号動作を実行させるために、暗号サービスに要求を伝送し得る。一実施例としては、顧客は、データ対象を格納するために、データ格納サービスに要求を伝送し得る。要求は、データ対象が格納されるときに暗号化されなければならないということを示し得る。データ格納サービスは、暗号動作を実行するために、暗号サービスに要求を通信し得る。暗号動作は、例えば、データ格納サービスによって使用される鍵を暗号化してデータ対象を暗号化することであり得る。暗号動作は、データ対象自体の暗号化であり得る。暗号動作は、データ対象を暗号化するためにデータ格納サービスが使用することができる、エンベロープ鍵を生成することであり得る。
様々な実施形態に従うシステムは、様々なセキュリティ手段を実装して強化されたデータセキュリティを提供する。例えば、様々な実施形態では、暗号サービスが管理する鍵を利用できる様式は限定される。例えば、いくつかの実施形態では、暗号サービスは、適切な許可時に顧客に対応する鍵を使用するようにのみ構成される。顧客の鍵を使用するための要求が、顧客から(すなわち顧客のために動作しているコンピューティングデバイスから)由来するとされる場合、暗号サービスは、その要求が、顧客によって所有される適切な証明書を使用して、電子的に(デジタルで)署名されることを要求するように構成され得る。顧客の鍵を使用するための要求が、別のデータサービスから由来した場合、暗号サービスは、そのデータサービスが、データサービスへの署名された要求が顧客によって作られたものであるという証明を提供することを要求するように構成され得る。いくつかの実施形態では、例えば、データサービスは、認証された顧客要求の証明としての役割を果たすトークンを得て、提供するように構成される。他のセキュリティ手段もまた暗号サービスを含む電子環境の構成に組み込まれ得る。例えば、いくつかの実施形態では、暗号サービスは、文脈に応じて鍵の使用を限定するように構成される。1つの例示的な実施例として、暗号サービスは、顧客からまたは顧客のために作用しているデータサービスからの、要求の暗号化のための鍵を使用するように構成され得る。しかしながら、暗号サービスは、顧客からの(別のデータサービスからではなく)要求の解読のためにのみ鍵を使用するように構成され得る。このようにして、データサービスが危殆化される場合、データサービスは暗号サービスにデータを解読させることができなくなり得る。
様々なセキュリティ手段が、暗号サービス及び/またはその電子環境に組み込まれ得る。いくつかのセキュリティ手段は、ポリシーに従って管理され得、これはいくつかの実施形態では構成可能である。一実施例として、暗号サービスは、ユーザが鍵に関するポリシーを構成することができるようにする、アプリケーションプログラミングインターフェース(API)を利用し得る。鍵に関するポリシーは、暗号サービスによって処理されるときに、鍵が特定の状況で使用され得るかどうかの決定因である情報であり得る。ポリシーは、例えば、鍵の使用を指揮する、鍵が使用され得る回数を限定する、暗号動作を実行するために鍵が使用され得るデータを限定する、及び他の限定を提供することができる、ユーザ及び/またはシステムの識別を限定し得る。ポリシーは、明示的な限定(例えば誰が鍵を使用することができないか)を提供し得、及び/または、明示的な許可(例えば誰が鍵を使用することができるか)を提供し得る。さらに、ポリシーは、鍵がいつ使用できる及びできないかの条件を概して提供するように、複雑に構造され得る。鍵を使用して暗号動作を実行するための要求が受信される場合、ポリシーに従って要求が遂行され得るかを判断するために、鍵に関する任意のポリシーがアクセス及び処理され得る。
図1は、本開示の様々な実施形態を実証する、例示的な図100である。一実施形態では、暗号サービスは、1つ以上の暗号アルゴリズムに従う1つ以上の計算の適用を含み得る暗号動作を実行する。図1に例示されるように、暗号サービスは、ユーザまたはサービスが暗号文から平文を生成することができるようにする。構成の実施例では、暗号サービスは、鍵を暗号化/解読するために使用され得、かつこれらの鍵は、データ格納サービスに格納されるデータ等のデータを暗号化/解読するために使用され得る。例えば、暗号サービスは、鍵下で暗号化された暗号文から平文を生成するための要求を受信する。暗号サービスは、要求者が許可されたエンティティであることを判定し、マスター鍵を使用して鍵を解読し、解読された鍵をサービスに戻し、これは、解読された鍵を使用して暗号文から平文を生成することができる。別の構成では、暗号サービスは暗号文を受信して、受信された暗号文を、暗号サービスによりサービスとして提供される平文へと処理する。この実施例では、暗号文は、暗号サービスを動作させるコンピューティングリソースプロバイダの顧客であり得る、及び/または、コンピューティングリソースプロバイダの別のサービスであり得る、許可されたエンティティから、暗号サービスへの電子要求の一部として、暗号サービスに提供され得る。図1に例示される暗号サービスは、1つ以上の暗号的に強いアルゴリズムを利用してデータを暗号化し得る。かかる暗号的に強いアルゴリズムは、例えば、高度暗号化標準(AES)、Blowfish、データ暗号化標準(DES)、トリプルDES、Serpent、またはTwofishを含み得、かつ、選択される具体的な実装に依存して、非対称性または対称性鍵システムのいずれかであり得る。概して、暗号サービスは、任意の暗号及び/もしくは解読アルゴリズム(暗号)、または暗号サービスによって管理されるデータを利用するアルゴリズムの組み合わせを利用し得る。
下記により詳細に記載されるように、暗号サービスは様々な方法で実装され得る。一実施形態では、暗号サービスは、下記の説明に従って構成されるコンピュータシステムによって実装される。コンピュータシステムは、それ自体が1つ以上のコンピュータシステムを備え得る。例えば、暗号サービスは、様々な実施形態に従い暗号動作を実行するように集合的に構成される、コンピュータシステムのネットワークとして実装され得る。または、換言すると、コンピュータシステムは分散システムであり得る。一実施形態では、暗号文は、暗号アルゴリズムを使用して暗号化された情報である。図1の実施例では、暗号文は暗号化形式の平文である。平文は任意の情報であり得、その名前は語を含まないテキストを含むが、平文及び暗号文は、任意の好適な形式でコードされた情報であり得、必ずしも文字情報を含まないが、文字情報を含んでよい。例えば、図1に例示されるように、計画文及び暗号文は、ビットの配列を含む。平文及び暗号文は、他の方法でならびに暗号化及び解読がコンピュータシステムによって実行され得る任意の様式でもまた表され得る。
図2は、図1に例示されるような暗号サービスが実装され得る、環境200の例示的な実施例を示す。環境200では、安全なデータ関連サービスを提供するために、様々な構成要素が一緒に動作する。この具体的な実施例では、環境200は、暗号サービス、認証サービス、データサービスフロントエンド、及びデータサービスバックエンド格納システムを含む。一実施形態では、暗号サービスは、サービスがエンベロープ鍵を使用して暗号動作を実行することができるように、環境200において、データサービスフロントエンドから平文を受信して引き換えに暗号文を提供すること、またはエンベロープ鍵をサービスに提供すること等によって、暗号動作を実行するように構成される。暗号サービスは、下記に記載のような、暗号動作の実行のための鍵の安全な格納、平文を暗号文に変換すること及び暗号文を平文に解読すること等の、追加の機能を実行し得る。暗号サービスは、例えばそこに格納される鍵に関連付けられるポリシーを実施することによって、ポリシー実施に関与する動作もまた実行し得る。暗号サービスによって実施され得るポリシーの実施例が下記に提供される。一実施形態におけるデータサービスフロントエンドは、様々なユーザからネットワークを介して伝送される要求を受信してそれらに応答するように構成されるシステムである。要求は、データサービスバックエンド格納システムに格納されたまたは格納されるべきデータに関連する動作を実行するための要求であり得る。環境200では、認証サービス、暗号サービス、データサービスフロントエンド、及びデータサービスバックエンド格納システムは、システムを利用して図2に例示されるユーザによって表される顧客にサービスを提供する、コンピューティングリソースプロバイダのシステムであり得る。図2に例示されるネットワークは、下記に記載されるものを含む、任意の好適なネットワークまたはネットワークの組み合わせであり得る。
一実施形態における認証サービスは、ユーザの認証に関与する動作を実行するように構成されるコンピュータシステムである。例えば、データサービスフロントエンドは、ユーザからの情報を認証サービスに提供して、引き換えにユーザ要求が真正であるかどうかを示す情報を受信し得る。ユーザ要求が真正であるかどうかの判断は、任意の好適な様式で実行され得、認証が実行される様式は、様々な実施形態の間で変動し得る。例えば、いくつかの実施形態では、ユーザはデータサービスフロントエンドに伝送されるメッセージに電子署名する。電子署名は、認証するエンティティ(例えばユーザ)及び認証サービスの両方に使用可能である、秘密情報(例えばユーザに関連付けられる1対の鍵の秘密鍵)を使用して生成され得る。要求及び要求のための署名は、認証サービスに提供され得、これは、秘密情報を使用して、受信された署名との比較のために、参照署名を算定して、要求が真正であるかどうかを判断し得る。要求が真正である場合、認証サービスは、データサービスフロントエンドが、暗号サービス等の他のサービスに証明するために使用することができる、要求が真正であるという情報を提供し得、それによって、他のサービスがそれに応じて動作することを可能にする。例えば、認証サービスは、別のサービスが要求の真正を検証するために分析することができる、トークンを提供し得る。電子署名及び/またはトークンは、様々な方法で限定される有効性を有し得る。例えば、電子署名及び/またはトークンは、特定の時間量の間有効であり得る。一実施例では、電子署名及び/またはトークンは、検証のための電子署名及び/またはトークンと共に含まれる、タイムスタンプを入力として取る関数(例えばハッシュベースメッセージ認証コード)に少なくとも部分的に基づいて生成される。提出された電子署名及び/またはトークンを検証するエンティティは、受信されたタイムスタンプが十分に最新のものである(例えば現在時刻から所定の時間量内である)ことを点検して、受信されたタイムスタンプのために使用している参照署名/トークンを生成し得る。提出された電子署名/トークンを生成するために使用されたタイムスタンプが、十分に最新のものでない、かつ/または、提出された署名/トークンと参照署名/トークンが一致しない場合、認証は失敗し得る。このようにして、電子署名が危殆化される場合、それは短い時間量の間のみ有効となり得、それによって危険に曝すことによって引き起こされる潜在的な被害を限定する。真正を検証する他の方法もまた、本開示の範囲内であるとみなされるということに留意すべきである。
一実施形態におけるデータサービスバックエンド格納システムは、データサービスフロントエンドを通して受信される要求に従ってデータを格納するコンピュータシステムである。下記により詳細に記載されるように、データサービスバックエンド格納システムは、暗号化形式でデータを格納し得る。データサービスバックエンド格納システム内のデータは、非暗号化形式でもまた格納され得る。いくつかの実施形態では、データサービスフロントエンドによって実装されるAPIは、要求が、データサービスバックエンド格納システムに格納されるべきデータが、暗号化されるべきかどうかを特定することを可能にする。暗号化されてデータサービスバックエンド格納システムに格納されるデータは、様々な実施形態に従い、様々な方法で暗号化され得る。例えば、様々な実施形態では、データは、暗号サービスにアクセス可能であるが、環境200の他のシステムのいくつかまたは全てにはアクセス不能な鍵を使用して、暗号化される。データは、データサービスバックエンド格納システム内の格納のために、暗号サービスによってコードされ得、及び/または、いくつかの実施形態では、データは、暗号サービスによって解読された鍵を使用して、ユーザシステムまたはデータサービスフロントエンドのシステム等の、別のシステムによって暗号化され得る。それによって環境200がデータを暗号化するために動作し得る様々な方法の実施例は、下記に提供される。
環境200(及び本明細書に記載される他の環境)の多数の変形は本開示の範囲内であるとみなされる。例えば、環境200は、暗号サービス及び/または認証サービスと通信し得る、追加のサービスを含み得る。例えば、環境200は、異なる方法でデータを格納し得る、追加のデータ格納サービス(それぞれがフロントエンドシステム及びバックエンドシステムを備え得る)を含み得る。例えば、あるデータ格納サービスは、データ格納サービスが同期様式でデータ格納サービスを実行するデータへの、アクティブアクセスを提供し得る(例えばデータを読み出すための要求が読み出されたデータと共に同期の応答を受信し得る)。別のデータ格納サービスは、保存用データ格納サービスを提供し得る。かかる保存用データ格納サービスは、非同期の要求処理を利用し得る。例えば、データを読み出すための要求は、読み出されたデータを含む同期応答を受信しないことがある。むしろ、保存用データ格納サービスは、保存用データ格納サービスが読み出されたデータを提供する準備ができると、読み出されたデータを得るために、第2の要求が提出されることを要求し得る。別の実施例として、環境200は、暗号サービス(及び/または他のサービス)から情報を受信して、その情報を使用してアカウント記録を生成する計量サービスを含み得る。アカウント記録は、暗号サービス(及び/または他のサービス)の使用について顧客に課金するために使用され得る。さらに、暗号サービスからの情報は、料金がどのように課せられるべきかについての指示を提供し得る。例えば、いくつかの例では、顧客は暗号サービスの使用について、請求書が提供され得る。他の例では、暗号サービスの使用についての料金は、その動作の一部として暗号サービスを利用するデータサービス等の、他のサービスの使用料金に合わされ得る。使用は、動作当たり、時間当たり、及び/または他の方法等の、様々な方法で計量されて課金され得る。他のデータサービスもまた環境200(または本明細書に記載される他の環境)内に含まれ得る。
さらに、図2は、データサービスフロントエンドと対話するユーザを描写する。ユーザは、図面には例示されていないユーザデバイス(例えばコンピュータ)を通してデータサービスフロントエンドと対話し得るということが理解されるべきである。さらに、図2(及び図面の他の箇所)に描写されるユーザは、非人間エンティティもまた表し得る。例えば、コンピュータシステム上で実行する自動化プロセスは、本明細書に記載されるデータサービスフロントエンドと対話し得る。例示的な一実施例として、図2のユーザによって表されるエンティティは、その動作の一部として、データサービスフロントエンドを使用して、データサービスバックエンド格納システムにデータを格納する及び/またはそこからデータを読み出す、サーバであり得る。さらに別の実施例として、図2のユーザによって表されるエンティティは、図2のサービスのうちの1つ以上を動作させるコンピューティングリソースプロバイダのサービスとして提供されるエンティティであり得る。例えば、図2のユーザは、コンピューティングリソースプロバイダによって提供される、プログラム実行サービスの仮想または他のコンピュータシステムを表し得る。下記に記載の他の環境の変形を含む他の変形もまた、本開示の範囲内であるとみなされる。
例えば、図3は、本開示の様々な実施形態が実装され得る、環境300の例示的な実施例を示す。図2と同様に、図3の環境は、認証サービス、データサービスフロントエンドシステム(データサービスフロントエンド)、暗号サービス、及びデータサービスバックエンド格納システムを含む。認証サービス、データサービスフロントエンド、暗号サービス、及びデータサービスバックエンド格納システムは、図2に関連して上記に説明するように構成され得る。例えば、ユーザは、好適な通信ネットワークを介してデータサービスフロントエンドにアクセスし得るが、かかるネットワークは図面に例示されない。図3に例示される環境の実施例300において、情報の流れを表す矢印が提供される。本実施例では、ユーザはPUT要求をデータサービスフロントエンドに伝送する。PUT要求は、特定のデータをデータサービスバックエンド格納システムに格納するための要求であり得る。PUT要求に応答して、データサービスフロントエンドはPUT要求が真正であるかどうかを判断し得るが、これは、ユーザが、要求される動作が、システムによって実施される認証ポリシーに従って実行され得る様式で、その要求を提出したかである。
図3では、かかる認証決定がどのように行われ得るかの例示的な実施例が、例示される。この具体的な実施例では、データサービスフロントエンドは、認証要求を認証サービスに提出する。認証サービスは、認証要求を使用して、ユーザからのPUT要求が真正であるかどうかを判断し得る。要求が真正である場合、認証サービスは、認証証明をデータサービスフロントエンドに提供し得る。認証証明は、真正要求が受信されたことを独立して判断するために、暗号サービス等の別のサービスによって使用可能である、電子トークンまたは他の情報であり得る。1つの例示的な実施例では、PUT要求はPUT要求のための署名と共に伝送される。PUT要求及びその署名は、認証サービスを通して提供され、これは真正である場合署名がどうあるべきかを独立的に算定する。認証サービスによって生成される署名がユーザによって提供される署名と一致する場合、認証サービスは、PUT要求が真正であると判断し得、応答して認証証明を提供し得る。PUT要求が真正であるかどうかを判断することは、ポリシーの実施に関連する1つ以上の動作もまた含み得る。例えば、署名が有効であるがポリシーが別様でPUT要求が完了されるべきでないと示す(例えば要求がポリシーによって許可されない時間に提出された)場合、認証サービスは、要求が真正でないということを示す情報を提供し得る。(しかしながら、かかるポリシーの実施は、環境300の他の構成要素によって実行され得るということに留意すべきである。)認証サービスは、認証サービス及びユーザによって共有される鍵を使用すること等によって、署名を生成し得る。述べられたように、認証証明は、暗号サービス等の別のサービスが、それから要求が真正であることを独立して検証することができる、情報であり得る。例えば、図3に例示される暗号サービスの実施例を使用して、認証証明は、他のサービスにはアクセス不能である鍵等の、認証サービス及び暗号サービスの両方によって共有される鍵に、少なくとも部分的に基づいて生成され得る。
図3に例示されるように、データサービスフロントエンドは、認証サービスからの認証証明の受信の際に、平文及び認証証明を暗号サービスに提供する。平文及び認証証明は、暗号サービスへのAPI呼び出しまたは他の電子要求(例えば暗号API呼び出し)に応じて提供され得る。暗号サービスは、認証証明を分析して、平文を暗号化するかどうかを判断し得る。
暗号サービスに追加の情報が提供され得るということに留意すべきである。例えば、平文を暗号化するために使用される鍵の識別子は、入力パラメータとして、データサービスフロントエンドからのAPI呼び出し(順に、ユーザから識別子を受信した可能性がある)に提供され得る。しかしながら、識別子は暗号サービスに伝送されないことがあるということに留意すべきである。例えば、様々な実施形態では、平文を暗号化するためにどの鍵を使用するかは、別様で判断可能であり得る。例えば、データサービスフロントエンドから暗号サービスに伝送される情報は、ユーザがそのためにPUT要求を提出した顧客の識別子等の、ユーザ及び/またはユーザに関連付けられる組織の識別子等の、ユーザに関連付けられる情報を含み得る。かかる情報は、暗号サービスによって使用されて、使用される初期設定の鍵を判断し得る。換言すると、鍵は、鍵を判断することに有用である情報によって、暗黙的に特定され得る。概して、使用される鍵の判断は、任意の好適な様式で実行され得る。さらに、いくつかの実施形態では、暗号サービスは、鍵を生成または選択して、後で使用される生成または選択された鍵の識別子を提供し得る。APIパラメータの別の実施例は、そのために暗号動作が実行されている顧客アカウントのためのマスター鍵の識別子であり得る。
図3に例示されるように、認証証明が、平文を暗号化するために、暗号サービスに十分である場合、暗号サービスは1つ以上の暗号動作を実行し得る。一実施形態では、1つ以上の暗号動作は、平文を暗号化するために使用されるエンベロープ鍵を生成するための動作を含み得る。エンベロープ鍵は、無作為に生成された対称性鍵または一対の鍵のうちの秘密鍵であり得る。エンベロープ鍵が生成された後で、暗号サービスは、エンベロープ鍵を、API呼び出しにおいて特定されるマスター鍵を用いて暗号化し得、暗号化された鍵が永続的に格納(例えば、暗号化された鍵を格納サービスもしくはいくつかの他の耐久性格納装置に格納することによって)または廃棄されることを引き起こし得る。さらに、暗号サービスは、エンベロープ鍵の平文版も、暗号化されたエンベロープ鍵と同様に、データサービスフロントエンドに送信し得る。データサービスは、その後エンベロープ鍵の平文版を使用して平文(すなわち、暗号化要求に関連付けられるデータ)を暗号化し得、エンベロープ鍵が、エンベロープ鍵を暗号化するために使用されたマスター鍵の識別子に関連して、永続的格納装置に格納されることを引き起こし得る。さらに、データサービスは、エンベロープ鍵の平文版を廃棄し得る。従って、一実施形態では、データサービスがエンベロープ鍵の平文版を廃棄した後、それはもう暗号文を解読することができなくなる。
代替の実施形態では、暗号動作は平文を暗号化することを含み得る。例えば、暗号サービスは、平文を暗号化して、データサービスフロントエンド格納システムに暗号文を提供する。データサービスフロントエンドは、その後、その動作に従う永続的な格納のために、データサービスバックエンド格納システムに暗号文を提供し得る。他の情報もまた、データサービスフロントエンドからデータサービスバックエンド格納システムに伝送され得る。例えば、平文を暗号化して暗号文を生成するために使用される鍵の識別子には、データサービスバックエンド格納システムによる格納のために、暗号文が提供され得る。ユーザ及び/またはユーザの組織を識別するメタデータ等の、他の情報もまた提供され得る。
本明細書に記載される全ての環境と同様に、多数の変形が本開示の範囲内であるとみなされる。例えば、環境300の様々な構成要素の間の情報の流れは、示されるものから変動し得る。例えば、中間構成要素を通して、ある構成要素から別の構成要素に流れる情報(例えば認証サービスから暗号サービスへのデータ及び/または暗号サービスからデータサービスバックエンド格納システムへのデータ)は、その目的地に直接及び/または環境300の他の中間構成要素(必ずしも図面に含まれない)を通して提供され得る。別の実施例として、PUT要求(及び以下のGET要求)は、例示の目的のために提供される。しかしながら、記載される動作を実行するための任意の好適な要求が使用され得る。
図4は、一実施形態に従ってデータ格納サービス内にデータを格納するために使用され得る、プロセス400の例示的な実施例を示す。プロセス400は、例えば図3に例示されるデータサービスフロントエンドによって実行され得る。プロセス400(あるいは本明細書に記載される任意の他のプロセス、またはその変形及び/もしくは組み合わせ)のうちのいくらかまたは全ては、実行可能命令で構成される1つ以上のコンピュータシステム下で実行され得、かつ、1つ以上のプロセッサ上で集合的に、ハードウェアによって、またはそれらの組み合わせで実行する、コード(例えば実行可能命令、1つ以上のコンピュータプログラム、または1つ以上のアプリケーション)として実装され得る。コードは、例えば、1つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形式で、コンピュータ可読格納媒体上に格納され得る。コンピュータ可読格納媒体は、非一過性であり得る。
図4に例示されるように、プロセス400はPUT要求を受信すること402を含む。PUT要求は、ネットワークを介して電子的に受信され得、PUT要求の電子署名のような、認証のために要求される情報等の、要求に関連付けられる情報を含み得る。PUT要求を受信したことに応答して、プロセス400は、認証要求を提出404することを含み得る。例えば、プロセス400において実行されるシステムは、図3に関連して上記のように、別個の認証サービスに認証要求を提出し得る(例えば適切に構成されたAPI呼び出しを介して)。同様に、それ自体の認証を実行するデータサービスフロントエンドは、認証要求を、データサービスフロントエンドによって実装される認証モジュールに提出し得る。概して、認証要求は、様々な実施形態に従う任意の好適な様式で提出され得る。
認証要求の提出の際に、認証要求が提出404されたエンティティによって、認証応答が受信406される。例えば、図3を参照すると、認証サービスは、他のサービスによる使用のための認証の証明を含む応答を、データサービスフロントエンドに提供し得る。認証が成功であったかどうかの表示等の他の情報もまた伝送され得る。要求が真正であるかどうかが判断408され得る。要求の真正性は、認証サービス等のエンティティまたはかかる点検を集合的に実行するエンティティの組み合わせによって点検される、1つ以上の因子に従属し得る。例えば真正性は、要求が、必要とされる有効な証明(例えば、点検するエンティティによって共有される秘密鍵によって生成される電子署名)を提供すること、及び/またはポリシーが、要求が遂行されることを可能にすることを要求し得る。認証要求を提出404して認証応答を受信するシステムの視点からは、真正性は、受信される認証応答に従属し得る。結果的に、一実施形態では、要求が真正であるかどうかの判断408は、受信される認証応答に少なくとも部分的に基づいて実行され得る。例えば、認証が真正でなかった場合、認証応答はそのように示し、それに応じて判断408され得る。同様に、応答は、例えば要求が真正であった場合に含まれ得る情報を含まないことによって、認証要求が真正であることを暗黙的に示し得る。PUT要求が真正でないと判断408された場合、PUT要求は拒否410され得る。PUT要求を拒否することは、任意の好適な様式で実行され得、かつ、プロセス400が実行されている様々な実施形態に依存し得る。例えば、拒否410することで、PUT要求は、PUT要求を提出したユーザにメッセージを伝送することを含み得る。メッセージは、要求が拒否されたことを示し得る。要求を拒否することは、PUT要求が真正でないまたは許可されていないことをもたらした、任意の問題を解決する方法を判断するために使用され得る、電子署名が正確でないまたは他の理由等の、なぜ要求が拒否されたかについての情報を提供することもまた含み得る。
PUT要求が真正かつ許可されると判断408される場合、一実施形態では、プロセス400は、平文が暗号化されることをもたらす1つ以上の暗号動作を実行412することを含む。例えば、暗号サービスに、1つ以上の暗号動作を実行するために使用される鍵を提供するための要求(例えば適切に構成されたAPI呼び出し)が提出され得る。暗号サービスが暗号動作(例えば、平文を暗号化して暗号文を提供する、または平文を暗号化するために使用され得るエンベロープ鍵を生成すること)を実行するかどうかを独立して判断することができるように、暗号サービスに提供される要求には、PUT要求が真正であることの証明が提供され得る。しかしながら、様々な実施形態では、認証証明が暗号サービスに提供されないことがあり、例えば、暗号サービスはそれが受信する要求に従って動作し得る。例えば、暗号サービスがデータサービスフロントエンドから要求を受信する場合、暗号サービスは、データサービスフロントエンドが既に要求の認証を独立して検証したという事実に依存し得る。かかる実施形態及び他の実施形態では、データサービスフロントエンドは、暗号サービスを用いて自体を認証して、セキュリティの追加の層を提供し得る。暗号サービスは、鍵を生成するまたは別様で得て、得られた鍵を暗号化するかまたは別様で暗号化された鍵を得て(例えばメモリから)、要求に応答して、得られた鍵及び暗号化された鍵を提供し得る。得られた鍵は、暗号サービスへの要求において識別される鍵を使用して、暗号化され得る。得られた鍵は、平文を暗号化するために使用され得、平文を暗号化した後で、得られた鍵は廃棄(例えばメモリから取消不可に除去)され得る。代替の実施形態では、プロセス400を実行するシステムは、1つ以上の暗号動作を実行するために使用される鍵を、生成するまたは別様で得て、暗号化するために得られた鍵を暗号サービスに提供し得る。
いくつかの実施形態では、1つ以上の暗号動作を実行することは、暗号文が生成されることをもたらし得る。1つ以上の暗号動作の結果として生成された暗号文は、後の起こり得る読み出しのために、格納414され得る。上記のように、暗号文の格納は、後の暗号文の解読を可能にし得る追加の情報の格納を含み得る。例えば、その識別子を有する鍵が後で暗号文を解読して平文を得るために使用され得るように、暗号文は、平文を暗号文に暗号化するために使用された鍵の識別子と共に格納され得る。暗号文の格納は、任意の好適な様式でもまた実行され得る。例えば、暗号文の格納は、上記のように、データサービスバックエンド格納システムによって実行され得る。
したがって、図5は、環境500及び平文がどのように得られ得るかを例示する情報の流れの、例示的な実施例を示す。本実施例の環境500は、認証サービス、暗号サービス、データサービスフロントエンド、及びデータサービスバックエンド格納システムを含む。認証サービス、暗号サービス、データサービスフロントエンド、及びデータサービスバックエンド格納システムは、上記のようなシステムであり得る。図5に例示されるように、データサービスフロントエンドは、ユーザからGET要求を受信し、応答して平文を提供するように構成される。これを行うために、データサービスフロントエンドは、適切な場合に、認証証明をデータサービスフロントエンドに提供するように、それ自体が構成され得る、認証サービスに、認証要求を提出するようにもまた構成され得る。データサービスフロントエンドは、データを解読することに関連する1つ以上の暗号動作を実行させるために、暗号サービスに要求を送信するようにもまた構成され得る。エンベロープ鍵が使用される一実施形態では、データサービスは、暗号化されたエンベロープ鍵(または暗号化されたエンベロープ鍵の識別子)の認証証明を含むまたは特定する要求(例えばAPI呼び出し)を、暗号サービスに提出し、かつ、エンベロープ鍵を暗号化するために使用されたマスター鍵の識別子を暗号サービスに提出することができる。暗号サービスは、認証証明が、動作を可能にするのに十分であるかどうかを判断することができ、かつ、認証証明が十分である場合エンベロープ鍵を解読することができる。解読されたエンベロープ鍵は、暗号化された平文を解読するために鍵を使用し得るデータサービスに、送信して戻され得る。データサービスはその後解読された平文鍵を廃棄し得る。
代替の実施形態では、データサービスフロントエンドは、暗号サービスに、受信された認証証明を、暗号サービスが解読する暗号文とともに、提供するように構成され得る。結果的に、暗号サービスは、認証証明が、暗号文の解読を可能にするのに十分であるかどうかを判断して、認証証明が十分である場合、適切な鍵(データサービスフロントエンドによって、暗号サービスに識別され得る)を使用して暗号文を解読して、データサービスフロントエンドに解読された暗号文(平文)を提供するように構成され得る。暗号サービスに暗号文を提供するために、データサービスフロントエンドは、データサービスバックエンド格納システムから暗号文を得る(例えば、適切に構成されたAPI呼び出しを介して)ように構成され得る。
図6は、様々な実施形態に従う、平文を得るために使用され得る、プロセス600の例示的な実施例を示す。プロセス600は、例えば、図5に関連して上記に例示される、データサービスフロントエンドシステム(データサービスフロントエンド)によって実行され得るが、プロセス600及びその変形は任意の好適なシステムによって実行されてよい。一実施形態では、プロセス600は、ユーザからGET要求(または他の適切な要求)を受信602することを含む。GET要求を受信することは、他の種類の要求に関連して上記のように実行され得る。GET要求の受信602の際に、認証要求が、認証サービスに、または上記のような任意の様式で、提出604され得る。それに応じて、認証応答が受信され得る。受信された認証応答に少なくとも部分的に基づいて、GET要求が真正であるかどうかが判断608され得る。GET要求が真正でないと判断608される場合、プロセス600は、上記のように、様々な実施形態に従う様々な様式で実行され得る要求を拒否610することを含み得る。
GET要求が真正であると判断608される場合、プロセス600は格納装置から暗号文を読み出すことを含み得る。格納装置から暗号文を回復612することは、任意の好適な様式で実行され得る。例えば、図5に関連して上記の環境500を参照すると、データサービスフロントエンドは、暗号文のための要求をデータサービスバックエンド格納システムに提出し得、応答として暗号文を受信し得る。概して、暗号文は、任意の好適な様式で格納装置から得られ得る。暗号文の受信の際に、プロセス600は、暗号文を解読することに関連する1つ以上の動作を実行614することを含み得る。例えば、一実施形態では、データ格納サービスは、暗号文を解読することに関連する1つ以上の暗号動作を実行614するために、暗号サービスに要求を送信し得る。構成の一実施例では、データサービスは、暗号サービスに、暗号化されたエンベロープ鍵(または暗号化されたエンベロープ鍵の識別子)認証証明を含むAPI呼び出しを送信し得、かつ、エンベロープ鍵を暗号化するために使用されるマスター鍵の識別子を暗号サービスに送信し得る。暗号サービスは、認証証明が、動作を可能にするのに十分であるかどうかを判断することができ、かつ、認証証明が十分である場合エンベロープ鍵を解読することができる。解読されたエンベロープ鍵は、暗号化された平文を解読するために鍵を使用し得るデータサービスに、送信して戻され得る。
別の構成では、暗号文は、図5に関連して上記の暗号サービスのような、暗号サービスに提供され得る。暗号文を解読するかどうかを判断するために暗号サービスによって使用され得る認証の証明等の、他の情報もまた、暗号サービスに提供され得る。さらに、いくつかの実施形態では、暗号文を解読するために暗号サービスによって使用される鍵の識別子が、暗号サービスに提供され得る。しかしながら、他の実施形態では、鍵は暗号サービスに暗黙的に示され得る。例えば、暗号サービスは、暗号サービスに示される顧客に関連付けられる初期設定の鍵を使用し得る。概して、暗号サービスが、暗号文を解読するためにどの鍵を使用するかを判断することができる、任意の様式が使用され得る。
図6に例示されるように、暗号文が解読された後で、プロセス600はGET要求に応答を提供616することを含み得る。GET要求に応答を提供することは、様々な実施形態に従う様々な方法で実行され得る。例えば、GET要求に応答を提供することは、平文を提供することを含み得る。他の実施形態では、平文は、その後GET要求に応答して提供される、他の暗号化された情報を解読するために使用される鍵であり得る。概して、本開示の特定の実施形態における平文の役割に依存して、GET要求に応答を提供することは、様々な方法で実行され得る。
述べられたように、本開示の様々な実施形態は、データがデータ格納サービスによって様々な方法で格納されることを可能にする。図7は、かかる実施形態に従う、情報の流れを示す矢印を伴う環境700の例示的な実施例を示す。図7に例示されるように、環境700は、上記のような、認証サービス、暗号サービス、データサービスフロントエンド、及びデータサービスバックエンド格納システムを含む。この特定の実施例では、データサービスフロントエンドは、様々なユーザからPUT要求を受信するように構成されるコンピュータシステムである。PUT要求は、データサービスバックエンド格納システムによって格納されるべきデータ対象を含むかまたは特定し得る。PUT要求は、データ対象を暗号化するために使用される鍵の鍵識別子もまた特定し得る。データサービスフロントエンドは、鍵及び鍵識別子を受信して、それに応答して鍵識別子によって識別される鍵によって暗号化される鍵を提供するように動作可能である暗号サービスに認証証明を提供するために、上記のように、認証サービスと対話するようにもまた構成され得る。データサービスフロントエンドは、その後データサービスバックエンド格納システム内で格納を引き起こし得る。格納され得るデータは、鍵によって暗号化されたデータ対象を含み得る。格納され得るデータは、鍵識別子によって識別される鍵によって暗号化される鍵もまた含み得る。本明細書の他の箇所で記載されるように、暗号化されたデータ対象及び暗号化された鍵は、異なるサービスに格納され得る。
図7に例示されるように、データサービスフロントエンドは、暗号化された情報を、格納のためにデータサービスバックエンド格納システムに提供するように構成される。この実施例では、データサービスフロントエンドは、鍵下で暗号化されたデータ対象と、鍵IDを有する別の鍵下で暗号化された鍵と、を提供するように構成される。例示の目的のために、暗号化を示すために中括弧表記が使用されるということに留意すべきである。特に、中括弧の中の情報は、添字で特定される鍵下で暗号化される情報である。例えば、{データ対象}鍵は、「データ対象」というデータが、「鍵」という鍵下で暗号化されるということを示す。この中括弧表記を使用して、鍵識別子も添字で出現し得るということに留意すべきである。添字に鍵識別子が出現する場合、中括弧の中の情報は、その鍵識別子によって識別される鍵下で暗号化される。例えば、{データ対象}鍵IDは、「データ対象」というデータ対象が、「鍵ID」という鍵識別子によって識別される鍵下で暗号化されるということを示す。同様に、{鍵}鍵IDは、「鍵」という鍵が、「鍵ID」という鍵識別子によって識別される鍵下で暗号化されるということを示す。換言すると、本開示は、添字において鍵及び鍵識別子の両方を利用し、添字の意味は文脈から明白であるはずである。暗号文は、関連する解読鍵のIDを判断するために使用可能な、追加のメタデータを含み得る。
図8は、図7に関連して上記されるデータサービスバックエンド格納システム等の、データ格納システム内にデータ対象を格納するために実行され得るプロセス800の例示的な実施例を示す。プロセス800は、例えば図7に関連して上記されるデータサービスフロントエンドシステム等の、任意の好適なシステムによって実行され得る。一実施形態では、プロセス800は、データ対象のためのPUT要求を受信802することを含む。データ対象のためのPUT要求を受信することは、例えば上記のような、任意の好適な様式で実行され得る。データ対象は要求に関連して受信され得、または別のサービスから受信され得るということに留意すべきである。例えば、要求は、識別子を使用して別のサービスから得られ得る、データ対象の識別子を含み得る。上記の他のプロセスと同様に、一実施形態におけるプロセス800は、認証要求を提出804すること及び認証応答を受信806することを含む。受信806された認証応答は、PUT要求が真正要求であるかどうかを判断808するために使用され得る。PUT要求が真正でないと判断808される場合、プロセス800は、上記のように要求を拒否810することを含み得る。PUT要求が真正であると判断808される場合、プロセス800は、エンベロープ鍵を暗号化するために使用されるマスター鍵の鍵ID等の、鍵識別子(鍵ID)を得る812ことを含み得る。鍵IDを得る812ことは、任意の好適な様式で実行され得、鍵IDが得られる様式は様々な実施形態に従って変動し得る。例えば、図7に例示されるように、PUT要求は鍵IDを特定し得る。別の実施例として、ユーザのIDまたは別様でユーザに関付けられるIDは、識別子または初期設定の鍵を得るために使用され得る。別の例として、暗号文は関連する鍵IDの表示を提供し得る。さらに別の実施例として、どの鍵識別子を得るかを判断するために、1つ以上のポリシー判断が使用され得る。
一実施形態では、プロセス800は、エンベロープ鍵等の鍵を生成814することもまた含む。鍵を生成することは、例えば、暗号サービスまたは暗号サービスから暗号動作を要求するサービス(例えば、データ格納サービス)によって、任意の好適な様式で実行され得る。例えば、鍵は、鍵導出関数への適切な入力を使用し、鍵導出関数を使用して生成され得る。鍵導出機能の実施例には、IEEE規格1363 2000において定義されるKDF1、ANSI X9.42において定義される鍵導出機能、及びRFC5869において特定されるHMAC−Based Extract−and−Expand Key Derivation Function(HKDF)等のHMACベースの鍵導出機能が挙げられる。別の例として、鍵は、米国国立標準技術研究所特別刊行物(NIST SP)800−90Aによって特定されるもの等の、無作為もしくは偽性無作為数生成器、ハードウェアエントロピーソース、または決定的無作為ビット生成手段によって生成され得る。図8が鍵を生成814することを含むプロセス800を示す一方で、鍵は格納装置からの回復等によって他の方法で得られ得るということに留意すべきである。換言すると、鍵は予め生成されていることがある。
図8に例示されるプロセス800を続けると、一実施形態では、プロセス800はデータ対象を暗号化するために生成された鍵を使用816することを含む。例えば、暗号サービスが鍵を生成する実施形態では、暗号サービスは、鍵、鍵ID、及び鍵の暗号化されたコピーを、データサービスに提供し得る。例えば、図7を参照すると、データサービスフロントエンドは、エンベロープ鍵及びエンベロープ鍵を暗号化するために使用されるマスター鍵の鍵IDを、認証証明等の任意の他の関連する情報と共に、暗号サービスから受信し得る。暗号鍵の平文コピーはその後データ対象を暗号化するために使用され得る。暗号鍵の平文コピーは廃棄され得、暗号化されたデータ対象ならびに暗号化された鍵は、その後格納818され得る。例えば、図7を参照すると、データサービスフロントエンドは、暗号化されたデータ対象及び暗号化された鍵を、格納のためにデータサービスバックエンド格納システムに伝送し得る。サービスが鍵を生成する構成では、サービスは鍵及び鍵IDを暗号サービスに提供し得る。例えば、データサービスフロントエンドは、エンベロープ鍵及びエンベロープ鍵を暗号化するために使用されるマスター鍵の鍵IDを、認証承認等の、任意の他の関連する情報と共に暗号サービスに送信し得る。暗号鍵の平文コピーはその後データ対象を暗号化するために使用され得る。サービスは、暗号鍵の平文コピー及び暗号化されたデータ対象を廃棄し得、ならびに、暗号化された鍵はその後格納され得る。例えば、図7を参照すると、データサービスフロントエンドは、暗号化されたデータ対象及び暗号化された鍵を、格納のためにデータサービスバックエンド格納システムに伝送し得る。
暗号化されたデータ対象及び暗号化されたエンベロープ鍵は、鍵の平文版を伴わずに格納され得る、つまり、平文鍵は、データサービスバックエンド格納システム及び1つ以上の他のシステムに対してアクセス不能であり得る。その下でデータ対象が暗号化される鍵(例えばマスター鍵)は、任意の好適な様式でアクセス不能にされ得る。いくつかの実施形態では、これは、暗号サービスにのみアクセス可能であるメモリ内にそれを格納することによって達成される。いくつかの他の実施形態では、これは、マスター鍵をハードウェアまたは他のセキュリティモジュール内に、または別様でハードウェアもしくは他のセキュリティモジュールの保護下に格納することによって、達成され得る。いくつかの実施形態では、平文エンベロープ鍵を格納するメモリ位置(例えばデータサービスのメモリ)は、上書きすることが可能であり得るか、または、鍵を格納するメモリ位置は、データサービスフロントエンドへの鍵をアクセス不能にするために、意図的に上書きされ得る。別の実施例として、平文エンベロープ鍵は、最終的に鍵を格納しなくなる揮発性メモリ内に維持され得る。このようにして、エンベロープ鍵は、それが、鍵IDによって識別された、または、コンピュータ的に非実用的であり得るが、鍵IDによって識別される鍵を用いずに鍵をクラッキングする等によって別様で、非許可様式で得られた、鍵を使用して解読される場合にのみ、アクセス可能である。換言すると、鍵IDによって識別される鍵は、その下でデータ対象が暗号化される鍵への、許可されたアクセスを要求される。したがって、図7のデータサービスバックエンド格納システムが危殆化される場合、かかる危殆化は、暗号化されていないデータ対象へのアクセスを提供し得ず、これは、データ対象を解読することが、鍵IDによって識別される鍵を使用した解読を通して、または、コンピュータ的に実現可能ではない他の方法を通してのみ得ることができる、鍵へのアクセスを必要とし得るためである。
述べられたように、本開示の様々な実施形態は、ユーザがデータ対象を格納すること及び安全な様式でそれらを読み出すことを可能にする。したがって、図9は格納装置からデータ対象を得るために使用され得る環境900の例示的な実施例を示す。図9に例示されるように、環境900は、認証サービス、暗号サービス、データサービスフロントエンドシステム、及びデータサービスバックエンド格納システムを含む。認証サービス、暗号サービス、データサービスフロントエンド、及びデータサービスバックエンド格納システムは、上記のようなコンピュータシステムであり得る。図9に例示されるように、データサービスフロントエンドシステムは、データ対象要求を受信し、それに応答してデータ対象を提供するように構成される。応答してデータ対象を提供するために、本実施形態におけるデータ格納フロントエンドシステムは、図9に例示されるように、認証サービス、暗号サービス、及びデータサービスバックエンド格納システムと、対話するように構成される。例えば、様々な実施形態では、データサービスフロントエンドシステムは、認証要求を認証サービスに提出し、要求に応答して認証証明を受信するように構成される。別の実施例として、データサービスフロントエンドは、鍵IDによって識別される鍵によって暗号化された鍵及び認証証明を、鍵を提供するかどうかを認証証明に少なくとも部分的に基づいて判断するように動作可能である暗号サービスに提供して、鍵を提供するように判断された場合、鍵をデータサービスフロントエンドに提供するように構成される。データサービスフロントエンドは、鍵ID等の他の情報を暗号サービスに提供するようにもまた構成され得る。しかし、いくつかの実施形態では、鍵IDは、例えば暗号サービスに提供される他の情報との関連を通して、暗号サービスに暗黙的に示され得る。いくつかの実施形態では、ユーザは、要求をデータサービスフロントエンドに提出することに関連して、鍵IDをデータサービスフロントエンドに提供するということにもまた留意すべきである。さらに、図9に例示されるように、一実施形態では、データサービスフロントエンドは、データサービスバックエンド格納システムからデータ対象を要求して、それに応答して、鍵によって暗号化されたデータ対象及び鍵IDによって識別された鍵によって暗号化された鍵を受信するように、構成される。いくつかの実施形態では、暗号サービスは、特定される鍵IDに関連付けられる鍵を使用して生成されなかった暗号文の解読を実行することを、拒否するように動作可能であり得る。
一実施形態では、データサービスフロントエンドは、暗号サービスから受信される鍵を使用してデータ対象を解読し、解読されたデータ対象をユーザに提供するように構成される。したがって、図10は、様々な実施形態に従う、解読されたオブジェクトを提供するために使用され得るプロセス1000の例示的な実施例を示す。プロセス1000は、図9に関連して記載されるデータサービスフロントエンドシステム等の、任意の好適なシステムによって実行され得る。一実施形態では、プロセス1000は、データ対象のためのGET要求を受信1002することを含む。データ対象のためのGET要求を受信することは、他の種類の要求に関連して上で述べられたような、任意の好適な様式で実行され得る。例えば、データ対象のためのGET要求は、要求及び/または他の情報を認証するために使用される情報を含み得る。したがって、一実施形態では、プロセス1000は、本明細書に記載される他のプロセスと同様に、認証要求を認証システムに提出1004すること、及び認証応答を受信1006することを含む。認証要求を提出すること及び認証応答を受信することは、上記のような任意の好適な様式で実行され得る。認証応答は、GET要求が真正であるかどうかを判断1008するために使用され得る。GET要求が真正でないと判断1008される場合、一実施形態では、プロセス1000は要求を拒否1010することを含む。しかしながら、GET要求が真正であると判断1008される場合、一実施形態では、プロセス1000は、暗号化されたデータ対象及び暗号化された鍵を格納装置から回復1012することを含む。例えば、データサービスフロントエンドシステムは、暗号化されたデータ対象及び暗号化された鍵を、図9に関連して上記に例示される、データサービスバックエンド格納システムから得ることができる。
一実施形態では、プロセス1000は、暗号化されたエンベロープ鍵を暗号サービスに提供1014することを含む。暗号化されたエンベロープ鍵を暗号サービスに提供1014することは、任意の好適な様式で実行され得、かつ、暗号サービスが暗号化された鍵を解読するかどうかを判断することができるようにする認証証明等の、他の情報と共に提供され得る。さらに、暗号化されたエンベロープ鍵を暗号サービスに提供1014することは、暗号サービスが、暗号サービスによって管理される複数の鍵の中から、識別子によって識別される鍵を選択することができるようにするために、暗号化されたエンベロープ鍵の許可された解読のために要求される鍵の識別子を提供することを含み得る。しかしながら、上で述べられたように、鍵は暗黙的に識別され得る。したがって、暗号サービスは、適切な鍵を選択して暗号化された鍵を解読し得る。したがって、一実施形態では、プロセス1000は、解読されたエンベロープ鍵を暗号サービスから受信1016することを含む。例えば、暗号サービスが、認証証明が有効である、及び/または、暗号化されたものの解読が任意の適用可能なポリシーに従って許容可能であると判断した場合、暗号サービスは、解読された鍵を、データ対象を解読しようとしているシステムに提供し得る。その後、解読されたエンベロープ鍵を使用して、データ対象が解読1018され得る。その後、解読されたデータ対象は、ユーザまたはGET要求を提出した他のシステム等の要求者に提供1020され得る。
多くの例では、ユーザ(すなわち、一般的には暗号サービスを利用するデバイス)が暗号サービスと直接対話することが望ましい。したがって、図11は、暗号サービスへの直接的なユーザアクセスを可能にする、環境1100の例示的な実施例を示す。環境1100では、認証サービス、データサービスフロントエンド、及びデータサービスバックエンド格納システムが含まれる。認証サービス、データサービスフロントエンド、及びデータサービスバックエンド格納システムは、上記の通りであり得る。例えば、データサービスフロントエンドは、好適なネットワークを介して、図11に例示されるように、ユーザからの要求を受信してそれに応答するように構成され得る。ネットワークを介してユーザからの要求に応答することの一部として、データサービスフロントエンドは、ユーザ要求が真正であるかどうかを判断する及び/または要求に関するポリシーを実施するために、認証サービスと対話するようにもまた構成され得る。データサービスフロントエンドは、ユーザ要求を遂行することの一部として、データサービスバックエンド格納システムと対話するようにもまた構成され得る。ユーザ要求は、例えば、データをバックエンド格納システムに格納するためのPUT要求、及びデータサービスバックエンド格納システムからデータを読み出すためのGET要求を含み得る。上記のように、例えば、データサービスバックエンド格納システムに格納されたデータを削除するための要求、データサービスバックエンド格納システムに格納されたデータを更新するための要求等の、他の要求もまた様々な実施形態に従って使用され得る。
図11の具体的な実施例では、環境1100において、暗号サービスは暗号サービスフロントエンド及びデータサービスバックエンドを含む。データサービスフロントエンドと同様に、暗号サービスフロントエンドは、ネットワークを介してユーザからの要求を受信してそれに応答するように構成される。暗号サービスフロントエンドは、ユーザ要求が真正であるかどうかを判断するために、認証サービスと対話するようにもまた構成される。ユーザ要求が真正であるかどうかを判断することは、上記のような簡単な様式で実行され得る。暗号サービスフロントエンド及びデータサービスフロントエンドが、同じ認証サービスと対話するが、暗号サービスフロントエンド及びデータサービスフロントエンドは、異なる認証サービスと対話し得るということに留意すべきである。さらに、暗号サービスフロントエンドは、ユーザ要求に応答するときに、ポリシーを実施するように構成され得る。
一実施形態では、暗号サービスフロントエンドは、暗号サービスバックエンドと対話するように構成される。暗号サービスバックエンドは、暗号サービスフロントエンドから受信された命令に従って、暗号動作を実行するように構成される。暗号動作は、暗号化、解読、及びハッシュ計算等を含む。環境1100は、例えば、暗号化されたデータがデータサービスバックエンド格納システムに格納され得るように、暗号サービスによって暗号化された平文を有するために、ユーザによって使用され得る。環境1100のかかる使用の実施例は下記に提供される。さらに、暗号サービスの実施例の詳細の例もまた下記に提供される。
データは、上記のような任意の好適な様式で、データサービスバックエンド格納システムに格納され得る。例えば、上記の暗号化されたデータをバックエンド格納システムに格納するための技術は、環境1100において使用され得る。例えば、例示されていないが、データサービスフロントエンドは、暗号サービスフロントエンドと通信して、暗号サービスバックエンドがデータを暗号化することを引き起こし得、そのデータは後にデータサービスバックエンド格納システムに格納され得る。暗号化されたデータは、データ対象及び/またはデータ対象を暗号化するために使用された暗号化された鍵であり得る。環境1100では、データは、別様でもまたデータサービスバックエンド格納システムに配置され得る。例えば、ユーザは暗号サービスによって暗号化される平文を提供し得、かつ、それに応答して暗号文を受信し得る。ユーザはその後、データサービスフロントエンドに要求を提出して、暗号文がデータサービスバックエンド格納システムに格納されることを要求し得る。データサービスフロントエンドは、本実施例では、任意の様式で暗号文を格納し得る。例えば、データサービスフロントエンド及びバックエンド格納システムは、データが暗号されるかどうかに無関係であるように構成され得る。
さらに、本明細書に例示される全ての環境と同様に、システム間の行動を協調させるために、追加のフロントエンドシステムが、ユーザと、データサービスフロントエンドと、暗号サービスフロントエンドと、おそらく他のフロントエンドシステムとの間に、論理的に位置付けられ得る。例えば、いくつかの実施形態では、ユーザの視点からの動作がより簡単になるように、ユーザは、それ自体が暗号サービスフロントエンド及びデータサービスフロントエンドと対話する、フロントエンドシステムと対話し得る。例えば、ユーザはデータ対象が暗号化されて格納されること、ならびに、フロントエンドシステムが暗号サービスフロントエンド及びデータサービスフロントエンドとの適切な対話によって要求に応答することを要求し得る。しかしながら、ユーザの視点からは、かかることは単一の要求によって実行され得る。他の変形もまた本開示の範囲内である。
図12は、本開示の様々な実施形態を実装するために使用され得る、環境1200の例示的な実施例を示す。図12では、環境1200は、ユーザがデータサービスバックエンド格納システム内に暗号文を格納することができるようにするように構成される。したがって、図12に例示されるように、環境1200は、データサービスフロントエンド、データサービスバックエンド格納システム、認証サービス、暗号サービスフロントエンド、及び暗号サービスバックエンドを含む。データサービスバックエンド格納システム、データサービスフロントエンド、認証サービス、暗号サービスフロントエンド、及び暗号サービスバックエンドは、図11に関連して上記のようなシステムであり得る。例えば、図12に例示されるように、データサービスフロントエンドは、ユーザ要求を受信してそれに応答するように構成され、かつユーザ要求に関するポリシーを実施するようにもまた構成され得る。データサービスフロントエンドは、要求に応答することの一部として、認証要求を認証サービスに提出して、それに応答して応答して認証証明を受信するように構成され得る。認証が成功すると、データサービスフロントエンドは、データサービスバックエンド格納システムと対話して、暗号化されたデータ対象及びおそらく暗号化されていないデータ対象をデータサービスバックエンド格納システムから得るようにさらに構成され得、これは後でユーザに提供され得る。
図12に例示されるように、暗号サービスフロントエンドは、認証要求を認証サービスに提出して、それに応答して認証証明を受信するようにもまた構成される。認証証明は、暗号サービスバックエンドからサービスを得るために使用され得る。例えば、暗号サービスフロントエンドは、暗号文を認証証明と共に暗号サービスバックエンドに提供するように構成され得、暗号サービスバックエンドは、暗号文を解読して引き換えに暗号文を提供するように構成され得る。図12に例示されるように、暗号文は暗号化された鍵であり得、暗号サービスバックエンドは暗号化された鍵を解読して、解読された鍵、つまり平文鍵を暗号サービスフロントエンドに提供し得、これは平文鍵をユーザに提供するようにさらに構成される。ユーザは、その後鍵を使用して、データサービスフロントエンドから受信される暗号化されたデータ対象を解読し得、またはユーザのドメイン内(例えば、ユーザが動作または制御するデータセンターまたはコンピュータシステム内)に格納される暗号化されたデータ対象を解読し得る。本実施例では、ユーザは暗号化された鍵をデータサービスフロントエンドから得た可能性がある。例えば、ユーザは、データ対象及び/またはデータ対象を暗号化するために使用された鍵のために、要求をデータサービスフロントエンドに提出した可能性がある。図11では単一の要求として例示される一方で、データ対象及び鍵の両方のために別個の要求がなされ得る。図11に例示されるように、データサービスフロントエンドは、暗号化されたデータ対象及び暗号化された鍵をデータサービスバックエンド格納システムから得て、暗号化されたデータ対象及び暗号化された鍵をユーザに提供し得る。
本明細書に例示される全ての環境と同様に、変形は本開示の範囲内であるとみなされるということに留意すべきである。例えば、図12は、鍵下で暗号化されたデータ対象、及び鍵識別子によって識別される別の鍵によって暗号化された鍵が、ユーザに提供されているところを示す。さらなるレベルの暗号化もまた使用され得る。例えば、データ対象は、ユーザにのみアクセス可能である(かつ/または環境1200の他の構成要素によってアクセス可能でない)鍵下で暗号化され得る。データ対象を暗号化するために使用される鍵もまた、ユーザにのみアクセス可能である鍵下で暗号化され得る。本実施例では、ユーザの鍵へのアクセスが許可された解読のためになお要求されるため、環境1200(ユーザ不在)の構成要素への許可のないアクセスは、データ対象の暗号化されていないコンテンツへのアクセスを提供しない。
別の実施例として、図12に例示される環境1200では、データサービスフロントエンド及びデータサービスバックエンド格納システムは、データサービスバックエンド格納システムによって格納される平文データへのアクセスを有さず、これは、データサービスフロントエンド及びデータサービスバックエンド格納システムは、暗号化されたデータを解読するために必要とされる鍵へのアクセスを有さないためである。しかしながら、いくつかの実施形態では、データサービスフロントエンド及び/またはデータサービスバックエンド格納システムへのアクセスが認められ得る。例えば、一実施形態では、鍵への一時的なアクセスがデータサービスフロントエンドに提供され、データサービスフロントエンドが、暗号化されたデータを得ること、暗号化されたデータを解読すること、特定の目的(例えばインデックス作成)のために解読されたデータを使用すること、及びその後解読されたデータへのアクセスを削除するか別様で失くすことが、できるようにし得る。かかる行動は、データサービスフロントエンド及び/または暗号サービスによって実施されるポリシーによって統治され得、ユーザからの許可を要求し得る。
図13は、プロセス1300の例示的な実施例を示し、これは暗号化されたデータ対象及び暗号化された鍵を、上記のようなデータサービスバックエンド格納システム等から得るために使用され得る。例えば、プロセス1300は、図12に関連して上記されるデータサービスフロントエンドシステムによって実行され得る。一実施形態では、プロセス1300は、暗号化されたデータ対象のためのGET要求を受信1302することを含む。GET要求を受信することは、データサービスフロントエンドシステムへのAPI呼び出しを介して要求を受信すること等によって、任意の好適な様式で実行され得る。GET要求の受信の結果として、プロセス1300は、認証要求を提出1304すること及び認証応答を受信1306することを含み得る。認証要求を提出1304すること及び認証応答を受信1306することは、上記のような任意の好適な様式で実行され得る。認証応答は、GET要求が真正であるかどうかを判断1308するために使用され得る。GET要求が真正でないと判断1308される場合、プロセス1300はGET要求を拒否1310することを含み得る。GET要求を拒否1310することは、上記のような任意の好適な様式で実行され得る。しかしながら、GET要求が真正であると判断1308される場合、プロセス1300は暗号化されたデータ対象に、解読されると暗号化されたデータ対象を解読するために使用可能である暗号化された鍵を、提供1312することを含み得る。本明細書に記載される全てのプロセスと同様に、多数の変形が本開示の範囲内であるとみなされるということに留意すべきである。例えば、プロセス1300は、GET要求が真正である場合、暗号化されたデータ対象を提供するが暗号化された鍵は提供しないことによって、GET要求に応答するように構成され得る。要求者、つまりGET要求を提出したユーザまたはシステムは、他の方法で、暗号化された鍵を得ることができる。例えば、いくつかの実施形態では、ユーザはユーザの制御下で、暗号化された鍵を自体でデータ格納システムに格納し得る。別の例として、ある格納サービスが暗号化されたデータ対象を格納し得、別のサービスが暗号化された鍵を格納し得、ユーザは暗号化されたデータ対象及び暗号化された鍵をそれぞれのサービスから得ることができる。別の例として、別のサービスまたは第三者が、暗号化された鍵を格納するために使用され得、ユーザは要求の際に暗号化された鍵を得ることができる。概して、暗号化された鍵が提供され得る任意の方法が使用され得る。
図13に例示されるように、プロセス1300は、データ対象及びデータ対象を解読するために使用可能である暗号化された鍵が提供されたエンティティをもたらし得る。様々な実施形態では、データ対象を解読するために、暗号化された鍵は解読されなければならない。したがって図14は、解読された鍵を、暗号化されたデータ対象の解読のために解読された鍵を使用するために、かかる解読された鍵を必要とするエンティティに提供するために使用され得る、プロセス1400の例示的な実施例を示す。プロセス1400は、図12に関連して上記される暗号サービスフロントエンドシステム等によって、任意の好適なシステムによって実行され得る。一実施形態では、プロセス1400は、特定された鍵IDを有する別の鍵を使用して鍵を解読するために、解読を受信1402することを含む。プロセス1400は鍵の解読に関連して記載されるが、プロセス1400は概してデータの解読のために適合し得るということに留意すべきである。解読要求は、上記のような任意の好適な様式で(例えば適切に構成されたAPI呼び出しを介して)受信1402され得る。さらに、解読要求は、プロセス1400が実行されている文脈に適切である、任意のエンティティによって受信され得る。例えば、解読要求は、ユーザまたは上記のデータサービスフロントエンド等の別のシステムから由来し得る。解読要求は、解読されるデータ(例えば鍵)またはそれへの参照もまた含み得る。鍵IDは、任意の好適な様式でもまた特定され得る。例えば、いくつかの実施形態では、解読要求は、鍵IDまたは鍵IDへの参照、つまり鍵IDを判断するために使用することができる情報を含む。上記のように、鍵IDは暗黙的にもまた特定され得る。例えば、鍵IDは、解読要求を提出した要求者のID等の使用可能なデータとの関連を通して得られ得る。例えば、鍵IDに対応する鍵は、要求者、またはそのために要求が提出されたエンティティのための、初期設定の鍵であり得る。
一実施形態では、プロセス1400は、認証要求を提出1404すること及び認証応答を受信1406することを含む。認証要求を提出1404すること及び認証応答を受信1406することは、上記のような任意の好適な様式で実行され得る。さらに、上記のように、受信された認証応答は、GET要求が真正であるかどうかを判断1408するために使用され得る。GET要求が真正でないと判断1408される場合、プロセス1400はGET要求を拒否1410することを含み得る。GET要求を拒否1410することは、上記のように、任意の好適な様式で実行され得る。しかしながら、GET要求が真正であると判断1408される場合、プロセス1400は、特定される鍵IDについての及び/または要求者についての、ポリシー情報にアクセスすることを含み得る。ポリシー情報は、鍵ID及び/または要求者の1つ以上のポリシーを含み得る。
一実施形態では、アクセスされたポリシー情報は、任意の適用可能なポリシーが特定の鍵IDを有する鍵の解読を可能にするかどうかを判断1414するために使用される。ポリシーが鍵IDによって特定される鍵の解読を可能にしないと判断1414される場合、プロセス1400は、上記のようにGET要求を拒否1410することを含み得る。しかしながら、ポリシーが特定される鍵IDを有する鍵の解読を可能にすると判断1414される場合、プロセス1400は、鍵IDによって識別される鍵を使用して鍵を解読1416することを含み得る。鍵IDを有する鍵を使用して鍵が解読されると、解読された鍵はその後、ネットワークを介する伝送等によって、解読要求を提出した要求者(またはいくつかの実施形態では別の許可された行先)に提供1418され得る。
上記の環境1200において例示されるように、ユーザは、暗号化されたデータ対象及びデータ対象を解読するための鍵を、様々な方法で得ることができる。図15は、様々な実施形態に従い平文を得るために使用され得る、プロセス1500の例示的な実施例を示す。プロセス1500は、図12に関連して記載されるように、ユーザによって動作及び/またはホストされているシステムによって等、任意の好適なシステムによって実行され得る。他の好適なシステムは、ユーザのために動作するシステムを含み、提供されるリアルタイムユーザに必ずしも従わず、おそらく予めプログラムされたプロセスに従う。
一実施形態では、プロセス1500は、データ格納サービスから暗号文を受信1502することを含む。データ格納サービスから暗号文を要求1502することは、上記のような任意の好適な様式で実行され得る。例えば、プロセス1500を実行するシステムは、図12に関連して上記に例示される環境1200の適切に構成されたAPI呼び出しを使用して、及び/または図13に関連して上で述べられたプロセス1300によって、暗号文を要求1502し得る。
プロセス1500は、暗号文及び暗号化された鍵を受信することもまた含み得る。暗号文及び暗号化された鍵を受信することは、任意の好適な様式で実行され得る。例えば、暗号文及び暗号化された鍵は、データ格納サービスからの暗号文の要求に応答して、受信され得る。しかしながら、概して、暗号文及び暗号化された鍵は、他の好適な方法で受信1504され得る。例えば、データ格納サービスから暗号文を受信するための要求は非同期要求であり得、暗号文は後で提出される別の要求に従って受信1504され得る。さらに、暗号文及び暗号化された鍵は、単一の応答で提供され得るか、または異なる応答(同じまたは異なるシステムからであり得る)等によって別個に得られ得る。別の例として、プロセス1500を実行するシステムは、暗号化された鍵をローカルにまたは別様で格納し得、暗号化された鍵はローカルメモリから受信され得る。
一実施形態では、プロセス1500は、特定された鍵IDを有する鍵を使用した、暗号化された鍵の解読を要求することを含む。鍵IDは、上記のような任意の好適な様式で特定され得る。さらに、プロセス1500を実行しているシステムは、任意の好適な様式で鍵IDを特定することができ得るということに留意すべきである。例えば、暗号化された鍵及び/またはそこに提供された情報は鍵IDを特定し得る。別の例として、プロセス1500を実行しているシステムは、鍵IDを判断することを可能にする情報へのローカルまたは遠隔アクセスを有し得る。例えば、ローカルまたは遠隔データベースは、データ対象識別子を、データ対象を暗号化するために使用された鍵の鍵識別子に関連付け得る。概して、システムが鍵IDを特定することができるようにし得る任意の様式が使用され得る。さらに、いくつかの実施形態では、暗号サービスに提供される情報が鍵IDを判断するのに十分である場合等では、鍵IDは特定される必要がない。暗号化された鍵の解読の要求1506は、図12に関連して上記される環境に関連して、及び/または図14に関連して上記されるプロセス1400の実行等によって、任意の好適な様式で実行され得る。
プロセス1500は、一実施形態では、解読された鍵を受信1508することを含む。解読された鍵を受信1508することは、任意の好適な様式で実行され得る。例えば、解読された鍵は、暗号化された鍵の解読の要求に応答して受信され得る。別の例として、暗号化された鍵の解読の要求は非同期要求であり得、解読された鍵を受信するために別の要求が提出された可能性がある。概して、解読された鍵は、任意の好適な様式で受信され得る。さらに、あるデバイスから別のデバイスに流れる全ての情報と同様に、情報の通過は安全なチャネルを使用して実行され得る。例えば、解読された鍵は、解読された鍵を受信するエンティティによる解読のために、再度暗号化され得る。概して、安全な通信の任意の様式が、あるエンティティから別のエンティティに情報を通過させるために使用され得る。
解読された鍵が受信1508されると、プロセス1500は解読された鍵を使用1510して暗号文を解読1510し、よって平文を得ることを含み得る。本明細書に記載される全てのプロセスと同様に、変形が本開示の範囲内であるとみなされるということに留意すべきである。例えば、プロセス1500は、暗号文の要求及び暗号化された鍵の解読の要求が、連続的に実行されているところを示す。しかしながら、様々なプロセスに関連して本明細書に記載される多くの動作と同様に、様々な実施形態では動作は連続的に実行される必要がない。例えば、プロセス1500を実行するシステムが、暗号文を要求する前に、暗号化された鍵へのアクセスを有する、または別様でそうすることができる場合、システムは暗号文を要求し得、かつ、平行してまたは例示されるものとは異なる順序で、暗号化された鍵の解読を要求し得る。他の変形もまた本開示の範囲内であるとみなされる。
上記のように、本開示の様々な実施形態は暗号サービスを提供することを対象とする。暗号サービスは、上記のような暗号サービスシステムによって提供され得る。したがって図16は、様々な実施形態に従う暗号サービス1600の例示的な実施例を示す。図16に例示されかつ上で述べられたように、暗号サービス1600は、フロントエンドシステム及びバックエンドシステムから論理的に構成される。フロントエンドシステム及びバックエンドシステムの両方は、本明細書に記載される動作を実行するように構成される1つ以上のコンピュータシステムによって実装され得る。例えば、図16に例示されるように、暗号サービス1600のフロントエンドシステムは、要求API及びポリシー構成APIを実装する。一実施形態では、要求APIは、暗号化及び他の動作が暗号サービスによって実行されることを要求するために構成されるAPIである。よって、かかる暗号動作が暗号サービスによって実行されるように、要求APIを介してフロントエンドシステムに要求がなされ得る。
要求APIは、以下の、高レベルの使用可能な要求の実施例で構成され得る。
鍵作成(鍵ID)
暗号化(鍵ID、データ、[AAD])
解読(鍵ID、暗号文、[AAD])
細断(鍵ID)
鍵再作成(暗号文、旧鍵ID、新鍵ID)。
鍵作成(鍵ID)要求は、一実施形態では、暗号サービスに、要求において識別される鍵IDによって識別される鍵を作成させる。要求の受信の際に、暗号サービスは鍵を生成してその鍵を鍵IDに関連付け得る。鍵IDのものは、固有の識別子であり得るが必ずしもそうではないということを理解すべきである。例えば、鍵IDは鍵のファミリーを識別し得る。例えば、いくつかの実施形態では、鍵回転が実行される。鍵回転は、使用される暗号の実用的なクラッキングを可能にするのに十分な解読されたデータの収集を防止するために、鍵を他の鍵と交換することを含み得る。暗号サービスとは異なるエンティティの方向で実行される場合、鍵作成(鍵ID)要求の使用は、暗号サービスに、鍵IDによって識別される旧鍵と交換するための新鍵を作成させ得る。旧鍵は、鍵IDによって識別されるままであり得るが、例えば、(旧鍵を使用して既に暗号化されたデータの)解読に使用されるのみで将来の暗号化には使用されないことがある。別の実施例として、いくつかの実施形態では、暗号サービスのユーザは彼ら自身の鍵識別子を提供し、かつ、2人の異なる顧客が同じ識別子を提供し得る可能性がある。かかる例では、識別子は鍵を一意に識別し得ず、またはさらには鍵のファミリーも一意に識別し得ない。これに対処するために、様々な方法が整えられ得る。例えば、識別または暗号サービスのユーザに関連付けられる他の情報が、適切な鍵または鍵のファミリーを識別するために使用され得る。さらに他の実施形態では、暗号サービスは、無作為に、連続的に、または任意の他の方法を使用して、鍵IDを割り当て得る。
鍵IDが鍵を一意に識別しない場合、適切な機能を可能にするために様々なシステムが整えられ得るということに留意すべきである。例えば、様々な実施形態では、ある鍵IDによって識別される鍵のファミリーは有限である。鍵IDによって識別される鍵を使用した解読動作が要求される場合、追加のデータ(例えば、暗号化が実行されたときのタイムスタンプ)が使用すべき適切な鍵の判断を可能にし得る。いくつかの実施形態では、暗号文は鍵版を示す情報を含み得る。いくつかの実施形態では、データの異なる解読を提供するために全ての可能な鍵が使用される。有限数の鍵があるため、適切な解読は提供されるものから選択され得る。いくつかの実施形態では、鍵を用いた解読は、認証された暗号化を使用すること等によって、暗号サービスがその暗号文が少なくとも部分的にその鍵に基づいて生成されなかったことを検出することができるようにする様式で、実行される。他の変形もまた本開示の範囲内であるとみなされる。
暗号化(鍵ID、データ、[AAD])要求は、暗号サービスに、鍵IDによって識別される鍵を使用して特定されるデータを暗号化させるために使用され得る。追加の認証されたデータ(AAD)が、様々な目的のために使用され得、かつ、必ずしも暗号化されていないが、例えば、電子署名、メッセージ認証コード、または概してAADと共に含まれる鍵付ハッシュ値によって、認証されたデータであり得る。いくつかの実施形態では、暗号文はAADの少なくとも一部を含んで生成される。いくつかの他の実施形態では、AADは解読の間に別個に提供される。いくつかの他の実施形態では、解読が、メタデータがパスする際にのみ成功するように、AADは、要求及び他のメタデータに少なくとも部分的に基づいて、解読時間に生成される。いくつかの実施形態では、ポリシーは、暗号動作が特定のAADに関して実行され得るかどうかを制約し得る。暗号化(鍵ID、データ、[AAD])要求の処理は、論理及び/または暗号サービスによって実施されるポリシーをプログラムすることによって、AADが特定の値を含むこと及びAADが真正である(例えば元来の伝送から修正されていない)ことの両方を要求し得る。同様に、解読(鍵ID、暗号文、[AAD])要求は、暗号サービスに、鍵IDによって識別される鍵を使用して特定される暗号文を解読させるために、使用され得る。解読(鍵ID、暗号文、[AAD])要求におけるAADは、上記のように使用され得る。例えば、解読(鍵ID、暗号文、[AAD])の処理は、論理及び/または暗号サービスによって実施されるポリシーを実施することによって、AADが特定の値を含むこと及びAADが真正である(例えば元来の伝送から修正されていない)ことの両方を要求し得る。
一実施形態では、細断(鍵ID)は、暗号サービスに、特定される鍵IDによって識別される鍵または鍵のファミリーを電子的に細断させるために、使用され得る。電子的細断は鍵をもうアクセス可能でなくすることを含み得る。例えば、細断(鍵ID)要求の使用は、暗号システムに、1つ以上のハードウェアデバイスに、特定される鍵IDによって識別される1つ以上の鍵上で安全消去動作を実行するように命令させ得る。概して、鍵IDによって識別される鍵(複数可)は、他のデータ(例えば一連の0または1または無作為な文字列)を用いて鍵をコードするデータを上書きすること等によって、任意の好適な様式で電子的に細断され得る。鍵(複数可)がある鍵下で暗号化されて格納される場合、鍵を暗号化するために使用された鍵は、電子的に細断され得、よってその鍵(複数可)へのアクセスの損失を引き起こす。いくつかの実施形態では、細断動作は、細断された鍵IDが将来の何らかの確固たる時点で失敗することを示す、解読動作を行わせ得る。鍵(複数可)への任意の可能なアクセスを安全にかつ永続的に破壊する他の様式が使用され得る。
一実施形態では、鍵再作成(暗号文、旧鍵ID、新鍵ID)要求は、暗号サービスに、異なる鍵下で、暗号文を暗号化させるために使用され得る。暗号サービスが鍵再作成(暗号文、旧鍵ID、新鍵ID)要求を受信するとき、それは、特定される暗号文を解読するために旧鍵IDによって識別される鍵を使用して、その後、解読された暗号文を暗号化するために新鍵IDによって識別される鍵を使用し得る。新鍵IDによって識別される鍵がまだ存在しない場合、上記される作成(鍵ID)要求との関連で上で述べられたように、暗号サービスは、使用する鍵を生成して生成された鍵を特定される新鍵IDに関連付け得る。いくつかの実施形態では、鍵再作成動作は、データを暗号サービスの孤立したインスタンス間で移送可能にするように動作可能であり得る。いくつかの実施形態では、ポリシーは、鍵再作成動作が暗号文上で実行されることを許可し得るが、同じ要求者が暗号文を直接解読することを許可しないことがある。いくつかの実施形態では、鍵再作成は、第1のアカウント内の第1の鍵IDによって識別される鍵から、第2のアカウント内の鍵IDによって識別される鍵へ、暗号文を鍵再作成することを支持し得る。
同様に、フロントエンドシステムは、ポリシー構成APIを実装し得、これは、一実施形態では、ユーザが、暗号動作の実行についての及び他のポリシー関連動作についてのポリシーを構成するための要求を、提出することができるようにする。様々な実施形態では、ポリシーは、鍵、鍵のグループ、アカウント、ユーザ、または他の論理的なエンティティに関連付けられ得る。ポリシー構成APIを介して構成され得るポリシーの実施例は、下に提供される。一実施形態では、暗号サービスポリシー構成APIは次の要求を含む:
鍵設定ポリシー(鍵ID、ポリシー)
保留(鍵ID、公開鍵)
復元(鍵ID、秘密鍵)
一実施形態では、鍵設定ポリシー(鍵ID、ポリシー)要求は、暗号サービスに、鍵IDによって識別される鍵(または鍵のファミリー)に関するポリシーを格納させるために使用され得る。ポリシーは、要求された暗号動作が特定の文脈において実行され得るかどうかの決定因である情報であり得る。ポリシーは、eXtensinble Access Control Markup Language(XACML)、Enterprise Privacy Authorization Language(EPAL)、Amazon Web Services Access Policy Language、Microsoft SecPol、または実行される暗号動作についても満たさなければならない1つ以上の条件をコードする任意の好適な方法等の、宣言アクセス制御ポリシー言語内にコードされ得る。ポリシーは、何の動作が実行され得るか、動作がいつ実行され得るか、どのエンティティが、動作が実行されるための許可要求をすることができるか、特定の要求が許可されるためにどの情報が要求されるか等を定義し得る。さらに、ポリシーは、アクセス制御リスト、ユーザに関連付けられる特権、及び/または動作ビットマスクを上記に与えられた例に加えてまたはその代わりに使用して、定義及び/または実施され得る。ポリシーの実施例を下に示す。
いくつかの実施形態では、暗号サービスは、例えば保留(鍵ID、公開鍵)API呼び出しを使用して、保留動作を支持し得る。保留動作は、暗号サービスの顧客が、暗号サービスの動作者の、鍵の使用または鍵へのアクセスを拒否することを可能にする。これは、秘密の合法命令または暗号サービスの動作者が鍵を使用して何らかの動作を実行することを強要され得る他の状況を懸念する顧客に有用であり得る。これは、特定のデータをロックしてオンラインでアクセス不能にすることを望む顧客にも有用であり得る。いくつかの実施形態では、例えば、鍵IDを特定しかつ秘密鍵も含む、復元(鍵ID、秘密鍵)API呼び出しを使用して、公開鍵に関連付けられる秘密鍵が提供されない限り、プロバイダが保留された鍵にアクセスすることができないように、保留動作は、顧客から公開鍵を受信すること、及び、受信された公開鍵を用いて所与の鍵IDによって特定される鍵を暗号化すること、及び鍵IDによって特定される鍵を細断することを含み得る。いくつかの他の実施形態では、保留動作は、即時保留動作の目的のために作成されるものを含むがこれに限定されない、暗号サービスによって管理される別の鍵を使用して、特定される鍵IDに関連付けられる鍵を暗号化することを含み得る。この動作によって生成される暗号文は、顧客に提供され得、暗号サービス内に保持され得ない。鍵IDによって識別される元来の鍵はその後細断され得る。暗号サービスは、提供された暗号文を受信して保留された鍵を再インポートするように動作可能であり得る。いくつかの実施形態では、暗号文は、暗号サービスが解読版を顧客に返すことを防止し得る様式で、生成され得る。
図16に例示されるように、いくつかの実施形態では、暗号サービス1600は、それ自体が様々な構成要素を備えるバックエンドシステムを含む。例えば、本実施例におけるバックエンドシステムは、要求APIまたはポリシー構成APIのいずれかを通して受信される要求に従って動作を実行するように構成される暗号サービス1600のサブシステムであり得る、要求処理システムを含む。例えば、要求処理構成要素は、要求APIを介して受信される要求を受信し得、ポリシー構成APIは、かかる要求が真正であるかどうか及びよって遂行可能であるかどうかを判断して、要求を遂行し得る。要求を遂行することは、例えば、暗号動作を実行すること及び/または実行したことを含む。要求処理ユニットは、要求処理ユニットが、要求が真正であるかどうかを判断することを可能にする、認証インターフェースと対話するように構成され得る。認証インターフェースは、上記のような認証システムと対話するように構成され得る。例えば、要求が要求処理ユニットによって受信されるとき、要求処理ユニットは、認証インターフェースを利用して、適用可能であれば、暗号動作の実行を行わせるために使用され得る認証証明を提供し得る、認証サービスと対話し得る。
暗号サービス1600のバックエンドシステムは、本例示的実施例では、複数のセキュリティモジュール(暗号モジュール)及びポリシー実施モジュールを含む。様々な実施形態では、セキュリティモジュールは、本明細書に記載される能力を有するように構成される任意の好適なコンピュータデバイスであり得るが、セキュリティモジュールのうちの1つ以上は、ハードウェアセキュリティモジュールであり得る。一実施形態におけるそれぞれのセキュリティモジュールは、鍵IDに関連付けられる複数の鍵を格納する。それぞれのセキュリティモジュールは、暗号サービス1600の他の構成要素及び/または他のシステムの他の構成要素によってアクセス可能とならないように、鍵を安全に格納するように構成され得る。一実施形態では、セキュリティモジュールのうちのいくつかまたは全てが、少なくとも1つのセキュリティ標準に準拠する。例えば、いくつかの実施形態では、セキュリティモジュールは、FIPS刊行物140−2において概説される1つ以上のセキュリティレベル等の、FIPS刊行物140−1及び/または140−2において概説される連邦情報処理標準(FIPS)に準拠するとそれぞれ立証される。さらに、いくつかの実施形態では、それぞれのセキュリティモジュールは、暗号モジュール立証プログラム(CMVP)下で認定される。セキュリティモジュールは、ハードウェアセキュリティモジュール(HSM)またはHSMのいくらかまたは全ての能力を有する別のセキュリティモジュールとして実装され得る。いくつかの実施形態では、立証されたモジュールは動作をブートストラップするために使用される。いくつかの実施形態では、顧客は、立証されたモジュールに格納されそれによってのみ動作するいくつかの鍵、及びソフトウェアによって動作する他の鍵を構成し得る。いくつかの実施形態では、これらの様々な選択肢に関連付けられる実行または経費は異なり得る。
セキュリティモジュールは、要求処理ユニットによって提供される命令に従って暗号動作を実行するように構成され得る。例えば、要求処理ユニットは、暗号文及び鍵IDを、その鍵IDに関連付けられる鍵を使用して暗号文を解読し、応答して平文を提供するための、セキュリティモジュールへの命令を有する、適切なセキュリティモジュールに提供し得る。一実施形態では、暗号サービス1600のバックエンドシステムは、鍵空間を形成する複数の鍵を安全に格納する。セキュリティモジュールのそれぞれは、鍵空間内の全ての鍵を格納し得るが、しかしながら、変形は、本開示の範囲内であるとみなされる。例えば、セキュリティモジュールのそれぞれは、鍵空間のサブ空間を格納し得る。鍵がセキュリティモジュールを通して重複して格納されるように、セキュリティモジュールによって格納される鍵空間のサブ空間は、重複し得る。いくつかの実施形態では、特定の鍵は、特定される地理的領域内にのみ格納され得る。いくつかの実施形態では、特定の鍵は、特定の認定またはクリアランスレベルを有する動作にのみアクセス可能であり得る。いくつかの実施形態では、特定の鍵は、データ格納サービスのプロバイダとの契約下で、特定の第三者によって動作するモジュール内にのみ格納され得、かつそれと共にのみ使用され得る。いくつかの実施形態では、セキュリティモジュールの建設的制御は、顧客によって許可される以外の鍵の使用を強要しようとする合法命令が、強要されている追加のエンティティ、または行動を強要する追加の管轄のいずれかを含むことを要求し得る。いくつかの実施形態では、顧客は、それらの暗号文が格納されかつそれらの鍵が格納される管轄のための、独立した選択肢を提供され得る。いくつかの実施形態では、鍵を格納するセキュリティモジュールは、鍵の所有者に監査情報を提供するように構成され得、かつ、セキュリティモジュールは、監査情報の生成及び提供が顧客によって抑圧可能でなくなるように構成され得る。いくつかの実施形態では、プロバイダ(例えば、セキュリティモジュールをホストする)が、セキュリティモジュールによって格納される鍵下で動作を実行することができないように、セキュリティモジュールは、独立して、顧客によって生成された署名を立証するように構成され得る。さらに、いくつかのセキュリティモデルは、鍵空間の全てを格納し得、いくつかのセキュリティモジュールは鍵空間のサブ空間を格納し得る。他の変形もまた、本開示の範囲であるとみなされる。異なるセキュリティモジュールが鍵空間の異なるサブ空間を格納する例では、要求処理ユニットは、例えば関係表または他の機構を用いて、様々な要求に従って暗号動作を実行するよう命令すべきセキュリティモジュールを判断するように構成され得る。
一実施形態では、ポリシー実施モジュールは、要求処理ユニットから情報を得て、その情報に少なくとも部分的に基づいて、APIを通して受信された要求が実行され得るかどうかを判断するように、構成される。例えば、暗号動作を実行するための要求が、要求APIを通して受信される場合、要求処理ユニットは、ポリシー実施モジュールと対話して、要求において特定される鍵IDに適用可能なポリシー等の任意の適用可能なポリシー及び/または要求者に関連付けられるポリシー等の他のポリシー等に従って、要求の遂行が許可されるかどうかを判断し得る。ポリシー実施モジュールが要求の遂行を可能にする場合、要求処理ユニットは、それに応じて、適切なセキュリティモジュールに、要求の遂行に従って暗号動作を実行するように命令し得る。
本明細書に記載される全ての図面と同様に、多くの変形が本開示の範囲内であるとみなされる。例えば、図16は、セキュリティモジュールとは別個のポリシー実施モジュールを示す。しかし、それぞれのセキュリティモジュールは、別個に例示されるポリシー実施モジュールに加えて、またはその代わりに、ポリシー実施モジュールを含み得る。よって、それぞれのセキュリティモジュールは、独立して、ポリシーを実施するように構成され得る。さらに、別の実施例として、それぞれのセキュリティモジュールは、別個のポリシー実施モジュールによって実施されるポリシーとは異なるポリシーを実施する、ポリシー実施モジュールを含み得る。多くの他の変形は、本開示の範囲内であるとみなされる。
上記のように、要求が鍵IDに対応する鍵に関連して実行されている暗号動作を特定する場合、ポリシーが実施され得るように、様々なポリシーは、鍵IDに関連するユーザによって構成され得る。図17は、様々な実施形態に従う、ポリシーを更新するためのプロセス1700の例示的な実施例を提供する。プロセス1700は、図16に関連して上で述べられたような、暗号サービスシステム等によって、任意の好適なシステムによって実行され得る。一実施形態では、プロセス1300は、鍵IDについてのポリシーを更新するための要求を受信1302することを含む。要求は、任意の好適な様式で受信1302され得る。例えば、例として図16を参照すると、要求は、上記の暗号サービス1600のフロントエンドシステムのポリシー構成APIを通して受信され得る。要求は、任意の好適な様式で受信され得る。
一実施形態では、プロセス1700は、認証要求を提出1704すること及び認証応答を受信1706することを含む。認証要求を提出1704すること及び認証応答を受信1706することは、上記のような任意の好適な様式で実行され得る。さらに、上記のように、受信された認証応答は、鍵IDについてのポリシーを更新するための要求が真正であるかどうかを判断1708するために使用され得る。鍵IDについてのポリシーを更新するための受信された要求が真正でないと判断1708される場合、要求は拒否1710され得る。要求を拒否1710することは、上記のような任意の好適な様式で実行され得る。しかしながら、鍵IDについてのポリシーを更新するための受信された要求が真正であると判断1708される場合、プロセス1700は、要求者に適用可能なポリシー情報にアクセス1712することを含み得る。ポリシー情報は、それから要求者に適用可能な任意のポリシーが実施され得る、情報であり得る。例えば、プロセス1700によって実行される暗号サービスを利用する組織内では、組織の特定のユーザのみが、鍵IDについてのポリシーを更新することができるようにされ得る。ポリシー情報は、どのユーザが暗号サービスに鍵IDについてのポリシーを更新させることができるか、及び/またはさらには、ポリシーが既存のポリシーに従って更新可能であるかどうかを示し得る。例えば、いくつかの実施形態では、暗号サービスは、新ポリシーを実施するための要求を受信し得る。暗号サービスは、任意の既存のポリシーが、新ポリシーを所定の位置に置くことを可能にするかどうかを点検し得る。暗号サービスが、既存のポリシーが新ポリシーの実施を可能にしないと判断する場合、要求は拒否され得る。概して、ポリシー情報は、要求者に適用可能なポリシーの実施のために使用可能な任意の情報であり得る。
図17に例示されるように、プロセス1700は、アクセスポリシー情報を使用して、ポリシーが要求された更新を実行することを可能にするかどうかを判断1704することを含む。ポリシーが、要求された更新を実行することを可能にしないと判断1714される場合、プロセス1700は、上記のように要求を拒否1710することを含み得る。しかしながら、ポリシーが要求された更新を実行することを可能にすると判断1714される場合、プロセス1700は、鍵IDについてのポリシーを更新1716することを含み得る。鍵IDについてのポリシーを更新することは、鍵IDに従ってまたはそれに関連して、ポリシー情報を更新すること及び更新されたポリシーを格納することを含み得る。更新されたポリシー情報は、例えば、図16に関連して上記のような暗号サービスのポリシー実施モジュールによって格納され得る。
ポリシーは、暗号サービスに関連して動作する電子環境の他の構成要素によってもまた実施され得る。例えば、上記の図2を参照すると、暗号サービスは、データサービスフロントエンドが実施するように、ポリシーの電子表示を、データサービスフロントエンドに提供し得る。このようなことは、データサービスがポリシーを実施するためにより良好に適する状況において、有用であり得る。例えば、行動がポリシーによって可能にされるかどうかは、暗号サービスではなく、データサービスフロントエンドにアクセス可能な情報に、少なくとも部分的に基づき得る。一実施例として、ポリシーは、そのポリシーに関連付けられる顧客のために、データサービスバックエンド格納システムによって格納されるデータに依存し得る。
上記のように、暗号サービスは、鍵IDを有する鍵に関するポリシーに従うポリシーの実施を可能にする、様々なシステムを含み得る。したがって、図18は、ポリシーを実施するために使用され得るプロセス1800の例示された実施例を示す。プロセス1800は、図16に関連して上で述べられたような、暗号サービスシステム等によって、任意の好適なシステムによって実行され得る。一実施形態では、プロセス1800は、鍵IDを有する鍵を使用して1つ以上の暗号動作を実行するための要求を受信1802することを含む。図18は、プロセス1800が、1つ以上の暗号動作を実行するための要求に関連して実行されているところを例示するが、プロセス1800は、必ずしも暗号化に関連しているとは限らない動作を実行するための任意の要求との使用に、適合し得るということに留意すべきである。動作の実施例は上で述べられている。
受信された要求が真正であるかどうかが判断1804され得る。受信された要求が真正であるかどうかを判断することは、上記のような任意の好適な様式で実行され得る。例えば、要求が真正であるかどうかを判断1804することは、上記のように、認証要求を提出すること及び認証応答を受信することを含み得る。要求が真正であると判断1804される場合、プロセス1800は、要求を拒否1806することを含み得る。要求を拒否1806することは、上記のような任意の好適な様式で実行され得る。しかしながら、要求が真正であると判断1804される場合、プロセス1800は、鍵ID及び/または要求者についてのポリシー情報にアクセス1808することを含み得る。鍵ID及び/または要求についてのポリシー情報にアクセスすることは、任意の好適な様式で実行され得る。例えば、鍵ID及び/または要求者についてのポリシー情報にアクセスすることは、かかるポリシー情報を格納する1つ以上の格納システムからの格納ポリシー情報にアクセスすることによって、実行され得る。アクセスポリシー情報は、ポリシーが1つ以上の動作を実行することを可能にするかどうかを判断1810するために使用され得る。
ポリシーが、1つ以上の動作を実行することを可能にしないと判断1810される場合、プロセス1800は、要求を拒否1806することを含み得る。しかしながら、ポリシーが1つ以上の動作を実行することを可能にすると判断される場合、プロセス1800は、要求された1つ以上の暗号動作を実行1812することを含み得る。1つ以上の暗号動作の実行の1つ以上の結果は、提供1814され得、例えば、1つ以上の暗号動作を実行するための受信1802された要求を提出した要求者に、提供される。いくつかの実施形態では、可能にされた要求及びまたは拒否された要求から少なくとも部分的に由来する情報は、監査サブシステムを通して提供され得る。
上記のように、本開示の実施形態は、柔軟なポリシー構成及び実施を可能にする。いくつかの実施形態では、ポリシーは、どのサービスがどの動作をどの文脈で実行することができるかを述べ得る。例えば、鍵に関するポリシーは、データ格納サービスが、暗号サービスに解読動作ではなく暗号動作を実行させることを、可能にし得る。鍵に関するポリシーは、暗号文及び/または解読された平文上に1つ以上の条件もまた含み得る。例えば、ポリシーは、暗号文及び/または平文が、動作の結果が要求に応答して提供される前に、特定のハッシュ値(鍵付ハッシュ値であり得る)を生成することを要求し得る。ポリシーは、そこから要求が由来するインターネットプロトコル(IP)、暗号化/解読されるコンテンツの種類、AAD、及び/または他の情報に、少なくとも部分的に基づく、1つ以上の制限及び/または許可を特定し得る。
多くの変形が、本開示の範囲内であるとみなされる。例えば、上記の様々な実施形態は、別個の認証サービスとの対話について記載する。しかしながら、上記の環境の構成要素は、それら自体の許可構成要素を有し得、要求が真正であるかどうかを判断することは、別のエンティティとの通信を含んでも含まなくてもよい。さらに、上記の環境のそれぞれは、環境によって可能にされる特定の動作及び能力に関連して例示される。異なる環境に関連して上記の技術は、組み合され得、かつ、概して、本開示に従う環境は、様々な技術の柔軟な使用を可能にし得る。ほんの一実施例として、暗号サービスは、要求の際に、鍵及び非鍵データ対象等の他のコンテンツの両方を暗号化するために使用され得る。別の例として、暗号サービスは、ユーザ(例えば、コンピューティングリソースプロバイダの顧客)及び他のサービス(例えば、データ格納サービス)の両方からの要求を受信してそれに応答するように構成され得る。いくつかの実施形態では、暗号サービス及び/または関連する認証サービスは、格納されたデータの暗号化を実行するための携帯デバイスとの使用のために構成され得る。いくつかの実施形態では、少なくとも1つのロック解除ピンが、暗号サービスによって立証され得る。なおも他の実施形態では、暗号サービスは、動作の一部として、ハードウェア構成証明によって生成される情報を受信し得る。いくつかの実施形態では、暗号サービスは、コンテンツに関して、デジタル権利管理サービスを提供するように動作可能であり得る。
本開示の実施形態は、以下の付記を考慮して説明することができる。
1.サービスを提供するためのコンピュータ実装方法であって、
実行可能命令で構成される1つ以上のコンピュータシステムの制御下で、
要求者から、データ格納システムからデータ対象を読み出すための要求を受信することと、
該データ対象を読み出すための該要求に応答して、暗号化されたデータ対象と、解読されると該暗号化されたデータ対象を解読するために使用可能である暗号化された第1の鍵と、を提供することと、
該要求者から該暗号化された第1の鍵を受信することと、
暗号サービスによって、該暗号サービスにはアクセス可能であるが該データ格納システムにはアクセス不能である第2の鍵を使用して、該暗号化された第1の鍵を解読することと、
該要求者が該暗号化されたデータ対象を解読するために該第1の鍵を使用することができるようにするために、該第1の鍵を該要求者に提供することと、を含む、該コンピュータ実装方法。
2.該方法が、
該データ格納システム内に該データ対象を格納するための要求を受信することと、
該第1の鍵を得ることと、
該データ対象を暗号化するために該第1の鍵を使用することと、
該暗号サービスに、該第1の鍵を暗号化するために該第2の鍵を使用させることと、
該データ格納システムによって、該暗号化されたデータ対象及び該暗号化された第1の鍵を格納することと、をさらに含む、付記1に記載の該コンピュータ実装方法。
3.該第1の鍵を得ることが該第1の鍵を生成することを含む、付記1または2に記載の該コンピュータ実装方法。
4.該方法が、該第2の鍵に関するポリシーが、該暗号化された第1の鍵の解読を可能にするかどうかを点検することをさらに含み、
該暗号化された第1の鍵を解読することが、該暗号化された第1の鍵の解読を可能にする該ポリシーに依存する、付記1〜3のいずれか一項に記載の該コンピュータ実装方法。
5.該データ格納システムの方向での少なくとも1つの動作のための該第2の鍵の使用が、該第2の鍵に関するポリシーによって許可されない、付記1〜4のいずれか一項に記載の該コンピュータ実装方法。
6.該暗号サービスがコンピューティングリソースプロバイダによってホストされ、該コンピューティングリソースプロバイダの複数の顧客のために鍵を維持する、付記1〜5のいずれか一項に記載の該コンピュータ実装方法。
7.サービスを提供するためのコンピュータ実装方法であって、
実行可能命令で構成される1つ以上のコンピュータシステムの制御下で、
データ格納システム内にデータ対象を格納するための要求に応答して、
該データ対象を暗号化させることと、
該データ格納システムにアクセス不能な鍵が該データ対象を暗号化形式から解読するために必要とされるように、該データ対象を暗号化形式で該データ格納システムに格納することと、
許可されたエンティティが暗号化形式からの解読形式の該データにアクセスすることができるようにする情報を該許可されたエンティティに提供するために、該暗号システムで該鍵を使用することと、を含む、該コンピュータ実装方法。
8.該データ格納システムが、非許可エンティティに解読された形式の該データ対象を提供することができない、付記7に記載の該コンピュータ実装方法。
9.該データ格納システムによって該データ対象を暗号化するために該鍵を使用することをさらに含む、付記8に記載の該コンピュータ実装方法。
10.該方法が、該データ格納システムから該データ対象を受信するための要求を、第三者から該データ格納システムに受信することをさらに含み、
該情報を提供することが、該暗号システムへの受信応答に応答して実行される、付記7〜9のいずれか一項に記載の該コンピュータ実装方法。
11.該データ格納システムが第1の組のポリシーを実施するように構成され、
該暗号システムが該第1の組のポリシーとは異なる第2の組のポリシーを実施するように構成され、
該データ対象を格納することが該第1の組のポリシーに従って実行され、
該情報を提供することが該第2の組のポリシーに従って実行される、付記7〜10のいずれか一項に記載の該コンピュータ実装方法。
12.該第1の組のポリシーが、該鍵に関する1つ以上のポリシーを含む、付記7〜11のいずれか一項に記載の該コンピュータ実装方法。
13.該情報への一時的なアクセスを得ることと、
該データ対象を解読するために該得られた情報を使用することと、
該解読されたデータ対象に関連する1つ以上の動作を実行することと、
該解読されたデータ対象へのアクセスを失わせることと、をさらに含む、付記7〜12のいずれか一項に記載の該コンピュータ実装方法。
14.システムであって、
サービスであって、
データ対象を受信し、
該データ対象を暗号化し、かつ
該サービスを該暗号化されたデータ対象解読不能にする様式で、該暗号化されたデータ対象を格納するように構成された、サービスと、
暗号サブシステムであって、
該サービスにアクセス不能な鍵を使用して、該暗号化されたデータ対象を解読するために必要な情報を暗号化し、かつ
該サービスとは異なり、かつ要求をすることを許可されたエンティティの要求に応じて該暗号化された情報を解読するように構成される、暗号サブシステムと、を備える、該システム。
15.該情報が、該データ対象を暗号化するために該サービスによって使用される別の鍵であり、
該サービスが、該データ対象を暗号化した後のある時点で該別の鍵へのアクセスを失うようにさらに構成される、付記14に記載の該システム。
16.該暗号サブシステムが該鍵に関するポリシーを実施するように構成され、該暗号化された情報を解読することが、該ポリシーに従う該許可されたエンティティによる要求に依存する、付記14または15に記載の該システム。
17.該暗号サブシステムが、複数の第三者エンティティのために該鍵を含む一組の鍵を安全に管理するように構成される、付記14〜16のいずれか一項に記載の該システム。
18.該暗号サブシステムが、該複数の第三者エンティティの少なくともサブセットのそれぞれについて少なくとも1つの鍵を格納する少なくとも1つのセキュリティモジュールを含む、付記17に記載の該システム。
19.該データ格納システムが、該暗号化された情報と共に該暗号化されたデータ対象を格納するようにさらに構成される、付記14〜18のいずれか一項に記載の該システム。
20.コンピュータ可読格納媒体であって、コンピュータシステムの1つ以上のプロセッサによって実行されると、コンピュータシステムに、少なくとも、
遠隔でホストされるデータ格納サービスから、暗号化されたデータ対象と、解読されると暗号化されたデータ対象を解読するために使用可能になる暗号化された情報を得ることと、
遠隔でホストされる暗号サービスに、該暗号化されたデータ対象を解読するために必須である該暗号化された情報を解読させることと、
該暗号化されたデータ対象を解読するために該解読された情報を使用することと、を行わせる命令を有する、該コンピュータ可読格納媒体。
21.該遠隔でホストされる暗号サービスに該暗号化された情報を解読させることが、該暗号サービスに該暗号サービスによって管理される鍵の識別子を提供することを含む、付記20に記載の該コンピュータ可読格納媒体。
22.該命令が、該1つ以上のプロセッサによって実行されると、該コンピュータシステムに、該データ格納サービスに該データ対象を暗号化させることを、さらに行わせる、付記20または21に記載の該コンピュータ可読格納媒体。
23.該データ格納サービスに該データ対象を暗号化させることが、該データ対象を該データ格納サービスに提供することを含む、付記22に記載の該コンピュータ可読格納媒体。
24.該暗号サービスが鍵を使用して該暗号化された情報を解読し、
該命令が、該1つ以上のプロセッサによって実行されると、該コンピュータシステムに、該鍵に関するポリシーを伝送させ、それにより該暗号サービスに該伝送されたポリシーを実施させることをさらに行わせる、付記20〜23のいずれか一項に記載の該コンピュータ可読格納媒体。
25.該暗号化されたデータ対象を得ることが、該データ格納サービスに電子要求を伝送することを含み、
該暗号サービスに該暗号化された情報を解読させることが、該データ格納サービスに別の電子要求を伝送することを含み、
該命令が、該1つ以上のプロセッサによって実行されると、該コンピュータシステムに、該電子要求及び該別の電子要求の両方の申請を証明するために同じ証明書を使用させる、付記20〜24のいずれか一項に記載の該コンピュータ可読格納媒体。
図19は、様々な実施形態に従う態様を実装するための、環境1900の実施例の態様を例示する。理解され得るように、ウェブベースの環境が説明の目的のために使用されるが、様々な実施形態を実装するために異なる環境が適切なように使用され得る。環境は、電子クライアントデバイス1902を含み、これは、要求、メッセージ、または情報を、適切なネットワーク1904を介して送信及び受信するように、ならびにデバイスのユーザに情報を運んで戻すように動作可能な、任意の適切なデバイスを含み得る。かかるクライアントデバイスの例には、パーソナルコンピュータ、携帯電話、携帯型メッセージングデバイス、ノートパソコン、セットトップボックス、携帯情報端末、電子ブックリーダ等が挙げられる。ネットワークは、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、もしくは任意の他のかかるネットワーク、またはそれらの組み合わせを含む、任意の適切なネットワークを含み得る。かかるシステムのために使用される構成要素は、選択されるネットワーク及び/または環境の種類に、少なくとも部分的に依存し得る。かかるネットワークを介して通信するためのプロトコル及び構成要素は公知であり、本明細書において詳細に説明されない。ネットワークを介する通信は、有線または無線接続及びそれらの組み合わせによって可能にされ得る。本実施例では、環境が、要求の受信及びそれに応答するコンテンツの提供のためのウェブサーバ1906を含むため、ネットワークはインターネットを含むが、他のネットワークについては、当業者には明白であり得るように、同様の目的に提供する代替のデバイスが使用され得る。
例示的な環境は、少なくとも1つのアプリケーションサーバ1908及びデータストア1910を含む。いくつかのアプリケーションサーバ、レイヤー、または、チェーン接続もしくは別様で構成され得、適切なデータストアからデータを得る等のタスクを実行するために対話し得る、他の要素、プロセス、もしくは構成要素があり得るということが理解されるべきである。本明細書で使用する場合、「データストア」という用語は、データを格納、データにアクセス、及びデータを読み出すことができる、任意のデバイスまたはデバイスの組み合わせを指し、これは、任意の標準、分散、またはクラスタ環境内の、データサーバ、データベース、データ格納デバイス、及びデータ格納媒体を、任意の組み合わせで任意の数含み得る。アプリケーションサーバは、クライアントデバイスのための1つ以上のアプリケーションの態様を実行するために必要とされるため、データストアと統合するための、アプリケーションのための大半のデータアクセス及びビジネス論理を処理する、任意の適切なハードウェア及びソフトウェアを含み得る。アプリケーションサーバは、データストアと協働してアクセス制御サービスを提供し、ユーザに移送される、テキスト、画像、音声、及び/または動画等のコンテンツを生成することができ、これは、本実施例では、ハイパーテキストマークアップ言語(「HTML」)、拡張マークアップ言語(「XML」)、または別の適切な構造言語の形態で、ウェブサーバによってユーザに提供され得る。すべての要求及び応答の処理、ならびにクライアントデバイス1902とアプリケーションサーバ1908との間のコンテンツの配信は、ウェブサーバによって処理され得る。本明細書に記載される構造コードは任意の適切なデバイス上で実行され得、または本明細書の他の箇所で記載のように機械をホストし得るので、ウェブ及びアプリケーションサーバは、要求されず、かつ、単に構成要素の例であるということが理解されるべきである。
データストア1910は、いくつかの別個のデータ表、データベース、または他のデータ格納機構、及び特定の態様に関連するデータを格納するための媒体を含み得る。例えば、例示されるデータストアは、生産データ1912及びユーザ情報1916を記憶する機構を含み、生産側にコンテンツを提供するために使用され得る。データストアは、ログデータ1914を格納するための機構を含むこともまた示され、これは、報告、分析、または他のかかる目的のために使用され得る。適切なように上記の機構のうちのいずれか内に、またはデータストア1910内の追加の機構内に、格納され得る、ページ画像情報のため及び正しい情報にアクセスするために、データストアに格納される必要があり得る、多くの他の態様があり得るということが理解されるべきである。データストア1910は、そこに関連付けられる論理を通して、アプリケーションサーバ1908から命令を受信して、それに応答してデータを得る、更新する、または別様で処理するように動作可能である。一実施例では、ユーザは、特定の種類のアイテムについての検索要求を提出し得る。この場合、データストアは、ユーザ情報にアクセスしてユーザの識別を検証し得、かつ、カタログ詳細情報にアクセスしてその種類のアイテムについての情報を得ることができる。その後情報は、ユーザがユーザデバイス1902のブラウザを介して見ることができるウェブページ上に記載される結果において、ユーザに戻され得る。目的とする特定のアイテムについての情報は、ブラウザの専用ページまたはウィンドウで見ることができる。
それぞれのサーバは、典型的に、そのサーバの一般管理及び動作についての実行可能プログラム命令を提供するオペレーティングシステムを含み得、かつ、典型的に、サーバのプロセッサによって実行されると、サーバがその意図される機能を実行することができるようにする命令を格納する、コンピュータ可読格納媒体(例えば、ハードディスク、ランダムアクセスメモリ、読み取り専用メモリ等)を含み得る。サーバのオペレーティングシステム及び一般機能性についての好適な実装は、既知または商用的に入手可能であり、かつ、特に本明細書の開示を踏まえると当業者によって容易に実装される。いくつかの実施形態では、オペレーティングシステムは、評価保証レベル(EAL)のレベル4等の、1つ以上の立証体制に従って構成され得、またはその下で立証され得る。
一実施形態における環境は、1つ以上のコンピュータネットワークまたは直接接続を使用して、通信リンクを介して相互接続される、いくつかのコンピュータシステム及び構成要素を利用する、分散コンピューティング環境である。しかしながら、このようなシステムは、図19に図示されるものよりも少ないかまたは多い数の構成要素を有するシステムにおいても、同様に良好に動作し得ることが、当業者には理解されるであろう。したがって、図19のシステム1900の説明は、本質的に例示的であり、本開示の範囲を限定するものではないと捉えられるべきである。
様々な実施形態は、さらに、幅広い様々な動作環境において実装され得、これは、いくつかの場合では、多数のアプリケーションのうちのいずれかを動作させるために使用することができる、1つ以上のユーザコンピュータ、コンピューティングデバイス、または処理デバイスを含み得る。ユーザまたはクライアントデバイスは、標準オペレーティングシステムを稼働させるデスクトップもしくはラップトップコンピュータ、ならびに、携帯ソフトウェアを稼働させかつ多数のネットワーキング及びメッセージプロトコルを支持することができる、セルラー、無線、及び携帯型デバイス等の、多数の汎用パーソナルコンピュータのうちのいずれかを含み得る。かかるシステムは、様々な商用的に入手可能なオペレーティングシステムならびに開発及びデータベース管理等の目的のための他の既知のアプリケーションを稼働させる、いくつかのワークステーションもまた含み得る。これらのデバイスは、ダミー端子、シンクライアント、ゲーム機、及びネットワークを介して通信することができる他のデバイス等の、他の電子デバイスもまた含み得る。
ほとんどの実施形態は、伝送制御プロトコル/インターネットプロトコル(「TCP/IP」)、開放型システム間相互接続(「OSI」)、ファイル転送プロトコル(「FTP」)、ユニバーサルプラグアンドプレイ(「UpnP」)、ネットワークファイルシステム(「NFS」)、共通インターネットファイルシステム(「CIFS」)、及びApple Talk等の、様々な商用的に入手可能なモデル及びプロトコルのいずれかを使用する通信を支持するために、当業者になじみのあり得る少なくとも1つのネットワークを利用する。ネットワークは、例えば、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、無線ネットワーク、及びそれらの任意の組み合わせであり得る。
ウェブサーバを利用する実施形態では、ウェブサーバは、ハイパーテキスト転送プロトコル(「HTTP」)、サーバ、FTPサーバ、共通ゲートウェイインターフェース(「GCI」)サーバ、データサーバ、Javaサーバ、及びビジネスアプリケーションサーバを含む、様々なサーバもしくは中間階層アプリケーションのいずれかを稼働させ得る。サーバ(複数可)は、Java(登録商標)、C、C#、またはC++等の任意のプログラム言語、または、Perl、Python、もしくはTCL等のスクリプト言語、ならびにそれらの組み合わせで書き込まれる、1つ以上のスクリプトまたはプログラムとして実装され得る、1つ以上のウェブアプリケーションを実行することによって、ユーザデバイスからの要求に応答して、プログラムまたはスクリプトを実行することもまたでき得る。サーバ(複数可)は、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、及びIBM(登録商標)から商用的に入手可能なものを含むがこれらに限定されない、データベースサーバもまた含み得る。
環境は、上記のように様々なデータストアならびに他のメモリ及び格納媒体を含み得る。これらは、コンピュータのうちの1つ以上にローカルな(かつ/もしくはそこに常駐する)、または、ネットワークを渡るコンピュータのいずれかまたは全てから遠隔の、格納媒体上等の、様々な位置に常駐し得る。実施形態の特定の組では、情報は、当業者になじみのあるストレージエリアネットワーク(「SAN」)内に存在し得る。同様に、コンピュータ、サーバ、または他のネットワークデバイスに属する機能を実行するための任意の必要なファイルは、適宜、ローカルに及び/または遠隔に格納され得る。システムがコンピュータ化されたデバイスを含む場合、それぞれのかかるデバイスは、バスを介して電気的に連結され得るハードウェア要素を含み得、要素は、例えば、少なくとも1つの中央処理ユニット(「CPU」)、少なくとも1つの入力デバイス(例えば、マウス、キーボード、コントローラ、タッチスクリーン、またはキーパッド)、及び少なくとも1つの出力デバイス(例えば、ディスプレイデバイス、プリンタ、またはスピーカ)を含む。かかるシステムは、ディスクドライブ、光格納デバイス、及びランダムアクセスメモリ(「RAM」)または読み取り専用メモリ(「ROM」)等の固体格納デバイス、ならびに取り外し可能媒体デバイス、メモリカード、フラッシュカード等の、1つ以上の格納デバイスもまた含み得る。本開示の様々な実施形態は、カスタム暗号プロセッサ、スマートカード、及び/またはハードウェアセキュリティモジュールを含むがこれらに限定されない、カスタムハードウェアを使用してもまた実装され得る。
かかるデバイスは、上記のように、コンピュータ可読格納媒体リーダ、通信デバイス(例えば、モデム、ネットワークカード(無線もしくは有線)、赤外線通信デバイス等)及びワーキングメモリもまた含み得る。コンピュータ可読格納媒体リーダは、コンピュータ可読情報を、一時的及び/またはより永続的に、含有、格納、伝送、及び読み出すための、遠隔、ローカル、固定、及び/または取り外し可能格納デバイス、ならびに格納媒体を表す、コンピュータ可読格納媒体と、接続されるかまたはそれを受信するように、構成され得る。システム及び様々なデバイスは、典型的に、オペレーティングシステム、及びクライアントアプリケーションまたはウェブブラウザ等のアプリケーションプログラムを含む、少なくとも1つのワーキングメモリデバイス内に位置する、多数のソフトウェアアプリケーション、モジュール、サービス、または他の要素を含み得る。代替の実施形態は、上記のものからの多数の変形を有し得ることが理解されるべきである。例えば、特製のハードウェアもまた使用され得、かつ/または、特定の要素がハードウェア、ソフトウェア(アプレット等のポータブルソフトウェアを含む)、もしくはその両方において実装され得る。さらに、ネットワーク入力/出力デバイス等の、他のコンピューティングデバイスへの接続が用いられ得る。
コードまたはコードの一部を含有するための、格納媒体及びコンピュータ可読媒体は、RAM、ROM、電気的消去可能プログラム可能読み取り専用メモリ(「EEPROM」)、フラッシュメモリもしくは他のメモリ技術、コンパクトディスク読み取り専用メモリ(「CD−ROM」)、デジタル多用途ディスク(DVD)、または他の光格納装置、磁気カセット、磁気テープ、磁気ディスク格納装置、もしくは他の磁気格納デバイス、または所望の情報を格納するために使用することができかつシステムデバイスによってアクセスすることができる、任意の他の媒体を含む、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータ等の情報の、格納及び/または伝送の任意の方法または技術において実装される、揮発性及び非揮発性、取り外し可能及び取り外し不能媒体等の、しかしこれらに限定されない格納媒体を含む、当業者に既知のまたは使用される任意の適切な媒体を含み得る。本明細書に提供される開示及び教示に基づいて、当業者は、様々な実施形態を実装するための、他の方法及び手法を理解するであろう。
したがって、明細書及び図面は、制限的というよりも例示的な意味で見なされるべきである。しかしながら、特許請求の範囲で述べられる本発明のより広い精神及び範囲から逸脱することなく、それに様々な修正及び変更がなされ得るということが明らかである。
他の変形は、本開示の精神の範囲内である。よって、開示される技術は、様々な修正及び代替の構造を取り得るが、それらの特定の例示される実施形態が、図面に示され、詳細に上記で説明された。しかしながら、本発明を特定の形式または開示される形式に限定する意図はなく、しかし、逆に、意図は、添付の特許請求の範囲において定義される本発明の精神及び範囲内に収まる、全ての修正、代替構造、及び等価物を網羅することであるということが理解されるべきである。
開示される実施形態を説明する文脈における(特に、以下の特許請求の範囲の文脈における)、「a」、「an」、及び「the」という用語、ならびに同様の指示対象は、本明細書に別様が示されない限りまたは文脈によって明らかに矛盾しない限り、単数及び複数の両方を網羅すると解釈されるべきである。「備える」、「有する」、「含む」、及び「含有する」という用語は、別様が述べられない限り、開放型用語(すなわち、「含むがそれに限定されない」ことを意味する)であると解釈されるべきである。「接続される」という用語は、介在する何かがある場合であっても、部分的にまたは全体的に、内部に含有される、取り付けられる、一緒に接合されると解釈されるべきである。本明細書の値の範囲の列挙は、本明細書で別様が示されない限り、単に、範囲内に収まるそれぞれの別個の値を個々に指す速記方法としての役割を果たすことが意図され、それぞれの別個の値は、本明細書に個々に列挙されるかのように、本明細書に組み込まれる。本明細書に記載される全ての方法は、本明細書に別様が示されない限り、または文脈によって別様が明らかに矛盾しない限り、任意の好適な順序で実行され得る。本明細書で提供される、任意の及び全ての実施例、または例を示す表現(例えば、「等」)の使用は、単に、本発明の実施形態をより良好に解明することを意図し、別様が主張されない限り、本発明の範囲に限定を課すものではない。いかなる本明細書の表現も、非請求要素を本発明の実践に必須であるとして示すと解釈されるべきではない。
本発明を実行するために発明者に既知の最善のモードを含む、本開示の好ましい実施形態が本明細書に記載される。これらの好ましい実施形態の変形は、前述の説明を読む際に、当業者に明らかになり得る。発明者は、当業者がかかる変形を適切なように用いることを予期し、発明者は、発明が本明細書に具体的に記載されるのとは別様で実践されることを意図する。したがって、本発明は、適用法によって許可されるように、本明細書に添付される特許請求の範囲で列挙される主題の全ての修正及び等価物を含む。さらに、それらの全ての可能な変形における、上記の要素の任意の組み合わせは、本明細書に別様が示されない限り、または文脈によって別様が明らかに矛盾しない限り、本発明によって包括される。
本明細書に引用される、出版物、特許出願、及び特許を含む、全ての参照文献は、それぞれの参照文献が、あたかも個々にかつ具体的に参照により組み込まれることが示され、かつ本明細書にその全体が述べられるのと同じ程度で、参照によりここに組み込まれる。