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

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

▶ ロイヤル バンク オブ カナダの特許一覧

特許7422686セキュアな電子トランザクションプラットフォームのためのシステムと方法
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-18
(45)【発行日】2024-01-26
(54)【発明の名称】セキュアな電子トランザクションプラットフォームのためのシステムと方法
(51)【国際特許分類】
   G06F 21/62 20130101AFI20240119BHJP
   G09C 1/00 20060101ALI20240119BHJP
   G06F 21/74 20130101ALI20240119BHJP
   G06N 20/00 20190101ALI20240119BHJP
【FI】
G06F21/62 318
G09C1/00 630B
G06F21/74
G06N20/00
【請求項の数】 20
(21)【出願番号】P 2020566967
(86)(22)【出願日】2019-05-28
(65)【公表番号】
(43)【公表日】2021-12-02
(86)【国際出願番号】 CA2019050725
(87)【国際公開番号】W WO2019227208
(87)【国際公開日】2019-12-05
【審査請求日】2022-05-27
(31)【優先権主張番号】62/677,133
(32)【優先日】2018-05-28
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/691,406
(32)【優先日】2018-06-28
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/697,140
(32)【優先日】2018-07-12
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/806,394
(32)【優先日】2019-02-15
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/824,697
(32)【優先日】2019-03-27
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】520463503
【氏名又は名称】ロイヤル バンク オブ カナダ
(74)【代理人】
【識別番号】110000659
【氏名又は名称】弁理士法人広江アソシエイツ特許事務所
(72)【発明者】
【氏名】オルティズ,エジソン ユー.
(72)【発明者】
【氏名】ポールタバタビエ,アーヤ
(72)【発明者】
【氏名】カンダビリ,アンビカ パワン
(72)【発明者】
【氏名】サルター,マーガレット イネズ
(72)【発明者】
【氏名】リチャーズ,ジョルダン アレクサンダー
(72)【発明者】
【氏名】ヴィンティラ,インスティナ-ミルナ
【審査官】岸野 徹
(56)【参考文献】
【文献】米国特許出願公開第2017/0372226(US,A1)
【文献】特開2007-179531(JP,A)
【文献】米国特許第06868392(US,B1)
【文献】特開2002-251578(JP,A)
【文献】米国特許出願公開第2002/0116285(US,A1)
【文献】特開2010-277534(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 21/62
G09C 1/00
G06F 21/74
G06N 20/00
(57)【特許請求の範囲】
【請求項1】
単離されたデータ処理サブシステムを維持しているトラステッドエグゼキューション環境のためのコンピュータに実装されるトラステッドエグゼキューション環境システムであって、
オペレーティングシステムおよびカーネルシステムの両方にとってアクセスできないように暗号化されている保護されたメモリ領域を有するコンピュータ可読メモリであって、前記保護されたメモリ領域は少なくともデータストレージ領域と前記単離されたデータ処理サブシステムを維持しているデータ処理サブシステム記憶領域とを含む、コンピュータ可読メモリと、
コンピュータ可読キャッシュメモリと、
セキュアエンクレーブデータプロセッサであって、
複数の対応するパートナコンピューティング装置から1つ以上のデータセットを別々に受信するように構成されているデータパイプラインであって、前記1つ以上のデータセットのそれぞれは前記パートナコンピューティング装置のそれぞれに対応する秘密鍵によってデジタル署名され、前記データパイプラインは前記パートナコンピューティング装置の前記デジタル署名を有効性確認するように構成されており、
前記データパイプラインは、(i)前記保護されたメモリ領域の一部を前記コンピュータ可読キャッシュメモリにロードして、(ii)前記1つ以上の有効性確認されたデータセットを前記保護されたメモリ領域の前記データストレージ領域の前記ロードされた部分に記録して、(iii)前記記録の後に前記保護されたメモリ領域の前記部分をアンロードして暗号化するように構成されている、
データパイプラインと、
クエリデータメッセージを前記データ処理サブシステムに送信して、前記保護されたメモリ領域に記憶された前記1つ以上のデータセットに基づいて生成される前記データ処理サブシステムによって生成された出力データ構造を受信するように構成されているデータ処理サブシステムインタラクションエンジンと
を提供するように構成されているセキュアエンクレーブデータプロセッサと
を含む、コンピュータに実装されるトラステッドエグゼキューション環境システム
【請求項2】
前記単離されたデータ処理サブシステムが、前記クエリデータメッセージに応答して前記出力データ構造を生成するために協力して作動する一連の相互接続されたコンピューティングノードを含む単離された機械学習データモデルアーキテクチャを維持し、前記相互接続されたコンピューティングノードは、前記複数のパートナコンピューティング装置の少なくとも2つのパートナコンピューティング装置からのデータを表す訓練セットまたは有効性確認セットとして、前記保護されたメモリ領域の前記データストレージ領域の前記1つ以上の有効性確認されたデータセットの少なくとも一部を使用して多くの訓練エポックにわたって訓練されている、動的に修正された関数を表わす、一連の重み付けおよびフィルタを含み、前記クエリデータメッセージは前記動的に修正された関数を起動して前記出力データ構造を生成する、請求項1に記載のトラステッドエグゼキューション環境システム
【請求項3】
前記データパイプラインが、前記1つ以上の対応するパートナコンピューティング装置のパートナコンピューティング装置にそれぞれ対応する公開/秘密鍵対を生成し、パートナコンピューティング装置に対応する前記秘密鍵を前記パートナコンピューティング装置に送信するようにさらに構成されている、請求項1に記載のトラステッドエグゼキューション環境システム
【請求項4】
前記保護されたメモリ領域を有する前記コンピュータ可読メモリがDRAMに記憶されている、請求項1に記載のトラステッドエグゼキューション環境システム
【請求項5】
前記保護されたメモリ領域を解読して前記コンピュータ可読キャッシュメモリに入れるために必要な前記鍵が、前記セキュアエンクレーブデータプロセッサの中に記憶されており、前記セキュアエンクレーブデータプロセッサの外部からアクセスできない、請求項1に記載のトラステッドエグゼキューション環境システム
【請求項6】
前記保護されたメモリ領域を解読して前記コンピュータ可読キャッシュメモリに入れるために必要な前記鍵が、最初は臨時語によって生成されて、前記臨時語は前記セキュアエンクレーブデータプロセッサの中に記憶されており、前記セキュアエンクレーブデータプロセッサの外部からはアクセスできない、請求項1に記載のトラステッドエグゼキューション環境システム
【請求項7】
リモート認証プロセスはセキュアエンクレーブデータプロセッサによって周期的に行われて、前記トラステッドエグゼキューション環境システムのセキュリティを有効性確認し、前記リモート認証プロセスは、セキュアエンクレーブデータプロセッサにディフィー ヘルマンメッセージを含むリモート認証ペイロードを送信することを含む、請求項1に記載のトラステッドエグゼキューション環境システム
【請求項8】
リモート認証プロセスはセキュアエンクレーブデータプロセッサによって周期的に行われて、前記トラステッドエグゼキューション環境システムのセキュリティを有効性確認し、前記リモート認証プロセスは、前記セキュアエンクレーブデータプロセッサがリモート認証トランスクリプトデータ構造を生成して、署名付きチャレンジペイロードおよび新しいディフィー ヘルマンメッセージペイロードとともに前記リモート認証トランスクリプトデータ構造を送信することを含む、請求項1に記載のトラステッドエグゼキューション環境システム
【請求項9】
前記セキュアエンクレーブデータプロセッサが、
1つ以上のセキュアエンクレーブサブプロセッサを提供して、前記1つ以上のセキュアエンクレーブサブプロセッサのそれぞれに前記保護されたメモリ領域の区画を送信するように構成された、区画コントローラエンジンであって、
前記1つ以上のセキュアエンクレーブサブプロセッサは、前記機械学習データモデルアーキテクチャのローカルコピーを使用して前記保護されたメモリ領域の対応する区画を処理して、1つ以上のパラメータ更新データ構造を生成するように構成されている、
区画コントローラエンジン
と、
前記1つ以上のセキュアエンクレーブサブプロセッサのそれぞれから、前記1つ以上のパラメータ更新データ構造を受信して、前記1つ以上のパラメータ更新データ構造を処理して、前記機械学習データモデルアーキテクチャの少なくとも1つのパラメータを精緻化するように構成されている区画集約エンジンであって、前記機械学習データモデルアーキテクチャは、前記1つ以上のセキュアエンクレーブサブプロセッサに配布されて前記機械学習データモデルアーキテクチャの前記対応するローカルコピーを更新するためのものである、区画集約エンジンと
を提供するように構成されている、請求項2に記載のトラステッドエグゼキューション環境システム
【請求項10】
互いの間で直接1つ以上のパラメータ更新データ構造を送信して前記機械学習データモデルアーキテクチャの前記対応するローカルコピーを更新するように構成されている第1のセキュアエンクレーブサブプロセッサおよび第2のセキュアエンクレーブサブプロセッサを含む、少なくとも2つのセキュアエンクレーブサブプロセッサがある、請求項9に記載のトラステッドエグゼキューション環境システム
【請求項11】
単離されたデータ処理サブシステムを維持しているトラステッドエグゼキューション環境のためのコンピュータ実装方法であって、前記方法は、前記トラステッドエグゼキューション環境を実装しているコンピューティング装置のオペレーティングシステムおよびカーネルシステムにとってアクセスできないように暗号化された保護されたメモリ領域を有するコンピュータ可読メモリ上で動作し、前記保護されたメモリ領域は、少なくとも、データストレージ領域および前記単離されたデータ処理サブシステムを維持しているデータ処理サブシステムストレージ領域を含んでおり、前記方法は、
1つ以上の対応するパートナコンピューティング装置から1つ以上のデータセットをコンピュータのプロセッサによって受信することであって、前記1つ以上のデータセットは前記パートナコンピューティング装置のそれぞれに対応する秘密鍵によってデジタル署名されている、1つ以上のデータセットをコンピュータのプロセッサによって受信することと、
前記パートナコンピューティング装置の前記デジタル署名を前記コンピュータのプロセッサによって有効性確認することと、
前記保護されたメモリ領域の一部を、前記コンピュータのプロセッサによってコンピュータ可読キャッシュメモリにロードすることと、
前記1つ以上の有効性確認されたデータセットを、前記コンピュータのプロセッサによって前記保護されたメモリ領域の前記データストレージ領域の前記ロードされた部分に記録することと、
前記記録することの後に前記保護されたメモリ領域の前記部分を、前記コンピュータのプロセッサによってアンロードして暗号化することと、
クエリデータメッセージを、前記コンピュータのプロセッサによって前記データ処理サブシステムに送信することと、
入力として前記1つ以上の対応するパートナコンピューティング装置またはその集合から前記1つ以上のデータセットを受信して出力データ構造を生成する処理関数に基づいて前記クエリデータメッセージを、前記コンピュータのプロセッサによって処理することと
を含む、コンピュータ実装方法。
【請求項12】
前記単離されたデータ処理サブシステムが、前記クエリデータメッセージに応答して前記出力データ構造を生成するために協力して作動する一連の相互接続されたコンピューティングノードを含む単離された機械学習データモデルアーキテクチャを維持し、前記相互接続されたコンピューティングノードは、訓練セットまたは有効性確認セットとして、前記保護されたメモリ領域の前記データストレージ領域への前記1つ以上の有効性確認されたデータセットの少なくとも一部を使用して多くの訓練エポックにわたって訓練されている、動的に修正された関数を表わす、一連の重み付けおよびフィルタを含み、
処理関数に基づく前記クエリデータメッセージの前記処理は、前記コンピュータのプロセッサによって、前記動的に修正された関数を前記クエリデータメッセージに適用して前記出力データ構造を生成することを含む、請求項11に記載の方法。
【請求項13】
前記コンピュータのプロセッサによって、前記1つ以上の対応するパートナコンピューティング装置のパートナコンピューティング装置にそれぞれ対応する公開/秘密鍵対を生成することと、
パートナコンピューティング装置に対応する前記秘密鍵を前記パートナコンピューティング装置に送信すること
を含む、請求項11に記載の方法。
【請求項14】
前記保護されたメモリ領域を有する前記コンピュータ可読メモリがDRAMに記憶されている、請求項11に記載の方法。
【請求項15】
前記保護されたメモリ領域を解読して前記コンピュータ可読キャッシュメモリに入れるために必要な前記鍵は、セキュアエンクレーブデータプロセッサの中に記憶されており、前記セキュアエンクレーブデータプロセッサの外部からアクセスできない、請求項11に記載の方法。
【請求項16】
前記保護されたメモリ領域を解読して前記コンピュータ可読キャッシュメモリに入れるために必要な前記鍵は、最初は臨時語によって生成されて、前記臨時語はセキュアエンクレーブデータプロセッサの中に記憶されており、前記臨時語はセキュアエンクレーブデータプロセッサの外部からはアクセスできない、請求項11に記載の方法。
【請求項17】
セキュリティ有効性確認のために、前記コンピュータのプロセッサによってリモート認証プロセスを周期的に実行することを含み、前記リモート認証プロセスは、セキュアエンクレーブデータプロセッサにディフィー ヘルマンメッセージを含むリモート認証ペイロードを送信することを含む、請求項11に記載の方法。
【請求項18】
セキュリティ有効性確認のために、前記コンピュータのプロセッサによってリモート認証プロセスを周期的に実行することを含み、前記リモート認証プロセスは、セキュアエンクレーブデータプロセッサによって、リモート認証トランスクリプトデータ構造を生成して、前記1つ以上のコンピューティング装置に署名済みチャレンジペイロードおよび新たなディフィー ヘルマンメッセージペイロードとともに前記リモート認証トランスクリプトデータ構造を送信することを含む、請求項11に記載の方法。
【請求項19】
前記コンピュータのプロセッサによって、1つ以上のセキュアエンクレーブサブプロセッサを提供して、前記1つ以上のセキュアエンクレーブサブプロセッサのそれぞれに前記保護されたメモリ領域の区画を送信することと、
前記コンピュータのプロセッサによって、前記機械学習データモデルアーキテクチャのローカルコピーを使用して前記保護されたメモリ領域の前記対応する区画を処理して、1つ以上のパラメータ更新データ構造を生成することと、
前記コンピュータのプロセッサによって、前記1つ以上のセキュアエンクレーブサブプロセッサのそれぞれから、前記1つ以上のパラメータ更新データ構造を受信することと、
前記コンピュータのプロセッサによって、前記1つ以上のパラメータ更新データ構造を処理して前記機械学習データモデルアーキテクチャの少なくとも1つのパラメータを精緻化することと、
前記コンピュータのプロセッサによって、精緻化された少なくとも1つのパラメータを前記1つ以上のセキュアエンクレーブサブプロセッサに配布して前記機械学習データモデルアーキテクチャの前記対応するローカルコピーを更新することと
を含む、請求項12に記載の方法。
【請求項20】
プロセッサによって実行されると、単離されたデータ処理サブシステムを維持しているトラステッドエグゼキューション環境のためのコンピュータ実装方法を前記プロセッサに実行させるマシン解釈可能な命令を記憶している、非一時的コンピュータ可読媒体であって、前記方法は、前記トラステッドエグゼキューション環境を実装しているコンピューティング装置のオペレーティングシステムおよびカーネルシステムにとってアクセスできないように暗号化された保護されたメモリ領域を有するコンピュータ可読メモリ上で動作し、前記保護されたメモリ領域は、少なくとも、データストレージ領域および前記単離されたデータ処理サブシステムを維持しているデータ処理サブシステムストレージ領域を含んでおり、前記方法は、
1つ以上の対応するパートナコンピューティング装置から1つ以上のデータセットをコンピュータのプロセッサによって受信することであって、前記1つ以上のデータセットは前記パートナコンピューティング装置のそれぞれに対応する秘密鍵によってデジタル署名されている、1つ以上のデータセットをコンピュータのプロセッサによって受信することと、
前記パートナコンピューティング装置の前記デジタル署名を前記コンピュータのプロセッサによって有効性確認することと、
前記保護されたメモリ領域の一部を、前記コンピュータのプロセッサによってコンピュータ可読キャッシュメモリにロードすることと、
前記1つ以上の有効性確認されたデータセットを、前記コンピュータのプロセッサによって前記保護されたメモリ領域の前記データストレージ領域の前記ロードされた部分に記録することと、
前記記録することの後に前記保護されたメモリ領域の前記部分を、前記コンピュータのプロセッサによってアンロードして暗号化することと、
クエリデータメッセージを、前記コンピュータのプロセッサによって前記データ処理サブシステムに送信することと、
入力として前記1つ以上の対応するパートナコンピューティング装置またはその集合から前記1つ以上のデータセットを受信して出力データ構造を生成する処理関数に基づいて前記クエリデータメッセージを、前記コンピュータのプロセッサによって処理することと
を含む、非一時的コンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
相互参照
本出願は、すべてが「SYSTEM AND METHOD FOR SECURE ELECTRONIC TRANSACTION PLATFORM」と題する、2018年5月28日に出願の米国仮出願第62/677,133号、2018年6月28日に出願の米国仮出願第62/691,406号、2018年7月12日に出願の米国仮出願第62/697,140号、2019年2月15日に出願の米国仮出願第62/806,394号、および、2019年3月27日に出願の米国仮出願第62/824,697号の、非暫定的で、かつこれらに対する優先権を含んですべての利益を主張するものである。
【0002】
上記の出願の内容は、全体として本願明細書に引用したものとする。
【0003】
本開示は、概して電子データ処理の分野に、そして、特に電子トランザクションデータのセキュア処理(secure processing、セキュリティ保護された処理)に関する。
【背景技術】
【0004】
消費者は、金融商品(クレジットカードやロイヤルティ会員カードなど)を使用して購入を行う際に、取引データなどのプライベート情報が消費者からの明示的な同意なしに他者にさらされないように、金融機関やベンダーにあるレベルの信頼を置いている。また同時に、消費者は、個人化されていない推奨よりも個人化された申し出によく反応する。
【0005】
銀行および小売商は通常、それらにとって消費者プライバシーの保護が最大の重要事項であるので、他の組織と消費者データを共有することに積極的ではない。加えて、消費者からの明確な同意があったとしても、銀行および小売商は、それらが共有データのコントロールまたは所有権を失う可能性があるので、相変わらず他者と消費者データを共有するのを嫌う。
【0006】
データ処理および変換の間、プライバシーの保護を確実にしたいという要望がある。しかしながら、プライバシーの増大は、暗号化および解読の追加ステップがさらなる基盤要求ならびに性能に対する技術的な制約につながる可能性があるので、技術的なチャレンジにつながる。
【発明の概要】
【発明が解決しようとする課題】
【0007】
本明細書において説明されている実施形態は、プライバシーおよびセキュリティの改善と関連した技術的な課題を解決するのに適している技術的解決策を目的とする。多くの別個のコンピューティングシステムから1つ以上のデータセットを受信するように構成されている、データアグリゲータコンピューティングシステムを説明する。
【課題を解決するための手段】
【0008】
いくつかの実施形態では、追加の暗号化によって計算の負担が増加するので、特に暗号化のレベルが増加した下で作動する環境におけるコンピューティングリソース制約に関する課題を解決するための特定の特徴が説明されている。
【0009】
さらに、いくつかの実施形態では、別個のセキュアメモリ領域が利用されて、このような領域は、それがカーネルプロセスまたはオペレーティングシステムなどの他のコンピューティングサブシステムから物理的に、または、電子的に分離され得るので、限定されたメモリ空間である(例えば、サーバ装置上のルートへのアクセスを有する管理者さえ、保護されたメモリ領域に記憶される基本的データにアクセスすることができない)。したがって、セキュアエンクレーブがデータ処理または機械学習を実行するための非常に高いセキュリティ環境を提供するので、悪意のある攻撃またはデータ侵害の可能性およびそれに対する露出は著しく減じられる。
【0010】
これらのデータセットは、別個のコンピューティングシステムの組織の機密情報を表すことができ、これは、組織が他のコンピューティングシステムに、またはデータアグリゲータコンピューティングシステムの管理者にさえアクセス可能であることを望まないものである。プライバシーおよびセキュリティ対策を強化した改良された処理アーキテクチャの動作に関して、セキュアエンクレーブなどのセキュア処理技術を利用するシステム、方法およびコンピュータ可読媒体が説明される。いくつかの実施形態では、機械学習データモデルアーキテクチャおよびそれらのコンポーネントもセキュアメモリ領域に記憶されるので、それらは相互作用することやアクセスすることができない。
【0011】
上述のとおり、これらの強化されたプライバシーおよびセキュリティ対策は、例えば、暗号化および解読要件が様々な状況において利用可能な全体のコンピューティングリソースを減らすので、さらなる技術的なチャレンジにつながる。コンピューティングリソースは、特定の態様がセキュアプロセッサだけを用いて実行されることを必要として、データ要素は、セキュア処理環境外である間は、暗号化されたフォーマットだけに保存されることを必要とする場合がある、という要件により拘束され得る。セキュア処理は、適切なアクセス権を有することのない関係者が機械学習データアーキテクチャにおいて使われている基本的データの1つ以上の部分にアクセスすることができないように、全体的な計算ステップを保護することを目的としている。
【0012】
受信データセットは、それがオペレーティングシステムおよびカーネルシステムにとって到達できないその結果、暗号化される保護されたメモリ領域に記憶される。保護されたメモリ領域は、データを処理して出力データ構造を生成する単離されたデータ処理サブシステムを維持しているデータストレージ領域およびデータ処理サブシステム記憶領域を少なくとも含む。例示の実施形態において、データ処理サブシステムは、出力を生成する際にクエリ要求のコンポーネントおよび/または記憶されたデータセットの要素を利用する処理関数を適用する。
【0013】
簡略例として、データセットがベンチマーキングのために使われることができて、ベンチマーク統計についてのクエリ要求に応答して、集約データセットはクエリされて応答を得ることができる(例えば、どの関係者も保護されたメモリ領域にアクセスすることができないので基本的データセットのプライバシーおよびセキュリティを維持しながら、データソースAからだけでなく、データソースB、C、Dからのデータセットも利用する)。保護されたメモリデータ領域は、例えば、セキュアエンクレーブデータプロセッサにしか分からず、セキュアエンクレーブデータプロセッサがあるシステムの管理者さえも含んで他のいかなる関係者にも、あるいはセキュアエンクレーブデータプロセッサがあるシステムのオペレーティングシステムまたはカーネルプロセスを通してもアクセスできない、鍵機構で暗号化されることによって、保護することができる。
【0014】
いくつかの更なる実施形態では、専門キャッシュメモリが提供され、そこでは、保護されたメモリ領域がロード可能であり、データセットがロードされて、それから登録の後に、暗号化することができ、データセットは保護されたメモリ領域にロードした後にはもはやアクセスできない。
【0015】
第2の態様では、処理は、例えば、その上に記憶されるデータセットに持続してそれを通して反復的に訓練を受ける、安全に記憶された機械学習データモデルアーキテクチャによって実行される。本実施形態において、機械学習データモデルアーキテクチャ(例えば、隠れ層、コンピューティングノード、相互接続、ノードを表わすデータ構造)の基本的コンポーネントもまた、学習データモデルアーキテクチャの基本的コンポーネントがまた保護されたメモリ領域に維持されるかまたは記憶されるので、セキュアエンクレーブデータプロセッサがあるシステムのオペレーティングシステムまたはカーネルプロセスを通して利用することはできない。相互に連結したコンピューティングノードは協力して作動して、多くの訓練エポックにわたって訓練されている動的に修正されたアクティブ化関数を通して、(例えば、損失関数を最適化することを鑑みた勾配降下を通じた学習によって)クエリデータメッセージに応答する出力データ構造を生成する。
【0016】
一実施形態において、セキュアエンクレーブ(例えば、ハードウェアもしくはソフトウェアまたはそれらの組み合わせである単離されたデータプロセッサ)は、機械学習サブタスクを実行するために利用される。セキュアエンクレーブは、いくつかの実施形態では、基本的データに安全にアクセスするために用いられる暗号化鍵を記憶することができる。
【0017】
セキュアエンクレーブ処理はコンピューティングリソース制約に関して制約につながり、それにより性能および速度の低下に至る可能性がある。セキュアでない処理方法に対して、暗号化およびアクセス制限要件によって結果として複雑さが増加する。
【0018】
したがって、本明細書において様々な実施形態に記載されているように、強力なプライバシーおよび強固なセキュリティを有する機械学習データアーキテクチャを目的とする方法が提案される。機械学習アーキテクチャは、いくつかの実施形態では、複数の相互に連結したセキュアエンクレーブ処理区画(例えば、別個のセキュアエンクレーブプロセッサ)を含み、それが別個の訓練モデルアーキテクチャを処理して、維持する。
【0019】
データが各区画を通して処理されるので、別個のモデルアーキテクチャが更新されて、更新されたモデルアーキテクチャパラメータデータ構造を生成する。区画のそれぞれからの更新されたモデルアーキテクチャパラメータデータ構造は、パラメータ集約ユニット(例えば、それ自身のエンクレーブであることができるパラメータサーバ)で集約される。パラメータ集約ユニットは、集約訓練モデルアーキテクチャの更新を保存し、それがそれからセキュア処理流儀に再伝播されるように構成される。いくつかの実施形態のこのアーキテクチャは、セキュアエンクレーブ区画のスループット低下に関連した技術的な制約を克服する際の助けとなる。例えば、いくつかのセキュアエンクレーブ区画は、約90MB以下のモデルアーキテクチャサイズに限られている。したがって、多くの調整された区画は協力して作動して、全体のセキュア処理を提供する。
【0020】
いくつかの実施形態において説明したように、機械学習およびセキュア学習のためのアプリケーションは、例えば、識別子の訓練セットとの類似点に基づいてクラスタを識別するためのカスタマ識別子のサブセットを含む機械学習モデルアーキテクチャによる、データ構造の生成を含む。例えば、識別子の訓練セットは高収益のロイヤルカスタマを含むことができ、訓練モデルアーキテクチャを利用して、訓練セットの中にはないが潜在的ターゲットとして留意すべきであり得る、ターゲットカスタマを識別することができる。この例では、セキュアな機械学習データアーキテクチャを用いたセキュア処理を使用して、機密カスタマデータを含み得る基本的データの不正アクセスが不正ユーザによりなされていないことを確実にする。セキュアエンクレーブプロセッサを用いて、例えば、小売商が、特にこのような小売商がカスタマプロファイルの管理者でない場合に、カスタマプロファイルの全体図を有しないことを確実にする。
【0021】
別の実施形態では、エンクレーブ区画はまた、並行オペレーションの間、互いに相互接続を有するように構成され、その結果、エンクレーブ区画は、アグリゲータプロセッサから訓練モデルの更新されたパラメータを受信することとは対照的に、各々の間で決定パラメータを共有することができる。
【0022】
1つの態様によれば、プロセッサのトラステッドエグゼキューション環境(Trusted Execution Environment、TEE)の中でデータを処理するための、システムが提供される。システムは、パートナのアイデンティティを検証して、アイデンティティの前記検証に応じてパートナに通信鍵を発行するための、トラストマネージャユニットと、通信鍵を用いて暗号化されるパートナからの暗号化されたデータを受信するための、少なくとも1つのインタフェースと、ストレージ鍵を有し、TEEの中で暗号化されたデータの不正アクセスを防止するための、暗号化されたデータを記憶するための、TEEの中のセキュアデータベースと、暗号化されたデータを解読および解析して解読データに基づいて推奨を生成するための、推奨エンジンと、を含むことができる。
【0023】
別の態様によれば、プロセッサのトラステッドエグゼキューション環境(Trusted Execution Environment、TEE)の中でデータを処理するための、コンピュータ実装方法が提供される。方法は、パートナのアイデンティティを検証することと、アイデンティティの前記検証に応じてパートナに通信鍵を発行することと、通信鍵を用いて暗号化されるパートナからの暗号化されたデータを受信することと、ストレージ鍵を有する暗号化されたデータを記憶してTEEの中の暗号化されたデータの不正アクセスを防止することと、暗号化されたデータを解読および解析して解読データに基づいて推奨を生成することとを含むことができる。
【0024】
別の態様によれば、保護されたメモリ領域を有するコンピュータ可読メモリは、DRAMに記憶される。
【0025】
別の態様によれば、保護されたメモリ領域を解読してコンピュータ可読キャッシュメモリに入れるために必要な鍵は、セキュアエンクレーブデータプロセッサの中に記憶されており、セキュアエンクレーブデータプロセッサの外部からアクセスできない。
【0026】
別の態様によれば、保護されたメモリ領域を解読してコンピュータ可読キャッシュメモリに入れるために必要な鍵は、最初は臨時語によって生成されて、臨時語はセキュアエンクレーブデータプロセッサの中に記憶されており、セキュアエンクレーブデータプロセッサの外部からはアクセスできない。
【0027】
別の態様によれば、リモート認証プロセスはセキュアエンクレーブデータプロセッサによって周期的に行われて、システムのセキュリティを有効性確認し、リモート認証プロセスは、セキュアエンクレーブデータプロセッサにディフィー ヘルマン(Diffie Hellman)メッセージを含むリモート認証ペイロードを送信することを含んでいる。
【0028】
別の態様によれば、リモート認証プロセスはセキュアエンクレーブデータプロセッサによって周期的に行われて、システムのセキュリティを有効性確認し、リモート認証プロセスは、セキュアエンクレーブデータプロセッサがリモート認証トランスクリプトデータ構造を生成して、署名付きチャレンジペイロードおよび新しいディフィー ヘルマンメッセージペイロードとともにリモート認証トランスクリプトデータ構造を送信することを含んでいる。
【0029】
別の態様によれば、セキュアエンクレーブデータプロセッサは、1つ以上のセキュアエンクレーブサブプロセッサを提供し、1つ以上のセキュアエンクレーブサブプロセッサのそれぞれに保護されたメモリ領域の区画を送信するように構成されている、区画コントローラエンジンであって、1つ以上のセキュアエンクレーブサブプロセッサは、機械学習データモデルアーキテクチャのローカルコピーを使用して保護されたメモリ領域の対応する区画を処理して1つ以上のパラメータ更新データ構造を生成するように構成されている、区画コントローラエンジンと、1つ以上のセキュアエンクレーブサブプロセッサのそれぞれから、1つ以上のパラメータ更新データ構造を受信して、1つ以上のパラメータ更新データ構造を処理して、機械学習データモデルアーキテクチャの少なくとも1つのパラメータを精緻化するように構成されている区画集約エンジンであって、機械学習データモデルアーキテクチャは、1つ以上のセキュアエンクレーブサブプロセッサに配布されて機械学習データモデルアーキテクチャの対応するローカルコピーを更新する、区画集約エンジンと、を提供するように構成されている。
【0030】
実施形態はここで、添付の図面を参照して、例としてのみ説明される。
【図面の簡単な説明】
【0031】
図1】いくつかの実施形態による、セキュア消費者データを処理するための例示のプラットフォームを示しているブロック図である。
図2A】いくつかの実施形態による、セキュアトランザクションデータを処理するためのプラットフォーム上の例示の(仮想)クリーンルームの概略図である。
図2B】いくつかの実施形態による、セキュアトランザクションデータを処理するためのプラットフォーム上の別の例示のクリーンルームの概略図である。
図3】いくつかの実施形態による、プラットフォーム上のクリーンルームの別の概略図である。
図4】いくつかの実施形態による、例示のプラットフォームのパートナとトラストマネージャの間のリモート認証プロセスを示している概略図である。
図5】いくつかの実施形態による、例示のプラットフォームからのセキュリティおよび暗号化ユニットの概略図である。
図6】いくつかの実施形態による、例示のプラットフォームのさらに別の概略図である。
図7】いくつかの実施形態による、例示のプラットフォームからのデータモデル化ユニットおよびデータストレージユニットの概略図である。
図8】いくつかの実施形態による、例示のプラットフォームからのマスターノードおよびワーカーノードの概略図である。
図9】いくつかの実施形態による、様々なノードのための例示のジョブ割り当てを示す。
図10】いくつかの実施形態による、セキュアエンクレーブのための例示の記憶構造を示す。
図11A】いくつかの実施形態による、例示のリソース管理構造を示す。
図11B】いくつかの実施形態による、リソース管理データ処理のための例示の概略図を示す。
図12】いくつかの実施形態による、例示のプラットフォームを実装するために用いるコンピューティング装置の概略図である。
図13】いくつかの実施形態による、例プラットフォームによって実行される例示のプロセスを示す。
図14】いくつかの実施形態による、セキュアトランザクションデータを処理するためのプラットフォーム上の例示のクリーンルームの別の概略図を示す。
図15】いくつかの実施形態による、セキュアトランザクションデータを処理するためのクリーンルームを含む分散システムのさらに別の概略図を示す。
図16】リソースマネージャとしてYARNを用いてデータ解析を実装している例示のSparkフレームワークを示す。
図17】Sparkフレームワークの下での例示のエグゼキュータ構造を示す。
図18】Sparkフレームワークの下でドライバアプリケーションと協力している例示のエグゼキュータ構造を示す。
図19】いくつかの実施形態による、機械学習アーキテクチャおよびデータフローの例示のブロック図である。
図20】異なる層のカスタマへのリソース割り当てを示す例示の図である。
図21】いくつかの実施形態による、2つの異なるデータセットのカスタマの間においてクロスオーバーおよびターゲティング機会の領域を示している例示のベン図である。
図22】いくつかの実施形態による、生成された推奨を示しているグラフィックウィジェットを示すのに適しているグラフィカルユーザインタフェースの例示の描写である。
図23】いくつかの実施形態による、生成された複数の推奨を示しているグラフィックウィジェットバーを示すのに適しているグラフィカルユーザインタフェースの例示の描写である。
図24】いくつかの実施形態による、例示の生産環境およびデータフローの図である。
【発明を実施するための形態】
【0032】
本明細書において記載されている例示的実施形態の完全な理解を提供するために多数の具体的な詳細が記載されていることはいうまでもない。しかしながら、本明細書において説明されている実施形態がこれらの具体的な詳細なしで実践することができることは、当業者によってよく理解されよう。さらに、本説明は、いかなる形であれ、本明細書において説明されている実施形態の範囲を制限しているのではなく、むしろ本明細書において説明されている様々な例示の実施形態の実装を単に説明しているだけであると考えるべきである。
【0033】
実施形態は、データセットの改良されたセキュリティおよびプライバシーに適している専門コンポーネントおよび回路を有する、コンピュータを含む技術的デバイスを用いて実施される。本明細書において述べるように、実施形態は、セキュアエンクレーブデータプロセッサおよび、保護されたメモリ領域を有するコンピュータ可読メモリと連動したその使用法を目的としている。
【0034】
セキュアエンクレーブデータプロセッサは、保護されたメモリ領域とのインタフェースを有して、いくつかの実施形態では、パートナ組織またはデータソースに特有の鍵で暗号化することができる特定のデータソースから(例えば、パートナ組織から)受信したデータセットを、安全に記憶して、暗号化する。一実施形態において、鍵は、事前生成することができて、パートナ組織またはデータソースと関連付けることができる。別の実施形態では、システムは、新規な鍵がデータセットを保護されたメモリ領域へロードするために必要であるときに、鍵生成セレモニーを行う鍵生成器を含むことができる。
【0035】
本明細書において述べるように、データセットは特定のコンピューティング装置またはデータソースに固有にロードされる。いくつかの実施形態では、ロードは一方向であり、その結果、鍵は破壊されるか、または、暗号化鍵は特定のコンピューティング装置もしくはデータソース戻して提供されることがない。異なる実施形態では、一方向ロードは、データ処理または機械学習データモデルアーキテクチャを訓練するか、またはその中に取り込むためにロードされるデータを使用することができ、その後にデータが削除される(例えば、データは訓練の用途にだけ使われる)。
【0036】
他の実施形態では、ロードは双方向とすることができ、これにより、特定のコンピューティング装置またはデータソースがそれ自身のデータセットを抽出するかまたは以前提供されたデータセットのデータを修正することが可能である。別の実施形態では、出力データ構造はデータセットのデータに対する修正(例えば、メタデータでデータセットを拡張)とすることができ、データセットの抽出を使用してデータの拡張した、または改良したバージョンを生成することができる(例えば、カスタマデータが提供されて、推定されたカスタマタイプ分類文字列を示している拡張カスタマデータが抽出される)。いくつかの実施形態では、機械学習データモデルアーキテクチャは、ロードするかまたはアンロードすることもできて、その結果、いかなる関係者にも基本的データセットへのアクセスを提供せずに、訓練されていない機械学習データモデルアーキテクチャを中にロードすることができ、訓練された機械学習データモデルアーキテクチャを外へ抽出することができる。
【0037】
消費者は、金融商品(クレジットカードやロイヤルティ会員カードなど)を使用して購入を行う際に、取引データなどのプライベート情報が消費者からの明示的な同意なしに他者にさらされないように、金融機関やベンダーに特定のレベルの信頼を置いている。また同時に、消費者は、一般的な推奨よりも個人化された申し出によく反応する。銀行および小売商は通常、それらにとって消費者プライバシーの保護が最大の重要事項であるので、他の組織と消費者データを共有することに積極的ではない。
【0038】
加えて、消費者からの明確な同意があったとしても、銀行および小売商は、それらが共有データのコントロールまたは所有権を失う可能性があるので、相変わらず他者と消費者データを共有するのを嫌う。特定のデータソースから受信したデータセットは、保護されたメモリ領域に記憶されて、その結果、他者はデータセットにアクセスすることができないが、データセットは、出力データ構造の形でカプセル化されたコンピュータ生成された洞察および/または値の生成ためのデータ処理サブシステムによって、保護されたメモリ領域の中でアクセス可能である。いくつかの実施形態では、出力データ構造は、訓練された機械学習データモデルアーキテクチャも含むことができる。
【0039】
出力データ構造はクエリデータメッセージに応答して生成することができ、それは、いくつかの態様では、システムが処理する新情報を含むことができるか、または保護されたメモリ領域のその上に記憶される集約された既存情報を対象とするクエリ要求であることができる。
【0040】
例えば、クエリデータメッセージは仮定的カスタマプロファイルを対象としたベクトルを提供することができて、訓練された機械学習データモデルアーキテクチャは、訓練された機械学習データモデルアーキテクチャが仮定的カスタマプロファイルは提案された申し出に従うと予測するかどうかを示しているフィールドを記憶している、データ構造を出力することができる。
【0041】
他の例では、クエリデータメッセージはいかなる追加情報も含むことができないが、むしろ、保護されたメモリ領域に記憶された集約された情報に基づくか、または、訓練された機械学習データモデルアーキテクチャに基づくクエリを含む。例えば、クエリデータメッセージは、「カスタマがワシントンD.C.地区の小売店で過ごす平均的時間は一般に米国内の平均的時間に対して、どれくらいか?」、または、訓練された機械学習データモデルアーキテクチャがある場合では、「いくつのカスタマのクラスタが、ワシントンD.C.地区のカスタマの総集約トランザクション動作に基づいて識別されるか?」(例えば、教師無しモデルを用いて多くのクラスタを識別する場合)ということを目的とすることができる。
【0042】
トランザクションデータなどの個人的な消費者データを処理するためのセキュアプラットフォームが、本明細書において説明されている。いくつかの実施形態では、プラットフォームは参加しているパートナ(例えば、銀行および小売商)とインタフェースを有して、各パートナのそれぞれのシステムから、トランザクションデータ(「TXNデータ」とも呼ばれる)を含む消費者データを受信することができる。消費者データは、暗号化鍵で暗号化することができる。
【0043】
本プラットフォームは受信した消費者データをセキュア領域(「クリーンルーム」とも呼ばれる)に記憶することができて、そこで、続いて消費者データは解読され解析されて、各消費者のための個人化された提案を生成する。パートナから受信した消費者データは、明記された目的のために、すなわち、解析を実行して申し出を生成する目的のために、クリーンルームによって行われない限り、他のいかなるユーザ、システムまたはプロセスによっても、アクセスすることも、解読することも、読み込むこともできない。このプラットフォームは、暗号化されたデータ上の解析の実行を可能にして、消費者データのコントロールおよび所有権の喪失または希薄化に関する銀行および小売商の懸念を向上させて、消費者データのプライバシーを保護するのに役立つ。いくつかの実施形態では、プラットフォームをホスティングしているコンピュータの所有者が、入力または出力データについてのあらゆるものを見たり推定することができないようにしてもよい。
【0044】
いくつかの実施形態では、クリーンルームはプロセッサ(例えば、CPU)のトラステッドエグゼキューション環境(Trusted Execution Environment、TEE)の中の1つ以上のセキュアエンクレーブの中に実装されて、そこで、データモデルは訓練することができ、いかなるレベルの解析も実施するように実行することができる。クリーンルームの中に記憶されるデータの適切な暗号化および解読を確実にするための鍵となる管理能力も実施される。
【0045】
本明細書において説明されている実施形態は、プライバシーおよびセキュリティの改善と関連した技術的な課題を解決するのに適している技術的解決策を目的とする。特に、プライバシーおよびセキュリティ対策を強化した改良された機械学習データアーキテクチャの動作に関して、セキュアエンクレーブなどのセキュア処理技術を利用するシステム、方法およびコンピュータ可読媒体が説明される。
【0046】
上述のとおり、これらの強化されたプライバシーおよびセキュリティ対策は、例えば、暗号化および解読要件が様々な状況において利用可能な全体のコンピューティングリソースを減らすので、さらなる技術的なチャレンジにつながる。
コンピューティングリソースは、特定の態様がセキュアプロセッサだけを用いて実行されることを必要として、データ要素は、セキュア処理環境外である間は、暗号化されたフォーマットだけに保存されることを必要とする場合がある、という要件により拘束され得る。
【0047】
図1は、いくつかの実施形態による、ネットワーク150上のセキュアな消費者データを受信して処理するための、例示の電子トランザクションプラットフォーム100を示すブロック図である。消費者データは、銀行システム(複数可)112および小売商システム(複数可)113を含むことができるパートナシステム(複数可)115から受信することができる。図2および3は、プラットフォーム100に実装される例示のクリーンルーム300の概略図を提供する。
【0048】
処理デバイス101はメモリ109の命令を実行して、各種コンポーネントまたはユニット120、121、122、123、124、125を構成することができる。処理デバイス101は、例えば、マイクロプロセッサもしくはマイクロコントローラ、デジタル信号処理(DSP)プロセッサ、集積回路、フィールドプログラマブルゲートアレイ(FPGA)、再構成可能なプロセッサ、またはいかなるそれらの組み合わせとすることもできる。処理デバイス101は、メモリ109、データストレージ108および他の記憶111を含むことができる。いくつかの実施形態では、処理デバイス101は、トラステッドエグゼキューション環境(trusted execution environment、TEE)103として公知のセキュア領域を含む。TEE103は、メモリ109およびデータストレージ108を含むことができて、様々なユニットおよびアプリケーションが実行することができて、データを処理して記憶することができる、単離された環境である。TEE103の中で動作しているアプリケーションは、処理デバイス101の全能力を活用することができると共に、主オペレーティングシステム内のコンポーネントおよびアプリケーションから保護される。TEE103の中のアプリケーションおよびデータは、処理デバイス101の所有者に対してさえ、不必要なアクセスおよび改竄から保護されている。いくつかの場合では、TEE103の中の異なるアプリケーションおよびデータストレージは、必要に応じて、別々に分離して互いから保護されているようにすることができる。
【0049】
いくつかの実施形態では、TEE103の保護されたメモリ領域(例えば、セキュアデータウェアハウス108)は、暗号化を用いることにより単離される。この例では、暗号化鍵はTEE103自体の中で記憶されるのでそれが必要に応じてデータにアクセスすることができるが、基本的データは、サーバまたはカーネルプロセス上で動作しているオペレーティングシステムなどの他のコンポーネントによってアクセス可能ではない。代替の実施形態では、単離は、他のコンポーネントからの物理的または電気回路単離を用いることにより行われる。さらに別の代替実施形態では、物理および暗号化単離が利用される。
【0050】
プラットフォーム100のコンポーネントおよびデータがTEE103の中で保たれるので、それらはTEE103によって提供される単離およびセキュリティにより不正アクセスおよび改竄から十分に守られる。したがって、パートナシステム115は、それらの消費者データが他者によって不注意に漏洩されたりアクセスされないという確信を得る。後述するように、各パートナは、プラットフォーム100に(例えば、認証プロセスを通して)いずれかのデータを発信する前に、TEE103の中のプラットフォーム100がセキュアでかつ改竄が無いことを検証することができる。したがって、パートナシステム115は、プラットフォーム100に高レベルの信頼を置いており、処理して次に現在および将来のカスタマに対するターゲットを絞った推奨および申し出を受信するためのプラットフォーム100に、それらの消費者データを送信することをより意欲的に行うことになる。
【0051】
データストレージ108は、例えば、適切な容量の1つ以上のNANOフラッシュメモリモジュールすることができるか、または、1つ以上の持続的コンピュータ記憶装置、例えばハードディスクドライブ、ソリッドステートドライブなどでもよい。いくつかの実施形態では、データストレージ108は、暗号化されたデータをホスティングするように構成されたセキュアデータウェアハウスを含む。
【0052】
メモリ109は、コンピュータメモリ、例えば、スタティックランダムアクセスメモリ(SRAM)、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、電気光学メモリ、磁気光学メモリ、消去可能プログラム可能読取り専用メモリ(EPROM)および電気的消去可能プログラム可能読取り専用メモリ(EEPROM)、強誘電性RAM(FRAM(登録商標))などの組合せを含むことができる。
【0053】
いくつかの実施形態では、TEEの中のデータは、データストレージ108、メモリ109またはいくつかのそれらの組み合わせに記憶することができる。
【0054】
データストレージ108は、TEE103と関連した情報、例えば、リモート認証、暗号化および解読のための暗号鍵を記憶するように構成されたセキュアデータウェアハウスを含むことができる。データストレージ108は、トランザクションデータを含む消費者データなどの秘密情報を記憶することもできる。ストレージ108および/または他のストレージ111は、様々なタイプのストレージ技術を用いて提供することができて、リレーショナルデータベース、非リレーショナルデータベース、フラットファイル、スプレッドシート、拡張マークアップファイルなどの様々なフォーマットで記憶することができる。データストレージ108は、例えば、とりわけ、保護されたメモリ領域をロードするためのコンピュータ可読キャッシュメモリならびに保護されたメモリ領域自体を含むことができる。データストレージ108が双方向アクセスのために構成される場合、データストレージ108は、特定のデータソースと関連したコンピューティング装置によって要求されるアクセスの前にデータを暗号化するために、特定のデータソースに対応する、一致する公開鍵を記憶することができる。
【0055】
データストレージ108は、いくつかの実施形態では、TEE103によって受信されるデータセットに基づいて訓練される単離された機械学習データモデルアーキテクチャを維持し、それはデータストレージ108上の処理の後記憶してもよく、または記憶しなくてもよい。例えば、データが処理および訓練の後データストレージ108に記憶されない場合、全体的に必要とされるストレージがより少ないので性能が改善され得る。これは、データセットが特に大きいか多量である場合に役立つ。別の実施形態では、データセットは、将来の使用または時間にわたる解析のために保護されたメモリ領域のデータストレージ108に記憶される。
【0056】
データストレージ108は出力データ構造を記憶することもでき、それは推奨エンジン120を通して対話することができ、出力データ構造はデータ処理サブシステムによる処理によって生成されるフィールド値を記憶する。いくつかの実施形態では、TEE103のデータ処理サブシステムは、対応するパートナコンピューティング装置から受信されるデータセットの集合に基づいて生成される記憶された関数を含む。
【0057】
各I/Oユニット107は、プラットフォーム100が、キーボード、マウス、カメラ、タッチスクリーンおよびマイクロホンなどの1つ以上の入力装置との、または、ディスプレイスクリーンおよびスピーカなどの1つ以上の出力装置との相互接続をするのを可能にする。I/Oユニット107は、データストレージ108にデータをロード/アンロードするのに備えるための命令を受信するために用いることができて、データストレージ108にロードするためのデータにアクセスするかまたは解読もしくは有効性確認するために必要な特定のアクセス鍵の供給を必要とし得る。
【0058】
I/Oユニット107は、データ構造、命令セットまたはクエリストリングとして、データ処理サブシステム起動して様々な出力データ構造を生成するクエリデータメッセージを受信することもできる。
【0059】
各通信インタフェース105は、プラットフォーム100が、他のコンポーネントと通信し、データを他のコンポーネントと交換し、ネットワークリソースにアクセスして接続し、アプリケーションのために動作し、そして、他のコンピューティングアプリケーションを実行することを、インターネット、Ethernet、普通の電話サービス(POTS)線、公衆交換電話網(PSTN)、総合サービスデジタルネットワーク(ISDN)、デジタル加入者線(DSL)、同軸ケーブル、光ファイバ、衛星、携帯、無線(例えばWi-Fi、WiMAX)、SS7信号ネットワーク、固定回線、ローカルエリアネットワーク、広域ネットワーク、およびその他これらのあらゆる組合せを含む、データを搬送することができるネットワーク(または複数のネットワーク)に接続することによって、可能にする。
【0060】
プラットフォーム100は、アプリケーション、ローカルネットワーク、ネットワークリソース、他のネットワークおよびネットワークセキュリティデバイスにアクセスを提供する前に、(例えばログイン、一意識別子およびパスワードを使用して)ユーザを登録して認証するように動作可能であってもよい。プラットフォーム100は、1つのユーザまたは複数ユーザのために動作することができる。いくつかの実施形態では、ユーザの信用証明情報はTEE103の中に記憶され、それらをセキュアな状態にして、パートナからの高レベルの信頼を確保する。
【0061】
図2Aは、セキュアトランザクションデータを処理するためのプラットフォーム100上の例示の仮想クリーンルーム(Virtual Clean Room)300を示す。仮想クリーンルーム300は、VCRまたは単にクリーンルーム300と呼ばれてもよい。パートナシステム115は、クリーンルーム300によって生成された鍵でユーザデータ(例えば消費者トランザクションデータ)を暗号化することができ、それから暗号化されたデータをセキュアチャネルを通してクリーンルーム300の中のセキュアデータウェアハウス108に送信することができる。ユーザデータは、単に解読されてセキュアエンクレーブ133において処理することができる。それから、セキュアエンクレーブ133の中でのプロセスによって生成された出力データは、暗号化されてセキュアデータウェアハウス108の中に記憶される。
【0062】
セキュアエンクレーブ133は、暗号化されたデータセットを単一のセキュアエンクレーブに記憶して、1つ以上の解析アルゴリズムを実行するように構成することができる。セキュアエンクレーブ133はクラスタ管理も実行して、複数のセキュアエンクレーブおよびCPUを組織化することもできる。本明細書において述べるように、いくつかの実施形態では、区画を利用することにより、機械学習データモデルアーキテクチャのローカルバージョンを利用し、そしてパラメータ更新を渡して周期的に機械学習データモデルアーキテクチャのグローバルバージョンを更新する1つ以上のセキュアエンクレーブサブプロセッサからのモデルデータアーキテクチャ更新を追跡し、効果的に機械学習データモデルアーキテクチャの訓練プロセスの並列化を可能とし、これは、収束が可能である場合に収束速度を改善する。
【0063】
例えば、セキュアエンクレーブ133は、パートナシステム133からの機密データのセキュアストレージを提供することができ、適切かつセキュアな鍵管理システムで暗号化されたデータを解読することができるプラットフォーム100上の唯一のコンポーネントである。セキュアエンクレーブ133は、解読データに解析を実行して出力を提供するように、実装することもできる。出力は、セキュアエンクレーブ133外に送信される前に暗号化することができる。
【0064】
いくつかの実施形態では、データの1つ以上のセットは、データセットをパートナシステム115に形成することができる。データセットは、セキュアエンクレーブ133によって生成された鍵を用いて、パートナシステム115によって暗号化することができ、それからクリーンルーム300に送信されて、その後セキュアデータウェアハウス108に記憶される。解析は、ワーカーアプリケーションによって暗号化されたデータに実行することができる。ワーカーアプリケーションは、前記解析を実行する前に、適切な解読鍵を用いてデータを解読することができる。一旦解析がされると、出力データを生成することができる。いくつかの場合では、出力データは暗号化することができる。クリーンルーム300は、(i)暗号化されたデータを記憶し、(ii)解析の目的ために解読することができる、プラットフォーム100の唯一のエンティティとすることができ、その結果、クリーンルーム300外のどの人も、システムも、またはプロセスも、セキュアエンクレーブ133にアクセスすることができない。
【0065】
オペレーティングシステム/カーネルシステムがハードウェアレベルセキュリティを用いて解読されたエンクレーブコンテンツにアクセスすることができないので、セキュアエンクレーブ133はデータを管理者から保護する。
【0066】
図10は、いくつかの実施形態による、セキュアエンクレーブ133のための例示の記憶構造を示す。セキュアエンクレーブだけが、DRAMから、保護されたメモリ領域をロードすることができる(他の全てのアプリケーションはキャッシュマネージャからキャッシュミスを得る)。
【0067】
DRAM上のエンクレーブデータは、特殊命令を使用してキャッシュへロードされるときに、暗号化されて解読されるだけであるので、エンクレーブデータは、管理者、OS/カーネルシステム/プロセスおよび外側エンティティから保護されている。解読鍵に対するアクセスは制限されており、いくつかの実施形態では、人間の解析者によるアクセス可能性のないセキュアエンクレーブ133の中でしか利用できない。
【0068】
人間の解析者は、例えば、対応する鍵ペアを使用して単一のデータソースと関連したデータのロード/有効性確認/アンロードを制御することによって、または、訓練されていないか訓練された機械学習データモデルアーキテクチャのロード/アンロードを制御することによって、セキュアエンクレーブ133と対話することができる。本明細書において述べるように、セキュアエンクレーブ133が他者による基本的データセットへのアクセスを防止するのに適しているので、セキュアエンクレーブ133は、基本的データ処理サブシステムに、または、いくつかの実施形態では、単離された機械学習データモデルアーキテクチャに対して、ブラックボックスアクセスが効果的にできるようにする。
【0069】
図2Bを次に参照すると、クリーンルームアプリケーション300は、プラットフォーム100に実施することができて、銀行システム112および小売商システム113などの複数のパートナから、1つ以上のデータセットを受信することができる。銀行システム112は、消費者によって所有される1つ以上の金融商品(例えばクレジットカード)に関する消費者データを有することができる。小売商113は、1つ以上のトランザクションに関する消費者データを有することができる。消費者が小売商で、購入トランザクションの間などに金融商品を使用するたびに、様々なデータが銀行システム112および取引システム113で送信されて、記憶される。
【0070】
例えば、銀行は、トランザクションに関して、トランザクションのデータおよび時刻、トランザクションが発生した小売商の名前および位置、小売商と関連付けられた小売商分類コード(Merchant Category Code,MCC)、銀行名およびID、金融商品のマスクされた主要アカウント番号(PAN)、トランザクション中に金融商品に課金された金額、およびトランザクション終了時に銀行によって送信されたマルチキャラクタコードであるトランザクションのための認可コードを含む、複数のトランザクションデータ210a、210b、210cを有することができる。
【0071】
別の例として、小売商は、トランザクションに関して、トランザクションのデータおよび時刻、トランザクションが発生した小売商の名称および位置、トランザクション中に販売された製品またはサービスの在庫管理単位(SKU)、および販売されたSKUごとの量または金額などの、複数のトランザクションデータ230a、230b、230cを有することができる。
【0072】
いくつかの場合では、小売商113は物理小売店を有していなくてもよい。例えば、小売商は、ウェブに拠点を置く小売業者であることができて、ウェブ上でトランザクションを行うことができる。
【0073】
クリーンルーム300は、銀行システム112、小売商システム113および他のタイプのパートナシステム115(例えば銀行でない金融機関)から、トランザクションデータ210a、210b、210c、230a、230b、230cなどの様々な消費者データを受信することができ、そして消費者データに基づいて推奨および申し出、例えば個人化された申し出を生成することができる。推奨および申し出は、販売時点(POS)で、またはオンラインで履行するためにパートナに、および/または消費者が直接、送信することができる。いくつかの実施形態では、消費者が積極的に承諾して同意を選択する場合にのみ、推奨および申し出は生成することができる。パートナが関与することを選択して、プラットフォーム100によって提供される技術を使用する場合、パートナは、プラットフォーム100によって適切な推奨および申し出を生成するために消費者のデータを使用する適切な消費者の同意を取得したと通常みなすことができる。
【0074】
いくつかの実施形態では、パートナは、1人以上の消費者に、消費者とのパートナの通信チャネルを通して、消費者のデータを記憶するために同意を要請しなければならない場合がある。例えば、パートナ携帯またはウェブベースのアプリケーションの条件およびサービスは、消費者が携帯またはウェブベースのアプリケーションを使用するときに同意が与えられる、ということを示すことができる。小売商店舗において、同意は、支払いまたはPOS端末上のプロンプトを通して要請して与えられ得る。
【0075】
ここで図3を参照すると、これは、いくつかの実施形態による、プラットフォーム100上のクリーンルーム300の別の概略図を示す。クリーンルーム300は、プロセッサ101の内蔵メモリ109に収容されているセキュアな環境である。それは、問題なく確実にデータを記憶して、解読して、処理するために、チップ製造業者により提供されるセキュア処理ハードウェアに基づいて開発された、セキュアエンクレーブ133を含むことができる。
【0076】
クリーンルーム300は、消費者データを受信し、記憶し、暗号化し、解読することができる。プラットフォーム100によって、パートナシステム115が、人、システムまたはプロセスによる不正アクセスの懸念無しに、クリーンルーム300に暗号化されたデータを共有して送信することが可能となり得る。クリーンルーム300は、パートナシステムによって提供されたデータにわたり、そしてデータが生産物特有の結果を発生させるためにどのように用いられるかを認識している制御およびその同意を、ユーザに与えることができる。クリーンルーム300はまた、パートナシステムが、人、システムまたはプロセスによるデータの不正アクセスの懸念無しに、暗号化されたデータをクリーンルームに転送することができる。
【0077】
セキュリティおよび暗号化ユニット125は、消費者データを受信および処理するためにクリーンルーム300を検証して保証し、消費者データを送信している各パートナが認証されていることを検証し、そして、適切なときに、消費者データを暗号化して、解読して、クリーンにして、正規化して、記憶するように構成することができる。
【0078】
推奨エンジン120は、パートナシステム115から受信された消費者データに基づいて推奨および申し出を生成するように構成することができる。推奨および申し出は、一般的であるかまたはターゲットを絞ったものとすることができる。推奨および申し出は、消費者のグループのためにターゲットを絞ったものとすることができるか、または特定の消費者のために個人化されたものとすることができる。いくつかの実施形態では、推奨(解析)エンジンは、個人化されかつ関連した小売商申し出の役割を果たす目的のために、パートナデータをモデル化することができる。エンジン120はデータモデル(複数可)を活用して、バッチ処理されたか起動された(例えば、位置ベースの)個人化された申し出を消費者に提供することができる。
【0079】
いくつかの実施形態では、機械学習アルゴリズムおよびSQLクエリは、エンクレーブ環境のエンジン120によって実装することができる。例えば、Anjuna Security(登録商標)およびH2O(登録商標)を使用する。
【0080】
オーディエンスビルダユニット121は、生成された推奨または申し出ごとに消費者のリストを生成するように構成することができる。消費者のリストは、1つ以上の消費者を含むことができる。オーディエンスビルダユニット121は、年齢、位置、婚姻の状態、小売商などの属性上のターゲットとされたオーディエンスを定めることができる。属性は、データストレージ108に記憶されるデータセットの利用できる変数と相関させることができる。
【0081】
クライアントアイデンティティおよび同意ユニット122は、クライアントアイデンティティおよび同意を検証して確認するように構成することができる。クライアントシステムは、消費者データをプラットフォーム100に送信する前に明確な同意を与えることを必要とし得る。クライアントシステムは、暗号化されたデータに関してプラットフォーム100との間でクエリを送信して回答を受信するように構成されたシステムでもよい。例えば、クライアントシステムは、プラットフォーム100から処理されたデータを探す資格がある(すなわち、適切な許可を有する)パートナポータル116を指すことができる。
【0082】
POS/eコマース履行ユニット123は、販売時点(POS)で、または、オンラインベースのeコマースウェブサイトで生成された推奨および申し出を見込み消費者に示すように構成することができる。申し出は、それを消費者がPOSまたはeコマースウェブサイトで受け入れる場合、即時の履行のために構成することができる。
【0083】
調整および決済ユニット124は、1つ以上のトランザクションの清算、決済および調整プロセスを処理するように構成することができる。
【0084】
いくつかの実施形態では、通信リンク(例えば図3のリンクA)は、あらゆるデータ送信の前にパートナとプラットフォーム100の間に確立することができる。通信リンクはエンドツーエンドで暗号化することができ、その結果、リンクを用いて送信されるかまたは受信されるいかなるデータもセキュアであり、第三者によって傍受することができない。
【0085】
いくつかの実施形態では、パートナは、通信リンクが確立されてセキュアにすることができる前に、認証されることを必要とする。通信リンクは、鍵でセキュアにすることができる。例えば、通信リンクを用いて送信されるすべてのデータは、例えば鍵またはアクセス鍵と呼ばれてもよい暗号ハッシュ関数を用いて、暗号化アルゴリズムまたはプロセスによって暗号化することができる。
【0086】
このような暗号ハッシュ関数は一方向のハッシュ関数として公知であり得て、すなわち、それは、数学的に言えば、ほとんど不可逆であり得る。暗号化プロセスに対する入力データは、「プレーンテキスト」、「入力」または「メッセージ」として公知であり得るのに対して、暗号化プロセスの出力は、「出力」、「ハッシュダイジェスト」、「ダイジェスト」または「ハッシュ値」として公知であり得る。暗号化は、適切なハッシュ関数を使用することができる。いくつかの実施形態では、暗号ハッシュ関数は、MD5、SHA1およびSHA2の1つでもよい。
【0087】
いくつかの実施形態では、公開秘密鍵ペアを用いて通信リンクを暗号化することができる。すなわち、一旦パートナのアイデンティティが検証されて認証されると、セキュリティおよび暗号化ユニット125はパートナとの通信リンクを確立することができて、通信リンクを用いてパートナにアクセス鍵(公開鍵)を送信することができる。
【0088】
パートナはアクセス鍵を使用して、通信リンク上に送信されているすべてのデータを暗号化することができる。クリーンルーム300は通信リンクを通して暗号化されたデータを受信し、対応する秘密鍵を用いてデータを解読することができ、それらはクリーンにして正規化することができて、それに応じて処理することができる。
【0089】
セキュリティおよび暗号化ユニット125は、予め設定された時間期間の後パートナにアクセス鍵を無効にするかまたは更新することができる。セキュリティおよび暗号化ユニット125は、パートナによって、または、管轄権によってアクセス鍵を無効にするかまたは更新することもできる。いくつかの実施形態では、セキュリティおよび暗号化ユニット125は、通信リンクが終了されるかまたは確立されることを必要とするときはいつでも、アクセス鍵を無効にするかまたは更新することもできる。
【0090】
いくつかの実施形態では、通信リンクのエンドツーエンド暗号化に加えて、またはその代替として、例えば、トランスポート層セキュリティ(TLS)またはセキュアソケット層(SSL)などの暗号のプロトコルによるリンク暗号化を通信リンクに適用することができる。
【0091】
いくつかの実施形態では、パートナシステム115がいずれかのデータをクリーンルーム300に送信する前に、パートナは、プラットフォーム100が真正であり改竄されていないと検証することを求めることができる。これは、リモート認証プロセスによって達成することができる。リモート認証プロセスによって、プラットフォーム100がそれ自体を認証して、プラットフォーム100およびクリーンルーム300を動かすために用いるハードウェアおよびソフトウェアは信頼性が高く、信用できて、改竄されていないということを示すことができる。
【0092】
データ転送プロトコルは、パートナシステム115とプラットフォーム100の間に適用することができる。例えば、情報交換プロトコルはTLS/SSLと同様であるアプリケーション層チャネル暗号化でもよい。セッションの始めに、2つの関係者が互いに認証を行う。鍵交換はこのプロセス上でピギーバック方式で搬送することができ、したがって2つの共有鍵が確立され、それぞれが1つの関係者から他方へのデータフローのためのものである。
【0093】
鍵交換メカニズムが、データの暗号化のために用いられてもよい。例えば、SECP256R1(PRIME256v1)楕円曲線のディフィー ヘルマン鍵交換を実施することができる。この鍵交換の結果は、256ビットの共有ランダム性である。この共有秘密そのものまたはそのSHA256ハッシュは、2つのストリームのための2つの128ビットAES鍵に分解することができる。
【0094】
データは、ガロアカウンタモード(Galois Counter Mode)のAESブロック暗号を適用する認証された暗号化メカニズムである、AES-GCM(高度暗号化標準-ガロア/カウンタモード,Advanced Encryption Standard-Galois/Counter Mode)によって暗号化することができる。認証された暗号化の使用は、関係者の間で通信したデータの機密性および真正性を保証する。GCMのために使われるノンス(別名初期化ベクトル)は長さ12バイトであり、オールゼロで始まって、リトルエンディアン方式で各メッセージの後にインクリメントする。296個の可能なノンスが使い尽くされた後、対応する暗号化鍵は、「ランアウト」状態となりで、新しくネゴシエートされたものと置き換えられる。いくつかの実施形態では、暗号化は296個の可能なノンスが尽きた後でもよい。
【0095】
認証方法および悪意のある入力
リモート認証機構はセキュア通信チャネルを認証して確立するために用いることができて、それによって、リモートクライアント(例えばパートナシステム115)は、それらがプラットフォーム100の真正な危殆化されていないプロセッサ上のエンクレーブモードで動作している特定のコードによって通信していることを確実にすることができる。遠隔認証はエンクレーブによっても用いられて、公開鍵を影響を受けない方法でクライアントに送信することができる。この機構は、非常に非凡なグループ署名に依存するが、高度にピアレビューされた研究にも基づく。
【0096】
いくつかの実施形態において、クライアントまたはパートナシステムは、プラットフォーム100とのセキュア暗号化チャネルを確立するためのモジュールを含んでいるPythonスクリプトを含むことができて、入力データをクリーンルーム300によって消費される標準形式に変換する。
【0097】
遠隔認証は、解析サービスに対するクライアントの信頼の根本を構成することができる。それを鍵交換と統合することができる3つの方法がある:
1. 毎回またはクライアント当たり少なくとも一回、リモート認証を実行する。この場合、エンクレーブは、永続する公開鍵を有しておらず、ディフィー ヘルマンメッセージをリモート認証のペイロードに直接配置する。
2. リモート認証トランスクリプトを表すエンクレーブ。遠隔認証は、本来、それが対話する検証機構だけを確信させるように設計されたインタラクティブプロトコルである。しかしながら、すべての検証機構チャレンジが強力なハッシュ関数を用いて決定論的になされる場合、プロトコルはインタラクティブでないものに変えられ、それを通して、単一の実行でいかなる数の検証機構も確信させることができる。この変換は、Fiat-Shamirヒューリスティックとして公知である。このように変換されたプロトコルは、アントラステッドエンクレーブホスト自体によって実施することができる。エンクレーブは、公開鍵証明書と類似のこのプロトコルトランスクリプトを示して、リモート認証トランスクリプトに組み込まれた公開鍵によるチャレンジおよびその新規なディフィー ヘルマンメッセージに署名することによって認証を行う。
3. 証明書:クライアントは、リモート認証検証をサードパーティに委任して、それらによって発行された証明書を消費することができる。これは、あまり有望なオプションではない。
【0098】
クライアントまたはパートナシステムは、プラットフォーム100に対して認証することができる。認証は、データ流入の制限を制御するのを助けることができるが、決してシステムにガーベージデータを注入したり機密性への攻撃を仕掛けたりする可能性を排除するものではない。これらの攻撃は簡単な解説の価値があり、ガーベージを注入することは、システムをダウンさせるか、または攻撃者が利益を得ることができる誤った解析結果を故意に生成するために行うことができ、そして、機密性攻撃は、より巧妙である。
【0099】
攻撃者は、解析の最終結果がそれらが提供する入力における変更に対してどのように変化するかを観察することができ、それらに送信される出力を観察することを通して、設計者によって意図されるより多くの、他者により提供されるデータに関する情報を推定することができる。いくつかの実施形態では、潜在的な攻撃に対処するために、申し出の提示は慎重に作られることを必要とし、クライアント機関に示される情報は制限され得る。
【0100】
いくつかの実施形態では、OpenSSLなどのライブラリは、エンクレーブ設計のベストプラクティスは単純性およびミニマリズムを必要とする、という考慮によって実装することができる。したがって、アントラステッドコンポーネントにセキュアに委任することができる機能は、このように委任されなければならない。SSLの環境では、代数オブジェクト(例えば公開鍵および暗号文)のネイティブの表現の標準形への変換およびポリシーチェックは、このようなタスクである。
【0101】
前述のように、サービスは、2ウェイSSL接続で実践されることとは異なる方法で、クライアントに対して認証を行う。すなわち、実装されるSSL仕様は、ユーザ定義の認証プロトコルへモジュール式に切り替えることを可能にすることができる。
【0102】
図4は、パートナシステム115とセキュリティおよび暗号化ユニット125のトラストマネージャユーティリティ127との間のリモート認証プロセスを示している概略図である。ステップ410で、証明書マネージャユーティリティ128は、各パートナのための公開鍵証明書129を発行することができる。証明書129を使用して、トラストマネージャ127に着信データが真正であることを証明することができる。
【0103】
ステップ420で、パートナシステム115からの要求に応じて、トラストマネージャ127はパートナシステム115とのリモート認証プロセスを開始して、プラットフォーム100の真正性を検証することができる。パートナシステム115からの要求は、リモート認証の目的のために生成されたノンスN(予測不可能なランダム値)を含むことができる。トラストマネージャ127は、ノンスNを含む要求を受信して、次にノンスおよび要求を鍵認証のためにプラットフォーム100上のトラステッドプラットフォームモジュール(TPM)135に送信する。
【0104】
TPM135は、ハードウェアベースのセキュリティ関連機能を提供するように設計されている。TPM135は複数の物理セキュリティ機構を含んでそれを耐タンパー性とすることができ、他のものはTPM135の機能を改竄することができない。
【0105】
TPM鍵認証は、各TPM135に特有のエンドースメント鍵(EK)を使用し、製造時に生成される。EKに対する信用は、TPM135のEKのセキュアで改竄される恐れがないストレージに基づき、そして、EKの証明書がTPM製造者の発行認証局(CA)に対するチェーンであるという事実に基づいている。すなわち、EKの証明書は、TPM製造者の発行CAによって、暗号によって検証することができる。1つ以上の認証識別鍵(AIK)は、TPM135によって生成されて、EKによって署名することができる。AIKは、トラステッド認証局によって検証することができる。
【0106】
いくつかの実施形態では、トラストマネージャ127からTPM135への要求は、プラットフォーム100の1つ以上の現在のプラットフォーム構成レジスタ(PCR)値を含む。要求は、TPMバージョンナンバまたはTPM135がPCR値に署名するために必要な他のいかなる情報も任意選択的に含むことができる。PCR値は、主にシステム測定値を記憶するために用いられ、任意に上書きすることができない。PCR値は、コンピュータ的に捏造するのが不可能であるハッシュ値でもよい。いくつかのPCR値はデフォルト値にリセットすることができるが、それは適切な許可を必要とする。
【0107】
TPM135はトラストマネージャ127から要求を受信して認証識別鍵(AIK)でPCR値に署名することを続け、それから、ノンス、PCR値およびAIKを含んでいる署名済み応答をトラストマネージャ127に返送する。それから、トラストマネージャ127はパートナシステム115に署名済み応答を送信し、それは署名済み応答を解析して検証するためにその上にインストールされるパートナポータル116を有することができる。
【0108】
パートナシステム115は、署名済み応答を受信し、PCR値およびAIK署名が正確であると検証することによって署名済みデータが真正かつ信頼できることを検証する。例えば、パートナシステム115は、AIKが有効なことをトラステッド認証局を通して検証することができる。別の例としては、パートナシステム115は、PCR値を信用度にマップするデータベースの記憶値と値を比較することによって、PCR値が信頼できることを検証することができる。パートナシステム115は、署名済み応答のノンスが証明のためのその初期要求においてパートナによって送信されたノンスに対応することを確認することによって、PCR値が最新であることをさらに検証することができる。
【0109】
いくつかの実施形態では、PCR値の代わりに、別のハッシュ値、例えばプラットフォーム100のソフトウェアコードのハッシュ値を使用することができて、ハッシュコードはプラットフォーム100の現在の状態を表す。
【0110】
一旦パートナシステム115が、署名済み応答に基づいて、プラットフォーム100上で実行されているクリーンルーム300は真正かつ信頼できるということを満たすと、SSL/TLSハンドシェイクがステップ430で発生してセキュア通信チャネルを確立することができる。
【0111】
ステップ440で、暗号化されたデータは、セキュア通信チャネルを使用して、パートナシステム115からプラットフォーム100に送信することができる。いくつかの実施形態では、公開秘密鍵ペアを用いてデータを暗号化することができる。本明細書において記載されているように、セキュリティおよび暗号化ユニット125は、通信チャネルを用いてパートナシステム115にアクセス鍵(公開鍵)を送信することができる。パートナはアクセス鍵を使用して、通信チャネル上に送信されているすべてのデータを暗号化することができる。クリーンルーム300は通信チャネルを通して暗号化されたデータを受信し、対応する秘密鍵を用いてデータを解読することができ、それらはクリーンにして正規化することができて、それに応じて処理することができる。パートナポータル116(図5を参照)は、パートナ鍵記憶のパートナシステム115に割り当てられる公開鍵(複数可)を記憶することができる。クリーンルーム300は、鍵記憶130の各公開鍵に、対応する秘密鍵を記憶することができる。鍵記憶130は複数の秘密鍵を記憶することができ、それぞれがパートナに割り当てられる公開鍵に対応する。パートナシステム115には、データを暗号化するための1つ以上の公開鍵を割り当てることができる。
【0112】
いくつかの実施形態では、任意の長さのストリングが暗号化されたデータを識別可能にすることができるので、データセットは送信の前に前処理することができる。例えば、1つ以上のデータストリングは、特定の長さ、例えばシステムによって許容される最大長にパッディングすることができる。他の実施形態において、データストリングは定義済み構造にブレークダウンことができて、各アトミックコンポーネントは送信の前にハッシュするかまたは暗号化することができる。
【0113】
図14は、いくつかの実施形態による、セキュアトランザクションデータを処理するための例示のクリーンルーム300の別の概略図を示す。クリーンルーム300は、パートナポータルでデータの暗号化のためのパートナポータル116に、1つ以上のエンクレーブの公開鍵を送信するように構成されたデータマネージャ134を含むことができる。各エンクレーブはパートナポータル116からの暗号化されたデータの宛先であるようにデータマネージャ134によって選択することができるので、エンクレーブ133a、133b、133nは宛先エンクレーブと呼ばれてもよい。Hadoopファイルシステム(HDFS)などのファイルシステムは、クリーンルームに含まれて、エンクレーブ133a、133b、133nによって記憶された暗号化されたデータを管理することができる。
【0114】
いくつかの実施形態では、パートナポータル116は、クリーンルーム300にデータを送信するためにデータマネージャ134によってTLSまたはVPNを通して通信チャネル215を始動することができる。パートナポータル116は、最初に、データがクリーンルームに発信されるべきであることを示している要求をデータマネージャ134に発信することができる。いくつかの実施形態では、要求は、送信されるデータ量を表す情報を含むことができる。データ要求に基づいて、データマネージャ134は、パートナポータル116から着信データを受信するための1つ以上の宛先エンクレーブ133a、133b、133nを選択することができる。
【0115】
いくつかの実施形態では、データマネージャ134は各エンクレーブによって取り込まれるデータ量に基づいて宛先エンクレーブを選択することができ、その結果、各選択された宛先エンクレーブはパートナポータル116からこの通信セッションを通して特定のデータ量を受信するように指定される。加えて、データマネージャ134は、各宛先エンクレーブのための公開鍵を選択することができて、選択された宛先エンクレーブにそれぞれ対応する1つ以上の公開鍵をパートナポータル116に送信することができるので、パートナポータルは、通信チャネル215を介して暗号化されたデータを送信する前に適切な公開鍵を用いて生データを暗号化することができる。例えば、データマネージャ134は各宛先エンクレーブによって受信されるデータ量の上限を表す情報および対応する公開鍵(例えば「MaxSize、PublicKey/O」)を送信することができるので、パートナポータル116は、宛先エンクレーブの要件と整合している方法で、各宛先エンクレーブのための適切な量の着信データを暗号化することができる。
【0116】
一旦パートナポータル116がデータマネージャ134からデータ量、宛先エンクレーブ(複数可)および公開鍵(複数可)を表す情報を受信すると、パートナポータル116は生データを暗号化することへ進むことができる。例えば、パートナポータル116は、各宛先エンクレーブのための256ビットデータ暗号化鍵(DEK)をランダムに生成することができて、AES-256 CBCまたはGCMを使用するそれぞれのDEKによっていくつかの生データを暗号化する。パートナポータル116は、宛先エンクレーブの数および対応する数の公開鍵に基づいてDEKを生成することができる。異なるDEKは、宛先エンクレーブごとに、したがって宛先エンクレーブと関連付けられた公開鍵ごとに、生成することができる。それから、パートナポータル116は、DEKが生成される対応する宛先エンクレーブに基づいて、適切な公開鍵を用いてDEKのそれぞれを暗号化することができる。次に、パートナポータル116は、暗号化されたデータを暗号化された鍵(例えば暗号化されたDEK)とともに、通信チャネル215を介してデータマネージャ134に送信することができる。
【0117】
いくつかの実施形態では、通信チャネル215はVPN通信チャネルでもよく、その場合には、パートナポータル116およびクリーンルーム300は両方とも真正であることが検証されている。
【0118】
いくつかの実施形態では、通信チャネル215は、図4に関連して上記のとおり、パートナシステム115とセキュリティおよび暗号化ユニット125のトラストマネージャユーティリティ127の間のTLSチャネルと同様に、TLSの下で確立および維持することができる。
【0119】
クライアントシステム119は、クエリ118をクリーンルーム300上のリソースマネージャ1100に提示することができる。クエリは、通信セッション216を通して送信されるデータクエリでもよい。いくつかの実施形態では、クライアントシステム119は、データクエリを送信するために、クリーンルーム300の認可された関係者でなければならず、この目的のために、リソースマネージャ1100は、クライアントシステムが認可された関係者で、かつクエリの適切な許可を有することを確認するために、クライアントシステムと対話するように構成することができる。一旦クライアントシステムがクエリの適切な許可を有することが検証されたならば、リソースマネージャ1100はクエリに応答してクライアントシステムに回答を返すことができる。
【0120】
データクエリを送信するために、クライアントシステムは、リソースマネージャ1100との認証されたTLS通信セッション216を開始することができる。通信セッション216は、図4に関連して上記のとおり、パートナシステム115とセキュリティおよび暗号化ユニット125のトラストマネージャユーティリティ127の間のTLSチャネルと同様の方法で確立および維持することができる。
【0121】
TLS通信プロトコルを通して、リソースマネージャ1100は、クライアントシステムがクリーンルーム300の認可された関係者であることを検証することができる。一旦クライアントシステムが認可された関係者として検証されると、リソースマネージャ1100は、クライアントシステムがアクセスを有する1つ以上のデータ解析を送信し、そしてクライアントシステムで表示することができる。クライアントシステムは、表示されたデータ解析オプションから1つ以上のオプションを選ぶことができる。データ解析の一部は追加情報を必要とする可能性があり、それをクライアントシステムが提供するように構成することができる。それから、クライアントシステムは、リソースマネージャ1100に完全なデータクエリを送信することができる。
【0122】
リソースマネージャ1100は、クライアントシステムからデータクエリを受信することができて、アプリケーションマネージャ1124にクエリの送信を続けて、クライアントシステムからのデータクエリに基づいてデータ解析を開始させることができる。アプリケーションマネージャ1124は、1つ以上のエンクレーブ133a、133b、133nを生成して、エンクレーブを用いて暗号化されたデータ上の解析を実行するように構成されたアプリケーションでもよい。いくつかの実施形態では、1つ以上のワーカーノードを用いて必要とされるデータ解析を実行することができる。
【0123】
いくつかの実施形態では、1つ以上のデータ解析操作は、クリーンルームがセキュアかつ完全であることを許可された関係者に保証するために、検査に対して制限がなくてもよく、および/またはクリーンルーム300に参加しているすべての認可された関係者によって署名されていてもよい。
【0124】
いくつかの実施形態では、エンクレーブ133a、133b、133nは、その上に記憶されているデータ/文書の間の通信を認証して暗号化していてもよい。例えば、エンクレーブ133a、133b、133nの1つ以上のペアとの間で、TLS通信チャネルが確立されて、セキュア通信およびエンクレーブの間でのデータの交換を確実にすることができる。
【0125】
図15は、いくつかの実施形態による、セキュアトランザクションデータを処理するためのクリーンルーム300を含む分散システムの概略図を示す。クリーンルーム300は、パートナポータルでデータの暗号化のためのパートナポータル116に、1つ以上のエンクレーブの公開鍵を送信するように構成されたデータマネージャ134を含むことができる。各エンクレーブはパートナポータル116からの暗号化されたデータの宛先であるようにデータマネージャ134によって選択することができるので、エンクレーブ133a、133b、133nは宛先エンクレーブと呼ばれてもよい。Hadoopファイルシステム(HDFS)などのファイルシステムは、クリーンルームに含まれて、エンクレーブ133a、133b、133nによって記憶された暗号化されたデータを管理することができる。
【0126】
いくつかの実施形態では、分散モデルはクリーンルーム300を用いて実装することができて、パートナポータル(複数可)116は、それらのそれぞれのデータを維持して、ファイアウォールの後ろのパートナポータル116に接続されているデータエンジンを用いてデータ解析の一部または全てを実行することができ、メタデータなどの必要な解析結果だけがさらなる処理のためにクリーンルーム300に送信される。
【0127】
図14に図示されるシステムからのデータクエリ118と同様に、クライアントシステム119からのクエリ要求118は、リソースマネージャ1100に送信されてもよい。クエリ要求118は、データ解析のためのクエリを含むことができる。
【0128】
データクエリ118を送信するために、クライアントシステム119は、リソースマネージャ1100との認証されたTLS通信セッション216を開始することができる。通信セッション216は、図4に関連して上記のとおり、パートナシステム115とセキュリティおよび暗号化ユニット125のトラストマネージャユーティリティ127の間のTLSチャネルと同様の方法で確立および維持することができる。TLS通信プロトコルを通して、リソースマネージャ1100は、クライアントシステム119がクリーンルーム300の認可された関係者であることを検証することができる。一旦クライアントシステム119が認可された関係者として検証されると、リソースマネージャ1100は、クライアントシステムがアクセスを有する1つ以上のデータ解析を送信し、そしてクライアントシステムで表示することができる。クライアントシステムは、表示されたデータ解析オプションから1つ以上のオプションを選ぶことができる。データ解析の一部は追加情報を必要とする可能性があり、それをクライアントシステム119が提供するように構成することができる。それから、クライアントシステム119は、リソースマネージャ1100に完全なデータクエリを送信することができる。
【0129】
それから、クエリ要求118はアプリケーションマネージャ1124に送信することができ、続いてそれがデータクエリ118に基づいてデータ解析を開始させることができる。アプリケーションマネージャ1124は、データクエリ118に基づいて必要とされるデータ解析を決定することができる。アプリケーションマネージャは、データクエリ118に応答するために必要なデータ解析を実行するのに必要な、データのタイプおよびソースを決定することもできる。いくつかの実施形態では、アプリケーションマネージャ1124は、各パートナをそのそれぞれのデータにマップしているテーブルを読み出すかまたは受信することができる。アプリケーションマネージャは、必要とされるデータ解析のタイプおよび各パートナから必要とされるデータのタイプを含む、各パートナに対する詳細な命令をさらに生成することができる。命令はセキュアチャネル(例えばTLS)を介してデータマネージャ134に送信することができ、それから、それはTLSまたはVPN接続215を介して1つ以上のパートナポータル116に命令を送信することができる。
【0130】
命令を受信するとすぐに、各パートナポータル116はデータベース(例示されない)から必要かつ適切なデータを読み出すことができ、それはパートナポータル116の一部であるか、またはそれに接続されていてもよい。それから、パートナポータルは、データマネージャからの命令に基づいて、パートナ解析エンジン117などのデータエンジン上で適切なデータ解析を実行することができる。パートナ解析エンジン117は、パートナポータル116の一部であるか、あるいはそれに接続されていてもよい。いくつかの実施形態では、パートナ解析エンジン117は、クリーンルーム300によって提供されて構成されるが、パートナポータル116と同じ物理サイトでインストールされるデータエンジンでもよい。パートナ解析エンジン117は、パートナポータル116のファイアウォールの後ろにインストールすることができて、その結果、データマネージャがエンジン117に命令を送信するために、TLSまたはVPN接続215を確立することを必要とし、いくつかの実施形態では、暗号化がデータ送信のために必要とされる。
【0131】
パートナ解析エンジン117は、データマネージャによって必要とされる適切なデータ解析を実行することができて、データ出力またはデータ結果を生成して、それは、それから暗号化することができて、データマネージャ134に送信することができる。それから、データマネージャは、アプリケーションマネージャからの命令に応じて、1つ以上のエンクレーブ133a、133b、133nに、暗号化されたデータ結果を送信することができる。
【0132】
いくつかの実施形態では、パートナ解析エンジン117は最初にパートナポータル116にデータ結果を送信することができ、それから、それはデータマネージャ134を介してクリーンルーム300にデータ結果を送信することができる。
【0133】
いくつかの実施形態では、データマネージャ134は各エンクレーブによって取り込まれるデータ量に基づいて宛先エンクレーブを選択することができ、その結果、各選択された宛先エンクレーブはパートナポータル116またはパートナ解析エンジン117からこの通信セッションを通して特定のデータ量を受信するように指定される。加えて、データマネージャ134は、各宛先エンクレーブのための公開鍵を選択することができて、選択された宛先エンクレーブにそれぞれ対応する1つ以上の公開鍵をパートナポータル116に送信することができるので、パートナポータルは、通信チャネル215を介して暗号化されたデータを送信する前に適切な公開鍵を用いて生データ結果を暗号化することができる。例えば、データマネージャ134は各宛先エンクレーブによって受信されるデータ量の上限を表す情報および対応する公開鍵(例えば「MaxSize、PublicKey/O」)を送信することができるので、パートナポータル116またはパートナ解析エンジン117は、宛先エンクレーブの要件と整合している方法で、各宛先エンクレーブのための適切な量の着信データを暗号化することができる。一旦パートナポータル116またはパートナ解析エンジン117がデータマネージャ134からデータ量、宛先エンクレーブ(複数可)および公開鍵(複数可)を表す情報を受信すると、パートナポータル116またはパートナ解析エンジン117は続けて、生データ結果を暗号化して、接続215を介してデータマネージャ134に暗号化されたデータ結果を送信することができる。
【0134】
いくつかの実施形態では、通信チャネル215はVPN通信チャネルでもよく、その場合には、パートナポータル116、パートナ解析エンジン117およびクリーンルーム300は両方とも真正であることが検証されている。
【0135】
いくつかの実施形態では、通信チャネル215は、図4に関連して上記のとおり、パートナシステム115とセキュリティおよび暗号化ユニット125のトラストマネージャユーティリティ127の間のTLSチャネルと同様に、TLSの下で確立および維持することができる。
【0136】
いくつかの実施形態では、データマネージャ134に返送されるデータ結果は、メタデータまたは他のタイプのデータを含むことができる。いくつかの実施形態では、さらなるデータ解析が、1つ以上のパートナポータル116および/またはパートナ解析エンジン117から送信されるデータ結果に基づいてデータクエリを完成するために必要とされ得る。アプリケーションマネージャ1124は、適切な数のセキュアエンクレーブ133a、133b、133nに、パートナから送信されるデータ結果に基づいて解析を完了するように指示することができる。アプリケーションマネージャ1124は、いくつかの実施形態では、1つ以上のエンクレーブ133a、133b、133nを生成して、エンクレーブを用いて暗号化されたデータ上の解析を実行するように構成されたアプリケーションでもよい。いくつかの実施形態では、1つ以上のワーカーノードを用いて必要とされるデータ解析を実行することができる。
【0137】
最終データ結果はクリーンルーム300によって生成することができて、暗号化されたチャネルでもよいセキュア通信チャネル216を使用してリソースマネージャ1100を通して、元々のデータクエリ118を送信したクライアントシステム119に戻すことができる。
【0138】
いくつかの実施形態では、クライアントシステムへ最終データ結果を返送する代わりに、クリーンルーム300は、それに代えてクライアントシステムに代わって最終データ結果に基づいて動作を実行することができる。
【0139】
いくつかの実施形態では、1つ以上のデータ解析操作は、クリーンルームがセキュアかつ完全であることを許可された関係者に保証するために、検査に対して制限がなくてもよく、および/またはクリーンルーム300に参加しているすべての認可された関係者によって署名されていてもよい。
【0140】
いくつかの実施形態では、エンクレーブ133a、133b、133nは、その上に記憶されているデータ/文書の間の通信を認証して暗号化していてもよい。例えば、エンクレーブ133a、133b、133nの1つ以上のペアとの間で、TLS通信チャネルが確立されて、セキュア通信およびエンクレーブの間でのデータの交換を確実にすることができる。
【0141】
1つの非常に単純な実施例では、各パートナ116は1セットの数を含むデータのセットを各々有することができて、クライアントはすべてのパートナの中の最小値を要求するデータクエリを送信する。アプリケーションマネージャは、各パートナにパートナ解析エンジン117を用いてそれ自身のデータ上のそれ自身の解析を実行するように指示することができ、それはそれぞれのパートナに属しているデータのセットに基づいてパートナごとのそれぞれの最小値を生成する。それからこの結果は暗号化して、クリーンルームのアプリケーションマネージャに送信することができて、それから、それはすべてのパートナからのそれぞれのデータ結果を比較する最終的なデータ解析を実行し、各パートナによって送信されるすべてのそれぞれの最小値の中の最小値を含んでいる最終結果を生成する。この場合、クリーンルームは、パートナデータ全体にアクセスするのではなく、各パートナが有するデータのセットに基づいて、単にメタデータまたはデータ出力にアクセスする。
【0142】
別の実施例では、クライアントシステム119はデータクエリ118を送信して、チョコレートなどの商品に過去3ヵ月の最も多くの金額の金を費やした上位100人の消費者を捜し出すことができる。リソースマネージャ1100は、このクエリを受信することができ、アプリケーションマネージャ1124に転送し、それから、それはデータクエリを実行するための特定のパートナポータルを決定して、各パートナにデータ解析について適切な命令を生成する。アプリケーションマネージャは、内部または外部知識データベースに基づいて、チョコレートに金を費やすことができる多数の消費者を有することが知られている1つ以上のパートナを選択することができる。例えば、アプリケーションマネージャは、チョコレート店であるか、または、既存の販売情報に基づいて大量のチョコレートを販売する売り主を選択することができる。
【0143】
データ解析についての命令は、必要とされるタイプのデータならびに必要とされるデータ解析のタイプを、選択されたパートナのリストとともに含むことができ、TLS接続215を介してデータマネージャ134に送信することができて、データマネージャ134は、データの暗号化のための公開/秘密鍵のセットによるTLSまたはVPN接続を介して各選択されたパートナに各命令を送信することができる。いくつかの実施形態では、命令は、各パートナまたは各パートナ解析エンジンに発信される前に暗号化することができる。
【0144】
各パートナ解析エンジン117は、データマネージャ134から命令を受信することができて、受信した命令に従って要求データ解析を続けて実行することができる。パートナ解析エンジンは、命令で指定されているデータ解析を実行するために、必要である場合、各パートナポータルから適切なデータを読み出すことができる。
【0145】
それから、各パートナ解析エンジン117からのデータ結果は、暗号化およびクリーンルーム300への送信のためにそれぞれのパートナポータル116に送信することができ、クリーンルーム300は追加のデータ解析を実行して、チョコレートに過去3ヵ月で最も多額のお金を費やした上位100人の消費者を表わす最終結果を生成することができる。例えば、それぞれのパートナ116からのデータ結果は、この3ヵ月でチョコレートに最も多額のお金を費やした上位50人の消費者ならびに各消費者が費やしたそれぞれの金額を含むことができる。
【0146】
別のそれぞれのパートナ116からのデータ結果は、この3ヵ月でチョコレートに最も多額のお金を費やした上位X人(例えば30人または100人)の消費者ならびに各消費者が費やしたそれぞれの金額を含むことができる。それから、クリーンルーム300は、データ結果を入れたすべてのパートナの中の最後の3ヵ月でチョコレートに最も多額のお金を費やした上位100人の消費者を決定することができる。
【0147】
いくつかの実施形態では、クリーンルーム300は、接続216を介してこのデータ結果をクライアントシステム119に返送することができる。他の実施形態では、クリーンルーム300はクライアントシステム119にこのデータ結果を与えずにおくことができて、その代わりに、クーポンまたはプロモーションの申し出を使用してより多くのチョコレートを購入することに興味を持っている可能性がある消費者のこのリストに、チョコレートのためのクーポンを送信することができる。
【0148】
図5を次に参照すると、クリーンルーム300の例示のセキュリティおよび暗号化ユニット125とデータストレージ108とを示す。いくつかの実施形態では、各パートナ115は、最小限のデータのセットがクリーンルーム300のデータストレージ108に記憶されるのを可能にする。また同時に、どのパートナも集約データにアクセスしたり見ることができないが、パートナはポータル116を通して利用可能な1つ以上の動作を要求することができる。例えば、パートナ115は、プラットフォーム100に新規な申し出のために特定のユーザグループをターゲットとするよう求めることができる。別の例として、パートナは、プラットフォーム100に、ユーザの特定の人口統計群にとって支出傾向が何であるかについて解析するよう求めることができる。
【0149】
パートナシステム115は、いくつかの実施形態では、パートナポータル116を含むことができる。パートナポータル116は、公開鍵を用いて消費者データを暗号化して、暗号化されたデータをプラットフォーム100に送信するように構成することができる。パートナポータル116は、パートナ(例えば銀行および小売商)が鍵および証明書を生成しておよび/または記憶して、クリーンルームAPlと通信するのを可能とすることができる。パートナシステム115は、消費者データをクリーンルーム300に提供するときに、必要とされるJSONデータフィールドを提供することができる。
【0150】
一旦暗号化されたデータがパートナポータル116からプラットフォーム100に到着すると、それはデータパイプラインAPIを通過て、それから、データストレージ108に記憶するために処理される。暗号化および解析ユニット131は、1つ以上のセキュアエンクレーブ133に複数のワーカーアプリケーションまたはノードを有することができ、その各々は、入って来る消費者データを処理するためにそれぞれの、および別個のセキュアエンクレーブ133にある。いくつかの実施形態では、各ワーカーアプリケーションまたはノードは、1つのパートナに特定の消費者データを処理することができる。すなわち、各パートナは、その特定のパートナからの消費者データを処理しているクリーンルーム300の中の1つ以上のセキュアエンクレーブ133に専用のワーカーノード132a、132bを有することができる。
【0151】
セキュアエンクレーブ133の単一のワーカーアプリケーションまたはノード132a、132bは、セキュアデータウェアハウス108に記憶されるデータを解読して解析することができる。各ワーカーノード132a、132bは、パートナ構成ユニット、データモデルユニット、データ暗号化/解読ユニットおよびデータ解析ユニットを含むことができる。パートナ構成ユニットは、パートナに対する特定の情報を含むことができ、例えば、パートナ構成ユニットは、パートナからそれぞれのデータの属性、データタイプ、データフィールドおよび/またはデータサイズへの、データスキーマテンプレートマッピング着信データを提供することができる。
【0152】
データ暗号化ユニットは、暗号化技法またはアルゴリズムに基づいて1つ以上のデータセットを暗号化されたコンテンツに暗号化するように構成することができる。いくつかの実施形態では、暗号化ユニットは、1つ以上のデータセットを暗号化して暗号化されたデータ要素を生成するために適切な鍵を、決定するか、読み出すかまたは、生成する。暗号化のために用いられる各鍵は、鍵記憶130に記憶することができる。
【0153】
データ解読ユニットは、鍵に加えて、暗号化技法またはアルゴリズムに基づいて、1つ以上の暗号化されたデータセットをプレーンテキストに解読するように構成することができる。いくつかの実施形態では、データ解読ユニットは、1つ以上の暗号化されたデータセットを解読してプレーンテキストを生成するために適切な鍵を、決定するか、読み出すかまたは、生成する。
【0154】
データ解析ユニットは、解読データに解析を実行するように構成することができる。
【0155】
いくつかの実施形態では、必要とされるデータフィールドまたは属性の最小セットは、各パートナによって提供されることを必要とする。例えば、データの最小セットは、トランザクションの時間およびデータ、小売商名称、銀行名およびID、MCC、認証コード、消費者名(分かっている場合)およびマスクされたPANを含むことができる。パートナによって送信されるいかなる追加データも、今後使うため記憶することができる。
【0156】
パートナシステム116は、消費者データをバッチで送信することができ、例えば、パートナがクリーンルーム300に最初にサインアップするときに、大量のデータを1つ以上のバッチでセキュア通信チャネルを介してプラットフォーム100にプッシュすることができる。しばしば、パートナからのデータの最初のバッチは複数の日、数ヶ月あるいは数年にわたっているデータを含むことがあり得、それは消費者のふるまいに対する有益な洞察を得るために解析することができる。データバッチはまた、プラットフォーム100によって適切であると考えられるとき、または、設定された間隔(例えば月ごと)の間に発生する場合がある。
【0157】
パートナは、トランザクションが発生するとき(例えば消費者が店舗で購入をするとき)に、リアルタイムまたはほぼリアルタイムで消費者データを送信することもできる。
【0158】
データモデルユニットは、データが解読された後に、データモデル化およびデータ正規化のステップを実行するように構成されている。データモデルユニットは、ある期間に1回、例えばX時間またはX日ごとなど、データ正規化ジョブをスケジューリングして、新規な解読データをモデルに運ぶことができる。データモデルユニットは、データ正規化ジョブがデータモデルを簡素化するために正規化データを修正するたびに、モデル訓練ジョブをスケジューリングすることもできる。
【0159】
いくつかの実施形態では、データストレージ108は、必要に応じて拡張可能でもよい。
【0160】
図6は、クリーンルーム300の各種要素を示している別の概略図である。いくつかの実施形態では、クリーンルーム300は、パートナプロファイル140およびユーザプロファイル145を含むことができる。ユーザは、消費者を指すことができる。パートナプロファイル140は、パートナの登録詳細を含むパートナ登録を含むことができる。ユーザプロファイル145は、ユーザの登録詳細を含むユーザ登録を含むことができる。各パートナはパートナプロファイル140を有することができ、各ユーザはユーザプロファイル145を有することができる。各パートナおよびユーザは、データウェアハウスのデータモデルユニットによって定まるそれ自身のそれぞれのデータモデルを有することができる。
【0161】
図7は、データクラスタ配備および管理のためのデータモデル化ユニットおよびデータストレージユニット108の概略図を示す。見てわかるように、データモデルトレーナ、データモデルおよび暗号化/解読鍵は、セキュリティの強化のためにセキュアエンクレーブに記憶することができる。受信された消費者データは解読されて生データとして記憶することができて、それから、それは正規化されて正規化データとして記憶することができる。正規化データは、セキュアエンクレーブ133の中のモデルトレーナに送信することができて、モデルトレーナによってさらに処理することができる。異なるパートナが異なるデータセットを有することができるので、前記データセットは、集約して解析される前に正規化されることを必要とする。
【0162】
いくつかの実施形態では、システムは、トランザクションおよびSKUデータを、(i)特定の消費者、および/または、(ii)定められたセグメンテーション(例えば郵便番号、小売商、現在位置)にマップすることができる。例えば、消費者データは、1つ以上のデータフィールドに基づいて銀行システム112と取引システム113の間にマップすることができる。例えば、MCCおよび認可コードが同じトランザクションに対して銀行と小売商の間で共通であるので、認可コードおよび/またはMCCを用いて、銀行からのトランザクションのためのトランザクションデータを小売商からの同じトランザクションのためのトランザクションデータとリンクすることができる。認証コードを使用することに対するセキュリティ上の懸念は、シャッフル操作のデータフローを観測することが認証コードに関する情報を漏らすということであり得る。いくつかの実施形態では、ノードは、クリーンルーム300によって適切に決定したように、または、多くのジョブ当たりのベースで、時々ビン割り当てをランダム化するように構成することができる。
【0163】
いくつかの実施形態では、ノードは、例えば図9で図示するように入って来る認可コードの順序をシャッフルするように構成することができ、これは秘密ジョブ鍵がジョブの始めにドライバノードの中で保護されたコンポーネントによってワーカーに分配されることを示す。
【0164】
別の例として、金融商品のPANが利用できる場合、トランザクションはカードPANを使用して銀行と小売商の間にマップすることができる。しかしながら、PANがPCIコンプライアンスのため捕えられることはほとんどありそうにないが、認可コードはPANへリンクバックすることができる。
【0165】
加えて、発見的方法を位置および時間情報に基づいて用いて、トランザクションデータのリンクをさらに確認して、エラーを最小化することができる。
【0166】
図7に戻って参照すると、「ストレージ鍵」を用いて、ローカルストレージに記憶されるデータを暗号化してセキュアにすることができる。ストレージ鍵は、エンクレーブのシール鍵を用いて永久記憶に記憶することができる。暗号化鍵の喪失は、失敗につながり得る。「ジョブランダム化鍵」は、ワーカーノード間のジョブ分解をわかりにくくするために用いるドライバノードによって発行されるノンスである。「通信鍵」は、その他全てのネットワークノードで維持される。ノードは、トラストマネージャ127によって保証されるそれらの公開鍵によって識別される。
【0167】
図8は、適用される解析のタイプ(正規化、モデル訓練およびモデルの適用)に関係なくデータクラスタがどのように動作するかの概略を示す。プラットフォーム100は、入力データの莫大な貯蔵場所から洞察を生成することができる。これは、1つ以上のマシン上で達成することができる。いくつかの実施形態では、Hadoopフレームワークは、汎用品コンピュータの大きいクラスタ上でビッグデータ解析を管理して実行するために実装することができる。クラスタリソース管理のタスクは、データからほとんど独立している。ワーカーエンクレーブは、リソース管理アプリケーション、例えばHadoop YARNまたはHadoopスタックの別のコンポーネントによって管理されるクラスタの中に組み込むことができる。場合によっては、データセットの量およびサイズは大きい場合があり(例えば、256MB以上)、それは分散記憶および処理のための複数のセキュアエンクレーブ133を必要とし得る。
【0168】
図11Aに示すように、リソース管理アプリケーションは、ワーカーノードによって遂行されるリソースおよび追跡ジョブを管理する。リソース管理アプリケーションは、ノードのアーキテクチャ上の機能を使用し、ローカルファイルシステムにアクセスし、必要に応じてメッセージを暗号化することを制御するオプションをユーザに与えることができる。いくつかの実施形態では、リソース管理アプリケーションは、YARN(登録商標)を用いて実施することができる。リソース管理アプリケーションは、クライアント、アプリケーションマスターおよびワーカーアプリケーション(ワーカーノードまたはワーカーとも呼ぶことができる)などの各種要素を含むことができるかまたはそれらにリンクすることができる。
【0169】
クライアント、またはクライアントシステムもしくはアプリケーションは、データ処理またはデータ解析のための要求を提示することができる。
いくつかの実施形態では、クライアントシステムは、パートナシステム115などの外部の関係者、またはプラットフォーム100もしくはクリーンルーム300の中のコンポーネントでもよい。クライアントは、全入力ファイルをHDFSなどのデータベースに投入することもできる。
【0170】
アプリケーションマスター(または「マスターアプリケーション」)は、リソースを求めてネゴシエートし、作り出されたワーカーコンテナを要求して、それらのジョブ進行を追跡する。アプリケーションマスターは、リソースマネージャ(例えば図11Aを見る)にワーカーコンテナを作り出してかなりの量の解析を実行するよう求める。アプリケーションマスターは、入力ファイル全体およびファイルの中のどの部分を処理するべきかに関する指示も送信する。すべてのワーカーが終了したことを通知された後に、アプリケーションマスターは、それらの部分的な結果を結合する。
【0171】
ワーカーアプリケーションは、データ解析を実行する。ワーカーアプリケーションの複数のインスタンスであってもよい。各ワーカーはセキュアエンクレーブの中にあってもよく、あるいは、セキュアエンクレーブを含んでおり、そしてエンクレーブは、入力ファイルおよびそれが処理しなければならない間隔を受信することができる。解析はセキュアエンクレーブ内部で実施されて、結果はアプリケーションマスターが集約するためにHDFSの中へ書き戻される。
【0172】
セキュアエンクレーブの外部のデータのいかなる表現も、暗号化することができる。これは、ワーカーノードの中でシャッフルされる入力または中間データのいかなる区画も含む。ノードは、重要データを共有する前に、互いの真正性も点検する。
【0173】
図8に戻って参照すると、いくつかの実施形態では、クラスタ管理サブシステムは、セキュアエンクレーブが様々なデータセットの解析のための作業負荷を分散するために実装することができる。クラスタ管理サブシステムは、マスターアプリケーション(またはマスターノード)および1つ以上のワーカーアプリケーション(またはワーカーノード)を含むことができる。クラスタアプリケーションシステムは、複数のエンクレーブ内の複数のワーカーノードにジョブを管理して配布する、YARNリソースマネージャアプリケーションを含むことができ、それはデータを解読して処理することができる。ワーカーアプリケーションはSparkまたはH2Oエグゼキュータを含むこともできる。修正されていない分散データは、HDFS(Hadoop分散ファイルシステム)などのデータベースに記憶することができる。
【0174】
いくつかの実施形態では、各ワーカーノードはデータセットの区画の最小限をとることができて、一旦それがなされると、その極小値をアプリケーションマスターに提出する。それから、アプリケーションマスターは、すべての極小値の最小限として、グローバルな極小値を計算する。このプロセスは、分散アプリケーションのどのコンポーネントが自由にデータを見ることを必要とするかについて指し示すことができる。リソース管理サブシステムそのもののコンポーネントがその必要性がないないことは、明白である。リソース管理サブシステムに提供するコンポーネントの中で、ワーカーおよびアプリケーションマスターはデータを見ることができ、それはセキュアエンクレーブの中で実施することができる。
【0175】
SGXエンクレーブなどのセキュアエンクレーブは、実行時ライブラリ(ウインドウズにおけるDLL、そしてUNIX(登録商標)システムでもそうである)としてパックされる。それらは、別のネイティブアプリケーションによってホストされることを意味する。このアプリケーションは、代わりに、JNI2ブリッジを通して主アプリケーションへ戻って接続する共有ライブラリそのものとすることもできるかまたは、Java(登録商標)アプリケーションによって作り出される子プロセスとすることもできる。
【0176】
データベース管理システムは、クラスタ上の大きなファイルを記憶することを単純化して合理化するために実装することができる。それは、(障害弾力性のための)多重化、ロードバランシングおよび他のアプリケーションに依存しないタスクを処理する。
【0177】
セキュアエンクレーブ133の単一のワーカーアプリケーション(図8で「ワーカーノード」とも呼ばれる)は、リソース管理サブシステムまたはYARNなどのアプリケーションと統合することができる。ワーカーアプリケーションは、セキュアデータウェアハウス108に記憶されたデータを解読して解析することができる。いくつかの実施形態では、リソース管理アプリケーション(例えば、YARN)は、複数のCPUを管理するために実装することができる。クラスタ管理アプリケーションは、複数のセキュアエンクレーブ全体の複数のワーカーアプリケーションを管理することができる。クラスタ管理アプリケーションは、図11Aおよび11Bに示すように、ジョブスケジューリングを扱うこともできる。
【0178】
いくつかの実施形態では、セキュアエンクレーブ133の間に、追加的なセキュリティのための1つ以上の認証ステップがあってもよい。
【0179】
いくつかの実施形態では、セキュアエンクレーブの中のワーカーアプリケーションは、C++などの適切なプログラミング言語を使用して実装することができる。いくつかの実施形態では、YARNおよび関連する管理機能は、Java(登録商標)などの適切なプログラミング言語で実施することができる。いくつかの実施形態では、解析エンジンおよび解析モジュールは、PythonまたはJava(登録商標)などの適切なプログラミング言語で実装することができる。
【0180】
アントラステッド環境にあるトラステッドワーカーアプリケーションは、互いと秘密データを共有して、ジョブランダム化を共有することを必要とする場合があり、適切に管理されていないと、カスタマデータを危険にさらすことになる。さらに、クライアント便宜のために、システムは1ポイントのエントリによって設計されなければならず、これは、クライアントが分散システムの1つのコンポーネントだけを検証しなければならず、それによってソリューション全体に対する信頼を得なければならないことを意味し、それは上記のようにリモート認証によって達成することができる。
【0181】
図11Aは、例示のリソース管理構造を示す。リソース管理サブシステムまたはアプリケーションは、リソースマネージャ1100を含むYARNおよび1つ以上のノードマネージャ1121、1131、1151を用いて構成して実装することができる。一旦ジョブ要求が、例えば、クライアントシステム119(例えばパートナシステム115またはプラットフォーム100の異なるコンポーネント)からリソースマネージャ1100によって受信されると、リソースマネージャ1100は、コンテナ1120の中のノードマネージャ1121にリソースリクエストを送信することができ、それがアプリケーションマスター1123を生成することができる。次に、アプリケーションマスター1123は、コンテナ要求をリソースマネージャ1100に返送することができ、そしてワーカーノード132a、132bを別個のコンテナ1130、1150の中に作り出して、タスクを実行する。
【0182】
図11Bは、いくつかの実施形態による、リソース管理データ処理のための例示の概略図を示す。第1のステップとして、クライアントシステム119はジョブをYarnクラスタに提出して、アプリケーションマスター1123のためのコンテナを作製することができる。次に、アプリケーションマスター1123は、それぞれエンクレーブを有するいくつかのワーカーノードまたはコンテナ132a、132b、132cを生成する。それから、コンテナ132a、132b、132cは、データベース(例えば、HDFS)から符号化データを読み込んで、エンクレーブにデータを送信する。エンクレーブの中で、データは、デコードされ、処理され、再符号化されて、それから、外部コンテナに戻される。符号化された結果は、HDFSへ書き戻されてクライアントシステム119がそれを読み出すことができる。各ワーカーノードは、特定のタスクを実行することができる。それらのいくつかまたは全部は、異なるジョブまたは同じジョブを実行することができる。いくつかの実施形態では、クライアントは、各ジョブの始めに全入力ファイルを提出することが必要である。データセットは、いかなる特定のジョブよりも長く残ることができて、クラスタ上ですでに休止してもよい。
【0183】
いくつかの実施形態では、ワーカーノードは、それらが入力ファイルの中でどの区画をローカルに記憶したかについて認識することができて、それをアプリケーションマスターに報告する。アプリケーションマスターは、それからワーカーに区画処理の割り当てに関して、情報に基づいた決定をすることができる。
【0184】
いくつかの実施形態では、コンテナ間の暗号化されたチャネルは、複雑なジョブを容易にするために実装することができる。HDFSは、システムが障害から回復することができるようにしながら効率を改善するために、様々な方法でデータをミラーリングするように設定することができる。エンクレーブは、いくつかの場合では、それらがシャットダウンされる必要がある場合に備えて、一時的にそれらのそれぞれの進行を保存することができて、再開することができる。
【0185】
HDFSを通してエフェメラルメッセージを伝えることは、非常に非効率的であり得る。いくつかの実施形態では、ノードは、互いの間にネットワーク接続を確立することができる。
【0186】
データセットは、ストレージの中に暗号化することができる。いくつかの実施形態では、すべてのワーカーノードは、単一の暗号化鍵を共有することができる。他の実施形態では、各ノードは、それ自身の暗号化鍵を有することができる。前者は、ファイルの全体論的ビューが可能であるので、単純性の利点がある。後者は、1つのノードを危殆化することに攻撃者が成功してもデータセット全体を露出させることにはならないので、より良好なセキュリティ保証を提供する。
【0187】
部分的な結果がアプリケーションマスターに集約することになっている場合、結果はセキュアエンクレーブに記憶することができる。いくつかの実施形態では、すべてのデータ解析はワーカーノードに委ねることができて、ジョブメタデータだけがアプリケーションマスターに露出され得る。
【0188】
いくつかの実施形態では、プラットフォーム100のクリーンルーム300は、クラスタ内の多くのマシン全体のデータの大きいバッチを処理することができる。例示の分散処理データベース設定は、Hadoopを用いて実行することができる。加えて、HDFS(Hadoop分散ファイルシステム)は、データをノード間に分配する簡単な方法を提供する。SPARK(分散データ科学フレームワーク)も、Hadoopと共に実装することができる。例えば、アプリケーションマスターアプリケーションおよび1つ以上のワーカーアプリケーションは、それぞれ機械学習/データ解析コンポーネント、例えばSparkもしくはH2Oドライバまたはエグゼキュータを含むことができる。ドライバアプリケーションは、エグゼキュータ内部の鍵値記憶およびメモリマネージャなどの様々なプロセスのためのエグゼキュータアプリケーションを開始することができる。
【0189】
図16をここで参照すると、リソースマネージャとしてYARNを用いてデータ解析を実装している例示のSparkフレームワークを示す。Apache Spark(登録商標)はオープンソース分散汎用クラスタコンピューティングフレームワークであり、それは大規模なデータ処理のための解析エンジンを含むことができる。この例示の実施形態において、クライアントシステム119には、Sparkクライアントがインストールされていてもよい。アプリケーションマスター1123には、リソースアプリケーションを調整するためにドライバアプリケーション1125がインストールされていてもよい。ドライバアプリケーション1125は、アプリケーションのmain()関数を実行し、リソースを調整するためのSparkContextオブジェクトを作成して様々なデータ解析タスクを実行するプロセスでもよい。
【0190】
ワーカーアプリケーションまたはワーカーデーモンとして作用することができるYARNコンテナは、1台のマシン上のリソース割付けを調整することができる。各YARNコンテナはエグゼキュータ1127a、1127bを含むことができ、それはSparkタスクまたはアプリケーションを実行することができる。一般的に言えば、エグゼキュータは、タスクを走らせて、データをそれら全体のメモリまたはディスクストレージ装置に保持するワーカーノードまたはYARNコンテナ上のアプリケーションのために開始される、実装されたプロセスでもよい。各アプリケーションは、それ自身のエグゼキュータを有することができる。
【0191】
いくつかの実施形態では、ドライバアプリケーション1125は、別個のスレッド上のアプリケーションマスター1123の上で動くことができる。
【0192】
いくつかの実施形態では、Sparkアプリケーションはクラスタ上のプロセスの独立セットとして動作することができ、ドライバアプリケーション1125のSparkContextオブジェクトによって調整される。例えば、クラスタ上で動作するために、SparkContextオブジェクトは、YARNを含むいくつかのタイプのクラスタマネージャに接続することができ、それはアプリケーション全体のリソースを割り当てることができる。一旦接続されると、Sparkはクラスタのノード上のエグゼキュータを得るが、それは計算を走らせクリーンルーム300のためのデータを記憶するプロセスである。
【0193】
次に、それは、アプリケーションコード(SparkContextオブジェクトに渡されるJARまたはPythonファイルによって定義される)をエグゼキュータに送信することができる。最後に、SparkContextオブジェクトは、実行するために、エグゼキュータ1127a、1127bにタスクを送信することができる。
【0194】
いくつかの実施形態では、Linux(登録商標)カーネルライブラリ(LKL)およびMUSLライブラリを用いて、Sparkフレームワークの下でドライバおよびエグゼキュータアプリケーションを実装することができる。LKLを用いて書かれたプログラムコードは、Alpine Linux(登録商標)(それがlibcの代わりにMUSLを使用するので)SGX LKLのために書かれた大部分のパッケージを含んで、MUSLにリンクされる大部分のアプリケーションを実行することができる。gccクロスコンパイルスクリプトだけが提供されているが、Cスクリプトを修正してAlpine g++パッケージから含むC++を追加することによって、または単にAlpine Linux(登録商標)上でコンパイルすることによって、g++アプリケーションをコンパイルすることもできる。
【0195】
しかしながら、LKLを用いた実装へのいくつかの制限が存在する。例えば、大部分のアプリケーションは単一処理アプリケーションだけであるが、マルチスレッディングは可能である。メモリ集約型のアプリケーションが遅くなるほどの著しいページフォルトのオーバヘッドがあり得る。加えて、認証プロセスが信用のチェーンが確立されることを必要とするので、認証プロセスは第1の証明がLKLエンクレーブの初期状態の間に実行されるのを必要とする可能性があり、それから、エンクレーブを使用して仮想ディスク画像のハッシュを検証する。
【0196】
上述の制限を克服するために、クリーンルーム300は、いくつかの実施形態によれば、修正されたSparkフレームワークを有することができる。SparkおよびHadoopの組合せは、以下のようないくつかの修正を必要とし得る:
・DataTimeUtils.scalaの削除
・fork()(OS機能について調べるか、またはユーザがいるグループを見つけるために複数回使用される)の使用の削除または回避
・デフォルトであるShellBasedUnixGroupsMapping.javaの使用を避けるためのカスタムGroupsバックエンドの提供
【0197】
これらの例示の修正により、ローカル(単一ノード)スタンドアローンモードで働いているSparkフレームワークを得ることができる。
【0198】
いくつかの実施形態では、クリーンルーム300が多くの暗号化されたデータを受信するので、それはデータをデータ解析のためのアプリケーションマスター1127に分配することができる。ドライバアプリケーション1125は、暗号化されたデータを受信することができて、データを1つ以上のエグゼキュータ1127a、1127bに送信して、1つ以上のデータ解析タスクを実行することができる。
【0199】
各エグゼキュータの中で、別個の実行プロセスが、機密データ(トラステッド、セキュア環境において処理されることを必要とする)と非機密データ(アントラステッド環境において計算することができる)の間に発生する場合がある。図17をここで参照すると、これは、Sparkフレームワークの下での例示のエグゼキュータ構造を示す。エグゼキュータ1127は、Java仮想マシン(JVM)1128などのアントラステッド環境、トラステッドJVM1129などのトラステッド環境および共有メモリ2003を含む3つのコンポーネントを有することができる。
【0200】
アントラステッドJVM1128は、どのようなカスタマまたは財務データも含まないメタデータなどの、非機密データのためのデータ解析を実行するように構成することができる。アントラステッドJVM1128はブロックマネージャを有することができ、それはデータブロックの鍵値記憶(ブロック記憶)でもよい。ブロックマネージャは、各エグゼキュータのローカルキャッシュとして機能することができて、様々な記憶、すなわちメモリ、ディスクおよびオフヒープを用いて、ローカルおよびリモートの両方でブロックをアップロードしてフェッチするためのインタフェースを提供することができる。アントラステッドJVM128は、Sparkアプリケーションのための分散コンピューティングプラットフォームを確立するために互いに対話するSparkのパブリックサービスを有するSpark実行時環境でもよい、SparkEnv2004を含むことができる。アントラステッドJVMの中のダミータスクランナ2006は単一タスクの実行のスレッドとすることができ、それはエグゼキュータがタスクを実行するよう求められるときに作成することができる。ダミータスクランナ2006は、トラステッド環境の範囲内で処理される必要はない非機密データ上のタスクを実行することしかできない。
【0201】
トラステッドJVM1129は機密データ上のタスクを実行するように構成された単離されたタスクランナ2007を含むことができ、機密データはデータ処理の前に解読することができる。
【0202】
共有メモリ2003は、リングバッファメッセージキューおよび共有オブジェクト領域/アリーナを含むことができる。LKLライブラリは、プレーンテキスト共有メモリファイルを提供する。いくつかの実施形態では、共有メモリを通じて通信する方法は、リングバッファメッセージキューを使用している。リングバッファを実装するには、ロック構造へのアクセスを必要とし得る。pthread共有ミューテックスは、これらがカーネルオブジェクトによってサポートされており、ホストおよびLKLコンテナは別個のカーネルを有することができるので、実装することが困難である。その代わりに、アトミック操作(スピンロック)は、これらがハードウェア操作によってサポートされるので、実装することができる。
【0203】
下記は、本明細書において記載されているいくつかの実施形態による、共有メモリリングバッファの例示のコードである。
【表1】
【0204】
いくつかの実施形態では、メモリマップドファイルおよびアトミック操作は(Java(登録商標)またはスカラよりむしろ)C++で、より効率的に実装される。
例えば、JNIブリッジおよびラッパクラスは、Java(登録商標)からネイティブコードを呼び出すために実装することができる。他の実施形態では、JNAを使用することができるが、それはfork()を呼び出す。下記は、リングバッファ実装のためのプログラムコードの例示のブロックである。
【表2】
【0205】
図18は、いくつかの実施形態による、Sparkフレームワークの下でドライバアプリケーション1125と協力する例示のエグゼキュータ構造1127を示す。ドライバ1125は、Spark実行時環境SparkEnv2001ならびに解読データ用のデータストレージ領域2002を含むことができ、それはメタデータ(例えばファイル-ディレクトリ情報)などの非機密情報を含むことができる。
【0206】
下記は、本明細書において記載されているいくつかの実施形態による、例示のテストドライバアプリケーション1125である。
【表3】
【0207】
エグゼキュータ1127は、アントラステッドJVM1128、共有メモリ通信2003およびトラステッドJVM1129を含む。アントラステッドJVM1128は、SparkEnv2004、暗号化されたデータのためのデータストレージ領域2005およびダミータスクランナ2006を含む。暗号化されたデータは、暗号化された形式でドライバ1125から送信されることができて、共有メモリ通信2003を通して暗号化された形式でトラステッドJVM1129に送信することができる。一旦暗号化されたデータがトラステッドJVM1129に到達すると、それは解読することができて、解読データ用のデータストレージ2008に記憶することができて、その後トラステッドJVM1129の中で単離されたタスクランナ2007によって処理することができる。
【0208】
図19は、いくつかの実施形態による、機械学習アーキテクチャ1900およびデータフローの例示のブロック図である。セキュア処理のための機構を目的とする仮想クリーンルームプラットフォームが示されている。データは、とりわけ小売商、銀行を含む様々なソースから受信される。
【0209】
図19に示されるように、モデルタイプ(例えば推薦者、クラスタリング)およびデータセットidを選択することによって、小売商/データの所有者が訓練フローを開始することができる機械学習APIが提供されている。
【0210】
小売商パートナコンピューティング装置はモデルにブラックボックスアクセスを有して、モデル訓練はバッチモード訓練フェーズで実行することができる。変形では、他の訓練フェーズは、ほぼリアルタイムの、オンライン訓練AutoMLおよび対話型モデル設計を含むことができる。モデルは、異なる使用事例に適した様々な方法(例えば、K平均マトリックス因子分解、ランダムフォレスト、その他)を含むことができる。システムは、データ要素ごとにアクセス制御許可(例えば、読み出し、作成、更新、削除)、プラットフォームパートナごとおよびそれらの1つの部門の中の役割(例えば、マーケティングおよびSAIは、異なるデータアクセス制御権を有する)がすでに定義されているという明確な図示を確立するセキュリティ設定を含む。
【0211】
各ソースは、特定のカスタマデータの管理者であり得る。しかしながら、各ソースは、例えば、様々なプライバシー指令およびベストプラクティスにより、他のパートナが利用できるそれらのカスタマデータを有することを望まない場合がある。セキュア処理は、適切なアクセス権を有することのない関係者が機械学習データアーキテクチャにおいて使われている基本的データの1つ以上の部分にアクセスすることができないように、全体的な計算ステップを保護することを目的としている。
【0212】
データセットは、プラットフォームにすでに取り込まれて、共通スキーマに調和されて、銀行データ所有者(例えば、機械学習役割)データセットに集約されたとみなされる。小売商データ所有者は、そのパラメータ、重み付けなどを調整することによって選択されたモデルにきめ細かいアクセスをしてはまらない。小売商はモデルタイプを指定することができるだけであるが、サービス提供者はさらにモデルをさらに調整することが可能である。
【0213】
データは、暗号化された形式で提供され、データ処理およびシステムのためにロードされる。モデルアーキテクチャワークフローマネージャは、訓練活動ならびにワークフロー進行のためのマシンモデルを編成する。モデルアーキテクチャワークフローマネージャは、選択されたモデル、小売商および銀行パートナに関連する特定のデータセットに対して集約データ記憶に問い合わせるように構成される。プライバシー機密データ要素またはデータセットは、パートナのデータのプライバシーを確実にするために暗号化される。
【0214】
一実施形態において、セキュアエンクレーブ(例えば、ハードウェアもしくはソフトウェアまたはそれらの組み合わせである単離されたデータプロセッサ)は、機械学習サブタスクを実行するために利用される。セキュアエンクレーブは、いくつかの実施形態では、基本的データに安全にアクセスするために用いられる暗号化鍵を記憶することができる。システムは、点線に示される一連のセキュアエンクレーブプロセッサを含み、それはデータ科学洞察を表わすデータ構造を生成するために協力して作動するのに適している。
【0215】
例えば、データ処理はSGXエンクレーブの中にホストすることができて、そこで、集約データセットは、訓練フローに供給される前に、さらなる処理のためにロードされる。エンクレーブにおいて、データは解読され、それから、必要なフォーマッティング、変換を適用して、欠落値を補完し、異常値を特定して削除することなどが行われる。処理が完了すると、それからデータは暗号化されて別のコンポーネントに送られ、それが処理されたデータをデータベースに保存する。
【0216】
セキュアエンクレーブ処理はコンピューティングリソース制約に関して制約につながり、それにより性能および速度の低下に至る可能性がある。セキュアでない処理方法に対して、暗号化およびアクセス制限要件によって結果として複雑さが増加する。
【0217】
したがって、本明細書において様々な実施形態に記載されているように、強力なプライバシーおよび強固なセキュリティを有する機械学習データアーキテクチャを目的とする方法が提案される。機械学習アーキテクチャは、いくつかの実施形態では、複数の相互に連結したセキュアエンクレーブ処理区画(例えば、別個のセキュアエンクレーブプロセッサ)を含み、それが別個の訓練モデルアーキテクチャを処理して、維持する。
【0218】
いくつかの実施形態では、データサイズが、例えば、90MBを超える場合、それは区画化されて、反復的に送信されて、複数のSGXエンクレーブによって処理されることを必要とする。特に、セキュアエンクレーブプロセッサによる利用できるデータ処理性能についての制約のため、データ区画化ユニット1902は、個々のデータ処理区画1904および1906がそれぞれ、並行して、個々に記憶されたモデルデータアーキテクチャを使用してデータを処理するように、データを区画化するのに適している。いくつかの実施形態では、個々のデータ処理区画1904、1906は、別個のセキュア処理エンクレーブである。
【0219】
データ区画化ユニット1902は、1つ以上のセキュアエンクレーブサブプロセッサを提供して、1つ以上のセキュアエンクレーブサブプロセッサのそれぞれに暗号化されたデータの区画を送信するように構成された電子回路として実装することができる、区画コントローラエンジンである。
【0220】
機密データ要素は、それらがロードされるときに暗号化されたままである。エンクレーブにおいて、処理されたデータが解読され、そして集約および計算が、新たな特徴を抽出するために適用される。特徴抽出が完了すると、次いで特徴データセットは暗号化される。各訓練フェーズが完了すると、モデル出力、パラメータ、重み付け、メトリックが暗号化される。
【0221】
データが各区画を通して処理されるので、別個のモデルアーキテクチャが更新されて、更新されたモデルアーキテクチャパラメータデータ構造を生成する。個々のデータ処理区画1904、1906の1つ以上のセキュアエンクレーブサブプロセッサは、機械学習アーキテクチャのローカルコピーを使用して暗号化されたデータの対応する区画を処理して、1つ以上のパラメータ更新データ構造を生成するように構成される。
【0222】
区画のそれぞれからの更新されたモデルアーキテクチャパラメータデータ構造は、パラメータ集約ユニット1908(例えば、それ自身のエンクレーブであることができるパラメータサーバ)で集約される。
【0223】
パラメータ集約ユニット1908は、集約訓練モデルアーキテクチャの更新を保存し、それがそれからセキュア処理流儀に再伝播されるように構成される。それは、SGXエンクレーブの中に配備することができて、それは、モデルのパラメータ、重み付けなどのためのすべての更新を受信する。モデルは、それがエンクレーブを離れるときに暗号化することができる。
【0224】
いくつかの実施形態では、少なくとも2つのセキュアエンクレーブサブプロセッサ1904および1906は、互いの間で直接1つ以上のパラメータ更新データ構造を送信して、機械学習アーキテクチャの対応するローカルコピーを更新するように構成される。
【0225】
いくつかの実施形態のこのアーキテクチャは、セキュアエンクレーブ区画のスループット低下に関連した技術的な制約を克服する際の助けとなる。例えば、いくつかのセキュアエンクレーブ区画は、約90MB以下のモデルアーキテクチャサイズに限られている。したがって、多くの調整された区画は協力して作動して、全体のセキュア処理を提供する。
【0226】
訓練モデル、そのパラメータ、重み付けなどは、予測/スコアリング機構によりさらに使用し続けられる。
【0227】
別の実施形態では、エンクレーブ区画はまた、並行オペレーションの間、互いに相互接続を有するように構成され、その結果、エンクレーブ区画は、アグリゲータプロセッサから訓練モデルの更新されたパラメータを受信することとは対照的に、各々の間で決定パラメータを共有することができ、例えば、パートナのための出力APIを通して利用可能となり、それは予測結果について以前に訓練されたモデルを問い合わせることができる。それは、パートナid、モデルタイプおよびデータレコードを入力として受信して、機械学習予測を適用する。APIは、予測結果を出力してユーザへ戻すことができる。
【0228】
いくつかの実施形態において説明したように、機械学習およびセキュア学習のためのアプリケーションは、例えば、識別子の訓練セットとの類似点に基づいてクラスタを識別するためのカスタマ識別子のサブセットを含む機械学習モデルアーキテクチャによる、データ構造の生成を含む。
【0229】
例えば、識別子の訓練セットは高収益のロイヤルカスタマを含むことができ、訓練モデルアーキテクチャを利用して、訓練セットの中にはないが潜在的ターゲットとして留意すべきであり得る、ターゲットカスタマを識別することができる。この例では、セキュアな機械学習データアーキテクチャを用いたセキュア処理を使用して、機密カスタマデータを含み得る基本的データの不正アクセスが不正ユーザによりなされていないことを確実にする。セキュアエンクレーブプロセッサを用いて、例えば、小売商が、特にこのような小売商がカスタマプロファイルの管理者でない場合に、カスタマプロファイルの全体図を有しないことを確実にする。
【0230】
予測は、例えば、スコアリング結果を予測するための実際の計算を実行するSGXエンクレーブとして配備される訓練モデルを利用する。訓練モデルアーキテクチャおよび入力データレコードは予測器エンジンに提供されて、それは予測スコア、信頼度メトリックなどをカプセル化している一つ以上のデータ構造を出力する。予測結果(モデルid、モデルタイプ、パートナid、予測スコア、入力レコード)は、さらなるパフォーマンス監視のためにデータベースに記録することができる。
【0231】
図20は、異なる層のカスタマへのリソース割り当てを示す例示の図である。
この例では、小売商がそれらの主要なリソースに焦点を当ててティア1カスタマを理解しサービスすることが認められる。
【0232】
小売商は外部の企業を活用して、リソースを強化し、ティア2およびティア3カスタマベースをターゲットとすることができる。金融機関(FI)などの別の機関が、機械学習メカニズムを提供して、(i)それらのティア1カスタマ(ロイヤルティおよび非ロイヤルティ会員)を解析し、(ii)洞察を適用してカスタマをティア2からティア1にドライブする、という機会がある。Flの水平方向データを利用して、よりよく洞察を評価して適用し、小売商パートナのための移行をドライブすることができ、結果としてロイヤルティおよび収入の増大になる。同様に、機械学習モデルを使用して、ティア3+カスタマを移行させることができる。
【0233】
図21は、いくつかの実施形態による、2つの異なるデータセットのカスタマの間においてクロスオーバーおよびターゲティング機会の領域を示している例示のベン図2100である。小売商として、目的は、SKU申し出によって店舗で買い物をしない新規のカスタマと結びつきたいという希望であり得る。
【0234】
オーバーラップ領域は、機械学習モデルアーキテクチャを訓練するために使われるカスタマを含む。したがって、人物属性は、機械学習モデルを訓練することによって抽出可能である。例えば、小売商は、小売商が動かしたい供給過剰のボーズ1234スピーカを有している場合がある。システムはボーズ1234スピーカを買ったFI+M1カスタマのアイデンティティを使用してモデルを訓練し、このモデルがそれらの人物属性(例えば、位置、年齢、状態)を識別する。
【0235】
一旦機械学習モデルが訓練されると、それらは小売商ものまたは金融機関のカスタマセットから新しい人物に対して適用されて、ターゲットとするポテンシャルカスタマを識別することができる。この例では、新しく識別されたカスタマに発信することができるスピーカ購入品の提案が存在してもよい。この場合、機械学習モデルアーキテクチャはカスタマのターゲットの識別子をカプセル化しているデータ構造を提供し、それを用いて自動的な申し出生成および配信のための機械語命令を生成することができる。人物属性はM1カスタマに対してでなくFIクライアントに適用されて、システムはそれらのFIクライアントに対するボーズ1234スピーカのSKU提案の送信を制御することができる。
【0236】
図22および図23は、生成された推奨の例を示す。
【0237】
図22は、いくつかの実施形態による、生成された推奨を示しているグラフィックウィジェットを示すのに適しているグラフィカルユーザインタフェースの例示の描写2200である。この描写において、申し出生成小売商ポータルダッシュボードが提供され、それは、人物のターゲットセットを生成する推奨ウィジェットを含み、この場合、推奨の対する理論的根拠につながることができる属性も示す。このアプローチは、オーディエンスビルダに適用される選択基準を改良するために用いることができて、図21の申し出キャンペーンにおいて提供されている情報に基づく推奨のオーディエンスに基づいて、オーディエンスを設定するためのプロセスの自動化を提供することができる。
【0238】
図23は、いくつかの実施形態による、生成された複数の推奨を示しているグラフィックウィジェットバーを示すのに適しているグラフィカルユーザインタフェースの例示の描写2300である。このウィジェットバーにおいて、複数の推奨が示され、それはターゲットとすることができるカスタマおよびこれらのカスタマがターゲットとされる理由の正当性について、機械学習データアーキテクチャの機械学習出力に基づかずに示している。
【0239】
システムはVCRコアのデータおよび、(i)アイデンティティが魅力的なオーディエンスと、(ii)小売商が考察しなければならない提案申し出キャンペーンを評価する。例:VCRは、財産の増加、環境および長距離移動に対する肯定的な感受性のために、電気自動車を購入する可能性が高い、25万人のカスタマが存在することを発見する。CarCoに、VCRのパートナがこのオーディエンスセグメントに1000ドルの申し出を発表することを推奨する。
【0240】
図24は、いくつかの実施形態による、例示の生産環境およびデータフローの図である。この変形例において、金融機関および小売商にはそれぞれ、対応する専用のコンテナ化された環境がある。小売商のデータはSKUデータによって通知されることができ、小売商がSKUレベルで販売さている実際の製品またはサービスの購入とつなぐことができる。
【0241】
図12は、サーバなどのコンピューティング装置1200の概略図である。図示されるように、コンピューティング装置は、少なくとも1つのプロセッサ1202、メモリ1204、少なくとも1つのI/Oインタフェース1206および少なくとも1つのネットワークインタフェース1208を含む。
【0242】
プロセッサ1202は、IntelもしくはAMDのx86かx64、PowerPC、ARMプロセッサまたは同様のものでもよい。
メモリ1204は、内部的に、または、外部的に配置されている、例えば、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、コンパクトディスク読み取り専用メモリ(CDROM)などの、コンピュータメモリの適切な組み合わせを含むことができる。
【0243】
各I/Oインタフェース1206は、コンピューティング装置1200が、キーボード、マウス、カメラ、タッチスクリーンおよびマイクロホンなどの1つ以上の入力装置との、または、ディスプレイスクリーンおよびスピーカなどの1つ以上の出力装置との相互接続をするのを可能にする。
【0244】
各ネットワークインタフェース1208は、コンピューティング装置1200が、他のコンポーネントと通信し、データを他のコンポーネントと交換し、ネットワークリソースにアクセスして接続し、アプリケーションのために動作し、そして、他のコンピューティングアプリケーションを実行することを、インターネット、Ethernet、普通の電話サービス(POTS)線、公衆交換電話網(PSTN)、総合サービスデジタルネットワーク(ISDN)、デジタル加入者線(DSL)、同軸ケーブル、光ファイバ、衛星、携帯、無線(例えばWi-Fi、WiMAX)、SS7信号ネットワーク、固定回線、ローカルエリアネットワーク、広域ネットワーク、およびその他これらのあらゆる組合せを含む、データを搬送することができるネットワーク(または複数のネットワーク)に接続することによって、可能にする。
【0245】
コンピューティング装置1200は、アプリケーション、ローカルネットワーク、ネットワークリソース、他のネットワークおよびネットワークセキュリティデバイスにアクセスを提供する前に、(例えばログイン、一意識別子およびパスワードを使用して)ユーザを登録して認証するように動作可能である。コンピューティング装置1200は、1つのユーザまたは複数ユーザのために動作することができる。
【0246】
図13は、TEEを有するプラットフォーム100によって実行される例示のフローチャート1300を説明する。ステップ1310で、プラットフォーム100は、パートナシステム115のアイデンティティを検証することができる。ステップ1320で、プラットフォーム100は、パートナのアイデンティティの検証に応じて、消費者データを暗号化するためにパートナシステム115に、通信鍵を発行することができる。ステップ1330で、プラットフォーム100は、通信鍵を用いて暗号化されるパートナから、暗号化されたデータを受信することができる。ステップ1340で、プラットフォーム100は、暗号化されたデータをストレージ鍵とともに記憶し、TEEの中で暗号化されたデータの不正アクセスを防止することができる。ステップ1350で、プラットフォーム100は、暗号化されたデータを解読して解析し、解読データに基づいて推奨を生成することができる。
【0247】
本明細書において記載されているデバイス、システムおよびプロセスの実施形態は、ハードウェアおよびソフトウェアの組合せで実施することができる。これらの実施形態はプログラム可能なコンピュータ上で実施することができ、各コンピュータは、少なくとも1つのプロセッサ、データストレージシステム(揮発性メモリまたは不揮発性メモリまたは他のデータストレージ要素またはそれらの組み合わせを含む)および少なくとも1つの通信インタフェースを含む。
【0248】
プログラムコードは入力データに適用され、本明細書において記載されている機能を実行して、出力情報を生成する。出力情報は、1つ以上の出力装置に適用される。いくつかの実施形態では、通信インタフェースは、ネットワーク通信インタフェースでもよい。要素を組み合わせることができる実施形態では、通信インタフェースは、プロセス間通信のためのものでるソフトウェア通信インタフェースでもよい。さらに他の実施形態では、ハードウェア、ソフトウェアおよびそれらの組み合わせとして実施される通信インタフェースの組合せが存在し得る。
【0249】
前述の考察の全体にわたって、多数の参照を、制御およびコンピューティング装置に関して行うことができる。このような用語の使用は、コンピュータ可読の、有形の、非一時的媒体に記憶されるソフトウェア命令を実行するように構成されている、少なくとも1つのプロセッサを有する1つ以上のコンピューティング装置を表すことができることが理解されるべきである。例えば、プラットフォーム100は、記載されている役割、責任または機能を成し遂げる方法でウェブサーバ、データベースサーバまたは他のタイプのコンピュータサーバに結合された、1つ以上のコンピュータを含むサーバを有することができる。
【0250】
前述の考察は、多くの例示の実施形態を提供する。各実施形態は発明の要素の単一の組合せを表すが、他の例は開示された要素のすべての可能な組み合わせを含んでもよい。したがって、一実施形態が要素A、B、およびCを含み、第2の実施形態は要素BおよびDを含む場合、A、B、C、またはDの他の残りの組合せも使用することができる。
【0251】
用語「接続される」または「結合される」は、直接の結合(互いに結合された2つの要素が互いに接触する)および間接的な結合(少なくとも1つの追加要素が2つの要素の間に配置される)の両方を含むことができる。
【0252】
実施形態の技術的解決策は、物理的動作を指示しているソフトウェア製品の形であってもよい。ソフトウェア製品は不揮発性であるか非一時的記憶媒体に記憶することができ、それはコンパクトディスク読み出し専用メモリ(CD-ROM)、USBフラッシュディスクまたは着脱可能なハードディスクであることができる。ソフトウェア製品は、コンピュータ装置(パーソナルコンピュータ、サーバまたはネットワーク装置)が実施形態により提供されるプロセスを実行することを可能にする多くの命令を含む。
【0253】
本明細書において記載されている実施形態は、コンピューティング装置、サーバ、受信機、送信機、プロセッサ、メモリ、ディスプレイ、およびネットワークを含む、物理コンピュータハードウェアによって実施される。本明細書において記載されている実施形態は、有用な物理コンピュータおよび特に構成されたコンピュータハードウェア装置を提供する。本明細書において記載されている実施形態は、様々なタイプの情報を表す電磁信号を処理して変換するのに適応した電子マシンおよび電子マシンによって実施されるプロセスを対象としている。本明細書において記載されている実施形態は、全面的に、そして完全に、マシンおよびそれらの用途に関し、そして、本明細書において記載されている実施形態は、コンピュータハードウェア、マシンおよび様々なハードウェアコンポーネントのそれらの使用の範囲外の意味または実際的な適用可能性を有してない。非物理的なハードウェアのための様々な行為を、例えば精神的ステップを使用して実行するように特に構成されている物理ハードウェアを置換することは、実施形態が機能する方法に実質的に影響を及ぼし得る。このようなコンピュータハードウェア制限は、本明細書において記載されている実施形態の明らかに本質的要素であり、それらは、本明細書において記載されている実施形態の操作および構造に具体的な影響を及ぼさずに省略することまたは精神的手段と置換することはできない。コンピュータハードウェアは、本明細書において記載されている様々な実施形態を実施するために必須であり、迅速に、そして、効率的な方法でステップを実行するために単に用いるものではない。
【0254】
プラットフォーム100は、少なくとも1つのプロセッサ、データストレージ装置(揮発性メモリまたは不揮発性メモリまたは他のデータストレージ素子またはそれらの組み合わせを含む)および少なくとも1つの通信インタフェースを有するコンピューティング装置として実装することができる。コンピューティング装置コンポーネントは、直接結合されること、ネットワークを介して間接的に結合されること、および広い地理的エリアを通じて配信されてネットワークを介して接続されること(これは「クラウドコンピューティング」と呼ばれてもよい)を含む様々な方法で接続することができる。
【0255】
例えば、そして、限定されるものではないが、コンピューティング装置は、サーバ、ネットワーク機器、微小電気機械システム(MEMS)もしくはマイクロサイズ機械装置、セットトップボックス、組み込みデバイス、コンピュータ拡張モジュール、パーソナルコンピュータ、ラップトップ、個人データアシスタント、携帯電話、スマートフォンデバイス、UMPCタブレット、ビデオディスプレイ端末、ゲームコンソール、電子書籍デバイス、および無線ハイパーメディアデバイスまたは、本明細書において記載されているプロセスを実行するように構成することができる任意の他のコンピューティング装置であってもよい。
【0256】
プロセッサは、例えば、マイクロプロセッサもしくはマイクロコントローラ、デジタル信号処理(DSP)プロセッサ、集積回路、フィールドプログラマブルゲートアレイ(FPGA)、再構成可能なプロセッサ、プログラム可能読取り専用メモリ(PROM)またはそれらの組み合わせでもよい。
【0257】
データストレージ装置は、内部的に、または、外部的に配置される任意のタイプのコンピュータメモリの好適な組み合わせを含むことができる。
【0258】
コンピューティング装置は、コンピューティング装置がキーボード、マウス、カメラ、タッチスクリーンおよびマイクロホンなどの1つ以上の入力装置との、または、ディスプレイスクリーンおよびスピーカなどの1つ以上の出力装置と相互接続するのを可能にする、I/Oインタフェースを含むことができる。
【0259】
実施形態を詳細に説明したが、様々な変更、置換えおよび修正を本明細書において行うことができることを理解すべきである。
【0260】
さらに、本出願の範囲は、本仕様に記載されているプロセス、マシン、製造物、合成物、手段、プロセスおよびステップの、特定の実施形態に限定されることを意図していない。当業者が、本発明の開示内容から直ちに理解するように、本願明細書において、記載されている対応する実施形態と実質的に同一の機能を実行し、または実質的に同一の結果を達成する、現在既存であるか今後開発される、プロセス、マシン、製造物、合成物、手段、プロセスまたはステップが、利用できる。したがって、添付の請求の範囲は、それらの範囲の中でこのようなプロセス、マシン、製造物、合成物、手段、プロセスまたはステップを含むことを意図している。
【0261】
理解することができるように、上で記載されて説明されている実施例は例示的でしかないことを意図している。
【0262】
出願人は、記載されている実施形態および実施例が例証で非限定的であることを注釈する。機能の実際的な実装は態様の一部もしくは全部の組合せを組み込むことができ、本明細書において記載されている機能は、将来または既存の製品計画を示すものと考えるべきでない。出願人は基礎的および応用的研究の両方に加わっており、いくつかの場合では、記載されている機能は試験的なベースで開発されている。
図1
図2A
図2B
図3
図4
図5
図6
図7
図8
図9
図10
図11A
図11B
図12
図13
図14
図15
図16
図17
図18
図19
図20
図21
図22
図23
図24