様々な図面における同じ参照番号および名称は、同様の要素を示す。
概して、本明細書は、セキュアMPCを使用して、ユーザプライバシーを保持し、選択プロセスに関与する各パーティのデータのセキュリティを保護するように、デジタルコンポーネントを選択するためのシステムおよび技法を説明する。選択プロセスの増強は、デジタルコンポーネント選択プロセスの複数の変更をサポートし、コンテンツパブリッシャおよびコンテンツプラットフォームに、ユーザプライバシーおよびデータセキュリティを維持しながら、デジタルコンポーネントの選択を管理する柔軟性を与える。たとえば、本明細書に記載のMPCクラスタは、階層、選択値ブースト、第1の値の選択プロセス、第2の値の選択プロセス、および/または、これらの変形のうちの1つまたは複数の組合せを含むセキュアデジタルコンポーネント選択プロセスを実施することができる。本明細書に記載の技法は、デジタルコンポーネントを表示するクライアントデバイスに送信される、およびクライアントデバイスから送信されるデータのサイズを最小限に抑えながら、たとえば、要求が受信された後の数ミリ秒以内などの短い時間期間内に依然としてデジタルコンポーネントを提供しながら、そのような柔軟性、プライバシー保持、およびデータセキュリティを可能にする。
MPCクラスタはまた、さらなるデジタルコンポーネント選択プロセスをさらに増強するために使用することができる、完了した選択プロセスに基づいて、たとえばメトリックなどの情報を生成することもできる。この情報は、MPCクラスタのサーバおよび/または他のパーティ間の不正な共謀がなければ、ユーザデータ、ならびに、パブリッシャおよび/もしくはコンテンツプラットフォームのデータにアクセスすることができないように、セキュアMPCを使用して生成することができる。情報は、受け手のみが平文の情報にアクセスすることができるように、たとえば秘密シェアなどの暗号化形態で適切なパーティに報告することができる。ユーザプライバシーを保護するために、いくつかの実施態様では、意図された受け手が、差分プライバシーノイズが加わっている、かつ/または、集約されたい形態の、平文の情報にアクセスすることができる。平文とは、計算的にタグ付けされず、特別の方法でフォーマッティングされず、またはコードで書かれないテキスト、あるいは鍵もしくは他の暗号解読デバイスまたは他の暗号解読プロセスを必要とせずに見られることまたは使用されることが可能な形態のデータであり、バイナリファイルを含む。
本明細書において、MPCクラスタによって秘密シェアに対して実施されるいくつかの計算は、秘密シェア値の積または和であるものとして示される。これらの計算が実施される速度を増大させるために、たとえばビットANDなどのAND演算を使用して秘密シェアにおいて乗算を実施することができ、たとえばビットXOR演算などのXOR演算を使用して秘密シェアにおいて加算を実施することができる。いくつかの事例において、1つの平文整数に、Z2において0または1を表す秘密シェアが乗算されるとき(すなわち、2つのシェアの和のモジュロ2が0または1である)、乗算またはビットANDは必要ない。代わりに、各計算システムが、そのシェアを評価し、そのシェアが1である場合はその整数を返し、そのシェアが0である場合は0を返すことができる。
図1は、MPCクラスタ130がクライアントデバイス110への配信用のデジタルコンポーネントを選択するためにセキュアMPCプロセスを実行する環境100のブロック図である。MPCクラスタ130はまた、完了したデジタルコンポーネント選択プロセスの情報も生成し、この情報を適切なパーティに提供する。
例示的な環境100は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、モバイルネットワーク、またはそれらの組合せなどの、データ通信ネットワーク105を含む。ネットワーク105は、クライアントデバイス110、セキュアMPCクラスタ130、パブリッシャ140、ウェブサイト142、およびコンテンツプラットフォーム、たとえば、供給側プラットフォーム(SSP:supply-side platform)170および需要側プラットフォーム(DSP:demand-side platform)150を接続する。例示的な環境100は、多くの異なるクライアントデバイス110、セキュアMPCクラスタ130、パブリッシャ140、ウェブサイト142、DSP150、およびSSP170を含むことができる。
ウェブサイト142は、1つまたは複数の電子リソース145を含む。リソース145は、ドメイン名に関連付けられ、1つまたは複数のサーバによってホストされ得る。例示的ウェブサイトは、テキスト、画像、マルチメディアコンテンツ、およびスクリプトなどのプログラミング要素を含み得る、ハイパーテキストマークアップ言語(HTML)でフォーマットされたウェブページの集合である。各ウェブサイト142は、ウェブサイト142を制御、管理、および/または所有するエンティティであるコンテンツパブリッシャ140によって維持される。
リソース145は、パブリッシャ140によってネットワーク105を介して提供することができ、リソースアドレスと関連付けることができる任意のデータである。リソースには、ほんのいくつかの例を挙げれば、HTMLページ、ワードプロセッシングドキュメント、およびポータブルドキュメントフォーマット(PDF)ドキュメント、画像、ビデオ、およびフィードソースが含まれる。リソース145は、単語、語句、写真などのようなコンテンツを含むことができ、埋め込まれた情報(たとえばメタデータ情報およびハイパーリンク)および/またはたとえばスクリプトなどの埋め込まれた命令を含んでもよい。
クライアントデバイス110は、ネットワーク105を介して通信することが可能な電子デバイスである。例示的なクライアントデバイス110は、パーソナルコンピュータ、モバイル通信デバイス、たとえば、スマートフォン、およびネットワーク105を介してデータを送ることおよび受信することができる他のデバイスを含む。クライアントデバイス110はまた、マイクロフォンを通じてオーディオ入力を受け入れ、かつスピーカを通じてオーディオ出力を出力する、デジタルアシスタントデバイスを含むことができる。デジタルアシスタントが、オーディオ入力を受け入れるためにマイクロフォンをアクティブ化する「ホットワード」または「ホットフレーズ」を検出すると、デジタルアシスタントは、(たとえば、オーディオ入力を受け入れる準備ができている)聴取モードに入ることができる。デジタルアシスタントデバイスはまた、画像をキャプチャするとともに情報を視覚的に提示するためのカメラおよび/またはディスプレイを含むことができる。デジタルアシスタントは、ウェアラブルデバイス(たとえば、時計または眼鏡)、スマートフォン、スピーカデバイス、タブレットデバイス、または別のハードウェアデバイスを含む、異なる形態のハードウェアデバイスの中に実装され得る。クライアントデバイス110はまた、デジタルメディアデバイス、たとえば、テレビにビデオをストリーミングするためにテレビまたは他のディスプレイにプラグインするストリーミングデバイス、ゲームシステム、または仮想現実システムも含むことができる。
クライアントデバイス110は、通常、ネットワーク105を介してデータを送ることおよび受信することを容易にするために、ウェブブラウザおよび/またはネイティブアプリケーションなどのアプリケーション112を含む。ネイティブアプリケーションは、特定のプラットフォームまたは特定のデバイスのために、たとえば、特定のオペレーティングシステムを有するモバイルデバイスのために開発されたアプリケーションである。パブリッシャ140は、ネイティブアプリケーションを開発することができ、ネイティブアプリケーションをクライアントデバイス110に提供すること、たとえば、ダウンロードのために利用可能にすることができる。ウェブブラウザは、たとえば、クライアントデバイス110のユーザが、ウェブブラウザのアドレスバーの中にリソース145に対するリソースアドレスを入力すること、またはリソースアドレスを参照するリンクを選択することに応答して、パブリッシャ140のウェブサイト142をホストするウェブサーバにリソース145を要求することができる。同様に、ネイティブアプリケーションは、パブリッシャのリモートサーバにアプリケーションコンテンツを要求することができる。
いくつかのリソース、アプリケーションページ、または他のアプリケーションコンテンツは、リソース145またはアプリケーションページとともにデジタルコンポーネントを表示するためのデジタルコンポーネントスロットを含むことができる。本明細書全体にわたって使用される、「デジタルコンポーネント」という語句は、デジタルコンテンツまたはデジタル情報の別個の単位(たとえば、ビデオクリップ、オーディオクリップ、マルチメディアクリップ、画像、テキスト、またはコンテンツの別の単位)を指す。デジタルコンポーネントは、単一のファイルとして、またはファイルの集合体として物理メモリデバイスに電子的に記憶されてもよく、デジタルコンポーネントは、ビデオファイル、オーディオファイル、マルチメディアファイル、画像ファイル、またはテキストファイルの形態をとり、広告情報を含んでもよく、したがって、広告は、デジタルコンポーネントの1つのタイプである。たとえば、デジタルコンポーネントは、アプリケーション112によって表示されるウェブページ、アプリケーションコンテンツ(たとえばアプリケーションページ)、または他のリソースのコンテンツを補足することが意図されるコンテンツであってよい。より詳細には、デジタルコンポーネントは、リソースコンテンツに関連するデジタルコンテンツを含んでもよく、たとえば、デジタルコンポーネントは、ウェブページコンテンツと同じトピック、または関連するトピックに関連してもよい。したがって、デジタルコンポーネントのプロビジョニングは、ウェブページまたはアプリケーションコンテンツを補足し、一般に強化することができる。
アプリケーション112が、1つまたは複数のデジタルコンポーネントスロットを含むリソース(またはアプリケーションコンテンツ)をロードするとき、アプリケーション112は、スロットごとにデジタルコンポーネントを要求することができる。いくつかの実装形態では、デジタルコンポーネントスロットは、アプリケーション112によって処理されると、アプリケーション112にクライアントデバイス110のユーザに表示するためのデジタルコンポーネントを要求させるコード、たとえば、1つまたは複数のスクリプトを含み得る。以下で説明するように、アプリケーション112は、MPCクラスタ130および/または1つもしくは複数のSSP170にデジタルコンポーネントを要求することができる。
一部のパブリッシャ140は、SSP170を使用して、そのリソース145および/またはアプリケーション112のデジタルコンポーネントスロットに対するデジタルコンポーネントを取得するプロセスを管理する。SSP170は、リソースおよび/またはアプリケーションに対するデジタルコンポーネントを取得するプロセスを自動化するハードウェアおよび/またはソフトウェアにおいて実装される技術プラットフォームである。各パブリッシャ140は、対応するSSP170または複数のSSP170を有することができる。いくつかのパブリッシャ140が、同じSSP170を使用してよい。
デジタルコンポーネントプロバイダ160は、パブリッシャのリソース145およびアプリケーション112のデジタルコンポーネントスロットに表示されるデジタルコンポーネントを作成(またはそうでなければパブリッシュ)することができる。たとえば、デジタルコンポーネントプロバイダ160は、デジタルコンポーネントプロバイダ160に関係するコンテンツを含むデジタルコンポーネントを作成することができる。特定の例において、製品製造者のデジタルコンポーネントは、製品に関連するコンテンツを含むことができる。
デジタルコンポーネントプロバイダ160は、DSP150を使用して、デジタルコンポーネントスロット内に表示するために、そのデジタルコンポーネントのプロビジョニングを管理することができる。DSP150は、リソースおよび/またはアプリケーションで表示するためのデジタルコンポーネントを配信するプロセスを自動化するハードウェアおよび/またはソフトウェアにおいて実装される技術プラットフォームである。DSP150は、デジタルコンポーネントプロバイダ160に代わって複数のSSP170と対話して、複数の異なるパブリッシャ140のリソース145および/またはアプリケーション112で表示するためのデジタルコンポーネントを提供することができる。一般に、DSP150は、デジタルコンポーネントの要求を(たとえば、SSP170から)受信し、要求に基づいて1つまたは複数のデジタルコンポーネントプロバイダ160によって作成された1つまたは複数のデジタルコンポーネントに対する選択値を生成(または選択)し、デジタルコンポーネント(たとえば、デジタルコンポーネント自体またはデジタルコンポーネントがダウンロードされることを可能にするコード)および選択パラメータに関連するデータをSSP170に提供することができる。選択値は、デジタルコンポーネントプロバイダ160が、デジタルコンポーネントの表示またはそれとのユーザ対話のために提供する意思がある量を示すことができる。次いで、SSP170は、クライアントデバイス110での表示のためのデジタルコンポーネントを選択し、たとえば、デジタルコンポーネントまたはデジタルコンポーネントのダウンロードを可能にするコードを提供することによって、クライアントデバイス110にデジタルコンポーネントを表示させるデータをクライアントデバイス110に提供することができる。下記により詳細に説明するように、MPCクラスタ130は、クライアントデバイス110がユーザプライバシーを保持するように表示するためのデジタルコンポーネントを選択することができる。
場合によっては、ウェブページ、アプリケーションページ、または、以前にユーザが訪れた、および/もしくはユーザと対話した他の電子リソースに関連する、デジタルコンポーネントをユーザが受信することが有益である。そのようなデジタルコンポーネントをユーザに配信するために、ユーザは、ユーザグループ、たとえば、同じまたは類似するトピックに関心のあるユーザのユーザ関心グループ、類似するユーザのコホート、または類似するユーザデータに関わる他のグループタイプに割り当てられ得る。ユーザが特定のリソースを訪問するとき、またはリソースにおいて特定の行動を実行する(たとえば、ウェブページに表示された特定のアイテムと対話する、またはアイテムを仮想カートに追加する)ときに、ユーザがユーザグループに割り当てられ得る。ユーザグループは、デジタルコンポーネントプロバイダ160によって生成および更新され得る。すなわち、各デジタルコンポーネントプロバイダ160は、ユーザがデジタルコンポーネントプロバイダ160の電子リソースを訪問すると、デジタルコンポーネントプロバイダ160のユーザグループにユーザを割り当てることができる。ユーザグループはまた、コンテンツプラットフォームによって、たとえば、DSP150および/またはSSP170によって、作成および/または更新され得る。
ユーザプライバシーを保護するために、ユーザのグループメンバーシップが、デジタルコンポーネントプロバイダ、コンテンツプラットフォーム、または他の当事者によるのではなく、たとえば、アプリケーション112、クライアントデバイス110のオペレーティングシステム、または別の信頼されるプログラムのうちの1つによって、ユーザのクライアントデバイス110において維持され得る。特定の例では、信頼されるプログラム(たとえば、ウェブブラウザまたはオペレーティングシステム)は、ウェブブラウザまたは別のアプリケーションを使用するユーザに対して(たとえば、ブラウザ、アプリケーション、またはクライアントデバイス110にログインされたユーザに対して)、ユーザグループ識別子のリスト(「ユーザグループリスト」)を維持することができる。ユーザグループリストは、メンバーとしてユーザを含むユーザグループごとにユーザグループ識別子を含むことができる。ユーザグループを作成するデジタルコンポーネントプロバイダ160またはコンテンツプラットフォームは、それらのユーザグループに対するユーザグループ識別子を指定することができる。ユーザグループに対するユーザグループ識別子は、グループを記述するもの(たとえば、ガーデニンググループ)またはグループを表すコード(たとえば、記述的ではない英数字シーケンス)であり得る。ユーザに対するユーザグループリストは、クライアントデバイス110においてセキュアなストレージの中に記憶され得、かつ/または他人がリストにアクセスすることを阻止するために、記憶されるときに暗号化され得る。
アプリケーション112がデジタルコンポーネントプロバイダ160に関するリソース(たとえばウェブページ)、アプリケーションコンテンツ、またはデジタルコンポーネントを表示するとき、リソース、アプリケーションコンテンツ、またはデジタルコンポーネントは、アプリケーション112が1つまたは複数のユーザグループ識別子をユーザグループリストに追加することを要求することができる。それに応答して、アプリケーション112は、ユーザグループリストに1つまたは複数のユーザグループ識別子を追加することができ、ユーザグループリストをセキュアに記憶することができる。たとえば、ユーザが特定のアイテムに関するより多くの情報を閲覧することを選択するウェブページは、ユーザを、その特定のアイテムに関連するユーザグループに追加することができる。
いくつかの実施態様において、MPCクラスタ130は、ユーザの関心を引くことがあるか、または別の様式でユーザ/ユーザデバイスにとって有益であり得る、デジタルコンポーネントを選択するために、ユーザのユーザグループメンバーシップを使用することができる。たとえば、そのようなデジタルコンポーネントまたは他のコンテンツは、ユーザエクスペリエンスを改善するか、ユーザデバイスの実行を改善するか、またはいくつかの他のやり方でユーザもしくはクライアントデバイス110の利益になる、データを含んでよい。しかしながら、MPCクラスタ130の計算システムMPC1およびMPC2がユーザに対するユーザグループ識別子に平文でアクセスすることを阻止するやり方で、ユーザのユーザグループリストのユーザグループ識別子が、デジタルコンポーネントを選択するために提供および使用され得、それによって、デジタルコンポーネントを選択するためにユーザグループメンバーシップデータを使用するときにユーザプライバシーを保存する。MPCクラスタ130はまた、下記により詳細に説明するように、他の条件を使用してデジタルコンポーネントを選択することもできる。
セキュアMPCクラスタ130は、ユーザのグループメンバーシップに基づいて、ただし、グループメンバーシップ情報もしくは他のユーザ情報、またはそのようなユーザ情報から導出される信号に平文でアクセスすることなく、ユーザのクライアントデバイスへの配信用のデジタルコンポーネントを選択するためにセキュアMPCプロセスを実行する、2つの計算システムMPC1およびMPC2を含む。例示的なMPCクラスタ130は2つの計算システムを含むが、MPCクラスタ130が2つ以上の計算システムを含む限り、もっと多くの計算システムも使用され得る。たとえば、MPCクラスタ130は、3つの計算システム、4つの計算システム、または別の適切な個数の計算システムを含むことができる。MPCクラスタ130の中でもっと多くの計算システムを使用することは、より多くのセキュリティをもたらすことができるが、MPCプロセスの複雑度を増大させることもある。各計算システムは、サーバ、または、他の適切なタイプのコンピュータとすることができる。MPC計算システムの例示的なアーキテクチャは、図9に示されている。
計算システムMPC1およびMPC2は、異なるエンティティによって動作させられ得る。このように、各エンティティは、ユーザのグループメンバーシップ、または他のユーザ情報、またはそのようなユーザ情報から導出される信号に、平文でアクセスすることができない場合がある。たとえば、計算システムMPC1またはMPC2のうちの一方は、ユーザ、パブリッシャ140、DSP150、SSP170、およびデジタルコンポーネントプロバイダ160とは異なる、信頼される当事者によって動作させられ得る。たとえば、業界グループ、政府グループ、またはブラウザ開発者が、計算システムMPC1およびMPC2のうちの一方を保守し動作させることができる。他の計算システムは、信頼される異なる当事者が各計算システムMPC1およびMPC2を動作させるように、これらのグループのうちの異なるグループによって動作させられ得る。有利には、異なる計算システムMPC1およびMPC2を動作させる異なる当事者は、ユーザプライバシーを危険にさらすために共謀すべき動機を有し得ない。いくつかの実装形態では、計算システムMPC1およびMPC2は、アーキテクチャ的に分離され、本明細書で説明するセキュアMPCプロセスを実行する外側で互いに通信しないように監視される。
各計算システムMPC1およびMPC2は、デジタルコンポーネント(たとえば、デジタルコンポーネントの創作物)、デジタルコンポーネントの選択値、およびデジタルコンポーネントの他の情報を記憶することができる。たとえば、計算システムMPC1およびMPC2は、以前のデジタルコンポーネント選択プロセスの一部としてSSP170および/またはDSP150から以前に受信されているか、または、たとえば、デジタルコンポーネント選択プロセスにおいて使用するために事前に提供されているなど、他の様態で計算システムMPC1およびMPC2に提供されている選択値をキャッシュすることができる。このようにMPCクラスタ130は、選択値を使用して、クライアントデバイス110から受信される将来のデジタルコンポーネント要求に応答してクライアントデバイス110に配信するためのデジタルコンポーネントを選択することができる。選択値および他の情報がMPCクラスタ130によってデジタルコンポーネント選択プロセスのために記憶されるデジタルコンポーネントが、本明細書において記憶されるデジタルコンポーネントとして参照され得る。しかしながら、デジタルコンポーネント自体が、必ずしもMPCクラスタ130によって記憶されるとは限らない。代わりに、MPCクラスタ130は、各記憶されるデジタルコンポーネントについて、デジタルコンポーネントをそこからダウンロードすることができるネットワークロケーションを参照する、たとえばコードなどのデータを記憶することができる。いくつかの実施態様において、デジタルコンポーネント自体が記憶され、MPCクラスタ130によってアプリケーション112に直接的に戻される。そのような実施態様は、アプリケーション112が、デバイスのバッテリおよび帯域幅を消費し得、デジタルコンポーネント自体をホストするサーバがデバイスを追跡するための追加の信号を漏洩し得る追加の要求において、デジタルコンポーネントおよび/またはデジタルコンポーネントの他の情報をフェッチする必要性を低減する。
各記憶されるデジタルコンポーネントについて、各計算システムMPC1およびMPC2は、選択値、または、デジタルコンポーネントの選択値を決定するために計算システムMPC1およびMPC2によって使用することができる値のベクトルを記憶することができる。各計算システムMPC1およびMPC2はまた、各デジタルコンポーネントについて、デジタルコンポーネントが所与のデジタルコンポーネント選択プロセスの適格な候補となるために満たされなければならない条件を規定する条件データも記憶することができる。記憶されるデジタルコンポーネントは、ゼロ以上の対応する条件を有し得る。
1つの例示的な条件は、選択されるデジタルコンポーネントが提供されるユーザが、記憶されるデジタルコンポーネントに対応するユーザグループのメンバーであることである。この条件は、ユーザグループメンバーシップ条件として参照することができる。この例において、計算システムMPC1およびMPC2は、記憶されるデジタルコンポーネントについて、当該デジタルコンポーネントに対応する1つまたは複数のユーザグループ識別子から成るセットを記憶することができる。これらのユーザグループ識別子は、記憶されるデジタルコンポーネントが提供され得るユーザグループを識別する。すなわち、記憶されるデジタルコンポーネントは、記憶されるデジタルコンポーネントの1つまたは複数のユーザグループ識別子から成るセットによって識別されるユーザグループのうちの少なくとも1つのメンバーであるユーザに提供するためのデジタルコンポーネントを選択するために実施されるデジタルコンポーネント選択プロセスの候補にすぎない。
記憶されるデジタルコンポーネントの別の例示的な条件は、デジタルコンポーネントまたは特定のカテゴリのデジタルコンポーネントが、所与の持続時間にわたってある最大回数だけしか同じユーザに提供され得ないことを示すフリークエンシーキャップ条件である。デジタルコンポーネントに対する別の例示的な条件は、デジタルコンポーネントがユーザによって、たとえばミュートされたなど、ブロックされていることを示すブロックデジタルコンポーネント条件である。これらの例示的な条件について、計算システムMPC1およびMPC2は、ストアから、複数のユーザの各々について、ユーザに提供することができないデジタルコンポーネントを表す、たとえばカッコウフィルタまたはブルームフィルタなどの確率的データ構造を受信することができる。たとえば、確率的データ構造は、ユーザによって直接的に、または、デジタルコンポーネントがユーザに表示される頻度が所与の持続時間中に超過されていることに起因してブロックされているデジタルコンポーネントのユニバーサル識別子を表すことができる。
計算システムMPC1およびMPC2は、ユーザのクライアントデバイス110から、たとえば、計算システムMPC1およびMPC2のいずれかが平文において識別子にアクセスすることを阻止する暗号化形態の確率的データ構造を受信することができる。たとえば、ユーザのクライアントデバイス110上で実行中のアプリケーション112は、フリークエンシーキャップに起因してブロックされているかまたはユーザによってブロックされているブロックデジタルコンポーネントの識別子を表すブルームフィルタを生成することができる。アプリケーション112は、次いで、計算システムMPC1およびMPC2が、協働して、所与のデジタルコンポーネントがそのユーザについてブロックされているか否かを判定するためにセキュアMPCプロセスを使用してブルームフィルタに問い合わせることを可能にするデータを、各計算システムMPC1およびMPC2に提供することができる。計算システムMPC1およびMPC2は、このセキュアMPCプロセスを使用して、ブロックデジタルコンポーネント条件の秘密シェアを計算する。ブルームフィルタを生成し、これに問い合わせるための例示的なプロセスについて、図8を参照しながら説明する。
いくつかの実施態様において、ブロックデジタルコンポーネントの識別子は、ユーザグループ識別子と同じ確率的データ構造内に含めることができ、異なるハッシュ関数を使用して問い合わせることができる。しかしながら、ブロックデジタルコンポーネントの目標偽陽性率は、ユーザグループ識別子の偽陽性率よりも低くすることができる。したがって、ユーザグループ識別子よりも少ないハッシュ関数を使用して、ブロックデジタルコンポーネントのブルームフィルタを生成し、これに問い合わせることができる。ブロックデジタルコンポーネントのブルームフィルタのデータサイズを低減するために、ブロックデジタルコンポーネントとは異なるブルームフィルタによって、ユーザグループ識別子を表すことができる。これによって、ネットワークを介したブルームフィルタの送信におけるレイテンシが低減し、ブルームフィルタの送信における消費帯域幅が低減し、ブルームフィルタを送信するためのバッテリ電力使用量が低減する。
記憶されるデジタルコンポーネントに対する別の例示的な条件は、ある持続時間にわたるデジタルコンポーネントの配信をペース調整するペーシング条件である。計算システムMPC1およびMPC2は、デジタルコンポーネントがある持続時間にわたって提供され得る総回数および/またはその持続時間にわたるデジタルコンポーネントの最大バジェットを示すデータを記憶することができる。計算システムMPC1およびMPC2は、この情報を使用して、デジタルコンポーネントがこの条件に基づいてデジタルコンポーネント選択プロセスの候補になり得る頻度をペース調整することができる(たとえば、デジタルコンポーネントが候補になるには、デジタルコンポーネントに対するすべての条件が満たされる必要がある)。いくつかの実施態様において、計算システムMPC1およびMPC2は、秘密シェアを使用して、ペーシング条件を有する記憶されるデジタルコンポーネントをペース調整する、たとえば比例積分微分(PID)コントローラなどのフィードバックコントローラを実装することができる。
この例において、計算システムMPC1およびMPC2は、デジタルコンポーネントに対するPIDコントローラの設定点を記憶することができ、デジタルコンポーネントに対するPIDコントローラの測定変数を維持することができる。概して、PIDコントローラは、目標設定点と測定変数との間の差である誤差値を使用して、測定変数を設定点に向けて駆動する出力を決定するフィードバックコントローラである。クライアントデバイスへのデジタルコンポーネントの配信のペース調整の文脈において、キャンペーンに関する設定点は、インプレッション率、インタラクション率、コンバージョン率、および/またはリソース枯渇率(たとえば、バジェット消費率)とすることができる。同様に、測定変数は、所与の持続時間にわたる、インプレッション率、インタラクション率、コンバージョン率、および/またはリソース枯渇率とすることができる。計算システムMPC1およびMPC2はまた、各PIDコントローラに対する調整パラメータを記憶することもできる。設定点、測定変数、および調整パラメータは、目標プライバシー/データセキュリティに応じて、秘密シェア(各計算システムMPC1およびMPC2が各パラメータの対応するシェアを記憶する)または平文において記憶することができる。
別の例示的な条件は、k-匿名性条件である。k-匿名性条件は、デジタルコンポーネントが、所与の持続時間にわたって少なくともk人のユーザへの配信に対して適格である(または選択されている)ことを要求するk-匿名性規則を含むことができる。k-匿名性の概念は、特定のユーザのためのデータが、しきい値数k人の他のユーザのデータから見分けられないことを保証する。システムは、たとえば、特定のデジタルコンポーネントが、1つまたは複数のデジタルコンポーネントを求める要求に応答してクライアントデバイス110に配信されること、および同じデジタルコンポーネントが、特定の時間期間内に、少なくともk人のユーザのセットに、または少なくともk個のアプリケーション112によって、表示されている場合があるかまたは表示されたことを保証することによって、k-匿名性規則を施行することができる。いくつかの実装形態では、デジタルコンポーネントが配信されている場合があるかまたは配信された先のk個のアプリケーション112の各々は、異なるユーザ用でなければならない。この例において、計算システムMPC1およびMPC2は、デジタルコンポーネントについて、値kを記憶し、デジタルコンポーネントが配信されている可能性があるユーザの数を維持することができる。
デジタルコンポーネントが表示されている可能性があるユーザの数を決定することは、各実際のデジタルコンポーネント選択プロセスと並行して反事実的デジタルコンポーネント選択プロセスを実行することを含むことができる。この反事実的デジタルコンポーネント選択プロセスにおいて、すべてのデジタルコンポーネントは、それらがk-匿名性条件以外のすべての条件を満たす場合、候補になり得る。反事実的デジタルコンポーネント選択プロセスにおいて、デジタルコンポーネントが少なくともk人のユーザまたはk個のアプリケーション112に対して選択される場合デジタルコンポーネントは、k-匿名性条件がなければk人のユーザに表示されていることになる。これが発生すると、k-匿名性条件を満たすデジタルコンポーネントが(存在する場合はデジタルコンポーネントに対する他の条件が満たされていると仮定して)実際のデジタルコンポーネント選択プロセスに含まれ得、これは、k-匿名性条件を満たさないデジタルコンポーネントを含まない。
いくつかの実施態様において、各計算システムMPC1およびMPC2は、デジタルコンポーネントおよびそれらのそれぞれの情報をコンテキスト信号のセットにマッピングするデータ構造内に、デジタルコンポーネントに関する情報を記憶する。たとえば、各デジタルコンポーネントは、コンテキスト信号のセットを含むリソースおよび/またはアプリケーションを用いた提示環境における表示に対して適格であり得る。コンテキスト信号は、たとえば、リソースのトピック、リソースに見られるキーワード、リソースのリソースロケータ、クライアントデバイス110の地理的位置、アプリケーション112の言語設定、リソースのデジタルコンポーネントスロットの数、デジタルコンポーネントスロットのタイプ、および/または、他の適切なコンテキスト信号を含むことができる。加えて、デジタルコンポーネントは、コンテキスト信号のセットごとに1つの、複数の対応する選択値を有することができる。そのようなデータ構造を使用することによって、計算システムMPC1およびMPC2が、デジタルコンポーネント選択プロセスに対して適格であるデジタルコンポーネントを識別することが可能になる。計算システムMPC1およびMPC2は、これらの条件を使用して、デジタルコンポーネント選択プロセスにおける選択に対する実際の適格な候補であるデジタルコンポーネントをこれらの適格なデジタルコンポーネントから識別することができる。デジタルコンポーネントが適格であるか否かの判定に使用するためのコンテキスト信号のセットは、計算システムMPC1およびMPC2が、デジタルコンポーネント要求のコンテキスト信号を使用して適格なデジタルコンポーネントを検索することを可能にする検索鍵の形態とすることができる。
デジタルコンポーネントが、デジタルコンポーネントに対する適格なユーザグループを識別する対応するユーザグループ識別子と関連付けられる場合、情報は、ルックアップテーブル(LUT)を使用して記憶することができる。LUTを使用することによって、いくらかの性能上の利点を提供することができるが、他の適切なデータ構造も使用されてもよい。LUTは、コンテキスト信号、またはコンテキスト信号から導出される検索鍵をデジタルコンポーネントのセットに、本明細書に記載の他の条件に従って当該デジタルコンポーネントのセットが表示のために適格であり、かつ/または、その選択値もしくはベクトルが適格であるように、マッピングする。このように、計算システムMPC1およびMPC2は、各デジタルコンポーネントについて、たとえば、コンテキスト信号のセットごとに1つなど、複数の選択値を記憶することができる。
いくつかの実施態様において、検索鍵は、コンテキスト信号のハッシュベースメッセージ認証コード(HMAC)である。たとえば、検索鍵は、HMAC(URL, HMAC(language, location))とすることができ、パラメータURLは、デジタルコンポーネントおよび選択値が適格であるリソースのURLであり、パラメータlanguageは、デジタルコンポーネントおよび選択値が適格であるアプリケーション112の指定言語であり、パラメータlocationは、デジタルコンポーネントおよび選択値が適格である地理的位置である。デジタルコンポーネント要求のコンテキスト信号がこれらのパラメータに一致する場合、検索鍵にマッピングされているデジタルコンポーネントおよび選択値は、要求に応答してデジタルコンポーネントを選択するためのデジタルコンポーネント選択プロセスに対して適格である。URL、location、およびlanguageに加えて、またはそれらの代わりに、他のコンテキスト信号を使用することができる。
ネットワーク105を介してデジタルコンポーネント要求を送信するために使用される帯域幅の量およびレイテンシの量を低減するために、アプリケーション112は、コンテキスト信号を計算システムMPC1およびMPC2に送信するのではなく、同じHMACを使用して検索鍵を計算することができる。これによってまた、クライアントデバイス110によって消費されるバッテリの量、および、各計算システムMPC1およびMPC2によって受信されるデータの量も低減する。
いくつかの実施態様において、たとえば、デジタルコンポーネントがユーザのユーザグループメンバーシップに関して条件付けされている場合、2段階LUTテーブルが使用される。第1段階は、要求鍵(UG_Request_Key)によって鍵が付けられ得る。UG_Request_Keyは、コンテキスト信号のセット、たとえば、デジタルコンポーネント要求のコンテキスト信号(たとえば、URL、location、languageなど)のセット、またはデジタルコンポーネントが配信に対して適格であるコンテキスト信号のセットに基づく、複合メッセージの形態である検索鍵であり得る。すなわち、第1段階LUTは、コンテキスト信号のセットに基づいて鍵が付けられ得る。第1段階の鍵は、たとえば、SHA256などのハッシュ関数を使用した、UG_Request_Keyのハッシュであり得る。この鍵は、たとえば、16バイト、または別の適切なビット数などの、指定のビット数に短縮することができる。第1段階LUTにおける各鍵UG_Request_Keyの値は、UG_Request_Keyのコンテキスト信号を含むデジタルコンポーネント要求に対して適格であるデジタルコンポーネントのデータを含む第2段階LUTの行を示すことができる。例示的な第1段階LUTを、下記にTable 1(表1)として示す。
第2段階LUTは、第1段階LUTの中のユーザグループ要求鍵UG_Request_Keyとユーザグループ識別子との組合せに基づいて鍵が付けられ得る。いくつかの実施態様において、第2段階LUTは、配列または他の適切なデータ構造とすることができる。第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およびユーザグループに対する所有者の内部ユーザグループ識別子のデジタルダイジェストであり得る。eTLD+1は、パブリックサフィックスを超える、実効トップレベルドメイン(eTLD:effective top-level domain)+1レベルである。例示的なeTLD+1は「example.com」であり、ここで、「.com」がトップレベルドメインである。ug_idは、16バイトまたは別の適切なデータサイズに短縮され得る。
以前のフライフィッシングの例を続けると、その人のフライフィッシングのグループ内のユーザに表示されることになるデジタルコンポーネントに関する情報を含む行の第2段階検索鍵は、ユーザグループ要求鍵UG_Request_Keyと、その人のフライフィッシングのグループのユーザグループ識別子ug_idとの組合せとすることができる。デジタルコンポーネントは異なるコンテキストにおいて提示され得るため、第2段階ルックアップテーブルは、各々が異なるユーザグループ要求鍵UG_Request_Keyおよび異なる値を有する、その人のフライフィッシングのグループのユーザグループ識別子ug_idと関連付けられるデジタルコンポーネントの複数の行を含むことができる。
第2段階LUTの各行に対する値は、デジタルコンポーネントに対する選択値(または値のベクトル)、およびデジタルコンポーネントのための他のデータ、たとえば、デジタルコンポーネントまたはデジタルコンポーネントがそこからダウンロードされ得るネットワークロケーションを識別するメタデータなどであり得る。いくつかの実施態様において、行は、アプリケーション112によって、たとえばウェブパッケージフォーマットにおいてレンダリングされる準備ができたデジタルコンポーネント自体を含むことができる。
その値は、選択値およびメタデータを有するバイトアレイであり得る、デジタルコンポーネント情報要素dc_information_elementであり得る。バイト配列は、アプリケーション112またはクライアントデバイス110の信頼されるプログラム、ならびに計算システムMPC1およびMPC2が解析して選択値およびメタデータを得ることができる特定のフォーマットを有することができる。いくつかの実施態様において、デジタルコンポーネント情報要素は、デジタルコンポーネント自体を含むことができる。例示的な第2段階LUTを、下記にTable 2(表2)として示す。ベクトルが選択値の決定に使用される場合、選択値は、Table 2(表2)のベクトルに置き換えることができる。
第2段階LUTは、選択値を特定のデジタルコンポーネント、特定のユーザグループ識別子ug_id、および、第1段階検索鍵UG_Request_Keyによって規定されるコンテキスト信号の特定のセットにマッピングする。そのようにすることによって、第2段階LUTは、デジタルコンポーネントに対する選択値がそれに対して適格である、デジタルコンポーネントスロットの特定のコンテキストを示す。このことにより、コンテキスト信号およびユーザのグループメンバーシップによって規定される、異なるコンテキストに対して、DSP150またはデジタルコンポーネントプロバイダ160が、同じデジタルコンポーネントに対する異なる選択値を指定することが可能になる。デジタルコンポーネントが表示される先のユーザが、特定のユーザグループ識別子ug_idによって識別される特定のユーザグループのメンバーであること、および第1段階ルックアップ鍵のコンテキスト信号によって規定される特定のコンテキストでデジタルコンポーネントが表示されることを示す、デジタルコンポーネント要求が受信されるとき、整合するユーザグループ識別子および整合する第1段階ルックアップ鍵を有する、第2段階LUTの中の選択値を有する任意のデジタルコンポーネントが、要求に応答して配信のために選択されるべき候補である。
本明細書全体にわたる説明に加えて、本明細書で説明するシステム、プログラム、または特徴により、ユーザ情報(たとえば、ユーザのソーシャルネットワーク、社会活動もしくは社会的アクティビティ、職業、ユーザの選好、またはユーザの現在位置についての情報)の収集が可能になり得るかどうかと、いつ可能になり得るのかの両方、およびサーバからのコンテンツまたは通信がユーザに送られるかどうかに関して、ユーザが選定を行うことを可能にする制御装置(たとえば、ユーザがそれと対話できるユーザインターフェース要素)がユーザに提供されてよい。加えて、いくつかのデータは、個人を識別できる情報が除去されるように、記憶または使用される前に1つまたは複数の方法で処理されてよい。たとえば、ユーザの識別情報は、個人を識別できる情報がユーザについて決定できないように扱われてもよく、またはユーザの地理的位置は、ユーザの具体的な位置を決定できないように、位置情報が取得される場合に(都市、ZIPコード、もしくは州のレベルなどに)一般化されてもよい。したがって、ユーザは、ユーザについてのどの情報が収集されるか、その情報がどのように使用されるか、およびどの情報がユーザに提供されるかを制御することができる。
図2は、図1の環境100内の例示的なデータフローを示す。この説明は、2つのタイプの選択値、すなわち、ユーザグループメンバーシップもしくは他の企業機密情報などの機密ユーザ情報、またはその値の変化が、良心的でないパーティが機密情報を推測することを可能にする可能性があるパラメータに対して条件付けされている選択値、すなわち「条件付き選択値」、および、機密情報に対して条件付けされていない選択値、すなわち「無条件選択値」を含む。ユーザプライバシーを保護するために、「条件付き選択値」に対する条件が、SSP170またはDSP150の代わりにMPCクラスタ130内で評価されて、「条件付き選択値」がコンテンツ選択プロセスの候補であるか否かが判定される。
この構造は、MPCクラスタ130が、ユーザプライバシーおよび企業秘密情報を保護することを可能にし、アプリケーション112のプロバイダなどのアプリケーションプロバイダに対するその信用性を証明することを可能にする。この例において、MPCクラスタ130は、セキュア2パーティ計算(2PC)アーキテクチャに依拠し、これは、MPCクラスタ130の2つの計算システムのうちの少なくとも一方が公正である場合に秘密ユーザデータまたは企業秘密情報の漏洩がないことを保証するために暗号学的技法を適用する。MPCクラスタ130が3つ以上の計算システムを含む場合、現行のMPCプロトコルを拡張することができ、または、他のMPCプロトコルを使用することができる。
MPCクラスタ130は、セキュア2PCプロトコルを実行して、候補デジタルコンポーネントを選択するために条件を評価および適用し、選択値に基づいてデジタルコンポーネントを選択するために選択プロセスを実行し、それらの条件が依存するパラメータを更新するためのインプレッション通知を受信する。これらのプロセスのすべては、秘密共有技法を使用して行うことができる。このプロトコルは、図3を参照しながら詳細に説明される。
段階Aにおいて、アプリケーション112は、たとえば、SSP170などのコンテンツプラットフォームからのトリガ要素と協働して、デジタルコンポーネントに対する要求をMPCクラスタ130に送信する。アプリケーション112は、デジタルコンポーネントに対する複数の要求を、複数のデジタルコンポーネントをフェッチするための1つの組合せ要求にともに含めることができる。次いで、MPCクラスタ130は、組合せ要求内の各要求に独立してサーブするか、または、1つまたは複数の選択決定を総体的に行うことができる。この例において、要求は、単一のデジタルコンポーネントに対するものであり、機密情報に基づいて選択されるデジタルコンポーネント、または、機密情報を使用することなく選択されるデジタルコンポーネントに対する要求を含む。MPCクラスタ130は、各々がそれぞれの特定のデジタルコンポーネントにマッピングされる選択値のセットの中の特定の選択値に対応する特定のデジタルコンポーネントを選択することによって、要求に応答することができる。これらの選択値は、MPCクラスタ130において以前にキャッシュされたかもしくは他の様態で記憶された選択値、および/または、DSP150またはSSP170などのプラットフォームによって生成される選択値、ジャストインタイム(JIT)選択値とすることができる。JIT選択値は、必要性に応答して直接的に生成され、デジタルコンポーネントが必要とされるときにのみ選択値が生成されるため、効率を増大させ、無駄を低減する。たとえば、JIT選択値は、デジタルコンポーネントスロットが利用可能になったときに生成することができ、これは、デジタルコンポーネントに対する要求の受信によって示される。したがって、MPCクラスタ130は、その情報がMPCクラスタ130において記憶されている、記憶されるデジタルコンポーネント、および、そのJIT選択値が現在のデジタルコンポーネント要求に対して受信されているデジタルコンポーネントを含むデジタルコンポーネントのセットからデジタルコンポーネントを選択することができる。
いくつかの実施態様において、デジタルコンポーネントの選択値は、2つ以上のベクトルを使用して決定することができる。MPCクラスタ130は、デジタルコンポーネントについて、デジタルコンポーネントの選択値を決定するために使用することができる値の第1のベクトルを記憶することができる。値の第1のベクトルは、1つまたは複数のユーザグループに特有であり得、たとえば、デジタルコンポーネントが1つまたは複数のユーザグループのメンバーであるユーザに対して選択されているときにデジタルコンポーネントの選択値を決定するために使用することができる。したがって、値の第1のベクトルはまた、ユーザグループベースのベクトルとして参照することもできる。ユーザグループベースのベクトルは、2つ以上の次元にまたがる複数の要素を含むことができ、各要素は、デジタルコンポーネント提示機会の特定の特徴を表すことができる。たとえば、値のユーザグループベースのベクトルは、地理的位置もしくは地域、言語、年齢もしくは年齢幅、ウェブページもしくは他の電子リソースの特定のURL、特定の製品もしくはサービス、デジタルコンポーネントスロットがフォールドの上であるかもしくは下であるか、デジタルコンポーネントスロットのタイプ、デジタルコンポーネントスロットのサイズ、電子リソース上のデジタルコンポーネントスロットの数、時刻、ウェブ特性識別子、および/または、デジタルコンポーネント提示機会の他の適切な特徴の要素を含むことができる。たとえば、ニューラルネットワークを採用する実施態様などの、いくつかの実施態様において、値のユーザグループベースのベクトルは、いくつかの抽象ベクトル空間内のユーザグループの埋め込みとすることができる。
各要素の値は、要素に対応する特徴を有する現在のデジタルコンポーネント提示機会に基づくデジタルコンポーネントの選択値の増大または低減の量を反映することができる。たとえば、デジタルコンポーネントがダラスのユーザではなくアトランタのユーザに表示されることをDSP150が所望する場合、アトランタの要素の値を、1の値を上回る正の値とすることができ、ダラスの要素の値を、たとえば、0などの、1を下回る正の値、または負の値とすることができる。下記により詳細に説明するように、ユーザグループベースのベクトルの値は、デジタルコンポーネントの選択値を決定するためのベクトルドット積計算の一部とすることができる。
要求は、アプリケーション112がマッピングされるかまたは他の様態で関連付けられるユーザグループのユーザグループ識別子などの、機密であり得る情報、ならびに、デジタルコンポーネントが提示および/または表示されるコンテキストに関するアプリケーション112からのコンテキスト信号などの機密でない情報を含む、デジタルコンポーネント選択プロセスにおいて使用される情報を含む。下記により詳細に説明するように、システム110の設計は、機密または秘密であり得るユーザデータの保護を改善する。
トリガ要素は、たとえば、アプリケーション112によって訪問されるインターネットロケーション内のデジタルコンポーネントスロットの存在を検出するタグとすることができる。トリガ要素は、たとえば、そのインターネットロケーションに配置することができ、アプリケーション112に、デジタルコンポーネントが要求されるべきであるデジタルコンポーネントスロットの存在を通知することができる。
段階Bにおいて、MPCクラスタ130はコンテキスト信号などの機密でない情報に基づくデジタルコンポーネント要求をSSP170に送信する。この要求は、「コンテキスト要求」として参照される。コンテキスト要求は、デジタルコンポーネントに対する要求をトリガしたインターネットロケーション(たとえば、コンテンツパブリッシャ)によって直接的に収集される様々なコンテキスト信号および非機密ユーザ情報を含むことができる。たとえば、コンテキスト信号は、分析データ、言語設定、および、コンテンツパブリッシャが良好なユーザ体験を提供することを支援する他のデータを含むことができる。しかしながら、SSP170に提供されるコンテキスト要求は、ユーザグループ識別子などの機密情報を含まない。
段階Cにおいて、SSP170は、コンテキスト要求を1つまたは複数のDSP150に転送する。この特定の例において、単純にするために、SSP170は、コンテキスト要求を単一のDSP150に転送する。たとえば、SSP170は、コンテキスト要求をDSP150に転送することができる。この例において、DSP150は、デジタルコンポーネント、および、デジタルコンポーネントにマッピングされている選択値を有するか、または、コンテキスト信号を使用してデジタルコンポーネントの選択値を決定することができる。
段階Dにおいて、1つまたは複数のDSP150が、コンテキスト要求に応答して選択値を返す。たとえば、DSP150は、コンテキスト要求に応答して、デジタルコンポーネントにマッピングされている1つまたは複数の選択値を返す。DSP150は、コンテキスト要求に応答して任意の数の選択値を返すことができる。いくつかの実施態様において、DSP150は、加えて、ユーザグループ情報などの機密情報に基づいて、デジタルコンポーネント要求に応答して選択値を返すことができる。これらの選択値は、それが機密情報に関して条件付けられ、したがって、選択値が条件付けられている機密情報に一致する機密情報を含む要求を受信するMPCクラスタ130に関して条件付けられるため、「条件付き選択値」である。DSP150が提供する各選択値について、DSP150は、有効期間(TTL)パラメータ、すなわち、MPCクラスタ130が選択値をキャッシュすることができる最大期間などの情報を含む。このTTLパラメータは、MPCクラスタ130が、DSP150から受信される選択値をキャッシュすることを可能にする。TTLパラメータを用いない、いくつかの実施態様において、MPCクラスタ130は、受信選択値をキャッシュせず、代わりに、選択値が、たとえば、段階A、BおよびCにおいて送信されたデジタルコンポーネント要求に対応する選択プロセスなどの、選択プロセスに使用された後に、選択値を廃棄する。
選択値を決定するためにベクトルが使用されるとき、DSP150は、値の第2のベクトルを生成し、返すことができる。DSP150は、段階BおよびCにおいて送信されたデジタルコンポーネント要求のコンテキスト信号に基づいて、値の第2のベクトルを生成することができる。第2のベクトルは、コンテキストベクトルとして参照することができる。コンテキストベクトルは、ユーザグループベースのベクトルと同じ特徴に対応する同じ要素を含むことができる。しかしながら、DSP150は、デジタルコンポーネント要求のコンテキスト信号に基づいて、現在のデジタルコンポーネント要求に対するコンテキストベクトルの値を決定することができる。対照的に、DSP150のユーザグループベースのベクトルの値は、MPCクラスタ130として記憶され、たとえば、ユーザグループベースのベクトルに対応するユーザグループに基づいて事前に決定される。
コンテキストベクトルを提供する各DSP150について、MPCクラスタ130は、ユーザグループベースのベクトルおよびDSP150によって提供されるコンテキストベクトルのドット積を決定することによって、DSP150の各記憶されるデジタルコンポーネントの選択値を決定することができる。DSP150が、たとえば、異なるデジタルコンポーネントごとの、MPCクラスタ130によって記憶されている複数のユーザグループベースのベクトルを有する場合、MPCクラスタ130は、各ユーザグループベースのベクトルについて、コンテキストベクトルおよびユーザグループベースのベクトルのドット積を決定する。
いくつかの実施態様において、デジタルコンポーネント要求がサブミットされるユーザのユーザプロファイルに基づいて、第3のベクトルを使用することができる。このベクトルは、他のベクトルと同じ次元および特徴を有することができるが、ユーザのユーザプロファイルに基づく値を有する。
たとえば、ユーザプロファイルベクトル内のオースティンの位置要素の値は、ユーザがオースティンにいる場合は正の値を有することができ、または、ユーザがオースティンにいない場合は負の値もしくは0の値を有することができ、コンテキストベクトル内の同じ位置要素の値は、ユーザに現在示されているパブリッシャコンテンツのオースティンへの関連性が高い場合は正の値を有することができ、デジタルコンポーネントのユーザグループベースのベクトル内の同じ位置要素の値は、デジタルコンポーネントがオースティンに関連する場合は正である。3つのベクトルのドット積を計算するために、計算システムMPC1およびMPC2は、最初に、3つのベクトルの各々から1つの、対応する要素の間での要素ごとの乗算を実施し、次いで、結果を合計する。たとえば、3つのベクトルがそれぞれV1={v1,1 ...v1,n},V2={v2,1 ...v2,n}およびV3={v3,1 ...v3,n}であると仮定すると、3つのベクトルの間のドット積は、以下のようになる。
段階Eにおいて、SSP170は、コンテンツ選択規則を、条件付き選択値に対応するデジタルコンポーネントに適用する。上述したように、これらの条件は、ユーザグループ識別子、頻度制御、ブロック(たとえば、ミュート)デジタルコンポーネント、ペーシング、および/またはk-匿名性に基づくことができる。
SSP170はまた、たとえば、選択値が特定のコンテンツプロバイダの発行後の値にどのように影響を与えるかを決定するためにも、選択値規則を適用する。発行後の値は、たとえば、パブリッシャ140のリソースまたはアプリケーションコンテンツとともにデジタルコンポーネントを表示するためにパブリッシャ140に提供される量を示すことができる。次いで、SSP170は、選択プロセスを実施して、トップ無条件選択値、すなわち、最高の発行後の値をもたらす無条件選択値を決定する。無条件選択値は、機密情報に関して条件付けられておらず、したがって、バジェットおよびペーシング規則、広告主およびデジタルコンポーネント除外などのコンテンツ選択規則を、MPCクラスタ130ではなく、SSP170によって適用することができる。次いで、SSP170は、JIT選択値である以下のもの、すなわち、MPCクラスタ130におけるキャッシングを可能にするすべての選択値(TTL値を有する選択値)、および、その発行後の値がトップ無条件選択値の発行後の値以上であるすべての選択値を、MPCクラスタ130に転送する。
段階Fにおいて、MPCクラスタ130は、キャッシングを可能にする(すなわち、TTL値を有する)受信したJIT選択値によってそのキャッシュを更新する。加えて、MPCクラスタ130は、ユーザグループメンバーシップ規則、頻度制御、ペーシング規則、ならびに、特定のユーザの段階Eにおいて受信されるすべての選択値および以前にキャッシュされた選択値へのマイクロターゲティングを阻止するための規則などの選択規則を適用して、選択プロセスに対する有効な候補を選択する。規則は、要因の中でも、デジタルコンポーネントの配信の方式または頻度に対する制約およびガイドラインを含むことができる。規則は、頻度制御、ミュート、リソース枯渇、およびペーシング制約を含む。いくつかの実施態様において、MPCクラスタ130によって評価される条件を有するJITデジタルコンポーネントは、現在のデジタルコンポーネント選択プロセスについては無視することができる。たとえば、現在の選択プロセスについてこれらのデジタルコンポーネントを無視することによって、たとえば、デジタルコンポーネントの選択および提供におけるレイテンシの低減などの、性能上の利点を提供することができる。次いで、MPCクラスタ130は、すべての適格な候補の間で最後の選択プロセスを実行し、勝利した選択値を選択し、次いで、デジタルコンポーネント要求に応答して、勝利した選択値にマッピングされているデジタルコンポーネントのデータをアプリケーション112に返す。
段階Gにおいて、勝利した選択値にマッピングされているデジタルコンポーネントが、アプリケーション112によってレンダリングされる。次いで、アプリケーション112は、インプレッション通知をMPCクラスタ130に提供する。このインプレッション通知は、MPCクラスタ130が、たとえば、段階Aの後続の発生において受信される将来のデジタルコンポーネント要求に対する選択規則を執行することを可能にする更新パラメータに関連する情報をMPCクラスタ130が更新することを可能にするデータを含む。いくつかの実施態様において、アプリケーション112は、ネットワーク通信の数およびモバイルデバイスのバッテリ/帯域幅消費、ならびにMPCクラスタ130の処理/計算コストを低減するために将来のコンポーネント要求Aにピギーバックすることによって、インプレッション通知GをMPCクラスタ130に送信することができる。
図3は、クライアントデバイスへの配信用のデジタルコンポーネントを選択するための例示的なプロセス300のスイムレーン図である。プロセス300の動作は、たとえば、クライアントデバイス110、MPCクラスタ130の計算システムMPC1およびMPC2、ならびにDSP150によって実施され得る。プロセス300の動作は、非一時的であり得る、1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス300の動作を実行させ得る。プロセス300および以下の他のプロセスは、2つの計算システムのMPCクラスタ130に関して説明されるが、3つ以上の計算システムを有するMPCクラスタも、類似のプロセスを実行するために使用され得る。加えて、プロセス300の動作はSSP170によって実施され得る。
例示的なプロセス300は、階層、ブースト、第1の値の選択プロセス(たとえば、第1の価格のオークション)、第2の値の選択プロセス(たとえば、第2の価格のオークション)、およびフロアなどの変形を含むことができる。これらの変形の各々は、図3~図5を参照しながら説明される。
概して、ブーストは、デジタルコンポーネントの選択値が調整される量である。たとえば、コンテンツパブリッシャは、SSP170に、デジタルコンポーネントがパブリッシャのリソース145またはアプリケーションコンテンツのうちの1つとともに表示するために選択されているときに指定量「x」のブーストを特定のDSP150に与えるように指示することができる。DSP150が「y」の選択値をサブミットする場合、デジタルコンポーネント選択プロセスにおいて使用される選択値はx + yになる。しかしながら、DSP150は、デジタルコンポーネントが選択される場合に第1の選択値または第2の選択値のプロセスにおいてy以下の量を提供することのみを要求される。プロセス300において、MPCクラスタ130は、SSP170によって提供される情報に従って選択値にブーストを適用することができる。たとえば、各SSP170は、DSP150およびパブリッシャ140の対にブーストをマッピングする情報を提供することができる。すなわち、情報は、特定のDSPの選択値が、特定のパブリッシャのコンテンツとともに表示するためのデジタルコンポーネントを選択しているデジタルコンポーネント選択プロセスのために特定の量だけブーストされるべきであることを示すことができる。いくつかの実施態様において、SSP/パブリッシャは、より粒度の高いレベルにおいてブーストをサポートすることができる。たとえば、各検索鍵について(たとえば、コンテキスト信号の各セットについて)、SSP/パブリッシャはブーストを指定することができる。
SSP170は、セキュアMPCクラスタ130に、DSP150を、異なる優先度を有する複数の階層に分割するように指示することができる。デジタルコンポーネント選択プロセスにおいてすべての候補デジタルコンポーネントの間で最高の選択値に対応するデジタルコンポーネントを選択するのではなく、最高優先度階層内の最高の選択値を有するデジタルコンポーネントが選択される。例示のために、最高階層および最低階層の2つの階層がある例を考える。最高階層内に1つまたは複数の候補デジタルコンポーネントがある場合、たとえ最低階層内の候補デジタルコンポーネントが、最高階層内のすべての候補デジタルコンポーネントの選択値よりも高い選択値を有していたとしても、最高階層内の最高の選択値を有する候補デジタルコンポーネントが選択される。
第1の値の選択プロセスと第2の値の選択プロセスとの間の主な差は、選択されるデジタルコンポーネントのクリア量である。クリア量は、デジタルコンポーネントの表示のためにDSP150によってパブリッシャ140および/またはSSP170に提供される必要がある量である。同じデジタルコンポーネントが、両方のプロセスを使用して選択される。第1の値の選択プロセスにおいて、DSP150は、パブリッシャ140および/またはSSP170に、DSP150によってサブミットされる選択値に等しい量を提供することを要求される。第2の値の選択プロセスにおいて、DSP150は、代わりに2番目に高い選択値に基づく量を提供することを要求される。第2の選択値のプロセスとともに階層が使用される場合、2番目に高い値は、選択されるデジタルコンポーネントと同じ階層内の2番目に高い値になる。同じ階層内にそのような候補デジタルコンポーネントがない場合、2番目に高い値は、デジタルコンポーネント選択プロセスの最小値であり得る。
選択値フロアは、パブリッシャ140がデジタルコンポーネントの表示のために許容しようとしている最小選択値を示すことができる。パブリッシャ140は、様々なDSP150、各カテゴリのデジタルコンポーネント(たとえば、自動車に関連するデジタルコンポーネントに対する1つのフロアおよびガーデニングに関連するデジタルコンポーネントに対するもう1つのフロア)、各デジタルコンポーネントプロバイダ160、各ブランド、パブリッシャのサイト上の各ページ、各デジタルコンポーネントスロット、デジタルコンポーネントスロットのグループ、および/またはデジタルコンポーネントの他のタイプのグループに対して選択値フロアを指定することができる。いくつかの実施態様において、SSP170が、前もって、または、たとえば段階Aの各デジタルコンポーネント要求に対して、パブリッシャ140の代わりにフロアを設定することができる。
DSP150は、選択値およびデジタルコンポーネントに関する追加の情報(たとえば、条件などの選択基準)をMPCクラスタ130に提供する(302)。いくつかの実施態様において、DSP150は、選択値および追加の情報を、SSP(簡潔にするために図3には示されていない)を介してMPCクラスタ130に提供する。たとえば、DSP150は、デジタルコンポーネント要求に応答して選択値および追加の情報を提供し、選択値に対応するデジタルコンポーネントを、MPCクラスタ130に記憶されているはずである、記憶されるデジタルコンポーネントとして指定することができる。
MPCクラスタ130は、クライアントデバイス110から受信される将来のデジタルコンポーネント要求に対する選択値および選択基準を記憶することができる。デジタルコンポーネントごとに、DSP150はまた、デジタルコンポーネントのための追加のデータ、たとえば、メタデータをアップロードすることができる。デジタルコンポーネントに関する追加の情報は、デジタルコンポーネントがデジタルコンポーネント選択プロセスに含まれるために満たされなければならない1つまたは複数の条件(および条件のパラメータ)を含むことができる。たとえば、追加の情報は、デジタルコンポーネントに対応するユーザグループの1つまたは複数のユーザグループ識別子を含むことができる。
デジタルコンポーネントに関する追加の情報は、デジタルコンポーネントがそれに対して適格であるコンテキスト、たとえば、クライアントデバイス110のロケーション、アプリケーション112のために選択された言語、デジタルコンポーネントがそれとともに提示され得るリソースのURL、および/または、デジタルコンポーネントがそれとともに提示され得ないリソースの除外されるURLを示す、コンテキスト選択信号を含むことができる。デジタルコンポーネントに関する追加の情報はまた、たとえば、一意識別子、デジタルコンポーネントがそこから取得され得るドメイン、および/またはデジタルコンポーネントのための他の適切なデータを使用して、デジタルコンポーネントを識別することができる。この追加の情報は、デジタルコンポーネントのメタデータとして含まれ得る。
いくつかの実施態様において、MPCクラスタ130は、MPCクラスタ130に提供された、デジタルコンポーネントに対する選択値、選択基準および他の情報を、デジタルコンポーネント要求のためにキャッシュするかまたは他の様態で記憶する。この例では、デジタルコンポーネントおよび選択値のためのコンテキスト信号は、そのデジタルコンポーネント要求の中に含まれるコンテキスト信号を含むことができる。上述したように、選択値およびメタデータは2段階LUTに記憶することができる。
いくつかの実施態様において、DSP150は、デジタルコンポーネントの静的な選択値の代わりに、デジタルコンポーネントの値のユーザグループベースのベクトルを提供することができる。そのような例において、値のユーザグループベースのベクトルを、選択値の代わりに記憶することができる。
クライアントデバイス110がコンテンツを受信する(304)。たとえば、クライアントデバイス110は、ネイティブアプリケーションによる表示用のウェブブラウザまたはアプリケーションコンテンツによる表示のために、電子リソース(たとえば、ウェブページ)を受信することができる。コンテンツは、コンピュータ可読コード、たとえば、実行されたとき、各スロットに対してクライアントデバイス110にデジタルコンポーネントを要求させるスクリプトを含む、1つまたは複数のデジタルコンポーネントスロットを含むことができる。クライアントデバイス110は、クライアントデバイス110のディスプレイ上でコンテンツをレンダリングすることができる。
クライアントデバイス110が、ユーザグループ識別子のセットを識別する(306)。ユーザグループ識別子のセットは、メンバーとしてユーザを含むユーザグループのユーザグループ識別子とすることができる。たとえば、ユーザグループ識別子のセットは、ユーザグループリスト内のユーザグループ識別子であり得る。コンテンツをレンダリングするアプリケーション112または信頼されるプログラムは、たとえば、クライアントデバイス110のセキュアなストレージからユーザグループリストにアクセスすることによって、ユーザグループ識別子のセットを識別することができる。
クライアントデバイス110は、確率的データ構造を生成する(308)。機密情報に基づいてデジタルコンポーネント要求をセキュアかつ効率的に生成するために、アプリケーション112は、カッコウフィルタまたはブルームフィルタなどの、確率的データ構造を使用することができる。この例では、確率的データ構造は、カッコウフィルタである。ブルームフィルタを使用する例は、図8を参照して説明される。概して、カッコウフィルタは、バケットの配列を含み、各バケットは、b個のフィンガープリントを保持することができる。アイテムのフィンガープリントは、そのアイテムのハッシュから導出されるビット列である。カッコウフィルタは、アイテムが、b個の位置のいずれかにあるn個の異なるバケット内に配置されることを可能にするn個のハッシュ関数を使用する。典型的には、カッコウフィルタは、各バケット内のフィンガープリントの数およびバケットの数によって識別される。たとえば、(2, 4)カッコウフィルタは、2個のバケットを有し、カッコウ配列内の各バケットは、最大4個のフィンガープリントを記憶することができる。したがって、カッコウフィルタの合計容量は、2 x 4すなわち8個のフィンガープリントである。
カッコウフィルタの構成に応じて、アイテムは、N個の可能な位置のうちの1つにおいてカッコウフィルタに挿入することができ、たとえば、N = 2である。アプリケーション112は、ユーザグループ識別子またはブロックされた識別子のセットからの識別子およびアプリケーション112によって生成される2つのランダム変数のいずれかによってパラメータ化されるN個の擬似ランダム関数(PRF)を使用して、アイテムが挿入されるすべての可能な位置を決定する。たとえば、アプリケーション112によって生成される2つのランダム変数が、rand_var1aおよびrand_var1bであると仮定する。いくつかの実施態様において、アプリケーション112およびMPCクラスタ130は、PRFについて事前に合意し、PRF(x,y)∈[0,2k-1]であり、kはカッコウフィルタのバケット内の各アイテムのビット数である。
カッコウフィルタの各位置は、ユーザグループ識別子もしくはブロックされた識別子によって占有され得るか、または空であり得る。ブロックされた識別子は、アプリケーション112が、たとえば、頻度制御に基づいてデジタルコンポーネントをブロックしている識別子、または、ユーザがユーザグループのデジタルコンポーネントをブロックすることを選択した識別子である。アプリケーション112は、カッコウフィルタテーブルを生成することができ、その要素は、PRF(ug_id, rand_var1a)、PRF(blocked_uid, rand_var1b)、および0であり、ug_idは、コンテンツプロバイダのドメインに基づいてユーザグループのラベルにHMACを適用することによって生成されるユーザグループの識別子であり、blocked_uidは、ブロックされた識別子のセットからの識別子であり、0は空のアイテムを表す。プロセスは、すべてのユーザグループ識別子に対して繰り返される。いくつかの実施態様において、たとえばカッコウフィルタまたはブルームフィルタなどの同じ確率的データ構造が、ユーザグループ識別子とブロックされた識別子の両方を記憶することができる。他の実施態様において、ユーザグループ識別子およびブロックされた識別子は、専用の確率的データ構造に記憶される。
アプリケーション112は、ユーザグループ識別子および/またはブロックされた識別子のために生成されたカッコウフィルタテーブルに基づいて、ベクトルBを生成することができる。ベクトルB内の各値Biは、Bi = (Ai - PRF(rand_var2, i)) mod pとして表すことができ、Aはカッコウフィルタテーブルであり、iはベクトルBおよびカッコウフィルタテーブルAのインデックスである。アプリケーション112がデジタルコンポーネントスロットのデジタルコンポーネントに対する要求を開始するとき、アプリケーション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のいずれも秘密シェアの両方にアクセスすることができないため、これらの計算システムのいずれも、ユーザプライバシーを保持しながらカッコウフィルタテーブルを再作成することはできない。
クライアントデバイス110は、MPCクラスタ130に、カッコウフィルタのパラメータを含むデジタルコンポーネント要求を送信する(310)。たとえば、クライアントデバイス110は、計算システムMPC1に、rand_var1a、rand_var1bおよびrand_var2を含むデジタルコンポーネント要求を送信することができる。クライアントデバイス110はまた、計算システムMPC2に、ベクトルB、rand_var1aおよびrand_var1bを含むデジタルコンポーネント要求を送信することもできる。両方のデジタルコンポーネント要求はまた、たとえば、電子リソースのURL、リソースのデジタルコンポーネントスロットの数、クライアントデバイス110の地理的位置、および/または、デジタルコンポーネントを選択するために使用することができる、たとえば、検索鍵などの他の適切なコンテキスト信号などの、コンテキスト信号も含むことができる。
MPCクラスタ130は、コンテキストデジタルコンポーネント要求をSSP170に送信する(312)。このデジタルコンポーネント要求は、コンテキスト信号を含み得るが、ユーザをメンバーとして含むユーザグループを識別するユーザグループ識別子などの機密ユーザデータは含まない。いくつかの実施態様において、コンテキストデジタルコンポーネント要求は、クライアントデバイス110上でレンダリングされているパブリッシャのページ上のSSPのタグによって生成されたものである。アプリケーション112は、動作310において送信されるデジタルコンポーネント要求にピギーバックすることによって、MPCクラスタ130を介してSSP170にコンテキストデジタルコンポーネント要求を送信する。いくつかの実施態様において、アプリケーション112は、SSP170の公開鍵を使用してコンテキストデジタルコンポーネント要求を暗号化し、動作310において送信されるデジタルコンポーネント要求にピギーバックすることによって、暗号化コンテキストデジタルコンポーネント要求をSSP170に送信し、結果、SSP170以外の誰もコンテキストデジタルコンポーネントを復号することができない。
SSP170は、コンテキストデジタルコンポーネント要求を1つまたは複数のDSP150に送信する(314)。各DSP150は、デジタルコンポーネントの1つまたは複数の条件付き選択値および/またはデジタルコンポーネントの1つまたは複数の無条件選択値によって、要求に応答することができる。各デジタルコンポーネントについて、応答は、デジタルコンポーネントを識別するデータ、デジタルコンポーネントの選択値、およびデジタルコンポーネントのメタデータ(または他の追加の情報)を含むことができる。たとえば、応答は、各デジタルコンポーネントのデジタルコンポーネント情報要素dc_information_elementを含むことができる。各DSP150は、コンテキスト信号に基づいてデジタルコンポーネント選択プロセスに含めるための1つまたは複数のデジタルコンポーネントを選択し、各選択されるデジタルコンポーネントの選択値を決定または識別することができる。いくつかの実施態様において、DSP150は、コンテキスト信号に基づいて1つまたは複数のデジタルコンポーネントの各々のコンテキストベクトルを生成することができる。
各DSP150は、その応答をSSP170に送信することができる(316)。SSP170は、応答をMPCクラスタ130に送信することができる(318)。いくつかの実施態様において、SSP170は、応答をMPCクラスタ130に送信する前に、デジタルコンポーネント選択プロセスに対して1つまたは複数のフロアを適用することができる。SSP170は、デジタルコンポーネントが選択されている電子リソースのパブリッシャ140に基づいてフロアを適用することができる。上述したように、パブリッシャ140は、DSP150、デジタルコンポーネントのカテゴリ、デジタルコンポーネントプロバイダ160、ブランド、および/または他のタイプのデジタルコンポーネントのグループに対して、フロアを指定することができる。
SSP170は、パブリッシャ140によって指定されているフロアを識別し、それらをDSP150から受信される選択値に適用することができる。選択値が対応するフロアよりも小さい場合、SSP170は、たとえば、選択値をMPCクラスタ130に提供しないことによって、選択値をデジタルコンポーネント選択プロセスから除去することができる。たとえば、パブリッシャ140が、所与のデジタルコンポーネントプロバイダ160に対して、5単位のフロアを指定したと仮定する。DSP150が、所与のデジタルコンポーネントプロバイダ160のデジタルコンポーネントに対して4単位の選択値を提供した場合、SSP170は、デジタルコンポーネント選択プロセスから選択値をフィルタリングすることができる。
上述したように、DSP150は、将来のデジタルコンポーネントプロセスに使用するために記憶される、記憶されるデジタルコンポーネントの選択値を提供することができる。これらの選択値が対応するフロアを満たさない場合、デジタルコンポーネントおよびそれらの関連する選択値は、SSP170がそれらをMPCクラスタ130に転送しないため、MPCクラスタ130に記憶されない。
いくつかの実施態様において、SSP170ではなく、またはそれに加えて、MPCクラスタクラスタ130が、フロアを執行する。MPCクラスタ130は、選択値を決定するためにベクトルが使用される場合にベクトルのドット積を計算するため、MPCクラスタ130は、これらの選択値に対してフロアを執行することができる。たとえば、SSP170ではなく、MPCクラスタ130がまた、静的な選択値に対してもフロアを執行することができる。
MPCクラスタ130は、セキュアMPCプロセスを実施して、クライアントデバイス110における表示のために提供するためのデジタルコンポーネントを選択する(320)。この選択は、たとえば、図1を参照しながら上述した第1段階検索鍵などの検索鍵を使用して、コンテキスト信号に基づいてデジタルコンポーネント選択プロセスに対して適格であるデジタルコンポーネントのセットおよびそれらの対応する選択値を識別することを含むことができる。これはまた、デジタルコンポーネントのセットから、選択のための候補である候補デジタルコンポーネントを識別することも含むことができる。候補デジタルコンポーネントは、DSP150が選択値を提供した無条件デジタルコンポーネント、および、デジタルコンポーネントの各条件が満たされる条件付きデジタルコンポーネントを含むことができる。条件付きデジタルコンポーネントは、デジタルコンポーネントのすべての条件が満たされる場合にのみ、デジタルコンポーネント選択プロセスの候補と考えられる。
MPCクラスタ130は、候補デジタルコンポーネントの選択値に基づいて、候補デジタルコンポーネントから、デジタルコンポーネント要求に応答してクライアントデバイス110に提供するためのデジタルコンポーネントを選択することができる。ベクトルを使用して決定された選択値を有するデジタルコンポーネントについて、MPCクラスタ130は、たとえば、ユーザグループベースのベクトル、コンテキストベクトル、および任意選択的にユーザプロファイルベクトルなどのベクトルのドット積を決定することによって、デジタルコンポーネントの選択値を決定することができる。
デジタルコンポーネントの選択において、MPCクラスタ130は、デジタルコンポーネントの任意の階層またはブーストも考慮することができる。上述したように、パブリッシャ140は、DSP150および/またはデジタルコンポーネントプロバイダ160の階層および/またはブーストを確立することができる。そのデジタルコンポーネントが選択されているパブリッシャ140がブーストを確立した場合、MPCクラスタ130(またはSSP170)は、パブリッシャ140によって指定される対応するブーストを使用してDSP150および/またはデジタルコンポーネントプロバイダ160のデジタルコンポーネントの選択値を調整することができる。選択値を決定するためにベクトルが使用される場合、MPCクラスタ130は、ベクトルのドット積を計算することによって選択値が決定された後に選択値を調整することができる。
階層が使用される場合、MPCクラスタ130は、各階層について、たとえば、最高優先度階層から最低優先度へと順次的にまたは並列に選択プロセスを実施することができる。MPCクラスタ130は、少なくとも1つの候補デジタルコンポーネントを含む最高優先度階層内の最高の選択値を有するデジタルコンポーネントを選択することができる。たとえば、最高優先度階層内のデジタルコンポーネントのいずれもが、たとえば、デジタルコンポーネント選択プロセスに含めるためのその条件のすべてを満たす候補でない場合、MPCクラスタ130は、候補を含む2番目に高い優先度の階層から候補を選択する。
MPCクラスタ130は、選択プロセスが実施される速度を改善するために、各階層について並列に選択プロセスを実施することができる。このように、最高優先度階層内に候補がない場合、MPCクラスタ130は、各他の階層の選択プロセスをすでに開始しており、完了している場合があり、結果、最後のデジタルコンポーネントが選択され得る。
MPCクラスタ130は、最高優先度階層から最低優先度階層へと順次的に選択プロセスを実施することができる。速度がそれほど重要でない場合、これによって、最高優先度階層が候補デジタルコンポーネントを含む場合に、最低優先度階層について実施される無駄な計算を低減することができる。セキュアMPCプロセスを使用してデジタルコンポーネントを選択するための例示的なプロセスは図4に示されており、下記に説明する。
MPCクラスタ130は、選択結果の秘密シェアをクライアントデバイス110に送信する(322)。いくつかの実施態様において、MPCクラスタ130はまた、デジタルコンポーネント選択プロセスの選択プロセス識別子も、クライアントデバイス110に送信することができる。選択プロセス識別子は、選択結果が生成されたデジタルコンポーネント選択プロセスを一意に識別することができる。たとえば、計算システムMPC1およびMPC2は、各々、計算システムMPC1およびMPC2がそれに対してクライアントデバイス110に提供するための選択結果を生成するための選択プロセスを実施する各デジタルコンポーネント要求について、それぞれの選択プロセス識別子SPIDを生成することができる。いくつかの実施態様において、選択プロセス識別子SPIDは、ノンスまたは不透明な英数字もしくは数字列であり得る。
MPCクラスタ130はまた、SPIDによって鍵を付けられたか、または、他の様態でSPIDにリンクされた選択プロセスの一部であった選択値のためのデータも記憶することができる。たとえば、計算システムMPC1は、選択プロセスについて計算システムMPC1によって生成されるSPID1に基づく鍵を有する選択値のためのデータを含むテーブルまたは他のデータ構造を記憶することができる。同様に、計算システムMPC2は、選択プロセスについて計算システムMPC2によって生成されるSPID2に基づく鍵を有する選択値のためのデータを含むテーブルまたは他のデータ構造を記憶することができる。これによって、MPCクラスタ130は、クライアントデバイス110から受信されるデータに基づいてフィードバックコントローラのためにプロセス変数を更新することが可能になる。
選択結果は、選択されるデジタルコンポーネントに関する情報を含むバイト配列の形態であり得る。たとえば、選択結果は、第2のLUTの中のデジタルコンポーネントに対する値、たとえば、デジタルコンポーネントに対する選択値およびデジタルコンポーネントのためのメタデータを含む、バイト配列であり得る。計算システムMPC1およびMPC2は、下記により詳細に説明するように、セキュアMPCプロセスを使用して、選択結果の秘密シェアを決定することができる。計算システムMPC1は、選択結果の第1の秘密シェアをクライアントデバイス110に送信することができ、計算システムMPC2は、選択結果の第2の秘密シェアをクライアントデバイス110に送信することができる。選択されたデジタルコンポーネントを計算システムMPC1およびMPC2が知ることを阻止するために、計算システムMPC1およびMPC2は、選択結果のそれらの秘密シェアを互いに共有することが阻止され得る。
クライアントデバイス110は、選択結果に対応するデジタルコンポーネントを決定する(324)。クライアントデバイス110がそれに対して計算システムMPC1およびMPC2から2つの秘密シェアを受信する選択結果ごとに、クライアントデバイス110は、2つの秘密シェアから選択結果を決定することができる。たとえば、下記により詳細に説明するような加法的秘密シェアライブラリを使用して、クライアントデバイス110は、選択結果の2つの秘密シェアを一緒に加算して選択結果を平文で取得することができる。このことは、デジタルコンポーネントに対する選択値、およびデジタルコンポーネントのためのメタデータ、たとえば、デジタルコンポーネントの識別情報、クライアントデバイス110がそこからデジタルコンポーネントをダウンロードできるロケーションなどへのアクセスを、クライアントデバイス110に与える。
クライアントデバイス110は、デジタルコンポーネントを表示する(326)。たとえば、アプリケーション112が、ステップ304において受信したコンテンツを有するデジタルコンポーネントを表示することができる。いくつかの実施態様において、クライアントデバイス110は、選択結果のデジタルコンポーネントを表示することができる。
いくつかの実装形態では、クライアントデバイス110は、MPCクラスタ130からのユーザグループメンバーシップに基づいてデジタルコンポーネントを要求することができる。クライアントデバイス110はまた、SSP170からのコンテキスト信号に基づいてデジタルコンポーネントを要求することができる。これらのコンテキスト信号は、上記で説明した同じコンテキスト信号、および任意選択で、リソースのデジタルコンポーネントスロットの数、デジタルコンポーネントスロットのタイプ、リソースとともに表示され得るデジタルコンポーネントのタイプおよび/またはフォーマットなどの、追加のコンテキスト信号を含むことができる。SSP170は、デジタルコンポーネントに対するコンテキスト信号および選択値に基づいて1つまたは複数のデジタルコンポーネントを選択することができ、選択されたデジタルコンポーネント(または、デジタルコンポーネントを識別するデータ)およびデジタルコンポーネントに対する選択値のうちの1つまたは複数を、クライアントデバイス110に提供することができる。クライアントデバイス110は、次いで、MPCクラスタ130から受信された選択結果のデジタルコンポーネント、およびSSP170によって選択されたデジタルコンポーネントを含む、デジタルコンポーネントのセットから、リソースとともに表示するためのデジタルコンポーネントを選択することができる。リソースが複数のデジタルコンポーネントスロットを含む場合、クライアントデバイス110は、スロットごとにそれぞれのデジタルコンポーネントをMPCクラスタ130およびSSP170に要求することができる。
クライアントデバイス110は、1つまたは複数のイベント通知をMPCクラスタ130に送信する(328)。たとえば、MPCクラスタ130から受信される選択結果のデジタルコンポーネントがクライアントデバイス110のアプリケーション112によって表示されると仮定すると、アプリケーション112は、デジタルコンポーネントの表示に応答してデジタルコンポーネントのインプレッション通知を送信することができる。別の例において、アプリケーション112は、たとえば、デジタルコンポーネントの選択/クリックなどのユーザインタラクションの検出に応答してユーザインタラクション通知を送信することができる。
ユーザインタラクション通知について、アプリケーション112は、ユーザがデジタルコンポーネントとインタラクトした場合は1の値を有することができ、または、デジタルコンポーネントが表示された後の指定の持続時間以内にユーザがデジタルコンポーネントとインタラクトしなかった場合は0の値を有することができるブールパラメータであるクリックパラメータclickedの秘密シェアを生成することができる。したがって、この例において、いずれの値も、デジタルコンポーネントが表示されることを示すが、1の値が、ユーザがデジタルコンポーネントとインタラクトしたことを示すことができる。アプリケーション112は、コンピュータシステムMPC1に、計算システムMPC1から受信されるSPID1およびクリックパラメータの第1の秘密シェア[clicked1]を含む第1の通知を送信することができる。同様に、アプリケーション112は、コンピュータシステムMPC2に、計算システムMPC2から受信されるSPID2およびクリックパラメータの第2の秘密シェア[clicked2]を含む第2の通知を送信することができる。別の例において、通知は、たとえば、クリックパラメータと同様の秘密シェアを使用して、デジタルコンポーネントがクライアントデバイス110において表示されたか否かを別個に示すことができる。
インプレッションおよびユーザインタラクション通知は、MPCクラスタ130が、デジタルコンポーネントを配信するペースを調整するために使用されるフィードバックコントローラのプロセス変数を更新することを可能にする。たとえば、プロセス変数がインプレッション率である場合、MPCクラスタ130は、インプレッション通知を使用して、デジタルコンポーネント(またはデジタルコンポーネントを含むキャンペーン)のインプレッションのカウントを更新することができる。プロセス変数がユーザインタラクション率である場合、MPCクラスタ130は、クリックパラメータを使用して、デジタルコンポーネント(またはデジタルコンポーネントを含むキャンペーン)に対するユーザインタラクションの数を更新することができる。特定の例において、計算システムMPC1は、SPID1を使用して、選択プロセスの記憶されているデータを得ることができ、計算システムMPC2は、SPID2を使用して、選択プロセスの記憶されているデータを得ることができる。次いで、MPCクラスタ130は、セキュアMPCプロセスを実施して、アプリケーション112によって表示されたデジタルコンポーネントのキャンペーンのプロセス変数(たとえば、インプレッション率、インタラクション率、コンバージョン率、および/またはリソース枯渇率)を更新することができる。同様に、MPCクラスタ130は、これらの通知を使用して、デジタルコンポーネントがk-匿名性条件を満たすか否かを判定するために使用されるカウントを更新することができる。
図4は、クライアントデバイスへの配信用のデジタルコンポーネントを選択するための例示的なプロセス400のスイムレーン図である。プロセス400の動作は、たとえば、MPCクラスタ130の計算システムMPC1または計算システムMPC2によって実施され得る。プロセス400の動作は、非一時的であり得る、1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス400の動作を実行させ得る。
プロセス400は、第1の値の選択プロセス、第2の値の選択プロセス、ならびに/または、ブーストおよび/もしくはフロアを含む選択プロセスに使用することができる。これらの変形の各々は、下記に説明する。図5に示す別の例示的なプロセス500は、階層を含む選択プロセスに使用することができる。プロセス500はまた、第1の値の選択プロセス、第2の値の選択プロセス、ブースト、および/またはフロアもサポートすることができる。
計算システムMPC1およびMPC2は、デジタルコンポーネントの選択値を決定および/または識別する(402)。計算システムMPC1およびMPC2は、クライアントデバイス110から受信されるデジタルコンポーネント要求に応答して選択値を決定することができる。図3を参照しながら説明したように、計算システムMPC1は、クライアントデバイス110から、コンテキスト信号、および、クライアントデバイス110のユーザのユーザグループ識別子を表す確率的データ構造のデータを含むデジタルコンポーネント要求を受信することができる。確率的データ構造のデータは、パラメータrand_var1a、rand_var1bおよびrand_var2を含むことができる。同様に、計算システムMPC2は、クライアントデバイス110から、コンテキスト信号ならびにパラメータ、すなわちベクトルB、rand_var1aおよびrand_var1bを受信することができる。コンテキスト信号は、たとえば、図1を参照しながら説明した第1段階検索鍵(SHA256(UG_Request_Key))などの検索鍵の形態であり得る。
選択値は、各計算システムMPC1およびMPC2によってそのデータが記憶される、記憶されるデジタルコンポーネントの選択値、ならびに、SSP170からデジタルコンポーネント選択プロセスについて受信されるJIT選択値を含むことができる。選択値がベクトルを使用して決定される状況について、各計算システムMPC1およびMPC2は、デジタルコンポーネントのベクトルのドット積を決定することによって、選択値を決定することができる。計算システムMPC1およびMPC2はまた、パブリッシャ140またはSSP170がそれに対してブーストを確立したデジタルコンポーネントの任意のブーストを適用し、および/または、パブリッシャ140またはSSP170によって確立される任意のフロアを執行することもできる。
計算システムMPC1は、適格なデジタルコンポーネントを識別する(404)。計算システムMPC1は、たとえば、図3を参照しながら説明したように、クライアントデバイス110から受信されるデジタルコンポーネント要求に対して適格なデジタルコンポーネントを識別することができる。適格なデジタルコンポーネントは、デジタルコンポーネント要求のコンテキスト信号に基づいて選択に対して適格であるデジタルコンポーネントである。たとえば、適格なデジタルコンポーネントは、たとえば、要求の検索鍵に一致する検索鍵を有するデジタルコンポーネントなど、デジタルコンポーネント要求のコンテキスト信号に一致するコンテキスト信号のセットを有するデジタルコンポーネントであり得る。
2段階LUTが使用される実施態様において、計算システムMPC1は、デジタルコンポーネント要求の第1段階検索鍵を使用して適格なデジタルコンポーネントを識別することができる。計算システムMPC1は、第1段階LUTにアクセスし、第1段階検索鍵を使用して、第1段階検索鍵によって表されるコンテキスト信号のセットについて、たとえば、その選択値が受信されている、表示されるのに適格であるデジタルコンポーネントの情報を含む第2段階LUTの行を識別することができる。たとえば、上述したように、第2段階LUTの各行は、デジタルコンポーネントに関する情報、および、コンテキスト信号のセットに基づく第2段階検索鍵を含む。したがって、計算システムMPC1は、第1段階検索鍵を使用して、デジタルコンポーネント要求において受信される第1段階検索鍵によって定義されるコンテキスト信号のセットに一致するコンテキスト信号のセットを有する第2段階LUTの行を識別することができる。これらの行は、表示されるのに適格であるか、または、デジタルコンポーネント要求において受信される第1段階検索鍵によって定義されるコンテキストに対して適格な選択値を有するデジタルコンポーネントに関する情報を含む。
計算システムMPC2は、適格なデジタルコンポーネントを識別する(406)。計算システムMPC2は、クライアントデバイス110から受信されるデジタルコンポーネント要求に対して適格なデジタルコンポーネントを識別することができる。計算システムMPC2は、計算システムMPC1と同様の方法で適格なデジタルコンポーネントを識別することができる。MPCクラスタ130がフロアを執行する実施態様において、各MPC計算システムMPC1およびMPC2は、適格なデジタルコンポーネントから、その対応するフロアを満たさない、たとえば、満足しないかまたは超えない選択値を有する任意の適格なデジタルコンポーネントをフィルタリングすることができる。
各適格なデジタルコンポーネントについて、計算システムMPC1およびMPC2は、デジタルコンポーネント要求に応答して、デジタルコンポーネントおよびその選択値が、クライアントデバイス110に配信するために選択されるための候補であるか否かを判定する(408)。候補デジタルコンポーネントは、デジタルコンポーネントが条件付きデジタルコンポーネントである場合は、デジタルコンポーネントに対する1つまたは複数の条件のすべてを満たす適格なデジタルコンポーネントである。コンテキストに基づいて適格である各無条件デジタルコンポーネントも、候補デジタルコンポーネントである。計算システムMPC1およびMPC2は、計算システムMPC1およびMPC2のいずれも候補デジタルコンポーネントを平文で識別することができないように、セキュアMPCプロセスを使用して候補デジタルコンポーネントを決定することができる。
ユーザグループメンバーシップ条件について、計算システムMPC1およびMPC2は、各適格なデジタルコンポーネント「i」のユーザグループメンバーシップ条件パラメータug_checkiのそれぞれの秘密シェアを計算することができる。計算システムMPC1によって維持されるユーザグループメンバーシップ条件パラメータug_checkiの第1の秘密シェアは、[ug_checki,1]として表すことができ、計算システムMPC2によって維持されるユーザグループメンバーシップ条件パラメータug_checkiの第2の秘密シェアは、[ug_checki,2]として表すことができる。括弧はパラメータの秘密シェアを表すために使用されている。
ユーザのユーザグループメンバーシップを表すためにカッコウフィルタが使用される実施態様について、計算システムMPC1は、計算システムMPC2と協働して、下記の関係1に従って[ug_checki,1]を計算する。
関係1において、Πは、複数のアイテムの乗算を示す。ここで、ug_id(x)は、選択値xと関連付けられるユーザグループ識別子ug_idを取り出すために使用される関数であり、{F1,…FN}は、カッコウフィルタテーブルA内のアイテムの可能なインデックスを計算するためのハッシュ関数のセットであり、rand_val1aは、デジタルコンポーネント要求において受信されるランダム値である。[Mx,1]は、配列[M1]内のx番目の要素である。==は、平文整数と、秘密整数の秘密シェアとの間の同等性テストである。==の結果は、0(等しくない)または1(等しい)のいずれかである秘密整数の秘密シェアである。ここで、[Mi,1]の値= [PRF(rand_val2a, i)1]である。
同様に、計算システムMPC2は、計算システムMPC2と協働して、下記の関係2に従って[ug_checki,2]を計算する。
ここで、[Mi,2]の値=Biである。
デジタルコンポーネントが選択されているユーザのユーザグループメンバーシップに対して条件付けられているデジタルコンポーネントについて、計算システムMPC1およびMPC2は、ユーザグループメンバーシップ条件パラメータug_checkiの秘密シェア[ug_checki,1]および[ug_checki,2]を計算することができる。2つの秘密シェアの組合せは、ユーザがデジタルコンポーネントに対応するユーザグループのメンバーであるか否かを表すブール値であり得る。たとえば、1の値は、ユーザがメンバーであることを表すことができ、0の値は、ユーザがメンバーでないことを表すことができる。ユーザのユーザグループメンバーシップに対して条件付けられていないデジタルコンポーネントについて、計算システムMPC1およびMPC2は、組合せが、ユーザがデジタルコンポーネントに対応するユーザグループのメンバーであることを示す値(たとえば、1)を有するように、秘密シェア[ug_checki,1]および[ug_checki,2]のデフォルト値を使用することができる。
ユーザのユーザグループメンバーシップを表すためにブルームフィルタが使用される実施態様において、計算システムMPC1およびMPC2は、図8を参照しながら説明されるように、ブルームフィルタに問い合わせることができる。結果は、計算システムMPC1が、ブルームフィルタの各ハッシュ関数について、ユーザグループメンバーシップ条件パラメータの第1の秘密シェア[ug_checki,1]を有することである。同様に、計算システムMPC2は、ブルームフィルタの各ハッシュ関数について、ユーザグループメンバーシップ条件パラメータの第2の秘密シェア[ug_checki,2]を有する。デジタルコンポーネントがユーザグループメンバーシップ条件を満たすためには、ブルームフィルタの各ハッシュ値のユーザグループメンバーシップ条件パラメータ、すなわち、ug_checkiは、真、すなわち1のブール値を有する必要があることになる。各ハッシュ値の秘密シェアは、デジタルコンポーネントの候補パラメータの秘密シェアの最後の計算に含まれ得る。
計算システムMPC1およびMPC2はまた、協働して、頻度制御またはミューティングに対して条件付けられている各デジタルコンポーネントiのブロックデジタルコンポーネントパラメータblocked_checkiのそれぞれの秘密シェア[blocked_checki,1]および[blocked_checki,2]を計算することもできる。2つの秘密シェアの組合せは、頻度制御に基づいて(たとえば、デジタルコンポーネントが一定の持続時間中に閾回数よりも多くユーザに提供されていない)、および/または、ユーザが、デジタルコンポーネントがユーザに表示されるようにしないことを選択したか否かに基づいて、デジタルコンポーネントがブロックデジタルコンポーネント条件を満たすか否かを表すブール値であり得る。たとえば、真または1の値のブール値は、これらの要因に基づいてデジタルコンポーネントをユーザに表示することができることを表すことができ、偽または0の値のブール値は、これらの要因に基づいてデジタルコンポーネントをユーザに表示することができないことを表すことができる。
ブロックデジタルコンポーネントパラメータの秘密シェアを決定するために、計算システムMPC1およびMPC2は、ブロックデジタルコンポーネントの識別子を表すブルームフィルタのシェア、たとえば配列を使用することができる。アプリケーション112は、図8を参照しながら説明されているように、ブロックデジタルコンポーネントの識別子を表すブルームフィルタを生成し、ブルームフィルタを表すデータを計算システムMPC1およびMPC2に送信することができる。計算システムMPC1およびMPC2は、次いで、図8を参照しながら説明されているように、ブルームフィルタを表す配列を使用してブルームフィルタに問い合わせて、秘密シェア[blocked_checki,1]および[blocked_checki,2]を得ることができる。
計算システムMPC1およびMPC2はまた、協働して、たとえば、フィードバックコントローラを使用してペースを調整される各デジタルコンポーネントiのペーシング制御チェックパラメータpacing_checkiのそれぞれの秘密シェア[pacing_checki,1]および[pacing_checki,2]を計算することもできる。2つの秘密シェアの組合せは、たとえば、フィードバックコントローラの出力に基づいて、デジタルコンポーネントがペーシング条件を満たすか否かを表すブール値とすることができる。たとえば、デジタルコンポーネントが目標インプレッション率に関連して頻繁に提供されすぎている場合、フィードバックコントローラの出力は、デジタルコンポーネントがこのデジタルコンポーネント選択プロセスに対して適格でないことを示すことができる。真または1の値のブール値は、デジタルコンポーネントが、たとえば、この選択プロセスに対してスロットリングされていないなど、ペーシング条件を満たすことを表すことができ、偽または0の値のブール値は、デジタルコンポーネントが、たとえば、この選択プロセスに対してスロットリングされているなど、ペーシング条件を満たさないことを表すことができる。
リソース枯渇(たとえば、バジェット)およびペーシング規則を執行するために、計算システムMPC1およびMPC2は、フィードバックコントローラおよびリソース枯渇条件を使用して決定される確率を使用して、デジタルコンポーネントがデジタルコンポーネント選択プロセスに参加しないようにランダムにブロックすることができる。デジタルコンポーネントを含むキャンペーンがいかなる追加のリソースも有しない場合、確率は1に設定される。他の様態で、キャンペーンが配信スケジュールよりも早い場合、たとえば、ペーシング制御チェックパラメータpacing_checkiが0の値を有するように秘密シェア[pacing_checki,1]および[pacing_checki,2]を計算することによって、計算システムMPC1およびMPC2がデジタルコンポーネントをデジタルコンポーネント選択プロセスからブロックする可能性がより高くなるように、確率は高く(たとえば、0を上回り、1に近くなるように)設定される。キャンペーンが配信スケジュールの後である場合、確率はより低い。
計算システムMPC1およびMPC2は、フィードバックコントローラを使用して加法的秘密シェアにおける各キャンペーンのペーシングセレクタパラメータpacing_selectorを定期的に計算することができる。概念的に、ペーシングセレクタパラメータは、最大範囲の倍数でスケールアップされる、スロットリング確率である。
各デジタルコンポーネント要求および各デジタルコンポーネントについて、計算システムMPC1およびMPC2は、[0, maximum range]内に均一に分布する秘密数を計算する。そのランダム数がペーシングセレクタパラメータpacing_selector以下である場合、計算システムMPC1およびMPC2は、たとえば、ペーシング制御チェックパラメータpacing_checkiが0の値を有するように秘密シェア[pacing_checki,1]および[pacing_checki,2]を計算することによって、デジタルコンポーネントがデジタルコンポーネント選択プロセスに参加しないようにブロックする。
デジタルコンポーネント選択プロセスの参加者のユーザプライバシーおよび秘密情報を保護するために、ランダム数とペーシングセレクタパラメータの両方が、加法的秘密シェア内にある。2つの秘密シェア間の比較は、文字化け回路プロトコルを使用して実施することができる。両方の秘密シェアを6または7ビットに制限することによって、比較プロトコルは、計算システムMPC1およびMPC2の間の1または2ラウンドの通信を必要とし得る。
キャンペーンのペーシングセレクタパラメータを決定するために、計算システムは、各キャンペーンに使用されるリソースの量を、resources_used_campaign =Σ(clearing_value×is_dc_the_winner)として計算することができ、この和は、キャンペーンのデジタルコンポーネントを含むデジタルコンポーネント選択プロセスの全体にわたり、パラメータclearing_valueは、デジタルコンポーネント選択プロセスのクリア値であり、is_dc_the_winnerは、デジタルコンポーネント選択プロセスにおけるデジタルコンポーネントの勝者パラメータである。この計算は、各計算システムMPC1およびMPC2が使用されるリソースの量の秘密シェアを保持するように、秘密シェアにおいて実施され得る。計算システムMPC1およびMPC2は、次いで、使用されるリソースの量、すなわち、resources_used_campaignが秘密シェアにおいてキャンペーンに割り振られるリソースの総量よりも多いか否かを判定することによって、キャンペーンのリソース消耗パラメータresources_exhaustedを計算することができる。
計算システムMPC1およびMPC2は、各キャンペーンのペーシングセレクタパラメータpacing_selectorを、pacing_selector =resources_exhausted×maximum range +(1-resources_exhausted)×outputとして計算することができ、パラメータoutputはフィードバックコントローラの出力である。この計算は、秘密シェアにおける乗算を計算するために、計算システムMPC1およびMPC2の間の1回のRPCを使用することができる。しかしながら、計算は、任意のレイテンシが追加されることを阻止するために、オフラインで定期的に実施されてもよい。
計算システムMPC1およびMPC2は、協働して、いくつかの実施態様においてはすべてのデジタルコンポーネントに適用することができる、k-匿名性条件を満たさなければならない各デジタルコンポーネントiのk-匿名性チェックパラメータkanonymity_checkiの[kanonymity_checki,1]および[kanonymity_checki,2]のそれぞれの秘密シェアを計算することもできる。2つの秘密シェアの組合せは、デジタルコンポーネントがk-匿名性条件を満たすか否かを表すブール値とすることができる。たとえば、1の値は、デジタルコンポーネントがk-匿名性を満たすことを表すことができ、0の値は、デジタルコンポーネントがk-匿名性を満たさず、デジタルコンポーネント選択プロセスからブロックされるべきであることを表すことができる。
計算システムMPC1およびMPC2は、ログ(図9を参照しながら説明されるような)を定期的に処理して、勝者デジタルコンポーネントがアプリケーション112によって示されており(または示されている可能性があり)、たとえば、対応する選択プロセス識別子がインプレッション通知において受信されているデジタルコンポーネント選択プロセスを識別することができる。これらの選択プロセスの間で、計算システムMPC1およびMPC2は、ユーザのアプリケーション112によって示された(または示されている可能性がある)インプレッションの数を、impression_showi=Σ(is_dc_the_winner_i)としてカウントする。ここで、iは、デジタルコンポーネントまたはキャンペーンを表すことができる。計算は、各計算システムMPC1およびMPC2がインプレッションの数impression_showiの秘密シェアを有するように、秘密シェアにおいて実施される。計算システムMPC1およびMPC2は、次いで、たとえば、インプレッションの数を秘密シェアにわたってkと比較することによって、インプレッションの数が値kを超えるか否かを判定することができる。
各条件付きデジタルコンポーネント(たとえば、少なくとも1つの条件を有するデジタルコンポーネント)の各条件について、各計算システムMPC1およびMPC2は、デジタルコンポーネントに対する各条件のパラメータの対応する秘密シェアを記憶することができる。このように、少なくとも1つのMPC計算システムが公正である限り、計算システムMPC1もMPC2も、パラメータの値が平文ではわからない。各デジタルコンポーネントは、0以上の条件について条件付けられ得る。所与のデジタルコンポーネント選択プロセスについて、いくつかのデジタルコンポーネントは、他のデジタルコンポーネントとは異なる条件および/または異なる条件量を有することができる。
いくつかの例示的な条件が上記で提供されているが、他の条件も使用されてもよい。概して、計算システムMPC1およびMPC2は、セキュアMPCプロセスを使用して条件パラメータの秘密シェアを計算することができる。条件パラメータを決定するための基準および技法は変化し得る。いくつかの実施態様において、条件パラメータの秘密シェアは、たとえば、計算システムMPC1およびMPC2が条件パラメータを計算しないように、別の計算システムから受信することができる。
計算システムMPC1およびMPC2は、条件パラメータの秘密シェアを使用して、条件付きデジタルコンポーネントがデジタルコンポーネント選択プロセスの候補であるか否かを判定することができる。計算システムMPC1およびMPC2は、条件付きデジタルコンポーネントの条件パラメータの秘密シェアを使用して、各条件付きデジタルコンポーネントiの候補パラメータis_dc_a_candidateiの秘密シェアを計算することができる。概して、条件付きデジタルコンポーネントが上述した条件の各々について条件付けされる場合、デジタルコンポーネントiの候補パラメータは、下記の関係3を使用して計算することができる。
is_dc_a_candidatei = ug_checki AND blocked_checki AND pacing_checki AND kanonymity_checki
各条件パラメータの値は秘密シェア内にあるため、計算システムMPC1およびMPC2は、ラウンドトリップリモートプロシージャコール(RPC)を使用してセキュアMPCプロセスにおいて協働して、条件パラメータの秘密シェアを使用してデジタルコンポーネントiの候補パラメータの対応する秘密シェア[is_dc_a_candidatei,1]および[is_dc_a_candidatei,2]を決定することができる。論理AND演算を決定するための任意の適切な秘密共有アルゴリズムを使用して、デジタルコンポーネントiの候補パラメータの秘密シェア[is_dc_a_candidatei,1]および[is_dc_a_candidatei,2]を決定することができる。計算システムMPC1およびMPC2は、それらの条件の条件パラメータの秘密シェアのみを使用して、候補パラメータの秘密シェアを決定することができる。このセキュアMPCプロセスの終わりとして、計算システムMPC1は、各条件付きデジタルコンポーネントの候補パラメータの第1の秘密シェア[is_dc_a_candidatei,1]を保持し、計算システムMPC2は、各条件付きデジタルコンポーネントの候補パラメータの第2の秘密シェア[is_dc_a_candidatei,2]を保持する。
いくつかの実施態様において、計算システムMPC1およびMPC2は、文字化け回路プロトコルを使用して各デジタルコンポーネントについて関係3を評価する。この例において、計算システムMPC1またはMPC2のうちの1つが、文字化け回路を構築し得る。この例について、計算システムMPC1が文字化け回路を構築すると仮定する。計算システムMPC1は、それ自体の秘密シェアを知っており、デジタルコンポーネントの候補パラメータが真または1になるために、計算システムMPC2の秘密シェアが保持しなければならない唯一の可能なビットパターンが存在することも知っている。そのような特性によって、計算システムMPC1は、たとえば、関係3において合計で約50個のブールパラメータが存在する場合に、文字化け回路を構築するために最大50個のみのゲートを必要とする。
関係3において、1つのみのユーザグループメンバーシップ条件パラメータug_checkiが存在する。しかしながら、ユーザのユーザグループメンバーシップを表すためにブルームフィルタが使用される場合、関係3は、ブルームフィルタの各ハッシュ関数のそれぞれのユーザグループメンバーシップ条件パラメータug_checkiを含むことができる。同様に、ブロックデジタルコンポーネントがブルームフィルタを使用して表される場合、関係3は、このブルームフィルタの各ハッシュ関数のそれぞれのブロックデジタルコンポーネントパラメータblocked_checkiを含む。関係3において、pacing_checkiは、デジタルコンポーネントの所有者がペーシングチェックを可能にする場合にのみ存在する。
計算システムMPC1は、選択値に基づいてデジタルコンポーネントの順序を決定する(410)。同様に、計算システムMPC2は、選択値に基づいてデジタルコンポーネントの順序を決定する(412)。これら2つの順序は、順序付けプロセスの入力が2つの計算システムMPC1およびMPC2上で同じであるため、正確に同じであるはずである。各計算システムMPC1およびMPC2が、デジタルコンポーネントの順序を決定することができる。各順序は、ステップ408において候補適格性について評価された候補デジタルコンポーネントおよび他のデジタルコンポーネントを含むことができる。たとえば、順序は、デジタルコンポーネント選択プロセスに利用可能であるすべての利用可能なデジタルコンポーネント、デジタルコンポーネント選択プロセスに対するすべての適格なデジタルコンポーネント(たとえば、コンテキスト信号に基づいて適格)、または、使用される場合は第2段階LUT内のすべてのデジタルコンポーネントを含むことができる。順序は、最高の選択値を有するデジタルコンポーネントから最低の選択値を有するデジタルコンポーネントまでであり得る。いくつかの実装形態では、その順序に対して使用される選択値は、たとえば、DSP150および/またはSSP170との任意の共有の後、選択されたデジタルコンポーネントがそれとともに表示されることになるリソースのパブリッシャ140に提供されることになる値に、任意の適用可能なブーストを加えた値であり得る。
選択値が平文をなすとき、計算システムMPC1およびMPC2は、デジタルコンポーネントの順序を決定するためのいかなるラウンドトリップ計算も実行しなくてよい。代わりに、各計算システムMPC1およびMPC2は、選択値を独立して順序付けすることができる。各計算システムMPC1およびMPC2が各選択値のそれぞれの秘密シェアを有して、各計算システムMPC1およびMPC2において秘密シェアとして選択値が記憶された場合、計算システムMPC1およびMPC2は、選択値を順序付けするためのラウンドトリップ計算を使用して、セキュアMPCプロセスを実行することができる。2つ以上の選択値の間に連結が存在する場合、計算システムMPC1およびMPC2は、これらの選択値に対応するデジタルコンポーネントの他のメタデータを使用して、連結を確定的に破壊することができる。
計算システムMPC1およびMPC2は、各候補デジタルコンポーネントの累積値の秘密シェアを決定する(414)。概念的に、所与のデジタルコンポーネントの累積値は、所与のデジタルコンポーネントが候補である場合であっても所与のデジタルコンポーネントを除外した、順序の最初から所与のデジタルコンポーネントの選択値までの候補デジタルコンポーネントの総数を表す。すなわち、累積値は、所与のデジタルコンポーネントよりも選択に対して適格である候補デジタルコンポーネントの数を表す。この概念は、下記のTable 3(表3)に示されている。
いくつかの実施態様において、所与のデジタルコンポーネントの累積値は、所与のデジタルコンポーネントが候補である場合は所与のデジタルコンポーネントを含む、順序の最初から所与のデジタルコンポーネントまでの候補デジタルコンポーネントの総数を表す。この例では、第4の列は、累積値が0ではなく1に等しいか否かを表す。簡潔にするために、残りの論述は、所与のデジタルコンポーネントの累積値が、所与のデジタルコンポーネントが候補である場合であっても所与のデジタルコンポーネントを除外した、順序の最初から所与のデジタルコンポーネントまでの候補デジタルコンポーネントの総数を表す、第1の例に関するものである。
概念的に、Table 3(表3)において、累積値(acc)は、順序の最初から順序の最後まで進行するにつれて、1に等しい候補パラメータis_dc_a_candidateを有する各デジタルコンポーネントについてインクリメントされる。後述するように、累積値accの計算は、秘密シェアにおいて実施される。たとえば、最高の選択値の候補パラメータis_dc_a_candidateが0に等しいため、最高の選択値を有するデジタルコンポーネントの累積値accは0である。2番目に高いデジタルコンポーネントの候補パラメータis_dc_a_candidateは1に等しいが、2番目に高いデジタルコンポーネントを上回る選択値はいずれも1に等しい候補パラメータis_dc_a_candidateを有しないため、2番目に高いデジタルコンポーネントの累積値accも0である。順序を下ると、3番目に高い選択デジタルコンポーネントの候補パラメータis_dc_a_candidateの累積値accは、1の値を有する2番目に高い選択値の候補パラメータis_dc_a_candidateに基づいて、1の値にインクリメントされる。3番目に高いデジタルコンポーネントの候補パラメータis_dc_a _candidateは0であるため、4番目のデジタルコンポーネントの累積値acc はインクリメントされず、3番目に高いデジタルコンポーネントのように0の値を有する。
Table 3(表3)を使用して、計算システムMPC1およびMPC2は、クライアントデバイス110への配信のために、Table 3(表3)の第4の列に示すように、全体的な候補パラメータis_dc_a_candidateが1の値を有し、累積値accが0の値を有する選択値に対応するデジタルコンポーネントを選択する。これは、候補パラメータis_dc_a_candidateが1の値を有する最高に順序付けされた選択値に対応するデジタルコンポーネントを表す。ユーザプライバシーを維持し、ユーザデータが漏洩しないことを保証するために、候補パラメータis_dc_a_candidateは計算システムMPC1およびMPC2の秘密シェア内にあるため、計算システムMPC1およびMPC2は、各デジタルコンポーネントの累積値accの秘密シェアを決定し、ラウンドトリップ計算を使用して、いずれのデジタルコンポーネントが、0に等しい累積値accおよび1に等しい候補パラメータis_dc_a_candidateを有するかを判定する。
計算システムMPC1およびMPC2は、いくつかの実施態様においては秘密シェアアルゴリズムに応じて一切のラウンドトリップ計算なしに独立して各デジタルコンポーネントの累積値accのそれらの秘密シェアを決定することができる。たとえば、計算システムMPC1は、各デジタルコンポーネントiについて、Table 3(表3)を参照しながら上述したように、最高から最低への順序ですべてのデジタルコンポーネントをトラバースし、進行中にデジタルコンポーネントの候補パラメータis_dc_a_candidateを合計することによって、累積値accの第1のシェア[acci,1]を決定することができる。同様に、計算システムMPC2は、各デジタルコンポーネントiについて、最高から最低への順序ですべてのデジタルコンポーネントをトラバースし、進行中にデジタルコンポーネントの候補パラメータis_dc_a_candidateを合計することによって、累積値accの第2のシェア[acci,2]を決定することができる。
計算システムMPC1およびMPC2は、各デジタルコンポーネントについて、累積値が指定の値を有するか否かを示す結果の秘密シェアを決定する(416)。指定の値は、Table 3(表3)の列3および4に示すように、0の値であり得る。上述したように、累積値が0に等しく、全体的な候補パラメータis_dc_a_candidateが1であるデジタルコンポーネントは、候補デジタルコンポーネントの中で最高の選択値を有するデジタルコンポーネントである。
計算システムMPC1およびMPC2は、各デジタルコンポーネントiの秘密シェアに関して等価演算acci == 0を計算するために、セキュアMPCプロセスの一部としての、たとえば複数回のRPCなどの複数ランドの計算に関与することができる。等価演算は、デジタルコンポーネントiの累積値acciが0の値を有するか否かを判定するために使用される。このプロセスの終了において、計算システムMPC1は、各デジタルコンポーネントiについて、結果acci == 0の一方の秘密シェアを有し、計算システムMPC2は、各デジタルコンポーネントについて、結果acci == 0の他方の秘密シェアを有する。
計算システムMPC1およびMPC2は、各デジタルコンポーネントiの勝者パラメータis_dc_the_winneriの秘密シェアを決定する(418)。計算システムMPC1およびMPC2は、各デジタルコンポーネントiについて、累積値acci == 0の秘密シェアおよび各デジタルコンポーネントiの候補パラメータis_dc_a_candidateiの秘密シェアに基づいて、勝者パラメータis_dc_the_winneriを決定することができる。各デジタルコンポーネントiの勝者パラメータis_dc_the_winneriは、たとえば、デジタルコンポーネントiがデジタルコンポーネント要求に応答してクライアントデバイス110への配信のために選択されるか否かなど、デジタルコンポーネントiが選択プロセスの勝者であるか否かを示すブール値であり得る。
いくつかの実施態様において、計算システムMPC1およびMPC2は、秘密シェア乗算プロトコルを実行して、各選択値について、秘密シェアに関して勝者パラメータis_dc_the_winneri==(is_dc_a_candidatei×(acci==0))を計算することができる。これは、2つの秘密シェアを乗算するための、計算システムMPC1およびMPC2の間の1回のRPCを含むことができる。このMPCプロセスの終了において、計算システムMPC1は、[is_dc_the_winneri,1] = [is_dc_a_candidatei,1] x ([acci,1] == 1)として表される結果is_dc_the_winneriの1つの秘密シェアを有する。同様に、計算システムMPC2は、[is_dc_the_winneri,2] = [is_dc_a_candidatesv, 2] x ([acci, 2] == 0)として表される結果is_dc_the_winneriの他の秘密シェアを有する。すべてのデジタルコンポーネントについて、最大で1つのデジタルコンポーネントが、1に等しい勝者パラメータis_dc_the_winneriを有し、このデジタルコンポーネントが、クライアントデバイス110への配信のために選択されるデジタルコンポーネントであることに留意されたい。他のすべてのパラメータは0に等しい。
第1の値の選択プロセスについて、計算システムMPC1およびMPC2は、各デジタルコンポーネントiの勝者パラメータis_dc_the_winneriを決定するために、同様のプロセスを実施することができる。たとえば、計算システムMPC1およびMPC2は、秘密シェア同等性テストを実施して、第1の選択値のパラメータmaybe_first_svi = (acci == 0)の秘密シェアを決定することができる。デジタルコンポーネントiの第1の選択値のパラメータmaybe_first_sviは、デジタルコンポーネントの選択値が候補デジタルコンポーネントの間で最高であり得るか否かを表すブール値であり得る。選択値は、選択値に対応するデジタルコンポーネントが実際に候補デジタルコンポーネントである場合にのみ、候補デジタルコンポーネントの間で最高の選択値となる。したがって、デジタルコンポーネントiの第1の選択値のパラメータmaybe_first_sviは、デジタルコンポーネントが実際に候補デジタルコンポーネントである場合に、デジタルコンポーネントが最高の選択値を有するか否かを表す。この同等性テストの終了において、計算システムMPC1は、デジタルコンポーネントiの第1の選択値のパラメータmaybe_first_sviの第1の秘密シェア[maybe_first_svi,1]を有し、計算システムMPC2は、デジタルコンポーネントiの第1の選択値のパラメータmaybe_first_sviの第2の秘密シェア[maybe_first_svi,2]を有する。
計算システムMPC1およびMPC2は、次いで、下記の関係4を使用して、秘密シェアに関して各デジタルコンポーネントiの勝者パラメータis_dc_the_winneriを計算することができる。
is_dc_the_winneri==((is_dc_a_candidatei = TRUE) AND (maybe_first_svi =TRUE))
計算システムMPC1およびMPC2は、選択結果を決定する(420)。いくつかの実施態様において、計算システムMPC1およびMPC2は、デジタルコンポーネントの勝者パラメータおよびデジタルコンポーネントのデジタルコンポーネント情報要素dc_information_elementに基づいて、選択結果を計算することができる。上述したように、デジタルコンポーネントのデジタルコンポーネント情報要素dc_information_elementは、デジタルコンポーネントの選択値およびデジタルコンポーネントの他のデータを含むことができる。
概念的に、計算システムMPC1およびMPC2は、下記の関係5を使用して選択結果パラメータ「result」を計算することができる。
result=Σi is_dc_the_winneri×dc_information_elementi
すなわち、計算システムMPC1およびMPC2は、すべてのデジタルコンポーネントにわたって、勝者パラメータis_dc_the_winneriおよびデジタルコンポーネント情報要素dc_information_elementiの積の総和を決定することができる。この例において、選択結果は、候補デジタルコンポーネントがない場合は値0を有するか、または、1に等しい勝者パラメータis_dc_the_winneriを有する選択されるデジタルコンポーネントのデジタルコンポーネント情報要素dc_information_elementに等しい値を有するかのいずれかになる。別の例において、デジタルコンポーネント情報要素dc_information_elementは、関係5において、デジタルコンポーネントの選択値と置き換えることができる。この例において、選択結果は、候補デジタルコンポーネントがない場合は値0を有するか、または、1に等しい勝者パラメータis_dc_the_winneriを有する選択されるデジタルコンポーネントの選択値に等しい値を有するかのいずれかになる。
秘密シェアにおける計算を実施するために、計算システムMPC1はすべてのデジタルコンポーネントを取り、平文をなすことができる、デジタルコンポーネントのデジタルコンポーネント情報要素dc_information_elementiを、デジタルコンポーネントの勝者パラメータの第1の秘密シェア[is_dc_the_winneri,1]で乗算する。計算システムMPC1は、次いで、これらの積の総和を決定することができ、デジタルコンポーネント要求をサブミットしたクライアントデバイス110にその総和を返すことができる。すなわち、計算システムMPC1は、結果の第1の秘密シェア[result1]として、下記の関係6を使用して総和を決定することができる。
[result1]=Σi([is_dc_the_winneri]×dc_information_elementi)
計算システムMPC2は、下記の関係7を使用して、類似の計算を実施して結果の第2のシェア[result2]を決定することができる。
[result2]=Σi([is_dc_the_winneri]×dc_information_elementi)
計算システムMPC1は、選択結果の第1のシェア[result1]をクライアントデバイス110に送信する(422)。同様に、計算システムMPC2は、選択結果の第2のシェア[result2]をクライアントデバイス110に送信する(424)。次いで、アプリケーション112は、たとえば、加法的秘密シェアアルゴリズムが採用される場合は、秘密シェアの総和を決定することによって、2つの秘密シェア[result1]および[result2]を使用して選択結果resultを平文で再構築することができる。選択結果が0の値を有する場合、MPCクラスタ130は、クライアントデバイス110に配信するためのデジタルコンポーネントを識別していない。そうでない場合、選択結果は、デジタルコンポーネント情報要素dc_information_elementに等しい値を有する。アプリケーション112は、デジタルコンポーネント情報要素dc_information_elementを解析して、デジタルコンポーネントの選択値およびメタデータを得ることができる。次いで、アプリケーション112は、上述したように、デジタルコンポーネントを表示するか、または、当該デジタルコンポーネントおよびSSP170から受信される他のデジタルコンポーネントを使用して選択プロセスを実施することができる。
いくつかの実施態様において、選択されるデジタルコンポーネントは、計算システムMPC1またはMPC2のいずれかが、選択されるデジタルコンポーネントに平文でアクセスすることが可能になるのを阻止し、デジタルコンポーネントのクライアントデバイス110への送信におけるレイテンシを低減するために、マスクを使用してクライアントデバイス110に送信される。この例において、アプリケーション112は、各デジタルコンポーネント要求のノンスを選択し、デジタルコンポーネント要求とともにノンスを送信することができる。アプリケーション112は、計算システムMPC1またはMPC2のうちの一方にノンスを送信することができる。例示を目的として、ノンスは計算システムMPC2に送信されると仮定する。
アプリケーション112と計算システムMPC2の両方は、同じアルゴリズムおよび同じ入力を用いて、最大のデジタルコンポーネント創作物と同じサイズのマスクを独立して計算することができる。たとえば、マスクのi番目のビットは、PRF(nonce, i)として表すことができ、PRFは、擬似ランダム関数を表す。アプリケーション112と計算システムMPC2の両方は、ノンスおよびマスクを計算システムMPC1から厳密に秘密のままにすることができる。
選択されるデジタルコンポーネントをアプリケーション112に送信するために、計算システムMPC2は、[result2]ビット単位XORマスクを計算システムMPC1に送信することができる。次いで、計算システムMPC1は、たとえば、デジタルコンポーネント要求への応答として、[result1]ビット単位XOR([result2]ビット単位XORマスク)をアプリケーション112に、選択結果として送信する。
アプリケーション112は、デジタルコンポーネントの創作物として、[result1]ビット単位XOR([result2]ビット単位XORマスク)ビット単位XORマスクを計算する。これは、[result1]ビット単位XOR[result2]と等価である。これによって、プライベート情報抽出保証を保持しながら、最大の創作物のサイズに必要な帯域幅が低減する。これによって、上述したような、選択結果の2つの秘密シェアの送信に対する応答の帯域幅が低減する。このように、他のプロセスにおけるようなデジタルコンポーネント創作物の送信に対して、このプライバシー保持技法においては、追加のレイテンシまたは帯域幅消費がほとんどまたはまったくない。
第2の値の選択プロセスについて、計算システムMPC1およびMPC2は、各デジタルコンポーネントについて、第2の選択値のパラメータmaybe_second_sviの秘密シェアを計算することができる。デジタルコンポーネントiの第2の選択値のパラメータは、デジタルコンポーネントの選択値が候補デジタルコンポーネントの間で2番目に高い選択値であり得るか否かを表すブール値であり得る。選択値は、選択値に対応するデジタルコンポーネントが実際に候補デジタルコンポーネントである場合にのみ、候補デジタルコンポーネントの間で2番目に高い選択値となる。したがって、デジタルコンポーネントiの第2の選択値のパラメータmaybe_second_sviは、デジタルコンポーネントが実際に候補デジタルコンポーネントである場合に、デジタルコンポーネントが2番目に高い選択値を有するか否かを表す。計算システムMPC1およびMPC2は、秘密シェア同等性テストを実施して、第2の選択値のパラメータmaybe_second_svi = (acci == 1)の秘密シェアを決定することができる。
この同等性テストの終了において、計算システムMPC1は、デジタルコンポーネントiの第2の選択値のパラメータmaybe_second_sviの第1の秘密シェア[maybe_second_svi,1]を有し、計算システムMPC2は、デジタルコンポーネントiの第2の選択値のパラメータmaybe_second_sviの第2の秘密シェア[maybe_second_svi,2]を有する。
次いで、計算システムMPC1およびMPC2は、各デジタルコンポーネントiについて、is_dc_a_candidatei AND maybe_second_sviの結果が真または1のブール値であるか否かを判定することによって、秘密シェアに関して2番目に高い選択値を有する候補デジタルコンポーネントを決定することができる。すなわち、計算システムMPC1およびMPC2は、いずれのデジタルコンポーネントが、候補デジタルコンポーネントであり、真または1のブール値を有する第2の選択値のパラメータmaybe_second_sviを有するかを判定することができる。
概念的に、計算システムMPC1およびMPC2は、下記の関係8を使用して候補の間で2番目に高い選択値を計算することができる。
second_selection_value=Σi(selectionvaluei x (is_dc_a_candidatei AND maybe_second_svi ))
関係8において、パラメータ「selectionvaluei」は、(任意のブーストを有する)デジタルコンポーネントiの選択値であり、パラメータ「second_selection_value」は、候補デジタルコンポーネントの間で2番目に高い選択値の値である。関係を使用して、第2の選択値は、候補であり、真のブール値を有する第2の選択値のパラメータを有するデジタルコンポーネントの選択値である。この関係におけるブール値は、1(真)または0(偽)の値として処理することができる。
秘密シェアにおいて、計算システムMPC1およびMPC2は、秘密シェアを用いてis_dc_a_candidatei AND maybe_second_sviの結果を計算し、その結果をZ2空間内の2つの加法的秘密シェア(たとえば、加算し、その後mod 2をとった値)として表す。加えて、選択値は平文である。関係8は、乗算を、平文表現における選択値内の各ビットと、各計算システムMPC1およびMPC2によって保持されるis_dc_a_candidatei AND maybe_second_sviの結果の1ビット秘密シェアとの間のビット単位論理AND演算に置き換えることによって単純化することができる。加えて、総和を、ビット単位XOR演算に置き換えることができる。
図5は、クライアントデバイスへの配信用のデジタルコンポーネントを選択するための例示的なプロセス500のスイムレーン図である。プロセス500の動作は、たとえば、MPCクラスタ130の計算システムMPC1または計算システムMPC2によって実施され得る。プロセス500の動作は、非一時的であり得る、1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス500の動作を実行させ得る。上記で言及したように、プロセス500は、階層を含む選択プロセスに使用することができる。
計算システムMPC1およびMPC2は、デジタルコンポーネントの選択値を決定する(502)。計算システムMPC1およびMPC2は、クライアントデバイス110からのデジタルコンポーネント要求の受信に応答して選択値を取得または決定することができる。計算システムMPC1は、デジタルコンポーネント選択プロセスに対して適格である、適格なデジタルコンポーネントを識別する(504)。計算システムMPC2もまた、デジタルコンポーネント選択プロセスに対して適格である、適格なデジタルコンポーネントを識別する(506)。各適格なデジタルコンポーネントについて、計算システムMPC1およびMPC2は、デジタルコンポーネントがデジタルコンポーネント選択プロセスの候補であるか否かを判定する(508)。ステップ502~508は、図4に示すプロセス400のステップ402~408と同じであるかまたは類似し得る。
計算システムMPC1は、デジタルコンポーネントを階層にグループ化する(510)。上述したように、パブリッシャは、DSP150および/またはデジタルコンポーネントプロバイダ160の階層を確立することができる。パブリッシャの階層は、最高優先度階層、最低優先度階層、および、任意選択的に、最高優先度と最低優先度との間の1つまたは複数の階層を含むことができる。
計算システムMPC1は、デジタルコンポーネントに対応し、たとえば、デジタルコンポーネントの選択値または値のベクトルを与えられている、DSP150またはデジタルコンポーネントプロバイダ160に基づいて、各デジタルコンポーネントの階層を決定することができる。次いで、計算システムMPC1は、デジタルコンポーネントをそれらのそれぞれの階層にグループ化することができる。同様に、計算システムMPC2は、デジタルコンポーネントをそれらのそれぞれの階層にグループ化することができる(512)。階層のデジタルコンポーネントのグループは、計算システムMPC1とMPC2の両方について同じであるべきである。いくつかの実施態様において、SSP170は、階層を明示的に決定し、次いで、MPCクラスタ130に記憶、たとえばキャッシュされることになる各選択値のメタデータに符号化する。
計算システムMPC1およびMPC2は、次いで、それらの階層のうちの1つまたは複数の各々について個々の選択プロセスを実施して、デジタルコンポーネント要求に応答して提供するデジタルコンポーネントを選択することができる(513)。いくつかの実施態様において、計算システムMPC1およびMPC2は、選択プロセスを階層に対して並列に実施する。いくつかの実施態様において、計算システムMPC1およびMPC2は、選択プロセスを順次的に実施し、最高優先度階層から開始して、選択プロセスがすべての階層に対して実施されるまで、階層ごとに下っていく。いくつかの実施態様において、計算システムMPC1およびMPC2は、階層内で候補が見つかると停止し得るが、これは、ユーザ機密情報を計算システムMPC1およびMPC2への漏洩への危険にさらす可能性がある。破線ボックス内のステップは、個々の選択プロセスが実施される階層ごとに実施される。
計算システムMPC1は、選択値によって階層にグループ化されるデジタルコンポーネントを順序付けする(514)。選択値は、最初に階層優先度によって、次いで同じ階層内で選択値によって順序付けすることができる。同様に、計算システムMPC2は、選択値によって階層にグループ化されるデジタルコンポーネントを順序付けする(516)。各階層について、これらのステップ514および516は、図4に示すプロセス400のステップ410および412と同様である。しかしながら、順序は、階層内に含まれるデジタルコンポーネントのみを含む。
計算システムMPC1およびMPC2は、協働して、階層内の各デジタルコンポーネントの累積値acciの秘密シェアを決定する(518)。上述したように、所与のデジタルコンポーネントの累積値は、所与のデジタルコンポーネントが候補である場合であっても所与のデジタルコンポーネントを除外した、順序の最初から所与のデジタルコンポーネントの選択値までの候補デジタルコンポーネントの総数を表すことができる。計算システムMPC1およびMPC2は、図4のプロセス400のステップ414を参照しながら上述したのと同様にして、階層内のデジタルコンポーネントの累積値を決定することができる。
計算システムMPC1およびMPC2は、いくつかの実施態様においては秘密シェアアルゴリズムに応じて一切のラウンドトリップ計算なしに独立して各デジタルコンポーネントの累積値accのそれらの秘密シェアを決定することができる。たとえば、計算システムMPC1は、各デジタルコンポーネントiについて、Table 3(表3)を参照しながら上述したように、最高から最低への順序で階層内のすべてのデジタルコンポーネントをトラバースし、進行中にデジタルコンポーネントの候補パラメータis_dc_a_candidateを合計することによって、累積値accの第1のシェア[acci,1]を決定することができる。同様に、計算システムMPC2は、各デジタルコンポーネントiについて、最高から最低への順序で階層内のすべてのデジタルコンポーネントをトラバースし、進行中にデジタルコンポーネントの候補パラメータis_dc_a_candidateを合計することによって、累積値accの第2のシェア[acci,2]を決定することができる。
計算システムMPC1およびMPC2は、階層内の各候補デジタルコンポーネントについて、累積値が指定の値に等しいか否かを示す結果の秘密シェアを決定する(520)。指定の値は、Table 3(表3)の列3および4に示すように、0の値であり得る。階層内で、累積値が0であり、全体的な候補パラメータis_dc_a_candidateが真または1のブール値を有するデジタルコンポーネントは、存在する場合、階層内の候補デジタルコンポーネントの中で最高の選択値を有するデジタルコンポーネントである。
計算システムMPC1およびMPC2は、各デジタルコンポーネントiの秘密シェアに関して等価演算acci == 0を計算するために、セキュアMPCプロセスの一部としての、たとえば複数回のRPCなどの複数ラウンドの計算に関与することができる。等価演算は、デジタルコンポーネントiの累積値acciが0の値を有するか否かを判定するために使用される。このプロセスの終了において、計算システムMPC1は、階層内の各デジタルコンポーネントiについて、結果acci == 0の一方の秘密シェアを有し、計算システムMPC2は、階層内の各デジタルコンポーネントについて、結果acci == 0の他方の秘密シェアを有する。
計算システムMPC1およびMPC2は、階層内の各デジタルコンポーネントの勝者パラメータの秘密シェアを決定する(522)。計算システムMPC1およびMPC2は、階層内の各デジタルコンポーネントiについての、累積値acci == 0の秘密シェアおよび階層内の各デジタルコンポーネントiの候補パラメータis_dc_a_candidateiの秘密シェアに基づいて、勝者パラメータis_dc_the_winneriを決定することができる。各デジタルコンポーネントiの勝者パラメータis_dc_the_winneriは、たとえば、デジタルコンポーネントiが候補デジタルコンポーネントであり、階層内の候補デジタルコンポーネントの間で最高の選択値を有するか否かなど、デジタルコンポーネントiが階層の選択プロセスの勝者であるか否かを示すブール値とすることができる。いくつかの実施態様において、計算システムMPC1およびMPC2は、秘密シェア乗算プロトコルを実行して、各選択値について、秘密シェアに関して勝者パラメータis_dc_the_winneri=(is_dc_a_candidatei×(acci==0))を計算することができる。
計算システムMPC1およびMPC2は、選択結果を決定する(524)。計算システムMPC1およびMPC2は、デジタルコンポーネントが階層の勝者であることを示す値(たとえば、ブールの真または1)を有する勝者パラメータis_dc_the_winneriを有するデジタルコンポーネントを含む最高の階層を決定することによって、選択結果を決定することができる。このデジタルコンポーネントは、デジタルコンポーネント選択プロセス全体の勝者である。計算システムMPC1およびMPC2は、累積値を使用して、真または1に等しい勝者パラメータを有する最高の階層を決定することができる。たとえば、計算システムMPC1およびMPC2は、階層内のすべてのデジタルコンポーネントの累積値が0でない最高の階層を識別することができる。
計算システムMPC1は、デジタルコンポーネント要求がそこから受信されたクライアントデバイス110に、選択結果の第1の秘密シェアを提供する(526)。計算システムMPC2は、デジタルコンポーネント要求がそこから受信されたクライアントデバイス110に、選択結果の第2の秘密シェアを提供する(528)。
階層を含む第2の値の選択プロセスにおいて、デジタルコンポーネントの選択値は、デジタルコンポーネントが、選択されるデジタルコンポーネントと同じ階層内にある場合にのみ、選択プロセスの第2の選択値を提供するのに適格である。第2の選択値を決定するために、計算システムMPC1およびMPC2は、各階層tについて、階層tがクライアントデバイス110に配信するために選択されているデジタルコンポーネントを含むか否かを表す勝利階層パラメータmaybe_winning_tiertを計算することができる。概念的に、計算システムMPC1およびMPC2は、下記の関係9を使用して各階層tの勝利階層パラメータmaybe_winning_tiertを計算することができる。
関係9において、パラメータ「T」は、階層tよりも高い優先度を有するすべての階層を表す。したがって、階層の勝利階層パラメータmaybe_winning_tiertは、任意のより高い優先度の階層が候補デジタルコンポーネントを含むか否かを表す。そうでない場合、階層tは、少なくとも1つの候補デジタルコンポーネントを含む場合に、勝利階層である。
総和と値0との間の同等性テストはまた、計算システムMPC1とMPC2との間のRPCを使用して計算することもできる。様々な計算の複数のRPCをともにより少数のRPCにグループ化して、計算システムMPC1とMPC2との間のレイテンシおよびネットワーク帯域幅消費を低減することができる。
次いで、計算システムMPC1およびMPC2は、第2の選択値が、所与のデジタルコンポーネントの第2の選択値によって、所与のデジタルコンポーネントの候補パラメータis_dc_a_candidatei、(図4を参照しながら上述したように計算することができる)デジタルコンポーネントの第2の選択値のパラメータmaybe_second_svi、および所与のデジタルコンポーネントを含む階層tの勝利階層パラメータmaybe_winning_tiertの組合せに基づいて設定されるか否かを判定することができる。たとえば、第2の選択値は、所与のデジタルコンポーネントのis_dc_a_candidatei AND maybe_second_svi AND maybe_winning_tiertが真または1のブール値を有するときに、所与のデジタルコンポーネントの選択値によって設定される。
次いで、計算システムMPC1およびMPC2は、所与のデジタルコンポーネントの選択値を使用して第2の選択値を決定することができる。たとえば、第2の選択値は、所与のデジタルコンポーネントの選択値または所与のデジタルコンポーネントの選択値+指定量に等しくなり得る。
DSP150およびデジタルコンポーネントプロバイダ160は、多くの場合、同様の選択プロセスにおいてデジタルコンポーネントに対して提供する選択値を最適化または改善することができるように、デジタルコンポーネントプロセスの最高の他の選択値を知ることから利益を得ることができる。たとえば、そのデジタルコンポーネントが選択されたDSP150は、その選択値が次に高い選択値よりもどれだけ高かったかを知ることから利益を得る場合がある。同様に、そのデジタルコンポーネントが選択されなかったDSP150は、デジタルコンポーネントが選択されるためには選択値がどれくらい高い必要があるかを知ることから利益を得る場合がある。DSP150および/またはデジタルコンポーネントプロバイダ160が、この情報に基づいて選択値を提供する場合、DSP150は、たとえば、過度に高い選択値に起因する無駄を回避すること、または、低い選択値に起因するデジタルコンポーネント提示機会の損失を回避することなど、その目的を達成する可能性がより高い。
そのデジタルコンポーネントが選択されたDSP150またはデジタルコンポーネントプロバイダ160について、最高の他の選択値は、2番目に高い選択値である。すべての他のものについて、最高の他の選択値は最高の選択値である。これは、第1の値の選択プロセスと第2の値の選択プロセスの両方について同じである。
図6は、デジタルコンポーネント選択プロセス内のデジタルコンポーネントの最高の他の選択値を決定するための例示的なプロセス600の図である。プロセス600の動作は、たとえば、MPCクラスタ130の計算システムMPC1または計算システムMPC2によって実施され得る。プロセス600の動作は、非一時的であり得る、1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス600の動作を実行させ得る。
計算システムMPC1およびMPC2は、デジタルコンポーネント選択プロセスを実施して、クライアントデバイスに配信するためのデジタルコンポーネントを選択する(602)。計算システムMPC1およびMPC2は、セキュアMPCプロセスを使用して協働して、図3~図5を参照しながら上述したように、デジタルコンポーネントを選択することができる。
計算システムMPC1およびMPC2は、デジタルコンポーネント選択プロセスの第1の選択値を決定する(604)。第1の選択値は、クライアントデバイス110への配信のために選択されているデジタルコンポーネントの選択値であり得る。たとえば、第1の選択値は、候補デジタルコンポーネントの最高の選択値であり得る。階層が使用される場合、第1の選択値は、少なくとも1つの候補デジタルコンポーネントを含む最高優先度階層内の候補デジタルコンポーネントの最高の選択値であり得る。
計算システムMPC1およびMPC2は、協働して、セキュアMPCプロセスを使用して第1の選択値を決定することができる。概念的に、計算システムMPC1およびMPC2は、下記の関係10を使用して第1の選択値を決定することができる。
first selection value= Σ(selection_valuei x (is_dc_a_candidatei AND maybe_first_svi))
この総和は、デジタルコンポーネント選択プロセスに含まれるすべてのデジタルコンポーネントにわたるものであり得る。各デジタルコンポーネントiの選択値(selection_valuei)は平文であり得る。上述したように、計算システムMPC1およびMPC2は、候補パラメータis_dc_a_candidateiおよび第1の選択値のパラメータmaybe_first_sviの秘密シェアを計算することができる。計算システムMPC1は、各デジタルコンポーネントiについて、候補パラメータis_dc_a_candidateiの第1のシェア[is_dc_a_candidatei,1]および第1の選択値のパラメータmaybe_first_sviの第1のシェア[maybe_first_svi,1]を記憶することができる。同様に、計算システムMPC2は、各デジタルコンポーネントiについて、候補パラメータis_dc_a_candidateiの第2のシェア[is_dc_a_candidatei,2]および第1の選択値のパラメータmaybe_first_sviの第2のシェア[maybe_first_svi,2]を記憶することができる。
計算システムMPC1およびMPC2は、デジタルコンポーネント選択プロセスの第2の選択値を決定する(606)。第2の選択値は、クライアントデバイス110への配信のために選択されているデジタルコンポーネントの選択値の後の次に高い選択値であり得る。たとえば、第2の選択値は、候補デジタルコンポーネントの2番目に高い選択値であり得る。階層が使用される場合、第2の選択値は、少なくとも1つの候補デジタルコンポーネントを含む最高優先度階層内の候補デジタルコンポーネントの2番目に高い選択値であり得る。
計算システムMPC1およびMPC2は、協働して、セキュアMPCプロセスを使用して第2の選択値を決定することができる。概念的に、計算システムMPC1およびMPC2は、下記の関係11を使用して第2の選択値を決定することができる。
second selection value= Σ(selection_valuei x (is_dc_a_candidatei AND maybe_second_svi))
この総和は、デジタルコンポーネント選択プロセスに含まれるすべてのデジタルコンポーネントにわたるものであり得る。上述したように、計算システムMPC1およびMPC2は、候補パラメータis_dc_a_candidateiおよび第2の選択値のパラメータmaybe_second_sviの秘密シェアを計算することができる。計算システムMPC1は、各デジタルコンポーネントiについて、第2の選択値のパラメータmaybe_second_sviの第1のシェア[maybe_second_svi,1]を記憶することができる。同様に、計算システムMPC2は、各デジタルコンポーネントiについて、第2の選択値のパラメータmaybe_second_sviの第2のシェア[maybe_second_svi,2]を記憶することができる。
関係10および11において、真および偽のブール値は、それぞれ1および0として処理することができる。秘密シェアにおいて、計算システムMPC1およびMPC2は、(たとえば、計算システム間のRPCを使用して)秘密シェアを用いて両方の関係10と11のAND演算の結果を計算し、その結果をZ2空間内の2つの加法的秘密シェア(たとえば、加算し、その後mod 2をとった値)として表す。したがって、各計算システムは、第1の選択値および第2の選択値の秘密シェアを記憶することができる。たとえば、計算システムMPC1は、第1の選択値の第1のシェアおよび第2の選択値の第1のシェアを記憶することができる。同様に、計算システムMPC2は、第1の選択値の第2のシェアおよび第2の選択値の第2のシェアを記憶することができる。第1の選択値の2つのシェアの総和(たとえば、加算し、その後mod 2をとった値)は第1の選択値に等しく、第2の選択値の2つのシェアの総和(たとえば、加算し、その後mod 2をとった値)は第2の選択値に等しい。
関係10および11は、乗算を、上記選択値の各選択値(selection_valuei)と、候補パラメータと各計算システムMPC1およびMPC2によって保持される第1の選択値のパラメータ(または第2の選択値のパラメータ)との間のAND演算の結果の1ビット秘密シェアとの間のビット単位AND演算に置き換えることによって単純化することができる。加えて、関係10および11の総和を、ビット単位XOR演算に置き換えることができる。
各デジタルコンポーネントについて、計算システムMPC1およびMPC2は、最高の他の選択値を計算する(608)。計算システムMPC1およびMPC2は、秘密シェアにおける2ステッププロセスを使用してデジタルコンポーネントの最高の他の選択値を計算することができる。計算システムMPC1およびMPC2は、デジタルコンポーネントiの勝者パラメータis_dc_the_winneriを計算することができる。計算システムMPC1およびMPC2は、候補パラメータis_dc_a_candidateiの秘密シェアおよび第1の選択値のパラメータmaybe_first_sviの秘密シェアを使用して勝者パラメータis_dc_the_winneriを計算することができ、たとえば、is_dc_the_winneri = is_dc_a_candidatei AND maybe_first_sviである。
計算システムMPC1およびMPC2は、次いで、関係12を使用してデジタルコンポーネントiの最高の他の選択値(HOSVi)を計算することができる。
HOSVi=(is_dc_the_winneri×second selection value)+((1-is_dc_the_winneri)×first selection value)
勝者パラメータ、第1の選択値、および第2の選択値は、計算システムMPC1およびMPC2によって秘密シェア内に保持されるため、計算システムMPC1およびMPC2は、協働して、2つの計算システムMPC1とMPC2との間のRPCを使用して最高の他の選択値を決定する。
このプロセスの終了において、計算システムMPC1は、デジタルコンポーネントiの最高の他の選択値の第1のシェア[HOSVi,1]を記憶し、計算システムMPC2は、デジタルコンポーネントiの最高の他の選択値の第2のシェア[HOSVi,2]を記憶する。
計算システムMPC1は、各デジタルコンポーネントの最高の他の選択値の第1のシェアを、たとえば、デジタルコンポーネントに対応するDSP150またはデジタルコンポーネント160に送信する(610)。同様に、計算システムMPC2は、各デジタルコンポーネントの最高の他の選択値の第2のシェアを、たとえば、デジタルコンポーネントに対応するDSP150またはデジタルコンポーネント160に送信する(612)。いくつかの実施態様において、計算システムMPC1およびMPC2は、各DSP150および/または各デジタルコンポーネントプロバイダ160の情報を集約する集約サービスに、シェアを提供する。
2つの秘密シェアの受け手は、シェアを組み合わせて、デジタルコンポーネント選択プロセスにおけるデジタルコンポーネントの最高の他の選択値を導出することができる。たとえば、加法的秘密共有アルゴリズムが使用される場合、受け手は、2つのシェアを加算することによって、最高の他の選択値を導出することができる。
計算システムMPC1およびMPC2は、追加のデータを、最高の他の選択値とともに送信することができる。たとえば、計算システムMPC1およびMPC2は、たとえば検索鍵などの、デジタルコンポーネント選択プロセスのコンテキスト信号を、最高の他の選択値のそのシェアとともに送信することができる。このように、同じまたは類似のコンテキストを有するデジタルコンポーネント選択プロセスの選択値のランドスケープを、同じまたは類似のコンテキストを有するデジタルコンポーネント選択プロセスの最高の他の選択値を使用して計算することができる。
いくつかの実施態様において、性能を増大させるために、計算システムMPC1およびMPC2は、最高の他の選択値を非同期的に、デジタルコンポーネント選択プロセスの選択結果がクライアントデバイス110に提供された後に計算することができる。これによって、デジタルコンポーネントの送信および表示におけるレイテンシが低減する。いくつかの実施態様において、計算システムMPC1およびMPC2は、計算システムMPC1およびMPC2に対する負荷がベースライン負荷よりも低い場合に、最高の他の選択値を計算することができる。
選択値のフロアを含む選択プロセスについて、最高の他の選択値を正確に計算するために、追加のステップを採用することができる。計算システムMPC1およびMPC2は、図6を参照しながら説明されているように、最高の他の選択値を計算することができる。計算システムMPC1およびMPC2は、このとき、たとえば、いずれの選択値も適用可能なフロアより小さくならないように、フロアを考慮に入れるように最高の他の選択値を調整することができる。
Hが計算されている最高の他の選択値を示すものとし、Fが適用可能なフロアを示すものとする。最終的な最高の他の選択値は(H>F)×H+(1-H>Fとなり、これはF+(H>F)×(H-F)と等価である。
ユーザプライバシーを保護するために、Hは秘密シェアの形態である。各計算システムMPC1およびMPC2は、それぞれ秘密シェア[H1]および[H2]のうちの一方を保持する。計算システムMPC1は、関係13を使用して、秘密シェア内の最終的な最高の他の選択値の第1のシェアを計算することができる。
[HOSV1]=F+([H1]>F)×([H1]-F)
同様に、計算システムMPC2は、関係14を使用して、秘密シェア内の最終的な最高の他の選択値の第2のシェアを計算することができる。
[HOSV2]=F+([H2]>F)×([H2]-F)
フロアを含むデジタルコンポーネントプロセスの最高の他の選択値を計算するこのプロセスは、比較テストのための3ラウンド以上のRPCおよび乗算のための1ラウンドのRPCを利用することができる。
階層および/またはブーストがデジタルコンポーネント選択プロセスにおいて使用される場合、たとえば、選択されるデジタルコンポーネントの選択値などの第1の選択値は、候補デジタルコンポーネントの間で最高の選択値よりも低くなり得る。たとえば、最高優先度階層内の候補デジタルコンポーネントが、より低い優先度の階層内の候補デジタルコンポーネントよりも低い選択値を有する場合、より高い優先度の階層内の候補デジタルコンポーネントが、より低い選択値を有するにもかかわらず、選択され得る。同様に、デジタルコンポーネントは、パブリッシャが受け取るものが、非ブーストデジタルコンポーネントが選択された場合よりも低くなるように、デジタルコンポーネント選択値において使用される選択値を、非ブースト(またはブーストがより低い)デジタルコンポーネントよりも高くするブーストを受け取ることができる。MPCクラスタ130は、パブリッシャが階層および/またはブーストと関連付けられる機会コストを分析することができるように、2つの値の間の差を決定することができる。
図7は、実際のデジタルコンポーネント選択プロセスおよび反事実的デジタルコンポーネント選択プロセスの第1の選択値の間の差を決定するための例示的なプロセス700の流れ図である。プロセス700の動作は、たとえば、MPCクラスタ130の計算システムMPC1または計算システムMPC2によって実施され得る。プロセス700の動作は、非一時的であり得る、1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス700の動作を実行させ得る。
計算システムMPC1およびMPC2は、実際のデジタルコンポーネント選択プロセスを実施する(702)。計算システムMPC1およびMPC2は、実際のデジタルコンポーネント選択プロセスを実施して、デジタルコンポーネント要求に応答してクライアントデバイス110に提供するためのデジタルコンポーネントを選択することができる。実際のデジタルコンポーネント選択プロセスは、デジタルコンポーネントの階層、および/または、デジタルコンポーネント選択プロセスに含まれる1つまたは複数のデジタルコンポーネントに対するブーストを含むことができる。たとえば、実際のデジタルコンポーネントプロセスは、図3~図5のプロセスと同じまたは同様であるべきである。
計算システムMPC1およびMPC2は、反事実的デジタルコンポーネント選択プロセスを実施する(704)。反事実的デジタルコンポーネントプロセスのステップは、実際のデジタルコンポーネント選択プロセスのステップと同様であり得る。しかしながら、反事実的デジタルコンポーネント選択プロセスにおいては、実際のデジタルコンポーネント選択プロセスの階層および/またはブーストは除去される。実際のデジタルコンポーネント選択プロセスが階層を含む場合(たとえば、図4のプロセス400にあるように)、反事実的デジタルコンポーネント選択プロセスは、1つのグループ内にすべてのデジタルコンポーネントを有する(たとえば、図5のプロセス500にあるように)。実際のデジタルコンポーネント選択プロセスが1つまたは複数のデジタルコンポーネントの選択値のブーストを含んでいた場合、それらのブーストは、反事実的デジタルコンポーネント選択プロセスにおいては除去される。すなわち、反事実的デジタルコンポーネント選択プロセスにおける選択値は、ブースト選択値ではなく、受信選択値であり得る。
計算システムMPC1およびMPC2は、実際のデジタルコンポーネント選択プロセスのクリア値を決定する(706)。このクリア値は、選択されるデジタルコンポーネントの選択値に基づくことができる。たとえば、クリア値は、選択されるデジタルコンポーネントを表示するためにパブリッシャに実際に提供される選択値の量であり得る。デジタルコンポーネントの選択値がブーストされた場合、ブースト量は、動作414において各候補デジタルコンポーネントの累積値が決定される場合にのみ、選択値の順序に影響を与える。
第2の値の選択プロセスにおいて、クリア値は、選択されるデジタルコンポーネントの選択値の後の次に高い選択値に基づく。第2の選択値のプロセスとともに階層が使用される場合、2番目に高い値は、選択されるデジタルコンポーネントと同じ階層内の2番目に高い値になる。同じ階層内にそのような候補デジタルコンポーネントがない場合、2番目に高い値は、デジタルコンポーネント選択プロセスの最小値であり得る。
計算システムMPC1およびMPC2は、反事実的デジタルコンポーネント選択プロセスのクリア値を決定する(708)。このクリア値は、反事実的デジタルコンポーネント選択プロセスにおいて選択されているデジタルコンポーネントに基づくことができる。第2の値の選択プロセスにおいて、クリア値は、実際のデジタルコンポーネント選択プロセスのクリア値と同様に、選択されるデジタルコンポーネントの選択値の後の次に高い選択値に基づく。
計算システムMPC1およびMPC2は、2つのクリア値の間の差を決定する(710)。計算システムMPC1およびMPCは、実際のデジタルコンポーネント選択値のクリア値から反事実的デジタルコンポーネント選択プロセスのクリア値を減算することによって、差を決定することができる。
計算システムMPC1およびMPC2は、受け手に差を提供する(712)。たとえば、計算システムの1つは、選択後にデジタルコンポーネントがそれとともに表示されたリソースまたはアプリケーションコンテンツのパブリッシャに差を提供することができる。別の例において、計算システムの1つは、パブリッシャの差を集約する集約サーバに差を提供することができる。いずれの例においても、計算システムは、差を示すデータとともに、たとえば検索鍵などの、実際のデジタルコンポーネント選択プロセスのコンテキスト信号、および、パブリッシャを識別するデータ(集約サーバに送信される場合)を提供することができる。
集約サーバは、各パブリッシャについて報告されている差を集約し、階層および/またはブーストの使用の機会コストを示す、たとえば対話型ユーザインターフェースの形態のデータを提供することができる。いくつかの実施態様において、計算システムMPC1およびMPC2はまた、各実際のデジタルコンポーネント選択プロセスについて、選択結果を集約サーバに提供することもできる。このように、集約サーバは、各DSP150および/またはデジタルコンポーネントプロバイダ160の機会コストを集約することができる。
実際のデジタルコンポーネント選択プロセスの選択されるデジタルコンポーネントのクライアントデバイス110への提供におけるレイテンシを低減するために、プロセス700のステップ704~712のうちの一部またはすべては非同期的に、たとえば、選択結果がクライアントデバイス110に提供された後に実施することができる。
図8は、秘密シェアを使用して送信されるブルームフィルタを使用して、ユーザがユーザグループのメンバーであるか否かを判定するための例示的なプロセス800の流れ図である。プロセス800の動作は、たとえば、クライアントデバイス110上で実行されるアプリケーション112、ならびに、図1のMPCクラスタ130の計算システムMPC1およびMPC2によって実施され得る。プロセス800の動作は、非一時的であり得る、1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス800の動作を実行させ得る。
ブルームフィルタを使用してユーザのグループメンバーシップを表すデータを送信することによって、ユーザのユーザグループを識別するデータが平文で送信されていないため、送信されるデータの量を低減し、ユーザプライバシーを保持することができる。計算システムMPC1およびMPC2が、ユーザのグループメンバーシップに平文でアクセスすることが可能になることを阻止するために、アプリケーション112は、ブルームフィルタ全体を各計算システムMPC1およびMPC2に送信するのではなく、たとえばブルームフィルタの秘密シェアなどのそれぞれのシェアを各計算システム112に送信することができる。しかしながら、これは、各計算システムMPC1およびMPC2に1つずつ、2つのブルームフィルタを送信するのと同等のデータを送信することを必要とし得る。これを阻止し、クライアントデバイス110からネットワーク105にわたって計算システムMPC1およびMPC2へと送信されるデータの量をさらに低減するために、アプリケーション112は、ノンスを使用して生成される第1の配列およびアプリケーション112によって作成されている元のブルームフィルタを、たとえば計算システムMPC1などの計算システムの1つに送信することができ、ノンスのみを他の計算システムMPC2に送信することができる。このように、1つの配列のみがクライアントデバイス110から送信される。ノンスは、たとえば16バイトと小さくすることができるため、これによって、クライアントデバイス110から送信されるデータの量が大幅に低減し、それによって、クライアントデバイス110の帯域幅消費、レイテンシ、およびバッテリ消費が低減する。
プロセス800は、ユーザグループにおけるユーザのメンバーシップを表すブルームフィルタに関して説明されているが、同様のプロセスを使用して、ブロックデジタルコンポーネントを表すためのブルームフィルタを生成し、デジタルコンポーネントがブロックされているか否かを問い合わせることができる。その例において、ブルームフィルタは、ユーザグループの識別子ではなく、ブロックデジタルコンポーネントの識別子を表す。
ブルームフィルタの構成は、計算システムMPC1およびMPC2による送信および/または処理に適合させることができる。ブルームフィルタのパラメータは、ブルームフィルタによって表すことができるユーザグループの数、ブルームフィルタの所望の偽陽性率、ブルームフィルタを生成するために使用されるハッシュ関数の数、および、要素がブルームフィルタに含まれるか否かのテスト、ならびに、ブルームフィルタのサイズを含む。
ハッシュ関数の数を低減することによって、ユーザがユーザグループのメンバーであるか否かを問い合わせるときの、計算システムMPC1およびMPC2に対する計算負担が低減される。しかしながら、これによって、ブルームフィルタのサイズが一定のままである場合、偽陽性率が増大し得る。目標偽陽性率が存在する場合、ハッシュ関数を低減する結果として、ブルームフィルタサイズが増大し得、これによって、消費される帯域幅の量が増大し得る。したがって、ブルームフィルタのパラメータは、計算システムMPC1およびMPC2に関する帯域幅/バッテリ消費と計算負担との間のトレードオフを使用して選択され得る。
アプリケーション112は、ブルームフィルタを生成する(802)。アプリケーション112は、アプリケーション112のユーザをメンバーとして含むユーザグループのユーザグループ識別子を使用してブルームフィルタを生成することができる。そうするために、アプリケーション112は、ブルームフィルタの各ハッシュ関数を使用して、ユーザグループ識別子をブルームフィルタ内の位置のうちの1つにマッピングする。アプリケーション112は、ユーザの各ユーザグループ識別子についてこの動作を実施することができる。ブロックデジタルコンポーネントに対するブルームフィルタを構築するとき、アプリケーション112は、ブロックデジタルコンポーネントに対するブルームフィルタの各ハッシュ関数を、各ブロックデジタルコンポーネントの識別子に適用することができる。ブルームフィルタは、サイズNのビット配列Aである。ブルームフィルタの各ビットは、0または1のいずれかであり、すなわち、A[i]∈{0,1}である。
アプリケーション112ならびに計算システムMPC1およびMPC2は、擬似ランダム関数(PRF)について事前に合意することができる。PRFは、2つのパラメータをとり、包含的に{0, 1}内のPRFメンバーを生成することができる。
アプリケーション112は、ノンスを選択する(804)。各デジタルコンポーネント要求について、アプリケーション112は、計算システムMPC1またはMPC2のうちの一方のみと共有されることになるノンスを、たとえばランダムにまたは擬似ランダムに選択することができる。この例において、ノンスは計算システムMPC2と共有される。
アプリケーション112は、ブルームフィルタおよびノンスを使用して第1の配列A1を計算する(806)。アプリケーション112は、合意されたPRFを使用して第1の配列A1を計算することができる。たとえば、アプリケーション112は、関係15を使用して第1の配列A1を計算することができる。
A1 [i]=A[i] XOR PRF(nonce,i)
関係15において、XOR演算はビット単位XOR演算である。
アプリケーション112は、第1の配列を計算システムMPC1に送信する(808)。アプリケーション112はまた、ノンスを計算システムMPC2に送信する(810)。
計算システムMPC2は、ノンスを使用して第2の配列A2を計算する(812)。計算システムMPC2は、ノンスおよびPRFを使用して第2の配列A2を計算することができる。たとえば、計算システムMPC2は、関係16を使用して第2の配列A2を計算することができる。
A2 [i]=PRF(nonce,i)
計算システムMPC1およびMPC2は、第1の配列A1および第2の配列A2を使用して、ユーザが1つまたは複数のユーザグループのメンバーであるか否かを判定する(814)。概して、ブルームフィルタの各ハッシュ関数をユーザグループ識別子に適用して、ハッシュ関数およびユーザグループ識別子に対応するブルームフィルタの要素を決定することによって、ブルームフィルタに問い合わせることができる。ユーザ識別子について、各ハッシュ関数の要素が1の値を有する場合、これは、ユーザがグループのメンバーであることを表す。無論、ブルームフィルタの性質に起因して、何らかの偽陽性があり得る。
計算システムMPC1もMPC2もブルームフィルタ全体にアクセスすることができないため(代わりに、各々ブルームフィルタの秘密シェアのみを有する)、計算システムMPC1およびMPC2は、暗号プロトコルを使用して、ユーザグループ識別子によって、ユーザがユーザグループ識別子のメンバーであるか否かを判定することができる。使用することができる一部の例示的な暗号プロトコルは、文字化け回路およびGoldreich-Micali-Wigderson (GMW)プロトコルを含む。
いずれのアルゴリズムにおいても、アルゴリズムへの入力は(概念的に)ブルームフィルタの秘密シェア、すなわち、第1の配列A1および第2の配列A2である。出力は、デジタルコンポーネントごとに1つの、ブールメッセージ、すなわち、ユーザが対応するデジタルコンポーネントと関連付けられるユーザグループのメンバーであるか否か、のブールメッセージのセットの秘密シェアである。
GMWプロトコルにおいて、たとえば、計算システムMPC1などの、MPC計算システムの1つは、秘密シェアの可能なビットパターンあたり1つの行が計算システムMPC2によって占められる、真理値表を作成する。計算システムMPC1は、結果のそれ自体の秘密シェアを、たとえばランダムに選択し、結果のそれ自体の秘密シェア、および、場合によってはその行に対応する計算システムMPC2の秘密シェアに基づいて、各行の計算システムMPC2の秘密シェアを計算する。真理値表が構築された後、計算システムMPC2は、紛失通信プロトコルを使用して、それ自体の秘密シェアに基づいて、表からただ1つの行をフェッチする。このプロトコルにおいて、1つの計算システムが、複数の情報片のうちの1つを他の計算システムに転送するが、いずれの情報片(存在する場合)が転送されたかはわからない。この紛失通信プロトコルは、プロセスがいかなるパーティにもいかなる情報も漏洩しないことを保証する。
所与のユーザグループ識別子に対するブルームフィルタへの問い合わせの結果は、各ハッシュ関数のユーザグループメンバーシップ条件パラメータの秘密シェアである。ユーザグループメンバーシップ条件パラメータの秘密シェアは、デジタルコンポーネント選択プロセスにおいて、ユーザグループに対応するデジタルコンポーネントがデジタルコンポーネント選択プロセスの候補であるか否かを判定するために使用することができる。たとえば、10個のハッシュ関数が使用される場合、計算システムMPC1は、各ユーザグループ識別子のユーザグループメンバーシップ条件パラメータの10個の第1の秘密シェアを有することになる。同様に、計算システムMPC2は、各ユーザグループ識別子のユーザグループメンバーシップ条件パラメータの10個の第2の秘密シェアを有することになる。
ブルームフィルタがブロックデジタルコンポーネントの識別子を表す場合、計算システムMPC1およびMPC2は、同様にして、第2の配列を再構築し、ブルームフィルタに問い合わせることができる。所与のデジタルコンポーネントに対するこのブルームフィルタへの問い合わせの結果は、各ハッシュ関数のブロック条件パラメータである。ブロック条件パラメータの秘密シェアは、デジタルコンポーネント選択プロセスにおいて、デジタルコンポーネントがデジタルコンポーネント選択プロセスの候補であるか否かを判定するために使用することができる。
図9は、例示的なMPC計算システム900のブロック図である。本明細書に記載のMPC計算システムのいずれかは、MPC計算システム900を使用して実装することができる。代替的に、MPC計算システムは、1つまたは複数のサーバとして実装されてもよい。しかしながら、MPC計算システム900のアーキテクチャおよび構成は、汎用サーバ構成の使用と比較して多くの性能改善を提供する。
MPC計算システム900は、ロードバランサ910と、サービングプール920と、ログプロセッサプール940とを含む。計算システム900はまた、ログ930およびスナップショット950を生成、更新、および他の様態で維持する。
いくつかの実施態様において、MPC計算システム900は、デジタルコンポーネントの選択およびデジタルコンポーネントのクライアントデバイス110への提供におけるレイテンシを低減するために、様々な地理的領域において展開される。たとえば、2つ以上のMPC計算システム900を有するMPCクラスタは、領域のセットの各領域内に展開することができる。各MPCクラスタが、たとえばMPC1およびMPC2などの2つのMPC計算システムを含む場合、各領域は、異なるパーティによって運用される一対のMPC計算システム900を含むことができる。すべての領域にわたるMPC1の各インスタンスは、第1のパーティによって運用することができ、すべての領域にわたるMPC2の各インスタンスは、第1のパーティとは異なる第2のパーティによって運用することができる。
ある領域内のMPCクラスタは、その領域内のクライアントデバイス110によって生成されるデジタルコンポーネント要求に対するデジタルコンポーネント選択プロセスを実施することができる。たとえば、特定の領域においてクライアントデバイス110へと送信される、たとえばタグなどのデジタルコンポーネントスロットに関する命令は、その特定の領域内のMPC計算システム900のネットワークロケーションへの参照を含むことができる。このようにして、アプリケーション112は、デジタルコンポーネント要求および通知を、適切な領域内のMPC計算システム900に送信する。別の例において、ドメイン名サービス(DNS)またはロードバランサ910が、物理的距離においてクライアントデバイス110に最も近いMPC計算システム900を選択する。
ある領域内のMPC1は、同じ領域内のMPC2と協働して、受信される要求に基づいてデジタルコンポーネントを選択し、ログを更新することができる。これによって、MPC計算システム900間の距離が低減されるため、MPC計算システム900間のラウンドトリップを必要とする協働計算の実施におけるレイテンシおよび消費帯域幅が低減する。これによってまた、クライアントデバイス110とMPC計算システム900との間の、たとえばデジタルコンポーネント要求、デジタルコンポーネント応答、およびインプレッション通知などの、データ送信におけるレイテンシおよび消費帯域幅も低減する。
いくつかの実施態様において、ログプロセッサプール940は、スナップショットの作成および他の領域内のMPC計算システム900への発行のために、領域の適切なサブセット内でのみ有効化される。たとえば、第1のパーティによって運用される、各領域内の第1のMPC計算システムMPC1があり得る。これらの第1のMPC計算システムのサブセットは、すべての第1のMPC計算システムのスナップショットを作成し、このスナップショットを他の第1のMPC計算システムに発行することができる。同様に、第2のパーティによって運用される、各領域内の第2のMPC計算システムMPC2があり得る。これらの第2のMPC計算システムのサブセットは、すべての第2のMPC計算システムのスナップショットを作成し、このスナップショットを他の第2のMPC計算システムに発行することができる。重要なことに、第1のMPC計算システムは、ユーザプライバシーを保持するために、ログまたはスナップショットを第2のMPC計算システムと共有せず、逆も同様である。しかしながら、第1の計算システムおよび第2の計算システムは、データの少なくとも一部が機密および/または秘密であり、いずれかの計算システムによって平文でアクセス可能であるべきではないときに、セキュアMPCプロセスを実施して、ログ内のデータを処理する。効率的に、かつレイテンシまたは帯域幅消費を増大させることなくこれを行うために、第1のMPC計算システムのサブセットおよび第2のMPC計算システムのサブセットは同じ領域内にあり得る。
ロードバランサ910は、クライアントデバイス110上で実行しているアプリケーション112から要求を受信する。いくつかの例においてHTTP要求の形態であり得るこれらの要求は、デジタルコンポーネント要求および通知を含むことができる。通知は、デジタルコンポーネントがクライアントデバイス110において表示されたこと、および、任意選択的に、ユーザがデジタルコンポーネントとインタラクトしたか否かをMPC計算システム900に通知するインプレッション通知を含むことができる。インプレッション通知はまた、表示されるデジタルコンポーネントが表示されたデジタルコンポーネント選択プロセスを識別する選択プロセス識別子などの追加の情報も含むことができる。k-匿名性条件について、インプレッション通知はまた、実際のデジタルコンポーネント選択プロセスの勝者および反事実的選択プロセスの勝者を識別するデータも含むことができ、結果、MPC計算システム900は、各デジタルコンポーネントのインプレッション通知を更新することができる。
ロードバランサ910は、サービングプール920内のプロセッサの間で負荷を平衡させるように、サービングプール920のプロセッサに要求を割り当てることができる。たとえば、ロードバランサ910は、プロセッサ間で順序を交互にするか、または、各プロセッサの負荷を監視し、現在の負荷に基づいて要求を割り当てることができる。
サービングプール920は、複数のプロセッサを含み、それらの各々を、たとえば、1つまたは複数のマイクロプロセッサ、1つまたは複数のサーバクラスコンピュータ、および/または1つまたは複数の特定用途向け集積回路(ASIC)として実装することができる。サービングプールのプロセッサは、典型的にはレイテンシに敏感である、入来する要求を処理する。たとえば、サービングプール920のプロセッサは、別のMPC計算システム900のプロセッサと協働してデジタルコンポーネント選択プロセスを実施することができる。サービングプール920のプロセッサはまた、完了したデジタルコンポーネント選択プロセスおよび/または受信した通知に基づいて、ログ930を更新することもできる。
サービングプール920のプロセッサは、記憶されるデジタルコンポーネントについて現在のデータベースを維持することができる。このデータベースは、デジタルコンポーネントのパラメータおよび/または条件の現在の値を含むことができる。たとえば、データベースは、各記憶されるデジタルコンポーネントについて、選択値またはベクトル、たとえば、k-匿名性およびペーシングなどのオフラインで計算することができる条件などの、条件の少なくとも一部のパラメータの秘密シェア、残りバジェット、(たとえば、k-匿名性条件に関する)インプレッションの数、および/または、本明細書に記載のデジタルコンポーネント選択プロセスにおいて使用されるデジタルコンポーネントの他のデータを含むことができる。
いくつかの実施態様において、サービングプールのデータベースはスナップショットである。たとえば、各スナップショットは、スナップショットのバージョンを識別するバージョン識別子を有することができる。両方のMPCシステムが、同じバージョンのスナップショットを使用して動作しているべきである。
ログ930は、MPCクラスタによって記憶されるデジタルコンポーネントに関係する様々な情報を記憶する複数のタイプのログを含むことができる。たとえば、ログ930は、デジタルコンポーネント、ならびに、たとえば、選択値、選択値ベクトル、検索鍵、対応するユーザグループ識別子、条件、および/または他の適切な情報などの、デジタルコンポーネントの対応するデータを記憶するためのログを含むことができる。
ログ930は、完了したデジタルコンポーネント要求の情報のログを含むことができる。そのようなログは、各デジタルコンポーネント選択プロセスの選択プロセス識別子、デジタルコンポーネント選択プロセスのクリア値、および、デジタルコンポーネント選択プロセスに含まれていた各デジタルコンポーネントのパラメータを含むことができる。これらのパラメータは、たとえば、デジタルコンポーネントの候補パラメータ、勝者パラメータ、選択値、および/または累積値の秘密シェアを含むことができる。
ログ930は、デジタルコンポーネントに対する条件が満たされているか否かを判定するために使用されるパラメータのログを含むことができる。たとえば、そのようなログは、各デジタルコンポーネントについて、インプレッションの数、選択の数、コンバージョンの数、総バジェット、残りバジェット、および/または、デジタルコンポーネントが提示され得た回数(たとえば、k-匿名性について反事実的選択プロセスにおいて選択された回数)を含むことができる。ユーザプライバシーおよび機密ユーザデータの秘密性を保護するために、いくつかの実施態様において、ログ930は、上記情報の秘密シェアを含む。
ログプロセッサプール940は、ログ930を処理し、ログに基づいてスナップショット950を生成するプロセッサ(たとえば、マイクロプロセッサ、サーバ、またはASIC)を含むことができる。各スナップショットは、サービングプール920のプロセッサによって維持されるデータベースの更新を含む。たとえば、デジタルコンポーネントが選択され、クライアントデバイス110において表示された場合、スナップショットは、デジタルコンポーネントの更新済み残りバジェット、および、デジタルコンポーネントの更新済みインプレッション数を含むことができる。ログプロセッサプール940は、ログ930内の更新済みデータに基づいてスナップショットを生成し、サービングプール920のプロセッサにスナップショットを発行することができる。ログプロセッサプール900のプロセッサはまた、たとえば、ログプロセッサプール940がいくつかのMPC計算システム900においてのみ有効化されている場合、同じパーティによって運用される他のMPC計算システムにスナップショットを発行することもできる。
要求への応答におけるレイテンシを低減するために、サービングプール920のプロセッサは、要求を受信した直後に、これらの要求を処理することができる。時間依存でないプロセスは、ログプロセッサプール940のプロセッサによって処理することができる。たとえば、サービングプール920は、デジタルコンポーネントの選択およびクライアントデバイス110への提供のクリティカルパス上の任意のプロセスを実施することができる。ログプロセッサプール940は、クリティカルパス上にない任意のプロセスを実施することができる。しかしながら、データベースへの更新は、デジタルコンポーネントが最新情報を使用して選択されていることを保証するために、迅速に行われるべきである。したがって、図9に示すアーキテクチャによって提供されるものとしてのプロセッサの異なるセットを使用することによって、デジタルコンポーネント選択プロセスとデータベースへの更新の両方が非常に迅速に実施されることを可能にする。
図10は、上で説明された動作を実行するために使用され得る例示的なコンピュータシステム1000のブロック図である。システム1000は、プロセッサ1010、メモリ1020、記憶デバイス1030、および入出力デバイス1040を含む。構成要素1010、1020、1030、および1040の各々は、たとえば、システムバス1050を使用して、相互接続され得る。プロセッサ1010は、システム1000内で実行するための命令を処理することが可能である。いくつかの実施態様では、プロセッサ1010は、シングルスレッドプロセッサである。別の実施態様では、プロセッサ1010は、マルチスレッドプロセッサである。プロセッサ1010は、メモリ1020の中または記憶デバイス1030上に記憶された命令を処理することが可能である。
メモリ1020は、システム1000内に情報を記憶する。一実施態様では、メモリ1020はコンピュータ可読媒体である。いくつかの実施態様では、メモリ1020は揮発性メモリユニットである。別の実施態様では、メモリ1020は不揮発性メモリユニットである。
記憶デバイス1030は、システム1000に対する大容量記憶装置を提供することが可能である。いくつかの実施態様では、記憶デバイス1030は、コンピュータ可読媒体である。様々な異なる実施態様では、記憶デバイス1030は、たとえば、ハードディスクデバイス、光ディスクデバイス、複数のコンピューティングデバイス(たとえば、クラウド記憶デバイス)によってネットワーク上で共有される記憶デバイス、または何らかの他の大容量記憶デバイスを含み得る。
入力/出力デバイス1040は、システム1000のための入力/出力動作を行う。いくつかの実施態様では、入力/出力デバイス1040は、ネットワークインターフェースデバイス、たとえば、Ethernetカード、シリアル通信デバイス、たとえば、およびRS-232ポート、ならびに/またはワイヤレスインターフェースデバイス、たとえば、および802.11カードのうちの1つまたは複数を含み得る。別の実施態様では、入出力デバイスは、入力データを受信し、出力データを外部デバイス1060、たとえば、キーボード、プリンタ、およびディスプレイデバイスに送信するように構成された、ドライバデバイスを含み得る。しかしながら、モバイルコンピューティングデバイス、モバイル通信デバイス、セットトップボックステレビクライアントデバイスなど、他の実施態様が使われてもよい。
例示的な処理システムが図10で説明されているが、本明細書で説明した主題および機能的動作の実施態様は、他のタイプのデジタル電子回路において、もしくは本明細書で開示する構造およびそれらの構造等価物を含む、コンピュータソフトウェア、ファームウェア、または、ハードウェアにおいて、またはそれらのうちの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つまたは複数の特徴は、場合によっては、その組合せから削除することができ、特許請求される組合せは、部分組合せまたは部分組合せの変形形態を対象としてよい。
同様に、動作は、特定の順序で図面に示されるが、このことは、望ましい結果を達成するために、そのような動作が図示した特定の順序もしくは逐次的な順序で実行されること、または例示したすべての動作が実行されることを必要とするものとして理解されるべきではない。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。その上、上記で説明した実施形態における様々なシステム構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、説明したプログラム構成要素およびシステムが、一般に、単一のソフトウェア製品の中に一緒に組み込まれ得るか、または複数のソフトウェア製品の中にパッケージ化され得ることを理解されたい。
したがって、本主題の特定の実施形態が説明されている。他の実施形態が以下の特許請求の範囲内に入る。場合によっては、特許請求の範囲の中に列挙されるアクションは、異なる順序で実行することができ、それでもなお望ましい結果を達成することができる。加えて、添付の図面に示されるプロセスは、望ましい結果を達成するために、必ずしも図示の特定の順序または逐次的な順序を必要とするとは限らない。いくつかの実施態様では、マルチタスキングおよび並列処理が有利であり得る。