様々な図面における同様の参照番号および名称は、同様の要素を示す。
概して、本明細書は、コンテンツ選択および配信において完全性を改善するとともに情報のセキュリティを保護するためのシステムおよび技法を説明する。不正な共謀がない場合に、いずれかのMPCサーバが平文でのユーザ情報にアクセスできなくて、サーバコンピュータのMPCクラスタは、セキュアMPCプロセスを実行してユーザ情報に基づいてデジタルコンポーネントを選択することができる。ネットワークを介して送信中の情報のデータサイズを小さくするために、また送信中に情報をセキュアに保つために、確率的なデータ構造を使用してユーザ情報がMPCクラスタへ送られ得る。
図1は、MPCクラスタがクライアントデバイス110への配信用のデジタルコンポーネントを選択するためにセキュアMPCプロセスを実行する環境100のブロック図である。例示的な環境100は、ローカルエリアネットワーク(LAN)、ワイドエリアネットワーク(WAN)、インターネット、モバイルネットワーク、またはそれらの組合せなどの、データ通信ネットワーク105を含む。ネットワーク105は、クライアントデバイス110、セキュアMPCクラスタ130、発行者140、ウェブサイト142、コンテンツプラットフォーム、たとえば、供給側プラットフォーム(SSP:supply-side platform)170および需要側プラットフォームDSP(demand-side platform)(150)を接続する。例示的な環境100は、多くの異なるクライアントデバイス110、セキュアMPCクラスタ130、発行者140、ウェブサイト142、DSP150、およびSSP170を含んでよい。
クライアントデバイス110は、ネットワーク105を介して通信することが可能な電子デバイスである。例示的なクライアントデバイス110は、パーソナルコンピュータ、モバイル通信デバイス、たとえば、スマートフォン、およびネットワーク105を介してデータを送ることおよび受信することができる他のデバイスを含む。クライアントデバイスはまた、マイクロフォンを通じてオーディオ入力を受け入れ、かつスピーカーを通じてオーディオ出力を出力する、デジタルアシスタントデバイスを含むことができる。デジタルアシスタントが、オーディオ入力を受け入れるためにマイクロフォンをアクティブ化する「ホットワード」または「ホットフレーズ」を検出すると、デジタルアシスタントは、(たとえば、オーディオ入力を受け入れる準備ができている)聴取モードに入ることができる。デジタルアシスタントデバイスはまた、画像をキャプチャするとともに情報を視覚的に提示するためのカメラおよび/またはディスプレイを含むことができる。デジタルアシスタントは、ウェアラブルデバイス(たとえば、時計または眼鏡)、スマートフォン、スピーカーデバイス、タブレットデバイス、または別のハードウェアデバイスを含む、異なる形態のハードウェアデバイスの中に実装され得る。クライアントデバイスはまた、デジタルメディアデバイス、たとえば、テレビ、ゲーム機、または仮想現実システムにビデオをストリーミングするために、テレビまたは他のディスプレイにプラグインするストリーミングデバイスを含むことができる。
クライアントデバイス110は、通常、ネットワーク105を介してデータを送ることおよび受信することを容易にするために、ウェブブラウザおよび/またはネイティブアプリケーションなどのアプリケーション112を含む。ネイティブアプリケーションは、特定のプラットフォームまたは特定のデバイス(たとえば、特定のオペレーティングシステムを有するモバイルデバイス)のために開発されたアプリケーションである。いくつかの実装形態では、アプリケーション112は、オペレーティングシステムなどのプログラムであり得る。発行者140は、ネイティブアプリケーションを開発することができ、ネイティブアプリケーションをクライアントデバイス110に提供すること、たとえば、ダウンロードのために利用可能にすることができる。ウェブブラウザは、たとえば、クライアントデバイス110のユーザが、ウェブブラウザのアドレスバーの中にリソース145に対するリソースアドレスを入力すること、またはリソースアドレスを参照するリンクを選択することに応答して、発行者140のウェブサイト142をホストするウェブサーバにリソース145を要求することができる。同様に、ネイティブアプリケーションは、発行者のリモートサーバにアプリケーションコンテンツを要求することができる。
いくつかのリソース、アプリケーションページ、または他のアプリケーションコンテンツは、リソース145またはアプリケーションページとともにデジタルコンポーネントを提示するためのデジタルコンポーネントスロットを含むことができる。本明細書全体にわたって使用する「デジタルコンポーネント」という句は、デジタルコンテンツまたはデジタル情報の個別の単位(たとえば、ビデオクリップ、オーディオクリップ、マルチメディアクリップ、画像、テキスト、またはコンテンツの別の単位)を指す。デジタルコンポーネントは、単一のファイルとして、またはファイルの集合として、物理メモリデバイスの中に電子的に記憶され得、デジタルコンポーネントは、ビデオファイル、オーディオファイル、マルチメディアファイル、画像ファイル、またはテキストファイルの形態をとることができ、広告が、あるタイプのデジタルコンポーネントであるように、広告情報を含むことができる。たとえば、デジタルコンポーネントは、アプリケーション112によって提示されるウェブページまたは他のリソースのコンテンツを補足することが意図されるコンテンツであってよい。より詳細には、デジタルコンポーネントは、リソースコンテンツに関連するデジタルコンテンツを含んでよい(たとえば、デジタルコンポーネントは、ウェブページコンテンツと同じトピック、または関連するトピックに関連してよい)。デジタルコンポーネントの供給は、ウェブページまたはアプリケーションコンテンツをそのように補足することができ、概して、強化することができる。
アプリケーション112が、1つまたは複数のデジタルコンポーネントスロットを含むリソース(またはアプリケーションコンテンツ)をロードするとき、アプリケーション112は、スロットごとにデジタルコンポーネントを要求することができる。いくつかの実装形態では、デジタルコンポーネントスロットは、アプリケーション112に、クライアントデバイス110のユーザへの提示のためにデジタルコンポーネントを選択しそのデジタルコンポーネントをアプリケーション112に提供するデジタルコンポーネント配信システムにデジタルコンポーネントを要求させる、コード(たとえば、スクリプト)を含むことができる。以下で説明するように、アプリケーション112は、MPCクラスタ130および/または1つもしくは複数のSSP170にデジタルコンポーネントを要求することができる。
いくつかの発行者140は、SSP170を使用して、そのリソースおよび/またはアプリケーションのデジタルコンポーネントスロットのためのデジタルコンポーネントを取得するプロセスを管理する。SSP170は、リソースおよび/またはアプリケーションのためのデジタルコンポーネントを取得するプロセスを自動化するハードウェアおよび/またはソフトウェアで実装された技術プラットフォームである。各発行者140は、対応するSSP170または複数のSSP170を有することができる。いくつかの発行者140が、同じSSP170を使用してよい。
デジタルコンポーネント提供者160は、発行者のリソースおよびアプリケーションのデジタルコンポーネントスロットの中で提示されるデジタルコンポーネントを作成(または別のやり方で発行)することができる。デジタルコンポーネント提供者160は、DSP150を使用して、デジタルコンポーネントスロットの中で提示するために、そのデジタルコンポーネントの供給を管理することができる。DSP150は、リソースおよび/またはアプリケーションを伴う提示用のデジタルコンポーネントを配信するプロセスを自動化するハードウェアおよび/またはソフトウェアで実装された技術プラットフォームである。DSP150は、デジタルコンポーネント提供者160に代わって複数の供給側プラットフォームSSPと相互作用して、複数の異なる発行者140のリソースおよび/またはアプリケーションを伴う提示用のデジタルコンポーネントを提供することができる。概して、DSP150は、デジタルコンポーネントに対する要求を(たとえば、SSPから)受信することができ、1つまたは複数のデジタルコンポーネント提供者によって作成された1つまたは複数のデジタルコンポーネントに対する選択値を要求に基づいて生成(または選択)することができ、デジタルコンポーネント(たとえば、デジタルコンポーネント自体)および選択パラメータに関連するデータをSSPに提供することができる。選択値は、デジタルコンポーネント提供者160が、デジタルコンポーネントを伴う提示またはユーザ対話のために提供する意思がある、量を示すことができる。SSPは、次いで、クライアントデバイス110における提示用のデジタルコンポーネントを選択することができ、クライアントデバイス110にデジタルコンポーネントを提示させるデータをクライアントデバイス110に提供することができる。
場合によっては、ユーザによって以前に訪問および/もしくは対話されたウェブページ、アプリケーションページ、または他の電子リソースに関連するデジタルコンポーネントを受信することが、ユーザにとって有益である。そのようなデジタルコンポーネントをユーザに配信するために、ユーザが特定のリソースを訪問するかまたはリソースにおいて特定のアクションを実行する(たとえば、ウェブページ上に提示された特定のアイテムと対話するか、またはアイテムを仮想カートに追加する)とき、ユーザは、ユーザグループ、たとえば、ユーザ関心グループ、類似のユーザの集団、または類似のユーザデータを伴う他のグループタイプに割り当てられ得る。ユーザグループは、デジタルコンポーネント提供者160によって生成され得る。すなわち、各デジタルコンポーネント提供者160は、ユーザがデジタルコンポーネント提供者160の電子リソースを訪問すると、デジタルコンポーネント提供者160のユーザグループにユーザを割り当てることができる。ユーザグループはまた、コンテンツプラットフォームによって、たとえば、DSP150および/またはSSP170によって、作成され得る。
ユーザプライバシーを保護するために、ユーザのグループメンバーシップが、デジタルコンポーネント提供者、コンテンツプラットフォーム、または他の当事者によるのではなく、たとえば、アプリケーション112、またはクライアントデバイス110のオペレーティングシステムのうちの1つによって、ユーザのクライアントデバイス110において維持され得る。特定の例では、信頼されるプログラム(たとえば、ウェブブラウザまたはオペレーティングシステム)は、ウェブブラウザまたは別のアプリケーションを使用するユーザに対して(たとえば、ブラウザ、アプリケーション、またはクライアントデバイス110にログインされたユーザに対して)、ユーザグループ識別子のリスト(「ユーザグループリスト」)を維持することができる。ユーザグループリストは、メンバーとしてユーザを含むユーザグループごとにグループ識別子を含むことができる。ユーザグループを作成するデジタルコンポーネント提供者160は、彼らのユーザグループに対するユーザグループ識別子を指定することができる。ユーザグループに対するユーザグループ識別子は、グループ(たとえば、園芸グループ)、またはグループを表すコード(たとえば、記述的でない英数字系列)を記述することができる。ユーザに対するユーザグループリストは、クライアントデバイス110においてセキュアなストレージの中に記憶され得、かつ/または他人がリストにアクセスすることを阻止するために、記憶されるときに暗号化され得る。
アプリケーション112が、デジタルコンポーネント提供者160に関係するリソースもしくはアプリケーションコンテンツ、またはウェブサイト142上のウェブページを提示するとき、リソースは、アプリケーション112がユーザグループリストに1つまたは複数のユーザグループ識別子を追加することを要求することができる。それに応答して、アプリケーション112は、ユーザグループリストに1つまたは複数のユーザグループ識別子を追加することができ、ユーザグループリストをセキュアに記憶することができる。
MPCクラスタ130は、ユーザの関心を引くことがあるか、または別の様式でユーザ/クライアントデバイスにとって有益であり得る、デジタルコンポーネントまたは他のコンテンツを選択するために、ユーザのユーザグループメンバーシップを使用することができる。たとえば、そのようなデジタルコンポーネントまたは他のコンテンツは、ユーザエクスペリエンスを改善するか、クライアントデバイスの実行を改善するか、またはいくつかの他のやり方でユーザもしくはクライアントデバイスの利益になる、データを含んでよい。しかしながら、MPCクラスタ130のコンピューティングシステムMPC1およびMPC2がユーザに対するユーザグループ識別子に平文でアクセスすることを阻止するやり方で、ユーザのユーザグループリストのユーザグループ識別子が、デジタルコンポーネントを選択するために提供および使用され得、それによって、デジタルコンポーネントを選択するためにユーザグループメンバーシップデータを使用するときにユーザプライバシーを保存する。平文とは、計算的にタグ付けされず、特別の方法でフォーマッティングされず、またはコードで書かれないテキスト、あるいは鍵もしくは他の暗号解読デバイスまたは他の暗号解読プロセスを必要とせずに見られることまたは使用されることが可能な形態のデータであり、バイナリファイルを含む。
セキュアMPCクラスタ130は、ユーザのグループメンバーシップに基づいて、ただし、グループメンバーシップ情報に平文でアクセスすることなく、ユーザのクライアントデバイスへの配信用のデジタルコンポーネントを選択するためにセキュアMPCプロセスを実行する、2つのコンピューティングシステムMPC1およびMPC2(たとえば、サーバコンピュータ)を含む。例示的なMPCクラスタ130は2つのコンピューティングシステムを含むが、MPCクラスタ130が2つ以上のコンピューティングシステムを含む限り、もっと多くのコンピューティングシステムも使用され得る。たとえば、MPCクラスタ130は、3つのコンピューティングシステム、4つのコンピューティングシステム、または別の適切な個数のコンピューティングシステムを含むことができる。MPCクラスタ130の中でもっと多くのコンピューティングシステムを使用することは、より多くのセキュリティをもたらすことができるが、MPCプロセスの複雑度を増大させることもある。
コンピューティングシステムMPC1およびMPC2は、異なるエンティティによって動作させられ得る。このようにして、各エンティティは、ユーザのグループメンバーシップへの平文でのアクセスを有しないことがある。たとえば、コンピューティングシステムMPC1またはMPC2のうちの一方は、ユーザ、発行者140、DSP150、SSP170、およびデジタルコンポーネント提供者160とは異なる、信頼される当事者によって動作させられ得る。たとえば、業界グループ、政府グループ、またはブラウザ開発者が、コンピューティングシステムMPC1およびMPC2のうちの一方を保守し動作させてよい。他のコンピューティングシステムは、信頼される異なる当事者が各コンピューティングシステムMPC1およびMPC2を動作させるように、これらのグループのうちの異なるグループによって動作させられてよい。好ましくは、異なるコンピューティングシステムMPC1およびMPC2を動作させる異なる当事者は、ユーザプライバシーを危険にさらすために共謀すべき動機を有しない。いくつかの実装形態では、コンピューティングシステムMPC1およびMPC2は、アーキテクチャ的に分離され、本明細書で説明するセキュアMPCプロセスを実行する外側で互いに通信しないように監視される。
本明細書全体にわたる説明に加えて、本明細書で説明するシステム、プログラム、または特徴により、ユーザ情報(たとえば、ユーザのソーシャルネットワーク、社会活動もしくは社会的アクティビティ、職業、ユーザの選好、またはユーザの現在位置についての情報)の収集が可能になり得るかどうかと、いつ可能になり得るのかの両方、およびサーバからのコンテンツまたは通信がユーザに送られるかどうかに関して、ユーザが選定を行うことを可能にする制御装置(たとえば、ユーザがそれと対話できるユーザインターフェース要素)がユーザに提供されてよい。加えて、いくつかのデータは、個人を識別できる情報が除去されるように、記憶または使用される前に1つまたは複数の方法で処理されてよい。たとえば、ユーザの識別情報は、個人を識別できる情報がユーザに対して決定され得ないように処理されてよく、またはユーザの地理的ロケーションは、ユーザの具体的なロケーションが決定され得ないように、ロケーション情報が取得される場所に(都市レベル、郵便番号レベル、または州レベルなどに)一般化されてよい。したがって、ユーザは、ユーザについてのどんな情報が収集されるのか、その情報がどのように使用されるのか、およびどんな情報がユーザに提供されるのかに関する制御を有してよい。
図2は、クライアントデバイスにおける表示またはクライアントデバイスへの配信を行うためのデジタルコンポーネントを選択するための、例示的なプロセス200のスイムレーン図である。プロセス200の動作は、たとえば、クライアントデバイス110上のアプリケーション112、MPCクラスタ130のコンピューティングシステムMPC1およびMPC2、ならびにDSP150によって実施され得る。プロセス200の動作はまた、非一時的であってよい1つまたは複数のコンピュータ可読媒体上に記憶された命令として実施され得、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス200の動作を実行させることができる。プロセス200および以下の他のプロセスは、2つのコンピューティングシステムのMPCクラスタ130に関して説明されるが、3つ以上のコンピューティングシステムを有するMPCクラスタも、類似のプロセスを実行するために使用され得る。加えて、プロセス200の動作はSSP170によって実施され得る。
MPCクラスタは、ユーザグループ情報などの、デジタルコンポーネント要求の中の特性情報に基づいてデジタルコンポーネントを選択するために、セキュアMPCプロセスを実行する。ユーザグループ情報は、たとえば、MPC1がユーザグループ情報の秘密シェアを得るとともにMPCがユーザグループ情報の第2のシェアを得るような、秘密シェアを使用して提供され得る。ユーザグループ情報は、要求を送ったクライアントデバイスのユーザをメンバーとして含む1つまたは複数のユーザグループを識別することができる。このデジタルコンポーネント選択は、第1のステージのルックアップ鍵を使用して、コンピューティングシステムMPC1およびMPC2の2ステージルックアップテーブルの中で、デジタルコンポーネントに対する適格な選択値を識別することを含むことができる。このことはまた、たとえば、ユーザに対するユーザグループ識別子のうちの1つに整合するユーザグループ識別子をデジタルコンポーネントが有することに基づいて、選択のための候補であるデジタルコンポーネントに対する選択値を識別することを含むことができる。このことはまた、デジタルコンポーネントに対する選択値に基づいて候補デジタルコンポーネントからデジタルコンポーネントを選択することを含むことができる。このことはすべて、コンピューティングシステムMPC1またはMPC2のいずれかがユーザグループ識別子に平文でアクセスせずに実行され得る。
コンピューティングシステムMPC1およびMPC2は、秘密シェアを使用するセキュアMPC技法を使用して候補選択値を識別することができ、その結果、コンピューティングシステムMPC1もMPC2も、どのデジタルコンポーネントが候補、すなわちメンバーとしてユーザを含むユーザグループであるのかを知らない。このことを行うために、コンピューティングシステムMPC1は、デジタルコンポーネントのセットの中のデジタルコンポーネントごとに候補パラメータの第1のシェアを計算する。同様に、コンピューティングシステムMPC2は、デジタルコンポーネントのセットの中のデジタルコンポーネントごとに候補パラメータの第2のシェアを計算する。候補パラメータは、ユーザグループ識別子にリンクされたデジタルコンポーネントに対する選択値が候補であるかどうかを示す、ブール値(たとえば、0または1)であり得る。すなわち、候補パラメータは、ユーザグループ識別子によって識別されるユーザグループの中のユーザへの配信にとってデジタルコンポーネントが適格であることを示す配信基準に、デジタルコンポーネントがリンクされているかどうかを示す。
コンピューティングシステムMPC1およびMPC2は、コンピューティングシステム間に1つまたは複数のラウンドトリップを伴うセキュアMPC技法を使用して、選択プロセスの結果に対する秘密シェアを算出することができる。すなわち、コンピューティングシステムMPC1およびMPC2は、勝利選択値および/またはその対応するデジタルコンポーネントに対する秘密シェアを決定することができる。
シェアが完了すると、MPC1およびMPC2は各々、選択結果のシェアのうちの1つをクライアントデバイスに戻すことができる。クライアントデバイスは、次いで、2つの秘密シェアを使用して選択結果を平文で再構成することができる。選択結果は、対応するデジタルコンポーネント、または対応するデジタルコンポーネントへの参照、たとえば、対応するデジタルコンポーネントをダウンロードするためのリンクのいずれかを含むことができる。
フローは、DSP150が、しばしば、SSP170を介して、デジタルコンポーネントに対する選択値をMPCクラスタ130に提供することとともに始まる(ステージ1)。上記で説明したように、選択値は、デジタルコンポーネント提供者160が、デジタルコンポーネントを伴う提示またはユーザ対話のために提供する意思がある、量を示すことができる。MPCクラスタ130は、クライアントデバイス110から受信される将来のデジタルコンポーネント要求に対する選択値を記憶することができる。デジタルコンポーネントごとに、DSP150はまた、デジタルコンポーネントのための追加のデータ、たとえば、メタデータをアップロードすることができる。デジタルコンポーネントのための追加のデータは、デジタルコンポーネントに対応するユーザグループ、たとえば、デジタルコンポーネントがそこに配信されるのに適格であるユーザグループに対する、ユーザグループ識別子を含むことができる。たとえば、DSP150は、ユーザグループのメンバーであるユーザのクライアントデバイス110にデジタルコンポーネントが配信されるキャンペーンを管理することができる。
デジタルコンポーネントのためのデータは、デジタルコンポーネントがそれに対して適格であるコンテキスト、たとえば、クライアントデバイス110のロケーション、アプリケーション112のために選択された音声言語、デジタルコンポーネントがそれとともに提示され得るリソースのためのユニバーサルリソースロケータ(URL)を示す、コンテキスト選択信号を含むことができる。デジタルコンポーネントのためのこのデータはまた、たとえば、一意識別子、デジタルコンポーネントがそこから取得され得るドメイン、および/またはデジタルコンポーネントのための他の適切なデータを使用して、デジタルコンポーネントを識別することができる。
MPCクラスタ130は、MPCクラスタ130に提供された、デジタルコンポーネントに対する選択値を、将来のデジタルコンポーネント要求のためにキャッシュするかまたは別のやり方で記憶する。この例では、デジタルコンポーネントおよび選択値のためのコンテキスト信号は、そのデジタルコンポーネント要求の中に含まれるコンテキスト信号を含むことができる。
いくつかの実装形態では、各コンピューティングシステムMPC1およびMPC2は、2ステージのルックアップテーブル(LUT)を使用して、デジタルコンポーネントに対する選択値を記憶する。第1のステージは、ユーザグループ要求鍵によって鍵が付けられ得る。ユーザグループ要求鍵は、コンテキスト信号のセット、たとえば、デジタルコンポーネント要求のコンテキスト信号(たとえば、URL、ロケーション、言語など)のセット、またはデジタルコンポーネントがそれに対して配信にとって適格であるコンテキスト信号のセットに基づく、複合メッセージであり得る。すなわち、第1のステージのLUTは、コンテキスト信号のセットに基づいて鍵が付けられ得る。第2のステージのLUTは、第1のステージのLUTの中のユーザグループ要求鍵とユーザグループ識別子との組合せに基づいて鍵が付けられ得る。いくつかの実装形態では、第2のステージのLUTは、ルックアップ鍵を有しない簡単なテーブルと置換され得る。第2のステージのLUTの中の各行は、特定のデジタルコンポーネントに対する特定の選択値に対するものであり得る。たとえば、DSP150は、各選択値がコンテキスト信号の異なるセットおよび/または異なるユーザグループ識別子に対するものである、同じデジタルコンポーネントに対する異なる選択値をサブミットすることができる。したがって、デジタルコンポーネントに対する選択値は、コンテキストに基づいて変わることがある。
DSP150またはデジタルコンポーネント提供者160は、DSP150またはデジタルコンポーネント提供者がデジタルコンポーネントを提示させることを希望する先のユーザグループに、デジタルコンポーネントを任意選択で関連付けること、たとえば、リンクさせるかまたはマッピングすることができる。たとえば、DSP150は、DIY、鳥、および/または中庭装飾への興味を示したことがあるユーザへの、クライアントデバイスにおける表示のために提供される、DIY鳥小屋建築キットに関係するデジタルコンポーネントを希望する場合がある。この例では、DSP150は、デジタルコンポーネントが、DIY、鳥、および/または中庭装飾への興味を示したことがあるユーザを含むユーザグループに対するユーザグループ識別子に対応することを示すデータを、MPCクラスタ130に提供することができる。さらに、同じDSP150またはデジタルコンポーネント提供者160は、特定のペーシング(pacing)条件などの、DSP150またはデジタルコンポーネント提供者がその下でデジタルコンポーネントを提示させることを希望する他の条件に、同じデジタルコンポーネントを任意選択で関連付けること、たとえば、リンクさせるかまたはマッピングすることができる。
いくつかの実装形態では、第2のステージのLUTの中の行のための鍵は、その行のデジタルコンポーネントに対するユーザグループ要求鍵UG_Request_Keyとユーザグループ識別子との組合せに基づいて生成された、ハッシュまたはコードであり得る。たとえば、鍵は、HMACSHA256(UG_Request_Key,ug_id)として表すことができる、その組合せのハッシュベースメッセージ認証コード(HMAC)であり得る。ユーザグループ識別子ug_idは、ユーザグループに対する内部ユーザグループ識別子とユーザグループの所有者の(たとえば、ユーザグループを所有するDSP、SSP、またはデジタルコンポーネント提供者の)ドメインとの組合せに基づくことができる。たとえば、ユーザグループ識別子ug_idは、所有者ドメインのeTLD+1およびユーザグループに対する所有者の内部ユーザグループ識別子の、デジタルダイジェスト、またはその組合せのHMACであり得る。eTLD+1は、パブリックサフィックスを超える、実効トップレベルドメイン(eTLD:effective top-level domain)+1レベルである。例示的なeTLD+1は「example.com」であり、ここで、「.com」がトップレベルドメインである。ug_idは、16バイトまたは別の適切なデータサイズに短縮され得る。
第2のステージのLUTの各行に対する値は、デジタルコンポーネントに対する選択値、およびデジタルコンポーネントのための他のデータ、たとえば、デジタルコンポーネントまたはデジタルコンポーネントがそこからダウンロードされ得るネットワークロケーションを識別するメタデータなどであり得る。その値は、選択値およびメタデータを有するバイトアレイであり得る、デジタルコンポーネント情報要素であり得る。第2のステージのLUTは、選択値を特定のデジタルコンポーネントにマッピングする。いくつかの実装形態では、第2のステージのLUTは、同じく特定のユーザグループ識別子を、第1のステージのルックアップ鍵によって規定されるコンテキスト信号の特定のセットに、任意選択でマッピングする。そのようにすることによって、第2のステージのLUTは、デジタルコンポーネントに対する選択値がそれに対して適格である、デジタルコンポーネントスロットの特定のコンテキストを示す。このことにより、コンテキスト信号、および任意選択で、ユーザのグループメンバーシップまたはコンテンツ配送のための他の条件によって規定される、異なるコンテキストに対して、DSP150またはデジタルコンポーネント提供者160が、同じデジタルコンポーネントに対する異なる選択値を指定することが可能になる。デジタルコンポーネントが提示される先のユーザが、特定のユーザグループ識別子によって識別される特定のユーザグループのメンバーであること、および第1のステージのルックアップ鍵のコンテキスト信号によって規定される特定のコンテキストでデジタルコンポーネントが提示されることを示す、デジタルコンポーネント要求が受信されるとき、整合するユーザグループ識別子および整合する第1のステージのルックアップ鍵を有する、第2のステージのLUTの中の任意の選択値が、要求に応答して配信のために選択されるべき候補である。
クライアントデバイス110がコンテンツを受信する(ステージ2)。たとえば、クライアントデバイス110は、ネイティブアプリケーションによる提示用のウェブブラウザまたはアプリケーションコンテンツによる提示のために、電子リソース(たとえば、ウェブページ)を受信することができる。コンテンツは、コンピュータ可読コード、たとえば、実行されたとき、各スロットに対してクライアントデバイス110にデジタルコンポーネントを要求させるスクリプトを含む、1つまたは複数のデジタルコンポーネントスロットを含むことができる。クライアントデバイス110は、クライアントデバイス110のディスプレイ上でコンテンツをレンダリングすることができる。
クライアントデバイス110は、受信されたコンテンツに基づいて1つまたは複数のデジタルコンポーネントに対する要求を生成する(ステージ3)。要求は、デジタルコンポーネントがその中で提示されるコンテンツおよびコンテキストの特性を示すデータを含む。たとえば、要求は、特性の中でも、受信されたコンテンツに対する1つまたは複数のカテゴリー(DIY、鳥、自然保護)、ユーザがそのメンバーであるユーザグループ、デジタルコンポーネントスロットのロケーションおよび/またはサイズ、デジタルコンポーネントが表示される時間の長さを含むことができる。上記で説明したように、ユーザグループ識別子は、いずれかのMPCコンピューティングシステムがユーザのメンバーシップ情報に平文でアクセスすることを阻止するための秘密シェアとして送られ得る。コンテンツがその中で表示されるリソースが複数のデジタルコンポーネントスロットを含む場合、クライアントデバイス110は、スロットごとにそれぞれのデジタルコンポーネントをMPCクラスタ130およびSSP170に要求することができる。要求はまた、特定の配信機会および/または選択されたデジタルコンポーネントがその中で表示されることになるデジタルコンポーネントスロットに対する、識別子を含むことができる。
クライアントデバイス110は、次いで、デジタルコンポーネントに対する要求をMPCクラスタ130へ送信する(ステージ4)。たとえば、クライアントデバイス110は、デジタルコンポーネントに対する要求をMPCクラスタ130へ直接送信することができる。いくつかの実装形態では、クライアントデバイス110は、デジタルコンポーネントに対する要求をSSP170(またはDSP150)へ送信することができ、SSP170(またはDSP150)は、その要求をMPCクラスタ130に転送してよい。いくつかの実装形態では、この要求は、ユーザグループ情報を含まなくてよい。
MPCクラスタ130は、特定の選択値を有する勝利デジタルコンポーネント(winning digital component)を選択するために、その要求に基づいてプライバシー保存選択プロセスを実行する(ステージ5a)。たとえば、選択プロセスは、適格であることと、MPCクラスタ130またはクライアントデバイス110によって指定されるしきい値(たとえば、k-匿名性)を満足する最大の選択値を有することの両方である、デジタルコンポーネントを選択するために開催される、オークションの形態をなすことができる。デジタルコンポーネントが選択プロセスにとって適格となるために、デジタルコンポーネントは、いくつかの配信要件を満足しなければならない。たとえば、デジタルコンポーネントは、1つまたは複数のデジタルコンポーネント提供者160、クライアントデバイス110、クライアントデバイス110のユーザ、および/またはMPCクラスタ130自体によって指定される、特定の規則を満たさなければならない。規則は、要因の中でも、デジタルコンポーネントの配信の方式または頻度に対する制約およびガイドラインを含むことができる。規則は、頻度制御、ミューティング(muting)、バジェット、およびペーシング制約を含む。プライバシー保存選択プロセスは、1つの追加の規則-特定のユーザのデータの匿名性を施行するプライバシー保存規則を含む。たとえば、プライバシー保存規則はk-匿名性規則として実施される。
最初に、コンピューティングシステムMPC1およびMPC2は、キャッシュされた特定の選択値およびその対応するデジタルコンポーネントが、クライアントデバイス110からのデジタルコンポーネント要求の中で提供されるデータに従ってプライバシー保存選択プロセスが実行されるための候補であることが適格であるかどうかを決定する。
各選択値xは、MPCクラスタ130がそれに対してk-匿名性を施行する、aggregate_idとして表される統合識別子に関連する。たとえば、統合識別子は、デジタルコンポーネントのデジタルダイジェスト(たとえば、SHA256)であり得る。MPCクラスタ130はまた、選択値xから統合識別子を抽出するために関数aggregate_idを実施する。たとえば、MPCクラスタ130は、選択値xのaggregate_idの値を決定するためにaggregate_id(x)を適用することができる。
MPCクラスタ130は、デジタルコンポーネントに対する選択値xがk-匿名性を満たすかどうかを表す変数satisfy_k_anonymityxを使用して、特定のaggregate_idおよび1つまたは複数の選択値にマッピングされるデジタルコンポーネントに対するk-匿名適格性を決定する。xがk-匿名性を満たす場合のみ、変数satisfy_k_anonymityx=1である。そうでない場合、変数satisfy_k_anonymityx=0である。satisfy_k_anonymityxの値は、k-匿名性のためのしきい値kに対して、変数counteraggregate_id(x)によって表されるカウンタの値を比較することによって、計算される。たとえば、コンピューティングシステムMPC1は、次式を使用して、秘密分散におけるsatisfy_k_anonymityxの値の秘密シェアを計算することができる。
[satisfy_k_anonymityaggregate_id(x),1]=[counteraggregate_id(x),1]>k 式(1)
コンピューティングシステムMPC2は、次のような類似の式を使用して、秘密分散におけるsatisfy_k_anonymityxの値の秘密シェアを計算することができる。
[satisfy_k_anonymityaggregate_id(x),2]=[counteraggregate_id(x),2]>k 式(2)
ステージ10に関して以下でさらに詳細に説明するように、MPCクラスタ130は、カウンタ変数counteraggregate_id(x)の値に基づいてsatisfy_k_anonymityxの値を更新することができる。
k-匿名性の概念は、特定のユーザのためのデータが、しきい値数k人の他のユーザのデータから見分けられないことを保証する。システムは、たとえば、特定のデジタルコンポーネントが、1つまたは複数のデジタルコンポーネントに対する要求に応答してクライアントデバイス110に配信されること、および同じデジタルコンポーネントが、特定の時間期間内に、少なくともk人のユーザのセットに、または少なくともk個のブラウザによって、提示されている場合があるかまたは提示されたことを保証することによって、k-匿名性規則を施行することができる。いくつかの実装形態では、デジタルコンポーネントが配信されている場合があるかまたは配信された先のk個のブラウザの各々は、異なるユーザ用でなければならない。
システムは、プライバシー保存データ構造の使用を通じてk-匿名性を施行する。特定のデジタルコンポーネントの配信は、たとえば、異なるユーザへのまたは異なるブラウザを使用する配信または表示のためにデジタルコンポーネントが選択されたことがある回数のためのカウンタのような、プライバシー保存データ構造内で追跡され得る。ステージ8に関して以下でさらに詳細に説明するように、デジタルコンポーネントが、プライバシー保存選択プロセスを通じて選択され、その後、クライアントデバイスに配信されると、カウンタは、そのデジタルコンポーネントに対してインクリメントされ得る。カウンタは、たとえば、ある時間期間内に特定のデジタルコンポーネントを見ている場合があるかまたは見たブラウザまたはユーザの数を追跡する。たとえば、カウンタは、直近の12時間以内に特定のデジタルコンポーネントを見ている場合があるかまたは見たブラウザの数を計数することができる。直近の時間期間にわたってカウンタがこの情報を追跡するので、カウンタは、デジタルコンポーネントが提示されたかまたは提示されている場合があることをデータが示すときにインクリメントし、時間が経過するにつれてデクリメントする。たとえば、提示または潜在的な提示ごとに指定の時間期間が経過すると、カウンタは自動的にデクリメントされ得る。カウンタは、たとえば、提示または潜在的な提示がカウンタ合計に加えられてから経過している、時間期間を追跡することができる。いくつかの実装形態では、カウンタは、各提示または潜在的な提示がいつカウンタ合計に加えられたのかというタイムスタンプを記憶することができる。指定の時間期間が経過すると、カウンタは、満了している提示または潜在的な提示の数だけ自動的にデクリメントすることができる。
追加として、ユーザは、一般に、複数の異なるウェブサイトにわたってナビゲートするとき、同じサードパーティコンテンツを継続的に見せられないことを好み、その結果、複数の異なるウェブサイトにわたって同じユーザに同じサードパーティコンテンツを継続的に配信することは、ユーザが見ることを希望せず無視する可能性があるコンテンツを配信するために使用されるコンピューティングリソースを浪費させることになる。特定のユーザが同じサードパーティコンテンツにさらされる回数を限定するための1つの方法は、ある時間期間内に指定の回数を超えて同じユーザが同じサードパーティコンテンツにさらされることを防止する頻度制御技法を利用することである。
システムは、ユーザから情報を受信することによるさらなるユーザ入力が、デジタルコンポーネントをミュートすること、すなわち、ある時間期間の間、デジタルコンポーネントが彼らに提示されることを防止することを、可能にする。たとえば、ユーザは、5日間という期間の間、それとともにユーザに提示されたことがある特定のデジタルコンポーネントを、ミュートすることを選ぶことができる。いくつかの実装形態では、その時間期間は、要因の中でも、コンテンツアイテムのタイプ、および/またはユーザによって提供されるフィードバックのタイプに基づいて、クライアントデバイス110、MPCクラスタ130、DSP150、デジタルコンテンツプロバイダ160、またはSSP170によって指定され得る。
コンテンツの配信はまた、バジェットおよびペーシング制御技法を通じて、デジタルコンポーネント提供者160からの入力によって制御され得る。デジタルコンポーネント提供者は、デジタルコンポーネントを含むキャンペーンのためのリソースがキャンペーン期間の中で早期に枯渇されないことを保証する方策を実施するために、選択値に対してある時間期間にわたって合計しきい値を指定することができる。たとえば、デジタルコンポーネント提供者160は、1週間の経過にわたって、デジタルコンポーネント提供者160からの選択されたデジタルコンポーネントに対する、または特定のデジタルコンポーネントに対する、選択値の合計が、8000単位という最大値に限定されることを指定することができる。選択値の最大合計に達すると、その時間期間、すなわち、その週が終わるまで、最大値がそれに対して課される特定のデジタルコンポーネントは、選択プロセスにとってクライアントデバイス110に配信されるのに、もはや適格ではない。
デジタルコンポーネント提供者はまた、デジタルコンポーネント提供者160からの選択されたデジタルコンポーネントに対する、または特定のデジタルコンポーネントに対する、選択値のしきい値に到達しつつある速度またはペースを指定することができる。たとえば、デジタルコンポーネント提供者160は、1か月の経過にわたって1日当たり250単位よりも小さいペースで6000単位という最大しきい値に達しなければならないことを指定することができる。選択値の毎日の合計に達すると、その時間期間、すなわち、その日が終わるまで、ペーシングがそれに対して課される、デジタルコンポーネント提供者160によって提供されるデジタルコンポーネントは、選択プロセスにとってクライアントデバイス110に配信されるのに、もはや適格ではない。
コンテンツ配信規則に従ってデジタルコンポーネント適格性を施行することに加えて、プライバシー保存選択プロセスは、選択される任意の構成要素が少なくともk人の他のユーザ(またはブラウザ)に提供されるように、ユーザ(またはブラウザ)のk-匿名性を保存することによって、ユーザのプライバシーを保護するとともにユーザエクスペリエンスを改善する。特定のデジタルコンポーネントがしきい値人数の他のユーザに提供されることを保証することによって、システムは、一部のユーザが快適と感じないことがある限度までユーザをかろうじて標的とする、マイクロターゲッティングと呼ばれるユーザ標的化の形態を阻止する。たとえば、ほんの数人のユーザにおいて標的とされ、かつそうしたユーザに配信される、デジタルコンポーネントは、あまりに個人向けにされると感じることがあり、ユーザは、特別扱いされていると感じること、またはデジタルコンポーネントの特異性を不快と感じることがある。プライバシー保存選択プロセスは、十分に広範な観衆にデジタルコンポーネントが配信されることを保証し、その結果、ユーザは、彼らが受け取るデジタルコンポーネント、およびデジタルコンポーネントの目標観衆のサイズを快適と感じる。
MPCクラスタ130のコンピューティングシステムは、選択値が、ブール変数is_candidatexを使用するプライバシー保存選択プロセスに対する候補であることを示すことができる。xが、プライバシー保存選択プロセスの中で適用される配信規則のすべてを満たす場合のみ、変数is_candidatex=1である。そうでない場合、変数is_candidatex=0である。
次に、MPCクラスタ130のコンピューティングシステムの各々は、プライバシー保存選択プロセスのための候補であることが適格である選択値の順序を決定する。たとえば、各コンピューティングシステムMPC1およびMPC2は、その第2のステージのLUTの中の適格な選択値の順序を決定することができる。この順序は、候補選択値を含む、第2のステージのLUTの中の適格な選択値のすべてを含むことができる。いくつかの実装形態では、この順序は候補でない選択値を含むことができる。順序は、最大の選択値から最小の選択値までであり得る。いくつかの実装形態では、その順序に対して使用される選択値は、たとえば、DSP150および/またはSSP170との任意の共有の後、選択されたデジタルコンポーネントがそれとともに提示されることになるリソースの発行者に提供されることになる値であり得る。選択値が平文をなすとき、コンピューティングシステムMPC1およびMPC2は、選択値を順序付けするためのいかなるラウンドトリップ計算も実行しなくてよい。代わりに、各コンピューティングシステムMPC1およびMPC2は、その第2のステージのLUTの選択値を独立して順序付けすることができる。
MPCクラスタ130の構造は、全部足すと元の秘密になるフラグメントに秘密を分けることを伴う、加法的秘密分散を可能にする。フラグメントに分割されると、各フラグメントは異なる参加者に配信され、個々の参加者のいずれも、秘密を再構成するのに十分な情報を有しない。秘密を再構成するために、元の秘密をあらわにするようにすべてのフラグメントが一緒にプールされなければならない。各コンピューティングシステムMPC1およびMPC2が各選択値のそれぞれの秘密シェアを有して、各コンピューティングシステムMPC1およびMPC2において秘密シェアとして選択値が記憶された場合、コンピューティングシステムMPC1およびMPC2は、選択値を順序付けするためのラウンドトリップ計算を使用して、セキュアMPCプロセスを実行することができる。
選択値が順序付けされると、MPCクラスタ130は、勝者を選択することによってプライバシー保存選択プロセスを完了する。たとえば、MPCクラスタ130は、MPCクラスタ130によってキャッシュされた候補選択値ごとに変数is_pp_winnerxの値を計算することによって勝者を決定する。
is_pp_candidatex=is_candidatex×satisfy_k_anonymityx 式(3)
変数satisfy_k_anonymityxは、候補選択値xがk-匿名性を満たすかどうかを示すブール変数である。式(3)では、is_pp_candidatexが真となるために、is_candidatexとsatisfy_k_anonymityxの両方が真すなわち1でなければならない。
この例では、式3は乗算に関して書かれる。概念的に、式3は論理AND演算を使用して実行され得る。いくつかの実装形態では、この論理表現は、乗算演算に変換されることなく直接実行され得る。
一例では、MPC1は、次式を使用して[is_pp_candidatex,1]を計算する。
[is_pp_candidatex]=[is_candidatex,1]×[satsify_k_anonymityx,1] 式(4)
ただし、[is_pp_candidatex,1]などの、括弧の中に出現するパラメータは、括弧内の変数の秘密シェアを表す。たとえば、[is_pp_candidatex,1]は、MPC1にしか知られていない、is_pp_candidatexの第1の秘密シェアを表す。括弧付きパラメータの秘密シェアを算出することは、MPCクラスタ130のコンピューティングシステム間のラウンドトリップリモートプロシージャコール(RPC)を必要とすることがある。
MPC2は、類似の式を使用して[is_pp_candidatex,2]を計算する。
[is_pp_candidatex]=[is_candidatex,2]×[satsify_k_anonymityx,2] 式(5)
式(4)および式(5)によって表される計算は、セキュア2PCプロトコルの一部と同時に実行される。追加として、×(乗算)演算がコンピューティングシステムMPC1とMPC2との間の通信の1つのラウンドしか必要としないので、これらの計算は特に効率的であるが、==(等式)演算は、コンピューティングシステムMPC1とMPC2との間の通信の3つのラウンドを必要とし、>(大なり)演算は、コンピューティングシステムMPC1とMPC2との間の通信の4つ以上のラウンドを必要とする。たとえば、コンピューティングシステムMPC1およびMPC2は、等式比較を実行するためのセキュアMPCプロセスの一部として、計算の複数のラウンド、たとえば、複数のRPCに携わることができる。このプロセスの終了において、コンピューティングシステムMPC1は、選択値ごとに結果の一方の秘密シェアを有し、コンピューティングシステムMPC2は、選択値ごとに結果の他方の秘密シェアを有する。式(4)および式(5)によって表される計算は、等式演算または大なり演算などの比較演算を使用して動作を実行することに比べて、コンピューティングシステムMPC1とMPC2との間で必要とされる通信の数を減らし、それによって、計算を完了するために必要とされる送信トラフィックおよび全体的なコンピューティングリソースを減らす。
概念的に、デジタルコンポーネントに対する所与の選択値にとっての累積値は、順序の最上位から所与の選択値までの候補選択値の総数を表す。たとえば、MPCクラスタ130は、次式を使用して、選択値xの前方にランク付けされた、プライバシー保存選択プロセスにおける適格な候補選択値の総数を表す累積値pp_accxを計算する。
pp_accx=Σis_pp_candidateb 式(6)
変数bは、選択値に基づいて選択値xの前方にランク付けされた候補選択値bを表す。適格な選択値bの各々に対してis_pp_candidatebが以前に計算されているので、適切な秘密シェアアルゴリズムが採用されることを想定すると、式(6)の計算は、コンピューティングシステムMPC1とMPC2との間の通信を必要とせず、加算を必要とするにすぎない。
選択値が順序付けされると、MPCクラスタ130は、勝者を選択することによってプライバシー保存選択プロセスを完了する。MPCクラスタは、次式を使用して、キャッシュされた適格な候補選択値ごとに変数is_pp_winnerxの値を決定することによって、プライバシー保存選択プロセスの結果を計算することができる。
is_pp_winnerx=is_pp_candidatex×(pp_accx==0) 式(7)
xがプライバシー保存選択プロセスの勝者である場合のみ、変数is_pp_winnerx=1である。そうでない場合、変数is_pp_winnerx=0である。pp_accxがすでに計算されているので、式(7)の中の変数pp_accxの値を使用することによって、MPCクラスタ130は、簡単な演算を使用して、キャッシュされた特定の選択値が勝者であるかどうかを決定することができる。
コンピューティングシステムMPC1は、[is_pp_winnerx,1]を保持する。コンピューティングシステムMPC2は、[is_pp_winnerx,2]を保持する。[is_pp_winnerx,1]および[is_pp_winnerx,2]の各々は、変数is_pp_winnerxの秘密シェアを表す。
MPCクラスタ130は、反事実的選択プロセスを実行する(ステージ5b)。反事実的選択プロセスは、プライバシー保存選択プロセスと並行して、またはプライバシー保存選択プロセスの前に実行され得る。MPCクラスタ130は、たとえば、コンピューティングシステムMPC1とMPC2との間のRPCの数を増やすことのないバッチモードで、選択プロセスの両方を並行して行うことができる。反事実的選択プロセスの結果is_winnerxは、MPCクラスタ130が、選択値xがk-匿名性規則を満たすかどうかを決定するためのプライバシー保存データ構造を更新することを可能にする。しかしながら、クライアントデバイス110によって実行される最終選択プロセスは、1というis_pp_winnerx値を有する選択値x、すなわち、プライバシー保存選択プロセスの勝者しか考慮に入れない。
反事実的選択プロセスは、プライバシー保存選択プロセスと同じ形態を有することができ、デジタルコンポーネントが選択プロセスにとって適格であるために、デジタルコンポーネントはいくつかの配信要件を満足しなければならない。反事実的選択プロセスは、プライバシー保存規則を除いてプライバシー保存選択プロセスが適用する配信規則のすべてを適用することによって、k-匿名性規則の適用がなければ何が起こることになるのかを推し量る。反事実的選択プロセスがプライバシー保存規則を適用しないので、選択されクライアントデバイスに提供されることが本来なら適格であるが、少なくともしきい値回数、他のクライアントデバイスに配信されていない、デジタルコンポーネントが、反事実的選択プロセス中に選択され得る。このプロセスは、たとえば、前に配信されたことがないか、または配信のしきい値数を満足しておらず、したがって、プライバシー保存選択プロセスの下でユーザに配信される資格がないことになる、新たに与えられたデジタルコンポーネントに対してシステムが選択レートを追跡することを可能にするので、特に有利である。反事実的選択プロセスを用いないと、プライバシー保存選択プロセス、したがって、最終選択プロセスにおける、選択にとって、そのようなデジタルコンポーネントがまったく適格にならない場合があり、それらのデジタルコンポーネントがクライアントデバイスにまったく提供されないことになることが起こり得る。
反事実的選択プロセスにより、特定のデジタルコンポーネントが、もし匿名性規則に準拠していれば配信されるのに適格であることになるかどうかを、システムが決定することが可能になる。プライバシー保存選択プロセスに関して上記で説明したように、この潜在的な配信は、配信のためにデジタルコンポーネントが選択されたことがある回数のためのカウンタのような、プライバシー保存データ構造内で追跡され得る。ステージ8に関して以下でさらに詳細に説明するように、デジタルコンポーネントが、プライバシー保存選択プロセスを通じて選択されず、その後、クライアントデバイスに配信されず、代わりに反事実的選択プロセスを通じて選択されるときでさえ、カウンタは、そのデジタルコンポーネントに対して同じくインクリメントされ得る。
k-匿名性の概念は、特定のユーザのためのデータが、しきい値数k人の他のユーザのデータから見分けられないことを保証する。デジタルコンポーネントが最終選択プロセスに勝利していることになり、クライアントデバイスに、ただし、プライバシー保存規則のために、配信されていることになるときに、特定のデジタルコンポーネントのためのカウンタをインクリメントすることによって、システムは、しきい値人数の人々に配信されるべき機会を有しておらず他のデジタルコンポーネントに対してk-匿名性を施行し続けることができるときにデジタルコンポーネントを配信できないという問題を解決する。
プライバシー保存選択プロセスに関して上記で説明したように、MPCクラスタ130は、デジタルコンポーネント要求の中の特性情報に基づいてデジタルコンポーネントを選択するために、同じセキュアMPCプロセスを実行する。
概念的に、デジタルコンポーネントに対する所与の選択値にとっての累積値は、順序の最上位から所与の選択値までの候補選択値の総数を表す。たとえば、コンピューティングシステムMPC1およびMPC2の各々は、値に基づいて選択値xの前方にランク付けされた、選択プロセスにおける適格な選択値の数であるaccxを計算することができる。
選択値が順序付けされると、MPCクラスタ130は、勝者を選択することによってプライバシー保存選択プロセスを完了する。MPCクラスタは、キャッシュされた選択値ごとに変数is_winnerxの値を決定することによって、選択プロセス結果を計算することができる。
is_winnerx=is_candidatex×(accx==0) 式(8)
xがプライバシー保存選択プロセスの勝者である場合のみ、変数is_winnerx=1である。そうでない場合、変数is_winnerx=0である。
いくつかの実装形態では、accxの計算は選択値xを含む包含計算であり、したがって、式(8)はaccx==1を使用することになる。
コンピューティングシステムMPC1は、[is_winnerx,1]を保持する。コンピューティングシステムMPC2は、[is_winnerx,2]を保持する。[is_winnerx,1]および[is_winnerx,2]の各々は、変数is_winnerxの秘密シェアを表す。
いくつかの実装形態では、is_pp_winnerx=1かつis_winnerx=1である選択値を有するデジタルコンポーネントは、同じデジタルコンポーネントであり得る。ただし、is_pp_winnerx=1かつis_winnerx=1である選択値を有するデジタルコンポーネントは、通常は異なるデジタルコンポーネントである。
MPCクラスタ130は、プライバシー保存選択プロセス勝者をクライアントデバイス110に提供し、反事実的選択プロセス勝者をクライアントデバイス110に提供する(ステージ6)。
MPCクラスタ130は、ステージ3においてMPCクラスタ130へ送信されたクライアントデバイス110からのデジタルコンポーネント要求に応答して、プライバシー保存選択プロセスおよび反事実的選択プロセスの勝者すなわち選択結果をクライアントデバイス110に提供する。コンピューティングシステムMPC1は、選択結果の第1のシェアをクライアントデバイス110に戻すことができる。同様に、コンピューティングシステムMPC2は、選択結果の第2のシェアをクライアントデバイス110に戻すことができる。
プライバシー保存選択プロセスおよび反事実的選択プロセスに対する選択結果は、実際値またはファントム値に対応する選択されたデジタルコンポーネントについての情報を含むバイトアレイの形態をなすことができる。秘密シェアにおける計算を実行するために、コンピューティングシステムMPC1はキャッシュされた選択値のすべてを取り、平文をなすことができる、選択値に対するデジタルコンポーネント情報要素を、勝者パラメータの第1の秘密シェア、たとえば、[is_pp_winnerx,1]または[is_winnerx,1]で乗算する。コンピューティングシステムMPC1は、次いで、これらの積の総和を決定することができ、デジタルコンポーネント要求をサブミットしたクライアントデバイス110にその総和を戻すことができる。コンピューティングシステムMPC2は、類似の計算を実行して結果の第2のシェアを決定することができる。
たとえば、選択結果は、第2のLUTの中のデジタルコンポーネントに対する値、たとえば、デジタルコンポーネントに対する選択値およびデジタルコンポーネントのためのメタデータを含む、バイトアレイであり得る。選択されたデジタルコンポーネントをコンピューティングシステムMPC1およびMPC2が知ることを阻止するために、コンピューティングシステムMPC1およびMPC2は、選択結果のそれらの秘密シェアを互いに共有することが阻止され得る。
MPCクラスタ130は、クライアントデバイス110における提示にとって適格であり、かつプライバシー保存選択プロセスの勝者である、0個または1個のいずれかのキャッシュされた選択値に対して、選択結果を提供する。MPCクラスタ130がプライバシー保存選択プロセスの勝者を提供する場合、選択値は、頻度制御、ミューティング、バジェット、ペーシング、およびk-匿名性規則などの、規則のすべてに準拠する。この勝者は、is_pp_winnerx=1となるべき選択値xであり、これは、その最終選択プロセスの中でクライアントデバイス110によって使用される唯一の選択値である。この勝者は実際値と呼ばれる。
MPCクラスタ130はまた、反事実的選択プロセスの勝者である、0個または1個のいずれかのキャッシュされた選択値に対して、選択結果を提供する。MPCクラスタ130が反事実的選択プロセスの勝者を提供する場合、選択値は、k-匿名性規則を除いて規則のすべてに準拠する。この勝者は、is_winnerx=1となるべき選択値xであり、この選択値は、その最終選択プロセスの中でクライアントデバイス110によって使用されない。この勝者はファントム値と呼ばれる。クライアントデバイスは、ファントム値にマッピングされたデジタルコンポーネントをユーザにまったく提示せず、またはユーザがファントム値にマッピングされたデジタルコンポーネントと対話することを可能にしないので、MPCクラスタ130は、ファントム値をレンダリングするために必要であり、かつファントム値とのユーザ対話を可能にするための、ファントム値の中に埋め込まれたコード(たとえば、Javascript)およびアセット(たとえば、HTML、CSS、JPG)を任意選択ではぎ取ってよく、モバイルデバイスにとってのバッテリー消費および帯域幅消費を減らす。
いくつかの実装形態では、特定の配信機会に対して選択される実際値およびファントム値の各々は、どの実際値およびファントム値が選択されたのかに応じて配信機会を示すことができる。たとえば、配信機会に対する識別子が、実際値およびファントム値の各々の中に含まれ得るか、または実際値およびファントム値とともにクライアントデバイス110へ送信され得る。いくつかの実装形態では、配信機会に対する識別子は、選択値ごとにis_winner変数およびis_pp_winner変数にマッピングされ得る。他の実装形態では、配信機会に対する識別子は、各選択値にマッピングされ得る。
クライアントデバイス110は、次いで、秘密シェアを使用して選択結果を平文で再構成することができる。たとえば、アプリケーション112は、秘密シェアの総和を決定することによって選択結果を再構成することができる。選択結果が0という値を有する場合、MPCクラスタ130は、メンバーとしてユーザを含むユーザグループのためのデジタルコンポーネントを識別しなかった。
クライアントデバイス110は、クライアントデバイス110がMPCクラスタ130から受信する勝利選択基準を含む最終選択プロセスを実行する(ステージ7)。
いくつかの実装形態では、クライアントデバイス110は、MPCクラスタ130からのユーザグループメンバーシップに基づいてデジタルコンポーネントを要求することができる。クライアントデバイス110はまた、SSP170からのコンテキスト信号に基づいてデジタルコンポーネントを要求することができる。これらのコンテキスト信号は、上記で説明した同じコンテキスト情報、および任意選択で、リソースのデジタルコンポーネントスロットの数、デジタルコンポーネントスロットのタイプ、リソースとともに提示され得るデジタルコンポーネントのタイプおよび/またはフォーマットなどの、追加のコンテキスト信号を含むことができる。SSP170は、デジタルコンポーネントに対するコンテキスト信号および選択値に基づいて1つまたは複数のデジタルコンポーネントを選択することができ、選択されたデジタルコンポーネント(または、デジタルコンポーネントを識別するデータ)およびデジタルコンポーネントに対する選択値のうちの1つまたは複数を、クライアントデバイス110に提供することができる。クライアントデバイス110は、次いで、MPCクラスタ130から受信された実際値のデジタルコンポーネント、およびSSP170によって選択されたデジタルコンポーネントを含む、デジタルコンポーネントのセットから、クライアントデバイス110においてコンテンツとともに提示するためのデジタルコンポーネントを選択することができる。たとえば、クライアントデバイス110は、MPCクラスタ130から受信する選択値に加えて、クライアントデバイス110においてキャッシュされた選択値を使用して、最終選択プロセスを実行することができる。いくつかの実装形態では、クライアントデバイス110は、2つ以上のMPCクラスタ130、2つ以上のSSP170、および/または2つ以上のDSP150から、勝利選択値を受信することができる。
MPCクラスタ130は、プライバシー保存選択プロセスと反事実的選択プロセスの両方からの勝利選択を行うが、クライアントデバイス110は、プライバシー保存選択プロセスの勝者、すなわち、is_pp_winnerx=1となるべき選択値x、または実際値のみを考慮に入れる。実際値およびファントム値を受信するが実際値のみを考慮に入れることによって、MPCクラスタ130は、まだk-匿名性のための要件を満足していないデジタルコンポーネントが追跡され、それらのそれぞれのk-匿名性カウントを増大させ、それによってデジタルコンポーネントがk-匿名性のための要件を満足するための機会を有するようにすることを可能にしながら、配信のために選択されるデジタルコンポーネントに対するk-匿名性を施行することによって、高レベルのプライバシーをユーザに提供する。いくつかの実装形態では、最終選択プロセスは追加の規則を有することができる。たとえば、最終選択プロセスは、選択値に対応する特定のデジタルコンポーネントが示され得る頻度に関する追加の規則を含むことができる。
クライアントデバイス110のアプリケーション112は、プライバシー保存選択プロセスおよび反事実的選択プロセスに関して説明するようなプロセスと類似の方法に従って最終選択プロセスを実行する。たとえば、クライアントデバイス110上にインストールされたウェブブラウザ112が、候補選択値を順序付けおよびランク付けすることによって最終選択プロセスを実行することができる。ウェブブラウザ112は、次いで、1番目にランク付けされた選択値を最終選択プロセスの勝者として選ぶ。
クライアントデバイス110は、最終選択プロセスの勝者に対応するデジタルコンポーネントを決定し、そのデジタルコンポーネントを提示する(ステージ8)。クライアントデバイス110がそれに対してコンピューティングシステムMPC1およびMPC2から2つの秘密シェアを受信する選択結果ごとに、クライアントデバイス110は、2つの秘密シェアから選択結果を決定することができる。たとえば、加法的秘密シェアライブラリを使用して、クライアントデバイス110は、選択結果の2つの秘密シェアを一緒に加算して選択結果を平文で取得することができる。このことは、デジタルコンポーネントに対する選択値、およびデジタルコンポーネントのためのメタデータ、たとえば、デジタルコンポーネントの識別情報、クライアントデバイス110がそこからデジタルコンポーネントをダウンロードできるロケーションなどへのアクセスを、クライアントデバイス110に与える。選択結果が0でない場合、選択結果は、デジタルコンポーネント情報要素に等しい値を有し、アプリケーション112は、デジタルコンポーネント情報要素を構文解析してデジタルコンポーネントのための選択値およびメタデータを取得することができる。アプリケーション112は、次いで、クライアントデバイス110において受信されたコンテンツとともにデジタルコンポーネントを提示することができる。たとえば、アプリケーション112は、クライアントデバイス110のディスプレイ上にデジタルコンポーネントおよびコンテンツの表示を生じさせることができる。
実際値(is_pp_winnerx=1となるべき選択値x)が、クライアントデバイス110によって実行された最終選択プロセスの勝利候補選択値である場合のみ、クライアントデバイス110は、更新データをMPCクラスタ130に提供する(ステージ9)。たとえば、クライアントデバイス110上のアプリケーション112は、勝利候補選択値に関し、かつ勝利候補選択値であった実際値および実際値とともに提供されたファントム値のk-匿名適格性に関する、情報を含む通知を送信してよい。選択値にマッピングされたデジタルコンポーネントがクライアントデバイス110において提示されるのは、選択値が最終選択プロセスの勝利候補選択値であるときのみであるので、実際値が最終選択プロセスの勝利候補選択値である場合のみ、更新データがMPCクラスタ130に提供される。
クライアントデバイス110上のアプリケーション112は、勝利候補選択値、および候補選択値に関連するデジタルコンポーネントに関する、情報を含む通知を、MPCクラスタ130へ送信する。通知は、最終選択プロセスからの勝利候補選択値が、MPCクラスタ130によって提供された実際値であること、および勝利候補選択値に関連するデジタルコンポーネントが、クライアントデバイス110において提示されたこと、たとえば、クライアントデバイス110においてレンダリングされたことを示す。
実際値が勝利候補選択値である場合にしか通知が送信されないので、MPCクラスタ130は、それ自体のプライバシー保存選択プロセスおよび反事実的選択プロセスの勝者に関する情報を受信する。通知は、たとえば、aggregate_idなどの識別子、または選択値に固有の他の情報によって勝利候補選択値を識別することができる。通知は、アクションの中でも、アプリケーション112によるデジタルコンポーネントのレンダリング、アプリケーション112において提示されるべきコンテンツへのデジタルコンポーネントのスロッティング(slotting)を含む、勝利候補選択値にリンクされたデジタルコンポーネントの提示に関連する様々なアクションによってトリガされ得る。
この通知により、アプリケーション112が2つのブール値を含めることによって重複除去機能を提供することが可能になる。通知を送るようにアプリケーション112がトリガされた時間において、アプリケーション112が、最終選択プロセスの中で使用されないことになるファントム値としてのファントム値を受信したのが、指定された最近の時間期間中で初めてであった場合のみ、第1の変数-is_distinct_phantom_value-は真である。たとえば、システムのための指定の時間期間が4時間である場合、アプリケーション112がファントム値を受信する時間において、アプリケーション112が直前の4時間以内にファントム値を受信したのが初めてであるとき、is_distinct_phantom_valueは真である。変数is_distinct_phantom_valueにより、選択プロセスが時間的に近すぎるときに、同じファントム値が、先行する反事実的選択プロセスに勝利する、重複した最終選択プロセスに対して、ファントム値に関連するデジタルコンポーネントが配信される回数のためのカウンタがインクリメントされないことをアプリケーションが保証することが可能になる。選択プロセスが、時間的に近すぎ、かつクライアントデバイス110の同じアプリケーション112のためのものであるとき、このことは、ファントム値に関連するデジタルコンポーネントが頻度制御規則または他のコンテンツ配信制約により配信されないことになる状況を表すことがあるので、ファントム値に関連するデジタルコンポーネントが配信される回数のためのカウンタは、必ずしもインクリメントされなくてよい。
追加として、本明細書で使用するk-匿名性はk個の異なるブラウザに適用されるので、カウンタが振り返ってk-匿名性を見つけようとする時間期間が2日間である場合、たとえば、この時間期間中、ブラウザは、せいぜい特定のデジタルコンポーネントのためのk-匿名性カウンタを1回インクリメントするようにMPCクラスタ130に求める。さらに、プロセスは秘密シェアを使用して実行されるので、MPCクラスタ130は、特定のデジタルコンポーネント要求に対して、ファントム値と実際値とが同じであるかどうかを検出できず、ブラウザは、ランダムに選ばれるファントム値または実際値のうちの一方に関連するカウンタをインクリメントするようにMPCクラスタに求める。
通知を送るようにアプリケーション112がトリガされた時間において、アプリケーション112が、実際値に関連するデジタルコンポーネントを提示することに関するアクションを取ったのが指定の時間期間中で初めてであったが、実際値がファントム値とは異なる場合のみ、第2の変数-is_distinct_actual_value-は真である。たとえば、システムに対する指定の時間期間が1日である場合、クライアントデバイス110における提示のためにアプリケーション112がデジタルコンポーネントをレンダリングする時間において、過去1日以内にクライアントデバイス110における提示のためにアプリケーション112がデジタルコンポーネントをレンダリングしたのが初めてであるとき、is_distinct_actual_valueは真である。この変数により、たとえば、プライバシー保存選択プロセスおよび反事実的選択プロセスの勝者が同じデジタルコンポーネントに対応するかどうかをシステムが決定することが可能になる。MPCクラスタ130のコンピューティングシステムMPC1およびMPC2の各々は、各勝者の識別子のシェアしか保持せず、したがって、勝者が同じデジタルコンポーネントに対応するかどうかを決定することができない。しかしながら、クライアントデバイス110は、勝者を平文で保持し、この変数を通じて任意の重複をMPCクラスタ130に知らせることができる。
たとえば、行の中で50回、特定のデジタルコンポーネントが同じアプリケーション112に提示されるように選択される場合、クライアントデバイス110は、(デジタルコンポーネントが、短い時間期間内に同じブラウザに示されたので)デジタルコンポーネントのためのk-匿名性カウンタが1回だけインクリメントされることになるが、バジェット、ペーシング、頻度制御、およびミューティングなどの他の特性が正常にインクリメントおよび追跡されることになるという情報を、MPCクラスタ130への通知の中に含めることになる。
k-匿名性カウンタを更新するための要求を含む更新を提供することによって、ブラウザは、MPCクラスタ130およびその記録管理に重複除去機能を提供する。この通知により、短い時間量内で同じデジタルコンポーネントが同じブラウザに複数回サービスされる計数プロセスからの数を膨張させずに、MPCクラスタが、その記録の完全性を維持するとともに、特定のデジタルコンポーネントがk-匿名性要件を満足することを保証することが可能になる。たとえば、クライアントデバイス110が、同じ要求内で2つ以上のデジタルコンポーネントを要求する場合、ブラウザが同じユーザ用であるので、通知情報は、k-匿名性計数のために、それらのうちの1つのみに対して、MPCクラスタ130が、デジタルコンポーネントに信用を与えることを可能にする。
いくつかの実装形態では、MPCクラスタ130は、異なるクライアントデバイスおよびアプリケーションにわたって同じユーザに対して、特定のデジタルコンポーネントの選択の重複を除去する追加の論理を含むことができる。たとえば、システムは、同じユーザが異なるクライアントデバイスおよびアプリケーションに関連するかどうかを決定するために、資格証明を求める検査を実行することができ、同じユーザがそれに対してそれら自体を識別する資格証明を入力したことがある異なるブラウザまたはデバイスに対して、重複除去を実行することができる。たとえば、ユーザが、彼らのスマートフォン上のブラウザにサインインされ、かつ彼らのラップトップ上のブラウザにサインインされる場合、システムは、ユーザの資格証明に基づくブラウザ間の同期メカニズムを使用して、同じユーザがサインインされていることを決定することができる。
更新データを受信すると、MPCクラスタ130は、MPCクラスタ130にとってアクセス可能な記憶媒体内に維持されるプライバシー保存データ構造を更新する(ステージ10)。更新データは、たとえば、is_distinct_phantom_valueおよびis_distinct_actual_valueの値を含む所感通知であり得る。MPCクラスタ130は、たとえば、k-匿名性を追跡するためにMPCクラスタ130によって保守されるカウンタ変数の値を更新することができる。たとえば、カウンタ変数は、MPCクラスタ130によってキャッシュされてよい。
MPCクラスタ130は、is_distinct_phantom_valueが真であることを示す、ブラウザからの所感通知を受信すると、ファントム値に対するk-匿名性のためのカウンタを更新する。この場合、所感通知に基づいて、MPCクラスタ130は、MPCクラスタ130または他のロケーションのローカルストレージからの、is_winnerx=1となるべき選択値をルックアップすることができる。所感通知は、配信機会の識別子を含むことができ、MPCクラスタ130は、is_winnerx=1となるべき、かつ配信機会識別子にマッピングされる、選択値をルックアップすることができる。情報が符号化されMPCクラスタ130へ送信されるフォーマットにかかわらず、MPCクラスタ130は、選択値をルックアップすることができ、対応するカウンタ変数を更新することができる。たとえば、コンピューティングシステムMPC1は、[is_winnerx,1]を保持し、MPC2は、[is_winnerx,2]を保持する。したがって、コンピューティングシステムの各々は、選択値シェアのための対応するカウンタ変数を個別に更新することができる。いくつかの実装形態では、MPCクラスタ130は、すべての適格なデジタルコンポーネントに関係するすべてのカウンタを更新し、すなわち、counterx=counterx+is_winner_xとなる。is_winnerx=0の場合、更新は演算を実行しない。is_winner_x=1の場合、更新はインクリメント演算と均等である。したがって、MPCクラスタ130の中の任意の個々のコンピューティングシステムは、MPCクラスタ130の中の他のコンピューティングシステムとの共謀なしに、いかなるユーザ情報にもアクセスすることができない。
いくつかの実装形態では、MPCクラスタ130の各コンピューティングシステムは、他のコンピューティングシステムによってアクセス可能でない別個のストレージを有する。分離されたこの記憶システムは、MPCクラスタ130のコンピューティングシステム間のユーザプライバシーの害となる共謀の可能性を低減し、システム内で実行されるような選択、およびプロセスを更新することの、完全性を維持する。
MPCクラスタ130は、すべての可能なキャッシュ鍵にわたって、可能なaggregate_idごとにカウンタのリストを維持する。任意のaggregate_id(∀aggregate_id)に対してis_distinct_actual_valueが真である場合、MPCクラスタ130は、任意の選択値xに対するis_pp_winnerxのすべての値の総和だけカウンタ変数counteraggregate_idを増大させ、ただし、次式によればaggregate_id(x)==aggregate_idである。
任意の選択値に対して、Σis_pp_winnerx、ただし、aggregate_id(x)==aggregate_id 式(9)
いくつかの実装形態では、コンピューティングシステムMPC1は、次式に従って、すべての可能な選択値を通じて反復することによって、このインクリメントプロセスを実行することができる。
[counteraggregate_id(x),1]=[counteraggregate_id(x),1]+[is_pp_winnerx,1] 式(10)
コンピューティングシステムMPC2は、次式に従って類似のプロセスを実行する。
[counteraggregate_id(x),2]=[counteraggregate_id(x),2]+[is_pp_winnerx,2] 式(11)
同様に、MPCクラスタは、is_distinct_phantom_valueが真であることを示す、ブラウザからの所感通知を受信すると、ファントム値に対する匿名性のためのカウンタを更新することができる。この場合、所感通知に基づいて、MPCクラスタ130は、MPCクラスタ130または他のロケーションのローカルストレージから、is_winnerx=1となるべき選択値をルックアップすることができる。所感通知は、配信機会の識別子を含むことができ、MPCクラスタ130は、is_winnerx=1となるべき、かつ配信機会識別子にマッピングされる、選択値をルックアップすることができる。
任意のaggregate_id(∀aggregate_id)に対して、MPCクラスタ130は、選択値xに対するis_winnerxのすべての値の総和だけカウンタ変数counteraggregate_idを増大させ、ただし、次式によればaggregate_id(x)==aggregate_idである。
任意の選択値に対して、Σis_pp_winnerx、ただし、aggregate_id(x)==aggregate_id 式(12)
いくつかの実装形態では、コンピューティングシステムMPC1は、次式に従って、すべての可能な選択値を通じて反復することによって、このインクリメントプロセスを実行することができる。
[counteraggregate_id(x),1]=[counteraggregate_id(x),1]+[is_pp_winnerx,1] 式(13)
コンピューティングシステムMPC2は、次式に従って類似のプロセスを実行する。
[counteraggregate_id(x),2]=[counteraggregate_id(x),2]+[is_pp_winnerx,2] 式(14)
いくつかの実装形態では、MPCクラスタ130によって記憶されるカウンタをインクリメントするために、(ユーザプライバシーを保護する秘密シェアの形態をなす)ベクトルが使用される。たとえば、実際値およびファントム値が1という対応するベクトル値を有する場合があり、かつ他の値が0という対応するベクトル値を有するだけの、疎なベクトルが、カウンタ変数を更新するために使用され得る。
いくつかの実装形態では、MPCクラスタ130は、カウンタ変数を使用して、特定のaggregate_idに関連するキャッシュされた任意の選択値のk-匿名適格性を追跡する。たとえば、MPCクラスタ130は、特定のaggregate_idに関連するキャッシュされた任意の選択値が所与の時間期間の中で選択プロセスに勝利する回数を計数することができ、選択値xに対してカウンタ変数counteraggregate_id(x)内にこの値を記憶することができる。MPCコンピューティングシステムMPC1およびMPC2は、そのような計算を容易かつ迅速に実行することができる。しかしながら、MPCクラスタ130は、デジタルコンポーネントが選択プロセスに勝利する(または潜在的に勝利する)回数を計数中であるので、クラスタは、xによって表されるキャッシュされた勝利選択値または関連するaggregate_idがそれに対して配信のために選択されたブラウザの数を知らず、したがって、カウンタ変数をインクリメントするときに重複が除去されない。MPCクラスタ130によって決定される選択プロセス勝者のMPCクラスタ130のカウントに単に基づいて、キャッシュされた選択値のk-匿名適格性を追跡するとき、特定のaggegrate_idに関連する特定のデジタルコンポーネントは、実際に行われているよりも多くのカウントを受け取ることがあり、たとえば、デジタルコンポーネントが特定のブラウザをマイクロターゲッティングしているので、選択プロセス勝者のすべては、同じブラウザに対するものであり得る。たとえば、この方法は実施するのに簡単であるが、MPCクラスタ130の選択プロセスの勝者を使用するクライアントデバイス110においてクライアント側に最終選択プロセスがある場合、MPCクラスタ130の選択プロセスの勝者は、クライアントデバイス110における表示のために実際に提示されなくてよい。
MPCクラスタ130は、継続的かつ/または非同期にk-匿名適格性を更新することができる。動作がMPCコンピューティングシステム間のいくつかのラウンドトリップを必要とすることに起因して、比較演算はかなりコストがかかるので、MPCクラスタは、必要とされるコンピューティングリソースおよび必要とされる処理時間の量を低減するようにカウンタ変数を更新することによって、k-匿名適格性を周期的に更新することができる。このことにより、コンテンツの配信および選択に対して最低限の影響しか伴わずに、システムが通信コストおよび送信コストを節約することが可能になる。たとえば、1ミリ秒ごとではなく1分ごとに1回、または各所感通知を受信すると、k-匿名適格性のためのカウンタを更新することによって、MPCクラスタ130は、コンピューティングシステムMPC1とMPC2との間のトラフィックを減らすことができ、送信コストを節約することができる。
カウンタ変数を使用してk-匿名適格性が決定されるので、カウンタ変数は、システム内での選択に対する適格性を制御する。したがって、カウンタ変数が十分な頻度で更新されない場合、k個のしきい値がすでに満たされているにもかかわらず、特定の選択値に対応するデジタルコンポーネントがカウンタの更新の間の選択にとって適格でない可能性があり、システムは、周期的に更新することの影響が最小となるようなボリュームで動作する。
上記で説明したように、MPCクラスタは、k、すなわち、k-匿名性のためのしきい値に対してcounteraggregate_id(x)を比較することによって、選択値xがk-匿名性を満たすかどうかを表すフラグsatisfy_k_anonymityxを更新することができる。フラグsatisfy_k_anonymityxを更新するこのステップは、MPC1とMPC2との間の複数のRPCを必要とするが、MPCクラスタ130が更新動作を非同期的に実行するので、そうしたステップはレイテンシ依存でなく、必要とされる処理時間および通信時間によって影響を受けないままである。
図3は、クライアントデバイスへの配信用のデジタルコンポーネントを選択するための例示的なプロセス300を示すフロー図である。プロセス300の動作は、たとえば、MPCクラスタ130のコンピューティングシステムMPC1またはコンピューティングシステムMPC2によって実施され得る。プロセス300の動作はまた、非一時的であってよい1つまたは複数のコンピュータ可読媒体上に記憶された命令として実施され得、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス300の動作を実行させることができる。簡潔のために、プロセス300は、MPCクラスタ130のコンピューティングシステムMPC1によって実行されるものとして説明される。
プロセス300は、セキュアマルチパーティ計算(MPC)システムの第1のサーバによって、クライアントデバイス上のアプリケーションから、選択値に対する要求を受信すること(302)とともに始まる。たとえば、MPCクラスタ130のコンピューティングシステムMPC1は、特定のデジタルコンポーネントスロットに対してクライアントデバイス110から1つまたは複数の選択値に対する要求を受信することができる。要求は、情報の中でも、デジタルコンポーネントスロットの特性、スロットの(デジタルコンポーネントスロットが配置されるコンテンツを含む)コンテキスト、クライアントデバイス110によって指定されるコンテンツ配信および/または選択規則、ならびにユーザ提供の情報を示す情報を含むことができる。いくつかの実装形態では、選択規則は、要求の中で符号化されず、代わりに、コンテンツ発行者によって直接SSP170に、またはコンテンツ作成者によって直接DSP150に指定される。
要求の受信に応答して、プロセス300は、セキュアMPCシステムの第1のサーバが、セキュアMPCシステムの第2のサーバと共同して、プライバシー保存匿名性施行規則を含む、選択規則のセットの各規則を適用することによって、選択値のセットの中から第1の勝利選択値を選択するために、プライバシー保存選択プロセスを行うこと(304)を続ける。たとえば、MPCクラスタ130のコンピューティングシステムMPC1は、MPC2と共同して、図2に関して説明したようにプライバシー保存選択プロセスを実行することができる。MPCクラスタ130は、適格な選択値のセットを決定するために、プライバシー保存匿名性施行規則として、k-匿名性規則を含むすべての選択規則を、UG_Request_Keyに整合するキャッシュされたすべての選択値に適用する。MPCクラスタ130は、次いで、適格な選択値を順序付けし、プライバシー保存選択プロセスの勝者を選択する。
いくつかの実装形態では、プライバシー保存選択プロセスを行うことは、選択値ごとに、選択値にマッピングされる統合識別子にマッピングされるカウンタ変数値をしきい値と比較することと、カウンタ変数値がしきい値よりも小さい場合、選択値を廃棄することとを含む。選択プロセスにとって選択値が不適格であるので、選択値は廃棄される。
要求の受信に応答して、プロセス300は、セキュアMPCシステムの第1のサーバが、セキュアMPCシステムの第2のサーバと共同して、プライバシー保存匿名性施行規則を除いて選択規則のセットの各規則を適用することによって、UG_Request_Keyに整合する選択値のセットの中から第2の勝利選択値を選択するために、反事実的選択プロセスを行うこと(306)を続ける。たとえば、MPCクラスタ130のコンピューティングシステムMPC1は、MPC2と共同して、図2に関して説明したように反事実的選択プロセスを実行することができる。MPCクラスタ130は、適格な選択値のセットを決定するために、k-匿名性規則を除いてすべての選択規則をキャッシュされた選択値に適用する。MPCクラスタ130は、次いで、適格な選択値を順序付けし、反事実的選択プロセスの勝者を選択する。
図2に関して説明したように、プロセスの勝者が送信のために同時に選択され準備ができているように、プライバシー保存選択プロセスおよび反事実的選択プロセスは、バッチプロセスを通じて並行して行われ得る。
プロセス300は、セキュアMPCシステムの第1のサーバによって、プライバシー保存選択プロセスからの勝利選択値および反事実的選択プロセスからの勝利選択値を送信すること(308)を続ける。たとえば、MPCクラスタ130のMPC1は、ファントム値の秘密シェア、または反事実的選択プロセスからの勝利選択値、および実際値の秘密シェア、またはプライバシー保存選択プロセスからの勝利選択値を、クライアントデバイス110に提供することができる。
プライバシー保存選択プロセスからの勝利選択値および反事実的選択プロセスからの勝利選択値を送信することは、MPCクラスタ130のMPC1によって、勝利選択値の第1の秘密シェアをクライアントデバイス110へ送信することと、MPCクラスタ130のMPC2によって、勝利選択値の第2の秘密シェアをクライアントデバイス110へ送信することとを含むことができる。
プロセス300は、セキュアMPCシステムの第1のサーバによって、クライアントデバイス上のアプリケーションから、プライバシー保存選択プロセスからの勝利選択値に対応するデジタルコンポーネントがクライアントデバイスにおいて提示されたことを示すデータを受信すること(310)を続ける。たとえば、MPCクラスタ130のMPC1は、クライアントデバイス110から、実際値がそれに対して提供されたデジタルコンポーネントがクライアントデバイス110においてレンダリングされたことを示す更新通知を受信することができる。
いくつかの実装形態では、通知はまた、セキュアMPCシステムの第1のサーバがプライバシー保存データ構造の値をインクリメントすべきかどうかを示す変数を含む。たとえば、通知は、通知が送られた時間において、反事実的選択プロセスからの勝利選択値が反事実的選択プロセスの勝利選択値としてクライアントデバイスによって受信されたのが指定の時間期間内で初めてであるかどうか、ならびに通知が送られた時間において、プライバシー保存選択プロセスからの勝利選択値がプライバシー保存選択プロセスの勝利選択値としてクライアントデバイスによって受信されたのが指定の時間期間内で初めてであるかどうか、およびプライバシー保存選択プロセスの勝利選択値が反事実的選択プロセスからの勝利選択値とは別個であることを示す、変数を示すことができる。
いくつかの実装形態では、その変数は、MPCクラスタ130がk-匿名性規則をサポートするためのカウンタをインクリメントすべきかどうかを示す。たとえば、アプリケーション112は、最近、特定の選択値のためのカウンタをインクリメントするように、アプリケーション112がMPC1に求めているかどうかに基づいて決定を行うことができる。たとえば、ファントム値と実際値とが同じである場合、アプリケーション112は、2つの値のうちの多くて1つに対してカウンタをインクリメントするようにMPC1に命令する。別の例では、デジタルコンポーネントがファントム値にマッピングされたとき、以前にデジタルコンポーネントに対してカウンタをインクリメントするようにブラウザがMPC1に求めている場合、アプリケーション112は、デジタルコンポーネントが実際値であるとき、近い将来(すなわち、k-匿名性がそこにわたって施行される特定の時間期間内に)カウンタをインクリメントするようにMPC1に命令することを控えることができる。
追加として、プライバシー保存データ構造は、プライバシー保存選択プロセスからの勝利選択値に対応するデジタルコンポーネントのプライバシー保存特性に対する第2の値をさらに含む。たとえば、MPCクラスタ130は、選択値xごとにカウンタ変数satisfy_k_anonymityxを更新することができる。変数satisfy_k_anonymityxは、選択値xがk-匿名性規則を満たすかどうかを表す。追加として、図2に関して上記で説明したように、通知は、通知が送られた時間において、ファントム値がファントム値としてクライアントデバイス110によって受信されたのが指定の時間期間内で初めてであるという、変数is_distinct_phantom_valueを含むことができる。通知はまた、変数is_distinct_actual_valueを含むことができる。
プロセス300は、セキュアMPCシステムによって、反事実的選択プロセスからの勝利選択値に対応するプライバシー保存特性に対する値を維持するプライバシー保存匿名性施行規則を、デジタルコンポーネントが満たすかどうかを決定するためのプライバシー保存データ構造を更新すること(312)を続ける。たとえば、MPCクラスタ130は、選択値xごとにカウンタ変数satisfy_k_anonymityxを更新することができる。変数satisfy_k_anonymityxは、選択値xがk-匿名性規則を満たすかどうかを表す。
各カウンタ変数satisfy_k_anonymityxは、aggregate_idなどの統合識別子にマッピングされる。統合識別子は、選択プロセスの中で使用されるべき候補選択値として1つまたは複数の選択値がそれに対して提供される、たとえば、特定のデジタルコンポーネントにマッピングされる。追加として、セキュアMPCシステムは、非同期的にかつ指定の時間間隔で、プライバシー保存データ構造を更新することができる。たとえば、MPCクラスタ130は、必要とされる送信リソースおよび計算リソースを節約するために2分ごとに、k-匿名性のためのしきい値kに対して、変数counteraggregate_id(x)によって表されるカウンタ変数の値を比較することによって、カウンタ変数を更新することができる。いくつかの実装形態では、セキュアMPCシステムは、性能最適化が必要とされない場合、同期的にプライバシー保存データ構造を更新することができる。
図4は、上記で説明した動作を実行するために使用され得る例示的なコンピュータシステム400のブロック図である。システム400は、プロセッサ410、メモリ420、記憶デバイス430、および入力/出力デバイス440を含む。構成要素410、420、430、および440の各々は、たとえば、システムバス450を使用して相互接続され得る。プロセッサ410は、システム400内での実行のために命令を処理することが可能である。いくつかの実装形態では、プロセッサ410はシングルスレッドプロセッサである。別の実装形態では、プロセッサ410はマルチスレッドプロセッサである。プロセッサ410は、メモリ420の中または記憶デバイス430上に記憶された命令を処理することが可能である。
メモリ420は、システム400内に情報を記憶する。一実装形態では、メモリ420はコンピュータ可読媒体である。いくつかの実装形態では、メモリ420は揮発性メモリユニットである。別の実装形態では、メモリ420は不揮発性メモリユニットである。
記憶デバイス430は、システム400のための大容量ストレージを提供することが可能である。いくつかの実装形態では、記憶デバイス430はコンピュータ可読媒体である。様々な異なる実装形態では、記憶デバイス430は、たとえば、ハードディスクデバイス、光ディスクデバイス、ネットワークを介して複数のコンピューティングデバイスによって共有される記憶デバイス(たとえば、クラウド記憶デバイス)、またはいくつかの他の大容量記憶デバイスを含むことができる。
入力/出力デバイス440は、システム400のための入力/出力動作を行う。いくつかの実装形態では、入力/出力デバイス440は、ネットワークインターフェースデバイス、たとえば、Ethernetカード、シリアル通信デバイス、たとえば、RS-232ポート、および/またはワイヤレスインターフェースデバイス、たとえば、802.11カードのうちの1つまたは複数を含むことができる。別の実装形態では、入力/出力デバイスは、入力データを受信するとともに出力データを外部デバイス460、たとえば、キーボード、プリンタ、およびディスプレイデバイスに送るように構成された、ドライバデバイスを含むことができる。しかしながら、モバイルコンピューティングデバイス、モバイル通信デバイス、セットトップボックステレビクライアントデバイスなどの、他の実装形態も使用され得る。
例示的な処理システムが図4で説明されているが、本主題の実装形態および本明細書で説明する機能的動作は、他のタイプのデジタル電子回路構成で、または本明細書で開示する構造およびそれらの構造的均等物を含むコンピュータソフトウェア、ファームウェア、もしくはハードウェアで、あるいはそれらのうちの1つまたは複数の組合せで実装され得る。
本主題の実施形態および本明細書で説明する動作は、デジタル電子回路構成で、または本明細書で開示する構造およびその構造的均等物を含むコンピュータソフトウェア、ファームウェア、もしくはハードウェアで、あるいはそれらのうちの1つまたは複数の組合せで実装され得る。本明細書で説明する主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のために、またはデータ処理装置の動作を制御するために、(1つまたは複数の)コンピュータ記憶媒体上で符号化された、コンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。代替または追加として、プログラム命令は、データ処理装置による実行のための、好適な受信機装置への送信のために情報を符号化するために生成される、人工的に生成された伝搬信号、たとえば、機械生成された電気信号、光信号、または電磁信号上で符号化され得る。コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの1つもしくは複数の組合せであり得るか、またはそれらに含まれ得る。その上、コンピュータ記憶媒体は伝搬信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝搬信号の中で符号化されたコンピュータプログラム命令のソースまたは宛先であり得る。コンピュータ記憶媒体はまた、1つまたは複数の別個の物理構成要素または媒体(たとえば、複数のCD、ディスク、または他の記憶デバイス)であり得るか、またはそれらに含まれ得る。
本明細書で説明する動作は、1つまたは複数のコンピュータ可読記憶デバイス上に記憶されるかまたは他のソースから受信されるデータに対して、データ処理装置によって実行される動作として実施され得る。
「データ処理装置」という用語は、例として、プログラマブルプロセッサ、コンピュータ、システムオンチップ、または上記の複数のもの、もしくは上記のものの組合せを含む、データを処理するためのあらゆる種類の装置、デバイス、および機械を包含する。装置は、専用論理回路構成、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含むことができる。装置はまた、ハードウェアに加えて、当該のコンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想機械、またはそれらのうちの1つまたは複数の組合せを構成するコードを含むことができる。装置および実行環境は、ウェブサービス、分散コンピューティング基盤およびグリッドコンピューティング基盤などの様々な異なるコンピューティングモデル基盤を実現することができる。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとも呼ばれる)は、コンパイル型言語またはインタプリタ型言語、宣言型言語または手続き型言語を含む、任意の形態のプログラミング言語で書くことができ、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境において使用するのに適した他のユニットとして含む、任意の形態で展開され得る。コンピュータプログラムは、ファイルシステムの中のファイルに対応し得るが、そうである必要はない。プログラムは、他のプログラムもしくはデータ(たとえば、マークアップ言語文書の中に記憶された1つまたは複数のスクリプト)を保持するファイルの一部分の中に、当該のプログラムに専用の単一のファイルの中に、または複数の協調ファイル(たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの部分を記憶するファイル)の中に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに配置されるかもしくは複数のサイトにわたって分散され通信ネットワークによって相互接続される、複数のコンピュータ上で実行されるように展開され得る。
本明細書で説明するプロセスおよび論理フローは、入力データに対して動作するとともに出力を生成することによってアクションを実行するために、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルプロセッサによって実行され得る。プロセスおよび論理フローはまた、専用論理回路構成、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実行され得、装置もそれらとして実装されてよい。
コンピュータプログラムの実行に適したプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方を含む。一般に、プロセッサは、命令およびデータを、読取り専用メモリ、もしくはランダムアクセスメモリ、またはその両方から受信する。コンピュータの必須要素は、命令に従ってアクションを実行するためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータはまた、データを記憶するための1つまたは複数の大容量記憶デバイス、たとえば、磁気ディスク、光磁気ディスク、もしくは光ディスクを含むか、またはそれらからデータを受信することもしくはそれらにデータを転送すること、またはその両方を行うために、動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有することは必須でない。その上、コンピュータは、ほんのいくつかの例を挙げれば、別のデバイス、たとえば、携帯電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲーム機、全地球測位システム(GPS)レシーバ、またはポータブル記憶デバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)の中に組み込まれ得る。コンピュータプログラム命令およびデータを記憶するのに適したデバイスは、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば、内部ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、不揮発性媒体、および不揮発性メモリデバイスを含む。プロセッサおよびメモリは、専用論理回路構成によって増補され得るか、または専用論理回路構成の中に組み込まれ得る。
ユーザとの対話を行うために、本明細書で説明する主題の実施形態は、ユーザに情報を表示するためのディスプレイデバイス、たとえば、CRT(陰極線管)モニタまたはLCD(液晶ディスプレイ)モニタ、ならびにキーボード、およびユーザがそれによってコンピュータに入力を提供することができるポインティングデバイス、たとえば、マウスまたはトラックボールを有する、コンピュータ上で実施され得る。他の種類のデバイスも、ユーザとの対話を行うために使用され得る。たとえば、ユーザに提供されるフィードバックは、任意の形態の知覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであり得、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形態で受け取ることができる。加えて、コンピュータは、ユーザによって使用されるデバイスへ文書を送ること、およびそうしたデバイスから文書を受信することによって、たとえば、ユーザのクライアントデバイス上のウェブブラウザから受信された要求に応答してそのウェブブラウザへウェブページを送ることによって、ユーザと対話することができる。
本明細書で説明する主題の実施形態は、たとえば、データサーバとして、バックエンド構成要素を含むか、またはミドルウェア構成要素、たとえば、アプリケーションサーバを含むか、またはフロントエンド構成要素、たとえば、ユーザがそれを通じて本明細書で説明する主題の一実装形態と対話できるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータを含むか、あるいは1つまたは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、またはフロントエンド構成要素の任意の組合せを含む、コンピューティングシステムにおいて実装され得る。システムの構成要素は、任意の形態または媒体のデジタルデータ通信、たとえば、通信ネットワークによって、相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは、一般に、互いに遠隔にあり、通常、通信ネットワークを通じて相互作用する。クライアントとサーバとの関係は、コンピュータプログラムがそれぞれのコンピュータ上で実行し互いにクライアントサーバ関係を有することによって生じる。いくつかの実施形態では、サーバは、(たとえば、クライアントデバイスと対話するユーザにデータを表示するとともにそのユーザからユーザ入力を受信するために)データ(たとえば、HTMLページ)をクライアントデバイスへ送信する。クライアントデバイスにおいて生成されたデータ(たとえば、ユーザ対話の結果)は、サーバにおいてクライアントデバイスから受信され得る。
上記で説明した実施形態に加えて、以下の実施形態も革新的である。
実施形態1は、セキュアマルチパーティ計算(MPC)システムの第1のサーバによって、クライアントデバイス上のアプリケーションから、選択値に対する要求を受信することと、要求の受信に応答して、かつセキュアMPCシステムの第1のサーバによって、セキュアMPCシステムの第2のサーバと共同して、プライバシー保存匿名性施行規則を含む、選択規則のセットの各規則を適用することによって、選択値のセットの中から第1の勝利選択値を選択するために、プライバシー保存選択プロセスを行うこと、およびセキュアMPCシステムの第2のサーバと共同して、プライバシー保存匿名性施行規則を除いて選択規則のセットの各規則を適用することによって、選択値のセットの中から第2の勝利選択値を選択するために、反事実的選択プロセスを行うことと、セキュアMPCシステムの第1のサーバによって、プライバシー保存選択プロセスからの第1の勝利選択値および反事実的選択プロセスからの第2の勝利選択値を規定する選択結果を送信することと、セキュアMPCシステムの第1のサーバによって、クライアントデバイス上のアプリケーションから、プライバシー保存選択プロセスからの勝利選択値に対応するデジタルコンポーネントがクライアントデバイスにおいて提示されたことを示すデータを含む通知を受信することと、セキュアMPCシステムの第1のサーバによって、反事実的選択プロセスからの第2の勝利選択値に対応するプライバシー保存特性に対する第1の値を維持するプライバシー保存匿名性施行規則を、デジタルコンポーネントが満たすかどうかを決定するためのプライバシー保存データ構造を更新することとを含む方法である。
実施形態2は実施形態1の方法であり、プライバシー保存選択プロセスを行うことおよび反事実的選択プロセスを行うことは、並行して実行される。
実施形態3は実施形態1または2の方法であり、通知は、セキュアMPCシステムの第1のサーバがプライバシー保存データ構造の値をインクリメントすべきかどうかを示す変数をさらに備える。
実施形態4は実施形態1~3のうちのいずれか1つの方法であり、プライバシー保存匿名性施行規則は、k-匿名性規則である。
実施形態5は実施形態1~4のうちのいずれか1つの方法であり、プライバシー保存選択プロセスからの勝利選択値を送信することは、セキュアMPCシステムの第1のサーバによって、プライバシー保存選択プロセスからの勝利選択値の第1の秘密シェアをクライアントデバイスへ送信することと、セキュアMPCシステムの第2のサーバによって、プライバシー保存選択プロセスからの勝利選択値の第2の秘密シェアをクライアントデバイスへ送信することとを備え、反事実的選択プロセスからの勝利選択値を送信することは、セキュアMPCシステムの第1のサーバによって、反事実的選択プロセスからの勝利選択値の第1の秘密シェアをクライアントデバイスへ送信することと、セキュアMPCシステムの第2のサーバによって、反事実的選択プロセスからの勝利選択値の第2の秘密シェアをクライアントデバイスへ送信することとを備える。
実施形態6は実施形態1~5のうちのいずれか1つの方法であり、プライバシー保存データ構造は、カウンタ変数のセットを備え、各カウンタ変数は、統合識別子にマッピングされ、各統合識別子は、1つまたは複数の選択値、および特定のデジタルコンポーネントにマッピングされ、プライバシー保存匿名性施行規則を含む、選択規則のセットの各規則を適用することによって、選択値のセットの中から第1の勝利選択値を選択するために、プライバシー保存選択プロセスを行うことは、選択値ごとに、選択値にマッピングされる統合識別子にマッピングされるカウンタ変数値をしきい値と比較することと、カウンタ変数値がしきい値よりも小さい場合、選択値を廃棄することとを備える。
実施形態7は実施形態1~6のうちのいずれか1つの方法であり、プライバシー保存データ構造を更新することは、非同期的にかつ指定の時間間隔で実行される。
実施形態8は、1つまたは複数のプロセッサと、実行されたとき、実施形態1~7のうちのいずれか1つの方法を1つまたは複数のプロセッサに実行させる命令を含む1つまたは複数のメモリ要素とを備える、システムである。
実施形態9は、分散コンピューティングシステムによって実行されたとき、実施形態1~7のうちのいずれか1つの方法を分散コンピューティングシステムに実行させる命令を用いて符号化されたコンピュータ記憶媒体である。
本明細書は多くの特定の実装詳細を含むが、これらは任意の発明の範囲または特許請求され得るものの範囲に対する限定として解釈されるべきではなく、むしろ特定の発明の特定の実施形態に特有の特徴の説明として解釈されるべきである。別個の実施形態の文脈において本明細書で説明されるいくつかの特徴はまた、単一の実施形態において組み合わせて実施され得る。反対に、単一の実施形態の文脈において説明される様々な特徴はまた、複数の実施形態において別々に、または任意の好適な部分組合せにおいて実施され得る。その上、特徴はいくつかの組合せで働くものとして上記で説明されることがあり、当初はそのようなものとして特許請求されることさえあるが、特許請求される組合せからの1つまたは複数の特徴は、場合によっては、その組合せから削除することができ、特許請求される組合せは、部分組合せまたは部分組合せの変形形態を対象としてよい。
同様に、動作は、特定の順序で図面に示されるが、このことは、望ましい結果を達成するために、そのような動作が図示した特定の順序もしくは逐次的な順序で実行されること、または例示したすべての動作が実行されることを必要とするものとして理解されるべきではない。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。その上、上記で説明した実施形態における様々なシステム構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、説明したプログラム構成要素およびシステムが、一般に、単一のソフトウェア製品の中に一緒に組み込まれ得るか、または複数のソフトウェア製品の中にパッケージ化され得ることを理解されたい。
したがって、本主題の特定の実施形態が説明されている。他の実施形態が以下の特許請求の範囲内に入る。場合によっては、特許請求の範囲の中に列挙されるアクションは、異なる順序で実行することができ、それでもなお望ましい結果を達成することができる。加えて、添付の図面に示されるプロセスは、望ましい結果を達成するために、必ずしも図示の特定の順序または逐次的な順序を必要とするとは限らない。いくつかの実装形態では、マルチタスキングおよび並列処理が有利であり得る。