(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-04-11
(45)【発行日】2025-04-21
(54)【発明の名称】鍵共有を使用するデータのセキュア化
(51)【国際特許分類】
H04L 9/08 20060101AFI20250414BHJP
G06F 21/60 20130101ALI20250414BHJP
【FI】
H04L9/08 D
G06F21/60 320
H04L9/08 E
(21)【出願番号】P 2023503094
(86)(22)【出願日】2020-12-23
(86)【国際出願番号】 US2020066957
(87)【国際公開番号】W WO2022015359
(87)【国際公開日】2022-01-20
【審査請求日】2023-12-22
(32)【優先日】2020-07-16
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-07-16
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】523016043
【氏名又は名称】セールスフォース,インコーポレイティッド
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(74)【代理人】
【識別番号】100135079
【氏名又は名称】宮崎 修
(72)【発明者】
【氏名】ペッダダ,プラサド
(72)【発明者】
【氏名】エルガマル,ターヘル
(72)【発明者】
【氏名】ジョンソン,アーロン
(72)【発明者】
【氏名】ゲスト,ライアン
【審査官】青木 重徳
(56)【参考文献】
【文献】特開2010-166432(JP,A)
【文献】特表2018-507652(JP,A)
【文献】特表2014-514860(JP,A)
【文献】米国特許出願公開第2015/0019442(US,A1)
【文献】米国特許出願公開第2015/0288514(US,A1)
【文献】米国特許出願公開第2019/0173672(US,A1)
【文献】米国特許出願公開第2018/0375838(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/08
G06F 21/60
(57)【特許請求の範囲】
【請求項1】
アプリケーションサーバを使用してクライアントデータをセキュア化するためのコンピュータ実装方法であって、
アプリケーションサーバによって、ネットワーク接続を介してセキュリティサーバから受信された鍵識別子を記憶することであって、前記鍵識別子は、秘密鍵に関連付けられ、前記秘密鍵は、前記セキュリティサーバによってアクセス可能であり、かつ前記アプリケーションサーバによってアクセス不可能であり、前記アプリケーションサーバは、ネットワークを介して複数のクライアントデバイスとも通信する、記憶することと、
前記アプリケーションサーバから前記セキュリティサーバへ、対称鍵を導出する要求を送信することであって、前記要求は、前記鍵識別子を記憶した後に受信され、前記要求は、前記アプリケーションサーバによって生成された公開鍵、ソルト値、及び前記鍵識別子を含む、送信することと、
前記アプリケーションサーバによって、前記セキュリティサーバから前記対称鍵を受信することであって、前記対称鍵は、送信された前記公開鍵及び前記鍵識別子に関連付けられた前記秘密鍵に基づいて、鍵導出関数を使用して導出され、前記対称鍵は、前記アプリケーションサーバのメモリ内キャッシュに記憶される、受信することと、
前記アプリケーションサーバによって、前記複数のクライアントデバイスのうちの1つから受信したデータを、前記対称鍵を使用して暗号化することであって、前記暗号化されたデータは、前記アプリケーションサーバと通信する永続性ストレージに記憶される、暗号化することと、を含む、方法。
【請求項2】
前記公開鍵と前記鍵識別子に関連付けられた前記秘密鍵の両方が、楕円曲線上の異なる点に対応する、請求項1に記載の方法。
【請求項3】
前記公開鍵と前記鍵識別子に関連付けられた前記秘密鍵は、Diffie-Hellman鍵交換のコンポーネントである、請求項1に記載の方法。
【請求項4】
前記アプリケーションサーバによって、前記対称鍵をローテーションする要求を送信することであって、前記ローテーションする要求は、異なる公開鍵、異なるソルト、及びプライベートサーバがアクセス可能な異なる秘密鍵に関連付けられた異なる鍵識別子を含む、送信することと、
前記アプリケーションサーバによって、前記ローテーションする要求に応答して、前記セキュリティサーバから異なる対称鍵を受信することであって、前記異なる対称鍵は、前記異なる公開鍵及び前記異なる秘密鍵に基づいて、前記鍵導出関数を使用して導出され、前記異なる対称鍵は、前記対称鍵にリンクされ、さらに、前記アプリケーションサーバのメモリ内キャッシュに記憶される、受信することと、
前記アプリケーションサーバによって、前記異なる対称鍵を使用して前記複数のクライアントデバイスのうちの1つからのデータを暗号化することと、をさらに含む、請求項1に記載の方法。
【請求項5】
前記異なる対称鍵を受信することに応答して、対称鍵のリストから前記対称鍵を削除することをさらに含み、前記対称鍵のリストは、前記アプリケーションサーバに関連付けられる、請求項4に記載の方法。
【請求項6】
前記アプリケーションサーバによって使用される対称鍵をリストするデータ構造を維持することをさらに含み、前記
データ構造は、各行に対して、各対称鍵に使用される公開鍵、各対称鍵に使用されるソルト、及び各対称鍵に使用される鍵識別子を含む、請求項4に記載の方法。
【請求項7】
前記秘密鍵は、前記セキュリティサーバと通信する鍵管理サービスから取得され、前記鍵管理サービスは、前記セキュリティサーバがアクセス可能な複数の秘密鍵を記憶する、請求項1に記載の方法。
【請求項8】
鍵導出関数は、暗号ハッシュ関数を鍵共有鍵及び前記ソルト値に適用し、前記鍵共有鍵は、前記公開鍵と前記鍵識別子に関連付けられた前記秘密鍵に適用される鍵共有プロトコルを使用して生成される、請求項1に記載の方法。
【請求項9】
クライアントデータをセキュア化するための装置であって、
アプリケーションサーバの1つ以上のプロセッサと、
複数の命令を記憶する非一時的なコンピュータ可読媒体であって、前記複数の命令は、実行されるときに、前記1つ以上のプロセッサに、請求項1~8のいずれか一項に記載の方法を実行させる、装置。
【請求項10】
非一時的なコンピュータ可読媒体から検索されたときに、1つ以上のプロセッサによって実行されるコンピュータ可読のプログラムコードを含むコンピュータプログラムであって、前記プログラムコードは、前記1つ以上のプロセッサに請求項1~8のいずれか一項に記載の方法を実行させる、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
この特許文献の開示の一部分は、著作権保護の対象となる資料を含む。特許文献又は特許の開示は米国特許商標庁の特許ファイル又は記録にあるので、著作権者は、そのファクシミリによる複製に異論はないが、他の点についてはどんなものであれすべて著作権を保有する。
【関連技術】
【0002】
本開示は、一般に、データ処理に関し、より具体的には、データの暗号化及び復号に関する。
【背景技術】
【0003】
背景技術のセクションで議論された主題は、背景技術のセクションでの言及の結果だけで先行技術と仮定されるべきではない。同様に、背景技術のセクションで言及されたか、又は背景技術のセクションの主題に関連付けられた問題は、先行技術において以前に認識されていたと仮定されるべきではない。背景技術のセクションでの主題事項は、単に異なるアプローチを表すに過ぎず、それ自体が発明であってもよい。
【0004】
開示された技術を参照して、以下の詳細な説明が行われる。特許請求の範囲によって定義される範囲を限定するためではなく、開示される技術を例示するために、好ましい実装が記載される。当業者であれば、本説明に対する様々な均等なバリエーションを認識するであろう。
【0005】
記憶領域(例えば、データベース、データストアなど)に記憶されたデータ(例えば、顧客データ)をセキュア化するための既存のアプローチは、非対称又は対称暗号に基づくことがある。非対称暗号では、公開鍵と秘密鍵の鍵のペアが使用される。顧客データは、公開鍵を使用して暗号化し、対応する秘密鍵を使用して復号され得る。典型的には、非対称鍵ペアの公開鍵を使用してデータを暗号化することは非常に低速である。代わりに、対称鍵を使ってデータを暗号化することが許容可能な実施である。対称鍵自体が公開鍵で暗号化され、それによって非対称鍵暗号の性能問題を解決している。
【発明の概要】
【0006】
マルチテナントデータベース環境において顧客データをセキュア化するための方法とシステムについて記載されている。ネットワーク接続を介してセキュリティサーバから受信された鍵識別子は、アプリケーションサーバによって記憶されてもよい。鍵識別子は、秘密鍵に関連付けられてもよく、秘密鍵は、セキュリティサーバによってアクセス可能であり、アプリケーションサーバによってアクセス不可能である。アプリケーションサーバはまた、ネットワークを介して複数のクライアントデバイスと通信してもよい。対称鍵を導出するための要求は、アプリケーションサーバからセキュリティサーバへ送信されてもよい。要求は、アプリケーションサーバが鍵識別子を記憶した後に送信されてもよく、アプリケーションサーバによって生成された公開鍵、ソルト値、及び鍵識別子を含んでもよい。次いで、対称鍵は、送信された公開鍵と秘密鍵に基づいて、鍵導出関数を使用してセキュリティサーバによって導出され、アプリケーションサーバに送信される。次いで、アプリケーションサーバは、対称鍵をアプリケーションサーバのメモリ内キャッシュに記憶し、複数のクライアントデバイスのうちの1つから受信したデータを暗号化するために使用されてもよい。
【0007】
本発明の他の態様及び利点は、後続の図面、詳細な説明及び特許請求の範囲のレビューに見られ得る。
【図面の簡単な説明】
【0008】
含まれている図面は、例示のためのものであり、開示された技術のための可能な構造及びプロセスステップの例を提供することのみに役立つ。これらの図面は、本開示の精神及び範囲から逸脱することなく、当業者によって実施形態になされ得る形態及び詳細の任意の変更を決して制限しない。
【0009】
【
図1】本発明のいくつかの実施形態で使用され得る例示的なコンピューティングシステムの図を示す。
【0010】
【
図2】本発明のいくつかの実施形態で使用され得る例示的なネットワーク環境の図を示す。
【0011】
【
図3】いくつかの実施形態による、対称鍵と顧客との間の例示的な関係を例示する。
【0012】
【
図4】いくつかの実施形態に従って実行される、鍵共有を使用して生成された対称鍵を使用して顧客データを暗号化するための例示的なプロセスのフローチャートを示す。
【0013】
【
図5】いくつかの実施形態による、鍵共有を使用して生成された対称鍵の要求を生成するための例示的なプロセスのフローチャートを示す。
【0014】
【
図6】様々な実施形態による、マルチテナント環境において様々なテナントに割り当てられた様々な対称鍵をリストする例示的なデータ構造を示す。
【0015】
【
図7】様々な実施形態による、対応する秘密鍵と共に鍵識別子をリストする例示的なデータ構造を示す。
【0016】
【
図8】いくつかの実施形態に従って実行される、鍵共有を使用して生成された対称鍵を生成するための例示的なプロセスのフローチャートを示す。
【0017】
【
図9】様々な実施形態による、アプリケーションサーバ上で鍵ローテーションを実行するための例示的なプロセスのフローチャートを示す。
【0018】
【
図10】様々な実施形態による、マルチテナント環境において顧客のためのローテーションされた対称鍵を記憶する例示的なデータ構造を示す。
【0019】
【
図11】様々な実施形態による、対称鍵の破壊を表示する例示的なデータ構造を示す。
【0020】
【
図12A】いくつかの実施形態による、適用可能な環境のアーキテクチャコンポーネントを例示するシステム
図800を示す。
【0021】
【
図12B】いくつかの実施形態による、適用可能な環境のアーキテクチャコンポーネントをさらに例示するシステム図を示す。
【0022】
【
図13】いくつかの実施形態による、マルチテナントデータベース環境のアーキテクチャを例示するシステム図を示す。
【0023】
【
図14】いくつかの実施形態による、マルチテナントデータベース環境のアーキテクチャをさらに例示するシステム図を示す。
【発明を実施するための形態】
【0024】
1つ以上の実施形態による、システム及び方法の適用は、このセクションに記載される。これらの例は、本開示の文脈を追加し、理解を助けるためにのみ提供される。したがって、本明細書に記載の技術は、これらの特定の詳細の一部又は全部なしに実施することができると当業者に明らかであろう。他の例では、本開示を不必要に不明瞭にすることを避けるために、周知のプロセスステップが詳細に記載されていない。他の応用も可能であり、その結果、以下の例は、範囲又は設定のいずれにおいても、決定的なものとして、又は限定的なものとしてとらえるべきではない。
【0025】
以下の詳細な説明では、添付の図面を参照し、これらの添付の図面は、説明の一部を形成し、例示として、特定の実施形態を示す。これらの実施形態は、当業者が本開示を実施することを可能にするために十分に詳細に説明されているが、これらの例は、限定的ではなく、その結果、他の実施形態が使用されてもよく、本開示の精神及び範囲から逸脱することなく変更が行われてもよい。
【0026】
本明細書で使用される場合、「マルチテナントデータベースシステム」という用語は、データベースシステムのハードウェア及びソフトウェアの様々な要素が1つ以上の顧客によって共有され得るシステムを指す。例えば、所与のアプリケーションサーバは、多数の顧客に対する要求を同時に処理してもよく、所与のデータベーステーブルは、潜在的により多数の顧客に対する行を記憶してもよい。
【0027】
記載の主題は、ソフトウェアベースのシステム、データベースシステム、マルチテナント環境などの任意のコンピュータ実装システムの文脈で実装されてもよい。さらに、記載の主題は、互いに協働し、通信する2つ以上の別々の別個のコンピュータ実装システムに関連して実装されてもよい。1つ以上の実施形態は、プロセス、装置、システム、デバイス、方法、例えばコンピュータ可読命令又はコンピュータプログラムコードを含むコンピュータ可読記憶媒体のようなコンピュータ可読媒体、内部に具現化されたコンピュータ可読のプログラムコードを有するコンピュータ使用可能な媒体を含むコンピュータプログラム製品などを含め、多数の方法で実装されてもよい。
【0028】
一般に、マルチテナントデータベース環境は、組織又は顧客に関連付けられたデータを記憶するように構成された複数のデータベースを含んでもよい。データ(顧客データとも呼ばれる)は、顧客によって記憶されるときに暗号化されないことがある。顧客データは、非対称又は対称暗号を使用して、静止している間暗号化されていてもよい。暗号化された顧客データは、権限のないユーザからアクセスされることからそのデータを保護する。顧客データを暗号化することが重要であり得るが、復号鍵(秘密鍵又は対称鍵)をセキュア化することが望ましいことがある。復号鍵は、特定の権限のある人員(例えば、データベース管理者)のみがアクセスできる記憶領域に記憶されてもよい。顧客が顧客データを取得したいときに、暗号化された顧客データは、復号鍵を使用して復号されてもよい。復号された顧客データは、その後、顧客に送信されてもよい。暗号化された顧客データは、クラウドベースの記憶領域、非クラウドベースの記憶領域、又は他の形態の記憶実装を含む、マルチテナントデータベース環境に関連付けられた任意の記憶領域に記憶されてもよい。
【0029】
復号鍵を保護するための1つの技術は、ハードウェアセキュリティモジュール(HSM)を使用することである。HSMは、オンボードのセキュアな鍵生成と、オンボードの鍵の記憶管理を提供する。HSMは、非対称又は対称鍵ペアを生成するために使用されてもよい。HSMは、秘密鍵をそのストレージに保持してもよく、その結果、秘密鍵を外部のパーティが抽出することができない。システムにインストールされているHSMを使用するには、パスワードが必要とされることがある。HSMは、USBポートを介して接続されたUSB(Universal Serial Bus)デバイスであってもよいし、システムボードを介してインストールされたカードデバイスであってもよいし、ネットワーク接続デバイスであってもよい。
【0030】
顧客データをセキュア化するための従来のシステムは、後で顧客データを暗号化するために使用される対称鍵を生成するために鍵ラッピングを使用することであり得る。他のシステムは、RSA(Rivest-Shamir-Adleman)暗号化を利用して、クライアントシステムとアプリケーションサーバ間でメッセージを通信することを可能にし得る。このようなアプローチには、いくつかの欠点がある。第一に、秘密鍵が、アプリケーションサーバにあることに固執されなければならず、これは、セキュリティが侵害され得る複数の潜在的な領域(アプリケーションサーバとHSMサーバ)が存在することを意味する。また、従来のアプローチをしようすると、対称鍵の導出は、パスワードベースの鍵ラッピングのような、時間及び計算コストが高い処理を含むことがある。鍵導出処理がこのような有意のリソースを取るときに、しばしば、HSMは、暗号化に使用されるすべての鍵断片をキャッシュに記憶することが要求される。マルチテナントの場合、HSMへの権限のないアクセスにより、悪意のあるユーザが複数のエンティティの対称鍵にアクセスすることをもたらすため、これは、重大なセキュリティリスクを作成する可能性がある。さらに、量子コンピューティングが、将来的にRSA鍵を使用して暗号化された顧客データを脆弱にするように、RSA暗号を侵害することが可能であると推測されている。
【0031】
開示された実施形態は、コンピュータ実装システムにおける顧客データの暗号化及び復号又はセキュア化に関し得る。記載の主題は、ソフトウェアベースのシステム、データベースシステム、マルチテナント環境などの任意のコンピュータ実装システムの文脈で実装されてもよい。さらに、記載の主題は、互いに協働し、通信する2つ以上の別々の別個のコンピュータ実装システムに関連して実装されてもよい。1つ以上の実装は、プロセス、装置、システム、デバイス、方法、例えばコンピュータ可読命令又はコンピュータプログラムコードを含むコンピュータ可読記憶媒体のようなコンピュータ可読媒体、内部に具現化されたコンピュータ可読のプログラムコードを有するコンピュータ使用可能な媒体を含むコンピュータプログラム製品などを含め、多数の方法で実装されてもよい。コンピュータシステム
【0032】
図1は、本発明のいくつかの実施形態で使用され得る例示的なコンピューティングシステムの図である。コンピューティングシステム102は、マルチテナントデータベース環境に関連付けられた記憶領域に記憶される顧客データを送信するために、顧客又は組織によって使用されてもよい。例えば、マルチテナントデータベース環境は、Salesforce.com(登録商標)によって提供されるサービスに関連付けられてもよい。コンピューティングシステム102はまた、記憶領域から顧客データを取得するために使用されてもよい。
【0033】
コンピューティングシステム102は、モバイルコンピューティングシステムのような好適なコンピューティングシステムの一例に過ぎず、設計の使用範囲又は機能に関する制限を示唆することを意図していない。また、コンピューティングシステム102は、例示のコンポーネントのいずれか1つ又は組み合わせに関するいかなる従属性又は要件も有するものとして解釈されてはならない。この設計は、多数の他の汎用又は特殊目的のコンピューティングシステムで動作する。この設計での使用に好適であり得る周知のコンピューティングシステム、環境、及び/又は構成の例としては、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルド又はラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、セットトップボックス、プログラマブルコンシューマ電子機器、ミニコンピュータ、メインフレームコンピュータ、上記のシステム又はデバイスのいずれかを含む分散コンピューティング環境などを含むが、これらに限定されない。例えば、コンピューティングシステム102は、カリフォルニア州クパチーノのApple Inc.によって開発されたオペレーティングシステム(例えば、iOS)又はカリフォルニア州マウンテンビューのGoogle Inc.によって開発されたオペレーティングシステム(例えば、Android)で動作するように構成されたもののようなモバイルコンピューティングシステムとして実装されてもよい。
【0034】
本発明のいくつかの実施形態は、コンピュータによって実行される、プログラムモジュールのような、コンピュータシステム実行可能命令の一般的なコンテキストで記載され得る。一般に、プログラムモジュールは、特定のタスクを実行するか、又は特定の抽象的データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。当業者は、本明細書における説明及び/又は図を、コンピュータ実行可能命令として実装することができ、このコンピュータ実行可能命令は、以下に議論される任意の形態のコンピューティングマシン可読媒体上に具体化され得る。
【0035】
本発明のいくつかの実施形態はまた、タスクが通信ネットワークを介してリンクされるリモート処理デバイスによって実行される分散コンピューティング環境においても実施されてもよい。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶デバイスを含むローカルとリモートのコンピュータ記憶媒体の両方に位置してもよい。
【0036】
図1を参照すると、コンピューティングシステム102は、1つ以上の処理コアを有する処理ユニット120、システムメモリ130、及びシステムメモリ130を含む様々なシステムコンポーネントを処理ユニット120に結合するシステムバス121を含んでもよいが、これらに限定されない。システムバス121は、メモリバス又はメモリコントローラ、周辺バス、及び様々なバスアーキテクチャのいずれかを使用するローカルバスを含む、いくつかのタイプのバス構造のいずれであってもよい。限定ではなく例として、そのようなアーキテクチャは、ISA(Industry Standard Architecture)バス、MCA(Micro Channel Architecture)バス、EISA(Enhanced ISA)バス、VESA(Video Electronics Standards Association)バス、及びメザニンバスとしても知られるPCI(Peripheral Component Interconnect)バスを含む。
【0037】
コンピュータシステム102は、典型的には、様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータシステム102によってアクセス可能な任意の利用可能な媒体とすることができ、揮発性媒体と不揮発性媒体の両方、取り外し可能媒体と取り外し不可能媒体の両方を含む。限定ではなく例として、コンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、又は他のデータなどの情報を記憶してもよい。コンピュータ記憶媒体は、RAM、ROM、EEPROM、フラッシュメモリ、若しくは他のメモリ技術、CD-ROM、デジタル多用途ディスク(DVD)、若しくは他の光ディスクストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、若しくは他の磁気ストレージ、又は所望の情報を記憶するために使用することができ、コンピューティングシステム102によってアクセスすることができる他の任意の媒体を含むが、これらに限定されない。通信媒体は、典型的には、コンピュータ可読命令、データ構造、又はプログラムモジュールを具現化する。
【0038】
システムメモリ130は、読み出し専用(ROM)メモリ131及びランダムアクセスメモリ(RAM)132などの揮発性及び/又は不揮発性メモリの形態のコンピュータ記憶媒体を含み得る。基本入出力システム(BIOS)133は、スタートアップ中のようなコンピューティングシステム102内の要素間で情報を転送するのを助ける基本ルーチンを含んでおり、典型的にはROM131に記憶される。RAM132は、典型的には、処理ユニット120に直ちにアクセス可能な、及び/又は現在処理ユニット120によって動作しているデータ及び/又はプログラムモジュールを含んでいる。限定ではなく例として、
図1はまた、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、及びプログラムデータ137を例示する。
【0039】
コンピューティングシステム102はまた、他の取り外し可能/取り外し不可能な揮発性/不揮発性コンピュータ記憶媒体を含んでもよい。単に例として、
図1はまた、取り外し不可能な不揮発性磁気媒体から読み出すか、又はそれに書き込むハードディスクドライブ141、取り外し可能な不揮発性磁気ディスク152から読み出すか、又はそれに書き込む磁気ディスクドライブ151、及び例えばCD ROM又は他の光媒体などの取り外し可能な不揮発性の光ディスク156から読み出すか、又はそれに書き込む光ディスクドライブ155を例示する。例示的な動作環境で使用され得る他の取り外し可能/取り外し不可能な揮発性/不揮発性コンピュータ記憶媒体は、USBドライブ及びデバイス、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどを含むが、これらに限定されない。ハードディスクドライブ141は、典型的には、インターフェース140のような取り外し不可能なメモリインターフェースを介してシステムバス121に接続され、磁気ディスクドライブ151及び光ディスクドライブ155は、典型的には、インターフェース150のような取り外し可能なメモリインターフェースによってシステムバス121に接続される。
【0040】
上記に議論し、
図1に例示するドライブ及びそれらに関連するコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、及びコンピュータシステム102のための他のデータのストレージを提供する。
図1では、例えば、ハードディスクドライブ141は、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、及びプログラムデータ147を記憶するものとして例示されている。これらのコンポーネントは、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、及びプログラムデータ137と同じか、異なるかのいずれかであり得ることに留意する。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、及びプログラムデータ147は、ここでは、少なくともそれらが異なるコピーであることを例示するために、異なる数値識別が与えられている。
【0041】
ユーザは、キーボード162、マイクロホン163、及びマウス、トラックボール、タッチパッド又はタッチスクリーンなどのポインティングデバイス161などの入力デバイスを介して、コマンド及び情報をコンピューティングシステム102に入力し得る。他の入力デバイス(図示せず)は、ジョイスティック、ゲームパッド、スキャナなどを含んでもよい。これら及び他の入力デバイスは、システムバス121に結合されたユーザ入力インターフェース160を介して処理ユニット120に接続されることが多いが、パラレルポート、ゲームポート、ユニバーサルシリアルバス(USB)などの他のインターフェース及びバス構造によって接続されてもよい。モニタ191又は他のタイプの表示デバイスも、ビデオインターフェース190のようなインターフェースを介してシステムバス121に接続される。モニタに加えて、コンピュータは、スピーカ197及びプリンタ196のような、出力周辺インターフェース190を介して接続され得る他の周辺出力デバイスも含んでもよい。
【0042】
コンピュータシステム102は、リモートコンピュータ180などの1つ以上のリモートコンピュータへの論理接続を使用して、ネットワーク環境で動作してもよい。リモートコンピュータ180は、パーソナルコンピュータ、ハンドヘルドデバイス、サーバ、ルータ、ネットワークPC、ピアデバイス、又は他の共通ネットワークノードであってもよく、典型的には、コンピュータシステム102に関して上述した要素の多く又は全てを含む。
図1に示す論理接続は、ローカルエリアネットワーク171及びワイドエリアネットワーク173を含むが、他のネットワークも含んでもよい。このようなネットワーク環境は、オフィス、企業の広汎なネットワーク、イントラネット及びインターネットにおいてありふれたものである。
【0043】
LANネットワーク環境で使用されるときに、コンピューティングシステム102は、ネットワークインターフェース又はアダプタ170を介してLAN171に接続されてもよい。WANネットワーク環境で使用されるときに、コンピューティングシステム102は、典型的には、モデム172、又はインターネットのようなWAN173を介した通信を確立するための他の手段を含む。モデム172は、内部又は外部であってもよく、ユーザ入力インターフェース160又は他の適切なメカニズムを介してシステムバス121に接続されてもよい。ネットワーク環境では、コンピューティングシステム102又はその一部分に対して図示されたプログラムモジュールは、リモートメモリ記憶デバイスに記憶されてもよい。限定ではなく例として、
図1は、リモートコンピュータ180上に存在するようなリモートアプリケーションプログラム185を例示する。図示のネットワーク接続は例示的なものであり、コンピュータ間の通信リンクを確立する他の手段が使用され得ることが理解されよう。
【0044】
本発明のいくつかの実施形態は、
図1に関して記載のようなコンピューティングシステム上で実施され得ることに留意されたい。しかし、本発明のいくつかの実施形態は、サーバ、メッセージハンドリング専用のコンピュータ、ハンドヘルドデバイス、又は本発明の設計の異なる部分が分散コンピューティングシステムの異なる部分で実施され得る分散システム上で実行されてもよい。
【0045】
システムバス121と結合され得る別のデバイスは、バッテリ、直流(DC)電源及び交流(AC)アダプタ回路などの電源である。DC電源は、バッテリ、燃料電池、又は同様のDC電源であってもよく、定期的に充電する必要がある。通信モジュール(又はモデム)172は、無線通信チャネルを確立するために無線アプリケーションプロトコル(WAP)を用いてもよい。通信モジュール172は、1999年にIEEE(Institute of Electrical and Electronics Engineers)によって発行されたIEEE802.11標準、IEEE std. 802.11-1999のような無線ネットワーキング標準を実装してもよい。
【0046】
モバイルコンピューティングシステムの例は、ラップトップコンピュータ、タブレットコンピュータ、ネットブック、スマートフォン、パーソナルデジタルアシスタント、又は、直流(DC)電圧をモバイルコンピューティングシステムに供給するDC電源によって電力供給され、かつ単独でモバイルコンピューティングシステム内にあり、燃料電池又はバッテリのような定期的に充電される必要があるオンボード処理電力及び無線通信能力を有する他の同様のデバイスであってもよい。ネットワーク
【0047】
図2は、本発明のいくつかの実施形態で使用され得る例示的なネットワーク環境の図を示す。ネットワーク環境200は、コンピューティングシステム205及び212を含む。コンピューティングシステム205及び212のうちの1つ以上は、モバイルコンピューティングシステムであってもよい。コンピューティングシステム205及び212は、セルラ接続又はWi-Fiルータ(図示せず)を介してネットワーク250に接続されてもよい。ネットワーク250は、インターネットであってもよい。コンピューティングシステム205及び212は、ネットワーク250を介して1つ以上のサーバコンピューティングシステム255及び260と結合されてもよい。
【0048】
アプリケーションサーバ255は、ネットワークを介して複数の顧客デバイスと通信してもよい。各コンピューティングシステム205は、顧客に関連付けられてもよく、顧客アプリケーションモジュール208を含んでもよい。ユーザは、ユーザコンピューティングシステム205及びユーザアプリケーションモジュール208を使用して、サーバコンピューティングシステム255(アプリケーションサーバ255とも呼ばれる)に接続して、これと通信し、アプリケーション257(例えば、Salesforce.com(登録商標)アプリケーション)にログインしてもよい。ユーザは、顧客データをアプリケーションサーバ255に送信してもよく、アプリケーションサーバ255から顧客データを要求してもよい。
【0049】
アプリケーションサーバ255は、顧客データを記憶するように構成されたデータベース270と結合されてもよい。アプリケーションサーバ255は、エンティティ(例えば、Salesforce.com(登録商標))に関連付けられてもよい。エンティティは、暗号化のために鍵ペアを生成してもよい。鍵ペアは、公開鍵273と秘密鍵(図示せず)を含む。秘密鍵は公衆に利用可能とされず、エンティティ(鍵保持者とも呼ばれる)によって秘密に保持される。公開鍵273は、認証局(CA)によって発行されたデジタル証明書の手段によって、誰にでも利用可能にされてもよい。証明書は、証明書に含まれる公開鍵が、証明書に記載されたエンティティに属することの、CAによる確認又は検証でもある。例えば、顧客は証明書をダウンロードし、公開鍵273を入手して、アプリケーションサーバ255に送信される顧客データを暗号化することができる。公開鍵273を使用して暗号化された顧客データを復号できるのは、エンティティ(又は秘密鍵の保有者)のみである。
【0050】
アプリケーションサーバ255は、暗号アプリケーションモジュール214で構成された暗号コンピューティングシステム212と結合されてもよい。暗号アプリケーションモジュール214は、
図4Aで記載のように公開鍵、秘密鍵、対称鍵、1つ以上の鍵解除のための鍵フラグメントを生成するように構成され得る。
【0051】
アプリケーションサーバ255は、ファイルシステム271と結合されてもよい。ファイルシステム271は、暗号コンピューティングシステム212によって生成された鍵を含む様々な暗号化鍵を記憶するように構成されてもよい。
【0052】
アプリケーションサーバ255は、HSM266で構成されたセキュリティサーバコンピューティングシステム260(HSMサーバ260とも呼ばれる)と結合されてもよい。HSM266は、HSM公開鍵267及びHSM秘密鍵268と関連付けられてもよい。HSMサーバ260は、HSM266と対話し、様々な暗号化及び復号化動作を実行するように構成されたHSMアプリケーションモジュール265を含んでもよい。例えば、HSMアプリケーションモジュール265は、HSM秘密鍵268を使用して、対応するHSM公開鍵267を使用して以前に暗号化されたデータを復号してもよい。HSM266にアクセスするためにパスワードが必要とされてもよい。負荷バランシング目的では、負荷バランサ(図示せず)に接続された複数のアプリケーションサーバ255及び複数のHSMサーバ260が存在してもよい。すべてのアプリケーションサーバ255は、特定の時点でどのHSMサーバ260と通信(talk)できるかを知る必要があってもよい。
【0053】
いくつかの実施形態では、ファイルシステム271は、HSMサーバ260にローカルなファイルシステムと同期されてもよい。これにより、HSMサーバ260は、ファイルシステム271がローカルファイルシステムであるかのように、ファイルシステム271内のデータにアクセスし、記憶することが可能となる。いくつかの実施形態では、HSMサーバ260は、アプリケーションサーバ255によって送信された問い合わせにのみ応答することができる。これは、あらゆる権限のないユーザによってHSMサーバ260に関連付けられたデータ又はサービスへのアクセスを防止し得る。例えば、アプリケーションサーバ255は、それらが共有する秘密を使用してHSMサーバ260に送信するすべての要求にデジタル的に署名する必要があり得る。対称鍵の使用
【0054】
図3は、いくつかの実施形態による、対称鍵と顧客との間の例示的な関係を例示する。この例では、2つの顧客315及び325が存在する。動作中、顧客315は、その顧客データ320をアプリケーションサーバ255に送信してもよい。次いで、アプリケーションサーバ255は、顧客315に固有の対称鍵322を使用して、顧客データ320を暗号化し、暗号化された顧客データ324を生成する。次に、暗号化された顧客データ324がデータベース270に記憶される。その後、顧客315がその顧客データを要求するときに、暗号化された顧客データ324がデータベース270から取得され、対称鍵322を使用してアプリケーションサーバ255によって復号され、復号された顧客データ320が顧客315に送信される。
【0055】
同様に、顧客325は、その顧客データ330をアプリケーションサーバ255に送信してもよい。次いで、アプリケーションサーバ255は、顧客325に固有の対称鍵332を使用して、顧客データ330を暗号化し、暗号化された顧客データ334を生成する。次に、暗号化された顧客データ334がデータベース270に記憶される。その後、顧客325がその顧客データを要求するときに、暗号化された顧客データ334がデータベース270から取得され、対称鍵332を使用してアプリケーションサーバ255によって復号され、復号された顧客データ330が顧客325に送信される。
【0056】
アプリケーションサーバ255が対称鍵322又は332にアクセスする必要があるときに、アプリケーションサーバ255は、対称鍵322又は332がメモリ内キャッシュ307に存在するかどうかを見つけるためにチェックしてもよい。対称鍵322又は332がメモリ内キャッシュ307内に存在する場合、それは、アプリケーションサーバ255によってアクセスされ、使用される。対称鍵322又は332がメモリ内キャッシュ307に存在しない場合、アプリケーションサーバ255は、セキュリティサーバが対称鍵322又は332を導出することを要求し、対称鍵を受信し、再生成された対称鍵を使用して、対応する暗号化された顧客データを復号してもよい。
【0057】
図4は、顧客データを暗号化及び/又は復号するための鍵共有(key agreement)を使用して生成された対称鍵を要求するための方法400のためのフロー図の特定の実施形態を示す。プロセス600は、セキュリティサーバ260及びHSM266と通信するアプリケーションサーバ255(
図2に示す)によって実行されてもよい。鍵識別子は、セットアップ時に、例えば、セキュリティサーバ260のようなセキュリティサーバから、ネットワーク接続を介して受信されてもよく、ステップ405においてアプリケーションサーバ(例えば、アプリケーションサーバ255)によって記憶されてもよい。鍵識別子は、セキュリティサーバから受信された多くの鍵識別子のうちの1つであってもよく、このセキュリティサーバは、アプリケーションサーバがセキュリティサーバに対して使用するために複数の秘密鍵を充ててもよい。鍵識別子は、秘密鍵に関連付けられてもよく、秘密鍵は、セキュリティサーバによってアクセス可能であり、アプリケーションサーバによってアクセス不可能である。ブロック407において、顧客データが、例えばデータベース270に記憶するために、アプリケーションサーバによって受信されてもよい。顧客データは、データベース270に記憶する前に暗号化され、したがって、アプリケーションサーバによる顧客データの受信は、ステップ408をトリガする。代替的には、アプリケーションサーバによって以前に暗号化され、データベース270に記憶されたデータに対する要求が顧客によって行われてもよい。要求は、アプリケーションプログラムインターフェース(API)又はユーザインターフェース(UI)を介して、顧客コンピューティングシステム205を使用するユーザによって行われてもよい。顧客データがデータベースで識別されると、顧客データを暗号化するために使用された対称鍵は、要求されたデータを顧客に送信する前に、顧客データを復号するために使用されなければならない。
【0058】
ステップ408において、アプリケーションサーバ255は、対称鍵308がアプリケーションサーバ255のメモリ内キャッシュ307に存在するかどうかを決定してもよい。対称鍵308が見つかる場合、プロセスはステップ420に進み、対称鍵308が、顧客データを暗号化(又は、顧客がデータベース270に記憶された暗号化データにクエリを行っている場合は、復号)するために使用されてもよい。次いで、復号された顧客データは、ユーザに送信されてもよいし、暗号化の場合には、暗号化された顧客データは、アプリケーションサーバ(例えば、データベース270、又は類似のデータ構造)に記憶されてもよい。
【0059】
ブロック408から、アプリケーションサーバ255がメモリ内キャッシュ307内の対称鍵322を見つけることができない場合、対称鍵322が導出される必要がある。対称鍵の要求は、ステップ410において、アプリケーションサーバからセキュリティサーバへ送信されてもよい。要求は、アプリケーションサーバが鍵識別子を記憶した後に送信されてもよく、アプリケーションサーバによって生成された公開鍵、ソルト値、及び鍵識別子を含んでもよい。
【0060】
図5は、いくつかの実施形態による、鍵共有を使用して生成された対称鍵の要求を生成するための例示的なプロセスのフローチャートを示す。ステップ505において、アプリケーションサーバは、公開鍵-秘密鍵のペアを生成してもよく、公開鍵は、対称鍵の要求に使用されてもよい。公開鍵と秘密鍵は、楕円曲線暗号法(公開鍵と秘密鍵の両方が楕円曲線上の異なる点に対応し、楕円曲線暗号法を用いて暗号化される)を含むが、これらに限定されない、任意の好適な方法を使用して生成されてもよい。ステップ510において、ランダムソルト値が生成され、セキュリティサーバプールからの未使用鍵識別子。ランダムソルト値は、各対称鍵を生成するために使用されるランダムに生成されたデータであってもよく、各対称鍵要求に対して異なるソルト数値又は文字列が使用されてもよい。ソルト値は、一般に、潜在的に多数のクライアント間で固有であるのに十分なビットを有し、より多くのビットを有することはセキュリティを増加させるが、対称鍵を生成する複雑性(及び潜在的に時間遅延)も増加させる。
【0061】
鍵識別子は、セキュリティサーバの鍵プールを介してアプリケーションサーバ255に利用可能な複数の鍵識別子から選択されてもよく、そのリストは、上述のようにアプリケーションサーバに以前に送信されている。最後に、生成された公開鍵、ソルト値、及び鍵識別子を含む要求は、ステップ515において、アプリケーションサーバによってセキュリティサーバに送信されてもよい。さらに、公開鍵、ソルト値、及び鍵識別子の組み合わせは、アプリケーションサーバの永続性ストレージ(すなわち、データ構造)に記憶されてもよく、アプリケーションサーバは、後日、対称鍵を容易に再生成してもよい。
【0062】
図6は、様々な実施形態による、マルチテナント環境内の異なるテナントに割り当てられた様々な対称鍵をリストする例示的データ構造650を含む、簡略化されたブロック
図600を示す。
図600は、データ構造650を含む、
図2のアプリケーションサーバ255と通信するデータベース270に対応し得るテナント認識データベース605を含む。データ構造650は、公開鍵、鍵識別子(鍵サーバIDとも呼ばれる)、及び複数のテナント(例えば、
図3の顧客315及び325)のための対称鍵を生成するために使用されるランダムソルト値の組み合わせを含む、永続性ストレージであってもよい。データ構造650の行612及び行618などの行は、アプリケーションサーバによって使用された個々の対称鍵に対応し得る。
【0063】
複数のテナントのための対称鍵が、対称鍵エントリ612とは異なるテナントID 620を有する対称鍵エントリ618によって例示されるように、データ構造650に含まれてもよい。対称鍵エントリ612に対して示すように、各対称鍵エントリは、テナントIDフィールド値615、公開鍵値630(エントリ612に対応する対称鍵を要求する際に、アプリケーションサーバによって生成された公開鍵に関連付けられる)、鍵識別子値635(対称鍵を生成するために使用されるセキュリティサーバがアクセス可能な秘密鍵に関連付けられる)、及びソルト値640(図示のように、ランダムに生成された数字又は文字列)に関連付けられてもよい。アプリケーションが顧客データを復号している状況では、顧客データに関連付けられたメタデータを使用して、データ構造650内のどの対称鍵が顧客データを暗号化するために使用されたかを識別してもよい。このメタデータは、例えば、顧客データを暗号化するために使用される対称鍵のための公開鍵値630を含む、アプリケーションサーバが暗号化に使用される対称鍵を識別することを可能にする任意の識別情報を含んでもよい。各対称鍵に対する公開鍵値は、様々な実施形態において固有であり得るため(すなわち、より大きなセキュリティを提供するために、公開鍵は、異なる対称鍵に対して再利用されない)、公開鍵値630は、暗号化された顧客データを復号する目的で、対称鍵を識別するのに有用であり得る。
【0064】
図4のステップ410で述べたように、対称鍵の要求は、セキュリティサーバに送信されてもよく、このセキュリティサーバが、要求によって指定されたデータを使用して対称鍵を生成してもよい。
図8は、いくつかの実施形態に従って実行される、鍵共有を使用して生成された対称鍵を生成するための例示的なプロセス800のフローチャートを示す。いくつかの実施形態では、セキュリティサーバは、データが対称鍵によって暗号化/復号される顧客の制御から外れてもよいが、これは必ずしも当てはまらない。いくつかの実施形態では、顧客自身が、HSM又は他の好適な鍵ストアと通信して、顧客ホストの鍵を使用してサービスしてもよい。ステップ805において、対称鍵を導出する要求は、アプリケーションサーバからセキュリティサーバに受信され、要求は、上述のように、公開鍵、ソルト値、及び秘密鍵に関連付けられた鍵識別子を含む。
【0065】
セキュリティサーバは、要求を受信することに応答して、受信した公開鍵、ソルト値、及び鍵識別子によって識別された秘密鍵に基づいて、鍵導出関数を使用して、対称鍵を導出してもよい。鍵導出は、ステップ810においてアプリケーションサーバがアクセスできないストレージロケーションから秘密鍵を取得することによって開始してもよい。代替的には、秘密鍵は、セキュリティサーバと通信する鍵管理サービスから取得されてもよい。鍵管理サービスは、セキュリティサーバに提供される複数の鍵識別子にリンクされた複数の秘密鍵(HSM、又は例えば、鍵管理サービスの制御下のストレージ)を記憶してもよい。鍵管理サービスは、ネットワーク接続を介してセキュリティサーバと通信していてもよい、内部に含まれるすべての秘密鍵をセキュア化するHSMの形態をとってもよい。代替的には、鍵管理サービスは、秘密鍵を複数の鍵サーバ間でスプリットしてもよく、秘密鍵共有マルチパーティコンピューティングは、鍵サーバのサブセット(鍵管理サービスサーバを含む)が、鍵共有が格納されているロケーションからの秘密鍵へのアクセスを効果的に可能にする暗号コンピューティングを、鍵サーバ上で秘密鍵を実際に組み立てることなく実行することのみを可能にする。そのような実施形態は、セキュリティサーバに秘密鍵を記憶せず、要求があるとそれらを提供するのみとすることによって、追加のセキュリティを提供してもよい。代替的には、ストレージロケーションは、セキュリティサーバ内のデータストアであってもよい。
図7は、様々な実施形態による、対応する秘密鍵と共に鍵識別子(例えば、行710のような各行)をリストする例示的なデータ構造730を示す簡略化されたブロック
図700を示す。
【0066】
(公開鍵及び秘密鍵の)非対称鍵ペアのリストを含むデータ構造730は、セキュリティサーバ鍵バンク705内に記憶されてもよく、これは、HSM、セキュリティサーバと通信する鍵管理サービスであってもよいし、様々な実施形態では、セキュリティサーバ自体内のデータストアとすることができる。行710は、秘密鍵データ構造730内の非対称鍵ペアレコードを例示し、非対称鍵ペアに対する対応する鍵識別子715と、鍵識別子に関連付けられた秘密鍵725をリストする。行710はまたは、秘密鍵725に関連付けられた公開鍵720を含んでもよく、例示的なデータ構造730に示されるように、公開鍵720は、楕円曲線暗号によって生成される楕円曲線公開鍵であってもよい。公開鍵720は、一般に、対称鍵の生成には使用されなくてもよく、いくつかの実施形態では、鍵サービスによって破棄されてもよい。
【0067】
図8に戻ると、秘密鍵を取得した後に、鍵共有プロトコルが、ステップ815において、鍵共有鍵を得るために、鍵識別子によって要求において選択された公開鍵及び秘密鍵に適用されてもよい。任意の好適な鍵共有プロトコルが、Diffie-Hellman鍵交換、匿名鍵交換などを含む、公開鍵と鍵識別子に関連付けられた秘密鍵から鍵共有鍵を生成するために使用されてもよい。例示的な実施形態では、鍵共有プロトコルは、公開鍵及び鍵識別子に関連付けられた秘密鍵の生成に共通の楕円曲線関数に基づいてもよい。(楕円曲線上の異なる点に対応する別個の楕円曲線鍵ペアからであるにもかかわらず)公開鍵及び鍵識別子に関連付けられた秘密鍵は、同じ楕円曲線から導出されてもよく、任意の好適な鍵共有関数が、公開鍵及び鍵識別子に関連付けられた秘密鍵に適用されてもよい。そのような関数は、固有の番号を得るために、公開鍵と鍵識別子に関連付けられた秘密鍵の乗算と同じくらい単純であってもよい。鍵共有の使用は、量子コンピューティング攻撃に対して脆弱である鍵ラッピングのような他の方法による暗号化における対称鍵の生成に対して有利であってもよい。これとは対照的に、鍵共有は、たとえ量子コンピューティングのコードブレイク技術に対してさえ、一般的にはよりセキュアである。
【0068】
最後に、対称鍵は、ステップ820において、鍵共有鍵に鍵導出関数を適用することによって、セキュリティサーバによって生成されてもよい。鍵導出関数は、鍵共有鍵と、その対称鍵を導出する要求で受信されたソルト値に基づいて対称鍵を生成する、好適な暗号ハッシュ関数であってもよい。使用され得る例示的な鍵導出関数は、PBKDF2、bcrypt、scryptなどを含む。対称鍵が生成された後に、ステップ825において、それは要求しているアプリケーションサーバに送信されてもよい。以下に記載のように、対称鍵は、その後、アプリケーションサーバのメモリ内キャッシュに記憶され、アプリケーションサーバによって記憶される顧客データを暗号化するためにアプリケーションサーバによって使用されてもよい。
【0069】
図4に戻ると、ステップ420において、顧客データは、受信された対称鍵を使用してアプリケーションサーバによって暗号化されてもよい。暗号化された顧客データは、顧客データを復号するために対称鍵の所有が必要とされるため、権限のないユーザによってアクセスされることから保護される。顧客が顧客データを取得することを望む場合、暗号化された顧客データは、対称鍵を使用して復号されてもよく、この対称鍵は、アプリケーションサーバのキャッシュメモリに記憶されてもよいし、公開鍵、ソルト値、及び(例えば、データ構造650を介して)対称鍵を導出するために使用される鍵識別子へのアクセスを有するアプリケーションサーバによって再導出されてもよい。復号された顧客データは、その後、顧客に送信されてもよい。
【0070】
暗号化された顧客データは、アプリケーションサーバと通信し、マルチテナントデータベース環境と関連付けられた、任意の永続性ストレージに記憶されてもよい。このような永続性ストレージの例は、クラウドベースの記憶領域、クラウドベースでない記憶領域、又はストレージ実装の他の形態であってもよい。異なるテナントは、異なる永続性ストレージを利用してもよく、これは、データ構造650内の各テナントに対する1つ以上の対称鍵に関連付けられた固有のテナントIDを使用して、アプリケーションサーバによって容易に追跡されてもよい。
【0071】
従来のデータ保護スキームと比較して、本方法400は、アプリケーションサーバ又はセキュリティサーバのいずれかに秘密鍵データを持続させる必要がないことが有利であり(HSM又は他の外部ストレージに鍵識別子に関連付けられた秘密鍵が記憶される実施形態の場合)、アプリケーションサーバ又はセキュリティサーバのいずれか侵害される場合、対称鍵を含まないことによってセキュリティを改善する。従来のシステムは、マルチテナント環境においてリソース集約的であり得るキャッシュメモリ内の秘密鍵の持続を必要とするので、方法400は、秘密鍵を持続させないことによってセキュリティが改善されるだけでなく、必要なキャッシュの量も低減させる。対称鍵を生成するために使用される公開鍵のみが、対称鍵がキャッシュから除去された後に対称鍵を再生成するために必要とされる。いくつかの実施形態では、公開鍵を生成するためにアプリケーションサーバによって使用される秘密鍵は、メモリリソースを節約するために廃棄されてもよい。最後に、方法400は、従来の用法とは異なる鍵共有の使用を表す。従来、鍵共有は、一般に、2つのデバイス間の通信をセキュアするために使用され、方法400は、対称鍵をセキュアに生成するために鍵共有を使用して、対称鍵を生成するために使用されないサードパーティ顧客デバイスからのデータを暗号化する。上記のように、方法400を使用して生成された対称鍵を単一の当事者が侵害することはできず、顧客データをセキュアにするためにマルチテナントアプリケーションサーバに固有の利点を提供する。
【0072】
時間が経つにつれて、暗号化されたデータにより多くのセキュリティを提供するために、顧客が自分のデータを暗号化するために使用される対称鍵をローテ―ションする(すなわち、自分のデータを暗号化するために異なる対称鍵を使用する)ことは、良いプラクティスであり得る。そうするために、アプリケーションサーバは、単に異なる対称鍵のために新しい要求をセキュリティサーバに送信してもよい。特定の顧客のための対称鍵をレートする要求は、様々な実施形態において、顧客によって、アプリケーションサーバの管理者によって、又はアプリケーションサーバによって(例えば、所定の期間の後に)自動的に開始されてもよい。
図9は、様々な実施形態による、アプリケーションサーバ上で鍵ローテーションを実行するための例示的なプロセス900のフローチャートを示す。ステップ905において、アプリケーションサーバは、対称鍵をローテーションする要求を送信してもよく、ローテーションする要求は、アプリケーションサーバによって生成された異なる公開鍵、異なるソルト値、及びプライベートサーバがアクセス可能な異なる秘密鍵に関連付けられた異なる鍵識別子を含む。セキュリティを改善するために、ローテーションされた対称鍵の要求では、異なる要素が使用される。なぜなら、共通の要素があると、現在の対称鍵が侵害された場合、ローテーションされた対称鍵も侵害される可能性が高くなる可能性があるためである。
【0073】
セキュリティサーバは、対称鍵をローテーションする要求を受信した後に、例えば、
図8の方法800によって例示されている対称鍵生成プロセスを、対称鍵をローテーションする要求で受信した異なるコンポーネントを使用して、対称鍵生成プロセスを繰り返してもよい。次いで、ステップ910において、対称鍵をローテーションする要求に応答して、セキュリティサーバからアプリケーションサーバに異なる対称鍵が送信されてもよい。異なる対称鍵が、異なる公開鍵と異なる鍵識別子に関連付けられた異なる秘密鍵に基づいて、対称鍵を生成するために使用される鍵導出関数を使用して、導出されてもよい。
【0074】
異なる対称鍵は、テナント鍵データ構造のような対称鍵にリンクされてもよく、さらにアプリケーションサーバのメモリ内キャッシュにさらに記憶されてもよい。
図10は、様々な実施形態による、マルチテナント環境におけるクライアントのためのローテーションされた対称鍵のエントリ1010を記憶する例示的なデータ構造1000を示す。テナント鍵データ構造におけるエントリ1010は、テナントID1009がテナントID1007と一致するため、エントリ1005に関連付けられローテーションされた対称鍵であることが明らかである。上記の説明のように、エントリ1010に関連付けられた対称鍵の公開鍵1015、鍵識別子1020、及びソルト値1025は、ローテーションされた鍵を介して改善されたセキュリティを提供するように固有である。
【0075】
異なる対称鍵がキャッシュされると、ステップ915において、それは、その後、複数の顧客デバイスのうちの1つから受信したデータを暗号化するために、アプリケーションサーバによって使用されてもよい。特定の状況では、顧客によって以前に使用された対称鍵を破棄することが望ましいことがある(例えば、対称鍵を生成するために使用されたコンポーネントの1つが侵害された場合)。これは、アプリケーションサーバが、アプリケーションサーバに関連付けられた対称鍵のリスト(例えば、上述のテナント鍵データ構造)から、対称鍵を削除することによって達成され得る。対称鍵のリストは、アプリケーションサーバ自体に、又は、データベースが暗号化された顧客データを同様に記憶するアプリケーションサーバと通信するデータベースに記憶されてもよい。
図11は、様々な実施形態による、対称鍵の破壊を表示する例示的なデータ構造1100を示す。データ構造1100は、データ構造1000に基づいており、ここで、テナントID1007及び1009に関連付けられた顧客の対称鍵1105は、データ構造1100において対称鍵のリストから削除されている。エントリ1105に関連付けられた対称鍵に対する公開鍵1120及びソルト値1125を削除することによって、エントリ1105に関連付けられた対称鍵の再作成のためのレコードは存在しない。対称鍵がなければ、エントリ1105に関連付けられた対称鍵で暗号化されたあらゆる顧客データは復号され得ない。オンデマンドサービス環境
【0076】
図12Aは、いくつかの実施形態による、オンデマンドサービス環境のアーキテクチャコンポーネントを例示するシステム
図1200を示す。クラウド1204(又はインターネット)に位置するクライアントマシンは、1つ以上のエッジルータ1208及び1212を介してオンデマンドサービス環境と通信してもよい。エッジルータは、ファイアウォール1216を介して1つ以上のコアスイッチ1220及び1224と通信してもよい。コアスイッチは、負荷バランサ1228と通信してもよく、この負荷バランサは、サーバ負荷を、ポッド1240及び1244のような異なるポッドに分散させてもよい。各々が1つ以上のサーバ及び/又は他のコンピューティングリソースを含むポッド1240及び1244は、オンデマンドサービスを提供するために使用されるデータ処理及び他の動作を実行してもよい。ポッドとの通信は、ポッドスイッチ1232及び1236を介して行われてもよい。オンデマンドサービス環境のコンポーネントは、データベースファイアウォール1248及びデータベーススイッチ1252を介してデータベースストレージシステム1256と通信してもよい。
【0077】
図12A及び
図12Bに示すように、オンデマンドサービス環境にアクセスすることは、様々な異なるハードウェア及び/又はソフトウェアコンポーネント間で送信される通信を伴ってもよい。さらに、オンデマンドサービス環境1200は、実際のオンデマンドサービス環境の簡略化された表現である。例えば、各タイプの1つ又は2つのデバイスのみが
図12A及び
図12Bに示されているが、オンデマンドサービス環境のいくつかの実施形態は、各タイプの1つから多数のデバイスのどこでも含んでもよい。また、オンデマンドサービス環境は、
図12A及び
図12Bに示す各デバイスを含む必要はなく、
図12A及び
図12Bに示していない追加のデバイスを含んでもよい。
【0078】
さらに、オンデマンドサービス環境1200におけるデバイスのうちの1つ以上は、同じ物理デバイス又は異なるハードウェアで実装されてもよい。いくつかのデバイスは、ハードウェア又はハードウェアとソフトウェアの組み合わせを使用して実装されてもよい。したがって、本明細書で使用される場合、「データ処理装置」、「マシン」、「サーバ」、「デバイス」などの用語は、単一のハードウェアデバイスに限定されず、むしろ、記載の機能を提供するように構成された任意のハードウェア及びソフトウェアを含む。
【0079】
クラウド1204は、インターネットを含むことが多い、データネットワーク又は複数のデータネットワークを指すことが意図されている。クラウド1204に位置するクライアントマシンは、オンデマンドサービス環境と通信して、オンデマンドサービス環境によって提供されるサービスにアクセスしてもよい。例えば、クライアントマシンは、オンデマンドサービス環境にアクセスして、情報を取得、記憶、編集、及び/又は処理してもよい。
【0080】
いくつかの実施形態では、エッジルータ1208及び1212は、クラウド1204とオンデマンドサービス環境1200の他のコンポーネントとの間でパケットをルーティングする。エッジルータ1208及び1212は、BGP(Border Gateway Protocol)を用いてもよい。BGPは、インターネットのコアルーティングプロトコルである。エッジルータ1208及び1212は、インターネット上の自律システム間のネットワーク到達可能性を指定するIPネットワーク又は「プレフィックス」のテーブルを維持してもよい。
【0081】
1つ以上の実施形態では、ファイアウォール1216は、オンデマンドサービス環境1200の内部コンポーネントをインターネットトラフィックから保護してもよい。ファイアウォール1216は、規則のセット及び他の基準に基づいて、オンデマンドサービス環境1200の内部コンポーネントへのアクセスをブロック、許可、又は拒否してもよい。ファイアウォール1216は、パケットフィルタ、アプリケーションゲートウェイ、ステートフルフィルタ、プロキシサーバ、又は任意の他のタイプのファイアウォールのうちの1つ以上として機能してもよい。
【0082】
いくつかの実施形態では、コアスイッチ1220及び1224は、オンデマンドサービス環境1200内でパケットを転送する大容量スイッチである。コアスイッチ1220及び1224は、オンデマンドサービス環境内の異なるコンポーネント間のデータを迅速にルーティングするネットワークブリッジとして構成されてもよい。いくつかの実施形態では、2つ以上のコアスイッチ1220及び1224の使用は、冗長性及び/又は短縮された待ち時間を提供してもよい。
【0083】
いくつかの実施形態では、ポッド1240及び1244は、オンデマンドサービス環境によって提供されるコアデータ処理及びサービス機能を実行してもよい。各ポッドは、様々なタイプのハードウェア及び/又はソフトウェアコンピューティングリソースを含んでもよい。ポッドアーキテクチャの一例は、
図12Bを参照して、より詳細に議論される。
【0084】
いくつかの実施形態では、ポッド1240と1244との間の通信は、ポッドスイッチ1232及び1236を介して行われてもよい。ポッドスイッチ1232及び1236は、例えばコアスイッチ1220、1224を介して、ポッド1240、1244とクラウド1204に位置するクライアントマシンとの間の通信を容易にしてもよい。また、ポッドスイッチ1232、1236は、ポッド1240、1244とデータベースストレージ1256との間の通信を容易にしてもよい。
【0085】
いくつかの実施形態では、負荷バランサ1228は、ポッド1240と1244との間に負荷を分散させてもよい。ポッド間のオンデマンドサービス要求をバランシングすることは、リソースの使用の改善、スループットの増加、応答時間の短縮、及び/又はオーバーヘッドの低減を支援してもよい。負荷バランサ1228は、トラフィックを分析し、転送するための多層スイッチを含んでもよい。
【0086】
いくつかの実施形態では、データベースストレージ1256へのアクセスは、データベースファイアウォール1248によってガードされてもよい。データベースファイアウォール1248は、プロトコルスタックのデータベースアプリケーション層で動作するコンピュータアプリケーションファイアウォールとして機能してもよい。データベースファイアウォール1248は、構造クエリ言語(SQL)インジェクション、データベースルートキット、権限のない情報開示などのアプリケーション攻撃からデータベースストレージ1256を保護してもよい。
【0087】
いくつかの実施形態では、データベースファイアウォール1248は、ゲートウェイルータに渡す前に、プロキシトラフィックに1つ以上の形態の逆プロキシサービスを使用するホストを含んでもよい。データベースファイアウォール1248は、データベーストラフィックのコンテンツを検査し、特定のコンテンツ又はデータベース要求をブロックしてもよい。データベースファイアウォール1248は、TCP/IPスタックの上のSQLアプリケーションレベル上で動作し、データベース又はSQL管理インターフェースへのアプリケーションの接続を管理し、データベースネットワーク又はアプリケーションインターフェースとの間を移動するパケットを傍受し、強制する。
【0088】
いくつかの実施形態では、データベースストレージシステム1256との通信は、データベーススイッチ1252を介して行われてもよい。マルチテナントデータベースシステム1256は、データベースクエリを処理するための複数のハードウェア及び/又はソフトウェアコンポーネントを含んでもよい。したがって、データベーススイッチ1252は、オンデマンドサービス環境の他のコンポーネント(例えば、ポッド1240及び1244)によって送信されたデータベースクエリを、データベースストレージシステム1256内の正しいコンポーネントに向けてもよい。いくつかの実施形態では、データベースストレージシステム856は、多くの異なる組織によって共有されるオンデマンドデータベースシステムである。オンデマンドデータベースシステムは、マルチテナントアプローチ、仮想化アプローチ、又は任意の他のタイプのデータベースアプローチを用いてもよい。オンデマンドデータベースシステムは、
図13及び
図14を参照して、より詳細に議論される。
【0089】
図13は、いくつかの実施形態による、ポッド1244のアーキテクチャを例示するシステム図を示す。ポッド1244は、オンデマンドサービス環境1200のユーザにサービスを提供するために使用されてもよい。いくつかの実施形態では、各ポッドは、様々なサービス及び/又は他のシステムを含んでもよい。ポッド1244は、1つ以上のコンテンツバッチサーバ1264、コンテンツ検索サーバ1268、クエリサーバ1272、ファイルフォースサーバ1276、アクセス制御システム(ACS)サーバ1280、バッチサーバ1284、及びAppサーバ1288を含む。また、ポッド1244は、データベースインスタンス1290、クイックファイルシステム(QFS)1292、及びインデクサ1294を含む。1つ以上の実施形態では、ポッド1244内のサーバ間の通信の一部又は全部は、スイッチ1236を介して送信されてもよい。
【0090】
いくつかの実施形態では、アプリケーションサーバ1288は、ポッド1244を介してオンデマンドサービス環境1200によって提供されるアプリケーションの構築をサポートするための手順(例えば、プログラム、ルーチン、スクリプト)の実行専用のハードウェア及び/又はソフトウェアフレームワークを含んでもよい。いくつかのそのような手順は、本明細書に記載のサービスを提供するための動作を含んでもよい。コンテンツバッチサーバ1264は、ポッド内部に向けられた要求を行ってもよい。これらの要求は、長期にわたって動作し、及び/又は特定の顧客と結びつけられなくてもよい。例えば、コンテンツバッチサーバ1264は、ログマイニング、クリーンアップワーク、及びメンテナンスタスクに関連する要求を処理してもよい。
【0091】
コンテンツ検索サーバ1268は、クエリ及びインデクサ機能を提供してもよい。例えば、コンテンツ検索サーバ1268によって提供される機能は、ユーザがオンデマンドサービス環境に記憶されたコンテンツを通して検索することを可能にしてもよい。ファイルフォースサーバ1276は、ファイルフォースストレージ1278に記憶された要求情報を管理してもよい。ファイルフォースストレージ1278は、文書、画像、BLOB(basic large object)などを記憶してもよい。ファイルフォースサーバ1276を使用して情報の要求を管理することによって、データベース上の画像フットプリントが低減され得る。
【0092】
クエリサーバ1272は、1つ以上のファイルシステムから情報を取得するために使用されてもよい。例えば、クエリシステム1272は、Appサーバ1288から情報の要求を受信し、次いで、情報クエリをポッドの外側に位置するNFS1296に送信してもよい。ポッド1244は、異なる組織が同じデータベースへのアクセスを共有するマルチテナント環境として構成されたデータベースインスタンス1290を共有してもよい。追加的に、ポッド1244によって提供されるサービスは、様々なハードウェア及び/又はソフトウェアリソースを必要としてもよい。いくつかの実施形態では、ACSサーバ1280は、データ、ハードウェアリソース、又はソフトウェアリソースへのアクセスを制御してもよい。
【0093】
いくつかの実施形態では、バッチサーバ1284は、指定された時間にタスクを動作させるために使用されるバッチジョブを処理してもよい。したがって、バッチサーバ1284は、バッチジョブをトリガするために、appサーバ1288のような他のサーバに命令を送信してもよい。いくつかの実施形態において、QFS1292は、カリフォルニア州サンタクララのSun Microsystems(登録商標)から利用可能なオープンソースファイルシステムであってもよい。QFSは、ポッド1244内で利用可能な情報を記憶し、アクセスするための高速アクセスファイルシステムとして機能してもよい。QFS1292は、いくつかのボリューム管理機能をサポートしてもよく、多くのディスクをファイルシステムにまとめることを可能にする。ファイルシステムメタデータは、ディスクの別々のセット上に保持することができ、これは、長いディスクシークが許容されないストリーミングアプリケーションに有用であることがある。したがって、QFSシステムは、ネットワークファイルシステム1296及び/又は他のストレージシステムに記憶されたデータを識別、取得、移動、及び/又は更新するために、1つ以上のコンテンツ検索サーバ1268及び/又はインデクサ1294と通信してもよい。
【0094】
いくつかの実施形態では、1つ以上のクエリサーバ1272は、ポッド1244の外側に記憶された情報を取得及び/又は更新するために、NFS1296と通信してもよい。NFS1296は、ポッド1244に位置するサーバが、ローカルストレージがアクセスされる方法と同様の方式で、ネットワークを介してファイルにアクセスするための情報にアクセスすることを可能にしてもよい。いくつかの実施形態では、クエリサーバ1222からのクエリは、負荷バランサ1220を介してNFS1296に送信されてもよく、この負荷バランサは、オンデマンドサービス環境で利用可能な様々なリソース上のリソース要求を分散してもよい。また、NFS1296は、QFS1292と通信して、NFS1296に記憶された情報を更新し、及び/又はポッド1244内に位置するサーバによる使用のためにQFS 1292に情報を提供してもよい。
【0095】
いくつかの実施形態では、ポッドは、1つ以上のデータベースインスタンス1290を含んでもよい。データベースインスタンス1290は、QFS1292に情報を送信してもよい。情報がQFSに送信されるときに、それは、追加のデータベース呼び出しを必要とせずに、ポッド1244内のサーバによる使用に利用可能となってもよい。いくつかの実施形態では、データベース情報は、インデクサ1294に送信されてもよい。インデクサ1294は、データベース1290及び/又はQFS1292内で利用可能な情報のインデックスを提供してもよい。インデックス情報は、ファイルフォースサーバ1276及び/又はQFS1292に提供されてもよい。
【0096】
図13は、いくつかの実施形態による、オンデマンドデータベースサービスが使用される可能性がある環境1310のブロック図を示す。環境1310は、オンデマンドデータベースサービス1316を含む。ユーザシステム1312は、データベースユーザシステムにアクセスするためにユーザによって使用される任意のマシン又はシステムであってもよい。例えば、ユーザシステム1312のいずれかは、ハンドヘルドコンピューティングシステム、携帯電話、ラップトップコンピュータ、ワークステーション、及び/又はコンピューティングシステムのネットワークであってもよい。
図13及び
図14に例示するように、ユーザシステム1312は、ネットワーク1314を介してオンデマンドデータベースサービス1316と対話する可能性がある。
【0097】
システム1316のようなオンデマンドデータベースサービスは、必ずしもデータベースシステムの構築及び/又は維持に関係する必要はないが、代わりに、ユーザがデータベースシステムを必要とするときに(例えば、ユーザの要求があると)それらの使用に利用可能であり得る、外部ユーザに利用可能されるデータベースシステムである。いくつかのオンデマンドデータベースサービスは、共通データベースイメージのテーブルに記憶された1つ以上のテナントからの情報を記憶して、マルチテナントデータベースシステム(MTS)を形成してもよい。したがって、「オンデマンドデータベースサービス1316」及び「システム1316」は、本明細書では互換的に使用される。データベースイメージは、1つ以上のデータベースオブジェクトを含んでもよい。リレーショナルデータベース管理システム(RDBMS)又はその等価物は、データベースオブジェクトに対する情報の記憶及び取得を実行してもよい。アプリケーションプラットフォーム1318は、システム1316のアプリケーションが、ハードウェア、ソフトウェアなどを動作させることを可能にするフレームワーク、例えば、オペレーティングシステムであってもよい。一実装では、オンデマンドデータベースサービス1316は、オンデマンドデータベースサービスのプロバイダ、ユーザシステム1312を介してオンデマンドデータベースサービスにアクセスするユーザ、又はユーザシステム1312を介してオンデマンドデータベースサービスにアクセスするサードパーティアプリケーション開発者によって開発された1つ以上のアプリケーションの作成、管理、及び実行を可能にするアプリケーションプラットフォーム1318を含んでもよい。
【0098】
システム1316の要素のための1つの配置を
図13に示し、これは、ネットワークインターフェース1320、アプリケーションプラットフォーム1318、テナントデータ1323のためのテナントデータストレージ1322、システム1316及び場合によっては複数のテナントがアクセス可能なシステムデータ1325のためのシステムデータストレージ1324、システム1316の様々な機能を実装するためのプログラムコード1326、並びにアプリケーションホスティングサービスの一部としてアプリケーションを動作させるような、MTSシステムプロセス及びテナント固有のプロセスを実行するためのプロセス空間1328を含む。システム1316上で実行され得るさらなるプロセスは、データベースインデックスプロセスを含む。
【0099】
ユーザシステム1312のユーザは、それぞれの容量が異なってもよく、特定のユーザシステム1312の容量は、現在のユーザに対する許可(許可レベル)によって完全に決定される可能性がある。例えば、コールセンターエージェントがシステム1316と対話するために特定のユーザシステム1312を使用している場合、ユーザシステム1312は、そのコールセンターエージェントに割り当てられた容量を有する。しかしながら、管理者は、システム1316と対話するためにそのユーザシステムを使用しているが、そのユーザシステムは、その管理者に割り当てられた能力を有する。階層的役割モデルを有するシステムでは、1つの許可レベルのユーザは、下位の許可レベルのユーザがアクセスできるアプリケーション、データ、及びデータベース情報にアクセスしてもよいが、上位の許可レベルのユーザがアクセスできる特定のアプリケーション、データベース情報、及びデータにはアクセスできないことがある。したがって、異なるユーザは、ユーザのセキュリティ又は許可レベルに依存して、アプリケーション及びデータベース情報へのアクセス及び修正に関して異なる能力を有してもよい。
【0100】
ネットワーク1314は、互いに通信するデバイスのネットワーク又はその組み合わせである。例えば、ネットワーク1314は、LAN(local area network)、WAN(wide area network)、電話ネットワーク、無線ネットワーク、ポイントツーポイントネットワーク、スターネットワーク、トークンリングネットワーク、ハブネットワーク、又は他の適切な設定のいずれか1つ又は任意の組み合わせとすることができる。現在使用されているコンピュータネットワークの最も一般的なタイプは、TCP/IP(Transfer Control Protocol and Internet Protocol)ネットワーク(例えば、インターネット)であるので、そのネットワークは、本明細書の多くで使用される。しかしながら、TCP/IPは頻繁に実装されるプロトコルであるが、いくつかの実施形態で使用されるネットワークはそれに限定されないことを理解されたい。
【0101】
ユーザシステム1312は、TCP/IPを使用してシステム1316と通信し、より上位のネットワークレベルにおいて、HTTP、FTP、AFS、WAPなどの他の一般的なインターネットプロトコルを使用して通信する可能性がある。HTTPが使用される例では、ユーザシステム1312は、システム1316においてHTTPサーバとの間でHTTPメッセージを送受信するために、一般的に「ブラウザ」と呼ばれるHTTPクライアントを含む可能性がある。そのようなHTTPサーバは、システム1316とネットワーク1314との間の唯一のネットワークインターフェースとして実装される可能性があるが、他の技術も同様に又は代わりに使用される可能性がある。いくつかの実施形態では、システム1316とネットワーク1314との間のインターフェースは、負荷をバランシングし、複数のサーバを介して到来HTTP要求を均等に分散させるために、ラウンドロビンHTTP要求ディストリビュータなどの負荷共有機能を含む。少なくとも、そのサーバにアクセスしているユーザと同様に、複数のサーバの各々は、MTSのデータにアクセスすることができるが、代わりに、他の別の構成が使用されてもよい。
【0102】
いくつかの実施形態では、
図13に示すシステム1316は、ウェブベースの顧客関係管理(CRM)システムを実装する。例えば、いくつかの実施形態では、システム1316は、CRMソフトウェアアプリケーションを実装及び実行し、ユーザシステム1312との間で関連データ、コード、フォーム、ウェブページ、及び他の情報を提供し、データベースシステムとの間で関連データ、オブジェクト、及びウェブページコンテンツを記憶し、取得するように構成されたアプリケーションサーバを含む。マルチテナントシステムでは、複数のテナントのためのデータは、同じ物理データベースオブジェクトに記憶されてもよいが、テナントデータは、典型的には、そのようなデータが明示的に共有されない限り、1つのテナントのデータが他のテナントのデータと論理的に分離され、1つのテナントが他のテナントのデータへのアクセスを有しないように配置される。特定の実施形態では、システム1316は、CRMアプリケーション以外のアプリケーション、又はこれに加えてアプリケーションを実装する。例えば、システム1316は、複数のホストされた(標準及びカスタム)アプリケーションへのテナントアクセスを提供してもよい。ユーザ(又はサードパーティ開発者)アプリケーションは、CRMを含んでも含まなくてもよく、アプリケーションプラットフォーム1318によってサポートされてもよく、このアプリケーションプラットフォームは、アプリケーションの作成、1つ以上のデータベースオブジェクトへの記憶、及びシステム1316のプロセス空間における仮想マシンにおけるアプリケーションの実行を管理する。
【0103】
各ユーザシステム1312は、デスクトップパーソナルコンピュータ、ワークステーション、ラップトップ、PDA、携帯電話、又は任意の無線アクセスプロトコル(WAP)が可能なデバイス、又はインターネット若しくは他のネットワーク接続と直接的又は間接的にインターフェースすることが可能な任意の他のコンピューティングシステムを含むことができる。ユーザシステム1312は、典型的には、HTTPクライアント、例えば、MicrosoftのInternet Explorer(登録商標)ブラウザ、MozillaのFirefox(登録商標)ブラウザ、Operaのブラウザ、携帯電話、PDA、又は他の無線デバイスの場合のWAPが可能なブラウザなどのブラウザプログラムを動作させて、ユーザシステム1312のユーザ(例えば、マルチテナントデータベースシステムの加入者)が、ネットワーク1314を介してシステム1316からそれに利用可能な情報、ページ、及びアプリケーションにアクセスし、処理し、閲覧することを可能にする。
【0104】
各ユーザシステム1312はまた、典型的には、ページ、フォーム、アプリケーション、及びシステム1316又は他のシステム若しくはサーバによって提供される他の情報と併せて、ディスプレイ(例えば、モニタスクリーン、LCDディスプレイなど)上でブラウザによって提供されるグラフィカルユーザインターフェース(GUI)と対話するための、キーボード、マウス、トラックボール、タッチパッド、タッチスクリーン、ペンなどの1つ以上のユーザインターフェースデバイスを含む。例えば、ユーザインターフェースデバイスは、システム1316によってホストされるデータ及びアプリケーションにアクセスし、記憶されたデータに対する検索を実行し、そうでなければ、ユーザが、その1つ以上のユーザに提示されてもよい様々なGUIページと対話することを可能にするように使用され得る。上記に議論したように、実施形態は、ネットワークの特定のグローバルインターネットワークを参照するインターネットとの使用に好適である。しかしながら、イントラネット、エクストラネット、仮想プライベートネットワーク(VPN)、非TCP/IPベースのネットワーク、任意のLAN又はWANなどの他のネットワークが、インターネットの代わりに使用され得ると理解されたい。
【0105】
いくつかの実施形態によれば、各ユーザシステム1312及びそれのコンポーネントの全ては、Intel Pentium(登録商標)プロセッサなどの中央処理ユニットを使用して動作するコンピュータコードを含む、ブラウザなどのアプリケーションを使用してオペレータ構成可能である。同様に、システム1316(及び複数が存在するMTSの追加インスタンス)及びそれらのコンポーネントの全ては、Intel Pentium(登録商標)プロセッサなどを含み得るプロセッサシステム1317などの中央処理装置、及び/又は複数のプロセッサユニットを使用して動作するコンピュータコードを含むアプリケーションを使用してオペレータ構成可能である可能性がある。
【0106】
コンピュータプログラム製品の実装は、命令が記憶されたマシン可読記憶媒体(複数可)を含み、命令は、本明細書に記載の実施形態のプロセスのいずれかを実行するためにコンピュータをプログラムするように使用され得る。本明細書に記載のウェブページ、アプリケーション、及び他のデータ及びメディアコンテンツを相互に通信し、処理するためにシステム1316を動作させ、構成するためのコンピュータコードは、好ましくは、ハードディスクにダウンロードされ、記憶されるが、プログラムコード全体又はその一部分はまた、ROM、RAMなどの任意の他の揮発性又は不揮発性のメモリ媒体又はデバイスに記憶されてもよいし、フロッピーディスク、光ディスク、デジタル多用途ディスク(DVD)、コンパクトディスク(CD)、マイクロドライブ、及び光磁気ディスクを含む任意のタイプの回転媒体、磁気カード又は光カード、ナノシステム(分子メモリICを含む)、命令及び/又はデータを記憶するのに好適な任意のタイプの媒体又はデバイスなどのプログラムコードを記憶することが可能な任意の媒体上に提供されてもよい。追加的に、プログラムコード全体又はその一部分は、例えば、インターネットを介して伝送媒体を介してソフトウェアソースから、又は他のサーバから送信及びダウンロードされてもよいし、通信媒体及びプロトコル(例えば、TCP/IP、HTTP、HTTPS、イーサネットなど)を使用して、任意の他の従来のネットワーク接続(例えば、エクストラネット、VPN、LANなど)を介して送信されてもよい。また、実施形態を実装するためのコンピュータコードは、クライアントシステム及び/又はサーバ又はサーバシステム上で実行可能な任意のプログラミング言語、例えば、C、C++、HTML、任意の他のマークアップ言語、Java(商標)、JavaScript(登録商標)、ActiveX(登録商標)、VBScriptなどの任意の他のスクリプト言語、周知の多くの他のプログラミング言語などが使用されてもよいことが理解されよう。(Java(商標)は、Sun Microsystems(登録商標),Inc.の商標である。)
【0107】
いくつかの実施形態によれば、各システム1316は、システム1316のテナントとしてユーザシステム1312によるアクセスをサポートするために、ユーザ(クライアント)システム1312にウェブページ、フォーム、アプリケーション、データ及びメディアコンテンツを提供するように構成されている。したがって、システム1316は、データが共有されない限り、各テナントのデータを分離した保持するセキュリティメカニズムを提供する。複数のMTSが使用される場合、それらは互いに近接して位置する(例えば、単一の建物又はキャンパスに位置するサーバファーム)か、又は又は互いに離れたロケーションに位置(例えば、シティAに位置する1つ以上のサーバ及びシティBに位置する1つ以上のサーバ)してもよい。本明細書で使用される場合、各MTSは、ローカル又は1つ以上の地理的ロケーションに分散された論理的及び/又は物理的に接続されたサーバを含むことができる。追加的に、「サーバ」という用語は、処理ハードウェア及びプロセス空間、並びに関連するストレージシステム及びデータベースアプリケーション(例えば、OODBMS又はRDBMS)を含む、当技術分野で周知のコンピューティングシステムを含むことを意味する。
【0108】
また、「サーバシステム」及び「サーバ」は、本明細書では互換的に使用されることが多いことも理解されたい。同様に、本明細書に記載のデータベースオブジェクトは、単一のデータベース、分散データベース、分散データベースの集合、オンライン又はオフラインの冗長バックアップ又は他の冗長性を有するデータベースなどとして実装され得、分散データベース又はストレージネットワーク及び関連する処理インテリジェンスを含む可能性がある。
【0109】
図14はまた、いくつかの実施形態による、システム1316及び様々な相互接続をさらに例示する環境1310のブロック図を示す。
図14は、ユーザシステム1312が、プロセッサシステム1312A、メモリシステム1312B、入力システム1312C、及び出力システム1312Dを含んでもよい。
図14は、ネットワーク1314及びシステム1316を示す。
図14はまた、システム1316が、テナントデータストレージ1322、テナントデータ1323、システムデータストレージ1324、システムデータ1325、ユーザインターフェース(UI)1430、アプリケーションプログラムインターフェース(API)1432、PL/SOQL1434、保存ルーチン1436、アプリケーションセットアップメカニズム1438、アプリケーションサーバ14001-1400N、システムプロセススペース1402、テナントプロセススペース1404、テナントマネジメントプロセススペース1410、テナント記憶領域1412、ユーザストレージ1414、及びアプリケーションメタデータ1416を含んでもよいことを示す。他の実施形態において、環境1310は、上に列挙されたものと同じ要素を有さないことがあり、及び/又は上に列挙されたものの代わりに、又はそれに加えて、他の要素を有してもよい。
【0110】
ユーザシステム1312、ネットワーク1314、システム1316、テナントデータストレージ1322、及びシステムデータストレージ1324は、
図13において、上記で議論した。ユーザシステム1312に関して、プロセッサシステム1312Aは、プロセッサの任意の組み合わせであってもよい。メモリシステム1312Bは、1つ以上のメモリデバイス、短期メモリ、及び/又は長期メモリの任意の組み合わせであってもよい。入力システム1312Cは、キーボード、マウス、トラックボール、スキャナ、カメラ、及び/又はネットワークへのインターフェースのような入力デバイスの任意の組み合わせであってもよい。出力システム1312Dは、モニタ、プリンタ、ネットワークへのインターフェースなどの出力デバイスの任意の組み合わせであってもよい。
図14に示すように、システム1316は、HTTPアプリケーションサーバ1400のセットとして実装される(
図13の)ネットワークインターフェース1320、アプリケーションプラットフォーム1318、テナントデータストレージ1322、及びシステムデータストレージ1324を含んでもよい。また、個々のテナントプロセス空間1404及びテナント管理プロセス空間1410を含むシステムプロセス空間1402も示す。各アプリケーションサーバ1400は、データストレージ1322及びその中のテナントデータ1323、並びにシステムデータストレージ1324及びその中のシステムデータ1325を、ユーザシステム1312の要求に対応するように構成されてもよい。テナントデータ1323は、データの物理的配置及び/又は論理的配置のいずれかであり得る個々のテナントストレージ領域1412に分割される可能性がある。各テナントストレージ領域1412内で、ユーザストレージ1414及びアプリケーションメタデータ1416は、各ユーザに対して同様に割り当てられる可能性がある。例えば、ユーザの最後に使用した(MRU)アイテムのコピーが、ユーザストレージ1414に記憶される可能性がある。同様に、テナントである組織全体のMRU項目のコピーが、テナントストレージ領域1412に記憶される可能性がある。UI1430は、ユーザインターフェースを提供し、API1432は、システム1316常駐プロセスに対するアプリケーションプログラマインターフェースを、ユーザシステム1312のユーザ及び/又は開発者に提供する。テナントデータ及びシステムデータは、Oracle(商標)データベースのような様々なデータベースに記憶されてもよい。
【0111】
アプリケーションプラットフォーム1318は、アプリケーション開発者によるアプリケーションの作成及び管理をサポートするアプリケーションセットアップメカニズム1438を含み、これは、例えば、テナント管理プロセス1410によって管理されるテナントプロセス空間1404として加入者が実行するための保存ルーチン1436によって、テナントデータストレージ1322内にメタデータとして保存され得る。このようなアプリケーションの呼び出しは、API1432にプログラミング言語スタイルインターフェース拡張を提供するPL/SOQL34を使用してコーディングされてもよい。いくつかのPL/SOQL言語の実施形態の詳細な説明は、Craig Weissmanにより、2007年9月21日に出願された「METHOD AND SYSTEM FOR ALLOWING ACCESS TO DEVELOPED APPLICATIONS VIA A MULTI-TENANT ON-DEMAND DATABASE SERVICE」と題する同一出願人による米国特許第7,730,478号に議論されており、この特許は、全ての目的のためにその全体で参照により本明細書に組み込まれる。アプリケーションの呼び出しは、システムプロセスによって検出されてもよく、このシステムプロセスは、サブスクライバが呼び出しを行うためのアプリケーションメタデータ1416を取得することと、仮想マシン内のアプリケーションとしてメタデータを実行することとを管理する。
【0112】
各アプリケーションサーバ1400は、異なるネットワーク接続を介して、データベースシステムに通信可能に結合されてもよく、例えば、システムデータ1325及びテナントデータ1323へのアクセスを有する。例えば、あるアプリケーションサーバ14001はネットワーク1314(例えば、インターネット)を介して結合される可能性があり、別のアプリケーションサーバ1400N-1は直接ネットワークリンクを介して結合される可能性があり、別のアプリケーションサーバ1400Nはさらに異なるネットワーク接続によって結合される可能性がある。TCP/IP(Transfer Control Protocol and Internet Protocol)は、アプリケーションサーバ1400とデータベースシステムとの間で通信するための典型的なプロトコルである。しかしながら、使用されるネットワーク相互接続に応じて、システムを最適化するために他のトランスポートプロトコルが使用されてもよい。
【0113】
特定の実施形態では、各アプリケーションサーバ1400は、テナントである任意の組織に関連付けられた任意のユーザに対する要求を処理するように構成されている。何らかの理由で、任意の時点でアプリケーションサーバをサーバプールに追加するか、及びここから除去することが望ましいため、特定のアプリケーションサーバ1400に対するユーザ及び/又は組織に対するサーバアフィニティが存在しないことが好ましい。したがって、いくつかの実施形態では、負荷バランシング機能(例えば、F5ビッグIP負荷バランサ)を実装するインターフェースシステムは、アプリケーションサーバ1400とユーザシステム1312との間で通信可能に結合されて、アプリケーションサーバ1400に対する要求を分散させる。いくつかの実施形態では、負荷バランサは、ユーザ要求をアプリケーションサーバ1400にルーティングするために、最小接続アルゴリズムを使用する。ラウンドロビン及び観測応答時間のような負荷バランシングアルゴリズムの他の例も使用され得る。例えば、特定の実施形態では、同じユーザからの3つの連続した要求が3つの異なるアプリケーションサーバ1400にヒットし、異なるユーザからの3つの要求が同じアプリケーションサーバ1400にセットすることができる。この方式では、システム1316はマルチテナントであり、システム1316は、全く異なるユーザ及び組織を横断する異なるオブジェクト、データ及びアプリケーションの記憶及びそれらへのアクセスを処理する。
【0114】
ストレージの例として、1つのテナントが、販売要員を雇う会社である可能性があり、各コールセンターエージェントがそれらの販売プロセスを管理するためにシステム1316を使用する。したがって、ユーザは、全て、そのユーザの個人的販売プロセスに適用可能な連絡先データ、リードデータ、顧客フォローアップデータ、パフォーマンスデータ、目標、進捗データなどを(例えば、テナントデータストレージ1322に)維持する可能性がある。MTS配置の一例では、アクセス、表示、修正、報告、送信、計算などを行うためのデータ及びアプリケーションの全ては、ネットワークアクセス以上のものを持たないユーザシステムによって維持及びアクセス可能であるため、ユーザは、多くの異なるユーザシステムのいずれかから販売努力及びサイクルを管理することができる。例えば、コールセンターエージェントが顧客を訪問しており、顧客がロビーでインターネットアクセスを有する場合、顧客がロビーに到着するのを待つ間、コールセンターエージェントは、その顧客に関する重要なアップデートを取得することができる。
【0115】
各ユーザのデータは、各ユーザの雇用主に関係なく、他のユーザのデータから分離される可能性があるが、いくつかのデータは、テナントである所与の組織について、複数のユーザ又は全てのユーザによって共有又はアクセス可能な組織全体のデータである可能性であってもよい。したがって、システム1316によって管理されるいくつかのデータ構造は、テナントレベルで割り振られ、他のデータ構造は、ユーザレベルで管理される可能性がある。MTSは可能性としてある競合他社を含む複数のテナントをサポートする可能性があるため、MTSは、データ、アプリケーション、及びアプリケーションの使用を別々に保持するセキュリティプロトコルを有するべきである。また、多くのテナントは独自のシステムを維持するのではなく、MTSへのアクセスを選択することがあるため、冗長性、アップタイム、及びバックアップは、MTSに実装され得る追加機能である。システム1316はまた、ユーザ固有のデータ及びテナント固有のデータに加えて、複数のテナント又は他のデータによって使用可能なシステムレベルのデータを維持する可能性がある。このようなシステムレベルのデータは、テナント間で共有可能な産業レポート、ニュース、投稿などを含む可能性がある。
【0116】
特定の実施形態では、ユーザシステム1312(クライアントマシン/システムであってもよい)は、アプリケーションサーバ1400と通信して、テナントデータストレージ1322及び/又はシステムデータストレージ1324に1つ以上のクエリを送信する必要があるシステム1316からのシステムレベル及びテナントレベルのデータを要求及び更新する。システム1316(例えば、システム1316のアプリケーションサーバ1400)は、所望の情報にアクセスするように設計された1つ以上のSQL文(例えば、SQLクエリ)を自動的に生成する。システムデータストレージ1324は、データベースから要求されたデータにアクセスするためのクエリ計画を生成してもよい。
【0117】
各データベースは、一般に、事前定義されたカテゴリに適合されたデータを含む、論理テーブルのセットのような、オブジェクトの集合と捉えることができる。「テーブル」は、データオブジェクトの1つの表現であり、本明細書では、いくつかの実施形態による、オブジェクト及びカスタムオブジェクトの概念的な説明を簡略化するために使用されてもよい。「テーブル」及び「オブジェクト」は、本明細書では互換的に使用され得ると理解されたい。各テーブルは、視認可能スキーマ内の列又はフィールドとして論理的に配置された1つ以上のデータカテゴリを含む。テーブルの各行又はレコードは、フィールドによって定義された各カテゴリのデータのインスタンスを含む。例えば、CRMデータベースは、名前、住所、電話番号、ファックス番号などの基本的な連絡先情報のためのフィールドを有する顧客を記載するテーブルを含んでもよい。別のテーブルでは、顧客、製品、販売価格、日付などの情報のためのフィールドを含む発注を記載する可能性がある。いくつかのマルチテナントデータベースシステムでは、すべてのテナントが使用するために標準エンティティテーブルが提供される可能性がある。CRMデータベースアプリケーションの場合、このような標準エンティティは、アカウント、連絡先、リード、及び機会データのためのテーブルを含み、各々事前定義されたフィールドを含む。「エンティティ」という単語はまた、本明細書では「オブジェクト」及び「テーブル」と互換的に使用されてもよいと理解されたい。
【0118】
いくつかのマルチテナントデータベースシステムでは、テナントは、カスタムオブジェクトを作成及び記憶することが可能とされてもよいし、例えば、カスタムインデックスフィールドを含む標準オブジェクトのためのカスタムフィールドを作成することによって、標準エンティティ又はオブジェクトをカスタマイズすることが可能とされてもよい。Weissmanらによる、「CUSTOM ENTITIES AND FIELDS IN A MULTI-TENANT DATABASE SYSTEM」と題された、米国特許第7,779,039号は、その全体が参照により本明細書に組み込まれており、あらゆる目的のために、マルチテナントデータベースシステムにおいて、カスタムオブジェクトを作成し、標準オブジェクトをカスタマイズするためのシステム及び方法を教示している。いくつかの実施形態では、例えば、すべてのカスタムエンティティデータ行は、単一のマルチテナント物理テーブルに記憶され、このテーブルは、組織ごとに複数の論理テーブルを含んでもよい。いくつかの実施形態では、単一の顧客のための複数の「テーブル」は、実際には、1つの大きなテーブル及び/又は他の顧客のデータと同じテーブルに記憶されてもよい。
【0119】
本開示のこれらの態様及び他の態様は、様々なタイプのハードウェア、ソフトウェア、ファームウェアなどによって実装されてもよい。例えば、本開示のいくつかの特徴は、少なくとも部分的に、本明細書に記載の様々な動作を実行するためのプログラム命令、状態情報などを含むマシン可読媒体によって実装されてもよい。プログラム命令の例としては、コンパイラによって生成されるようなマシンコードと、インタープリタを使用してコンピュータによって実行され得る高レベルコードを含むファイルとの両方を含む。マシン可読媒体の例としては、ハードディスク、フロッピーディスク、磁気テープなどの磁気媒体、CD-ROMディスクのような光媒体、光磁気媒体、及び読出し専用メモリデバイス(「ROM」),ランダムアクセスメモリ(「RAM」)などのプログラム命令を記憶及び実行するように具体的に構成されたハードウェアデバイスを含むが、これらに限定されない。
【0120】
1つ以上の実施形態及び技術は、サービスクラウドコンソールが、複数のテナントをサポートすることができるオンデマンドデータベースサービスのためのフロントエンドを提供するアプリケーションサーバを有するシステムにおいて実装される実装を参照して説明されるが、1つ以上の実施形態及び技術は、マルチテナントデータベースにも、アプリケーションサーバ上での展開にも限定されない。実施形態は、特許請求の範囲に記載された実施形態の範囲から逸脱することなく、他のデータベースアーキテクチャ、すなわち、ORACLE(登録商標)、IBMによるDB2(登録商標)などを使用して実施されてもよい。
【0121】
上記の実施形態のいずれも、単独で、又は任意の組み合わせで互いに併用して使用されてもよい。様々な実施形態は、明細書の1つ以上の箇所で議論又は暗示され得る先行技術の様々な欠陥によって動機付けられ得るが、実施形態は、必ずしもこれらの欠陥のいずれにも対処するわけではない。言い換えれば、異なる実施形態は、本明細書で議論され得る異なる欠陥に対処してもよい。いくつかの実施形態は、本明細書で議論され得るいくつかの欠陥、又は単に1つの欠陥に部分的にのみ対処してもよく、いくつかの実施形態は、これらの欠陥のいずれにも対処しないことがある。
【0122】
様々な実施形態が本明細書に記載されているが、これらは、限定されるものではなく、例として提示されていると理解されたい。したがって、本開示の広がり及び範囲は、本明細書に記載の実施形態のいずれによっても限定されるべきではなく、以下の後述する特許請求の範囲及びそれらの均等物に従ってのみ定義されるべきである。
本明細書は、以下についても開示している。
(付記1)
セキュリティサーバを使用してクライアントデータをセキュア化するためのコンピュータ実装方法であって、
セキュリティサーバによって、アプリケーションサーバから対称鍵を導出する要求を受信することであって、前記要求は、公開鍵、ソルト値、及び秘密鍵に関連付けられた鍵識別子を含む、受信することと、
前記セキュリティサーバによって、受信した前記公開鍵及び前記鍵識別子に関連付けられた前記秘密鍵に基づいて、鍵導出関数を使用して、前記対称鍵を導出すること、
前記アプリケーションサーバがアクセスできないストレージロケーションから前記鍵識別子に関連付けられた前記秘密鍵を取得することと、
鍵共有プロトコルを、受信した前記公開鍵と、前記鍵識別子に関連付けられ取得された前記秘密鍵に適用することであって、前記鍵共有プロトコルは、鍵共有鍵を出力する、適用することと、
鍵導出関数を、前記鍵共有鍵に適用して、前記対称鍵を生成することと、
前記セキュリティサーバによって、導出された前記対称鍵を要求側の前記アプリケーションサーバに送信することであって、前記対称鍵は、その後、前記アプリケーションサーバのメモリ内キャッシュに記憶され、かつ前記アプリケーションサーバが顧客データを暗号化するために使用される、送信することと、を含む、方法。
(付記2)
前記セキュリティサーバは、複数のテナントのための非対称鍵ペアのリストを記憶し、各非対称鍵ペアは、公開鍵と秘密鍵を含み、各秘密鍵は、対応する鍵識別子に関連付けられる、付記1に記載の方法。
(付記3)
導出された前記対称鍵を要求側の前記アプリケーションサーバに送信した後に、前記セキュリティサーバによって、導出された前記対称鍵を削除することをさらに含む、付記1に記載の方法。
(付記4)
前記公開鍵と前記鍵識別子に関連付けられた前記秘密鍵の両方が、楕円曲線上の異なる点に対応する、付記1に記載の方法。
(付記5)
前記鍵共有鍵を生成する前記鍵共有プロトコルは、受信された前記公開鍵と前記鍵識別子に関連付けられ取得された前記秘密鍵の両方に共通の楕円曲線に基づく、付記1に記載の方法。
(付記6)
前記鍵共有プロトコルは、Diffie-Hellman鍵交換である、付記1に記載の方法。
(付記7)
前記秘密鍵は、前記セキュリティサーバと通信する鍵管理サービスから取得され、前記鍵管理サービスは、前記セキュリティサーバがアクセス可能な複数の秘密鍵を記憶する、付記1に記載の方法。
(付記8)
顧客データをセキュア化するための装置であって、
セキュリティサーバの1つ以上のプロセッサと、
複数の命令を記憶する非一時的なコンピュータ可読媒体であって、前記複数の命令が実行されるときに、前記1つ以上のプロセッサに、
アプリケーションサーバから対称鍵を導出する要求を受信することであって、前記要求は、公開鍵、ソルト値、秘密鍵に関連付けられた鍵識別子を含む、受信することと、
受信した前記公開鍵と、前記鍵識別子に関連付けられた前記秘密鍵に基づいて、鍵導出関数を使用して、前記対称鍵を導出することであって、
前記アプリケーションサーバがアクセスできないストレージロケーションから前記鍵識別子に関連付けられた前記秘密鍵を取得することと、
鍵共有プロトコルを、受信した前記公開鍵と、前記鍵識別子に関連付けられ取得された前記秘密鍵に適用することであって、前記鍵共有プロトコルは、鍵共有鍵を出力する、適用することと、
鍵導出関数を、前記鍵共有鍵に適用して、前記対称鍵を生成することと、を行う、導出することと、
導出された前記対称鍵を要求側の前記アプリケーションサーバに送信することであって、前記対称鍵は、前記アプリケーションサーバのメモリ内キャッシュに記憶され、かつ前記アプリケーションサーバが顧客データを暗号化するために使用される、送信することと、を行わせる、装置。
(付記9)
前記複数の命令が、前記1つ以上のプロセッサに、複数のテナントのための非対称鍵のリストを記憶させる命令をさらに含み、各非対称鍵ペアが、公開鍵と秘密鍵を含み、各秘密鍵が、対応するキー識別子に関連付けられる、付記8に記載の装置。
(付記10)
前記複数の命令が、前記1つ以上のプロセッサに、導出された前記対称鍵を要求側の前記アプリケーションサーバに送信した後に、前記セキュリティサーバによって、導出された前記対称鍵を削除させる命令をさらに含む、付記8に記載の装置。
(付記11)
前記公開鍵と前記鍵識別子に関連付けられた前記秘密鍵の両方が、楕円曲線上の異なる点に対応する、付記8に記載の装置。
(付記12)
前記鍵共有鍵を生成する前記鍵共有プロトコルは、受信された前記公開鍵と前記鍵識別子に関連付けられ取得された前記秘密鍵の両方に共通の楕円曲線に基づく、付記8に記載の装置。
(付記13)
前記鍵共有プロトコルは、Diffie-Hellman鍵交換である、付記8に記載の装置。
(付記14)
前記秘密鍵は、前記セキュリティサーバがアクセス可能な複数の秘密鍵を記憶する鍵管理サービスから取得される、付記8に記載の装置。
(付記15)
非一時的なコンピュータ可読媒体から取得されるときに、1つ以上のプロセッサによって実行されるコンピュータ可読のプログラムコードを含むコンピュータプログラム製品であって、前記プログラムコードは、
アプリケーションサーバから対称鍵を導出する要求を受信することであって前記要求は、公開鍵、ソルト値及び秘密鍵に関連付けられた鍵識別子を含む、受信することと、
受信した前記公開鍵及び前記秘密鍵に基づいて、鍵導出関数を使用して、前記対称鍵を導出することであって、
前記アプリケーションサーバがアクセスできないストレージロケーションから前記秘密鍵を取得することと、
受信した前記公開鍵及び取得された前記秘密鍵の両方に共通の楕円曲線を使用して、鍵共有プロトコルを、受信した前記公開鍵及び取得された前記秘密鍵に適用することであって、前記鍵共有プロトコルは、鍵共有鍵を出力する、適用することと、
鍵導出関数を、前記鍵共有鍵に適用して、前記対称鍵を生成することと、を行う、導出することと、
導出された前記対称鍵を要求側の前記アプリケーションサーバに送信することであって、前記対称鍵は、前記アプリケーションサーバのメモリ内キャッシュに記憶され、かつ前記アプリケーションサーバが顧客データを暗号化するために使用される、送信することと、を行う命令を含む、コンピュータプログラム製品。
(付記16)
複数のテナントのための非対称鍵のリストを記憶する命令をさらに含み、前記アプリケーションサーバは、前記複数のテナントのうちの1つに関連付けられ、前記リストの各対称鍵は、テナントがアクセス可能な公開鍵と、前記セキュリティサーバがアクセス可能であり、かつ前記複数のテナントがアクセス不可能な秘密鍵に関連付けられる、付記15に記載のコンピュータプログラム製品。
(付記17)
導出された前記対称鍵を要求側の前記アプリケーションサーバに送信した後に、導出された前記対称鍵を削除する命令をさらに含む、付記15に記載のコンピュータプログラム製品。
(付記18)
前記鍵共有鍵を生成する前記鍵共有プロトコルは、受信された前記公開鍵と前記鍵識別子に関連付けられ取得された前記秘密鍵の両方に共通の楕円曲線に基づく、付記15に記載のコンピュータプログラム製品。
(付記19)
前記鍵共有プロトコルは、Diffie-Hellman鍵交換である、付記15に記載のコンピュータプログラム製品。
(付記20)
前記秘密鍵は、前記セキュリティサーバと通信する鍵管理サービスから取得され、前記鍵サーバは、前記セキュリティサーバに提供される複数の公開鍵にリンクされた複数の秘密鍵を格納するハードウェアセキュリティモジュール(HSM)を含む、付記15に記載のコンピュータプログラム製品。