様々な図面における同様の参照番号および参照指示は、同様の要素を示す。
概して、本明細書は、実験の文脈でコンテンツが提供されるユーザのユーザデータを保護し、プライバシーを守るためのシステムおよび技術を説明する。
ユーザグループに基づくライブ実験は、様々な企業によって広く採用される極めて重要な技術である。実験は、開発中の新しい特徴の有効性およびユーザ体験を評価し、特定の変更の増分効果を定量化するために使用され得る。たとえば、前のシーズンのプログラムの一部の特定のプロモーションビデオを見せられた後で、ユーザが特定のオーケストラによって行われるコンサートに行くことになる可能性がどれだけ高くなるかを定量化するために、実験が使用され得る。ユーザの安定した、ドメインをまたがる、決定的(deterministic)な識別子がなければ、サードパーティクッキーなどの監視メカニズムが推奨されないとき、ドメインをまたがるユーザに基づくライブ実験を行うための既存のシステムは、有効でない場合がある。本明細書において説明されるシステムおよび技術は、データセキュリティおよびユーザプライバシーを保証しながら、そのような実験を可能にする。
ユーザに基づくライブ実験を実行するための代替的なソリューションが存在するが、それらのソリューションは、堅牢または正確でない可能性がある。たとえば、コンテンツの各要求が実験群にランダムまたは擬似ランダムに割り振られる、要求に基づく実験を行うことが可能である。ファーストパーティクッキーに基づいてユーザに基づく実験を行うことも、可能である。しかし、これらの場合のどちらも、特定のブラウザを使用するユーザが異なるドメインを訪問し、コンテンツの複数の要求を送出する場合、ブラウザは、あるときは対照群に割り振られ、別のときは暴露群(exposed group)に割り振られる可能性がある。ユーザの実験群に一貫性なく割り振られるとき、試験されている変数の効果が、実験群と対照群との間に広がり、不正確で、したがって使い物にならない結果を生じる場合がある。
一部の実装においては、ユーザの電子メールアドレスまたは電話番号などの情報を使用することによって、ユーザに基づく実験を行うことが可能であり、これは、一貫した、ドメインをまたがるおよびブラウザをまたがる追跡を可能にする。しかし、ユーザは、たとえデータがいかなるその他のエンティティにも晒されないとしても、実験群へのユーザの割り振りを含むどんな目的のためのユーザの個人を特定可能な情報の使用に関しても懸念を抱く可能性がある。
説明されるシステムは、情報セキュリティおよびプライバシーを提供する安全なマルチパーティ計算設計を提示する。安全なマルチパーティ計算(MPC)は、個々の関係者が別の関係者のデータにアクセスすることができないように、複数の関係者に計算を分散させることによって、データへのアクセスを防止する暗号プロトコルである。MPCは、関係者が、それらの関係者の個々の入力に対する関数を、それらの入力を非公開にしたまま共同で計算することを可能にする。MPCシステムは、非公開のままにされるべきデータをシェアに分割することによって計算を実行する。秘密(secret)と呼ばれるこのデータは、秘密シェアに分割され、これらのシェアの各々が、参加者に提供される。そして、参加者は、それらの参加者の個々の秘密シェアに対する関数を共同で計算し、データの機密性、完全性、およびセキュリティを保証する。MPCシステムは、様々な計算およびプロセスを共同で安全に実行する2つ以上のサーバコンピュータのクラスタを含む。
たとえば、システムは、特定のpeidを対照群かまたは処置群かのどちらかに割り振り、実験において使用するためのpeidを安全に送信するなどの実験計画機能を配布することができる。MPCクラスタは、MPCクラスタからクライアントデバイスへの安全に選択された候補デジタルコンポーネントの送信を必要とする、要求元のクライアントデバイスにおけるプロセスの実行よりも改善されたプロセスの完全性およびユーザプライバシーを提供する。MPCプロセスは、共謀していないと推定される参加者のうちのちょうど1人が正直なままであり、暗号プロトコルの設計から逸脱しない場合、ユーザデータがいかなるエンティティにも晒されることがない程度のセキュリティを提供する。このシステムは、すべての関係者がプロトコルに正直に従い、共謀する任意の数の関係者が自身の出力以外のことを何も知らない場合、プロトコルが非公開のままである、正直だが知りたがり(honest-but-curious)セキュリティモデルに従う。
安定した識別子が実験の目的にのみ使用され、安全なMPCの方式によって送信されるこのシステムを実装することによって、システムは、ユーザプライバシーを守りながら実験の完全性および実験の結果の有用性を維持し、ユーザに関連性がある可能性がより高いコンテンツを、ユーザにとって興味深いおよび/または有用である可能性がより高い方法で提供することができる。
説明されるシステムは、ドメインをまたがるユーザに基づく実験をサポートし、peidが同じユーザによって所有される複数のデバイスにまたがって同期される場合、デバイスをまたがるユーザに基づく実験をサポートすることができる安定した実験識別子を提供ことによって、安全なMPCの設計の動作を強化する。ユーザが特定の電子文書およびリソースにアクセスするブラウザなどのアプリケーションは、安定した実験識別子を安全なMPCクラスタと共有し、安全なMPCクラスタは、識別子を使用して、様々な実験および実験の特徴を有効化または無効化し、様々な記憶された選択基準のうちどれが、機能の中でもとりわけ、ユーザに提示されるため、ユーザを異なる実験群に割り振るため、実験の結果を追跡するため、および使用するためにそれらの結果を報告するための選択に適格または不適格であるかを決定することができる。安全なMPCクラスタは、有効化された実験を、分析のために集約されたレポートサーバ(aggregated reporting server)に報告する。一部の実装において、安全なMPCクラスタは、ブラウザを介して報告を実行するか、または安全なMPCクラスタ自体が、集約されたレポートサーバとして働き得る。
さらに、漸進的な更新および変更の測定をサポートするために、安全なMPCクラスタは、当選した選択基準および関連するデジタルコンポーネントが漸進的な実験または研究の一部である場合、選択プロセスにおいて、ブラウザのユーザが当選した選択基準の抑制群(holdback group)(すなわち、処置の特徴が提供されない対照群)に属するかどうかを判定するために、反事実的選択プロセスを行う。デジタルコンポーネントの要求に対する応答において、安全なMPCクラスタは、該当する場合、アプリケーション、たとえば、ブラウザが暴露群かまたは抑制群かのどちらかに属することをそのアプリケーションが認識することを要求し得る。アプリケーションは、関連する挙動(ウェブサイトを訪問すること、演奏会のチケットを購入すること、電子バースデーカードに署名することなど)が、アプリケーションが関連するすべての暴露群および抑制群のコンバージョンウィンドウ(conversion window)内で発生するかどうかを、集約レポートサーバを介して折り返し報告する。
図1は、MPCクラスタ130が、クライアントデバイス110に配信するためのデジタルコンポーネントを選択するために安全なMPCプロセスを実行し、異なるコンテンツおよびコンテンツのバージョンに基づいて実験を実行する環境100のブロック図である。例示的な環境100は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、インターネット、モバイルネットワーク、またはこれらの組合せなどのデータ通信ネットワーク105を含む。ネットワーク105は、クライアントデバイス110、安全なMPCクラスタ130、パブリッシャ140、ウェブサイト142、コンテンツプラットフォーム、たとえば、サプライサイドプラットフォーム(SSP)170、およびデマンドサイドプラットフォーム(DSP)150、および集約レポートサーバ180を接続する。例示的な環境100は、多くの異なるクライアントデバイス110、安全なMPCクラスタ130、パブリッシャ140、ウェブサイト142、DSP150、SSP170、および集約レポートサーバ180を含んでよい。
クライアントデバイス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は、デジタルコンポーネント自体をクライアントデバイス110に提供する。
安全なMPCクラスタ130は、ユーザのグループメンバーシップおよび/またはその他の基準に基づいて、しかし、平文のグループメンバーシップ情報(またはその他の機密ユーザ情報)にアクセスすることなく、ユーザのクライアントデバイスに配信するためのデジタルコンポーネントを選択するために安全なMPCプロセスを実行する2つのコンピューティングシステムMPC1およびMPC2(たとえば、サーバコンピュータ)を含む。例示的なMPCクラスタ130は2つのコンピューティングシステムを含むが、MPCクラスタ130が2つ以上のコンピューティングシステムを含む限り、より多くのコンピューティングシステムが使用されることも可能である。たとえば、MPCクラスタ130は、3つのコンピューティングシステム、4つのコンピューティングシステム、または別の適切な数のコンピューティングシステムを含み得る。MPCクラスタ130により多くのコンピューティングシステムを使用することは、より高いセキュリティを提供し得るが、MPCプロセスの複雑さも増大させ得る。
コンピューティングシステムMPC1およびMPC2は、単一のエンティティによって運用され得る。一部の実装において、MPC1およびMPC2は、異なるエンティティによって運用され得る。このようにして、各エンティティは、平文のユーザのグループメンバーシップにアクセスすることができない可能性がある。たとえば、コンピューティングシステムMPC1またはMPC2のうちの一方は、ユーザ、パブリッシャ140、DSP150、SSP170、集約レポートサーバ180、およびデジタルコンポーネントプロバイダ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)通知を受信する。これらのプロセスのすべては、秘密分散技術を使用して行われ得る。このプロトコルは、下で詳細に説明される。
プロセス200は、アプリケーション112が、SSP170などのコンテンツ配信サーバからのトリガ要素と協力して、MPCクラスタ130にデジタルコンポーネントの要求を送信する段階Aから始まる。アプリケーション112は、複数のデジタルコンポーネントをフェッチするために、デジタルコンポーネントの複数の要求をまとめて1つの組合せ要求に含めることができる。そして、MPCクラスタ130は、組合せ要求内の各要求を独立して満たすか、または1つもしくは複数の選択の判断を包括的に行うことができる。この例において、要求は、単一のデジタルコンポーネントを求めるものであり、機密情報に基づいて選択されるデジタルコンポーネント、または機密情報を使用せずに選択されるデジタルコンポーネントの要求を含む。
MPCクラスタ130は、それぞれがそれぞれの選択基準にマッピングされるデジタルコンポーネントの組の中から特定のデジタルコンポーネントを選択することによって要求に応答することができる。これらの選択基準は、MPCクラスタ130において以前にキャッシュされたかもしくはその他の方法で記憶されたデジタルコンポーネントに関する選択基準、および/またはDSP150もしくはSSP170などのプラットフォームによって生成された選択基準、ジャストインタイム(JIT: just-in-time)選択基準であることが可能である。JIT選択基準は、必要性に応じて直接生成され、デジタルコンポーネントが必要とされるときにだけ選択基準が生成されるので効率を高め、無駄を減らす。たとえば、デジタルコンポーネントスロットが利用可能になるときに--これはデジタルコンポーネントの要求の受信によって示される--JIT選択基準が生成され得る。キャッシュされたデジタルコンポーネントは、選択基準がMPCコンピュータによって記憶されるデジタルコンポーネントであるが、デジタルコンポーネントは、必ずしもキャッシュに記憶されない場合があり、たとえば、デジタルコンポーネントまたはデジタルコンポーネントのためのデータは、その他の種類のデータストレージデバイスまたはメモリに記憶され得る。
要求は、アプリケーション112がマッピングされるかまたはその他の方法で関連付けられるユーザグループの識別子などの機密となり得る情報と、デジタルコンポーネントが提示および/または表示されるコンテキストに関するアプリケーション112からのコンテキスト信号(contextual signal)などの機密ではない情報とを含む、デジタルコンポーネント選択プロセスにおいて使用される情報を含む。下でさらに詳細に説明されるように、システム110の設計は、機密または極秘となり得るユーザデータの保護を改善する。要求は、選択基準および関連するデジタルコンポーネントを選択するかまたは選択プロセスから削除するために使用され得る安定した実験識別子、peidを含む。安定した実験識別子は、クライアントデバイス110上で実行されるアプリケーション112のインスタンスに対応することが可能であり、さらに、そのインスタンスは、ユーザ、たとえば、アプリケーション112にログインしたユーザまたはアプリケーション112を使用しているユーザに対応することが可能である。安定した実験識別子は、MPCクラスタ130の単一のサーバが識別子を知らず、その代わりに識別子のシェアを保持するように、ユーザプライバシーを保護するためにMPCクラスタ130によってサポートされる秘密シェア技術を使用して暗号化される。アプリケーション112は、MPCクラスタ130の各サーバに安定した実験識別子のそれぞれのシェアを送信することができる。
トリガ要素は、たとえば、アプリケーション112によって訪問されたインターネットロケーションまたはその他の電子リソース内のデジタルコンポーネントスロットの存在を検出するタグであることが可能である。トリガ要素は、たとえば、インターネットロケーションに置かれることが可能であり、デジタルコンポーネントが要求されるべきデジタルコンポーネントスロットの存在をアプリケーション112に知らせることができる。
プロセス200は、MPCクラスタ130が、コンテキスト信号のなどの機密でない(または機密性が比較的低い)情報に基づいているデジタルコンポーネント要求をSSP170に送信する段階Bで継続する。たとえば、デジタルコンポーネント要求は、特定のドメイン内のユーザの活動情報などの情報に基づき得る。この要求は、「コンテキスト要求(contextual request)」と呼ばれ、このコンテキスト要求に対する応答は、要求が機密情報を受信することを条件としないので、無条件選択基準であることが可能である。場合によっては、応答は、応答が条件付き応答であるように、1つまたは複数の条件に関する基準を含んでよい。コンテキスト要求は、デジタルコンポーネントの要求をトリガしたインターネットロケーション(たとえば、コンテンツパブリッシャ)によって直接収集された様々なコンテキスト信号およびユーザ情報を含み得る。たとえば、コンテキスト信号は、分析データ、言語設定、およびコンテンツパブリッシャが良好なユーザ体験を提供するのを支援するその他のデータを含み得る。しかし、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は、特定のコンテンツプロバイダが候補デジタルコンポーネントおよび選択基準を提供する資格を持つことを防止する、または特定のデジタルコンポーネントが候補になることを防止する、コンテンツプロバイダおよびデジタルコンポーネントブロック規則などの規則を適用する。一部の実装において、MPCクラスタ130は、規則または規則の一部を適用することができる。
一部の実装において、アプリケーション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上への、たとえば、将来のコンポーネント要求Aと一緒に含められるピギーバックによってMPCクラスタ130にインプレッション通知Gを送信してよい。
システムは、MPCクラスタ内のいずれの個々のサーバがpeidなどのユーザ情報にアクセスすることも防止するために秘密シェアアルゴリズムを実装する。システムが正直だが知りたがりの仮定の下で動作しているとき、秘密シェアアルゴリズムは、MPC内の単一のサーバが平文のpeidを見ることができないことを保証する。より詳細には、各デジタルコンポーネント要求に関して、ブラウザ112は、peidを2つの秘密シェア、[peid1]および[peid2]に分割し、角括弧内に現れるパラメータは、角括弧内の変数の秘密シェアを表す。たとえば、ここで、[peid1]および[peid2]は、ユーザの安定した実験識別子であるpeidの2つの秘密シェアである。秘密シェアに関して、添え字1は、第1の秘密シェアを表すパラメータを示し、添え字2は、第2の秘密シェアを表すパラメータを示す。これらの秘密シェアは、元の秘密に再構築され得る。たとえば、エンティティは、[peid1]と[peid2]との両方にアクセスすることができる場合にのみ、秘密シェア[peid1]および[peid2]を元の秘密peidに再構築し得る。しかし、秘密シェアは、ユーザプライバシーを保護するために暗号化される。
加算型秘密分散(additive secret sharing)などの方式に依拠することによって、再構築プロセスは、単純な演算を使用して実行され得る。たとえば、単純な加算型秘密分散を使用するときの再構築プロセスは、[peid1] + [peid2] = peidのような単純な加算演算を使用して実行され得る。2つの秘密シェアの各々は、MPCクラスタ130の2つのサーバのうちの一方によって、それぞれ別々におよび極秘に保持される。サーバ間でのpeidの分散は、加算型分散(additive sharing)による。peidは、方法の中でもとりわけ、排他的論理和がpeidを与える2つのランダムベクトルによるか、または1つのシェアが暗号化されたpeidを保持し、第2のシェアが復号鍵を保持する2つの別々のシェアによるなど、その他の方法によって分散され得る。MPCクラスタ130は、選択された特定の方法に基づいて、シェアへの秘密の分割を実行するように適応し得る。
一方のサーバを対象とする秘密シェアが他方のサーバによって傍受されないことを保証するために、秘密シェアは暗号化され得る。たとえば、(ブラウザである可能性がある)アプリケーション112は、PublicKeyEncrypt([peid1], MPC1)の結果をMPC1に送信し、PublicKeyEncrypt([peid2], MPC2)の結果をMPC2に送信することによって、秘密シェアを受信するように意図された特定のMPCサーバの公開鍵によって秘密シェアの各々を暗号化することができる。ここで、PublicKeyEncrypt(x, y)は、サーバyの公開鍵を使用してxに対して実行される暗号化関数を表す。したがって、PublicKeyEn([peid1], MPC1)は、MPC1の公開鍵を使用して[peid1]に対して実行された暗号化関数を表す。
図3および図4は、異なるドメインにまたがって実行されるウェブ活動にわたって使用されるプライバシーを守るドメインをまたがる実験群区分および監視メカニズムを発行および実施するための例示的なプロセス300および400を示すスイムレーン図である。プロセス300および400の動作は、たとえば、クライアントデバイス110および/もしくはアプリケーション112、MPCクラスタ130、DSP150、ならびに/または集約レポートサーバ180によって実施され得る。プロセス300および400の動作は、非一時的である場合がある1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されることも可能であり、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス300および400の動作を実行させることが可能である。
図3に関して、プロセス300は、アプリケーション112がMPCクラスタ130にデジタルコンポーネントの要求を送信するステップ1から始まる。たとえば、プロセス300のステップ1は、アプリケーション112が、コンテンツ配信サーバからのトリガ要素と協力して、MPCクラスタ130にデジタルコンポーネントの要求を送信するプロセス200の段階Aと同様であってよい。要求は、たとえば、選択されたデジタルコンポーネントが表示される表示環境に関連する1組のコンテキスト信号を含み得る。要求は、たとえば、行われる任意の実験を目的としてユーザが一意に特定され得るように、ユーザおよびアプリケーション112のpeidも含むことができる。コンテキスト信号は、たとえば、デジタルコンポーネントが表示されるリソースのリソースロケータ(たとえば、ユニバーサルリソースロケータ(URL))、デジタルコンポーネントが表示されるクライアントデバイス110の地理的位置、および/またはデジタルコンポーネントが表示されるアプリケーション112の音声言語設定を含み得る。その他のコンテキスト信号が、使用されることも可能である。
一部の実装において、1組のコンテキスト信号は、キャッシュ検索キーなどのパラメータの形態で送信される。キャッシュ検索キーは、1組のコンテキスト信号に基づく合成メッセージであることが可能である。一部の実装において、キャッシュ検索キーは、複合メッセージの暗号学的ハッシュ(たとえば、SHA-256)であることが可能である。
MPCクラスタ130は、MPCクラスタ130によって、選択基準があるかまたは記憶される各デジタルコンポーネントに関して、デジタルコンポーネントが選択に適格であるコンテキストを示す対応するキャッシュ検索キーを記憶することができる。たとえば、デジタルコンポーネントの選択基準が、所与のURLのための選択プロセスでの使用にのみ適格である場合、選択基準およびデジタルコンポーネントは、所与のURLを含むキャッシュ検索キーにマッピングされ得る。これらのキャッシュ検索キーは、複合メッセージの形態であることも可能である。
到着するデジタルコンポーネントの要求に関して、MPCクラスタ130は、デジタルコンポーネント要求に含まれるキャッシュ検索キーに関連するすべてのキャッシュされた選択基準を収集する。すなわち、MPCクラスタ130は、デジタルコンポーネント要求のキャッシュ検索キーと一致するキャッシュ検索キーにマッピングされたる各デジタルコンポーネントおよびその対応する選択基準を特定する。これらの一致するデジタルコンポーネントは、デジタルコンポーネントが要求されているリソースとともに表示するのに適格であるので、適格デジタルコンポーネントと呼ばれ得る。
適格デジタルコンポーネントを特定した後、コンピューティングシステムMPC1およびMPC2は、適格デジタルコンポーネントのうちのどれが選択プロセスの候補であるかを決定することができる。デジタルコンポーネントは、デジタルコンポーネントに関する各条件が満たされるときに候補となる。上述のように、これらの条件は、ユーザグループメンバーシップ、頻度制御、コンテンツ配信規則、および/またはペース配分規則に基づき得る。
選択に適格なデジタルコンポーネントは、図2およびプロセス200に関して上で説明されたように、フィルタリングされ、それから選択され得る。その後、アプリケーション112への応答で提供されることになる選択されたデジタルコンポーネントは、MPCクラスタ130によってステップ2において使用される。
それぞれのキャッシュされたデジタルコンポーネントに関して、MPCクラスタ130は、効果が分析されることになる処置を受ける、デジタルコンポーネントの実験群にアプリケーション112が属するかどうか、または処置を受けない、デジタルコンポーネントの対照群にアプリケーション112が属するかどうかを計算する。実験群または処置群は、特徴の中でもとりわけ、デジタルコンテンツプロバイダまたは分析システムがインターネットなどのネットワークのユーザに提供されるときに効果を定量化することに関心のある特定の特徴、拡張、インタラクティブ要素、色、形状、サイズ、フォント、音声、映像を有するデジタルコンポーネントを受け取る。これらの群は、異なるデジタルコンポーネントに関して異なることが可能であり、MPCクラスタ130は、peidを使用して、ユーザが対照群または実験群の一部であるべきかどうか、ならびにユーザ/アプリケーションが実験群に属するかどうかに応じてデジタルコンポーネントがユーザおよびアプリケーションに提供される候補であるかどうかを一貫して判定する。アプリケーション112は、ユーザの代理として群に割り振られる。
特定のデジタルコンポーネントまたはデジタルコンポーネントへの変更のユーザに対する影響を定量化するために、MPCクラスタ130にキャッシュされた各デジタルコンポーネントおよび対応する選択基準は、たとえば、実験の計画に従って、4つの非負の数p、k、r、およびsのうちの1つに関連付けられ、たとえば、マッピングされてよい。たとえば、システムは、相互に直交するラテン方格の概念を適用して、独立変数が、隠れた交絡相関(confounding correlation)がなく真に独立していることを保証することができる。たとえば、実験の統計的計画において、実験の処置の割り当ては、2つのソースからの実験誤差(experimental error)がこれらの方格を使用して特定され得るように、各処置が各行および各列にちょうど1回ずつ現れるようなものである。非負の数p、k、r、およびsは、実験計画の異なるパラメータを表す。
ここで、pは、実験の各層(layer)(各層はラテン方格によって表される)におけるモジュロ(mod)の数およびラテン方格の行/列の数を表す素数であり、kは、実験を実行するために選択された層識別子であり、k∈[0, p - 1]であり、0≦r≦s≦p - 1である。言い換えると、[r, s]は、実験が行われる、kによって指定された層におけるmodを指定する、[0, p - 1]内の空でない区間を定義する。この特定の例においては、c = peid mod(p2)、x = c mod p、y = c div p、およびm = (k×x + y) mod pとする。
概念的には、MPCクラスタ130は、m∈[r, s]であるかどうかを判定することによって、キャッシュされたデジタルコンポーネントおよびその選択基準が選択に適格であるかどうかを判定する。言い換えると、MPCクラスタ130は、r≦(k×x + y) mod p≦sであるかどうかを判定することによって、キャッシュされたデジタルコンポーネントが選択の候補であるかどうかを判定する。そうでない場合、キャッシュされたデジタルコンポーネントは、候補ではなく、したがって、選択に不適格である。一部の実装において、デジタルコンポーネントは、下で説明されるように、選択の候補となるために、デジタルコンポーネントに関連するすべての条件も満たさなければならない。
たとえば、MPCクラスタ130は、m∈[r, s]であるかどうか、言い換えると、r≦(k×x + y) mod p≦sであるかどうかを判定することによって、アプリケーション112が実験群に属するかどうかを計算することができる。MPCクラスタ130は、
であるかどうか、言い換えると、
であるかどうかを判定することによって、アプリケーション112が対照群に属するかどうかを計算することができる。
さらに、それぞれのキャッシュされたデジタルコンポーネント(および対応する選択基準)は、1つまたは複数のグローバル一意の実験識別子eidexperimentに関連付けられる。グローバル一意性を強制するために、MPCクラスタ130は、この識別子を、
eidexperiment
= m∈[r, s]に関連付けられるHMAC(owner_domain, domain_specific_experiment_id)
として計算することができる。ここで、HMACまたはハッシュベースメッセージ認証コード(hash-based message authentication code)は、メッセージのデータの完全性と真正性との両方を同時に検証するために使用されることが可能であり、メッセージが一意にハッシュされることを可能にする例示的な暗号学的ハッシュ関数である。ここで、グローバル一意は、各実験識別子eidexperimentが、アプリケーション112によってアクセス可能な異なるドメインにわたって一意であることを意味する。たとえば、同じ実験識別子が、アプリケーション112のユーザによって訪問された異なるウェブサイトおよびドメインにまたがって使用されることが可能であり、ドメインに関係なく、いかなるその他の識別子またはユーザとも重複しない。
さらに、それぞれのキャッシュされたデジタルコンポーネント(および対応する選択基準)は、1つまたは複数のグローバル一意の対照識別子eidcontrolに関連付けられる。グローバル一意性を強制するために、MPCクラスタ130は、この識別子を、
として計算してよい。ここで、グローバル一意は、各対照識別子eidcontrolが、アプリケーション112によってアクセス可能な異なるドメインにわたって一意であることを意味する。たとえば、同じ対照識別子が、ブラウザ112のユーザによって訪問された異なるウェブサイトおよびドメインにまたがって使用されることが可能であり、ドメインに関係なく、いかなるその他の識別子またはユーザとも重複しない。対照識別子は、[r, s]と別れており、重複しない区間
に関連付けられ、アプリケーションは、
である場合、対照群内にある。言い換えると、MPCクラスタ130は、
であるかどうかを判定することによって、ブラウザが対照群内にあるかどうかを判定する。
例として、MPCクラスタ130からクライアントデバイス110に送信される特定のデジタルコンポーネント応答に付けられた実験識別子のリストは、行われている各実験に対して1つずつ、O(104)のpeidを含むことが可能であり、各実験は、異なるデジタルコンポーネントを表す。付けられる実験識別子の数は、デジタルコンポーネントの要求ごとに変わる。一部の実装において、peidのリストは、大きくなり得、必要とされる帯域幅を削減するためにpeidのリストを簡潔に表すために、システムは、カッコウフィルタ(cuckoo filter)またはブルームフィルタなどの確率的データ構造を使用することができる。
プロセス300のステップ2において、MPCクラスタ130は、適用可能な実験識別子がアクティブ化されるようにしてブルームフィルタを構築する。たとえば、11個のハッシュ関数を使用して、MPCクラスタ130は、0.045%の偽陽性率(FPR)の、peidあたり2バイトの最適なブルームフィルタサイズを構築することができる。各ブルームフィルタはビット配列を有し、ブルームフィルタを構築するために、要素が1つずつブルームフィルタに挿入される。各要素に関して、ハッシュ関数は、要素に対応するビット配列内のビットを推測するために使用される。たとえば、11個のハッシュ関数がある場合、11個のハッシュ関数は、要素に関してビット配列内の11個のビットを値1に設定するために使用される。潜在的にセキュリティを侵害されたアプリケーションがpeidのリストの中から極秘情報を抽出または改ざんすることを防止するために、MPCクラスタ130は、暗号アルゴリズムに頼る場合がある。
ブルームフィルタは、少ない量のデータを使用してアクティブ化された実験識別子を正確に表すことができ、最小限の帯域幅の消費で伝達され得るので、MPCクラスタ130は、ブルームフィルタを使用する。MPCクラスタ130は、実験の統計的結果に対する影響が無視できるように、ブルームフィルタのFPRを制御することができる。ブルームフィルタの構築は、各サーバがブルームフィルタ内の識別子の位置を計算することができるが、値が0であるのかまたは1であるのかはわからないように、ユーザプライバシーを守るために秘密シェアを使用して実行される。計算は、たとえば、秘密シェアにおいて実行され得る=+演算を使用して行われ得る。一部の実装において、ブルームフィルタは、構築が秘密シェアにおいて行われることを可能にし、後で通常のブルームフィルタに変換され得る計数ブルームフィルタ(counting Bloom filter)であるように構築される。ブルームフィルタの構築は、プロセス400のステップ2から3に関連して下でさらに詳細に説明される。
プロセス300のステップ3において、MPCクラスタ130は、秘密シェアが意図されたいかなる関係者がブルームフィルタのパラメータにアクセスすることおよび完全なブルームフィルタを再構築することも防止するために、秘密シェアに分割され得るブルームフィルタを暗号化し、および/またはブルームフィルタに署名し得る。たとえば、MPCクラスタ130は、公開鍵暗号を使用してブルームフィルタを暗号化することができる。
プロセス300のステップ4において、MPCクラスタ130は、アプリケーション112が実験群に属するのかまたは対照群に属するのかを判定すると、アプリケーション112に返されるデジタルコンポーネント応答にそれぞれの実験識別子を付ける。たとえば、MPCクラスタ130は、アプリケーション112に提供されるデジタル成分応答とともにブルームフィルタを含めることができる。さらに、MPCクラスタ130は、図5のステップ504から506に関連して下で説明されるように、候補の集合からその条件のすべてを満たす当選デジタルコンポーネントを選択する。
プロセス300のステップ5において、図2に関連して上で説明されたプロセスなどの選択プロセスに従って、ブルームフィルタによって示された適格デジタルコンポーネントの中から当選デジタルコンポーネントが選択された後、アプリケーション112は、当選選択基準に関連するデジタルコンポーネントをレンダリングする。たとえば、アプリケーション112は、当選選択基準に関連する映像をレンダリングすることができる。
プロセス300のステップ6において、レンダリングされたデジタルコンポーネントは、アプリケーション112と連携して、アプリケーション112にネイティブな集約測定(aggregate measurement)APIなどの集約測定機能を通じてDSP150にレポートを送信する。たとえば、集計測定APIは、アプリケーション112に不可欠であり得る。一部の実装において、集約測定APIは、安全なMPCクラスタとして実装され得るサーバを含む。レポートは、レポートに関連するpeidのリストを含み得る。たとえば、レポートは、前に構築されたブルームフィルタと、測定値の中でもとりわけ、デジタルコンポーネントが示される時間の量、ユーザの注意がデジタルコンポーネントに集中されるかどうか、その他のアプリケーションが実行されているかどうか、およびデジタルコンポーネントが見えているかどうかなどの、デジタルコンポーネントのレンダリングに関連する測定値とを含み得る。
プロセス300のステップ7において、閾値の数のレポートを蓄積した後、DSP150は、受信されたレポートを秘密シェアで集計レポートサーバ180にアップロードする。たとえば、DSP150は、DSP150がレポートの平文にアクセスすることができないように、多数の暗号化されたレポートを秘密シェアで集約レポートサーバ180に定期的にアップロードすることができる。DSP150は、閾値の数のレポートが蓄積されたかどうかを検出し、レポートをバッチ(すなわち、秘密シェア)レポートで集計レポートサーバ180にアップロードすることができる。
プロセス300のステップ8において、DSP150は、各peidに関連する指標を取得するために、集約レポートサーバ180に問い合わせる。たとえば、DSP150は、集約レポートサーバ180からの様々な分析、測定値、およびその他のパラメータの要求を与えることができる。
図4に関して、プロセス400は、実験における漸進性をサポートするために、プライバシーを守るドメインをまたがる実験群区分および監視メカニズムを発行および実施するための例示的なプロセスである。図4およびプロセス400に関連して示されるステップの多くは、図3およびプロセス300に関連して上で説明されたステップと同様である。
プロセス400のステップ1において、アプリケーション112は、図3に関連して上で説明されたプロセス300のステップ1と同様に、MPCクラスタ130にデジタルコンポーネントの要求を送信する。
場合によっては、エンティティの中でもとりわけ、コンテンツプロバイダ、設計者、および研究者は、特定の特徴または変更に起因する増分効果を定量化したい。たとえば、特定のデジタルコンテンツを見ないのと比較して、デジタルコンポーネントを見た後、ユーザは、特定のオーケストラのバーチャル公演を見ることに「はい」と答える可能性が50%高くなる。漸進性のそのような研究をサポートするために、システムは、以下のように、図2および図3に関連して上で説明された基本のプロセスに反事実的選択プロセスを導入する。
基本の実験計画と同様に、キャッシュされた選択基準は、
に関連付けられ、MPCクラスタ130は、peid、p、およびkからmod mを計算する。
ここで、m∈[r, s]である場合、ユーザは、暴露群にいる。言い換えると、暴露群は、キャッシュされた選択基準に関連するデジタルコンポーネントに晒される。暴露群は、実験識別子eidexposedに関連付けられる。一意性を保証するために、eidexposedは、eidexposed = HMAC(owner_domain, domain_specific_exposed_id)と定義される。
である場合、ユーザは、キャッシュされた選択基準に関連するデジタルコンポーネントに晒されない抑制群にいる。言い換えると、処置が、群に対して「控えられる」。抑制群は、実験識別子eidholdbackに関連付けられる。一意性を保証するために、eidholdbackは、eidholdback = HMAC(owner_domain, domain_specific_holdback_id)と定義される。
ここで、mがどちらの範囲にも入っていない場合、アプリケーション112は、暴露群にも抑制群にも入っていない。
プロセス400のステップ2において、MPCクラスタ130は、キャッシュされたデジタルコンポーネントのうちの最大で1つを選択プロセスの当選デジタルコンポーネントとして選択するために、選択のすべての規則を適用する選択プロセスを実行する。当選デジタルコンポーネントが元の実験適格性規則に関連付けられる場合、MPCクラスタ130は、デジタルコンポーネントの要求に対する応答に、eidexposedおよび関連するメタデータを挿入する。
プロセス400のステップ3において、それから、MPCクラスタ130は、実験適格性規則をm∈[r, s]から
に更新することを除いて選択プロセスのすべての規則を適用する反事実的選択プロセスを実行する。そして、MPCクラスタ130は、更新された適格性規則に基づいて幻の候補選択基準(phantom candidate selection criterion)を決定し、キャッシュされたデジタルコンポーネントのうちの最大で1つを選択し、適格性規則に対する更新を除いて実際の選択プロセスと完全に同一である反事実的選択プロセスの当選デジタルコンポーネントを表すことができる。当選デジタルコンポーネントが修正された実験適格性規則に関連付けられる場合、または言い換えると、当選デジタルコンポーネントが更新された適格性規則に基づいてのみ選択される資格があった場合、MPCクラスタ130は、デジタルコンポーネントの要求に対する応答に、eidholdbackおよび関連するメタデータを挿入する。
反事実的選択プロセスは、プライバシーを守る選択プロセスと並行して実行され得る。この幻の候補デジタルコンポーネント(phantom candidate digital component)は、候補デジタルコンポーネントの選択基準が元の適格性規則を満たすが、それらの規則が反事実的選択プロセスのために更新され、したがって、選択基準に適用されなかった場合に、選択プロセスに当選する資格がある。この幻の候補デジタルコンポーネントは、mの値に応じて、実際の候補選択基準の代わりに当選デジタルコンポーネントとして選択され得る。
MPCクラスタ130は、コンピューティングシステムMPC1とMPC2との間のRPCの数を増やすことなく、たとえば、バッチモードで両方の選択プロセスを並行して行うことができる。反事実的選択プロセスの結果は、MPCクラスタ130が、元の適格性規則の下では適格でなかった可能性があるデジタルコンポーネントを特定することを可能にする。
反事実的選択プロセスは、実際の選択プロセスと同じ形態を有することができ、デジタルコンポーネントが選択プロセスに適格であるために、デジタルコンポーネントは、特定の配信の要件を満たさなければならない。反事実的選択プロセスは、元の適格性ルールを除いて、実際の選択プロセスが適用する配信規則のすべてを適用することによって、適格性規則が更新されるときに起きたであろうことを測定する。
反事実的選択プロセスは、システムが、特定のデジタルコンポーネントが実験において異なる群の一部であったとした場合に配信される資格があったかどうかを判定することを可能にする。
例示的なプロセス300および400は、当選デジタルコンポーネントを選択するために実験群に関するデジタルコンポーネントの適格性を決定し、デジタルコンポーネント要求に対する応答に実験群識別子を含めるためにMPCクラスタ130によって実行されるMPCプロセスの詳細の多くを省略して上で説明されている。以下のセクションは、例示的なプロセス300および400において使用され得る追加的な実装の詳細を提供する。
MPCクラスタ130のコンピュータMPC1およびMPC2は、ユーザを実験群に割り振るための様々なパラメータを決定するために、秘密シェアを使用して安全なMPCプロセスを実行することができる。各選択基準および各デジタルコンポーネント要求に関して、MPCクラスタ130は、関数c = peid mod (p2)、x = c mod p、y = c div p、およびm = (k×x + y) mod pの各々を実行する。ユーザプライバシーを保護するために、peidが、秘密シェアを使用してクライアントデバイス110から送信され、MPCクラスタ130の各サーバが、peidの1つの秘密シェアを別々に受信する。
などのその他の入力パラメータは、機密情報ではなく、したがって、MPC1とMPC2との間で平文で共有され得る。一部の実装においては、その他の入力パラメータも、秘密シェアにおいて処理される。
デジタルコンポーネント要求において、MPC1およびMPC2は、[0, q - 1]の任意に大きな整数の集合を表すZq内のpeidの加算型秘密シェアを受信する。言い換えると、MPC1およびMPC2は、[peid1]および[peid2]をそれぞれ受信する。ここで、qは、O(2128)であり、pは、O(10,000)である。言い換えると、q >> pである。たとえば、qは、大きな素数であることが可能であり、Zq内の加算型秘密シェアは、[0, q - 1]からランダムに選ばれた値を有する。
MPCサーバMPC1およびMPC2の各々は、非公開のままにされるデータのそのそれぞれの秘密シェアを使用して一連の関数を別々にローカルで実行する。たとえば、MPC1は、[c1] = [peid1] mod (p2)、[x1] = [c1] mod p、[y1] = [c1] div p、および[m1] = (k×[x1] + [y1]) mod pをローカルで計算する。
同様に、MPC2は、[c2] = [peid2] mod (p2)、[x2] = [c2] mod p、[y1] = [c2] div p、および[m2] = (k×[x2] + [y2]) mod pをローカルで計算する。上述のように、角括弧は、パラメータの秘密シェアを指定する。
安全なMPCクラスタ130の構造が原因で、[x1]および[x2]は、Zpのxの加算型秘密シェアであり、[y1]および[y2]は、Zpのyの加算型秘密シェアであり、[m1]および[m2]は、Zpのmの加算型秘密シェアである。
それぞれのキャッシュされたデジタルコンポーネントおよびその選択基準scに関して、MPC1およびMPC2は、それから、秘密シェア比較アルゴリズムを協力して実行して、特定の実験識別子が暴露群内にあるのかまたは抑制群内にあるのかを判定することができる。たとえば、MPC1およびMPC2は、秘密シェア比較アルゴリズムを協力して実行して、is_in_exposed_groupsc = m≧r AND m≦sと、
を評価することができる。比較アルゴリズムは、MPCプロトコルを使用して実行されることが可能であり、結果は、たとえば、[0, 2 - 1]の整数値(すなわち、0かまたは1かのどちらかの値)を有する秘密シェアを表すZ2の加算型秘密シェアであることが可能である。たとえば、Z2の加算型秘密シェアは、それぞれの加算型秘密シェアの値が、0および1のどちらかであることを意味する。2つのそのような秘密シェアは、ブール型の秘密メッセージを表すことができる。2つの加算型秘密シェアが等しい場合、対応する秘密メッセージは偽である。そうでない場合、対応する秘密メッセージは真である。
一部の実装において、MPC1は、
を計算する。
同様に、MPC2は、
を計算する。
選択適格性に関して評価されるそれぞれのキャッシュされたデジタルコンポーネントに関して、Z2の秘密メッセージの集合として表されるx個の積極条件がある。たとえば、これらの積極条件は、{[conditionpositive,1], ... [conditionpositive,x]}と表され得る。これらの条件は、ユーザグループメンバーシップ、頻度制御、コンテンツ配信規則、およびペース配分規則に関連し得る。キャッシュされたデジタルコンポーネントが選択プロセスに適格であるためには、これらの条件の1つ1つが真(たとえば、値1によって表される)でなければならない。言い換えると、キャッシュされたデジタルコンポーネントがMPCクラスタ130による選択の候補となるためには、x個の積極条件のすべてが満たされなければならない。
Z2の秘密メッセージの集合として表されるy個の消極条件がある。たとえば、これらの消極条件は、{[conditionnegative,1], ... [conditionnegative,y]}と表され得る。キャッシュされたデジタルコンポーネントがMPCクラスタ130による選択の候補となるためには、y個の条件のうちの少なくとも1つが偽(たとえば、値0によって表される)でなければならない。
積極条件の例は、特定のユーザグループのメンバーシップ、値およびペース配分の制約、ならびにプライバシーを守る規則を含む。たとえば、コンテンツの配信は、値およびペース配分制御技術によってデジタルコンポーネントプロバイダ160からの入力により制御されることが可能である。デジタルコンポーネントプロバイダは、デジタルコンポーネントを含むキャンペーンのためのリソースがキャンペーン期間の早期に使い果たされないことを保証するための対策を実施するために、選択値のある期間にわたる合計閾値を指定することができる。たとえば、デジタルコンポーネントプロバイダ160は、1週間の間のデジタルコンポーネントプロバイダ160からの選択されたデジタルコンポーネントまたは特定のデジタルコンポーネントに関する選択値の合計が8000単位の最大値に制限されることを指定し得る。選択値の合計の最大値に達すると、最大値が課される特定のデジタルコンポーネントは、時間の期間、たとえば、1週間が終わるまで、クライアントデバイス110に配信されるための選択プロセスにもはや適格でなくなる。
デジタルコンポーネントプロバイダは、特定のデジタルコンポーネントのためのデジタルコンポーネントプロバイダ160からの選択されたデジタルコンポーネントに関する選択値の閾値に達していく速度またはペースを指定することも可能である。たとえば、デジタルコンポーネントプロバイダ160は、1ヶ月の間に1日あたり250単位未満のペースで6000単位の最大閾値に達しなければならないことを指定し得る。選択値の日々の合計に達すると、ペース配分が課されるデジタルコンポーネントプロバイダ160によって提供されるデジタルコンポーネントは、時間の期間、その日が終わるまで、クライアントデバイス110に配信されるための選択プロセスにもはや適格でなくなる。
コンテンツ配信規則に従ってデジタルコンポーネントの適格性を強制することに加えて、プライバシーを守る選択プロセスは、選択されるいかなるコンポーネントも少なくともk人のその他のユーザに提供されるようにユーザのk-匿名性を守ることによって、ユーザのプライバシーを保護し、ユーザ体験を向上させる。特定のデジタルコンポーネントが閾値の数のその他のユーザに提供されることを保証することによって、システムは、一部のユーザが快く感じない可能性がある程度に狭くユーザをターゲティングする、マイクロターゲティングと呼ばれるユーザターゲティングの形態を防止する。たとえば、ほんのわずかなユーザにターゲティングされ、配信されるデジタルコンポーネントは、パーソナライズされ過ぎていると感じられる可能性があり、ユーザが、デジタルコンポーネントの特定性によって、選び抜かれたようにまたは不快に感じる可能性がある。プライバシーを守る選択プロセスは、ユーザが受け取るデジタルコンポーネントおよびデジタルコンポーネントの目標視聴者のサイズをユーザが快く感じるように、デジタルコンポーネントが十分に広い視聴者に配信されることを保証する。
消極条件の例は、コンテンツまたはデジタルコンポーネントがユーザに対して提示されることを減らすことまたはなくすことに関するユーザプリファレンスを含む。たとえば、ユーザは、概して、複数の異なるウェブサイトをナビゲートするときに、時間の短い期間内に複数の異なるウェブサイトにわたって同じユーザに同じサードパーティコンテンツを継続的に配信することが、ユーザが見たくなく、無視する可能性が高いコンテンツを配信するために使用される無駄なコンピューティングリソースを生じるように同じサードパーティコンテンツを継続的に示されないことを好む。特定のユーザが同じサードパーティコンテンツに晒される回数を制限する1つの方法は、同じユーザが同じサードパーティコンテンツに、時間の短い期間、たとえば、任意の連続する5分、10分、または別の適切な時間の期間内に指定された回数を超えて晒されることを防止する頻度制御技術を利用することである。
システムは、デジタルコンポーネントをミュートするかまたは時間のある期間の間デジタルコンポーネントが提示されることを防止するための情報をユーザから受け取ることによって、さらなるユーザ入力を可能にする。たとえば、ユーザは、ユーザが提示された特定のデジタルコンポーネントを5日間ミュートすることを選択し得る。一部の実装において、時間の期間は、要因の中でもとりわけ、コンテンツアイテムの種類および/またはユーザによって提供されるフィードバックの種類に基づいて、クライアントデバイス110、MPCクラスタ130、DSP150、デジタルコンテンツプロバイダ160、またはSSP170によって指定され得る。
この特定の例において、MPC1は、所与のデジタルコンポーネントに関して、{[conditionpositive,1,1], ... [conditionpositive,x,1]}および{[conditionnegative,1,1], ... [conditionnegative,y,1]}を保持し、これらは、各条件が満たされるかどうかを表すブール値の秘密シェアである。たとえば、第1の積極条件(conditionpositive,1)が満たされる場合、[conditionpositive,1,1]は、秘密ブール値1の第1の秘密シェアである。
同様に、MPC2は、{[conditionpositive,1,2], ... [conditionpositive,x,2]}および{[conditionnegative,1,2], ... [conditionnegative,y,2]}を保持し、これらも、各条件が満たされるかどうかを表すブール値の秘密シェアである。
キャッシュされたデジタルコンポーネントに関して、紛失通信拡張(OTe: Oblivious Transfer extension)と一緒にGMW(Goldreich-Micali-Wigderson)プロトコルまたは秘匿回路(garbled circuit)などのアルゴリズムを使用して、キャッシュされたデジタルコンポーネントが選択の候補であるかどうかを表す候補パラメータis_dc_a_candidateを計算するために、MPC1は、積極条件の集合の秘密シェアに[is_in_exposed_groupr,1]および[is_in_exposed_groups,1]を付加する。積極条件の組み合わされた集合は、{[conditionpositive,1,1], ... [conditionpositive,x,1], [is_in_exposed_groupr,1], [is_in_exposed_groups,1]}である。
同様に、MPC2は、積極条件の集合の秘密シェアに[is_in_exposed_groupr,2]および[is_in_exposed_groups,2]を付加する。積極条件の組み合わされた集合は、{[conditionpositive,1,2], ... [conditionpositive,x,2], [is_in_exposed_groupr,2], [is_in_exposed_groups,2]}である。
GMWプロトコルまたは秘匿回路は、デジタルコンポーネントに関する積極条件のすべてが真であるかどうか、およびデジタルコンポーネントに関する消極条件のうちの少なくとも1つが偽であるかどうかを判定するために使用される。そうである場合、デジタルコンポーネントは、選択プロセスの候補である。その他の実装においては、積極条件のすべてが真であるかどうか、および消極条件のうちの少なくとも1つが偽であるかどうかを判定するために、秘密シェアに対してMPC1およびMPC2によってブール演算が実行され得る。しかし、GMWプロトコルは、より効率的であり、MPC1とMPC2との間のより少ない往復計算を含む。OTeをともなうGMWプロトコルの完了後、MPC1は、デジタルコンポーネントに関する候補パラメータの第1の秘密シェア[is_dc_a_candidate1]を保持し、MPC2は、同じデジタルコンポーネントに関する候補パラメータの第2の秘密シェア[is_dc_a_candidate2]を保持する。MPC1およびMPC2は、それぞれのキャッシュされたデジタルコンポーネントと、選択のために利用可能なJITデジタルコンポーネントとに関する候補パラメータの秘密シェアを決定することができる。
このプロセスは、m∈[r, s]であるかどうかに基づいて、ユーザ/アプリケーション112を曝露群に割り振り、したがって、各実験識別子を曝露群の一部であるものとしてアクティブ化するべきかどうかの各判定のために2つの比較試験を使用することができる。秘密シェア比較プロセスは、計算コストが高く、MPCクラスタ130内のサーバMPC1とMPC2との間の複数の往復動作を必要とし得る。
一部の実装においては、特定の実験識別子をアクティブ化するべきかどうかを判定するためのプロトコルが、改善または最適化され得る。一例においては、m、r、s∈Zpおよびr≦sであるとして、m' = (m - r) mod pを定義することによって、m'≦(s - r)である場合に限ってm∈[r, s]であることが証明され得る。満たされるべき制約を定義する方程式のこの単純化において、m'≦(s - r)の評価は、上述のように必要とされる2つの比較試験の代わりに、1つの比較試験のみを必要とする。これは、MPC1とMPC2との間で消費される帯域幅の量を削減し、ユーザが実験群に属すかどうかを判定する際のレイテンシおよび計算コストを削減する。このプロセスは、デジタルコンポーネントが要求される時間と、要求に応じてデジタルコンポーネントが提供される時間との間にリアルタイムで実行されてよいので、レイテンシを削減することは、クライアントデバイス110におけるエラーを減らし、ユーザ体験を向上させる上で極めて重要である。
MPC1およびMPC2は、この改善を使用して秘密シェア比較試験アルゴリズムに従事することができる。比較完了後、MPC1は、[is_in_exposed_group1] = (([m1] - r) mod p)≦(s - r)を保持する。同様に、MPC2は、[is_in_exposed_group2] = (([m2] - r) mod p)≦(s - r)を保持する。すなわち、各MPCサーバは、各デジタルコンポーネントに関して、ユーザがデジタルコンポーネントの暴露群内にいるかどうかを表す暴露パラメータis_in_exposed_groupの秘密シェアを保持する。
したがって、MPC1によって保持される積極条件の組み合わされた集合は、{[conditionpositive,1,1], ... [conditionpositive,x,1], [is_in_exposed_group1]}である。したがって、MPC2によって保持される積極条件の組み合わされた集合は、{[conditionpositive,1,2], ... [conditionpositive,x,2], [is_in_exposed_group2]}である。
これらの条件を使用して、MPCクラスタ130は、次に、OTeを使用してGMWアルゴリズムの実行を進めることができる。
この改善は、MPCクラスタ130内のサーバ間で必要とされる往復動作の数を増やすことなく、必要とされる比較試験の数を半分に減らし、GMWプロトコルのために構築される真理値表の行の数を半分に減らす。
各デジタルコンポーネント要求に関して、各デジタルコンポーネント(およびその対応する選択基準)は、is_in_exposed_groupが真の場合にアクティブ化される実験識別子eidexperimentに関連付けられるか、またはis_in_hostback_groupが真の場合にアクティブ化されるeidcontrolに関連付けられる場合がある。これらのパラメータは、要求が生成されるユーザがデジタルコンポーネントの実験群に割り振られるべきかどうかに基づいて、デジタルコンポーネントごとに変わり得る。
図3および図4のステップ4で説明されたように、可変の数のeidを、アプリケーション112と、その後、集約レポートサーバ180とに返すために、システムは、ブルームフィルタを利用して帯域幅およびストレージコストを削減することができる。
たとえば、デジタルコンポーネント要求に関してアクティブ化されるeidの予想される数がNである場合、所望のFPRのために、MPCクラスタ130は、ブルームフィルタのハッシュ関数の最適なまたは目標の数Fおよびpeidあたりのビット数Bを計算することができる。
次に、MPC1およびMPC2は、、各要素の値が[0, number_of_cached_digital_components]内にある、サイズN×Bの計数ブルームフィルタRを作成することができる。ここで、R = reconstruct(R1, R2)であり、MPC1およびMPC2は、配列R1およびR2をそれぞれ作成することができる。両配列は、N×Bのサイズであり、ZpのN×B個の加算型秘密シェアを含む。各配列は、0に初期化される。
帯域幅の消費を最小化するために、MPC1およびMPC2は、以下の暗号プロトコルを実行して計数ブルームフィルタRを構築し、それから、Rを、各要素がZ2の加算型秘密シェアである通常のブルームフィルタに変換する。
eidexperimentに関して、ハッシュ関数{f1, ... fF}の各々について、fi(eidexperiment)∈[0, N×B - 1]が真となる。ハッシュ関数fi∈{f1, ... fF}の各々に関して、MPC1は、配列R1[fi(eidexperiment)]を[is_in_exposed_group1]だけインクリメントする。たとえば、MPC1は、演算R1[fi(eidexperiment)] += [is_in_exposed_group1]を実行する。
同様に、MPC2は、配列R2[fi(eidexperiment)]を[is_in_exposed_group2]だけインクリメントする。たとえば、MPC2は、演算R2[fi(eidexperiment)] += [is_in_exposed_group2]を実行する。
eidcontrolを同じブルームフィルタに挿入するために、ハッシュ関数fi∈{f1, ... fF}の各々に関して、MPC1は、配列R1[fi(eidcontrol)]を[is_in_holdback_group1]だけインクリメントする。たとえば、MPC1は、演算R1[fi(eidcontrol)] += [is_in_holdback_group1]を実行する。
同様に、MPC2は、配列R2[fi(eidcontrol)]を[is_in_holdback_group2]だけインクリメントする。たとえば、MPC2は、演算R2[fi(eidcontrol)] += [is_in_holdback_group2]を実行する。
さらに、MPC2は、あらかじめ擬似ランダム関数(PRF: pseudorandom function)を選択し、PRF: Z×Z→{0, 1}である。加えて、MPC2は、デジタルコンポーネント応答のためのナンスを選択する。ここで、R2は、MPC2の結果として得られるZ2のブルームフィルタを表し、すなわち、R2'[i] = PRF(nonce, i)である。一部の実装において、これらのステップは、MPC2ではなくMPC1によって実行される。
次に、MPC2はANDゲートの秘匿回路を構築して関数ceil(log2(number_of_cached_bids) + 1)を構築し、MPC1が、R1'[i]およびR2'[i]が秘密ブールメッセージ(secret Boolean message)R[i] > 0のZ2の2つの加算型秘密シェアであるような秘密シェアのMPC1の結果として得られる配列R1'[i]を計算することを可能にする。この秘匿回路の計算は、MPC1とMPC2との間で1往復の計算を必要とする。
ステップ4において、MPCクラスタ130は、デジタルコンポーネント応答をアプリケーション112に返す。応答は、上で決定されたmの値に応じて、実際の選択プロセスの当選した選択されたデジタルコンポーネントに関連付けられたeidcontrolか、反事実的選択プロセスの当選した選択されたデジタルコンポーネントに関連付けられたeidholdbackかのどちらかを含むか、またはどちらの実験識別子も含まない。
それから、MPC1およびMPC2は、デジタルコンポーネント応答の一部として、アプリケーション112に、R1'およびナンスをそれぞれ返す。MPC1がアプリケーション112から元のデジタルコンポーネント要求を受信し、MPC2がその結果をMPC1を介してブラウザに返す必要がある場合、MPC2は、MPC1がMPC2の結果を盗聴または改ざんすることを防止するために、その結果にデジタル署名し、それから、その結果を暗号化し、PublicKeyEncrypt(Sign(nonce, MPC2_private_key), browser_public_key)をMPC1を介してブラウザに返してよい。一部の実装においては、MPC1が、その結果を暗号化し、その結果にデジタル署名してもよい。
プロセス400のステップ5において、アプリケーション112は、暴露群かまたは抑制群かのどちらかに関するpeidおよび関連するメタデータをローカルストレージに蓄積する。たとえば、アプリケーション112は、実験識別子をそのキャッシュに蓄積する。アプリケーションは、一部の実験に関して暴露群に関連付けられ、その他の実験に関しては抑制群に関連付けられ得る。
プロセス400のステップ6において、レンダリングされたデジタルコンポーネントは、アプリケーション112と連携して、アプリケーション112にネイティブな集約測定APIなどの集約測定機能を通じてDSP150にレポートを送信する。レポートは、レポートに関連するpeidのリストを含み得る。たとえば、レポートは、前に構築されたブルームフィルタと、測定値の中でもとりわけ、デジタルコンポーネントが示される時間の量、ユーザの注意がデジタルコンポーネントに集中されるかどうか、その他のアプリケーションが実行されているかどうか、およびデジタルコンポーネントが見えているかどうかなどの、デジタルコンポーネントのレンダリングに関連する測定値とを含み得る。
プロセス400のステップ7において、閾値の数のレポートを蓄積した後、DSP150は、受信されたレポートを秘密シェアで集計レポートサーバ180にアップロードする。たとえば、DSP150は、DSP150がレポートの平文にアクセスすることができないように、多数の暗号化されたレポートを秘密シェアで集約レポートサーバ180に定期的にアップロードすることができる。DSP150は、閾値の数のレポートが蓄積されたかどうかを検出し、レポートをバッチ(すなわち、秘密シェア)レポートで集計レポートサーバ180にアップロードすることができる。
プロセス400のステップ8において、DSP150は、各peidに関連する指標を取得するために、集約レポートサーバ180に問い合わせる。たとえば、DSP150は、集約レポートサーバ180からの様々な分析、測定値、およびその他のパラメータの要求を与えることができる。
図5は、プライバシーを守る実験監視メカニズムを発行し、実施するための例示的なプロセス500を示す流れ図である。プロセス500の動作は、たとえば、アプリケーション112、MPCクラスタ130、DSP150、および/または集約レポートサーバ180によって実施され得る。プロセス500の動作は、非一時的である場合がある1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されることも可能であり、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス500の動作を実行させることが可能である。
プロセス500は、安全なマルチパーティ計算(MPC)システムの第1のサーバによって、ユーザデバイス上のアプリケーションから、デジタルコンテンツの要求を受信することから始まり、要求は、デバイスに関連するアプリケーションインスタンスまたはデバイス自体を特定するアプリケーションインスタンス識別子の第1の秘密シェアを含む(502)。たとえば、MPCクラスタ130は、図2のステップAおよび図3~4のステップ1を参照して上で説明されたように、デジタルコンテンツの要求を受信することができる。アプリケーションインスタンス識別子は、特定のデバイス上で実行されているアプリケーションのインスタンス(たとえば、Example News Applicationのセッション)を特定するか、またはデバイス自体を特定する。
プロセス500は、要求の受信に応じて、安全なMPCシステムの第1のサーバによって、安全なMPCシステムの第2のサーバと協力して、デジタルコンポーネントの集合の中から第1の当選デジタルコンポーネントを選択するためのプライバシーを守る選択プロセスを行うことで継続し、各デジタルコンポーネントは、対応する(i)一意実験識別子および(ii)一意対照識別子を有する(504)。デジタルコンポーネントの集合は、要求に含まれる検索キーと一致するキャッシュ検索キーを有するキャッシュされたデジタルコンポーネントを含み得る。つまり、デジタルコンポーネントの集合は、要求の検索キーによって定義されたコンテキスト信号がデジタルコンポーネントのキャッシュ検索キーによって定義されたコンテキスト信号と一致するキャッシュされたデジタルコンポーネントであることが可能である。第1のMPCシステムは、要求の検索キーを、キャッシュされたデジタルコンポーネントのキャッシュ検索キーと比較することができる。
行うことは、デジタルコンポーネントの集合の各デジタルコンポーネントに関して、第2のサーバと協力して、1組の適格性規則に基づいて、デジタルコンポーネントがプライバシーを守る選択プロセスにおける選択の適格な候補であるかどうかを表す候補パラメータの第1の秘密シェアを決定すること(506)を含む。
たとえば、選択プロセスは、1組の適格性規則に基づいてデジタルコンポーネントが選択の候補であるかどうかを判定することを含む。この候補決定プロセスの結果、MPC1およびMPC2の各々は、デジタルコンポーネントの集合の各デジタルコンポーネントに関して、デジタルコンポーネントが選択の候補であるかどうかを示す、各デジタルコンポーネントに関する候補パラメータis_dc_a_candidateのシェアを保持している。このようにして、MPCクラスタ130のコンピュータは、候補の実際の適格性または候補のリストを平文で保持しない。一部の実装において、2つのサーバの各々は、(プライバシーに影響しない)候補を平文でキャッシュし得る。
一部の実装においては、キャッシュされた候補の一部分が、機密情報である場合があり、したがって、2つのサーバのどちらも、候補を平文で保持することができない。そのような場合、キャッシュされたデジタルコンポーネントの機密情報は、秘密シェアで保持され得る。
図2に関連して上で説明されたプロセス200と同様に、各条件付きデジタルコンポーネント(たとえば、少なくとも1つの条件を有するデジタルコンポーネント)の各条件に関して、各計算システムMPC1およびMPC2は、デジタルコンポーネントの各条件に関するパラメータの対応する秘密シェアを記憶することができる。このようにして、少なくとも1つのMPCコンピューティングシステムが正直である限り、コンピューティングシステムMPC1もMPC2も、平文のパラメータの値を知らない。各デジタルコンポーネントは、条件のうちの0個以上を条件とし得る。所与のデジタルコンポーネント選択プロセスに関して、一部のデジタルコンポーネントは、その他のデジタルコンポーネントと異なる条件および/または異なる量の条件を持ち得る。
いくつかの例示的な条件が上で与えられているが、その他の条件も使用され得る。概して、コンピューティングシステムMPC1およびMPC2は、安全なMPCプロセスを使用して、条件パラメータの秘密シェアを計算することができる。条件パラメータを決定するための基準および手法は、変わり得る。一部の実装において、条件パラメータの秘密シェアは、たとえば、コンピューティングシステムMPC1およびMPC2が条件パラメータを計算しないように、別のコンピューティングシステムから受信され得る。
コンピューティングシステムMPC1およびMPC2は、条件パラメータの秘密シェアを使用して、条件付きデジタルコンポーネントがデジタルコンポーネント選択プロセスの候補であるかどうかを判定することができる。コンピューティングシステムMPC1およびMPC2は、条件付きデジタルコンポーネントに関する条件パラメータの秘密シェアを使用して、各条件付きデジタルコンポーネントiに関する候補パラメータis_dc_a_candidateiの秘密シェアを計算することができる。概して、条件付きデジタルコンポーネントが上述の条件の各々を条件とする場合、デジタルコンポーネントiに関する候補パラメータは、たとえば、図4のプロセス400のステップ2および3に関連して上で説明されたように、積極条件のすべてが真、たとえば、一部の実装においては1、またはその他の実装においては非ゼロであるかどうか、および少なくとも1の消極条件が偽、たとえば、ゼロであるかどうかを判定することによって計算され得る。
各条件パラメータの値が秘密シェア内にあるので、コンピューティングシステムMPC1およびMPC2は、往復リモートプロシジャコール(RPC)を使用して安全なMPCプロセスで協力して、デジタルコンポーネントiに関する候補パラメータの対応する秘密シェア[is_dc_a_candidatei,1]および[is_dc_a_candidatei,2]を、条件パラメータの秘密シェアを使用して決定することができる。デジタルコンポーネントiに関する候補パラメータの秘密シェア[is_dc_a_candidatei,1]および[is_dc_a_candidatei,2]を決定するために、論理AND演算を決定するための任意の適切な秘密分散アルゴリズムが使用され得る。たとえば、上述のように、GMWプロトコルまたは秘匿回路が、使用され得る。コンピューティングシステムMPC1およびMPC2は、それらの条件の条件パラメータの秘密シェアのみを使用して、候補パラメータの秘密シェアを決定することができる。この安全なMPCプロセスの終わりとして、コンピューティングシステムMPC1は、第iの条件付きデジタルコンポーネントに関する候補パラメータの第1の秘密シェア[is_dc_a_candidatei,1]を保持し、コンピューティングシステムMPC2は、第iの条件付きデジタルコンポーネントに関する候補パラメータの第2の秘密シェア[is_dc_a_candidatei,2]を保持する。
一部の実装において、コンピューティングシステムMPC1およびMPC2は、秘匿回路プロトコルを使用して、各デジタルコンポーネントに関する条件を評価する。この例においては、コンピューティングシステムMPC1またはMPC2の一方が、秘匿回路を構築することができる。この例に関しては、コンピューティングシステムMPC1が秘匿回路を構築すると仮定する。コンピューティングシステムMPC1は、自身の秘密シェアを知っており、デジタルコンポーネントに関する候補パラメータが真または1になるために、コンピューティングシステムMPC2の秘密シェアが保持しなければならないただ1つの可能なビットパターンが存在することも知っている。
コンピューティングシステムMPC1は、各デジタルコンポーネントに関連付けられた、平文の値であり得る選択基準に基づいて、デジタルコンポーネントの順序を決定する。同様に、コンピューティングシステムMPC2は、選択基準に基づいてデジタルコンポーネントの順序を決定する。選択基準は、選択値とも呼ばれ得る。これらの2つの順序は、順序付けプロセスへの入力が2つのコンピューティングシステムMPC1およびMPC2において同じであるので、まったく同じになるはずである。各コンピューティングシステムMPC1およびMPC2は、デジタルコンポーネントの順序を決定することができる。各順序は、以前に候補適格性を評価された候補デジタルコンポーネントと、その他のデジタルコンポーネントとを含み得る。順序は、最高の選択値を有するデジタルコンポーネントから最低の選択値を有するデジタルコンポーネントに向かう順序であることが可能である。一部の実装において、順序のために使用される選択値は、たとえば、DSP150および/またはSSP170との任意の共有の後に、選択されたデジタルコンポーネントが表示されるリソースのパブリッシャ140に提供される値に、任意の適用可能なブースト(boost)を足した値であることが可能である。
選択値は平文であるとき、コンピューティングシステムMPC1およびMPC2は、デジタルコンポーネントの順序を決定するためにいかなる往復計算も実行しなくてよい。その代わりに、各コンピューティングシステムMPC1およびMPC2は、独立して選択値を順序付けることができる。選択値が各コンピューティングシステムMPC1およびMPC2に秘密シェアとして記憶され、各コンピューティングシステムMPC1およびMPC2が各選択値のそれぞれの秘密シェアを有する場合、コンピューティングシステムMPC1およびMPC2は、選択値を順序付けるために往復計算を使用して安全なMPCプロセスを実行することができる。2つ以上の選択値が同じ値である場合、コンピューティングシステムMPC1およびMPC2は、これらの選択値に対応するデジタルコンポーネントに関するその他のメタデータを使用して決定的に(deterministically)均衡を破ることができる。
コンピューティングシステムMPC1およびMPC2は、各候補デジタルコンポーネントに関する累積値の秘密シェアを決定する。概念的には、所与のデジタルコンポーネントに関する累積値は、たとえ所与のデジタルコンポーネントが候補であっても所与のデジタルコンポーネントを除いて、順序の先頭から所与のデジタルコンポーネントに関する選択値までの候補デジタルコンポーネントの総数を表す。すなわち、累積値は、所与のデジタルコンポーネントよりも選択に適格である候補デジタルコンポーネントの数を表す。この概念が、Table 1(表1)に示される。
一部の実装において、所与のデジタルコンポーネントに関する累積値は、所与のデジタルコンポーネントが候補である場合に所与のデジタルコンポーネントを含む、順序の先頭から所与のデジタルコンポーネントまでの候補デジタルコンポーネントの総数を表す。この例において、第4列は、累積値が0ではなく1に等しいかどうかを表す。簡潔にするために、残りの検討は、所与のデジタルコンポーネントに関する累積値が、たとえ所与のデジタルコンポーネントが候補であっても所与のデジタルコンポーネントを除いて、順序の先頭から所与のデジタルコンポーネントまでの候補デジタルコンポーネントの総数を表す第1の例についてのものである。
概念的には、Table 1(表1)において、累積値(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は、2番目に高い選択値に関する候補パラメータis_dc_a_candidateが値1を有することに基づいて値1にインクリメントされる。3番目に高いデジタルコンポーネントに関する候補パラメータis_dc_a_candidateが0であるので、4番目のデジタルコンポーネントに関する累積値accはインクリメントされず、3番目に高いデジタルコンポーネントと同様に値0を有する。
Table 1(表1)を使用すると、コンピューティングシステムMPC1およびMPC2は、総合的候補パラメータis_dc_a_candidateが値1を有し、Table 1(表1)の第4列に示されるように累積値accが値0を有する選択値に対応するデジタルコンポーネントを、クライアントデバイス110に配信するために選択する。候補パラメータ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 1(表1)を参照して上で説明されたように、最高から最低まで順にデジタルコンポーネントのすべてを調べ、その過程でデジタルコンポーネントに関する候補パラメータis_dc_a_candidateを合計することによって、累積値accの第1のシェア[acci,1]を決定することができる。同様に、コンピューティングシステムMPC2は、各デジタルコンポーネントiに関して、最高から最低まで順にデジタルコンポーネントのすべてを調べ、その過程でデジタルコンポーネントに関する候補パラメータis_dc_a_candidateを合計することによって、累積値accの第2のシェア[acci,2]を決定することができる。
コンピューティングシステムMPC1およびMPC2は、各デジタルコンポーネントに関して、累積値が指定された値を有するかどうかを示す結果の秘密シェアを決定する。指定された値は、Table 1(表1)の第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の秘密シェアを決定する。コンピューティングシステムMPC1およびMPC2は、各デジタルコンポーネントiに関して、累積値acci == 0の秘密シェアおよび各デジタルコンポーネントiに関する候補パラメータis_dc_a_candidateiの秘密シェアに基づいて、当選パラメータis_dc_the_winneriを決定することができる。各デジタルコンポーネントiに関する当選パラメータis_dc_the_winneriは、デジタルコンポーネントiが選択プロセスの当選デジタルコンポーネントであるかどうか、たとえば、デジタルコンポーネントiがデジタルコンポーネント要求に応じたクライアントデバイス110への配信のために選択されるかどうかを示すブール値であることが可能である。
一部の実装において、コンピューティングシステム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の一方の秘密シェアを有する。同様に、コンピューティングシステム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に等しい。一部の実装において、コンピューティングシステムMPC1およびMPC2は、各選択値に関して、秘密シェアの観点で当選パラメータis_dc_the_winneri == (is_dc_a_candidatei AND (acci == 0))を計算するために、秘密シェア論理演算プロトコル(たとえば、GMWまたは秘匿回路)を実行することができる。
プロセス500は継続し、行うことは、デジタルコンポーネントの集合の各デジタルコンポーネントに関して、第2のサーバと協力して、アプリケーション識別子の第1の秘密シェアおよび実験値のそれぞれの第1の秘密シェアに基づいて、アプリケーションがアプリケーションに関する実験群内にあるかどうかを表す実験パラメータの秘密シェアを決定すること(508)をさらに含む。たとえば、MPCクラスタ130のMPC1は、図2~図4に関連して上で説明されたように、MPC2と協力して、アプリケーション識別子の第1の秘密シェア、および実験値の秘密シェアに基づいて、アプリケーション112がデジタルコンポーネントに関する実験群の一部であるかどうかを示す、eidholdbackまたはeidexposedなどの実験パラメータの秘密シェアを決定することができる。
プロセス500は、各デジタルコンポーネントに関する候補パラメータの第1の秘密シェア、および各デジタルコンポーネントに関する選択値に基づいて、第1の当選デジタルコンポーネントを表す選択結果の第1の秘密シェアを生成することで継続する(510)。たとえば、MPCクラスタ130は、各デジタルコンポーネントに関する候補パラメータの第1の秘密シェアと、各デジタルコンポーネントに関する選択基準とに基づいて、第1の当選デジタルコンポーネントを表す選択結果の第1の秘密シェアを生成することができる。選択結果は、第1の当選デジタルコンポーネントを特定するか、またはデジタルコンポーネントを含み得る。
プロセス500は、デジタルコンテンツの要求に対する応答を生成することで継続し、応答は、選択結果の第1の秘密シェア、および第1の当選デジタルコンポーネントを含む1つまたは複数のデジタルコンポーネントの各々に関して、アプリケーションがデジタルコンポーネントに関する実験群内にあるのかまたはデジタルコンポーネントに関する対照群内にあるのかを表すデータを含む(512)。たとえば、MPCクラスタ130は、図2~図4およびプロセス500のステップ502に関連して上で説明されたように、デジタルコンポーネントの要求に対する応答を生成する。応答は、アプリケーション112がデジタルコンポーネントに関する実験群内にあるのかまたはデジタルコンポーネントに関する対照群内にあるのかを表す、eidholdbackまたはeidexposedなどのデータを含む。
プロセス500は、安全なMPCシステムの第1のサーバによって、ユーザデバイス上のアプリケーションに、デジタルコンテンツの要求に対する応答を送信することで継続する(514)。たとえば、MPCクラスタ130のMPC1は、デジタルコンポーネントの要求に対する応答をアプリケーション112に送信する。一部の実装において、MPC1は、デジタルコンポーネントの要求に対する応答として、自身の第1の秘密シェアと、MPC2からの第2の暗号化された秘密シェアとをアプリケーション112に送信し得る。
上述のように、MPCクラスタ130は、デジタルコンポーネントが選択プロセスの候補であるかどうかを判定するため、たとえば、デジタルコンポーネントに関する候補パラメータの秘密シェアを決定するために使用される安全なMPCプロセスのために秘匿回路を使用することができる。デジタルコンポーネントごとに多くの条件、場合によっては50を超える条件が存在し得るので、各デジタルコンポーネントに関して秘匿回路内に多くのゲートが存在する。ゲート数を減らすことは、安全なMPCプロトコルを実行するための帯域幅のコストを削減し、デジタルコンポーネントを選択する際のレイテンシを大幅に削減する。
たとえば、同じデジタルコンポーネントに関して、またはデジタルコンポーネントのグループに関して、入力または中間ブール変数の同じペア間の多くの反復的な計算および論理AND計算が存在する。部分式の重複した計算を避け、したがって、AND演算の数を減らすために、貪欲法が使用され得る。
上述のプロセス500において、候補パラメータis_dc_a_candidateは、ZP内にあり、0かまたは1かのどちらかの値を有すると仮定される。MPCクラスタ130は、最高から最低まで、最高の選択値を有するデジタルコンポーネント(たとえば、パブリッシャに帰せられる部分)からすべてのキャッシュされたデジタルコンポーネントに対して反復する。それぞれのキャッシュされたデジタルコンポーネントiに関して、MPCクラスタ130は、累積値acciを計算し、それから、ZPにおいてacci == 0を計算する。結果は、Z2に逆変換される。Z2からZpへのおよびその逆の変換は、プロトコルの複雑さを増加させる。秘匿回路を使用するZpにおける等価試験acci == 0は、log2(p)個のゲートを要することがあり得、これは、多大な性能および帯域幅のコストである。
MPCクラスタ130は、候補パラメータis_dc_a_candidateiをZ2に保ち、ずっと低い性能および帯域幅のコストで、ブール回路によってZ2で累積値acci、それからacci == 0を計算することができる。これを行うために、累積値acciは、2つの可能な値、すなわち、いずれの候補デジタルコンポーネントも現在のデジタルコンポーネントiに関する現在の選択値よりも高い選択値を持たない場合の0、または少なくとも1つの候補デジタルコンポーネントが現在のデジタルコンポーネントに関する現在の選択値よりも高い選択値を有する場合の1に制限される。図5のプロセス500において、累積値は、各候補デジタルコンポーネントに関してインクリメントされたとき、1より大きくなる可能性があった。
累積値accの更新されたセマンティクス(semantics)によって、MPCクラスタ130は、以下のように、最高の選択値から最低の選択値まで、すべてのキャッシュされたデジタルコンポーネントに対して反復しながら、当選パラメータis_dc_the_winneriに関する累積値を計算することができる。最高の選択値を有するデジタルコンポーネントに関する累積値accは、常に0である。計算は、必要とされない。
2番目に高い選択値を有するデジタルコンポーネントに関する累積値accは、最高の選択値を有するデジタルコンポーネントの候補パラメータis_dc_a_candidateの値と常に等しい。これに関しても計算は必要とされない。
MPCクラスタ130が、n番目に高い選択値を有するデジタルコンポーネントに関する累積値accを既に計算したと仮定する。(N+1)番目に高い選択値を有するデジタルコンポーネントに関する累積値accは、accn+1 = accn OR is_dc_a_candidatenとして計算され得る。MPCクラスタ130は、当選パラメータis_dc_a_winnern+1 = is_dc_a_candidaten+1 AND NOT accn+1をさらに計算することができる。
MPCクラスタ130は、それぞれのキャッシュされたデジタルコンポーネントに関して4つの配線、たとえば、2つの入力線(accnおよびis_dc_a_candidaten)ならびに2つの出力線(accn+1およびis_dc_a_winnern+1)を有する2つのゲートを持つ可能性がある。これらの拡張により、MPCクラスタ130は、キャッシュされたデジタルコンポーネント1個あたり数十個のゲートではなく2つのゲートだけ必要とする。この暗号化プロセスは、ステップ506などのプロセス500の上記ステップのうちの1つの一部として実行され得る。たとえば、暗号学的評価は、積極条件のすべてが真でなければならず、少なくとも1つの消極条件が偽である、ステップ506に関連して上で説明された候補適格性の判定の一部として実行され得る。一部の実装においては、特定の実験群のメンバーシップなどの条件が真でなければならない。
図6は、上述の動作を実行するために使用され得る例示的なコンピュータシステム600のブロック図である。システム600は、プロセッサ610、メモリ620、ストレージデバイス630、および入力/出力デバイス640を含む。コンポーネント610、620、630、および640の各々は、たとえば、システムバス650を使用して相互に接続され得る。プロセッサ610は、システム600内で実行するための命令を処理することができる。一部の実装において、プロセッサ610は、シングルスレッドプロセッサである。別の実装において、プロセッサ610は、マルチスレッドプロセッサである。プロセッサ610は、メモリ620またはストレージデバイス630に記憶された命令を処理することができる。
メモリ620は、システム600内で情報を記憶する。1つの実装において、メモリ620は、コンピュータ可読媒体である。一部の実装において、メモリ620は、揮発性メモリユニットである。別の実装において、メモリ620は、不揮発性メモリユニットである。
ストレージデバイス630は、システム600に大容量ストレージを提供することができる。一部の実装において、ストレージデバイス630は、コンピュータ可読媒体である。様々な異なる実装において、ストレージデバイス630は、たとえば、ハードディスクデバイス、光ディスクデバイス、複数のコンピューティングデバイスによってネットワークを介して共有されるストレージデバイス(たとえば、クラウドストレージデバイス)、または何らかのその他の大容量ストレージデバイスを含み得る。
入力/出力デバイス640は、システム600に入力/出力動作を提供する。一部の実装において、入力/出力デバイス640は、ネットワークインターフェースデバイス、たとえば、イーサネットカード、シリアル通信デバイス、たとえば、RS-232ポート、および/またはワイヤレスインターフェースデバイス、たとえば、802.11カードのうちの1つまたは複数を含み得る。別の実装において、入力/出力デバイスは、入力データを受信し、外部デバイス660、たとえば、キーボード、プリンタ、およびディスプレイデバイスに出力データを送信するように構成されたドライバデバイスを含み得る。しかし、モバイルコンピューティングデバイス、モバイル通信デバイス、セットトップボックステレビクライアントデバイスなどのその他の実装も、使用され得る。
例示的な処理システムが図6に示されたが、本明細書に記載の主題および機能的動作の実装は、本明細書で開示された構造およびそれらの構造的均等物を含む、その他の種類のデジタル電子回路、またはコンピュータソフトウェア、ファームウェア、もしくはハードウェア、またはそれらのうちの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の秘密シェアを含む、ステップ、要求の受信に応じて、安全なMPCシステムの第1のサーバによって、安全なMPCシステムの第2のサーバと協力して、デジタルコンポーネントの集合の中から第1の当選デジタルコンポーネントを選択するためのプライバシーを守る選択プロセスを行うステップであって、各デジタルコンポーネントが、対応する(i)一意実験識別子および(ii)一意対照識別子を有し、行うステップが、デジタルコンポーネントの集合の各デジタルコンポーネントに関して、第2のサーバと協力して、1組の適格性規則に基づいて、デジタルコンポーネントがプライバシーを守る選択プロセスにおける選択の候補であるかどうかを表す候補パラメータの第1の秘密シェアを決定すること、第2のサーバと協力して、アプリケーション識別子の第1の秘密シェアおよび候補パラメータ値のそれぞれの第1の秘密シェアに基づいて、アプリケーションがデジタルコンポーネントに関する実験群内にあるかどうかを表す実験パラメータの秘密シェアを決定すること、各デジタルコンポーネントに関する候補パラメータの第1の秘密シェア、および各デジタルコンポーネントに関する選択値に基づいて、第1の選択されたデジタルコンポーネントを表す選択結果の第1の秘密シェアを生成すること、ならびにデジタルコンテンツの要求に対する応答を生成することであって、応答が、選択結果の第1の秘密シェア、および第1の選択されたデジタルコンポーネントを含む1つまたは複数のデジタルコンポーネントの各々に関して、アプリケーションがデジタルコンポーネントに関する実験群内にあるのかまたはデジタルコンポーネントに関する対照群内にあるのかを表すデータを含む、生成することを含む、ステップ、安全なMPCシステムの第1のサーバによって、ユーザデバイス上のアプリケーションに、デジタルコンテンツの要求に対する応答を送信するステップを含む、方法。
態様2. アプリケーションがデジタルコンポーネントに関する実験群内にあるのかまたはデジタルコンポーネントに関する対照群内にあるのかを表すデータが、ブルームフィルタによって表される態様1の方法。
態様3. 第1の当選デジタルコンポーネントを選択するためのプライバシーを守る選択プロセスを行うステップが、
デジタルコンポーネントの集合の各デジタルコンポーネントに関して、
ブルームフィルタに、対応する(i)一意実験識別子および(ii)一意対照識別子を追加することを含む態様2の方法。
態様4. アプリケーションが第1の当選デジタルコンポーネントに関して対照群または実験群の一部であるかどうかを判定することが、
デジタルコンポーネントに関連する実験の集合の各実験に関して、アプリケーションが第1の当選デジタルコンポーネントに関して対照群または実験群の一部であるかどうかを判定することを含む態様1から3のいずれか1つの方法。
態様5. 1組の適格性規則が、2つ以上の適格性規則を含み、
第1の適格性規則の1つまたは複数のパラメータが、特定のサイズのいくつかの相互に直交するラテン方格に基づく実験計画に基づいて決定され、
第1の適格性規則が、1つまたは複数のパラメータの値の第1の範囲を指定する態様1から4のいずれか1つの方法。
態様6. 1つまたは複数のパラメータの値の第2の範囲を指定するために、実験計画に基づいて、第1の適格性規則の1つまたは複数のパラメータを更新するステップと、
安全なMPCシステムの第1のサーバによって、安全なMPCシステムの第2のサーバと協力して、更新された第1の適格性規則を含む1組の適格性規則を適用することによって、選択基準の集合の中から第2の当選選択基準を選択するための反事実的選択プロセスを行うステップとをさらに含む態様5の方法。
態様7. 安全なMPCシステムの第1のサーバによって、ユーザデバイス上のアプリケーションに、デジタルコンテンツの要求に対する応答を送信するステップが、
安全なMPCシステムの第1のサーバによって、安全なMPCシステムの第2のサーバから、デジタルコンテンツの要求に対する応答の暗号化された秘密シェアを受信することと、
安全なMPCシステムの第1のサーバによって、デジタルコンテンツの要求に対する応答の第2の秘密シェアを暗号化して、応答の暗号化された第2の秘密シェアを生成することと、
安全なMPCシステムの第1のサーバによって、ユーザデバイス上のアプリケーションに、応答の暗号化された秘密シェアおよび応答の暗号化された第2の秘密シェアを送信することとを含む態様1から6のいずれか1つの方法。
態様8. 1組の適格性規則が、1つまたは複数の適格性規則を含み、
1組の適格性規則が、少なくとも1つの積極条件および少なくとも1つの消極条件を含み、
選択基準の集合が、安全なMPCシステムに記憶される態様1から7のいずれか1つの方法。
態様9. デジタルコンテンツの要求に対する応答に、選択基準に関連する一意実験識別子を付けることが、応答に含まれる一意識別子のリストに一意実験識別子を追加することを含み、
デジタルコンテンツの要求に対する応答に、選択基準に関連する一意対照識別子を付けることが、一意識別子のリストに一意対照識別子を追加することを含み、
一意識別子のリストが、ブルームフィルタを使用して表される態様1から8のいずれか1つの方法。
態様10. アプリケーションによって、選択されたデジタルコンポーネントに関連するデマンドサイドプラットフォームに、一意識別子のリストを含む第1のレポートを送信するステップと、
選択されたデジタルコンポーネントに関連するデマンドサイドプラットフォームによって、集約レポートサーバに、第1のレポートを含む1つまたは複数のレポートのバッチをアップロードするステップとをさらに含む態様9の方法。
態様11. 安全なマルチパーティ計算システムの第1のサーバと、
安全なマルチパーティ計算システムの第2のサーバとを含み、
態様1から10のいずれか1つの方法を実行するように構成されたシステム。