IP Force 特許公報掲載プロジェクト 2022.1.31 β版

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

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

(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-06-12
(45)【発行日】2023-06-20
(54)【発明の名称】フェデレーテッドキー管理
(51)【国際特許分類】
   H04L 9/08 20060101AFI20230613BHJP
   H04L 9/14 20060101ALI20230613BHJP
   H04L 9/32 20060101ALI20230613BHJP
【FI】
H04L9/08 A
H04L9/14
H04L9/32 200F
H04L9/32 200B
【請求項の数】 20
(21)【出願番号】P 2020114298
(22)【出願日】2020-07-01
(62)【分割の表示】P 2017232031の分割
【原出願日】2014-02-07
(65)【公開番号】P2020167744
(43)【公開日】2020-10-08
【審査請求日】2020-07-01
(31)【優先権主張番号】13/765,209
(32)【優先日】2013-02-12
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】506329306
【氏名又は名称】アマゾン テクノロジーズ インコーポレイテッド
(74)【代理人】
【識別番号】110001243
【氏名又は名称】弁理士法人谷・阿部特許事務所
(72)【発明者】
【氏名】グレゴリー ブランチェク ロス
(72)【発明者】
【氏名】マシュー ジェイムズ レン
(72)【発明者】
【氏名】エリック ジェイソン ブランドワイン
(72)【発明者】
【氏名】ブライアン アール プラット
【審査官】金沢 史明
(56)【参考文献】
【文献】特開2008-134789(JP,A)
【文献】特開2007-037197(JP,A)
【文献】特開2006-319543(JP,A)
【文献】特開2010-124071(JP,A)
【文献】特開2009-246800(JP,A)
【文献】米国特許出願公開第2012/0297183(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/00- 9/40
G06F 21/00-21/88
(57)【特許請求の範囲】
【請求項1】
第1のコンピュータシステムと、外部の第三者のコンピュータシステムとを備えたシステムであって、前記第1のコンピュータシステムは、
1つまたは複数のプロセッサと、
命令を含むメモリであって、前記命令は、前記1つまたは複数のプロセッサによって実行されると、前記第1のコンピュータシステムに、
外部の第三者のコンピュータシステムに記憶された第1のキーと関連付けて、1つまたは複数のキーのセットを前記第1のコンピュータシステムに記憶させ、
サービスに関する要求を遂行するために前記第1のキーの使用を必要とする、前記要求を受信させ、
前記要求が前記1つまたは複数のキーのセット内のキーによって電子署名されたデータを含む場合、
前記第1のキーが前記外部の第三者のコンピュータシステムにより保持されていることに応じて、前記要求を前記外部の第三者のコンピュータシステムに送信し、前記外部の第三者のコンピュータシステムに、
前記第1のコンピュータシステムによる前記第1のキーへのアクセスを承認することを決定させる、メモリと
を備え、前記第1のキーへのアクセスを承認する前記決定に応答して、承認を必要とする1つまたは複数の操作が前記第1のコンピュータシステムにより実行される、システム。
【請求項2】
前記1つまたは複数のキーのセットは、前記第1のキーを使用して復号することができる暗号化された第2のキーを含む、請求項1に記載のシステム。
【請求項3】
前記1つまたは複数の操作は、1つまたは複数の暗号操作を含む、請求項1に記載のシステム。
【請求項4】
前記1つまたは複数の操作は、前記第1のキーを前記第1のコンピュータシステムに提供することを含む、請求項1に記載のシステム。
【請求項5】
前記要求は第1の要求であり、前記命令は、前記第1のコンピュータシステムに、キーアクセス情報を含む、前記第1のキーへのアクセスの承認のための第2の要求を前記外部の第三者のコンピュータシステムにさらに送信させ、前記外部の第三者のコンピュータシステムは、前記キーアクセス情報に関連付けられたポリシーに少なくとも一部は基づいて、前記第1のキーへのアクセスを承認することを決定する、請求項1に記載のシステム。
【請求項6】
前記キーアクセス情報は電子署名を含む、請求項5に記載のシステム。
【請求項7】
前記1つまたは複数のキーのセットは、前記外部の第三者のコンピュータシステムを識別するユニフォームリソース識別子により識別されるように、前記第1のキーに関連付けて記憶される、請求項1に記載のシステム。
【請求項8】
命令を記憶した1つまたは複数のコンピュータ可読記憶媒体であって、前記命令は、コンピューティングデバイスの1つまたは複数のプロセッサによって実行されたときに、前記コンピューティングデバイスに
第1のキーを第2のキーの識別子と関連付けて記憶することであって、前記第2のキーは外部の第三者のコンピュータシステムに記憶される、ことと、
第1の要求を前記外部の第三者コンピュータシステムに送信することであって、前記第1の要求は、前記第2のキーの識別子と、サービスに関する第2の要求を遂行するために前記第2のキーの使用を必要とする、前記第2の要求との受信に応答するものであり、前記第2の要求が前記第1のキーに関連付けられたキーによって電子署名されたデータを含む場合、前記第1の要求は前記外部の第三者のコンピュータシステムに、
前記コンピューティングデバイスによる前記第2のキーへのアクセスを承認することを決定させ、承認を必要とする1つまたは複数の操作は、前記第2のキーへのアクセスを承認する決定に少なくとも一部は基づいて前記コンピューティングデバイスにより実行される、ことと
を行わせる、1つまたは複数のコンピュータ可読記憶媒体。
【請求項9】
前記第1のキーは暗号化され、前記第2のキーは、前記第1のキーを復号するために使用ですることができるマスターキーである、請求項8に記載の1つまたは複数のコンピュータ可読記憶媒体。
【請求項10】
前記第1の要求はキーアクセス情報を含み、前記第1の要求はさらに、前記外部の第三者のコンピュータシステムに、前記キーアクセス情報に関連付けられたポリシーに少なくとも一部は基づいて、前記第2のキーへのアクセスを承認することを決定させる、請求項8に記載の1つまたは複数のコンピュータ可読記憶媒体。
【請求項11】
前記1つまたは複数の操作は、1つまたは複数の暗号操作を含む、請求項8に記載の1つまたは複数のコンピュータ可読記憶媒体。
【請求項12】
前記1つまたは複数の操作は、前記第2のキーを前記コンピューティングデバイスによって取得することを含む、請求項8に記載の1つまたは複数のコンピュータ可読記憶媒体。
【請求項13】
前記第2の要求は、前記コンピューティングデバイスに記憶された暗号化されたデータにアクセスするための要求である、請求項8に記載の1つまたは複数のコンピュータ可読記憶媒体。
【請求項14】
コンピュータで実行される方法であって、
第1のコンピュータシステムに記憶された第1のキーを第2のキーの識別子と関連付けるステップであって、前記第2のキーは外部の第三者のコンピュータシステムに記憶される、ステップと、
前記第2のキーの識別子と、サービスに関する第2の要求を遂行するために前記第2のキーの使用を必要とする、前記第1のコンピュータシステムによって受信された前記第2の要求との受信に応答して、前記外部の第三者のコンピュータシステムに第1の要求を送信するステップであって、前記第2の要求が前記第1のキーに関連付けられたキーによって電子署名されたデータを含む場合、前記第1の要求は、前記外部の第三者のコンピュータシステムに、
前記第1のコンピュータシステムによる前記第2のキーへのアクセスを承認することを決定させる、ステップと
を含み、承認を必要とする1つまたは複数の操作は、前記第2のキーへのアクセスを承認する前記決定に少なくとも一部は基づいて前記第1のコンピュータシステムにより実行される、方法。
【請求項15】
前記第1のキーは暗号化され、前記第2のキーを使用して、前記第1のキーを復号することができる、請求項14に記載の方法。
【請求項16】
前記第1の要求はキーアクセス情報を含み、前記第1の要求はさらに、前記外部の第三者のコンピュータシステムに、前記外部の第三者のコンピュータシステムに、前記キーアクセス情報に関連付けられたポリシーに少なくとも一部は基づいて、前記第2のキーへのアクセスを承認することを決定させる、請求項14に記載の方法。
【請求項17】
前記キーアクセス情報は電子署名を含む、請求項16に記載の方法。
【請求項18】
前記1つまたは複数の操作は1つまたは複数の暗号操作を含む、請求項14に記載の方法。
【請求項19】
前記1つまたは複数の操作は、前記第1のキーを前記第1のコンピュータシステムに提供することを含む、請求項14に記載の方法。
【請求項20】
前記第2の要求は、暗号化されたデータにアクセスするための要求である、請求項14に記載の方法。
【発明の詳細な説明】
【背景技術】
【0001】
(関連出願の相互参照)
本出願は、2013年2月12日出願の米国特許出願第13/765,209号の優先権を主張するものであり、その内容は、参照によりその全体が本明細書内に組み込まれる。本出願は、全ての目的上、本明細書と同時出願された表題「AUTOMATIC KEY ROTATION」の同時係属中の米国特許出願第13/764,944号、本明細書と同時出願の表題「DATA SECURITY SERVICE」の同時係属中の米国特許出願第13/764,963号、本明細書と同時出願された表題「DATA SECURITY WITH A SECURITY MODULE」の同時係属中の米国特許出願第13/765,020号、本明細書と同時出願された表題「POLICY ENFORCEMENT WITH ASSOCIATED DATA」の同時係属中の米国特許出願第13/764,995号、本明細書と同時出願された表題「DELAYED DATA ACCESS」の同時係属中の米国特許出願第13/765,239号、本明細書と同時出願の表題「DATA SECURITY SERVICE」の同時係属中の米国特許出願第13/765,265号、及び本明細書と同時出願された表題「SECURE MANAGEMENT OF INFORMATION USING A SECURITY MODULE」の同時係属中の米国特許出願第13/765,283号の全開示を、参照により組み込む。
【図面の簡単な説明】
【0002】
本開示に従う様々な実施形態を、図面を参照して説明する。
【0003】
図1】様々な実施形態に従う本開示の様々な態様を表す例示的な図を示す。
図2】本開示の様々な態様が実装され得る環境の例示的な例を示す。
図3】本開示の様々な態様が実装され得る環境の例示的な例、及び少なくとも1つの実施形態に従う環境の様々な構成要素間の情報の流れの例を示す。
図4】少なくとも1つの実施形態に従う、暗号文を記憶するための例示的プロセスのステップ例を示す。
図5】本開示の様々な態様が実装され得る環境の例示的な例、及び少なくとも1つの実施形態に従う環境の様々な構成要素間の情報の流れの例を示す。
図6】少なくとも1つの実施形態に従う、データを取得するための要求に応答するための例示的プロセスのステップ例を示す。
図7】本開示の様々な態様が実装され得る環境の例示的な例、及び少なくとも1つの実施形態に従う環境の様々な構成要素間の情報の流れの例を示す。
図8】少なくとも1つの実施形態に従う、データを記憶するための要求に応答するための例示的プロセスのステップ例を示す。
図9】本開示の様々な態様が実装され得る環境の例示的な例、及び少なくとも1つの実施形態に従う環境の様々な構成要素間の情報の流れの例を示す。
図10】少なくとも1つの実施形態に従う、データを取得するための要求に応答するための例示的プロセスのステップ例を示す。
図11】本開示の様々な態様が実装され得る環境の例示的な例を示す。
図12】本開示の様々な態様が実装され得る環境の例示的な例、及び少なくとも1つの実施形態に従う環境の様々な構成要素間の情報の流れの例を示す。
図13】少なくとも1つの実施形態に従う、データを取得するための要求に応答するための例示的プロセスのステップ例を示す。
図14】少なくとも1つの実施形態に従う、データを復号するための要求に応答するための例示的プロセスのステップ例を示す。
図15】少なくとも1つの実施形態に従う、復号されたデータを獲得するための例示的プロセスのステップ例を示す。
図16】少なくとも1つの実施形態に従う、暗号サービス例の図表示を示す。
図17】少なくとも1つの実施形態に従う、ポリシーを構成するための例示的プロセスのステップ例を示す。
図18】少なくとも1つの実施形態に従う、ポリシーを施行しながら暗号操作を実行するための例示的プロセスのステップ例を示す。
図19】少なくとも1つの実施形態に従う、データを暗号化するためのプロセスの例示的な例を示す。
図20】少なくとも1つの実施形態に従う、セキュリティモジュールを使用してデータを暗号化するための例示的な例を示す。
図21】少なくとも1つの実施形態に従う、セキュリティモジュールを使用してデータの暗号化に使用されるキーを暗号化するための例示的な例を示す。
図22】少なくとも1つの実施形態に従う、関連データを使用してポリシーを施行するためのプロセスの例示的な例を示す。
図23】少なくとも1つの実施形態に従う、関連データ及びセキュリティモジュールを使用してポリシーを施行するためのプロセスの例示的な例を示す。
図24】少なくとも1つの実施形態に従う、ポリシーの状態図の例示的な例を示す。
図25】少なくとも1つの実施形態に従う、ポリシーの別の状態図の例示的な例を示す。
図26】少なくとも1つの実施形態に従う、自動ローテートキーのプロセスの例示的な例を示す。
図27】少なくとも1つの実施形態に従う、自動ローテートキーのプロセスの例示的な例を示す。
図28】少なくとも1つの実施形態に従う、キー使用を追跡するために使用され得るデータベースの表示の例示的な例を示す。
図29】様々な実施形態が実装され得る環境の例示的な例を示す。
図30】少なくとも1つの実施形態に従う、キーと関連付けられ得る情報の図表示を示す。
図31】少なくとも1つの実施形態に従う、要求と関連して含まれ得るキーアクセスアノテーションの図表示を示す。
図32】少なくとも1つの実施形態に従う、要求を処理するためのプロセスの例示的な例を示す。
図33】少なくとも1つの実施形態に従う、要求を処理するためのプロセスの例示的な例を示す。
図34】様々な実施形態が実装され得る環境を例示する。
【発明を実施するための形態】
【0004】
以下の説明において、様々な実施形態を説明する。説明の目的で、実施形態の完全な理解を提供するために特定の構成及び詳細を記載する。しかしながら、実施例が特定の詳細なしに実践され得ることも、当業者には明らかであろう。さらには、周知の特徴は、説明される実施形態を不明瞭にしないために省略または簡略化され得る。
【0005】
本明細書に記載及び提案される技術は、分散コンピューティングリソースを伴う環境における強化されたデータセキュリティを可能にする。一例において、分散コンピューティング環境は、適切なコンピューティングリソースによって実装され得る1つ以上のデータサービスを含む。そのデータサービスは、様々な操作がデータと関連して実行されることを可能にし得る。1つの例示的な例として、分散コンピューティング環境は、1つ以上のデータ記憶サービスを含む。電子要求は、データ記憶操作を実行するためにデータ記憶サービスに送信され得る。操作例は、データ記憶サービスを使用してデータを記憶するため、及びデータ記憶サービスを使用してデータ記憶サービスによって記憶されたデータを取得するための操作である。データ記憶サービスをはじめとするデータサービスはまた、データを取り扱う操作も実行し得る。例えば、いくつかの実施形態において、データ記憶サービスは、データを暗号化することができる。
【0006】
本開示の様々な実施形態は、適切なコンピューティングリソースを使用して実装される暗号サービスを含む分散コンピューティング環境を含む。暗号サービスは、電子要求を受信し、かつそれに応答して、平文の暗号化及び暗号文の復号などの暗号操作を実行する分散システムによって実装され得る。いくつかの実施形態において、暗号サービスはキーを管理する。暗号操作を実行するための要求に応じて、暗号サービスは、管理されるキーを使用する暗号操作を実行し得る。例えば、暗号サービスは、暗号操作を実行するために適切なキーを選択すること、暗号操作を実行すること、及び受信した要求に応じて暗号操作の1つ以上の結果を提供することができる。代替の構成において、暗号サービスは、エンベロープキー(例えば、特定のデータ項目を暗号化するために使用されるセッションキー)を生成し、該サービスの暗号操作を呼び出すシステムにエンベロープキーを返却することができる。該システムは、次いで、そのエンベロープキーを使用して暗号操作を実行することができる。
【0007】
いくつかの実施形態において、暗号サービスは、コンピューティングリソースサービスプロバイダの複数のテナントのキーを管理する。コンピューティングリソースのテナントは、コンピューティングリソースプロバイダの顧客として操作するエンティティ(例えば、組織または個人)であり得る。顧客は、遠隔で、及びプログラムによって、コンピューティングリソースプロバイダによって物理的にホストされるリソースを構成及び操作し得る。顧客が暗号操作を実行するために暗号サービスに要求を提出するとき(または、エンティティが暗号サービスに要求を提出するとき)、暗号サービスは、顧客のために暗号サービスによって管理されるキーを選択して、暗号操作を実行し得る。暗号サービスによって管理されるキーは、他のユーザ及び/またはデータサービスが、他者のキーへのアクセスを有しないように、安全に管理され得る。エンティティ(例えば、ユーザ、顧客、サービス)による別のエンティティのキーへのアクセスの欠如は、エンティティが他者のキーを獲得する承認された方法を有しないこと、及び/またはエンティティが他者のキーを管理するシステムに、エンティティの指示でキーを使用させる承認された方法を有しないことを意味し得る。例えば、暗号サービスは、顧客のために、他の顧客が、その顧客のキー(複数可)へのアクセスを有すること、及び暗号サービスにその顧客のキー(複数可)を使用して暗号操作を実行させることの双方ができないように、キーを管理し得る。別の例として、暗号サービスは、データ記憶サービスなどの他のサービスが、暗号サービスにいくつかまたはすべてのキーを使用して暗号操作を実行させることができないように、キーを管理し得る。キーへの不正アクセスは、例えば、不正アクセスが困難または不可能であるように、適切なセキュリティ対策によって防止され得る。困難さは、アクセスを獲得するための、計算実行不能に起因し、かつ/または不正(例えば、許可証明書の侵害など、違法、不法、及び/または別の様式で禁止された)が発生する必要性に起因し得る。様々な実施形態に従うシステムは、キーへのアクセスを獲得するための計算実行不能の客観的尺度を確実にするように構成され得る。そのような尺度は、例えば、規定単位の計算能力(例えば、単位時間当たりの特定の操作)を有するコンピュータが、キーへの承認されたアクセスに必要な暗号化された情報を解読するために平均して要するであろう時間量の観点から測定され得る。
【0008】
述べたように、暗号サービスは、コンピューティングリソースプロバイダの顧客など、様々なエンティティから要求を受信し得る。暗号サービスはまた、コンピューティングリソースプロバイダ内部のエンティティからも要求を受信し得る。例えば、いくつかの実施形態において、コンピューティングリソースプロバイダによって実装されるデータサービスは、暗号サービスに暗号操作を実行させるために、要求を暗号サービスに送信し得る。一例として、顧客は、データオブジェクトを記憶するために、要求をデータ記憶サービスに送信し得る。その要求は、データオブジェクトが記憶されるときに暗号化されるべきであることを示し得る。データ記憶サービスは、暗号操作を実行するために、要求を暗号サービスに通信する。暗号操作は、例えば、データオブジェクトを暗号化するためにデータ記憶サービスによって使用されるキーの暗号化であり得る。暗号操作は、データオブジェクト自体の暗号化であり得る。暗号操作は、データ記憶サービスがデータオブジェクトを暗号化するために使用できるエンベロープキーを生成することであり得る。
【0009】
様々な実施形態に従うシステムは、強化されたデータセキュリティを提供するために様々なセキュリティ対策を実装する。例えば、様々な実施形態において、暗号サービスが、それが管理するキーを利用できる様態には限りがある。例えば、いくつかの実施形態において、暗号サービスは、適切な承認時に顧客に対応するキーのみを使用するために構成される。顧客のキーを使用するための要求が、顧客から(すなわち、顧客に代わって操作するコンピューティングデバイスから)生じると称される場合、暗号サービスは、該要求が顧客によって所有される適切な証明書を使用して電子(デジタル)署名されることを必要とするように構成され得る。顧客のキーを使用するための要求が別のデータサービスから生じた場合、暗号サービスは、該データサービスが、該データサービスへの署名済み要求が顧客によって為されたという証明を提供することを必要とするように構成される。いくつかの実施形態において、例えば、データサービスは、認証された顧客要求の証明として機能するトークンを獲得及び提供するように構成される。他のセキュリティ対策もまた、暗号サービスを含む電子環境の構成に組み込まれ得る。例えば、いくつかの実施形態において、暗号サービスは、コンテクストに従ってキー使用を制限するように構成される。1つの例示的な例として、暗号サービスは、顧客から、または顧客の代理を果たすデータサービスからの要求に対して、暗号化のためのキーを使用するように構成され得る。しかしながら、暗号サービスは、顧客からの(しかし別のデータサービスからではない)要求に対して、復号のためのキーのみを使用するように構成され得る。この様態において、データサービスが侵害された場合、データサービスは、暗号サービスにデータを復号させることができない。
【0010】
様々なセキュリティ対策が、暗号サービス及び/またはその電子環境に組み込まれ得る。いくつかのセキュリティ対策は、いくつかの実施形態において、構成可能なポリシーに従って管理され得る。一例として、暗号サービスは、ユーザがキー上のポリシーを構成することを可能にするアプリケーションプログラミングインターフェース(API)を利用し得る。キー上のポリシーは、暗号サービスによって処理されるとき、キーが特定の状況で使用され得るかどうかについて決定力のある情報であり得る。ポリシーは、例えば、キーの使用を指示できるユーザ及び/またはシステムのアイデンティティを制限し得、キーを使用することができる時間を制限し得、どのキーを使用して暗号操作を実行するかに関するデータを制限し得、かつ他の制限を提供し得る。ポリシーは、明示的制限(例えば、誰がキーを使用することができないのか)を提供し得、かつ/または明示的承認(例えば、誰がキーを使用することができるか)を提供し得る。さらに、ポリシーは、キーを使用できるとき、及び使用できないときの条件を一般的に提供するように複雑に構成され得る。キーを使用して暗号操作を実行するための要求が受信されるとき、ポリシーに従って要求が遂行されることができるかどうか決定するために、キー上のいかなるポリシーもアクセス及び処理され得る。
【0011】
本開示の様々な実施形態は、キーと関連付けられるポリシーの施行に関し、該キーは暗号サービスによって管理され得る。暗号サービスをホストするコンピューティングリソースプロバイダの顧客など、暗号サービスのユーザは、暗号サービスによって施行されるキー上のポリシーを指定し得る。ポリシーは、キーを使用するために誰が暗号サービスを指示することができるか、キーを使用してどのような操作が実行され得るか、どのような状況でキーが使用され得るか、及び/または他のキー使用に関連した制約及び/または特権を符号化し得る。
【0012】
ある実施形態において、暗号文と関連付けられるデータは、ポリシーの施行に使用される。暗号文と関連付けられるデータは、先進暗号化標準(AES)モードなど、暗号の使用によって獲得されるデータであり得る。例えば、暗号アルゴリズムへの入力は、暗号化される平文及び関連データを含み得る。暗号アルゴリズムは、平文を暗号化するためのキーを使用し得、かつ関連データが変更されているかどうかの決定を可能にするメッセージ認証コード(MAC)などの、認証出力を提供し得る。認証出力は、少なくとも部分的に関連データ及び平文に基づいて決定され得る。
【0013】
ポリシー施行は、少なくとも部分的に関連データに基づき得る。例えば、いくつかのポリシーは、復号された暗号文(すなわち、平文)が提供される前に、関連データが特定の値を有することを必要とし得る。認証出力(例えば、MAC)は、関連データが変更されておらず、それ故にポリシーの施行が正しく実行されることを確実にするために使用され得る。関連データは、任意の好適なデータであり得、そのデータ自体は、ポリシーによって明示的または暗黙的に指定され得る。例えば、ポリシーは、暗号文を復号するための要求が、暗号文を暗号化するために使用される関連データ内に符号化されるユーザ識別子を有するユーザによって提出された場合のみ、復号された暗号文(平文)を提供することができるということを指定し得る。この様態において、別のユーザが暗号文の復号を要求した場合は(ユーザ識別子を有するユーザになりすますことなく)、ポリシーと相反するため、要求は遂行されない。別の例として、ポリシーは、暗号文が指定された情報にタグ付けされている場合のみ、復号された暗号文を提供することができると明言し得る。さらに別の例として、ポリシーは、平文のハッシュ、暗号文のハッシュ、または他の指定された値に等しい関連データにタグ付けされている場合のみ、復号された暗号文を提供することができると明言し得る。一般的に、本開示の実施形態は、暗号アルゴリズムの出力が明らかにされる前に、暗号アルゴリズムの入力または出力を中心とした豊富なポリシー施行を可能にする。いくつかの実施形態において、関連データはそれ自体がポリシーを表すことができる。
【0014】
本開示の様々な実施形態はまた、キー使用を中心としたポリシーも可能にする。例えば、いくつかの実施形態において、キーを明らかにすることができる暗号攻撃の成功を可能にするのに十分な時間キーが使用されることを防止するために、キーは自動ローテートされる。起こり得るセキュリティ違反をもたらすのに十分な時間キーが使用されることを防止するため、暗号サービスまたはキーを利用する他のシステムは、キーを用いて実行される操作を追跡し得る。キー識別子(KeyID)によって識別されるキーが操作の閾値数において使用されるとき、そのキーはリタイアされ(例えば、将来の暗号化操作に使用不可能であるが、将来の復号操作には使用可能)、KeyIDによって識別される新しいキーと交換され得る。この様態において、新しいキーは適時に生成される。さらに、本開示の様々な実施形態は、特定のエンティティに対して透過的な様態でそのようなキーローテーションを実行する。一例として、コンピューティングリソースプロバイダの顧客または他のエンティティは、KeyIDによって識別されるキーを使用して操作を実行するために、暗号サービスに要求を提出し得る。暗号サービスは、キーローテーションを実行するためのエンティティからのいかなる要求からも独立して、キーローテーションを実行し得る。顧客または他のエンティティの観点から、要求は、リタイアされて新しいキーと交換されたキーに起因して必要な任意の再プログラミングまたは他の再構成なしに、KeyIDを使用して依然として提供され得る。
【0015】
いくつかの実施形態において、暗号または他のサービスを支援する複数のシステムが、同時に、キーへのアクセスを有し、暗号操作を実行するための要求を遂行するために使用される。例えば、暗号サービスは、セキュリティモジュールのクラスタを利用し得、その少なくともいくつかは1つ以上のキーを冗長して記憶する。該サービスは、操作をセキュリティモジュールに割り当て、それ自身のカウンタを維持し得る。セキュリティモジュールがその割り当てを使用する(例えば、キーを使用して割り当てられた数の操作を実行する)とき、該サービスは、キーが依然として使用可能かどうか、またはキーをリタイアさせるべきかどうかをチェックし得る。セキュリティモジュール(または他のコンピュータシステム)は、暗号化、復号、電子署名生成等の、キーを使用した複数の種類の操作を実行するように構成され得ることに留意されたい。いくつかの実施形態において、すべての種類の操作が、セキュリティモジュールに操作の割り当ての一部を使用させるわけではない。例えば、復号操作は、割り当てられた操作が使用される結果をもたらさない場合がある一方、暗号化操作は、割り当てられた操作が使用される結果をもたらし得る。一般的に、様々な実施形態において、新たな情報(例えば、暗号文及び/または電子署名)の生成をもたらす暗号操作は、割り当てられた操作が使用される結果をもたらし得る一方、新たな情報の生成をもたらさない暗号操作は、割り当てられた操作が使用される結果をもたらさない場合がある。さらに、異なる種類の操作は、異なる数の暗号操作が実行される結果をもたらし得る。一例として、平文の暗号化は、少なくとも部分的に平文のサイズに基づいて、必要とされる暗号操作の量が変化し得る。例えば、ブロック暗号の使用によって、割り当てられた暗号操作は、生成される暗号文の各ブロックに使用され得る。
【0016】
1つのキーに利用できる操作の合計数が依然として使用可能である場合、該サービスは、追加の操作をセキュリティモジュールに割り当て得る。キーをリタイアすべき場合(例えば、カウンタがそのように示しているため)、該サービスは、キーを冗長して記憶するセキュリティモジュールに、キーをリタイアさせ、かつそのキーを新しいキーと交換させ、ここでその新しいキーは生成され得るか、または1つのセキュリティモジュールによって別の様式で獲得されて残りのセキュリティモジュールへと安全に渡され得る。いくつかの実施形態において、他のセキュリティモジュールは、代わりに、古いキーの下、それらの割り当てられた操作を使い尽す。セキュリティモジュールが正常に機能しない場合、動作不能になった場合、意図的にオフラインとなった場合(例えば、保守のため)、かつ/あるいはそれが1つ以上のキーを使用して実行した操作の数に関する情報を提供せず、暗号操作の実行が別の様式で利用不可能になった場合、該サービスは、その非有用性をその割り当ての使用として処理し得る。例えば、セキュリティモジュールがキーのセット内の各キーに対して100万の操作を割り当てられ、セキュリティモジュールが動作不能となる場合、該サービスは、セキュリティモジュールがキーのセット内の各キーに対して100万の操作を実行したかのように、動作し得る。例えば、該サービスは、追加の操作をセキュリティモジュールまたは別のセキュリティモジュールに割り当て、それに従ってカウンタを調整し得、かつ/または対応するカウンタが、交換が必要であることを示す場合、キーのうちの1つ以上をリタイア及び交換させ得る。
【0017】
本開示の実施形態はまた、アノテーション及び/またはフェデレーテッドキー管理技術によって、強化されたデータセキュリティを可能にする。いくつかの実施形態において、サービス(暗号サービスまたは他のデータサービスなど)に提出される要求は、ポリシーの施行を可能にする情報を含むアノテーション(キーアクセスアノテーションとも称される)を含み得るか、または別途それと関連付けられ得る。ある実施形態において、キーアクセスアノテーションは、対応する要求が遂行され得る前に1つ以上の条件を満たさなければならない。いくつかの実施形態において、1つ以上の条件は、アノテーションがKeyIDに関連付けられるキーを使用して電子署名され、該KeyIDは要求を遂行するために使用可能な異なるキーを識別する、という条件を含む。有効な電子署名の存在は、アノテーション内の情報が改変されていないことを示し得、かつ電子署名を生成するために使用されるキーの保有も証明し得る。
【0018】
いくつかの実施形態において、キーアクセスアノテーションは、要求を遂行するために使用可能なキーの所有者の識別子を含み得る。キーの所有者は、要求を受信するシステムをホストするエンティティであり得、または第三者のシステムなど、別のシステムであり得る。要求を受信するシステムは、識別子の存在を検出し得、かつ必要に応じて識別子に従って、要求自体を処理するか、処理のために要求を識別されたキー所有者に送信するか、のいずれかであり得る。要求を受信するエンティティ及び/またはキー所有者は、上記および本明細書内の他の部分に記載されるように、ポリシーの施行のために電子署名を検証し得る。例えば、電子署名が有効でない場合、要求の受信者は、要求をアノテーション内に識別されるキー所有者に渡さない場合がある。同様に、キー所有者が電子署名は無効であると決定した場合、要求を拒否する場合がある。要求を受信するエンティティ及びキー所有者は、同じ電子署名を検証し得、または、いくつかの実施形態において、要求は少なくとも2つの署名を、1つは要求の受信者のため、1つはキー所有者のために含む。各署名は、署名を検証することを目的とするエンティティに対応するキーを使用して生成され得る。
【0019】
本開示の実施形態はまた、特定の種類の要求が遂行される前の強制的遅延によって、強化されたデータセキュリティを可能にする。例えば、いくつかの実施形態において、特定のデータの復号は、対応する要求に応じて平文が提供される前に遅延を必要とする。遅延の間、利害関係者に情報を復号するための要求の保留を通知するために様々なアクションが取られ得る。この様態において、利害関係者(例えば、組織の法令遵守責任者、または平文が提供されることを許可する権限を持つ他の者)は、平文が提供される前に要求をキャンセルする機会が与えられる。様々な実施形態において、要求は容易にキャンセルされる。例えば、要求をキャンセルするための要件は、要求が遂行されるための要件よりも厳しくなくてもよい。この様態において、不正なデータ漏洩は、容易に検出可能及び/または防止可能である。
【0020】
図1は、本開示の様々な実施形態を説明する例示的な図100である。ある実施形態において、暗号サービスは、1つ以上の暗号アルゴリズムに従う1つ以上の計算のアプリケーションを含み得る暗号操作を実行する。図1に例示されるように、暗号サービスは、ユーザまたはサービスが暗号文から平文を生成することを可能にする。ある構成例において、暗号サービスを使用して、キーを暗号化する/復号することができ、これらのキーを使用して、データ記憶サービス内に記憶されるデータなどのデータを暗号化する/復号することができる。例えば、暗号サービスは、キーの下で暗号化された暗号文から平文を生成するための要求を受信し得る。暗号サービスは、要求者が承認されたエンティティであると決定し、マスターキーを使用してキーを復号し、そこで復号されたキーをサービスに返し、それによって復号されたキーを使用して暗号文から平文を生成することができる。別の構成において、暗号サービスは、暗号文を受信して、受信した暗号文を処理して、暗号サービスによってサービスとして提供される平文にする。この例において、暗号文は、暗号サービスを操作するコンピューティングリソースプロバイダの顧客であり得る、及び/またはコンピューティングリソースプロバイダの別のサービスであり得る承認されたエンティティから暗号サービスへの電子要求の一部として暗号サービスに提供され得る。図1に例示される暗号サービスは、データを暗号化するために、1つ以上の暗号法上強力なアルゴリズムを利用し得る。そのような暗号法上強力なアルゴリズムとしては、例えば、高度暗号化標準(Advanced Encryption Standard)(AES)、ブローフィッシュ(Blowfish)、データ暗号化標準(Data Encryption Standard)(DES)、トリプルDES、Serpent、またはトゥーフィッシュ(Twofish)が挙げられ、選択される特定の実装によっては、非対称、または対称いずれかのキーシステムであり得る。一般的に、暗号サービスは、任意の暗号化及び/もしくは復号アルゴリズム(暗号)、または暗号サービスによって管理されるデータを利用したアルゴリズムの組み合わせを利用し得る。
【0021】
以下により詳細に記載するように、暗号サービスを、様々な方法で実装することができる。ある実施形態において、暗号サービスは、以下の説明に従って構成されるコンピュータシステムによって実装される。コンピュータシステムは、それ自体が1つ以上のコンピュータシステムを備え得る。例えば、暗号サービスは、様々な実施形態に従う暗号操作を実行するようにまとめて構成されるコンピュータシステムのネットワークとして実装され得る。または別の言い方をすると、コンピュータシステムは分散システムであり得る。ある実施形態において、暗号文は、暗号アルゴリズムを使用して暗号化された情報である。図1の例において、暗号文は、暗号化された形態の平文である。平文は、任意の情報であり得、その名称は文字テキストを含まないが、平文及び暗号文は任意の好適な形態で符号化される情報であり得、必ずしもテキスト情報を含まないが、テキスト情報を含んでもよい。例えば、図1に例示されるように、平文及び暗号文は、ビットのシーケンスを含む。平文及び暗号文はまた、他の方法、及び一般的には、暗号化及び復号をコンピュータシステムによって実行することができる任意の様態でも表され得る。
【0022】
図2は、図1に例示されるような暗号サービスが実装され得る環境200の例示的な例を示す。200の環境において、安全なデータ関連サービスを提供するために、様々な構成要素が一緒に動作する。この特定の例において、環境200は、暗号サービス、認証サービス、データサービスフロントエンド、及びデータサービスバックエンド記憶システムを含む。ある実施形態において、暗号サービスは、データサービスフロントエンドから平文を受信し、代わりに暗号文を提供すること、または該サービスがエンベロープキーを使用して暗号化操作を実行することができるように該サービスにエンベロープキーを提供することによってなど、暗号操作を実行するように環境200内に構成される。暗号サービスは、平文を暗号文に変換すること及び暗号文を平文に復号することなどの暗号操作の実行のためのキーの安全な記憶など、以下に記載されるような追加の関数を実行し得る。暗号サービスはまた、そこに格納されるキーと関連のあるポリシーを施行することによるなど、ポリシー施行に関連付けられる操作を実行する。暗号サービスによって施行され得るポリシー例は、以下に提供される。ある実施形態におけるデータサービスフロントエンドは、様々なユーザからネットワークを介して送信される要求を受信し、それに応答するように構成されるシステムである。要求は、データサービスバックエンド記憶システム内に記憶された、または記憶されることとなるデータと関連して操作を実行するための要求であり得る。環境200において、認証サービス、暗号サービス、データサービスフロントエンド、及びデータサービスバックエンド記憶システムは、図2に例示されるユーザによって表される顧客にサービスを提供するためにシステムを利用するコンピューティングリソースプロバイダのシステムであり得る。図2に例示されるネットワークは、以下に記載されるものをはじめとする、任意の好適なネットワークまたはネットワークの組み合わせであり得る。
【0023】
ある実施形態における認証サービスは、ユーザの認証に関与した操作を実行するように構成されるコンピュータシステムである。例えば、データサービスフロントエンドは、ユーザからの情報を認証サービスに提供し得、代わりに、ユーザ要求が真正であるかどうかを示す情報を受信する。ユーザ要求が真正であるかどうかの決定は、任意の好適な様態で実行され得、及び認証が実行される様態は、様々な実施形態間において変化し得る。例えば、いくつかの実施形態において、ユーザはデータサービスフロントエンドに送信されるメッセージに電子署名をする。電子署名は、認証エンティティ(例えば、ユーザ)及び認証サービスの双方が利用可能な秘密情報(例えば、ユーザに関連付けられるキーペアのプライベートキー)を使用して生成され得る。要求及び要求のための署名は、秘密情報を使用して、受信した署名との比較のために参照署名を計算して、要求が真正かどうかを決定し得る認証サービスに提供され得る。要求が真正である場合、認証サービスは、データサービスフロントエンドが暗号サービスなどの他のサービスに対して、要求が真正であるということを証明するために使用できる情報を提供し得、それによって他のサービスがそれに応じて動作することができるようにする。例えば、認証サービスは、別のサービスが要求の真正性を検証するために分析することができるトークンを提供し得る。電子署名及び/またはトークンは、様々な方法で制限される有効性を有し得る。例えば、電子署名及び/またはトークンは、特定の時間量において有効である。一例において、電子署名及び/またはトークンは、検証のために電子署名及び/またはトークンとともに含まれる、入力をタイムスタンプと見なす関数(例えば、ハッシュベースメッセージ認証コード)に少なくとも部分的に基づいて生成される。提出される電子署名及び/またはトークンを検証するエンティティは、受信したタイムスタンプが十分に最新(例えば、現在時刻から規定の時間量以内)であることをチェックし、受信したタイムスタンプのために使用する参照署名/トークンを生成し得る。提出される電子署名/トークンを生成するために使用されるタイムスタンプが十分に最新ではない場合、及び/または提出される署名/トークンと参照署名/トークンとが一致しない場合、認証は失敗となり得る。この様態において、電子署名が侵害される場合、電子署名が短い時間量のみ有効であることから、侵害によって引き起こされる潜在的被害を制限する。真正性を検証する他の方法もまた、本開示の範囲内であると見なされることに留意されたい。
【0024】
ある実施形態におけるデータサービスバックエンド記憶システムは、データサービスフロントエンドを介して受信される要求に従ってデータを記憶するコンピュータシステムである。以下でより詳細に議論されるように、データサービスバックエンド記憶システムは、暗号化形態でデータを記憶し得る。データサービスバックエンド記憶システム内のデータはまた、暗号化されていない形態でも記憶され得る。いくつかの実施形態において、データサービスフロントエンドによって実装されるAPIは、要求が、データサービスバックエンド記憶システム内に記憶されるデータが暗号化されるべきかどうかを指定することを可能にする。暗号化され、データサービスバックエンド記憶システム内に記憶されるデータは、様々な実施形態に従う様々な方法で暗号化され得る。例えば、様々な実施形態において、データは、暗号サービスにアクセス可能だが、環境200のいくつかまたはすべてのシステムにはアクセス不可能なキーを使用して暗号化される。データは、データサービスバックエンド記憶システム内での記憶のために暗号サービスによって符号化され得、及び/または、いくつかの実施形態において、データは、ユーザシステムまたはデータサービスフロントエンドのシステムなどの別のシステムによって、暗号サービスによって復号されたキーを使用して暗号化され得る。環境200がデータを暗号化するために操作し得る様々な方法の例は以下に提供される。
【0025】
環境200の多数の変形(及び本明細書に記載される他の環境)は、本開示の範囲内であると見なされる。例えば、環境200は、暗号サービス及び/または認証サービスと通信し得る追加のサービスを含み得る。例えば、環境200は、異なる方法でデータを記憶し得る追加のデータ記憶サービス(各々がフロントエンドシステム及びバックエンドシステムを備え得る)を含み得る。例えば、1つのデータ記憶サービスは、データ記憶サービスが同期様態でデータ記憶サービスを実行する、データへのアクティブアクセスを提供し得る(例えば、データを取得するための要求は、取得されるデータとともに同期応答を受信し得る)。別のデータ記憶サービスは、アーカイブデータ記憶サービスを提供し得る。そのようなアーカイブデータ記憶サービスは、非同期要求処理を利用し得る。例えば、データを取得するための要求は、取得されるデータを含む同期応答を受信しない場合がある。むしろ、アーカイブデータ記憶サービスは、取得されるデータを提供する準備が整うと、取得されるデータを獲得するために提出される第2の要求を必要とし得る。別の例として、環境200は、暗号サービス(及び/または他のサービス)から情報を受信し、その情報を使用して課金記録を作成する計量サービスを含み得る。課金記録は、暗号サービス(及び/または他のサービス)の使用に対して顧客に支払いを請求するために使用され得る。さらに、暗号サービスからの情報は、どれくらいの料金が課されるべきかの指針を提供し得る。例えば、いくつかの例において、顧客は、暗号サービスの使用に対する請求書を提供され得る。他の例において、暗号サービスの使用に対する料金は、その操作の一部として暗号サービスを利用するデータサービスなど、他のサービスの使用料金に合わせられ得る。使用は、操作ごと、一定期間ごと、及び/または他の方法など、様々な方法で、計量及び請求され得る。他のデータサービスもまた、環境200(または本明細書に記載される他の環境)に含まれ得る。
【0026】
加えて、図2は、データサービスフロントエンドと対話するユーザを描く。ユーザは、図中には例示されていないユーザデバイス(例えば、コンピュータ)を介してデータサービスフロントエンドと対話し得ることを理解されたい。さらに、図2(及び図中の他の部分)に描かれるユーザはまた、人間以外のエンティティも表し得る。例えば、コンピュータシステム上で実行する自動処理は、本明細書に記載されるようにデータサービスフロントエンドと対話し得る。1つの例示的な例として、図2中でユーザによって表されるエンティティは、その操作の一部として、データサービスフロントエンドを使用して、データをデータサービスバックエンド記憶システムに記憶する、及び/またはデータサービスバックエンド記憶システムから取得するサーバであり得る。さらに別の例として、図2中でユーザによって表されるエンティティは、図2中のサービスのうちの1つ以上を操作するコンピューティングリソースプロバイダのサービスとして提供されるエンティティであり得る。例えば、図2中のユーザは、コンピューティングリソースプロバイダによって提供されるプログラム実行サービスの仮想または他のコンピュータシステムを表し得る。以下に記載される他の環境の変形を含め、他の変形もまた、本開示の範囲内であると見なされる。
【0027】
例えば、図3は、本開示の様々な実施形態が実装され得る環境300の例示的な例を示す。図2と同様に、図3の環境は、認証サービス、データサービスフロントエンドシステム(データサービスフロントエンド)、暗号サービス、及びデータサービスバックエンド記憶システムを含む。認証サービス、データサービスフロントエンド、暗号サービス、及びデータサービスバックエンド記憶システムは、図2と関連して上記のように構成され得る。例えば、ユーザは、好適なコミュニケーションネットワークを介してデータサービスフロントエンドにアクセスし得るが、そのようなネットワークは図中には例示されていない。図3に例示される環境300の例では、情報の流れを表す矢印が提供される。この例において、ユーザはPUT要求をデータサービスフロントエンドに送信する。PUT要求は、指定されたデータをデータサービスバックエンド記憶システム内に記憶するための要求であり得る。PUT要求に応じて、データサービスフロントエンドは、PUT要求が真正であるかどうか、つまりユーザが要求された操作をシステムによって実装される認証ポリシーに従って実行することができる様態で要求を提出したかどうか、を決定し得る。
【0028】
図3において、そのような認証決定がどのように行われ得るかの例示的な例が例示される。この特定の例において、データサービスフロントエンドは、認証要求を認証サービスに提出する。認証サービスは、認証要求を使用して、ユーザからのPUT要求が真正であるかどうかを決定し得る。要求が真正である場合、認証サービスは、認証証明をデータサービスフロントエンドに提供し得る。認証証明は、電子トークン、または暗号サービスなどの別のサービスが真正な要求が受信されたことを独立して決定するために使用可能な他の情報であり得る。1つの例示的な例において、PUT要求は、PUT要求のための署名とともに送信される。PUT要求及びその署名は、真正である場合の署名はどうあるべきかを独立して計算する認証サービスを介して提供される。認証サービスによって生成される署名が、ユーザによって提供されるその署名と一致する場合、認証サービスは、PUT要求が真正であると決定し得、かつそれに応じて認証証明を提供し得る。PUT要求が真正であるかどうかの決定はまた、ポリシーの施行に関連する1つ以上の操作も含む。例えば、署名は有効であるが別途ポリシーがPUT要求を完了すべきではないと示す(例えば、要求がポリシーによって禁止される時間中に提出された)場合、認証サービスは、要求が真正ではないことを示す情報を提供し得る。(しかしながら、そのようなポリシー施行は、環境300の他の構成要素によって実行され得ることに留意されたい。)認証サービスは、認証サービス及びユーザによって共有されるキーを使用することなどによって、署名を生成し得る。認証証明は、述べたように、暗号サービスなどの別のサービスが、要求が真正であることを独立して検証できる情報であり得る。例えば、図3に例示される暗号サービスの例を使用すると、認証証明は、他のサービスにアクセス不可能なキーなど、認証サービス及び暗号サービスの双方によって共有されるキーに少なくとも部分的に基づいて生成され得る。
【0029】
図3に例示されるように、データサービスフロントエンドは、認証サービスから認証証明を受信すると、平文及び認証証明を暗号サービスに提供する。平文及び認証証明は、APIコールまたは他の電子要求に従って暗号サービスに提供される(例えば、Encrypt APIコール)。暗号サービスは、認証証明を分析して、平文を暗号化するかどうかを決定し得る。
【0030】
追加情報が暗号サービスに提供され得ることに留意されたい。例えば、平文を暗号化するために使用されるキーの識別子は、入力パラメータとしてデータサービスフロントエンドからのAPIコールへ提供され得る(代わりに、ユーザから識別子を受信している場合がある)。しかしながら、識別子は暗号サービスに送信されない場合があることに留意されたい。例えば、様々な実施形態において、平文を暗号化するためにどのキーを使用するか別途決定可能であり得る。例えば、データサービスフロントエンドから暗号サービスへ送信される情報は、代理としてユーザがPUT要求を提出した顧客の識別子などの、ユーザ及び/またはユーザに関連付けられる組織の識別子など、ユーザに関連付けられる情報を含み得る。そのような情報は、使用されるデフォルトキーを決定するために暗号サービスによって使用され得る。言い換えると、そのキーは、キーを決定するために使用可能な情報によって暗黙的に指定され得る。一般的に、使用されるキーの決定は、任意の好適な様態で実行され得る。さらに、いくつかの実施形態において、暗号サービスはキーを生成または選択し得、かつ後に使用される生成または選択されたキーの識別子を提供し得る。APIパラメータの別の例は、暗号化操作が実行される顧客アカウント用マスターキーのための識別子であり得る。
【0031】
図3に例示されるように、認証証明が、平文が暗号化されるのに暗号サービスにとって十分である場合、暗号サービスは1つ以上の暗号操作を実行することができる。ある実施形態において、1つ以上の暗号操作は、平文を暗号化するために使用されるエンベロープキーを生成するための操作を含むことができる。エンベロープキーは、ランダムに生成される対称キー、またはキーペアのプライベートキーであり得る。エンベロープキーが生成された後、暗号サービスは、APIコール内で指定されるマスターキーを用いてエンベロープキーを暗号化することができ、その暗号化されたエンベロープキーを永続的に記憶する(例えば、記憶サービスまたはいくつかの他の持続性ストレージ内に暗号化されたキーを記憶することによって)、または破棄することができる。加えて、暗号サービスは、エンベロープキーの平文バージョンならびに暗号化されたエンベロープキーをデータサービスフロントエンドに送ることができる。データサービスは次いで、エンベロープキーの平文バージョンを使用して平文(すなわち、暗号化要求と関連付けられるデータ)を暗号化することができ、エンベロープキーを、エンベロープキーを暗号化するために使用されるマスターキーのための識別子と関連して永続ストレージ内に記憶させることができる。加えて、データサービスはエンベロープキーの平文バージョンを破棄することができる。そのため、ある実施形態において、データサービスは、エンベロープキーの平文バージョンを破棄した後は、もはや暗号文を復号することができなくなる。
【0032】
代替の実施形態において、暗号操作は平文を暗号化することに関与できる。例えば、暗号サービスは平文を暗号化し、暗号文をデータサービスフロントエンド記憶システムに提供する。データサービスフロントエンドは次いで、その操作に従ってその暗号文を永続記憶のためにデータサービスバックエンド記憶システムに提供し得る。他の情報もまた、データサービスフロントエンドからデータサービスバックエンド記憶システムへ送信され得る。例えば、平文を暗号化して暗号文を生成するために使用されるキーの識別子が、記憶のため暗号文とともにデータサービスバックエンド記憶システムによって提供され得る。ユーザ及び/またはユーザの組織を識別するメタデータなど、他の情報もまた提供され得る。
【0033】
本明細書に記載されるすべての環境と同様に、多くの変形が本開示の範囲内であると見なされる。例えば、環境300の様々な構成要素間の情報の流れは、示されるものと異なる場合がある。例えば、中間構成要素を介した1つの構成要素から別の構成要素への情報の流れ(例えば、認証サービスから暗号サービスへのデータ、及び/または暗号サービスからデータサービスバックエンド記憶システムへのデータ)は、その送信先に直接的に、及び/または環境300の他の中間構成要素(図中に含まれるとは限らない)を介して提供され得る。別の例として、PUT要求(及び、以下、GET要求)が、例示の目的のために提供される。しかしながら、記載される操作を実行するための任意の好適な要求が使用され得る。
【0034】
図4は、ある実施形態に従ってデータ記憶サービス内にデータを記憶するために使用され得るプロセス400の例示的な例を示す。プロセス400は、例えば、図3に例示されるデータサービスフロントエンドによって実行され得る。プロセス400の一部またはすべて(あるいは、本明細書に記載される任意の他のプロセス、またはそれらの変形及び/もしくは組み合わせ)は、実行可能な命令で構成される1つ以上のコンピュータシステムの制御下で実行され得、及び1つ以上のプロセッサ上で、ハードウェアによって、またはその組み合わせによって、まとめて実行するコード(例えば、実行可能な命令、1つ以上のコンピュータプログラム、または1つ以上のアプリケーション)として実装され得る。コードは、コンピュータ可読記憶媒体上に、例えば、1つ以上のプロセッサによって実行可能な複数の命令を含むコンピュータプログラムの形態で記憶され得る。コンピュータ可読記憶媒体は、非一時的であり得る。
【0035】
図4に例示されるように、プロセス400は、PUT要求を受信すること402を含む。PUT要求は、ネットワークを介して電子的に受信され得、かつPUT要求の電子署名などの、認証に必要とされる情報など、要求に関連付けられる情報を含み得る。PUT要求を受信したことに応じて、プロセス400は、認証要求を提出すること404を含み得る。例えば、プロセス400内で実行されるシステムは、(例えば、適切に構成されたAPIコールを介して)認証要求を、図3と関連して上に記載されるような別個の認証サービスに提出し得る。同様に、独自認証を実行するデータサービスフロントエンドは、認証要求をデータサービスフロントエンドによって実装される認証モジュールに提出し得る。一般的に、認証要求は、様々な実施形態に従う任意の好適な様態で提出され得る。
【0036】
認証要求が提出されると、認証要求が提出404されたエンティティによって認証応答が受信される406。例えば、図3を参照すると、認証サービスは、応答を他のサービスによる使用のための認証の証明を含むデータサービスフロントエンドに提供し得る。認証が成功したかどうかを示すものなど、他の情報もまた送信され得る。要求が真正であるかどうかの決定がなされ得る408。要求の真正性は、認証サービスなどのエンティティ、またはそのようなチェックをまとめて実行するエンティティの組み合わせなどによってチェックされる1つ以上の要因に従属し得る。真正性は、例えば、要求が必須の有効な証明書(例えば、チェックするエンティティによって共有される秘密キーによって生成される電子署名)を提供すること、及び/またはポリシーが、要求が遂行されることを許可することを必要とし得る。認証要求を提出し404、認証応答を受信するシステムの観点から、真正性は受信した認証応答に従属し得る。したがって、ある実施形態において、要求が真正であるかどうかの決定408は、受信した認証応答に少なくとも部分的に基づいて実行され得る。例えば、認証が真正でなかった場合、認証応答はそのように示し、それに従って決定408がなされ得る。同様に、応答は、要求が真正でなかった場合に含まれる情報を含まないことなどによって、認証要求が真正であることを暗黙的に示し得る。PUT要求が真正でないと決定される408場合、PUT要求は拒否410され得る。PUT要求の拒否は、任意の好適な様態で実行され得、かつプロセス400が実行されている様々な実施形態に依存し得る。例えば、PUT要求を拒否すること410は、PUT要求を提出したユーザにメッセージを送信することを含み得る。そのメッセージは、要求が拒否されたことを示し得る。要求を拒否することはまた、電子署名が正しくない、またはPUT要求が真正でない、もしくは承認されていないという結果となった任意の問題の解決方法を決定するために使用され得る他の理由など、要求が拒否された理由についての情報を提供することも含み得る。
【0037】
PUT要求が真正であり、かつ承認されていると決定される場合408、ある実施形態において、プロセス400は、平文の暗号化という結果をもたらす1つ以上の暗号操作を実行すること412を含む。例えば、要求(例えば、適切に構成されたAPIコール)が、暗号サービスに提出され、1つ以上の暗号操作を実行するために使用されるキーが提供される。暗号サービスに提供される要求は、PUT要求が真正であるという証明とともに提供され得るため、暗号サービスは、暗号操作(例えば、平文を暗号化して暗号文を提供すること、または平文を暗号化するために使用することができるエンベロープキーを生成すること)を実行するかどうか独立して決定することができる。しかしながら、様々な実施形態において、認証証明が暗号サービスに提供されない場合があり、例えば、暗号サービスは、それが受信する要求に従って操作してもよい。例えば、暗号サービスがデータサービスフロントエンドから要求を受信する場合、暗号サービスは、データサービスフロントエンドがすでに独立してその要求の認証を検証したという事実に頼り得る。そのような実施形態及び他の実施形態において、データサービスフロントエンドは、セキュリティの追加の層を提供するために、暗号サービスを用いて自身を認証し得る。暗号サービスは、キーを生成し、または別の様式で獲得し、獲得したキーを暗号化し、または別途暗号化されたキーを獲得し(例えば、メモリから)、要求に応じて、獲得したキー及び暗号化された獲得したキーを提供し得る。獲得したキーは、暗号サービスへの要求において識別されるキーを使用して暗号化され得る。獲得したキーを使用して平文を暗号化し得、平文を暗号化した後、獲得したキーは破棄され得る(例えば、取消不能の形でメモリから削除される)。代替の実施形態において、プロセス400を実行するシステムは、1つ以上の暗号操作を実行するために使用されるキーを生成あるいは別の様式で獲得し得、獲得したキーを暗号化のために暗号サービスに提供し得る。
【0038】
いくつかの実施形態において、1つ以上の暗号操作を実行することは、暗号文が生成されるという結果をもたらし得る。1つ以上の暗号操作の結果として生成される暗号文は、その後に起こり得る取得のために記憶され得る414。上に述べたように、暗号文の記憶は、その後の暗号文の復号を可能にする追加情報の記憶を含み得る。例えば、暗号文は、平文を暗号文に暗号化するために使用されるキーの識別子とともに記憶され得るため、識別子を有するキーは、暗号文を復号して平文を獲得するために後に使用され得る。暗号文の記憶もまた、任意の好適の様態で実行され得る。例えば、暗号文の記憶は、上記のように、データサービスバックエンド記憶システムによって実行され得る。
【0039】
図5は、したがって、環境500の例示的な例、及び平文がどのように獲得され得るかを例示する情報の流れを示す。この例における環境500は、認証サービス、暗号サービス、データサービスフロントエンド、及びデータサービスバックエンド記憶システムを含む。認証サービス、暗号サービス、データサービスフロントエンド、及びデータサービスバックエンド記憶システムは、上記のようなシステムであり得る。図5に例示されるように、データサービスフロントエンドは、ユーザからGET要求を受信して、代わりに平文を提供するように構成される。これをするためには、データサービスフロントエンドはまた、認証要求を認証サービスに提出するようにも構成され得、認証サービス自体が、適切な場合、データサービスフロントエンドに認証証明を提供するように構成され得る。データサービスフロントエンドはまた、暗号サービスに要求を送り、暗号サービスにデータの復号に関する1つ以上の暗号操作の実行をさせるようにも構成され得る。エンベロープキーが使用される実施形態において、データサービスは、要求(例えば、APIコール)を、暗号化されたエンベロープキー(または暗号化されたエンベロープキーのための識別子)認証証明、及び暗号サービスに対するエンベロープキーを暗号化するために使用されるマスターキーの識別子を含むまたは指定する暗号サービスに提出することができる。暗号サービスは、認証証明が操作を許可するのに十分であるかどうかを決定することができ、認証証明が十分であれば、エンベロープキーを復号する。復号されたエンベロープキーをデータサービスに送り返すことができ、データサービスはそのキーを使用して暗号化された平文を復号することができる。データサービスは次いで、復号された平文キーを破棄することができる。
【0040】
代替の実施形態において、データサービスフロントエンドは、受信した認証証明を暗号サービスが復号する暗号文とともに暗号サービスに提供するように構成され得る。暗号サービスは、それに応じて、認証証明が暗号文の復号を許可するのに十分であるかどうかを決定し、認証証明が十分であれば、適切なキー(データサービスフロントエンドによって暗号サービスに対して識別され得る)を使用して暗号文を復号し、復号された暗号文(平文)をデータサービスフロントエンドに提供するように構成され得る。暗号サービスに暗号文を提供するため、データサービスフロントエンドは、データサービスバックエンド記憶システムから暗号文を獲得する(例えば、適切に構成されたAPIコールを介して)ように構成され得る。
【0041】
図6は、様々な実施形態に従って平文を獲得するために使用され得るプロセス600の例示的な例を示す。プロセス600は、例えば、図5と関連して上に例示されるデータサービスフロントエンドシステム(データサービスフロントエンド)によって実行され得るが、プロセス600及びその変形は、任意の好適なシステムによって実行され得る。ある実施形態において、プロセス600は、GET要求(または他の適切な要求)をユーザから受信すること602を含む。GET要求の受信は、他の種類の要求と関連して上に記載されるように実行され得る。GET要求の受信602の際、認証要求が認証サービスに、または上記のように任意の様態で提出され得る604。認証応答が、それに応じて受信され得る。受信した認証応答に少なくとも部分的に基づいて、GET要求が真正であるかどうかの決定がなされ得る608。GET要求が真正でないと決定される場合608、プロセス600は、上記のように、様々な実施形態に従って様々な様態で実行され得る要求を拒否すること610を含み得る。
【0042】
GET要求が真正であると決定608される場合、プロセス600は記憶から暗号文を取得することを含み得る。記憶から暗号文を取得すること612は、任意の好適な様態で実行され得る。例えば、図5と関連して上に記載される環境500を参照すると、データサービスフロントエンドは、暗号文のための要求をデータサービスバックエンド記憶システムに提出し得、それに応じて暗号文を受信し得る。一般的に、暗号文は、任意の好適な様態で記憶から獲得され得る。暗号文の受信の際、プロセス600は、暗号文の復号に関連した1つ以上の操作を実行すること614を含み得る。例えば、ある実施形態において、データ記憶サービスは、暗号文の復号に関連した1つ以上の暗号操作を実行する614ために要求を暗号サービスに送り得る。1つの構成例において、データサービスは、暗号サービスに、暗号化されたエンベロープキー(または、暗号化されたエンベロープキーの識別子)認証証明、及び暗号サービスに対するエンベロープキーを暗号化するために使用されるマスターキーの識別子を含むAPIコールを送ることができる。暗号サービスは、認証証明が操作を許可するのに十分であるかどうかを決定することができ、認証証明が十分であれば、エンベロープキーを復号する。復号されたエンベロープキーをデータサービスに送り返すことができ、データサービスはそのキーを使用して暗号化された平文を復号することができる。
【0043】
別の構成において、暗号文は、図5と関連して上に記載される暗号サービスなどの暗号サービスに提供され得る。暗号文を復号するかどうかを決定するために暗号サービスが使用することができる認証の証明など、他の情報もまた、暗号サービスに提供され得る。加えて、いくつかの実施形態において、暗号文を復号するために暗号サービスによって使用されるキーの識別子が、暗号サービスに提供され得る。しかしながら、他の実施形態において、そのキーは暗号サービスに暗黙的に示され得る。例えば、暗号サービスは、暗号サービスに対して示される顧客と関連付けられるデフォルトキーを使用し得る。一般的に、暗号サービスが暗号文を復号するためにどのキーを使用するか決定することができる任意の様態が使用され得る。
【0044】
図6に例示されるように、暗号文が復号された後、プロセス600は、GET要求に応答を提供すること616を含み得る。GET要求に応答を提供することは、様々な実施形態に従って様々な様態で実行され得る。例えば、GET要求に応答を提供することは、平文を提供することを含み得る。他の実施形態において、平文は、後にGET要求に応じて提供される他の暗号化された情報を復号するために使用されるキーであり得る。一般的に、本開示の特定の実施形態における平文の役割に依存して、GET要求に応答を提供することは、様々な方法で実行され得る。
【0045】
述べたように、本開示の様々な実施形態は、データが様々な方法でデータ記憶サービスによって記憶されることを可能にする。図7は、そのような実施形態に従う情報の流れを示す矢印とともに環境700の例示的な例を示す。図7に例示されるように、環境700は、上記のように、認証サービス、暗号サービス、データサービスフロントエンド、及びデータサービスバックエンド記憶システムを含む。この特定の例において、データサービスフロントエンドは、様々なユーザからPUT要求を受信するように構成されるコンピュータシステムである。PUT要求は、データサービスバックエンド記憶システムによって記憶されるデータオブジェクトを含み得る、または指定し得る。PUT要求はまた、データオブジェクトを暗号化するために使用されるキーのためのキー識別子を指定し得る。データサービスフロントエンドはまた、上記のように、認証証明をキー及びキー識別子を受信するために操作可能な暗号サービスに提供し、それに応じてキー識別子によって識別されるキーによって暗号化されるキーを提供するために、認証サービスと対話するようにも構成され得る。データサービスフロントエンドは次いで、データサービスバックエンド記憶システム内の記憶をもたらし得る。記憶され得るデータは、キーによって暗号化されるデータオブジェクトを含み得る。記憶され得るデータはまた、キー識別子によって識別されるキーによって暗号化されるキーも含み得る。本明細書内の他の部分で議論したように、暗号化されたデータオブジェクト及び暗号化されたキーは、異なるサービス内に記憶され得る。
【0046】
図7に例示されるように、データサービスフロントエンドは、暗号化された情報を記憶のためにデータサービスバックエンド記憶システムに提供するように構成される。この例において、データサービスフロントエンドは、キーの下で暗号化されるデータオブジェクト、及びKeyIDを有する別のキーの下で暗号化されるキーを提供するように構成される。例示の目的のため、暗号化を表すために中括弧表記が使用されることに留意されたい。具体的には、中括弧内の情報は、下付き文字で指定されるキーの下で暗号化される情報である。例えば、{Data Object}Keyは、データ「Data Object」が「Key」というキーの下で暗号化されることを表す。キー識別子もまた、この中括弧表記を使用して下付き文字で現れ得る。キー識別子が下付き文字で現れるとき、中括弧内の情報は、そのキー識別子によって識別されるキーの下で暗号化される。例えば、{Data Object}KeyIDは、データオブジェクト「Data Object」が、キー識別子「KeyID」によって識別されるキーの下で暗号化されることを表す。同様に、{Key}KeyIDは、キー「Key」が識別子「KeyID」によって識別されるキーの下で暗号化されることを表す。言い換えると、本開示は、キー及びキー識別子の双方を下付き文字で使用し、下付き文字の意味は文脈から明白であるべきである。暗号文は、関連した復号キーのアイデンティティを決定するために使用可能な追加のメタデータを含み得る。
【0047】
図8は、図7と関連して上に記載されるデータサービスバックエンド記憶システムなどのデータ記憶システム内にデータオブジェクトを記憶するために実行され得るプロセス800の例示的な例を示す。プロセス800は、図7と関連して上に記載されるデータサービスフロントエンドシステムによってなど、任意の好適なシステムによって実行され得る。ある実施形態において、プロセス800は、データオブジェクトのPUT要求を受信すること802を含む。データオブジェクトのPUT要求を受信することは、上記のように、任意の好適な様態で実行され得る。データオブジェクトを要求と関連して受信することができること、または別のサービスから受信し得ることに留意されたい。例えば、要求は、識別子を使用して別のサービスから獲得され得るデータオブジェクトのための識別子を含み得る。上記の他のプロセスと同様、ある実施形態におけるプロセス800は、認証要求を提出すること804、及び認証応答を受信すること806を含む。受信された認証応答806は、PUT要求が真正な要求であるかどうかを決定する808ために使用され得る。PUT要求が真正でないと決定される場合808、プロセス800は、上記のように要求を拒否すること810を含み得る。PUT要求が真正であると決定される場合808、プロセス800は、エンベロープキーを暗号化するために使用されるマスターキーのためのkeyIDなどのキー識別子(KeyID)を獲得すること812を含み得る。KeyIDを獲得すること812は、任意の好適な様態で実行され得、KeyIDが獲得される様態は、様々な実施形態に従って異なり得る。例えば、図7に例示されるように、PUT要求は、KeyIDを指定し得る。別の例として、ユーザのアイデンティティ、または別の様式でユーザと関連付けられるアイデンティティが、識別子またはデフォルトキーを獲得するために使用され得る。別の例として、暗号文は関連したキーIDを示すものを提供し得る。さらに別の例として、1つ以上のポリシー決定は、どのキー識別子を獲得するか決定するために使用され得る。
【0048】
ある実施形態において、プロセス800はまた、エンベロープキーなどのキーを生成すること814も含む。キーの生成は、任意の好適な様態で、例えば、暗号サービスまたは暗号サービスから暗号化操作を要求するサービス(例えば、データ記憶サービス)によって実行され得る。例えば、キーは、キー導出関数への適切な入力を使用したキー導出関数を使用して生成され得る。キー導出関数の例は、IEEE Std 1363 2000で定義されるKDF1、ANSI X9.42で定義されるキー導出関数、及びRFC 5869で指定されるHMAC-Based Extract-and-Expand Key Derivation Function(HKDF)などのHMACベースのキー導出関数を含む。別の例として、キーは、乱数もしくは擬似乱数発生器、ハードウェアエントロピーソース、またはNational Institute of Standards and Technology Special Publication(NIST SP)800-90Aによって指定されるような確定論的ランダムビット生成器によって生成され得る。図8は、キーを生成すること814を含むプロセス800を示す一方、キーは、記憶からの取得によるなど他の方法で獲得され得ることに留意されたい。言い換えると、キーは予め生成されていてもよい。
【0049】
図8に例示されるプロセス800を続けると、ある実施形態において、プロセス800は、データオブジェクトを暗号化するために生成されたキーを使用すること816を含む。例えば、暗号サービスがキーを生成する実施形態において、暗号サービスは、キー、KeyID、及びキーの暗号化されたコピーをデータサービスに提供することができる。例えば、図7を参照すると、データサービスフロントエンドは、エンベロープキー、及び暗号サービスからのエンベロープキーを暗号化するために使用されるマスターキーのためのKeyIDを、認証証明などの任意の他の関連情報とともに受信し得る。暗号化キーの平文コピーは次いで、データオブジェクトを暗号化するために使用され得る。暗号化キーの平文コピーを破棄することができ、暗号化されたデータオブジェクトならびに暗号化されたキーは次いで、記憶され得る818。例えば、図7を参照すると、データサービスフロントエンドは、暗号化されたデータオブジェクト及び暗号化されたキーを、記憶のためにデータサービスバックエンド記憶システムに送信し得る。該サービスがキーを生成する構成において、該サービスは、キー及びKeyIDを暗号サービスに提供することができる。例えば、データサービスフロントエンドは、エンベロープキー及びエンベロープキーを暗号化するために使用されるマスターキーのためのKeyIDを、認証証明などの任意の関連情報とともに暗号サービスに送り得る。暗号化キーの平文コピーは次いで、データオブジェクトを暗号化するために使用され得る。サービスは、暗号化キーの平文コピーを破棄することができ、暗号化されたデータオブジェクトならびに暗号化されたキーは次いで、記憶され得る。例えば、図7を参照すると、データサービスフロントエンドは、暗号化されたデータオブジェクト及び暗号化されたキーを、記憶のためにデータサービスバックエンド記憶システムに送信し得る。
【0050】
暗号化されたデータオブジェクト及び暗号化されたエンベロープキーは、キーの平文バージョンなしで記憶され得、すなわち、平文キーは、データサービスバックエンド記憶システム及び1つ以上の他のシステムへのアクセスが不可能な場合がある。その下でデータオブジェクトが暗号化されるキー(例えば、マスターキー)は、任意の好適な様態でアクセス不可能にされ得る。いくつかの実施形態において、これは、暗号サービスのみがアクセス可能なメモリにそれを記憶することによって達成される。いくつかの他の実施形態において、これは、ハードウェアまたは他のセキュリティモジュール内に、または別の様式でハードウェアまたは他のセキュリティモジュールの保護下で、マスターキーを記憶することによって達成することができる。いくつかの実施形態において、平文エンベロープキーを記憶するメモリ位置(例えば、データサービスのメモリ)は、上書きされることを許可され得るか、キーを記憶するメモリ位置は、データサービスフロントエンドにはキーへのアクセスを不可能にするために意図的に上書きされ得る。別の例として、平文エンベロープキーは、最終的にはキーを記憶することをやめる揮発性メモリ内に維持され得る。この様態において、エンベロープキーは、KeyIDによって識別されるキーを使用して復号される場合、または別の様式で、KeyIDによって識別されるキーなしでキーを解読することによってなど、計算的に実行不可能であり得る、不正な様態で獲得される場合にのみアクセス可能である。言い換えると、データオブジェクトが暗号化されるキーへの承認されたアクセスのためには、KeyIDによって識別されるキーが必要とされる。このように、データオブジェクトを復号することは、キーへのアクセスを必要とし、そのキーはKeyIDによって識別されるキーを使用した復号によって、または計算的に実現可能ではない他の方法によってのみ獲得可能であるため、図7のデータサービスバックエンド記憶システムが侵害される場合、そのような侵害は、暗号化されていないデータオブジェクトへのアクセスを提供しない。
【0051】
述べられたように、本開示の様々な実施形態は、ユーザが、データオブジェクトを記憶すること、及びそれらを安全な様態で取得することの双方を可能にする。図9は、したがって、記憶からデータオブジェクトを獲得するために使用され得る環境900の例示的な例を示す。図9に例示されるように、環境900は、認証サービス、暗号サービス、データサービスフロントエンドシステム、及びデータサービスバックエンド記憶システムを含む。認証サービス、暗号サービス、データサービスフロントエンド、及びデータサービスバックエンド記憶システムは、上記のようなコンピュータシステムであり得る。図9に例示されるように、データサービスフロントエンドシステムは、データオブジェクト要求を受信し、それに応じてデータオブジェクトを提供するように構成される。呼応してデータオブジェクトを提供するために、この実施形態におけるデータ記憶フロントエンドシステムは、図9に例示されるように、認証サービス、暗号サービス、及びデータサービスバックエンド記憶システムと対話するように構成される。例えば、様々な実施形態において、データサービスフロントエンドシステムは、認証サービスに認証要求を提出し、その要求に応じて認証証明を受信するように構成される。別の例として、データサービスフロントエンドは、KeyIDによって識別されるキーによって暗号化されるキー及び認証証明を暗号サービスに提供するように構成され、暗号サービスは、少なくとも部分的に認証証明に基づいてキーを提供するかどうか決定するために操作可能であり、キーを提供することが決定されると、データサービスフロントエンドにキーを提供する。データサービスフロントエンドはまた、KeyIDなどの他の情報を暗号サービスに提供するようにも構成され得る。しかし、いくつかの実施形態において、KeyIDは、暗号サービスに提供される他の情報との関連によってなど、暗黙的に暗号サービスに示され得る。いくつかの実施形態において、ユーザは、データサービスフロントエンドへ要求を提出することに関連して、KeyIDをデータサービスフロントエンドに提供することにも留意されたい。また、図9に例示されるように、ある実施形態におけるデータサービスフロントエンドは、データサービスバックエンド記憶システムからのデータオブジェクトを要求し、それに応じて、キーによって暗号化されるデータオブジェクト、及びKeyIDによって識別されるキーによって暗号化されるキーを受信するように構成される。いくつかの実施形態において、暗号サービスは、指定されたKeyIDと関連付けられるキーを使用して生成されていない暗号文の復号を実行することを拒否するように操作可能であり得る。
【0052】
データサービスフロントエンドは、ある実施形態において、暗号サービスから受信されるキーを使用してデータオブジェクトを復号し、その復号されたデータオブジェクトをユーザに提供するように構成される。図10は、したがって、様々な実施形態に従って復号されたオブジェクトを提供するために使用され得るプロセス1000の例示的な例を示す。プロセス1000は、図9と関連して記載されるようなデータサービスフロントエンドシステムなど、任意の好適なシステムによって実行され得る。ある実施形態において、プロセス1000は、データオブジェクトのGET要求を受信すること1002を含む。データオブジェクトのGET要求を受信することは、他の種類の要求と関連して上に記載されるように任意の好適な様態で実行され得る。例えば、データオブジェクトのGET要求は、要求を認証するために使用される情報、及び/または他の情報を含み得る。プロセス1000は、したがって、ある実施形態において、本明細書に記載される他のプロセスと同様、認証要求を認証システムに提出すること1004、及び認証応答を受信すること1006を含む。認証要求を提出すること、及び認証応答を受信することは、上記のように、任意の好適な様態で実行され得る。認証応答は、GET要求が真正であるかどうかを決定すること1008に使用され得る。GET要求が真正でないと決定される1008場合、ある実施形態におけるプロセス1000は、要求を拒否すること1010を含む。しかしながら、GET要求が真正であると決定される1008場合、ある実施形態におけるプロセス1000は、暗号化されたデータオブジェクト及び暗号化されたキーを記憶から取得すること1012を含む。例えば、データサービスフロントエンドシステムは、暗号化されたデータオブジェクト及び暗号化されたキーを、図9に関連して上に例示されるデータサービスバックエンド記憶システムから獲得し得る。
【0053】
ある実施形態において、プロセス1000は、暗号化されたエンベロープキーを暗号サービスに提供すること1014を含む。暗号化されたエンベロープキーを暗号サービスに提供すること1014は、任意の好適な様態で実行され得、かつ暗号サービスが暗号化されたキーを復号するかどうかを決定することを可能にする認証証明など、他の情報とともに提供され得る。加えて、暗号化されたエンベロープキーを暗号サービスに提供すること1014は、暗号サービスが暗号サービスによって管理される複数のキーの中から識別子によって識別されるキーを選択することを可能にするため、暗号化されたエンベロープキーの承認された復号に必要とされるキーの識別子を提供することを含み得る。上に述べたように、しかしながら、キーは暗黙的に識別され得る。暗号サービスは、したがって、適切なキーを選択して、暗号化されたキーを復号し得る。したがって、ある実施形態において、プロセス1000は、復号されたエンベロープキーを暗号サービスから受信すること1016を含む。例えば、暗号サービスが、認証証明は有効である、及び/または暗号化の復号は任意の適用可能なポリシーに従って許容可能であると決定する場合、暗号サービスは、復号されたキーを、データオブジェクトを復号しようとするシステムに提供し得る。データオブジェクトは次いで、復号されたエンベロープキーを使用して復号され得る1018。復号されたデータオブジェクトは次いで、ユーザまたはGET要求を提出した他のシステムなど、要求者に提供され得る1020。
【0054】
多くの場合、ユーザ(すなわち、一般的には暗号サービスを利用するデバイス)が暗号サービスと直接対話することが望ましい。図11は、したがって、暗号サービスへの直接的なユーザアクセスを可能にする環境1100の例示的な例を示す。環境1100では、認証サービス、データサービスフロントエンド、及びデータサービスバックエンド記憶システムが含まれる。認証サービス、データサービスフロントエンド、及びデータサービスバックエンド記憶システムは、上に記載されるようであり得る。例えば、データサービスフロントエンドは、好適なネットワークを介して、図11に例示されるようにユーザからの要求を受信し、それに応答するように構成され得る。ネットワークを介してユーザからの要求に応答することの一部として、データサービスフロントエンドはまた、ユーザ要求が真正であるかどうかを決定し、及び/またはその要求に対してポリシーを施行するために、認証サービスと対話するようにも構成され得る。データサービスフロントエンドはまた、ユーザ要求を遂行することの一部としてデータサービスバックエンド記憶システムと対話するようにも構成され得る。ユーザ要求は、例えば、バックエンド記憶システム内にデータを記憶するためのPUT要求、及びデータサービスバックエンド記憶システムからデータを取得するためのGET要求を含み得る。上のように、データサービスバックエンド記憶システム内に記憶されるデータを削除するための要求、データサービスバックエンド記憶システム内に記憶されるデータを更新するための要求等の、他の要求もまた、様々な実施形態に従って使用され得る。
【0055】
図11の特定の例では、環境1100において、暗号サービスは、暗号サービスフロントエンド及びデータサービスバックエンドを含む。データサービスフロントエンドと同様に、暗号サービスフロントエンドは、ネットワークを介してユーザからの要求を受信し、それに応答するように構成される。暗号サービスフロントエンドはまた、認証サービスと対話してユーザ要求が真正であるかどうかを決定するように構成される。ユーザ要求が真正であるかどうか決定することは、上記のような簡便な様態で実行され得る。暗号サービスフロントエンド及びデータサービスフロントエンドは、同じ認証サービスと対話する一方、暗号サービスフロントエンド及びデータサービスフロントエンドは、異なる認証サービスと対話し得ることに留意されたい。さらに、暗号サービスフロントエンドは、ユーザ要求に応答するときにポリシーを施行するように構成され得る。
【0056】
暗号サービスフロントエンドは、ある実施形態において、暗号サービスバックエンドと対話するように構成され得る。暗号サービスバックエンドは、暗号サービスフロントエンドから受信される命令に従って、暗号操作を実行するように構成される。暗号操作は、暗号化、復号、及びハッシュ計算等を含む。環境1100は、例えば、暗号化されたデータをデータサービスバックエンド記憶システム内に記憶することができるように、平文を暗号サービスによって暗号化させるためにユーザによって使用され得る。環境1100のそのような使用の例は以下に提供される。加えて、暗号サービス例の詳細例もまた以下に提供される。
【0057】
データは、上に記載されるような任意の好適な様態でデータサービスバックエンド記憶システム内に記憶され得る。例えば、暗号化されたデータを上に記載されるバックエンド記憶システム内に記憶するための技術が、環境1100で使用され得る。例えば、例示されていないが、データサービスフロントエンドは、暗号サービスバックエンドにデータを暗号化させ、次いでそれをデータサービスバックエンド記憶システム内に記憶させるために、暗号サービスフロントエンドと通信し得る。暗号化されたデータは、データオブジェクト、及び/またはデータオブジェクトを暗号化するために使用された暗号化されたキーであり得る。環境1100において、データは、データサービスバックエンド記憶システム内に他の方法でも格納され得る。例えば、ユーザは、暗号サービスによって暗号化される平文を提供し得、かつそれに応じて暗号文を受信し得る。ユーザは次いで、データサービスバックエンド記憶システム内に暗号文を記憶するように要求するために、対話し得るか、データサービスフロントエンドに要求を提出し得る。データサービスフロントエンドは、この例において、任意の様態で暗号文を記憶し得る。例えば、データサービスフロントエンド及びバックエンド記憶システムは、データが暗号化されるかどうかに無関係であるように構成され得る。
【0058】
加えて、本明細書に例示されるすべての環境と同様に、追加のフロントエンドシステムが、システム間のアクションを協調させるために、ユーザとデータサービスフロントエンドと暗号サービスフロントエンドとおそらくは他のフロントエンドシステムとの間に論理的に配置され得る。例えば、いくつかの実施形態において、ユーザは、ユーザの観点からの操作がより簡便であるように、それ自体が暗号サービスフロントエンド及びデータサービスフロントエンドと対話するフロントエンドシステムと対話し得る。例えば、ユーザは、データオブジェクトを暗号化し、かつ記憶するように要求し得、フロントエンドシステムは、暗号サービスフロントエンド及びデータサービスフロントエンドとの適切な対話によって、その要求に応答する。しかしながら、ユーザの観点からは、そのようなことは、単一の要求によって実行され得る。他の変形もまた、本開示の範囲内である。
【0059】
図12は、本開示の様々な実施形態を実装するために使用され得る環境1200の例示的な例を示す。図12において、環境1200は、ユーザが暗号文をデータサービスバックエンド記憶システム内に記憶することを可能にするように構成される。したがって、図12に例示されるように、環境1200は、データサービスフロントエンド、データサービスバックエンド記憶システム、認証サービス、暗号サービスフロントエンド、及び暗号サービスバックエンドを含む。データサービスバックエンド記憶システム、データサービスフロントエンド、認証サービス、暗号サービスフロントエンド、及び暗号サービスバックエンドは、図11と関連して上に記載されるようなシステムであり得る。例えば、図12に例示されるように、データサービスフロントエンドは、ユーザ要求を受信し、かつそれに応答するように構成され、また、ユーザ要求にポリシーを施行するようにも構成され得る。データサービスフロントエンドは、要求への返答の一部として、認証要求を認証サービスに提出し、それに応じて認証証明を受信するように構成され得る。認証が成功すると、データサービスフロントエンドは、後にユーザに提供され得る、暗号化されたデータオブジェクト、及びおそらくは暗号化されていないデータオブジェクトをデータサービスバックエンド記憶システムから獲得するために、データサービスバックエンド記憶システムと対話するようにさらに構成され得る。
【0060】
図12に例示されるように、暗号サービスフロントエンドもまた、認証要求を認証サービスに提供し、それに応じて認証証明を受信するように構成される。認証証明は、暗号サービスバックエンドからサービスを獲得するために使用され得る。例えば、暗号サービスフロントエンドは、暗号文を認証証明とともに暗号サービスバックエンドに提供するように構成され得、暗号サービスバックエンドは、暗号文を復号し、代わりに暗号文を提供するように構成され得る。図12に例示されるように、暗号文は暗号化されたキーであり得、暗号サービスバックエンドは、その暗号化されたキーを復号し、平文キーであるその復号されたキーを、平文キーをユーザに提供するようにさらに構成される暗号サービスフロントエンドに提供し得る。ユーザは次いで、そのキーを使用してデータサービスフロントエンドから受信される暗号化されたデータオブジェクトを復号し得るか、ユーザのドメイン内(例えば、ユーザによって操作または制御されるデータセンターもしくはコンピュータシステム内)に記憶される暗号化されたデータオブジェクトを復号し得る。この例において、ユーザは、暗号化されたキーをデータサービスフロントエンドから獲得している場合がある。例えば、ユーザは、データオブジェクト及び/またはデータオブジェクトを暗号化するために使用されるキーのために要求をデータサービスフロントエンドに提出している場合がある。図11では単一の要求として例示されているが、データオブジェクト及びキーの双方のために別個の要求が出されてもよい。図11に例示されるように、データサービスフロントエンドは、暗号化されたデータオブジェクト及び暗号化されたキーをデータサービスバックエンド記憶システムから獲得し、その暗号化されたデータオブジェクト及び暗号化されたキーをユーザに提供し得る。
【0061】
本明細書に例示されるすべての環境と同様に、変形は、本開示の範囲内であると見なされる。例えば、図12は、キーの元で暗号化されるデータオブジェクト、及びユーザに提供されているキー識別子によって識別される別のキーによって暗号化されるキーを示す。暗号化のさらなるレベルもまた使用され得る。例えば、データオブジェクトは、ユーザのみがアクセス可能な(及び/または、環境1200の他の構成要素によってアクセスが不可能な)キーの下で暗号化され得る。データオブジェクトを暗号化するために使用されるキーもまた、ユーザのみがアクセス可能なキーの下で暗号化され得る。この例において、環境1200の構成要素への不正アクセス(ユーザ不在)は、ユーザのキーへのアクセスが依然として承認された復号を必要とするため、データオブジェクトの暗号化されていないコンテンツへのアクセスを依然として提供しない。
【0062】
別の例として、図12に例示される環境1200において、データサービスフロントエンド及びデータサービスバックエンド記憶システムは、暗号化されたデータを復号するために必要とされるキーへのアクセスを有しないため、データサービスバックエンド記憶システムによって記憶される平文データへのアクセスを有しない。しかしながら、いくつかの実施形態において、データサービスフロントエンド及び/またはデータサービスバックエンド記憶システムにアクセスが付与される場合がある。例えば、ある実施形態において、データサービスフロントエンドが暗号化されたデータを獲得し、その暗号化されたデータを復号し、その復号されたデータを特定の目的(例えば、インデックス作成)に使用し、次いで復号されたデータへのアクセスを削除または別の様式で損失することを可能にするため、キーへの一時的なアクセスがデータサービスフロントエンドに提供され得る。そのようなアクションは、データサービスフロントエンド及び/または暗号サービスによって施行されるポリシーによって統制され得、かつユーザからの承認を必要とし得る。
【0063】
図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要求を提出したユーザまたシステムである要求者は、他の方法で暗号化されたキーを獲得し得る。例えば、いくつかの実施形態において、ユーザは、暗号化されたキー自体をユーザの制御下にあるデータ記憶システムに記憶し得る。別の例として、1つの記憶サービスが、暗号化されたデータオブジェクトを記憶し得、別のサービスが、暗号化されたキーを記憶し得、ユーザは、暗号化されたデータオブジェクト及び暗号化されたキーをそれぞれのサービスから獲得し得る。別の例として、別のサービスまたはユーザにとっての第三者を使用して、暗号化されたキーを記憶し得、ユーザは暗号化されたキーを要求時に獲得し得る。一般的に、暗号化されたキーが提供され得る任意の方法が使用され得る。
【0064】
図13に例示されるように、プロセス1300は、データオブジェクト、及びそのデータオブジェクトを復号するために使用可能な暗号化されたキーを提供されたエンティティをもたらし得る。様々な実施形態において、暗号化されたキーは、データオブジェクトを復号するために、復号されなければならない。図14は、したがって、復号されたキーを使用して暗号化されたデータオブジェクトを復号するためにそのような復号されたキーを必要とするエンティティに、復号されたキーを提供するために使用され得るプロセス1400の例示的な例を示す。プロセス1400は、図12と関連して上に記載される暗号サービスフロントエンドシステムによってなど、任意の好適なシステムによって実行され得る。ある実施形態において、プロセス1400は、指定されたKeyIDを有する別のキーを使用してキーを復号するための復号を受信すること1402を含む。プロセス1400は、キーの復号と関連して記載されるが、プロセス1400は一般にデータの復号に適し得ることに留意されたい。復号要求は、上に記載されるような任意の好適な様態で受信され得る1402(例えば、適切に構成されたAPIコールを介して)。さらに、復号要求は、プロセス1400が実行されているコンテクストに適切な任意のエンティティによって受信され得る。例えば、復号要求は、ユーザから、または上に議論されるデータサービスフロントエンドなど別のシステムから生じ得る。復号要求はまた、復号されるデータ(例えば、キー)またはそれへの参照も含み得る。KeyIDは、任意の好適な様態でも指定され得る。例えば、いくつかの実施形態において、復号要求は、KeyID、またはKeyIDへの参照、つまりKeyIDを決定するために使用することができる情報を含む。上に記載されるように、KeyIDはまた、暗黙的にも指定され得る。例えば、KeyIDは、復号要求を提出した要求者のアイデンティティなど、利用可能なデータとの関連によって獲得され得る。例えば、KeyIDに対応するキーは、要求者または要求が提出された代理のエンティティ用のデフォルトキーであり得る。
【0065】
プロセス1400は、ある実施形態において、認証要求を提出すること1404、及び認証応答を受信すること1406を含む。認証要求を提出すること1404及び認証応答を受信すること1406は、上に記載されるような任意の好適な様態で実行され得る。さらに、上に記載されるように、受信された認証応答は、GET要求が真正であるかどうかを決定する1408ために使用され得る。GET要求が真正でないと決定される場合1408、プロセス1400は、GET要求を拒否すること1410を含み得る。GET要求を拒否すること1410は、上に記載されるような任意の好適な様態で実行され得る。しかしながら、GET要求が真正であると決定される場合1408、プロセス1400は、指定されたKeyID及び/または要求者のポリシー情報にアクセスすることを含み得る。ポリシー情報は、KeyID及び/または要求者に関する1つ以上のポリシーを含む情報を含み得る。
【0066】
ある実施形態において、アクセスされたポリシー情報は、任意の適用可能なポリシーが指定されたKeyIDを有するキーの復号を許可するかどうかを決定する1414ために使用される。ポリシーがKeyIDによって指定されるキーの復号を許可しないと決定される場合1414、プロセス1400は、上に記載されるようなGET要求を拒否すること1410を含み得る。しかしながら、ポリシーが指定されたKeyIDを有するキーの復号を許可すると決定される1414場合、プロセス1400は、KeyIDによって識別されるキーを使用してキーを復号すること1416を含み得る。KeyIDを有するキーを使用してキーが復号されると、次いでその復号されたキーは、ネットワークを介した送信によってなど、復号要求を提出した要求者(または、いくつかの実施形態において、別の承認された送信先)に提供1418され得る。
【0067】
上に議論される環境1200に例示されるように、ユーザは、暗号化されたデータオブジェクト及びデータオブジェクトを復号するためのキーを様々な方法で獲得し得る。図15は、様々な実施形態に従って平文を獲得するために使用され得るプロセス1500の例示的な例を示す。プロセス1500は、図12と関連して記載されるようなユーザによって操作及び/またはホストされているシステムによってなど、任意の好適なシステムによって実行され得る。他の好適なシステムは、提供されるリアルタイムのユーザ入力に従うとは限らないがおそらくは事前にプログラムされたプロセスに従う、ユーザの代理で操作しているシステムを含む。
【0068】
ある実施形態において、プロセス1500は、データ記憶サービスから暗号文を受信すること1502を含む。データ記憶サービスからの暗号文を要求すること1502は、上に記載されるような任意の好適な様態で実行され得る。例えば、プロセス1500を実行するシステムは、図12と関連して上に例示される環境1200内の適切に構成されたAPIコールを使用して、及び/または図13と関連して上に記載されるプロセス1300によって、暗号文を要求し得る1502。
【0069】
プロセス1500はまた、暗号文及び暗号化されたキーを受信することも含み得る。暗号文及び暗号化されたキーを受信することは、任意の好適な様態で実行され得る。例えば、暗号文及び暗号化されたキーは、データ記憶サービスからの暗号文の要求に応じて受信され得る。しかしながら、一般的に、暗号文及び暗号化されたキーは、他の好適な方法で受信され得る1504。例えば、データ記憶サービスから暗号文を受信するための要求は、非同期要求であり得、暗号文は、続いて提出される別の要求に準じて受信され得る1504。さらに、暗号文及び暗号化されたキーは、単一の応答で提供され得るか、異なる応答(同じまたは異なるシステムからであり得る)によってなど、別々に獲得され得る。別の例として、プロセス1500を実行するシステムは、暗号化されたキーをローカルまたは別の様式で記憶し得、暗号化されたキーはローカルメモリから取得され得る。
【0070】
ある実施形態において、プロセス1500は、指定されたKeyIDを有するキーを使用して、暗号化されたキーの復号を要求することを含む。KeyIDは、上に記載されるような任意の好適な様態で指定され得る。さらに、プロセス1500を実行するシステムは、任意の好適な様態でKeyIDを指定することができ得ることに留意されたい。例えば、暗号化されたキー及び/またはそれとともに提供される情報が、KeyIDを指定し得る。別の例として、プロセス1500を実行するシステムは、KeyIDの決定を可能にする情報へのローカルまたはリモートアクセスを有し得る。ローカルまたはリモートデータベースは、例えば、データオブジェクト識別子を、データオブジェクトを暗号化するために使用されるキーのキー識別子と関連付け得る。一般的に、システムがKeyIDを指定することが可能であり得る任意の様態が使用され得る。さらに、いくつかの実施形態において、KeyIDは、暗号サービスに提供される情報がKeyIDを決定するのに十分であるときなど、指定される必要がない。暗号化されたキーの復号の要求1506は、図12と関連して上に記載される環境と関連して、及び/または図14と関連して上に記載されるプロセス1400の実行によってなど、任意の好適な様態で実行され得る。
【0071】
プロセス1500は、ある実施形態において、復号されたキーを受信すること1508を含む。復号されたキーを受信すること1508は、任意の好適な様態で実行され得る。例えば、復号されたキーは、暗号化されたキーの復号の要求に応じて受信され得る。別の例として、暗号化されたキーの復号の要求は、非同期要求であり得、別の要求が復号されたキーを受信するために提出されている。一般的に、復号されたキーは、任意の好適な様態で受信され得る。さらに、1つのデバイスから別のデバイスへのすべての情報の流れと同様に、情報の受け渡しは安全なチャネルを使用して実行され得る。例えば、復号されたキーは、復号されたキーを受信するエンティティによる復号のために再び暗号化され得る。一般的に、安全な通信の任意の様態は、1つのエンティティから別のエンティティへ情報を渡すために使用され得る。
【0072】
復号されたキーが受信される1508と、プロセス1500は、復号されたキーを使用して1510暗号文を復号する1510ことを含み、それによって平文を獲得し得る。本明細書に記載されるすべてのプロセスと同様に、変形が本開示の範囲内であると見なされることに留意されたい。例えば、プロセス1500は、暗号文の要求、及び順次実行される暗号化されたキーの複合の要求を示す。しかしながら、様々なプロセスと関連して本明細書に記載される多くの操作と同様に、操作は、様々な実施形態において順次実行される必要はない。例えば、プロセス1500を実行するシステムが、暗号文の要求の前に暗号化されたキーへのアクセスを有するか、または別の様式でそうすることができる場合、システムは、暗号文を要求し得、かつ暗号化されたキーの復号を、並行で、または例示されるものとは異なる順番で要求し得る。他の変形もまた、本開示の範囲内である。
【0073】
上に記載されるように、本開示の様々な実施形態は、暗号サービスを提供することを目的とする。暗号サービスは、上に記載されるような暗号サービスシステムによって提供され得る。したがって、図16は、様々な実施形態に従う暗号サービス1600の例示的な例を示す。図16に例示されるように、及び上に記載されるように、暗号サービス1600は、論理的にフロントエンドシステム及びバックエンドシステムからなる。フロントエンドシステム及びバックエンドシステムの双方は、本明細書に記載される操作を実行するように構成される1つ以上のコンピュータシステムによって実装され得る。例えば、図16に例示されるように、暗号サービス1600のフロントエンドシステムは、要求API及びポリシー構成APIを実装する。要求APIは、ある実施形態において、暗号の要求、及び暗号サービスによって実行される他の操作のために構成されるAPIである。そのため、要求は、そのような暗号操作が暗号サービスによって実行されるように、要求APIを介してフロントエンドシステムに対して出され得る。
【0074】
要求APIは、以下の利用可能な高レベルの要求例で構成され得る:
CreateKey(KeyID)
Encrypt(KeyID、Data、[AAD])
Decrypt(KeyID、Ciphertext、[AAD])
Shred(KeyID)
ReKey(Ciphertext、OldKeyID、NewKeyID)。
【0075】
CreateKey(KeyID)要求は、ある実施形態において、暗号サービスに、要求内で識別されるKeyIDによって識別されるキーを作成させる。要求を受信すると、暗号サービスはキーを生成し、そのキーをKeyIDと関連付け得る。KeyIDの識別子は、固有の識別子であり得るが、必ずしもそうであるとは限らないことを知っておくべきである。例えば、KeyIDは、キーのファミリーを識別し得る。例えば、いくつかの実施形態において、キーローテーションが実行される。キーローテーションは、使用される暗号の実質上のクラッキングを可能にするほど十分な復号されたデータの収集を防止するためにキーを別のキーと交換することに関与し得る。暗号サービスと異なるエンティティの指示で実行される場合、CreateKey(KeyID)要求の使用は、暗号サービスに、KeyIDによって識別される古いキーと交換するために新しいキーを作成させ得る。古いキーは、そのままKeyIDによって識別され得るが、例えば、復号(古いキーを使用してすでに暗号化されたデータの)にのみ使用され得、将来の暗号化には使用され得ない。別の例として、いくつかの実施形態において、暗号サービスのユーザは、独自のキー識別子を提供するが、2つの異なる顧客が、同じ識別子を提供し得る可能性がある。そのような場合には、識別子はキーを一意的に識別し得ないか、またはキーのファミリーさえ一意的に識別し得ない。これに対処するために様々な対策が設けられ得る。例えば、アイデンティティまたは暗号サービスのユーザと関連付けられる他の情報が、適切なキーまたはキーのファミリーを識別するために使用され得る。依然として他の実施形態において、暗号サービスは、KeyIDを、ランダムに、順次に、または任意の他の方法を使用して、割り当て得る。
【0076】
KeyIDが一意的にキーを識別しないとき、適切な機能性を可能にするために様々なシステムが設けられ得ることに留意されたい。例えば、様々な実施形態において、KeyIDによって識別されるキーのファミリーは有限である。KeyIDによって識別されるキーを使用した復号操作が要求される場合、追加データ(例えば、暗号化が実行されたときのタイムスタンプ)が、使用に適切なキーを決定することを可能にし得る。いくつかの実施形態において、暗号文は、キーバージョンを示す情報を含み得る。いくつかの実施形態において、可能なあらゆるキーを使用してデータの異なる復号を提供する。キーの有限数が存在するため、適切な復号は提供されたものから選択され得る。いくつかの実施形態において、キーを用いた復号は、暗号サービスが、認証された暗号化を使用することによってなど、暗号文が少なくとも部分的にキーに基づいて生成されなかったことを検出することを可能にする様態で実行される。他の変形もまた、本開示の範囲内である。
【0077】
Encrypt(KeyID、Data、[AAD])要求は、暗号サービスに、KeyIDによって識別されるキーを使用して特定のデータを暗号化させるために使用され得る。Additional Authenticated Data(AAD)は、様々な目的で使用され得、必ずしも暗号化されないが、例えば、AADとともに含まれる、電子署名、メッセージ認証コード、または一般的に、キー付ハッシュ値によって、認証されているデータであり得る。いくつかの実施形態において、暗号文は、AADの少なくとも一部を含んで生成される。いくつかの実施形態において、AADは復号中に別々に提供される。いくつかの他の実施形態において、AADは、メタデータが渡るときにのみ復号が成功するように、少なくとも部分的に要求及びまたは他のメタデータに基づいて、復号時に生成される。いくつかの実施形態において、ポリシーは、暗号操作を特定のAADに対して実行することができるかどうかを制約し得る。プログラミング論理及び/または暗号サービスによって施行されるポリシーによるEncrypt(KeyID、Data、[AAD])要求の処理は、AADが特定の値を含むこと、及びAADが真正であること(例えば、最初の送信から改変されていない)の双方を必要とし得る。同様に、Decrypt(KeyID、Ciphertext、[AAD])要求は、暗号サービスに、KeyIDによって識別されるキーを使用して、指定された暗号文を復号させるために使用され得る。Decrypt(KeyID、Ciphertext、[AAD])要求内のAADは、上に記載されるように使用され得る。例えば、プログラミング論理及び/または暗号サービスによって施行されるポリシーによるDecrypt(KeyID、Ciphertext、[AAD])の処理は、AADが特定の値を含むこと、及びAADが真正であること(例えば、最初の送信から改変されていない)の双方を必要とし得る。
【0078】
Shred(KeyID)は、ある実施形態において、暗号サービスに、キーまたは、指定されたKeyIDによって識別されるキーのファミリーを電子的に破砕させるために使用され得る。電子的破砕は、キーをもはやアクセス不可能にすることを含み得る。例えば、Shred(KeyID)要求の使用は、暗号システムに、1つ以上のハードウェアデバイスが指定されたKeyIDによって識別される1つ以上のキー上でSecureErase操作を実行するように命令させ得る。一般的に、KeyIDによって識別されるキー(複数可)は、キーを符号化しているデータ上に他のデータ(例えば、一連のゼロもしくは1、またはランダムな文字列)を上書きすることによってなど、任意の好適な様態で電子的に破砕され得る。キー(複数可)が、キーの下で暗号化されて記憶される場合、キーを暗号化するために使用されるキーは、電子的に破砕され得、それによってキー(複数可)へのアクセスの損失を引き起こす。いくつかの実施形態において、破砕操作は、破砕されるKeyIDを示す復号操作を、将来のある決められた時点で機能させなくし得る。安全かつ永久にキー(複数可)への可能性のあるあらゆるアクセスを破壊することの他の様態が使用され得る。
【0079】
ReKey(Ciphertext、OldKeyID、NewKeyID)要求は、ある実施形態において、暗号サービスに異なるキーの下で暗号文を暗号化させるために使用され得る。暗号サービスは、ReKey(Ciphertext、OldKeyID、NewKeyID)要求を受信すると、OldKeyIDによって識別されるキーを使用して指定された暗号文を復号し得、次いでNewKeyIDによって識別されるキーを使用して復号された暗号文を暗号化し得る。NewKeyIDによって識別されるキーがまだ存在しない場合、暗号サービスは、使用するキーを生成し、上に記載されるCreate(KeyID)要求と関連して記載されるように、その生成されたキーを指定されたNewKeyIDと関連付け得る。いくつかの実施形態において、ReKey操作は、データを暗号サービスの孤立したインスタンス間で送信可能にさせるように操作可能であり得る。いくつかの実施形態において、ポリシーは、キー再設定操作が暗号文上で実行されることを許可する場合もあるが、同じ要求者が暗号文を直接復号することを許可しない場合もある。いくつかの実施形態において、ReKeyは、第1のアカウント内の第1のKeyIDによって識別されるキーから第2のアカウント内のKeyIDによって識別されるキーへ、暗号文のキー再設定することを支援する場合がある。
【0080】
同様に、フロントエンドシステムは、ある実施形態において、ユーザが、暗号操作の実行のためのポリシー、及び他のポリシー関連の操作を構成するための要求を提出することを可能にする、ポリシー構成APIを実装し得る。ポリシーは、様々な実施形態において、キー、キーのグループ、アカウント、ユーザ、及び他の論理的エンティティに関連付けられ得る。ポリシー構成APIを介して構成され得るポリシー例は、以下に提供される。ある実施形態において、暗号サービスポリシー構成APIは、以下の要求を含む。
【0081】
SetKeyPolicy(KeyID、Policy)
Suspend(KeyID、Public Key)
Reinstate(KeyID、Private Key)
【0082】
ある実施形態において、SetKeyPolicy(KeyID、Policy)要求は、暗号サービスに、KeyIDによって識別されるキー(またはキーのファミリー)上にポリシーを記憶させるために使用され得る。ポリシーは、要求された暗号操作を特定のコンテクスト内で実行できるかどうかについて決定力のある情報であり得る。ポリシーは、eXtensinble Access Control Markup Language(XACML)、Enterprise Privacy Authorization Language(EPAL)、Amazon Web Services Access Policy Language、Microsoft SecPol、または実行される暗号操作のために満たされなければならない1つ以上の条件を符号化する任意の好適な方法など、宣言的アクセス制御ポリシー言語で符号化され得る。ポリシーは、どのような操作を実行することができるか、いつ操作を実行することができるか、操作が実行されるための承認された要求をどのエンティティが作ることができるか、特定の要求が承認されるためにはどの情報が必要とされるか等を定義し得る。加えて、ポリシーは、アクセス制御リスト、ユーザと関連付けられた特権、及び/または上に挙げられる例に加えてもしくは代わりに操作ビットマスク、を使用して定義及び/または施行され得る。ポリシー例を以下に示す。
【0083】
いくつかの実施形態において、暗号サービスは、一時停止操作を、例えば、Suspend(KeyID、Public Key)APIコールを使用して支援し得る。一時停止操作は、暗号サービスの顧客が、暗号サービスの操作者によるキーの使用またはキーへのアクセスを拒否することを可能にする。これは、隠れた合法的命令、または暗号サービスの操作者がキーを使用していくつかの操作を実行させられる可能性のある他の状況について懸念している顧客にとって有用であり得る。それはまた、特定のデータをロックし、オンラインでのアクセスを不可能にすることを望む顧客にとっても有用である。いくつかの実施形態において、一時停止操作は、顧客からパブリックキーを受信すること、及び所与のKeyIDによって指定されるキーを受信したパブリックキーを用いて暗号化すること、及びパブリックキーと関連付けられたプライベートキーが、例えば、KeyIDを指定しかつプライベートキーを含むReinstate(KeyID、Private Key)APIコールを使用して、提供されない限りは、プロバイダが一時停止されたキーにアクセスできないようにするために、KeyIDによって指定されるキーを破砕することを含む場合がある。いくつかの実施形態において、一時停止操作は、指定されたKeyIDと関連付けられたキーを、暗号サービスによって管理される別のキー(即時の一時停止操作の目的で作成されるものを含むがこれに限定されるものではない)を使用して暗号化することを伴う場合がある。この操作によって生み出される暗号文は、顧客に提供することができ、暗号サービス内に保管しない。KeyIDによって識別されるオリジナルのキーを、次いで破砕することができる。暗号サービスは、提供された暗号文を受信し、一時停止キーを再インポートするように操作可能であり得る。いくつかの実施形態において、暗号文は、暗号サービスが復号されたバージョンを顧客に返すことを防止する様態で生成され得る。
【0084】
図16に例示されるように、暗号サービス1600は、いくつかの実施形態においてそれ自体が様々な構成要素を備えるバックエンドシステムを含む。例えば、この例におけるバックエンドシステムは、要求APIまたはポリシー構成APIのいずれかを介して受信される要求に従う操作を実行するように構成される暗号サービス1600のサブシステムであり得る要求処理システムを含む。例えば、要求処理構成要素は、要求APIを介して受信される要求を受信し得、ポリシー構成APIは、そのような要求が真正であり、それ故に遂行することが可能であるかどうかを決定し、その要求を遂行し得る。要求を遂行することは、例えば、暗号操作を実行すること、及び/または実行したことを含み得る。要求処理ユニットは、要求処理ユニットが、要求が真正であるかどうか決定することを可能にする認証インターフェースと対話するように構成され得る。認証インターフェースは、上に記載されるような認証システムと対話するように構成され得る。例えば、要求が要求処理ユニットによって受信されるとき、要求処理ユニットは、認証インターフェースを利用して、適切な場合に暗号操作の実行をもたらすために使用され得る認証証明を提供する認証サービスと対話し得る。
【0085】
暗号サービス1600のバックエンドシステムはまた、この例示的な例において、複数のセキュリティモジュール(暗号モジュール)及びポリシー施行モジュールも含む。セキュリティモジュールのうちの1つ以上は、ハードウェアセキュリティモジュールであり得るが、様々な実施形態において、セキュリティモジュールは、本明細書に記載される機能を有するように構成される任意の好適なコンピュータデバイスであり得る。ある実施形態における各セキュリティモジュールは、KeyIDに関連付けられた複数のキーを記憶する。各セキュリティモジュールは、暗号サービス1600の他の構成要素及び/または他のシステムの他の構成要素がアクセスできないように、キーを安全に記憶するように構成され得る。ある実施形態において、セキュリティモジュールのいくつかまたはすべては、少なくとも1つのセキュリティ基準に準拠している。例えば、いくつかの実施形態において、セキュリティモジュールはそれぞれ、FIPS Publication 140-2で概説される1つ以上のセキュリティレベルなど、FIPS Publication 140-1及び/または140-2で概説されるFederal Information Processing Standard(FIPS)に準拠して検証される。加えて、いくつかの実施形態において、各セキュリティモジュールは、Cryptographic Module Validation Program(CMVP)の下で認定される。セキュリティモジュールは、ハードウェアセキュリティモジュール(HSM)、またはHSMのいくつかまたはすべての機能を有する別のセキュリティモジュールとして実装され得る。いくつかの実施形態において、検証されたモジュールを使用して操作をブートストラップする。いくつかの実施形態において、顧客は、検証されたモジュール内に記憶され、かつ検証されたモジュールによってのみ操作されるいくつかのキー、及びソフトウェアによって操作される他のキーを構成することができる。いくつかの実施形態において、これらの様々なオプションと関係した性能または費用は異なり得る。
【0086】
セキュリティモジュールは、要求処理ユニットによって提供される命令に従って暗号操作を実行するように構成され得る。例えば、要求処理ユニットは、暗号文及びKeyIDを、KeyIDに関連付けられたキーを使用して暗号文を復号し、それに応じて平文を提供せよというセキュリティモジュールに対する命令とともに、適切なセキュリティモジュールに提供し得る。ある実施形態において、暗号サービス1600のバックエンドシステムは、キー空間を形成する複数のキーを記憶する。セキュリティモジュールの各々は、キー空間内のすべてのキーを記憶し得るが、変形は、本開示の範囲内であると見なされる。例えば、セキュリティモジュールの各々は、キー空間の部分空間を記憶し得る。セキュリティモジュールによって記憶されるキー空間の部分空間は、キーがセキュリティモジュール全体にわたって冗長して記憶されるため、重複し得る。いくつかの実施形態において、特定のキーは、指定された地理的領域内にのみ記憶され得る。いくつかの実施形態において、特定のキーは、特定の証明書またはクリアランスレベルを有する操作者のみがアクセス可能であり得る。いくつかの実施形態において、特定のキーは、データ記憶サービスのプロバイダとの契約の下で特定の第三者プロバイダによって操作されるモジュール内に記憶され得、かつそのモジュールのみとともに使用され得る。いくつかの実施形態において、セキュリティモジュールの構成的制御は、強制される追加のエンティティまたはアクションを強制する追加の管轄権のいずれかに関与することを顧客によって承認される以外に、キーの使用を強制することを求める合法的命令を必要とし得る。いくつかの実施形態において、顧客は、彼らの暗号文が記憶され、かつ彼らのキーが記憶される管轄権のための独立したオプションを提供され得る。いくつかの実施形態において、キーを記憶するセキュリティモジュールは、キーの所有者に監査情報を提供するように構成され得、該セキュリティモジュールは、監査情報の生成及び提供を顧客が抑制できないように構成され得る。いくつかの実施形態において、セキュリティモジュールは、プロバイダ(例えば、セキュリティモジュールをホストしている)がセキュリティモジュールによって記憶されるキーの下で操作を実行することができないように、顧客によって生成される署名を独立して検証するように構成され得る。加えて、いくつかのセキュリティモデルは、キー空間のすべてを記憶し得、いくつかのセキュリティモジュールは、キー空間の部分空間を記憶し得る。他の変形もまた、本開示の範囲内である。異なるセキュリティモジュールがキー空間の異なる部分空間を記憶する場合において、要求処理ユニットは、どのセキュリティモジュールが様々な要求に従って暗号操作を実行するように命令するかを決定するための関係表または他の機序などを用いて構成され得る。
【0087】
ある実施形態において、ポリシー施行モジュールは、要求処理ユニットから情報を獲得し、少なくとも部分的にその情報に基づいて、APIから受信される要求が実行され得るかどうかを決定するように構成される。例えば、暗号操作を実行するための要求が、要求APIを介して受信されるとき、要求処理ユニットは、ポリシー施行モジュールと対話して、要求の遂行が任意の適切なポリシー、例えば、要求内の指定されたKeyIDに適用可能なポリシー、及び/または要求者と関連付けられたポリシーなどの他のポリシーによって承認されるかどうかを決定し得る。ポリシー施行モジュールが、要求の遂行を許可する場合、要求処理ユニットは、それに応じて、適切なセキュリティモジュールに要求の遂行に従って暗号操作を実行するように命令し得る。
【0088】
本明細書に記載されるすべての図と同様に、多くの変形が本開示の範囲内であると見なされる。例えば、図16は、セキュリティモジュールとは別個のポリシー施行モジュールを示す。しかしながら、各セキュリティモジュールは、別個に例示されるポリシー施行モジュールに加えて、またはその代わりに、ポリシー施行モジュールを含み得る。そのため、各セキュリティモジュールは、ポリシーを施行するように独立して構成され得る。加えて、別の例として、各セキュリティモジュールは、別個のポリシー施行モジュールによって施行されるポリシーとは異なるポリシーを施行するポリシー施行モジュールを含み得る。多くの他の変形が、本開示の範囲内であると見なされる。
【0089】
上に記載されるように、様々なポリシーは、要求がKeyIDに対応するキーと関連して実行される暗号操作を指定するとき、ポリシーが施行され得るように、KeyID内の、またはそれと関連したユーザによって構成され得る。図17は、様々な実施形態に従うポリシーを更新するためのプロセス1700の例示的な例を提供する。プロセス1700は、図16に関連して上に記載されるような暗号サービスシステムによってなど、任意の好適なシステムによって実行され得る。ある実施形態において、プロセス1300は、KeyIDのポリシーを更新するための要求を受信すること1302を含む。要求は、任意の好適な様態で受信され得る1302。例えば、例として図16を参照すると、要求は、上に記載される暗号サービス1600のフロントエンドシステムのポリシー構成APIを介して受信され得る。要求は、任意の好適な様態で受信され得る。
【0090】
プロセス1700は、ある実施形態において、認証要求を提出すること1704及び認証応答を受信すること1706を含む。認証要求を提出すること1704及び認証応答を受信すること1706は、上に記載されるような任意の好適な様態で実行され得る。さらに上に記載されるように、受信された認証応答は、KeyIDのポリシーを更新するための要求が真正であるかどうかを決定する1708ために使用され得る。KeyIDのポリシーを更新するための受信された要求が真正でないと決定される場合1708、その要求は拒否され得る1710。要求を拒否すること1710は、上に記載されるような任意の好適な様態で実行され得る。しかしながら、KeyIDのポリシーを更新するための受信された要求が真正であると決定される場合1708、プロセス1700は、要求者に適用可能なポリシー情報にアクセスすること1712を含み得る。ポリシー情報は、要求者に適用可能な任意のポリシーが施行され得る情報であり得る。例えば、プロセス1700によって実行される暗号サービスを利用する組織内では、その組織の特定のユーザのみがKeyIDためのポリシーを更新することが許可され得る。ポリシー情報は、どのユーザが暗号サービスにKeyIDのポリシーを更新させることができるか、及び/またはポリシーが既存のポリシーに従って更新可能であるかどうかさえも示し得る。例えば、暗号サービスは、いくつかの実施形態において、新しいポリシーを施行するための要求を受信し得る。暗号サービスは、任意の既存のポリシーが新しいポリシーが導入されることを許可するかどうかをチェックし得る。暗号サービスが、既存のポリシーが新しいポリシーの施行を許可しないことを決定する場合、その要求は拒否され得る。一般的に、ポリシー情報は、要求者に適用可能なポリシーの施行に使用可能な任意の情報であり得る。
【0091】
図17に例示されるように、プロセス1700は、ポリシー情報を使用して、要求された更新が実行されることをポリシーが許可するかどうかを決定すること1704を含む。ポリシーが要求された更新が実行されることを許可しないと決定される場合1714、プロセス1700は、上に記載されるように要求を拒否すること1710を含み得る。しかしながら、ポリシーが要求された更新が実行されることを許可すると決定される場合1714、プロセス1700は、KeyIDのポリシーを更新すること1716を含み得る。KeyIDのポリシーを更新することは、ポリシー情報を更新すること、及び更新されたポリシーをKeyIDに従ってまたはそれに関連して記憶させることを含み得る。更新されたポリシー情報は、例えば、図16と関連して上に記載されるような暗号サービスのポリシー施行モジュールによって、記憶され得る。
【0092】
ポリシーはまた、暗号サービスと関連して動作する電子環境の他の構成要素によっても施行され得る。例えば、上に議論される図2を参照すると、暗号サービスは、データサービスフロントエンドが施行するために、ポリシーの電子表示をデータサービスフロントエンドに提供し得る。そのようなものは、データサービスがポリシーを施行するのにより適している状況において有用であり得る。例えば、アクションがポリシーによって許可されるかどうかは、データサービスフロントエンドはアクセス可能だが、暗号サービスにはアクセス不可能な情報に少なくとも部分的に基づき得る。一例として、ポリシーは、ポリシーに関連付けられた顧客に代わってデータサービスバックエンド記憶システムによって記憶されるデータに基づき得る。
【0093】
上に記載されるように、暗号サービスは、KeyIDを有するキー上のポリシーに従ったポリシーの施行を可能にする様々なシステムを含み得る。したがって、図18は、ポリシーを施行するために使用され得るプロセス1800の例示された例を示す。プロセス1800は、図16に関連して上に記載されるような暗号サービスシステムによってなど、任意の好適なシステムによって実行され得る。ある実施形態において、プロセス1800は、KeyIDを有するキーを使用して1つ以上の暗号操作を実行するための要求を受信すること1802を含む。図18は、1つ以上の暗号操作を実行するための要求に関連して実行されるものとしてのプロセス1800を例示するが、プロセス1800は、必ずしも暗号であるとは限らない操作を実行するための任意の要求での使用に適し得ることに留意されたい。操作例は、上に記載される。
【0094】
受信された要求が真正であるかどうかの決定がなされ得る1804。受信された要求が真正であるかどうか決定することは、上に記載されるように、任意の好適な様態で実行され得る。例えば、要求が真正であるかどうか決定すること1804は、上に記載されるように、認証要求を提出すること及び認証応答を受信することを含み得る。要求が真正でないと決定される場合1804、プロセス1800は、要求を拒否すること1806を含み得る。要求を拒否すること1806は、上に記載されるような任意の好適な様態で実行され得る。しかしながら、要求が真正であると決定される場合1804、プロセス1800は、KeyID及び/または要求者のポリシー情報にアクセスすること1808を含み得る。KeyID及び/または要求のポリシー情報にアクセスすることは、任意の好適な様態で実行され得る。例えば、KeyID及び/または要求者のポリシー情報にアクセスすることは、そのようなポリシー情報を記憶する1つ以上の記憶システムから記憶ポリシー情報にアクセスすることによって実行され得る。アクセスポリシー情報は、ポリシーが1つ以上の操作が実行されることを許可するかどうか決定する1810ために使用され得る。
【0095】
ポリシーが1つ以上の操作が実行されることを許可しないと決定される場合1810、プロセス1800は、要求を拒否すること1806を含み得る。しかしながら、ポリシーが1つ以上の操作が実行されることを許可すると決定される場合、プロセス1800は、要求された1つ以上の暗号操作を実行すること1812を含み得る。1つ以上の暗号操作の実行の1つ以上の結果は、1つ以上の暗号操作を実行するための受信された要求1802を提出した要求者に提供されるなど、提供され得る1814。いくつかの実施形態において、許可された要求、及びまたは拒否された要求から少なくとも部分的に派生した情報は、監査サブシステムを介して提供され得る。
【0096】
議論されるように、本開示の実施形態は、柔軟なポリシー構成及び施行を可能にさせる。いくつかの実施形態において、ポリシーは、どのサービスがどの操作をどのコンテクストにおいて実行することができるかを明言し得る。例えば、キー上のポリシーは、データ記憶サービスが、暗号サービスに復号操作ではなく暗号化操作を実行させることを許可し得る。キー上のポリシーはまた、暗号文及び/または復号された平文に対する1つ以上の条件も含み得る。例えば、ポリシーは、要求に応じて操作の結果が提供される前に、暗号文及び/または平文が特定のハッシュ値(キー付のハッシュ値であり得る)を生み出すことを必要とし得る。ポリシーは、時間、要求が発信されるインターネットプロトコル(IP)暗号化される/復号される内容の種類、AAD、及び/または他の情報に少なくとも部分的に基づく1つ以上の制約及び/または許可を指定し得る。
【0097】
多くの変形が、本開示の範囲内であると見なされる。例えば、上で議論される様々な実施形態は、別個の認証サービスとの対話について議論する。しかしながら、上で議論される環境の構成要素は、それら独自の承認構成要素を有し得、要求が真正であるかどうかの決定は、別のエンティティとの通信に関与する場合としない場合がある。さらに、上で議論される環境の各々は、環境によって可能になる特定の操作及び機能と関連して例示される。異なる環境と関連して上で議論される技術は、組み合わされ得、一般的に、本開示に従う環境は、様々な技術の柔軟な使用を可能にさせ得る。単に一例として、暗号サービスは、要求時に、キー、及びキー無しデータオブジェクトなどの他のコンテンツの双方を暗号化するために使用され得る。別の例として、暗号サービスは、ユーザ(例えば、コンピューティングリソースプロバイダの顧客)及び他のサービス(例えば、データ記憶サービス)の双方からの要求を受信し、かつそれに応答するように構成され得る。いくつかの実施形態において、暗号サービス及び/または関連した認証サービスは、記憶されるデータの暗号化を実行するためのモバイルデバイスでの使用のために構成され得る。いくつかの実施形態において、少なくとも1つのロック解除ピンは、暗号サービスによって検証され得る。依然として他の実施形態において、暗号サービスは、操作の一部として、ハードウェア構成証明によって生成される情報を受信し得る。いくつかの実施形態において、暗号サービスは、内容に対するデジタル権利管理サービスを提供するように操作可能であり得る。
【0098】
上述のように、本開示の様々な実施形態は、豊富なポリシー施行及びコンフィギュアビリティ(configurability)を可能にさせる。多くの暗号システムは、暗号操作をデータに対する秘密性、保全性、及び真正性保証を同時に提供するために実行することができる操作の認証された暗号化モードを提供する。秘密性は、平文データの暗号化によって提供され得る。真正性は、平文、及び暗号化されないままであり得る関連データの双方のために提供され得る。そのようなシステムでは、暗号文または関連データのいずれかに対する変更は、暗号文の復号の失敗を引き起こし得る。
【0099】
ある実施形態において、平文に関連付けられたデータが、ポリシーの施行において使用される。したがって、図19は、様々な実施形態に従って関連データを使用したポリシー施行を可能にさせる様態でデータを暗号化するためのプロセス1900の例示的な例を示す。プロセス1900は、暗号サービス及び/またはセキュリティモジュールなど、任意の好適なシステムによって実行され得る。例示されるように、プロセス1900は、平文を獲得すること1902を含む。平文は、任意の好適な様態で獲得され得る。例えば、上に記載されるようなサービスプロバイダ環境において、ユーザ(例えば、顧客)は、暗号化されるデータを提供し得る。別の例として、獲得すること1902は、キー(暗号化される)を生成すること、及び/または暗号化されるキーを獲得することを含み得る。キーは、上に記載されるように使用され得る。
【0100】
示されるように、プロセス1900は、関連データを獲得することを含む。関連データは、平文と関連付けられた、または平文と関連付けられる予定の任意のデータであり得る。関連データは、1つ以上のポリシーが少なくとも部分的に基づく任意のデータであり得る。例を以下に示す。さらに、関連データは、eXtensible Markup Language(XML)、JavaScript Object Notation(JSON)、Abstract Syntax Notation One(ASN1)、YAML Ain’t Markup Language(Yet Another Markup Languageとも称される)(YAML)、または別の構造化拡張可能データ形式など、任意の好適な様態で符号化され得る。ある実施形態において、プロセス1900は、少なくとも部分的に平文及び関連データに基づいて、メッセージ認証コード(MAC)及び暗号文を生成すること1906を含む。AES-GCM暗号の出力など、MAC及び暗号文の組み合わせは、認証された暗号文と称され得る。MAC及び暗号文を生成することは、任意の好適な様態で実行され得、MAC及び暗号文の生成は、どの暗号システム(複数可)が使用されるかに依存し得る。例えば、ある実施形態において、高度暗号化規格(AES)は、CCMモードまたはGCMモードのいずれかで操作されるとき、関連した認証済みデータ(AAD)を支援し、ここでCCMはCounter with CBC-MACを表し、GCMはGalois/Counter Modeを表し、CBCは暗号ブロック連鎖(cipher block chaining)を表す。CCMまたはGCMのいずれかのモードでAESを使用する場合、平文及び関連データは、平文及び関連データ双方の暗号文及びMACの連結されたペアの出力を獲得するための入力として提供され得る。AES-CCM及びAES-GCMは、例示の目的のために提供されるが、他の認証された暗号化方式もまた使用され得、本明細書内に明示的に記載される技術をそれに応じて改変することができることに留意されたい。例えば、本開示の技術は、一般に、認証された暗号化モードを支援した対称ブロック暗号に適用可能である。加えて、他の暗号化方式は、本開示の様々な実施形態に従ってMAC関数と組み合わせることができる。好適な暗号化方式及びMAC関数の組み合わせは、暗号化方式が選択平文攻撃の下で強秘匿であり、MAC関数が選択メッセージ攻撃の下で偽造不可であるものを含むが、これに限定されない。さらに、本開示の様々な実施形態は、暗号文及びMACの双方を符号化する単一の出力をもたらす暗号を利用するが、MAC及び暗号文は、異なる暗号を使用して生成され得る。さらに、MACは例示的な例として使用されるが、一般的なハッシュ、チェックサム、署名、及び/またはMACの代わりに使用することができる他の値など、一般的にMACと称されない他の値もまた使用され得る。したがって、関連データを支援する自動化された暗号化モードを有する暗号は、MACに加えて、またはMACの代替として他の暗号プリミティブを使用する暗号を含む。
【0101】
さらに、MAC及び暗号文を生成することは、様々な実施形態に従う様々な方法で実行され得る。例えば、ある実施形態において、平文は、上に記載されるように、セキュリティモジュールに提供される。セキュリティモジュールは、MACを生成するように構成され得る。他の実施形態において、セキュリティモジュール以外の電子環境の構成要素は、MAC及び暗号文を生成する。そのような実施形態において、セキュリティモジュールは、平文形態にあるときにMAC及び暗号文を生成するために使用されるキーを復号するために使用され得る。生成されると、MAC及び暗号文(すなわち、認証された暗号文)が提供される1908。いくつかの実施形態において、関連データも提供される。MAC及び暗号文は、プロセス1900及びその変形を利用した様々な実装において様々な方法で提供され得る。例えば、いくつかの実施形態において、MAC及び暗号文は、上に記載されるように、ユーザに提供されるか、データサービスによる処理のために、上に記載されるように、データサービスに提供される。さらに、述べられるように、関連データは提供され得るが、様々な実施形態において、関連データは提供されない、及び/または一般的に平文形態で保持される。一例として、関連データは、独立して獲得可能である場合、提供されない場合がある。例示的な例として、関連データがデバイスの永続的な識別子(例えば、記憶デバイスの識別子)である場合、関連データは、ポリシー施行及び/または他の目的で必要とされるときに、後で獲得され得る。
【0102】
上述のように、本開示の様々な実施形態は、強化されたデータセキュリティを提供するためにセキュリティモジュールを利用する。図20は、様々な実施形態に従って、新規の豊富なポリシー施行を可能にさせる様態でデータを暗号化するために使用され得るプロセス2000の例示的な例を示す。プロセス2000は、暗号サービス及び/またはセキュリティモジュールなど、任意の好適なシステムによって実行される。図20に例示されるように、プロセス2000は平文及び関連データを獲得することを含む。上のように、平文及び関連データは、単一の通信で、別個の通信で、及び/または別個のエンティティから受信され得る。獲得されると、平文、関連データ、及びKeyIDは、セキュリティモジュールに提供される2004。セキュリティモジュールは上に記載されるようなものであり得る。さらに、セキュリティモジュールは、上に記載されるように、暗号サービスを支援する環境などの電子環境に関与する複数のセキュリティモジュールから選択され得る。KeyIDは上に記載されるようなものであり得、暗号サービスに提出される平文を暗号化するための要求において指定され得るか、または別の様式で指定され得る。さらに、プロセス2000の代替の実施形態において、KeyIDは指定されない場合がある。例えば、いくつかの実施形態において、セキュリティモジュールは、KeyIDを選択し得、かつ/または後にKeyIDを割り当てられるキーを生成し得る。そのような実施形態において、プロセス2000は、セキュリティモジュールからKeyIDを提供するために改変され得る。
【0103】
例示される実施形態に戻ると、プロセス2000は、セキュリティモジュールから暗号文及びMACを受信すること2006を含み得る。暗号文は、KeyIDによって識別されるキーの下で暗号化され得る。MACは、平文及び関連データの双方の組み合わせに対するMACであり得るため、暗号文または関連データへの変更は、MACのチェックに失敗をもたらす。上のように、変形は、MACが少なくとも部分的に関連データに基づくが平文から独立して生成されるものを含むことに留意されたい。さらに、上述のように、暗号文及びMACは、一緒に提供され得るか(AES-CCMまたはAES-GCM暗号の使用の出力からなど)、別個に提供され得る。セキュリティモジュールから受信されると、MAC及び暗号文は、上に記載されるように、暗号サービスのユーザ、または暗号サービスと関連して動作するデータサービスなど、適切なエンティティに提供される2008。
【0104】
上述のように、セキュリティモジュールは、データの保護を強化するための様々な方法において使用され得る。上述のように、いくつかの実施形態において、セキュリティモジュールは、他のデータを暗号化するために(平文形態で)使用されるキーを暗号化するために使用される。したがって、図21は、そのような状況において使用することができるプロセス2100の例示的な例を示す。プロセス2100は、暗号サービス及び/またはセキュリティモジュールなど、任意の好適なシステムによって実行される。プロセス2100は、ある実施形態において、上に記載されるように、平文及び関連データを獲得すること2102を含む。例示されるように、プロセス2100は、セキュリティモジュールに、暗号化されたキー、関連データ、及び暗号化されたキーを復号するためにセキュリティモジュールによって使用可能なキーを識別するKeyIDを提供すること2104を含む。したがって、プロセス2100は、暗号化されたキーを復号するためにKeyIDによって識別されるキーを使用したセキュリティモジュールから、復号されたキーを獲得することを含む。獲得されたキーは、平文を暗号化し、それによって暗号文及びMACを計算する2108ために使用することができる。暗号文は平文の暗号化であり得、MACは、上に記載されるように、関連データ、または関連データ及び平文の双方に対する(すなわち、少なくとも部分的に基づいた)ものであり得る。暗号化されると、プロセス2100は、上に記載されるように、MAC及び暗号文を提供すること2110を含み得る。さらに、プロセスはまた、SecureErase操作、復号されたキーを記憶するメモリの上書き、キーを記憶する揮発性メモリへの電力の除去、及び/またはシステムがプロセス2100を実行する(例えば、ある暗号システムはセキュリティモジュールを欠く)任意の他の方法によってなど、任意の好適な様態で実行され得る、復号されたキーへのアクセスを失うこと2112も含み得る。並行して例示されているが、関連データ、MAC、ならびに/もしくは暗号文を提供すること、及びキーへのアクセスを失うことは、様々な実施形態間で異なり得る順序で、順に実行され得る。
【0105】
図22は、様々な実施形態に従って、関連データを使用してポリシーを施行するために使用され得るプロセス2200の例示的な例を示す。プロセス2200は、暗号サービス及び/またはセキュリティモジュールなど、任意の好適なシステムによって実行される。ある実施形態において、プロセス2200は、操作を実行するための要求を受信すること2202を含む。要求は、要求を処理するサービスに提出される任意の要求であり得る。ある実施形態において、要求は、暗号サービスに提出される暗号操作を実行するための要求である。要求を受信すること2202に応じて、プロセス2200は、暗号文、MAC、及び予測される関連データを獲得すること2204を含み得る。暗号文、MAC、及び予測される関連データを獲得すること2204は、任意の好適な様態で実行され得る。例えば、いくつかの実施形態において、暗号文、MAC、及び予測される関連データのうちの1つ以上は、要求内に受信される。暗号文、MAC、及び予測される関連データのうちの2つ以上は、別個の要求もしくは他の通信において受信され得、及び/またはローカルデータストアなど、データストアからアクセスされ得る。例えば、ある実施形態において、暗号文及びMACは、要求の一部として、連結されたペア(おそらくは、AES-GCMまたはAES-CCM暗号の出力から生成される)として受信される。予測される関連データもまた、要求の一部であり得るか、または他の方法で識別され得る。例えば、要求者のアイデンティティを直接的または非直接的に使用して、関連データを決定し得る。具体的な例として、要求が記憶デバイスに記憶されるデータに関連した操作を実行することである場合、関連データを獲得すること2204は、データ記憶デバイスの識別子を獲得することを含み得る。識別子は、明示的(例えば、要求の一部として)または暗黙的(例えば、データがデータ記憶デバイス内に記憶されていることを決定するために、他の情報を利用することができるため)に識別され得る。関連データは、データ記憶デバイスの識別子であり得るか、あるいは少なくとも部分的にそれに基づき得る。上述のように、関連データは、様々な実施形態間で大きく異なり得る。
【0106】
ある実施形態において、プロセス2200は、予測される関連データの真正性を決定するのに使用可能な参照MACを生成すること2206を含む。例えば、暗号文、関連データ、及び適切なキー(要求内で識別され得るか、別の様式で決定され得る)を使用して、参照MACを生成する2206。MACを生成することは、暗号文を獲得するために使用された暗号と同じものを使用することによってなど、任意の好適な様態で実行され得る。参照MACと獲得されたMACとが一致するかどうかの決定がなされ得る2208。例えば、多くの暗号システムにおいて、MACは、それらが等しいときに一致するが、様々な実施形態において、他の種類の整合が使用され得ることが企図される。参照MACと獲得されたMACとが一致すると決定される場合2208、ある実施形態において、プロセス2200は、少なくとも部分的に関連データに基づいたポリシー情報にアクセスすること2210を含む。ポリシー情報にアクセスすること2210は、参照MACを生成するため及び/または別の暗号操作を実行するために使用されるKeyIDに関連付けられる1つ以上のポリシーに少なくとも部分的に基づいた、リモートまたはローカルデータストアからの1つ以上のポリシー(すなわち、1つ以上のポリシーの電子表示)にアクセスすることを含み得る。
【0107】
次いで、アクセスされたポリシー情報に少なくとも部分的に基づいて、ポリシーが要求された操作が実行されることを許可するかどうか(例えば、ポリシーが、要求が遂行されることを許可するかどうか)の決定がなされ得る2212。ポリシーが要求された操作が実行されることを許可するかどうか決定することは、暗号文がアクセスされたポリシー情報によって指定される関連データにタグ付けされているかどうかを決定することを含み得る。さらに、例示されていないが、関連データに少なくとも部分的に基づかないポリシー情報(例えば、関連データ以外の情報に基づいたポリシー)もまた、ポリシーが、操作が実行されることを許可するかどうか決定するために使用され得る。ポリシーが操作を許可すると決定される場合2212、プロセス2200は、操作を実行すること2214を含み得る。しかしながら、ポリシーが操作を許可しないと決定される場合2212、及び/または参照MACと獲得されたMACとが一致しないと決定される場合2208、プロセス2200は、上に記載されるように、要求を拒否すること2216を含み得る。
【0108】
様々なポリシーは、上に記載される技術を使用して施行可能である。例えば、述べられるように、ポリシーが施行されるときにキーを用いて何ができ及び/またはできないのかを決定するように、ポリシーはキーと関連付けられ得る。一例として、ポリシーは、データサービスが、ポリシーによって指定される特定の種類の操作のみにキーを使用することができる(または、あるいは、特定の操作がデータサービスに対して禁止される)と明言し得る。ポリシーはまた、使用、使用時間、IPアドレス、何が暗号化され得るか、何が復号され得るか等についての条件も指定し得る。1つの例示的な例として、1つのポリシーは、復号された結果を提供することは、復号のハッシュが指定された値と一致する場合にのみ許可されると指定し得る。そのため、暗号サービスまたはポリシーを施行する他のサービスは、平文のハッシュがポリシーに一致しない場合、平文を提供しない。別の例として、あるポリシーは、暗号文の復号は、暗号文が、指定された値と等しいまたはそれで始まる関連データにタグ付けされている場合にのみ許可されると指定し得る。さらに別の例として、あるポリシーは、暗号文の復号は、暗号文が、関連データ内で符号化される記憶デバイスの識別子にタグ付けされている場合にのみ許可されると指定し得る。
【0109】
一般的に、ポリシーは、暗号文と関連したデータの値(すなわち、認証された関連データ)に少なくとも部分的に基づいた制約及び/特権を指定し得る。いくつかの追加のポリシーは、復号が、復号を要求するコンピュータの識別子にタグ付けされる暗号文、復号を要求するコンピュータに取り付けられた(操作的に接続された)記憶ボリュームの識別子にタグ付けされる暗号文、及び/または他のコンピューティングリソースの識別子にタグ付けされる暗号文にのみ許可されると指定するポリシーを含む。コンピューティングリソースはまた、ポリシーを施行するコンピューティングリソースプロバイダによってホストされるコンピューティングリソースでもあり得る。他のポリシーは、暗号アルゴリズムの出力が、暗号アルゴリズムを実行するエンティティ以外にエンティティに明らかにされる(例えば、ポリシーを施行する暗号サービス以外にユーザ及び/または他のデータサービスに明らかにされる)前に、暗号アルゴリズムの入力及び/または出力に少なくとも部分的に基づくポリシーなど、本開示の範囲内であると見なされる。上に述べられるように、ポリシーはまた、少なくとも部分的に関連データに基づき得る、ポリシーが改変され得るときの条件も指定し得る。
【0110】
図23は、図22に関連して上に記載されるプロセス2200の変形であるプロセス2300の例示的な例を示し、ここで該変形は、様々な実施形態に従う、ポリシーの施行におけるセキュリティモジュールの使用を例示する。ある実施形態において、プロセス2300は、暗号化されたキーまたは他の暗号化されたデータであり得る暗号文を復号するための要求を受信すること2302を含む。プロセス2300はまた、図22に関連して記載されるように、暗号文、MAC、及び予測される関連データを獲得すること2304も含む。図23に例示されるように、ある実施形態において、プロセス2300は、暗号文を復号するためにセキュリティモジュールを使用すること2306を含む。セキュリティモジュールを使用すること2306はまた、暗号文を復号するために操作可能な複数のセキュリティモジュールからセキュリティモジュールを選択し、それによって平文を生み出すことも含み得る。セキュリティモジュールはまた、平文及び予測される関連データに少なくとも部分的に基づいて参照MACを生成するためにも使用され得る2308。図23では2つの別個のステップとして示されるが、セキュリティモジュールを使用して暗号文を復号し参照MACを生成することは、単一の操作(例えば、セキュリティモジュールに対する単一の要求)で実行され得ることに留意されたい。セキュリティモジュールから獲得されると、プロセス2300は、図22に関連して上に記載されるように、参照MACと獲得されたMACが一致するかどうか決定すること2310を含む。しかしながら、いくつかの実施形態において、プロセス2300は、セキュリティモジュールが参照MACを提供され、参照MACと獲得されたMACとが一致するかどうかを決定するように改変され得ることに留意されたい。この変形において、セキュリティモジュールは、一致があるかどうかを示す応答を提供し得る。
【0111】
図23に例示される実施形態に戻ると、参照MACと獲得されたMACとが一致すると決定される場合2310、プロセス2300は、図22に関連して上に記載されるように、少なくとも部分的に関連データに基づいたポリシー情報にアクセスすること2312を含む。また、上のように、そのようなものとして例示されていないが、少なくとも部分的に関連データに基づかないポリシーに関する追加のポリシー情報もまたアクセスされ得る。ポリシーが操作を許可するかどうかの決定がなされ得る2314。ポリシーが操作を許可すると決定される場合2314、平文が提供され得る2316。図22に関連して上のように、ポリシーが操作を許可しないと決定される場合2314、及び/または参照MACが獲得されたMACと一致しないと決定される場合、プロセスは、上に記載されるように、要求を拒否すること2318を含み得る。
【0112】
本開示の様々な実施形態は、暗号の認証モードの関連データを使用して例示されるが、他の実施形態もまた、本開示の範囲内であると見なされる。例えば、本開示の実施形態は、一般的に、ポリシーを施行するための暗号文で検証可能なデータの使用に適用する。例示的な例として、ポリシーの表示は、第1の平文と組み合わせて新しい平文を生成することができる(例えば、平文及びポリシーを含む新しい平文)。新しい平文は、AESなどの好適な暗号を使用して暗号化されて、暗号文を生み出すことができる。暗号文を復号するための要求が受信されるとき、要求を受信するシステムは暗号文を復号し、新しい平文からポリシーを抽出し、ポリシーが第1の平文が提供されることを許可するかどうかチェックし得る。ポリシーが第1の平文が提供されることを許可しない場合、要求は拒否され得る。そのような実施形態は、暗号の認証モードの関連データに関連して上に記載される実施形態の代わりに、またはそれに加えて、使用され得る。
【0113】
本開示の様々な実施形態はまた、キー上のポリシーが、どのように監査が行われるかの条件を指定することも可能にする。例えば、キー上のポリシーはキーの監査レベルを指定し得、ここで監査レベルとは、暗号サービスがどのようにキーの使用を監査するかについて決定力のある暗号サービスのパラメータである。監査は、任意の好適なシステムによって実行され得る。例えば、図16を参照すると、要求処理ユニットは、暗号サービスの一部またはそれとは別個であり得る監査システム(図示せず)と通信し得る。暗号操作の実行に関連してイベントが発生するとき、関連情報は、情報を記録する監視システムに提供され得る。イベントは、暗号操作を実行するための要求、及び/または要求された操作が実行されたかどうかを示す情報であり得る。例えば、ユーザが暗号サービスに復号操作を実行するための要求をすることに成功した場合、暗号サービスは、監査システムに、要求を可能にするための情報、及び操作が実行されたという情報を提供し得る。管理アクセスイベント及び、一般的に、暗号サービスの任意の対話または操作は、イベントに関与したエンティティを識別し得る関連情報、イベントを説明する情報、イベントのタイムスタンプ、及び/または他の情報とともに記録され得る。
【0114】
ある実施形態において、監査レベルは、高耐久性レベル及び低耐久性レベルを含む。低耐久性レベルでは、キーの監査操作は、暗号サービスによってベストエフォート型で実行され得る。低耐久性レベルに従う監査では、正常な操作中は、すべての操作が監査されるが、暗号サービスの構成要素の失敗のイベントにおいては、いくつかの監査データは失われ得る。高耐久性レベルに従う監査では、暗号操作の結果を明らかにする前に、操作が発生したという監査記録が耐久的にメモリに引き渡されているという保証が得られる。確認が必要とされるため、高耐久性監査モードにおける操作は、低耐久性監査モードにおける操作よりも遅い。監査記録が耐久的にメモリに引き渡されているという保証は、監査記録を記憶するために使用される1つ以上の他のシステムからの確認を含み得る。そのため、前の段落を参照すると、暗号サービスは、平文をユーザに提供することを、平分をもたらす復号の記録が耐久的にメモリに引き渡されているという監査システムからの確認に至るまで遅らせ得る。耐久的にメモリに引き渡されるとは、データが耐久性のための1つ以上の条件に従って記憶されていることを意味し得る。例えば、データは、データが非揮発性メモリに書き込まれるとき、及び/またはデータが複数のデータ記憶デバイス間に冗長して記憶されている(例えば、イレージャーコーディング(erasure coding)または他の冗長符号化方式を使用して)とき、耐久的にメモリに引き渡され得る。
【0115】
ある実施形態において、暗号サービスは、低耐久性及び高耐久性監査レベルのサブレベルを使用する。例えば、ある実施形態において、各レベルは、2つの別個の状態、不変状態及び可変状態に相当する。状態が不変または不変であるかどうかは、状態間の遷移がどのように起こるのか、及び起こるのかどうかを決定し得る。例えば、監査耐久性の例示的な例を使用すると、キー上のポリシーは、低耐久性可変と高耐久性可変との間で、低耐久性可変から低耐久性不変へ、及び高耐久性可変から高耐久性不変へ変更することができ得る。しかしながら、暗号サービスは、キーのポリシーが低耐久性不変または高耐久性不変のいずれかに一旦置かれると、遷移は禁止されるように構成され得る。そのため、キーのポリシーが不変状態に一旦置かれると、ポリシーを変更することはできない。
【0116】
図24は、オン(施行される)及びオフ(施行されない)であることができるポリシーに一般化される、そのようなシステムの状態図の例示的な例を示す。図24に例示されるように、キーのためのポリシーは、オンまたはオフであることができる。オン及び不変のとき、ポリシーは、オン及び不変(変化不可能)、またはオフ及び可変(変化可能)へ変更されることができる。同様に、ポリシーがオフであるが可変であるとき、ポリシーを、オンであるが可変、またはオフであるが不変へ変更することができる。オフであるが可変であるポリシーからオン及び不変への直接遷移など、他の遷移もまた利用可能であることに留意されたい。さらに、示されるすべての遷移が利用可能でない場合がある。例えば、キーは、いくつかの場合においては、オフ及び不変状態を有し得ない。
【0117】
図25は、どのようにシステムがキーに適用可能な様々なポリシー間の遷移を許可し得るかを示す一般化された状態図を示す。この例において、3つのポリシー、ポリシーAとポリシーBとポリシーCとが示される。これらのポリシーの各々が、可変及び不変状態を有し、状態及びポリシー間で許容可能な遷移が示される。例えば、不変状態からの遷移は許可されない。しかしながら、可変状態にあるポリシーは、可変状態にある別のポリシーに変更されることができる。例えば、キー上のポリシーは、ポリシーA(可変)からポリシーB(可変)に変更され得る。ポリシーBで例示されるように、複数のポリシーに利用可能な遷移があり得る。例えば、ポリシーBからは、ポリシーはポリシーCまたはポリシーAのいずれかに変更されることができる。図24と同様に、他の遷移及びポリシーが含まれ得、すべてのポリシーがすべての状態を有し得るわけではない。さらに、様々な例が不変及び可変状態を有するポリシーを示す一方、ポリシーは2つを超える状態を有し得、ここで各状態は、実行することができる、または実行することができないアクションのセットに相当する。例えば、半可変状態は、可変状態下で利用可能な遷移のすべてではないがいくつかを許可し得る。
【0118】
述べられるように、ポリシーは、監査に加えて様々な操作のために使用されることができる。例えば、ポリシー遷移における上の制約は、キー破砕性に適用され得る。例えば、あるポリシーは、キーが破砕され得る(取り消し不能の形で失われる)かどうかを示し得る。該ポリシーは、破砕可能-可変、破砕可能-不変、破砕不可能-可変、破砕不可能-不変という4つの状態を有し得る。上のように、不変状態にあるとき、該ポリシーは変更され得ない。別の例として、キーをセキュリティモジュールからエクスポートすることができるかどうかに関するポリシーもまた、そのような4つの状態のポリシーを有し得る。
【0119】
ポリシーはまた、セキュリティ攻撃に対する脆弱性を可能にするキー使用を防止するために、キーと関連付けられ得る。例えば、ある実施形態において、1つ以上のキーは、一定使用数の後にキーをリタイアさせる(例えば、もはや暗号化のために使用できないようにマークされる)自動ローテーションポリシーと関連付けられる。そのようなポリシーは、ユーザ(例えば、顧客)がパラメータをアクティブにする及び/または提供する、ユーザ構成可能(例えば、顧客構成可能)ポリシーであり得る。該ポリシーはまた、キーのより大きなセット(顧客に代わって暗号サービスによって管理される少なくともすべてのキーを含むセットなど)に適用可能なグローバルポリシーでもあり得る。この様態において、キーは、十分な平文及び対応する暗号文の知識がキーを決定する能力を提供する暗号攻撃を可能にするのに十分な時間使用される前に、リタイアされ得る。
【0120】
図26は、様々な実施形態に従って、適切な間隔でキーをローテートさせるために使用されるプロセス2600の例示的な例を示す。プロセス2600は、上に記載されるセキュリティモジュールなど、任意の好適なデバイスによって実行され得る。ある実施形態において、プロセス2600は、KeyIDによって識別されるキーを使用して暗号操作を実行するための要求を受信すること2602を含む。要求は、上に記載されるような、暗号サービス要求プロセッサから受信される要求であり得る。要求は、電子署名、別のキー、またはキーに少なくとも部分的に基づいた他の情報の生成など、データを暗号化もしくは復号するための、または一般的には、KeyIDによって識別されるキーを使用して任意の暗号操作を実行するための要求であり得る。要求を受信すると2602、プロセス2600は、要求された操作を実行すること2604を含む。要求された操作を実行することは、操作を実行するためにキーの適切なバージョンを選択することなど、追加の操作を含み得る。例えば、操作が暗号化である場合、アクティブとしてマークされるキーが暗号化のために使用され得る。操作が復号である場合、操作を実行することは、KeyIDによって識別されるキーの適切なバージョンを選択して復号することを含み得、様々な実施形態において、そのキーは、データを暗号化するために最初に使用されたキーである。キーは様々な方法によって選択され得る。例えば、いくつかの実施形態において、暗号文は、バージョン、シリアルナンバー、日付、またはキーの選択を可能にする他の情報を識別するメタデータを含み得る。いくつかの実施形態において、可能性のあるキーはそれぞれ、データが正しく復号されるまで試され得、正しい復号は、暗号文に関連付けられる平文出力のハッシュによって、または関連データの正当性によって決定され得る。
【0121】
一度暗号操作が実行されると2604、プロセス2600は、KeyIDによって識別されるアクティブキー用のキー使用カウンタを更新すること2606を含む。例えば、暗号操作が1回のキー使用をもたらす場合、カウンタは1ずつ増加され得る。同様に、暗号操作が、N(Nは正整数)回のキー使用をもたらす場合、カウンタはNずつ増加され得る。カウンタが閾値を越えるかどうかの決定がなされる2608。閾値は、KeyIDによって識別されるキーのバージョンに割り当てられる使用数であり得る。閾値は、キーの操作の割り当てを管理する暗号サービスの構成要素によって提供され得る。閾値はまた、デフォルトの操作数でもあり得る。カウンタが閾値を越えると決定される場合2608、ある実施形態において、プロセス2600は新しいキーを獲得すること2610を含む。新しいキーを獲得することは、任意の好適な様態で実行され得る。例えば、プロセス2600がセキュリティモジュールによって実行される場合、新しいキーを獲得することは、新しいキーを生成すること、または新しいキーを暗号サービスの操作者によって編成され得る別のセキュリティモジュールから獲得することを含み得る。1つのセキュリティモジュールから他のセキュリティモジュールに鍵を渡すことは、提供側及び受信側のセキュリティモジュールがアクセスを有するキーを用いてキーを暗号化することによって実行され得る。プロセス2600を実行するセキュリティモジュールは、暗号化されたキーを取得し、かつ復号し得る。公開キーのキー交換技術もまた使用され得る。
【0122】
新しいキーが獲得されると、ある実施形態において、プロセス2600は、現在のアクティブキーをリタイアとしてマークすること2612を含み得る。現在のアクティブキーをリタイアとしてマークすることは、セキュリティモジュールによって維持されるデータベース内の適切な値を変更することによってなど、任意の好適な様態で実行され得る。さらに、プロセス2600は、セキュリティモジュールによって維持されるデータベースを更新することなどによって、新しいキーをKeyIDと関連付けること2614、及び新しいキーをアクティブとしてマークすることを含む。例示されていないが、プロセス2600はまた、別のセキュリティモジュールによる使用のための新しいキーを提供することをも含み得る。破線により示されるように、新しいキーが、プロセス2600を実行するセキュリティモジュール(または他のシステム)による使用のための準備が整った後のある時点で、プロセスは、別の暗号操作を実行するための要求を受信すること2602を含み得、プロセス2600は上述のように処理し得る。さらに、カウンタが閾値を越えないと決定される場合2608、プロセス2600は、終了し得、かつ/または別のリクエストが受信される2602と繰り返し得る。
【0123】
図27は、様々な実施形態に従って、暗号サービスまたは他の環境でキーの自動ローテーションを実行するために使用され得るプロセス2700の例示的な例を示す。プロセス2700は、キー使用を追跡し、様々な実施形態に従ってキーローテーションを編成する暗号サービスの構成要素など、任意の好適なシステムによって実行され得る。図27に例示されるように、プロセス2700は、キーのための多くのキー操作(例えば、複数のキーのそれぞれのための多くの操作)を1つ以上のセキュリティモジュールに割り当てること2702を含む。具体的な例として、キーのセットを冗長して記憶/使用するために5つのセキュリティモジュールを利用する環境において、各セキュリティモジュールは、それが管理するそれぞれのキーに100万個の操作を割り当てられ得る。操作が割り当てられるセキュリティモジュール(または他のコンピュータシステム)は、複数のデータセンター中の同じデータセンターにおいてホストされ得る。例えば、いくつかの実施形態において、コンピューティングリソースプロバイダは、複数の地理的領域にある複数のデータセンター内のセキュリティモジュールを利用して、地理的に分散された暗号または他のサービスを実装する。
【0124】
しかしながら、その割り当てはすべてのキーではなくいくつかのキーに対してなされ得ること、及び各キーの割り当ては等しくない場合があることに留意されたい。キー操作を割り当てることは、どのキー操作が割り当てられたか、各セキュリティモジュールに割り当ての通知を提供することを含み得る。その通知は、各キーに割り当てられた数を指定し得、または、いくつかの実施形態において、セキュリティモジュールへの通知は、セキュリティモジュールに対して、セキュリティモジュール内に予めプログラムされたカウンタを再初期化すること、または予めプログラムされた数をカウンタに追加することを示し得る。キー操作をセキュリティモジュールに割り当てる2702と、操作が割り当てられた各キー用のキー使用カウンタが更新され得る。上の具体事例を続けると、5つのセキュリティモジュールの各々が特定のKeyIDによって識別されるキーに100万個の操作を割り当てられた場合、KeyID用のカウンタは、500万ずつ増やされ得る(カウントが上方または下方に実行されるかによって、上方または下方に)。
【0125】
キー操作が割り当てられた際に、セキュリティモジュールは上に記載されるような暗号操作を実行し得る。セキュリティモジュールは、なされた割り当てに少なくとも部分的に基づいたそれら独自のカウンタを維持し得る。上の例では、セキュリティモジュールが特定のKeyIDによって識別されるキーに100万個の操作を割り当てられた場合、セキュリティモジュールは、カウンタを100万にセットし得る(または、既存のカウンタが残りの操作を有する場合は100万を超える)。キーを使用した暗号操作を実行する際、セキュリティモジュールは、その独自のカウンタをそれに応じて増やし得る。
【0126】
ある時点で、1つ以上のKeyIDのための割り当て枯渇イベントが検出され得る2706。枯渇イベントは、1つ以上のセキュリティモジュールがその割り当てを失うまたはそれに枯渇する、任意のイベントであり得る。一例として、セキュリティモジュールは、特定のKeyIDによって識別されるキーに対する操作のその割り当てを使用し得、かつ枯渇イベントの検出は、セキュリティモジュールから、セキュリティモジュールが、対応する数の操作を実行することによってKeyIDに対するその割り当てに枯渇している(あるいは、その割り当てに枯渇していることを示すいくらかの規定の閾値の範囲内にある、またはその割り当てにすぐに枯渇することが別の様式で予測される)という通知を受信することを含み得る。別の例として、いくつかの実施形態において、セキュリティモジュールは、故障、侵入もしくは他の改ざんの検出などの特定のイベント時に、または操作者が保守のためにセキュリティモジュールへのアクセスを必要とするとき、そこに記憶されるキー(及び、カウンタなどのキーと関連付けられたデータ)へのアクセスを失うように構成される。したがって、枯渇イベントは、故障、または改ざん/侵入の検出、及び内部アクション(保守のためにセキュリティモジュールを一時的に使用不能にすることなど)に起因するセキュリティモジュールの損失(おそらくは一時的)を含み得る。この例において、セキュリティモジュールは、それが割り当てられた数の操作を必ずしも実行したとは限らないにもかかわらず、その割り当てを使用したかのように処理され得る。しかしながら、すべてのそのようなイベントは、カウンタが永続的に記憶され、それ故に対応するキーへのアクセスの損失時にさえ復元可能であるときなど、特定の実施形態においては枯渇イベントを含まない場合があることに留意されたい。枯渇イベントは1つを超えるセキュリティモジュールに影響を与え得ることにも留意されたい。例えば、データセンター内の複数のセキュリティモジュールに影響を与える電源異常は、複数のセキュリティモジュールに影響を与える枯渇イベントをもたらし得る。
【0127】
枯渇イベントの検出時、カウンタが枯渇イベントに関連付けられたキーのうちのいずれかの閾値を越えるかどうか決定がなされ得る2710。閾値は、暗号操作を実行するために使用される暗号の数学的性質に少なくとも部分的に基づいた操作の規定の数であり得る。例えば、CBCモードを用いた暗号では、操作の数は、(1)ブロック内に表される暗号文の長さと、(2)暗号文の数との平方の積で割ったキー空間の大きさであり得るか、少なくとも部分的にそれに基づき得る。CTRモードを用いた暗号(AES-GCMなど)では、操作の数は、(1)ブロック内の暗号文の長さの平方と、(2)暗号文の数との積で割ったキー空間の大きさであり得るか、少なくとも部分的にそれに基づき得る。カウンタが枯渇イベントにより影響を受けたキーのうちのいずれかの閾値を越えると決定される場合2710、プロセス2700は、1つ以上のセキュリティモジュール(すなわち、枯渇イベントに関連付けられた1つ以上のセキュリティモジュール)に、操作の割り当てが枯渇している1つ以上の新しいキーを獲得し、影響を受けたキー(複数可)を新しいキー(複数可)と交換するように命令すること2712を含み得る。例えば、セキュリティモジュールが一時的にオフラインになり(それによって枯渇イベントを引き起こす)、結果として、KeyID用のカウンタ(しかしすべてのKeyIDとは限らない)が閾値を越えることになる場合、セキュリティモジュールは、上に記載されるように(例えば、新しいキーを作成すること、データ記憶から予め生成されたキーにアクセスすること、または別のセキュリティモジュールから新しいキーを獲得することによって)、新しいキーを獲得するように命令され得る。しかしながら、枯渇イベントによって影響を受けたセキュリティモジュールとは異なるセキュリティモジュールは、1つのセキュリティモジュールがオフラインにされ、新しいセキュリティモジュールがオンラインにされるときなどに、新しいキーを獲得するように命令され得ることに留意されたい。影響を受けたキー(KeyIDによって識別される)を新しいキーと交換することは、影響を受けたキーをリタイアとしてマークすること、新しいキーをKeyIDと関連付けること(例えば、データベース内)、及び新しいキーをアクティブとしてマークすることを含み得る。影響を受けたキーを新しいキーと交換することはまた、新しいキー用のカウンタ(影響を受けたキーを新しいキーと交換するセキュリティモジュールによって維持される)を初期化することも含み得、それは、予めプログラムされた値であり得るか、プロセス2700を実行するシステムから獲得される値であり得る。プロセス2700はまた、影響を受けたキー(複数可)をリタイアとして、新しいキー(複数可)をアクティブとして、データベースをそれに応じて更新することなどによってマークすること2714も含み得る。プロセス2700を実行するシステムは、影響を受けたキー及び/または新しいキー(複数可)へのアクセスを有しない場合があり、その結果、影響を受けたキー(複数可)をリタイアとして、及び新しいキー(複数可)をアクティブとしてマークすることは、リタイアまたは新規のどちらか適切な方を示す値とキーの識別子を関連付けることを含み得ることに留意されたい。
【0128】
ある実施形態において、マークする2714際、影響を受けたキーのいずれもが閾値を超えるカウンタを有しないと決定される場合は2710、プロセス2700は、依然としてアクティブな影響を受けたキー(複数可)、及び/またはプロセス2700の操作を実行した結果として獲得された任意の新しいキー(複数可)に追加のキー操作を割り当てること2716を含み得る。追加のキー操作の割り当ての際、適切なキー使用カウンタ(複数可)は、上に記載されるように、更新され得る2704。
【0129】
本明細書に記載されるすべてのプロセスと同様に、変形は本開示の範囲内であると見なされる。例えば、いくつかの実施形態において、セキュリティモジュールは、キーのそれらの使用を追跡しないが、暗号または他のサービスの別の構成要素は、キーを使用して1つ以上の操作を実行するために任意のセキュリティモジュールに提出される各要求のためのキー用のカウンタを更新する。そのような実施形態において、複数のキーの各キーのため、セキュリティモジュールの構成要素は、キーを使用して操作を実行するための要求を追跡し(または、例えば、要求の遂行に成功したという確認または他の指標によって、実行される操作を追跡し)、それに応じてキー用のカウンタを更新し得る。カウンタが閾値に達すると、カウンタを維持するシステムは、すべての適切なセキュリティモジュールに、キーのリタイアをさせて新しいキーと交換(または、キーを有するセキュリティモジュールに、キーのリタイアをさせること、1つ以上の他のセキュリティモジュールに新しいキーの使用を開始させることなど、キーのリタイアを引き起こすいくつかの他の操作を実行)させ得る。本開示の範囲内である変形の別の例として、いくつかの実施形態において、セキュリティモジュールがキー操作のその割り当てを使用し、カウンタに閾値を超えさせるとき、セキュリティモジュールは、上に記載されるように、新しいキーを獲得することを命令され得る。他のセキュリティモジュールは、それらの割り当てを使用するまでキーを使用し続け得る。セキュリティモジュールがその割り当てを使用するとき、それは、カウンタに閾値を超えさせたセキュリティモジュール内のキーと交換した新しいキーを獲得することができる。言い換えると、セキュリティモジュールは、新しいキーの獲得が必要になる前にキー操作のそれらの割り当てを使い尽くすことが許可され得る。
【0130】
図28は、キー使用の追跡を維持するために使用されるデータベースの例示的な代表例を示す。データベースは、プロセス2700を実行するシステムなどの、適切なシステムによって維持され得る。例示されるデータベースにおいて、カラムは、KeyID、キーバージョン、ユーザビリティ、及びカウンタに相当する。KeyID及びキーバージョンは、上に記載されるようなものであり得る。ユーザビリティカラム内の値は、キーがリタイアもしくはアクティブであるかどうか(または、キーが別の状態を有するかどうか(そのような他の状態が本開示の様々な実施形態によって支援される場合))を示し得る。図28に例示されるように、データベースは、すべてのリタイアバージョン及びアクティブバージョンを含む、KeyIDによって識別されるキーの各バージョンの列を有する。しかしながら、データベースはキーのすべてのバージョンを欠き得ることに留意されたい。例えば、キーは、様々なセキュリティ上の理由により記憶から永久に削除され得る。削除は、例えば、顧客要求またはポリシーの施行に準じ得る。
【0131】
図28に例示されるように、例示されるデータベースはまた、各アクティブキー用のカウンタも含む。また、この特定の例において、データベースは、非アクティブキー用のカウンタ(例えば、閾値を超える各キーの値を示し、それによって新しいキーが獲得されることになる)を含む。しかしながら、非アクティブキーのカウンタ値は、いくつかの実施形態において、保持されない場合がある。カウンタは、キー操作がセキュリティモジュールに割り当てられるときに、データベースを維持するシステムによって更新され得る。カウンタ列の値が閾値の値を超えると、カウンタが閾値を越えたキーと交換するための新しいキーを収容するために、新しい列がデータベースに追加され得る。
【0132】
セキュリティモジュールは、それら独自の目的のために同様のデータベースを維持し得る。例えば、あるセキュリティモジュールは、キーのその独自の使用を追跡し得、かつセキュリティモジュールによるキーの使用がセキュリティモジュールに割り当てられた数を使い果たすとき、セキュリティモジュールは、例えば、追加の操作をセキュリティモジュールに再割り当てするか、キーが利用可能な多数のキー操作が使い果たされている場合は、セキュリティモジュールに新しいキーを獲得させるかのいずれかのために上に記載されるプロセス2700のようなプロセスを実行し得る暗号サービス(または、セキュリティモジュールを使用する別のサービス)のキーローテーション管理構成要素に通知し得る。
【0133】
キー使用を追跡するために使用されるデータベースは、図28に例示されるもの及び上に記載されるものと相違し得る。例えば、生成の時間、リタイアの時間、キーを使用するユーザに関する情報、及び/または様々な実施形態において有用であり得る他の情報など、キーに関連付けられるメタデータなどの追加の情報がデータベース内に含まれ得る。さらに、例示の目的のために関係表が提供されるが、様々な実施形態を支援してデータを記憶する他の方法が使用され得る。
【0134】
ポリシーを施行するために使用される情報は、暗号サービスによって様々な方法で獲得され得る。図29は、本開示の様々な実施形態が実践され得る環境2900の例示的な例を示す。環境2900の構成要素は、上に記載されるものなどの構成要素を含み得る。例えば、例示されるように、環境2900は、ユーザデバイスを介して、データサービスフロントエンドシステム(データサービスフロントエンド)と対話するユーザを含むが、ユーザの代わりに、データサービスフロントエンドと対話するように構成される任意のコンピュータシステムであってもよい。さらに、例示されるように、該環境は、上に記載されるようなものであり得る、データサービスバックエンド記憶システム及び認証サービスを含む。加えて、該環境は、図29において、図中で外部暗号サービスと呼ばれる別の暗号サービスと区別するために内部暗号サービスと呼ばれる暗号サービスを含む。内部及び外部暗号サービスのいずれかまたは双方は、上に記載されるように、暗号サービスとして動作する。本明細書に記載されるすべての環境と同様に、変形は本開示の範囲内と見なされる。例えば、図29は、データサービスフロントエンドと通信するユーザを示すが、ユーザは、上に記載されるように、データサービスフロントエンドなしに暗号サービスと通信し得る。
【0135】
環境2900にさらに含まれるのは、ある実施形態において、内部暗号サービスからの要求に応じて、1つ以上の契約者にメッセージを発行するように少なくとも構成されるコンピュータシステム(例えば、コンピュータまたはコンピュータのネットワーク)である、メッセージサービスである。以下でより詳細に議論されるように、いくつかの要求は、環境2900内の構成要素が、メッセージサービスを使用して要求に関するメッセージを送信するように動作するきっかけとなり得る。例えば、いくつかのデータは、復号要求への応答を指定される時間量だけ遅延させなければならないという関連ポリシーを有するキーの下で暗号化されて記憶され得る。データを復号するための要求が提出される場合、ポリシーの施行は、遅延された応答及びメッセージサービスによって送られる通知をもたらし得る。この様態において、ユーザまたはメッセージを監視するコンピュータシステムは、遅延の間、復号要求をキャンセルするための要求を提出するか、または別の様式で復号要求をキャンセルさせる機会を有し得る。メッセージサービスは、メッセージを、電子メール、ショートメッセージサービス(SMS)、電話、ポケットベル、ファクシミリ、及び/またはメッセージサービスから別のエンティティへの情報の送信に使用可能な任意の好適な技術を含むがこれらに限定されない、1つ以上の技術を使用して1つ以上の契約者に送信し得る。
【0136】
図29に例示されるように、データサービスフロントエンドに提出される要求は、キーアクセスアノテーションを含み得る。例えば、示されるように、ユーザによって提出されるGET要求は、キーアクセスアノテーションを含む。キーアクセスアノテーションは、環境2900の1つ以上の構成要素によるポリシーの施行に必要な情報を含み得る。キーアクセスアノテーションは、キーを使用して生成される電子署名を含み得るか、あるいは別途それを提供される。署名を生成するために使用されるキーは、ユーザとポリシーを施行する環境2900の構成要素との間で共有されるキーであり得、または公開キーデジタル署名方式を利用するいくつかの実施形態において、該キーは、ユーザのプライベートキーであり得、それによって対応する公開キーを使用して署名を検証可能にする。ポリシーを施行する環境2900の構成要素は、電子署名を使用してキーアクセスアノテーション内の情報の真正性を検証し得、かつキーアクセスアノテーション内の情報を使用してポリシーが、要求が遂行されることを許可するかどうかを決定し得る。
【0137】
図29に例示されるように、環境2900のいくつかの構成要素のいずれかは、キーアクセスアノテーションを受信し、そのキーアクセスアノテーションをポリシーにおける施行に使用し得る。例えば、データサービスフロントエンドは、キーアクセスアノテーションを、上に記載されるように使用され得る暗号文及び承認証明とともに内部暗号サービスに渡し得る。内部暗号サービスは、キーアクセスアノテーションを使用して、内部暗号サービスによって管理されるキー上のポリシーを検証し得る。いくつかの実施形態において、キーアクセスアノテーションは、外部暗号サービスなどの別のサービスを識別する情報を含む。内部暗号サービスは、外部暗号サービスを識別する情報の検出時に、キーアクセスアノテーションを、複数の暗号サービスまたはキーアクセスアノテーションを使用する別のサービスのうちの1つであり得る外部暗号サービスに提供し得るが、そのような他のサービスは図29に例示されていない。
【0138】
上述のように、様々な実施形態に従って管理されるキーは、キーの使用の制約及び/または特権を符号化するポリシーと関連付けられ得る。ポリシー施行に関連する他の情報もまた、様々な実施形態に従って、そのようなキーと関連付けられ得る。図30は、キー3000(上に記載されるように、暗号サービスによって管理されるキーなど)の例示的な例、及びキー3000と関連付けて維持され得る(例えば、暗号サービスによって)情報例を示す。例示されるように、キー3000の1つ以上のポリシーを符号化するポリシー情報は、上に記載されるように、キー3000と関連付けて維持される。ある実施形態において、キーのセットもまた、キー3000と関連付けられて(例えば、データベースまたは他のデータ記憶システムによってキー3000と関連付けられて)維持される。関連付けは、任意の好適な様式で維持され得る。例えば、関係表または他の機序は、キー3000をキーのセット内のキーと直接関連させ得る。別の例として、関係表または他の機序は、キー3000を、キー3000と関連付けられたセット内のキーの識別子及び/またはキー3000と関連付けられたセット内のキーへの参照と関連させ得る。
【0139】
例えば、いくつかの実施形態において、使用キーセットからの1つ以上のキー及び管理キーセットからの1つ以上のキーは、キー3000と関連付けられて維持される。ある実施形態において、暗号サービスは、使用キーセット内のキーが、いくつかの実施形態において、少なくともいくつかの要求が遂行されるために必要であるように構成される。具体的には、いくつかの実施形態において、KeyIDによって識別されるキーを使用して操作を実行するための要求では、要求の遂行は、おそらくは他のことと一緒に、キーアクセスアノテーションが、使用キーセット内のキーに対応するキー(例えば、使用キーセット内の任意のキー、またはキーアクセスアノテーションによって指定される、または別途それと関連付けられた使用キーセット内のキー)によって電子(すなわち、デジタル)署名されることを必要とする。そのような署名が存在しない場合、要求は拒否され得る。使用キーセット内のキーに対応するキーは、使用セット内のキーまたはそれへの参照であり得るか、または使用キーセット内の公開キーに対応するプライベートキーであり得る(ここでは、公開キー及びプライベートキーが公開キーデジタル署名方式で使用される)。
【0140】
ある実施形態において、管理キーセット内のキーは、キー3000に関連付けられるキーのセットを改変する目的のために使用される。例えば、いくつかの実施形態において、使用キーセットもしくは管理キーセットのいずれか(または双方)を改変するための要求が遂行されるためには、管理キーセット内のキーに対応するキーを使用した電子署名が必要とされ得る。改変は、キーセットにキーを追加すること、キーセットからキーを削除すること、キーセット内のキーを別のキーと交換すること、キーセット内のキーを別のエンティティと再度関連付けること、及び/または他の改変を含み得る。言い換えると、使用キーセット及び/または管理キーセットを改変するためには、管理キーへのアクセスの証明が必要とされる。管理キーはまた、キー3000に適用可能なポリシーの改変及び/または他の管理行為のためなど、他の目的のためにも同様の方法で使用され得る。図30に例示されるように、キー3000はまた、操作ビットマスクにも関連付けられ得る。情報ビットマスクは、キー3000が使用され得る操作のセットを符号化する情報であり得るが、そのような情報はポリシーによって符号化され得る。
【0141】
セキュリティモジュールによって管理されるキーと関連付けられた様々なキーセットの使用は、多くの技術的利点を提供する。例えば、図30を参照すると、キー3000と関連付けられたキーセット内のキーが侵害される場合、キーセットを改変して、キー3000の変更を必要とせずにデータの危険な状態を防ぐことができる。別の例として、単一のエンティティが暗号文と暗号文を復号するのに必要なキーとの双方を有しないように、第三者キーを使用することができるため、平文にアクセスするためにはエンティティ間の共謀が必要とされる。
【0142】
図31は、ある実施形態に従う、キーアクセスアノテーション3100例の例示的代表を示す。図30において、キーアクセスアノテーション3100は、キーアクセスアノテーションが含まれる要求に関連したポリシーの施行に関連する情報を含む。この例において、キーアクセスアノテーションは、タイムスタンプ(TimeStamp)、及び操作記述子(OperationDescriptor)、キー所有者識別子(KeyHolderID)、KeyID、及び使用キーセットまたは管理キーセットからのキーの識別子を含むが、より少ないまたはより多くの情報が含まれ得る。
【0143】
ある実施形態において、キーアクセスアノテーション3100内の情報を使用して要求を遂行することができるかどうか決定する。具体的には、いくつかの実施形態において、キーアクセスアノテーション3100内の情報は、要求が遂行されるためには1つ以上の条件(電子署名の存在が必須であることに加えて)を満たさなければならない。例えば、いくつかの実施形態において、タイムスタンプは、要求が受信されるときのいくらかの閾値時間量内にある時間を示さなければならない。別の例として、キーアクセスアノテーションは、操作カウントウィンドウ内になければならないか、特定のデータと関連した特定の操作を承認しなければならないか、またはキーアクセスアノテーションを受信したエンティティによって施行される1つ以上の条件を別途満たさなければならない。
【0144】
KeyHolderIDは、本開示の様々な実施形態に従うフェデレーテッドキー管理を可能にする。図29を参照すると、例えば、KeyHolderIDは、KeyIDによって識別されるキーを識別する、または別の様式でそれの識別を可能にする情報であり得る。KeyHolderIDは、例えば、ユニフォームリソースロケータ(URL)、インターネットプロトコル(IP)アドレス、または対応するエンティティにキーアクセスアノテーション(例えば、アノテーションを含む要求を転送することによって)を提供するためにKeyHolderIDの使用を可能にする他の情報であり得る。いくつかの実施形態において、KeyHolderIDは、要求の受信者がKeyHolderIDを抽出し、適切な場合、その要求を適切な第三者に転送することができるように、KeyID内で符号化される。環境2900の内部暗号サービスは、例えば、要求のKeyHolderIDが、異なるエンティティを指定するかどうかを検出し、異なるエンティティを指定するKeyHolderIDの検出時には、要求(または、少なくとも部分的に要求に基づくほかの情報)を、上に記載されるような外部暗号サービス(例えば、異なるコンピューティングリソースプロバイダの暗号サービス)であり得る異なるエンティティに転送するように構成され得る。異なるエンティティは、本開示の様々な実施形態を利用して、要求に応答するかどうかを決定し、適切な場合は、暗号サービスを介して提供され得る、要求に対する応答を提供し得る。キーアクセスアノテーションがKeyHolderIDを欠く(または、KeyHolderIDが内部暗号サービスを指定する)場合、内部暗号サービスは、ポリシー及び要求遂行のための他の必要条件の遵守を仮定して、要求自体を遂行し得る。
【0145】
図32は、上に記載されるようなキーアクセスアノテーションと関連して提出される要求と関連してポリシーを施行するために使用され得るプロセス3200の例示的な例を示す。プロセス3200は、要求処理に関与した暗号サービスのデバイス(例えば、暗号サービスのためのフロントエンドAPIを実装するデバイス)など、任意の好適なデバイスによって実行され得る。暗号サービスは、上に記載されるような内部または外部暗号サービスであり得る。
【0146】
ある実施形態において、プロセス3200は、要求と関連してキーアクセスアノテーションを受信すること3202を含む。キーアクセスアノテーションは、要求とともに含まれるアノテーションであり得るか、または他の方法で受信され得る。例えば、キーアクセスアノテーションを有する要求は処理され得、処理の一部として、キーアクセスアノテーションは、プロセス3200(またはその変形)を実行するデバイスに提供され得る。キーアクセスアノテーションが受信されると、ある実施形態において、プロセス3200は、上に記載されるように、アノテーションを使用して参照署名を生成すること3204を含む。参照署名がアノテーションの署名と一致するかどうかの決定がなされ得る3206。代替の実施形態において、プロセス3200は、キーアクセスアノテーションを、セキュリティモジュールが参照署名を生成し、かつその参照署名がキーアクセスアノテーションの署名と一致するかどうかをチェックすることを可能にする情報とともに、セキュリティモジュールに提供することを含む。言い換えると、キーアクセスアノテーションの署名が有効であるかどうか決定することは、セキュリティモジュールからのそのような決定を獲得することによって実行され得る。
【0147】
参照署名がアノテーションの署名と一致すると決定される場合3206、プロセス3200は、要求内で指定されるKeyIDと関連付けられた任意のポリシーにアクセスすること3208を含み得る。ポリシーがKeyIDのために存在すると仮定して、プロセス3200は、アクセスされたポリシーが要求の遂行を許可するかどうかを決定すること3210を含む。ポリシーが要求の遂行を許可すると決定される場合3210、プロセス3200は、KeyHolderID(上に記載されるような)が外部エンティティを識別するかどうかを決定すること3212を含み得る。KeyHolderIDが外部エンティティを識別するかどうかを決定すること3212は、様々な実施形態に従う様々な方法で実行され得る。例えば、キーアクセスアノテーション内のKeyHolderIDの不在は、負の決定を示し得る一方、キーアクセスアノテーション内のKeyHolderIDの存在は、正の決定を示し得る。別の例として、KeyHolderIDは、内部エンティティ(例えば、内部暗号サービス)または外部エンティティ(例えば、外部暗号サービス)のいずれかを示す値を必要とされ得る。
【0148】
KeyHolderIDが外部エンティティを識別しないと決定される場合3212、プロセス3200は、上に記載されるように、要求を遂行すること3214を含み得る。しかしながら、KeyHolderIDが外部エンティティを識別すると決定される場合3212、プロセス3200は、要求を識別された外部エンティティに転送すること3216、及びそれに応じて要求実施を可能にする情報を受信すること3216を含み得る。情報は、例えば、外部エンティティによって暗号文を復号することによって獲得される平文、及び/または外部エンティティによって実行される暗号操作に少なくとも部分的に基づく情報であり得る。例示されていないが、他の情報もまた、追加で、または代替として受信され得る。例えば、外部エンティティが要求の遂行を許可しないことを独立して決定する場合(例えば、外部エンティティによって施行されるポリシーが、要求が遂行されることを許可しないため)、拒否を示す情報が提供され得る。要求遂行を可能にする情報が受信される3216と仮定すると、該プロセスは、上に記載されるように、要求を遂行すること3214を含み得る。例えば、要求遂行を可能にする受信された情報は、要求者に提供され得る。
【0149】
上に明示的に記載されるものに加えて変形もまた、本開示の範囲内であると見なされる。例えば、図32は、要求のために、電子署名ならびにポリシーを検証すること、及びその後、その要求(または少なくとも部分的にそれに基づく情報)を外部エンティティに転送することを例示する。本明細書内に例示されるすべてのプロセスと同様に、操作の順序は異なる場合がある。例えば、プロセス3200は、要求が、任意の署名及び/またはポリシー検証が行われる前に転送されるように、改変され得る。外部エンティティは、プロセス3200を実行するシステムに加えて、またはその代わりに署名及び/またはポリシー検証を実行し得る。例えば、いくつかの実施形態において、プロセス3200の操作を実行するシステムは、署名及び/またはポリシー検証を実行せず、そのような検証を外部エンティティに委任する。他の実施形態において、プロセス3200の操作を実行するシステムは、署名及び/またはポリシー検証を実行し、外部エンティティは、追加の署名及び/またはポリシー検証を実行する。外部エンティティは、例えば、要求が遂行される前にチェックされる場所に異なるキー及び/または異なるポリシーを有し得る。
【0150】
本開示の実施形態はまた、強化されたデータセキュリティを提供する技術も利用する。例えば、最善の努力にもかかわらず、セキュリティ違反は、様々なシステムに関連してしばしば発生する。そのような違反の影響を軽減するために、本開示の様々な実施形態は、違反を検出し、かつそれに応じて応答するための時間を提供する様態での要求処理を可能にする。例えば、いくつかの実施形態において、暗号化されたデータの復号及び/または復号されたデータへのアクセスは、遅延を必要とする。遅延は、例えば、システムの構成によって、またはシステムによって施行されるポリシーによって必要とされ得、ここでポリシーは、本明細書に記載される様々な実施形態に従って構成される)。そのような遅延は、例えば、規制または他の要件が、特定のデータをアーカイブすることを必要とするが、データが直ちに利用可能であることを必ずしも必要としないなど、暗号化されたデータへの迅速なアクセスが不必要な状況において、有用であり得る。
【0151】
図33は、様々な実施形態に従ってそのような遅延を提供するためのプロセス3300の例示的な例を示す。プロセス3300は、上に記載されるような内部または外部暗号サービスなどの暗号サービスによって実行され得る。ある実施形態において、プロセス3300は、KeyIDによって識別されるキーを使用して暗号文を復号するための要求を受信すること3302を含む。要求は、任意の好適な様態で受信され得る。例えば、要求は、上に記載されるように、ユーザから、またはデータサービスから受信され得る。ある実施形態において、KeyIDと関連付けられたポリシーがアクセスされる3304。しかしながら、ポリシーは、いくつかの実施形態において自動的に施行され得、その結果、ポリシーは、いくつかの実装においてアクセスされない場合があることに留意されたい。図33に例示される実施形態に関して、プロセス3300は、ポリシーが要求遂行を許可するかどうかを決定すること3306を含む。ポリシーが要求遂行を許可するかどうかの決定3306は、上に記載されるように、任意の好適な様態で実行され得る。
【0152】
アクセスされたポリシーが要求の遂行を許可すると決定される場合3306、プロセス3300は、アクセスされたポリシーのうちの1つ以上の中から時間遅延ポリシーを検出すること3308を含み得る。しかしながら、上に記載されるように、いくつかの実施形態において、時間遅延は自動であり得、その結果、そのようなポリシーの検出は発生しない場合がある。プロセス3300は、タイマーを初期化すること3310、及びアラームプロセスを実行することを含み得る。タイマーは、定められた時間量のタイマーであり得、それは、いくつかの実施形態において、構成可能な量であり、例えば、時間遅延ポリシーの一部として構成され得る。タイマーはまた、プロセス3300を実行するシステムのためのシステム構成セッティング内に規定され得る。アラームプロセスは、様々なアラーム動作の実行をもたらすように構成されるワークフローの実行を含み得る。アラーム動作は、例えば、通知システム(上に記載されるような)に1つ以上のメッセージを1つ以上の個人またはシステムに送信させることを含み得る。例えば、暗号化されたデータに関連付けられた組織の法令遵守責任者に通知され得る。別の例として、アラーム動作は、監査システムに、例えば、システムへの様々なアクセスと関連してより多くの情報が収集される、強化された監査を実行させることを含み得る。いくつかの実施形態において、アラーム動作はまた、アラームの可聴及び/または視覚的に示すものを含み得るアラーム信号伝達も含み得る。他のアラーム動作は、本開示の範囲内であると見なされる。
【0153】
タイマーの初期化時、プロセス3300は、タイマーが実際に満了したという決定がなされる3312まで、タイマーが満了したかどうかのチェックを実行すること3312を含み得る。いくつかの実施形態において、要求は、その遂行の前にキャンセルされ得る。要求をキャンセルすることは、情報を復号するための要求よりも厳しくない要件を必要とし得る。例えば、いくつかの実施形態において、要求は、システムへのアクセスを有する誰もが自明にキャンセルし得る。別の例として、アラーム動作は、選択されるときに、いくつかの実施形態において、メッセージの受信者の認証なしで、要求をキャンセルするための要求をキャンセルさせるハイパーリンクを含むメッセージの送信を含み得る。要求がキャンセルされることを可能にする他の方法もまた使用され得る。したがって、ある実施形態において、一旦タイマーが満了すると(またはタイマー満了前など、他の時に)、要求がキャンセルされたかどうかの決定がなされ得る3314。要求がキャンセルされたと決定される場合3314、プロセス3300は、例えば、KeyIDによって識別されるキーを使用して暗号文を復号し、結果として生じる平文を提供することによって、またはセキュリティモジュールに暗号文を復号させ、かつ対応する平文を提供させ、次いでその平文を要求者に転送するか、または別の様式で平文へのアクセスを提供することによって、要求を遂行すること3316を含み得る。しかしながら、要求がキャンセルされていないと決定される場合3314、及び/またはポリシーが要求の遂行を許可しないと決定される場合3306、プロセス3300は、上に記載されるように、要求を拒否することを含み得る。
【0154】
多くの他の変形が、本開示の範囲内である。例えば、いくつかの実施形態において、キーは、有効日を指定するポリシー、または別の様式で無期限ではない何らかの決定された有効期間を示すポリシーと関連付けられる。例えば、いくつかの実施形態において、キーは、キーが一定時間後、特定の日、あるいは1つ以上の条件を満たすときに破壊されるべきであることを指定するポリシーと関連付けられ得る。一例として、組織及び/または政府の規則、法律、ポリシー、または規制は、データが一定時間の間保持されるべきであることを指定し得る。そのようなデータを暗号化するために使用されるキー上のポリシー(例えば、データを暗号化するための暗号内で使用されるキー、またはその下でデータが暗号化される別のキーを暗号化するための暗号文内で使用されるキー)は、必要とされる時間の超過時に、キーは破壊されるべきである(すなわち、取り消し不能の形で誰もがアクセス不可能にさせる)ことを指定し得る。暗号サービスまたは他のシステムは、必要とされる時間の超過を検出し、それに応じてキーを破壊し得る。暗号サービスは、必要とされる時間の超過を多くの方法で検出し得る。例えば、いくつかの実施形態において、暗号サービスは、キー破壊のための時間を示す情報をその中に記憶したデータベースを維持する。暗号サービスによって実行される定期的なプロセスは、データベース内に破壊可能と示されるキーを破壊し得る。
【0155】
ポリシー有効日はまた、他の方法でも使用され得る。例えば、データの復号のために施行される時間遅延は、時間の経過とともに変化し得る。例えば、キーの下で暗号化されたデータが古くなると、データを復号するために施行される時間遅延は、減少し得る。別の例として、プリンシパルは、暗号サービスのAPIを介して更新可能であり得る指定された期間のみキーを使用して暗号操作を実行させる特権を有し得る。この様態において、個人がキーに関連付けて暗号操作を実行させる能力は、自動的に失効し得る。
【0156】
いくつかの実施形態において、要求は、暗号文を復号するための要求に加えて、またはそれの代替として、別の目的のためになされ得る。例えば、上に記載される様々な技術は、様々な種類のポリシー施行に適し得る。例えば、本開示の様々な実施形態に関連して利用されるポリシーは、ポリシーの有効時間を利用し得る。ポリシーの更新は、ポリシーの更新がポリシーを施行するシステムにおいて有効になる将来の時点を示す有効時間を有し得る。既存のポリシーは、いくつかまたはすべてのポリシー変更が特定の条件下で許容可能であることを必要とし得、その条件のうちの1つは、ポリシーの更新が、指定される先の時間(例えば、48時間)である有効時間を有する。要求は、データの復号に関与し得る、データの取得を可能にするためにポリシーを変更するためになされ得る。要求は、例えば、データが取得され得る前に満たされることが必要とされる条件を弱めるための要求であり得る。要求は、ポリシー変更の有効時間を指定し得る。ポリシーが適用するプリンシパルに関連してポリシーを施行するシステムは、有効時間が既存のポリシーに従っているかどうかに少なくとも部分的に基づいて要求を承認または拒否し得る。システムがポリシー変更を承認する場合、システムは、タイマー(少なくとも部分的に有効時間に基づき得る)を開始し、上に記載されるように、アラームプロセスを実行し得る。さらに、ポリシー変更は、上に記載されるように、要求が遂行されるまでキャンセル可能であり得る。この様態において、関係者は、通知及びデータへの不正アクセスを防止するための機会を提供され得る。
【0157】
他の変形もまた、本開示の範囲内であると見なされる。例えば、いくつかの実施形態において、データ記憶システムは、要求をキャンセルする、及び/または別の方法で潜在的なセキュリティ違反を防ぐための時間を提供するのに十分な、要求処理のための固有のレイテンシを有し得る。例えば、アーカイブデータ記憶システムは、要求に応答するデータが、要求が提出された数時間後に利用可能であり得る、非同期要求処理を利用し得る。さらに、要求に応答するデータは、システムなどの要因に依存し得る、異なる時間量の後に利用可能であり得る。そのようなシステムでは、タイマーは、固有のレイテンシに起因して、不必要であり得る。
本開示の実施形態は、以下の付記を考慮して説明することができる。
1.コンピュータ実装方法であって、
実行可能な命令で構成される1つ以上のコンピュータシステムの制御下で、
要求者から暗号操作を実行するための要求を受信することであって、該要求が情報及び少なくとも部分的に該情報に基づいて生成される電子署名を含み、該電子署名が第2のキーに対応する1つ以上のキーのセットのうちの第1のキーで検証可能である、受信することと、
該要求が複数のキー所有者のうちのキー所有者を指定するかどうかを検出することと、
該要求が複数のキー所有者のうちの特定のキー所有者を検出した結果、特定のキー所有者に、少なくとも
少なくとも部分的に該情報及び第1のキーに基づいて、電子署名が有効であるかどうかを決定させ、
少なくとも部分的に該情報に基づいて、該情報が要求を遂行するための1つ以上の条件を満たすかどうかを決定させることと、
特定のキー所有者が、電子署名は有効であり、該情報は1つ以上の条件を満たすと決定した結果、特定のキー所有者から、要求を遂行するために必要な応答情報を獲得することであって、該応答情報が、第2のキーを使用して実行される1つ以上の暗号操作に少なくとも部分的に基づいて生成されている、獲得することと、
獲得した応答情報を使用して、要求者に、要求への応答を提供することと、を含むコンピュータ実装方法。
2.特定のキー所有者が第三者によってホストされるコンピュータシステムである、付記1に記載のコンピュータ実装方法。
3.第2のキーに対応する1つ以上のキーのセットが、複数のキーを含み、該複数のキーの各キーを、要求の遂行のために必要とされる条件の充足を検証することに使用可能な、付記1または2に記載のコンピュータ実装方法。
4.暗号操作を実行するための第2の要求を受信することであって、第2の要求が第2の情報及び少なくとも部分的に第2の情報に基づいた第2の電子署名を含み、電子署名が第4のキーに対応する1つ以上のキーの第2のセットのうちの第3のキーで検証可能である、受信することと、
少なくとも部分的に第2の情報及び第3のキーに基づいて、第2の電子署名が有効であるかどうかを決定することと、
少なくとも部分的に第2の情報に基づいて、情報が第2の要求を遂行するための1つ以上の第2の条件を満たすかどうかを決定することと、
第2の電子署名が有効であり、第2の情報が1つ以上の第2の条件を満たすことを決定した結果、第4のキーを使用して第2の要求を遂行するための1つ以上の暗号操作を実行することと、をさらに含む、付記1~3のいずれか一項に記載のコンピュータ実装方法。
5.要求を遂行するための1つ以上の条件が、第2のキーに対応する1つ以上のポリシーによって定義される、付記1~4のいずれか一項に記載のコンピュータ実装方法。
6.第2のキーが平文形態において1つ以上のコンピュータシステムにアクセス不可能である、付記1~5のいずれか一項に記載のコンピュータ実装方法。
7.コンピュータ実装方法であって、
実行可能な命令で構成される1つ以上のコンピュータシステムの制御下で、
要求に関連して、情報及び電子署名を、少なくとも部分的に該情報の少なくとも一部に基づいて、受信することと、
複数のキー所有者から、該情報内で指定される、第2のキーの所有者を検出することと、
第2のキーの所有者を検出した結果、第2のキーの所有者に、
少なくとも部分的に該情報の一部、及び第2のキーに関連付けられる第1のキーに基づいて、電子署名が有効であるかどうかを決定させ、かつ
署名が有効であることを決定した結果、第2のキーを使用して1つ以上の暗号操作を実行させることと、
第2のキーの所有者から得られる1つ以上の暗号の1つ以上の結果を使用して、要求を遂行することと、を含む、方法。
8.第1のキーが、第2のキーに対応する1つ以上のキーのセットの要素であり、1つ以上のキーのセットの各キーが、対応する要求が遂行されるためには有効であることが必要とされる電子署名を検証するために使用可能である、付記7に記載のコンピュータ実装方法。
9.第2のキーの所有者が第三者である、付記7または8に記載のコンピュータ実装方法。
10.1つ以上のコンピュータシステムが、平文形態にある第2のキーへのアクセスを欠く、付記7~9のいずれか一項に記載のコンピュータ実装方法。
11.該情報が1つ以上の値を含み、
該方法が、1つ以上の値が1つ以上の条件を満たすかどうかを決定することをさらに含み、
要求を遂行することが、1つ以上の値が1つ以上の条件を満たすことを決定することに依存する、付記7~10のいずれか一項に記載のコンピュータ実装方法。
12.第2のキーの所有者が1つ以上のコンピュータシステムである、付記7~11のいずれか一項に記載のコンピュータ実装方法。
13.システムであって、
1つ以上のプロセッサと、
メモリであって、1つ以上のプロセッサによって実行されるとき、コンピュータシステムに、
第1のキーと関連した1つ以上のキーのセットを記憶させ、
遂行のために第1のキーの使用を必要とする要求を受信させ、かつ
第1のキーが第三者によって保有された結果、第三者に、
1つ以上のキーのセットから第2のキーを使用して、要求が遂行されるべきかどうかを決定させ、かつ
要求が遂行されるべきであると決定した結果、第1のキーを使用して1つ以上の暗号操作を実行させる、命令を含む、メモリと、を備える、システム。
14.第1のキーの所有者が第三者システムである、付記13に記載のシステム。
15.1つ以上のキーのセットが、管理キーのサブセットを含み、それぞれが、1つ以上のキーのセットの変更に必要とされる電子署名検証に使用可能な、付記13または14に記載のシステム。
16.システムが、エンティティによってホストされ、エンティティが平文形態にある第1のキーへのアクセスを欠く、付記13~15のいずれか一項に記載のシステム。
17.要求が第1のキーを指定する、付記13~16のいずれか一項に記載のシステム。
18.1つ以上のキーのセットから第2のキーを使用して、要求が遂行されるべきかどうかを決定することが、第2のキーを使用して、要求と関連して提出される電子署名を検出することを含む、付記13~17のいずれか一項に記載の前記システム。
19.1つ以上のコンピュータ可読記憶媒体であって、コンピュータシステムの1つ以上のプロセッサによって実行されるとき、コンピュータシステムに、
1つ以上のキーのセットを第1のキーと関連付けさせ、かつ
1つ以上のキーの前記セットからの第2のキーを使用して、少なくとも、第1のキーの所有者に1つ以上の暗号操作において第1のキーを使用させることによって、要求の遂行を可能にするかどうかを決定させる、命令をそこに記憶している、コンピュータ可読記憶媒体。
20.第1のキーの所有者が第三者である、付記19に記載の1つ以上のコンピュータ可読記憶媒体。
21.要求が要求情報に関連して提出され、
命令がさらに、コンピュータシステムに、要求情報に対する1つ以上の条件が満たされることを検証させ、
1つ以上の条件の充足が、要求の遂行を可能にするために必要とされる、付記19または20に記載の1つ以上のコンピュータ可読記憶媒体。
22.1つ以上のキーのセットが管理キーのサブセットを含み、
管理キーのサブセット内の各管理キーが、1つ以上のキーのセットを変更するための要求を遂行するかどうかの決定に使用可能である、付記19~21のいずれか一項に記載の1つ以上のコンピュータ可読記憶媒体。
23.1つ以上のキーのセットを変更することが、キーを追加すること、または1つ以上のキーのセットからキーを削除することを含む、付記22に記載の1つ以上のコンピュータ可読記憶媒体。
24.要求が第1のキーの所有者を識別する情報と関連して提出される、付記19~23のいずれか一項に記載の1つ以上のコンピュータ可読記憶媒体。
25.第1のキーの所有者がコンピュータシステムである、付記19~24のいずれか一項に記載の1つ以上のコンピュータ可読記憶媒体。
【0158】
図34は、様々な実施形態に従う態様を実装するための環境3400例の態様を例示する。理解されるように、ウェブベースの環境が説明の目的で使用されるが、異なる環境もまた、必要に応じて、様々な実施形態を実装するために使用され得る。該環境は、適切なネットワーク3404を介して要求、メッセージ、または情報を送受信し、情報をデバイスのユーザに返送するために操作可能な任意の適切なデバイスを含むことができる、電子クライアントデバイス3402を含む。そのようなクライアントデバイスの例としては、パーソナルコンピュータ、携帯電話、ハンドヘルドメッセージングデバイス、ラップトップコンピュータ、セットトップボックス、携帯情報端末、電子書籍リーダ等が挙げられる。ネットワークは、イントラネット、インターネット、セルラーネットワーク、ローカルエリアネットワーク、もしくは他のそのようなネットワーク、またはその組み合わせを含む、任意の適切なネットワークを含むことができる。そのようなシステムに使用される構成要素は、選択されるネットワーク及び/または環境の種類に少なくとも部分的に依存し得る。そのようなネットワークを介した通信のためのプロトコル及び構成要素は、周知であり、本明細書内では詳細に議論されない。ネットワークを介した通信は、有線または無線接続、及びその組み合わせによって可能にされ得る。この例において、該環境は、要求を受信し、それに応じてコンテンツを供給するためのウェブサーバ3406を含むため、ネットワークはインターネットを含むが、他のネットワークでは、同様の目的を果たす代替のデバイスを使用することができることは、当業者には明らかであろう。
【0159】
例示的な環境は、少なくとも1つのアプリケーションサーバ3408及びデータストア3410を含む。連結されるか、または別の様式で構成され得、適切なデータストアからデータを得ることなどのタスクを実行するために対話することができる、いくつかのアプリケーションサーバ、レイヤ、もしくは他の要素、プロセス、または構成要素が存在し得ることを理解されたい。本明細書内で使用される場合、「データストア」という用語は、データの記憶、アクセス、取得が可能な任意のデバイスまたはデバイスの組み合わせを指し、任意の標準、分散、またはクラスタ環境にある、任意の組み合わせ及び数のデータサーバ、データベース、データ記憶デバイス、及びデータ記憶媒体を含み得る。アプリケーションサーバは、クライアントデバイスのための1つ以上のアプリケーションの態様を実行するために必要に応じてデータストアと統合するための任意の適切なハードウェア及びソフトウェアを含むことができ、アプリケーションのデータアクセス及びビジネスロジックの大部分を処理する。アプリケーションサーバは、データストアと協働してアクセス制御サービスを提供し、ユーザに送信されるテキスト、グラフィック、オーディオ、及び/またはビデオなどのコンテンツを生成することができ、それらは、ハイパーテキストマークアップ言語(「HTML」)、拡張マークアップ言語(「XML」)、またはこの例における別の適切な構造化言語の形態で、ウェブサーバによってユーザに供給され得る。すべての要求及び応答の処理、ならびにクライアントデバイス3402とアプリケーションサーバ3408との間のコンテンツの配信は、ウェブサーバによって処理され得る。本明細書において論じられる構造化符号は、本明細書の他の部分で論じられるような任意の適切なデバイスまたはホストマシン上で実行され得るため、ウェブ及びアプリケーションサーバは必要とされず、単に例示の構成要素であることを理解されたい。
【0160】
データストア3410は、特定の態様に関してデータを記憶するために、いくつかの別個のデータテーブル、データベース、または他のデータ記憶機序及び媒体を含むことができる。例えば、例示されるデータストアは、プロダクション側のコンテンツを供給するために使用することができる、プロダクションデータ3412、ユーザ情報3416を記憶するための機序を含む。データストアはまた、報告、分析、またはそのような目的に使用することができる、ログデータ3414を記憶するための機序を含むことも示される。ページ画像情報のため、及び正しい情報にアクセスするためなどにデータストア内に記憶される必要があり得る多くの他の態様があり得、それらの情報を、必要に応じて上に列挙された機序内、またはデータストア3410内の追加の機序内に記憶することができることを理解されたい。データストア3410は、それと関連付けられたロジックを介して、アプリケーションサーバ3408から命令を受信し、それに応じて、データを獲得、更新、または別の様式で処理するように操作可能である。一例として、ユーザはある特定の種類のアイテムの検索要求を提出してもよい。この場合、データストアは、ユーザ情報にアクセスして、ユーザのアイデンティティを検証してもよく、及びカタログ詳細情報にアクセスして、その種類のアイテムに関する情報を獲得することができる。情報は次いで、ユーザがユーザデバイス3402上のブラウザを介して閲覧することができるウェブページ上に列挙する結果内などで、ユーザに戻され得る。対象の特定のアイテムの情報を、ブラウザの専用ページまたはウィンドウ内で閲覧することができる。
【0161】
各サーバは、典型的には、一般管理及びそのサーバの操作のための実行可能なプログラム命令を提供するオペレーティングシステムを含み、典型的には、サーバのプロセッサによって実行されるとき、サーバがその意図される機能を実行することを許可する命令を記憶するコンピュータ可読記憶媒体(例えば、ハードディスク、ランダムアクセスメモリ、読出し専用メモリ等)を含む。オペレーティングシステム及びサーバの一般的な機能性の好適な実装は、既知であるか、市販されており、特に本明細書における開示に照らして、当業者によって容易に実装される。いくつかの実施形態において、オペレーティングシステムは、評価保証レベル(EAL)レベル4などの1つ以上の検証体制に従って、またはその下で構成され得る。
【0162】
一実施形態における環境は、1つ以上のコンピュータネットワークまたは直接接続を使用して、いくつかのコンピュータシステム及び通信リンクを介して相互接続される構成要素を利用する分散コンピューティング環境である。しかしながら、当業者には、そのようなシステムは、図34に例示されるよりも少数または多数の構成要素を有するシステム内で等しく良好に動作し得ることが理解されよう。そのため、図34におけるシステム3400の描写は、本質的に例示的であると見なされるべきであり、本開示の範囲に限定するものではない。
【0163】
様々な実施形態はさらに、多種多様な動作環境で実装することができ、場合によっては、1つ以上のユーザコンピュータ、コンピューティングデバイス、または多数のアプリケーションのうちのいずれかを操作するために使用することができる処理デバイスを含み得る。ユーザまたはクライアントデバイスは、標準オペレーティングシステムを運用するデスクトップまたはラップトップコンピュータ、ならびにモバイルソフトウェアを運用し、多数のネットワーキング及びメッセージングプロトコルを支援することができる携帯、ワイヤレス、及びハンドヘルドデバイスなどの多数の汎用パーソナルコンピュータのうちのいずれかを含むことができる。そのようなシステムはまた、開発やデータベース管理などの目的のための、多数の市販のオペレーティングシステム及び他の既知のアプリケーションのうちのいずれかを運用する多数のワークステーションも含むことができる。これらのデバイスは、ダミー端子、シンクライアント、ゲーミングシステム、及びネットワークを介して通信できる他のデバイスなど、他の電子デバイスも含むことができる。
【0164】
大半の実施形態は、トランスミッションコントロールプロトコル/インターネットプロトコル(Transmission Control Protocol/Internet Protocol)(「TCP/IP」)、開放型システム間相互接続(Open System Interconnection)(「OSI」)、ファイルトランスファープロトコル(File Transfer Protocol)(「FTP」)、ユニバーサルプラグアンドプレイ(Universal Plug and Play)(「UpnP」)、ネットワークファイルシステム(Network File System)(「NFS」)、コモンインターネットファイルシステム(Common Internet File System)(「CIFS」)、及びアップルトーク(AppleTalk)など、多様な市販のモデル及びプロトコルのうちのいずれかを使用して支援するための、当業者によく知られている少なくとも1つのネットワークを利用する。ネットワークは、例えば、ローカルエリアネットワーク、広域ネットワーク、仮想プライベートネットワーク、インターネット、イントラネット、エクストラネット、公衆交換電話網、赤外線ネットワーク、ワイヤレスネットワーク、及びそれらの任意の組み合わせであり得る。
【0165】
ウェブサーバを利用する実施形態において、ウェブサーバは、ハイパーテキストトランスファープロトコル(Hypertext Transfer Protocol)(「HTTP」)サーバ、FTPサーバ、コモンゲートウェイインタフェース(Common Gateway Interface)(「CGI」)サーバ、データサーバ、Javaサーバ、及びビジネスアプリケーションサーバを含む、多様なサーバまたは中間層アプリケーションのうちのいずれかを運用することができる。サーバ(複数可)はまた、Java(登録商標)、C、C#、もしくはC++などの任意のプログラミング言語、またはPerl、Python、もしくはTCLなどの任意のスクリプト言語、ならびにそれらの組み合わせで書かれた1つ以上のスクリプトまたはプログラムとして実装され得る1つ以上のウェブアプリケーションを実行することによってなど、ユーザデバイスからの要求に応じてプログラムまたはスクリプトを実行することもでき得る。サーバ(複数可)はまた、Oracle(登録商標)、Microsoft(登録商標)、Sybase(登録商標)、及びIBM(登録商標)から市販されるものを含むがこれらに限定されない、データベースサーバも含み得る。
【0166】
該環境は、上述のように、多様なデータストア及び他のメモリ記憶媒体を含むことができる。これらは、コンピュータのうちの1つ以上に対してローカルである(及び/またはその中に存在する)か、またはネットワーク全体のコンピュータのいずれかもしくはすべてから遠隔にある記憶媒体上など、多様な場所に存在することができる。実施形態の特定の一式において、情報は、当業者によく知られているストレージエリアネットワーク(「SAN」)内に存在し得る。同様に、コンピュータ、サーバ、または他のネットワークデバイスに属した関数を実行するための任意の必須ファイルは、必要に応じて、ローカルに及び/または遠隔に記憶され得る。システムがコンピュータ化デバイスを含む場合、そのようなデバイスはそれぞれ、バスを介して電子的に連結され得るハードウェア要素を含むことができ、該要素は、例えば、少なくとも1つの中央処理ユニット(「CPU」)、少なくとも1つの入力デバイス(例えば、マウス、キーボード、コントローラ、タッチスクリーン、またはキーパッド)、及び少なくとも1つの出力デバイス(例えば、ディスプレイデバイス、プリンタ、またはスピーカ)を含む。そのようなシステムはまた、ディスクドライブ、光学記憶デバイス、ランダムアクセスメモリ(「RAM」)または読出し専用メモリ(「ROM」)などの固体記憶デバイス、ならびに可換型媒体デバイス、メモリカード、フラッシュカード等の、1つ以上の記憶デバイスも含み得る。本開示の様々な実施形態はまた、カスタム暗号プロセッサ、スマートカード、及び/またはハードウェアセキュリティモジュールを含むがこれに限定されないカスタムハードウェアを使用して実装され得る。
【0167】
そのようなデバイスはまた、コンピュータ可読記憶媒体リーダ、通信デバイス(例えば、モデム、ネットワークカード(無線または有線)、赤外線通信デバイス等)、及び上に記載されるようなワーキングメモリを含むこともできる。コンピュータ可読記憶媒体リーダは、遠隔、ローカル、固定、及び/または可換型記憶デバイスを意味するコンピュータ可読記憶媒体、ならびに一時的に及び/またはより永久的にコンピュータ可読情報を含有、記憶、送信、及び取得するための記憶媒体と接続され得るか、またはそれらを受信するように構成され得る。システム及び様々なデバイスはまた、典型的には、クライアントアプリケーションまたはウェブブラウザなどのオペレーティングシステム及びアプリケーションプログラムを含む、多数のソフトウェアアプリケーション、モジュール、サービス、または少なくとも1つのワーキングメモリデバイス内に位置する他の要素も含む。代替の実施形態は、上述されるのものからの多数の変形を有し得ることを理解されたい。例えば、カスタマイズされたハードウェアが使用されてもよく、及び/または特定の要素をハードウェア、ソフトウェア(アプレットなどのポータブルソフトウェアを含む)、もしくはその両方に実装してもよい。さらに、ネットワーク入力/出力デバイスなどの他のコンピューティングデバイスへの接続が用いられ得る。
【0168】
符号または符号の一部を含むための記憶媒体及びコンピュータ可読媒体は、RAM、ROM、電子的消去可能プログラマブル読出し専用メモリ(Electrically Erasable Programmable Read-Only Memory)(「EEPROM」)、フラッシュメモリ、もしくは他のメモリ技術、コンパクトディスク読出し専用メモリ(Compact Disc Read-Only Memory)(「CD-ROM」)、デジタルバーサタイルディスク(DVD)、もしくは他の光学ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、もしくは他の磁気ストレージデバイス、または所望の情報を記憶するために使用することができ、かつシステムデバイスによってアクセスされ得る任意の他の媒体をはじめとする、限定するものではないが、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報の記憶及び/または送信のために任意の方法及び技術で実装される揮発性及び非揮発性、可換型及び非可換型媒体などの記憶媒体及び通信媒体を含む当該術分野において既知の、または使用される任意の適切な媒体を含むことができる。本明細書で提供される開示及び教示に基づいて、当業者であれば、様々な実施形態を実装するための他の手段及び/または方法を理解するであろう。
【0169】
本明細書及び図面は、したがって、制限的な意味ではなく、例示的と見なされるものである。しかしながら、様々な修正及び変更が、特許請求の範囲に記載される本発明のより広義の趣旨及び範囲から逸脱することなく、そこになされ得ることは明らかであろう。
【0170】
他の変形は本開示の趣旨内にある。そのため、開示される技術は、様々な修正及び代替構成の影響を受けやすいが、その特定の例示される実施形態が図面に示され、上に詳細に記載されている。しかしながら、本発明を開示される特定の形態(複数可)に限定する意図はなく、反対に、添付の特許請求の範囲に定義されるような、本発明の趣旨及び範囲内に含まれるすべての修正、代替構成、及び等価物を網羅することを理解されたい。
【0171】
開示される実施形態を説明する文脈における(特に以下の特許請求の範囲の文脈における)「a」、「an」、及び「the」という用語及び同様の指示語の使用は、本明細書において別段の指示がない限り、または文脈に明らかに矛盾するものでない限り、単数及び複数の双方を網羅すると解釈される。「備える(comprising)」、「有する(having)」、「含む(including)」、及び「含有する(containing)」という用語は、別段の記載がない限り、制限のない用語(すなわち、「含むが、それに限定されない」を意味する)として解釈される。「接続される(connected)」という用語は、介在するものがある場合でも、部分的または全体的に、その中に含有される、そこに取り付けられる、一緒に接合されるものと解釈される。本明細書における値の範囲の列挙は、本明細書において別段の指示がない限り、単にその範囲内に含まれるそれぞれ別個の値を個別に参照する簡略的な方法として機能することが意図され、それぞれ別個の値は、本明細書において個別に列挙されるかのように、本明細書に組み込まれる。本明細書内に記載されるすべての方法は、本明細書において別段の指示がない限り、または文脈と明らかに矛盾しない限り、任意の適切な順序で実行され得る。本明細書内に提供される任意及びすべての実施例、または例示的言語(例えば、「など」)の使用は、単に本発明の実施形態をより良く明らかにすることが意図され、別段の請求がない限り、本発明の範囲に対して制限を課すものではない。本明細書内のいかなる言い回しも、任意の請求されていない要素を本発明の実施に必須であると示すものとして解釈されるべきではない。
【0172】
本開示の好ましい実施形態は、本発明を実効するために発明者らに既知の最良の形態を含んで説明される。それらの好ましい実施形態の変形は、前述の説明を読むことで当業者に明らかとなり得る。発明者らは、当業者がそのような変形を必要に応じて用いることを予期し、及び発明者らは、本発明が本明細書内に具体的に記載されるものとは別の様式で実施されることを意図する。したがって、本発明は、適用可能な法律によって許可されるように、本明細書に添付される特許請求の範囲に列挙される主題のすべての修正及び等価物を含む。さらには、上述の要素の、その全ての可能な変形にある、任意の組み合わせは、本明細書において別段の指示がない限り、またはさもなければ文脈と明らかに矛盾しない限り、本発明によって包含される。
【0173】
本明細書において引用される出版物、特許出願、及び特許を含むすべての参照文献は、各参照文献が参照により組み込まれるように個別かつ特定的に示され、その全体が本明細書内に記載されるのと同じ程度に、参照により本明細書内に組み込まれる。
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24
図25
図26
図27
図28
図29
図30
図31
図32
図33
図34