様々な図面における同様の参照番号および参照符号は、同様の要素を示す。
概して、本明細書は、コンテンツの選択および配信の際に、完全性を改善し、情報のセキュリティを保護するためのシステムおよび技術を説明する。サーバコンピュータのMPCクラスタは、いずれのMPCサーバも不正な共謀がない限り平文のユーザ情報にアクセスすることができないようにして、ユーザ情報に基づいてデジタルコンポーネントを選択するためのセキュアMPCプロセスを実行することができる。ユーザ情報は、ネットワークを介して送信される情報のデータサイズを小さくし、送信中の情報を安全に保つために確率的データ構造を使用してMPCクラスタに送信され得る。一部の実装において、ユーザ情報は、分散ポイント関数(distributed point function)を含む追加の技術を使用してMPCクラスタに送信され得る。
MPCクラスタは、クライアントデバイスからのデジタルコンポーネントの要求に応じて、デジタルコンポーネントにマッピングされた選択値を選択するための選択プロセスを実行するためのセキュア環境を提供する。MPCクラスタにおいてこの選択プロセスを実行することは、MPCクラスタからクライアントデバイスへの安全に決定された候補の送信を必要とする、要求元のクライアントデバイスにおいて最終選択プロセスを実行することよりも改善されたプロセスの完全性およびユーザのプライバシーを提供する。さらに、クライアントデバイスは、不正防止がより困難な環境を生じる--選択値の候補が受信されると、最終選択プロセスは、概して平文で実行され、容易に操作され得る。セキュアMPCクラスタにおいて最終選択プロセスを実行することによって、説明されるシステムは、クライアントデバイスにおいてプロセスを実行するのに優る多くの利点を提供する。
たとえば、クライアントデバイスは、ユーザのプライバシーを守るために、ユーザが属する可能性があるユーザグループなどの潜在的に機密の情報に基づくデジタルコンポーネントの要求と、デジタルコンポーネントが単一のデジタルコンポーネントスロットのために提示されるコンテキストなどの機密でない情報に基づくデジタルコンポーネントの別の要求とを送信する可能性がある。このプロセスは、クライアントデバイスが、利用可能なデジタルコンポーネントスロットの数の2倍のデジタルコンポーネントの要求を送信し、要求に応じて、潜在的に複数の異なるサーバから2倍の候補を受信する結果となり得る。余分な要求および応答は、追加の帯域幅およびバッテリ電力を必要とし、そのことが、ユーザのオンライン体験を損なう可能性がある。説明されるシステムは、クライアントデバイスと別のサーバとの間で必要とされる送信の回数を削減する。MPCクラスタが選択プロセスの全体を実行しているので、クライアントデバイスは、MPCクラスタのサーバに1つの要求のみを送信することができ、クライアントデバイスは、MPCクラスタから1つの応答のみを受信することができる。
場合によっては、ユーザによって前に訪問されたおよび/またはインタラクションされたウェブページ、アプリケーションページ、またはその他の電子リソースに関連するデジタルコンポーネント(またはその他のデータ)を受け取ることが、ユーザにとって有益である。そのようなデジタルコンポーネントをユーザに配信するために、ユーザは、ユーザによってアクセスされたデジタルコンテンツに基づいて、ユーザグループ、たとえば、ユーザの関心のグループ(user interest group)、同様のユーザの集団、または同様のユーザデータを含むその他のグループタイプに割り振られ得る。たとえば、ユーザが特定のウェブサイトを訪問し、ウェブサイト上に提示された特定のアイテムとインタラクションするか、または仮想カートにアイテムを追加するとき、ユーザは、同じウェブサイトもしくは文脈的に同様のその他のウェブサイトを訪問したか、または同じアイテムに興味があるユーザのグループに割り振られ得る。例示すると、クライアントデバイス110のユーザが靴を検索し、異なる靴の製造業者の複数のウェブページを訪問する場合、ユーザは、靴に関連するウェブサイトを訪問したすべてのユーザの識別子を含むことができるユーザグループ「靴」に割り振られ得る。
一部の実装においては、ユーザのグループメンバーシップが、デジタルコンポーネントサーバ、コンテンツプロバイダ、または別の関係者によってではなく、ユーザのクライアントデバイス110において、たとえば、ブラウザベースのアプリケーションによって維持され得る。ユーザグループは、ユーザグループのそれぞれのラベルによって指定され得る。ユーザグループのラベルは、グループを説明する(たとえば、ガーデニンググループ)か、またはグループを表すコード(たとえば、説明的でない英数字のシーケンス)であることが可能である。ユーザグループのラベルは、他者がリストにアクセスすることを防止するために、クライアントデバイス106のセキュアストレージに記憶されることが可能であり、および/または記憶されるときに暗号化されることが可能である。
一部の実装においては、ユーザグループの識別子が、HMAC(user_group_label, eTLD+1)として表される、ユーザグループのラベルおよびコンテンツプロバイダのドメインによってパラメータ化されたハッシュベースメッセージ認証コード(HMAC: hash-based message authentication code)を使用して生成され得る。一部の実装において、HMACは、ハッシュされた256ビット(32バイト)の出力を生成するための、256ビットのダイジェスト長を有する暗号ハッシュ関数であるセキュアハッシュアルゴリズム(SHA-256)を使用して実装され得る。そのような例において、HMAC(user_group_label, eTLD+1)は、ユーザグループ識別子として、ユーザグループの256ビットの一意識別子を生成する。
ユーザのユーザグループメンバーシップは、ユーザにとって興味のある可能性がある、または別の形でユーザ/クライアントデバイスに有益である可能性がある(たとえば、ユーザがタスクを完了するのを支援する)デジタルコンポーネントまたはその他のコンテンツを選択するために使用され得る。たとえば、そのようなデジタルコンポーネントまたはその他のコンテンツは、ユーザ体験を向上させる、ユーザデバイスの実行を改善する、または何らかのその他の形でユーザもしくはクライアントデバイスに利益をもたらすデータを含む場合がある。
MPCクラスタは、要求元のクライアントデバイスのIPアドレスなどの機密情報をサプライサイドプラットフォーム(SSP)から隠しながら、候補選択値を求めるために、デジタルコンポーネント要求またはその一部をSSPに転送する。IPアドレスは、強いフィンガープリント信号(fingerprinting signal)、つまり、特定のデバイスを特定し、デバイスをそのユーザと関連付けるために使用され得る情報であり、デバイスのIPアドレスをSSPから隠すことは、ユーザのプライバシーを向上させる。
さらに、MPCクラスタにおいて選択プロセスの全体を実行することは、デジタルコンポーネント要求に対する特定の応答のためのすべての候補選択値に選択規則を一様に適用することを可能にする。最終的な選択がクライアントデバイスにおいて実行される選択プロセスにおいて、MPCクラスタは、MPCクラスタがアクセスすることができる候補選択値に対してのみ選択規則を適用することができ、クライアントデバイスが別に受信する候補選択値には選択規則を適用することができない。これは、ユーザの体験の一貫性を高め、たとえば、ユーザが特定の選択規則を指定し、規則が一部のデジタルコンポーネントに関しては施行され、その他のデジタルコンポーネントに関しては施行されないときに生じ得る混乱を軽減する。
MPCクラスタは、選択プロセスのセキュリティを維持するために、秘密分散(secret sharing)アルゴリズムを実装する。説明されるシステムにおいて、MPCクラスタは、選択プロセス中に実行される必要があるブール演算を安全に評価するために、紛失通信拡張(OTe: Oblivious Transfer extension)などの秘密分散アルゴリズムを使用することができる。このアルゴリズムは、選択規則の適用をサポートするために必要とされる増加計算コストおよびレイテンシを最小化する。
図1は、MPCクラスタが、クライアントデバイス110に配信するためのデジタルコンポーネントを選択するためにセキュアMPCプロセスを実行する環境100のブロック図である。例示的な環境100は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、インターネット、モバイルネットワーク、またはこれらの組合せなどのデータ通信ネットワーク105を含む。ネットワーク105は、クライアントデバイス110、セキュアMPCクラスタ130、パブリッシャ140、ウェブサイト142、コンテンツプラットフォーム、たとえば、サプライサイドプラットフォーム(SSP)170、およびデマンドサイドプラットフォームDSP(150)を接続する。例示的な環境100は、多くの異なるクライアントデバイス110、セキュアMPCクラスタ130、パブリッシャ140、ウェブサイト142、DSP150、およびSSP170を含んでよい。
クライアントデバイス110は、ネットワーク105を介して通信することができる電子デバイスである。例示的なクライアントデバイス110は、パーソナルコンピュータ、モバイル通信デバイス、たとえば、スマートフォン、およびネットワーク105を介してデータを送受信することができるその他のデバイスを含む。クライアントデバイスは、マイクロフォンを通じてオーディオ入力を受け付け、スピーカを通じてオーディオ出力を出力するデジタルアシスタントデバイスも含み得る。デジタルアシスタントは、オーディオ入力を受け付けるためにマイクロフォンを作動させる「ホットワード」または「ホットフレーズ」を検出するときに、(たとえば、オーディオ入力を受け付ける準備ができている)リスニングモードにされ得る。デジタルアシスタントデバイスは、画像を取り込み、情報を視覚的に提示するためのカメラおよび/またはディスプレイを含むこともできる。デジタルアシスタントは、ウェアラブルデバイス(たとえば、腕時計もしくは眼鏡)、スマートフォン、スピーカデバイス、タブレットデバイス、またはその他のハードウェアデバイスを含む、異なる形態のハードウェアデバイスに実装され得る。クライアントデバイスは、デジタルメディアデバイス、たとえば、テレビまたはその他のディスプレイに接続されてテレビにビデオをストリーミングするストリーミングデバイス、ゲームコンソール、または仮想現実システムを含むこともできる。
概して、クライアントデバイス110は、ネットワーク105を介したデータの送受信を容易にするための、ウェブブラウザおよび/またはネイティブアプリケーションなどのアプリケーション112を含む。ネイティブアプリケーションは、特定のプラットフォームまたは特定のデバイス(たとえば、特定のオペレーティングシステムを有するモバイルデバイス)向けに開発されたアプリケーションである。一部の実装において、アプリケーション112は、オペレーティングシステムなどのプログラムであることが可能である。パブリッシャ140は、ネイティブアプリケーションを開発し、クライアントデバイス110に提供する、たとえば、ダウンロードを可能にすることができる。ウェブブラウザは、たとえば、クライアントデバイス110のユーザによるウェブブラウザのアドレスバーへのリソース145のリソースアドレスの入力またはリソースアドレスを参照するリンクの選択に応じて、パブリッシャ140のウェブサイト142をホストするウェブサーバにリソース145を要求することができる。同様に、ネイティブアプリケーションが、パブリッシャのリモートサーバにアプリケーションのコンテンツを要求し得る。
一部のリソース、アプリケーションページ、またはその他のアプリケーションのコンテンツは、リソース145またはアプリケーションページとともにデジタルコンポーネントを提示するためのデジタルコンポーネントスロットを含み得る。本明細書全体を通じて使用されるとき、語句「デジタルコンポーネント」は、デジタルコンテンツまたはデジタル情報の別々の単位(たとえば、ビデオクリップ、オーディオクリップ、マルチメディアクリップ、画像、テキスト、またはコンテンツの別の単位)を指す。デジタルコンポーネントは、物理的なメモリデバイスに単一のファイルとしてまたはファイルの集合に電子的に記憶されることが可能であり、デジタルコンポーネントは、ビデオファイル、オーディオファイル、マルチメディアファイル、画像ファイル、またはテキストファイルの形態を取り、広告が一種のデジタルコンポーネントであるように広告情報を含むことが可能である。たとえば、デジタルコンポーネントは、アプリケーション112によって提示されるウェブページまたはその他のリソースのコンテンツを補完するように意図されるコンテンツであってよい。より詳細には、デジタルコンポーネントは、リソースのコンテンツに関連するデジタルコンテンツを含んでよい(たとえば、デジタルコンポーネントは、ウェブページのコンテンツと同じトピックまたは関連するトピックに関連する場合がある)。したがって、デジタルコンポーネントの提供は、ウェブページまたはアプリケーションのコンテンツを補完し、概して向上させることができる。
アプリケーション112が1つまたは複数のデジタルコンポーネントスロットを含むリソース(またはアプリケーションのコンテンツ)をロードするとき、アプリケーション112は、各スロットのためのデジタルコンポーネントを要求し得る。一部の実装において、デジタルコンポーネントスロットは、アプリケーション112に、デジタルコンポーネントを選択し、クライアントデバイス110のユーザに対する提示のためにデジタルコンポーネントをアプリケーション112に提供するMPCクラスタ130などのMPCクラスタからのデジタルコンポーネントを要求させるコード(たとえば、スクリプト)を含み得る。下で説明されるように、アプリケーション112は、MPCクラスタ130にデジタルコンポーネントを要求することができ、MPCクラスタ130は、要求をSSP170などのその他のサーバに転送することができる。
一部のパブリッシャ140は、そのリソースおよび/またはアプリケーションのデジタルコンポーネントスロットのためのデジタルコンポーネントを取得するプロセスを管理するためにSSP170を使用する。SSP170は、リソースおよび/またはアプリケーションのためのデジタルコンポーネントを取得するプロセスを自動化する、ハードウェアおよび/またはソフトウェアに実装されたテクノロジープラットフォームである。各パブリッシャ140は、対応する1つのSSP170または複数のSSP170を持ち得る。いくつかのパブリッシャ140が、同じSSP170を使用する場合がある。
デジタルコンポーネントプロバイダ160は、パブリッシャのリソースおよびアプリケーションのデジタルコンポーネントスロットに提示されるデジタルコンポーネントを作成する(またはそうでなければ公開する)ことができる。デジタルコンポーネントプロバイダ160は、デジタルコンポーネントスロットにおける提示のためのそのデジタルコンポーネントのプロビジョニングを管理するためにDSP150を使用することができる。DSP150は、リソースおよび/またはアプリケーションとともに提示するためのデジタルコンポーネントを配信するプロセスを自動化する、ハードウェアおよび/またはソフトウェアに実装されたテクノロジープラットフォームである。DSP150は、複数の異なるパブリッシャ140のリソースおよび/またはアプリケーションとともに提示するためのデジタルコンポーネントを提供するために、デジタルコンポーネントプロバイダ160に代わって、複数のサプライサイドプラットフォームSSPとインタラクションすることができる。概して、DSP150は、(たとえば、SSPから)デジタルコンポーネントの要求を受信し、要求に基づいて、1つまたは複数のデジタルコンポーネントプロバイダによって作成された1つまたは複数のデジタルコンポーネントに関する選択値を生成(または選択)し、デジタルコンポーネント(たとえば、デジタルコンポーネント自体)および選択パラメータに関連するデータをSSPに提供することができる。選択値は、デジタルコンポーネントプロバイダ160が提示またはデジタルコンポーネントとのユーザインタラクションのために提供して構わない量を示し得る。そして、SSPは、クライアントデバイス110における提示のためにデジタルコンポーネントを選択し、クライアントデバイス110にデジタルコンポーネントを提示させるデータをクライアントデバイス110に提供することができる。
場合によっては、ユーザによって前に訪問されたおよび/またはインタラクションされたウェブページ、アプリケーションページ、またはその他の電子リソースに関連するデジタルコンポーネントを受け取ることが、ユーザにとって有益である。そのようなデジタルコンポーネントをユーザに配信するために、ユーザは、ユーザが特定のリソースを訪問するか、またはリソースにおいて特定のアクションを実行する(たとえば、ウェブページ上に提示された特定のアイテムとインタラクションするか、もしくは仮想カートにアイテムを追加する)ときに、ユーザグループ、たとえば、ユーザの関心のグループ、同様のユーザの集団、または同様のユーザデータを含むその他のグループタイプに割り振られ得る。ユーザグループは、デジタルコンポーネントプロバイダ160によって生成され得る。つまり、各デジタルコンポーネントプロバイダ160は、ユーザがデジタルコンポーネントプロバイダ160の電子リソースを訪問するときに、ユーザをそのユーザグループに割り振ることができる。また、ユーザグループは、コンテンツプラットフォームによって、たとえば、DSP150および/またはSSP170によって作成され得る。
ユーザのプライバシーを保護するために、ユーザのグループメンバーシップは、デジタルコンポーネントプロバイダ、コンテンツプラットフォーム、またはその他の関係者によってではなく、ユーザのクライアントデバイス110において、たとえば、アプリケーション112のうちの1つ、またはクライアントデバイス110のオペレーティングシステムによって維持され得る。特定の例においては、信頼されたプログラム(たとえば、ウェブブラウザまたはオペレーティングシステム)が、ウェブブラウザまたは別のアプリケーションを使用するユーザの(たとえば、ブラウザ、アプリケーション、またはクライアントデバイス110にログインしたユーザの)ユーザグループ識別子のリスト(「ユーザグループリスト」)を維持することができる。ユーザグループリストは、ユーザをメンバーとして含む各ユーザグループのグループ識別子を含み得る。ユーザグループを作成するデジタルコンポーネントプロバイダ160は、そのユーザグループのユーザグループ識別子を指定することができる。ユーザグループのユーザグループ識別子は、グループを説明する(たとえば、ガーデニンググループ)か、またはグループを表すコード(たとえば、説明的でない英数字のシーケンス)であることが可能である。ユーザのユーザグループリストは、他者がリストにアクセスすることを防止するために、クライアントデバイス110のセキュアストレージに記憶されることが可能であり、および/または記憶されるときに暗号化されることが可能である。
アプリケーション112が、デジタルコンポーネントプロバイダ160に関連するリソースもしくはアプリケーションのコンテンツ、またはウェブサイト142上のウェブページを提示するとき、リソースは、アプリケーション112がユーザグループリストに1つまたは複数のユーザグループ識別子を追加することを要求し得る。それに応じて、アプリケーション112は、ユーザグループリストに1つまたは複数のユーザグループ識別子を追加し、ユーザグループリストを安全に記憶することができる。
MPCクラスタ130は、ユーザのユーザグループメンバーシップを使用して、ユーザにとって興味のある可能性がある、または別の形でユーザ/ユーザデバイスにとって有益である可能性があるデジタルコンポーネントまたはその他のコンテンツを選択することができる。たとえば、そのようなデジタルコンポーネントまたはその他のコンテンツは、ユーザ体験を向上させる、ユーザデバイスの実行を改善する、または何らかのその他の形でユーザもしくはユーザデバイスに利益をもたらすデータを含む場合がある。しかし、MPCクラスタ130のコンピューティングシステムMPC1およびMPC2が平文のユーザのユーザグループ識別子にアクセスすることを防止するようにして、ユーザのユーザグループリストのユーザグループ識別子が提供され、デジタルコンポーネントを選択するために使用されることが可能であり、それによって、デジタルコンポーネントを選択するためにユーザグループメンバーシップデータを使用するときにユーザのプライバシーを守る。平文は、コンピュータによってタグ付けされておらず、特別にフォーマットされておらず、コードで書かれていないテキスト、あるいは鍵もしくはその他の復号デバイスまたはその他の復号プロセスを必要とせずに閲覧または使用され得る形態の、バイナリファイルを含むデータである。また、MPCクラスタ130は、デジタルコンポーネントにマッピングされた勝ち残り選択値を選択するために、SSP170から受信された1セットの候補選択値を使用して最終選択プロセスを実行する。そして、MPCクラスタ130は、デジタルコンポーネント要求に応じて、勝ち残り選択値にマッピングされたデジタルコンポーネントのデータをクライアントデバイス110に直接提供する。データは、たとえば、パラメータの中でもとりわけ、デジタルコンポーネントを特定するデータ、デジタルコンポーネントが記憶されている場所および/またはデジタルコンポーネントが要求され得る場所、ならびに勝ち残り選択値を含み得る。
セキュアMPCクラスタ130は、ユーザのグループメンバーシップに基づいて、しかし、平文のグループメンバーシップ情報(またはその他の機密ユーザ情報)にアクセスすることなく、ユーザのクライアントデバイスに配信するためのデジタルコンポーネントを選択するためにセキュアMPCプロセスを実行する2つのコンピューティングシステムMPC1およびMPC2(たとえば、サーバコンピュータ)を含む。例示的なMPCクラスタ130は2つのコンピューティングシステムを含むが、MPCクラスタ130が2つ以上のコンピューティングシステムを含む限り、より多くのコンピューティングシステムが使用されることも可能である。たとえば、MPCクラスタ130は、3つのコンピューティングシステム、4つのコンピューティングシステム、または別の適切な数のコンピューティングシステムを含み得る。MPCクラスタ130により多くのコンピューティングシステムを使用することは、より高いセキュリティを提供し得るが、MPCプロセスの複雑さも増大させ得る。
コンピューティングシステムMPC1およびMPC2は、異なるエンティティによって運用され得る。このようにして、各エンティティは、平文のユーザのグループメンバーシップにアクセスすることができない可能性がある。たとえば、コンピューティングシステムMPC1またはMPC2のうちの一方は、ユーザ、パブリッシャ140、DSP150、SSP170、およびデジタルコンポーネントプロバイダ160とは異なる信頼された関係者によって運用され得る。たとえば、業界団体、政府機関、またはブラウザ開発者が、コンピューティングシステムMPC1およびMPC2のうちの一方を維持し、運用する場合がある。異なる信頼された関係者が各コンピューティングシステムMPC1およびMPC2を運用するように、他方のコンピューティングシステムは、これらのグループのうちの異なる1つによって運用されてよい。好ましくは、異なるコンピューティングシステムMPC1およびMPC2を運用する異なる関係者は、共謀してユーザのプライバシーを危険にさらす動機を持たない。一部の実装において、コンピューティングシステムMPC1およびMPC2は、アーキテクチャ的に分離されており、本明細書において説明されるセキュアMPCプロセスの実行の外で互いに通信しないように監視される。
本明細書全体の説明に加えて、ユーザは、本明細書において説明されるシステム、プログラム、または特徴がユーザ情報(たとえば、ユーザのソーシャルネットワーク、社会的行為、または活動、職業、ユーザの好み、またはユーザの現在位置についての情報)の収集を有効化してもよいかどうかといつ有効化してもよいかとの両方、およびコンテンツまたは通信がサーバからユーザに送信されるかどうかについての選択をユーザが行うことを可能にするコントロール(たとえば、ユーザがインタラクションすることができるユーザインターフェース要素)を提供されてよい。さらに、特定のデータが、個人を特定することができる情報が削除されるように、記憶されるかまたは使用される前に1つまたは複数の方法で処理される場合がある。たとえば、ユーザのアイデンティティ(identity)が、個人を特定することができる情報がユーザに関して決定され得ないか、または位置情報が取得される場合にユーザの地理的位置が(都市、郵便番号、もしくは州のレベルまでになど)一般化される可能性があり、したがって、ユーザの特定の位置が決定され得ないように処理される場合がある。したがって、ユーザは、どの情報がユーザについて収集されるか、その情報がどのように使用されるのか、およびどの情報がユーザに提供されるのかを制御することができてよい。
図2は、クライアントデバイスにおける表示またはクライアントデバイスへの配信のために提供するためのデジタルコンポーネントを選択するための例示的なプロセス200のデータフロー図である。プロセス200の動作は、たとえば、クライアントデバイス110上のアプリケーション112、MPCクラスタ130のコンピューティングシステムMPC1およびMPC2、DSP150、ならびにSSP170によって実施され得る。プロセス200の動作は、非一時的である場合がある1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されることも可能であり、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス200の動作を実行させることが可能である。以下のプロセス200およびその他のプロセスは2つのコンピューティングシステムのMPCクラスタ130の観点で説明されるが、3つ以上のコンピューティングシステムを有するMPCクラスタも、同様のプロセスを実行するために使用され得る。
この説明は、2種類の選択値--ユーザグループのメンバーシップもしくはその他のビジネス上の機密情報などの機密ユーザ情報か、または値の変化が悪質な関係者が機密情報を推測することを可能にし得るパラメータかのどちらかを条件とする選択値、すなわち、「条件付き選択値」と、機密情報を条件としない選択値、すなわち、「無条件選択値」--を含む。ユーザのプライバシーを保護するために、「条件付き選択値」の条件は、「条件付き選択値」がコンテンツ選択プロセスの対象となるかどうかを判定するために、SSP170またはDSP150ではなくMPCクラスタ130内で評価される。
この構造は、MPCクラスタ130が、ユーザのプライバシーおよびビジネス上の極秘情報を保護し、アプリケーション112のプロバイダなどのアプリケーションプロバイダに対してその信頼性を証明することを可能にする。この例において、MPCクラスタ130は、MPCクラスタ130の2つのコンピューティングシステムのうちの少なくとも1つが正直である場合、極秘ユーザデータまたはビジネス上の極秘情報の漏洩がないことを保証するために暗号技術を適用するセキュア2パーティ計算(2PC: 2-Party computation)アーキテクチャに依拠する。MPCクラスタ130が3つ以上のコンピューティングシステムを含む場合、現在のMPCプロトコルが拡張されることが可能であり、またはその他のMPCプロトコルが使用されることが可能である。
MPCクラスタ130は、セキュア2PCプロトコルを実行して、適格な選択プロセス候補を選択するための条件を評価し、適用し、(たとえば、デジタルコンポーネントが勝ち残り選択値にマッピングされる場合)勝ち残り選択値に基づいてデジタルコンポーネントを選択するための選択プロセスを実施し、それらの条件が依存するカウンタを更新するためのインプレッション(impression)通知を受信する。これらのプロセスのすべては、秘密分散技術を使用して行われ得る。このプロトコルは、図3に関連して下で詳細に説明される。
プロセス200は、アプリケーション112が、SSP170などのコンテンツ配信サーバからのトリガ要素と共同して、MPCクラスタ130にデジタルコンポーネントの要求を送信する段階Aから始まる。アプリケーション112は、複数のデジタルコンポーネントをフェッチするために、デジタルコンポーネントの複数の要求をまとめて1つの組合せ要求に含めることができる。そして、MPCクラスタ130は、組合せ要求内の各要求を独立して満たすか、または1つもしくは複数の選択の判断を包括的に行うことができる。この例において、要求は、単一のデジタルコンポーネントを求めるものであり、機密情報に基づいて選択されるデジタルコンポーネント、または機密情報を使用せずに選択されるデジタルコンポーネントの要求を含む。MPCクラスタ130は、それぞれがそれぞれの特定のデジタルコンポーネントにマッピングされる選択値のセットの中から特定の選択値を選択することによって要求に応答することができる。これらの選択値は、MPCクラスタ130において以前にキャッシュされたかもしくはその他の方法で記憶された選択値、および/またはDSP150もしくはSSP170などのプラットフォームによって生成された選択値、ジャストインタイム(JIT: just-in-time)選択値であることが可能である。JIT選択値は、必要性に応じて直接生成され、デジタルコンポーネントが必要とされるときにだけ選択値が生成されるので効率を高め、無駄を減らす。たとえば、デジタルコンポーネントスロットが利用可能になるときに--これはデジタルコンポーネントの要求の受信によって示される--JIT選択値が生成され得る。
要求は、アプリケーション112がマッピングされるかまたはその他の方法で関連付けられるユーザグループの識別子などの機密となり得る情報と、デジタルコンポーネントが提示および/または表示されるコンテキストに関するアプリケーション112からのコンテキスト信号(contextual signal)などの機密ではない情報とを含む、デジタルコンポーネント選択プロセスにおいて使用される情報を含む。下でさらに詳細に説明されるように、システム110の設計は、機密または極秘となり得るユーザデータの保護を改善する。
トリガ要素は、たとえば、アプリケーション112によって訪問されたインターネットロケーション内のデジタルコンポーネントスロットの存在を検出するタグであることが可能である。トリガ要素は、たとえば、インターネットロケーションに置かれることが可能であり、デジタルコンポーネントが要求されるべきデジタルコンポーネントスロットの存在をアプリケーション112に知らせることができる。
プロセス200は、MPCクラスタ130が、コンテキスト信号のなどの機密でない情報に基づいているデジタルコンポーネント要求をSSP170に送信する段階Bで継続する。この要求は、「コンテキスト要求(contextual request)」と呼ばれ、このコンテキスト要求に対する応答は、要求が機密情報を受信することを条件としないので、無条件選択値であることが可能である。コンテキスト要求は、デジタルコンポーネントの要求をトリガしたインターネットロケーション(たとえば、コンテンツパブリッシャ)によって直接収集された様々なコンテキスト信号およびユーザ情報を含み得る。たとえば、コンテキスト信号は、分析データ、言語設定、およびコンテンツパブリッシャが良好なユーザ体験を提供するのを支援するその他のデータを含み得る。しかし、SSP170に提供されるコンテキスト要求は、ユーザグループ識別子などの機密情報を含まない。
プロセス200は、SSP170が1つまたは複数のDSP150にコンテキスト要求を転送する段階Cで継続する。この特定の例においては、簡単にするために、SSP170は、コンテキスト要求を単一のDSP150に転送する。たとえば、SSP170は、コンテキスト要求をDSP150に転送することができる。この例において、DSP150は、デジタルコンポーネントと、デジタルコンポーネントにマッピングされた選択値とを有する。
プロセス200は、1つまたは複数のDSP150がコンテキスト要求に応じて選択値を返す段階Dで継続する。たとえば、DSP150は、コンテキスト要求に応じた、デジタルコンポーネントにマッピングされた1つまたは複数の選択値を返す。DSP150は、コンテキスト要求に応じた、任意の数の選択値を返すことができる。一部の実装において、DSP150は、さらに、ユーザグループ情報などの機密情報に基づくデジタルコンポーネント要求に応じた選択値を返すことができる。これらの選択値は、機密情報を条件としており、したがって、選択値が条件とする機密情報と一致する機密情報を含む要求をMPCクラスタ130が受信することを条件としているので「条件付き選択値」である。DSP150が提供する各選択値に関して、DSP150は、生存時間(TTL)パラメータ、すなわち、MPCクラスタ130が選択値をキャッシュしてよい最大の期間などの情報を含む。このTTLパラメータは、MPCクラスタ130がDSP150から受信された選択値をキャッシュすることを可能にする。一部の実装においては、TTLパラメータがなければ、MPCクラスタ130は、受信された選択値をキャッシュせず、その代わりに、選択値が選択プロセス、たとえば、段階A、B、およびCにおいて送信されたデジタルコンポーネント要求に対応する選択プロセスで使用された後、選択値を破棄する。
プロセス200は、SSP170がコンテンツ選択規則を適用する段階Eで継続する。たとえば、SSP170は、特定のコンテンツプロバイダが候補デジタルコンポーネントおよび選択値を提供する資格を持つことを防止する、または特定のデジタルコンポーネントが候補になることを防止する、コンテンツプロバイダおよびデジタルコンポーネントブロッキング規則などの規則を適用する。一部の実装において、アプリケーション112は、ユーザによって明示的にブロックされたデジタルコンポーネントの識別子を含む、ブロックされた識別子のセットを維持することができる。たとえば、ユーザが所定のデジタルコンポーネント(またはクライアントデバイス110に配信されたデータの一部)に対応するミュート要素とインタラクションすると仮定する。この例において、ミュート要素とのユーザのインタラクションは、ユーザが、将来(たとえば、少なくともある量の時間の間)、そのデジタルコンポーネント、あるいは(たとえば、同じコンテンツソースもしくはキャンペーン(campaign)であることが可能であり、または異なるコンテンツソースもしくはキャンペーンであることが可能であるコンテンツソースまたはキャンペーンからの)潜在的に同様のデジタルコンポーネントを見たくないという指示である。インタラクションに応じて、アプリケーション112は、与えられたデジタルコンポーネントの識別子をブロックされたユニバーサル識別子(universal identifier)のセットに追加することができ、その識別子は、その後、与えられたデジタルコンポーネントと同じ識別子を有するその他のデジタルコンポーネントの配信または提示を防止するために使用され得る。一部の実装において、アプリケーション112は、最近あまりにも頻繁に、たとえば、直近のY分の間にX回を超えてユーザに示されたデジタルコンポーネントの識別子を含むブロックされた識別子のセットを維持することができる。アプリケーション112は、与えられたデジタルコンポーネントの識別子をブロックされたユニバーサル識別子のセットに追加することができ、その識別子は、その後、近い将来、与えられたデジタルコンポーネントと同じ識別子を有するその他のデジタルコンポーネントの配信または提示を防止するために使用され得る。
また、SSP170は、たとえば、選択値が特定のコンテンツプロバイダに関するポストパブリッシング値(post-publishing value)にどのように影響を与えるかを決定するための選択値規則を適用する。ポストパブリッシング値は、たとえば、デジタルコンポーネントを公開するためにコンテンツプロバイダに提供される金額を示し得る。それから、SSP170は、最も高いポストパブリッシング値をもたらす無条件選択値である最上位無条件選択値を決定するための選択プロセスを実行する。無条件選択値は、機密情報を条件としておらず、したがって、ユーザグループメンバーシップ、頻度制御、コンテンツ配信規則、およびペース配分(pacing)規則などのコンテンツ選択規則が、適用されない。そして、SSP170は、MPCクラスタ130に、JIT選択値である以下のもの、すなわち、MPCクラスタ130でのキャッシュを可能にするすべての選択値(TTL値を有する選択値)、およびポストパブリッシング値が最上位無条件選択値のポストパブリッシング値以上であるすべての選択値を転送する。
プロセス200は、MPCクラスタ130が、キャッシュを可能にする(すなわち、TTL値を有する)受信されたJIT選択値によってそのMPCクラスタ130のキャッシュを更新する段階Fで継続する。さらに、MPCクラスタ130は、段階Eにおいて受信されたすべての選択値、および以前にキャッシュされた選択値に対して、ユーザメンバーシップ規則、頻度制御、ペース配分規則、および特定のユーザのマイクロターゲティングを防止するための規則などの選択規則を適用して、選択プロセスのための有効な候補を選択する。規則は、要素の中でもとりわけ、デジタルコンポーネントの配信の方法または頻度に関する制限およびガイドラインを含み得る。規則は、頻度制御、ミュート、予算、およびペース配分の制約を含む。そして、MPCクラスタ130は、すべての適格な候補の間で最終選択プロセスを実行し、勝ち残り選択値を選択し、それから、デジタルコンポーネント要求に応じて、勝ち残り選択値にマッピングされたデジタルコンポーネントのデータをアプリケーション112に返す。
プロセス200は、勝ち残り選択値にマッピングされたデジタルコンポーネントがアプリケーション112によってレンダリングされる段階Gで継続する。そのとき、アプリケーション112は、MPCクラスタ130にインプレッション通知を提供する。このインプレッション通知は、MPCクラスタ130が選択規則を施行することを可能にするカウンタを更新することに関連する情報をMPCクラスタ130が更新することを可能にするデータを含む。一部の実装において、アプリケーション112は、モバイルデバイスのネットワーク通信の数およびバッテリ/帯域幅の消費を減らすために、将来のコンポーネント要求AにピギーバックすることによってMPCクラスタ130にインプレッション通知Gを送信してよい。
図3は、クライアントデバイスにおける表示またはクライアントデバイスへの配信のために提供するためのデジタルコンポーネントを選択するための例示的なプロセス300のスイムレーン図である。プロセス300の動作は、たとえば、クライアントデバイス110上のアプリケーション112、MPCクラスタ130のコンピューティングシステムMPC1およびMPC2、DSP150、ならびにSSP170によって実施され得る。プロセス300の動作は、非一時的である場合がある1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されることも可能であり、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス300の動作を実行させることが可能である。以下のプロセス300およびその他のプロセスは2つのコンピューティングシステムのMPCクラスタ130の観点で説明されるが、3つ以上のコンピューティングシステムを有するMPCクラスタも、同様のプロセスを実行するために使用され得る。この特定の例において、コンピューティングシステムMPC1およびMPC2は、同一のソフトウェアおよび機能を有するが、ユーザのプライバシーを侵害するために共謀する動機のない異なるエンティティによって管理される。
MPCクラスタは、ユーザグループ情報などのデジタルコンポーネント要求内の特徴情報に基づいて、デジタルコンポーネントを選択するためのセキュアMPC処理を実行する。これは、ユーザのユーザグループ識別子のうちの1つと一致するユーザグループ識別子を有するデジタルコンポーネントに基づいて、選択の候補であるデジタルコンポーネントに関する選択値を特定することも含み得る。これは、デジタルコンポーネントに関する選択値に基づいて、候補デジタルコンポーネントからデジタルコンポーネントを選択することも含み得る。これらの選択値は、MPCクラスタにキャッシュされた選択値と、選択値の要求に応じてその他のサーバから受信された選択値とを含み、一部の選択値は、機密情報を条件とし得る。これは、コンピューティングシステムMPC1かまたはMPC2かのどちらかが平文のユーザグループ識別子にアクセスすることなしにすべて実行され得る。
コンピューティングシステムMPC1およびMPC2は、コンピューティングシステムMPC1もMPC2も、どのデジタルコンポーネントが候補であるか、またはユーザをメンバーとして含むユーザグループを知らないように、秘密シェアを使用するセキュアMPC技術を使用して候補選択値を特定することができる。これを行うために、コンピューティングシステムMPC1は、現在のデジタルコンポーネント要求を潜在的に満たす可能性のある条件付き選択値のセット内の各条件付き選択値に関する候補パラメータの第1のシェアを計算する。同様に、コンピューティングシステムMPC2は、条件付き選択値の同じセット内の各条件付き選択値に関する候補パラメータの第2のシェアを計算する。条件付き選択値は、デジタルコンポーネントおよび任意でユーザグループ識別子に関連付けられた選択値が候補であるかどうかを示すブール値(たとえば、0または1)であることが可能である。
コンピューティングシステムMPC1およびMPC2は、コンピューティングシステム間の1回または複数回の往復によってセキュアMPC技術を使用して選択プロセスの結果に関する秘密シェアを計算することができる。つまり、コンピューティングシステムMPC1およびMPC2は、勝ち残り選択値、その対応するデジタルコンポーネントを特定するデータ、および/またはデジタルコンポーネントがクライアントデバイスによってダウンロードされ得るネットワークロケーションを特定するデータに関する秘密シェアを決定することができる。
秘密シェアの計算が完了すると、MPC1およびMPC2は、それぞれ、選択結果のシェアのうちの1つをクライアントデバイスに返すことができる。そして、クライアントデバイスは、2つの秘密シェアを使用して、平文の選択結果を再構築することができる。
フロー300は、アプリケーション112がMPCクラスタ130に送信するデジタルコンポーネント要求を生成するステップ1から始まる。アプリケーション112は、MPCクラスタ130のコンピューティングシステムのうちで、要求が送信されるコンピューティングシステムを選択する。この選択プロセスは、任意であることが可能であり、この例においては、簡単にするため、選択されたコンピューティングシステムは、MPC1とする。
この最初の広告要求は、3種類の情報、すなわち、コンピューティングシステムMPC1およびMPC2の各々のための機密情報に基づくデジタルコンポーネント要求、ならびにSSP170のための非機密情報に基づくデジタルコンポーネント要求を含む。
機密情報に基づくデジタルコンポーネント要求を安全で効率的に生成するために、アプリケーション112は、カッコウフィルタ(cuckoo filter)またはブルームフィルタなどの確率的データ構造を使用することができる。この例において、確率的データ構造は、カッコウフィルタである。概して、カッコウフィルタは、バケットの配列を含み、各バケットは、b個のフィンガープリントを保持することができる。アイテムのフィンガープリントは、そのアイテムのハッシュから導出されたビット列である。カッコウフィルタは、アイテムがn個の異なるバケット内のb個の位置のいずれかに置かれることを可能にするn個のハッシュ関数を使用する。概して、カッコウフィルタは、各バケット内のフィンガープリントの数およびバケットの数によって特定される。たとえば、(2, 4)カッコウフィルタは、2つのバケットを有し、カッコウ配列(cuckoo array)内の各バケットが、最大4つのフィンガープリントを記憶し得る。したがって、カッコウフィルタの総容量は、2 x 4、つまり8フィンガープリントである。
カッコウフィルタの構成に応じて、アイテムは、カッコウフィルタのN個の可能な位置うちの1つに挿入されることが可能であり、たとえば、N = 2である。アプリケーション112は、ユーザグループ識別子かまたはブロックされた識別子のセットからの識別子かのどちらかと、アプリケーション112によって生成された2つのランダム変数(random variable)のどちらかとによってパラメータ化されたN個の疑似ランダム関数(PRF: pseudo random function)を使用して、アイテムが挿入されるためのすべての可能な位置を決定する。たとえば、アプリケーション112によって生成された2つのランダム変数がrand_var1aおよびrand_var1bであると仮定する。一部の実装において、アプリケーション112およびMPCクラスタ130は、事前にPRFについて合意し、PRF(x, y)∈[0, 2k - 1]であり、kは、カッコウフィルタのバケット内の各アイテムのビット数である。カッコウフィルタの各位置は、ユーザグループ識別子もしくはブロックされた識別子によって占有されるか、また空であることが可能である。たとえば、アプリケーション112は、要素がPRF(ug_id, rand_var1a)、PRF(blocked_uid, rand_var1b)、および0であるカッコウフィルタテーブルを生成することができ、ug_idは、コンテンツプロバイダのドメインに基づいてユーザグループのラベルにHMACを適用することによって生成されたユーザグループの識別子であり、blocked_uidは、ブロックされた識別子のセットからの識別子であり、0は、空のアイテムを表す。プロセスは、すべてのユーザグループ識別子、およびブロックされた識別子のセット内のすべての識別子に対して繰り返される。
アプリケーション112は、ユーザグループ識別子およびブロックされたユニバーサル識別子のセット内のユニバーサル識別子に関して生成されたカッコウフィルタテーブルに基づいて、ベクトルBを生成することができる。ベクトルBは、Bi = Ai - PRF(rand_var2, i)と表されることが可能であり、Aiは、カッコウフィルタテーブルであり、iは、ベクトルBとカッコウフィルタテーブルAのインデックスである。アプリケーション112がデジタルコンポーネントスロットのためのデジタルコンポーネントの要求を開始するとき、アプリケーションは、rand_var1a、rand_var1b、およびrand_var2を要求パラメータとしてMPC1に送信する。また、アプリケーション112は、ベクトルBおよびrand_var1を要求パラメータとしてMPC2に送信する。コンピューティングシステムMPC1とMPC2とのどちらもすべての要求パラメータにアクセスすることができないので、コンピューティングシステムのどちらも、カッコウフィルタテーブルを再作成することができず、ユーザのプライバシーを保護することができる。
それから、アプリケーション112は、対応する秘密シェアを含むデジタルコンポーネント要求をMPCシステムの対応する計算サーバに送信することができる。たとえば、アプリケーション112は、前の段落で説明されたベクトルBであることが可能である確率的データ構造(すなわち、カッコウフィルタ)の第1の秘密シェアを含むデジタルコンポーネント要求を生成し、MPC1に送信する。パラメータは、rand_var1aおよびrand_var1b、ならびにデジタルコンポーネント要求が生成され、送信されることをトリガしたロケーションからのコンテキスト信号を含む。同様に、また、アプリケーション112は、iが秘密シェアの配列のインデックスである関数PRF(rand_var2, i)を介してrand_var2によって定義される確率的データ構造の第2の秘密シェア、ならびにrand_var1aおよびrand_var1bを含むデジタルコンポーネントの要求をMPC2に送信する。デジタルコンポーネント要求に含まれる追加のデータは、デジタルコンポーネントが適格であるコンテキストを示すコンテキスト選択信号(contextual selection signal)、たとえば、クライアントデバイス110の位置、アプリケーション110のために選択された話し言葉、デジタルコンポーネントがともに提示され得るリソースのユニバーサルリソースロケータ(URL)、および/またはデジタルコンポーネントがともに提示され得ないリソースの除外URLを含み得る。デジタルコンポーネントに関するこのデータは、たとえば、一意識別子、デジタルコンポーネントが取得され得るドメイン、および/またはデジタルコンポーネントに関するその他の適切なデータを使用してデジタルコンポーネントを特定することもできる。
MPC1がMPC2を対象とする要求パラメータにアクセスすることができる場合、MPC1がカッコウフィルタテーブルAを再構築し、ユーザグループ識別子を復元し、アプリケーション112のユーザのプライバシーを侵害し得るので、アプリケーション112は、機密情報に基づくデジタルコンポーネント要求を暗号化する。たとえば、アプリケーション112は、公開鍵暗号およびMPC2の公開鍵を使用して、すなわち、PubKeyEncrypt(rand_var1a || rand_var1b || rand_var2 || その他の信号, MPC2)を使用してMPC2のためのデジタルコンポーネント要求を暗号化することができ、||は、プロトコルバッファまたはJSONなどの、単純なメッセージから複雑なメッセージを構成するために使用され得る任意の可逆メソッドである。関数PubKeyEncrypt()を使用することによって、括弧内のパラメータは、MPC2が対応する秘密鍵を使用してシェアを復号することができるように、公開鍵アルゴリズムおよびMPC2の公開鍵を使用して暗号化される。暗号化される場合、アプリケーション112は、MPC1に、MPC2のためのデジタルコンポーネント要求を送信することができ、MPC1が、この暗号化された要求をMPC2に転送することができる。このようにして、アプリケーション112は、3つの下位要求、たとえば、コンテキスト信号を含むコンテキスト要求と、2つのユーザグループ要求(すなわち、ユーザグループ情報を条件とする条件付き要求)とを含む単一の要求をMPC1に送信することができる。第1のユーザグループ下位要求は、MPC1のためのものであり、第2のユーザグループ下位要求は、MPC2のための暗号化されたユーザグループ要求である。第2の下位要求は、MPC1が情報にアクセスすることができず、単にシェアをMPC2に転送しなければならないように暗号化される。
SSP170のために、コンテキスト信号などの非機密情報に基づくデジタルコンポーネント要求を安全で効率的に生成するために、アプリケーション112は、特定のコンテンツプロバイダ専用の信号などの任意の信号を含むコンテキスト信号を使用するが、機密情報に基づくデジタルコンポーネント要求によってのみ提供されるユーザグループ識別子またはブロックされた識別子は含まない。
ユーザのプライバシーに対するリスクを最小化し、プロセスの完全性を守るために、アプリケーション112は、公開鍵暗号を使用して、非機密情報に基づく、SSP170を対象とするデジタルコンポーネント要求を暗号化する。たとえば、アプリケーション112は、公開鍵暗号およびSSP170の公開鍵を使用して、すなわち、PubKeyEncrypt(digital_component_request, SSP)を使用してSSP170のためのデジタルコンポーネント要求を暗号化することができる。
フロー300は、MPC1が最初のデジタルコンポーネント要求を解析して、3つの下位要求の各々を取得するステップ2で継続する。たとえば、MPC1は、デジタルコンポーネント要求を受信する。一部の実装において、要求は、下位要求へと解析されることが可能であり、下位要求が別々の受信者に転送され得るように、要求を3つの下位要求へと解析する。たとえば、コンテキスト要求は、SSPに転送されることが可能であり、ユーザグループ要求は、MPC1によって保持および処理されることが可能であり、暗号化されたユーザグループ要求は、MPC2に転送されることが可能である。
フローは、MPC1が、ステップ1における下位要求であるコンテキストデジタルコンポーネント要求、すなわち、無条件デジタルコンポーネント要求によって、SSP170およびDSP150からJIT選択値をフェッチするステップ3で継続する。一部のJIT選択値は、たとえば、(1)ユーザが特定のユーザグループのメンバーであるかどうか、(2)頻度制御またはペース配分規則などの適用可能な選択規則、および(3)選択値に関連するデジタルコンポーネントの案出者(creative)がマイクロターゲティングを防止するための規則を満たすかどうかに依存する、条件付きである。一部の実装において、JIT選択値は、選択値とともに提供されるTTL情報に従ってMPCクラスタ130によってキャッシュされ得る。
マイクロターゲティングは、一部のユーザが快く思わない場合がある程度にまでユーザを絞り込んで目標にする選択プロセスである。たとえば、ほんのわずかなユーザだけを目標とし、配信されるデジタルコンポーネントは、パーソナライズされ過ぎていると感じられる場合があり、ユーザが、デジタルコンポーネントの特定性によって、選び抜かれたようにまたは不快に感じる場合がある。特定のデジタルコンポーネントが閾値の数のその他のユーザに提供されることを保証することによって、システムは、k-匿名性を強制することによって、ユーザが受け取るデジタルコンポーネントおよびデジタルコンポーネントの目標視聴者のサイズをユーザが快く感じるように、デジタルコンポーネントが十分に広い視聴者に配信されることを保証する。k-匿名性の概念は、特定のユーザのデータが、閾値の数k人のその他のユーザのデータと区別不能であることを保証する。システムは、たとえば、少なくともk人のユーザのセット内の匿名性が守られるように、特定のデジタルコンポーネントが1つまたは複数のデジタルコンポーネントの要求に応じてクライアントデバイス110に少なくともk回配信されることを保証することによってk-匿名性規則を強制することができる。一部の実装において、デジタルコンポーネントが配信されたk回の各々は、異なるデバイスまたは異なるユーザのためでなければならない。システムは、プライバシーを守るデータ構造の使用によってk-匿名性を強制する。特定のデジタルコンポーネントの配信は、デジタルコンポーネントが配信のために選択されたかまたは実際にユーザに提示された回数のカウンタなどの、プライバシーを守るデータ構造内で追跡され得る。
さらに、ユーザは、概して、複数の異なるウェブサイトにわたって同じユーザに同じサードパーティコンテンツを継続的に配信することが、ユーザが見たくなく、無視する可能性が高いコンテンツを配信するために使用される無駄なコンピュータリソースを生じるように、ユーザが複数の異なるウェブサイトをナビゲートするときに同じサードパーティコンテンツを継続的に示されないことを好む。特定のユーザが同じサードパーティコンテンツに触れさせられる回数を制限する1つの方法は、同じユーザが同じサードパーティコンテンツに直近の指定された期間内に指定された回数を超えて触れさせられることを防止する頻度制御技術を利用することである。
システムは、デジタルコンポーネントをミュートするかまたはある期間の間デジタルコンポーネントが提示されることを防止するための情報をユーザから受け取ることによって、さらなるユーザ入力を可能にする。たとえば、ユーザは、ユーザが提示された特定のデジタルコンポーネントを5日間ミュートすることを選択し得る。一部の実装において、期間は、要因の中でもとりわけ、コンテンツアイテムの種類および/またはユーザによって提供されるフィードバックの種類に基づいて、クライアントデバイス110、MPCクラスタ130、DSP150、デジタルコンテンツプロバイダ160、またはSSP170によって指定され得る。
コンテンツの配信は、ペース配分制御技術によってデジタルコンポーネントプロバイダ160からの入力により制御されることも可能である。デジタルコンポーネントプロバイダは、デジタルコンポーネントを含むキャンペーンまたはデジタルコンポーネントのセットのためのリソースがキャンペーン期間の早期に使い果たされないことを保証するための対策を実施するために、選択値のある期間にわたる合計閾値を指定することができる。たとえば、デジタルコンポーネントプロバイダ160は、1週間の間のデジタルコンポーネントプロバイダ160からの選択されたデジタルコンポーネントまたは特定のデジタルコンポーネントに関する選択値の合計が8000単位の最大値に制限されることを指定し得る。選択値の合計の最大値に達すると、最大値が課される特定のデジタルコンポーネントは、期間、たとえば、1週間が終わるまで、クライアントデバイス110に配信されるための選択プロセスの対象にもはやならない。
デジタルコンポーネントプロバイダは、デジタルコンポーネントプロバイダ160からの選択されたデジタルコンポーネントまたは特定のデジタルコンポーネントに関する選択値の閾値に達していく速度またはペースを指定することも可能である。たとえば、デジタルコンポーネントプロバイダ160は、1カ月の間に1日あたり250単位未満のペースで6000単位の最大閾値に達しなければならないことを指定し得る。選択値の日々の合計に達すると、ペース配分が課されるデジタルコンポーネントプロバイダ160によって提供されるデジタルコンポーネントは、期間、その日が終わるまで、クライアントデバイス110に配信されるための選択プロセスの対象にもはやならない。さらに、ペース配分は、測定基準の中でもとりわけ、特定のデジタルコンポーネントが選択され、ユーザデバイスに配信されるペース、または特定のデジタルコンポーネントが配信されたユーザによって特定のデジタルコンポーネントがインタラクションされるペースに基づき得る。
コンテンツ選択およびユーザプリファレンス規則(user preference rule)を施行する選択プロセスを実行することに加えて、システムは、MPCクラスタ130が平文のJIT選択値にアクセスすることを防止することによってセキュリティを向上させることができる。SSP170は、選択値をMPCクラスタ130に送信する前に、各JIT選択値を秘密シェアに分割することができる。さらに、SSP170は、JIT選択値をそれらのポストパブリケーション値(post-publication value)に従ってソートすることができる。
ステップ4からステップ6において、SSP170は、DSP150に選択値を要求し、DSP150から候補選択値を受信し、初期選択プロセスを実行する。ステップ4において、SPP 170は、DSP150にコンテキストデジタルコンポーネント要求を送信する。
ステップ5において、DSP150は、特定のデジタルコンポーネントにマッピングされた選択値を返す。選択値は、無条件選択値および条件付き選択値を含み得る。
ステップ6において、SSP170は、特定のコンテンツプロバイダが候補デジタルコンポーネントおよび選択値を提供する資格を持つことを防止するかまたは特定のデジタルコンポーネントが候補になることを防止する、コンテンツプロバイダおよびデジタルコンポーネントブロック規則を適用する。さらに、SSP170は、候補無条件選択値の中から1つの無条件選択値を選択し、1つの条件付き選択値を選択するための初期選択プロセスを実行する。条件付き選択値は、アプリケーション112からの後の要求のために使用されるMPCクラスタ130のキャッシュを補充するために使用され得る。
ステップ7において、SSP170は、DSP150によって提供された選択値および情報に基づいてポストパブリッシング値を計算する。たとえば、SSP170は、選択値にマッピングされたデジタルコンポーネントを表示するためにコンテンツパブリッシャに提供される金額を計算することができる。
ステップ8において、SSP170は、条件付き選択値と無条件選択値との両方をMPCクラスタ130に返す。MPC1に対するSSPの応答は、以下のパラメータ、すなわち、nがJIT選択値の数である{[jit_sv1,1], ... [jit_svn,1]}、PubKeyEncrypt({[jit_sv1,2], ... [jit_svn,2]}, MPC2)、{cache_ttl1, ... cache_ttln}、および{post_publishing_value1, ... post_publishing_valuen}を有する。上述のように、PubKeyEncryptは、公開鍵暗号アルゴリズムであり、MPC1が応答データにアクセスすることを可能にすることなく、SSP170がMPC2への応答を含む単一の応答をMPC1に送信することを可能にする。角括弧内に現れるパラメータは、角括弧内の変数の秘密シェアを表す。たとえば、ここで、[jit_svi,1]および[jit_svi,2]は、JIT選択値を表すjit_sviの2つの秘密シェアである。秘密シェアに関して、添え字1は、第1の秘密シェアを表すパラメータを示し、添え字2は、第2の秘密シェアを表すパラメータを示す。一部の実装において、jit_sviは、データの中でもとりわけ、選択値および選択値がマッピングされるデジタルコンポーネントを特定するデータと、デジタルコンポーネント要求内で指定されたパラメータに対応するパラメータ値とを含む。SSP170は、jit_sviをその秘密シェアに分割することができ、その秘密シェアからjit_sviを再構築することは、秘密分散アルゴリズムをサポートする適切な暗号ライブラリを使用して実行され得る。たとえば、加算型秘密シェアライブラリ(additive secret share library)を使用して、クライアントデバイス110は、選択結果の2つの秘密シェアを加算して、平文の選択結果を取得することができる。これは、クライアントデバイス110が、デジタルコンポーネントに関する選択値およびデジタルコンポーネントに関するメタデータ、たとえば、デジタルコンポーネントのアイデンティティ、クライアントデバイス110がデジタルコンポーネントをダウンロードすることができるロケーションなどにアクセスすることを可能にする。パラメータcache_ttliは、各選択値iに関するTTL値を表し、publisher_valueiは、各選択値iのポストパブリッシング値を表す。
選択結果は、選択値および/または選択値に対応するデジタルコンポーネントに関するデータを含み得る。たとえば、選択結果は、デジタルコンポーネントを含むデータ配列、またはクライアントデバイス110がデジタルコンポーネントを取得することができるネットワークロケーションを参照するURLもしくはその他のリソースロケータであることが可能である。このようにして、クライアントデバイス110は、選択結果の秘密シェアを組み合わせた後、勝ち残りデジタルコンポーネントを表示することができる。
プロセス300は、コンピューティングシステムMPC1がキャッシュされたJIT候補選択値および受信されたJIT候補選択値をマージし、コンピューティングシステムMPC1がSSP170からの応答を解析するステップ9および10で継続する。まず、ステップ9において、MPC1は、SSP170から受信された応答を解析する。
プロセス300は、コンピューティングシステムMPC1がMPC2に以下のパラメータ、すなわち、PubKeyEncrypt({[jit_sv1,2], ... [jit_svn,2]}, MPC2)、{cache_ttl1, ... cache_ttln}、および{post_publishing_value1, ... post_publishing_valuen}をともなう要求を送信するステップ10で継続する。これらは、MPC1がステップ8においてSSP170から受信した値であり、ここで、添え字2は、値jit_sviの第2の秘密シェアを表す。その後、MPC1は、マージソート動作などの効率的で汎用的な比較に基づくソートアルゴリズムを実行して、ステップ1において受信された元の要求からの信号に関連するキャッシュされた選択値をマージする。たとえば、マージソート動作は、キャッシュされた選択値および受信された選択値のソートされていないリストを、それぞれが1つの要素を含むn個のサブリストに分割すること(ここで、1要素のリストはソートされていると考えられる)と、それから、最終的なソートされたリストである1つのサブリストのみが残るまでサブリストを繰り返しマージして新しいソートされたサブリストを生成することとを含み得る。マージソートは、キャッシュされた選択値のリストとステップ8においてSSP170から受信された選択値との両方が事前にソートされ得るので、このシナリオに特に適している。
ソートプロセスは、JIT選択値とキャッシュされた選択値とを、ポストパブリッシング値に従って順序付けられた(秘密シェアの形式の)選択値の1つのシーケンスにマージする。並行して、MPC2は、キャッシュされた選択値とJIT選択値との両方のそのMPC2の秘密シェアに対して同じマージソートプロセスを実行する。
マージソートプロセスの結果は、MPCクラスタ130のソートされたシーケンス内に存在する可能性があるキャッシュされた選択値を更新するため、および候補選択値のリストを準備するための、2つの理由で使用される。最終選択プロセスへの入力は、マージソートプロセスによって準備された候補選択値のリストである。さらに、最終選択プロセスの入力は、ステップ1においてアプリケーション112から受信された確率的データ構造に符号化された任意の数のユーザグループ識別子およびブロックされた識別子と、選択規則の施行をサポートするためのカウンタまたはその他のデータ構造とをさらに含む。
プロセス300の最終選択プロセスは、ステップ11および12の2つの連続した段階を含む。最終選択プロセスのためのすべての計算は、秘密シェアに対して実行される。後の節は、一部の計算を平文で記述する場合があるが、これは、純粋に簡潔性および明瞭性を目的としている。
最終選択プロセスにおいて使用されるそれぞれのキャッシュされたまたは受信された選択値(すなわち、ステップ10において実行されたマージソートプロセスの結果として得られる最終的なリスト内の選択値)に関して、MPCクラスタ130は、各選択値xに関する変数値is_candidatexを概念的に計算する。MPC1は、[is_candidatex,1]と表記されるis_candidatexの一方の秘密シェアを計算し、MPC2は、[is_candidatex,2]と表記されるis_candidatexのもう一方の秘密シェアを計算する。MPC1およびMPC2は、セキュアMPCプロセスを使用して秘密シェアを共同して計算することができる。
ステップ11において、MPC1は、各候補選択値が、ステップ1において受信された要求で指定されたユーザグループに関連付けられるか否かを判定する。MPC1は、[M1]と表記される、ステップ1のカッコウフィルタテーブルMの秘密シェアの配列に相当するものを受け取る。Mに存在する各ユーザグループ識別子は、N個の可能な位置のうちの1つに存在することになる。選択値xがステップ1において受信された要求で指定されたユーザグループに関連付けられる(すなわち、選択値xのユーザグループ識別子がステップ1からの確率的データ構造内に存在する)場合、選択値xは、N個の可能な位置のうちの1つに存在しなければならない。
MPC1は、次の式、すなわち、
に従って[is_candidatex,1]を計算し、Πは、複数のアイテムの乗算を表す。ここで、ug_id(x)は、選択値xに関連付けられたug_idを取り出すために使用される関数であり、{F1, ... FN}は、カッコウフィルタテーブルA内のアイテムの可能なインデックス(すなわち、位置)を計算する関数であり、rand_val1aは、ステップ1において受信されたランダム値である。[Mx,1]は、配列[M1]のx番目の要素である。==は、平文の整数(cleartext integer)と秘密の整数(secret integer)の秘密シェアとの間の等価性のテストである。==の結果は、0(等しくない)かまたは1(等しい)かのどちらかである秘密の整数の秘密シェアである。ここで、[Mi,1]の値 = 上で定義されたBiである。
同様に、MPC2は、次の式、すなわち、
に従って[is_candidatex,2]を計算する。ここで、[Mi,2]の値 = PRF(rand_val2, i)である。
[is_candidatex,1]および[is_candidatex,2]が組み合わされるとき、選択値xのug_idが確率的データ構造テーブルにある場合、is_candidatexは1であることが明らかになる。カッコウフィルタの偽陽性(false positive)率は、カッコウフィルタのエントリの長さ(すなわち、ビット数)kによって制御され、選択値の候補資格(candidacy)に影響を与え得る。それ以外の場合、is_candidatexは、0である。
この特定の例においては、MPCクラスタ130がSSP170からステップ8で無条件選択値応答を受信した後、ユーザグループのチェックが行われる。一部の実装において、MPCクラスタ130は、ステップ3でコンテキストデジタルコンポーネント要求を送信し、ステップ8でコンテキストデジタルコンポーネント応答を受信するのと並行してユーザグループのチェックを実行する。
この特定の例において、コンテキストデジタルコンポーネントは、SSP170を介してDSP150からの条件付き選択値を含むことが可能であり、MPCクラスタ130は、それらのJIT条件付き選択値に対してユーザグループのチェックを実行することができ、それらのJIT条件付き選択値は、潜在的にステップ13の最終選択プロセスの対象である可能性があり、JIT条件付き選択値がユーザのマイクロターゲティングを防止する規則を満たすことができる場合かつその場合に限り、ステップ1において受信された現在のデジタルコンポーネント要求に関する勝者となる可能性がある。代替的な設計において、JIT条件付き選択値は、最終選択プロセスの対象外であり、現在のデジタルコンポーネント要求に関する勝者となり得ない。さらに、DSP150およびSSP170は、キャッシュの検索キーをカスタマイズする機会を持ち、これは、DSPおよびSSPにさらなる柔軟性を提供する。
しかし、条件付き選択値を受信した後にユーザグループのチェックを実行するレイテンシは、ステップ1とステップ14との間に示されるように、全プロセス300の全体的なレイテンシを増加させる。たとえば、最も効率的な秘密シェアの等価性のテストでさえ、MPCクラスタ130のコンピューティングシステム間で3往復のリモートプロシージャコール(RPC)を必要とし、これは、ネットワークの状態および選択された等価性のテストアルゴリズムに応じて数十から数百ミリ秒かかることがあり得る。
プロセス300は、MPCクラスタ130が選択規則を適用する--MPC1およびMPC2が共同して選択規則を適用する--ステップ12で継続する。以下の規則の各々は、任意であり、特定の選択規則が特定の選択プロセスのために必要とされない場合、選択規則は適用されない。
たとえば、MPCクラスタ130は、特定の選択値にマッピングされた特定のデジタルコンポーネント識別子がブロックリストにあり、したがって、選択プロセスの対象外である規則を任意に適用し得る。ここで、block_id(x)は、選択値xに関連するblock_idを取り出す関数である。MPC1は、
を計算することができる。
同様に、MPC2は、
を計算することができる。
should_blockxが[should_blockx,1]および[should_blockx,2]から再構成され得る場合、should_blockxは、選択値xのblock_idが確率的データ構造内にある場合、1であることは明らかである。確率的データ構造のFPRは、構造内のエントリの長さによって制御される。should_blockxが1である場合、識別子がブロックされるべきであり、したがって、候補となる資格がないので、MPCサーバ130は、is_candidatexを0に設定するべきである。たとえば、2位置カッコウフィルタに関して、選択値xのblock_idが確率的データ構造内にない場合、つまり、block_idが2つのカッコウフィルタの位置のどちらかのアイテムにもマッチしない場合、should_blockxは0である。この場合、識別子がブロックされるべきでなく、したがって、should_blockxが選択値xが候補となる資格があるかどうかに影響を与えないので、MPCクラスタ130は、is_candidatexの値を修正すべきでない。
should_blockxの値に応じてis_candidatexを修正するために、MPC1は、[is_candidatex,1] = [is_candidatex,1] x (1-[should_blockx,1])を計算する。同様に、MPC2は、[is_candidatex,2] = [is_candidatex,2] x (1-[should_blockx,2])を計算する。
次に、MPCクラスタ130は、コンテンツプロバイダによって提供されたペース配分選択規則を任意で適用することができる。各デジタルコンポーネント要求に関して、MPCクラスタ130は、選択規則が適用される選択値の単位、すなわち、runit_id毎に秘密シェア内にrules_selectorrunit_idを概念的にランダムに生成する。関数runit_id(x)は、選択値xのrunit_idをフェッチする。
たとえば、MPC1は、まず、[rules_selectorrunit_id,1]をランダムに生成する。それから、MPC1は、rule_selectorrunit_idの値に従ってis_candidatexを修正し、MPC1は、[is_candidatex,1]=[is_candidatex,1] x (1-[rule_selectorrunit_id(x),1])を計算する。
同様に、MPC2は、[is_candidatex,2]=[is_candidatex,2] x (1-[rule_selectorrunit_id(x),2])を計算する。
ここで、単位runit_id毎の最大総選択値が使い果たされるとき、rules_selectorrunit_idは、0に設定される。また、選択されたデジタルコンポーネントに関する選択値の閾値に達するペースが目標ペースより遅れているとき、rules_selectorrunit_idは、1になる確率が高くなる。たとえば、MPC1は、rules_selectorrunit_idの値をランダムに生成するときにrules_selectorrunit_idが1になる確率を高くする。ペース配分が目標ペースより進んでいる場合、rules_selectorrunit_idは、1になる確率が低くなる。
次に、MPCクラスタ130は、k-匿名性を強制することによって、マイクロターゲティングを任意で防止することができる。ここで、aggregate_idは、k-匿名性が強制される選択値の単位であり、関数aggregate_id(x)は、選択値xに関するaggregate_idをフェッチするために使用される。aggregate_idは、1つまたは複数の選択値にマッピングされる特定のデジタルコンポーネントのキャンペーンIDであることが可能である。一部の実装において、aggregate_idおよびrunit_idは同じである。
MPC1は、秘密シェア内のそれぞれのキャッシュされた選択値xに関するsatisfy_k_anonymityaggregate_id(x)を非同期に更新することによってk-匿名性を強制する。たとえば、MPC1は、[satisfy_k_anonymityaggregate_id(x),1]を非同期に維持し、[is_candidatex,1] = [is_candidatex,1] x [satisfy_k_anonymityaggregate_id(x),1]を計算する。
同様に、MPC2は、[is_candidatex,2] = [is_candidatex,2] x [satisfy_k_anonymityaggregate_id(x),2]を計算する。
ステップ11および12の後、MPC1およびMPC2は、それぞれ、[is_candidatex,1]および[is_candidatex,2]、すなわち、秘密メッセージis_candidatexの2つの秘密シェアを計算済みである。ここで、結果は、選択値xが、デジタルコンポーネントにマッピングされた勝ち残り選択値が提示および/または表示のためにクライアントデバイス110に提供される前にMPCクラスタ130によって実行される最終選択プロセスの対象である場合、is_candidatex = 1であることである。選択値xが最終選択プロセスの対象でない場合、is_candidatex = 0である。
以上の説明は、値が0かまたは1かのどちらかである秘密の整数の秘密シェアの間の乗算をコンピュータの論理ANDに関連付ける。また、以上の説明は、値が0かまたは1かのどちらかである秘密の整数の秘密シェアを1から引いた数をコンピュータの論理NOTに関連付ける。一部の実装において、秘密シェアを用いる論理式を評価するために、別の解決策が採用され得る。たとえば、値が0かまたは1かのどちらかである秘密の整数の加算型のいくつかの秘密シェアの論理ANDを計算するために、MPCクラスタは、それらの加算型の秘密シェアの総和を秘密シェアの数と比較することができる。別の例においては、秘密シェアを入力として任意の論理式を計算するために、MPCクラスタは、真理値表の手法を採用することができ、すなわち、MPC1が、MPC2によって保持される入力秘密シェアの可能な組合せ毎に1行を含む真理値表を構築することができる。MPC1は、[result1]と表記される、結果に関する秘密シェアをランダムに選択する。各行に関して、MPC1は、その入力秘密シェアとMPC2によって保持される推測の(speculative)入力秘密シェアとを組み合わせて、平文の論理式への入力を再構築し、それから、論理式の結果を評価することができる。各行に関して、MPC1は、結果を2つの秘密シェアに分割し、その一方は[result1]であり、他方は[result2]である。そして、MPC1は、真理値表の行に[result2]を書き込む。MPC1が真理値表の構築を完了した後、MPC2は、MPC2によって保持される入力秘密シェアに対応する真理値表の行をフェッチするために紛失通信拡張(OTe)を開始することができる。フェッチ結果は、[result2]である。上記プロセスの終わりに、MPC1およびMPC2は、論理式の結果の秘密シェアである[result1]および[result2]をそれぞれ保持する。MPC1は、[result2]の値を知らず、MPC2は、[result1]の値を知らない。一部の実装において、MPC1およびMPC2は、秘匿回路(garbled circuit)構築することによって、[is_candidatex,1]および[is_candidatex,2]を決定するために論理式を評価することができる。
ステップ13において、MPCクラスタ130は、最終選択プロセスを実行する。概念的に、MPCクラスタ130は、順序の先頭から所与の選択値までの候補選択値の総数を表す、デジタルコンポーネントに関する所与の選択値の累積値を計算する。たとえば、MPCクラスタ130は、次の式を使用して、選択値xの前にランク付けされる、最終選択プロセスにおける適格な候補選択値の総数を表す累積値accxを計算する。
accxx = Σis_candidateb
式中、変数bは、選択値に基づいて選択値xの前にランク付けされた候補選択値bを表す。実際の実装においては、秘密シェアを利用して、MPC1が[accx,1]を計算し、MPC2が[accx,2]を計算する。
まず、MPCクラスタ130は、選択値を、それらの値などの測定基準に従ってランク付けすることによって順序付ける。たとえば、選択値xが12単位の値を有し、選択値yが14単位の選択値を有する場合、MPCクラスタ130は、選択値yを選択値xより高くランク付けすることができる。このプロセスは、平文で実行され得る。選択値が順序付けられると、MPCクラスタ130は、勝者を選択することによって最終選択プロセスを完了する。MPCクラスタは、それぞれのキャッシュされた選択値に関して変数is_winnerxの値を決定することによって最終選択プロセスの勝ち残り結果(winning result)を計算することができる。
is_winnerx = is_candidatex ×(accx == 0)
xが最終選択プロセスの勝者である場合かつその場合に限り、変数is_winnerx = 1となる。そうでない場合、変数is_winnerx = 0となる。すべてのキャッシュされた選択値およびJIT選択値の中で、デジタルコンポーネント要求に応じて実行されるそれぞれの最終選択プロセスに関して、is_winnerx = 1となる選択値xは最大で1つである。
コンピューティングシステムMPC1は、[is_winnerx,1]を保持する。コンピューティングシステムMPC2は、[is_winnerx,2]を保持する。[is_winnerx,1]および[is_winnerx,2]の各々は、変数is_winnerxの秘密シェアを表す。
応答を作成するために、MPC1は
を計算し、式中、cached_or_jit_svxは、MPCクラスタ130におけるキャッシュされた選択値、またはMPCクラスタ130によって受信されたJIT選択値を表す。
同様に、MPC2は、
を計算する。
is_winnerxが非ゼロの値(すなわち、値1)を有する選択値xは最大で1つであるので、resultは、0(デジタルコンポーネントが勝者ではなく、したがって、デジタルコンポーネント要求に応じてデジタルコンポーネントが提供されない場合)か、またはis_winnerxが1であるキャッシュされたもしくはJIT選択値のうちの1である選択値xかのどちらかである。
次に、MPC2は、次の式、すなわち、PubKeyEncrypt([result2], application_public_key)によってアプリケーション112の公開鍵を使用してresultのそのMPC2の秘密シェアを暗号化し、式中、application_public_keyは、アプリケーション112の公開鍵であり、[result2]は、MPC2によって保持されるresultの秘密シェアである。暗号化関数PubKeyEncryptは、MPC1がアプリケーション112への最終送信のためにMPC2から[result2]を受信すると、MPC1が両方の秘密シェアからresultを再構築することが可能とならないように、MPC1が[result2]にアクセスすることを防止する。
一部の実装において、MPC2は、次の式、すなわち、PubKeySign(PubKeyEncrypt([result2], application_public_key), MPC2)によってresultのそのMPC2の秘密シェアに署名し、式中、関数PubKeySignは、アプリケーション112が[result2]がMPC2から生じたことを検証し得るように、MPC2がresultのそのMPC2の秘密シェアに署名することを可能にする。結果に署名することは、MPC1がMPC2の結果を改ざんすることを防止することができる。一部の実装において、MPC2は、次の式、すなわち、PubKeyEncrypt(PubKeySign([result2], MPC2), application_public_key)によって結果のそのMPC2の秘密シェアに署名する。
ステップ14において、MPCコンピューティングシステムのうちの1つが、ステップ1において受信されたデジタルコンポーネント要求に対する応答をクライアントデバイス110に返す。この例においては、MPC1が、クライアントデバイス110に完全な応答を返す。MPC1が返す応答は、[result1]と、PubKeySign(PubKeyEncrypt([result2], application_public_key), MPC2)とを含む。
ステップ15において、クライアントデバイス110は、resultによって示される選択値にマッピングされたデジタルコンポーネントをレンダリングする。まず、クライアントデバイス110は、それぞれMPC1およびMPC2から生じる結果の2つの秘密シェアを有する応答を受信し、これは、アプリケーション112が、平文の結果を再構築し、結果として得られるデジタルコンポーネントをクライアントデバイス110上に提示することを可能にする。
MPC2がresultのそのMPC2の秘密シェアに署名した場合、アプリケーション112は、MPC2のデジタル署名を検証する。さらに、アプリケーション112は、平文の[result2]を復元するために、MPC2が[result2]暗号化した公開鍵に対応する自身の秘密鍵によってMPC2を復号する。今やアプリケーション112が平文のresultの両方の秘密シェアを保持しているので、アプリケーション112は、[result1]および[result2]からresultを再構築する。
ステップ16において、クライアントデバイス110は、MPCクラスタ130が、ペース配分制御規則およびk-匿名性規則などの選択規則を施行するために必要とされる変数を追跡するために使用されるデータ構造を更新することを可能にするインプレッション通知をMPCクラスタ130に返す。インプレッション通知は、k-匿名性およびペース配分制御を追跡するためにMPCクラスタ130によって維持されるカウンタ変数を更新するために使用される変数の値を含み得る。これらのカウンタ変数は、MPCクラスタ130によってキャッシュされてよい。
ステップ17において、MPCクラスタ130は、インプレッション通知に基づいてそのカウンタ変数を更新する。たとえば、MPC1およびMPC2は、ペース配分制御およびk-匿名性を追跡するためにMPCクラスタ130内にキャッシュされたカウンタを更新することができる。一部の実装において、MPCクラスタ130上で実行されている動作の数(たとえば、1秒あたりクエリ数(QPS: queries per second))を減らすために、アプリケーション112は、インプレッション通知をある継続時間の間保持し、それを非同期にMPCクラスタ130に送信してよい。たとえば、アプリケーション112は、MPCクラスタ130にデジタルコンポーネント要求とともにインプレッション通知を送信することによって、インプレッション通知を将来のデジタルコンポーネント要求と「ピギーバック」させることができる。MPCクラスタ130に送信されなければならないデータと一緒にインプレッション通知を送信することによって、アプリケーション112は、データトラフィックを削減することができる。一部の実装においては、アプリケーション112が所定の継続時間の終わりにいかなるピギーバックの機会も見つけることができない場合、アプリケーションは、カウンタの更新の遅延およびカウンタの更新の遅延の結果として生じ得るすべての誤りを防止するために、インプレッション通知を専用メッセージでMPCクラスタ130に送信することができる。たとえば、アプリケーション112は、専用のHTTPリクエストでMPCクラスタ130にインプレッション通知を送信することができる。
一部の実装においては、MPCクラスタ130がシステム100の単一障害点となることを防止するために、デジタルコンポーネントが提示および/または表示されるインターネットロケーション内に埋め込まれたトリガ要素は、MPCクラスタ130が停止している場合にアプリケーション112が要求をMPCクラスタ130に送ることに失敗する場合、アプリケーション112に送信されたデジタルコンポーネント要求(たとえば、無条件要求)をSSP170に直接再送することもできる。トリガ要素は、通常、無条件要求を作成するので、このバックアップメカニズムは、デジタルコンポーネントが提示および/または表示されるインターネットロケーション内に埋め込まれたトリガ要素の複雑さを増やさない。さらに、バックアップメカニズムは、SSP170の複雑さを増やさない。SSP170は、通常動作中にMPCクラスタ130からか、またはMPCクラスタ130が停止している場合にトリガ要素から直接かのどちらかで、同じデジタルコンポーネント要求を受信する。トリガ要素が、応答を、通常動作中にMPCクラスタ130から受信するのか、またはMPCクラスタ130の停止中にSSP170から受信するのかに関わらず、トリガ要素は、勝ち残り最終結果をレンダリングしさえすればよい。
このシステム設計は、モバイルデバイスの帯域幅およびバッテリ消費を大幅に増やすことなく、改善されたユーザ体験を可能にする。MPCクラスタ130は、SSP170およびDSP150がデジタルコンポーネントに関連するクライアントデバイス110のIPアドレスなどのクライアントデバイス110の識別情報を見ることを阻止する。コンピューティングリソースの面での追加のコストなしに、システムは、SSPおよびDSPがクライアントデバイス110のIPアドレスをユーザデータを受動的に収集するためのフィンガープリント信号として使用することを防止する。これは、多くのSSPおよびDSPが、デジタルコンポーネント要求を受動的にリスニングして、ユーザの許可なく信号を収集し、フィンガープリント信号として使用され得るユーザ識別子(すなわち、ユーザを一意に特定することができる決定的(deterministic)信号)がデジタルコンポーネント要求に存在しないときに、それらのサーバがデータを使用してユーザを特定することができるので、問題となり得る。システムは、クライアントデバイス110のIPアドレスなどの情報に基づくそのような受動的なデータ収集を阻止する。
インターネットロケーションに要素を提供するサーバに関して、そのようなサーバは、ユーザ体験を改善するために、デジタルコンポーネント内のスクリプトとして、不要なまたは悪意のあるコンテンツの配信を防止するための信号収集論理を実装し得る。収集された信号は、インプレッション通知でサーバに送り返され得る。
一部の実装において、一部のエンティティは、IPアドレスなどのフィンガープリント信号を正当に使用する。たとえば、地理情報を使用する機能は、ユーザに提供される情報の関連性および有用性を向上させるために、位置に固有のデジタルコンポーネントをユーザに合わせて調整し、ユーザに提供するために広く使用される。正当なユースケースを可能にするために、MPCクラスタ130は、適切な粒度で位置信号および/もしくは識別情報をSSPおよびDSPに送信する機能、または適切に切り詰められたもしくは編集された情報をSSPおよびDSPに転送する機能を実行することができる。代替的に、各アプリケーションおよびコンテンツパブリッシャドメインのペアに関して、MPCクラスタ130は、ジオターゲティング機能をサポートするために、同じ地理的地域から代替IPアドレスを割り振る可能性がある。
さらに、MPCクラスタ130は、不正なトラフィックをブロックすることもでき、ユーザ体験を向上させ、不要なトラフィックを削減する。たとえば、特定のIPアドレスまたはサブネットワークからの悪意のあるまたは不正なトラフィックを特定した後、SSP170は、情報を安全に保持するMPCクラスタ130にIPアドレスブロックリストをアップロードすることができる。それから、MPCクラスタ130は、ブロックリスト上のIPアドレスからのすべてのデジタルコンポーネント要求をフィルタリングして取り除くことができる。
図4は、クライアントデバイスに配信するためにデジタルコンポーネントを選択するための例示的なプロセス400の流れ図である。プロセス400の動作は、たとえば、MPCクラスタ130のコンピューティングシステムMPC1またはコンピューティングシステムMPC2によって実施され得る。プロセス400の動作は、非一時的である場合がある1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されることも可能であり、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス400の動作を実行させることが可能である。簡潔にするために、プロセス400は、MPCクラスタ130のコンピューティングシステムMPC1によって実行されるものとして説明される。
プロセス400は、セキュアマルチパーティ計算(MPC)システムの第1のサーバによって、ユーザデバイス上のアプリケーションから、デジタルコンポーネントの要求を受信すること(402)から始まる。たとえば、MPCクラスタ130のコンピューティングシステムMPC1は、特定のデジタルコンポーネントスロットのための1つまたは複数のデジタルコンポーネントの要求をクライアントデバイス110から受信することができる。要求は、情報の中でもとりわけ、デジタルコンポーネントスロットの特徴を示す情報、(デジタルコンポーネントスロットが位置するコンテンツを含む)スロットのコンテキスト、クライアントデバイス110によって指定されたコンテンツ配信および/または選択規則、ならびにユーザによって提供された情報を含み得る。
プロセス400は、セキュアMPCシステムの第1のサーバによって、要求を2つ以上の異なる下位要求へと解析すること(404)で継続する。たとえば、MPC1は、要求を3つの下位要求へと解析し得る。一部の実装において、異なる部分は、送信先と、要求が条件とする情報の種類(すなわち、機密情報または機密情報でない)とに基づいて分けられ得る。たとえば、下位要求は、機密情報に基づくデジタルコンポーネント要求の、コンピューティングシステムMPC1およびMPC2のそれぞれのための秘密シェア、ならびにSSP170のための非機密情報に基づくデジタルコンポーネント要求を含み得る。
プロセス400は、セキュアMPCシステムの第1のサーバによって、要求の2つ以上の異なる部分の各々を異なるサーバに送信すること(406)で継続する。たとえば、MPC1は、SSP170、MPC1(自身)、およびMPC2に別々の下位要求を送信することができる。
一部の実装において、2つ以上の異なるサーバは、デジタルコンポーネントを配信するプロセスを自動化し、1つまたは複数のコンテンツパブリッシャと通信するサプライサイドプラットフォームサーバを含む。たとえば、MPC1は、要求の異なる下位要求をSSP170およびMPC2に送信することができる。一部の実装において、MPC1は、要求の異なる下位要求をSSP170に送信することができ、SSP170は、下位要求の異なる部分をDSP150に転送することができる。
プロセス400は、要求の2つ以上の異なる下位要求の送信に応じて、セキュアMPCシステムの第1のサーバによって、別のサーバから、候補選択値の第1のセットを受信すること(408)で継続する。たとえば、MPC1は、MPC2からの候補選択値のセットの秘密シェアと、SSP170からの候補選択値のセットの秘密シェアとを受信することができる。
一部の実装において、これは、別のサーバから、候補選択値の第1のセットの各候補選択値に関して少なくとも2つの秘密シェアを受信することを含む。たとえば、MPC1は、SSP170から、各候補選択値に関して2つの秘密シェアを受信することができ、第1の秘密シェアは、暗号化されておらず、第2の秘密シェアは、公開鍵暗号アルゴリズムおよびMPC2の公開鍵を使用して暗号化されている。
プロセス400は、第1のサーバによって、候補選択値の最終的なセットを生成するために候補選択値の第1のセットとキャッシュされた選択値のセットとをマージすることと、第1のサーバによって、候補選択値の最終的なセットを候補選択値の値に従ってソートすることと、第1のサーバによって、2つ以上の選択規則のセットの各規則を適用することとを含む、勝ち残りデジタルコンポーネントの選択結果を生成するための選択プロセスを、MPCシステムの第2のサーバと共同して、第1のサーバによって実行すること(410)で継続する。たとえば、MPCクラスタ130のコンピューティングシステムMPC1は、MPC2と共同して、図2および図3に関連して説明されたように最終選択プロセスを実行することができる。MPCクラスタ130は、キャッシュされた選択値およびSSP170から受信された選択値にすべての選択規則を適用して、適格な選択値のセットを決定する。そして、MPCクラスタ130は、適格な選択値を順序付けし、選択プロセスの勝者を選択する。
一部の実装において、選択プロセスを実行することは、セキュアMPCシステムの第1のサーバによって、候補選択値の最終的なセットを生成するために候補選択値の2つ以上のセットとキャッシュされた選択値のセットとをマージすることと、セキュアMPCシステムの第1のサーバによって、候補選択値の最終的なセットを候補選択値の値に従ってソートすることとを含む。一部の実装において、マージすることおよびソートすることは、単一の比較に基づくソートプロセスとして第1のサーバによって実行され得る。たとえば、MPCクラスタ130は、キャッシュされた選択値およびSSP170から受信された選択値に対してマージソート動作を実行することができる。
一部の実装において、選択規則のセットは、少なくともプライバシー保存匿名性施行規則を含む。一部の実装において、選択規則のセットは、バジェット配分(budgeting)規則またはペース配分規則を含む。一部の実装において、選択規則のセットは、1つまたは複数のユーザグループ識別子のセットの各ユーザグループ識別子が候補選択値にマッピングされたユーザグループ識別子と比較される機能を指定する少なくとも1つの規則を含む。たとえば、MPCクラスタ130は、候補選択値のユーザグループメンバーシップに基づき、デジタルコンポーネント要求によって示された候補選択値の最終的なセットの各候補選択値の適格性を決定することができる。
プロセス400は、セキュアMPCシステムの第1のサーバによって、MPCシステムの第2のサーバと共同して、ユーザデバイスに、勝ち残り選択値を送信すること(412)で継続する。たとえば、MPCクラスタ130のMPC1は、勝ち残り選択値の秘密シェアをクライアントデバイス110に提供することができる。
一部の実装において、最終選択プロセスからの勝ち残り選択値を送信することは、セキュアMPCシステムの第1のサーバによって、セキュアMPCシステムの第2のサーバから、選択結果の第1の秘密シェアを受信することと、セキュアMPCシステムの第1のサーバによって、クライアントデバイスに、(i)選択結果の第1の秘密シェア、および(ii)選択結果の第2の秘密シェアを送信することとを含む。たとえば、MPCクラスタ130のMPC2は、勝ち残り選択値にマッピングされたデジタルコンポーネントを示すデータのそのMPC2の秘密シェアをMPCクラスタ130のMPC1に送信し、MPC1は、MPC2からの秘密シェアと一緒に、勝ち残り選択値にマッピングされたデジタルコンポーネントを示すデータのそのMPC1自体の秘密シェアをクライアントデバイス110に送信する。
一部の実装において、MPC2は、MPC1に秘密シェアを送信する前に、選択結果のそのMPC2の秘密シェアを暗号化する。このようにして、MPC1は、2つの秘密シェアを組み合わせて選択結果の平文の値を取得することができず、これは、MPC1が勝ち残り選択値およびその対応するデジタルコンポーネントを特定することを防止し、それによって、ユーザに提示されるデジタルコンポーネントに関連してユーザのプライバシーを守る。各MPC2は、ユーザデバイスまたはユーザデバイスのアプリケーションの公開鍵を使用して選択結果のそのMPC2のシェアを暗号化することができる。そして、ユーザデバイスは、公開鍵に対応するその秘密鍵を使用して、選択結果を復号することができる。
プロセス400は、セキュアMPCシステムの第1のサーバによって、ユーザデバイス上のアプリケーションから、デジタルコンポーネントがクライアントデバイスにおいて提示されたことを示すデータを含む通知を受信することを含み得る。たとえば、MPCクラスタ130のMPC1は、クライアントデバイス110から、デジタルコンポーネントがクライアントデバイス110においてレンダリングされたことを示すインプレッション通知を受信することができる。
一部の実装において、プロセス400は、セキュアMPCシステムの第1のサーバによって、デジタルコンポーネントが、勝ち残り選択値に対応するプライバシーを守る特徴に関する値を維持するプライバシー保存匿名性施行規則を満たすかどうかを判定するためのデータ構造を更新することを含む。たとえば、MPCクラスタ130は、各選択値xに関してカウンタ変数satisfy_k_anonymityxを更新することができる。変数satisfy_k_anonymityxは、選択値xがk-匿名性規則を満たすかどうかを表す。
一部の実装においては、勝ち残り選択値に対応するデジタルコンポーネントがクライアントデバイスにおいて提示されたことを示すデータを含む通知が、第2の選択値の第2の要求とともに、セキュアMPCシステムの第1のサーバによって受信される。たとえば、アプリケーション112は、必要とされる送信および計算リソースを節約するために、MPCクラスタ130にインプレッション通知を非同期で、後続のデジタルコンポーネント要求と一緒に提供することができる。
図5は、上述の動作を実行するために使用され得る例示的なコンピュータシステム500のブロック図である。システム500は、プロセッサ510、メモリ520、ストレージデバイス530、および入力/出力デバイス540を含む。構成要素510、520、530、および540の各々は、たとえば、システムバス550を使用して相互に接続され得る。プロセッサ510は、システム500内で実行するための命令を処理することができる。一部の実装において、プロセッサ510は、シングルスレッドプロセッサである。別の実装において、プロセッサ510は、マルチスレッドプロセッサである。プロセッサ510は、メモリ520またはストレージデバイス530に記憶された命令を処理することができる。
メモリ520は、システム500内で情報を記憶する。1つの実装において、メモリ520は、コンピュータ可読媒体である。一部の実装において、メモリ520は、揮発性メモリユニットである。別の実装において、メモリ520は、不揮発性メモリユニットである。
ストレージデバイス530は、システム500に大容量ストレージを提供することができる。一部の実装において、ストレージデバイス530は、コンピュータ可読媒体である。様々な異なる実装において、ストレージデバイス530は、たとえば、ハードディスクデバイス、光ディスクデバイス、複数のコンピューティングデバイスによってネットワークを介して共有されるストレージデバイス(たとえば、クラウドストレージデバイス)、または何らかのその他の大容量ストレージデバイスを含み得る。
入力/出力デバイス540は、システム500に入力/出力動作を提供する。一部の実装において、入力/出力デバイス540は、ネットワークインターフェースデバイス、たとえば、イーサネットカード、シリアル通信デバイス、たとえば、RS-232ポート、および/またはワイヤレスインターフェースデバイス、たとえば、802.11カードのうちの1つまたは複数を含み得る。別の実装において、入力/出力デバイスは、入力データを受信し、外部デバイス560、たとえば、キーボード、プリンタ、およびディスプレイデバイスに出力データを送信するように構成されたドライバデバイスを含み得る。しかし、モバイルコンピューティングデバイス、モバイル通信デバイス、セットトップボックステレビクライアントデバイスなどのその他の実装も、使用され得る。
例示的な処理システムが図5に示されたが、本明細書に記載の対象および機能的動作の実装は、本明細書で開示された構造およびそれらの構造的均等物を含む、その他の種類のデジタル電子回路、またはコンピュータソフトウェア、ファームウェア、もしくはハードウェア、またはそれらのうちの1つもしくは複数の組合せで実装され得る。
本明細書に記載の対象および動作の実施形態は、本明細書において開示された構造およびそれらの構造的均等物を含む、デジタル電子回路、またはコンピュータソフトウェア、ファームウェア、もしくはハードウェア、またはそれらのうちの1つもしくは複数の組合せで実装され得る。本明細書に記載の対象の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のために、またはデータ処理装置の動作を制御するために複数のコンピュータ記憶媒体(または1つのコンピュータ記憶媒体)上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。代替的にまたは追加的に、プログラム命令は、データ処理装置による実行のために好適な受信機装置に送信するために情報を符号化するように生成される人為的に生成される伝播信号、たとえば、機械によって生成される電気的信号、光学的信号、または電磁的信号上に符号化され得る。コンピュータ記憶媒体は、コンピュータ可読ストレージデバイス、コンピュータ可読ストレージ基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの1つもしくは複数の組合せであることが可能であり、あるいはそれらに含まれることが可能である。さらに、コンピュータ記憶媒体は、伝播信号ではないが、人為的に生成された伝播信号に符号化されたコンピュータプログラム命令の送信元または送信先であることが可能である。また、コンピュータ記憶媒体は、1つまたは複数の別個の物理コンポーネントまたは媒体(たとえば、複数のCD、ディスク、もしくはその他のストレージデバイス)であるか、またはそれらに含まれることが可能である。
本明細書に記載の動作は、1つもしくは複数のコンピュータ可読ストレージデバイスに記憶されたまたはその他のソースから受信されたデータに対してデータ処理装置によって実行される動作として実装され得る。
用語「データ処理装置」は、例として、1つのプログラミング可能なプロセッサ、1台のコンピュータ、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つまたは複数の特徴は、場合によっては組合せから削除されことが可能であり、主張された組合せは、部分的組合せ、または部分的組合せの変形を対象とする可能性がある。
同様に、動作が図中に特定の順序で示されているが、これは、そのような動作が示された特定の順序でもしくは逐次的順序で実行されること、または所望の結果を達成するために示されたすべての動作が実行されることを必要とするものと理解されるべきでない。特定の状況においては、マルチタスクおよび並列処理が有利である場合がある。さらに、上述の実施形態における様々なシステムコンポーネントの分割は、すべての実施形態においてそのような分割を必要とするものと理解されるべきでなく、説明されたプログラムコンポーネントおよびシステムは、概して、単一のソフトウェア製品に一緒に統合されるかまたは複数のソフトウェア製品にパッケージングされることが可能であることを理解されたい。
このように、対象の特定の実施形態が説明された。その他の実施形態は、添付の特許請求の範囲内にある。場合によっては、特許請求の範囲に挙げられたアクションは、異なる順序で実行され、それでも所望の結果を達成することができる。加えて、添付の図面に示されたプロセスは、所望の結果を達成するために、必ずしも示された特定の順序または逐次的順序である必要はない。特定の実装においては、マルチタスクおよび並列処理が有利である場合がある。
以下は、本開示の態様の非網羅的なリストである。
態様1.
セキュアマルチパーティ計算(MPC)システムの第1のサーバによって、ユーザデバイス上のアプリケーションから、デジタルコンポーネントの要求を受信するステップと、
第1のサーバによって、要求を2つ以上の異なる下位要求へと解析するステップと、
セキュアMPCシステムの第1のサーバによって、2つ以上の異なる下位要求の各々を異なるサーバに送信するステップと、
2つ以上の異なる下位要求の送信に応じて、第1のサーバによって、別のサーバから、候補選択値の第1のセットを受信するステップと、
MPCシステムの1つまたは複数の第2のサーバと共同して、第1のサーバによって、勝ち残りデジタルコンポーネントの選択結果を生成するための選択プロセスを実行するステップであって、
第1のサーバによって、候補選択値の最終的なセットを生成するために候補選択値の第1のセットとキャッシュされた選択値のセットとをマージすること、
第1のサーバによって、候補選択値の最終的なセットを候補選択値の値に従ってソートすること、および
第1のサーバによって、2つ以上の選択規則のセットの各規則を適用することを含む、ステップと、
1つまたは複数の第2のサーバと共同して、第1のサーバによって、ユーザデバイスに、勝ち残りデジタルコンポーネントの選択結果を送信するステップとを含むコンピュータによって実施される方法。
態様1a.
異なるサーバが、MPCシステムの第2のサーバである態様1の方法。
態様1b.
異なるサーバが、サプライサイドプラットフォームサーバである態様1の方法。
態様1c.
別のサーバが、サプライサイドプラットフォームサーバである態様1から1bのいずれか1つの方法。
態様2.
セキュアMPCシステムの第1のサーバによって、ユーザデバイス上のアプリケーションから、勝ち残りデジタルコンポーネントがクライアントデバイスにおいて提示されたことを示すデータを含む通知を受信するステップをさらに含む態様1から1cのいずれか1つの方法。
態様3.
勝ち残り選択値に対応するデジタルコンポーネントがクライアントデバイスにおいて提示されたことを示すデータを含む通知が、第2の選択値の第2の要求とともに、セキュアMPCシステムの第1のサーバによって受信される態様2の方法。
態様4.
最終選択プロセスからの勝ち残りデジタルコンポーネントの選択結果を送信するステップが、
セキュアMPCシステムの第1のサーバによって、セキュアMPCシステムのそれぞれの第2のサーバから、選択結果の第1の秘密シェアを受信することと、
セキュアMPCシステムの第1のサーバによって、クライアントデバイスに、(i)選択結果のそれぞれの第1の秘密シェア、および(ii)選択結果の第2の秘密シェアを送信することとを含む態様1から3のいずれか1つの方法。
態様5.
候補選択値の第1のセットを受信するステップが、別のサーバから、候補選択値の第1のセットの各候補選択値に関して少なくとも2つの秘密シェアを受信することを含む態様1から4のいずれか1つの方法。
態様6.
マージすることおよびソートすることが、単一の比較に基づくソートプロセスとして第1のサーバによって実行される態様5の方法。
態様7.
選択規則のセットが、少なくともプライバシー保存匿名性施行規則を含む態様1から6のいずれか1つの方法。
態様8.
1つまたは複数のプロセッサと、
実行されるときに1つまたは複数のプロセッサに、
セキュアマルチパーティ計算(MPC)システムの第1のサーバによって、ユーザデバイス上のアプリケーションから、デジタルコンポーネントの要求を受信する動作、
第1のサーバによって、要求を2つ以上の異なる下位要求へと解析する動作、
セキュアMPCシステムの第1のサーバによって、2つ以上の異なる下位要求の各々を異なるサーバに送信する動作、
2つ以上の異なる下位要求の送信に応じて、第1のサーバによって、別のサーバから、候補選択値の第1のセットを受信する動作、
MPCシステムの1つまたは複数の第2のサーバと共同して、第1のサーバによって、勝ち残りデジタルコンポーネントの選択結果を生成するための選択プロセスを実行する動作であって、
第1のサーバによって、候補選択値の最終的なセットを生成するために候補選択値の第1のセットとキャッシュされた選択値のセットとをマージすること、
第1のサーバによって、候補選択値の最終的なセットを候補選択値の値に従ってソートすること、および
第1のサーバによって、2つ以上の選択規則のセットの各規則を適用することを含む、動作、ならびに
1つまたは複数の第2のサーバと共同して、第1のサーバによって、ユーザデバイスに、勝ち残りデジタルコンポーネントの選択結果を送信する動作を含む動作を実行させる命令を含む1つまたは複数のメモリ要素とを含むシステム。
態様8a.
異なるサーバが、MPCシステムの第2のサーバである態様8のシステム。
態様8b.
異なるサーバが、サプライサイドプラットフォームサーバである態様8のシステム。
態様8c.
別のサーバが、サプライサイドプラットフォームサーバである態様8から8bのいずれか1つのシステム。
態様9.
動作が、
セキュアMPCシステムの第1のサーバによって、ユーザデバイス上のアプリケーションから、勝ち残りデジタルコンポーネントがクライアントデバイスにおいて提示されたことを示すデータを含む通知を受信する動作をさらに含む態様8から8cのいずれか1つのシステム。
態様10.
勝ち残り選択値に対応するデジタルコンポーネントがクライアントデバイスにおいて提示されたことを示すデータを含む通知が、第2の選択値の第2の要求とともに、セキュアMPCシステムの第1のサーバによって受信される態様9のシステム。
態様11.
最終選択プロセスからの勝ち残りデジタルコンポーネントの選択結果を送信する動作が、
セキュアMPCシステムの第1のサーバによって、セキュアMPCシステムのそれぞれの第2のサーバから、選択結果の第1の秘密シェアを受信することと、
セキュアMPCシステムの第1のサーバによって、クライアントデバイスに、(i)選択結果のそれぞれの第1の秘密シェア、および(ii)選択結果の第2の秘密シェアを送信することとを含む態様8から10のいずれか1つのシステム。
態様12.
候補選択値の第1のセットを受信する動作が、別のサーバから、候補選択値の第1のセットの各候補選択値に関して少なくとも2つの秘密シェアを受信することを含む態様8から11のいずれか1つのシステム。
態様13.
マージすることおよびソートすることが、単一の比較に基づくソートプロセスとして第1のサーバによって実行される態様12のシステム。
態様14.
選択規則のセットが、少なくともプライバシー保存匿名性施行規則を含む態様8から13のいずれか1つのシステム。
態様15.
分散型コンピューティングシステムによって実行されるときに分散型コンピューティングシステムに
セキュアマルチパーティ計算(MPC)システムの第1のサーバによって、ユーザデバイス上のアプリケーションから、デジタルコンポーネントの要求を受信する動作と、
第1のサーバによって、要求を2つ以上の異なる下位要求へと解析する動作と、
セキュアMPCシステムの第1のサーバによって、2つ以上の異なる下位要求の各々を異なるサーバに送信する動作と、
2つ以上の異なる下位要求の送信に応じて、第1のサーバによって、別のサーバから、候補選択値の第1のセットを受信する動作と、
MPCシステムの1つまたは複数の第2のサーバと共同して、第1のサーバによって、勝ち残りデジタルコンポーネントの選択結果を生成するための選択プロセスを実行する動作であって、
第1のサーバによって、候補選択値の最終的なセットを生成するために候補選択値の第1のセットとキャッシュされた選択値のセットとをマージすること、
第1のサーバによって、候補選択値の最終的なセットを候補選択値の値に従ってソートすること、および
第1のサーバによって、2つ以上の選択規則のセットの各規則を適用することを含む、動作と、
1つまたは複数の第2のサーバと共同して、第1のサーバによって、ユーザデバイスに、勝ち残りデジタルコンポーネントの選択結果を送信する動作とを含む動作を実行させる命令を符号化された非一時的コンピュータ記憶媒体。
態様15a.
異なるサーバが、MPCシステムの第2のサーバである態様15の非一時的コンピュータ記憶媒体。
態様15b.
異なるサーバが、サプライサイドプラットフォームサーバである態様15の非一時的コンピュータ記憶媒体。
態様15c.
別のサーバが、サプライサイドプラットフォームサーバである態様15から15bのいずれか1つの非一時的コンピュータ記憶媒体。
態様16.
動作が、
セキュアMPCシステムの第1のサーバによって、ユーザデバイス上のアプリケーションから、勝ち残りデジタルコンポーネントがクライアントデバイスにおいて提示されたことを示すデータを含む通知を受信する動作をさらに含む態様15から15cのいずれか1つの非一時的コンピュータ記憶媒体。
態様17.
勝ち残り選択値に対応するデジタルコンポーネントがクライアントデバイスにおいて提示されたことを示すデータを含む通知が、第2の選択値の第2の要求とともに、セキュアMPCシステムの第1のサーバによって受信される態様16の非一時的コンピュータ記憶媒体。
態様18.
最終選択プロセスからの勝ち残りデジタルコンポーネントの選択結果を送信する動作が、
セキュアMPCシステムの第1のサーバによって、セキュアMPCシステムのそれぞれの第2のサーバから、選択結果の第1の秘密シェアを受信することと、
セキュアMPCシステムの第1のサーバによって、クライアントデバイスに、(i)選択結果のそれぞれの第1の秘密シェア、および(ii)選択結果の第2の秘密シェアを送信することとを含む態様15から17のいずれか1つの非一時的コンピュータ記憶媒体。
態様19.
候補選択値の第1のセットを受信する動作が、別のサーバから、候補選択値の第1のセットの各候補選択値に関して少なくとも2つの秘密シェアを受信することを含む態様15から18のいずれか1つの非一時的コンピュータ記憶媒体。
態様20.
マージすることおよびソートすることが、単一の比較に基づくソートプロセスとして第1のサーバによって実行される態様15-19のいずれか1つの非一時的コンピュータ記憶媒体。
態様21.
1つまたは複数のプロセッサと、
実行されるときに1つまたは複数のプロセッサに態様1から7のいずれか1つに記載の方法を含む動作を実行させる命令を含む1つまたは複数のメモリ要素とを含むシステム。
態様22.
分散型コンピューティングシステムによって実行されるときに分散型コンピューティングシステムに態様1から7のいずれか1つに記載の方法を含む動作を実行させる命令を符号化された非一時的コンピュータ記憶媒体。