(57)【要約】  プロセッサのトラステッドエグゼキューション環境（ＴＥＥ）の中でデータを処理するための、システムが提供される。システムは、パートナのアイデンティティを検証して、アイデンティティの前記検証に応じてパートナに通信鍵を発行するための、トラストマネージャユニットと、通信鍵を用いて暗号化されるパートナからの暗号化されたデータを受信するための、少なくとも１つのインタフェースと、ストレージ鍵を有し、ＴＥＥの中で暗号化されたデータの不正アクセスを防止するための、暗号化されたデータを記憶するための、ＴＥＥの中のセキュアデータベースと、暗号化されたデータを解読および解析して解読データに基づいて推奨を生成するための、推奨エンジンと、を含むことができる。【選択図】図１
2021533435.tif 000002
【特許請求の範囲】
【請求項１】
単離されたデータ処理サブシステムを維持しているトラステッドエグゼキューション環境のためのコンピュータ実装システムであって、
オペレーティングシステムおよびカーネルシステムの両方にとってアクセスできないように暗号化されている保護されたメモリ領域を有するコンピュータ可読メモリであって、前記保護されたメモリ領域は少なくともデータストレージ領域と前記単離されたデータ処理サブシステムを維持しているデータ処理サブシステム記憶領域とを含む、コンピュータ可読メモリと、
コンピュータ可読キャッシュメモリと、
セキュアエンクレーブデータプロセッサであって、
複数の対応するパートナコンピューティング装置から１つ以上のデータセットを別々に受信するように構成されているパートナデータレシーバであって、前記１つ以上のデータセットのそれぞれは前記パートナコンピューティング装置のそれぞれに対応する秘密鍵によってデジタル署名され、前記パートナデータレシーバは前記パートナコンピューティング装置の前記デジタル署名を有効性確認するように構成されており、
前記パートナデータレシーバは、（ｉ）前記保護されたメモリ領域の一部を前記コンピュータ可読キャッシュメモリにロードして、（ｉｉ）前記１つ以上の有効性確認されたデータセットを前記保護されたメモリ領域の前記データストレージ領域の前記ロードされた部分に記録して、（ｉｉｉ）前記記録の後に前記保護されたメモリ領域の前記部分をアンロードして暗号化するように構成されている、
パートナデータレシーバと、
クエリデータメッセージを前記データ処理サブシステムに送信して、前記保護されたメモリ領域に記憶された前記１つ以上のデータセットに基づいて生成される前記データ処理サブシステムによって生成された出力データ構造を受信するように構成されているデータ処理サブシステムインタラクションエンジンと
を提供するように構成されているセキュアエンクレーブデータプロセッサと
を含む、コンピュータ実装システム。
【請求項２】
前記単離されたデータ処理サブシステムが、前記クエリデータメッセージに応答して前記出力データ構造を生成するために協力して作動する一連の相互接続されたコンピューティングノードを含む単離された機械学習データモデルアーキテクチャを維持し、前記相互接続されたコンピューティングノードは、前記複数のパートナコンピューティング装置の少なくとも２つのパートナコンピューティング装置からのデータを表す訓練セットまたは有効性確認セットとして、前記保護されたメモリ領域の前記データストレージ領域の前記１つ以上の有効性確認されたデータセットの少なくとも一部を使用して多くの訓練エポックにわたって訓練されている、動的に修正された関数を表わす、一連の重み付けおよびフィルタを含み、前記クエリデータメッセージは前記動的に修正された関数を起動して前記出力データ構造を生成する、請求項１に記載のシステム。
【請求項３】
前記パートナデータレシーバが、前記１つ以上の対応するパートナコンピューティング装置のパートナコンピューティング装置にそれぞれ対応する公開／秘密鍵対を生成し、パートナコンピューティング装置に対応する前記秘密鍵を前記パートナコンピューティング装置に送信するようにさらに構成されている、請求項１に記載のシステム。
【請求項４】
前記保護されたメモリ領域を有する前記コンピュータ可読メモリがＤＲＡＭに記憶されている、請求項１に記載のシステム。
【請求項５】
前記保護されたメモリ領域を解読して前記コンピュータ可読キャッシュメモリに入れるために必要な前記鍵が、前記セキュアエンクレーブデータプロセッサの中に記憶されており、前記セキュアエンクレーブデータプロセッサの外部からアクセスできない、請求項１に記載のシステム。
【請求項６】
前記保護されたメモリ領域を解読して前記コンピュータ可読のキャッシュメモリに入れるために必要な前記鍵が、最初は臨時語によって生成されて、前記臨時語は前記セキュアエンクレーブデータプロセッサの中に記憶されており、前記セキュアエンクレーブデータプロセッサの外部からはアクセスできない、請求項１に記載のシステム。
【請求項７】
リモート認証プロセスはセキュアエンクレーブデータプロセッサによって周期的に行われて、前記システムのセキュリティを有効性確認し、前記リモート認証プロセスは、セキュアエンクレーブデータプロセッサにディフィー  ヘルマンメッセージを含むリモート認証ペイロードを送信することを含む、請求項１に記載のシステム。
【請求項８】
リモート認証プロセスはセキュアエンクレーブデータプロセッサによって周期的に行われて、前記システムのセキュリティを有効性確認し、前記リモート認証プロセスは、前記セキュアエンクレーブデータプロセッサがリモート認証トランスクリプトデータ構造を生成して、署名付きチャレンジペイロードおよび新しいディフィー  ヘルマンメッセージペイロードとともに前記リモート認証トランスクリプトデータ構造を送信することを含む、請求項１に記載のシステム。
【請求項９】
前記セキュアエンクレーブデータプロセッサが、
１つ以上のセキュアエンクレーブサブプロセッサを提供して、前記１つ以上のセキュアエンクレーブサブプロセッサのそれぞれに前記保護されたメモリ領域の区画を送信するように構成された、区画コントローラエンジンであって、
前記１つ以上のセキュアエンクレーブサブプロセッサは、前記機械学習データモデルアーキテクチャのローカルコピーを使用して前記保護されたメモリ領域の対応する区画を処理して、１つ以上のパラメータ更新データ構造を生成するように構成されている、
区画コントローラエンジン
と、
前記１つ以上のセキュアエンクレーブサブプロセッサのそれぞれから、前記１つ以上のパラメータ更新データ構造を受信して、前記１つ以上のパラメータ更新データ構造を処理して、前記機械学習データモデルアーキテクチャの少なくとも１つのパラメータを精緻化するように構成されている区画集約エンジンであって、前記機械学習データモデルアーキテクチャは、前記１つ以上のセキュアエンクレーブサブプロセッサに配布されて前記機械学習データモデルアーキテクチャの前記対応するローカルコピーを更新するためのものである、区画集約エンジンと
を提供するように構成されている、請求項２に記載のシステム。
【請求項１０】
互いの間で直接１つ以上のパラメータ更新データ構造を送信して前記機械学習データモデルアーキテクチャの前記対応するローカルコピーを更新するように構成されている第１のセキュアエンクレーブサブプロセッサおよび第２のセキュアエンクレーブサブプロセッサを含む、少なくとも２つのセキュアエンクレーブサブプロセッサがある、請求項９に記載のシステム。
【請求項１１】
単離されたデータ処理サブシステムを維持しているトラステッドエグゼキューション環境のためのコンピュータ実装方法であって、前記方法は、前記トラステッドエグゼキューション環境を実装しているコンピューティング装置のオペレーティングシステムおよびカーネルシステムにとってアクセスできないように暗号化された保護されたメモリ領域を有するコンピュータ可読メモリ上で動作し、前記保護されたメモリ領域は、少なくとも、データストレージ領域および前記単離されたデータ処理サブシステムを維持しているデータ処理サブシステムストレージ領域を含んでおり、前記方法は、
１つ以上の対応するパートナコンピューティング装置から１つ以上のデータセットを受信することであって、前記１つ以上のデータセットは前記パートナコンピューティング装置のそれぞれに対応する秘密鍵によってデジタル署名されている、受信することと、
前記パートナコンピューティング装置の前記デジタル署名を有効性確認することと、
前記保護されたメモリ領域の一部をコンピュータ可読キャッシュメモリにロードすることと、
前記１つ以上の有効性確認されたデータセットを前記保護されたメモリ領域の前記データストレージ領域の前記ロードされた部分に記録することと、
前記登録の後に前記保護されたメモリ領域の前記部分をアンロードして暗号化することと、
クエリデータメッセージを前記データ処理サブシステムに送信することと、
入力として前記１つ以上の対応するパートナコンピューティング装置またはその集合から前記１つ以上のデータセットを受信して出力データ構造を生成する処理関数に基づいて前記クエリデータメッセージを処理することと
を含む、コンピュータ実装方法。
【請求項１２】
前記単離されたデータ処理サブシステムが、前記クエリデータメッセージに応答して前記出力データ構造を生成するために協力して作動する一連の相互接続されたコンピューティングノードを含む単離された機械学習データモデルアーキテクチャを維持し、前記相互接続されたコンピューティングノードは、訓練セットまたは有効性確認セットとして、前記保護されたメモリ領域の前記データストレージ領域への前記１つ以上の有効性確認されたデータセットの少なくとも一部を使用して多くの訓練エポックにわたって訓練されている、動的に修正された関数を表わす、一連の重み付けおよびフィルタを含み、
処理関数に基づく前記クエリデータメッセージの前記処理は、前記動的に修正された関数を前記クエリデータメッセージに適用して前記出力データ構造を生成することを含む、請求項１１に記載の方法。
【請求項１３】
前記パートナデータレシーバが、前記１つ以上の対応するパートナコンピューティング装置のパートナコンピューティング装置にそれぞれ対応する公開／秘密鍵対を生成するようにさらに構成されており、前記方法は、
パートナコンピューティング装置に対応する前記秘密鍵を前記パートナコンピューティング装置に送信すること
を含む、請求項１１に記載の方法。
【請求項１４】
前記保護されたメモリ領域を有する前記コンピュータ可読メモリがＤＲＡＭに記憶されている、請求項１１に記載の方法。
【請求項１５】
前記保護されたメモリ領域を解読して前記コンピュータ可読キャッシュメモリに入れるために必要な前記鍵は、セキュアエンクレーブデータプロセッサの中に記憶されており、前記セキュアエンクレーブデータプロセッサの外部からアクセスできない、請求項１１に記載の方法。
【請求項１６】
前記保護されたメモリ領域を解読して前記コンピュータ可読キャッシュメモリに入れるために必要な前記鍵は、最初は臨時語によって生成されて、前記臨時語は前記セキュアエンクレーブデータプロセッサの中に記憶されており、前記臨時語はセキュアエンクレーブデータプロセッサの外部からはアクセスできない、請求項１１に記載の方法。
【請求項１７】
セキュリティ有効性確認のためにリモート認証プロセスを周期的に実行することを含み、前記リモート認証プロセスは、前記セキュアエンクレーブデータプロセッサにディフィー  ヘルマンメッセージを含むリモート認証ペイロードを送信することを含む、請求項１１に記載の方法。
【請求項１８】
セキュリティ有効性確認のためにリモート認証プロセスを周期的に実行することを含み、前記リモート認証プロセスは、前記セキュアエンクレーブデータプロセッサによって、リモート認証トランスクリプトデータ構造を生成して、前記１つ以上のコンピューティング装置に署名済みチャレンジペイロードおよび新たなディフィー  ヘルマンメッセージペイロードとともに前記リモート認証トランスクリプトデータ構造を送信することを含む、請求項１１に記載の方法。
【請求項１９】
１つ以上のセキュアエンクレーブサブプロセッサを提供して、前記１つ以上のセキュアエンクレーブサブプロセッサのそれぞれに前記保護されたメモリ領域の区画を送信することと、
前記機械学習データモデルアーキテクチャのローカルコピーを使用して前記保護されたメモリ領域の前記対応する区画を処理して、１つ以上のパラメータ更新データ構造を生成することと、
前記１つ以上のセキュアエンクレーブサブプロセッサのそれぞれから、前記１つ以上のパラメータ更新データ構造を受信することと、
前記１つ以上のパラメータ更新データ構造を処理して前記機械学習データモデルアーキテクチャの少なくとも１つのパラメータを精緻化することと、
精緻化された少なくとも１つのパラメータを前記１つ以上のセキュアエンクレーブサブプロセッサに配布して前記機械学習データモデルアーキテクチャの前記対応するローカルコピーを更新することと
を含む、請求項１２に記載の方法。
【請求項２０】
プロセッサによって実行されると、単離されたデータ処理サブシステムを維持しているトラステッドエグゼキューション環境のためのコンピュータ実装方法を前記プロセッサに実行させるマシン解釈可能な命令を記憶している、非一時的コンピュータ可読媒体であって、前記方法は、前記トラステッドエグゼキューション環境を実装しているコンピューティング装置のオペレーティングシステムおよびカーネルシステムにとってアクセスできないように暗号化された保護されたメモリ領域を有するコンピュータ可読メモリ上で動作し、前記保護されたメモリ領域は、少なくとも、データストレージ領域および前記単離されたデータ処理サブシステムを維持しているデータ処理サブシステムストレージ領域を含んでおり、前記方法は、
１つ以上の対応するパートナコンピューティング装置から１つ以上のデータセットを受信することであって、前記１つ以上のデータセットは前記パートナコンピューティング装置のそれぞれに対応する秘密鍵によってデジタル署名されている、受信することと、
前記パートナコンピューティング装置の前記デジタル署名を有効性確認することと、
前記保護されたメモリ領域の一部をコンピュータ可読キャッシュメモリにロードすることと、
前記１つ以上の有効性確認されたデータセットを前記保護されたメモリ領域の前記データストレージ領域の前記ロードされた部分に記録することと、
前記登録の後に前記保護されたメモリ領域の前記部分をアンロードして暗号化することと、
クエリデータメッセージを前記データ処理サブシステムに送信することと、
入力として前記１つ以上の対応するパートナコンピューティング装置またはその集合から前記１つ以上のデータセットを受信して出力データ構造を生成する処理関数に基づいて前記クエリデータメッセージを処理することと
を含む、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
相互参照
本出願は、すべてが「ＳＹＳＴＥＭ  ＡＮＤ  ＭＥＴＨＯＤ  ＦＯＲ  ＳＥＣＵＲＥ  ＥＬＥＣＴＲＯＮＩＣ  ＴＲＡＮＳＡＣＴＩＯＮ  ＰＬＡＴＦＯＲＭ」と題する、２０１８年５月２８日に出願の米国仮出願第６２／６７７,１３３号、２０１８年６月２８日に出願の米国仮出願第６２／６９１,４０６号、２０１８年７月１２日に出願の米国仮出願第６２／６９７,１４０号、２０１９年２月１５日に出願の米国仮出願第６２／８０６,３９４号、および、２０１９年３月２７日に出願の米国仮出願第６２／８２４,６９７号の、非暫定的で、かつこれらに対する優先権を含んですべての利益を主張するものである。
【０００２】
上記の出願の内容は、全体として本願明細書に引用したものとする。
【０００３】
本開示は、概して電子データ処理の分野に、そして、特に電子トランザクションデータのセキュア処理（ｓｅｃｕｒｅ  ｐｒｏｃｅｓｓｉｎｇ、セキュリティ保護された処理）に関する。
【背景技術】
【０００４】
消費者は、金融商品（クレジットカードやロイヤルティ会員カードなど）を使用して購入を行う際に、取引データなどのプライベート情報が消費者からの明示的な同意なしに他者にさらされないように、金融機関やベンダーにあるレベルの信頼を置いている。また同時に、消費者は、個人化されていない推奨よりも個人化された申し出によく反応する。
【０００５】
銀行および小売商は通常、それらにとって消費者プライバシーの保護が最大の重要事項であるので、他の組織と消費者データを共有することに積極的ではない。加えて、消費者からの明確な同意があったとしても、銀行および小売商は、それらが共有データのコントロールまたは所有権を失う可能性があるので、相変わらず他者と消費者データを共有するのを嫌う。
【０００６】
データ処理および変換の間、プライバシーの保護を確実にしたいという要望がある。しかしながら、プライバシーの増大は、暗号化および解読の追加ステップがさらなる基盤要求ならびに性能に対する技術的な制約につながる可能性があるので、技術的なチャレンジにつながる。
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本明細書において説明されている実施形態は、プライバシーおよびセキュリティの改善と関連した技術的な課題を解決するのに適している技術的解決策を目的とする。多くの別個のコンピューティングシステムから１つ以上のデータセットを受信するように構成されている、データアグリゲータコンピューティングシステムを説明する。
【課題を解決するための手段】
【０００８】
いくつかの実施形態では、追加の暗号化によって計算の負担が増加するので、特に暗号化のレベルが増加した下で作動する環境におけるコンピューティングリソース制約に関する課題を解決するための特定の特徴が説明されている。
【０００９】
さらに、いくつかの実施形態では、別個のセキュアメモリ領域が利用されて、このような領域は、それがカーネルプロセスまたはオペレーティングシステムなどの他のコンピューティングサブシステムから物理的に、または、電子的に分離され得るので、限定されたメモリ空間である（例えば、サーバ装置上のルートへのアクセスを有する管理者さえ、保護されたメモリ領域に記憶される基本的データにアクセスすることができない）。したがって、セキュアエンクレーブがデータ処理または機械学習を実行するための非常に高いセキュリティ環境を提供するので、悪意のある攻撃またはデータ侵害の可能性およびそれに対する露出は著しく減じられる。
【００１０】
これらのデータセットは、別個のコンピューティングシステムの組織の機密情報を表すことができ、これは、組織が他のコンピューティングシステムに、またはデータアグリゲータコンピューティングシステムの管理者にさえアクセス可能であることを望まないものである。プライバシーおよびセキュリティ対策を強化した改良された処理アーキテクチャの動作に関して、セキュアエンクレーブなどのセキュア処理技術を利用するシステム、方法およびコンピュータ可読媒体が説明される。いくつかの実施形態では、機械学習データモデルアーキテクチャおよびそれらのコンポーネントもセキュアメモリ領域に記憶されるので、それらは相互作用することやアクセスすることができない。
【００１１】
上述のとおり、これらの強化されたプライバシーおよびセキュリティ対策は、例えば、暗号化および解読要件が様々な状況において利用可能な全体のコンピューティングリソースを減らすので、さらなる技術的なチャレンジにつながる。コンピューティングリソースは、特定の態様がセキュアプロセッサだけを用いて実行されることを必要として、データ要素は、セキュア処理環境外である間は、暗号化されたフォーマットだけに保存されることを必要とする場合がある、という要件により拘束され得る。セキュア処理は、適切なアクセス権を有することのない関係者が機械学習データアーキテクチャにおいて使われている基本的データの１つ以上の部分にアクセスすることができないように、全体的な計算ステップを保護することを目的としている。
【００１２】
受信データセットは、それがオペレーティングシステムおよびカーネルシステムにとって到達できないその結果、暗号化される保護されたメモリ領域に記憶される。保護されたメモリ領域は、データを処理して出力データ構造を生成する単離されたデータ処理サブシステムを維持しているデータストレージ領域およびデータ処理サブシステム記憶領域を少なくとも含む。例示の実施形態において、データ処理サブシステムは、出力を生成する際にクエリ要求のコンポーネントおよび／または記憶されたデータセットの要素を利用する処理関数を適用する。
【００１３】
簡略例として、データセットがベンチマーキングのために使われることができて、ベンチマーク統計についてのクエリ要求に応答して、集約データセットはクエリされて応答を得ることができる（例えば、どの関係者も保護されたメモリ領域にアクセスすることができないので基本的データセットのプライバシーおよびセキュリティを維持しながら、データソースＡからだけでなく、データソースＢ、Ｃ、Ｄからのデータセットも利用する）。保護されたメモリデータ領域は、例えば、セキュアエンクレーブデータプロセッサにしか分からず、セキュアエンクレーブデータプロセッサがあるシステムの管理者さえも含んで他のいかなる関係者にも、あるいはセキュアエンクレーブデータプロセッサがあるシステムのオペレーティングシステムまたはカーネルプロセスを通してもアクセスできない、鍵機構で暗号化されることによって、保護することができる。
【００１４】
いくつかの更なる実施形態では、専門キャッシュメモリが提供され、そこでは、保護されたメモリ領域がロード可能であり、データセットがロードされて、それから登録の後に、暗号化することができ、データセットは保護されたメモリ領域にロードした後にはもはやアクセスできない。
【００１５】
第２の態様では、処理は、例えば、その上に記憶されるデータセットに持続してそれを通して反復的に訓練を受ける、安全に記憶された機械学習データモデルアーキテクチャによって実行される。本実施形態において、機械学習データモデルアーキテクチャ（例えば、隠れ層、コンピューティングノード、相互接続、ノードを表わすデータ構造）の基本的コンポーネントもまた、学習データモデルアーキテクチャの基本的コンポーネントがまた保護されたメモリ領域に維持されるかまたは記憶されるので、セキュアエンクレーブデータプロセッサがあるシステムのオペレーティングシステムまたはカーネルプロセスを通して利用することはできない。相互に連結したコンピューティングノードは協力して作動して、多くの訓練エポックにわたって訓練されている動的に修正されたアクティブ化関数を通して、（例えば、損失関数を最適化することを鑑みた勾配降下を通じた学習によって）クエリデータメッセージに応答する出力データ構造を生成する。
【００１６】
一実施形態において、セキュアエンクレーブ（例えば、ハードウェアもしくはソフトウェアまたはそれらの組み合わせである単離されたデータプロセッサ）は、機械学習サブタスクを実行するために利用される。セキュアエンクレーブは、いくつかの実施形態では、基本的データに安全にアクセスするために用いられる暗号化鍵を記憶することができる。
【００１７】
セキュアエンクレーブ処理はコンピューティングリソース制約に関して制約につながり、それにより性能および速度の低下に至る可能性がある。セキュアでない処理方法に対して、暗号化およびアクセス制限要件によって結果として複雑さが増加する。
【００１８】
したがって、本明細書において様々な実施形態に記載されているように、強力なプライバシーおよび強固なセキュリティを有する機械学習データアーキテクチャを目的とする方法が提案される。機械学習アーキテクチャは、いくつかの実施形態では、複数の相互に連結したセキュアエンクレーブ処理区画（例えば、別個のセキュアエンクレーブプロセッサ）を含み、それが別個の訓練モデルアーキテクチャを処理して、維持する。
【００１９】
データが各区画を通して処理されるので、別個のモデルアーキテクチャが更新されて、更新されたモデルアーキテクチャパラメータデータ構造を生成する。区画のそれぞれからの更新されたモデルアーキテクチャパラメータデータ構造は、パラメータ集約ユニット（例えば、それ自身のエンクレーブであることができるパラメータサーバ）で集約される。パラメータ集約ユニットは、集約訓練モデルアーキテクチャの更新を保存し、それがそれからセキュア処理流儀に再伝播されるように構成される。いくつかの実施形態のこのアーキテクチャは、セキュアエンクレーブ区画のスループット低下に関連した技術的な制約を克服する際の助けとなる。例えば、いくつかのセキュアエンクレーブ区画は、約９０ＭＢ以下のモデルアーキテクチャサイズに限られている。したがって、多くの調整された区画は協力して作動して、全体のセキュア処理を提供する。
【００２０】
いくつかの実施形態において説明したように、機械学習およびセキュア学習のためのアプリケーションは、例えば、識別子の訓練セットとの類似点に基づいてクラスタを識別するためのカスタマ識別子のサブセットを含む機械学習モデルアーキテクチャによる、データ構造の生成を含む。例えば、識別子の訓練セットは高収益のロイヤルカスタマを含むことができ、訓練モデルアーキテクチャを利用して、訓練セットの中にはないが潜在的ターゲットとして留意すべきであり得る、ターゲットカスタマを識別することができる。この例では、セキュアな機械学習データアーキテクチャを用いたセキュア処理を使用して、機密カスタマデータを含み得る基本的データの不正アクセスが不正ユーザによりなされていないことを確実にする。セキュアエンクレーブプロセッサを用いて、例えば、小売商が、特にこのような小売商がカスタマプロファイルの管理者でない場合に、カスタマプロファイルの全体図を有しないことを確実にする。
【００２１】
別の実施形態では、エンクレーブ区画はまた、並行オペレーションの間、互いに相互接続を有するように構成され、その結果、エンクレーブ区画は、アグリゲータプロセッサから訓練モデルの更新されたパラメータを受信することとは対照的に、各々の間で決定パラメータを共有することができる。
【００２２】
１つの態様によれば、プロセッサのトラステッドエグゼキューション環境（Ｔｒｕｓｔｅｄ  Ｅｘｅｃｕｔｉｏｎ  Ｅｎｖｉｒｏｎｍｅｎｔ、ＴＥＥ）の中でデータを処理するための、システムが提供される。システムは、パートナのアイデンティティを検証して、アイデンティティの前記検証に応じてパートナに通信鍵を発行するための、トラストマネージャユニットと、通信鍵を用いて暗号化されるパートナからの暗号化されたデータを受信するための、少なくとも１つのインタフェースと、ストレージ鍵を有し、ＴＥＥの中で暗号化されたデータの不正アクセスを防止するための、暗号化されたデータを記憶するための、ＴＥＥの中のセキュアデータベースと、暗号化されたデータを解読および解析して解読データに基づいて推奨を生成するための、推奨エンジンと、を含むことができる。
【００２３】
別の態様によれば、プロセッサのトラステッドエグゼキューション環境（Ｔｒｕｓｔｅｄ  Ｅｘｅｃｕｔｉｏｎ  Ｅｎｖｉｒｏｎｍｅｎｔ、ＴＥＥ）の中でデータを処理するための、コンピュータ実装方法が提供される。方法は、パートナのアイデンティティを検証することと、アイデンティティの前記検証に応じてパートナに通信鍵を発行することと、通信鍵を用いて暗号化されるパートナからの暗号化されたデータを受信することと、ストレージ鍵を有する暗号化されたデータを記憶してＴＥＥの中の暗号化されたデータの不正アクセスを防止することと、暗号化されたデータを解読および解析して解読データに基づいて推奨を生成することとを含むことができる。
【００２４】
別の態様によれば、保護されたメモリ領域を有するコンピュータ可読メモリは、ＤＲＡＭに記憶される。
【００２５】
別の態様によれば、保護されたメモリ領域を解読してコンピュータ可読キャッシュメモリに入れるために必要な鍵は、セキュアエンクレーブデータプロセッサの中に記憶されており、セキュアエンクレーブデータプロセッサの外部からアクセスできない。
【００２６】
別の態様によれば、保護されたメモリ領域を解読してコンピュータ可読キャッシュメモリに入れるために必要な鍵は、最初は臨時語によって生成されて、臨時語はセキュアエンクレーブデータプロセッサの中に記憶されており、セキュアエンクレーブデータプロセッサの外部からはアクセスできない。
【００２７】
別の態様によれば、リモート認証プロセスはセキュアエンクレーブデータプロセッサによって周期的に行われて、システムのセキュリティを有効性確認し、リモート認証プロセスは、セキュアエンクレーブデータプロセッサにディフィー  ヘルマン（Ｄｉｆｆｉｅ  Ｈｅｌｌｍａｎ）メッセージを含むリモート認証ペイロードを送信することを含んでいる。
【００２８】
別の態様によれば、リモート認証プロセスはセキュアエンクレーブデータプロセッサによって周期的に行われて、システムのセキュリティを有効性確認し、リモート認証プロセスは、セキュアエンクレーブデータプロセッサがリモート認証トランスクリプトデータ構造を生成して、署名付きチャレンジペイロードおよび新しいディフィー  ヘルマンメッセージペイロードとともにリモート認証トランスクリプトデータ構造を送信することを含んでいる。
【００２９】
別の態様によれば、セキュアエンクレーブデータプロセッサは、１つ以上のセキュアエンクレーブサブプロセッサを提供し、１つ以上のセキュアエンクレーブサブプロセッサのそれぞれに保護されたメモリ領域の区画を送信するように構成されている、区画コントローラエンジンであって、１つ以上のセキュアエンクレーブサブプロセッサは、機械学習データモデルアーキテクチャのローカルコピーを使用して保護されたメモリ領域の対応する区画を処理して１つ以上のパラメータ更新データ構造を生成するように構成されている、区画コントローラエンジンと、１つ以上のセキュアエンクレーブサブプロセッサのそれぞれから、１つ以上のパラメータ更新データ構造を受信して、１つ以上のパラメータ更新データ構造を処理して、機械学習データモデルアーキテクチャの少なくとも１つのパラメータを精緻化するように構成されている区画集約エンジンであって、機械学習データモデルアーキテクチャは、１つ以上のセキュアエンクレーブサブプロセッサに配布されて機械学習データモデルアーキテクチャの対応するローカルコピーを更新する、区画集約エンジンと、を提供するように構成されている。
【００３０】
実施形態はここで、添付の図面を参照して、例としてのみ説明される。
【図面の簡単な説明】
【００３１】
【図１】いくつかの実施形態による、セキュア消費者データを処理するための例示のプラットフォームを示しているブロック図である。
【図２Ａ】いくつかの実施形態による、セキュアトランザクションデータを処理するためのプラットフォーム上の例示の（仮想）クリーンルームの概略図である。
【図２Ｂ】いくつかの実施形態による、セキュアトランザクションデータを処理するためのプラットフォーム上の別の例示のクリーンルームの概略図である。
【図３】いくつかの実施形態による、プラットフォーム上のクリーンルームの別の概略図である。
【図４】いくつかの実施形態による、例示のプラットフォームのパートナとトラストマネージャの間のリモート認証プロセスを示している概略図である。
【図５】いくつかの実施形態による、例示のプラットフォームからのセキュリティおよび暗号化ユニットの概略図である。
【図６】いくつかの実施形態による、例示のプラットフォームのさらに別の概略図である。
【図７】いくつかの実施形態による、例示のプラットフォームからのデータモデル化ユニットおよびデータストレージユニットの概略図である。
【図８】いくつかの実施形態による、例示のプラットフォームからのマスターノードおよびワーカーノードの概略図である。
【図９】いくつかの実施形態による、様々なノードのための例示のジョブ割り当てを示す。
【図１０】いくつかの実施形態による、セキュアエンクレーブのための例示の記憶構造を示す。
【図１１Ａ】いくつかの実施形態による、例示のリソース管理構造を示す。
【図１１Ｂ】いくつかの実施形態による、リソース管理データ処理のための例示の概略図を示す。
【図１２】いくつかの実施形態による、例示のプラットフォームを実装するために用いるコンピューティング装置の概略図である。
【図１３】いくつかの実施形態による、例プラットフォームによって実行される例示のプロセスを示す。
【図１４】いくつかの実施形態による、セキュアトランザクションデータを処理するためのプラットフォーム上の例示のクリーンルームの別の概略図を示す。
【図１５】いくつかの実施形態による、セキュアトランザクションデータを処理するためのクリーンルームを含む分散システムのさらに別の概略図を示す。
【図１６】リソースマネージャとしてＹＡＲＮを用いてデータ解析を実装している例示のＳｐａｒｋフレームワークを示す。
【図１７】Ｓｐａｒｋフレームワークの下での例示のエグゼキュータ構造を示す。
【図１８】Ｓｐａｒｋフレームワークの下でドライバアプリケーションと協力している例示のエグゼキュータ構造を示す。
【図１９】いくつかの実施形態による、機械学習アーキテクチャおよびデータフローの例示のブロック図である。
【図２０】異なる層のカスタマへのリソース割り当てを示す例示の図である。
【図２１】いくつかの実施形態による、２つの異なるデータセットのカスタマの間においてクロスオーバーおよびターゲティング機会の領域を示している例示のベン図である。
【図２２】いくつかの実施形態による、生成された推奨を示しているグラフィックウィジェットを示すのに適しているグラフィカルユーザインタフェースの例示の描写である。
【図２３】いくつかの実施形態による、生成された複数の推奨を示しているグラフィックウィジェットバーを示すのに適しているグラフィカルユーザインタフェースの例示の描写である。
【図２４】いくつかの実施形態による、例示の生産環境およびデータフローの図である。
【発明を実施するための形態】
【００３２】
本明細書において記載されている例示的実施形態の完全な理解を提供するために多数の具体的な詳細が記載されていることはいうまでもない。しかしながら、本明細書において説明されている実施形態がこれらの具体的な詳細なしで実践することができることは、当業者によってよく理解されよう。さらに、本説明は、いかなる形であれ、本明細書において説明されている実施形態の範囲を制限しているのではなく、むしろ本明細書において説明されている様々な例示の実施形態の実装を単に説明しているだけであると考えるべきである。
【００３３】
実施形態は、データセットの改良されたセキュリティおよびプライバシーに適している専門コンポーネントおよび回路を有する、コンピュータを含む技術的デバイスを用いて実施される。本明細書において述べるように、実施形態は、セキュアエンクレーブデータプロセッサおよび、保護されたメモリ領域を有するコンピュータ可読メモリと連動したその使用法を目的としている。
【００３４】
セキュアエンクレーブデータプロセッサは、保護されたメモリ領域とのインタフェースを有して、いくつかの実施形態では、パートナ組織またはデータソースに特有の鍵で暗号化することができる特定のデータソースから（例えば、パートナ組織から）受信したデータセットを、安全に記憶して、暗号化する。一実施形態において、鍵は、事前生成することができて、パートナ組織またはデータソースと関連付けることができる。別の実施形態では、システムは、新規な鍵がデータセットを保護されたメモリ領域へロードするために必要であるときに、鍵生成セレモニーを行う鍵生成器を含むことができる。
【００３５】
本明細書において述べるように、データセットは特定のコンピューティング装置またはデータソースに固有にロードされる。いくつかの実施形態では、ロードは一方向であり、その結果、鍵は破壊されるか、または、暗号化鍵は特定のコンピューティング装置もしくはデータソース戻して提供されることがない。異なる実施形態では、一方向ロードは、データ処理または機械学習データモデルアーキテクチャを訓練するか、またはその中に取り込むためにロードされるデータを使用することができ、その後にデータが削除される（例えば、データは訓練の用途にだけ使われる）。
【００３６】
他の実施形態では、ロードは双方向とすることができ、これにより、特定のコンピューティング装置またはデータソースがそれ自身のデータセットを抽出するかまたは以前提供されたデータセットのデータを修正することが可能である。別の実施形態では、出力データ構造はデータセットのデータに対する修正（例えば、メタデータでデータセットを拡張）とすることができ、データセットの抽出を使用してデータの拡張した、または改良したバージョンを生成することができる（例えば、カスタマデータが提供されて、推定されたカスタマタイプ分類文字列を示している拡張カスタマデータが抽出される）。いくつかの実施形態では、機械学習データモデルアーキテクチャは、ロードするかまたはアンロードすることもできて、その結果、いかなる関係者にも基本的データセットへのアクセスを提供せずに、訓練されていない機械学習データモデルアーキテクチャを中にロードすることができ、訓練された機械学習データモデルアーキテクチャを外へ抽出することができる。
【００３７】
消費者は、金融商品（クレジットカードやロイヤルティ会員カードなど）を使用して購入を行う際に、取引データなどのプライベート情報が消費者からの明示的な同意なしに他者にさらされないように、金融機関やベンダーに特定のレベルの信頼を置いている。また同時に、消費者は、一般的な推奨よりも個人化された申し出によく反応する。銀行および小売商は通常、それらにとって消費者プライバシーの保護が最大の重要事項であるので、他の組織と消費者データを共有することに積極的ではない。
【００３８】
加えて、消費者からの明確な同意があったとしても、銀行および小売商は、それらが共有データのコントロールまたは所有権を失う可能性があるので、相変わらず他者と消費者データを共有するのを嫌う。特定のデータソースから受信したデータセットは、保護されたメモリ領域に記憶されて、その結果、他者はデータセットにアクセスすることができないが、データセットは、出力データ構造の形でカプセル化されたコンピュータ生成された洞察および／または値の生成ためのデータ処理サブシステムによって、保護されたメモリ領域の中でアクセス可能である。いくつかの実施形態では、出力データ構造は、訓練された機械学習データモデルアーキテクチャも含むことができる。
【００３９】
出力データ構造はクエリデータメッセージに応答して生成することができ、それは、いくつかの態様では、システムが処理する新情報を含むことができるか、または保護されたメモリ領域のその上に記憶される集約された既存情報を対象とするクエリ要求であることができる。
【００４０】
例えば、クエリデータメッセージは仮定的カスタマプロファイルを対象としたベクトルを提供することができて、訓練された機械学習データモデルアーキテクチャは、訓練された機械学習データモデルアーキテクチャが仮定的カスタマプロファイルは提案された申し出に従うと予測するかどうかを示しているフィールドを記憶している、データ構造を出力することができる。
【００４１】
他の例では、クエリデータメッセージはいかなる追加情報も含むことができないが、むしろ、保護されたメモリ領域に記憶された集約された情報に基づくか、または、訓練された機械学習データモデルアーキテクチャに基づくクエリを含む。例えば、クエリデータメッセージは、「カスタマがワシントンＤ．Ｃ．地区の小売店で過ごす平均的時間は一般に米国内の平均的時間に対して、どれくらいか？」、または、訓練された機械学習データモデルアーキテクチャがある場合では、「いくつのカスタマのクラスタが、ワシントンＤ．Ｃ．地区のカスタマの総集約トランザクション動作に基づいて識別されるか？」（例えば、教師無しモデルを用いて多くのクラスタを識別する場合）ということを目的とすることができる。
【００４２】
トランザクションデータなどの個人的な消費者データを処理するためのセキュアプラットフォームが、本明細書において説明されている。いくつかの実施形態では、プラットフォームは参加しているパートナ（例えば、銀行および小売商）とインタフェースを有して、各パートナのそれぞれのシステムから、トランザクションデータ（「ＴＸＮデータ」とも呼ばれる）を含む消費者データを受信することができる。消費者データは、暗号化鍵で暗号化することができる。
【００４３】
本プラットフォームは受信した消費者データをセキュア領域（「クリーンルーム」とも呼ばれる）に記憶することができて、そこで、続いて消費者データは解読され解析されて、各消費者のための個人化された提案を生成する。パートナから受信した消費者データは、明記された目的のために、すなわち、解析を実行して申し出を生成する目的のために、クリーンルームによって行われない限り、他のいかなるユーザ、システムまたはプロセスによっても、アクセスすることも、解読することも、読み込むこともできない。このプラットフォームは、暗号化されたデータ上の解析の実行を可能にして、消費者データのコントロールおよび所有権の喪失または希薄化に関する銀行および小売商の懸念を向上させて、消費者データのプライバシーを保護するのに役立つ。いくつかの実施形態では、プラットフォームをホスティングしているコンピュータの所有者が、入力または出力データについてのあらゆるものを見たり推定することができないようにしてもよい。
【００４４】
いくつかの実施形態では、クリーンルームはプロセッサ（例えば、ＣＰＵ）のトラステッドエグゼキューション環境（Ｔｒｕｓｔｅｄ  Ｅｘｅｃｕｔｉｏｎ  Ｅｎｖｉｒｏｎｍｅｎｔ、ＴＥＥ）の中の１つ以上のセキュアエンクレーブの中に実装されて、そこで、データモデルは訓練することができ、いかなるレベルの解析も実施するように実行することができる。クリーンルームの中に記憶されるデータの適切な暗号化および解読を確実にするための鍵となる管理能力も実施される。
【００４５】
本明細書において説明されている実施形態は、プライバシーおよびセキュリティの改善と関連した技術的な課題を解決するのに適している技術的解決策を目的とする。特に、プライバシーおよびセキュリティ対策を強化した改良された機械学習データアーキテクチャの動作に関して、セキュアエンクレーブなどのセキュア処理技術を利用するシステム、方法およびコンピュータ可読媒体が説明される。
【００４６】
上述のとおり、これらの強化されたプライバシーおよびセキュリティ対策は、例えば、暗号化および解読要件が様々な状況において利用可能な全体のコンピューティングリソースを減らすので、さらなる技術的なチャレンジにつながる。
コンピューティングリソースは、特定の態様がセキュアプロセッサだけを用いて実行されることを必要として、データ要素は、セキュア処理環境外である間は、暗号化されたフォーマットだけに保存されることを必要とする場合がある、という要件により拘束され得る。
【００４７】
図１は、いくつかの実施形態による、ネットワーク１５０上のセキュアな消費者データを受信して処理するための、例示の電子トランザクションプラットフォーム１００を示すブロック図である。消費者データは、銀行システム（複数可）１１２および小売商システム（複数可）１１３を含むことができるパートナシステム（複数可）１１５から受信することができる。図２および３は、プラットフォーム１００に実装される例示のクリーンルーム３００の概略図を提供する。
【００４８】
処理デバイス１０１はメモリ１０９の命令を実行して、各種コンポーネントまたはユニット１２０、１２１、１２２、１２３、１２４、１２５を構成することができる。処理デバイス１０１は、例えば、マイクロプロセッサもしくはマイクロコントローラ、デジタル信号処理（ＤＳＰ）プロセッサ、集積回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、再構成可能なプロセッサ、またはいかなるそれらの組み合わせとすることもできる。処理デバイス１０１は、メモリ１０９、データストレージ１０８および他の記憶１１１を含むことができる。いくつかの実施形態では、処理デバイス１０１は、トラステッドエグゼキューション環境（ｔｒｕｓｔｅｄ  ｅｘｅｃｕｔｉｏｎ  ｅｎｖｉｒｏｎｍｅｎｔ、ＴＥＥ）１０３として公知のセキュア領域を含む。ＴＥＥ１０３は、メモリ１０９およびデータストレージ１０８を含むことができて、様々なユニットおよびアプリケーションが実行することができて、データを処理して記憶することができる、単離された環境である。ＴＥＥ１０３の中で動作しているアプリケーションは、処理デバイス１０１の全能力を活用することができると共に、主オペレーティングシステム内のコンポーネントおよびアプリケーションから保護される。ＴＥＥ１０３の中のアプリケーションおよびデータは、処理デバイス１０１の所有者に対してさえ、不必要なアクセスおよび改竄から保護されている。いくつかの場合では、ＴＥＥ１０３の中の異なるアプリケーションおよびデータストレージは、必要に応じて、別々に分離して互いから保護されているようにすることができる。
【００４９】
いくつかの実施形態では、ＴＥＥ１０３の保護されたメモリ領域（例えば、セキュアデータウェアハウス１０８）は、暗号化を用いることにより単離される。この例では、暗号化鍵はＴＥＥ１０３自体の中で記憶されるのでそれが必要に応じてデータにアクセスすることができるが、基本的データは、サーバまたはカーネルプロセス上で動作しているオペレーティングシステムなどの他のコンポーネントによってアクセス可能ではない。代替の実施形態では、単離は、他のコンポーネントからの物理的または電気回路単離を用いることにより行われる。さらに別の代替実施形態では、物理および暗号化単離が利用される。
【００５０】
プラットフォーム１００のコンポーネントおよびデータがＴＥＥ１０３の中で保たれるので、それらはＴＥＥ１０３によって提供される単離およびセキュリティにより不正アクセスおよび改竄から十分に守られる。したがって、パートナシステム１１５は、それらの消費者データが他者によって不注意に漏洩されたりアクセスされないという確信を得る。後述するように、各パートナは、プラットフォーム１００に（例えば、認証プロセスを通して）いずれかのデータを発信する前に、ＴＥＥ１０３の中のプラットフォーム１００がセキュアでかつ改竄が無いことを検証することができる。したがって、パートナシステム１１５は、プラットフォーム１００に高レベルの信頼を置いており、処理して次に現在および将来のカスタマに対するターゲットを絞った推奨および申し出を受信するためのプラットフォーム１００に、それらの消費者データを送信することをより意欲的に行うことになる。
【００５１】
データストレージ１０８は、例えば、適切な容量の１つ以上のＮＡＮＯフラッシュメモリモジュールすることができるか、または、１つ以上の持続的コンピュータ記憶装置、例えばハードディスクドライブ、ソリッドステートドライブなどでもよい。いくつかの実施形態では、データストレージ１０８は、暗号化されたデータをホスティングするように構成されたセキュアデータウェアハウスを含む。
【００５２】
メモリ１０９は、コンピュータメモリ、例えば、スタティックランダムアクセスメモリ（ＳＲＡＭ）、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、電気光学メモリ、磁気光学メモリ、消去可能プログラム可能読取り専用メモリ（ＥＰＲＯＭ）および電気的消去可能プログラム可能読取り専用メモリ（ＥＥＰＲＯＭ）、強誘電性ＲＡＭ（ＦＲＡＭ（登録商標））などの組合せを含むことができる。
【００５３】
いくつかの実施形態では、ＴＥＥの中のデータは、データストレージ１０８、メモリ１０９またはいくつかのそれらの組み合わせに記憶することができる。
【００５４】
データストレージ１０８は、ＴＥＥ１０３と関連した情報、例えば、リモート認証、暗号化および解読のための暗号鍵を記憶するように構成されたセキュアデータウェアハウスを含むことができる。データストレージ１０８は、トランザクションデータを含む消費者データなどの秘密情報を記憶することもできる。ストレージ１０８および／または他のストレージ１１１は、様々なタイプのストレージ技術を用いて提供することができて、リレーショナルデータベース、非リレーショナルデータベース、フラットファイル、スプレッドシート、拡張マークアップファイルなどの様々なフォーマットで記憶することができる。データストレージ１０８は、例えば、とりわけ、保護されたメモリ領域をロードするためのコンピュータ可読キャッシュメモリならびに保護されたメモリ領域自体を含むことができる。データストレージ１０８が双方向アクセスのために構成される場合、データストレージ１０８は、特定のデータソースと関連したコンピューティング装置によって要求されるアクセスの前にデータを暗号化するために、特定のデータソースに対応する、一致する公開鍵を記憶することができる。
【００５５】
データストレージ１０８は、いくつかの実施形態では、ＴＥＥ１０３によって受信されるデータセットに基づいて訓練される単離された機械学習データモデルアーキテクチャを維持し、それはデータストレージ１０８上の処理の後記憶してもよく、または記憶しなくてもよい。例えば、データが処理および訓練の後データストレージ１０８に記憶されない場合、全体的に必要とされるストレージがより少ないので性能が改善され得る。これは、データセットが特に大きいか多量である場合に役立つ。別の実施形態では、データセットは、将来の使用または時間にわたる解析のために保護されたメモリ領域のデータストレージ１０８に記憶される。
【００５６】
データストレージ１０８は出力データ構造を記憶することもでき、それは推奨エンジン１２０を通して対話することができ、出力データ構造はデータ処理サブシステムによる処理によって生成されるフィールド値を記憶する。いくつかの実施形態では、ＴＥＥ１０３のデータ処理サブシステムは、対応するパートナコンピューティング装置から受信されるデータセットの集合に基づいて生成される記憶された関数を含む。
【００５７】
各Ｉ／Ｏユニット１０７は、プラットフォーム１００が、キーボード、マウス、カメラ、タッチスクリーンおよびマイクロホンなどの１つ以上の入力装置との、または、ディスプレイスクリーンおよびスピーカなどの１つ以上の出力装置との相互接続をするのを可能にする。Ｉ／Ｏユニット１０７は、データストレージ１０８にデータをロード／アンロードするのに備えるための命令を受信するために用いることができて、データストレージ１０８にロードするためのデータにアクセスするかまたは解読もしくは有効性確認するために必要な特定のアクセス鍵の供給を必要とし得る。
【００５８】
Ｉ／Ｏユニット１０７は、データ構造、命令セットまたはクエリストリングとして、データ処理サブシステム起動して様々な出力データ構造を生成するクエリデータメッセージを受信することもできる。
【００５９】
各通信インタフェース１０５は、プラットフォーム１００が、他のコンポーネントと通信し、データを他のコンポーネントと交換し、ネットワークリソースにアクセスして接続し、アプリケーションのために動作し、そして、他のコンピューティングアプリケーションを実行することを、インターネット、Ｅｔｈｅｒｎｅｔ、普通の電話サービス（ＰＯＴＳ）線、公衆交換電話網（ＰＳＴＮ）、総合サービスデジタルネットワーク（ＩＳＤＮ）、デジタル加入者線（ＤＳＬ）、同軸ケーブル、光ファイバ、衛星、携帯、無線（例えばＷｉ−Ｆｉ、ＷｉＭＡＸ）、ＳＳ７信号ネットワーク、固定回線、ローカルエリアネットワーク、広域ネットワーク、およびその他これらのあらゆる組合せを含む、データを搬送することができるネットワーク（または複数のネットワーク）に接続することによって、可能にする。
【００６０】
プラットフォーム１００は、アプリケーション、ローカルネットワーク、ネットワークリソース、他のネットワークおよびネットワークセキュリティデバイスにアクセスを提供する前に、（例えばログイン、一意識別子およびパスワードを使用して）ユーザを登録して認証するように動作可能であってもよい。プラットフォーム１００は、１つのユーザまたは複数ユーザのために動作することができる。いくつかの実施形態では、ユーザの信用証明情報はＴＥＥ１０３の中に記憶され、それらをセキュアな状態にして、パートナからの高レベルの信頼を確保する。
【００６１】
図２Ａは、セキュアトランザクションデータを処理するためのプラットフォーム１００上の例示の仮想クリーンルーム（Ｖｉｒｔｕａｌ  Ｃｌｅａｎ  Ｒｏｏｍ）３００を示す。仮想クリーンルーム３００は、ＶＣＲまたは単にクリーンルーム３００と呼ばれてもよい。パートナシステム１１５は、クリーンルーム３００によって生成された鍵でユーザデータ（例えば消費者トランザクションデータ）を暗号化することができ、それから暗号化されたデータをセキュアチャネルを通してクリーンルーム３００の中のセキュアデータウェアハウス１０８に送信することができる。ユーザデータは、単に解読されてセキュアエンクレーブ１３３において処理することができる。それから、セキュアエンクレーブ１３３の中でのプロセスによって生成された出力データは、暗号化されてセキュアデータウェアハウス１０８の中に記憶される。
【００６２】
セキュアエンクレーブ１３３は、暗号化されたデータセットを単一のセキュアエンクレーブに記憶して、１つ以上の解析アルゴリズムを実行するように構成することができる。セキュアエンクレーブ１３３はクラスタ管理も実行して、複数のセキュアエンクレーブおよびＣＰＵを組織化することもできる。本明細書において述べるように、いくつかの実施形態では、区画を利用することにより、機械学習データモデルアーキテクチャのローカルバージョンを利用し、そしてパラメータ更新を渡して周期的に機械学習データモデルアーキテクチャのグローバルバージョンを更新する１つ以上のセキュアエンクレーブサブプロセッサからのモデルデータアーキテクチャ更新を追跡し、効果的に機械学習データモデルアーキテクチャの訓練プロセスの並列化を可能とし、これは、収束が可能である場合に収束速度を改善する。
【００６３】
例えば、セキュアエンクレーブ１３３は、パートナシステム１３３からの機密データのセキュアストレージを提供することができ、適切かつセキュアな鍵管理システムで暗号化されたデータを解読することができるプラットフォーム１００上の唯一のコンポーネントである。セキュアエンクレーブ１３３は、解読データに解析を実行して出力を提供するように、実装することもできる。出力は、セキュアエンクレーブ１３３外に送信される前に暗号化することができる。
【００６４】
いくつかの実施形態では、データの１つ以上のセットは、データセットをパートナシステム１１５に形成することができる。データセットは、セキュアエンクレーブ１３３によって生成された鍵を用いて、パートナシステム１１５によって暗号化することができ、それからクリーンルーム３００に送信されて、その後セキュアデータウェアハウス１０８に記憶される。解析は、ワーカーアプリケーションによって暗号化されたデータに実行することができる。ワーカーアプリケーションは、前記解析を実行する前に、適切な解読鍵を用いてデータを解読することができる。一旦解析がされると、出力データを生成することができる。いくつかの場合では、出力データは暗号化することができる。クリーンルーム３００は、（ｉ）暗号化されたデータを記憶し、（ｉｉ）解析の目的ために解読することができる、プラットフォーム１００の唯一のエンティティとすることができ、その結果、クリーンルーム３００外のどの人も、システムも、またはプロセスも、セキュアエンクレーブ１３３にアクセスすることができない。
【００６５】
オペレーティングシステム／カーネルシステムがハードウェアレベルセキュリティを用いて解読されたエンクレーブコンテンツにアクセスすることができないので、セキュアエンクレーブ１３３はデータを管理者から保護する。
【００６６】
図１０は、いくつかの実施形態による、セキュアエンクレーブ１３３のための例示の記憶構造を示す。セキュアエンクレーブだけが、ＤＲＡＭから、保護されたメモリ領域をロードすることができる（他の全てのアプリケーションはキャッシュマネージャからキャッシュミスを得る）。
【００６７】
ＤＲＡＭ上のエンクレーブデータは、特殊命令を使用してキャッシュへロードされるときに、暗号化されて解読されるだけであるので、エンクレーブデータは、管理者、ＯＳ／カーネルシステム／プロセスおよび外側エンティティから保護されている。解読鍵に対するアクセスは制限されており、いくつかの実施形態では、人間の解析者によるアクセス可能性のないセキュアエンクレーブ１３３の中でしか利用できない。
【００６８】
人間の解析者は、例えば、対応する鍵ペアを使用して単一のデータソースと関連したデータのロード／有効性確認／アンロードを制御することによって、または、訓練されていないか訓練された機械学習データモデルアーキテクチャのロード／アンロードを制御することによって、セキュアエンクレーブ１３３と対話することができる。本明細書において述べるように、セキュアエンクレーブ１３３が他者による基本的データセットへのアクセスを防止するのに適しているので、セキュアエンクレーブ１３３は、基本的データ処理サブシステムに、または、いくつかの実施形態では、単離された機械学習データモデルアーキテクチャに対して、ブラックボックスアクセスが効果的にできるようにする。
【００６９】
図２Ｂを次に参照すると、クリーンルームアプリケーション３００は、プラットフォーム１００に実施することができて、銀行システム１１２および小売商システム１１３などの複数のパートナから、１つ以上のデータセットを受信することができる。銀行システム１１２は、消費者によって所有される１つ以上の金融商品（例えばクレジットカード）に関する消費者データを有することができる。小売商１１３は、１つ以上のトランザクションに関する消費者データを有することができる。消費者が小売商で、購入トランザクションの間などに金融商品を使用するたびに、様々なデータが銀行システム１１２および取引システム１１３で送信されて、記憶される。
【００７０】
例えば、銀行は、トランザクションに関して、トランザクションのデータおよび時刻、トランザクションが発生した小売商の名前および位置、小売商と関連付けられた小売商分類コード（Ｍｅｒｃｈａｎｔ  Ｃａｔｅｇｏｒｙ  Ｃｏｄｅ，ＭＣＣ）、銀行名およびＩＤ、金融商品のマスクされた主要アカウント番号（ＰＡＮ）、トランザクション中に金融商品に課金された金額、およびトランザクション終了時に銀行によって送信されたマルチキャラクタコードであるトランザクションのための認可コードを含む、複数のトランザクションデータ２１０ａ、２１０ｂ、２１０ｃを有することができる。
【００７１】
別の例として、小売商は、トランザクションに関して、トランザクションのデータおよび時刻、トランザクションが発生した小売商の名称および位置、トランザクション中に販売された製品またはサービスの在庫管理単位（ＳＫＵ）、および販売されたＳＫＵごとの量または金額などの、複数のトランザクションデータ２３０ａ、２３０ｂ、２３０ｃを有することができる。
【００７２】
いくつかの場合では、小売商１１３は物理小売店を有していなくてもよい。例えば、小売商は、ウェブに拠点を置く小売業者であることができて、ウェブ上でトランザクションを行うことができる。
【００７３】
クリーンルーム３００は、銀行システム１１２、小売商システム１１３および他のタイプのパートナシステム１１５（例えば銀行でない金融機関）から、トランザクションデータ２１０ａ、２１０ｂ、２１０ｃ、２３０ａ、２３０ｂ、２３０ｃなどの様々な消費者データを受信することができ、そして消費者データに基づいて推奨および申し出、例えば個人化された申し出を生成することができる。推奨および申し出は、販売時点（ＰＯＳ）で、またはオンラインで履行するためにパートナに、および／または消費者が直接、送信することができる。いくつかの実施形態では、消費者が積極的に承諾して同意を選択する場合にのみ、推奨および申し出は生成することができる。パートナが関与することを選択して、プラットフォーム１００によって提供される技術を使用する場合、パートナは、プラットフォーム１００によって適切な推奨および申し出を生成するために消費者のデータを使用する適切な消費者の同意を取得したと通常みなすことができる。
【００７４】
いくつかの実施形態では、パートナは、１人以上の消費者に、消費者とのパートナの通信チャネルを通して、消費者のデータを記憶するために同意を要請しなければならない場合がある。例えば、パートナ携帯またはウェブベースのアプリケーションの条件およびサービスは、消費者が携帯またはウェブベースのアプリケーションを使用するときに同意が与えられる、ということを示すことができる。小売商店舗において、同意は、支払いまたはＰＯＳ端末上のプロンプトを通して要請して与えられ得る。
【００７５】
ここで図３を参照すると、これは、いくつかの実施形態による、プラットフォーム１００上のクリーンルーム３００の別の概略図を示す。クリーンルーム３００は、プロセッサ１０１の内蔵メモリ１０９に収容されているセキュアな環境である。それは、問題なく確実にデータを記憶して、解読して、処理するために、チップ製造業者により提供されるセキュア処理ハードウェアに基づいて開発された、セキュアエンクレーブ１３３を含むことができる。
【００７６】
クリーンルーム３００は、消費者データを受信し、記憶し、暗号化し、解読することができる。プラットフォーム１００によって、パートナシステム１１５が、人、システムまたはプロセスによる不正アクセスの懸念無しに、クリーンルーム３００に暗号化されたデータを共有して送信することが可能となり得る。クリーンルーム３００は、パートナシステムによって提供されたデータにわたり、そしてデータが生産物特有の結果を発生させるためにどのように用いられるかを認識している制御およびその同意を、ユーザに与えることができる。クリーンルーム３００はまた、パートナシステムが、人、システムまたはプロセスによるデータの不正アクセスの懸念無しに、暗号化されたデータをクリーンルームに転送することができる。
【００７７】
セキュリティおよび暗号化ユニット１２５は、消費者データを受信および処理するためにクリーンルーム３００を検証して保証し、消費者データを送信している各パートナが認証されていることを検証し、そして、適切なときに、消費者データを暗号化して、解読して、クリーンにして、正規化して、記憶するように構成することができる。
【００７８】
推奨エンジン１２０は、パートナシステム１１５から受信された消費者データに基づいて推奨および申し出を生成するように構成することができる。推奨および申し出は、一般的であるかまたはターゲットを絞ったものとすることができる。推奨および申し出は、消費者のグループのためにターゲットを絞ったものとすることができるか、または特定の消費者のために個人化されたものとすることができる。いくつかの実施形態では、推奨（解析）エンジンは、個人化されかつ関連した小売商申し出の役割を果たす目的のために、パートナデータをモデル化することができる。エンジン１２０はデータモデル（複数可）を活用して、バッチ処理されたか起動された（例えば、位置ベースの）個人化された申し出を消費者に提供することができる。
【００７９】
いくつかの実施形態では、機械学習アルゴリズムおよびＳＱＬクエリは、エンクレーブ環境のエンジン１２０によって実装することができる。例えば、Ａｎｊｕｎａ  Ｓｅｃｕｒｉｔｙ（登録商標）およびＨ２Ｏ（登録商標）を使用する。
【００８０】
オーディエンスビルダユニット１２１は、生成された推奨または申し出ごとに消費者のリストを生成するように構成することができる。消費者のリストは、１つ以上の消費者を含むことができる。オーディエンスビルダユニット１２１は、年齢、位置、婚姻の状態、小売商などの属性上のターゲットとされたオーディエンスを定めることができる。属性は、データストレージ１０８に記憶されるデータセットの利用できる変数と相関させることができる。
【００８１】
クライアントアイデンティティおよび同意ユニット１２２は、クライアントアイデンティティおよび同意を検証して確認するように構成することができる。クライアントシステムは、消費者データをプラットフォーム１００に送信する前に明確な同意を与えることを必要とし得る。クライアントシステムは、暗号化されたデータに関してプラットフォーム１００との間でクエリを送信して回答を受信するように構成されたシステムでもよい。例えば、クライアントシステムは、プラットフォーム１００から処理されたデータを探す資格がある（すなわち、適切な許可を有する）パートナポータル１１６を指すことができる。
【００８２】
ＰＯＳ／ｅコマース履行ユニット１２３は、販売時点（ＰＯＳ）で、または、オンラインベースのｅコマースウェブサイトで生成された推奨および申し出を見込み消費者に示すように構成することができる。申し出は、それを消費者がＰＯＳまたはｅコマースウェブサイトで受け入れる場合、即時の履行のために構成することができる。
【００８３】
調整および決済ユニット１２４は、１つ以上のトランザクションの清算、決済および調整プロセスを処理するように構成することができる。
【００８４】
いくつかの実施形態では、通信リンク（例えば図３のリンクＡ）は、あらゆるデータ送信の前にパートナとプラットフォーム１００の間に確立することができる。通信リンクはエンドツーエンドで暗号化することができ、その結果、リンクを用いて送信されるかまたは受信されるいかなるデータもセキュアであり、第三者によって傍受することができない。
【００８５】
いくつかの実施形態では、パートナは、通信リンクが確立されてセキュアにすることができる前に、認証されることを必要とする。通信リンクは、鍵でセキュアにすることができる。例えば、通信リンクを用いて送信されるすべてのデータは、例えば鍵またはアクセス鍵と呼ばれてもよい暗号ハッシュ関数を用いて、暗号化アルゴリズムまたはプロセスによって暗号化することができる。
【００８６】
このような暗号ハッシュ関数は一方向のハッシュ関数として公知であり得て、すなわち、それは、数学的に言えば、ほとんど不可逆であり得る。暗号化プロセスに対する入力データは、「プレーンテキスト」、「入力」または「メッセージ」として公知であり得るのに対して、暗号化プロセスの出力は、「出力」、「ハッシュダイジェスト」、「ダイジェスト」または「ハッシュ値」として公知であり得る。暗号化は、適切なハッシュ関数を使用することができる。いくつかの実施形態では、暗号ハッシュ関数は、ＭＤ５、ＳＨＡ１およびＳＨＡ２の１つでもよい。
【００８７】
いくつかの実施形態では、公開秘密鍵ペアを用いて通信リンクを暗号化することができる。すなわち、一旦パートナのアイデンティティが検証されて認証されると、セキュリティおよび暗号化ユニット１２５はパートナとの通信リンクを確立することができて、通信リンクを用いてパートナにアクセス鍵（公開鍵）を送信することができる。
【００８８】
パートナはアクセス鍵を使用して、通信リンク上に送信されているすべてのデータを暗号化することができる。クリーンルーム３００は通信リンクを通して暗号化されたデータを受信し、対応する秘密鍵を用いてデータを解読することができ、それらはクリーンにして正規化することができて、それに応じて処理することができる。
【００８９】
セキュリティおよび暗号化ユニット１２５は、予め設定された時間期間の後パートナにアクセス鍵を無効にするかまたは更新することができる。セキュリティおよび暗号化ユニット１２５は、パートナによって、または、管轄権によってアクセス鍵を無効にするかまたは更新することもできる。いくつかの実施形態では、セキュリティおよび暗号化ユニット１２５は、通信リンクが終了されるかまたは確立されることを必要とするときはいつでも、アクセス鍵を無効にするかまたは更新することもできる。
【００９０】
いくつかの実施形態では、通信リンクのエンドツーエンド暗号化に加えて、またはその代替として、例えば、トランスポート層セキュリティ（ＴＬＳ）またはセキュアソケット層（ＳＳＬ）などの暗号のプロトコルによるリンク暗号化を通信リンクに適用することができる。
【００９１】
いくつかの実施形態では、パートナシステム１１５がいずれかのデータをクリーンルーム３００に送信する前に、パートナは、プラットフォーム１００が真正であり改竄されていないと検証することを求めることができる。これは、リモート認証プロセスによって達成することができる。リモート認証プロセスによって、プラットフォーム１００がそれ自体を認証して、プラットフォーム１００およびクリーンルーム３００を動かすために用いるハードウェアおよびソフトウェアは信頼性が高く、信用できて、改竄されていないということを示すことができる。
【００９２】
データ転送プロトコルは、パートナシステム１１５とプラットフォーム１００の間に適用することができる。例えば、情報交換プロトコルはＴＬＳ／ＳＳＬと同様であるアプリケーション層チャネル暗号化でもよい。セッションの始めに、２つの関係者が互いに認証を行う。鍵交換はこのプロセス上でピギーバック方式で搬送することができ、したがって２つの共有鍵が確立され、それぞれが１つの関係者から他方へのデータフローのためのものである。
【００９３】
鍵交換メカニズムが、データの暗号化のために用いられてもよい。例えば、ＳＥＣＰ２５６Ｒ１（ＰＲＩＭＥ２５６ｖ１）楕円曲線のディフィー  ヘルマン鍵交換を実施することができる。この鍵交換の結果は、２５６ビットの共有ランダム性である。この共有秘密そのものまたはそのＳＨＡ２５６ハッシュは、２つのストリームのための２つの１２８ビットＡＥＳ鍵に分解することができる。
【００９４】
データは、ガロアカウンタモード（Ｇａｌｏｉｓ  Ｃｏｕｎｔｅｒ  Ｍｏｄｅ）のＡＥＳブロック暗号を適用する認証された暗号化メカニズムである、ＡＥＳ−ＧＣＭ（高度暗号化標準−ガロア／カウンタモード，Ａｄｖａｎｃｅｄ  Ｅｎｃｒｙｐｔｉｏｎ  Ｓｔａｎｄａｒｄ−Ｇａｌｏｉｓ／Ｃｏｕｎｔｅｒ  Ｍｏｄｅ）によって暗号化することができる。認証された暗号化の使用は、関係者の間で通信したデータの機密性および真正性を保証する。ＧＣＭのために使われるノンス（別名初期化ベクトル）は長さ１２バイトであり、オールゼロで始まって、リトルエンディアン方式で各メッセージの後にインクリメントする。２９６個の可能なノンスが使い尽くされた後、対応する暗号化鍵は、「ランアウト」状態となりで、新しくネゴシエートされたものと置き換えられる。いくつかの実施形態では、暗号化は２９６個の可能なノンスが尽きた後でもよい。
【００９５】
認証方法および悪意のある入力
リモート認証機構はセキュア通信チャネルを認証して確立するために用いることができて、それによって、リモートクライアント（例えばパートナシステム１１５）は、それらがプラットフォーム１００の真正な危殆化されていないプロセッサ上のエンクレーブモードで動作している特定のコードによって通信していることを確実にすることができる。遠隔認証はエンクレーブによっても用いられて、公開鍵を影響を受けない方法でクライアントに送信することができる。この機構は、非常に非凡なグループ署名に依存するが、高度にピアレビューされた研究にも基づく。
【００９６】
いくつかの実施形態において、クライアントまたはパートナシステムは、プラットフォーム１００とのセキュア暗号化チャネルを確立するためのモジュールを含んでいるＰｙｔｈｏｎスクリプトを含むことができて、入力データをクリーンルーム３００によって消費される標準形式に変換する。
【００９７】
遠隔認証は、解析サービスに対するクライアントの信頼の根本を構成することができる。それを鍵交換と統合することができる３つの方法がある：
１．  毎回またはクライアント当たり少なくとも一回、リモート認証を実行する。この場合、エンクレーブは、永続する公開鍵を有しておらず、ディフィー  ヘルマンメッセージをリモート認証のペイロードに直接配置する。
２．  リモート認証トランスクリプトを表すエンクレーブ。遠隔認証は、本来、それが対話する検証機構だけを確信させるように設計されたインタラクティブプロトコルである。しかしながら、すべての検証機構チャレンジが強力なハッシュ関数を用いて決定論的になされる場合、プロトコルはインタラクティブでないものに変えられ、それを通して、単一の実行でいかなる数の検証機構も確信させることができる。この変換は、Ｆｉａｔ−Ｓｈａｍｉｒヒューリスティックとして公知である。このように変換されたプロトコルは、アントラステッドエンクレーブホスト自体によって実施することができる。エンクレーブは、公開鍵証明書と類似のこのプロトコルトランスクリプトを示して、リモート認証トランスクリプトに組み込まれた公開鍵によるチャレンジおよびその新規なディフィー  ヘルマンメッセージに署名することによって認証を行う。
３．  証明書：クライアントは、リモート認証検証をサードパーティに委任して、それらによって発行された証明書を消費することができる。これは、あまり有望なオプションではない。
【００９８】
クライアントまたはパートナシステムは、プラットフォーム１００に対して認証することができる。認証は、データ流入の制限を制御するのを助けることができるが、決してシステムにガーベージデータを注入したり機密性への攻撃を仕掛けたりする可能性を排除するものではない。これらの攻撃は簡単な解説の価値があり、ガーベージを注入することは、システムをダウンさせるか、または攻撃者が利益を得ることができる誤った解析結果を故意に生成するために行うことができ、そして、機密性攻撃は、より巧妙である。
【００９９】
攻撃者は、解析の最終結果がそれらが提供する入力における変更に対してどのように変化するかを観察することができ、それらに送信される出力を観察することを通して、設計者によって意図されるより多くの、他者により提供されるデータに関する情報を推定することができる。いくつかの実施形態では、潜在的な攻撃に対処するために、申し出の提示は慎重に作られることを必要とし、クライアント機関に示される情報は制限され得る。
【０１００】
いくつかの実施形態では、ＯｐｅｎＳＳＬなどのライブラリは、エンクレーブ設計のベストプラクティスは単純性およびミニマリズムを必要とする、という考慮によって実装することができる。したがって、アントラステッドコンポーネントにセキュアに委任することができる機能は、このように委任されなければならない。ＳＳＬの環境では、代数オブジェクト（例えば公開鍵および暗号文）のネイティブの表現の標準形への変換およびポリシーチェックは、このようなタスクである。
【０１０１】
前述のように、サービスは、２ウェイＳＳＬ接続で実践されることとは異なる方法で、クライアントに対して認証を行う。すなわち、実装されるＳＳＬ仕様は、ユーザ定義の認証プロトコルへモジュール式に切り替えることを可能にすることができる。
【０１０２】
図４は、パートナシステム１１５とセキュリティおよび暗号化ユニット１２５のトラストマネージャユーティリティ１２７との間のリモート認証プロセスを示している概略図である。ステップ４１０で、証明書マネージャユーティリティ１２８は、各パートナのための公開鍵証明書１２９を発行することができる。証明書１２９を使用して、トラストマネージャ１２７に着信データが真正であることを証明することができる。
【０１０３】
ステップ４２０で、パートナシステム１１５からの要求に応じて、トラストマネージャ１２７はパートナシステム１１５とのリモート認証プロセスを開始して、プラットフォーム１００の真正性を検証することができる。パートナシステム１１５からの要求は、リモート認証の目的のために生成されたノンスＮ（予測不可能なランダム値）を含むことができる。トラストマネージャ１２７は、ノンスＮを含む要求を受信して、次にノンスおよび要求を鍵認証のためにプラットフォーム１００上のトラステッドプラットフォームモジュール（ＴＰＭ）１３５に送信する。
【０１０４】
ＴＰＭ１３５は、ハードウェアベースのセキュリティ関連機能を提供するように設計されている。ＴＰＭ１３５は複数の物理セキュリティ機構を含んでそれを耐タンパー性とすることができ、他のものはＴＰＭ１３５の機能を改竄することができない。
【０１０５】
ＴＰＭ鍵認証は、各ＴＰＭ１３５に特有のエンドースメント鍵（ＥＫ）を使用し、製造時に生成される。ＥＫに対する信用は、ＴＰＭ１３５のＥＫのセキュアで改竄される恐れがないストレージに基づき、そして、ＥＫの証明書がＴＰＭ製造者の発行認証局（ＣＡ）に対するチェーンであるという事実に基づいている。すなわち、ＥＫの証明書は、ＴＰＭ製造者の発行ＣＡによって、暗号によって検証することができる。１つ以上の認証識別鍵（ＡＩＫ）は、ＴＰＭ１３５によって生成されて、ＥＫによって署名することができる。ＡＩＫは、トラステッド認証局によって検証することができる。
【０１０６】
いくつかの実施形態では、トラストマネージャ１２７からＴＰＭ１３５への要求は、プラットフォーム１００の１つ以上の現在のプラットフォーム構成レジスタ（ＰＣＲ）値を含む。要求は、ＴＰＭバージョンナンバまたはＴＰＭ１３５がＰＣＲ値に署名するために必要な他のいかなる情報も任意選択的に含むことができる。ＰＣＲ値は、主にシステム測定値を記憶するために用いられ、任意に上書きすることができない。ＰＣＲ値は、コンピュータ的に捏造するのが不可能であるハッシュ値でもよい。いくつかのＰＣＲ値はデフォルト値にリセットすることができるが、それは適切な許可を必要とする。
【０１０７】
ＴＰＭ１３５はトラストマネージャ１２７から要求を受信して認証識別鍵（ＡＩＫ）でＰＣＲ値に署名することを続け、それから、ノンス、ＰＣＲ値およびＡＩＫを含んでいる署名済み応答をトラストマネージャ１２７に返送する。それから、トラストマネージャ１２７はパートナシステム１１５に署名済み応答を送信し、それは署名済み応答を解析して検証するためにその上にインストールされるパートナポータル１１６を有することができる。
【０１０８】
パートナシステム１１５は、署名済み応答を受信し、ＰＣＲ値およびＡＩＫ署名が正確であると検証することによって署名済みデータが真正かつ信頼できることを検証する。例えば、パートナシステム１１５は、ＡＩＫが有効なことをトラステッド認証局を通して検証することができる。別の例としては、パートナシステム１１５は、ＰＣＲ値を信用度にマップするデータベースの記憶値と値を比較することによって、ＰＣＲ値が信頼できることを検証することができる。パートナシステム１１５は、署名済み応答のノンスが証明のためのその初期要求においてパートナによって送信されたノンスに対応することを確認することによって、ＰＣＲ値が最新であることをさらに検証することができる。
【０１０９】
いくつかの実施形態では、ＰＣＲ値の代わりに、別のハッシュ値、例えばプラットフォーム１００のソフトウェアコードのハッシュ値を使用することができて、ハッシュコードはプラットフォーム１００の現在の状態を表す。
【０１１０】
一旦パートナシステム１１５が、署名済み応答に基づいて、プラットフォーム１００上で実行されているクリーンルーム３００は真正かつ信頼できるということを満たすと、ＳＳＬ／ＴＬＳハンドシェイクがステップ４３０で発生してセキュア通信チャネルを確立することができる。
【０１１１】
ステップ４４０で、暗号化されたデータは、セキュア通信チャネルを使用して、パートナシステム１１５からプラットフォーム１００に送信することができる。いくつかの実施形態では、公開秘密鍵ペアを用いてデータを暗号化することができる。本明細書において記載されているように、セキュリティおよび暗号化ユニット１２５は、通信チャネルを用いてパートナシステム１１５にアクセス鍵（公開鍵）を送信することができる。パートナはアクセス鍵を使用して、通信チャネル上に送信されているすべてのデータを暗号化することができる。クリーンルーム３００は通信チャネルを通して暗号化されたデータを受信し、対応する秘密鍵を用いてデータを解読することができ、それらはクリーンにして正規化することができて、それに応じて処理することができる。パートナポータル１１６（図５を参照）は、パートナ鍵記憶のパートナシステム１１５に割り当てられる公開鍵（複数可）を記憶することができる。クリーンルーム３００は、鍵記憶１３０の各公開鍵に、対応する秘密鍵を記憶することができる。鍵記憶１３０は複数の秘密鍵を記憶することができ、それぞれがパートナに割り当てられる公開鍵に対応する。パートナシステム１１５には、データを暗号化するための１つ以上の公開鍵を割り当てることができる。
【０１１２】
いくつかの実施形態では、任意の長さのストリングが暗号化されたデータを識別可能にすることができるので、データセットは送信の前に前処理することができる。例えば、１つ以上のデータストリングは、特定の長さ、例えばシステムによって許容される最大長にパッディングすることができる。他の実施形態において、データストリングは定義済み構造にブレークダウンことができて、各アトミックコンポーネントは送信の前にハッシュするかまたは暗号化することができる。
【０１１３】
図１４は、いくつかの実施形態による、セキュアトランザクションデータを処理するための例示のクリーンルーム３００の別の概略図を示す。クリーンルーム３００は、パートナポータルでデータの暗号化のためのパートナポータル１１６に、１つ以上のエンクレーブの公開鍵を送信するように構成されたデータマネージャ１３４を含むことができる。各エンクレーブはパートナポータル１１６からの暗号化されたデータの宛先であるようにデータマネージャ１３４によって選択することができるので、エンクレーブ１３３ａ、１３３ｂ、１３３ｎは宛先エンクレーブと呼ばれてもよい。Ｈａｄｏｏｐファイルシステム（ＨＤＦＳ）などのファイルシステムは、クリーンルームに含まれて、エンクレーブ１３３ａ、１３３ｂ、１３３ｎによって記憶された暗号化されたデータを管理することができる。
【０１１４】
いくつかの実施形態では、パートナポータル１１６は、クリーンルーム３００にデータを送信するためにデータマネージャ１３４によってＴＬＳまたはＶＰＮを通して通信チャネル２１５を始動することができる。パートナポータル１１６は、最初に、データがクリーンルームに発信されるべきであることを示している要求をデータマネージャ１３４に発信することができる。いくつかの実施形態では、要求は、送信されるデータ量を表す情報を含むことができる。データ要求に基づいて、データマネージャ１３４は、パートナポータル１１６から着信データを受信するための１つ以上の宛先エンクレーブ１３３ａ、１３３ｂ、１３３ｎを選択することができる。
【０１１５】
いくつかの実施形態では、データマネージャ１３４は各エンクレーブによって取り込まれるデータ量に基づいて宛先エンクレーブを選択することができ、その結果、各選択された宛先エンクレーブはパートナポータル１１６からこの通信セッションを通して特定のデータ量を受信するように指定される。加えて、データマネージャ１３４は、各宛先エンクレーブのための公開鍵を選択することができて、選択された宛先エンクレーブにそれぞれ対応する１つ以上の公開鍵をパートナポータル１１６に送信することができるので、パートナポータルは、通信チャネル２１５を介して暗号化されたデータを送信する前に適切な公開鍵を用いて生データを暗号化することができる。例えば、データマネージャ１３４は各宛先エンクレーブによって受信されるデータ量の上限を表す情報および対応する公開鍵（例えば「ＭａｘＳｉｚｅ、ＰｕｂｌｉｃＫｅｙ／Ｏ」）を送信することができるので、パートナポータル１１６は、宛先エンクレーブの要件と整合している方法で、各宛先エンクレーブのための適切な量の着信データを暗号化することができる。
【０１１６】
一旦パートナポータル１１６がデータマネージャ１３４からデータ量、宛先エンクレーブ（複数可）および公開鍵（複数可）を表す情報を受信すると、パートナポータル１１６は生データを暗号化することへ進むことができる。例えば、パートナポータル１１６は、各宛先エンクレーブのための２５６ビットデータ暗号化鍵（ＤＥＫ）をランダムに生成することができて、ＡＥＳ−２５６  ＣＢＣまたはＧＣＭを使用するそれぞれのＤＥＫによっていくつかの生データを暗号化する。パートナポータル１１６は、宛先エンクレーブの数および対応する数の公開鍵に基づいてＤＥＫを生成することができる。異なるＤＥＫは、宛先エンクレーブごとに、したがって宛先エンクレーブと関連付けられた公開鍵ごとに、生成することができる。それから、パートナポータル１１６は、ＤＥＫが生成される対応する宛先エンクレーブに基づいて、適切な公開鍵を用いてＤＥＫのそれぞれを暗号化することができる。次に、パートナポータル１１６は、暗号化されたデータを暗号化された鍵（例えば暗号化されたＤＥＫ）とともに、通信チャネル２１５を介してデータマネージャ１３４に送信することができる。
【０１１７】
いくつかの実施形態では、通信チャネル２１５はＶＰＮ通信チャネルでもよく、その場合には、パートナポータル１１６およびクリーンルーム３００は両方とも真正であることが検証されている。
【０１１８】
いくつかの実施形態では、通信チャネル２１５は、図４に関連して上記のとおり、パートナシステム１１５とセキュリティおよび暗号化ユニット１２５のトラストマネージャユーティリティ１２７の間のＴＬＳチャネルと同様に、ＴＬＳの下で確立および維持することができる。
【０１１９】
クライアントシステム１１９は、クエリ１１８をクリーンルーム３００上のリソースマネージャ１１００に提示することができる。クエリは、通信セッション２１６を通して送信されるデータクエリでもよい。いくつかの実施形態では、クライアントシステム１１９は、データクエリを送信するために、クリーンルーム３００の認可された関係者でなければならず、この目的のために、リソースマネージャ１１００は、クライアントシステムが認可された関係者で、かつクエリの適切な許可を有することを確認するために、クライアントシステムと対話するように構成することができる。一旦クライアントシステムがクエリの適切な許可を有することが検証されたならば、リソースマネージャ１１００はクエリに応答してクライアントシステムに回答を返すことができる。
【０１２０】
データクエリを送信するために、クライアントシステムは、リソースマネージャ１１００との認証されたＴＬＳ通信セッション２１６を開始することができる。通信セッション２１６は、図４に関連して上記のとおり、パートナシステム１１５とセキュリティおよび暗号化ユニット１２５のトラストマネージャユーティリティ１２７の間のＴＬＳチャネルと同様の方法で確立および維持することができる。
【０１２１】
ＴＬＳ通信プロトコルを通して、リソースマネージャ１１００は、クライアントシステムがクリーンルーム３００の認可された関係者であることを検証することができる。一旦クライアントシステムが認可された関係者として検証されると、リソースマネージャ１１００は、クライアントシステムがアクセスを有する１つ以上のデータ解析を送信し、そしてクライアントシステムで表示することができる。クライアントシステムは、表示されたデータ解析オプションから１つ以上のオプションを選ぶことができる。データ解析の一部は追加情報を必要とする可能性があり、それをクライアントシステムが提供するように構成することができる。それから、クライアントシステムは、リソースマネージャ１１００に完全なデータクエリを送信することができる。
【０１２２】
リソースマネージャ１１００は、クライアントシステムからデータクエリを受信することができて、アプリケーションマネージャ１１２４にクエリの送信を続けて、クライアントシステムからのデータクエリに基づいてデータ解析を開始させることができる。アプリケーションマネージャ１１２４は、１つ以上のエンクレーブ１３３ａ、１３３ｂ、１３３ｎを生成して、エンクレーブを用いて暗号化されたデータ上の解析を実行するように構成されたアプリケーションでもよい。いくつかの実施形態では、１つ以上のワーカーノードを用いて必要とされるデータ解析を実行することができる。
【０１２３】
いくつかの実施形態では、１つ以上のデータ解析操作は、クリーンルームがセキュアかつ完全であることを許可された関係者に保証するために、検査に対して制限がなくてもよく、および／またはクリーンルーム３００に参加しているすべての認可された関係者によって署名されていてもよい。
【０１２４】
いくつかの実施形態では、エンクレーブ１３３ａ、１３３ｂ、１３３ｎは、その上に記憶されているデータ／文書の間の通信を認証して暗号化していてもよい。例えば、エンクレーブ１３３ａ、１３３ｂ、１３３ｎの１つ以上のペアとの間で、ＴＬＳ通信チャネルが確立されて、セキュア通信およびエンクレーブの間でのデータの交換を確実にすることができる。
【０１２５】
図１５は、いくつかの実施形態による、セキュアトランザクションデータを処理するためのクリーンルーム３００を含む分散システムの概略図を示す。クリーンルーム３００は、パートナポータルでデータの暗号化のためのパートナポータル１１６に、１つ以上のエンクレーブの公開鍵を送信するように構成されたデータマネージャ１３４を含むことができる。各エンクレーブはパートナポータル１１６からの暗号化されたデータの宛先であるようにデータマネージャ１３４によって選択することができるので、エンクレーブ１３３ａ、１３３ｂ、１３３ｎは宛先エンクレーブと呼ばれてもよい。Ｈａｄｏｏｐファイルシステム（ＨＤＦＳ）などのファイルシステムは、クリーンルームに含まれて、エンクレーブ１３３ａ、１３３ｂ、１３３ｎによって記憶された暗号化されたデータを管理することができる。
【０１２６】
いくつかの実施形態では、分散モデルはクリーンルーム３００を用いて実装することができて、パートナポータル（複数可）１１６は、それらのそれぞれのデータを維持して、ファイアウォールの後ろのパートナポータル１１６に接続されているデータエンジンを用いてデータ解析の一部または全てを実行することができ、メタデータなどの必要な解析結果だけがさらなる処理のためにクリーンルーム３００に送信される。
【０１２７】
図１４に図示されるシステムからのデータクエリ１１８と同様に、クライアントシステム１１９からのクエリ要求１１８は、リソースマネージャ１１００に送信されてもよい。クエリ要求１１８は、データ解析のためのクエリを含むことができる。
【０１２８】
データクエリ１１８を送信するために、クライアントシステム１１９は、リソースマネージャ１１００との認証されたＴＬＳ通信セッション２１６を開始することができる。通信セッション２１６は、図４に関連して上記のとおり、パートナシステム１１５とセキュリティおよび暗号化ユニット１２５のトラストマネージャユーティリティ１２７の間のＴＬＳチャネルと同様の方法で確立および維持することができる。ＴＬＳ通信プロトコルを通して、リソースマネージャ１１００は、クライアントシステム１１９がクリーンルーム３００の認可された関係者であることを検証することができる。一旦クライアントシステム１１９が認可された関係者として検証されると、リソースマネージャ１１００は、クライアントシステムがアクセスを有する１つ以上のデータ解析を送信し、そしてクライアントシステムで表示することができる。クライアントシステムは、表示されたデータ解析オプションから１つ以上のオプションを選ぶことができる。データ解析の一部は追加情報を必要とする可能性があり、それをクライアントシステム１１９が提供するように構成することができる。それから、クライアントシステム１１９は、リソースマネージャ１１００に完全なデータクエリを送信することができる。
【０１２９】
それから、クエリ要求１１８はアプリケーションマネージャ１１２４に送信することができ、続いてそれがデータクエリ１１８に基づいてデータ解析を開始させることができる。アプリケーションマネージャ１１２４は、データクエリ１１８に基づいて必要とされるデータ解析を決定することができる。アプリケーションマネージャは、データクエリ１１８に応答するために必要なデータ解析を実行するのに必要な、データのタイプおよびソースを決定することもできる。いくつかの実施形態では、アプリケーションマネージャ１１２４は、各パートナをそのそれぞれのデータにマップしているテーブルを読み出すかまたは受信することができる。アプリケーションマネージャは、必要とされるデータ解析のタイプおよび各パートナから必要とされるデータのタイプを含む、各パートナに対する詳細な命令をさらに生成することができる。命令はセキュアチャネル（例えばＴＬＳ）を介してデータマネージャ１３４に送信することができ、それから、それはＴＬＳまたはＶＰＮ接続２１５を介して１つ以上のパートナポータル１１６に命令を送信することができる。
【０１３０】
命令を受信するとすぐに、各パートナポータル１１６はデータベース（例示されない）から必要かつ適切なデータを読み出すことができ、それはパートナポータル１１６の一部であるか、またはそれに接続されていてもよい。それから、パートナポータルは、データマネージャからの命令に基づいて、パートナ解析エンジン１１７などのデータエンジン上で適切なデータ解析を実行することができる。パートナ解析エンジン１１７は、パートナポータル１１６の一部であるか、あるいはそれに接続されていてもよい。いくつかの実施形態では、パートナ解析エンジン１１７は、クリーンルーム３００によって提供されて構成されるが、パートナポータル１１６と同じ物理サイトでインストールされるデータエンジンでもよい。パートナ解析エンジン１１７は、パートナポータル１１６のファイアウォールの後ろにインストールすることができて、その結果、データマネージャがエンジン１１７に命令を送信するために、ＴＬＳまたはＶＰＮ接続２１５を確立することを必要とし、いくつかの実施形態では、暗号化がデータ送信のために必要とされる。
【０１３１】
パートナ解析エンジン１１７は、データマネージャによって必要とされる適切なデータ解析を実行することができて、データ出力またはデータ結果を生成して、それは、それから暗号化することができて、データマネージャ１３４に送信することができる。それから、データマネージャは、アプリケーションマネージャからの命令に応じて、１つ以上のエンクレーブ１３３ａ、１３３ｂ、１３３ｎに、暗号化されたデータ結果を送信することができる。
【０１３２】
いくつかの実施形態では、パートナ解析エンジン１１７は最初にパートナポータル１１６にデータ結果を送信することができ、それから、それはデータマネージャ１３４を介してクリーンルーム３００にデータ結果を送信することができる。
【０１３３】
いくつかの実施形態では、データマネージャ１３４は各エンクレーブによって取り込まれるデータ量に基づいて宛先エンクレーブを選択することができ、その結果、各選択された宛先エンクレーブはパートナポータル１１６またはパートナ解析エンジン１１７からこの通信セッションを通して特定のデータ量を受信するように指定される。加えて、データマネージャ１３４は、各宛先エンクレーブのための公開鍵を選択することができて、選択された宛先エンクレーブにそれぞれ対応する１つ以上の公開鍵をパートナポータル１１６に送信することができるので、パートナポータルは、通信チャネル２１５を介して暗号化されたデータを送信する前に適切な公開鍵を用いて生データ結果を暗号化することができる。例えば、データマネージャ１３４は各宛先エンクレーブによって受信されるデータ量の上限を表す情報および対応する公開鍵（例えば「ＭａｘＳｉｚｅ、ＰｕｂｌｉｃＫｅｙ／Ｏ」）を送信することができるので、パートナポータル１１６またはパートナ解析エンジン１１７は、宛先エンクレーブの要件と整合している方法で、各宛先エンクレーブのための適切な量の着信データを暗号化することができる。一旦パートナポータル１１６またはパートナ解析エンジン１１７がデータマネージャ１３４からデータ量、宛先エンクレーブ（複数可）および公開鍵（複数可）を表す情報を受信すると、パートナポータル１１６またはパートナ解析エンジン１１７は続けて、生データ結果を暗号化して、接続２１５を介してデータマネージャ１３４に暗号化されたデータ結果を送信することができる。
【０１３４】
いくつかの実施形態では、通信チャネル２１５はＶＰＮ通信チャネルでもよく、その場合には、パートナポータル１１６、パートナ解析エンジン１１７およびクリーンルーム３００は両方とも真正であることが検証されている。
【０１３５】
いくつかの実施形態では、通信チャネル２１５は、図４に関連して上記のとおり、パートナシステム１１５とセキュリティおよび暗号化ユニット１２５のトラストマネージャユーティリティ１２７の間のＴＬＳチャネルと同様に、ＴＬＳの下で確立および維持することができる。
【０１３６】
いくつかの実施形態では、データマネージャ１３４に返送されるデータ結果は、メタデータまたは他のタイプのデータを含むことができる。いくつかの実施形態では、さらなるデータ解析が、１つ以上のパートナポータル１１６および／またはパートナ解析エンジン１１７から送信されるデータ結果に基づいてデータクエリを完成するために必要とされ得る。アプリケーションマネージャ１１２４は、適切な数のセキュアエンクレーブ１３３ａ、１３３ｂ、１３３ｎに、パートナから送信されるデータ結果に基づいて解析を完了するように指示することができる。アプリケーションマネージャ１１２４は、いくつかの実施形態では、１つ以上のエンクレーブ１３３ａ、１３３ｂ、１３３ｎを生成して、エンクレーブを用いて暗号化されたデータ上の解析を実行するように構成されたアプリケーションでもよい。いくつかの実施形態では、１つ以上のワーカーノードを用いて必要とされるデータ解析を実行することができる。
【０１３７】
最終データ結果はクリーンルーム３００によって生成することができて、暗号化されたチャネルでもよいセキュア通信チャネル２１６を使用してリソースマネージャ１１００を通して、元々のデータクエリ１１８を送信したクライアントシステム１１９に戻すことができる。
【０１３８】
いくつかの実施形態では、クライアントシステムへ最終データ結果を返送する代わりに、クリーンルーム３００は、それに代えてクライアントシステムに代わって最終データ結果に基づいて動作を実行することができる。
【０１３９】
いくつかの実施形態では、１つ以上のデータ解析操作は、クリーンルームがセキュアかつ完全であることを許可された関係者に保証するために、検査に対して制限がなくてもよく、および／またはクリーンルーム３００に参加しているすべての認可された関係者によって署名されていてもよい。
【０１４０】
いくつかの実施形態では、エンクレーブ１３３ａ、１３３ｂ、１３３ｎは、その上に記憶されているデータ／文書の間の通信を認証して暗号化していてもよい。例えば、エンクレーブ１３３ａ、１３３ｂ、１３３ｎの１つ以上のペアとの間で、ＴＬＳ通信チャネルが確立されて、セキュア通信およびエンクレーブの間でのデータの交換を確実にすることができる。
【０１４１】
１つの非常に単純な実施例では、各パートナ１１６は１セットの数を含むデータのセットを各々有することができて、クライアントはすべてのパートナの中の最小値を要求するデータクエリを送信する。アプリケーションマネージャは、各パートナにパートナ解析エンジン１１７を用いてそれ自身のデータ上のそれ自身の解析を実行するように指示することができ、それはそれぞれのパートナに属しているデータのセットに基づいてパートナごとのそれぞれの最小値を生成する。それからこの結果は暗号化して、クリーンルームのアプリケーションマネージャに送信することができて、それから、それはすべてのパートナからのそれぞれのデータ結果を比較する最終的なデータ解析を実行し、各パートナによって送信されるすべてのそれぞれの最小値の中の最小値を含んでいる最終結果を生成する。この場合、クリーンルームは、パートナデータ全体にアクセスするのではなく、各パートナが有するデータのセットに基づいて、単にメタデータまたはデータ出力にアクセスする。
【０１４２】
別の実施例では、クライアントシステム１１９はデータクエリ１１８を送信して、チョコレートなどの商品に過去３ヵ月の最も多くの金額の金を費やした上位１００人の消費者を捜し出すことができる。リソースマネージャ１１００は、このクエリを受信することができ、アプリケーションマネージャ１１２４に転送し、それから、それはデータクエリを実行するための特定のパートナポータルを決定して、各パートナにデータ解析について適切な命令を生成する。アプリケーションマネージャは、内部または外部知識データベースに基づいて、チョコレートに金を費やすことができる多数の消費者を有することが知られている１つ以上のパートナを選択することができる。例えば、アプリケーションマネージャは、チョコレート店であるか、または、既存の販売情報に基づいて大量のチョコレートを販売する売り主を選択することができる。
【０１４３】
データ解析についての命令は、必要とされるタイプのデータならびに必要とされるデータ解析のタイプを、選択されたパートナのリストとともに含むことができ、ＴＬＳ接続２１５を介してデータマネージャ１３４に送信することができて、データマネージャ１３４は、データの暗号化のための公開／秘密鍵のセットによるＴＬＳまたはＶＰＮ接続を介して各選択されたパートナに各命令を送信することができる。いくつかの実施形態では、命令は、各パートナまたは各パートナ解析エンジンに発信される前に暗号化することができる。
【０１４４】
各パートナ解析エンジン１１７は、データマネージャ１３４から命令を受信することができて、受信した命令に従って要求データ解析を続けて実行することができる。パートナ解析エンジンは、命令で指定されているデータ解析を実行するために、必要である場合、各パートナポータルから適切なデータを読み出すことができる。
【０１４５】
それから、各パートナ解析エンジン１１７からのデータ結果は、暗号化およびクリーンルーム３００への送信のためにそれぞれのパートナポータル１１６に送信することができ、クリーンルーム３００は追加のデータ解析を実行して、チョコレートに過去３ヵ月で最も多額のお金を費やした上位１００人の消費者を表わす最終結果を生成することができる。例えば、それぞれのパートナ１１６からのデータ結果は、この３ヵ月でチョコレートに最も多額のお金を費やした上位５０人の消費者ならびに各消費者が費やしたそれぞれの金額を含むことができる。
【０１４６】
別のそれぞれのパートナ１１６からのデータ結果は、この３ヵ月でチョコレートに最も多額のお金を費やした上位Ｘ人（例えば３０人または１００人）の消費者ならびに各消費者が費やしたそれぞれの金額を含むことができる。それから、クリーンルーム３００は、データ結果を入れたすべてのパートナの中の最後の３ヵ月でチョコレートに最も多額のお金を費やした上位１００人の消費者を決定することができる。
【０１４７】
いくつかの実施形態では、クリーンルーム３００は、接続２１６を介してこのデータ結果をクライアントシステム１１９に返送することができる。他の実施形態では、クリーンルーム３００はクライアントシステム１１９にこのデータ結果を与えずにおくことができて、その代わりに、クーポンまたはプロモーションの申し出を使用してより多くのチョコレートを購入することに興味を持っている可能性がある消費者のこのリストに、チョコレートのためのクーポンを送信することができる。
【０１４８】
図５を次に参照すると、クリーンルーム３００の例示のセキュリティおよび暗号化ユニット１２５とデータストレージ１０８とを示す。いくつかの実施形態では、各パートナ１１５は、最小限のデータのセットがクリーンルーム３００のデータストレージ１０８に記憶されるのを可能にする。また同時に、どのパートナも集約データにアクセスしたり見ることができないが、パートナはポータル１１６を通して利用可能な１つ以上の動作を要求することができる。例えば、パートナ１１５は、プラットフォーム１００に新規な申し出のために特定のユーザグループをターゲットとするよう求めることができる。別の例として、パートナは、プラットフォーム１００に、ユーザの特定の人口統計群にとって支出傾向が何であるかについて解析するよう求めることができる。
【０１４９】
パートナシステム１１５は、いくつかの実施形態では、パートナポータル１１６を含むことができる。パートナポータル１１６は、公開鍵を用いて消費者データを暗号化して、暗号化されたデータをプラットフォーム１００に送信するように構成することができる。パートナポータル１１６は、パートナ（例えば銀行および小売商）が鍵および証明書を生成しておよび／または記憶して、クリーンルームＡＰｌと通信するのを可能とすることができる。パートナシステム１１５は、消費者データをクリーンルーム３００に提供するときに、必要とされるＪＳＯＮデータフィールドを提供することができる。
【０１５０】
一旦暗号化されたデータがパートナポータル１１６からプラットフォーム１００に到着すると、それはデータパイプラインＡＰＩを通過て、それから、データストレージ１０８に記憶するために処理される。暗号化および解析ユニット１３１は、１つ以上のセキュアエンクレーブ１３３に複数のワーカーアプリケーションまたはノードを有することができ、その各々は、入って来る消費者データを処理するためにそれぞれの、および別個のセキュアエンクレーブ１３３にある。いくつかの実施形態では、各ワーカーアプリケーションまたはノードは、１つのパートナに特定の消費者データを処理することができる。すなわち、各パートナは、その特定のパートナからの消費者データを処理しているクリーンルーム３００の中の１つ以上のセキュアエンクレーブ１３３に専用のワーカーノード１３２ａ、１３２ｂを有することができる。
【０１５１】
セキュアエンクレーブ１３３の単一のワーカーアプリケーションまたはノード１３２ａ、１３２ｂは、セキュアデータウェアハウス１０８に記憶されるデータを解読して解析することができる。各ワーカーノード１３２ａ、１３２ｂは、パートナ構成ユニット、データモデルユニット、データ暗号化／解読ユニットおよびデータ解析ユニットを含むことができる。パートナ構成ユニットは、パートナに対する特定の情報を含むことができ、例えば、パートナ構成ユニットは、パートナからそれぞれのデータの属性、データタイプ、データフィールドおよび／またはデータサイズへの、データスキーマテンプレートマッピング着信データを提供することができる。
【０１５２】
データ暗号化ユニットは、暗号化技法またはアルゴリズムに基づいて１つ以上のデータセットを暗号化されたコンテンツに暗号化するように構成することができる。いくつかの実施形態では、暗号化ユニットは、１つ以上のデータセットを暗号化して暗号化されたデータ要素を生成するために適切な鍵を、決定するか、読み出すかまたは、生成する。暗号化のために用いられる各鍵は、鍵記憶１３０に記憶することができる。
【０１５３】
データ解読ユニットは、鍵に加えて、暗号化技法またはアルゴリズムに基づいて、１つ以上の暗号化されたデータセットをプレーンテキストに解読するように構成することができる。いくつかの実施形態では、データ解読ユニットは、１つ以上の暗号化されたデータセットを解読してプレーンテキストを生成するために適切な鍵を、決定するか、読み出すかまたは、生成する。
【０１５４】
データ解析ユニットは、解読データに解析を実行するように構成することができる。
【０１５５】
いくつかの実施形態では、必要とされるデータフィールドまたは属性の最小セットは、各パートナによって提供されることを必要とする。例えば、データの最小セットは、トランザクションの時間およびデータ、小売商名称、銀行名およびＩＤ、ＭＣＣ、認証コード、消費者名（分かっている場合）およびマスクされたＰＡＮを含むことができる。パートナによって送信されるいかなる追加データも、今後使うため記憶することができる。
【０１５６】
パートナシステム１１６は、消費者データをバッチで送信することができ、例えば、パートナがクリーンルーム３００に最初にサインアップするときに、大量のデータを１つ以上のバッチでセキュア通信チャネルを介してプラットフォーム１００にプッシュすることができる。しばしば、パートナからのデータの最初のバッチは複数の日、数ヶ月あるいは数年にわたっているデータを含むことがあり得、それは消費者のふるまいに対する有益な洞察を得るために解析することができる。データバッチはまた、プラットフォーム１００によって適切であると考えられるとき、または、設定された間隔（例えば月ごと）の間に発生する場合がある。
【０１５７】
パートナは、トランザクションが発生するとき（例えば消費者が店舗で購入をするとき）に、リアルタイムまたはほぼリアルタイムで消費者データを送信することもできる。
【０１５８】
データモデルユニットは、データが解読された後に、データモデル化およびデータ正規化のステップを実行するように構成されている。データモデルユニットは、ある期間に１回、例えばＸ時間またはＸ日ごとなど、データ正規化ジョブをスケジューリングして、新規な解読データをモデルに運ぶことができる。データモデルユニットは、データ正規化ジョブがデータモデルを簡素化するために正規化データを修正するたびに、モデル訓練ジョブをスケジューリングすることもできる。
【０１５９】
いくつかの実施形態では、データストレージ１０８は、必要に応じて拡張可能でもよい。
【０１６０】
図６は、クリーンルーム３００の各種要素を示している別の概略図である。いくつかの実施形態では、クリーンルーム３００は、パートナプロファイル１４０およびユーザプロファイル１４５を含むことができる。ユーザは、消費者を指すことができる。パートナプロファイル１４０は、パートナの登録詳細を含むパートナ登録を含むことができる。ユーザプロファイル１４５は、ユーザの登録詳細を含むユーザ登録を含むことができる。各パートナはパートナプロファイル１４０を有することができ、各ユーザはユーザプロファイル１４５を有することができる。各パートナおよびユーザは、データウェアハウスのデータモデルユニットによって定まるそれ自身のそれぞれのデータモデルを有することができる。
【０１６１】
図７は、データクラスタ配備および管理のためのデータモデル化ユニットおよびデータストレージユニット１０８の概略図を示す。見てわかるように、データモデルトレーナ、データモデルおよび暗号化／解読鍵は、セキュリティの強化のためにセキュアエンクレーブに記憶することができる。受信された消費者データは解読されて生データとして記憶することができて、それから、それは正規化されて正規化データとして記憶することができる。正規化データは、セキュアエンクレーブ１３３の中のモデルトレーナに送信することができて、モデルトレーナによってさらに処理することができる。異なるパートナが異なるデータセットを有することができるので、前記データセットは、集約して解析される前に正規化されることを必要とする。
【０１６２】
いくつかの実施形態では、システムは、トランザクションおよびＳＫＵデータを、（ｉ）特定の消費者、および／または、（ｉｉ）定められたセグメンテーション（例えば郵便番号、小売商、現在位置）にマップすることができる。例えば、消費者データは、１つ以上のデータフィールドに基づいて銀行システム１１２と取引システム１１３の間にマップすることができる。例えば、ＭＣＣおよび認可コードが同じトランザクションに対して銀行と小売商の間で共通であるので、認可コードおよび／またはＭＣＣを用いて、銀行からのトランザクションのためのトランザクションデータを小売商からの同じトランザクションのためのトランザクションデータとリンクすることができる。認証コードを使用することに対するセキュリティ上の懸念は、シャッフル操作のデータフローを観測することが認証コードに関する情報を漏らすということであり得る。いくつかの実施形態では、ノードは、クリーンルーム３００によって適切に決定したように、または、多くのジョブ当たりのベースで、時々ビン割り当てをランダム化するように構成することができる。
【０１６３】
いくつかの実施形態では、ノードは、例えば図９で図示するように入って来る認可コードの順序をシャッフルするように構成することができ、これは秘密ジョブ鍵がジョブの始めにドライバノードの中で保護されたコンポーネントによってワーカーに分配されることを示す。
【０１６４】
別の例として、金融商品のＰＡＮが利用できる場合、トランザクションはカードＰＡＮを使用して銀行と小売商の間にマップすることができる。しかしながら、ＰＡＮがＰＣＩコンプライアンスのため捕えられることはほとんどありそうにないが、認可コードはＰＡＮへリンクバックすることができる。
【０１６５】
加えて、発見的方法を位置および時間情報に基づいて用いて、トランザクションデータのリンクをさらに確認して、エラーを最小化することができる。
【０１６６】
図７に戻って参照すると、「ストレージ鍵」を用いて、ローカルストレージに記憶されるデータを暗号化してセキュアにすることができる。ストレージ鍵は、エンクレーブのシール鍵を用いて永久記憶に記憶することができる。暗号化鍵の喪失は、失敗につながり得る。「ジョブランダム化鍵」は、ワーカーノード間のジョブ分解をわかりにくくするために用いるドライバノードによって発行されるノンスである。「通信鍵」は、その他全てのネットワークノードで維持される。ノードは、トラストマネージャ１２７によって保証されるそれらの公開鍵によって識別される。
【０１６７】
図８は、適用される解析のタイプ（正規化、モデル訓練およびモデルの適用）に関係なくデータクラスタがどのように動作するかの概略を示す。プラットフォーム１００は、入力データの莫大な貯蔵場所から洞察を生成することができる。これは、１つ以上のマシン上で達成することができる。いくつかの実施形態では、Ｈａｄｏｏｐフレームワークは、汎用品コンピュータの大きいクラスタ上でビッグデータ解析を管理して実行するために実装することができる。クラスタリソース管理のタスクは、データからほとんど独立している。ワーカーエンクレーブは、リソース管理アプリケーション、例えばＨａｄｏｏｐ  ＹＡＲＮまたはＨａｄｏｏｐスタックの別のコンポーネントによって管理されるクラスタの中に組み込むことができる。場合によっては、データセットの量およびサイズは大きい場合があり（例えば、２５６ＭＢ以上）、それは分散記憶および処理のための複数のセキュアエンクレーブ１３３を必要とし得る。
【０１６８】
図１１Ａに示すように、リソース管理アプリケーションは、ワーカーノードによって遂行されるリソースおよび追跡ジョブを管理する。リソース管理アプリケーションは、ノードのアーキテクチャ上の機能を使用し、ローカルファイルシステムにアクセスし、必要に応じてメッセージを暗号化することを制御するオプションをユーザに与えることができる。いくつかの実施形態では、リソース管理アプリケーションは、ＹＡＲＮ（登録商標）を用いて実施することができる。リソース管理アプリケーションは、クライアント、アプリケーションマスターおよびワーカーアプリケーション（ワーカーノードまたはワーカーとも呼ぶことができる）などの各種要素を含むことができるかまたはそれらにリンクすることができる。
【０１６９】
クライアント、またはクライアントシステムもしくはアプリケーションは、データ処理またはデータ解析のための要求を提示することができる。
いくつかの実施形態では、クライアントシステムは、パートナシステム１１５などの外部の関係者、またはプラットフォーム１００もしくはクリーンルーム３００の中のコンポーネントでもよい。クライアントは、全入力ファイルをＨＤＦＳなどのデータベースに投入することもできる。
【０１７０】
アプリケーションマスター（または「マスターアプリケーション」）は、リソースを求めてネゴシエートし、作り出されたワーカーコンテナを要求して、それらのジョブ進行を追跡する。アプリケーションマスターは、リソースマネージャ（例えば図１１Ａを見る）にワーカーコンテナを作り出してかなりの量の解析を実行するよう求める。アプリケーションマスターは、入力ファイル全体およびファイルの中のどの部分を処理するべきかに関する指示も送信する。すべてのワーカーが終了したことを通知された後に、アプリケーションマスターは、それらの部分的な結果を結合する。
【０１７１】
ワーカーアプリケーションは、データ解析を実行する。ワーカーアプリケーションの複数のインスタンスであってもよい。各ワーカーはセキュアエンクレーブの中にあってもよく、あるいは、セキュアエンクレーブを含んでおり、そしてエンクレーブは、入力ファイルおよびそれが処理しなければならない間隔を受信することができる。解析はセキュアエンクレーブ内部で実施されて、結果はアプリケーションマスターが集約するためにＨＤＦＳの中へ書き戻される。
【０１７２】
セキュアエンクレーブの外部のデータのいかなる表現も、暗号化することができる。これは、ワーカーノードの中でシャッフルされる入力または中間データのいかなる区画も含む。ノードは、重要データを共有する前に、互いの真正性も点検する。
【０１７３】
図８に戻って参照すると、いくつかの実施形態では、クラスタ管理サブシステムは、セキュアエンクレーブが様々なデータセットの解析のための作業負荷を分散するために実装することができる。クラスタ管理サブシステムは、マスターアプリケーション（またはマスターノード）および１つ以上のワーカーアプリケーション（またはワーカーノード）を含むことができる。クラスタアプリケーションシステムは、複数のエンクレーブ内の複数のワーカーノードにジョブを管理して配布する、ＹＡＲＮリソースマネージャアプリケーションを含むことができ、それはデータを解読して処理することができる。ワーカーアプリケーションはＳｐａｒｋまたはＨ２Ｏエグゼキュータを含むこともできる。修正されていない分散データは、ＨＤＦＳ（Ｈａｄｏｏｐ分散ファイルシステム）などのデータベースに記憶することができる。
【０１７４】
いくつかの実施形態では、各ワーカーノードはデータセットの区画の最小限をとることができて、一旦それがなされると、その極小値をアプリケーションマスターに提出する。それから、アプリケーションマスターは、すべての極小値の最小限として、グローバルな極小値を計算する。このプロセスは、分散アプリケーションのどのコンポーネントが自由にデータを見ることを必要とするかについて指し示すことができる。リソース管理サブシステムそのもののコンポーネントがその必要性がないないことは、明白である。リソース管理サブシステムに提供するコンポーネントの中で、ワーカーおよびアプリケーションマスターはデータを見ることができ、それはセキュアエンクレーブの中で実施することができる。
【０１７５】
ＳＧＸエンクレーブなどのセキュアエンクレーブは、実行時ライブラリ（ウインドウズにおけるＤＬＬ、そしてＵＮＩＸ（登録商標）システムでもそうである）としてパックされる。それらは、別のネイティブアプリケーションによってホストされることを意味する。このアプリケーションは、代わりに、ＪＮＩ２ブリッジを通して主アプリケーションへ戻って接続する共有ライブラリそのものとすることもできるかまたは、Ｊａｖａ（登録商標）アプリケーションによって作り出される子プロセスとすることもできる。
【０１７６】
データベース管理システムは、クラスタ上の大きなファイルを記憶することを単純化して合理化するために実装することができる。それは、（障害弾力性のための）多重化、ロードバランシングおよび他のアプリケーションに依存しないタスクを処理する。
【０１７７】
セキュアエンクレーブ１３３の単一のワーカーアプリケーション（図８で「ワーカーノード」とも呼ばれる）は、リソース管理サブシステムまたはＹＡＲＮなどのアプリケーションと統合することができる。ワーカーアプリケーションは、セキュアデータウェアハウス１０８に記憶されたデータを解読して解析することができる。いくつかの実施形態では、リソース管理アプリケーション（例えば、ＹＡＲＮ）は、複数のＣＰＵを管理するために実装することができる。クラスタ管理アプリケーションは、複数のセキュアエンクレーブ全体の複数のワーカーアプリケーションを管理することができる。クラスタ管理アプリケーションは、図１１Ａおよび１１Ｂに示すように、ジョブスケジューリングを扱うこともできる。
【０１７８】
いくつかの実施形態では、セキュアエンクレーブ１３３の間に、追加的なセキュリティのための１つ以上の認証ステップがあってもよい。
【０１７９】
いくつかの実施形態では、セキュアエンクレーブの中のワーカーアプリケーションは、Ｃ＋＋などの適切なプログラミング言語を使用して実装することができる。いくつかの実施形態では、ＹＡＲＮおよび関連する管理機能は、Ｊａｖａ（登録商標）などの適切なプログラミング言語で実施することができる。いくつかの実施形態では、解析エンジンおよび解析モジュールは、ＰｙｔｈｏｎまたはＪａｖａ（登録商標）などの適切なプログラミング言語で実装することができる。
【０１８０】
アントラステッド環境にあるトラステッドワーカーアプリケーションは、互いと秘密データを共有して、ジョブランダム化を共有することを必要とする場合があり、適切に管理されていないと、カスタマデータを危険にさらすことになる。さらに、クライアント便宜のために、システムは１ポイントのエントリによって設計されなければならず、これは、クライアントが分散システムの１つのコンポーネントだけを検証しなければならず、それによってソリューション全体に対する信頼を得なければならないことを意味し、それは上記のようにリモート認証によって達成することができる。
【０１８１】
図１１Ａは、例示のリソース管理構造を示す。リソース管理サブシステムまたはアプリケーションは、リソースマネージャ１１００を含むＹＡＲＮおよび１つ以上のノードマネージャ１１２１、１１３１、１１５１を用いて構成して実装することができる。一旦ジョブ要求が、例えば、クライアントシステム１１９（例えばパートナシステム１１５またはプラットフォーム１００の異なるコンポーネント）からリソースマネージャ１１００によって受信されると、リソースマネージャ１１００は、コンテナ１１２０の中のノードマネージャ１１２１にリソースリクエストを送信することができ、それがアプリケーションマスター１１２３を生成することができる。次に、アプリケーションマスター１１２３は、コンテナ要求をリソースマネージャ１１００に返送することができ、そしてワーカーノード１３２ａ、１３２ｂを別個のコンテナ１１３０、１１５０の中に作り出して、タスクを実行する。
【０１８２】
図１１Ｂは、いくつかの実施形態による、リソース管理データ処理のための例示の概略図を示す。第１のステップとして、クライアントシステム１１９はジョブをＹａｒｎクラスタに提出して、アプリケーションマスター１１２３のためのコンテナを作製することができる。次に、アプリケーションマスター１１２３は、それぞれエンクレーブを有するいくつかのワーカーノードまたはコンテナ１３２ａ、１３２ｂ、１３２ｃを生成する。それから、コンテナ１３２ａ、１３２ｂ、１３２ｃは、データベース（例えば、ＨＤＦＳ）から符号化データを読み込んで、エンクレーブにデータを送信する。エンクレーブの中で、データは、デコードされ、処理され、再符号化されて、それから、外部コンテナに戻される。符号化された結果は、ＨＤＦＳへ書き戻されてクライアントシステム１１９がそれを読み出すことができる。各ワーカーノードは、特定のタスクを実行することができる。それらのいくつかまたは全部は、異なるジョブまたは同じジョブを実行することができる。いくつかの実施形態では、クライアントは、各ジョブの始めに全入力ファイルを提出することが必要である。データセットは、いかなる特定のジョブよりも長く残ることができて、クラスタ上ですでに休止してもよい。
【０１８３】
いくつかの実施形態では、ワーカーノードは、それらが入力ファイルの中でどの区画をローカルに記憶したかについて認識することができて、それをアプリケーションマスターに報告する。アプリケーションマスターは、それからワーカーに区画処理の割り当てに関して、情報に基づいた決定をすることができる。
【０１８４】
いくつかの実施形態では、コンテナ間の暗号化されたチャネルは、複雑なジョブを容易にするために実装することができる。ＨＤＦＳは、システムが障害から回復することができるようにしながら効率を改善するために、様々な方法でデータをミラーリングするように設定することができる。エンクレーブは、いくつかの場合では、それらがシャットダウンされる必要がある場合に備えて、一時的にそれらのそれぞれの進行を保存することができて、再開することができる。
【０１８５】
ＨＤＦＳを通してエフェメラルメッセージを伝えることは、非常に非効率的であり得る。いくつかの実施形態では、ノードは、互いの間にネットワーク接続を確立することができる。
【０１８６】
データセットは、ストレージの中に暗号化することができる。いくつかの実施形態では、すべてのワーカーノードは、単一の暗号化鍵を共有することができる。他の実施形態では、各ノードは、それ自身の暗号化鍵を有することができる。前者は、ファイルの全体論的ビューが可能であるので、単純性の利点がある。後者は、１つのノードを危殆化することに攻撃者が成功してもデータセット全体を露出させることにはならないので、より良好なセキュリティ保証を提供する。
【０１８７】
部分的な結果がアプリケーションマスターに集約することになっている場合、結果はセキュアエンクレーブに記憶することができる。いくつかの実施形態では、すべてのデータ解析はワーカーノードに委ねることができて、ジョブメタデータだけがアプリケーションマスターに露出され得る。
【０１８８】
いくつかの実施形態では、プラットフォーム１００のクリーンルーム３００は、クラスタ内の多くのマシン全体のデータの大きいバッチを処理することができる。例示の分散処理データベース設定は、Ｈａｄｏｏｐを用いて実行することができる。加えて、ＨＤＦＳ（Ｈａｄｏｏｐ分散ファイルシステム）は、データをノード間に分配する簡単な方法を提供する。ＳＰＡＲＫ（分散データ科学フレームワーク）も、Ｈａｄｏｏｐと共に実装することができる。例えば、アプリケーションマスターアプリケーションおよび１つ以上のワーカーアプリケーションは、それぞれ機械学習／データ解析コンポーネント、例えばＳｐａｒｋもしくはＨ２Ｏドライバまたはエグゼキュータを含むことができる。ドライバアプリケーションは、エグゼキュータ内部の鍵値記憶およびメモリマネージャなどの様々なプロセスのためのエグゼキュータアプリケーションを開始することができる。
【０１８９】
図１６をここで参照すると、リソースマネージャとしてＹＡＲＮを用いてデータ解析を実装している例示のＳｐａｒｋフレームワークを示す。Ａｐａｃｈｅ  Ｓｐａｒｋ（登録商標）はオープンソース分散汎用クラスタコンピューティングフレームワークであり、それは大規模なデータ処理のための解析エンジンを含むことができる。この例示の実施形態において、クライアントシステム１１９には、Ｓｐａｒｋクライアントがインストールされていてもよい。アプリケーションマスター１１２３には、リソースアプリケーションを調整するためにドライバアプリケーション１１２５がインストールされていてもよい。ドライバアプリケーション１１２５は、アプリケーションのｍａｉｎ（）関数を実行し、リソースを調整するためのＳｐａｒｋＣｏｎｔｅｘｔオブジェクトを作成して様々なデータ解析タスクを実行するプロセスでもよい。
【０１９０】
ワーカーアプリケーションまたはワーカーデーモンとして作用することができるＹＡＲＮコンテナは、１台のマシン上のリソース割付けを調整することができる。各ＹＡＲＮコンテナはエグゼキュータ１１２７ａ、１１２７ｂを含むことができ、それはＳｐａｒｋタスクまたはアプリケーションを実行することができる。一般的に言えば、エグゼキュータは、タスクを走らせて、データをそれら全体のメモリまたはディスクストレージ装置に保持するワーカーノードまたはＹＡＲＮコンテナ上のアプリケーションのために開始される、実装されたプロセスでもよい。各アプリケーションは、それ自身のエグゼキュータを有することができる。
【０１９１】
いくつかの実施形態では、ドライバアプリケーション１１２５は、別個のスレッド上のアプリケーションマスター１１２３の上で動くことができる。
【０１９２】
いくつかの実施形態では、Ｓｐａｒｋアプリケーションはクラスタ上のプロセスの独立セットとして動作することができ、ドライバアプリケーション１１２５のＳｐａｒｋＣｏｎｔｅｘｔオブジェクトによって調整される。例えば、クラスタ上で動作するために、ＳｐａｒｋＣｏｎｔｅｘｔオブジェクトは、ＹＡＲＮを含むいくつかのタイプのクラスタマネージャに接続することができ、それはアプリケーション全体のリソースを割り当てることができる。一旦接続されると、Ｓｐａｒｋはクラスタのノード上のエグゼキュータを得るが、それは計算を走らせクリーンルーム３００のためのデータを記憶するプロセスである。
【０１９３】
次に、それは、アプリケーションコード（ＳｐａｒｋＣｏｎｔｅｘｔオブジェクトに渡されるＪＡＲまたはＰｙｔｈｏｎファイルによって定義される）をエグゼキュータに送信することができる。最後に、ＳｐａｒｋＣｏｎｔｅｘｔオブジェクトは、実行するために、エグゼキュータ１１２７ａ、１１２７ｂにタスクを送信することができる。
【０１９４】
いくつかの実施形態では、Ｌｉｎｕｘ（登録商標）カーネルライブラリ（ＬＫＬ）およびＭＵＳＬライブラリを用いて、Ｓｐａｒｋフレームワークの下でドライバおよびエグゼキュータアプリケーションを実装することができる。ＬＫＬを用いて書かれたプログラムコードは、Ａｌｐｉｎｅ  Ｌｉｎｕｘ（登録商標）（それがｌｉｂｃの代わりにＭＵＳＬを使用するので）ＳＧＸ  ＬＫＬのために書かれた大部分のパッケージを含んで、ＭＵＳＬにリンクされる大部分のアプリケーションを実行することができる。ｇｃｃクロスコンパイルスクリプトだけが提供されているが、Ｃスクリプトを修正してＡｌｐｉｎｅ  ｇ＋＋パッケージから含むＣ＋＋を追加することによって、または単にＡｌｐｉｎｅ  Ｌｉｎｕｘ（登録商標）上でコンパイルすることによって、ｇ＋＋アプリケーションをコンパイルすることもできる。
【０１９５】
しかしながら、ＬＫＬを用いた実装へのいくつかの制限が存在する。例えば、大部分のアプリケーションは単一処理アプリケーションだけであるが、マルチスレッディングは可能である。メモリ集約型のアプリケーションが遅くなるほどの著しいページフォルトのオーバヘッドがあり得る。加えて、認証プロセスが信用のチェーンが確立されることを必要とするので、認証プロセスは第１の証明がＬＫＬエンクレーブの初期状態の間に実行されるのを必要とする可能性があり、それから、エンクレーブを使用して仮想ディスク画像のハッシュを検証する。
【０１９６】
上述の制限を克服するために、クリーンルーム３００は、いくつかの実施形態によれば、修正されたＳｐａｒｋフレームワークを有することができる。ＳｐａｒｋおよびＨａｄｏｏｐの組合せは、以下のようないくつかの修正を必要とし得る：
・ＤａｔａＴｉｍｅＵｔｉｌｓ．ｓｃａｌａの削除
・ｆｏｒｋ（）（ＯＳ機能について調べるか、またはユーザがいるグループを見つけるために複数回使用される）の使用の削除または回避
・デフォルトであるＳｈｅｌｌＢａｓｅｄＵｎｉｘＧｒｏｕｐｓＭａｐｐｉｎｇ．ｊａｖａの使用を避けるためのカスタムＧｒｏｕｐｓバックエンドの提供
【０１９７】
これらの例示の修正により、ローカル（単一ノード）スタンドアローンモードで働いているＳｐａｒｋフレームワークを得ることができる。
【０１９８】
いくつかの実施形態では、クリーンルーム３００が多くの暗号化されたデータを受信するので、それはデータをデータ解析のためのアプリケーションマスター１１２７に分配することができる。ドライバアプリケーション１１２５は、暗号化されたデータを受信することができて、データを１つ以上のエグゼキュータ１１２７ａ、１１２７ｂに送信して、１つ以上のデータ解析タスクを実行することができる。
【０１９９】
各エグゼキュータの中で、別個の実行プロセスが、機密データ（トラステッド、セキュア環境において処理されることを必要とする）と非機密データ（アントラステッド環境において計算することができる）の間に発生する場合がある。図１７をここで参照すると、これは、Ｓｐａｒｋフレームワークの下での例示のエグゼキュータ構造を示す。エグゼキュータ１１２７は、Ｊａｖａ仮想マシン（ＪＶＭ）１１２８などのアントラステッド環境、トラステッドＪＶＭ１１２９などのトラステッド環境および共有メモリ２００３を含む３つのコンポーネントを有することができる。
【０２００】
アントラステッドＪＶＭ１１２８は、どのようなカスタマまたは財務データも含まないメタデータなどの、非機密データのためのデータ解析を実行するように構成することができる。アントラステッドＪＶＭ１１２８はブロックマネージャを有することができ、それはデータブロックの鍵値記憶（ブロック記憶）でもよい。ブロックマネージャは、各エグゼキュータのローカルキャッシュとして機能することができて、様々な記憶、すなわちメモリ、ディスクおよびオフヒープを用いて、ローカルおよびリモートの両方でブロックをアップロードしてフェッチするためのインタフェースを提供することができる。アントラステッドＪＶＭ１２８は、Ｓｐａｒｋアプリケーションのための分散コンピューティングプラットフォームを確立するために互いに対話するＳｐａｒｋのパブリックサービスを有するＳｐａｒｋ実行時環境でもよい、ＳｐａｒｋＥｎｖ２００４を含むことができる。アントラステッドＪＶＭの中のダミータスクランナ２００６は単一タスクの実行のスレッドとすることができ、それはエグゼキュータがタスクを実行するよう求められるときに作成することができる。ダミータスクランナ２００６は、トラステッド環境の範囲内で処理される必要はない非機密データ上のタスクを実行することしかできない。
【０２０１】
トラステッドＪＶＭ１１２９は機密データ上のタスクを実行するように構成された単離されたタスクランナ２００７を含むことができ、機密データはデータ処理の前に解読することができる。
【０２０２】
共有メモリ２００３は、リングバッファメッセージキューおよび共有オブジェクト領域／アリーナを含むことができる。ＬＫＬライブラリは、プレーンテキスト共有メモリファイルを提供する。いくつかの実施形態では、共有メモリを通じて通信する方法は、リングバッファメッセージキューを使用している。リングバッファを実装するには、ロック構造へのアクセスを必要とし得る。ｐｔｈｒｅａｄ共有ミューテックスは、これらがカーネルオブジェクトによってサポートされており、ホストおよびＬＫＬコンテナは別個のカーネルを有することができるので、実装することが困難である。その代わりに、アトミック操作（スピンロック）は、これらがハードウェア操作によってサポートされるので、実装することができる。
【０２０３】
下記は、本明細書において記載されているいくつかの実施形態による、共有メモリリングバッファの例示のコードである。
【表１】
2021533435.tif 000003
【０２０４】
いくつかの実施形態では、メモリマップドファイルおよびアトミック操作は（Ｊａｖａ（登録商標）またはスカラよりむしろ）Ｃ＋＋で、より効率的に実装される。
例えば、ＪＮＩブリッジおよびラッパクラスは、Ｊａｖａ（登録商標）からネイティブコードを呼び出すために実装することができる。他の実施形態では、ＪＮＡを使用することができるが、それはｆｏｒｋ（）を呼び出す。下記は、リングバッファ実装のためのプログラムコードの例示のブロックである。
【表２】
2021533435.tif 000004
【０２０５】
図１８は、いくつかの実施形態による、Ｓｐａｒｋフレームワークの下でドライバアプリケーション１１２５と協力する例示のエグゼキュータ構造１１２７を示す。ドライバ１１２５は、Ｓｐａｒｋ実行時環境ＳｐａｒｋＥｎｖ２００１ならびに解読データ用のデータストレージ領域２００２を含むことができ、それはメタデータ（例えばファイル−ディレクトリ情報）などの非機密情報を含むことができる。
【０２０６】
下記は、本明細書において記載されているいくつかの実施形態による、例示のテストドライバアプリケーション１１２５である。
【表３】
2021533435.tif 000005
【０２０７】
エグゼキュータ１１２７は、アントラステッドＪＶＭ１１２８、共有メモリ通信２００３およびトラステッドＪＶＭ１１２９を含む。アントラステッドＪＶＭ１１２８は、ＳｐａｒｋＥｎｖ２００４、暗号化されたデータのためのデータストレージ領域２００５およびダミータスクランナ２００６を含む。暗号化されたデータは、暗号化された形式でドライバ１１２５から送信されることができて、共有メモリ通信２００３を通して暗号化された形式でトラステッドＪＶＭ１１２９に送信することができる。一旦暗号化されたデータがトラステッドＪＶＭ１１２９に到達すると、それは解読することができて、解読データ用のデータストレージ２００８に記憶することができて、その後トラステッドＪＶＭ１１２９の中で単離されたタスクランナ２００７によって処理することができる。
【０２０８】
図１９は、いくつかの実施形態による、機械学習アーキテクチャ１９００およびデータフローの例示のブロック図である。セキュア処理のための機構を目的とする仮想クリーンルームプラットフォームが示されている。データは、とりわけ小売商、銀行を含む様々なソースから受信される。
【０２０９】
図１９に示されるように、モデルタイプ（例えば推薦者、クラスタリング）およびデータセットｉｄを選択することによって、小売商／データの所有者が訓練フローを開始することができる機械学習ＡＰＩが提供されている。
【０２１０】
小売商パートナコンピューティング装置はモデルにブラックボックスアクセスを有して、モデル訓練はバッチモード訓練フェーズで実行することができる。変形では、他の訓練フェーズは、ほぼリアルタイムの、オンライン訓練ＡｕｔｏＭＬおよび対話型モデル設計を含むことができる。モデルは、異なる使用事例に適した様々な方法（例えば、Ｋ平均マトリックス因子分解、ランダムフォレスト、その他）を含むことができる。システムは、データ要素ごとにアクセス制御許可（例えば、読み出し、作成、更新、削除）、プラットフォームパートナごとおよびそれらの１つの部門の中の役割（例えば、マーケティングおよびＳＡＩは、異なるデータアクセス制御権を有する）がすでに定義されているという明確な図示を確立するセキュリティ設定を含む。
【０２１１】
各ソースは、特定のカスタマデータの管理者であり得る。しかしながら、各ソースは、例えば、様々なプライバシー指令およびベストプラクティスにより、他のパートナが利用できるそれらのカスタマデータを有することを望まない場合がある。セキュア処理は、適切なアクセス権を有することのない関係者が機械学習データアーキテクチャにおいて使われている基本的データの１つ以上の部分にアクセスすることができないように、全体的な計算ステップを保護することを目的としている。
【０２１２】
データセットは、プラットフォームにすでに取り込まれて、共通スキーマに調和されて、銀行データ所有者（例えば、機械学習役割）データセットに集約されたとみなされる。小売商データ所有者は、そのパラメータ、重み付けなどを調整することによって選択されたモデルにきめ細かいアクセスをしてはまらない。小売商はモデルタイプを指定することができるだけであるが、サービス提供者はさらにモデルをさらに調整することが可能である。
【０２１３】
データは、暗号化された形式で提供され、データ処理およびシステムのためにロードされる。モデルアーキテクチャワークフローマネージャは、訓練活動ならびにワークフロー進行のためのマシンモデルを編成する。モデルアーキテクチャワークフローマネージャは、選択されたモデル、小売商および銀行パートナに関連する特定のデータセットに対して集約データ記憶に問い合わせるように構成される。プライバシー機密データ要素またはデータセットは、パートナのデータのプライバシーを確実にするために暗号化される。
【０２１４】
一実施形態において、セキュアエンクレーブ（例えば、ハードウェアもしくはソフトウェアまたはそれらの組み合わせである単離されたデータプロセッサ）は、機械学習サブタスクを実行するために利用される。セキュアエンクレーブは、いくつかの実施形態では、基本的データに安全にアクセスするために用いられる暗号化鍵を記憶することができる。システムは、点線に示される一連のセキュアエンクレーブプロセッサを含み、それはデータ科学洞察を表わすデータ構造を生成するために協力して作動するのに適している。
【０２１５】
例えば、データ処理はＳＧＸエンクレーブの中にホストすることができて、そこで、集約データセットは、訓練フローに供給される前に、さらなる処理のためにロードされる。エンクレーブにおいて、データは解読され、それから、必要なフォーマッティング、変換を適用して、欠落値を補完し、異常値を特定して削除することなどが行われる。処理が完了すると、それからデータは暗号化されて別のコンポーネントに送られ、それが処理されたデータをデータベースに保存する。
【０２１６】
セキュアエンクレーブ処理はコンピューティングリソース制約に関して制約につながり、それにより性能および速度の低下に至る可能性がある。セキュアでない処理方法に対して、暗号化およびアクセス制限要件によって結果として複雑さが増加する。
【０２１７】
したがって、本明細書において様々な実施形態に記載されているように、強力なプライバシーおよび強固なセキュリティを有する機械学習データアーキテクチャを目的とする方法が提案される。機械学習アーキテクチャは、いくつかの実施形態では、複数の相互に連結したセキュアエンクレーブ処理区画（例えば、別個のセキュアエンクレーブプロセッサ）を含み、それが別個の訓練モデルアーキテクチャを処理して、維持する。
【０２１８】
いくつかの実施形態では、データサイズが、例えば、９０ＭＢを超える場合、それは区画化されて、反復的に送信されて、複数のＳＧＸエンクレーブによって処理されることを必要とする。特に、セキュアエンクレーブプロセッサによる利用できるデータ処理性能についての制約のため、データ区画化ユニット１９０２は、個々のデータ処理区画１９０４および１９０６がそれぞれ、並行して、個々に記憶されたモデルデータアーキテクチャを使用してデータを処理するように、データを区画化するのに適している。いくつかの実施形態では、個々のデータ処理区画１９０４、１９０６は、別個のセキュア処理エンクレーブである。
【０２１９】
データ区画化ユニット１９０２は、１つ以上のセキュアエンクレーブサブプロセッサを提供して、１つ以上のセキュアエンクレーブサブプロセッサのそれぞれに暗号化されたデータの区画を送信するように構成された電子回路として実装することができる、区画コントローラエンジンである。
【０２２０】
機密データ要素は、それらがロードされるときに暗号化されたままである。エンクレーブにおいて、処理されたデータが解読され、そして集約および計算が、新たな特徴を抽出するために適用される。特徴抽出が完了すると、次いで特徴データセットは暗号化される。各訓練フェーズが完了すると、モデル出力、パラメータ、重み付け、メトリックが暗号化される。
【０２２１】
データが各区画を通して処理されるので、別個のモデルアーキテクチャが更新されて、更新されたモデルアーキテクチャパラメータデータ構造を生成する。個々のデータ処理区画１９０４、１９０６の１つ以上のセキュアエンクレーブサブプロセッサは、機械学習アーキテクチャのローカルコピーを使用して暗号化されたデータの対応する区画を処理して、１つ以上のパラメータ更新データ構造を生成するように構成される。
【０２２２】
区画のそれぞれからの更新されたモデルアーキテクチャパラメータデータ構造は、パラメータ集約ユニット１９０８（例えば、それ自身のエンクレーブであることができるパラメータサーバ）で集約される。
【０２２３】
パラメータ集約ユニット１９０８は、集約訓練モデルアーキテクチャの更新を保存し、それがそれからセキュア処理流儀に再伝播されるように構成される。それは、ＳＧＸエンクレーブの中に配備することができて、それは、モデルのパラメータ、重み付けなどのためのすべての更新を受信する。モデルは、それがエンクレーブを離れるときに暗号化することができる。
【０２２４】
いくつかの実施形態では、少なくとも２つのセキュアエンクレーブサブプロセッサ１９０４および１９０６は、互いの間で直接１つ以上のパラメータ更新データ構造を送信して、機械学習アーキテクチャの対応するローカルコピーを更新するように構成される。
【０２２５】
いくつかの実施形態のこのアーキテクチャは、セキュアエンクレーブ区画のスループット低下に関連した技術的な制約を克服する際の助けとなる。例えば、いくつかのセキュアエンクレーブ区画は、約９０ＭＢ以下のモデルアーキテクチャサイズに限られている。したがって、多くの調整された区画は協力して作動して、全体のセキュア処理を提供する。
【０２２６】
訓練モデル、そのパラメータ、重み付けなどは、予測／スコアリング機構によりさらに使用し続けられる。
【０２２７】
別の実施形態では、エンクレーブ区画はまた、並行オペレーションの間、互いに相互接続を有するように構成され、その結果、エンクレーブ区画は、アグリゲータプロセッサから訓練モデルの更新されたパラメータを受信することとは対照的に、各々の間で決定パラメータを共有することができ、例えば、パートナのための出力ＡＰＩを通して利用可能となり、それは予測結果について以前に訓練されたモデルを問い合わせることができる。それは、パートナｉｄ、モデルタイプおよびデータレコードを入力として受信して、機械学習予測を適用する。ＡＰＩは、予測結果を出力してユーザへ戻すことができる。
【０２２８】
いくつかの実施形態において説明したように、機械学習およびセキュア学習のためのアプリケーションは、例えば、識別子の訓練セットとの類似点に基づいてクラスタを識別するためのカスタマ識別子のサブセットを含む機械学習モデルアーキテクチャによる、データ構造の生成を含む。
【０２２９】
例えば、識別子の訓練セットは高収益のロイヤルカスタマを含むことができ、訓練モデルアーキテクチャを利用して、訓練セットの中にはないが潜在的ターゲットとして留意すべきであり得る、ターゲットカスタマを識別することができる。この例では、セキュアな機械学習データアーキテクチャを用いたセキュア処理を使用して、機密カスタマデータを含み得る基本的データの不正アクセスが不正ユーザによりなされていないことを確実にする。セキュアエンクレーブプロセッサを用いて、例えば、小売商が、特にこのような小売商がカスタマプロファイルの管理者でない場合に、カスタマプロファイルの全体図を有しないことを確実にする。
【０２３０】
予測は、例えば、スコアリング結果を予測するための実際の計算を実行するＳＧＸエンクレーブとして配備される訓練モデルを利用する。訓練モデルアーキテクチャおよび入力データレコードは予測器エンジンに提供されて、それは予測スコア、信頼度メトリックなどをカプセル化している一つ以上のデータ構造を出力する。予測結果（モデルｉｄ、モデルタイプ、パートナｉｄ、予測スコア、入力レコード）は、さらなるパフォーマンス監視のためにデータベースに記録することができる。
【０２３１】
図２０は、異なる層のカスタマへのリソース割り当てを示す例示の図である。
この例では、小売商がそれらの主要なリソースに焦点を当ててティア１カスタマを理解しサービスすることが認められる。
【０２３２】
小売商は外部の企業を活用して、リソースを強化し、ティア２およびティア３カスタマベースをターゲットとすることができる。金融機関（ＦＩ）などの別の機関が、機械学習メカニズムを提供して、（ｉ）それらのティア１カスタマ（ロイヤルティおよび非ロイヤルティ会員）を解析し、（ｉｉ）洞察を適用してカスタマをティア２からティア１にドライブする、という機会がある。Ｆｌの水平方向データを利用して、よりよく洞察を評価して適用し、小売商パートナのための移行をドライブすることができ、結果としてロイヤルティおよび収入の増大になる。同様に、機械学習モデルを使用して、ティア３＋カスタマを移行させることができる。
【０２３３】
図２１は、いくつかの実施形態による、２つの異なるデータセットのカスタマの間においてクロスオーバーおよびターゲティング機会の領域を示している例示のベン図２１００である。小売商として、目的は、ＳＫＵ申し出によって店舗で買い物をしない新規のカスタマと結びつきたいという希望であり得る。
【０２３４】
オーバーラップ領域は、機械学習モデルアーキテクチャを訓練するために使われるカスタマを含む。したがって、人物属性は、機械学習モデルを訓練することによって抽出可能である。例えば、小売商は、小売商が動かしたい供給過剰のボーズ１２３４スピーカを有している場合がある。システムはボーズ１２３４スピーカを買ったＦＩ＋Ｍ１カスタマのアイデンティティを使用してモデルを訓練し、このモデルがそれらの人物属性（例えば、位置、年齢、状態）を識別する。
【０２３５】
一旦機械学習モデルが訓練されると、それらは小売商ものまたは金融機関のカスタマセットから新しい人物に対して適用されて、ターゲットとするポテンシャルカスタマを識別することができる。この例では、新しく識別されたカスタマに発信することができるスピーカ購入品の提案が存在してもよい。この場合、機械学習モデルアーキテクチャはカスタマのターゲットの識別子をカプセル化しているデータ構造を提供し、それを用いて自動的な申し出生成および配信のための機械語命令を生成することができる。人物属性はＭ１カスタマに対してでなくＦＩクライアントに適用されて、システムはそれらのＦＩクライアントに対するボーズ１２３４スピーカのＳＫＵ提案の送信を制御することができる。
【０２３６】
図２２および図２３は、生成された推奨の例を示す。
【０２３７】
図２２は、いくつかの実施形態による、生成された推奨を示しているグラフィックウィジェットを示すのに適しているグラフィカルユーザインタフェースの例示の描写２２００である。この描写において、申し出生成小売商ポータルダッシュボードが提供され、それは、人物のターゲットセットを生成する推奨ウィジェットを含み、この場合、推奨の対する理論的根拠につながることができる属性も示す。このアプローチは、オーディエンスビルダに適用される選択基準を改良するために用いることができて、図２１の申し出キャンペーンにおいて提供されている情報に基づく推奨のオーディエンスに基づいて、オーディエンスを設定するためのプロセスの自動化を提供することができる。
【０２３８】
図２３は、いくつかの実施形態による、生成された複数の推奨を示しているグラフィックウィジェットバーを示すのに適しているグラフィカルユーザインタフェースの例示の描写２３００である。このウィジェットバーにおいて、複数の推奨が示され、それはターゲットとすることができるカスタマおよびこれらのカスタマがターゲットとされる理由の正当性について、機械学習データアーキテクチャの機械学習出力に基づかずに示している。
【０２３９】
システムはＶＣＲコアのデータおよび、（ｉ）アイデンティティが魅力的なオーディエンスと、（ｉｉ）小売商が考察しなければならない提案申し出キャンペーンを評価する。例：ＶＣＲは、財産の増加、環境および長距離移動に対する肯定的な感受性のために、電気自動車を購入する可能性が高い、２５万人のカスタマが存在することを発見する。ＣａｒＣｏに、ＶＣＲのパートナがこのオーディエンスセグメントに１０００ドルの申し出を発表することを推奨する。
【０２４０】
図２４は、いくつかの実施形態による、例示の生産環境およびデータフローの図である。この変形例において、金融機関および小売商にはそれぞれ、対応する専用のコンテナ化された環境がある。小売商のデータはＳＫＵデータによって通知されることができ、小売商がＳＫＵレベルで販売さている実際の製品またはサービスの購入とつなぐことができる。
【０２４１】
図１２は、サーバなどのコンピューティング装置１２００の概略図である。図示されるように、コンピューティング装置は、少なくとも１つのプロセッサ１２０２、メモリ１２０４、少なくとも１つのＩ／Ｏインタフェース１２０６および少なくとも１つのネットワークインタフェース１２０８を含む。
【０２４２】
プロセッサ１２０２は、ＩｎｔｅｌもしくはＡＭＤのｘ８６かｘ６４、ＰｏｗｅｒＰＣ、ＡＲＭプロセッサまたは同様のものでもよい。
メモリ１２０４は、内部的に、または、外部的に配置されている、例えば、ランダムアクセスメモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、コンパクトディスク読み取り専用メモリ（ＣＤＲＯＭ）などの、コンピュータメモリの適切な組み合わせを含むことができる。
【０２４３】
各Ｉ／Ｏインタフェース１２０６は、コンピューティング装置１２００が、キーボード、マウス、カメラ、タッチスクリーンおよびマイクロホンなどの１つ以上の入力装置との、または、ディスプレイスクリーンおよびスピーカなどの１つ以上の出力装置との相互接続をするのを可能にする。
【０２４４】
各ネットワークインタフェース１２０８は、コンピューティング装置１２００が、他のコンポーネントと通信し、データを他のコンポーネントと交換し、ネットワークリソースにアクセスして接続し、アプリケーションのために動作し、そして、他のコンピューティングアプリケーションを実行することを、インターネット、Ｅｔｈｅｒｎｅｔ、普通の電話サービス（ＰＯＴＳ）線、公衆交換電話網（ＰＳＴＮ）、総合サービスデジタルネットワーク（ＩＳＤＮ）、デジタル加入者線（ＤＳＬ）、同軸ケーブル、光ファイバ、衛星、携帯、無線（例えばＷｉ−Ｆｉ、ＷｉＭＡＸ）、ＳＳ７信号ネットワーク、固定回線、ローカルエリアネットワーク、広域ネットワーク、およびその他これらのあらゆる組合せを含む、データを搬送することができるネットワーク（または複数のネットワーク）に接続することによって、可能にする。
【０２４５】
コンピューティング装置１２００は、アプリケーション、ローカルネットワーク、ネットワークリソース、他のネットワークおよびネットワークセキュリティデバイスにアクセスを提供する前に、（例えばログイン、一意識別子およびパスワードを使用して）ユーザを登録して認証するように動作可能である。コンピューティング装置１２００は、１つのユーザまたは複数ユーザのために動作することができる。
【０２４６】
図１３は、ＴＥＥを有するプラットフォーム１００によって実行される例示のフローチャート１３００を説明する。ステップ１３１０で、プラットフォーム１００は、パートナシステム１１５のアイデンティティを検証することができる。ステップ１３２０で、プラットフォーム１００は、パートナのアイデンティティの検証に応じて、消費者データを暗号化するためにパートナシステム１１５に、通信鍵を発行することができる。ステップ１３３０で、プラットフォーム１００は、通信鍵を用いて暗号化されるパートナから、暗号化されたデータを受信することができる。ステップ１３４０で、プラットフォーム１００は、暗号化されたデータをストレージ鍵とともに記憶し、ＴＥＥの中で暗号化されたデータの不正アクセスを防止することができる。ステップ１３５０で、プラットフォーム１００は、暗号化されたデータを解読して解析し、解読データに基づいて推奨を生成することができる。
【０２４７】
本明細書において記載されているデバイス、システムおよびプロセスの実施形態は、ハードウェアおよびソフトウェアの組合せで実施することができる。これらの実施形態はプログラム可能なコンピュータ上で実施することができ、各コンピュータは、少なくとも１つのプロセッサ、データストレージシステム（揮発性メモリまたは不揮発性メモリまたは他のデータストレージ要素またはそれらの組み合わせを含む）および少なくとも１つの通信インタフェースを含む。
【０２４８】
プログラムコードは入力データに適用され、本明細書において記載されている機能を実行して、出力情報を生成する。出力情報は、１つ以上の出力装置に適用される。いくつかの実施形態では、通信インタフェースは、ネットワーク通信インタフェースでもよい。要素を組み合わせることができる実施形態では、通信インタフェースは、プロセス間通信のためのものでるソフトウェア通信インタフェースでもよい。さらに他の実施形態では、ハードウェア、ソフトウェアおよびそれらの組み合わせとして実施される通信インタフェースの組合せが存在し得る。
【０２４９】
前述の考察の全体にわたって、多数の参照を、制御およびコンピューティング装置に関して行うことができる。このような用語の使用は、コンピュータ可読の、有形の、非一時的媒体に記憶されるソフトウェア命令を実行するように構成されている、少なくとも１つのプロセッサを有する１つ以上のコンピューティング装置を表すことができることが理解されるべきである。例えば、プラットフォーム１００は、記載されている役割、責任または機能を成し遂げる方法でウェブサーバ、データベースサーバまたは他のタイプのコンピュータサーバに結合された、１つ以上のコンピュータを含むサーバを有することができる。
【０２５０】
前述の考察は、多くの例示の実施形態を提供する。各実施形態は発明の要素の単一の組合せを表すが、他の例は開示された要素のすべての可能な組み合わせを含んでもよい。したがって、一実施形態が要素Ａ、Ｂ、およびＣを含み、第２の実施形態は要素ＢおよびＤを含む場合、Ａ、Ｂ、Ｃ、またはＤの他の残りの組合せも使用することができる。
【０２５１】
用語「接続される」または「結合される」は、直接の結合（互いに結合された２つの要素が互いに接触する）および間接的な結合（少なくとも１つの追加要素が２つの要素の間に配置される）の両方を含むことができる。
【０２５２】
実施形態の技術的解決策は、物理的動作を指示しているソフトウェア製品の形であってもよい。ソフトウェア製品は不揮発性であるか非一時的記憶媒体に記憶することができ、それはコンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、ＵＳＢフラッシュディスクまたは着脱可能なハードディスクであることができる。ソフトウェア製品は、コンピュータ装置（パーソナルコンピュータ、サーバまたはネットワーク装置）が実施形態により提供されるプロセスを実行することを可能にする多くの命令を含む。
【０２５３】
本明細書において記載されている実施形態は、コンピューティング装置、サーバ、受信機、送信機、プロセッサ、メモリ、ディスプレイ、およびネットワークを含む、物理コンピュータハードウェアによって実施される。本明細書において記載されている実施形態は、有用な物理コンピュータおよび特に構成されたコンピュータハードウェア装置を提供する。本明細書において記載されている実施形態は、様々なタイプの情報を表す電磁信号を処理して変換するのに適応した電子マシンおよび電子マシンによって実施されるプロセスを対象としている。本明細書において記載されている実施形態は、全面的に、そして完全に、マシンおよびそれらの用途に関し、そして、本明細書において記載されている実施形態は、コンピュータハードウェア、マシンおよび様々なハードウェアコンポーネントのそれらの使用の範囲外の意味または実際的な適用可能性を有してない。非物理的なハードウェアのための様々な行為を、例えば精神的ステップを使用して実行するように特に構成されている物理ハードウェアを置換することは、実施形態が機能する方法に実質的に影響を及ぼし得る。このようなコンピュータハードウェア制限は、本明細書において記載されている実施形態の明らかに本質的要素であり、それらは、本明細書において記載されている実施形態の操作および構造に具体的な影響を及ぼさずに省略することまたは精神的手段と置換することはできない。コンピュータハードウェアは、本明細書において記載されている様々な実施形態を実施するために必須であり、迅速に、そして、効率的な方法でステップを実行するために単に用いるものではない。
【０２５４】
プラットフォーム１００は、少なくとも１つのプロセッサ、データストレージ装置（揮発性メモリまたは不揮発性メモリまたは他のデータストレージ素子またはそれらの組み合わせを含む）および少なくとも１つの通信インタフェースを有するコンピューティング装置として実装することができる。コンピューティング装置コンポーネントは、直接結合されること、ネットワークを介して間接的に結合されること、および広い地理的エリアを通じて配信されてネットワークを介して接続されること（これは「クラウドコンピューティング」と呼ばれてもよい）を含む様々な方法で接続することができる。
【０２５５】
例えば、そして、限定されるものではないが、コンピューティング装置は、サーバ、ネットワーク機器、微小電気機械システム（ＭＥＭＳ）もしくはマイクロサイズ機械装置、セットトップボックス、組み込みデバイス、コンピュータ拡張モジュール、パーソナルコンピュータ、ラップトップ、個人データアシスタント、携帯電話、スマートフォンデバイス、ＵＭＰＣタブレット、ビデオディスプレイ端末、ゲームコンソール、電子書籍デバイス、および無線ハイパーメディアデバイスまたは、本明細書において記載されているプロセスを実行するように構成することができる任意の他のコンピューティング装置であってもよい。
【０２５６】
プロセッサは、例えば、マイクロプロセッサもしくはマイクロコントローラ、デジタル信号処理（ＤＳＰ）プロセッサ、集積回路、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、再構成可能なプロセッサ、プログラム可能読取り専用メモリ（ＰＲＯＭ）またはそれらの組み合わせでもよい。
【０２５７】
データストレージ装置は、内部的に、または、外部的に配置される任意のタイプのコンピュータメモリの好適な組み合わせを含むことができる。
【０２５８】
コンピューティング装置は、コンピューティング装置がキーボード、マウス、カメラ、タッチスクリーンおよびマイクロホンなどの１つ以上の入力装置との、または、ディスプレイスクリーンおよびスピーカなどの１つ以上の出力装置と相互接続するのを可能にする、Ｉ／Ｏインタフェースを含むことができる。
【０２５９】
実施形態を詳細に説明したが、様々な変更、置換えおよび修正を本明細書において行うことができることを理解すべきである。
【０２６０】
さらに、本出願の範囲は、本仕様に記載されているプロセス、マシン、製造物、合成物、手段、プロセスおよびステップの、特定の実施形態に限定されることを意図していない。当業者が、本発明の開示内容から直ちに理解するように、本願明細書において、記載されている対応する実施形態と実質的に同一の機能を実行し、または実質的に同一の結果を達成する、現在既存であるか今後開発される、プロセス、マシン、製造物、合成物、手段、プロセスまたはステップが、利用できる。したがって、添付の請求の範囲は、それらの範囲の中でこのようなプロセス、マシン、製造物、合成物、手段、プロセスまたはステップを含むことを意図している。
【０２６１】
理解することができるように、上で記載されて説明されている実施例は例示的でしかないことを意図している。
【０２６２】
出願人は、記載されている実施形態および実施例が例証で非限定的であることを注釈する。機能の実際的な実装は態様の一部もしくは全部の組合せを組み込むことができ、本明細書において記載されている機能は、将来または既存の製品計画を示すものと考えるべきでない。出願人は基礎的および応用的研究の両方に加わっており、いくつかの場合では、記載されている機能は試験的なベースで開発されている。
【図１】
2021533435.tif 000006
【図２Ａ】
2021533435.tif 000007
【図２Ｂ】
2021533435.tif 000008
【図３】
2021533435.tif 000009
【図４】
2021533435.tif 000010
【図５】
2021533435.tif 000011
【図６】
2021533435.tif 000012
【図７】
2021533435.tif 000013
【図８】
2021533435.tif 000014
【図９】
2021533435.tif 000015
【図１０】
2021533435.tif 000016
【図１１Ａ】
2021533435.tif 000017
【図１１Ｂ】
2021533435.tif 000018
【図１２】
2021533435.tif 000019
【図１３】
2021533435.tif 000020
【図１４】
2021533435.tif 000021
【図１５】
2021533435.tif 000022
【図１６】
2021533435.tif 000023
【図１７】
2021533435.tif 000024
【図１８】
2021533435.tif 000025
【図１９】
2021533435.tif 000026
【図２０】
2021533435.tif 000027
【図２１】
2021533435.tif 000028
【図２２】
2021533435.tif 000029
【図２３】
2021533435.tif 000030
【図２４】
2021533435.tif 000031
【国際調査報告】
2021533435.tif 000032
2021533435.tif 000033
2021533435.tif 000034
2021533435.tif 000035
2021533435.tif 000036
2021533435.tif 000037
2021533435.tif 000038
2021533435.tif 000039
2021533435.tif 000040
2021533435.tif 000041
2021533435.tif 000042
2021533435.tif 000043
2021533435.tif 000044
2021533435.tif 000045
2021533435.tif 000046
2021533435.tif 000047