IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特許7515623情報に対するアクセスを保護するためのセキュアなマルチパーティ計算および確率的データ構造の使用
<>
  • 特許-情報に対するアクセスを保護するためのセキュアなマルチパーティ計算および確率的データ構造の使用 図1
  • 特許-情報に対するアクセスを保護するためのセキュアなマルチパーティ計算および確率的データ構造の使用 図2
  • 特許-情報に対するアクセスを保護するためのセキュアなマルチパーティ計算および確率的データ構造の使用 図3
  • 特許-情報に対するアクセスを保護するためのセキュアなマルチパーティ計算および確率的データ構造の使用 図4
  • 特許-情報に対するアクセスを保護するためのセキュアなマルチパーティ計算および確率的データ構造の使用 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-07-04
(45)【発行日】2024-07-12
(54)【発明の名称】情報に対するアクセスを保護するためのセキュアなマルチパーティ計算および確率的データ構造の使用
(51)【国際特許分類】
   G09C 1/00 20060101AFI20240705BHJP
   G06F 21/60 20130101ALI20240705BHJP
【FI】
G09C1/00 650Z
G06F21/60 320
G09C1/00 660D
【請求項の数】 24
(21)【出願番号】P 2022570382
(86)(22)【出願日】2021-12-13
(65)【公表番号】
(43)【公表日】2023-08-01
(86)【国際出願番号】 US2021063024
(87)【国際公開番号】W WO2022132617
(87)【国際公開日】2022-06-23
【審査請求日】2023-01-06
(31)【優先権主張番号】63/125,142
(32)【優先日】2020-12-14
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】100108453
【弁理士】
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【弁理士】
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【弁理士】
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】ケヴィン・ウェイ・リ・イオ
(72)【発明者】
【氏名】ガン・ワン
【審査官】金沢 史明
(56)【参考文献】
【文献】米国特許出願公開第2016/0180373(US,A1)
【文献】特表2023-511649(JP,A)
【文献】特開2017-215968(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G09C 1/00
G06F 21/60-21/62
G06F 16/28
H04L 9/00- 9/40
(57)【特許請求の範囲】
【請求項1】
複数のマルチパーティ計算(MPC)システムの第1のコンピューティングシステムによって実行される方法であって、
クライアントデバイスから、分布点関数を含むデジタルコンポーネント要求を受信するステップであって、前記分布点関数が、前記クライアントデバイスのユーザがそれぞれの第1のユーザグループ識別子によって識別されるそれぞれの第1のユーザグループのメンバーであるかどうかを示す、それぞれの点関数の秘密共有を各々表す、ステップと、
複数の選択値を識別するステップであって、各選択値が、それぞれのデジタルコンポーネント、コンテキスト信号のセット、および前記それぞれのデジタルコンポーネントが配信されるのに適格であるそれぞれの第2のユーザグループのためのそれぞれの第2のユーザグループ識別子に対応する、ステップと、
各選択値について、前記複数のMPCシステムの1つまたは複数の第2のコンピューティングシステムと共同して実行されるセキュアなMPCプロセスにおいて前記分布点関数を使用して、前記選択値に対応する前記第2のユーザグループ識別子が、前記ユーザをメンバーとして含むユーザグループにマッチするかどうかを示す、候補パラメータを決定するステップと、
前記選択値および前記候補パラメータに基づいて、複数の候補デジタルコンポーネントから、最高選択値を有する所与のデジタルコンポーネントを識別する選択結果の第1の秘密共有を生成するステップであって、各候補デジタルコンポーネントは、前記デジタルコンポーネントに対応する前記選択値に対する前記候補パラメータが、前記選択値に対応する前記第2のユーザグループ識別子が前記ユーザをメンバーとして含むユーザグループにマッチすることを示すデジタルコンポーネントである、ステップと、
前記所与のデジタルコンポーネントを識別する選択結果の前記第1の秘密共有を前記クライアントデバイスに送信するステップと
を含む、方法。
【請求項2】
各選択値に対する前記候補パラメータを決定するステップが、各選択値に対する前記候補パラメータの第1の秘密共有を決定するステップを含む、請求項1に記載の方法。
【請求項3】
前記選択結果の前記第1の秘密共有を生成するステップが、
各選択値の大きさに基づいて、前記選択値の順序を生成するステップと、
前記選択値の前記順序および各選択値に対する前記候補パラメータに基づいて、各選択値に対する累積値の第1の秘密共有を決定するステップであって、各選択値に対する前記累積値が、複数の候補選択値のランク付けされた順序内の前記選択値の位置を示す、ステップと、
各選択値について、(i)前記選択値に対する前記候補パラメータ、および(ii)前記選択値に対する前記累積値が指定された値であるかどうかを示す等価性テストの結果に基づいて、勝者パラメータの第1の秘密共有を決定するステップと、
前記選択結果の前記第1の秘密共有として、前記選択値に対する前記勝者パラメータと前記選択値に対するデジタルコンポーネント情報要素との積の、各選択値に対する和である第1の秘密共有を決定するステップと
を含む、請求項1または2に記載の方法。
【請求項4】
各選択値に対する前記累積値の前記第1の秘密共有を決定するステップが、
個々の選択値の各々について、前記選択値に対応する前記第2のユーザグループ識別子が前記1つまたは複数の第1のユーザグループ識別子のうちの少なくとも1つにマッチすることを示す候補パラメータを有する、最高選択値から前記個々の選択値までの、選択値の量を決定するステップ
を含む、請求項3に記載の方法。
【請求項5】
前記指定された値が1または論理真である、請求項3または4に記載の方法。
【請求項6】
前記分布点関数が、前記クライアントデバイスの前記ユーザをメンバーとして含む複数のユーザグループに基づいて生成される、請求項1から5のいずれか一項に記載の方法。
【請求項7】
前記デジタルコンポーネント要求が、デジタルコンポーネントスロットに対するコンテキスト信号のセットに基づくユーザグループ要求キーを含み、
前記複数の選択値を識別するステップが、データ構造内で、前記ユーザグループ要求キーにマッチするルックアップキーを有する各選択値を識別するステップを含む、請求項1から6のいずれか一項に記載の方法。
【請求項8】
1つまたは複数のプロセッサと、
命令を記憶した、1つまたは複数の記憶デバイスと
を備え、前記命令が、前記1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、請求項1から7のいずれか一項に記載の方法を実行させる、
前記第1のコンピューティングシステム。
【請求項9】
前記第1のコンピューティングシステム内の1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、請求項1から7のいずれか一項に記載の方法を実行させる命令を担持する、コンピュータ可読記憶媒体。
【請求項10】
前記第1のコンピューティングシステムによって実行されると、前記第1のコンピューティングシステムに、請求項1から7のいずれか一項に記載の方法を実行させる命令を含む、コンピュータプログラム。
【請求項11】
複数のマルチパーティ計算(MPC)システムの第1のコンピューティングシステムであって、
1つまたは複数のプロセッサと、
命令を記憶した、1つまたは複数のコンピュータ可読媒体と
を備え、前記命令が、前記1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに複数の動作を実行させ、前記複数の動作が、
クライアントデバイスから、分布点関数を含むデジタルコンポーネント要求を受信する動作であって、前記分布点関数が、前記クライアントデバイスのユーザがそれぞれの第1のユーザグループ識別子によって識別されるそれぞれの第1のユーザグループのメンバーであるかどうかを示す、それぞれの点関数の秘密共有を各々表す、動作と、
複数の選択値を識別する動作であって、各選択値が、それぞれのデジタルコンポーネント、コンテキスト信号のセット、および前記それぞれのデジタルコンポーネントが配信されるのに適格であるそれぞれの第2のユーザグループのためのそれぞれの第2のユーザグループ識別子に対応する、動作と、
各選択値について、前記複数のMPCシステムの1つまたは複数の第2のコンピューティングシステムと共同して実行されるセキュアなMPCプロセスにおいて前記分布点関数を使用して、前記選択値に対応する前記第2のユーザグループ識別子が、前記ユーザをメンバーとして含むユーザグループにマッチするかどうかを示す、候補パラメータを決定する動作と、
前記選択値および前記候補パラメータに基づいて、複数の候補デジタルコンポーネントから、最高選択値を有する所与のデジタルコンポーネントを識別する選択結果の第1の秘密共有を生成する動作であって、各候補デジタルコンポーネントは、前記デジタルコンポーネントに対応する前記選択値に対する前記候補パラメータが、前記選択値に対応する前記第2のユーザグループ識別子が前記ユーザをメンバーとして含むユーザグループにマッチすることを示すデジタルコンポーネントである、動作と、
前記所与のデジタルコンポーネントを識別する選択結果の前記第1の秘密共有を前記クライアントデバイスに送信する動作と
を含む、第1のコンピューティングシステム。
【請求項12】
各選択値に対する前記候補パラメータを決定する動作が、各選択値に対する前記候補パラメータの第1の秘密共有を決定する動作を含む、請求項11に記載の第1のコンピューティングシステム。
【請求項13】
前記選択結果の前記第1の秘密共有を生成する動作が、
各選択値の大きさに基づいて、前記選択値の順序を生成する動作と、
前記選択値の前記順序および各選択値に対する前記候補パラメータに基づいて、各選択値に対する累積値の第1の秘密共有を決定する動作であって、各選択値に対する前記累積値が、複数の候補選択値のランク付けされた順序内の前記選択値の位置を示す、動作と、
各選択値について、(i)前記選択値に対する前記候補パラメータ、および(ii)前記選択値に対する前記累積値が指定された値であるかどうかを示す等価性テストの結果に基づいて、勝者パラメータの第1の秘密共有を決定する動作と、
前記選択結果の前記第1の秘密共有として、前記選択値に対する前記勝者パラメータと前記選択値に対するデジタルコンポーネント情報要素との積の、各選択値に対する和である第1の秘密共有を決定する動作と
を含む、請求項11に記載の第1のコンピューティングシステム。
【請求項14】
各選択値に対する前記累積値の前記第1の秘密共有を決定する動作が、
個々の選択値の各々について、前記選択値に対応する前記第2のユーザグループ識別子が前記1つまたは複数の第1のユーザグループ識別子のうちの少なくとも1つにマッチすることを示す候補パラメータを有する、最高選択値から前記個々の選択値までの、選択値の量を決定する動作
を含む、請求項13に記載の第1のコンピューティングシステム。
【請求項15】
前記指定された値が1または論理真である、請求項14に記載の第1のコンピューティングシステム。
【請求項16】
前記分布点関数が、前記クライアントデバイスの前記ユーザをメンバーとして含む複数のユーザグループに基づいて生成される、請求項11に記載の第1のコンピューティングシステム。
【請求項17】
前記デジタルコンポーネント要求が、デジタルコンポーネントスロットに対するコンテキスト信号のセットに基づくユーザグループ要求キーを含み、
前記複数の選択値を識別する動作が、データ構造内で、前記ユーザグループ要求キーにマッチするルックアップキーを有する各選択値を識別する動作を含む、請求項11に記載の第1のコンピューティングシステム。
【請求項18】
命令を含むコンピュータプログラムであって、
前記命令が、複数のマルチパーティ計算(MPC)システムの第1のコンピューティングシステムによって実行されると、前記第1のコンピューティングシステムに複数の動作を実行させ、前記複数の動作が、
クライアントデバイスから、分布点関数を含むデジタルコンポーネント要求を受信する動作であって、前記分布点関数が、前記クライアントデバイスのユーザがそれぞれの第1のユーザグループ識別子によって識別されるそれぞれの第1のユーザグループのメンバーであるかどうかを示す、それぞれの点関数の秘密共有を各々表す、動作と、
複数の選択値を識別する動作であって、各選択値が、それぞれのデジタルコンポーネント、コンテキスト信号のセット、および前記それぞれのデジタルコンポーネントが配信されるのに適格であるそれぞれの第2のユーザグループのためのそれぞれの第2のユーザグループ識別子に対応する、動作と、
各選択値について、前記複数のMPCシステムの1つまたは複数の第2のコンピューティングシステムと共同して実行されるセキュアなMPCプロセスにおいて前記分布点関数を使用して、前記選択値に対応する前記第2のユーザグループ識別子が、前記ユーザをメンバーとして含むユーザグループにマッチするかどうかを示す、候補パラメータを決定する動作と、
前記選択値および前記候補パラメータに基づいて、複数の候補デジタルコンポーネントから、最高選択値を有する所与のデジタルコンポーネントを識別する選択結果の第1の秘密共有を生成する動作であって、各候補デジタルコンポーネントが、前記デジタルコンポーネントに対応する前記選択値に対する前記候補パラメータが、前記選択値に対応する前記第2のユーザグループ識別子が前記ユーザをメンバーとして含むユーザグループにマッチすることを示すデジタルコンポーネントである、動作と、
前記所与のデジタルコンポーネントを識別する選択結果の前記第1の秘密共有を前記クライアントデバイスに送信する動作と
を含む、コンピュータプログラム
【請求項19】
各選択値に対する前記候補パラメータを決定する動作が、各選択値に対する前記候補パラメータの第1の秘密共有を決定する動作を含む、請求項18に記載のコンピュータプログラム
【請求項20】
前記選択結果の前記第1の秘密共有を生成する動作が、
各選択値の大きさに基づいて、前記選択値の順序を生成する動作と、
前記選択値の前記順序および各選択値に対する前記候補パラメータに基づいて、各選択値に対する累積値の第1の秘密共有を決定する動作であって、各選択値に対する前記累積値が、複数の候補選択値のランク付けされた順序内の前記選択値の位置を示す、動作と、
各選択値について、(i)前記選択値に対する前記候補パラメータ、および(ii)前記選択値に対する前記累積値が指定された値であるかどうかを示す等価性テストの結果に基づいて、勝者パラメータの第1の秘密共有を決定する動作と、
前記選択結果の前記第1の秘密共有として、前記選択値に対する前記勝者パラメータと前記選択値に対するデジタルコンポーネント情報要素との積の、各選択値に対する和である第1の秘密共有を決定する動作と
を含む、請求項18に記載のコンピュータプログラム
【請求項21】
各選択値に対する前記累積値の前記第1の秘密共有を決定する動作が、
個々の選択値の各々について、前記選択値に対応する前記第2のユーザグループ識別子が前記1つまたは複数の第1のユーザグループ識別子のうちの少なくとも1つにマッチすることを示す候補パラメータを有する、最高選択値から前記個々の選択値までの、選択値の量を決定する動作
を含む、請求項20に記載のコンピュータプログラム
【請求項22】
前記指定された値が1または論理真である、請求項21に記載の1つまたは複数の非一時的コンピュータ可読媒体。
【請求項23】
前記分布点関数が、前記クライアントデバイスの前記ユーザをメンバーとして含む複数のユーザグループに基づいて生成される、請求項18に記載のコンピュータプログラム
【請求項24】
前記デジタルコンポーネント要求が、デジタルコンポーネントスロットに対するコンテキスト信号のセットに基づくユーザグループ要求キーを含み、
前記複数の選択値を識別する動作が、データ構造内で、前記ユーザグループ要求キーにマッチするルックアップキーを有する各選択値を識別する動作を含む、請求項18に記載のコンピュータプログラム
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、暗号法およびデータセキュリティに関する。
【背景技術】
【0002】
セキュアなマルチパーティ計算(MPC:multi-party computation)は、どの個々の当事者も別の当事者のデータにアクセスすることができないように、複数の当事者にわたって計算を分散させることによって、データに対するアクセスを防ぐ、暗号プロトコルのファミリーである。MPCコンピューティングシステムは、データの秘密共有を使用して計算を実行する。確率的データ構造は、要素のセットを表すためにハッシュ関数を使用するデータ構造であり、要素がデータ構造によって表されたセット中に含まれるかどうかを決定するために問い合わせられ得る。例示的な確率的データ構造は、ブルームフィルタおよびカッコウ(cuckoo)フィルタを含む。
【発明の概要】
【課題を解決するための手段】
【0003】
一般に、本明細書で説明する主題の1つの発明的態様は、クライアントデバイスから、複数のマルチパーティ計算(MPC)システムの第1のコンピューティングシステムによって、クライアントデバイスのユーザがそれぞれの第1のユーザグループ識別子によって識別されるそれぞれの第1のユーザグループのメンバーであるかどうかを示す、それぞれの点関数の秘密共有を各々表す分布点関数を含む、デジタルコンポーネント要求を受信するステップと、複数の選択値を識別するステップであって、各選択値が、それぞれのデジタルコンポーネント、コンテキスト信号のセット、およびそれぞれのデジタルコンポーネントが配信されるのに適格であるそれぞれの第2のユーザグループのためのそれぞれの第2のユーザグループ識別子に対応する、ステップと、各選択値について、複数のMPCシステムの1つまたは複数の第2のコンピューティングシステムと共同して実行されるセキュアなMPCプロセスにおいて分布点関数を使用して、選択値に対応する第2のユーザグループ識別子が、ユーザをメンバーとして含むユーザグループにマッチするかどうかを示す、候補パラメータを決定するステップと、選択値および候補パラメータに基づいて、複数の候補デジタルコンポーネントから、最高選択値を有する所与のデジタルコンポーネントを識別する選択結果の第1の秘密共有を生成するステップであって、各候補デジタルコンポーネントが、それに対してデジタルコンポーネントに対応する選択値に対する候補パラメータが、選択値に対応する第2のユーザグループ識別子がユーザをメンバーとして含むユーザグループにマッチすることを示す、デジタルコンポーネントである、ステップと、所与のデジタルコンポーネントを識別する選択結果の第1の秘密共有をクライアントデバイスに送信するステップとを含む方法で実施され得る。この態様の他の実装形態は、コンピュータ記憶デバイス上で符号化された、方法の態様を実施するように構成された、対応する装置、システム、およびコンピュータプログラムを含む。
【0004】
これらおよび他の実装形態は、各々、場合によっては、以下の特徴のうちの1つまたは複数を含むことができる。いくつかの態様では、各選択値に対する候補パラメータを決定するステップは、各選択値に対する候補パラメータの第1の秘密共有を決定するステップを含む。
【0005】
選択結果の第1の秘密共有を生成するステップは、各選択値の大きさに基づいて、選択値の順序を生成するステップと、選択値の順序および各選択値に対する候補パラメータに基づいて、各選択値に対する累積値の第1の秘密共有を決定するステップであって、各選択値に対する累積値が、複数の候補選択値のランク付けされた順序内の選択値の位置を示す、ステップと、各選択値について、(i)選択値に対する候補パラメータ、および(ii)選択値に対する累積値が指定された値であるかどうかを示す等価性テストの結果に基づいて、勝者パラメータの第1の秘密共有を決定するステップと、選択結果の第1の秘密共有として、選択値に対する勝者パラメータと選択値に対するデジタルコンポーネント情報要素との積の、各選択値に対する和である第1の秘密共有を決定するステップとを含み得る。
【0006】
各選択値に対する累積値の第1の秘密共有を決定するステップは、個々の選択値の各々について、選択値に対応する第2のユーザグループ識別子が1つまたは複数の第1のユーザグループ識別子のうちの少なくとも1つにマッチすることを示す候補パラメータを有する、最高選択値から個々の選択値までの、選択値の量を決定するステップを含み得る。指定された値は、1であり得る。
【0007】
いくつかの態様では、分布点関数は、クライアントデバイスのユーザをメンバーとして含む複数のユーザグループに基づいて生成される。いくつかの態様では、デジタルコンポーネント要求は、デジタルコンポーネントスロットに対するコンテキスト信号のセットに基づくユーザグループ要求キーを含み、選択値を識別するステップは、データ構造内で、ユーザグループ要求キーにマッチするルックアップキーを有する各選択値を識別するステップを含み得る。
【0008】
本明細書で説明する主題は、以下の利点のうちの1つまたは複数を実現するために特定の実施形態で実装され得る。ユーザ情報の秘密共有に基づいてデジタルコンポーネントを選択するために異なる当事者によって動作させられる2つ以上のMPCサーバによって実行されるセキュアなMPCプロセスを使用することは、MPCサーバ間の不正な共謀なしにMPCサーバまたは別の当事者のいずれかがクリアテキストでユーザ情報にアクセスすることができないことを保証にする。ユーザのクライアントデバイスは、ユーザをメンバーとして含むユーザグループを表す確率的データ構造、たとえば、カッコウフィルタを生成することができ、確率的データ構造に基づいて、分布点関数を生成することができる。分布点関数は、ユーザがユーザグループのメンバーであるかどうかを暗号学的に表す秘密共有である。確率的データ構造および分布点関数をこのように使用することは、ユーザのグループメンバーシップに対するアクセスを防ぐことによって、ユーザプライバシーを保護し、MPCクラスタに提供される情報のサイズを低減する。データサイズのこの低減は、情報を送信するために消費される帯域幅の量を低減し、情報を送信する際のレイテンシを低減し、情報を送信するために必要とされるバッテリーで動作するデバイス(たとえば、モバイルデバイス)に対する処理電力および関連するバッテリー電力の量を低減する。
【0009】
MPCクラスタは、MPCクラスタがセキュアなMPCプロセスを使用して選択した、選択されたデジタルコンポーネントを識別する結果の秘密共有を送信し得る。デジタルコンポーネントのすべてまたは大きなセットに関する情報ではなく、選択されたデジタルコンポーネントのみに対する結果の秘密共有を送ることで、結果を送信および受信する際に消費される帯域幅、レイテンシ、処理電力、およびバッテリー電力を同様に低減する。これはまた、それに関して情報がクライアントデバイスに提供されるデジタルコンポーネントの数を限定することによって、デジタルコンポーネントに対する選択値をMPCクラスタに提出するコンテンツプラットフォームの機密情報の潜在的な漏洩を低減する。
【0010】
上記の主題の様々な特徴および利点について、以下で図に関して説明する。追加の特徴および利点は、本明細書で説明する主題および特許請求の範囲から明らかである。
【図面の簡単な説明】
【0011】
図1】MPCクラスタがクライアントデバイスに配信するためのデジタルコンポーネントを選択するためのセキュアなMPCプロセスを実行する環境のブロック図である。
図2】クライアントデバイスにおいて表示するためのデジタルコンポーネントを選択するための例示的なプロセスのスイムレーン図である。
図3】クライアントデバイスに配信するためのデジタルコンポーネントを選択するための例示的なプロセスのスイムレーン図である。
図4】クライアントデバイスに配信するためのデジタルコンポーネントを選択するための例示的なプロセスを示す流れ図である。
図5】例示的なコンピュータシステムのブロック図である。
【発明を実施するための形態】
【0012】
様々な図面における同様の参照番号および名称は、同様の要素を示す。
【0013】
一般に、本明細書は、コンテンツ選択および配信における情報のセキュリティを保護するためのシステムおよび技法について説明する。サーバコンピュータのMPCクラスタは、セキュアなMPCプロセスを実行して、いずれのMPCサーバも不正な共謀なしにクリアテキストでユーザ情報にアクセスすることが可能であることなく、ユーザ情報に基づいて、デジタルコンポーネントを選択することができる。ユーザ情報は、ネットワークを介して送信されている情報のデータサイズを低減し、送信中に情報をセキュアに保つために、確率的データ構造および/または分布点関数を使用してMPCクラスタに送信され得る。
【0014】
図1は、MPCクラスタがセキュアなMPCプロセスを実行して、クライアントデバイス110に配信するためのデジタルコンポーネントを選択するための環境100のブロック図である。例示的な環境100は、ローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、インターネット、モバイルネットワーク、またはそれらの組合せなどの、データ通信ネットワーク105を含む。ネットワーク105は、クライアントデバイス110、セキュアなMPCクラスタ130、発行者140、ウェブサイト142、コンテンツプラットフォーム、たとえば、供給側プラットフォーム(SSP)170、および需要側プラットフォームDSP(150)を接続する。例示的な環境100は、多くの異なるクライアントデバイス110、セキュアなMPCクラスタ130、発行者140、ウェブサイト142、DSP150、およびSSP170を含み得る。
【0015】
クライアントデバイス110は、ネットワーク105を介して通信することが可能な電子デバイスである。例示的なクライアントデバイス110は、パーソナルコンピュータ、モバイル通信デバイス、たとえば、スマートフォン、およびネットワーク105を介してデータを送信し、受信することができる他のデバイスを含む。クライアントデバイスはまた、マイクロフォンを介してオーディオ入力を受け入れ、スピーカを介してオーディオ出力を出力するデジタルアシスタントデバイスも含み得る。デジタルアシスタントは、オーディオ入力を受け入れるためにマイクロフォンを起動する「ホットワード」または「ホットフレーズ」を検出すると、聴取モードになり得る(たとえば、オーディオ入力を受け入れる準備ができている)。デジタルアシスタントデバイスはまた、画像をキャプチャし、情報を視覚的に表示するためのカメラおよび/またはディスプレイも含み得る。デジタルアシスタントは、ウェアラブルデバイス(たとえば、腕時計または眼鏡)、スマートフォン、スピーカデバイス、タブレットデバイス、または別のハードウェアデバイスを含む、異なる形態のハードウェアデバイスで実装され得る。クライアントデバイスはまた、デジタルメディアデバイス、たとえば、テレビにビデオをストリーミングするためにテレビまたは他のディスプレイにプラグインするストリーミングデバイス、ゲームシステム、または仮想現実システムも含むことができる。
【0016】
クライアントデバイス110は、典型的に、ネットワーク105を介してデータを送信すること、および受信することを円滑にするために、ウェブブラウザおよび/またはネイティブアプリケーションなどのアプリケーション112を含む。ネイティブアプリケーションは、特定のプラットフォームまたは特定のデバイス(たとえば、特定のオペレーティングシステムを有するモバイルデバイス)のために開発されたアプリケーションである。発行者140は、ネイティブアプリケーションを開発し、クライアントデバイス110に提供する、たとえばダウンロード可能にすることができる。ウェブブラウザは、たとえば、クライアントデバイス110のユーザによる、リソース145に対するリソースアドレスのウェブブラウザのアドレスバーへの入力、またはリソースアドレスを参照するリンクの選択に応答して、発行者140のウェブサイト142をホストするウェブサーバからのリソース145を要求することができる。同様に、ネイティブアプリケーションは、発行者のリモートサーバからのアプリケーションコンテンツを要求することができる。
【0017】
いくつかのリソース、アプリケーションページ、または他のアプリケーションコンテンツは、リソース145またはアプリケーションページでデジタルコンポーネントを表示するためのデジタルコンポーネントスロットを含み得る。本明細書全体にわたって使用されるように、「デジタルコンポーネント」という語句は、デジタルコンテンツまたはデジタル情報の別個の単位(たとえば、ビデオクリップ、オーディオクリップ、マルチメディアクリップ、画像、テキスト、またはコンテンツの別の単位)を指す。デジタルコンポーネントは、単一のファイルとして、またはファイルの集合体として物理メモリデバイスに電子的に記憶されてもよく、デジタルコンポーネントは、ビデオファイル、オーディオファイル、マルチメディアファイル、画像ファイル、またはテキストファイルの形態をとり、広告情報を含んでもよく、したがって、広告は、デジタルコンポーネントの一種である。たとえば、デジタルコンポーネントは、アプリケーション112によって表示されるウェブページまたは他のリソースのコンテンツを補足することが意図されるコンテンツであってもよい。より具体的には、デジタルコンポーネントは、リソースコンテンツに関連するデジタルコンテンツを含み得る(たとえば、デジタルコンポーネントは、ウェブページコンテンツと同じトピック、または関連するトピックに関連し得る)。したがって、デジタルコンポーネントのプロビジョンは、ウェブページまたはアプリケーションコンテンツを補足し、一般に強化することができる。
【0018】
アプリケーション112が1つまたは複数のデジタルコンポーネントスロットを含むリソース(またはアプリケーションコンテンツ)をロードすると、アプリケーション112は、各スロットに対するデジタルコンポーネントを要求することができる。いくつかの実装形態では、デジタルコンポーネントスロットは、アプリケーション112に、デジタルコンポーネントを選択し、クライアントデバイス110のユーザに表示するためにデジタルコンポーネントをアプリケーション112に提供するデジタルコンポーネント配信システムからデジタルコンポーネントを要求させるコード(たとえば、スクリプト)を含むことができる。以下で説明するように、アプリケーション112は、MPCクラスタ130および/または1つまたは複数のSSP170からデジタルコンポーネントを要求し得る。
【0019】
一部の発行者140は、SSP170を使用して、そのリソースおよび/またはアプリケーションのデジタルコンポーネントスロットのためのデジタルコンポーネントを取得するプロセスを管理する。SSP170は、リソースおよび/またはアプリケーションのためのデジタルコンポーネントを取得するプロセスを自動化するハードウェアおよび/またはソフトウェアにおいて実装される技術プラットフォームである。各発行者140は、対応するSSP170または複数のSSP170を有し得る。一部の発行者140は、同じSSP170を使用し得る。
【0020】
デジタルコンポーネント提供者160は、発行者のリソースおよびアプリケーションのデジタルコンポーネントスロット内に表示されるデジタルコンポーネントを作成(またはそうでなければ発行)することができる。デジタルコンポーネント提供者160は、DSP150を使用して、デジタルコンポーネントスロット内に表示するために、そのデジタルコンポーネントのプロビジョニングを管理することができる。DSP150は、リソースおよび/またはアプリケーションで表示するためのデジタルコンポーネントを配信するプロセスを自動化するハードウェアおよび/またはソフトウェアにおいて実装される技術プラットフォームである。DSP150は、デジタルコンポーネント提供者160に代わって複数の供給側プラットフォームSSPと対話して、複数の異なる発行者140のリソースおよび/またはアプリケーションで表示するためのデジタルコンポーネントを提供することができる。一般に、DSP150は、デジタルコンポーネントの要求を(たとえば、SSPから)受信し、要求に基づいて1つまたは複数のデジタルコンポーネント提供者によって作成された1つまたは複数のデジタルコンポーネントに対する選択値を生成(または選択)し、デジタルコンポーネント(たとえば、デジタルコンポーネント自体)および選択パラメータに関連するデータをSSPに提供することができる。選択値は、デジタルコンポーネント提供者160が、デジタルコンポーネントの表示またはそれとのユーザ対話のために提供する意思がある量を示すことができる。次いで、SSPは、クライアントデバイス110での表示のためのデジタルコンポーネントを選択し、クライアントデバイス110にデジタルコンポーネントを表示させるデータをクライアントデバイス110に提供することができる。
【0021】
場合によっては、ウェブページ、アプリケーションページ、または、以前にユーザが訪問した、および/もしくはユーザと対話した他の電子リソースに関連する、デジタルコンポーネントをユーザが受信することが有益である。そのようなデジタルコンポーネントをユーザに配信するために、ユーザが特定のリソースを訪問するとき、またはリソースにおいて特定のアクションを実行する(たとえば、ウェブページ上に表示された特定のアイテムと対話する、またはアイテムを仮想カートに追加する)ときに、ユーザがユーザグループ、たとえば、ユーザ関心グループ、同様のユーザのコホート、または同様のユーザデータに関連する他のグループタイプに割り当てられ得る。ユーザグループは、デジタルコンポーネント提供者160によって生成され得る。すなわち、各デジタルコンポーネント提供者160は、ユーザがデジタルコンポーネント提供者160の電子リソースを訪問するとき、ユーザを自分のユーザグループに割り当てることができる。ユーザグループはまた、コンテンツプラットフォームによって、たとえば、DSP150および/またはSSP170によって、作成され得る。
【0022】
ユーザプライバシーを保護するために、ユーザのグループメンバーシップは、ユーザのクライアントデバイス110において、デジタルコンポーネント提供者、コンテンツプラットフォーム、または他の当事者によってではなく、たとえば、アプリケーション112のうちの1つ、またはクライアントデバイス110のオペレーティングシステムによって、維持され得る。特定の例では、信頼できるプログラム(たとえば、ウェブブラウザまたはオペレーティングシステム)は、(たとえば、ユーザがブラウザ、アプリケーション、またはクライアントデバイス110にログインするために)ウェブブラウザまたは別のアプリケーションを使用してユーザのためのユーザグループ識別子のリスト(「ユーザグループリスト」)を維持し得る。ユーザグループリストは、ユーザをメンバーとして含む各ユーザグループのためのグループ識別子を含み得る。ユーザグループを作成するデジタルコンポーネント提供者160は、それらのユーザグループのためのユーザグループ識別子を指定することができる。ユーザグループのためのユーザグループ識別子は、グループ(たとえば、ガーデニンググループ)を記述するものまたはグループを表すコード(たとえば、記述的ではない英数字シーケンス)であり得る。ユーザのためのユーザグループリストは、クライアントデバイス110のセキュアなストレージ内に記憶されてもよく、および/または他者がリストにアクセスすることを防ぐために、記憶されるときに暗号化されてもよい。
【0023】
アプリケーション112がデジタルコンポーネント提供者160に関するリソースまたはアプリケーションコンテンツを表示するとき、またはウェブページをウェブサイト142上に表示するとき、リソースは、アプリケーション112が1つまたは複数のユーザグループ識別子をユーザグループリストに追加することを要求することができる。それに応答して、アプリケーション112は、1つまたは複数のユーザグループ識別子をユーザグループリストに追加し、ユーザグループリストをセキュアに記憶することができる。
【0024】
MPCクラスタ130は、ユーザのユーザグループメンバーシップを使用して、ユーザの関心を引く可能性があるか、または他の形でユーザ/ユーザデバイスに有益であり得る、デジタルコンポーネントまたは他のコンテンツを選択し得る。たとえば、そのようなデジタルコンポーネントまたは他のコンテンツは、ユーザ経験を改善する、ユーザデバイスの実行を改善する、または何らかの他の形でユーザまたはユーザデバイスに利益を与えるデータを含み得る。しかしながら、ユーザのユーザグループリストのユーザグループ識別子は、MPCクラスタ130のコンピューティングシステムMPC1およびMPC2がクリアテキストでユーザのためのユーザグループ識別子にアクセスすることを防ぎ、それにより、デジタルコンポーネントを選択するためにユーザグループメンバーシップデータを使用するときにユーザプライバシーを保護する形でデジタルコンポーネントを選択するために提供され使用され得る。クリアテキストは、キーもしくは他の復号デバイス、または他の解読プロセスを必要とせずに閲覧または使用することができる形式で、計算上タグ付けされていない、特別にフォーマットされていない、またはコードで書かれていないテキスト、またはバイナリファイルを含むデータである。
【0025】
セキュアなMPCクラスタ130は、セキュアなMPCプロセスを実行して、ユーザのグループメンバーシップに基づくが、クリアテキスト内のグループメンバーシップ情報にアクセスせずに、ユーザのクライアントデバイスへの配信のためのデジタルコンポーネントを選択するための2つのコンピューティングシステムMPC1およびMPC2(たとえば、サーバコンピュータ)を含む。例示的なMPCクラスタ130は2つのコンピューティングシステムを含むが、MPCクラスタ130が2つ以上のコンピューティングシステムを含む限り、より多くのコンピューティングシステムもまた使用され得る。たとえば、MPCクラスタ130は、3つのコンピューティングシステム、4つのコンピューティングシステム、または別の適切な数のコンピューティングシステムを含んでよい。MPCクラスタ130内でより多くのコンピューティングシステムを使用することは、より多くのセキュリティを提供し得るが、MPCプロセスの複雑さをやはり増大させ得る。
【0026】
コンピューティングシステムMPC1およびMPC2は、異なるエンティティによって動作させられ得る。このようにして、各エンティティは、クリアテキストで、ユーザのグループメンバーシップに対するアクセスを有することができない。たとえば、コンピューティングシステムMPC1およびMPC2のうちの1つは、ユーザとは異なる信頼できる当事者、発行者140、DSP150、SSP170、およびデジタルコンポーネント提供者160によって動作させられ得る。たとえば、業界団体、政治団体、またはブラウザ開発者がコンピューティングシステムMPC1およびMPC2のうちの1つを維持し動作させることができる。他のコンピューティングシステムは、信頼できる異なる当事者が各コンピューティングシステムMPC1およびMPC2を動作させるように、これらのグループのうちの異なる1つによって動作させられ得る。異なるコンピューティングシステムMPC1およびMPC2を動作させている異なる当事者はユーザプライバシーを危険にさらすことを共謀する動機を持っていないことが好ましい。いくつかの実装形態では、コンピューティングシステムMPC1およびMPC2は、アーキテクチャ上分離され、本明細書で説明するセキュアなMPCプロセスを実行するほかに互いと通信しないように監視される。
【0027】
本明細書全体にわたる説明に加えて、ユーザには、本明細書で説明するシステム、プログラム、または特徴がユーザ情報(たとえば、ユーザのソーシャルネットワーク、ソーシャルアクションもしくはアクティビティ、職業、ユーザの選好、またはユーザの現在のロケーションについての情報)の収集を可能にし得るか、およびいつ可能にし得るかと、サーバからのコンテンツまたは通信がユーザに送信されるかの両方に関して、ユーザが選択を行うことを可能にする制御(たとえば、それを用いてユーザが対話し得るユーザインターフェース要素)が提供され得る。加えて、いくつかのデータは、個人を識別できる情報が除去されるように、記憶または使用される前に1つまたは複数の方法で扱われ得る。たとえば、ユーザの識別情報は、個人を識別できる情報がユーザについて決定できないように扱われてもよく、またはユーザの地理的位置は、ユーザの具体的なロケーションを決定できないように、ロケーション情報が取得される場合に(都市、ZIPコード、もしくは州のレベルなどに)一般化されてもよい。したがって、ユーザは、ユーザについてのどの情報が収集されるか、その情報がどのように使用されるか、およびどの情報がユーザに提供されるかを制御することができる。
【0028】
図2は、クライアントデバイスにおいて表示するためのデジタルコンポーネントを選択するための例示的なプロセス200のスイムレーン図である。プロセス200の動作は、たとえば、クライアントデバイス110、MPCクラスタ130のコンピューティングシステムMPC1およびMPC2、およびDSP150によって実装され得る。プロセス200の動作は、非一時的であり得る1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス200の動作を実行させ得る。プロセス200および以下の他のプロセスは2つのコンピューティングシステムMPCクラスタ130に関して説明されるが、同様のプロセスを実行するために、2つより多いコンピューティングシステムを有するMPCクラスタが使用されてもよい。加えて、プロセス200の動作は、SSP170によって実装され得る。
【0029】
DSP150は、デジタルコンポーネントに対する選択値をMPCクラスタ130に提供する(202)。場合によっては、DSP150は、SSP170を介して、選択値をMPCクラスタ130に提供することができる。上記で説明したように、選択値は、デジタルコンポーネント提供者160が、デジタルコンポーネントの表示またはそれとのユーザ対話のために提供する意思がある量を示すことができる。MPCクラスタ130は、クライアントデバイス110から受信される将来のデジタルコンポーネント要求のために、選択値を記憶することができる。各デジタルコンポーネントについて、DSP150はまた、デジタルコンポーネントに関する追加のデータ、たとえば、メタデータをアップロードし得る。デジタルコンポーネントに関する追加のデータは、デジタルコンポーネントに対応するユーザグループのためのユーザグループ識別子を含み得る。たとえば、DSP150は、ユーザグループのメンバーであるユーザのクライアントデバイス110にデジタルコンポーネントが配信されるキャンペーンを管理することができる。
【0030】
デジタルコンポーネントに関するデータは、デジタルコンポーネントが適格であるコンテキスト、たとえば、クライアントデバイス110のロケーション、アプリケーション112に対して選択された音声言語、および/またはデジタルコンポーネントが表示され得るリソース用のユニバーサルリソースロケータ(URL)を示す、コンテキスト選択信号を含み得る。デジタルコンポーネントに関するこのデータはまた、たとえば、一意の識別子、そこからデジタルコンポーネントが取得され得るドメイン、および/またはデジタルコンポーネントに関する他の適切なデータを使用して、デジタルコンポーネントを識別することもできる。
【0031】
いくつかの実装形態では、MPCクラスタ130は、デジタルコンポーネント要求のために、MPCクラスタ130に提供されるデジタルコンポーネントに対する選択値をキャッシュするか、またはさもなければ記憶する。この例では、デジタルコンポーネントおよび選択値に対するコンテキスト信号は、そのデジタルコンポーネント要求内に含まれたコンテキスト信号を含み得る。
【0032】
いくつかの実装形態では、各コンピューティングシステムMPC1およびMPC2は、2段階のルックアップテーブル(LUT)を使用して、デジタルコンポーネントに対する選択値を記憶する。2段階のLUTの使用は、いくつかの性能利点を提供し得るが、他の適切なデータ構造が使用されてもよい。第1の段階は、ユーザグループ要求キー(UG_Request_Key)によってキーイングされ得る。UG_Request_Keyは、コンテキスト信号のセット、たとえば、デジタルコンポーネント要求のコンテキスト信号のセット(たとえば、URL、ロケーション、言語など)またはデジタルコンポーネントが配信のために適格であるコンテキスト信号のセットに基づく複合メッセージであり得る。すなわち、第1の段階のLUTは、コンテキスト信号のセットに基づいてキーイングされ得る。第1の段階用のキーは、たとえば、SHA256などのハッシュ関数を使用する、UG_Request_Keyのハッシュであり得る。このキーは、指定された数のビットに、たとえば、16ビット、32ビット、または別の適切な数のビットにトランケートされ得る。第1の段階のLUT内の各キーUG_Request_Keyに対する値は、UG_Request_Keyのコンテキスト信号を含むデジタルコンポーネント要求に適格であるデジタルコンポーネントに関するデータを含む第2の段階のLUTを示し得る。たとえば、2段階のLUTは、各一意のキーUG_Request_Keyに対するそれぞれの第2の段階のLUTを有し得る。例示的な第1の段階のLUTは、Table 1(表1)として以下に示されている。
【表1】
【0033】
第2の段階のLUTは、ユーザグループ識別子に基づいてキーイングされ得る。いくつかの実装形態では、たとえば、第2の段階のLUTが、複数のキーUG_Request_Keyに関するデータを含む単一のテーブルである場合、第2の段階のLUTは、キーUG_Request_Keyとユーザグループ識別子の組合せに基づいてキーイングされ得る。この例では、各SHA256(UG_Request_Key)に対する値は、SHA256(UG_Request_Key)に対応するLUTのサブセクション(すなわち、連続する行)を指定するためのペア[beginning_row,ending_row]である。第2の段階のLUT内の各行は、特定のデジタルコンポーネントに対する特定の選択値用であり得る。たとえば、DSP150は、同じデジタルコンポーネントに対して異なる選択値を提出することができ、各選択値は、コンテキスト信号および/または異なるユーザグループ識別子の異なるセットに対する。したがって、デジタルコンポーネントに対する選択値は、コンテキストに基づいて異なり得る。
【0034】
DSP150またはデジタルコンポーネント提供者160は、デジタルコンポーネントを、DSP150またはデジタルコンポーネント提供者がそのデジタルコンポーネントが表示されることを望むユーザグループに関連付ける、たとえば、リンクまたはマッピングすることができる。たとえば、DSP150は、男性用のバスケットシューズに関するデジタルコンポーネントがバスケットおよび/または靴に関心を示した男性に表示されることを望むことがある。この例では、DSP150は、デジタルコンポーネントがバスケットおよび/または靴に関心を示した男性を含むユーザグループのためのユーザグループ識別子に対応することを示すデータをMPCクラスタ130に提供し得る。
【0035】
いくつかの実装形態では、第2の段階のLUT内の行に対するキーは、ユーザグループ要求キーUG_Request_Keyとその行のデジタルコンポーネントのためのユーザグループ識別子の組合せに基づいて生成されたハッシュまたはコードであってよい。たとえば、キーは、HMACSHA256(UG_Request_Key,ug_id)として表され得る、組合せのハッシュベースのメッセージ認証コード(HMAC)であってよい。ユーザグループ識別子ug_idは、ユーザグループのための内部ユーザグループ識別子とユーザグループの所有者の(たとえば、DSP、SSP、またはユーザグループを所有するデジタルコンポーネント提供者の)ドメインの組合せに基づき得る。たとえば、ユーザグループ識別子ug_idは、ユーザグループのための所有者ドメインおよび所有者の内部ユーザグループ識別子のeTLD+1のデジタルダイジェストであり得る。eTLD+1は、有効なトップレベルドメイン(eTLD)に、パブリックサフィックスよりも1つ多いレベルを加えたものである。例示的なeTLD+1は、「example.com」であり、「.com」は、トップレベルドメインである。ug_idは、16バイトまたは別の適切なデータサイズにトランケートされてよい。
【0036】
前の男性用バスケットシューズの例を続けると、男性用バスケットシューズグループ内でユーザに表示されることになるデジタルコンポーネントに関する情報を含む行に対する第2の段階のルックアップキーは、ユーザグループ要求キーUG_Request_Keyと男性用バスケットシューズグループのためのユーザグループ識別子ug_idの組合せであってよい。デジタルコンポーネントは異なるコンテキストで表示され得るため、第2の段階のルックアップテーブルは、各々が異なるユーザグループ要求キーUG_Request_Keyおよび異なる値を備えた、男性用バスケットシューズグループのためのユーザグループ識別子ug_idを含む、異なるユーザグループ識別子に関連するデジタルコンポーネントに対する複数の行を含み得る。
【0037】
第2の段階のLUTの各行に対する値は、デジタルコンポーネントに対する選択値、および、たとえば、デジタルコンポーネントまたはそこからデジタルコンポーネントがダウンロードされ得るネットワークロケーションを識別するメタデータなど、デジタルコンポーネントに関する他のデータであり得る。値は、選択値およびメタデータを有するバイトアレイであり得る、デジタルコンポーネント情報要素dc_information_elementであり得る。バイトアレイは、クライアントデバイス110のアプリケーション112または信頼できるプログラム、ならびにコンピューティングシステムMPC1およびMPC2が、選択値およびメタデータを取得するためにパースすることができる、特定のフォーマットを有し得る。例示的な第2の段階のLUTは、Table 2(表2)として以下に示されている。
【表2】
【0038】
第2の段階のLUTは、選択値を特定のデジタルコンポーネントに、特定のユーザグループ識別子ug_idに、また第1の段階のルックアップキーUG_Request_Keyによって定義されるコンテキスト信号の特定のセットにマッピングし、第1の段階のルックアップキーUG_Request_Keyは、場合によっては、第2の段階のLUTキーの計算において存在し得る。そうすることによって、第2の段階のLUTは、デジタルコンポーネントに対する選択値が意図されるデジタルコンポーネントスロットの特定のコンテキストを示す。これは、DSP150またはデジタルコンポーネント提供者160が、コンテキスト信号およびユーザのグループメンバーシップによって定義される異なるコンテキストに対する同じデジタルコンポーネントに対して、異なる選択値を指定することを可能にする。デジタルコンポーネントが表示されることになるユーザが特定のユーザグループ識別子ug_idによって識別される特定のユーザグループのメンバーであることを示すデジタルコンポーネント要求が受信され、デジタルコンポーネントが第1の段階のルックアップキーのコンテキスト信号によって定義される特定のコンテキスト内で表示されることになるとき、マッチするユーザグループ識別子とマッチする第1の段階のルックアップキーとを有する第2の段階のLUT内のいずれかの選択値は、要求に応答して配信するために選択される候補である。
【0039】
クライアントデバイス110は、コンテンツを受信する(204)。たとえば、クライアントデバイス110は、ウェブブラウザによる表示のための電子リソース(たとえば、ウェブページ)またはネイティブアプリケーションによる表示のためのアプリケーションコンテンツを受信し得る。コンテンツは、実行されると、各スロットに対するデジタルコンポーネントをクライアントデバイス110に要求させるコンピュータ可読コード、たとえば、スクリプトを含む、1つまたは複数のデジタルコンポーネントスロットを含み得る。クライアントデバイス110は、コンテンツをクライアントデバイス110のディスプレイ上にレンダリングすることができる。
【0040】
クライアントデバイス110は、ユーザグループ識別子のセットを識別する(206)。ユーザグループ識別子のセットは、ユーザをメンバーとして含むユーザグループのためのユーザグループ識別子であり得る。たとえば、ユーザグループ識別子のセットは、ユーザグループリスト内のユーザグループ識別子であり得る。コンテンツまたは信頼できるプログラムをレンダリングするアプリケーション112は、たとえば、クライアントデバイス110のセキュアなストレージからユーザグループリストにアクセスすることによって、ユーザグループ識別子のセットを識別し得る。
【0041】
クライアントデバイス110は、確率的データ構造を生成する(208)。アプリケーション112または信頼できるプログラムは、ユーザグループ識別子のセットを使用して、確率的データ構造を生成し得る。いくつかの実装形態では、確率的データ構造は、2つのハッシュ関数F1およびF2を使用する表を用いたカッコウフィルタである。カッコウハッシングは、各エントリがせいぜい1つのアイテムを含むことになるように、N個のアイテム、たとえば、ユーザグループ識別子を記憶するために合計(1+\epsilon)N個のエントリを備えた2つの(またはそれ以上の)表を使用するハッシング方法である。加えて、各アイテム、たとえば、ユーザグループ識別子は、その出力がセット[(1+\epsilon)N]である、2つのハッシュ関数F1およびF2のうちの1つによって定義される2つのエントリのうちの1つの中に出現することになる。キーkに関連するアイテムは、第1の表内のロケーションF1(k)または第2の表内のF2(k)のいずれかに出現することになる。適度に大きなN個のアイテム(たとえば、N≧1,000)の場合、N個のアイテムが、結合表サイズが1.1Nである、カッコウハッシングを用いてハッシングされ得ることを意味する\epsilon=0.1を使用すれば十分である。これらの式において、イプシロンは負荷ファクタと呼ばれることがある。
【0042】
カッコウフィルタを使用してスパースなプライベート情報検索データ構造を構築するために、カッコウハッシングを使用して、最大でN個のユーザグループ識別子が2つの表内にハッシングされ、これらの表は結合されると、1.1Nのサイズまたは別の適切なサイズを有する。すべての空のエントリは、0ビットストリングで置換され得る。キーkに関連するユーザグループ識別子を問い合わせるために、ユーザグループ識別子は(それがデータ構造内に存在する場合)、第1の表内のエントリF1(k)または第2の表内のF2(k)に出現することになる。表サイズC=1.1Nを使用することは、結果として1≦F1(ug_id),F2(ug_id)≦Cをもたらすことになる。
【0043】
クライアントデバイス110は、ユーザグループ識別子のセット内の各ユーザグループ識別子に対して、両方のハッシュ関数F1およびF2を使用して、ユーザグループ識別子に対する両方の考えられるロケーションを計算することによって、カッコウフィルタを生成し得る。2つの考えられるロケーションのうちの少なくとも1つが空である場合、クライアントデバイス110は、いずれかの表の中にあり得る空のロケーション内に要素を挿入して、そのユーザグループ識別子に対する挿入プロセスを完了し得る。両方のロケーションが占有される場合、クライアントデバイス110は、1つのロケーションをランダムに選び、現在そのロケーション内にあるアイテムを挿入されるべきアイテムにスワップする。クライアントデバイス110は、次いで、2つのハッシュ関数F1およびF2を再計算し、再度、挿入を試みることができる。挿入が成功するかまたはユーザグループ識別子のセット内の各ユーザグループ識別子に対してあまりにも多くの試みが失敗するまで、このプロセスは繰り返す。カッコウフィルタが構築された後、各ユーザグループ識別子ug_idは表の特定のインデックス内に記憶される。
【0044】
クライアントデバイス110は、分布点関数を生成する(210)。アプリケーション112または信頼できるプログラムは、点関数およびカッコウフィルタ表を使用して、分布点関数を生成し得る。分布点関数は、点関数の秘密共有を表す。概して、点関数はfi:[N]→[N]であり、ここで、x!=iおよびf(i)=1であるとき、f(x)=0である。点関数fiの秘密共有は、セット[N]内のすべてのxに対してfi(x)=gi(x)+hi(x)であるように、2つの関数gi:[N]→[N]およびhi:[N]→[N]である。さらに、関数hiまたはgi(両方ではない)の規格を考慮すれば、元の関数fiを復元することは不可能である。
【0045】
∀j∈[1,C]の場合、以下の関係1および2が満たされるように、各ug_idに対して、分布点関数gug_id,1およびgug_id,2に分割され得る点関数Gug_idが必要とされる。
i=F1(ug_id)である場合、Gug_id(i)=gug_id,1(i)+gug_id,2(i)=ug_id (1)
そうでなければ、Gug_id(i)=gug_id,1(i)+gug_id,2(i)=0 (2)
【0046】
同様に、∀j∈[1,C]の場合、以下の関係3および4が満たされるように、分布点関数hug_id,1およびhug_id,2に分割され得る点関数Hug_idが必要とされる。
i=F2(ug_id)である場合、Hug_id(i)=hug_id,1(i)+hug_id,2(i)=ug_id (3)
そうでなければ、Hug_id(i)=hug_id,1(i)+hug_id,2(i)=0 (4)
【0047】
すなわち、特定の点関数の分布点関数は、複数の考えられる点、たとえば、複数の考えられるユーザグループ識別子に対して評価され得るが、ユーザをメンバーとして含み、かつ分布点関数が生成されたユーザグループのためのユーザグループ識別子ug_idを除いて、結果は常にゼロである。分布点関数は、あまり帯域幅を使用せず、他の暗号化フォームのユーザグループ識別子を送信するのと比較して低いレイテンシで、ネットワークを介して送信され得る非常に小さなデータサイズを有する。
【0048】
所与のユーザグループ識別子ug_id、点関数F1およびカッコウフィルタの対応する第1の表について、クライアントデバイス110は、コンピューティングシステムMPC1に対して分布点関数gug_id,1およびコンピューティングシステムMPC2に対して分布関数gug_id,2を生成する。同様に、所与のユーザグループ識別子ug_id、点関数F2およびカッコウフィルタの対応する第2の表について、クライアントデバイス110は、コンピューティングシステムMPC1に対して分布点関数hug_id,1およびコンピューティングシステムMPC2に対して分布点関数hug_id,2を生成する。
【0049】
クライアントデバイス110は、分布点関数を含むデジタルコンポーネント要求をMPCクラスタ130に送信する(212)。デジタルコンポーネント要求は、各ユーザグループ識別子ug_idに対する分布点関数のペアを含み得る。クライアントデバイス110は、各分布点関数gug_id,1および各分布点関数hug_id,1を含むデジタルコンポーネント要求をコンピューティングシステムMPC1に送信し得る。デジタルコンポーネント要求は、第1の段階のルックアップ鍵、たとえば、SHA256(UG_Request_Key)を含み得る。クライアントデバイス110は、デジタルコンポーネント要求に対するコンテキスト信号に基づいて、第1の段階のルックアップキーを生成し得る。たとえば、クライアントデバイス110は、それを用いて選択されたデジタルコンポーネントが表示されることになるリソースのURL、デジタルコンポーネント要求を提出するクライアントデバイス110のロケーション、選択されたデジタルコンポーネントを表示することになるアプリケーション112の発話言語など、コンテキスト信号を含む複合メッセージを生成することによって、第1の段階のルックアップキーを生成し得る。クライアントデバイス110は、次いで、ハッシュ関数、たとえば、SHA256関数を複合メッセージに適用して、第1の段階のルックアップキーを生成し得る。
【0050】
同様に、クライアントデバイス110は、各分布点関数gug_id,2および各分布点関数hug_id,2を含むデジタルコンポーネント要求をコンピューティングシステムMPC2に送信し得る。このデジタルコンポーネント要求はまた、第1の段階のルックアップキー、たとえば、SHA256(UG_Request_Key)も含み得る。コンテキスト信号は同じであるため、第1の段階のルックアップキーは、MPCクラスタ130の2つのコンピューティングシステムMPC1およびMPC2に送信されたデジタルコンポーネント要求に対して同じであり得る。
【0051】
コンピューティングシステムMPC1は、加法的秘密共有のベクトル[M1]=[m1,1,...mC,1]を作成することができ、式中、1≦i≦Cの場合、mi,1ug_id gug_id,1(i)である。本明細書で、括弧は秘密の秘密共有を表すために使用される。コンマの後のサブスクリプトは、秘密共有を指定するために使用され、たとえば、gug_id,1は第1の秘密共有であり、gug_id,2は第2の秘密共有である。同様に、コンピューティングシステムMPC2は、加法的秘密共有のベクトル[M2]=[m1,2,...mC,2]を作成することができ、式中、1≦i≦Cの場合、mi,2ug_id gug_id,2(i)である。この例では、秘密共有[mi,1]および[mi,2]は、Gug_id(i)の加法的秘密共有であり、[M1]および[M2]は、Mの2つの加法的秘密共有、すなわち、次元Cのベクトルであり、ここで、Mi=Gug_id(i)である。秘密共有は、シャミアの秘密共有または別の適切な秘密共有技法を使用して生成され得る。コンピューティングシステムMPC1およびMPC2は、点関数hug_id,1(i)およびhug_id,1(i)に対して同様のベクトルを生成し得る。
【0052】
MPCクラスタ130は、分布点関数を使用して、セキュアなMPCプロセスを実行して、クライアントデバイス110のユーザをメンバーとして含むユーザグループに基づいて、デジタルコンポーネントを選択する(214)。これは、第1の段階のルックアップキーを使用して、コンピューティングシステムMPC1およびMPC2の2段階のルックアップテーブル内のデジタルコンポーネントに対する適格な選択値を識別することを含み得る。これはまた、ユーザのためのユーザグループ識別子のうちの1つにマッチするユーザグループ識別子を有するデジタルコンポーネントに基づいて、選択の候補であるデジタルコンポーネントに対する選択値を識別することを含んでもよい。これはまた、デジタルコンポーネントに対する選択値に基づいて候補デジタルコンポーネントからデジタルコンポーネントを選択することも含み得る。これはすべて、コンピューティングシステムMPC1またはMPC2のいずれもクリアテキストでユーザグループ識別子にアクセスすることなしに実行され得る。セキュアなMPCプロセスを使用してデジタルコンポーネントを選択するための例示的なプロセスについては、図3に示し、以下で説明する。
【0053】
MPCクラスタ130は、選択結果の秘密共有をクライアントデバイス110に送信する(216)。選択結果は、選択されたデジタルコンポーネントに関する情報を含むバイトアレイの形態であってよい。たとえば、選択結果は、第2のLUT内のデジタルコンポーネントに対する値、たとえば、デジタルコンポーネントに関する選択値およびデジタルコンポーネントに関するメタデータを含むバイトアレイであってよい。コンピューティングシステムMPC1およびMPC2は、以下でより詳細に説明するように、セキュアなMPCプロセスを使用して、選択結果の秘密共有を決定し得る。コンピューティングシステムMPC1は、選択結果の第1の秘密共有をクライアントデバイス110に送信することができ、コンピューティングシステムMPC2は、選択結果の第2の秘密共有をクライアントデバイス110に送信することができる。コンピューティングシステムMPC1およびMPC2が選択されたデジタルコンポーネントを知ることを防ぐために、コンピューティングシステムMPC1およびMPC2が選択結果のそれらの秘密共有を互いと共有することを防ぐことができる。たとえば、コンピューティングシステムMPC1およびMPC2は、アプリケーションの(たとえば、ブラウザの)パブリックキーを使用して、その秘密共有を独立して暗号化することができる。
【0054】
2表カッコウフィルタが使用されるとき、MPCクラスタ130は、各表に対して1つ、2つの選択結果の秘密共有を提供し得る。しかしながら、2つのデジタルコンポーネントに対する2つのユーザグループリスト選択値を検索することは、選択値のスクラッピングを促す。このリスクを低減するために、MPCクラスタ130は、以下で説明するように、別のセキュアなMPC技法を使用して、最高選択値を備えたせいぜい1つの選択結果を返すことができる。
【0055】
クライアントデバイス110は、選択結果に対応するデジタルコンポーネントを決定する(218)。それに関してクライアントデバイス110がコンピューティングシステムMPC1およびMPC2から2つの秘密共有を受信する各選択結果について、クライアントデバイス110は、2つの秘密共有から選択結果を決定し得る。たとえば、以下でより詳細に説明するように、加法的秘密共有ライブラリを使用して、クライアントデバイス110は、選択結果の2つの秘密共有を一緒に加えて、クリアテキストで選択結果を取得し得る。これは、デジタルコンポーネントに対する選択値およびデジタルコンポーネントに関するメタデータ、たとえば、デジタルコンポーネントの識別情報、そこからクライアントデバイス110がデジタルコンポーネントをダウンロードし得るロケーションに対するアクセスをクライアントデバイス110に与える。
【0056】
クライアントデバイス110は、デジタルコンポーネントを表示し得る(220)。たとえば、アプリケーション112は、ステップ204において受信されたコンテンツとともにデジタルコンポーネントを表示し得る。いくつかの実装形態では、クライアントデバイス110は、選択結果のデジタルコンポーネントを表示し得る。2つの選択結果が受信される場合、クライアントデバイス110(たとえば、アプリケーション112)は、最高選択値を有するデジタルコンポーネントを選択し、選択されたデジタルコンポーネントを表示し得る。
【0057】
いくつかの実装形態では、クライアントデバイス110は、MPCクラスタ130からのユーザグループメンバーシップに基づいて、デジタルコンポーネントを要求することができる。クライアントデバイス110はまた、SSP170からのコンテキスト信号に基づいて、デジタルコンポーネントを要求することもできる。これらのコンテキスト信号は、上記で説明した同じコンテキスト信号、および場合によっては、リソースのデジタルコンポーネントスロットの数、デジタルコンポーネントスロットのタイプ、リソースとともに表示され得るデジタルコンポーネントのタイプおよび/またはフォーマットなど、追加のコンテキスト信号を含み得る。SSP170は、コンテキスト信号に基づく1つまたは複数のデジタルコンポーネント、およびデジタルコンポーネントに対する選択値を選択し、選択されたデジタルコンポーネントのうちの1つまたは複数(または、デジタルコンポーネントを識別するデータ)、およびデジタルコンポーネントに対する選択値を、クライアントデバイス110に提供することができる。クライアントデバイス110は、次いで、MPCクラスタ130から受信された選択結果のデジタルコンポーネントおよびSSP170によって選択されたデジタルコンポーネントを含むデジタルコンポーネントのセットから、リソースとともに表示するためのデジタルコンポーネントを選択することができる。
【0058】
リソースが複数のデジタルコンポーネントスロットを含む場合、クライアントデバイス110は、各スロットに対するそれぞれのデジタルコンポーネントをMPCクラスタ130から、またSSP170から要求し得る。消費される帯域幅およびレイテンシを低減するために、クライアントデバイス110は、デジタルコンポーネントスロットのすべてに対して、ユーザに対する分布点関数を一回送信し得る。
【0059】
カッコウフィルタおよび分布点関数を生成するためのステップは、図2において、コンテンツを受信した後に実行されるとして示されているが、クライアントデバイス110は、コンテンツを受信するのに先立って、カッコウフィルタおよび分布点関数を生成し得る。たとえば、クライアントデバイス110は、周期的に、またはユーザに対するユーザグループメンバーシップの更新に応答して、カッコウフィルタおよび分布点関数を生成しキャッシュし得る。
【0060】
図3は、クライアントデバイスに配信するためのデジタルコンポーネントを選択するための例示的なプロセス300のスイムレーン図である。プロセス300の動作は、たとえば、MPCクラスタ130のコンピューティングシステムMPC1およびMPC2によって実装され得る。プロセス300の動作は、非一時的であり得る1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス300の動作を実行させ得る。
【0061】
コンピューティングシステムMPC1は、適格な選択値を識別する(302)。コンピューティングシステムMPC1は、たとえば、図2を参照しながら上記で説明したように、クライアントデバイス110から受信されたデジタルコンポーネント要求に対する適格な選択値を識別し得る。デジタルコンポーネント要求は、クライアントデバイスのユーザをメンバーとして含む各ユーザグループについて、ハッシュ関数F1を使用してユーザグループ識別子ug_idに対してクライアントデバイス110によって生成された分布点関数gug_id,1を含み得る。デジタルコンポーネント要求はまた、ハッシュ関数F2を使用してユーザグループ識別子ug_idに対してクライアントデバイス110によって生成された分布点関数hug_id,1も含み得る。デジタルコンポーネント要求はまた、デジタルコンポーネント要求に対するコンテキスト信号に基づいて生成された第1の段階のルックアップキー、たとえば、SHA256(UG_Request_Key)も含み得る。
【0062】
コンピューティングシステムMPC1は、デジタルコンポーネント要求の第1の段階のルックアップキーを使用して、適格な選択値を識別し得る。コンピューティングシステムMPC1は、第1の段階のLUTにアクセスし、第1の段階のルックアップキーを使用して、第1の段階のルックアップキーによって表されたコンテキスト信号のセットに対して、たとえば、それに関する選択値が受信されている、表示されるのに適格であるデジタルコンポーネントに対する選択値に関する情報を含む第2の段階のLUTの行を識別し得る。たとえば、上記で説明したように、第2の段階のLUTの各行は、デジタルコンポーネントに関する情報と、コンテキスト信号のセットに基づく第2の段階のルックアップキーとを含む。したがって、コンピューティングシステムMPC1は、第1の段階のルックアップキーを使用して、デジタルコンポーネント要求内で受信された第1の段階のルックアップキーによって定義されたコンテキスト信号のセットにマッチするコンテキスト信号のセットを有する第2の段階のLUTの行を識別し得る。これらの行は、表示されるのに適格であるデジタルコンポーネントに関する情報を含むか、またはデジタルコンポーネント要求内で受信された第1の段階のルックアップキーによって定義されるコンテキストに対する適格な選択値を有する。
【0063】
コンピューティングシステムMPC2は、適格な選択値を識別する(304)。コンピューティングシステムMPC2は、クライアントデバイス110から受信されたデジタルコンポーネント要求に対する適格な選択値を識別し得る。このデジタルコンポーネント要求は、クライアントデバイスのユーザをメンバーとして含む各ユーザグループについて、ハッシュ関数F1を使用してユーザグループ識別子ug_idに対してクライアントデバイス110によって生成された分布点関数gug_id,2を含み得る。デジタルコンポーネント要求は、ハッシュ関数F2を使用してユーザグループ識別子ug_idに対してクライアントデバイス110によって生成された分布点関数hug_id,2も含み得る。デジタルコンポーネント要求はまた、デジタルコンポーネント要求に対するコンテキスト信号に基づいて生成された第1の段階のルックアップキー、たとえば、SHA256(UG_Request_Key)も含み得る。
【0064】
コンピューティングシステムMPC2によって受信されたデジタルコンポーネント要求の第1の段階のルックアップキーは、コンピューティングシステムMPC1によって受信された第1の段階のルックアップキーと同じであってよい。各分布点関数gug_id,2は、コンピューティングシステムMPC1によって受信された対応する分布点関数と同じ分布点関数Gud_idに基づいて生成され得る。すなわち、ユーザをメンバーとして含むユーザグループのためのユーザグループ識別子ud_idに対して、クライアントデバイス110は、ハッシュ関数F1を使用してデジタルコンポーネント要求の分布関数gug_id,1およびgug_id,2を生成し得る。同様に、ユーザをメンバーとして含むユーザグループのためのユーザグループ識別子ud_idに対して、クライアントデバイス110は、ハッシュ関数F2を使用してデジタルコンポーネント要求の分布関数hug_id,1およびhug_id,2を生成し得る。
【0065】
簡潔のために、プロセス300の残りのステップは、ハッシュ関数F1に対する分布点関数に関するデジタルコンポーネント要求に応答して、クライアントデバイス110に配信するためのデジタルコンポーネントを選択することに関して説明される。しかしながら、ハッシュ関数F2に対する分布点関数に対して同じステップが実行され得る。この結果として、2つの選択されたデジタルコンポーネントおよびMPCクラスタ130は、以下で説明するように、2つのデジタルコンポーネントのうちの1つを選択する追加の動作を実行することができる。
【0066】
コンピューティングシステムMPC2は、デジタルコンポーネント要求の第1の段階のルックアップキーを使用して適格な選択値を識別し得る。コンピューティングシステムMPC2は、第1の段階のLUTにアクセスし、第1の段階のルックアップキーを使用して、第1の段階のルックアップキーによって表されたコンテキスト信号のセットに対して、たとえば、それに関する選択値が受信されている、表示されるのに適格であるデジタルコンポーネントに関する情報を含む第2の段階のLUTの行を識別し得る。上記で説明したように、各コンピューティングシステムMPC1およびMPC2は、同じ情報を含むそれぞれの2段階のLUTを維持し得る。
【0067】
各適格な選択値について、コンピューティングシステムMPC1およびMPC2は、デジタルコンポーネント要求に応答して、選択値およびそのデジタルコンポーネントがクライアントデバイス110への配信のために選択される候補であるかどうかを決定する(308)。候補選択値は、ユーザのためのユーザグループ識別子にマッチするユーザグループ識別子、たとえば、ユーザをメンバーとして含むユーザグループのためのユーザグループ識別子を有する、デジタルコンポーネントに対する適格な選択値である。上記で説明したように、各デジタルコンポーネントは、DSP150またはデジタルコンポーネント提供者160がそのデジタルコンポーネントが表示されるべきであると示したメンバーを含む1つまたは複数のユーザグループにマッピングされ得る。この情報(すなわち、ug_id)は、上記で説明したように、第2の段階のLUTに対する第2の段階のルックアップキーの一部である。
【0068】
第2の段階のLUT内の行に対する第2の段階のルックアップキーの一部であるそのユーザグループ識別子ug_idがユーザのユーザグループ識別子のうちの1つにマッチする場合、その行のデジタルコンポーネントは選択の候補である。概念的に、ユーザのグループメンバーシップを表すために2表カッコウフィルタを使用して、デジタルコンポーネントが候補であるかどうかを決定するために、コンピューティングシステムは、第2の段階のルックアップキーのユーザグループ識別子ug_idが2つのカッコウフィルタロケーションのうちの1つの中の2つのタグのうちの1つにマッチするかどうかを決定することができる。
【0069】
コンピューティングシステムMPC1およびMPC2は、コンピューティングシステムMPC1もMPC2も、どのデジタルコンポーネントが候補であるか、またはユーザをメンバーとして含むユーザグループを知らないように、秘密共有を使用するセキュアなMPC技法を使用して、候補選択値を識別し得る。これを行うために、コンピューティングシステムMPC1は、選択のための候補である第2の段階のLUT内の行の各デジタルコンポーネントについて、候補パラメータis_dc_a_candidateの第1の共有を計算する。同様に、コンピューティングシステムMPC2は、選択のための候補である第2の段階のLUT内の行の各デジタルコンポーネントについて、候補パラメータis_dc_a_candidateの第2の共有を計算する。候補パラメータis_dc_a_candidateは、ユーザグループ識別子ug_idにリンクされた選択値および対応するデジタルコンポーネントが候補であるかどうかを示すブール値(たとえば、ゼロまたは1)であり得る。
【0070】
デジタルコンポーネントdcに対する候補パラメータis_dc_a_candidateの第1の共有は[is_dc_a_candidatedc,1]と表されてよく、候補パラメータis_dc_a_candidateの第2の共有は[is_dc_a_candidatedc,2]と表されてよい。選択のための候補であり、ユーザグループ識別子ug_idに関連付けられる、第2の段階のLUT内の行のデジタルコンポーネントdcに対する候補パラメータの第1の秘密共有は、ブール
【数1】
の秘密共有であり、これはug_id==[gug_id,1(F1(ug_id))]に等しい。選択のための候補であり、ユーザグループ識別子ug_idに関連付けられる、第2の段階のLUT内の行のデジタルコンポーネントdcに対する候補パラメータの第2の秘密共有は、ブール
【数2】
の秘密共有であり、これはug_id==[gug_id,2(F1(ug_id))]に等しい。シンボル「==」は、2つの値が等しい場合、真(または1)であり、これらの値が等しくない場合、偽(または0)である、等価性テストを表す。
【0071】
コンピューティングシステムMPC1およびMPC2は、コンピューティングシステムMPC1とMPC2との間の1つまたは複数のラウンドトリップを用いたセキュアなMPC技法を使用してハッシュ関数F1に対する秘密共有[is_dc_a_candidatedc,1]および[is_dc_a_candidatedc,2]を計算してug_id==[gug_id,1(F1(ug_id))]およびug_id==[gug_id,1(F1(ug_id))]の等価式を評価することができる。すなわち、コンピューティングシステムMPC1およびMPC2は、デジタルコンポーネント要求の一部としてクライアントデバイス110から受信された各ユーザグループ識別子に対する分布点関数gug_id,1およびgug_id,2に基づいて、ユーザグループ識別子ug_idに関連付けられた各デジタルコンポーネントに対する秘密共有[is_dc_a_candidatedc,1]および[is_dc_a_candidatedc,2]を決定し得る。
【0072】
コンピューティングシステムMPC1およびMPC2は、以下のTable 3(表3)に示す動作をサポートする秘密共有技法または秘密共有ライブラリを使用し得る。これらの動作をサポートする1つの例示的な秘密共有技法は、プライベート情報アグリゲーションを通したセキュリティ(SEPIA:Security through Private Information Aggregation)である。
【表3】
【0073】
コンピューティングシステムMPC1は、選択値の順序を決定する(308)。同様に、コンピューティングシステムMPC2は、選択値の順序を決定する(310)。各コンピューティングシステムMPC1およびMPC2は、その第2の段階のLUT内の選択値の順序を決定し得る。2段階のLUTが、各ユーザグループ要求キーUG_Request_Keyに対する第2の段階のLUTを含む場合、この順序は、候補選択値と、候補ではない選択値とを含めて、第2の段階のLUT内の選択値のすべてを含み得る。この順序は、最高選択値から最低選択値へであってよい。いくつかの実装形態では、順序付けのために使用される選択値は、選択されたデジタルコンポーネントが、たとえば、DSP150および/またはSSP170との何らかの共有の後、表示された後でリソースの発行者に提供されることになる値であり得る。選択値はクリアテキストであるため、コンピューティングシステムMPC1およびMPC2は選択値を順序付けするために何のラウンドトリップ計算も実行しなくてよい。実際に、各コンピューティングシステムMPC1およびMPC2は、その第2の段階のLUTの選択値を独立して順序付けることができる。選択値が各選択値のそれぞれの秘密共有を有する各コンピューティングシステムMPC1およびMPC2によって、各コンピューティングシステムMPC1およびMPC2において、秘密共有として記憶された場合、コンピューティングシステムMPC1およびMPC2は、ラウンドトリップ計算を使用してセキュアなMPCプロセスを実行して選択値を順序付けし得る。
【0074】
コンピューティングシステムMPC1およびMPC2は、各候補選択値に対する累積値の秘密共有を決定する(312)。概念的に、デジタルコンポーネントに対する所与の選択値に対する累積値は、上の順から、所与の選択値が候補である場合、所与の選択値を含めて、所与の選択値までの候補選択値の総数を表す。この概念は、以下のTable 4(表4)に示されている。
【表4】
【0075】
いくつかの実装形態では、デジタルコンポーネントに対する所与の選択値に対する累積値は、上の順から、所与の選択値が候補である場合、所与の選択値を除いた、所与の選択値までの候補選択値の総数を表す。この例では、第4の列は、累積値が、1ではなく、ゼロに等しいかどうかを表すことになる。いずれの場合も、各選択値に対する累積値は、選択値がユーザのユーザグループ識別子にマッチするユーザグループ識別子に関連することに基づいて、選択の候補である候補選択値のランク付けされた順序内のその選択値の位置を示す。
【0076】
Table 4(表4)では、累積値が上の順から下の順へと進むにつれて、累積値(acc)は、1に等しい候補パラメータis_dc_a_candidateを有する各選択値に対して増分する。たとえば、最高選択値に対する候補パラメータis_dc_a_candidateはゼロに等しいため、最高選択値に対する累積値accはゼロである。第2の選択値に対する候補パラメータis_dc_a_candidateは1に等しく、第2の最高選択値より高い選択値はいずれも1に等しい候補パラメータis_dc_a_candidateを有さないため、第2の選択値に対する累積値accは1である。順序を下に移動すると、第3の最高選択値に対する候補パラメータis_dc_a_candidateはゼロであり、したがって、第3の選択値に対する累積値accは、第2の選択値に対する累積値accから増分しない。第4の最高選択値に対する候補パラメータis_dc_a_candidateは1であるため、第4の最高選択値に対する累積値accは、第3の最高選択値に対して累積値accから1だけ増分する。したがって、両端値を含めて最高選択値から第4の最高選択値まで、候補パラメータis_dc_a_candidateを有する2つの選択値が存在するため、第4の最高選択値に対する累積値accは2に等しい。
【0077】
この表を使用して、コンピューティングシステムMPC1およびMPC2は、クライアントデバイス110に対する配信のために、Table 4(表4)の第4の列に示すように、候補パラメータis_dc_a_candidateが1の値を有し、累積値accが1の値を有する選択パラメータに対応するデジタルコンポーネントを選択することになる。これは、候補パラメータis_dc_a_candidateが1の値を有する最上位の選択値を表す。候補パラメータis_dc_a_candidateは、ユーザプライバシーを維持し、ユーザデータが漏洩しないことを保証するために、コンピューティングシステムMPC1およびMPC2に対して秘密共有状態であるため、コンピューティングシステムMPC1およびMPC2は、各選択値に対する累積値accの秘密共有を決定し、ラウンドトリップ計算を使用して、どの選択値が1に等しい累積値accおよび1に等しい候補パラメータis_dc_a_candidateを有するかを決定する。
【0078】
コンピューティングシステムMPC1およびMPC2は、何のラウンドトリップ計算もなしに、各選択値に対する累積値accのそれらの秘密共有を独立して決定し得る。たとえば、コンピューティングシステムMPC1は、各選択値およびその対応するデジタルコンポーネントdcについて、Table 4(表4)を参照しながら上記で説明したように、最高から最低の順に選択値のすべてを横断し、道々、選択値に対する候補パラメータis_dc_a_candidateを合計することによって、累積値accの第1の共有[accdc,1]を決定し得る。同様に、コンピューティングシステムMPC2は、各選択値およびその対応するデジタルコンポーネントdcについて、最高から最低の順に選択値のすべてを横断し、道々、選択値に対する候補パラメータis_dc_a_candidateを合計することによって、累積値accの第2の共有[accdc,2]を決定し得る。
【0079】
コンピューティングシステムMPC1およびMPC2は、各選択値について、累積値が指定された値を有するかどうかを示す結果の秘密共有を決定する(314)。指定された値は、Table 4(表4)の列3および4に示すように、1の値であり得る。上記で説明したように、累積値accが1であり、候補パラメータis_dc_a_candidateが1である選択値は、候補選択値の中の最高選択値である。
【0080】
コンピューティングシステムMPC1およびMPC2は、各選択値に対する秘密共有に関する等価演算accdc==1を計算するためのセキュアなMPCプロセスの一部として、複数の計算ラウンド、たとえば、複数のリモートプロシージャ呼出し(RPC)に関与し得る。このプロセスの最後に、コンピューティングシステムMPC1は、各選択値について、結果accdc==1の1つの秘密共有を有し、コンピューティングシステムMPC2は、各選択値について、結果accdc==1のもう1つの秘密共有を有する。
【0081】
コンピューティングシステムMPC1およびMPC2は、選択結果を決定する(316)。コンピューティングシステムMPC1およびMPC2は、各選択値に対する、accdc==1の秘密共有、および候補パラメータis_dc_a_candidatedcの秘密共有に基づいて、選択結果を決定し得る。そうするために、コンピューティングシステムMPC1およびMPC2は、秘密共有に関する勝者パラメータis_dc_the_winnerdcを計算し得る。勝者パラメータis_dc_the_winnerdcは、選択値が選択プロセスの勝者であるかどうか、たとえば、デジタルコンポーネント要求に応答して、選択値に対応するデジタルコンポーネントがクライアントデバイス110に配信するために選択されるかどうかを示すブール値であり得る。
【0082】
選択値に対する勝者パラメータis_dc_the_winnerdcは、選択値に対する候補パラメータis_dc_a_candidatedc、およびTable 4(表4)の列4がどのように決定されるかに応じて、選択値に対する累積値accが指定された値に等しい、たとえば、1またはゼロに等しいかどうかに基づき得る。続く例では、MPCクラスタ130は、各選択値について、これらの2つのパラメータの積を決定し得る。候補パラメータis_dc_a_candidatedcが真または1であること、および累積値が指定された値に等しいことが両方ともそうであるかどうかを決定するために、他の技法も使用され得る。
【0083】
各コンピューティングシステムMPC1およびMPC2は、各選択値に対して、秘密共有に関する勝者パラメータis_dc_the_winnerdc==(is_dc_a_candidatedc×(accdc==1))を独立して計算し得る。これは、2つの秘密共有を乗算するために、コンピューティングシステムMPC1とMPC2との間に1つのRPCを必要とする。このMPCプロセスの終わりに、コンピューティングシステムMPC1は、[is_dc_the_winnerdc,1]=[is_dc_a_candidatedc,1]×([accdc,1]==1)として表される、結果is_dc_the_winnerdcの1つの秘密共有を有する。同様に、コンピューティングシステムMPC2は、[is_dc_the_winnerdc,2]=[is_dc_a_candidatedc,2]×([accdc,2]==1)として表される、結果is_dc_the_winnerdcのもう1つの秘密共有を有する。すべての選択値について、せいぜい1つの選択値が1に等しい勝者パラメータis_dc_the_winnerdcを有し、それは、クライアントデバイス110に配信するために選択されるデジタルコンポーネントに対応することに留意されたい。すべての他の勝者パラメータはゼロに等しいことになる。
【0084】
コンピューティングシステムMPC1およびMPC2は、選択値に対する勝者パラメータ、および選択値に対するデジタルコンポーネント情報要素dc_information_element、または選択値自体に基づいて、選択結果を計算し得る。上記で説明したように、デジタルコンポーネントに対するデジタルコンポーネント情報要素dc_information_elementは、デジタルコンポーネントに対する選択値およびデジタルコンポーネントに関する他のデータを含み得る。
【0085】
コンピューティングシステムMPC1およびMPC2は、以下の関係5を使用して、選択結果resultF1を計算し得る。
【数3】
【0086】
この例では、選択結果resultF1は、ユーザのユーザグループ識別子にマッチするユーザグループ識別子を有するキャッシュされた選択値が存在しない場合に値ゼロを有することになる、または1に等しいis_dc_the_winnerdcを有する、選択されたデジタルコンポーネントのデジタルコンポーネント情報要素dc_information_elementに等しい値を有することになる、のいずれかである。別の例では、デジタルコンポーネント情報要素dc_information_elementは、関係5においてデジタルコンポーネントに対する選択値で置換され得る。この例では、選択結果resultF1は、ユーザのユーザグループ識別子にマッチするユーザグループ識別子を有するキャッシュされた選択値が存在しない場合に値ゼロを有することになる、または1に等しいis_dc_the_winnerdcを有する、選択されたデジタルコンポーネントの選択値に等しい値を有することになる、のいずれかである。
【0087】
秘密共有の計算を実行するために、コンピューティングシステムMPC1は、キャッシュされた選択値のすべてを用い、クリアテキストであり得る、選択値に対するデジタルコンポーネント情報要素dc_information_elementdcを勝者パラメータ[is_dc_the_winnerdc,1]の第1の秘密共有で乗算する。コンピューティングシステムMPC1は、次いで、これらの積の和を決定し、デジタルコンポーネント要求を提出したクライアントデバイス110にその和を返すことができる。すなわち、コンピューティングシステムMPC1は、結果の第1の共有
【数4】
として、以下の関係6を使用して和を決定し得る。
【数5】
【0088】
コンピューティングシステムMPC2は、同様の計算を実行して、以下の関係7を使用して、結果の第2の共有
【数6】
を決定し得る。
【数7】
【0089】
コンピューティングシステムMPC1は、選択結果の第1の共有
【数8】
をクライアントデバイス110にに返すことができる。同様に、コンピューティングシステムMPC2は、選択結果の第2の共有
【数9】
をクライアントデバイス110に返すことができる。アプリケーション112は、次いで、たとえば、加法的秘密共有アルゴリズムが採用される場合、秘密共有の和を決定することによって、2つの秘密共有
【数10】
および
【数11】
を使用して、クリアテキストで選択結果resultF1を再構築し得る。選択結果resultF1がゼロの値を有する場合、MPCクラスタ130は、ユーザをメンバーとして含むユーザグループに対してもデジタルコンポーネントを識別しなかった。場合によっては、選択結果resultF1は、選択プロセスにおいて選ばれたデジタルコンポーネント情報要素dc_information_elementに等しい値を有し、アプリケーション112は、デジタルコンポーネント情報要素dc_information_elementをパースして、デジタルコンポーネントに対する選択値およびメタデータを取得し得る。アプリケーション112は、次いで、デジタルコンポーネントを表示するか、または上記で説明したように、デジタルコンポーネントおよびSSP170から受信された他のデジタルコンポーネントを使用して選択プロセスを実行する、のいずれかが可能である。
【0090】
要素が2つの可能なロケーションのうちの1つに挿入され得る、2表カッコウフィルタ実装形態では、アプリケーション112は、各ハッシュ関数F1およびF2に対して1つ、2つの選択結果を受信し得る。この例では、アプリケーション112は、これらのデジタルコンポーネントの両方およびSSP170から受信された任意のデジタルコンポーネントの両方を含むデジタルコンポーネントのセットからデジタルコンポーネントを選択し得る。
【0091】
いくつかの実装形態では、アプリケーション112は、MPCクラスタ130によって選択されたデジタルコンポーネントに対するユーザグループがユーザをメンバーとして含むユーザグループにマッチするという最終検証を実行し得る。たとえば、各デジタルコンポーネントに対するデジタルコンポーネント情報要素dc_information_elementは、デジタルコンポーネントのためのユーザグループ識別子を含み得る。アプリケーション112は、デジタルコンポーネント情報要素dc_information_elementのユーザグループ識別子をそのユーザに対するユーザグループリストと比較し得る。マッチが存在しない場合、アプリケーション112は、選択プロセスからデジタルコンポーネントを除外し得る。マッチが存在する場合、アプリケーション112は、デジタルコンポーネントを選択プロセス内に含めることができる。
【0092】
上記で説明したように、MPCクラスタ130から2つの選択結果を受信することは、選択値スクラッピングを促し得る。このリスクを低減するために、MPCクラスタ130は、プロセスを実行して、1つの選択結果のみを返すことができる。
【0093】
1表カッコウフィルタ実装形態では、そのインデックスがF1(ug_id)およびF2(ug_id)である2つの場所に各ユーザグループ識別子ug_idが出現し得る。Mは1表カッコウフィルタを表し、Miは表内の第iの要素の値を表す。ユーザグループ識別子ug_idを有するデジタルコンポーネントに対する選択値に対する候補パラメータis_dc_a_candidatedcは、
【数12】
または
【数13】
のいずれかである場合、真である。このMPCクラスタ130は、以下の関係8または9のいずれかを使用して、選択値に対する候補パラメータis_dc_a_candidatedcを計算し得る。
【数14】
【0094】
関係8は、並行して実行され得る2つの等価性テストを必要とし得る。関係9は、1つの等価性テストおよび1つの乗算を必要とし得る。セキュアなMPCプロセスを使用して秘密共有に対してこれらの演算を実行するとき、乗算は、より少ない計算および1つのラウンドリップを必要とするが、等価性テストは、確率的解決において、より多くの計算および4つのラウンドドリップを必要とし得る。したがって、関係8は、関係9よりも少ないラウンドトリップを必要とするが、より多くの計算を必要とし得る。
【0095】
コンピューティングシステムMPC1は、関係8に基づいて、以下の関係10を使用して、秘密共有に対して選択値に対する候補パラメータis_dc_a_candidatedcを計算し得る。
[is_dc_a_candidatedc,1]=(ug_id==[gug_id,1(F1(ug_id))])+(ug_id==[gug_id,1(F2(ug_id))]) (10)
【0096】
同様に、コンピューティングシステムMPC2は、関係8に基づいて、以下の関係11を使用して、秘密共有に対して選択値に対する候補パラメータis_dc_a_candidatedcを計算し得る。
[is_dc_a_candidatedc,2]=(ug_id==[gug_id,2(F1(ug_id))])+(ug_id==[gug_id,2(F2(ug_id))]) (11)
【0097】
コンピューティングシステムMPC1は、関係9に基づいて、以下の関係12を使用して、秘密共有に対して選択値に対する候補パラメータis_dc_a_candidatedcを計算し得る。
[is_dc_a_candidatedc,1]=((ug_id-[gug_id,1(F1(ug_id))])×(ug_id-[gug_id,1(F2(ug_id))])) == 0 (12)
【0098】
コンピューティングシステムMPC1は、関係9に基づいて、以下の関係13を使用して、秘密共有に対して選択値に対する候補パラメータis_dc_a_candidatedcを計算し得る。
[is_dc_a_candidatedc,2]=((ug_id-[gug_id,2(F1(ug_id))])×(ug_id-[gug_id,2(F2(ug_id))])) == 0 (13)
【0099】
MPCクラスタ130は、次いで、図3のプロセス300と同様のプロセスを使用して、選択結果resultの秘密共有を計算し得る。具体的には、コンピューティングシステムMPC1およびMPC2は、各選択値について、選択値の順序および選択値に対する候補パラメータに基づいて、累積値accの秘密共有[accdc,1]および[accdc,2]をそれぞれ計算し得る。
【0100】
コンピューティングシステムMPC1およびMPC2は、各選択値について、選択値に対する候補パラメータおよび選択値に対する累積値が1に等しいかどうかに基づいて、勝者パラメータis_dc_the_winnerの秘密共有[is_dc_the_winnerdc,1]および[is_dc_the_winnerdc,2]をそれぞれ計算し得る。
【0101】
コンピューティングシステムMPC1およびMPC2は、以下の関係14および15を使用して、選択結果resultの秘密共有[result1]および[result2]を計算し得る。
[result1]=Σdc([is_dc_the_winnerdc,1]×dc_information_elementdc) (14)
[result2]=Σdc([is_dc_the_winnerdc,2]×dc_information_elementdc) (15)
【0102】
コンピューティングシステムMPC1は、選択結果の第1の共有[result1]をアプリケーション112に返すことができ、コンピューティングシステムMPC2は、選択結果の第2の共有[result2]をアプリケーション112に返すことができる。アプリケーション112は、次いで、上記で説明したように、2つの秘密共有を使用して、選択結果resultを再構築し得る。
【0103】
上記の説明は、コンピュータ論理ANDに対してその値が0または1のいずれかである秘密整数の秘密共有の間の乗算に関する。上記の説明はまた、その値が、コンピュータ論理NOTに対して0または1のいずれかである秘密整数の秘密共有を1から差し引くことに関する。いくつかの実装形態では、秘密共有を用いた論理式を評価するために、代替策が採用されてよい。たとえば、その値が0または1のいずれかである秘密整数の加法的ないくつかの秘密共有の論理ANDを計算するために、MPCサーバは、それらの加法的秘密共有の和を秘密共有の数と比較することができる。さらに別の例の場合、秘密共有を入力として用いて任意の論理式を計算するために、MPCサーバは、真理表(truth table)手法を採用し得る、すなわち、コンピューティングシステムMPC1は、MPC2によって保持される入力秘密共有の各考えられる結合に対して1つの行を含む真理表を構築し得る。コンピューティングシステムMPC1は、[result1]として示される、結果に対する秘密共有を随意に選定する。各行について、コンピューティングシステムMPC1は、その入力秘密共有とMPC2によって保持される投機的入力秘密共有を結合させて、クリアテキストで論理式に対する入力を再構築し、次いで、論理式の結果を評価することができる。各行について、コンピューティングシステムMPC1はその結果を、その1つが[result1]であり、もう1つが[result2]である、2つの秘密共有に分割する。コンピューティングシステムMPC1は、次いで、[result2]を真理表内の行に書き込む。コンピューティングシステムMPC1が真理表の構築を完了した後、コンピューティングシステムMPC2は、紛失通信拡張(OTe:Oblivious Transfer extension)を開始して、MPC2によって保持される入力秘密共有に対応する真理表内の行をフェッチし得る。フェッチ結果は[result2]である。上記のプロセスの最後に、コンピューティングシステムMPC1およびMPC2は、論理式結果の秘密共有である[result1]および[result2]をそれぞれ保持する。コンピューティングシステムMPC1は、[result2]の値の知識を有さず、コンピューティングシステムMPC2は、[result1]の値の知識を有さない。いくつかの実装形態では、コンピューティングシステムMPC1およびMPC2は、論理式を評価して、ガーブルドサーキット(garbled circuit)を構築することによって、is_dc_a_candidatedc,1およびis_dc_a_candidatedc,2を決定し得る。
【0104】
図4は、クライアントデバイスに配信するためのデジタルコンポーネントを選択するための例示的なプロセス400を示す流れ図である。プロセス400の動作は、たとえば、MPCクラスタ130のコンピューティングシステムMPC1またはコンピューティングシステムMPC2によって実装され得る。プロセス400の動作は、非一時的であり得る1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス400の動作を実行させ得る。簡潔のために、プロセス400は、コンピューティングシステムMPC1によって実行されるとして説明される。
【0105】
コンピューティングシステムMPC1は、デジタルコンポーネント要求をクライアントデバイス110から受信する(402)。デジタルコンポーネント要求は、1つまたは複数の分布点関数を含み得る。各分布点関数は、クライアントデバイスのユーザがそれぞれの第1のユーザグループ識別子によって識別されるそれぞれの第1のユーザグループのメンバーであるかどうかを示す点関数の秘密共有を表し得る。たとえば、コンピューティングシステムMPC1によって受信されるデジタルコンポーネント要求は、クライアントデバイス110のユーザをメンバーとして含む各ユーザグループに対する分布点関数gug_id,1を含み得る。
【0106】
デジタルコンポーネント要求はまた、ルックアップキーを含み得る。たとえば、デジタルコンポーネント要求は、コンテキスト信号のセット、たとえば、デジタルコンポーネント要求のコンテキスト信号のセットに基づく複合メッセージであり得る、ユーザグループ要求キーUG_Request_Keyを含み得る。同様のデジタルコンポーネント要求が、1つまたは複数の追加のMPCシステム、たとえば、コンピューティングシステムMPC2に送信され得、1つまたは複数の追加のMPCシステムは、デジタルコンポーネント要求に応答して、クライアントデバイス110に提供するためのデジタルコンポーネントを選択するために、セキュアなMPCプロセスにおいてコンピューティングシステムMPC1と共同することになる。各他のデジタルコンポーネント要求は、デジタルコンポーネント要求の各分布点関数に対して、同じ点関数を使用して同じユーザグループ識別子に対して生成された対応する分布点関数を含み得る。たとえば、コンピューティングシステムMPC2は、コンピューティングシステムMPC1によって受信された各分布点関数gug_id,1に対して、対応する分布点関数gug_id,2を受信することになる。
【0107】
コンピューティングシステムMPC1は、複数の選択値を識別する(404)。各選択値は、それぞれのデジタルコンポーネント、およびそれぞれのデジタルコンポーネントが配信されるのに適格であるそれぞれの第2のユーザグループのためのそれぞれの第2のユーザグループ識別子に対応し得る。上記で説明したように、選択値は、第2の段階のLUT内に、その対応するデジタルコンポーネントを識別するメタデータとともに、ならびに選択値に対するユーザグループ識別子、およびそれに対して選択値が適格であるコンテキスト信号に基づく、ルックアップキーとともに記憶され得る。
【0108】
コンピューティングシステムMPC1は、複数のMPCシステムの1つまたは複数の第2のコンピューティングシステムと共同して、セキュアなMPCプロセスを使用して、各選択値について、候補パラメータを決定する(406)。候補パラメータis_dc_a_candidateは、選択値に対応する第2のユーザグループ識別子が1つまたは複数の第1のユーザグループ識別子のうちの少なくとも1つにマッチするかどうかを示す。すなわち、選択値に対する候補パラメータis_dc_a_candidateは、選択値に対するユーザグループ識別子が、クライアントデバイス110のユーザをメンバーとして含むユーザグループのためのユーザグループ識別子にマッチするかどうかを示す。そうである場合、選択値に対応するデジタルコンポーネントは、選択されるための候補である候補デジタルコンポーネントである。上記で説明したように、コンピューティングシステムMPC1は、コンピューティングシステムMPC2を含む、1つまたは複数の追加のMPCシステムと共同して、セキュアなMPCプロセスを使用して、各選択値に対する候補パラメータis_dc_a_candidateの第1の秘密共有を取得することができる。
【0109】
コンピューティングシステムMPC1は、選択結果の第1の秘密共有を生成する(408)。コンピューティングシステムMPC1は、コンピューティングシステムMPC2を含む、1つまたは複数の追加のMPCシステムと共同して、選択結果を生成することができる。概して、選択結果は、最高選択値を有する候補デジタルコンポーネントを識別する。上記で説明したように、MPCシステムは、選択値をソートし、各選択値に対する累積値を決定し、各選択値に対する勝者パラメータis_dc_the_winnerの秘密共有を決定することができる。MPCシステムは、次いで、選択結果の秘密共有として、選択値に対する勝者パラメータと選択値に対するデジタルコンポーネント情報要素との積について、各選択値に対して和を取ったものである秘密共有を決定するために共同することができる。たとえば、MPCシステムは、上記に示した関係5を使用して、積和の秘密共有を決定することができる。
【0110】
コンピューティングシステムMPC1は、所与のデジタルコンポーネントを識別する選択結果の第1の秘密共有をクライアントデバイス110に提供する(410)。上記で説明したように、選択結果は、選択されたデジタルコンポーネント、およびデジタルコンポーネントに対する選択値を識別する。クライアントデバイス110はまた、1つまたは複数の追加のMPCシステムの各々から選択結果のそれぞれの秘密共有を受信することもできる。クライアントデバイス110は、上記で説明したように、秘密共有を使用して、選択結果を再構築し得る。
【0111】
いくつかの実装形態では、分布点関数を使用するのではなく、カッコウフィルタ自体がMPCクラスタ130に送信され得る。この例では、アプリケーション112は、ユーザグループ識別子またはブロックされた識別子のセットからの識別子のいずれかおよびアプリケーション112によって生成された2つのランダム変数のいずれかによってパラメータ化された疑似ランダム関数(PRF)を使用し得る。たとえば、アプリケーション112によって生成された3つのランダム変数が、rand_var1a、rand_var1b、およびrand_var2であると仮定する。バケット内の各アイテムがkビット整数であるとやはり仮定する。いくつかの実装形態では、アプリケーション112およびMPCクラスタ130は、PRFに関して事前に合意し、ここで、kは、カッコウフィルタのバケット内の各アイテム内のビットの数である。カッコウフィルタのバケット内の各アイテムは、ユーザグループ識別子またはブロックされた識別子によって占有されてよいか、または空であってもよい。たとえば、アプリケーション112は、そのアイテムがPRF(ug_id, rand_var1a)、PRF(blocked_id, rand_var1b)、または0であるカッコウフィルタ表を生成することができ、ここで、ug_idは、コンテンツ提供者のドメインに基づいてユーザグループの標示(たとえば、ユーザグループ識別子)にHMACを適用することによって生成されるユーザグループの識別子であり、0は空のアイテムを表す。このプロセスは、すべてのユーザグループ識別子およびブロックされた識別子に対して繰り返される。
【0112】
アプリケーション112は、ユーザグループ識別子およびブロックされた識別子に対して生成されたカッコウフィルタ表に基づいて、ベクトルBを生成し得る。ベクトルB内の各値Biは、Bi=(Ai-PRF(rand_var2,i))mod pとして表すことができ、ここで、Aは、カッコウフィルタ表であり、iは、ベクトルBおよびカッコウフィルタ表Aのインデックスである。アプリケーション112がデジタルコンポーネントスロットのためのデジタルコンポーネントに対する要求を開始するとき、アプリケーションは、要求のパラメータとしてrand_var1a、rand_var1b、およびrand_var2をコンピューティングシステムMPC1に送信する。アプリケーション112はまた、要求のパラメータとしてベクトルB、rand_var1a、およびrand_var1bをコンピューティングシステムMPC2に送信する。PRF(rand_var2,i)およびBiは、コンピューティングシステムMPC1およびMPC2によってそれぞれ保持された、Zp内のAiの2つの加法的秘密共有である。コンピューティングシステムMPC1およびMPC2のいずれも両方の秘密共有に対するアクセスを有さないため、これらのコンピューティングシステムはいずれも、ユーザプライバシーを保存して、カッコウフィルタ表を再作成し得ない。
【0113】
コンピューティングシステムMPC1は、各候補選択値が要求内で指定されたユーザグループに関連付けられるかどうかを決定する。コンピューティングシステムMPC1は、[M1]によって示される、カッコウフィルタ表Mに対する秘密共有のアレイの均等物を受信する。M内に存在する各ユーザグループ識別子は、N個の考えられるロケーションのうちの1つの中にあることになる。
【0114】
コンピューティングシステムMPC1は、以下の関係16に従って、ユーザグループベースの候補パラメータ[is_dc_a_candidatex,1]を計算する。
【数15】
【0115】
式中、Πは、複数のアイテムの乗算を示す。ここで、ug_id(x)は、選択値xに関連するユーザグループ識別子ug_idを検索するために使用される関数であり、{F1,…FN}は、カッコウフィルタ表A内のアイテムの考えられるインデックスを計算するためのハッシュ関数のセットであり、rand_val1aは、デジタルコンポーネント要求内で受信されるランダム値である。[Mx,1]は、アレイ[M1]内の第xの要素である。==は、クリアテキスト整数と秘密整数の秘密共有との間の等価性テストである。==の結果は、0(等価ではない)または1(等価である)のいずれかである秘密整数の秘密共有である。ここで、[Mx,1]の値=[PRF(rand_val2a,i)1]である。
【0116】
同様に、コンピューティングシステムMPC2は、以下の関係17に従って、ユーザグループベースの候補パラメータ[is_dc_a_candidatex,2]を計算する。
【数16】
【0117】
ここで、[Mi,2]の値=Biである。
【0118】
図5は、上記で説明した動作を実行するために使用され得る例示的なコンピュータシステム500のブロック図である。システム500は、プロセッサ510、メモリ520、記憶デバイス530、および入出力デバイス540を含む。構成要素510、520、530、および540の各々は、たとえば、システムバス550を使って、相互接続され得る。プロセッサ510は、システム500内での実行のために命令を処理することが可能である。いくつかの実装形態では、プロセッサ510は、シングルスレッドプロセッサである。別の実装形態では、プロセッサ510はマルチスレッドプロセッサである。プロセッサ510は、メモリ520内または記憶デバイス530上に記憶された命令を処理することが可能である。
【0119】
メモリ520は、システム500内に情報を記憶する。一実装形態では、メモリ520は、コンピュータ可読媒体である。いくつかの実装形態では、メモリ520は、揮発性メモリユニットである。別の実装形態では、メモリ520は不揮発性メモリユニットである。
【0120】
記憶デバイス530は、システム500に大容量記憶を提供することが可能である。いくつかの実装形態では、記憶デバイス530は、コンピュータ可読媒体である。様々な異なる実装形態では、記憶デバイス530は、たとえば、ハードディスクデバイス、光ディスクデバイス、複数のコンピューティングデバイスによってネットワーク上で共有される記憶デバイス(たとえば、クラウド記憶デバイス)、または他の何らかの大容量記憶デバイスを含むことができる。
【0121】
入出力デバイス540は、システム500のための入出力動作を提供する。いくつかの実装形態では、入出力デバイス540は、ネットワークインターフェースデバイス、たとえば、Ethernetカード、シリアル通信デバイス、たとえば、RS-232ポート、および/またはワイヤレスインターフェースデバイス、たとえば、802.11カードのうちの1つまたは複数を含み得る。別の実装形態では、入出力デバイスは、入力データを受信し、出力データを外部デバイス560、たとえば、キーボード、プリンタ、およびディスプレイデバイスに送信するように構成されたドライバデバイスを含み得る。しかしながら、モバイルコンピューティングデバイス、モバイル通信デバイス、セットトップボックステレビクライアントデバイスなど、他の実装形態が使われてもよい。
【0122】
例示的な処理システムが図5で説明されているが、本明細書内で説明する主題の実装形態および機能的動作は、他のタイプのデジタル電子回路において、または本明細書で開示する構造およびその構造的均等物を含むコンピュータソフトウェア、ファームウェア、もしくはハードウェアにおいて、またはそれらのうちの1つもしくは複数の組合せにおいて実装され得る。
【0123】
主題の実施形態および本明細書で説明する動作は、デジタル電子回路で、または本明細書で開示する構造およびその構造的均等物を含むコンピュータソフトウェア、ファームウェア、もしくはハードウェアで、またはそれらのうちの1つもしくは複数の組合せで実装され得る。本明細書で説明する主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のために、またはデータ処理装置の動作を制御するために、(1つまたは複数の)コンピュータ記憶媒体上で符号化された、コンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。代替または追加として、プログラム命令は、データ処理装置による実行のために、適切な受信機装置への送信のために情報を符号化するために生成された、人工的に生成された伝搬信号、たとえば、機械で生成された電気信号、光信号、または電磁信号上で符号化され得る。コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの1つもしくは複数の組合せであり得るか、またはそれらに含まれ得る。さらに、コンピュータ記憶媒体は伝搬信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝搬信号において符号化されたコンピュータプログラム命令のソースまたは宛先であり得る。コンピュータ記憶媒体はまた、1つまたは複数の別個の物理構成要素または媒体(たとえば、複数のCD、ディスク、または他の記憶デバイス)であり得るか、またはそれらに含まれ得る。
【0124】
本明細書で説明する動作は、1つまたは複数のコンピュータ可読記憶デバイス上に記憶されたまたは他のソースから受信されたデータに対してデータ処理装置によって実行される動作として実装され得る。
【0125】
「データ処理装置」という用語は、例として、プログラム可能プロセッサ、コンピュータ、システムオンチップ、または上記の複数のもの、もしくは組合せを含む、データを処理するための、あらゆる種類の装置、デバイス、および機械を包含する。装置は、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含むことができる。装置は、ハードウェアに加えて、当該のコンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、またはそれらのうちの1つまたは複数の組合せを構成するコードも含むことができる。装置および実行環境は、ウェブサービス、分散コンピューティングインフラストラクチャおよびグリッドコンピューティングインフラストラクチャなどの様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。
【0126】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られている)は、コンパイル型言語またはインタプリタ型言語、宣言型言語または手続き型言語を含む任意の形態のプログラミング言語で書かれてもよく、スタンドアロンプログラムとして、またはモジュール、構成要素、サブルーチン、オブジェクト、もしくはコンピューティング環境において使用するのに適した他のユニットとしてを含む任意の形態で展開されてもよい。コンピュータプログラムは、ファイルシステムにおけるファイルに対応し得るが、そうである必要はない。プログラムは、他のプログラムもしくはデータ(たとえば、マークアップ言語文書に記憶された1つもしくは複数のスクリプト)を保持するファイルの一部に、当該のプログラム専用の単一のファイルに、または複数の協調ファイル(たとえば、1つもしくは複数のモジュール、サブプログラム、またはコードの部分を記憶するファイル)に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または、1つのサイトに配置されるかもしくは複数のサイトにわたって分散され、通信ネットワークによって相互接続される複数のコンピュータ上で実行されるように展開され得る。
【0127】
本明細書で説明したプロセスおよび論理フローは、入力データ上で動作し、出力を生成することによって活動を実行するために、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルプロセッサによって実行され得る。プロセスおよび論理フローが、専用論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によっても実行されてもよく、装置が、それらとしても実装されてもよい。
【0128】
コンピュータプログラムの実行に好適なプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方を含む。一般に、プロセッサは、命令およびデータを読取り専用メモリ、もしくはランダムアクセスメモリ、またはその両方から受信することになる。コンピュータの必須要素は、命令に従ってアクションを実行するためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータはまた、データを記憶するための1つまたは複数の大容量記憶デバイス、たとえば、磁気ディスク、光磁気ディスク、もしくは光ディスクを含むか、または、それらからデータを受信することもしくはそれらにデータを転送すること、もしくは両方を行うために動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有する必要はない。さらに、コンピュータは、ほんの数例を挙げると、別のデバイス、たとえば、モバイル電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記憶デバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に埋め込まれ得る。コンピュータプログラム命令およびデータを記憶するのに適したデバイスは、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば、内部ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、媒体およびメモリデバイスを含む。プロセッサおよびメモリは、専用論理回路によって補完され得るか、または専用論理回路に組み込まれ得る。
【0129】
ユーザとの対話を提供するために、本明細書で説明する主題の実施形態は、ユーザに情報を表示するための、CRT(陰極線管)またはLCD(液晶ディスプレイ)モニタなどのディスプレイデバイス、ならびに、キーボード、および、ユーザがコンピュータに入力を提供することができる、たとえば、マウスまたはトラックボールなどのポインティングデバイスを有するコンピュータ上で実装され得る。他の種類のデバイスも、ユーザとの対話を提供するために使用され得る。たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであってもよく、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形態で受け取られてもよい。加えて、コンピュータは、文書をユーザによって使用されるデバイスに送信し、文書をそのデバイスから受信することによって、たとえば、ユーザのクライアントデバイス上のウェブブラウザから受信された要求に応答してウェブページをそのウェブブラウザに送信することによって、ユーザと対話することができる。
【0130】
本明細書で説明する主題の実施形態は、バックエンド構成要素を、たとえば、データサーバとして含む、あるいはミドルウェア構成要素、たとえば、アプリケーションサーバを含む、あるいはフロントエンド構成要素、たとえば、それを通じてユーザが本明細書で説明する主題の一実装形態と対話することができるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータ、または1つもしくは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、もしくはフロントエンド構成要素の任意の組合せを含む、コンピューティングシステムにおいて実装され得る。システムの構成要素は、デジタルデータ通信の任意の形態または媒体、たとえば、通信ネットワークによって相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
【0131】
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントとサーバとは、一般に、互いに離れており、典型的には、通信ネットワークを通して対話する。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行され、互いにクライアントサーバ関係を有するコンピュータプログラムによって生じる。いくつかの実施形態では、サーバは、(たとえば、クライアントデバイスと対話するユーザにデータを表示し、そのユーザからユーザ入力を受信する目的で)データ(たとえば、HTMLページ)をクライアントデバイスに送信する。クライアントデバイスにおいて生成されたデータ(たとえば、ユーザ対話の結果)は、サーバにおいてクライアントデバイスから受信され得る。
【0132】
上記で説明した実施形態に加えて、以下の実施形態も発明的である。
【0133】
実施形態1は、クライアントデバイスから、複数のマルチパーティ計算(MPC)システムの第1のコンピューティングシステムによって、クライアントデバイスのユーザがそれぞれの第1のユーザグループ識別子によって識別されるそれぞれの第1のユーザグループのメンバーであるかどうかを示す、それぞれの点関数の秘密共有を各々表す分布点関数を含む、デジタルコンポーネント要求を受信するステップと、複数の選択値を識別するステップであって、各選択値が、それぞれのデジタルコンポーネント、コンテキスト信号のセット、およびそれぞれのデジタルコンポーネントが配信されるのに適格であるそれぞれの第2のユーザグループのためのそれぞれの第2のユーザグループ識別子に対応する、ステップと、各選択値について、複数のMPCシステムの1つまたは複数の第2のコンピューティングシステムと共同して実行されるセキュアなMPCプロセスにおいて分布点関数を使用して、選択値に対応する第2のユーザグループ識別子が、ユーザをメンバーとして含むユーザグループにマッチするかどうかを示す、候補パラメータを決定するステップと、選択値および候補パラメータに基づいて、複数の候補デジタルコンポーネントから、最高選択値を有する所与のデジタルコンポーネントを識別する選択結果の第1の秘密共有を生成するステップであって、各候補デジタルコンポーネントが、それに対してデジタルコンポーネントに対応する選択値に対する候補パラメータが、選択値に対応する第2のユーザグループ識別子がユーザをメンバーとして含むユーザグループにマッチすることを示す、デジタルコンポーネントである、ステップと、所与のデジタルコンポーネントを識別する選択結果の第1の秘密共有をクライアントデバイスに送信するステップとを含む方法である。
【0134】
実施形態2は、各選択値に対する候補パラメータを決定するステップが、各選択値に対する候補パラメータの第1の秘密共有を決定するステップを含む、実施形態1の方法である。
【0135】
実施形態3は、選択結果の第1の秘密共有を生成するステップが、各選択値の大きさに基づいて、選択値の順序を生成するステップと、選択値の順序および各選択値に対する候補パラメータに基づいて、各選択値に対する累積値の第1の秘密共有を決定するステップであって、各選択値に対する累積値が、複数の候補選択値のランク付けされた順序内の選択値の位置を示す、ステップと、各選択値について、(i)選択値に対する候補パラメータ、および(ii)選択値に対する累積値が指定された値であるかどうかを示す等価性テストの結果に基づいて、勝者パラメータの第1の秘密共有を決定するステップと、選択結果の第1の秘密共有として、選択値に対する勝者パラメータと選択値に対するデジタルコンポーネント情報要素との積の、各選択値に対する和である第1の秘密共有を決定するステップとを含む、実施形態1または2の方法である。
【0136】
実施形態4は、各選択値に対する累積値の第1の秘密共有を決定するステップが、個々の選択値の各々について、選択値に対応する第2のユーザグループ識別子が1つまたは複数の第1のユーザグループ識別子のうちの少なくとも1つにマッチすることを示す候補パラメータを有する、最高選択値から個々の選択値までの、選択値の量を決定するステップを含む、実施形態3の方法である。
【0137】
実施形態5は、指定された値が1または論理真である、実施形態3または4の方法である。
【0138】
実施形態6は、分布点関数が、クライアントデバイスのユーザをメンバーとして含む複数のユーザグループに基づいて生成される、実施形態1から5のいずれか1つの方法である。
【0139】
実施形態7は、デジタルコンポーネント要求が、デジタルコンポーネントスロットに対するコンテキスト信号のセットに基づくユーザグループ要求キーを含み、複数の選択値を識別するステップが、データ構造内で、ユーザグループ要求キーにマッチするルックアップキーを有する各選択値を識別するステップを含む、実施形態1から6のいずれか1つの方法である。
【0140】
実施形態8は、1つまたは複数のプロセッサと、命令を記憶した、1つまたは複数の記憶デバイスとを備え、命令が、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、実施形態1から7のいずれか1つの方法を実行させる、システムである。
【0141】
実施形態9は、1つまたは複数のプロセッサによって実行されると、1つまたは複数のプロセッサに、実施形態1から7のいずれか1つの方法を実行させる命令を担持する、コンピュータ可読記憶媒体である。
【0142】
実施形態10は、コンピュータによって実行されると、コンピュータに、実施形態1から7のいずれかの方法のステップを実行させる命令を含む、コンピュータプログラム製品である。
【0143】
本明細書は多くの特定の実装形態の詳細を含んでいるが、これらは発明の範囲または特許請求され得るものの範囲に対する限定として解釈されるべきではなく、むしろ特定の発明の特定の実施形態に特有の特徴の説明として解釈されるべきである。別個の実施形態の文脈において本明細書で説明したいくつかの特徴はまた、単一の実施形態において組み合わせて実装され得る。逆に、単一の実施形態の文脈において説明した様々な特徴はまた、複数の実施形態において別々にまたは任意の好適な部分組合せにおいて実装され得る。さらに、特徴はいくつかの組合せにおいて働くものとして上記で説明され、そのようなものとして最初に特許請求されることさえあり得るが、特許請求される組合せからの1つまたは複数の特徴は、場合によっては、その組合せから削除される場合があり、特許請求される組合せは、部分組合せまたは部分組合せの変形形態を対象とし得る。
【0144】
同様に、動作は、特定の順序で図面に示されるが、これは、望ましい結果を達成するために、そのような動作が図示された特定の順序でもしくは順番に実行されること、またはすべての例示された動作が実行されることを必要とするものとして理解されるべきではない。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。さらに、上記で説明した実施形態における様々なシステム構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、説明したプログラム構成要素およびシステムは一般に、単一のソフトウェア製品に一緒に組み込まれるか、または複数のソフトウェア製品にパッケージ化されることがあると理解されたい。
【0145】
以上、本主題の特定の実施形態について記載した。他の実施形態は、以下の特許請求の範囲の範囲内にある。場合によっては、特許請求の範囲に列挙される活動は、異なる順序で行われ、それでも望ましい結果を達成し得る。加えて、添付の図面に示されるプロセスは、所望の結果を達成するために、必ずしも示された特定の順序または順番を必要としない。いくつかの実装形態では、マルチタスキングおよび並列処理が有利であり得る。
【符号の説明】
【0146】
100 環境
105 データ通信ネットワーク
110 クライアントデバイス
112 アプリケーション
130 MPCクラスタ
140 発行者
142 ウェブサイト
145 リソース
150 DSP
160 デジタルコンポーネント提供者
170 SSP
500 コンピュータシステム
510 プロセッサ、構成要素
520 メモリ、構成要素
530 記憶デバイス、構成要素
540 入出力デバイス、構成要素
550 システムバス
560 外部デバイス
図1
図2
図3
図4
図5