JP6700294B2 - データの安全を確保するためのシステムおよび方法 - Google Patents

データの安全を確保するためのシステムおよび方法 Download PDF

Info

Publication number
JP6700294B2
JP6700294B2 JP2017546194A JP2017546194A JP6700294B2 JP 6700294 B2 JP6700294 B2 JP 6700294B2 JP 2017546194 A JP2017546194 A JP 2017546194A JP 2017546194 A JP2017546194 A JP 2017546194A JP 6700294 B2 JP6700294 B2 JP 6700294B2
Authority
JP
Japan
Prior art keywords
key
encrypted
fragment
decrypted
hsm
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2017546194A
Other languages
English (en)
Other versions
JP2018507652A (ja
Inventor
ペッダーダ,プラサド
ホーウィッツ,ジェレミー
エルガマル,タヘル
スティール,マシュー
ゲスト,ライアン
Original Assignee
セールスフォース ドット コム インコーポレイティッド
セールスフォース ドット コム インコーポレイティッド
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by セールスフォース ドット コム インコーポレイティッド, セールスフォース ドット コム インコーポレイティッド filed Critical セールスフォース ドット コム インコーポレイティッド
Publication of JP2018507652A publication Critical patent/JP2018507652A/ja
Application granted granted Critical
Publication of JP6700294B2 publication Critical patent/JP6700294B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0894Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0861Generation of secret information including derivation or calculation of cryptographic keys or passwords
    • H04L9/0877Generation of secret information including derivation or calculation of cryptographic keys or passwords using additional device, e.g. trusted platform module [TPM], smartcard, USB or hardware security module [HSM]

Description

著作権表示
本特許文献の開示の一部は、著作権保護の対象となる資料を含む。著作権者は、特許商標庁の特許ファイルまたは記録に記載されているように、特許文書または特許開示のいずれかによるファクシミリ複製に異論を唱えないが、それ以外の場合はすべての著作権を留保する。
本開示は、一般にデータ処理に関し、より具体的にはデータの暗号化および復号に関する。
背景技術の項で論じる主題は、単に背景技術の項でのその言及の結果として従来技術と仮定されるものではない。同様に、背景技術の項で言及される、または背景技術の項の主題と関連する課題は、従来技術において以前認識されていたと仮定すべきではない。背景技術の項の主題は、単に異なるアプローチを表すもので、それ自体で発明であってもよい。
以下の詳細な説明は、開示される技術を参照してなされる。好ましい実装形態は、開示される技術を例示するために記述され、特許請求の範囲により定義されるその範囲を制限するものではない。当業者であれば、その記述の様々な同等の変更形態を認識するであろう。
(データベース、データストアなどの)記憶領域に保存された(顧客データなどの)データの安全を確保するための既存の方法は、非対称または対称暗号法に基づくことができる。非対称暗号法では、パブリックキーおよびプライベートキーの一対の鍵が使用される。顧客データは、パブリックキーを使用して暗号化することができ、対応するプライベートキーを使用して復号できる。典型的には、非対称キーの対のパブリックキーを使用してデータを暗号化することは非常に時間がかかる。その代わりに実用上受け入れられるのは、対称キーを使用してデータを暗号化することである。対称キー自体をパブリックキーを用いて暗号化し、それにより、対称キー暗号化の性能上の問題を克服する。
一部の実施形態では、マルチテナントデータベース環境で顧客データの安全を確保するための方法およびシステムは、暗号化された第1のキーフラグメントを第1の記憶領域に保存し、暗号化された第2のキーフラグメントを第1の記憶領域とは異なる第2の記憶領域に保存することを含む。第1の記憶領域および第2の記憶領域へのアクセスは、相互に排他的である。第1のキーフラグメントおよび第2のキーフラグメントは、キーセットを使用して暗号化されている。マスターキーを導出する要求を受信することに基づいて、暗号化された第1のキーフラグメントおよび暗号化された第2のキーフラグメントは、キーセットおよびハードウェアセキュリティモジュール(HSM)と関連付けられたキーを使用して復号される。マスターキーは、復号された第1のキーフラグメントおよび復号された第2のキーフラグメントを使用して導出される。マスターキーは、インメモリキャッシュに格納し、暗号化または暗号化された顧客データの復号のために使用することができる。
本発明の他の態様および利点は、以下の図面、詳細な説明、および特許請求の範囲をよく調べることにより理解することができる。
[0001]
含まれる図面は、例示のみを目的として、開示された技術の可能な構造および工程段階の例を提供する働きのみをする。本開示の精神および範囲から逸脱することなく当業者によりなすことができる、実施形態への形態および詳細の変更をこれらの図面は制限しない。
本発明の一部の実施形態と共に使用することができる例示的なコンピューティングシステム102の図面を示す。 本発明の一部の実施形態と共に使用することができる例示的なネットワーク環境200の図面を示す。 一部の実施形態にしたがって、顧客データを暗号化および復号するマスターキーを導出するために使用することができるキーフラグメントの例を示す。 一部の実施形態にしたがって、マスターキーと顧客の間の例示的な関係を示す。 一部の実施形態にしたがって、HSMを使用する暗号化の例を示す。 一部の実施形態にしたがって、キーリリースを使用する暗号化の例を示す。 一部の実施形態にしたがって、複数のキーリリースの例を示す。 一部の実施形態にしたがって、暗号化を実施するためにキーリリースのキーを使用する例を示す。 一部の実施形態にしたがって実施される、顧客データの要求を処理する例示的なプロセスの流れ図を示す。 一部の実施形態にしたがって実施される、顧客データを暗号化する例示的なプロセスの流れ図を示す。 一部の実施形態にしたがって実施される、暗号化を実施する例示的なプロセスの流れ図を示す。 一部の実施形態にしたがって実行される、マスターキーを生成する例示的なプロセスの流れ図を示す。 一部の実施形態にしたがって、適用可能な環境の構築構成要素を示すシステム図800を示す。 一部の実施形態にしたがって、適用可能な環境の構築構成要素をさらに示すシステム図を示す。 一部の実施形態にしたがって、マルチテナントデータベース環境のアーキテクチャを示すシステム図910を示す。 一部の実施形態にしたがって、マルチテナントデータベース環境のアーキテクチャをさらに示すシステム図910を示す。
1つまたは複数の実施形態によるシステムおよび方法の適用が、この項に説明される。これらの例は、文脈を加え、本開示の理解を助けるためにのみ提供されている。したがって、本明細書に記載の技術が、これらの特定の詳細の一部またはすべてを使わずに実行可能なことは、当業者には明らかであろう。他の例では、公知の工程段階が、本開示を不必要に不明確にすることを回避するため詳細を記載していない。他の適用も可能であり、以下の例が決定的、または範囲もしくは設定のいずれかを制限すると解釈されるべきではない。
以下の詳細な説明では、説明の一部を形成し、その中に例示により特定の実施形態を図示する、添付図面を参照する。当業者であれば本開示を実行することが可能なほど詳細にこれらの実施形態は説明されるが、これらの例は、制限するものではなく、他の実施形態を使用し、本開示の精神および範囲から逸脱することなく変更をなすことが可能であることが理解されよう。
本明細書で使用する場合、「マルチテナントデータベースシステム」という用語は、データベースシステムのハードウェアおよびソフトウェアの様々な要素が、1つまたは複数の顧客により共有可能なシステムを指す。例えば、所与のアプリケーションサーバが、多くの顧客への要求を同時に処理することができ、所与のデータベーステーブルが、潜在的にはるかに多くの顧客のための行を保存することができる。
記載の主題は、ソフトウェアベースのシステム、データベースシステム、マルチテナント環境などの任意のコンピュータ実施されるシステムのコンテキストで実施可能である。さらに、記載の主題は、互いに協働し通信する、2つ以上の別の異なるコンピュータ実施されるシステムと共に実行可能である。1つまたは複数の実装形態は、プロセス、装置、システム、デバイス、方法、コンピュータ可読命令またはコンピュータプログラムコードを含むコンピュータ可読記憶媒体などのコンピュータ可読媒体として、あるいは、その中で具現化されるコンピュータ可読プログラムコードを有するコンピュータ使用可能媒体を備えるコンピュータプログラム製品として、様々な手段で実施することができる。
一般に、マルチテナントデータベース環境は、組織または顧客と関連付けられたデータを保存するよう構成される複数のデータベースを含むことができる。(顧客データとも呼ばれる)データは、顧客が保存する際、暗号化されない場合がある。顧客データは、停止中は非対称または対称暗号法を使用して、暗号化することができる。暗号化された顧客データは、不正利用者によるアクセスから保護される。顧客データを暗号化することが重要な場合があるが、復号キー(プライベートキーまたは対称キー)の安全を確保することが望ましい場合がある。復号キーは、(データベース管理者などの)権限を付与された所定の人員だけが、アクセスすることができる記憶領域に格納することができる。顧客が顧客データを取り出したいとき、復号キーを使用して暗号化された顧客データを復号することができる。そして、復号された顧客データは、顧客に送信することができる。暗号化された顧客データは、クラウドベースの記憶領域、クラウドベースでない記憶領域、または他の形態の記憶実装を含む、マルチテナントデータベース環境と関連付けられた任意の記憶領域に保存することができる。
復号キーを保護するための一技術は、ハードウェアセキュリティモジュール(HSM)を使用することである。HSMは、オンボードでの安全なキー生成およびオンボードのキー記憶および管理を提供する。HSMは、対称キーの対を生成するために使用することができる。HSMは、誰にもHSMプライベートキーを引き抜くことができないように、その記憶装置にHSMプライベートキーを保持することができる。HSMプライベートキーは、対応するHSMパブリックキーを使用して暗号化されているデータを復号するために使用することができる。システムにインストールされるHSMを使用するためにパスワードが必要な場合がある。HSMは、ユニバーサルシリアルバス(USB)ポートを介して接続されるUSBデバイス、システムボードを介してインストールされるカードデバイス、またはネットワーク接続デバイスであってもよい。
開示された実施形態は、マルチテナントデータベース環境で、顧客データを暗号化および復号するための方法を含むことができる。この方法は、第1のキーフラグメントおよび第2のキーフラグメントを含む、2つのキーフラグメントに基づく対称キーを生成することを含む。第1のキーフラグメントおよび第2のキーフラグメントは、乱数発生器を使用して生成することができ、少なくともハードウェアセキュリティモジュール(HSM)内のキーを用いて安全を確保することができる。対称キーは、インメモリキャッシュに格納される。顧客データは、対称キーを用いて、暗号化することができる。暗号化された顧客データは、顧客が顧客データを要求するとき、対称キーを使用して復号することができる。
開示された実施形態は、顧客データの安全を確保するための装置を含み、プロセッサおよび1つまたは複数の保存された命令のシーケンスを含むことができる。その命令は、プロセッサによって実行されると、プロセッサに第1の記憶領域の暗号化された第1のキーフラグメントを保存させ、第1の記憶領域と異なる第2の記憶領域に暗号化された第2のキーフラグメントを保存させるが、第1の記憶領域および第2の記憶領域へのアクセスが、相互に排他的であり、第1のキーフラグメントおよび第2のキーフラグメントがキーセットを用いて暗号化されている。命令はさらに、マスターキーを導出する要求を受信することに基づいて、キーセットおよびハードウェアセキュリティモジュール(HSM)と関連付けられたキーを使用して、予め暗号化された第1のキーフラグメントおよび予め暗号化された第2のキーフラグメントをプロセッサに復号させる。マスターキーは、復号された第1のキーフラグメントおよび復号された第2のキーフラグメントを使用して導出される。マスターキーは、インメモリキャッシュに格納される。
開示された実施形態は、顧客データの安全を確保するための1つまたは複数の命令のシーケンスを帯同する機械可読媒体を含むことができる。その命令は、1つまたは複数のプロセッサにより実行されると、1つまたは複数のプロセッサに第1の記憶領域に暗号化された第1のキーフラグメントを保存させ、第1の記憶領域と異なる第2の記憶領域に暗号化された第2のキーフラグメントを保存させるが、第1の記憶領域および第2の記憶領域へのアクセスが互いに排他的であり、第1のキーフラグメントおよび第2のキーフラグメントがキーセットを使用して暗号化されている。マスターキーを導出する要求の受信に基づいて、1つまたは複数のプロセッサにより実行されると、命令はさらに、1つまたは複数のプロセッサにキーセットおよびハードウェアセキュリティモジュール(HSM)と関連付けられたキーを使用して予め暗号化された第1のキーフラグメントおよび予め暗号化された第2のキーフラグメントを復号させ、復号された第1のキーフラグメントおよび復号された第2のキーフラグメントを使用してマスターキーを導出させ、かつインメモリキャッシュにマスターキーを保存させる。
開示された実施形態は、コンピュータ実施されるシステム内の顧客データの暗号化および復号または顧客データの安全の確保に関連してもよい。記載の主題は、ソフトウェアベースのシステム、データベースシステム、マルチテナント環境などの任意のコンピュータ実施されるシステムのコンテキストで実施可能である。さらに、記載の主題は、互いに協働し通信する、2つ以上の別の異なるコンピュータ実施されるシステムと共に実行可能である。1つまたは複数の実施形態は、プロセス、装置、システム、デバイス、方法、コンピュータ可読命令またはコンピュータプログラムコードを含むコンピュータ可読記憶媒体などのコンピュータ可読媒体として、あるいは、その中で具現化されるコンピュータ可読プログラムコードを有するコンピュータ使用可能媒体を備えるコンピュータプログラム製品として、様々な手段で実施することができる。
コンピュータシステム
図1は、本発明の一部の実施形態と共に使用することができる例示的なコンピューティングシステムの図面を示す。コンピューティングシステム102は顧客または組織によって使用されて、マルチテナントデータベース環境と関連付けられた記憶領域に保存される顧客データを伝送することができる。例えば、マルチテナントデータベース環境は、セールスフォース・ドットコム(登録商標)によって提供されるサービスと関連付けることができる。コンピューティングシステム102はまた、記憶領域から顧客データを取り出すために使用することができる。
コンピューティングシステム102は、モバイルコンピューティングシステムなどの適切なコンピューティングシステムの単に1つの例であり、使用の範囲または設計の機能性に関する制限を示唆するものではない。コンピューティングシステム102は、図示の構成要素のいずれか1つまたはその組み合わせに関連して、依存性または要件を有すると解釈されるものではない。その設計は、多くの他の汎用または専用コンピューティングシステムと動作可能である。その設計との使用に適することができる公知のコンピューティングシステム、環境、および/または構成の例は、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップ装置、マルチプロセッサシステム、マイクロプロセッサ型システム、セットトップボックス、プログラム可能家電、ミニコンピュータ、メインフレームコンピュータ、上述のシステムまたは装置のいずれかを含む分散型コンピューティング環境などを含むが、それらに限定されない。例えば、コンピューティングシステム102は、カリフォルニア州クパティーノのApple Inc.によって開発されたオペレーティングシステム(例えば、iOS)またはカリフォルニア州マウンテンビューのGoogle Incにより開発されたオペレーティングシステム(例えば、アンドロイド)と動作するよう構成されたものなどのモバイルコンピューティングシステムとして実装することができる。
本発明の一部の実施形態は、コンピュータによって実行されるプログラムモジュールなどの、コンピューティングシステム実行可能命令の一般コンテキストに記載することができる。一般に、プログラムモジュールは、特定の作業を実行する、または特定の抽象データ型を実施するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。当業者であれば、以下で論じる任意の形態のコンピューティングマシン可読媒体上に具現化することができるコンピュータ実行可能命令として、本明細書の説明および/または図面を実装することができる。
本発明の一部の実施形態はまた、通信ネットワークを介してリンクされる遠隔処理装置によりタスクが実行される分散型コンピューティング環境で実行することができる。分散型コンピューティング環境では、プログラムモジュールをメモリ記憶装置を含むローカルおよびリモートコンピュータ記憶媒体の両方に配置することができる。
図1を参照すると、コンピューティングシステム102は、1つまたは複数のプロセシングコアを有するプロセシングユニット120、システムメモリ130、およびシステムメモリ130を含む様々なシステム構成要素をプロセシングユニット120に結合するシステムバス121を含むことができるが、それに限定されない。システムバス121は、メモリバスまたはメモリコントローラ、周辺バス、および様々なバスアーキテクチャのいずれかを使用するローカルバスを含むいくつかの種類のバス構造のいずれかであってよい。制限としてではなく例として、こうしたアーキテクチャは、業界標準アーキテクチャ(ISA)バス、マイクロチャネルアーキテクチャ(MCA)バス、拡張ISA(EISA)バス、ビデオエレクトロニクススタンダーズアソシエーション(VESA)ローカルバス、およびメザニンバスとしても知られるペリフェラルコンポーネントインターコネクト(PCI)バスを含む。
コンピューティングシステム102は、典型的には様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピューティングシステム102によりアクセス可能な任意の入手可能な媒体とすることができ、揮発性および不揮発性媒体の両方、着脱式および非着脱式媒体の両方を含む。制限としてではなく例として、コンピュータ可読媒体は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなどの情報を保存することができる。コンピュータ記憶媒体は、RAM、ROM,EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光ディスク記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、あるいは所望の情報を保存するために使用可能でコンピューティングシステム102によってアクセス可能な任意の他の媒体を含むが、それに限定されない。通信媒体は、一般にコンピュータ可読命令、データ構造、またはプログラムモジュールを具現化する。
システムメモリ130は、読み出し専用メモリ(ROM)131およびランダムアクセスメモリ(RAM)132などの揮発性および/または不揮発性メモリの形態のコンピュータ記憶媒体を含むことができる。起動中などに、コンピューティングシステム102内の構成要素の間の情報を転送する助けをする基本ルーチンを有する基本入出力システム(BIOS)133は、一般にROM131に格納される。RAM132は、プロセシングユニット120に直ちにアクセス可能かつ/または現在プロセシングユニット120により動作しているデータおよび/またはプログラムモジュールを一般に含む。制限としてではなく例として、図1はまた、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137を示す。
コンピューティングシステム102はまた、他の着脱式/非着脱式、揮発性/不揮発性コンピュータ記憶媒体を含むことができる。単なる例として、図1はまた、非着脱式、不揮発性磁気媒体から読み出し、それに書き込むハードディスクドライブ141、着脱式、不揮発性磁気ディスク152から読み出し、それに書き込む磁気ディスクドライブ151、および、例えば、CD−ROMまたは他の光媒体などの着脱式、不揮発性光ディスク156から読み出し、それに書き込む光ディスクドライブ155を示す。例示的な動作環境で使用することができる他の着脱式/非着脱式、揮発性/不揮発性コンピュータ記憶媒体として、USBドライブおよび装置、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、ソリッドステートRAM、ソリッドステートROMなどが挙げられるが、それに限定されない。ハードディスクドライブ141は、一般にインタフェース140などの非着脱式メモリインタフェースを介してシステムバス121に接続され、磁気ディスクドライブ151および光ディスクドライブ155は、一般にインタフェース150などの着脱式メモリインタフェースによってシステムバス121に接続される。
上記で論じ、図1に示すドライブおよびその関連するコンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、およびコンピューティングシステム102用の他のデータのストレージを提供する。図1では、例えば、ハードディスクドライブ141は、オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、およびプログラムデータ147を格納するように図示される。これらの構成要素は、オペレーティングシステム134、アプリケーションプログラム135、他のプログラムモジュール136、およびプログラムデータ137と同じであっても、異なってもいずれでもよいことに留意されたい。オペレーティングシステム144、アプリケーションプログラム145、他のプログラムモジュール146、プログラムデータ147は、最低、それらが別々の複写であると示すため、ここに異なる数字識別を与えられる。
ユーザは、キーボード162、マイクロフォン163、およびマウス、トラックボールもしくはタッチパッド、またはタッチスクリーンなどのポインティング装置161などの入力装置を介して、コンピューティングシステム102にコマンドおよび情報を入力することができる。他の入力装置(図示せず)は、ジョイスティック、ゲームパッド、スキャナなどを含んでもよい。これらおよび他の入力装置は、システムバス121に結合されるユーザ入力インタフェース160を介してプロセシングユニット120に接続されることが多いが、パラレルポート、ゲームポート、またはユニバーサルシリアルバス(USB)などの他のインタフェースおよびバス構造により接続されてもよい。モニタ191または他の種類のディスプレイ装置も、ビデオインタフェース190などのインタフェースを介してシステムバス121に接続される。モニタに加えて、コンピュータも、出力周辺インタフェース190を介して接続することができるスピーカ197およびプリンタ196などの他の周辺出力装置を含んでもよい。
コンピューティングシステム102は、リモートコンピュータ180などの1つまたは複数のリモートコンピュータへの論理接続を用いてネットワーク環境で動作することができる。リモートコンピュータ180は、パーソナルコンピュータ、ハンドヘルド装置、サーバ、ルータ、ネットワークPC、ピア装置または他の共通ネットワークノードであってもよく、典型的には、コンピューティングシステム102に関係する上述の多くのまたはすべての構成要素を含む。図1に図示する論理接続は、ローカルエリアネットワーク(LAN)171および広域ネットワーク(WAN)173を含むが、他のネットワークを含んでもよい。こうしたネットワーキング環境は、オフィス規模のコンピュータネットワーク、企業規模のコンピュータネットワーク、イントラネット、およびインターネットでは、普通である。
LANネットワーキング環境で使用されるとき、コンピューティングシステム102は、ネットワークインタフェースまたはアダプタ170を介してLAN171に接続することができる。WANネットワーキング環境で使用するとき、コンピューティングシステム102は、典型的には、モデム172またはインターネットなどのWAN173上で通信を確立する他の手段を含む。内蔵または外付けでもよいモデム172は、ユーザ入力インタフェース160または他の適切な機構を介してシステムバス121に接続することができる。ネットワーク環境では、コンピューティングシステム102に関連して図示されるプログラムモジュールまたはその一部は、遠隔メモリ記憶装置に格納することができる。制限としてではなく例として、図1は、リモートコンピュータ180に常駐するものとしてリモートアプリケーションプログラム185を示す。示されているネットワーク接続は例示であり、コンピュータ間の通信リンクを確立する他の手段が使用されてもよいことが、認識されよう。
本発明の一部の実施形態は、図1に関連して説明されるもののようなコンピューティングシステム上で実行可能であることに留意されたい。しかし、本発明の一部の実施形態は、サーバ、メッセージ処理専用コンピュータ、ハンドヘルド装置上、または本設計の別の部分が、分散型コンピューティングシステムの別の部分で実行可能な分散型システム上で実行可能である。
システムバス121に結合可能な他の装置は、電池または直流(DC)電源および交流(AC)アダプタ回路などの電源である。DC電源は、電池、燃料電池、または定期的に再充電が必要な同様のDC電源とすることができる。通信モジュール(またはモデム)172は、ワイヤレスアプリケーションプロトコル(WAP)を採用して、ワイヤレス通信チャネルを確立することができる。通信モジュール172は、Institute of Electrical and Electronics Engineers(IEEE)による1999年発行、IEEE規格802.11−1999、IEEE802.11規格などのワイヤレスネットワーク規格を実装することができる。
モバイルコンピューティングシステムの例として、ラップトップコンピュータ、タブレットコンピュータ、ネットブック、スマートフォン、携帯情報端末、またはモバイルコンピューティングシステムにDC電圧を供給する直流(DC)電源により給電され、単独でモバイルコンピューティングシステム内に存在し、燃料電池または電池など、定期的に再充電する必要があるオンボードプロセシングパワーおよび無線通信機能を有する他の同様の装置を挙げることができる。
ネットワーク
図2は、本発明の一部の実施形態と共に使用することができる例示的なネットワーク環境の図面を示す。ネットワーク環境200は、コンピューティングシステム205および212を含む。コンピューティングシステム205と212の1つ以上は、モバイルコンピューティングシステムであってよい。コンピューティングシステム205および212は、ネットワーク250に携帯電話接続またはWi−Fiルータ(図示せず)を介して、接続することができる。ネットワーク250は、インターネットであってもよい。コンピューティングシステム205および212は、1つまたは複数のサーバコンピューティングシステム255および260とネットワーク250を介して結合することができる。
コンピューティングシステム205は、顧客と関連付けることができ、顧客アプリケーションモジュール208を含むことができる。ユーザは、顧客コンピューティングシステム205および顧客アプリケーションモジュール208を使用して、サーバコンピューティングシステム255(アプリケーションサーバ255とも呼ばれる)に接続して通信し、アプリケーション257(例えば、Salesforce.com(登録商標)アプリケーション)にログインすることができる。ユーザは、顧客データをアプリケーションサーバ255に送信し、顧客データをアプリケーションサーバ255に要求することができる。
アプリケーションサーバ255は、顧客データを保存するよう構成されるデータベース270に結合することができる。アプリケーションサーバ255は、エンティティ(例えば、Salesforce.com(登録商標))と関連付けることができる。エンティティは、暗号のためにキーの対を生成することができる。キーの対は、パブリックキー273およびプライベートキー(図示せず)を含む。プライベートキーは、公開されていないが、エンティティ(キー保持者とも呼ばれる)により秘密が守られる。パブリックキー273は、認証局(CA)が発行した電子証明書により、誰にでも利用可能にすることができる。証明書は、証明書に含まれパブリックキーが、証明書に記されているエンティティに属するということのCAによる確認または検証でもある。例えば、顧客は証明書をダウンロードし、パブリックキー273を取得して、アプリケーションサーバ255へ送信する顧客データを暗号化することができる。エンティティ(または、プライベートキーの保持者)だけが、パブリックキー273を使用して暗号化された顧客データを復号することができる。
アプリケーションサーバ255は、暗号アプリケーションモジュール214で構成される暗号化コンピューティングシステム212と結合することができる。暗号アプリケーションモジュール214は、図4Aと共に説明するように、1つまたは複数のキーリリース用に、パブリックキー、プライベートキー、対称キー、およびキーフラグメントを生成するよう構成することができる。
アプリケーションサーバ255は、ファイルシステム271と結合することができる。ファイルシステム271は、暗号コンピューティングシステム212により生成されたキーを含む様々な暗号化されたキーを格納するよう構成することができる。
アプリケーションサーバ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と話すことができるかを知る必要がある可能性がある。
実施形態によっては、ファイルシステム271は、HSMサーバ260に対してローカルのファイルシステムと同期することができる。これにより、ファイルシステム271がローカルファイルシステムであるかのように、HSMサーバ260がファイルシステム271のデータにアクセスし、それを保存することができるようにする。実施形態によっては、HSMサーバ260は、アプリケーションサーバ255により送信された質問にのみ応答することができる。これにより、不正利用者によるHSMサーバ260と関連付けられたデータまたはサービスへのアクセスを防ぐことができる。例えば、アプリケーションサーバ255は、HSMサーバ260と共有する秘密を用いてHSMサーバ260に送信する全ての要求に電子署名することを必要とすることができる。
キーフラグメント
図3Aは、一部の実施形態にしたがって、顧客データを暗号化および復号するマスターキーを導出するために使用することができるキーフラグメントの例を示す。第1のキーフラグメント302および第2のキーフラグメント304は、乱数発生器を用いて生成することができる。例えば、乱数発生器は、256ビット長のキーフラグメントを生成することができる。実施形態によっては、第1のキーフラグメント302が、アプリケーションサーバ255(図2に示す)によって生成され、第2のキーフラグメント304が、暗号コンピューティングシステム212(図2に示す)によって生成されてもよい。実施形態によっては、第1のキーフラグメント302および第2のキーフラグメント304の両方が、アプリケーションサーバ255によって生成されてもよい。これにより、マスターキー308の導出の性能の向上に役立つ場合がある。実施形態によっては、第1のキーフラグメント302および第2のキーフラグメント304の両方が、HSMサーバ260によって生成されてもよい。これにより、導出されたマスターキー308の性能および安全性の改善に役立つ可能性がある。第1のキーフラグメント302は、顧客それぞれに対して固有であってもよい。第2のキーフラグメント304は、図4Aと共に説明するように、特定のキーリリースと関連付けることができる。
第1のキーフラグメント302は、アプリケーションサーバ255によって処理することができる。これは、第1のキーフラグメント302を暗号化させ、データベース270に格納させることを含んでもよい。第2のキーフラグメント304は、HSMサーバ260によって処理することができる。これは、HSMサーバ260とファイルシステム271の間のデータ同期に基づいて、第2のキーフラグメント304を暗号化させ、ファイルサーバ271に格納させることを含んでもよい。暗号化された第1のキーフラグメント302および暗号化された第2のキーフラグメント304をアクセス可能性が所定の人員に制限される別の領域に格納することにより、第1のキーフラグメント302および第2のキーフラグメント304が権限を付与されていない人員にアクセスされることを防ぐ。例えば、権限を付与された人員の一つの群だけが、データベース270の第1のキーフラグメント302にアクセスすることができてもよく、権限を付与された人員の別の群だけが、ファイルシステム271の第2のキーフラグメント304にアクセスすることができてもよいが、権限を付与された人員のいずれの群も、データベース270およびファイルシステム271の両方へのアクセス権はない。このアクセスは、相互に排他的と見られてもよい。実施形態によっては、アプリケーションサーバ255だけが、データベース270の第1のキーフラグメント302にアクセスすることができ、HSMサーバ260だけが、ファイルシステム271の第2のキーフラグメント304にアクセスすることができる。
実施形態によっては、第1のキーフラグメント302を使用する代わりに、顧客が生成した第1のキーフラグメント303を使用してもよい。図3Aを参照すると、顧客が生成した第1のキーフラグメント303と共に示される点線は、代替の選択肢を知らせることを意味する。顧客が生成した第1のキーフラグメント303は、256ビット乱数発生器を使用して生成することができる。顧客が生成した第1のキーフラグメント303は、顧客自身のプライベートキー(図示せず)を用いて暗号化され、その後、顧客自身のパブリックキーを用いてアプリケーションサーバ255によって復号することができる。あるいは、顧客が生成した第1のキーフラグメント303は、エンティティのパブリックキー273(図2に示す)を使用して暗号化され、その後、エンティティのプライベートキーを使用して復号されてもよい。暗号化された顧客が生成した第1のキーフラグメント303は、アプリケーションサーバ255が、第1のキーフラグメント302を処理する方法と同様に、アプリケーションサーバ255によって受信および処理することができる。
顧客が生成した第1のキーフラグメント303を使用する1つの利点は、顧客が、マスターキー308の導出にわたる一部の制御(したがって顧客データの安全性全般の制御)を有することができることである。顧客が生成した第1のキーフラグメント303が損なわれたとしても、第2のキーフラグメント304が、まだ安全な可能性がある。以下の論述は、システムが生成した第1のキーフラグメント302(または単に第1のキーフラグメント302)について言及するが、第1のキーフラグメントは、システムが生成しても、顧客が生成してもいずれでもよいことが理解されよう。
マスターキー導出
マスターキー導出モジュール306は、復号された第1のキーフラグメント302と復号された第2のキーフラグメント304を組み合わせて、マスターキー308を導出する動作を実施するよう構成することができる。実施形態によっては、動作は、セキュアアルゴリズムを介して、複数のループ(例えば、10,000ループ)を実行することを含むことができる。マスターキー308は、対称キーであってもよい。マスターキー導出モジュール306は、パスワードベースの鍵導出関数2(PBKDF2)アルゴリズムを実施するよう構成することができる。PBKDF2アルゴリズムは、暗号ハッシュ、暗号などの疑似乱数関数をソルト値と共に入力パスワードまたはパスフレーズに適用することができ、マスターキー308を導出するために幾度もプロセスを繰り返す。ソルトは、乱数発生器を使用して生成し、PBKDF2アルゴリズムで使用することができる。ソルトは、HSMサーバ260によって生成することができる。
マスターキー308は、固有であり、1つの顧客のみに関連付けられる。というのは、マスターキー導出モジュール306は、2つのキーフラグメント、すなわち第1のキーフラグメント302および第2のキーフラグメント304を使用し、少なくとも第1のキーセグメント302は、顧客それぞれに対して固有であるからである。実施形態によっては、マスターキー導出モジュール306は、HSMサーバ260に含まれてもよい。マスターキー308が導出されると、マスターキー308は暗号化され、アプリケーションサーバ255へ送信することができる。例えば、マスターキー308の暗号化は、CAパブリックキー273を使用することに基づくことができる。これにより、マスターキー308が、ネットワーク250(図2に示す)を通ってアプリケーションサーバ255へ移動する間、それを保護することができる。暗号化されたマスターキー308は、その後、CAプライベートキー272を使用してアプリケーションサーバ255によって復号することができる。
マスターキー308は、アプリケーションサーバ255のインメモリキャッシュ307に一時的に格納されることができる。インメモリキャッシュ307にあることで、マスターキー308は、アプリケーションサーバ255に素早くアクセスされることが可能になるが、不正利用者にアクセスされることはない。
マスターキー導出モジュール306が、同じ第1のキーフラグメント302および第2のキーフラグメント304を受け取る限り、同じマスターキー308が生成されることに留意されてもよい。アプリケーションサーバ255の電源が遮断され、その後再度給電される場合、インメモリキャッシュ307のマスターキー308は、喪失する可能性があるが、マスターキー導出モジュール306により導出することができる。
図3Bは、一部の実施形態にしたがって、マスターキーと顧客の間の例示的な関係を示す。この例では、2人の顧客315および325がいる。動作中、顧客315は、その顧客データ320をアプリケーションサーバ255へ送信することができる。そして、アプリケーションサーバ255は、顧客315に固有のマスターキー322を使用して、顧客データ320を暗号化し、暗号化された顧客データ324を生成する。そして、暗号化された顧客データ324は、データベース270に保存される。その後、顧客315が、その顧客データを要求すると、暗号化された顧客データ324が、データベース270から取得され、マスターキー322を使用してアプリケーションサーバ255により復号され、復号された顧客データ320が顧客315へ送信される。
同様に、顧客325は、その顧客データ330をアプリケーションサーバ255へ送信することができる。そして、アプリケーションサーバ255は、顧客325に固有のマスターキー332を使用して、顧客データ330を暗号化し、暗号化された顧客データ334を生成する。そして、暗号化された顧客データ334は、データベース270に保存される。その後、顧客325が、その顧客データを要求すると、暗号化された顧客データ334が、データベース270から取得され、マスターキー332を使用してアプリケーションサーバ255により復号され、復号された顧客データ330が顧客325へ送信される。
アプリケーションサーバ255が、マスターキー322または332にアクセスする必要があるとき、アプリケーションサーバ255は、マスターキー322または332がインメモリキャッシュ307に存在するかを調べて確認することができる。マスターキー322または332が、インメモリキャッシュ307に存在する場合、アプリケーションサーバ255によりアクセスされ使用される。マスターキー322または332が、インメモリキャッシュ307に存在しない場合、アプリケーションサーバ255は、マスターキー導出モジュール306にマスターキー322または332を導出するよう要求することができる。
図3Cは、一部の実施形態にしたがって、HSMを使用する暗号化の例を示す。マスターキー322または332の導出は、それぞれの第1のキーフラグメント323または333およびそれぞれの第2のキーフラグメント324または334に基づくので、第1のキーフラグメント323、333、および第2のキーフラグメント324、334を保護することが望ましい。実施形態によっては、第1のキーフラグメント323および第2のキーフラグメント324は、HSM350のパブリックキー351を使用して暗号化されてもよい。同様に、第1のキーフラグメント333および第2のキーフラグメント334は、HSM355のパブリックキー356を使用して暗号化されてもよい。暗号化された第1のキーフラグメント323および333は、データベース270に格納されてもよい。暗号化された第2のキーフラグメント324および334は、ファイルシステム271に格納されてもよい。実施形態によっては、第1のキーフラグメント323および第2のキーフラグメント324は、2つの異なるHSMを使用して暗号化および復号されてもよい。例えば、第1のキーフラグメント323は、パブリックキー351を使用して暗号化し、プライベートキー352を使用して復号することができるが、第2のキーフラグメント324は、パブリックキー356を使用して暗号化し、プライベートキー357を使用して復号することができる。
マスターキー322を導出する必要があるとき、マスターキー導出モジュール306は、アプリケーションサーバ255から暗号化された第1のキーフラグメント323を受信してもよい。マスターキー導出モジュール306は、暗号化された第2のキーフラグメント324をファイルシステム271に照会してもよい。マスターキー導出モジュール306は、暗号化された第1のキーフラグメント323および暗号化された第2のキーフラグメント324の両方をHSM350のプライベートキー352を使用して復号し、それらを使用してマスターキー322を導出することができる。マスターキー322が導出されると、アプリケーションサーバ255に送信し、インメモリキャッシュ307に格納し、顧客データの暗号化または暗号化された顧客データの復号に使用することができる(例えば、図3Bに示す顧客データ320)。同様に、マスターキー332を導出する必要があるとき、マスターキー導出モジュール306は、アプリケーションサーバ255から暗号化された第1のキーフラグメント333を受信してもよい。マスターキー導出モジュール306は、暗号化された第2のキーフラグメント334をファイルシステム271に照会してもよい。マスターキー導出モジュール306は、暗号化された第1のキーフラグメント333および暗号化された第2のキーフラグメント334の両方をHSM355のプライベートキー357を使用して復号し、それらを使用してマスターキー332を導出することができる。マスターキー332が導出されると、アプリケーションサーバ255に送信し、インメモリキャッシュ307に格納し、顧客データ330の暗号化または暗号化された顧客データの復号に使用することができる(例えば、図3Bに示す顧客データ330)。
HSM350のプライベートキー352だけが、HSM350のパブリックキー351を使用して予め暗号化されたキーフラグメントを復号するために使用することができるので、マスターキー322および332の導出は、HSM350および355の可用性次第であることに留意されてもよい。同様に、HSM355のプライベートキー357だけが、HSM355のパブリックキー356を使用して予め暗号化されたキーフラグメントを復号することができる。HSM350が故障した場合、HSM355のプライベートキー357は、HSM350のパブリックキー351を使用して暗号化されたキーフラグメントを復号するために使用することができない。同様に、HSM355が故障した場合、HSM350のプライベートキー352は、HSM355のパブリックキー356を使用して暗号化されたキーフラグメントを復号するために使用することができない。マスターキーおよび顧客は、特定のHSMとそのパブリックキーとプライベートキーに関連付けられているので、HSM350またはHSM355のいずれかを単一障害点としてもよい可能性がある。
キーフラグメントも冗長HSMのパブリックキーを用いて暗号化されるように、冗長性を適用して、HSMの数を増加することにより単一障害点の問題を低減することが可能かもしれない。複数の暗号化されたキーフラグメントが、データベース270に格納されてもよい。しかし、この方法は、特定のHSMを記憶して、特定の暗号化されたキーフラグメント復号する必要があるため、複雑な可能性がある。パブリックキーは、そのキーのサイズより大きいデータの暗号化のために使用できないので、パブリックキーを使用して顧客データを暗号化することは、いくつかの制限がある可能性がある。このように、サポートすることができる顧客の数は、制限される可能性がある。
図4Aは、一部の実施形態にしたがって、キーリリースを使用する暗号化の例を示す。キーリリースは、顧客が特定のHSMと関連付けられない暗号化を可能にするために使用することができ、多くの顧客をサポートすることができる。実施形態によっては、暗号コンピューティングシステム212は、複数のキー(またはシード)410を有するキーセットを生成するよう構成することができる。キーセット410は、キーリリースと関連付けることができる。1つまたは複数のキーリリースがあってもよい。キーセット410は、任意の顧客に使用することができる。複数のキーリリースがある場合、キーリリースそれぞれが、固有のキーセット410と関連付けられる。
キーセット410は、リリース毎プライベートキー412、リリース毎パブリックキー413、リリース毎対称キー414、およびリリース毎キーフラグメント415を含むことができる。リリース毎キーフラグメント415は、マスターキー308を導出するため、第2のキーフラグメント304(図3Aに示す)と同様に第2のキーフラグメントとして使用することができる。顧客それぞれに対して別の第1のキーフラグメント302があるので、同じリリース毎キーフラグメント415が、第2のキーフラグメント304として使用されても、別のマスターキー308が、顧客それぞれに導出される。
図4Bは、一部の実施形態にしたがって、複数のキーリリースの例を示す。キーリリースの数は、無限であってもよい。例えば、複数のキーリリースが、キーリリース492、494、496および498を含んでもよい。キーリリース492用のキーセットが、パブリックキー、プライベートキー、対称キー、およびキーフラグメントを含んでもよい。同様に、キーリリース494、496および498のキーセットを、図4Bに示す。キーリリースは、定期的に変更されてもよい。例えば、キーリリース492は、四半期毎に有効になるように設定することができ、キーリリース494、496および498がそれに続く。実施形態によっては、顧客が、特定のキーリリースを使用する、またはそれに変更する選択肢を有してもよい。例えば、キーリリース494が現在有効なキーリリースであっても、顧客は、キーリリース498が現在有効なキーリリースとして使用されるよう要求してもよい。実施形態によっては、任意の利用可能なキーリリースが、有効なキーリリースとして使用されてもよい。
実施形態によっては、暗号コンピューティングシステム212は、キーセット410(図4Aに示す)のキーをHSMサーバ260へエクスポートすることができる。キーセット410のキーそれぞれを、HSM266のパブリックキー267を使用して暗号化し、HSMサーバ260へ送信することができる。HSMサーバ260は、HSM266(図2に示す)のプライベートキー268を使用して、それらを暗号化することができる。これにより、それらが、HSMサーバ260に送信されるとき、キーセット410のキーの完全性を保護することができる。
HSMサーバ260は、ファイルシステム271にリリース毎プライベートキー412、リリース毎パブリックキー413、リリース毎対称キー414、およびリリース毎キーフラグメント415を格納することができる。例えば、キーリリース492に関連する情報などのキーリリース情報(またはシード情報)も、キーセット410と共にエクスポートすることができる。キーリリース情報は、ファイルシステム271から取得する正しいキーを決定するために使用されて、マスターキー308を導出することができる。
実施形態によっては、リリース毎キーフラグメント415が特定の地理位置の顧客のマスターキー308を導出するためにのみ使用することができるように、キーセット410が、地理特有となるよう構成することができる。例えば、同じ地理位置に配置されたHSMサーバ255だけがリリース毎キーフラグメント415を処理できるように、地理特有コードをリリース毎キーフラグメント415の一部とすることができる。
図5は、一部の実施形態にしたがって、暗号化を実施するためにキーリリースのキーを使用する例を示す。この例では、HSM350および355のキーリリース492とパブリックキー351、356とプライベートキー352、357が、暗号を示すために使用されている。ブロック550および552に示すように、キーリリース492のパブリックキーは、第1のキーフラグメント570および第2のキーフラグメント580を暗号化するために使用することができる。キーリリース492のキーフラグメントは、この例では第2のキーフラグメント580として使用されている。暗号化された第1のキーフラグメント570は、(図2に示す)データベース270に格納することができる。暗号化された第2のキーフラグメント580は、ファイルシステム271に格納することができる。
ブロック554に示すように、(第1のキーフラグメント570および第2のキーフラグメント580を復号するために使用することができる)キーリリース492のプライベートキーは、キーリリース492の対称キーを使用して暗号化される。ブロック556および558に示すように、(キーリリース492のプライベートキーを暗号化するために使用される)キーリリース492の対称キーは、HSM350のパブリックキー351および(図3Cに示す)HSM355のパブリックキー356を使用して、自身を暗号化する。(ブロック554に示す)キーリリース492の暗号化されたプライベートキーおよび(ブロック556および558に示す)キーリリース492の暗号化された対称キーは、ファイルシステム271に格納することができる。
実施形態によっては、キーリリース492の対称キーが、第1のキーフラグメント570および第2のキーフラグメント580を暗号化するためおよび暗号化された第1のキーフラグメント570および暗号化された第2のキーフラグメント580を復号するために使用されてもよい。暗号化された第1のキーフラグメント570は、(図2に示す)データベース270に格納することができる。暗号化された第2のキーフラグメント580は、ファイルシステム271に格納することができる。
マスターキー308を導出する必要があるとき、アプリケーションサーバ255は、暗号化された第1のキーフラグメント570をHSMサーバ260へ送信してもよい。アプリケーションサーバ255はまた、関連するキーリリースがキーリリース492であることをHSMサーバ260へ示してもよい。HSMサーバ260は、暗号化された第2のキーフラグメント580をファイルシステム271から取得することができる。HSMサーバ260は、暗号化された第1のキーフラグメント570および暗号化された第2のキーフラグメント580を復号するためにキーリリース492のプライベートキーが必要である。
上述の通り、キーリリース492のプライベートキーは、キーリリース492の対称キーを使用して暗号化される。キーリリース492の暗号化されたプライベートキーを復号するために、HSMサーバ260は、キーリリース492の対称キーを決定する必要がある。HSMサーバ260は、HSM350とそのプライベートキー352またはHSM355とそのプライベートキー357のいずれかを使用して、キーリリース492の暗号化された対称キーを復号することができる。そして、HSMサーバ260は、キーリリース492の復号された対称キーを使用して、キーリリース492の暗号化されたプライベートキーを復号する。キーリリース492の復号されたプライベートキーを使用して、HSMサーバ260は、暗号化された第1のキーフラグメント570および暗号化された第2のキーフラグメント580を復号し、マスターキー308を導出することができる。
(HSMサーバ260などの)複数のHSMサーバおよび(アプリケーションサーバ255などの)複数のアプリケーションサーバがあるとき、いずれのHSMサーバ260も、この方法を用いてキーリリース492のプライベートキーを取得し、いずれのアプリケーションサーバ255からの要求も処理することができる。(図3Cに示すように)HSM350のパブリックキー351を使用して第1のキーフラグメント570および第2のキーフラグメント580を暗号化する代わりに、第1のキーフラグメント570および第2のキーフラグメント580をキーリリース492のパブリックキーを使用して復号する。HSM350または355のいずれかにそのプライベートキー352または356を使用させて、第1のキーフラグメント570および第2のキーフラグメント580に到達するためにキーリリース492の対称キーを復号するようにすることは、間接参照のレベルである。
キーリリース492の対称キーは、HSM350のパブリックキー351およびHSM355のパブリックキー356を使用して暗号化されるので、キーリリース492の暗号化された対称キーは、HSM350のプライベートキー352またはHSM355のプライベートキー357のいずれを使用しても復号できることに留意してもよい。HSM350が故障した場合、キーリリース492の復号された対称キーが、HSM355を使用して取得されてもよい。新しいHSMが追加された場合、キーリリース492の対称キーは、新しいHSMのパブリックキーを使用して復号される。したがって、10個のHSMがあれば、キーリリース492の対称キーは、10個のHSMのパブリックキーを使用することにより暗号化され、10個の暗号化された対称キーが、ファイルシステム271に格納されてもよい。
10個のHSMのいずれのプライベートキーも、キーリリース492の10個の適切な暗号化された対称キーを復号するために使用することができる。適切な暗号化された対称キーを復号するために関与するHSMのすべてのプライベートキーを知る必要はないかもしれない。キーリリース492の復号された対称キーが取得できる限り、キーリリース492の復号されたプライベートキーは、取得できる。キーリリース492の復号されたプライベートキーを使用して、必要なマスターキーを導出するために、復号された第1のキーフラグメント570および第2のキーフラグメント580が、取得可能である。この方法により、単一障害点を排除する。実施形態によっては、同じHSMのプライベートキーおよびパブリックキーを使用して、別の顧客に関連付けられた対称キーの暗号化および復号が可能な場合がある。
キーリリースが、キーリリース492からキーリリース494へ変更されると、リリース毎キーフラグメントが(キーリリース492のキーフラグメントからキーリリース494のキーフラグメントへ)変更されることに留意してもよい。キーリリース494のキーフラグメントは、第2のキーフラグメント480として使用されるので、これにより、別のマスターキーを導出させることができる。実施形態によっては、顧客を(異なるキーリリースに基づく)複数のマスターキーに関連付けることができるが、この顧客に対して、一度に一つの有効なマスターキーしかない。他のマスターキーは、同じマスターキーで予め暗号化された顧客データを復号するためにまだ必要となる場合がある。マスターキーに関連付けられた第1のキーフラグメント570または第2のキーフラグメント580のいずれかが喪失した、または破壊された場合、同じマスターキーで予め暗号化された顧客データを復号することはできない可能性がある。顧客データ全てを暗号化するために所定のキーリリースの同じキーセットを使用することは、安全でないかもしれないので、複数のリリースを有することにより、顧客データの保護に別のレベルの安全性を付加することができる。
実施形態によっては、暗号コンピューティングシステム212は、各キーリリースに対して生成する(例えば、リリース毎対称キー、リリース毎キーフラグメントなどの)キーを格納するよう構成することができる。暗号コンピューティングシステム212は、(図2に示す)HSM215を含んで、HSM215のパブリックキーを使用してキーリリースのキーを暗号化し、HSM215のプライベートキーを使用してこれらのキーを復号することができる。暗号コンピューティングシステム212へのアクセスは、権限を付与された所定の人員だけに限定することができる。実施形態によっては、暗号コンピューティングシステム212は、キーリリースのキーをHSMサーバ260へエクスポートした後に、(例えば、電源を切る、またはネットワークから遮断することにより)オフライン状態に切り替えることができる。オフライン状態では、暗号コンピューティングシステム212が不正利用者にアクセスされるのを防ぐことができる。
流れ図
図6Aは、一部の実施形態にしたがって実施される、顧客データの要求を処理する例示的なプロセスの流れ図を示す。プロセス600は、(図2に示す)アプリケーションサーバ255によって実施することができ、それを、(図4Bに示す)キーリリース492および(図3Cに示す)HSM350に含まれるキーを用いて説明する。要求は、アプリケーションプログラムインタフェース(API)またはユーザインタフェース(UI)を介して、顧客コンピューティングシステム205を使用してユーザにより行うことができる。ブロック602で、要求がアプリケーションサーバ255に受信される。顧客データは、データベース270に格納することができるが、それが顧客に関連付けられたマスターキー308で暗号化されている場合がある。ブロック604で、アプリケーションサーバ255が顧客データをデータベース270に照会することができる。
ブロック606で、アプリケーションサーバ255は、マスターキー308がアプリケーションサーバ255のインメモリキャッシュ307に存在するかを調べて確認することができる。マスターキー308が見つかった場合、プロセスは、顧客データがマスターキー308を使用して復号されるブロック608へ進むことができる。ブロック610で、復号された顧客データがユーザに送信される。
ブロック606で、アプリケーションサーバ255がインメモリキャッシュ307にマスターキー308を見つけられない場合、マスターキー308を導出する必要がある。このため、ブロック612に示すように、アプリケーションサーバ255はデータベース270に、暗号化された第1のキーフラグメント302を照会する必要がある。第1のキーフラグメント302は、キーリリース492のパブリックキーを使用して、前に暗号化されている。アプリケーションサーバ255は、暗号化された第1のキーフラグメント302をHSMサーバ260へ送信し、マスターキー308が導出されるのを要求する。アプリケーションサーバ255はまた、他の情報もHSMサーバ260へ送信することができる。これには、顧客識別情報、キーリリース情報を含んでもよい。
ブロック614で、HSMサーバ260は、第2のキーフラグメント304をファイルシステム271に照会することができる。第2のキーフラグメント304は、キーリリース492のパブリックキーを使用して、前に暗号化されている。
ブロック616で、マスターキー308の生成が、HSMサーバ260のマスターキー導出モジュール306(図3に示す)により実施されてもよい。マスターキー導出モジュール306は、復号された第1のキーセグメント302および復号された第2のキーセグメント304を使用してマスターキー308を導出し、インメモリキャッシュ307に格納することができる。復号された第1のキーセグメント302および復号された第2のキーセグメント304は、HSM350のプライベートキーおよびキーリリース492の対称キーを使用して取得することができる。そして、プロセスは、顧客データが復号されるブロック608および顧客データが顧客に送信されるブロック610へ続く。
図6Bは、一部の実施形態にしたがって実施される、顧客データを暗号化する例示的なプロセスの流れ図を示す。プロセス650は、(図2に示す)アプリケーションサーバ255によって実施することができ、それを、(図4Bに示す)キーリリース492および(図3Cに示す)HSM350に含まれるキーを用いて説明する。ブロック652で、顧客データは、アプリケーションサーバ255に受信される。ブロック654で、顧客データは、データベース270に保存される。
ブロック656で、アプリケーションサーバ255は、マスターキー308がアプリケーションサーバ255のインメモリキャッシュ307に存在するかを調べて確認することができる。マスターキー308が見つかった場合、プロセスは、顧客データがマスターキー308を使用して復号され、データベース270に保存されるブロック658へ進むことができる。
ブロック656で、アプリケーションサーバ255がインメモリキャッシュ307にマスターキー308を見つけられない場合、マスターキー308を導出する必要がある。このため、ブロック660に示すように、アプリケーションサーバ255はデータベース270に、暗号化された第1のキーフラグメント302を照会する必要がある。第1のキーフラグメント302は、キーリリース492のパブリックキーを使用して、前に暗号化されている。アプリケーションサーバ255は、暗号化された第1のキーフラグメント302をHSMサーバ260へ送信し、マスターキー308が導出されるのを要求する。アプリケーションサーバ255は、他の情報もHSMサーバ260へ送信することができる。これには、顧客識別情報、キーリリース情報を含んでもよい。
ブロック662で、HSMサーバ260は、第2のキーフラグメント304をファイルシステム271に照会することができる。第2のキーフラグメント304は、キーリリース492のパブリックキーを使用して、前に暗号化されている。
ブロック664で、マスターキー308の生成が、HSMサーバ260のマスターキー導出モジュール306(図3に示す)により実施されてもよい。マスターキー導出モジュール306は、復号された第1のキーセグメント302および復号された第2のキーセグメント304を使用してマスターキー308を導出し、インメモリキャッシュ307に格納することができる。復号された第1のキーセグメント302および復号された第2のキーセグメント304は、HSM350のプライベートキーおよびキーリリース492の対称キーを使用して取得することができる。そして、プロセスは、顧客データが暗号化されるブロック658へ続く。
図7Aは、一部の実施形態にしたがって実施される、暗号化を実施する例示的なプロセスの流れ図を示す。プロセス700は、(図2に示す)HSMサーバ260によって実施することができ、それを、(図4Bに示す)キーリリース492および(図3Cに示す)HSM350に含まれるキーを用いて説明する。ブロック705で、キーリリース492のキーは、HSMサーバ260に受信される。キーリリース492のキーは、(図2に示す)暗号コンピューティングシステム212により生成されている場合がある。ブロック710で、HSMサーバ260は、第1のキーフラグメント302および(キーリリース492のキーフラグメントと同一である)第2のキーフラグメント304をキーリリース492のパブリックキーを使用して暗号化し、それらをファイルシステム271に格納することができる。ブロック715で、HSMサーバ260は、キーリリース492のプライベートキーをキーリリース492の対称キーで暗号化し、それをファイルシステム271に格納する。ブロック720で、HSMサーバ260は、キーリリース492の対称キーをHSM350のHSMパブリックキーで暗号化し、それをファイルシステム271に格納する。
図7Bは、一部の実施形態にしたがって実行される、マスターキーを生成する例示的なプロセスの流れ図を示す。プロセス750は、(図2に示す)HSMサーバ260によって実施することができ、それを(図4Bに示す)キーリリース492および(図3Cに示す)HSM350に含まれるキーを用いて説明する。
ブロック755で、HSMサーバ260は、マスターキー308を導出する要求を受信することができる。この要求は、アプリケーションサーバ255によって開始することができる。
ブロック760で、HSMサーバ260は、アプリケーションサーバ255から暗号化された第1のキーフラグメント302およびキーリリース情報を受信することができる。第1のキーフラグメント302は、キーリリース492のパブリックキーを使用して、前に暗号化されている。HSMサーバ260は、暗号化された第2のキーフラグメント304をファイルシステム271から取得することができる。第2のキーフラグメント304は、キーリリース492のパブリックキーを使用して、前に暗号化されている。
ブロック765で、HSMサーバ260は、キーリリース492の暗号化された対称キーをファイルシステム271から取得することができる。キーリリース492の暗号化された対称キーは、HSM350のパブリックキー351を使用して、前に暗号化されている。
ブロック770で、キーリリース492の対称キーは、HSM350のプライベートキー352を使用して暗号化することができる。
ブロック775で、キーリリース492の復号された対称キーは、キーリリース492のプライベートキーを復号するために使用することができる。キーリリース492のプライベートキーは、キーリリース492の対称キーを使用して、前に暗号化されている。
ブロック780で、キーリリース492の復号されたプライベートキーは、第1のキーフラグメント302および第2のキーフラグメント304を復号するために使用することができる。第1のキーフラグメント302および第2のキーフラグメント304は、キーリリース492のパブリックキーを使用して、前に暗号化されている。
ブロック785で、復号された第1のキーフラグメント302および復号された第2のキーフラグメント304は、マスターキー導出モジュール306に使用されて、マスターキー308を導出することができる。
図8Aは、一部の実施形態による、オンデマンドサービス環境のアーキテクチャ構成要素を示すシステム図800を示す。クラウド804(または、インターネット)に配置されたクライアントマシンは、1つまたは複数のエッジルータ808および812を介して、オンデマンドサービス環境と通信することができる。エッジルータは、ファイアウォール816を介して、1つまたは複数のコアスイッチ820および824と通信することができる。コアスイッチは、ポッド840および844などの異なるポッドへサーバの負荷を分散することができるロードバランサ828と通信することができる。それぞれが、1つまたは複数のサーバおよび/または他のコンピューティングリソースを含むことができるポッド840および844は、オンデマンドサービスを提供するために使用されるデータ処理および他の動作を実行することができる。ポッドとの通信は、ポッドスイッチ832および836を介して行うことができる。オンデマンドサービス環境の構成要素は、データベースファイアウォール848およびデータベーススイッチ852を介して、データベース記憶システム856と通信することができる。
図8Aおよび8Bに示すように、オンデマンドサービス環境にアクセスすることが、様々な異なるハードウェアおよび/またはソフトウェア構成要素間で送信される通信を含んでもよい。さらに、オンデマンドサービス環境800は、実際のオンデマンドサービス環境を単純化して表示している。例えば、図8Aおよび8Bには、それぞれの種類の装置が1つまたは2つ示されているだけであるが、オンデマンドサービス環境の実施形態によっては、どこでもそれぞれの種類の装置が1つから多数まで含まれてもよい。また、オンデマンドサービス環境は、図8Aおよび8Bに示す装置それぞれを含む必要はなく、または図8Aおよび8Bに示されていない追加の装置を含んでもよい。
さらに、オンデマンドサービス環境800の装置の1つ以上が、同じ物理装置に実装されても、または別のハードウェアに実装されてもよい。装置によっては、ハードウェアを使用して実装されても、ハードウェアおよびソフトウェアの組み合わせを使用して実装されてもよい。したがって、「データ処理装置」、「機械」、「サーバ」および「装置」などの用語が本明細書で使用される場合、単一のハードウェア装置に限定されず、どちらかと言えば説明した機能を提供するよう構成された任意のハードウェアおよびソフトウェアを含む。
クラウド804は、インターネットを含む場合が多いデータネットワークまたは複数のデータネットワークを指すことを意図する。クラウド804に配置されるクライアントマシンは、オンデマンドサービス環境と通信してオンデマンドサービス環境により提供されるサービスにアクセスすることができる。例えば、クライアントマシンは、オンデマンドサービス環境にアクセスして、情報の取得、格納、編集、および/または処理を行うことができる。
実施形態によっては、エッジルータ808および812が、クラウド804とオンデマンドサービス環境800の他の構成要素の間でパケットをルーティングする。エッジルータ808および812は、ボーダーゲートウェイプロトコル(BGP)を採用することができる。BGPは、インターネットのコアルーティングプロトコルである。エッジルータ808および812は、インターネット上の自立システム間でネットワークの到達可能性を示すIPネットワークテーブルまたは「プレフィックス」を維持することができる。
1つまたは複数の実施形態で、ファイアウォール816が、オンデマンドサービス環境800の内部構成要素をインターネットのトラフィックから保護することができる。ファイアウォール816は、1組の規則および他の基準に基づいて、オンデマンドサービス環境800の内部構成要素へのアクセスを遮断、許可、または拒否することができる。ファイアウォール816は、パケットフィルタ、アプリケーションゲートウェイ、ステートフルフィルタ、プロキシサーバ、または任意の他の種類のファイアウォールのうちの1つ以上としての役割を持つことができる。
実施形態によっては、コアスイッチ820および824は、オンデマンドサービス環境800内でパケットを転送する高容量スイッチである。コアスイッチ820および824は、オンデマンドサービス環境内の異なる構成要素の間でデータを素早くルーティングするネットワークブリッジとして構成することができる。実施形態によっては、2つ以上のコアスイッチ820および824を使用することにより、冗長性および/または短縮されたレイテンシを提供することができる。
実施形態によっては、ポッド840および844は、オンデマンドサービス環境により提供されるコアデータ処理およびサービス機能を実施することができる。各ポッドは、様々な種類のハードウェアおよび/またはソフトウェアコンピューティングリソースを含んでもよい。ポッドの構成の例を、図8Bを参照してより詳細に論じる。
実施形態によっては、ポッド840と844の間の通信が、ポッドスイッチ832および836を介して行われてもよい。ポッドスイッチ832および836は、ポッド840および844とクラウド804に配置されたクライアントマシンの間の通信を、例えば、コアスイッチ820および824を介して、容易にすることができる。また、ポッドスイッチ832および836は、ポッド840および844とデータベース記憶装置856の間の通信を容易にすることができる。
実施形態によっては、ロードバランサ828が、ポッド840と844の間で作業負荷を分散することができる。ポッド間のオンデマンドサービスの要求のバランスを取ることにより、リソースの使用の改善、スループットの増加、応答時間の減少、および/またはオーバーヘッドの低減を支援することができる。ロードバランサ828は、マルチレイヤスイッチを含んで、トラフィックを解析し、転送することができる。
実施形態によっては、データベース記憶装置856へのアクセスが、データベースファイアウォール848により保護されてもよい。データベースファイアウォール848は、プロトコルスタックのデータベースアプリケーション層で動作するコンピュータアプリケーションファイアウォールとしての役割をすることができる。データベースファイアウォール848は、構造化照会言語(SQL)インジェクション、データベースルートキット、および不正な情報開示などのアプリケーション攻撃からデータベース記憶装置856を保護することができる。
実施形態によっては、データベースファイアウォール848が、1つ以上の形態のリバースプロキシサービスを使用するホストを含んで、トラフィックをゲートウェイルータへ渡す前にそれをプロキシしてもよい。データベースファイアウォール848は、データベーストラフィックの内容を検査し、所定のコンテンツまたはデータベース要求を遮断することができる。データベースファイアウォール848は、TCP/IPスタック上のSQLアプリケーション層で作動し、データベースまたはSQL管理インタフェースへのアプリケーションの接続の管理、ならびにデータベースネットワークまたはアプリケーションインタフェースとの間のパケットの移動の妨害および強要を行うことができる。
実施形態によっては、データベース記憶装置856との通信が、データベーススイッチ852を介して行われてもよい。マルチテナントデータベースシステム856は、データベースの照会を取り扱う2つ以上のハードウェアおよび/またはソフトウェア構成要素を含んでもよい。したがって、データベーススイッチ852は、(例えば、ポッド840および844などの)オンデマンドサービス環境の他の構成要素によって送信されたデータベースクエリをデータベース記憶システム856内の正しい構成要素へ誘導することができる。実施形態によっては、データベース記憶システム856は、多くの異なる組織に共有されるオンデマンドデータベースシステムである。オンデマンドデータベースシステムは、マルチテナント方式、仮想化方式、または任意の他の種類のデータベース方式を採用してもよい。オンデマンドデータベースシステムを、図9および10を参照してより詳細に論じる。
図8Bは、一部の実施形態によるポッド844のアーキテクチャを示すシステム図を示す。ポッド844は、オンデマンドサービス環境800のユーザにサービスを与えるために使用されてもよい。実施形態によっては、各ポッドが、様々なサーバおよび/または他のシステムを含んでもよい。ポッド844は、1つまたは複数のコンテンツバッチサーバ864、コンテンツサーチサーバ868、クエリサーバ872、ファイルフォースサーバ876、アクセス制御システム(ACS)サーバ880、バッチサーバ884、およびアプリサーバ888を含む。また、ポッド844は、データベースインスタンス890、クイックファイルシステム(QFS)892、およびインデクサ894を含む。1つまたは複数の実施形態で、ポッド844のサーバ間の一部またはすべての通信が、スイッチ836を介して送信されてもよい。
実施形態によっては、アプリケーションサーバ888が、ポッド844を介してオンデマンドサービス環境800により提供されるアプリケーションの構築をサポートする(例えば、プログラム、ルーチン、スクリプトなどの)手順の実行専用のハードウェアおよび/またはソフトウェアフレームワークを含んでもよい。一部のこうした手順は、本明細書に記載のサービスを提供する動作を含んでもよい。コンテンツバッチサーバ864は、ポッドの内部への要求を行うことができる。これらの要求は、長期間実行することができ、かつ/または特定の顧客にひも付けされなくてもよい。例えば、コンテンツバッチサーバ864は、ログマイニング、クリーンアップ作業、および保守タスクに関連する要求を扱うことができる。
コンテンツサーチサーバ868は、照会およびインデクサ機能を提供することができる。例えば、コンテンツサーチサーバ868により提供される機能で、ユーザがオンデマンドサービス環境に格納されたコンテンツを検索できるようにしてもよい。ファイルフォースサーバ876は、ファイルフォース記憶装置878に保存された要求の情報を管理することができる。ファイルフォース記憶装置878は、書類、画像、およびベーシックラージオブジェクト(BLOB)などの情報を保存することができる。ファイルフォースサーバ876を使用して、情報の要求を管理することで、データベース上のイメージのフットプリントを削減することができる。
クエリサーバ872は、1つまたは複数のファイルシステムから情報を取得するために使用することができる。例えば、クエリシステム872は、アプリサーバ888から情報の要求を受信し、ポッド外部に配置されるNFS896に情報クエリを送信することができる。ポッド844は、異なる組織が同じデータベースへのアクセスを共有するマルチテナント環境として構成されるデータベースインスタンス890を共有してもよい。さらに、ポッド844により与えられるサービスが、様々なハードウェアおよび/またはソフトウェアリソースを必要としてもよい。実施形態によっては、ACSサーバ880が、データ、ハードウェアリソース、またはソフトウェアリソースへのアクセスを制御してもよい。
実施形態によっては、バッチサーバ884が、指定の時間にタスクを実行するために使用するバッチジョブを処理してもよい。したがって、バッチサーバ884は、アプリサーバ888などの他のサーバへ命令を送信して、バッチジョブを引き起こすことができる。実施形態によっては、QFS892は、カリフォルニア州サンタクララのSun Microsystems(登録商標)から入手可能なオープンソースファイルシステムであってよい。QFSは、ポッド844内で入手可能な情報を保存し、それにアクセスするための高速ファイルシステムとしての働きをすることができる。QFS892は、いくつかのボリューム管理機能をサポートし、多くのディスクがファイルシステム内にグループ化されるようにすることができる。ファイルシステムメタデータは、別のディスクのセットに保持することができ、長いディスクシークが許されないストリーミングアプリケーションで有用となる可能性がある。したがって、QFSシステムは、1つまたは複数のコンテンツサーチサーバ868および/またはインデクサ894と通信して、ネットワークファイルシステム896および/または他の記憶システムに格納されたデータの識別、取得、移動、および/または更新をすることができる。
実施形態によっては、1つまたは複数のクエリサーバ872が、NFS896と通信して、ポッド844の外部に格納された情報の取得および/または更新を行うことができる。NFS896は、ポッド844に配置されたサーバがローカル記憶装置にアクセスするのと同様の手法で、情報にアクセスし、ネットワーク上でファイルにアクセスするようにできる。実施形態によっては、クエリサーバ822のクエリを、リソース要求をオンデマンドサービス環境で入手可能な様々なリソースへ分散することができるロードバランサ820を介してNFS896に送信することができる。NFS896はまた、QFS892と通信して、NFS896に保存された情報を更新し、かつ/またはポッド844内に配置されたサーバによって使用される情報をQFS892に提供することができる。
実施形態によっては、ポッドが、1つまたは複数のデータベースインスタンス890を含んでもよい。データベースインスタンス890は、情報をQFS892へ送信することができる。情報がQFSへ送信されると、追加のデータベースコールを必要とすることなく、ポッド844内のサーバで利用可能とすることができる。実施形態によっては、データベース情報がインデクサ894へ送信されてもよい。インデクサ894は、データベース890および/またはQFS892で入手可能な情報の索引を提供することができる。索引情報は、ファイルフォースサーバ876および/またはQFS892に提供することができる。
図9は、一部の実施形態による、オンデマンドサービスが使用されることがある環境910のブロック図を示す。環境910は、オンデマンドデータベースサービス916を含む。ユーザシステム912は、ユーザがデータベースユーザシステムにアクセスするために使用する任意の機械またはシステムであってよい。例えば、ユーザシステム912のいずれも、ハンドヘルドコンピューティングシステム、携帯電話、ラップトップコンピュータ、ワークステーション、および/またはコンピューティングシステムのネットワークであってよい。図9および10に示すように、ユーザシステム912は、ネットワーク914を介してオンデマンドデータベースサービス916と対話することがある。
システム916などのオンデマンドデータベースサービスは、データベースシステムの構築および/または保守と必ずしも関連する必要がない外部ユーザに利用可能になされるが、代わりに、ユーザが(例えば、ユーザの要求で)データベースシステムが必要なとき、その使用のために利用可能にされてもよいデータベースシステムである。一部のオンデマンドデータベースサービスは、マルチテナントデータベースシステム(MTS)を形成するため、共通のデータベース画像のテーブルに保存された1つまたは複数のテナントからの情報を保存することができる。したがって、「オンデマンドデータベースサービス916」および「システム916」は、本明細書では同じ意味で使用される。データベース画像は、1つまたは複数のデータベースオブジェクトを含んでもよい。リレーショナルデータベース管理システム(RDBMS)または等価物は、データベースオブジェクト(複数可)に対する情報の記憶および取得を実行することができる。アプリケーションプラットフォーム918は、ハードウェアおよび/またはオペレーティングシステムなどのソフトウェアなどのシステム916のアプリケーションが動作することを可能にするフレームワークであってもよい。一実装形態では、オンデマンドデータベースサービス916は、オンデマンドデータベースサービスのプロバイダ、ユーザシステム912を介してオンデマンドデータベースサービスへアクセスするユーザ、またはユーザシステム912を介してオンデマンドデータベースサービスにアクセスするサードパーティアプリケーションディベロッパが開発した1つまたは複数のアプリケーションの作成、管理、および実行を可能にするアプリケーションプラットフォーム918を含んでもよい。
ネットワークインタフェース920、アプリケーションプラットフォーム918、テナントデータ923用テナントデータ記憶装置922、システム916および場合によっては複数のテナントがアクセス可能なシステムデータ925用システムデータ記憶装置924、システム916の様々な機能を実装するプログラムコード926、およびアプリケーションホスティングサービスの一部としてアプリケーションを実行する、MTSシステムプロセスおよびテナント特有のプロセスを実行するプロセススペース928を含む、システム916の構成要素の一構成を図9に示す。システム916上で実行可能な追加のプロセスは、データベースインデクシングプロセスを含む。
ユーザシステム912のユーザは、それぞれの能力が異なってもよく、特定のユーザシステム912の能力は、全体として現在のユーザへの許可(許可レベル)によって決定されることがある。例えば、コールセンターエージェントが、システム916と対話するために特定のユーザシステム912を使用している場合、ユーザシステム912は、コールセンターエージェントに割り当てられた能力を有する。しかし、管理者は、システム916と対話するためにそのユーザシステムを使用しているが、そのユーザシステムは、その管理者に割り当てられた能力を有する。階層的ロールモデルを有するシステムでは、一許可レベルのユーザは、より低い許可レベルのユーザがアクセス可能なアプリケーション、データおよびデータベース情報にアクセスすることができるが、より高い許可レベルのユーザがアクセス可能な特定のアプリケーション、データベース情報、およびデータにアクセスできない。したがって、ユーザのセキュリティまたは許可レベルに応じて、異なるユーザは、アプリケーションおよびデータベース情報へのアクセスおよび変更に関して異なる能力を有してもよい。
ネットワーク914は、任意のネットワークまたは互いに通信する装置のネットワークの組み合わせである。例えば、ネットワーク914は、LAN(ローカルエリアネットワーク)、WAN(広域ネットワーク)、電話ネットワーク、無線ネットワーク、ポイントツーポイントネットワーク、スター型ネットワーク、トークンリングネットワーク、ハブネットワーク、または他の適切な構成のいずれか1つまたは任意の組み合わせであってよい。現在使用される最も一般的な型のコンピュータネットワークは、TCP/IP(伝送制御プロトコルおよびインターネットプロトコル)ネットワーク(例えば、インターネット)なので、このネットワークは、本明細書の多くの例で使用される。しかし、TCP/IPがよく実装されるプロトコルでありながら、一部の実施形態で使用されるネットワークは、そのように制限されるものではないことを理解されたい。
ユーザシステム912は、TCP/IPを使用してシステム916と通信することがあり、より高いネットワークレベルで、HTTP、FTP、AFS、WAPなどの他の共通インターネットプロトコルを使用して通信することがある。HTTPが使用される例では、ユーザシステム912は、システム916でHTTPサーバとの間でHTTPメッセージを送受信する一般に「ブラウザ」と呼ばれるHTTPクライアントを含むことがある。こうしたHTTPサーバは、システム916とネットワーク914の間で、唯一のネットワークインタフェースとして実装されることがあるが、他の技術も同様にまたは代替として、使用されることがある。実施形態によっては、システム916とネットワーク914の間のインタフェースは、負荷のバランスを取り、入ってくるHTTP要求を複数のサーバへ均等に分散するラウンドロビンHTTP要求ディストリビュータなどの負荷分割機能を含む。少なくともそのサーバにアクセスしているユーザについては、複数のサーバのそれぞれが、MTSのデータへのアクセスを有する。しかし、他の代替の構成が代わりに使用されてもよい。
実施形態によっては、図9に示すシステム916は、ウェブベースの顧客関係管理(CRM)システムを実装する。例えば、実施形態によっては、システム916は、CRMソフトウェアアプリケーションの実装および実行をするよう構成されるアプリケーションサーバを含むほか、ユーザシステム912との間で関連データ、コード、フォーム、ウェブページおよび他の情報をやり取りし、関連データ、オブジェクト、およびウェブページコンテンツをデータベースシステムへ格納し、そこから取得する。マルチテナントシステムの場合、マルチテナントのデータは、同じ物理的データベースオブジェクトに格納することができるが、テナントのデータは、こうしたデータが明示的に共有されてない限り、典型的には、一テナントが他のテナントのデータへのアクセスを有することがないように、一テナントのデータが他のテナントのデータと論理的に隔離されるように配置される。特定の実施形態では、システム916は、CRMアプリケーション以外の、またはそれに加えて、アプリケーションを実装する。例えば、システム916は、テナントに複数のホストされた(標準およびカスタムの)アプリケーションへのアクセスを提供することができる。CRMを含んでも含まなくてもよいユーザ(または、サードパーティディベロッパ)アプリケーションは、アプリケーションの作成および1つまたは複数のデータベースオブジェクトへの記憶ならびにシステム916のプロセス空間の仮想マシン内でのアプリケーションの実行を管理するアプリケーションプラットフォーム918にサポートされてもよい。
各ユーザシステム912は、デスクトップパーソナルコンピュータ、ワークステーション、ラップトップ、PDA、携帯電話、または任意の無線アクセスプロトコル(WAP)対応装置またはインターネットもしくは他のネットワーク接続へ直接もしくは間接的にインタフェース可能な任意の他のコンピューティングシステムを含んでもよい。ユーザシステム912は、典型的には、ユーザシステム912のユーザ(例えば、マルチテナントデータベースシステムのサブスクライバなど)がネットワーク914上でシステム916からそのユーザが利用可能な情報、ページおよびアプリケーションに対するアクセス、処理および閲覧を可能にするHTTPクライアント、例えば、MicrosoftのInternet Explorer(登録商標)ブラウザ、MozillaのFirefox(登録商標)ブラウザ、Operaのブラウザ、または携帯電話、PDAもしくは他の無線装置の場合はWAP対応ブラウザなどの閲覧プログラムを起動する。
各ユーザシステム912はまた、典型的には、システム916または他のシステムもしくはサーバにより提供されるページ、フォーム、アプリケーションおよび他の情報と共に(例えば、モニタ画面、LCDディスプレイなどの)ディスプレイ上でブラウザにより提供されるグラフィカルユーザインタフェース(GUI)と対話するための、キーボード、マウス、トラックボール、タッチパッド、タッチスクリーン、ペンなどの1つまたは複数のユーザインタフェースデバイスを含む。例えば、ユーザインタフェースデバイスは、システム916がホストするデータとアプリケーションにアクセスし、保存されたデータ上で検索するために使用することができ、その他に、ユーザに提示することができる様々なGUIページとユーザが対話することを可能にする。上述の通り、実施形態は、ネットワークの特定のグローバルインターネットワークを指すインターネットで使用するのに好適である。しかし、イントラネット、エクストラネット、仮想プライベートネットワーク(VPN)、TCP/IPベースでないネットワーク、任意のLANまたはWANなどの他のネットワークを、インターネットの代わりに使用してもよいことを理解されたい。
一部の実施形態によれば、ユーザシステム912のそれぞれおよびその構成要素のすべては、Intel Pentium(登録商標)プロセッサなどの中央処理装置を使用して実行されえるコンピュータコードを含む、ブラウザなどのアプリケーションを使用して、オペレータが設定可能である。同様に、システム916(および、2つ以上が提示されているMTSの追加のインスタンス)およびそれらの構成要素のすべては、Intel Pentium(登録商標)プロセッサまたは同種のもの、および/または複数のプロセッサユニットを含むプロセッサシステム917などの中央処理装置を使用して実行されるコンピュータコードを含むアプリケーション(複数可)を使用して、オペレータが設定可能であることがある。
コンピュータプログラム製品の実装は、本明細書に記載の実施形態のプロセスのいずれかを実施するようにコンピュータをプログラムするために使用される、そこに保存された命令を有するマシン可読記憶媒体を含む。本明細書に記載するように、ウェブページ、アプリケーション、ならびに他のデータおよびメディアコンテンツと相互通信し、処理するようにシステム916を動作させ、設定するコンピュータコードは、ダウンロードされ、ハードディスクに格納されるのが好ましいが、全体のプログラムコードまたはその一部はまた、ROMまたはRAMなどの任意の他の揮発性または不揮発性メモリ媒体またはデバイスに格納されてもよく、あるいは、フロッピーディスク、光ディスク、デジタル多用途ディスク(DVD)、コンパクトディスク(CD)、マイクロドライブ、および光磁気ディスクを含む任意の種類の回転媒体、ならびに磁気または光カード、(分子メモリICを含む)ナノシステム、または命令および/もしくはデータを格納するのに好適な任意の種類のメディアまたはデバイスなどのプログラムコードを格納することができる任意の媒体で提供されてもよい。さらに、全体のプログラムコード、またはその一部は、例えばインターネット上の伝送媒体上のソフトウェアソース、または他のサーバから、送信され、ダウンロードされてもよく、あるいは、(例えば、TCP/IP、HTTP、HTTPS、イーサネット(登録商標)などの)任意の通信媒体およびプロトコルを使用して、(例えば、エクストラネット、VPN、LANなどの)任意の他の従来型ネットワーク接続上で送信されてもよい。実施形態を実施するコンピュータコードは、クライアントシステムおよび/またはサーバまたはサーバシステム上で実行することができる任意のプログラミング言語で実装することができることも認識されよう。プログラミング言語は、例えば、C、C++、HTML、任意の他のマークアップ言語、JAVA(商標)、JavaScript(登録商標)、ActiveX(登録商標)、VBScriptなどの任意の他のスクリプト言語が挙げられ、公知の多くの他のプログラミング言語が使用されてもよい。(Java(商標)は、Sun Microsystems(登録商標)、Inc.の商標である)。
一部の実施形態によれば、各システム916は、ウェブページ、フォーム、アプリケーション、データおよびメディアコンテンツをユーザ(クライアント)システム912に提供して、システム916のテナントとしてのユーザシステム912によるアクセスをサポートするよう構成される。このように、システム916は、データが共有されるのでない限り、それぞれのテナントのデータを分離しておくためセキュリティ機構を提供する。2つ以上のMTSが使用される場合、それらは、(例えば、単一のビルまたはキャンパスに配置されたサーバファームに)互いに近接して配置してもよい、またはそれらは、互いに遠隔な位置に分散されてもよい(例えば、A町に配置された1つまたは複数のサーバおよびB町に配置された1つまたは複数のサーバ)。本明細書で使用される場合、各MTSは、ローカルにまたは1つもしくは複数の地理位置へ分散された、論理的におよび/または物理的に接続されたサーバを含んでもよい。さらに、「サーバ」という用語は、処理を行うハードウェアおよびプロセススペース(複数可)、ならびに当業者に公知の、関連する記憶システムおよび(例えば、OODBMSまたはRDBMSなどの)データベースアプリケーションを含むコンピューティングシステムを含むことを意味する。
「サーバシステム」および「サーバ」は、本明細書ではよく同じ意味で使用されることも理解されたい。同様に、本明細書に記載のデータベースオブジェクトは、単一のデータベース、分散されたデータベース、分散されたデータベースのコレクション、冗長オンラインもしくはオフラインバックアップまたは他の冗長性を有するデータベースとして実装することができ、分散されたデータベースまたは記憶ネットワークおよび関連する処理インテリジェンスを含むことがある。
図10は、一部の実施形態による、システム916および様々な相互接続をさらに示す環境910のブロック図を示す。図10は、ユーザシステム912が、プロセッサシステム912A、メモリシステム912B、入力システム912C、および出力システム912Dを含むことができることを示す。図10は、ネットワーク914およびシステム916を示す。図10はまた、システム916が、テナントデータ記憶装置922、テナントデータ923、システムデータ記憶装置924、システムデータ925、ユーザインタフェース(UI)1030、アプリケーションプログラムインタフェース(API)1032、PL/SOQL1034、セーブルーチン1036、アプリケーションセットアップ機構1038、アプリケーションサーバ10001−1000N、システムプロセススペース1002、テナントプロセススペース1004、テナント管理プロセススペース1010、テナント記憶領域1012、ユーザ記憶1014、およびアプリケーションメタデータ1016を含んでもよいことを示す。実施形態によっては、環境910が、上記に記載したものと同じ構成要素を有してなくてもよい、かつ/または上記に記載したものの代わりに、または追加で他の構成要素を有してもよい。
ユーザシステム912、ネットワーク914、システム916、テナントデータ記憶装置922、およびシステムデータ記憶装置924は、上記図9で論じられている。ユーザシステム912に関して、プロセッサシステム912Aは、プロセッサの任意の組み合わせでよい。メモリシステム912Bは、1つもしくは複数のメモリ装置、短期記憶、および/または長期記憶メモリの組み合わせでもよい。入力システム912Cは、キーボード、マウス、トラックボール、スキャナ、カメラ、および/またはネットワークへのインタフェースなどの入力デバイスの任意の組み合わせでもよい。出力システム912Dは、モニタ、プリンタ、および/またはネットワークへのインタフェースなどの出力デバイスの任意の組み合わせでもよい。図10によって示すように、システム916は、1組のHTTPアプリケーションサーバ1000、アプリケーションプラットフォーム918、テナントデータ記憶装置922およびシステムデータ記憶装置924として実装される(図9の)ネットワークインタフェース920を含んでもよい。また、個々のテナントプロセススペース1004およびテナント管理プロセススペース1010を含むシステムプロセススペース1002が示される。各アプリケーションサーバ1000は、ユーザシステム912の要求に応対するためテナントデータ記憶装置922およびその中のテナントデータ923、ならびにシステムデータ記憶装置924およびその中のシステムデータ925に対して構成されてもよい。テナントデータ923は、データの物理的配置および/または論理的配置のいずれとすることもできる、個々のテナントデータ記憶領域1012に分割されることがある。各テナントデータ記憶領域1012内で、ユーザ記憶1014およびアプリケーションメタデータ1016は、各ユーザに同様に配分されることがある。例えば、ユーザの直近に使用した(MRU)項目の写しは、ユーザ記憶1014に格納されることがある。同様に、テナントである組織全体用のMRU項目の写しは、テナント記憶領域1012に格納されることがある。ユーザシステム912のユーザおよび/または開発者に、UI1030は、ユーザインタフェースを提供し、API1032はシステム916常駐プロセスへのアプリケーションプログラマインタフェースを提供する。テナントデータおよびシステムデータは、Oracle(商標)データベースなどの様々なデータベースに格納されてもよい。
アプリケーションプラットフォーム918は、アプリケーション開発者のアプリケーションの作成および管理をサポートするアプリケーションセットアップ機構1038を含み、それを、例えば、テナント管理プロセス1010によって管理されるテナントプロセススペース1004として、サブスクライバが実行するために、セーブルーチン1036によりテナントデータ記憶装置922へメタデータとして保存することができる。こうしたアプリケーションへの呼び出しは、プログラミング言語スタイルインタフェース拡張をAPI1032へ提供するPL/SOQL34を使用して符号化することができる。一部のPL/SOQL言語の実施形態の詳細な説明は、本発明の譲受人に譲渡された、2007年9月21日出願のCraig Weissmanによる「METHOD AND SYSTEM FOR ALLOWING ACCESS TO DEVELOPED APPLICATIONS VIA A MULTI−TENANT ON−DEMAND DATABASE SERVICE」と題する米国特許第7,730,478号に論じられ、その内容全体およびすべての目的は参照により本明細書に組み込まれる。アプリケーションへの呼び出しは、システムプロセスによって検出することができ、それは、呼び出しを行い、メタデータをアプリケーションとして仮想マシンで実行するサブスクライバのためにアプリケーションメタデータ1016の取得を管理する。
各アプリケーションサーバ1000は、別のネットワーク接続を介して、例えばシステムデータ925およびテナントデータ923へのアクセスを有する、データベースシステムに通信可能に結合可能である。例えば、一アプリケーションサーバ10001は、(インターネットなどの)ネットワーク914を介して結合されることがあり、他のアプリケーションサーバ1000N−1は、ダイレクトネットワークリンクを介して結合されることがあり、他のアプリケーションサーバ1000Nは、さらに別のネットワーク接続によって、結合されることがある。伝送制御プロトコルおよびインターネットプロトコル(TCP/IP)は、アプリケーションサーバ1000とデータベースシステムの間を通信するための典型的なプロトコルである。しかし、他のトランスポートプロトコルが、使用されるネットワークの相互接続に応じてシステムを最適化するために使用されてもよい。
特定の実施形態では、アプリケーションサーバ1000それぞれは、テナントである任意の組織に関連する任意のユーザへの要求を取り扱うよう構成される。アプリケーションサーバをいつでもどのような理由でも追加し、サーバプールから取り除くことができることが望ましいため、ユーザおよび/または組織にとって特定のアプリケーションサーバ1000と密接に関係するサーバが無いことが好ましい。したがって、実施形態によっては、(F5 Big−IP ロードバランサなどの)負荷分散機能を実装するインタフェースシステムは、アプリケーションサーバ1000への要求を分散するためにアプリケーションサーバ1000とユーザシステム912の間に通信可能に結合される。実施形態によっては、ロードバランサは、最小の接続アルゴリズムを使用して、ユーザ要求をアプリケーションサーバ1000へ送り届ける。ラウンドロビンおよび測定された応答時間などの負荷分散アルゴリズムの他の例も、使用されてもよい。例えば、特定の実施形態では、同一ユーザからの3つの連続した要求は、3つの異なるアプリケーションサーバ1000に届く可能性があり、異なるユーザからの3つの要求は、同一アプリケーションサーバ1000に届く可能性がある。このように、システム916はマルチテナントであり、システム916が異なるユーザおよび組織にわたる異なるオブジェクト、データおよびアプリケーションの記憶およびそれらへのアクセスを取り扱う。
記憶装置の例として、一テナントが、各コールセンターエージェントがシステム916を使用してその営業プロセスを管理する、営業職員を雇用する会社である場合がある。したがって、ユーザは、(例えば、テナントデータ記憶装置922で)ユーザの個人営業プロセスにすべて適用可能な、連絡先データ、見込み客データ、顧客フォローアップデータ、実績データ、目標および進捗データなどを維持する場合がある。MTS構成の例では、アクセス、閲覧、変更、報告、送信、計算などを行うためのデータおよびアプリケーションの全てが、ネットワークアクセス以外何もないユーザシステムにより維持およびアクセス可能なので、ユーザは、多くの異なるユーザシステムのいずれからも自身の営業努力および営業サイクルを管理することができる。例えば、コールセンターエージェントが顧客を訪問していて、顧客のロビーにインターネットアクセスがある場合、コールセンターエージェントは、ロビーでその顧客が到着するのを待っている間に、その顧客に関する重要な更新を取得することができる。
各ユーザのデータは、各ユーザの雇用主に関わらず、他のユーザのデータと分離されている場合があり、一部のデータは、テナントである所与の組織の複数のユーザまたはすべてのユーザにより共有またはアクセス可能な全組織的データである場合がある。したがって、テナントレベルで配分される、システム916により管理される一部のデータ構造である場合があり、他のデータ構造は、ユーザレベルで管理されている場合がある。MTSは、考えられる競合を含む複数のテナントをサポートすることがあるので、データ、アプリケーション、およびアプリケーションの使用を分離するセキュリティプロトコルを有する必要がある。また、多くのテナントが、自身のシステムを維持するよりMTSへのアクセスを選択する可能性があるので、冗長性、動作可能時間、およびバックアップが、MTSに実装してもよい追加の機能である。ユーザ特有のデータおよびテナント特有のデータに加えて、システム916はまた、複数のテナントまたは他のデータにより使用可能なシステムレベルのデータを維持することがある。こうしたシステムレベルのデータは、テナント間で共有可能な業界レポート、ニュース、掲示などを含むことがある。
特定の実施形態では、(クライアントマシン/システムであってよい)ユーザシステム912が、アプリケーションサーバ1000と通信して、1つまたは複数のクエリをテナントデータ記憶装置922および/またはシステムデータ記憶装置924へ送信することを必要とすることがあるシステム916からのシステムレベルおよびテナントレベルのデータを要求し、更新する。(システム916のアプリケーションサーバ1000などの)システム916は、所望の情報にアクセスするように設計されている(SQLクエリなどの)1つまたは複数のSQL文を自動的に生成する。システムデータ記憶装置924は、クエリプランを生成して、データベースの要求されたデータにアクセスすることができる。
各データベースは、一般に予め定義されたカテゴリに適合されるデータを含む1組の論理テーブルなどのオブジェクトのコレクションとして閲覧することができる。「テーブル」は、データオブジェクトの一表現であり、本明細書では、一部の実施形態によるオブジェクトおよびカスタムオブジェクトの概念記述を簡単にするために使用することができる。「テーブル」および「オブジェクト」は、本明細書では同じ意味で使用されることを理解されたい。各テーブルは、一般に閲覧可能な図内のコラムまたはフィールドとして論理的に配置された1つまたは複数のデータカテゴリを含む。各列またはテーブルの記録は、フィールドによって規定された各カテゴリ用のデータのインスタンスを含む。例えば、CRMデータベースは、氏名、住所、電話番号、ファックス番号などの基本的な連絡先情報のフィールドを使って顧客を記述するテーブルを含むことができる。他のテーブルは、顧客、製品、販売価格、日付などの情報のフィールドを含む発注書を記述することがある。一部のマルチテナントデータベースシステムでは、標準エンティティテーブルは、全てのテナントの使用に供されることがある。CRMデータベースアプリケーションでは、こうした標準エンティティは、口座、連絡先、見込み、および機会のデータ用のテーブルを含むことがあり、それぞれが予め定義されたフィールドを含む。「エンティティ」という用語はまた、本明細書では「オブジェクト」および「テーブル」と同じ意味で使用されてもよいと理解されたい。
一部のマルチテナントデータベースシステムでは、テナントが、カスタムオブジェクトを生成し保存することを許可されてもよい、あるいは例えば、カスタムインデックスフィールドを含む、標準オブジェクト用のカスタムフィールドを生成することにより、標準エンティティまたはオブジェクトをカスタマイズすることを許可されてもよい。そのすべての内容およびすべての目的が参照により本明細書に組み入れられる、Weissmanなどの「CUSTOM ENTITIES AND FIELDS IN A MULTI−TENANT DATABASE SYSTEM」と題する米国特許第7,779,039号は、カスタムオブジェクトを生成するほか、マルチテナントデータベースシステムで標準オブジェクトをカスタマイズするシステムおよび方法を教授する。実施形態によっては、例えば、すべてのカスタムエンティティのデータの列が、組織毎の複数の論理テーブルを含むことができる単一のマルチテナント物理的テーブルに格納される。実施形態によっては、単一の顧客用の複数の「テーブル」は、実際には1つの大きいテーブルおよび/または他の顧客のデータと同じテーブルに格納されてもよい。
本開示のこれらおよび他の態様は、様々な種類のハードウェア、ソフトウェア、ファームウェアなどによって実装することができる。例えば、本開示の一部の特徴は、本明細書に記載の様々な動作を実施するために、少なくとも部分的に、プログラム命令、状態情報などを含む機械可読媒体によって実装されてもよい。プログラム命令の例として、コンパイラによって生成された機械コードおよびインタープリタを使用してコンピュータによって実行可能なより高いレベルのコードを含むファイルの両方が挙げられる。機械可読媒体の例として、ハードディスク、フロッピーディスク、および磁気テープなどの磁気媒体、CD−ROMディスクなどの光媒体、磁気光媒体、および読み出し専用メモリ装置(「ROM」)およびランダムアクセスメモリ(「RAM」)などのプログラム命令を保存し実行するよう特別に構成されたハードウェア装置が挙げられるが、それらに限定されない。
1つまたは複数の実施形態および技術が、サービスクラウドコンソールが、複数のテナントをサポートすることができるオンデマンドデータベースサービス用フロントエンドを提供するアプリケーションサーバを有するシステムで実装される実装形態を参照して説明されるが、1つまたは複数の実施形態および技術は、マルチテナントデータベースにもアプリケーションサーバの配置にも制限されない。実施形態は、他のデータベースアーキテクチャ、すなわち、ORACLE(登録商標)、IBMによるDB2(登録商標)などを用いて、請求される実施形態の範囲から逸脱することなく、実施することができる。
上述の実施形態のいずれも、単独または任意の組み合わせで互いに共に使用することができる。様々な実施形態が、本明細書の1つまたは複数の場所で論じ言及することができる従来技術の様々な不備により動機を与えられてきたが、その実施形態は、これらの不備のいずれにも対処することを必要としない。言い換えると、別の実施形態は、本明細書で論じることが可能な別の不備に対処することができる。実施形態によっては、本明細書で論じることが可能な一部の不備に部分的に対処する、またはほんの1つの不備に対処してもよく、実施形態によっては、これらの不備のいずれにも対処しなくてよい。
様々な実施形態が本明細書に説明されてきたが、それらは、ほんの例として提示され、制限するものではないことを理解されたい。したがって、本出願の範囲は、本明細書に記載のいずれにも制限されないが、以下の特許請求の範囲およびその等価物にしたがってのみ定義されるものである。

Claims (19)

  1. 顧客データの安全を確保するためコンピュータにより実施される方法であって、
    装置により、第2の記憶領域に暗号化された第2のキーフラグメントを格納するステップであって、暗号化された第1のキーフラグメントは前記第2の記憶領域と異なる第1の記憶領域に格納され、さらに、前記第1の記憶領域および前記第2の記憶領域へのアクセスが相互に排他的であり、前記第1のキーフラグメントは前記暗号化された第1のキーフラグメントへのアクセスを有する顧客に固有であるステップと、
    前記装置により、前記顧客と通信するアプリケーションサーバから、新しいマスターキーを導出する要求を受信するステップであって、前記要求は、前記暗号化された第2のキーフラグメントを格納した後に受信される、ステップと、
    前記装置により、前記アプリケーションサーバから、前記暗号化された第1のキーフラグメントを受信するステップと、
    前記装置により、前記第2の記憶領域から、前記暗号化された第2のキーフラグメントを受信するステップと、
    前記装置によりハードウェアセキュリティモジュール(HSM)を使用して前記暗号化された第1のキーフラグメントおよび前記暗号化された第2のキーフラグメントを復号して、復号された第1のキーフラグメントおよび復号された第2のキーフラグメントを生成するステップと、
    前記装置により、前記復号された第1のキーフラグメントおよび前記復号された第2のキーフラグメントを使用して前記マスターキーを導出するステップであって、前記導出するステップは、前記復号された第1のキーフラグメントを変更し、次に前記変更された復号された第1のキーフラグメント及び前記復号された第2のキーフラグメントを結合するステップを含み、前記新しいマスターキーは前記顧客に固有である、ステップと、
    前記装置により、前記導出した新しいマスターキーを要求側のアプリケーションサーバへ送信するステップであって、前記マスターキーは前記アプリケーションサーバのインメモリキャッシュに格納され、前記アプリケーションサーバが前記アプリケーションサーバに格納された顧客データを暗号化できるようにするステップと、
    を含む方法。
  2. 前記暗号化された第1のキーフラグメントおよび前記暗号化された第2のキーフラグメントが、ライベートキーよび対称キーを含むキーセットを使用してさらに復号され、前記プライベートキーは前記対称キーを用いて予め暗号化され、前記HSMがHSMパブリックキーおよびHSMプライベートキーを含み、前記対称キーは前記HSMパブリックキーを用いて予め暗号化される、請求項に記載の方法。
  3. 前記HSMプライベートキーを使用して前記号化された対称キーを復号して、号された対称キーを生成するステップ
    前記復号された対称キーを使用して前記号化されたプライベートキーを復号して、号されたプライベートキーを生成するステップ、をさらに含む、請求項に記載の方法。
  4. 前記暗号化された第1のキーフラグメントおよび前記暗号化された第2のキーフラグメントが、前記ーセットを用いて復号される、請求項に記載の方法。
  5. 前記装置が、前記第1のキーフラグメントおよび前記第2のキーフラグメント、乱数発生器を使用して生成するステップと、
    前記装置が、前記暗号化された対称キーおよび記暗号化されたプライベートキー、前記第2の記憶領域に格納するステップと
    をさらに含む請求項に記載の方法。
  6. 前記第1のキーフラグメント、前記顧客データに関連付けられた顧客に関連付けられた第2の装置を用いて生成するステップ、を更に含む請求項に記載の方法。
  7. 前記装置により、前記顧客データを暗号化する、または暗号化された顧客データを復号するため、前記マスターキーを使用するステップ、をさらに含む請求項に記載の方法。
  8. 複数のキーセットがあり、各キーセットが、前記キーセットに固有の、プライベートキー、称キー、およびーフラグメントを含み、前記装置は、特定のキーセットの前記ーフラグメント、前記第2のキーフラグメントとして使用る、請求項に記載の方法。
  9. 顧客データの安全を確保するための装置であって、
    1つまたは複数のプロセッサと、
    数の命令を格納した非一時的コンピュータ可読媒体と、
    を含み、前記命令は実行されると前記1つまたは複数のプロセッサに
    暗号化された第2のキーフラグメントを第2の記憶領域に格納させ、暗号化された第1のキーフラグメントは前記第2の記憶領域と異なる第1の記憶領域に格納され、更に、前記第1の記憶領域及び前記第2の記憶領域へのアクセスは、相互に排他的であり、前記第1のキーフラグメントは前記暗号化された第1のキーフラグメントへのアクセスを有する顧客に固有であり
    前記顧客と通信するアプリケーションサーバから、新しいマスターキーを導出する要求を受信させ、前記要求は、前記暗号化された第2のキーフラグメントを格納した後に受信され、
    前記アプリケーションサーバから、前記暗号化された第1のキーフラグメントを受信させ、
    前記第2の記憶領域から前記暗号化された第2のキーフラグメントを読み出させ、
    ハードウェアセキュリティモジュール(HSM)を使用して前記暗号化された第1のキーフラグメントおよび前記暗号化された第2のキーフラグメントを復号させて、復号された第1のキーフラグメントおよび復号された第2のキーフラグメントを生成させ、
    前記復号された第1のキーフラグメントおよび前記復号された第2のキーフラグメントを使用して前記マスターキーを導出させ、前記の導出は、前記復号された第1のキーフラグメントを変更させ、次に前記変更された復号された第1のキーフラグメント及び前記復号された第2のキーフラグメントを結合させることを含み、前記新しいマスターキーは前記顧客に固有であり、
    前記導出した新しいマスターキーを、前記要求側のアプリケーションサーバへ送信させ、前記マスターキーは、前記アプリケーションサーバのインメモリキャッシュに納され、前記アプリケーションサーバが前記アプリケーションサーバに格納された顧客データを暗号化できるようにする、装置。
  10. 前記暗号化された第1のキーフラグメントおよび前記暗号化された第2のキーフラグメントが、さらに、(a)HSMプライベートキーを使用してキーセットに関連付けられた号化された対称キーを復号して、復号された対称キーを生成することであって前記暗号化された対称キーは、HSMパブリックキーを使用して予め暗号化されていること、および(b)前記復号された対称キーを使用して前記キーセットに関連付けられた号化されたプライベートキーを復号して、号されたプライベートキーを生成することであって、前記暗号化されたプライベートキーは、前記対称キーを使用して予め暗号化されていること、により号される、請求項に記載の装置。
  11. 前記暗号化された第1のキーフラグメントおよび前記暗号化された第2のキーフラグメントが、前記キーセットに関連付けられた前記復号されたプライベートキーを使用して復号される、請求項10に記載の装置。
  12. 前記第1のキーフラグメントが、前記第1の記憶領域に関連付けられた第1のサーバコンピューティングシステムの乱数発生器を使用して生成され、前記第2のキーフラグメントが、前記第1のサーバコンピューティングシステムに結合され、前記第2の記憶領域に関連付けられた第2のサーバコンピューティングシステムの乱数発生器を使用して生成され、記暗号化された対称キーおよび記暗号化されたプライベートキーが、前記第2の記憶領域に格納される、請求項11に記載の装置。
  13. 前記第1のキーフラグメントが、前記顧客データに関連付けられた顧客によって生成される、請求項12に記載の装置。
  14. 前記マスターキーが、前記顧客データを暗号化する、または暗号化された顧客データ復号するために使用される、請求項12に記載の装置。
  15. 複数のキーセットがあり、各キーセットが、前記キーセットに固有の、プライベートキー、称キー、およびーフラグメントを含み、特定のキーセットの前記ーフラグメントが、前記第2のキーフラグメントとして使用される、請求項14に記載の装置。
  16. コンピュータ可読プログラムコードを含むコンピュータプログラムプロダクトであって、前記コンピュータ可読プログラムコードは非一時的コンピュータ可読媒体から読み出されると1つまたは複数のプロセッサにより実行され、前記プログラムコードは、
    暗号化された第2のキーフラグメントを第2の記憶領域に格納し、暗号化された第1のキーフラグメントは前記第2の記憶領域と異なる第1の記憶領域に格納され、更に、前記第1の記憶領域及び前記第2の記憶領域へのアクセスは、相互に排他的であり、前記第1のキーフラグメントは前記暗号化された第1のキーフラグメントへのアクセスを有する顧客に固有であり
    前記顧客と通信するアプリケーションサーバから、新しいマスターキーを導出する要求を受信し、前記要求は、前記暗号化された第2のキーフラグメントを格納した後に受信され、
    前記アプリケーションサーバから、前記暗号化された第1のキーフラグメントを受信し、
    前記第2の記憶領域から前記暗号化された第2のキーフラグメントを読み出し、
    ハードウェアセキュリティモジュール(HSM)を使用して前記暗号化された第1のキーフラグメントおよび前記暗号化された第2のキーフラグメント復号して、復号された第1のキーフラグメントおよび復号された第2のキーフラグメントを生成し、
    前記復号された第1のキーフラグメントおよび前記復号された第2のキーフラグメントを使用して前記マスターキーを導出し、前記の導出は、前記復号された第1のキーフラグメントを変更し、次に前記変更された復号された第1のキーフラグメント及び前記復号された第2のキーフラグメントを結合することを含み、前記新しいマスターキーは前記顧客に固有であり、
    前記導出した新しいマスターキーを、前記要求側のアプリケーションサーバへ送信し、前記マスターキーは、前記アプリケーションサーバのインメモリキャッシュに納され、前記アプリケーションサーバが前記アプリケーションサーバに格納された顧客データを暗号化できるようにする、
    ための命令を含む、コンピュータプログラムプロダクト。
  17. 前記暗号化された第1のキーフラグメントおよび前記暗号化された第2のキーフラグメントが、プライベートキーよび対称キーを含むキーセットを使用してさらに復号され、前記プライベートキーは前記対称キーを使用して予め暗号化され、前記HSMがHSMパブリックキーおよびHSMプライベートキーを含み、前記対称キーは前記HSMパブリックキーを用いて予め暗号化される、請求項16に記載のコンピュータプログラムプロダクト
  18. 前記1つまたは複数のプロセッサに、
    前記HSMプライベートキーを使用して前記暗号化された対称キーを復号して、号された対称キーを生成させ、
    記復号された対称キーを使用して前記暗号化されたプライベートキーを復号して、号されたプライベートキーを生成させる命令をさらに含む、請求項17に記載のコンピュータプログラムプロダクト
  19. 記暗号化された対称キーおよび記暗号化されたプライベートキーが前記第2の記憶領域に格納され、前記第1のキーフラグメントおよび前記第2のキーフラグメントが乱数発生器を使用して生成され、前記マスターキーが顧客データを暗号化する、または暗号化された顧客データを復号するために使用される、請求項18に記載のコンピュータプログラムプロダクト
JP2017546194A 2015-03-02 2016-01-13 データの安全を確保するためのシステムおよび方法 Active JP6700294B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/635,265 2015-03-02
US14/635,265 US10541811B2 (en) 2015-03-02 2015-03-02 Systems and methods for securing data
PCT/US2016/013257 WO2016140739A1 (en) 2015-03-02 2016-01-13 Systems and methods for securing data

Publications (2)

Publication Number Publication Date
JP2018507652A JP2018507652A (ja) 2018-03-15
JP6700294B2 true JP6700294B2 (ja) 2020-05-27

Family

ID=55299758

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017546194A Active JP6700294B2 (ja) 2015-03-02 2016-01-13 データの安全を確保するためのシステムおよび方法

Country Status (7)

Country Link
US (1) US10541811B2 (ja)
EP (1) EP3266147B1 (ja)
JP (1) JP6700294B2 (ja)
CN (1) CN107533616B (ja)
AU (1) AU2016226593B2 (ja)
CA (1) CA2978057C (ja)
WO (1) WO2016140739A1 (ja)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10796302B2 (en) * 2014-04-23 2020-10-06 Minkasu, Inc. Securely storing and using sensitive information for making payments using a wallet application
US11887073B2 (en) * 2014-04-23 2024-01-30 Minkasu, Inc. Securely storing and using sensitive information for making payments using a wallet application
US10861009B2 (en) 2014-04-23 2020-12-08 Minkasu, Inc. Secure payments using a mobile wallet application
US9984238B1 (en) * 2015-03-30 2018-05-29 Amazon Technologies, Inc. Intelligent storage devices with cryptographic functionality
KR102460096B1 (ko) * 2015-05-27 2022-10-27 삼성에스디에스 주식회사 클라우드 서비스를 위한 암호화 키 관리 방법 및 그 장치
US10402792B2 (en) * 2015-08-13 2019-09-03 The Toronto-Dominion Bank Systems and method for tracking enterprise events using hybrid public-private blockchain ledgers
US10778429B1 (en) 2015-12-03 2020-09-15 Amazon Technologies, Inc. Storage of cryptographic information
US9660970B1 (en) * 2015-12-03 2017-05-23 Amazon Technologies, Inc. Cryptographic key distribution
US10127399B1 (en) * 2015-12-29 2018-11-13 EMC IP Holding Company LLC Secrets as a service
GB2561729A (en) * 2016-02-23 2018-10-24 Nchain Holdings Ltd Secure multiparty loss resistant storage and transfer of cryptographic keys for blockchain based systems in conjunction with a wallet management system
WO2017145019A1 (en) 2016-02-23 2017-08-31 nChain Holdings Limited Registry and automated management method for blockchain-enforced smart contracts
MX2018010054A (es) 2016-02-23 2019-01-21 Nchain Holdings Ltd Metodo y sistema de tokenizacion para la implementacion de cambios de moneda en una cadena de bloques.
CA3014737A1 (en) 2016-02-23 2017-08-31 nChain Holdings Limited Blockchain-implemented method for control and distribution of digital content
EP4369273A2 (en) 2016-02-23 2024-05-15 nChain Licensing AG A method and system for securing computer software using a distributed hash table and a blockchain
US11625694B2 (en) 2016-02-23 2023-04-11 Nchain Licensing Ag Blockchain-based exchange with tokenisation
CA3014748C (en) 2016-02-23 2024-03-12 nChain Holdings Limited Personal device security using elliptic curve cryptography for secret sharing
EA201891829A1 (ru) 2016-02-23 2019-02-28 Нчейн Холдингс Лимитед Способ и система для эффективного перевода криптовалюты, связанной с заработной платой, в блокчейне для создания способа и системы автоматизированной выплаты заработной платы на основе смарт-контрактов
KR20180115727A (ko) 2016-02-23 2018-10-23 엔체인 홀딩스 리미티드 보안 투표 및 분배에서 사용을 위한 블록체인 구현 카운팅 시스템 및 방법
CN108885748A (zh) 2016-02-23 2018-11-23 区块链控股有限公司 用于区块链的加密货币的通用令牌化系统
EA201891830A1 (ru) 2016-02-23 2019-02-28 Нчейн Холдингс Лимитед Система и способ управления действиями, связанными с активами, посредством блокчейна
EP3420669B1 (en) 2016-02-23 2021-03-24 Nchain Holdings Limited Cryptographic method and system for secure extraction of data from a blockchain
CN115549887A (zh) 2016-02-23 2022-12-30 恩链控股有限公司 用于信息的安全交换的公共秘密的确定和层级确定性密钥
GB2558484A (en) 2016-02-23 2018-07-11 Nchain Holdings Ltd A method and system for the secure transfer of entities on a blockchain
US10187203B2 (en) * 2016-08-30 2019-01-22 Workday, Inc. Secure storage encryption system
US10177908B2 (en) * 2016-08-30 2019-01-08 Workday, Inc. Secure storage decryption system
US10460118B2 (en) 2016-08-30 2019-10-29 Workday, Inc. Secure storage audit verification system
US10243731B2 (en) * 2017-01-27 2019-03-26 Accenture Global Solutions Limited Hardware blockchain acceleration
CN107256178B (zh) * 2017-04-27 2019-12-17 北京数人科技有限公司 一种容器管理平台
US10680804B2 (en) * 2017-09-27 2020-06-09 Salesforce.Com, Inc. Distributed key caching for encrypted keys
US10878113B2 (en) * 2017-12-14 2020-12-29 Apple Inc. Multiple mailbox secure circuit
US10951406B2 (en) * 2018-01-24 2021-03-16 Salesforce.Com, Inc. Preventing encryption key recovery by a cloud provider
US11431494B2 (en) * 2018-03-15 2022-08-30 Atakama LLC Passwordless security system for data-at-rest
US11018871B2 (en) * 2018-03-30 2021-05-25 Intel Corporation Key protection for computing platform
EP3785409B1 (en) 2018-04-25 2023-08-02 British Telecommunications public limited company Data message sharing
WO2019223979A1 (en) * 2018-05-24 2019-11-28 British Telecommunications Public Limited Company Cryptographic key generation and storage
WO2019223980A1 (en) 2018-05-24 2019-11-28 British Telecommunications Public Limited Company Cryptographic key generation using multiple random sources
US11120140B2 (en) * 2018-06-27 2021-09-14 International Business Machines Corporation Secure operations on encrypted data
CN109241028A (zh) * 2018-08-02 2019-01-18 山东浪潮通软信息科技有限公司 一种基于Mycat的数据库多租户实现方法
CN109687959B (zh) 2018-12-29 2021-11-12 上海唯链信息科技有限公司 密钥安全管理系统和方法、介质和计算机程序
US11216444B2 (en) 2019-01-31 2022-01-04 Salesforce.Com, Inc. Scalable event sourcing datastore
US11526539B2 (en) 2019-01-31 2022-12-13 Salesforce, Inc. Temporary reservations in non-relational datastores
US11290258B2 (en) * 2019-02-22 2022-03-29 Panasonic Avionics Corporation Hybrid cryptographic system and method for encrypting data for common fleet of vehicles
EP4115560A1 (en) * 2020-03-02 2023-01-11 Entrust Corporation Remote asynchronous key entry
US11588632B2 (en) * 2020-09-22 2023-02-21 International Business Machines Corporation Private key creation using location data
CN111934872B (zh) * 2020-10-12 2021-02-09 百度在线网络技术(北京)有限公司 密钥处理方法、装置、电子设备以及存储介质
CN112395304B (zh) * 2020-10-30 2024-01-02 迅鳐成都科技有限公司 基于数据行为模拟的数据安全计算方法、系统及存储介质
US20230081068A1 (en) * 2021-09-10 2023-03-16 International Business Machines Corporation Securely distributing a root key for a hardware security module
US20230318826A1 (en) * 2022-03-30 2023-10-05 International Business Machines Corporation Key import with hybrid cryptography

Family Cites Families (151)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5608872A (en) 1993-03-19 1997-03-04 Ncr Corporation System for allowing all remote computers to perform annotation on an image and replicating the annotated image on the respective displays of other comuters
US5649104A (en) 1993-03-19 1997-07-15 Ncr Corporation System for allowing user of any computer to draw image over that generated by the host computer and replicating the drawn image to other computers
US5577188A (en) 1994-05-31 1996-11-19 Future Labs, Inc. Method to provide for virtual screen overlay
GB2300991B (en) 1995-05-15 1997-11-05 Andrew Macgregor Ritchie Serving signals to browsing clients
US5715450A (en) 1995-09-27 1998-02-03 Siebel Systems, Inc. Method of selecting and presenting data from a database using a query language to a user of a computer system
US5821937A (en) 1996-02-23 1998-10-13 Netsuite Development, L.P. Computer method for updating a network design
US5831610A (en) 1996-02-23 1998-11-03 Netsuite Development L.P. Designing networks
US6604117B2 (en) 1996-03-19 2003-08-05 Siebel Systems, Inc. Method of maintaining a network of partially replicated database system
US5873096A (en) 1997-10-08 1999-02-16 Siebel Systems, Inc. Method of maintaining a network of partially replicated database system
WO1998040804A2 (en) 1997-02-26 1998-09-17 Siebel Systems, Inc. Distributed relational database
WO1998038762A2 (en) 1997-02-26 1998-09-03 Siebel Systems, Inc. Determining visibility to a remote database client
AU6440398A (en) 1997-02-26 1998-09-18 Siebel Systems, Inc. Method of using a cache to determine the visibility to a remote database client of a plurality of database transactions
AU6183698A (en) 1997-02-26 1998-09-18 Siebel Systems, Inc. Method of determining visibility to a remote database client of a plurality of database transactions having variable visibility strengths
AU6668398A (en) 1997-02-26 1998-09-18 Siebel Systems, Inc. Method of determining the visibility to a remote databaseclient of a plurality of database transactions using simplified visibility rules
WO1998040805A2 (en) 1997-02-27 1998-09-17 Siebel Systems, Inc. Method of synchronizing independently distributed software and database schema
JP2001514776A (ja) 1997-02-27 2001-09-11 シーベル システムズ,インコーポレイティド ローカルな修正を組み込むソフトウェア配布の連続レベル移送の方法
EP1015997A4 (en) 1997-02-28 2006-03-29 Siebel Systems Inc PARTLY REPLICATED DISTRIBUTED DATABASE WITH MULTIPLE LEVELS FROM REMOTE CLIENTS
US6169534B1 (en) 1997-06-26 2001-01-02 Upshot.Com Graphical user interface for customer information management
US5918159A (en) 1997-08-04 1999-06-29 Fomukong; Mundi Location reporting satellite paging system with optional blocking of location reporting
US6560461B1 (en) 1997-08-04 2003-05-06 Mundi Fomukong Authorized location reporting paging system
JPH11239124A (ja) * 1998-02-23 1999-08-31 Nippon Telegr & Teleph Corp <Ntt> 秘密鍵回復方法および装置
US20020059095A1 (en) 1998-02-26 2002-05-16 Cook Rachael Linette System and method for generating, capturing, and managing customer lead information over a computer network
US6732111B2 (en) 1998-03-03 2004-05-04 Siebel Systems, Inc. Method, apparatus, system, and program product for attaching files and other objects to a partially replicated database
US6772229B1 (en) 2000-11-13 2004-08-03 Groupserve, Inc. Centrifugal communication and collaboration method
US6161149A (en) 1998-03-13 2000-12-12 Groupserve, Inc. Centrifugal communication and collaboration method
US5963953A (en) 1998-03-30 1999-10-05 Siebel Systems, Inc. Method, and system for product configuration
EP1105826A1 (en) 1998-08-27 2001-06-13 Upshot Corporation A method and apparatus for network-based sales force management
US6393605B1 (en) 1998-11-18 2002-05-21 Siebel Systems, Inc. Apparatus and system for efficient delivery and deployment of an application
US6601087B1 (en) 1998-11-18 2003-07-29 Webex Communications, Inc. Instant document sharing
US6728960B1 (en) 1998-11-18 2004-04-27 Siebel Systems, Inc. Techniques for managing multiple threads in a browser environment
WO2000033238A2 (en) 1998-11-30 2000-06-08 Siebel Systems, Inc. Assignment manager
WO2000033235A1 (en) 1998-11-30 2000-06-08 Siebel Systems, Inc. State models for monitoring processes
JP2002531896A (ja) 1998-11-30 2002-09-24 シーベル システムズ,インコーポレイティド スマートスクリプトを用いたコールセンター
AU2035600A (en) 1998-11-30 2000-06-19 Siebel Systems, Inc. Development tool, method, and system for client server appications
US7356482B2 (en) 1998-12-18 2008-04-08 Alternative Systems, Inc. Integrated change management unit
US20020072951A1 (en) 1999-03-03 2002-06-13 Michael Lee Marketing support database management method, system and program product
US6574635B2 (en) 1999-03-03 2003-06-03 Siebel Systems, Inc. Application instantiation based upon attributes and values stored in a meta data repository, including tiering of application layers objects and components
US7698160B2 (en) 1999-05-07 2010-04-13 Virtualagility, Inc System for performing collaborative tasks
US8095413B1 (en) 1999-05-07 2012-01-10 VirtualAgility, Inc. Processing management information
US6621834B1 (en) 1999-11-05 2003-09-16 Raindance Communications, Inc. System and method for voice transmission over network protocols
US6535909B1 (en) 1999-11-18 2003-03-18 Contigo Software, Inc. System and method for record and playback of collaborative Web browsing session
US6324568B1 (en) 1999-11-30 2001-11-27 Siebel Systems, Inc. Method and system for distributing objects over a network
US6654032B1 (en) 1999-12-23 2003-11-25 Webex Communications, Inc. Instant sharing of documents on a remote server
US6577726B1 (en) 2000-03-31 2003-06-10 Siebel Systems, Inc. Computer telephony integration hotelling method and system
US6732100B1 (en) 2000-03-31 2004-05-04 Siebel Systems, Inc. Database access method and system for user role defined access
US7266502B2 (en) 2000-03-31 2007-09-04 Siebel Systems, Inc. Feature centric release manager method and system
US6336137B1 (en) 2000-03-31 2002-01-01 Siebel Systems, Inc. Web client-server system and method for incompatible page markup and presentation languages
US6665655B1 (en) 2000-04-14 2003-12-16 Rightnow Technologies, Inc. Implicit rating of retrieved information in an information search system
US6434550B1 (en) 2000-04-14 2002-08-13 Rightnow Technologies, Inc. Temporal updates of relevancy rating of retrieved information in an information search system
US6842748B1 (en) 2000-04-14 2005-01-11 Rightnow Technologies, Inc. Usage based strength between related information in an information retrieval system
US7730072B2 (en) 2000-04-14 2010-06-01 Rightnow Technologies, Inc. Automated adaptive classification system for knowledge networks
US6763501B1 (en) 2000-06-09 2004-07-13 Webex Communications, Inc. Remote document serving
JP2002084269A (ja) * 2000-09-07 2002-03-22 Hitachi Ltd 秘密鍵のリカバリ方法および保管方法
KR100365357B1 (ko) 2000-10-11 2002-12-18 엘지전자 주식회사 무선통신 단말기의 데이터 통신 방법
US7581230B2 (en) 2001-02-06 2009-08-25 Siebel Systems, Inc. Adaptive communication application programming interface
USD454139S1 (en) 2001-02-20 2002-03-05 Rightnow Technologies Display screen for a computer
US7711122B2 (en) * 2001-03-09 2010-05-04 Arcot Systems, Inc. Method and apparatus for cryptographic key storage wherein key servers are authenticated by possession and secure distribution of stored keys
US7174514B2 (en) 2001-03-28 2007-02-06 Siebel Systems, Inc. Engine to present a user interface based on a logical structure, such as one for a customer relationship management system, across a web site
US7363388B2 (en) 2001-03-28 2008-04-22 Siebel Systems, Inc. Method and system for direct server synchronization with a computing device
US6829655B1 (en) 2001-03-28 2004-12-07 Siebel Systems, Inc. Method and system for server synchronization with a computing device via a companion device
US20030206192A1 (en) 2001-03-31 2003-11-06 Mingte Chen Asynchronous message push to web browser
US20030018705A1 (en) 2001-03-31 2003-01-23 Mingte Chen Media-independent communication server
US6732095B1 (en) 2001-04-13 2004-05-04 Siebel Systems, Inc. Method and apparatus for mapping between XML and relational representations
US7761288B2 (en) 2001-04-30 2010-07-20 Siebel Systems, Inc. Polylingual simultaneous shipping of software
US6782383B2 (en) 2001-06-18 2004-08-24 Siebel Systems, Inc. System and method to implement a persistent and dismissible search center frame
US6728702B1 (en) 2001-06-18 2004-04-27 Siebel Systems, Inc. System and method to implement an integrated search center supporting a full-text search and query on a database
US6711565B1 (en) 2001-06-18 2004-03-23 Siebel Systems, Inc. Method, apparatus, and system for previewing search results
US6763351B1 (en) 2001-06-18 2004-07-13 Siebel Systems, Inc. Method, apparatus, and system for attaching search results
US20030004971A1 (en) 2001-06-29 2003-01-02 Gong Wen G. Automatic generation of data models and accompanying user interfaces
ATE316338T1 (de) 2001-07-19 2006-02-15 San Ei Gen Ffi Inc Geschmacksverbessernde zusammensetzungen und ihre anwendung
US6993712B2 (en) 2001-09-28 2006-01-31 Siebel Systems, Inc. System and method for facilitating user interaction in a browser environment
US6826582B1 (en) 2001-09-28 2004-11-30 Emc Corporation Method and system for using file systems for content management
US7761535B2 (en) 2001-09-28 2010-07-20 Siebel Systems, Inc. Method and system for server synchronization with a computing device
US6724399B1 (en) 2001-09-28 2004-04-20 Siebel Systems, Inc. Methods and apparatus for enabling keyboard accelerators in applications implemented via a browser
US6978445B2 (en) 2001-09-28 2005-12-20 Siebel Systems, Inc. Method and system for supporting user navigation in a browser environment
US7146617B2 (en) 2001-09-29 2006-12-05 Siebel Systems, Inc. Method, apparatus, and system for implementing view caching in a framework to support web-based applications
US8359335B2 (en) 2001-09-29 2013-01-22 Siebel Systems, Inc. Computing system and method to implicitly commit unsaved data for a world wide web application
US6901595B2 (en) 2001-09-29 2005-05-31 Siebel Systems, Inc. Method, apparatus, and system for implementing a framework to support a web-based application
US7962565B2 (en) 2001-09-29 2011-06-14 Siebel Systems, Inc. Method, apparatus and system for a mobile web client
US7289949B2 (en) 2001-10-09 2007-10-30 Right Now Technologies, Inc. Method for routing electronic correspondence based on the level and type of emotion contained therein
US7062502B1 (en) 2001-12-28 2006-06-13 Kesler John N Automated generation of dynamic data entry user interface for relational database management systems
US6804330B1 (en) 2002-01-04 2004-10-12 Siebel Systems, Inc. Method and system for accessing CRM data via voice
GB2384404B (en) * 2002-01-18 2005-02-16 Sun Microsystems Inc Key management
US7146009B2 (en) * 2002-02-05 2006-12-05 Surety, Llc Secure electronic messaging system requiring key retrieval for deriving decryption keys
US7058890B2 (en) 2002-02-13 2006-06-06 Siebel Systems, Inc. Method and system for enabling connectivity to a data system
US7131071B2 (en) 2002-03-29 2006-10-31 Siebel Systems, Inc. Defining an approval process for requests for approval
US7672853B2 (en) 2002-03-29 2010-03-02 Siebel Systems, Inc. User interface for processing requests for approval
US7231516B1 (en) * 2002-04-11 2007-06-12 General Instrument Corporation Networked digital video recording system with copy protection and random access playback
US7058807B2 (en) * 2002-04-15 2006-06-06 Intel Corporation Validation of inclusion of a platform within a data center
US6715085B2 (en) * 2002-04-18 2004-03-30 International Business Machines Corporation Initializing, maintaining, updating and recovering secure operation within an integrated system employing a data access control function
US6850949B2 (en) 2002-06-03 2005-02-01 Right Now Technologies, Inc. System and method for generating a dynamic interface via a communications network
US7594181B2 (en) 2002-06-27 2009-09-22 Siebel Systems, Inc. Prototyping graphical user interfaces
US8639542B2 (en) 2002-06-27 2014-01-28 Siebel Systems, Inc. Method and apparatus to facilitate development of a customer-specific business process model
US7437720B2 (en) 2002-06-27 2008-10-14 Siebel Systems, Inc. Efficient high-interactivity user interface for client-server applications
US7251787B2 (en) 2002-08-28 2007-07-31 Siebel Systems, Inc. Method and apparatus for an integrated process modeller
US9448860B2 (en) 2003-03-21 2016-09-20 Oracle America, Inc. Method and architecture for providing data-change alerts to external applications via a push service
US7904340B2 (en) 2003-03-24 2011-03-08 Siebel Systems, Inc. Methods and computer-readable medium for defining a product model
WO2004086198A2 (en) 2003-03-24 2004-10-07 Siebel Systems, Inc. Common common object
WO2004086197A2 (en) 2003-03-24 2004-10-07 Siebel Systems, Inc. Custom common object
US8762415B2 (en) 2003-03-25 2014-06-24 Siebel Systems, Inc. Modeling of order data
US7620655B2 (en) 2003-05-07 2009-11-17 Enecto Ab Method, device and computer program product for identifying visitors of websites
US7380125B2 (en) * 2003-05-22 2008-05-27 International Business Machines Corporation Smart card data transaction system and methods for providing high levels of storage and transmission security
US7409336B2 (en) 2003-06-19 2008-08-05 Siebel Systems, Inc. Method and system for searching data based on identified subset of categories and relevance-scored text representation-category combinations
US20040260659A1 (en) 2003-06-23 2004-12-23 Len Chan Function space reservation system
US7237227B2 (en) 2003-06-30 2007-06-26 Siebel Systems, Inc. Application user interface template with free-form layout
US7694314B2 (en) 2003-08-28 2010-04-06 Siebel Systems, Inc. Universal application network architecture
US7779039B2 (en) 2004-04-02 2010-08-17 Salesforce.Com, Inc. Custom entities and fields in a multi-tenant database system
US8146141B1 (en) * 2003-12-16 2012-03-27 Citibank Development Center, Inc. Method and system for secure authentication of a user by a host system
GB0413034D0 (en) * 2004-06-10 2004-07-14 Scient Generics Ltd Secure workflow engine
FI20051022A (fi) * 2005-10-11 2007-04-12 Meridea Financial Software Oy Menetelmä, laite, palvelinjärjestely, järjestelmä ja tietokoneohjelmatuotteet datan tallentamiseksi turvallisesti kannettavassa laitteessa
US9135228B2 (en) 2006-05-01 2015-09-15 Domo, Inc. Presentation of document history in a web browsing application
US8566301B2 (en) 2006-05-01 2013-10-22 Steven L. Rueben Document revisions in a collaborative computing environment
US8209308B2 (en) 2006-05-01 2012-06-26 Rueben Steven L Method for presentation of revisions of an electronic document
US8005223B2 (en) * 2006-05-12 2011-08-23 Research In Motion Limited System and method for exchanging encryption keys between a mobile device and a peripheral device
US7779475B2 (en) 2006-07-31 2010-08-17 Petnote Llc Software-based method for gaining privacy by affecting the screen of a computing device
US7730478B2 (en) 2006-10-04 2010-06-01 Salesforce.Com, Inc. Method and system for allowing access to developed applications via a multi-tenant on-demand database service
US8082301B2 (en) 2006-11-10 2011-12-20 Virtual Agility, Inc. System for supporting collaborative activity
US8954500B2 (en) 2008-01-04 2015-02-10 Yahoo! Inc. Identifying and employing social network relationships
JP2009017294A (ja) * 2007-07-05 2009-01-22 Nippon Telegr & Teleph Corp <Ntt> 情報処理システムおよび情報処理方法
US8275123B2 (en) * 2007-08-17 2012-09-25 Infineon Technologies, Ag Integrated data transceiver and sensor for the generation of a symmetrical cryptographic key
US8719287B2 (en) 2007-08-31 2014-05-06 Business Objects Software Limited Apparatus and method for dynamically selecting componentized executable instructions at run time
US20090100342A1 (en) 2007-10-12 2009-04-16 Gabriel Jakobson Method and system for presenting address and mapping information
US8504945B2 (en) 2008-02-01 2013-08-06 Gabriel Jakobson Method and system for associating content with map zoom function
US8490025B2 (en) 2008-02-01 2013-07-16 Gabriel Jakobson Displaying content associated with electronic mapping systems
US9449333B2 (en) 2008-02-01 2016-09-20 Gabriel Jakobson Online advertising associated with electronic mapping systems
US8014943B2 (en) 2008-05-08 2011-09-06 Gabriel Jakobson Method and system for displaying social networking navigation information
US8032297B2 (en) 2008-05-08 2011-10-04 Gabriel Jakobson Method and system for displaying navigation information on an electronic map
US8646103B2 (en) 2008-06-30 2014-02-04 Gabriel Jakobson Method and system for securing online identities
US8510664B2 (en) 2008-09-06 2013-08-13 Steven L. Rueben Method and system for displaying email thread information
US20100150341A1 (en) * 2008-12-17 2010-06-17 David Dodgson Storage security using cryptographic splitting
US8010663B2 (en) 2008-11-21 2011-08-30 The Invention Science Fund I, Llc Correlating data indicating subjective user states associated with multiple users with data indicating objective occurrences
JP5446566B2 (ja) * 2009-08-07 2014-03-19 ソニー株式会社 情報処理装置、情報処理方法、操作端末および情報処理システム
US8788842B2 (en) * 2010-04-07 2014-07-22 Apple Inc. System and method for content protection based on a combination of a user PIN and a device specific identifier
EP2606604A1 (en) * 2010-08-17 2013-06-26 Hewlett-Packard Development Company, L.P. Encryption key management
CA2759971A1 (en) * 2010-11-29 2012-05-29 Groupe Cgi Inc. Method for storing (hiding) a key in a table and corresponding method for retrieving the key from the table
US8892908B2 (en) * 2010-12-23 2014-11-18 Morega Systems Inc. Cryptography module for use with fragmented key and methods for use therewith
US9811869B2 (en) * 2011-10-28 2017-11-07 YDF Global Party Ltd. Registry
US9674155B2 (en) * 2011-12-12 2017-06-06 International Business Machines Corporation Encrypting segmented data in a distributed computing system
US8769004B2 (en) 2012-02-17 2014-07-01 Zebedo Collaborative web browsing system integrated with social networks
US8756275B2 (en) 2012-02-17 2014-06-17 Zebedo Variable speed collaborative web browsing system
US8769017B2 (en) 2012-02-17 2014-07-01 Zebedo Collaborative web browsing system having document object model element interaction detection
US8923299B2 (en) * 2012-09-14 2014-12-30 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Segmentation and reassembly of network packets
US9106411B2 (en) * 2012-09-30 2015-08-11 Apple Inc. Secure escrow service
US9197422B2 (en) * 2013-01-24 2015-11-24 Raytheon Company System and method for differential encryption
US9892460B1 (en) * 2013-06-28 2018-02-13 Winklevoss Ip, Llc Systems, methods, and program products for operating exchange traded products holding digital math-based assets
US9578142B2 (en) * 2013-07-01 2017-02-21 Cisco Technology, Inc. System and method for improving resilience in transmission of data fragments
US20150007050A1 (en) 2013-07-01 2015-01-01 Gabriel Jakobson Method and system for processing and displaying email thread information
JP2015099961A (ja) * 2013-11-18 2015-05-28 三菱電機株式会社 情報配信システム、サーバ装置、情報生成装置、端末装置、情報配信方法及びプログラム
US9571464B2 (en) * 2014-08-11 2017-02-14 Intel Corporation Network-enabled device provisioning
US9531692B2 (en) * 2014-09-19 2016-12-27 Bank Of America Corporation Method of securing mobile applications using distributed keys
US9413735B1 (en) * 2015-01-20 2016-08-09 Ca, Inc. Managing distribution and retrieval of security key fragments among proxy storage devices

Also Published As

Publication number Publication date
EP3266147B1 (en) 2019-09-18
JP2018507652A (ja) 2018-03-15
CA2978057C (en) 2023-09-19
US10541811B2 (en) 2020-01-21
WO2016140739A1 (en) 2016-09-09
CA2978057A1 (en) 2016-09-09
CN107533616A (zh) 2018-01-02
AU2016226593B2 (en) 2020-02-06
US20160261408A1 (en) 2016-09-08
AU2016226593A1 (en) 2017-09-14
CN107533616B (zh) 2021-03-12
EP3266147A1 (en) 2018-01-10

Similar Documents

Publication Publication Date Title
JP6700294B2 (ja) データの安全を確保するためのシステムおよび方法
US10929555B2 (en) Systems and methods for securing data
US10148640B2 (en) Secured inter-application communication in mobile devices
US9292699B1 (en) Encrypted file storage
US8732462B2 (en) Methods and apparatus for secure data sharing
US11368292B2 (en) Securing data with symmetric keys generated using inaccessible private keys
US11728974B2 (en) Tenant-based database encryption
US10425224B1 (en) Identity confirmation using private keys
US11140142B2 (en) Method and system for authentication
US10484339B2 (en) Pervasive data security
US10476855B1 (en) Identity confirmation using private keys
US11431481B2 (en) System for securing memory dumps
US11522686B2 (en) Securing data using key agreement
US11552802B2 (en) Stateless mutual authentication between services
JP2023534970A (ja) 鍵共有を使用するデータのセキュア化
US10778718B2 (en) Phishing detection and prevention
US10374794B1 (en) Secure transmission of tokens using private key fragments
US11163910B2 (en) Methods and systems for data migration

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180905

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190717

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190903

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20191203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20200203

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200407

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200430

R150 Certificate of patent or registration of utility model

Ref document number: 6700294

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250