様々な図面における同様の参照番号および名称は、同様の要素を示す。
一般に、本明細書は、コンテンツ選択および配信における情報のセキュリティを保護するためのシステムおよび技法について説明する。サーバコンピュータのMPCクラスタは、セキュアなMPCプロセスを実行して、いずれのMPCサーバも不正な共謀なしにクリアテキストでユーザ情報にアクセスすることが可能であることなく、ユーザ情報に基づいて、デジタルコンポーネントを選択することができる。ユーザ情報は、ネットワークを介して送信されている情報のデータサイズを低減し、送信中に情報をセキュアに保つために、確率的データ構造、たとえば、カッコウフィルタを使用してMPCクラスタに送信され得る。
MPCクラスタは、ベクトル計算、たとえば、ベクトルドット積計算を使用して、デジタルコンポーネントに対する選択値を決定することができる。たとえば、MPCクラスタは、デジタルコンポーネントに対するユーザグループに対して生成された値のベクトルと、デジタルコンポーネント表示環境に対するコンテキスト信号に基づいて生成された値のベクトルとの間のドット積を決定することによって、デジタルコンポーネントに対する選択値を決定することができる。選択値は、デジタルコンポーネント提供者が、デジタルコンポーネントの表示またはそれとのユーザ対話のために提供する意思がある量を示すことができる。
図1は、MPCクラスタがセキュアなMPCプロセスを実行して、クライアントデバイス110に配信するためのデジタルコンポーネントを選択するための環境100のブロック図である。例示的な環境100は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、インターネット、モバイルネットワーク、またはそれらの組合せなどの、データ通信ネットワーク105を含む。ネットワーク105は、クライアントデバイス110、セキュアなMPCクラスタ130、発行者140、ウェブサイト142、コンテンツプラットフォーム、たとえば、供給側プラットフォーム(SSP)170、および需要側プラットフォームDSP(150)を接続する。例示的な環境100は、多くの異なるクライアントデバイス110、セキュアなMPCクラスタ130、発行者140、ウェブサイト142、DSP150、およびSSP170を含み得る。
クライアントデバイス110は、ネットワーク105を介して通信することが可能な電子デバイスである。例示的なクライアントデバイス110は、パーソナルコンピュータ、モバイル通信デバイス、たとえば、スマートフォン、およびネットワーク105を介してデータを送信し、受信することができる他のデバイスを含む。クライアントデバイスはまた、マイクロフォンを介してオーディオ入力を受け入れ、スピーカを介してオーディオ出力を出力するデジタルアシスタントデバイスも含み得る。デジタルアシスタントは、オーディオ入力を受け入れるためにマイクロフォンを起動する「ホットワード」または「ホットフレーズ」を検出すると、聴取モードになり得る(たとえば、オーディオ入力を受け入れる準備ができている)。デジタルアシスタントデバイスはまた、画像をキャプチャし、情報を視覚的に表示するためのカメラおよび/またはディスプレイも含み得る。デジタルアシスタントは、ウェアラブルデバイス(たとえば、腕時計または眼鏡)、スマートフォン、スピーカデバイス、タブレットデバイス、または別のハードウェアデバイスを含む、異なる形態のハードウェアデバイスで実装され得る。クライアントデバイスはまた、デジタルメディアデバイス、たとえば、テレビにビデオをストリーミングするためにテレビまたは他のディスプレイにプラグインするストリーミングデバイス、ゲームシステム、または仮想現実システムも含むことができる。
クライアントデバイス110は、典型的に、ネットワーク105を介してデータを送信すること、および受信することを円滑にするために、ウェブブラウザおよび/またはネイティブアプリケーションなどのアプリケーション112を含む。ネイティブアプリケーションは、特定のプラットフォームまたは特定のデバイス(たとえば、特定のオペレーティングシステムを有するモバイルデバイス)のために開発されたアプリケーションである。発行者140は、ネイティブアプリケーションを開発し、クライアントデバイス110に提供する、たとえばダウンロード可能にすることができる。ウェブブラウザは、たとえば、クライアントデバイス110のユーザによる、リソース145に対するリソースアドレスのウェブブラウザのアドレスバーへの入力、またはリソースアドレスを参照するリンクの選択に応答して、発行者140のウェブサイト142をホストするウェブサーバからのリソース145を要求することができる。同様に、ネイティブアプリケーションは、発行者のリモートサーバからのアプリケーションコンテンツを要求することができる。
いくつかのリソース、アプリケーションページ、または他のアプリケーションコンテンツは、デジタルコンポーネントにリソース145またはアプリケーションページを表示するためのデジタルコンポーネントスロットを含み得る。本明細書全体にわたって使用されるように、「デジタルコンポーネント」という語句は、デジタルコンテンツまたはデジタル情報の別個の単位(たとえば、ビデオクリップ、オーディオクリップ、マルチメディアクリップ、画像、テキスト、またはコンテンツの別の単位)を指す。デジタルコンポーネントは、単一のファイルとして、またはファイルの集合体として物理メモリデバイスに電子的に記憶されてもよく、デジタルコンポーネントは、ビデオファイル、オーディオファイル、マルチメディアファイル、画像ファイル、またはテキストファイルの形態をとり、広告情報を含んでもよく、したがって、広告は、デジタルコンポーネントの一種である。たとえば、デジタルコンポーネントは、アプリケーション112によって表示されるウェブページまたは他のリソースのコンテンツを補足することが意図されるコンテンツであってもよい。より具体的には、デジタルコンポーネントは、リソースコンテンツに関連するデジタルコンテンツを含み得る(たとえば、デジタルコンポーネントは、ウェブページコンテンツと同じトピック、または関連するトピックに関連し得る)。したがって、デジタルコンポーネントのプロビジョンは、ウェブページまたはアプリケーションコンテンツを補足し、一般に強化することができる。
アプリケーション112が1つまたは複数のデジタルコンポーネントスロットを含むリソース(またはアプリケーションコンテンツ)をロードすると、アプリケーション112は、各スロットに対するデジタルコンポーネントを要求することができる。いくつかの実装形態では、デジタルコンポーネントスロットは、アプリケーション112に、デジタルコンポーネントを選択し、クライアントデバイス110のユーザに表示するためにデジタルコンポーネントをアプリケーション112に提供するデジタルコンポーネント配信システムからデジタルコンポーネントを要求させるコード(たとえば、スクリプト)を含むことができる。以下で説明するように、アプリケーション112は、MPCクラスタ130および/または1つまたは複数のSSP170からデジタルコンポーネントを要求し得る。
一部の発行者140は、SSP170を使用して、そのリソースおよび/またはアプリケーションのデジタルコンポーネントスロットのためのデジタルコンポーネントを取得するプロセスを管理する。SSP170は、リソースおよび/またはアプリケーションのためのデジタルコンポーネントを取得するプロセスを自動化するハードウェアおよび/またはソフトウェアにおいて実装される技術プラットフォームである。各発行者140は、対応するSSP170または複数のSSP170を有し得る。一部の発行者140は、同じSSP170を使用し得る。
デジタルコンポーネント提供者160は、発行者のリソースおよびアプリケーションのデジタルコンポーネントスロット内に表示されるデジタルコンポーネントを作成(またはそうでなければ発行)することができる。デジタルコンポーネント提供者160は、DSP150を使用して、デジタルコンポーネントスロット内に表示するために、そのデジタルコンポーネントのプロビジョニングを管理することができる。DSP150は、リソースおよび/またはアプリケーションで表示するためのデジタルコンポーネントを配信するプロセスを自動化するハードウェアおよび/またはソフトウェアにおいて実装される技術プラットフォームである。DSP150は、デジタルコンポーネント提供者160に代わって複数の供給側プラットフォームSSPと対話して、複数の異なる発行者140のリソースおよび/またはアプリケーションで表示するためのデジタルコンポーネントを提供することができる。一般に、DSP150は、デジタルコンポーネントの要求を(たとえば、SSPから)受信し、要求に基づいて1つまたは複数のデジタルコンポーネント提供者によって作成された1つまたは複数のデジタルコンポーネントに対する選択値を生成(または選択)し、デジタルコンポーネント(たとえば、デジタルコンポーネント自体)および選択パラメータに関連するデータをSSPに提供することができる。選択値は、デジタルコンポーネント提供者160が、デジタルコンポーネントの表示またはそれとのユーザ対話のために提供する意思がある量を示すことができる。次いで、SSPは、クライアントデバイス110での表示のためのデジタルコンポーネントを選択し、クライアントデバイス110にデジタルコンポーネントを表示させるデータをクライアントデバイス110に提供することができる。
場合によっては、ウェブページ、アプリケーションページ、または、以前にユーザが訪問した、および/もしくはユーザと対話した他の電子リソースに関連する、デジタルコンポーネントをユーザが受信することが有益である。そのようなデジタルコンポーネントをユーザに配信するために、ユーザが特定のリソースを訪問するとき、またはリソースにおいて特定のアクションを実行する(たとえば、ウェブページ上に表示された特定のアイテムと対話する、またはアイテムを仮想カートに追加する)ときに、ユーザがユーザグループ、たとえば、ユーザ関心グループ、同様のユーザのコホート、または同様のユーザデータに関連する他のグループタイプに割り当てられ得る。ユーザグループは、デジタルコンポーネント提供者160によって生成され得る。すなわち、各デジタルコンポーネント提供者160は、ユーザがデジタルコンポーネント提供者160の電子リソースを訪問するとき、ユーザを自分のユーザグループに割り当てることができる。ユーザグループはまた、コンテンツプラットフォームによって、たとえば、DSP150および/またはSSP170によって、作成され得る。
ユーザプライバシーを保護するために、ユーザのグループメンバーシップは、ユーザのクライアントデバイス110において、デジタルコンポーネント提供者、コンテンツプラットフォーム、または他の当事者によってではなく、たとえば、アプリケーション112のうちの1つ、またはクライアントデバイス110のオペレーティングシステムによって、維持され得る。特定の例では、信頼できるプログラム(たとえば、ウェブブラウザまたはオペレーティングシステムは、(たとえば、ユーザがブラウザ、アプリケーション、またはクライアントデバイス110にログインするために)ウェブブラウザまたは別のアプリケーションを使用してユーザのためのユーザグループ識別子のリスト(「ユーザグループリスト」)を維持し得る。ユーザグループリストは、ユーザをメンバーとして含む各ユーザグループのためのグループ識別子を含み得る。ユーザグループを作成するデジタルコンポーネント提供者160は、それらのユーザグループのためのユーザグループ識別子を指定することができる。ユーザグループのためのユーザグループ識別子は、グループ(たとえば、ガーデニンググループ)を記述するものまたはグループを表すコード(たとえば、記述的ではない英数字シーケンス)であり得る。ユーザのためのユーザグループリストは、クライアントデバイス110のセキュアなストレージ内に記憶されてもよく、および/または他者がリストにアクセスすることを防ぐために、記憶されるときに暗号化されてもよい。
アプリケーション112がデジタルコンポーネント提供者160に関するリソースまたはアプリケーションコンテンツを表示するとき、またはウェブページをウェブサイト142上に表示するとき、リソースは、アプリケーション112が1つまたは複数のユーザグループ識別子をユーザグループリストに追加することを要求することができる。それに応答して、アプリケーション112は、1つまたは複数のユーザグループ識別子をユーザグループリストに追加し、ユーザグループリストをセキュアに記憶することができる。
MPCクラスタ130は、ユーザのユーザグループメンバーシップを使用して、ユーザの関心を引く可能性があるか、または他の形でユーザ/ユーザデバイスに有益であり得る、デジタルコンポーネントまたは他のコンテンツを選択し得る。たとえば、そのようなデジタルコンポーネントまたは他のコンテンツは、ユーザ経験を改善する、ユーザデバイスの実行を改善する、または何らかの他の形でユーザまたはユーザデバイスに利益を与えるデータを含み得る。しかしながら、ユーザのユーザグループリストのユーザグループ識別子は、MPCクラスタ130のコンピューティングシステムMPC1およびMPC2がクリアテキストでユーザのためのユーザグループ識別子にアクセスすることを防ぎ、それにより、デジタルコンポーネントを選択するためにユーザグループメンバーシップデータを使用するときにユーザプライバシーを保護する形でデジタルコンポーネントを選択するために提供され使用され得る。クリアテキストは、キーもしくは他の復号デバイス、または他の解読プロセスを必要とせずに閲覧または使用することができる形式で、計算上タグ付けされていない、特別にフォーマットされていない、またはコードで書かれていないテキスト、またはバイナリファイルを含むデータである。
セキュアなMPCクラスタ130は、セキュアなMPCプロセスを実行して、ユーザのグループメンバーシップに基づくが、クリアテキスト内のグループメンバーシップ情報にアクセスせずに、ユーザのクライアントデバイスへの配信のためのデジタルコンポーネントを選択するための2つのコンピューティングシステムMPC1およびMPC2(たとえば、サーバコンピュータ)を含む。例示的なMPCクラスタ130は2つのコンピューティングシステムを含むが、MPCクラスタ130が2つ以上のコンピューティングシステムを含む限り、より多くのコンピューティングシステムもまた使用され得る。たとえば、MPCクラスタ130は、3つのコンピューティングシステム、4つのコンピューティングシステム、または別の適切な数のコンピューティングシステムを含んでよい。MPCクラスタ130内でより多くのコンピューティングシステムを使用することは、より多くのセキュリティを提供し得るが、MPCプロセスの複雑さをやはり増大させ得る。
コンピューティングシステムMPC1およびMPC2は、異なるエンティティによって動作させられ得る。このようにして、各エンティティは、クリアテキストで、完全なユーザプロファイルに対するアクセスを有することができない。たとえば、コンピューティングシステムMPC1およびMPC2のうちの1つは、ユーザとは異なる信頼できる当事者、発行者140、DSP150、SSP170、およびデジタルコンポーネント提供者160によって動作させられ得る。たとえば、業界団体、政治団体、またはブラウザ開発者がコンピューティングシステムMPC1およびMPC2のうちの1つを維持し動作させることができる。他のコンピューティングシステムは、信頼できる異なる当事者が各コンピューティングシステムMPC1およびMPC2を動作させるように、これらのグループのうちの異なる1つによって動作させられ得る。異なるコンピューティングシステムMPC1およびMPC2を動作させている異なる当事者はユーザプライバシーを危険にさらすことを共謀する動機を持っていないことが好ましい。いくつかの実装形態では、コンピューティングシステムMPC1およびMPC2は、アーキテクチャ上分離され、本明細書で説明するセキュアなMPCプロセスを実行するほかに互いと通信しないように監視される。
各コンピューティングシステムMPC1およびMPC2は、デジタルコンポーネントに対する選択値を決定するための値のベクトルを記憶し得る。たとえば、コンピューティングシステムMPC1およびMPC2は、以前のデジタルコンポーネント選択プロセスの一部としてSSP170および/またはDSP150から以前に受信したベクトルをキャッシュし得る。このようにして、MPCクラスタ130は、ベクトルを使用して、クライアントデバイス110から受信される将来のユーザグループベースのデジタルコンポーネント要求に応答して、クライアントデバイス110に配信するためのデジタルコンポーネントを選択することができる。
コンピューティングシステムMPC1およびMPC2は、デジタルコンポーネント、たとえば、ユーザグループのメンバーであるユーザに提供されることになるデジタルコンポーネントに対する値のユーザグループベースのベクトルVugを記憶し得る。値は、浮動小数点値、または異なるコンピュータ数フォーマットの値であり得る。そのようなユーザグループベースのベクトルVugは、ユーザグループ内のユーザに表示するために配信するためのデジタルコンポーネントを選択するためのデジタルコンポーネント選択プロセスにおいて使用するために、デジタルコンポーネントに対する選択値を決定するために使用され得る。ユーザグループベースのベクトルVugは、2つ以上の次元にわたる複数の要素を含むことができ、各要素は、デジタルコンポーネント表示機会の特定の特徴を表すことができる。たとえば、値のユーザグループベースのベクトルVugは、地理的ロケーションもしくは地域、音声言語、年齢もしくは年齢範囲、ウェブページもしくは他の電子リソースの特定のURL、特定の製品もしくはサービス、デジタルコンポーネントスロットがアバブザフォールドかビロウザフォールドか(above or below the fold)、デジタルコンポーネントスロットのタイプ、デジタルコンポーネントスロットのサイズ、電子リソース上のデジタルコンポーネントスロットの数、時刻、ウェブプロパティ識別子、および/またはデジタルコンポーネント表示機会の他の適切な特徴に対する要素を含み得る。いくつかの実装形態、たとえば、ニューラルネットワークを採用する実装形態では、ユーザグループベースのベクトルVugは、何らかの抽象ベクトル空間内のユーザグループの埋込みであり得る。
各要素の値は、要素に対応する特徴を有する現在のデジタルコンポーネント表示機会に基づいて、デジタルコンポーネントに対する選択値を増加または減少させるための量を反映することができる。たとえば、DSP150が、デジタルコンポーネントがアトランタにいるユーザに表示されることを望むが、ダラスにいるユーザに表示されることを望まない場合、アトランタに対する要素に対する値は、1の値よりも高い正の値にすることができ、ダラスに対する要素に対する値は、1よりも低い正の値、たとえば、ゼロ、または負の値にすることができる。以下でより詳細に説明するように、これらの値は、デジタルコンポーネントに対する選択値を決定するためのベクトルドット積計算の一部であり得る。
いくつかの実装形態では、各コンピューティングシステムMPC1およびMPC2は、2段階のルックアップテーブル(LUT)を使用して、デジタルコンポーネントに対する値のユーザグループベースのベクトルVugを記憶する。2段階のLUTの使用は、いくつかの性能利点を提供し得るが、他の適切なデータ構造が使用されてもよい。第1の段階は、ユーザグループ要求キー(UG_Request_Key)によってキーイングされ得る。UG_Request_Keyは、コンテキスト信号のセット、たとえば、デジタルコンポーネント要求のコンテキスト信号のセット(たとえば、URL、ロケーション、言語など)またはデジタルコンポーネントが配信のために適格であるコンテキスト信号のセットに基づく複合メッセージであり得る。すなわち、第1の段階のLUTは、コンテキスト信号のセットに基づいてキーイングされ得る。第1の段階用のキーは、たとえば、SHA256などのハッシュ関数を使用する、UG_Request_Keyのハッシュであり得る。このキーは、指定された数のビットに、たとえば、16ビット、32ビット、または別の適切な数のビットにトランケートされ得る。第1の段階のLUT内の各キーUG_Request_Keyに対する値は、UG_Request_Keyのコンテキスト信号を含むデジタルコンポーネント要求に適格であるデジタルコンポーネントに関するデータを含む第2の段階のLUTの行を示し得る。例示的な第1の段階のLUTは、Table 1(表1)として以下に示されている。
第2の段階のLUTは、第1の段階のLUT内のユーザグループ要求キーUG_Request_Keyとユーザグループ識別子の組合せに基づいてキーイングされ得る。第2の段階のLUT内の各行は、特定のデジタルコンポーネントに対する特定の選択値用であり得る。たとえば、DSP150は、同じデジタルコンポーネントに対して異なる選択値を提出することができ、各選択値は、コンテキスト信号および/または異なるユーザグループ識別子の異なるセットに対する。したがって、デジタルコンポーネントに対する選択値は、コンテキストおよび他の要因に基づいて異なり得る。
DSP150またはデジタルコンポーネント提供者160は、デジタルコンポーネントを、DSP150またはデジタルコンポーネント提供者がそのデジタルコンポーネントが表示されることを望むユーザグループに関連付ける、たとえば、リンクまたはマッピングすることができる。たとえば、DSP150は、男性用のバスケットシューズに関するデジタルコンポーネントがバスケットおよび/または靴に関心を示した男性に表示されることを望むことがある。この例では、DSP150は、デジタルコンポーネントがバスケットおよび/または靴に関心を示した男性を含むユーザグループのためのユーザグループ識別子に対応することを示すデータをMPCクラスタ130に提供し得る。
いくつかの実装形態では、第2の段階のLUT内の行に対するキーは、ユーザグループ要求キーUG_Request_Keyとその行のデジタルコンポーネントのためのユーザグループ識別子の組合せに基づいて生成されたハッシュまたはコードであってよい。たとえば、キーは、HMACSHA256(UG_Request_Key,ug_id)として表され得る、組合せのハッシュベースのメッセージ認証コード(HMAC)であってよい。ユーザグループ識別子ug_idは、ユーザグループのための内部ユーザグループ識別子とユーザグループの所有者の(たとえば、DSP、SSP、またはユーザグループを所有するデジタルコンポーネント提供者の)ドメインの組合せに基づき得る。たとえば、ユーザグループ識別子ug_idは、ユーザグループのための所有者ドメインおよび所有者の内部ユーザグループ識別子のeTLD+1のHMACであり得る。eTLD+1は、有効なトップレベルドメイン(eTLD)に、パブリックサフィックスよりも1つ多いレベルを加えたものである。例示的なeTLD+1は、「example.com」であり、「.com」は、トップレベルドメインである。ug_idは、16バイトまたは別の適切なデータサイズにトランケートされてよい。
前の男性用バスケットシューズの例を続けると、男性用バスケットシューズグループ内でユーザに表示されることになるデジタルコンポーネントに関する情報を含む行に対する第2の段階のルックアップキーは、ユーザグループ要求キーUG_Request_Keyと男性用バスケットシューズグループのためのユーザグループ識別子ug_idの組合せであってよい。デジタルコンポーネントは異なるコンテキストで表示され得るため、第2の段階のルックアップテーブルは、各々が異なるユーザグループ要求キーUG_Request_Keyおよび異なる値を備えた、男性用バスケットシューズグループのためのユーザグループ識別子ug_idに関連するデジタルコンポーネントに対する複数の行を含み得る。
第2の段階のLUTの各行に対する値は、デジタルコンポーネントに対するユーザグループベースのベクトルVug、および、たとえば、デジタルコンポーネントまたはそこからデジタルコンポーネントがダウンロードされ得るネットワークロケーションを識別するメタデータなど、デジタルコンポーネントに関する他のデータであり得る。例示的な第2の段階のLUTは、Table 2(表2)として以下に示されている。
第2の段階のLUTは、ユーザグループベースのベクトルVugを特定のデジタルコンポーネントに、特定のユーザグループ識別子ug_idに、また第1の段階のルックアップキーUG_Request_Keyによって定義されるコンテキスト信号の特定のセットにマッピングする。そうすることによって、第2の段階のLUTは、デジタルコンポーネントに対するユーザグループベースのベクトルVugが適格であるデジタルコンポーネントスロットの特定のコンテキストを示す。ユーザグループベースのベクトルVugが、デジタルコンポーネント表示機会の潜在的に多数の特徴の組合せに基づいて、選択値を定義するので、第1の段階のルックアップキーUG_Request_Keyのコンテキスト信号の数は、たとえば、それとともにデジタルコンポーネントが表示され得る特定のリソースを指定するために、最小であり得る。これは、特定のコンテキストに対する特定の選択値を指定するために必要とされるテーブル内の行の数を低減する。
デジタルコンポーネントが表示されることになるユーザが特定のユーザグループ識別子ug_igによって識別される特定のユーザグループのメンバーであることを示すデジタルコンポーネント要求が受信され、デジタルコンポーネントが第1の段階のルックアップキーのコンテキスト信号によって定義される特定のコンテキスト内で表示されることになるとき、マッチするユーザグループ識別子とマッチする第1の段階のルックアップキーとを有するいずれかのデジタルコンポーネントは、要求に応答して配信するために選択される候補である。この例では2段階のLUTが使用されているが、他の適切なデータ構造が使用されてもよい。
本明細書全体にわたる説明に加えて、ユーザには、本明細書で説明するシステム、プログラム、または特徴がユーザ情報(たとえば、ユーザのソーシャルネットワーク、ソーシャルアクションもしくはアクティビティ、職業、ユーザの選好、またはユーザの現在のロケーションについての情報)の収集を可能にし得るか、およびいつ可能にし得るかと、サーバからのコンテンツまたは通信がユーザに送信されるかの両方に関して、ユーザが選択を行うことを可能にする制御(たとえば、それを用いてユーザが対話し得るユーザインターフェース要素)が提供され得る。加えて、いくつかのデータは、個人を識別できる情報が除去されるように、記憶または使用される前に1つまたは複数の方法で扱われ得る。たとえば、ユーザの識別情報は、個人を識別できる情報がユーザについて決定できないように扱われてもよく、またはユーザの地理的位置は、ユーザの具体的なロケーションを決定できないように、ロケーション情報が取得される場合に(都市、ZIPコード、もしくは州のレベルなどに)一般化されてもよい。したがって、ユーザは、ユーザについてのどの情報が収集されるか、その情報がどのように使用されるか、およびどの情報がユーザに提供されるかを制御することができる。
図2は、図1の環境内の例示的なデータフロー200を示す。段階Aにおいて、アプリケーション112は、デジタルコンポーネント要求をMPCクラスタ130に送信する。デジタルコンポーネント要求は、アプリケーション112によって表示されることになるコンテンツのデジタルコンポーネントスロット内に表示するためのデジタルコンポーネントに対するものであり得る。
要求は、たとえば、以下で説明するような秘密共有における、アプリケーション112を使用するユーザのユーザグループメンバーシップについてのデータと、デジタルコンポーネントスロットのコンテキスト信号とを含み得る。コンテキスト信号は、クライアントデバイス110の地理的ロケーション、アプリケーション112によって使用される音声言語、デジタルコンポーネントスロットを含むコンテンツのURL、デジタルコンポーネントスロットがアバブザフォールドかビロウザフォールドか、デジタルコンポーネントスロットのタイプおよび/もしくはサイズ、クライアントデバイス110のロケーションにおける現在時刻、コンテンツのためのウェブプロパティ識別子、ならびに/または他の適切な特徴などの信号を含むことによって、デジタルコンポーネント表示機会を表すことができる。
要求はまた、アプリケーション112がクッキーをサポートする場合、デジタルコンポーネントスロットを含むコンテンツの発行者のためのファーストパーティクッキーを含み得る。これは、SSP170および/またはDSP150が、デジタルコンポーネントスロット内で表示するために考慮するためのデジタルコンポーネントを選択する際に、追加のユーザデータを使用することを可能にし得る。
アプリケーション112によってサポートされる場合、要求はまた、アプリケーション112のユーザをメンバーとして含む、ユーザのコホートのためのコホート識別子を含み得る。このコホート識別子は、たとえば、各デバイスにおいてデバイスからの情報を共有せずに、同様のクロスドメインブラウジングパターンを有すると決定される、ユーザのコホートのための低エントロピー(たとえば、16~20ビット)識別子である。これは、SSP170および/またはDSP150が、アプリケーション112のユーザについての追加の情報を推論することを可能にし得る。
段階Bにおいて、MPCクラスタ130は、コンテキストデジタルコンポーネント要求を、デジタルコンポーネントスロットを含むコンテンツの発行者のためのSSP170に送信する。この要求は、コンテキスト信号、ファーストパーティクッキー、および/またはコホート識別子を含み得る。この要求は、ユーザグループメンバーシップデータを含まない。
段階Cにおいて、SSP170は、コンテキストデジタルコンポーネント要求を1つまたは複数のDSP150に送信する。段階Dにおいて、DSP150は、デジタルコンポーネント選択データを生成し、SSP170に送信する。この選択データは、コンテキストデジタルコンポーネント要求内に含まれた情報に基づいて、たとえば、コンテキスト信号、ならびにファーストパーティクッキーおよび/またはコホート識別子に基づいて取得または推論された使用情報に基づいて、DSP150によって生成されたコンテキストベースのベクトルVcontextを含み得る。
各DSP150について、そのコンテキストベースのベクトルVcontextは、MPCクラスタ130によって記憶されたそのユーザグループベースのベクトルVugの構造を有し得る。これは、MPCクラスタ130が、DSP150の各ユーザグループベースのベクトルVugに対するユーザグループに対応するデジタルコンポーネントに対する選択値を決定するために、ドット積計算を実行することを可能にする。たとえば、DSP150に対するコンテキストベースのベクトルVcontextは、そのユーザグループベースのベクトルVugの各々と同じ次元および特徴を有し得る。しかしながら、DSP150は、デジタルコンポーネント要求に対するカスタム選択値を生成するために、コンテキストデジタルコンポーネント要求内の情報に基づいて、コンテキストベースのベクトルVcontextの値を決定することができる。所与のコンテキストデジタルコンポーネント要求について、各DSP150は、それに対してユーザグループベースのベクトルVugがMPCクラスタ130において記憶されるそのデジタルコンポーネントの各々に対する選択値を決定する際に使用するために、単一のコンテキストベースのベクトルVcontextを提供することができる。
コンテキストベースのベクトルVcontextを提供することに加えて、DSP150は、現在または将来のデジタルコンポーネント要求のためにMPCクラスタ130において記憶されることになる、1つまたは複数の条件付き選択値またはベクトルを提供することができる。たとえば、DSP150は、MPCクラスタ130において記憶するために、新しいかまたは更新されたユーザグループベースのベクトルVugを、応答上にピギーバックすることができる。各ユーザグループベースのベクトルVugとともに、DSP150は、ベクトルに対するユーザグループ要求キーUG_Request_Key、および/またはベクトルに対するメタデータなど、MPCクラスタ130において記憶するために他のデータを提供することができる。ベクトルは、ユーザプライバシーを保護するために、ビジネス機密情報を保護するために、コンピューティングシステムMPC1およびMPC2がクリアテキストで情報にアクセスすることを防ぐために、かつ/または(たとえば、DSP150とSSP170、または図2に示されていないが、それらの間の他のパートナーとの間で)中間者攻撃もしくは盗聴を防ぐために、SSP170への送信に先立って、秘密共有に分割され、かつ/またはDSP150によってデジタル署名され得る。
DSP150はまた、デジタルコンポーネント要求に応答して、無条件選択値(たとえば、段階Bおよび段階Cに存在しないユーザグループメンバーシップおよび他の機密情報を条件としない)と、クライアントデバイス110において表示されるために選択されるデジタルコンポーネントとして考慮するためのデジタルコンポーネントに関するデータとを提供することもできる。そのようなデジタルコンポーネントは、将来のデジタルコンポーネント要求のためにMPCクラスタ130によって記憶されるのではなく、現在のデジタルコンポーネント要求のためのみに提供され得る。
段階Eにおいて、SSP170は、DSP150から受信されたベクトルおよび/または選択値をMPCクラスタ130に送信する。以下でより詳細に説明するように、ベクトルおよび/または選択値をMPCクラスタ130に送信するのに先立って、SSP170は、ベクトルおよび/または選択値に発行者制御を適用することができる。いくつかの実装形態では、SSP170は、ベクトルおよび/または選択値をMPCクラスタ130に送信するのに先立って、共有構成を考慮するために、ベクトルおよび/または選択値を変更することができる。
段階Fにおいて、MPCクラスタ130は、デジタルコンポーネント選択プロセスを実行し、選択結果をアプリケーション112に送信する。例示的な選択プロセスについては、図4に示し、以下で説明する。MPCクラスタ130はまた、後続のデジタルコンポーネント選択プロセスにおいて使用するために、対応するデジタルコンポーネントに関するユーザグループベースのベクトルVugおよび関連するメタデータ/キーを記憶することもできる。
段階Gにおいて、アプリケーション112は、通知をMPCクラスタ130に送信する。通知は、アプリケーションによって表示されたデジタルコンポーネントを識別し、かつ/または、デジタルコンポーネントがアプリケーション112のユーザによって対話された、たとえば、選択されたかどうかを示すデータを含むことができる。いくつかの実装形態では、段階Gにおける通知は、段階Aにおいて近い将来にデジタルコンポーネント要求上でピギーバックすることができる。そのようなピギーバックは、アプリケーション112によって送信される要求の数を低減し、アプリケーション112によるネットワーク消費およびバッテリー消費を低減し得る。
図3は、クライアントデバイスにおいて表示するためのデジタルコンポーネントを選択するための例示的なプロセス300のスイムレーン図である。プロセス300の動作は、たとえば、クライアントデバイス110、MPCクラスタ130のコンピューティングシステムMPC1およびMPC2、およびDSP150によって実装され得る。プロセス300の動作は、非一時的であり得る1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス300の動作を実行させ得る。プロセス300および以下の他のプロセスは2つのコンピューティングシステムMPCクラスタ130に関して説明されるが、同様のプロセスを実行するために、2つより多いコンピューティングシステムを有するMPCクラスタが使用されてもよい。加えて、プロセス300の動作は、SSP170によって実装され得る。
DSP150は、デジタルコンポーネントに対するユーザグループベースのベクトルVugをMPCクラスタ130に提供する(302)。たとえば、DSPは、SSP170を介して、デジタルコンポーネントに対するユーザグループベースのベクトルVugをMPCクラスタ130に提供することができる。上記で説明したように、DSP150は、たとえば、コンテキストベースのベクトルVcontextとともに、たとえば、コンテキストベースのベクトルVcontextを含む応答上にピギーバックされた、ユーザグループベースのベクトルVugを提供することができる。しかしながら、ユーザグループベースのベクトルVugは、将来のデジタルコンポーネント要求のためのドット積計算への2つの入力のうちの1つであり得るが、コンテキストベースのベクトルVcontextは、現在のデジタルコンポーネント要求のためのドット積計算への2つの入力のうちの1つである。MPCクラスタ130は、クライアントデバイス110から受信される将来のデジタルコンポーネント要求のために、対応するデジタルコンポーネントおよび/またはその関連メタデータとともに、ユーザグループベースのベクトルVugを記憶することができる。別の例では、DSP150は、たとえば、新しいかまたは更新されたユーザグループベースのベクトルVugを生成することに基づいて、デジタルコンポーネント要求の外部でデジタルコンポーネントに対するユーザグループベースのベクトルVugを提供することができる。
各デジタルコンポーネントについて、DSP150はまた、デジタルコンポーネントに関する追加のデータ、たとえば、メタデータをアップロードし得る。デジタルコンポーネントに関する追加のデータは、デジタルコンポーネントに対応するユーザグループのためのユーザグループ識別子を含み得る。デジタルコンポーネントに関するデータはまた、デジタルコンポーネントが適格であるコンテキスト、たとえば、クライアントデバイス110のロケーション、アプリケーション112に対して選択された音声言語、デジタルコンポーネントが表示され得るリソース用のユニバーサルリソースロケータ(URL)を示す、コンテキスト選択信号のセットに基づく、ユーザグループ要求キーUG_Request_Keyを含み得る。MPCクラスタ130は、将来のデジタルコンポーネント要求のために、MPCクラスタ130に提供されるデジタルコンポーネントに対するユーザグループベースのベクトルVugをキャッシュするか、またはさもなければ記憶する。上記で説明したように、データは、2段階のLUTまたは他の好適なデータ構造内に記憶され得る。
クライアントデバイス110は、コンテンツを受信する(304)。たとえば、クライアントデバイス110は、ウェブブラウザによる表示のための電子リソース(たとえば、ウェブページ)またはネイティブアプリケーションによる表示のためのアプリケーションコンテンツを受信し得る。コンテンツは、実行されると、各スロットに対するデジタルコンポーネントをクライアントデバイス110に要求させるコンピュータ可読コード、たとえば、スクリプトを含む、1つまたは複数のデジタルコンポーネントスロットを含み得る。クライアントデバイス110は、コンテンツをクライアントデバイス110のディスプレイ上にレンダリングすることができる。
クライアントデバイス110は、ユーザグループ識別子のセットを識別する(306)。ユーザグループ識別子のセットは、ユーザをメンバーとして含むユーザグループのためのユーザグループ識別子であり得る。たとえば、ユーザグループ識別子のセットは、ユーザグループリスト内のユーザグループ識別子であり得る。コンテンツまたは信頼できるプログラムをレンダリングするアプリケーション112は、たとえば、クライアントデバイス110のセキュアなストレージからユーザグループリストにアクセスすることによって、ユーザグループ識別子のセットを識別し得る。
MPCクラスタ130のコンピューティングシステムがユーザのためのユーザグループ識別子にアクセスすることができないように、ユーザのプライバシーを保護するために、アプリケーション112は、ユーザグループ識別子のそれぞれの秘密共有をMPCクラスタ130の各コンピューティングシステムに送信することができる。この例では、アプリケーション112は、ユーザ識別子の秘密共有を表す分布点関数を送信する。しかしながら、以下で説明するように、カッコウフィルタをMPCクラスタ130に送信することを含む、他の適切な秘密共有技法が使用され得る。
アプリケーション112または信頼できるプログラムは、ユーザグループ識別子のセットを使用して、確率的データ構造を生成し得る(308)。いくつかの実装形態では、確率的データ構造は、2つのハッシュ関数F1およびF2を使用する表を用いたカッコウフィルタである。カッコウハッシングは、各エントリがせいぜい1つのアイテムを含むことになるように、N個のアイテム、たとえば、ユーザグループ識別子を記憶するために合計(1+\epsilon)N個のエントリを備えた2つの(またはそれ以上の)表を使用するハッシング方法である。加えて、各アイテム、たとえば、ユーザグループ識別子は、その出力がセット[(1+\epsilon)N]である、2つのハッシュ関数F1およびF2のうちの1つによって定義される2つのエントリのうちの1つの中に出現することになる。キーkに関連するアイテムは、第1の表内のロケーションF1(k)または第2の表内のF2(k)のいずれかに出現することになる。適度に大きなN個のアイテム(たとえば、N≧1,000)の場合、N個のアイテムが、結合表サイズが1.1Nである、カッコウハッシングを用いてハッシングされ得ることを意味する\epsilon=0.1を使用すれば十分である。これらの式において、イプシロンは負荷ファクタと呼ばれることがある。
カッコウフィルタを使用してスパースなプライベート情報検索データ構造を構築するために、カッコウハッシングを使用して、最大でN個のユーザグループ識別子が2つの表(またはそれ以上)内にハッシングされ、これらの表は、1.1Nの結合サイズまたは別の適切なサイズを有し得る。すべての空のエントリは、0ビットストリングで置換され得る。キーkに関連するユーザグループ識別子を問い合わせるために、ユーザグループ識別子は(それがデータ構造内に存在する場合)、第1の表内のエントリF1(k)または第2の表内のF2(k)に出現することになる。表サイズC=1.1Nを使用することは、結果として1≦F1(ug_id),F2(ug_id)≦Cをもたらすことになる。
クライアントデバイス110は、ユーザグループ識別子のセット内の各ユーザグループ識別子に対して、両方のハッシュ関数F1およびF2を使用して、ユーザグループ識別子に対する両方の考えられるロケーションを計算することによって、カッコウフィルタを生成し得る。2つの考えられるロケーションのうちの少なくとも1つが空である場合、クライアントデバイス110は、いずれかの表の中にあり得る空のロケーション内に要素を挿入して、そのユーザグループ識別子に対する挿入プロセスを完了し得る。両方のロケーションが占有される場合、クライアントデバイス110は、1つのロケーションをランダムに選び、現在そのロケーション内にあるアイテムを挿入されるべきアイテムにスワップする。クライアントデバイス110は、次いで、2つのハッシュ関数F1およびF2を再計算し、再度、挿入を試みることができる。挿入が成功するかまたはユーザグループ識別子のセット内の各ユーザグループ識別子に対してあまりにも多くの試みが失敗するまで、このプロセスは繰り返す。カッコウフィルタが構築された後、各ユーザグループ識別子ug_idは表の特定のインデックス内に記憶される。
クライアントデバイス110は、分布点関数を生成する(310)。アプリケーション112または信頼できるプログラムは、点関数およびカッコウフィルタ表を使用して、分布点関数を生成し得る。分布点関数は、点関数の秘密共有を表す。概して、点関数はfi:[N][N]であり、ここで、x!=iおよびf(i)=1であるとき、f(x)=0である。点関数fiの秘密共有は、セット[N]内のすべてのxに対してfi(x)=gi(x)+hi(x)であるように、2つの関数gi:[N]→[N]およびhi:[N]→[N]である。さらに、関数hiまたはgi(両方ではない)の規格を考慮すれば、元の関数fiを復元することは不可能である。
∀j∈[1,C]の場合、以下の関係1および2が満たされるように、各ug_idに対して、分布点関数gug_id,1およびgug_id,2に分割され得る点関数Gug_idが必要とされる。
i=F1(ug_id)である場合、Gug_id(i)=gug_id,1(i)+gug_id,2(i)=ug_id (1)
そうでなければ、Gug_id(i)=gug_id,1(i)+gug_id,2(i)=0 (2)
同様に、∀j∈[1,C]の場合、以下の関係3および4が満たされるように、分布点関数hug_id,1およびhug_id,2に分割され得る点関数Hug_idが必要とされる。
i=F2(ug_id)である場合、Hug_id(i)=hug_id,1(i)+hug_id,2(i)=ug_id (3)
そうでなければ、Hug_id(i)=hug_id,1(i)+hug_id,2(i)=0 (4)
すなわち、特定の点関数の分布点関数は、複数の考えられる点、たとえば、複数の考えられるユーザグループ識別子に対して評価され得るが、ユーザをメンバーとして含み、かつ分布点関数が生成されたユーザグループのためのユーザグループ識別子ug_idを除いて、結果は常にゼロである。分布点関数は、あまり帯域幅を使用せず、他の暗号化フォームのユーザグループ識別子を送信するのと比較して低いレイテンシで、ネットワークを介して送信され得る非常に小さなデータサイズを有する。
所与のユーザグループ識別子ug_id、点関数F1およびカッコウフィルタの対応する第1の表について、クライアントデバイス110は、コンピューティングシステムMPC1に対して分布点関数gug_id,1およびコンピューティングシステムMPC2に対して分布関数gug_id,2を生成する。同様に、所与のユーザグループ識別子ug_id、点関数F2およびカッコウフィルタの対応する第2の表について、クライアントデバイス110は、コンピューティングシステムMPC1に対して分布点関数hug_id,1およびコンピューティングシステムMPC2に対して分布点関数hug_id,2を生成する。
クライアントデバイス110は、デジタルコンポーネント要求をMPCクラスタ130に送信する(312)。デジタルコンポーネント要求は、分布点関数を含み得る。クライアントデバイス110は、各分布点関数gug_id,1および各分布点関数hug_id,1を含むデジタルコンポーネント要求をコンピューティングシステムMPC1に送信し得る。デジタルコンポーネント要求は、第1の段階のルックアップ鍵、たとえば、SHA256(UG_Request_Key)を含み得る。クライアントデバイス110は、デジタルコンポーネント要求に対するコンテキスト信号に基づいて、第1の段階のルックアップキーを生成し得る。たとえば、クライアントデバイス110は、それを用いて選択されたデジタルコンポーネントが表示されることになるリソースのURL、デジタルコンポーネント要求を提出するクライアントデバイス110のロケーション、選択されたデジタルコンポーネントを表示することになるアプリケーション112の発話言語など、コンテキスト信号を含む複合メッセージを生成することによって、第1の段階のルックアップキーを生成し得る。クライアントデバイス110は、次いで、ハッシュ関数、たとえば、SHA256関数を複合メッセージに適用して、第1の段階のルックアップキーを生成し得る。
同様に、クライアントデバイス110は、各分布点関数gug_id,2および各分布点関数hug_id,2を含むデジタルコンポーネント要求をコンピューティングシステムMPC2に送信し得る。このデジタルコンポーネント要求はまた、第1の段階のルックアップキー、たとえば、SHA256(UG_Request_Key)も含み得る。コンテキスト信号は同じであるため、第1の段階のルックアップキーは、MPCクラスタ130の2つのコンピューティングシステムMPC1およびMPC2に送信されたデジタルコンポーネント要求に対して同じであり得る。
コンピューティングシステムMPC1は、加法的秘密共有のベクトル[M1]=[m1,1,...mC,1]を作成することができ、式中、1≦i≦Cの場合、mi,1=gug_id,1(i)である。本明細書で、括弧は秘密の秘密共有を表すために使用される。同様に、コンピューティングシステムMPC2は、加法的秘密共有のベクトル[M2]=[m1,2,...mC,2]を作成することができ、式中、1≦i≦Cの場合、mi,2=gug_id,2(i)である。この例では、秘密共有[mi,1]および[mi,2]は、Gug_id(i)の加法的秘密共有であり、[M1]および[M2]は、Mの2つの加法的秘密共有、すなわち、次元Cのベクトルであり、ここで、Mi=Gug_id(i)である。秘密共有は、シャミアの秘密共有または別の適切な秘密共有技法を使用して生成され得る。コンピューティングシステムMPC1およびMPC2は、点関数hug_id,1(i)およびhug_id,1(i)に対して同様のベクトルを生成し得る。
コンピューティングシステムMPC1および/またはMPC2のうちの少なくとも1つに送信されるデジタルコンポーネント要求は、コンテキストデジタルコンポーネント要求を含み得る。上記で説明したように、コンテキストデジタルコンポーネント要求は、デジタルコンポーネント表示機会、ファーストパーティクッキー、および/またはコホート識別子に対するコンテキスト信号を含み得る。この場合、コンテキスト信号は、コンテンツを含む電子リソースのURL、クライアントデバイス110のロケーション、アプリケーション112の音声言語などを含み得る。
MPCクラスタ130は、コンテキストデジタルコンポーネント要求をSSP170に送信する(314)。SSP170は、コンテキストデジタルコンポーネント要求を1つまたは複数のDSP150に送信する(316)。DSP150は、コンテキストデジタルコンポーネント要求内に含まれた情報に基づいて、コンテキストベースのベクトルVcontextを生成し、コンテキストベースのベクトルVcontextを含む応答をSSP170に送信することができる(318)。上記で説明したように、DSP150はまた、現在のデジタルコンポーネント選択プロセスのための、および/または将来のデジタルコンポーネント選択プロセスのためにMPCクラスタ130において記憶されることになる、新しいかまたは更新されたユーザグループベースのベクトルVugを提供することもできる。
いくつかの実装形態では、DSP150からの応答は、コンテキストデジタルコンポーネント要求内に含まれたコンテキスト信号および/または他の情報に基づいて選択された、デジタルコンポーネントに対する無条件選択値を含み得る。これは、コンテキストベースのベクトルVcontextに加えて、またはその代わりのものであり得る。たとえば、これらのデジタルコンポーネントは、現在のデジタルコンポーネント要求に対して選択され得るが、MPCクラスタ130におけるキャッシングのために選択され得ない。
SSP170は、DSP150からの応答をMPCクラスタ130に送信する(320)。いくつかの実装形態では、SSP170は、それらをMPCクラスタ130に送信するのに先立って、応答において発行者制御を実施することができる。そのような発行者制御は、コンテンツの発行者が除外した特徴をデジタルコンポーネントが有する場合、デジタルコンポーネントを考慮からフィルタリングすることができる。そのような発行者制御はまた、発行者が除外したデジタルコンポーネント提供者から受信されたデジタルコンポーネントをフィルタリングすることもできる。
いくつかの実装形態では、SSP170はまた、ベクトルおよび/または選択値をMPCクラスタ130に送信するのに先立って、発行者、SSP170、および/またはDSP150の間の共有合意に基づいて、ベクトルおよび/または選択値を調整することもできる。この結果は、デジタルコンポーネント提供者160がデジタルコンポーネントの表示またはそれとのユーザ対話のために提供するようになる全選択値から発行者に提供されるようになる最終量である。一例では、SSP170は、ユーザグループベースのベクトルVugを値(1-share)で乗算して、結果ベクトルVug'を取得することができる。パラメータshareは、SSP170および/またはDSP150に提供されるようになるベクトルVugを使用して計算された選択値のパーセンテージを表すことができる。パラメータshareは、提供者のSSP170および/またはDSP150との合意に基づいて、デジタルコンポーネントにわたって異なり得る。この例では、結果ベクトルVug'は、コンピューティングシステムMPC1およびMPC2によって記憶され、記憶されたベクトルおよびそのデジタルコンポーネントがデジタルコンポーネント選択プロセスのためにアクティブのままである限り、複数回使用され得る。
別の例では、SSP170は、コンテキストベクトルVcontextを(1-share)で乗算して、結果ベクトルVcontext'を取得することができる。この例では、結果ベクトルは、コンピューティングシステムMPC1およびMPC2によって記憶され、現在のデジタルコンポーネント選択プロセスのために使用され得る。しかしながら、コンテキストベクトルは、現在のデジタルコンポーネント選択プロセスに固有であるので、将来のデジタルコンポーネント選択プロセスのために使用され得ない。別の例では、各デジタルコンポーネントに対するパラメータshareは、コンピューティングシステムMPC1およびMPC2によって記憶され、たとえば、結果ベクトルVug'およびVcontext'を計算するために、将来のデジタルコンポーネント選択プロセスのために再使用され得る。
MPCクラスタ130は、デジタルコンポーネント要求に応答して、デジタルコンポーネント選択プロセスを実行して、クライアントデバイス110に配信するためにデジタルコンポーネントを選択する(322)。これは、第1の段階のルックアップキーを使用して、コンピューティングシステムMPC1およびMPC2の2段階のルックアップテーブル内の適格なデジタルコンポーネントを識別することを含み得る。これはまた、ユーザのためのユーザグループ識別子のうちの1つにマッチするユーザグループ識別子を有するデジタルコンポーネントに基づいて、選択の候補であるデジタルコンポーネントを識別することを含んでもよい。これはまた、デジタルコンポーネントに対する選択値に基づいて候補デジタルコンポーネントからデジタルコンポーネントを選択することも含み得る。これはすべて、コンピューティングシステムMPC1またはMPC2のいずれもクリアテキストでユーザグループ識別子および/または他のユーザデータにアクセス可能であることなしに実行され得る。セキュアなMPCプロセスを使用してデジタルコンポーネントを選択するための例示的なプロセスについては、図4に示し、以下で説明する。
MPCクラスタ130は、選択結果の秘密共有をクライアントデバイス110に送信する(324)。選択結果は、選択されたデジタルコンポーネントに関する情報を含むバイトアレイの形態であってよい。たとえば、選択結果は、第2のLUT内のデジタルコンポーネントに対する値、たとえば、デジタルコンポーネントに関する選択値およびデジタルコンポーネントに関するメタデータを含むバイトアレイであってよい。コンピューティングシステムMPC1およびMPC2は、以下でより詳細に説明するように、セキュアなMPCプロセスを使用して、選択結果の秘密共有を決定し得る。コンピューティングシステムMPC1は、選択結果の第1の秘密共有をクライアントデバイス110に送信することができ、コンピューティングシステムMPC2は、選択結果の第2の秘密共有をクライアントデバイス110に送信することができる。コンピューティングシステムMPC1およびMPC2が選択されたデジタルコンポーネントを知ることを防ぐために、たとえば、アプリケーションの(たとえば、ブラウザの)パブリックキーを使用して、それらの秘密共有を暗号化することによって、コンピューティングシステムMPC1およびMPC2が選択結果のそれらの秘密共有を互いと共有することを防ぐことができる。
2表カッコウフィルタが使用されるとき、MPCクラスタ130は、各表に対して1つ、2つの選択結果の秘密共有を提供し得る。しかしながら、2つのデジタルコンポーネントに対する2つのユーザグループリスト選択値を検索することは、選択値のスクラッピングを促す。このリスクを低減するために、MPCクラスタ130は、以下で説明するように、別のセキュアなMPC技法を使用して、最高選択値を備えたせいぜい1つの選択結果を返すことができる。
クライアントデバイス110は、選択結果に対応するデジタルコンポーネントを決定する(326)。それに関してクライアントデバイス110がコンピューティングシステムMPC1およびMPC2から2つの秘密共有を受信する各選択結果について、クライアントデバイス110は、2つの秘密共有から選択結果を決定し得る。たとえば、以下でより詳細に説明するように、加法的秘密共有ライブラリを使用して、クライアントデバイス110は、選択結果の2つの秘密共有を一緒に加えて、クリアテキストで選択結果を取得し得る。これは、デジタルコンポーネントに対する選択値およびデジタルコンポーネントに関するメタデータ、たとえば、デジタルコンポーネントの識別情報、そこからクライアントデバイス110がデジタルコンポーネントをダウンロードし得るロケーションに対するアクセスをクライアントデバイス110に与える。
クライアントデバイス110は、デジタルコンポーネントを表示(present)、たとえば、表示(display)し得る(328)。たとえば、アプリケーション112は、ステップ204において受信されたコンテンツとともにデジタルコンポーネントを表示し得る。いくつかの実装形態では、クライアントデバイス110は、選択結果のデジタルコンポーネントを表示し得る。2つの選択結果が受信される場合、クライアントデバイス110(たとえば、アプリケーション112)は、最高選択値を有するデジタルコンポーネントを選択し、選択されたデジタルコンポーネントを表示し得る。
リソースが複数のデジタルコンポーネントスロットを含む場合、クライアントデバイス110は、各スロットに対するそれぞれのデジタルコンポーネントをMPCクラスタ130から、またSSP170から要求し得る。消費される帯域幅およびレイテンシを低減するために、クライアントデバイス110は、デジタルコンポーネントスロットのすべてに対して、ユーザグループ識別子に対する分布点関数を一回送信し得る。
カッコウフィルタおよび分布点関数を生成するためのステップは、図3において、コンテンツを受信した後に実行されるとして示されているが、クライアントデバイス110は、コンテンツを受信するのに先立って、カッコウフィルタおよび分布点関数を生成し得る。たとえば、クライアントデバイス110は、周期的に、またはユーザに対するユーザグループメンバーシップの更新に応答して、カッコウフィルタおよび分布点関数を生成しキャッシュし得る。
図4は、クライアントデバイスに配信するためのデジタルコンポーネントを選択するための例示的なプロセス300のスイムレーン図である。プロセス400の動作は、たとえば、MPCクラスタ130のコンピューティングシステムMPC1およびMPC2によって実装され得る。プロセス400の動作は、非一時的であり得る1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス400の動作を実行させ得る。
コンピューティングシステムMPC1およびMPC2は、各キャッシュされたデジタルコンポーネントに関連付けられたユーザグループベースのベクトルVugと、クライアントデバイス110から受信されたデジタルコンポーネント要求に応答して受信されたコンテキストベクトルVcontextとを使用して、デジタルコンポーネントに対する選択値を決定する(402)。コンピューティングシステムMPC1およびMPC2は、それに対してベクトルが、コンピューティングシステムMPC1およびMPC2によって、たとえば、2段階のLUT内に記憶され、任意のベクトルが、図3を参照しながら上記で説明したように、クライアントデバイス110から受信されたデジタルコンポーネント要求に応答してSSP170から受信される、各デジタルコンポーネントに対する選択値を決定することができる。
デジタルコンポーネントに対する選択値を決定するために、コンピューティングシステムMPC1およびMPC2は、デジタルコンポーネントに関連付けられた記憶されたベクトルVugと、デジタルコンポーネント要求に応答して、デジタルコンポーネント(および、DSP150の他のデジタルコンポーネント)に対してDSP150から受信されたコンテキストベースのベクトルVcontextとのドット積を決定することができる。いくつかの実装形態では、コンピューティングシステムMPC1およびMPC2は、共有が扱われる方法に応じて、ベクトルのうちの一方、たとえば、Vcontextと、他方のベクトルの共有後(たとえば、(1-share)で乗算した後)の結果、たとえば、Vug'とのドット積を決定する。ドット積の結果は、対応するデジタルコンポーネント要求に対するデジタルコンポーネントに対する選択値である。パラメータshareが、デジタルコンポーネントに対してMPCクラスタ130に提供される場合、ドット積計算から生じる値が、(1-share)で乗算され得る。
いくつかの実装形態では、コンピューティングシステムMPC1およびMPC2は、デジタルコンポーネントに対する選択値として、3つのベクトル、デジタルコンポーネントに対するコンテキストベクトルVcontextと、デジタルコンポーネントに対するユーザグループベースのベクトルVugと、そこからデジタルコンポーネント要求が受信されたクライアントデバイス110のユーザのユーザプロファイルを表すユーザベクトルVuserとのドット積を決定することができる。各ベクトルは、同じ次元と、同じ特徴を表す同じ要素とを有し得る。しかしながら、各ベクトルは、その要素によって表される特徴の重みに応じて、要素に対する異なる値を有し得る。たとえば、ユーザプロファイルベクトルにおけるオースティンに対するロケーション要素に対する値は、ユーザがオースティンにいる場合に正の値、またはユーザがオースティンにいない場合に負の値もしくはゼロの値を有することができ、コンテキストベクトルにおける同じロケーション要素に対する値は、現在ユーザに示されている発行者コンテンツがオースティンに大いに関連する場合に正の値を有することができ、デジタルコンポーネントに対するユーザグループベースのベクトルにおける同じロケーション要素に対する値は、デジタルコンポーネントがオースティンに関連する場合に正である。3つのベクトルのドット積を計算するために、コンピューティングシステムMPC1およびMPC2は、最初に、3つのベクトルの各々から1つずつ、対応する要素の間で要素ごとの乗算を実行し、次いで結果を合計する。たとえば、3つのベクトルが、それぞれV1={v1,1...v1,n}、V2={v2,1...v2,n}、およびV3={v3,1...v3,n}であると仮定すると、3つのベクトルの間のドット積は、
となる。
アプリケーション112は、たとえば、SSP170またはDSP150から受信された特徴ベクトルに基づいて、ユーザのためのユーザプロファイルを生成することができる。アプリケーション112は、経時的にユーザプロファイルを累積し、ユーザプロファイルのそれぞれの秘密共有を各コンピューティングシステムMPC1およびMPC2に提供することができる。
いくつかの実装形態では、コンピューティングシステムMPC1およびMPC2は、2つ(または3つ)のベクトルを使用して決定された選択値を限定することができる。このようにして、得られた選択値は、第1のしきい値よりも高い、または第2のしきい値よりも低いものではない。たとえば、コンピューティングシステムMPC1およびMPC2は、たとえば、デジタルコンポーネントに対してDSP150によって指定されるような、デジタルコンポーネントに対して指定された最小値と指定された最大値との間の範囲の間である選択値を出力するために、cap関数を使用することができる。
いくつかの実装形態では、コンピューティングシステムMPC1およびMPC2は、たとえば、ユーザプロファイルが使用されない場合、クリアテキストベクトルを使用して、クリアテキストで選択値を計算する。いくつかの実装形態では、コンピューティングシステムMPC1およびMPC2は、セキュアなMPCプロセスを使用して、各ベクトルの秘密共有を使用して、選択値を計算する。たとえば、SSP170またはDSP150は、機密ユーザ情報から導出されたベクトルを秘密共有に分割し、ベクトルのそれぞれの秘密共有を各コンピューティングシステムMPC1およびMPC2に提供することができる。コンピューティングシステムMPC1およびMPC2が各選択値の秘密共有を計算した後、コンピューティングシステムMPC1およびMPC2は、たとえば、クリアテキストで選択値に対する秘密共有を一緒に加算することによって(秘密共有が加法的秘密共有である場合)、選択値を再構築し得る。ドット積計算においてユーザプロファイルベクトルを含む実装形態では、以下で説明するように、コンピューティングシステムMPC1またはMPC2のいずれもがクリアテキストでユーザプロファイルにアクセスすることを防ぐことによって、ユーザプライバシーを保護するために、セキュアなMPCプロセスが使用される。
コンピューティングシステムMPC1は、適格なデジタルコンポーネントを識別する(404)。上記で説明したように、デジタルコンポーネント要求は、クライアントデバイスのユーザをメンバーとして含む各ユーザインターフェースグループについて、ハッシュ関数F1を使用してユーザインターフェースグループ識別子ug_idに対してクライアントデバイス110によって生成された分布点関数gug_id,1を含み得る。2表カッコウフィルタが使用される場合、デジタルコンポーネント要求はまた、ハッシュ関数F2を使用してユーザインターフェースグループ識別子ug_idに対してクライアントデバイス110によって生成された分布点関数hug_id,1も含み得る。デジタルコンポーネント要求はまた、デジタルコンポーネント要求に対するコンテキスト信号に基づいて生成された第1の段階のルックアップキー、たとえば、SHA256(UG_Request_Key)も含み得る。
コンピューティングシステムMPC1は、デジタルコンポーネント要求の第1の段階のルックアップキーを使用して、デジタルコンポーネントに対する適格なユーザグループベースのベクトルを識別し得る。コンピューティングシステムMPC1は、第1の段階のLUTにアクセスし、第1の段階のルックアップキーを使用して、第1の段階のルックアップキーによって表されたコンテキスト信号のセットに対して、たとえば、それに関するユーザグループベースのベクトルが受信されている、表示されるのに適格であるデジタルコンポーネントに対するユーザグループベースのベクトルに関する情報を含む第2の段階のLUTの行を識別し得る。たとえば、上記で説明したように、第2の段階のLUTの各行は、デジタルコンポーネントに関する情報と、コンテキスト信号のセットに基づく第2の段階のルックアップキーとを含む。したがって、コンピューティングシステムMPC1は、第1の段階のルックアップキーを使用して、デジタルコンポーネント要求内で受信された第1の段階のルックアップキーによって定義されたコンテキスト信号のセットにマッチするコンテキスト信号のセットを有する第2の段階のLUTの行を識別し得る。これらの行は、表示されるのに適格であるデジタルコンポーネントに関する情報を含むか、またはデジタルコンポーネント要求内で受信された第1の段階のルックアップキーによって定義されるコンテキストに対する適格なユーザグループベースのベクトルを有する。
コンピューティングシステムMPC2は、適格なユーザグループベースのベクトルを識別する(406)。コンピューティングシステムMPC2は、クライアントデバイス110から受信されたデジタルコンポーネント要求に対する適格なユーザグループベースのベクトルを識別し得る。このデジタルコンポーネント要求は、クライアントデバイスのユーザをメンバーとして含む各ユーザインターフェースグループについて、ハッシュ関数F1を使用してユーザインターフェースグループ識別子ug_idに対してクライアントデバイス110によって生成された分布点関数gug_id,2を含み得る。2表カッコウフィルタが使用される場合、デジタルコンポーネント要求は、ハッシュ関数F2を使用してユーザインターフェースグループ識別子ug_idに対してクライアントデバイス110によって生成された分布点関数hug_id,2も含み得る。デジタルコンポーネント要求はまた、デジタルコンポーネント要求に対するコンテキスト信号に基づいて生成された第1の段階のルックアップキー、たとえば、SHA256(UG_Request_Key)も含み得る。
コンピューティングシステムMPC2によって受信されたデジタルコンポーネント要求の第1の段階のルックアップキーは、コンピューティングシステムMPC1によって受信された第1の段階のルックアップキーと同じであってよい。各分布点関数gug_id,2は、コンピューティングシステムMPC1によって受信された対応する分布点関数と同じ分布点関数Gud_idに基づいて生成され得る。すなわち、ユーザをメンバーとして含むユーザグループのためのユーザグループ識別子ud_idに対して、クライアントデバイス110は、ハッシュ関数F1を使用してデジタルコンポーネント要求の分布関数gug_id,1およびgug_id,2を生成し得る。同様に、ユーザをメンバーとして含むユーザグループのためのユーザグループ識別子ud_idに対して、クライアントデバイス110は、ハッシュ関数F2を使用してデジタルコンポーネント要求の分布関数hug_id,1およびhug_id,2を生成し得る。
簡潔のために、プロセス400の残りのステップは、ハッシュ関数F1に対する分布点関数に関するデジタルコンポーネント要求に応答して、クライアントデバイス110に配信するためのデジタルコンポーネントを選択することに関して説明される。しかしながら、ハッシュ関数F2に対する分布点関数に対して同じステップが実行され得る。この結果として、2つの選択されたデジタルコンポーネントおよびMPCクラスタ130は、以下で説明するように、2つのデジタルコンポーネントのうちの1つを選択する追加の動作を実行することができる。
コンピューティングシステムMPC2は、デジタルコンポーネント要求の第1の段階のルックアップキーを使用して適格なユーザグループベースのベクトルを識別し得る。コンピューティングシステムMPC2は、第1の段階のLUTにアクセスし、第1の段階のルックアップキーを使用して、第1の段階のルックアップキーによって表されたコンテキスト信号のセットに対して、たとえば、それに関する選択値が受信されている、表示されるのに適格であるデジタルコンポーネントに関する情報を含む第2の段階のLUTの行を識別し得る。上記で説明したように、各コンピューティングシステムMPC1およびMPC2は、同じ情報を含むそれぞれの2段階のLUTを維持し得る。
各適格な選択値について、コンピューティングシステムMPC1およびMPC2は、デジタルコンポーネント要求に応答して、選択値およびそのデジタルコンポーネントがクライアントデバイス110への配信のために選択される候補であるかどうかを決定する(408)。候補ユーザグループベースのベクトルは、ユーザのためのユーザグループ識別子にマッチするユーザグループ識別子、たとえば、ユーザをメンバーとして含むユーザグループのためのユーザグループ識別子を有する、デジタルコンポーネントに対する適格なユーザグループベースのベクトルである。上記で説明したように、各デジタルコンポーネントは、DSP150またはデジタルコンポーネント提供者160がそのデジタルコンポーネントが表示されるべきであると示したメンバーを含む1つまたは複数のユーザグループにマッピングされ得る。この情報は、上記で説明したように、第2の段階のLUTに対する第2の段階のルックアップキーの一部である。
第2の段階のLUT内の行に対する第2の段階のルックアップキーの一部であるそのユーザグループ識別子ug_idがユーザのユーザグループ識別子のうちの1つにマッチする場合、その行のデジタルコンポーネントは選択の候補である。概念的に、ユーザのグループメンバーシップを表すためにカッコウフィルタを使用して、デジタルコンポーネントが候補であるかどうかを決定するために、ここで、カッコウフィルタは、要素が2つ(またはそれ以上)の考えられるロケーションのうちの1つに挿入されることを可能にするものであり、コンピューティングシステムは、第2の段階のルックアップキーのユーザグループ識別子ug_idが2つ(またはそれ以上)のカッコウフィルタロケーションのうちの1つの中の2つ(またはそれ以上)のタグのうちの1つにマッチするかどうかを決定することができる。
このユーザグループベースの条件に加えて、MPCクラスタ130は、他の条件、頻度制御、ミューティング、バジェット、k匿名性、および/またはペーシング制約を適用することができる。たとえば、デジタルコンポーネント選択プロセスの候補になるために、デジタルコンポーネントは、デジタルコンポーネント選択プロセスにおける適格性に対する1つまたは複数の条件を満たすことが必要とされ得る。これらの条件は、たとえば、デジタルコンポーネントに関連するユーザグループが、デジタルコンポーネントが提供されることになるユーザのユーザグループにマッチするかどうか、デジタルコンポーネントが、ある時間期間中に指定された回数より多く同じユーザに同じデジタルコンポーネントが公開されることを防ぐ頻度制御条件を満たすかどうか、デジタルコンポーネントが、ミュートを選択したユーザにデジタルコンポーネントが表示されることを防ぐミュート条件を満たすかどうか、デジタルコンポーネントがk匿名性条件を満たすかどうか、および/またはデジタルコンポーネントを含むキャンペーンが、キャンペーン内のデジタルコンポーネントの配信をペーシングするペーシング適格性条件を満たすかどうかを含み得る。
コンピューティングシステムMPC1およびMPC2は、コンピューティングシステムMPC1もMPC2も、どのデジタルコンポーネントが候補であるか、またはユーザをメンバーとして含むユーザグループを知らないように、秘密共有を使用するセキュアなMPC技法を使用して、候補ユーザグループベースのベクトルを識別し得る。これを行うために、コンピューティングシステムMPC1は、ユーザグループ識別子ug_idに関連付けられた各キャッシュされたデジタルコンポーネントについて、候補パラメータis_dc_a_candidateの第1の共有を計算する。同様に、コンピューティングシステムMPC2は、ユーザグループ識別子ug_idに関連付けられた各キャッシュされたデジタルコンポーネントについて、候補パラメータis_dc_a_candidateの第2の共有を計算する。候補パラメータis_dc_a_candidateは、キャッシュされたデジタルコンポーネントにリンクされたユーザグループベースのベクトルが候補であるかどうかを示すブール値(たとえば、ゼロまたは1)であり得る。デジタルコンポーネントに対するユーザグループベースのベクトルが候補である場合、ユーザグループベースのベクトルを使用して計算されたその対応する選択値は、候補ならびに対応するデジタルコンポーネントである。
候補パラメータis_dc_a_candidateの第1の共有は[is_dc_a_candidatedc,1]と表されてよく、候補パラメータis_dc_a_candidateの第2の共有は[is_dc_a_candidatedc,2]と表されてよい。ユーザグループ識別子ug_idに関連付けられたキャッシュされたデジタルコンポーネントdcに対する候補パラメータの第1の秘密共有は、ブール
の秘密共有であり、これはug_id==[gug_id,1(F1(ug_id))]に等しい。ユーザグループ識別子ug_idに関連付けられたキャッシュされたデジタルコンポーネントdcに対する候補パラメータの第2の秘密共有は、ブール
の秘密共有であり、これはug_id==[gug_id,2(F1(ug_id))]に等しい。シンボル「==」は、2つの値が等しい場合、真(または1)であり、これらの値が等しくない場合、偽(または0)である、等価性テストを表す。
コンピューティングシステムMPC1およびMPC2は、コンピューティングシステムMPC1とMPC2との間の1つまたは複数のラウンドトリップを用いたセキュアなMPC技法を使用してハッシュ関数F1に対する秘密共有[is_dc_a_candidatedc,1]および[is_dc_a_candidatedc,2]を計算してug_id==[gug_id,1(F1(ug_id))]およびug_id==[gug_id,2(F1(ug_id))]の等価式を評価することができる。すなわち、コンピューティングシステムMPC1およびMPC2は、デジタルコンポーネント要求の一部としてクライアントデバイス110から受信された各ユーザグループ識別子に対する分布点関数gug_id,1およびgug_id,2に基づいて、ユーザグループ識別子ug_idに関連付けられた各キャッシュされたデジタルコンポーネントdcに対する秘密共有[is_dc_a_candidatedc,1]および[is_dc_a_candidatedc,2]を決定し得る。
コンピューティングシステムMPC1およびMPC2は、以下のTable 3(表3)に示す動作をサポートする秘密共有技法または秘密共有ライブラリを使用し得る。これらの動作をサポートする1つの例示的な秘密共有技法は、プライベート情報アグリゲーションを通したセキュリティ(SEPIA:Security through Private Information Aggregation)である。
コンピューティングシステムMPC1は、ユーザグループベースのベクトルおよびコンテキストベクトルに基づいて計算された選択値の順序を決定する(410)。同様に、コンピューティングシステムMPC2は、ユーザグループベースのベクトルおよびコンテキストベクトルに基づいて、選択値の順序を決定する(412)。各コンピューティングシステムMPC1およびMPC2は、UG_Request_Keyにマッチするその第2の段階のLUT内のキャッシュされたデジタルコンポーネントに関連付けられた選択値の順序を決定し得る。この順序は、デジタルコンポーネント選択プロセスに対して適格である候補デジタルコンポーネントに対する選択値と、候補ではなく、したがって適格ではないデジタルコンポーネントに対する選択値とを含めて、UG_Request_Keyにマッチする第2の段階のLUT内にキャッシュされたすべてのデジタルコンポーネントに対して計算された選択値のすべてを含み得る。この順序は、計算された最高選択値から計算された最低選択値へであってよい。いくつかの実装形態では、順序付けのために使用される選択値は、それを用いて選択されたデジタルコンポーネントが、たとえば、DSP150および/またはSSP170との何らかの共有の後、表示されることになるリソースの発行者に提供されることになる値であり得る。選択値はクリアテキストであるため、コンピューティングシステムMPC1およびMPC2は選択値を順序付けするために何のラウンドトリップ計算も実行しなくてよい。実際に、各コンピューティングシステムMPC1およびMPC2は、その第2の段階のLUTの選択値を独立して順序付けることができる。選択値が各選択値のそれぞれの秘密共有を有する各コンピューティングシステムMPC1およびMPC2によって、各コンピューティングシステムMPC1およびMPC2において、秘密共有として記憶された場合、コンピューティングシステムMPC1およびMPC2は、ラウンドトリップ計算を使用してセキュアなMPCプロセスを実行して選択値を順序付けし得る。
コンピューティングシステムMPC1およびMPC2は、キャッシュされたデジタルコンポーネントに関連付けられた各候補選択値に対する累積値の秘密共有を決定する(414)。概念的に、デジタルコンポーネントに対する所与の選択値に対する累積値は、上の順から、所与の選択値が候補である場合、所与の選択値を含めて、所与の選択値までの候補選択値の総数を表す。この概念は、以下のTable 4(表4)に示されている。
いくつかの実装形態では、デジタルコンポーネントに対する所与の選択値に対する累積値は、上の順から、所与の選択値が候補である場合、所与の選択値を除いた、所与の選択値までの候補選択値の総数を表す。この例では、第4の列は、累積値が、1ではなく、ゼロに等しいかどうかを表すことになる。いずれの場合も、各選択値に対する累積値は、選択値がユーザのユーザグループ識別子にマッチするユーザグループ識別子に関連することに基づいて、選択の候補である候補選択値のランク付けされた順序内のその選択値の位置を示す。
Table 4(表4)では、累積値が上の順から下の順へと進むにつれて、累積値(acc)は、1に等しい候補パラメータis_dc_a_candidateを有する各選択値に対して増分する。たとえば、最高選択値を有するデジタルコンポーネントに対する候補パラメータis_dc_a_candidateはゼロに等しいため、キャッシュされたデジタルコンポーネントに関連付けられた最高選択値に対する累積値accはゼロである。第2の選択値を有するデジタルコンポーネントに対する候補パラメータis_dc_a_candidateは1に等しく、第2の最高選択値を有するデジタルコンポーネントより高いデジタルコンポーネントはいずれも1に等しい候補パラメータis_dc_a_candidateを有さないため、第2の最高選択値を有するデジタルコンポーネントに対する累積値accは1である。順序を下に移動すると、第3の最高選択値を有するデジタルコンポーネントに対する候補パラメータis_dc_a_candidateはゼロであり、したがって、第3の最高選択値を有するデジタルコンポーネントに対する累積値accは、第2の最高選択値を有するデジタルコンポーネントに対する累積値accから増分しない。第4の最高選択値を有するデジタルコンポーネントに対する候補パラメータis_dc_a_candidateは1であるため、第4の最高選択値を有するデジタルコンポーネントに対する累積値accは、第3の最高選択値を有するデジタルコンポーネントに対して累積値accから1だけ増分する。したがって、両端値を含めて最高選択値から第4の最高選択値まで、候補パラメータis_dc_a_candidateを有する2つの選択値が存在するため、第4の最高選択値を有するデジタルコンポーネントに対する累積値accは2に等しい。
いくつかの実装形態では、所与のデジタルコンポーネントに対する累積値は、上の順から、所与のデジタルコンポーネントを除いた、所与のデジタルコンポーネントまでの候補デジタルコンポーネントの総数を表す。この例では、第4の列は、累積値が、1ではなく、ゼロに等しいかどうかを表すことになる。いずれの場合も、各デジタルコンポーネントに対する累積値は、デジタルコンポーネントがユーザのユーザグループ識別子にマッチするユーザグループ識別子に関連することに基づいて、選択の候補である候補デジタルコンポーネントのランク付けされた順序内のそのデジタルコンポーネントの位置を示す。
Table 4(表4)を使用して、コンピューティングシステムMPC1およびMPC2は、クライアントデバイス110に対する配信のために、Table 4(表4)の第4の列に示すように、候補パラメータis_dc_a_candidateが1の値を有し、累積値accが1の値を有する選択パラメータに対応するデジタルコンポーネントを選択することになる。これは、候補パラメータis_dc_a_candidateが1の値を有する最上位の選択値を有するデジタルコンポーネントを表す。候補パラメータis_dc_a_candidateは、ユーザプライバシーを維持し、ユーザデータが漏洩しないことを保証するために、コンピューティングシステムMPC1およびMPC2に対して秘密共有状態であるため、コンピューティングシステムMPC1およびMPC2は、各選択値に対する累積値accの秘密共有を決定し、ラウンドトリップ計算を使用して、どの選択値が1に等しい累積値accおよび1に等しい候補パラメータis_dc_a_candidateを有するかを決定する。
コンピューティングシステムMPC1およびMPC2は、何のラウンドトリップ計算もなしに、各デジタルコンポーネントに対する累積値accのそれらの秘密共有を独立して決定し得る。たとえば、コンピューティングシステムMPC1は、各デジタルコンポーネントdcについて、Table 4(表4)を参照しながら上記で説明したように、最高から最低の順に選択値のすべてを横断し、道々、その順に、デジタルコンポーネントに対する候補パラメータis_dc_a_candidateを合計することによって、累積値accの第1の共有[accdc,1]を決定し得る。同様に、コンピューティングシステムMPC2は、各デジタルコンポーネントdcについて、最高から最低の順に選択値のすべてを横断し、道々、その順に、デジタルコンポーネントに対する候補パラメータis_dc_a_candidateを合計することによって、累積値accの第2の共有[accdc,2]を決定し得る。
コンピューティングシステムMPC1およびMPC2は、デジタルコンポーネントdcに関連付けられた各選択値について、累積値accが指定された値を有するかどうかを示す結果の秘密共有を決定する(416)。指定された値は、Table 4(表4)の列3および4に示すように、1の値、または他の実装形態ではゼロの値であり得る。上記で説明したように、累積値が1であり、候補パラメータis_dc_a_candidateが1であるデジタルコンポーネントは、候補選択値の中の最高選択値を有するデジタルコンポーネントである。
コンピューティングシステムMPC1およびMPC2は、各デジタルコンポーネントに対する秘密共有に関する等価演算accdc==1を計算するためのセキュアなMPCプロセスの一部として、複数の計算ラウンド、たとえば、複数のリモートプロシージャ呼出し(RPC)に関与し得る。このプロセスの最後に、コンピューティングシステムMPC1は、各デジタルコンポーネントdcについて、結果[accdc,1]==1の1つの秘密共有を有し、コンピューティングシステムMPC2は、各デジタルコンポーネントdcについて、結果[accdc,2]==1のもう1つの秘密共有を有する。
コンピューティングシステムMPC1およびMPC2は、選択結果を決定する(418)。コンピューティングシステムMPC1およびMPC2は、各デジタルコンポーネントdcに対する、accdc==1の秘密共有、および候補パラメータis_dc_a_candidatedcの秘密共有に基づいて、選択結果を決定し得る。そうするために、コンピューティングシステムMPC1およびMPC2は、秘密共有に関する各デジタルコンポーネントdcに対する勝者パラメータis_dc_the_winnerdcを計算し得る。勝者パラメータis_dc_the_winnerdcは、デジタルコンポーネントdcが選択プロセスの勝者であるかどうか、たとえば、デジタルコンポーネント要求に応答して、対応するデジタルコンポーネントがクライアントデバイス110に配信するために選択されるかどうかを示すブール値(たとえば、ゼロもしくは1、または真もしくは偽)であり得る。
デジタルコンポーネントに対する勝者パラメータis_dc_the_winnerdcは、デジタルコンポーネントに対する候補パラメータis_dc_a_candidatedc、および上記で説明したように、Table 4(表4)の列4がどのように決定されるかに応じて、デジタルコンポーネントに対する累積値accが指定された値に等しい、たとえば、1またはゼロに等しいかどうかに基づき得る。続く例では、MPCクラスタ130は、各デジタルコンポーネントについて、これらの2つのパラメータの積を決定し得る。たとえば、以下で説明するような真理表を使用して、候補パラメータis_dc_a_candidatedcが真または1であること、および累積値が指定された値に等しいことが両方ともそうであるかどうかを決定するために、他の技法も使用され得る。
各コンピューティングシステムMPC1およびMPC2は、秘密共有乗算プロトコルを行い、各デジタルコンポーネントdcに対して、秘密共有に関する勝者パラメータis_dc_the_winnerdc==(is_dc_a_candidatedc×(accdc==1))を計算し得る。使用されるセキュアなMPCプロセスに応じて、これは、コンピューティングシステムMPC1とMPC2との間に複数の2つの秘密共有に対する1つのRPCを必要とし得る。このMPCプロセスの終わりに、コンピューティングシステムMPC1は、各デジタルコンポーネントdcに対して、[is_dc_the_winnerdc,1]=[is_dc_a_candidatedc,1]×([accdc,1]==1)として表される、結果is_dc_the_winnerdcの1つの秘密共有を有する。同様に、コンピューティングシステムMPC2は、各デジタルコンポーネントdcに対して、[is_dc_the_winnerdc,2]=[is_dc_a_candidatedc,2]×([accdc,2]==1)として表される、結果is_dc_the_winnerdcのもう1つの秘密共有を有する。すべてのデジタルコンポーネントについて、せいぜい1つのデジタルコンポーネントが1に等しい勝者パラメータis_dc_the_winnerdcを有し、それは、クライアントデバイス110に配信するために選択されるデジタルコンポーネントに対応することに留意されたい。すべての他の勝者パラメータはゼロに等しいことになる。
コンピューティングシステムMPC1およびMPC2は、デジタルコンポーネントに対する勝者パラメータおよびデジタルコンポーネントに対するデジタルコンポーネント情報要素dc_information_elementに基づいて、選択結果を計算し得る。上記で説明したように、デジタルコンポーネントに対するデジタルコンポーネント情報要素dc_information_elementは、たとえば、一連の数字を有するバイトアレイの形態で、デジタルコンポーネントに対する選択値およびデジタルコンポーネントに関する他のデータを含み得る。
コンピューティングシステムMPC1およびMPC2は、以下の関係5を使用して、resultF1である選択結果を計算し得る。
この例では、選択結果resultF1は、ユーザのユーザグループ識別子にマッチするユーザグループ識別子を有するキャッシュされたデジタルコンポーネントが存在しない場合に値ゼロを有することになる、または1に等しい勝者パラメータis_dc_the_winnerdcを有する、選択されたデジタルコンポーネントのデジタルコンポーネント情報要素dc_information_elementに等しい値を有することになる、のいずれかである。
秘密共有の計算を実行するために、コンピューティングシステムMPC1は、キャッシュされたデジタルコンポーネント情報要素のすべてを用い、各デジタルコンポーネントdcについて、クリアテキストであり得る、デジタルコンポーネント情報要素dc_information_elementdcを勝者パラメータ[is_dc_the_winnerdc,1]の第1の秘密共有で乗算する。コンピューティングシステムMPC1は、次いで、これらの積の和を決定し、デジタルコンポーネント要求を提出したクライアントデバイス110にその和を返すことができる。すなわち、コンピューティングシステムMPC1は、結果の第1の共有
として、以下の関係6を使用して和を決定し得る。
コンピューティングシステムMPC2は、同様の計算を実行して、以下の関係7を使用して、結果の第2の共有
を決定し得る。
コンピューティングシステムMPC1は、選択結果の第1の共有
をクライアントデバイス110にに返すことができる。同様に、コンピューティングシステムMPC2は、選択結果の第2の共有
をクライアントデバイス110にに返すことができる。アプリケーション112は、次いで、たとえば、加法的秘密共有アルゴリズムが採用される場合、秘密共有の和を決定することによって、2つの秘密共有
および
を使用して、クリアテキストで選択結果resultF1を再構築し得る。選択結果resultF1がゼロの値を有する場合、MPCクラスタ130は、ユーザをメンバーとして含むいずれのユーザグループに対してもデジタルコンポーネントを識別しなかった。場合によっては、選択結果resultF1はデジタルコンポーネント情報要素dc_information_elementに等しい値を有し、アプリケーション112は、デジタルコンポーネント情報要素dc_information_elementをパースして、デジタルコンポーネントに対する選択値およびメタデータを取得し得る。アプリケーション112は、次いで、デジタルコンポーネントを表示するか、または上記で説明したように、デジタルコンポーネントおよびSSP170から受信された他のデジタルコンポーネントを使用して選択プロセスを実行する、のいずれかが可能である。
2表カッコウフィルタ実装形態では、アプリケーション112は、各ハッシュ関数F1およびF2に対して1つ、2つの選択結果を受信し得る。この例では、アプリケーション112は、これらのデジタルコンポーネントの両方およびSSP170から受信された任意のデジタルコンポーネントの両方を含むデジタルコンポーネントのセットからデジタルコンポーネントを選択し得る。
いくつかの実装形態では、アプリケーション112は、MPCクラスタ130によって選択されたデジタルコンポーネントに対するユーザグループがユーザをメンバーとして含むユーザグループにマッチするという最終検証を実行し得る。たとえば、各デジタルコンポーネントに対するデジタルコンポーネント情報要素dc_information_elementは、デジタルコンポーネントのためのユーザグループ識別子を含み得る。アプリケーション112は、デジタルコンポーネント情報要素dc_information_elementのユーザグループ識別子をそのユーザに対するユーザグループリストと比較し得る。マッチが存在しない場合、アプリケーション112は、選択プロセスからデジタルコンポーネントを除外し得る。マッチが存在する場合、アプリケーション112は、デジタルコンポーネントを選択プロセス内に含めることができる。
上記で説明したように、MPCクラスタ130から2つの選択結果を受信することは、選択値スクラッピングを促し得る。このリスクを低減するために、MPCクラスタ130は、プロセスを実行して、1つの選択結果のみを返すことができる。
1表カッコウフィルタ実装形態では、そのインデックスがF1(ug_id)およびF2(ug_id)である2つの(またはそれ以上の)場所に各ユーザグループ識別子ug_idが出現し得る。Mは1表カッコウフィルタを表し、Miは表内の第iの要素の値を表す。ユーザグループ識別子ug_idを有するデジタルコンポーネントに対する選択値に対する候補パラメータis_dc_a_candidatedcは、
または
のいずれかである場合、真である。このMPCクラスタ130は、以下の関係8または9のいずれかを使用して、選択値に対するユーザグループ識別子ug_idに関連付けられたデジタルコンポーネントdcに対する候補パラメータis_dc_a_candidatedcを計算し得る。
関係8は、並行して実行され得る2つの等価性テストに関連し得る。関係9は、1つの等価性テストおよび1つの乗算に関連し得る。セキュアなMPCプロセスを使用して秘密共有に対してこれらの演算を実行するとき、乗算は、より少ない計算および1つのラウンドリップを必要とするが、等価性テストは、確率的解決において、より多くの計算および4つのラウンドドリップを必要とし得る。したがって、関係8は、関係9よりも少ないラウンドトリップを必要とするが、より多くの計算を必要とし得る。
コンピューティングシステムMPC1は、関係8に基づいて、以下の関係10を使用して、秘密共有に対して選択値に対するユーザグループ識別子ug_idに関連付けられたデジタルコンポーネントdcに対する候補パラメータis_dc_a_candidatedcを計算し得る。
[is_dc_a_candidatedc,1]=(ug_id==[gug_id,1(F1(ug_id))])+(ug_id==[gug_id,1(F2(ug_id))]) (10)
同様に、コンピューティングシステムMPC2は、関係9に基づいて、以下の関係11を使用して、秘密共有に対してユーザグループ識別子ug_idに関連付けられたデジタルコンポーネントdcに対する候補パラメータis_dc_a_candidatedcを計算し得る。
[is_dc_a_candidatedc,2]=(ug_id==[gug_id,2(F1(ug_id))])+(ug_id==[gug_id,2(F2(ug_id))]) (11)
コンピューティングシステムMPC1は、関係9に基づいて、以下の関係12を使用して、秘密共有に対してユーザグループ識別子ug_idに関連付けられたデジタルコンポーネントdcに対する候補パラメータis_dc_a_candidatedcを計算し得る。
[is_dc_a_candidatedc,1]=(ug_id-[gug_id,1(F1(ug_id))])×(ug_id-[gug_id,1(F2(ug_id))]) (12)
コンピューティングシステムMPC2は、関係10に基づいて、以下の関係13を使用して、秘密共有に対してユーザグループ識別子ug_idに関連付けられたデジタルコンポーネントdcに対する候補パラメータis_dc_a_candidatedcを計算し得る。
[is_dc_a_candidatedc,2]=(ug_id-[gug_id,2(F1(ug_id))])×(ug_id-[gug_id,2(F2(ug_id))]) (13)
MPCクラスタ130は、次いで、図3のプロセス300と同様のプロセスを使用して、選択結果resultの秘密共有を計算し得る。具体的には、コンピューティングシステムMPC1およびMPC2は、各デジタルコンポーネントdcについて、デジタルコンポーネントに対する選択値の順序およびデジタルコンポーネントに対する候補パラメータに基づいて、累積値accの秘密共有[accdc,1]および[accdc,2]をそれぞれ計算し得る。
コンピューティングシステムMPC1およびMPC2は、各デジタルコンポーネントdcについて、デジタルコンポーネントdcに対する候補パラメータおよびデジタルコンポーネントdcに対する累積値が1に等しいかどうかに基づいて、勝者パラメータis_dc_the_winnerの秘密共有[is_dc_the_winnerdc,1]および[is_dc_the_winnerdc,2]をそれぞれ計算し得る。
コンピューティングシステムMPC1およびMPC2は、以下の関係14および15を使用して、選択結果resultの秘密共有[result1]および[result2]を計算し得る。
[result1]=Σdc([is_dc_the_winnerdc,1]×dc_information_elementdc) (14)
[result2]=Σdc([is_dc_the_winnerdc,2]×dc_information_elementdc) (15)
コンピューティングシステムMPC1は、選択結果の第1の共有[result1]をアプリケーション112に返すことができ、コンピューティングシステムMPC2は、選択結果の第2の共有[result2]をアプリケーション112に返すことができる。アプリケーション112は、次いで、上記で説明したように、2つの秘密共有を使用して、選択結果resultを再構築し得る。
いくつかの実装形態では、分布点関数を使用するのではなく、カッコウフィルタ自体がMPCクラスタ130に送信され得る。この例では、アプリケーション112は、ユーザグループ識別子またはブロックされた識別子のセットからの識別子のいずれかおよびアプリケーション112によって生成された2つのランダム変数のいずれかによってパラメータ化された疑似ランダム関数(PRF)を使用し得る。たとえば、アプリケーション112によって生成された3つのランダム変数が、rand_var1a、rand_var1b、およびrand_var2であると仮定する。バケット内の各アイテムがkビット整数であるとやはり仮定する。いくつかの実装形態では、アプリケーション112およびMPCクラスタ130は、PRFに関して事前に合意し、ここで、kは、カッコウフィルタのバケット内の各アイテム内のビットの数である。カッコウフィルタのバケット内の各アイテムは、ユーザグループ識別子またはブロックされた識別子によって占有されてよいか、または空であってもよい。たとえば、アプリケーション112は、そのアイテムがPRF(ug_id, rand_var1a)、PRF(blocked_id, rand_var1b)、または0であるカッコウフィルタ表を生成することができ、ここで、ug_idは、コンテンツ提供者のドメインに基づいてユーザグループの標示(たとえば、ユーザグループ識別子)にHMACを適用することによって生成されるユーザグループの識別子であり、0は空のアイテムを表す。このプロセスは、すべてのユーザグループ識別子およびブロックされた識別子に対して繰り返される。
アプリケーション112は、ユーザグループ識別子およびブロックされた識別子に対して生成されたカッコウフィルタ表に基づいて、ベクトルBを生成し得る。ベクトルB内の各値Biは、Bi=(Ai-PRF(rand_var2,i))mod pとして表すことができ、ここで、Aは、カッコウフィルタ表であり、iは、ベクトルBおよびカッコウフィルタ表Aのインデックスである。アプリケーション112がデジタルコンポーネントスロットのためのデジタルコンポーネントに対する要求を開始するとき、アプリケーションは、要求のパラメータとしてrand_var1a、rand_var1b、およびrand_var2をコンピューティングシステムMPC1に送信する。アプリケーション112はまた、要求のパラメータとしてベクトルB、rand_var1a、およびrand_var1bをコンピューティングシステムMPC2に送信する。PRF(rand_var2,i)およびBiは、コンピューティングシステムMPC1およびMPC2によってそれぞれ保持された、Zp内のAiの2つの加法的秘密共有である。コンピューティングシステムMPC1およびMPC2のいずれも両方の秘密共有に対するアクセスを有さないため、これらのコンピューティングシステムはいずれも、ユーザプライバシーを保存して、カッコウフィルタ表を再作成し得ない。
コンピューティングシステムMPC1は、各候補選択値が要求内で指定されたユーザグループに関連付けられるかどうかを決定する。コンピューティングシステムMPC1は、[M1]によって示される、カッコウフィルタ表Mに対する秘密共有のアレイの均等物を受信する。M内に存在する各ユーザグループ識別子は、N個の考えられるロケーションのうちの1つの中にあることになる。
コンピューティングシステムMPC1は、以下の関係16に従って、ユーザグループベースの候補パラメータ[is_dc_a_candidatex,1]を計算する。
式中、Πは、複数のアイテムの乗算を示す。ここで、ug_id(x)は、選択値xに関連するユーザグループ識別子ug_idを検索するために使用される関数であり、{F1,…FN}は、カッコウフィルタ表A内のアイテムの考えられるインデックスを計算するためのハッシュ関数のセットであり、rand_val1aは、デジタルコンポーネント要求内で受信されるランダム値である。[Mx,1]は、アレイ[M1]内の第xの要素である。==は、クリアテキスト整数と秘密整数の秘密共有との間の等価性テストである。==の結果は、0(等価ではない)または1(等価である)のいずれかである秘密整数の秘密共有である。ここで、[Mx,1]の値=[PRF(rand_val2a,i)1]である。
同様に、コンピューティングシステムMPC2は、以下の関係17に従って、ユーザグループベースの候補パラメータ[is_dc_a_candidatex,2]を計算する。
ここで、[Mi,2]の値=Biである。
上記の説明は、コンピュータ論理ANDに対してその値が0または1のいずれかである秘密整数の秘密共有の間の乗算に関する。上記の説明はまた、その値が、コンピュータ論理NOTに対して0または1のいずれかである秘密整数の秘密共有を1から差し引くことに関する。いくつかの実装形態では、秘密共有を用いた論理式を評価するために、代替策が採用されてよい。たとえば、その値が0または1のいずれかである秘密整数の加法的ないくつかの秘密共有の論理ANDを計算するために、MPCサーバは、それらの加法的秘密共有の和を秘密共有の数と比較することができる。さらに別の例の場合、秘密共有を入力として用いて任意の論理式を計算するために、MPCサーバは、真理表(truth table)手法を採用し得る、すなわち、コンピューティングシステムMPC1は、MPC2によって保持される入力秘密共有の各考えられる結合に対して1つの行を含む真理表を構築し得る。コンピューティングシステムMPC1は、[result1]として示される、結果に対する秘密共有を随意に選定する。各行について、コンピューティングシステムMPC1は、その入力秘密共有とMPC2によって保持される投機的入力秘密共有を結合させて、クリアテキストで論理式に対する入力を再構築し、次いで、論理式の結果を評価することができる。各行について、コンピューティングシステムMPC1はその結果を、その1つが[result1]であり、もう1つが[result2]である、2つの秘密共有に分割する。コンピューティングシステムMPC1は、次いで、[result2]を真理表内の行に書き込む。コンピューティングシステムMPC1が真理表の構築を完了した後、コンピューティングシステムMPC2は、紛失通信拡張(OTe:Oblivious Transfer extension)を開始して、MPC2によって保持される入力秘密共有に対応する真理表内の行をフェッチし得る。フェッチ結果は[result2]である。上記のプロセスの最後に、コンピューティングシステムMPC1およびMPC2は、論理式結果の秘密共有である[result1]および[result2]をそれぞれ保持する。コンピューティングシステムMPC1は、[result2]の値の知識を有さず、コンピューティングシステムMPC2は、[result1]の値の知識を有さない。いくつかの実装形態では、コンピューティングシステムMPC1およびMPC2は、論理式を評価して、ガーブルドサーキット(garbled circuit)を構築することによって、is_dc_a_candidatesv,1およびis_dc_a_candidatesv,2を決定し得る。
図5は、クライアントデバイスに配信するためのデジタルコンポーネントを選択するための例示的なプロセス500を示す流れ図である。プロセス500の動作は、たとえば、MPCクラスタ130のコンピューティングシステムMPC1またはコンピューティングシステムMPC2によって実装され得る。プロセス500の動作は、非一時的であり得る1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス500の動作を実行させ得る。簡潔のために、プロセス500は、コンピューティングシステムMPC1によって実行されるとして説明される。
コンピューティングシステムMPC1は、デジタルコンポーネント要求をクライアントデバイス110から受信する(502)。デジタルコンポーネント要求は、クライアントデバイス110のユーザをメンバーとして含む1つまたは複数の第1のユーザグループを識別するデータの秘密共有を含み得る。たとえば、デジタルコンポーネント要求は、1つまたは複数のカッコウフィルタもしくは他の好適な確率的データ構造、および/または分布点関数を含み得る。各分布点関数は、クライアントデバイスのユーザがそれぞれの第1のユーザグループ識別子によって識別されるそれぞれの第1のユーザグループのメンバーであるかどうかを示す点関数の秘密共有を表し得る。たとえば、コンピューティングシステムMPC1によって受信されるデジタルコンポーネント要求は、クライアントデバイス110のユーザをメンバーとして含む各ユーザグループに対する分布点関数gug_id,1を含み得る。デジタルコンポーネント要求はまた、上記で説明したように、コンテキスト信号、ファーストパーティクッキー、および/またはコホート識別子を含み得る。
デジタルコンポーネント要求はまた、ルックアップキーを含み得る。たとえば、デジタルコンポーネント要求は、コンテキスト信号のセット、たとえば、デジタルコンポーネント要求のコンテキスト信号のセットに基づく複合メッセージであり得る、UG_Request_Keyを含み得る。同様のデジタルコンポーネント要求が、1つまたは複数の追加のMPCシステム、たとえば、コンピューティングシステムMPC2に送信され得、1つまたは複数の追加のMPCシステムは、デジタルコンポーネント要求に応答して、クライアントデバイス110に提供するためのデジタルコンポーネントを選択するために、セキュアなMPCプロセスにおいてコンピューティングシステムMPC1と共同することになる。各他のデジタルコンポーネント要求は、デジタルコンポーネント要求の各分布点関数に対して、同じ点関数を使用して同じユーザグループ識別子に対して生成された対応する分布点関数を含み得る。たとえば、コンピューティングシステムMPC2は、コンピューティングシステムMPC1によって受信された各分布点関数gug_id,1に対して、対応する分布点関数gug_id,2を受信することになる。
コンピューティングシステムMPC1は、コンテキストデジタルコンポーネント要求をコンテンツプラットフォームに送信する(504)。たとえば、コンピューティングシステムMPC1は、コンテキストデジタルコンポーネント要求をSSP170に送信することができる。コンテキストデジタルコンポーネント要求は、受信されたデジタルコンポーネント要求のコンテキスト信号、ファーストパーティクッキー、およびコホート識別子を含み得る。
コンピューティングシステムMPC1は、複数のデジタルコンポーネントの各々に関する選択データを受信する(506)。デジタルコンポーネントに関する選択データは、コンテキスト信号のセットに少なくとも部分的に基づいて選択された値のコンテキストベースのベクトルVcontextを定義する第1のベクトルデータを含み得る。たとえば、デジタルコンポーネントに関する選択データは、コンテキストベースのベクトル、またはコンテキストベースのベクトルの値の第1の秘密共有のアレイを含み得る。
コンピューティングシステムMPC1は、複数のデジタルコンポーネントの各々について、デジタルコンポーネントに対応するそれぞれのユーザグループに少なくとも部分的に基づいて選択された値のユーザグループベースのベクトルVugを定義する第2のベクトルデータを取得する(508)。たとえば、コンピューティングシステムMPC1は、ユーザグループベースのベクトルVugの第1の秘密共有のユーザグループベースのベクトルVugを記憶することができる。
コンピューティングシステムMPC1は、第1のベクトルデータおよび第2のベクトルデータに基づいて、各デジタルコンポーネントに対する選択値を決定する(510)。たとえば、コンピューティングシステムMPC1は、2つのベクトルVugおよびVcontextのドット積を決定することができる。これらのベクトルが送信され、秘密共有内に記憶される場合、コンピューティングシステムMPC1は、コンピューティングシステムMPC2と共同して、ベクトルVugおよびVcontextのドット積の秘密共有を決定することができる。いくつかの実装形態では、コンピューティングシステムMPC1は、上記で説明したように、ベクトルVug、Vcontext、およびユーザのユーザプロファイルに対するユーザプロファイルベクトルを使用して、デジタルコンポーネントに対する選択値を決定する。
コンピューティングシステムMPC1は、複数のMPCシステムの1つまたは複数の第2のコンピューティングシステムと共同して、セキュアなMPCプロセスを使用して、各デジタルコンポーネントについて、候補パラメータを決定する(512)。候補パラメータis_dc_a_candidateは、デジタルコンポーネントがデジタルコンポーネント選択プロセスにおける適格性に対する1つまたは複数の条件を満たすかどうかを示し得る。これらの条件は、たとえば、デジタルコンポーネントに関連するユーザグループが、デジタルコンポーネントが提供されることになるユーザのユーザグループにマッチするかどうか、デジタルコンポーネントが、ある時間期間中に指定された回数より多く同じユーザに同じデジタルコンポーネントが公開されることを防ぐ頻度制御条件を満たすかどうか、デジタルコンポーネントが、ミュートを選択したユーザにデジタルコンポーネントが表示されることを防ぐミュート条件を満たすかどうか、デジタルコンポーネントがk匿名性条件を満たすかどうか、および/またはデジタルコンポーネントを含むキャンペーンが、キャンペーン内のデジタルコンポーネントの配信をペーシングするペーシング適格性条件を満たすかどうかを含み得る。
たとえば、候補パラメータis_dc_a_candidateは、デジタルコンポーネントに対応する第2のユーザグループ識別子が1つまたは複数の第1のユーザグループ識別子のうちの少なくとも1つにマッチするかどうかを示し得る。すなわち、この例では、デジタルコンポーネントに対する候補パラメータis_dc_a_candidateは、デジタルコンポーネントに対するユーザグループ識別子が、クライアントデバイス110のユーザをメンバーとして含むユーザグループのためのユーザグループ識別子にマッチするかどうかを示す。そうである場合、デジタルコンポーネントは、選択されるための候補である候補デジタルコンポーネントである。上記で説明したように、コンピューティングシステムMPC1は、コンピューティングシステムMPC2を含む、1つまたは複数の追加のMPCシステムと共同して、セキュアなMPCプロセスを使用して、各選択値に対する候補パラメータis_dc_a_candidateの第1の秘密共有を取得することができる。
デジタルコンポーネントに対する候補パラメータのこの決定は、たとえば、ユーザグループ要求キーUG_Request_Keyを使用して、コンテキストに基づいてデジタルコンポーネントをフィルタリングした後、実行され得る。たとえば、MPCクラスタ130は、2つの連続した段階のフィルタリング演算を実行することができ、一方は要求キーに基づくものであり、もう一方は、候補パラメータis_dc_a_candidateを使用して、1つまたは複数の条件に基づくものである。
コンピューティングシステムMPC1は、選択結果の第1の秘密共有を生成する(514)。コンピューティングシステムMPC1は、コンピューティングシステムMPC2を含む、1つまたは複数の追加のMPCシステムと共同して、選択結果を生成することができる。概して、選択結果は、最高選択値を有する候補デジタルコンポーネントを識別する。上記で説明したように、MPCシステムは、選択値をソートし、各選択値に対する累積値を決定し、選択値に関連付けられた各デジタルコンポーネントに対する勝者パラメータis_dc_the_winnerの秘密共有を決定することができる。MPCシステムは、次いで、選択結果の秘密共有として、各選択値に対して、選択値に対する勝者パラメータの積と選択値に対するデジタルコンポーネント情報要素の和の秘密共有を決定するために共同することができる。たとえば、MPCシステムは、上記に示した関係5を使用して、積和の秘密共有を決定することができる。
コンピューティングシステムMPC1は、所与のデジタルコンポーネントを識別する選択結果の第1の秘密共有をクライアントデバイス110に提供する(516)。上記で説明したように、選択結果は、選択されたデジタルコンポーネント、およびデジタルコンポーネントに対する選択値を識別する。クライアントデバイス110はまた、1つまたは複数の追加のMPCシステムの各々から選択結果のそれぞれの秘密共有を受信することもできる。クライアントデバイス110は、上記で説明したように、秘密共有を使用して、選択結果を再構築し得る。
場合によっては、コンテキストベクトルVcontextは、DSPに関する機密情報と見なされ得る。そのような場合、DSPは、たとえば、秘密共有において、コンテキストベクトルVcontextの暗号化バージョンを提供することができる。たとえば、DSP150は、コンテキストベクトルVcontextの第1の秘密共有をコンピューティングシステムMPC1に提供し、コンテキストベクトルVcontextの第2の秘密共有をMPC2に提供することができる。この例では、コンピューティングシステムMPC1およびMPC2は、これらのコンピューティングシステムがクリアテキストでベクトルまたは選択値にアクセスすることができないように、セキュアなMPCプロセスを使用して、最高選択値を有する、したがって、選択されたデジタルコンポーネントであるデジタルコンポーネントを決定することができる。これは、上記で説明した累積値に基づくソートの代わりに使用され得る。
コンピューティングシステムMPC1およびMPC2は、次いで、セキュアなMPCプロセスを実行して、ベクトル(たとえば、ユーザグループベクトル、コンテキストベクトル、およびユーザベクトル)のドット積を計算することができる。この計算の結果は、秘密共有の2つのアレイ[V1]={[v1,1],...[vN,1]}および[V2]={[v1,2],...[vN,2]}である。これらの表現では、Nはアレイの次元であり、第2のサブスクリプトは、要素の秘密共有、たとえば、第1=1、第2=2を表す。
アレイ内の各要素は、デジタルコンポーネントに対する選択値に対応し得る。たとえば、[v1,1]および[v1,2]は、デジタルコンポーネントに対する選択値に対する要素の2つの秘密共有であり得る。いくつかの実装形態では、アレイ内の各要素は、デジタルコンポーネントに対する複合メッセージ(たとえば、バイトアレイ)を含む。バイトアレイは、上記で説明したように、ドット積計算から生じる選択値、およびデジタルコンポーネントに関する情報を含み得る。
コンピューティングシステムMPC1とMPC2の両方が、要素アレイに対応するクリアテキストアイテムの同じリスト{Item1,....ItemN}に対するアクセスを有すると仮定する。関数reconstructが、秘密共有[vi,1]および[vi,2]によって表されたアレイ内のアイテムの値viを再構築するために使用され得る。すなわち、vi=reconstruct([vi,1],[vi,2])である。
コンピューティングシステムMPC1およびMPC2は、コンピューティングシステムMPC1またはMPC2のいずれにもクリアテキストでいかなる情報も漏洩せずに、最大値と、最大値を有するアレイ内の対応するアイテムとを返すことができる。そうするために、reconstruct([max_v1],[max_v2])=reconstruct([vmax_i,1],[vmax_i,2])およびreconstruct([max_element1],[max_element2])=Itemmax_iであるように、コンピューティングシステムMPC1は、秘密共有のペア{[max_v1],[max_element1]}を返すべきであり、コンピューティングシステムMPC2は、秘密共有のペア{[max_v2],[max_element2]}を返すべきである。この例では、最大値は、最高選択値に対応し、最大要素は、最大値を有するデジタルコンポーネントに対応する。最大要素は、デジタルコンポーネントに関する複合メッセージ、たとえば、バイトアレイを含み得る。
最大値、および秘密共有内の最大値を有する要素を決定するための1つの方法は、秘密共有の任意のペアの間のペアワイズ秘密共有比較である。たとえば、任意の1≦i<j≦Nについて、コンピューティングシステムMPC1およびMPC2は、共同して秘密共有比較を実行することができる。コンピューティングシステムMPC1は、[mi,j,1]=[vi,1]>[vj,1]を取得し、コンピューティングシステムMPC2は、[mi,j,2]=[vi,2]>[vj,2]を取得する。比較パラメータmi,j=reconstruct([mi,j,1],[mi,j,2])は、vi>vjの場合に1であり、そうでなければゼロである。パラメータmi,jの秘密共有[mi,j,1]および[mi,j,2]は、ZMにおける加法的秘密共有であり得、ここで、M≧Nである。
最大要素を発見するために、コンピューティングシステムMPC1は、各i∈[1,N]について、いくつの他の値がviよりも大きいかをローカルでカウントし、すなわち、
である。同様に、コンピューティングシステムMPC2は、各i∈[1,N]について、いくつの他の値がviよりも大きいかをローカルでカウントし、すなわち、
である。コンピューティングシステムMPC1およびMPC2は、次いで、共同して、各i∈[1,N]について、countiがゼロに等しいかどうかをテストし、すなわち、コンピューティングシステムMPC1は、[is_max_elementi,1]=([counti,1]==0)を有し、コンピューティングシステムMPC2は、[is_max_elementi,2]=([counti,2]==0)を有する。[is_max_elementi,1]および[is_max_elementi,2]は、Z2における加法的秘密共有であり得ることに留意されたい。
コンピューティングシステムMPC1は、[max_v1]=Σi[vi,1]×[is_max_elementi,1]によって、[max_v1]を計算することができる。コンピューティングシステムMPC1はまた、[max_element1]=Σi([elementi,1]×[is_max_elementi,1])によって、[max_element1]を計算することもできる。
同様に、コンピューティングシステムMPC2は、[max_v2]=Σi[vi,2]×[is_max_elementi,2]によって、[max_v2]を計算することができる。コンピューティングシステムMPC2はまた、[max_element2]=Σi([elementi,2]×[is_max_elementi,2])によって、[max_element2]を計算することもできる。
これらの比較演算の効率を高めるために、MPCクラスタ130は、分割統治アルゴリズムを使用することができる。そうするために、MPCクラスタ130は、アレイの要素をグループに、たとえば、
個のグループに分割することができ、ここで、各グループは、
個の要素を含む。分割統治を使用しない場合、この解法は、コンピューティングシステムMPC1とMPC2との間で6つのラウンドの計算を必要とし得る。比較テストフェーズは、秘密共有の
個のペアの比較を必要とし得る。等価性テストフェーズは、N個の等価性テストを必要とし得る。
分割統治を
個のグループとともに使用して、より簡単な各問題は、3つのラウンドの比較テスト、および3つのラウンドの等価性テスト、合計6つのラウンドによって解決され得る。より簡単な各問題の結果は、3つのラウンドの比較テスト、および3つのラウンドの等価性テスト、合計6つのラウンドによって解決され得る、サイズ
の別のより簡単な問題に結合され得る。
上記で説明したように、デジタルコンポーネントに対する選択値は、3つのベクトル、デジタルコンポーネントに対するコンテキストベクトルVcontextと、デジタルコンポーネントに対するユーザグループベースのベクトルVugと、ユーザのユーザプロファイルを表すユーザベクトルVuserとに基づいて決定され得る。コホート識別子は、デジタルコンポーネント配信業界全体のためにアプリケーション開発者(たとえば、ブラウザ開発者)によって選ばれたアルゴリズムを用いて、アプリケーション112によって計算され得る。コホート識別子アルゴリズムは、個々のコンテンツプラットフォームまたはデジタルコンポーネント提供者によってカスタマイズ可能ではない。この例では、MPCクラスタ130は、選択値=Cap(Vug・Vcontext・Vuser,maxsv,minsv)として、3つのベクトルを使用して、デジタルコンポーネントに対する選択値を計算することができ、式中、生じた選択値が最大値と最小値との間であるように、maxsvは最大選択値であり、minsvは最小選択値である。3つのベクトルの間のドット積は、Σi(Vug,i×Vcontext,i×Vuser,i)として計算され得、式中、iはベクトルのインデックスである。
いくつかの状況では、共有後の発行者量は、たとえば、量が、ユーザベクトルVuserを使用して、上記で説明したようにクロスドメインユーザプロファイルから導出される場合、プライバシーセンシティブと見なされる。そのような場合、MPCクラスタ130の各サーバがクリアテキストで発行者量にアクセスすることを防ぐことが望ましくなり得る。クリアテキストにおける量がない場合、MPCクラスタ130は、上記で説明したように、選択値を順序付けることができない場合がある。この例では、デジタルコンポーネントが候補であるかどうかを決定するために、コンピューティングシステムMPC1は、[M1]によって示されるカッコウフィルタ表Mに対する秘密共有のアレイの均等物を受信することができる。各ユーザグループ識別子ug_idは、M内に存在する場合、N個の考えられるロケーションのうちの1つの中にあることになる。
ug_id(dc)を、それに関して情報がMPCクラスタ130によって記憶されるデジタルコンポーネントdcに対応するユーザグループ識別子ug_idを検索するための関数として定義する。また、{F1,...FN}を、カッコウフィルタ表A内のアイテムの考えられるインデックスを計算するための関数として定義する。
コンピューティングシステムMPC1は、[match_ugdc,1,i]を
として計算し、式中、i∈[1,N]である。同様に、コンピューティングシステムMPC2は、[match_ugdc,2,i]を
として計算し、式中、i∈[1,N]である。[Mi,2]=PRF(noncesecret_share,i)であり、式中、noncesecret_shareは、コンピューティングシステムMPC2のパブリックキーによって暗号化された、クライアントデバイス110から受信されたデジタルコンポーネント要求内のパラメータであることに留意されたい。秘密共有[match_ugdc,1,i]および[match_ugdc,2,i]は、ゼロまたは1のいずれかであり、ここで、match_ugdc,i=[match_ugdc,1,i]bitwise_xor[match_ugdc,2,i]は、デジタルコンポーネントdcに対するユーザグループ識別子がカッコウフィルタ内のi番目の考えられるロケーションにマッチする場合に1であり、またはそうでなければゼロである。また、match_ugdc=match_ugdc,1またはmatch_ugdc,2...またはmatch_ugdc,Nは、デジタルコンポーネントdcが、ユーザをメンバーとして含むユーザグループのユーザ関心グループ識別子に対応する場合のみ、(カッコウフィルタ内のタグの長さに応じて、高い確率で)真である。
上記で説明した技法はまた、リーセンシーおよび他のユーザグループごとのレベルの信号をサポートするように変更され得る。関心グループリーセンシー、すなわち、どのくらい最近にユーザがユーザグループに追加されたかは、選択値を決めるために重要な信号であり得る。たとえば、デジタルコンポーネントを配信するためにユーザグループメンバーシップを使用する値は、ユーザが8時間よりも前にリマーケティングリストに追加された場合、半分だけ低下し得る。セキュリティおよびプライバシー保証を弱めずに、リーセンシーに基づいて正確な選択値を可能にするために、上記で説明した暗号技法は、各コンテンツプラットフォームがリーセンシーを少数のバケット、たとえば、4つの時間期間ベースのバケットにバケット化するように変更され得る。各バケットについて、コンテンツプラットフォームは、上記で説明したドット積計算のためのベクトルを定義することができる。
MPCクラスタ130へのデジタルコンポーネント要求を生成するとき、アプリケーション112は、ユーザをメンバーとして含む各ユーザグループについて、リーセンシーバケット情報をユーザグループ識別子と結合して、拡張ユーザグループ識別子、たとえば、HMAC(ug_id,recency_bucket_id)を作成することができ、ここで、recency_bucket_idは、いつユーザがユーザグループug_idに追加されたかに対応するリーセンシーバケットのための識別子である。たとえば、ユーザが2時間前にユーザグループに追加された場合、拡張ユーザグループ識別子は、現在時間の前の1~3時間の時間期間のためのリーセンシーバケットのための識別子に基づき得る。アプリケーションは、次いで、拡張ユーザグループ識別子を、元のユーザグループ識別子の代わりにカッコウフィルタに挿入する。アプリケーション112は、次いで、カッコウフィルタを、MPCクラスタ130内の2つのサーバの各々に対する2つの秘密共有に分割する。
コンテキスト応答を受信すると、各キャッシュされたデジタルコンポーネントおよび各有効リーセンシーバケット識別子について、MPCクラスタ130は、上記で説明したドット積技法を用いて、クリアテキストで発行者量を計算する。MPCクラスタ130は、次いで、デジタルコンポーネントおよび計算された発行者量をリストに挿入する。MPCクラスタ130は、コンテキスト応答とともに受信された任意の選択値を、同様に同じリストに挿入し、発行者量に基づいて、最高から最低へとリストをソートする。リストサイズは、リーセンシーバケットの平均濃度に比例する。たとえば、1,000個のキャッシュされたデジタルコンポーネントがあり、平均して各キャッシュされたデジタルコンポーネントが4つのリーセンシーバケットを有する場合、これは、サイズ4,000の発行者量リストを作成することになる。
MPCクラスタ130は、対応する拡張ユーザグループ識別子を計算し、次いで、秘密共有等価性テストアルゴリズムに依拠して、拡張ユーザグループ識別子がカッコウフィルタ内にあるかどうかをチェックして、キャッシュされたデジタルコンポーネントおよび対応する選択値(たとえば、発行者量)が選択プロセスのために適格であるかどうかを決定する。
同様に、同じ方法は、他の低エントロピーのユーザグループごとのユーザレベル信号をサポートすることができる。たとえば、ユーザグループが、ショッピングカート内に残された電子機器を有するユーザに関するものである場合、ユーザレベル信号は、電子機器のバケット化された値、たとえば、少量/中量/多量であり得る。
図6は、上記で説明した動作を実行するために使用され得る例示的なコンピュータシステム600のブロック図である。システム600は、プロセッサ610、メモリ620、記憶デバイス630、および入出力デバイス640を含む。構成要素610、5620、630、および640の各々は、たとえば、システムバス650を使って、相互接続され得る。プロセッサ610は、システム600内での実行のために命令を処理することが可能である。いくつかの実装形態では、プロセッサ610は、シングルスレッドプロセッサである。別の実装形態では、プロセッサ610はマルチスレッドプロセッサである。プロセッサ610は、メモリ620内または記憶デバイス630上に記憶された命令を処理することが可能である。
メモリ620は、システム600内に情報を記憶する。一実装形態では、メモリ620は、コンピュータ可読媒体である。いくつかの実装形態では、メモリ620は、揮発性メモリユニットである。別の実装形態では、メモリ620は不揮発性メモリユニットである。
記憶デバイス630は、システム600に大容量記憶を提供することが可能である。いくつかの実装形態では、記憶デバイス630は、コンピュータ可読媒体である。様々な異なる実装形態では、記憶デバイス630は、たとえば、ハードディスクデバイス、光ディスクデバイス、複数のコンピューティングデバイスによってネットワーク上で共有される記憶デバイス(たとえば、クラウド記憶デバイス)、または他の何らかの大容量記憶デバイスを含むことができる。
入出力デバイス640は、システム600のための入出力動作を提供する。いくつかの実装形態では、入出力デバイス640は、ネットワークインターフェースデバイス、たとえば、Ethernetカード、シリアル通信デバイス、たとえば、RS-232ポート、および/またはワイヤレスインターフェースデバイス、たとえば、802.11カードのうちの1つまたは複数を含み得る。別の実装形態では、入出力デバイスは、入力データを受信し、出力データを外部デバイス660、たとえば、キーボード、プリンタ、およびディスプレイデバイスに送信するように構成されたドライバデバイスを含み得る。しかしながら、モバイルコンピューティングデバイス、モバイル通信デバイス、セットトップボックステレビクライアントデバイスなど、他の実装形態が使われてもよい。
例示的な処理システムが図6で説明されているが、本明細書内で説明する主題の実装形態および機能的動作は、他のタイプのデジタル電子回路において、または本明細書で開示する構造およびその構造的均等物を含むコンピュータソフトウェア、ファームウェア、もしくはハードウェアにおいて、またはそれらのうちの1つもしくは複数の組合せにおいて実装され得る。
主題の実施形態および本明細書で説明する動作は、デジタル電子回路で、または本明細書で開示する構造およびその構造的均等物を含むコンピュータソフトウェア、ファームウェア、もしくはハードウェアで、またはそれらのうちの1つもしくは複数の組合せで実装され得る。本明細書で説明する主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のために、またはデータ処理装置の動作を制御するために、(1つまたは複数の)コンピュータ記憶媒体上で符号化された、コンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。代替または追加として、プログラム命令は、データ処理装置による実行のために、適切な受信機装置への送信のために情報を符号化するために生成された、人工的に生成された伝搬信号、たとえば、機械で生成された電気信号、光信号、または電磁信号上で符号化され得る。コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの1つもしくは複数の組合せであり得るか、またはそれらに含まれ得る。さらに、コンピュータ記憶媒体は伝搬信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝搬信号において符号化されたコンピュータプログラム命令のソースまたは宛先であり得る。コンピュータ記憶媒体はまた、1つまたは複数の別個の物理構成要素または媒体(たとえば、複数のCD、ディスク、または他の記憶デバイス)であり得るか、またはそれらに含まれ得る。
本明細書で説明する動作は、1つまたは複数のコンピュータ可読記憶デバイス上に記憶されたまたは他のソースから受信されたデータに対してデータ処理装置によって実行される動作として実装され得る。
「データ処理装置」という用語は、例として、プログラム可能プロセッサ、コンピュータ、システムオンチップ、または上記の複数のもの、もしくは組合せを含む、データを処理するための、あらゆる種類の装置、デバイス、および機械を包含する。装置は、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含むことができる。装置は、ハードウェアに加えて、当該のコンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、またはそれらのうちの1つまたは複数の組合せを構成するコードも含むことができる。装置および実行環境は、ウェブサービス、分散コンピューティングインフラストラクチャおよびグリッドコンピューティングインフラストラクチャなどの様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られている)は、コンパイル型言語またはインタプリタ型言語、宣言型言語または手続き型言語を含む任意の形態のプログラミング言語で書かれてもよく、スタンドアロンプログラムとして、またはモジュール、構成要素、サブルーチン、オブジェクト、もしくはコンピューティング環境において使用するのに適した他のユニットとしてを含む任意の形態で展開されてもよい。コンピュータプログラムは、ファイルシステムにおけるファイルに対応し得るが、そうである必要はない。プログラムは、他のプログラムもしくはデータ(たとえば、マークアップ言語文書に記憶された1つもしくは複数のスクリプト)を保持するファイルの一部に、当該のプログラム専用の単一のファイルに、または複数の協調ファイル(たとえば、1つもしくは複数のモジュール、サブプログラム、またはコードの部分を記憶するファイル)に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または、1つのサイトに配置されるかもしくは複数のサイトにわたって分散され、通信ネットワークによって相互接続される複数のコンピュータ上で実行されるように展開され得る。
本明細書で説明したプロセスおよび論理フローは、入力データ上で動作し、出力を生成することによって活動を実行するために、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルプロセッサによって実行され得る。プロセスおよび論理フローが、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によっても実行されてもよく、装置が、それらとしても実装されてもよい。
コンピュータプログラムの実行に好適なプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方を含む。一般に、プロセッサは、命令およびデータを読取り専用メモリ、もしくはランダムアクセスメモリ、またはその両方から受信することになる。コンピュータの必須要素は、命令に従ってアクションを実行するためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータはまた、データを記憶するための1つまたは複数の大容量記憶デバイス、たとえば、磁気ディスク、光磁気ディスク、もしくは光ディスクを含むか、または、それらからデータを受信することもしくはそれらにデータを転送すること、もしくは両方を行うために動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。さらに、コンピュータは、ほんの数例を挙げると、別のデバイス、たとえば、モバイル電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記憶デバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に埋め込まれ得る。コンピュータプログラム命令およびデータを記憶するのに適したデバイスは、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば、内部ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、媒体およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補完され得るか、または専用論理回路に組み込まれ得る。
ユーザとの対話を提供するために、本明細書で説明する主題の実施形態は、ユーザに情報を表示するための、CRT(陰極線管)またはLCD(液晶ディスプレイ)モニタなどのディスプレイデバイス、ならびに、キーボード、および、ユーザがコンピュータに入力を提供することができる、たとえば、マウスまたはトラックボールなどのポインティングデバイスを有するコンピュータ上で実装され得る。他の種類のデバイスも、ユーザとの対話を提供するために使用され得る。たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであってもよく、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形態で受け取られてもよい。加えて、コンピュータは、文書をユーザによって使用されるデバイスに送信し、文書をそのデバイスから受信することによって、たとえば、ユーザのクライアントデバイス上のウェブブラウザから受信された要求に応答してウェブページをそのウェブブラウザに送信することによって、ユーザと対話することができる。
本明細書で説明する主題の実施形態は、バックエンド構成要素を、たとえば、データサーバとして含む、あるいはミドルウェア構成要素、たとえば、アプリケーションサーバを含む、あるいはフロントエンド構成要素、たとえば、それを通じてユーザが本明細書で説明する主題の一実装形態と対話することができるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータ、または1つもしくは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、もしくはフロントエンド構成要素の任意の組合せを含む、コンピューティングシステムにおいて実装され得る。システムの構成要素は、デジタルデータ通信の任意の形態または媒体、たとえば、通信ネットワークによって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントとサーバとは、一般に、互いに離れており、典型的には、通信ネットワークを通して対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行され、互いにクライアントサーバ関係を有するコンピュータプログラムによって生じる。いくつかの実施形態では、サーバは、(たとえば、クライアントデバイスと対話するユーザにデータを表示し、そのユーザからユーザ入力を受信する目的で)データ(たとえば、HTMLページ)をクライアントデバイスに送信する。クライアントデバイスにおいて生成されたデータ(たとえば、ユーザ対話の結果)は、サーバにおいてクライアントデバイスから受信され得る。
本明細書は多くの特定の実装形態の詳細を含んでいるが、これらは発明の範囲または特許請求され得るものの範囲に対する限定として解釈されるべきではなく、むしろ特定の発明の特定の実施形態に特有の特徴の説明として解釈されるべきである。別個の実施形態の文脈において本明細書で説明したいくつかの特徴はまた、単一の実施形態において組み合わせて実装され得る。逆に、単一の実施形態の文脈において説明した様々な特徴はまた、複数の実施形態において別々にまたは任意の好適な部分組合せにおいて実装され得る。さらに、特徴はいくつかの組合せにおいて働くものとして上記で説明され、そのようなものとして最初に特許請求されることさえあり得るが、特許請求される組合せからの1つまたは複数の特徴は、場合によっては、その組合せから削除される場合があり、特許請求される組合せは、部分組合せまたは部分組合せの変形形態を対象とし得る。
同様に、動作は、特定の順序で図面に示されるが、これは、望ましい結果を達成するために、そのような動作が図示された特定の順序でもしくは順番に実行されること、またはすべての例示された動作が実行されることを必要とするものとして理解されるべきではない。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。さらに、上記で説明した実施形態における様々なシステム構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、説明したプログラム構成要素およびシステムは一般に、単一のソフトウェア製品に一緒に組み込まれるか、または複数のソフトウェア製品にパッケージ化されることがあると理解されたい。
以上、本主題の特定の実施形態について記載した。他の実施形態は、以下の特許請求の範囲の範囲内にある。場合によっては、特許請求の範囲に列挙される活動は、異なる順序で行われ、それでも望ましい結果を達成し得る。加えて、添付の図面に示されるプロセスは、所望の結果を達成するために、必ずしも示された特定の順序または順番を必要としない。いくつかの実装形態では、マルチタスキングおよび並列処理が有利であり得る。