(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-12-09
(45)【発行日】2024-12-17
(54)【発明の名称】セキュアマルチパーティ計算を使用した暗号学的に安全な制御
(51)【国際特許分類】
G09C 1/00 20060101AFI20241210BHJP
G06F 21/53 20130101ALI20241210BHJP
G06F 21/62 20130101ALI20241210BHJP
【FI】
G09C1/00 650Z
G06F21/53
G06F21/62
(21)【出願番号】P 2023516600
(86)(22)【出願日】2022-08-22
(86)【国際出願番号】 US2022041025
(87)【国際公開番号】W WO2023027982
(87)【国際公開日】2023-03-02
【審査請求日】2023-05-12
(32)【優先日】2021-08-22
(33)【優先権主張国・地域又は機関】IL
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】ガン・ワン
(72)【発明者】
【氏名】マルセル・エム・モティ・ユン
【審査官】金沢 史明
(56)【参考文献】
【文献】国際公開第2016/148281(WO,A1)
【文献】特表2016-510912(JP,A)
【文献】特表2019-500645(JP,A)
【文献】米国特許出願公開第2019/0042788(US,A1)
【文献】欧州特許出願公開第03754898(EP,A1)
【文献】REINHARDT, Delphine et al.,OP4: An OPPortunistic Privacy-Preserving Scheme for Crowdsensing Applications,Proc. of 2016 IEEE 41st Conference on Local Computer Networks (LCN 2016),IEEE,2016年,pp. 460-468,[2024年5月31日検索], インターネット<URL: https://ieeexplore.ieee.org/document/7796821>, <DOI: 10.1109/LCN.2016.75>
(58)【調査した分野】(Int.Cl.,DB名)
H04L 9/00 -9/40
G09C 1/00
G06F 21/53
G06F 21/62
(57)【特許請求の範囲】
【請求項1】
コンピュータ実装方法であって、
複数のコンピュータを含むセキュアマルチパーティ計算(MPC)システムの第1のコンピュータによって、選択されたデジタルコンポーネントがクライアントデバイスにおいて表示される環境のコンテキスト特性のセットの少なくとも第1のシェアを取得するステップ
であって、前記コンテキスト特性のセットの前記少なくとも第1のシェアが、前記コンテキスト特性のセット内の前記コンテキスト特性のすべてを含む、ステップと、
デジタルコンポーネントのセット内の各デジタルコンポーネントに関して、
(i)前記第1のコンピュータによって、前記デジタルコンポーネントの1セットの適格性基準の間の関係を定義する適格性式の少なくとも第1のシェアを取得するステップ
であって、前記適格性式の前記少なくとも第1のシェアが前記適格性式の全体を含む、ステップと、
(ii)前記第1のコンピュータによって前記コンテキスト特性のセットの前記少なくとも第1のシェアおよび前記適格性式の前記少なくとも第1のシェアに基づいて、前記デジタルコンポーネントが前記クライアントデバイスにおいて表示されるための選択に適格であるかどうかを示す適格性パラメータの少なくとも第1のシェアを決定するステップと
を含む、ステップと、
前記セキュアMPCシステムの1つまたは複数の第2のコンピュータと協力して前記第1のコンピュータによって、前記選択されたデジタルコンポーネントとして、デジタルコンポーネントが選択に適格であることを示す適格性パラメータを有する各デジタルコンポーネントを含む適格なデジタルコンポーネントのセットから所与のデジタルコンポーネントを選択するためにセキュアMPCプロセスを実行するステップと、
前記第1のコンピュータによって、前記セキュアMPCプロセスの結果として、前記選択されたデジタルコンポーネントを識別する選択結果の第1のシェアを生成するステップと、
前記第1のコンピュータによって前記クライアントデバイスに、前記選択結果の前記第1のシェアを送信するステップと
を含む、コンピュータ実装方法。
【請求項2】
前記コンテキスト特性のセットの前記少なくとも第1のシェアを取得するステップが、前記クライアントデバイスまたはコンテンツプラットフォームのうちの1つから前記コンテキスト特性のセットの第1の秘密シェアを受信することを含む、請求項1に記載のコンピュータ実装方法。
【請求項3】
前記デジタルコンポーネントが選択に適格であるかどうかを示す前記適格性パラメータの前記少なくとも第1のシェアを決定するステップが、他のコードの実行から隔離されたサンドボックス環境内で前記コンテキスト特性のセットに基づいて前記適格性式を評価することを含む、
請求項1に記載のコンピュータ実装方法。
【請求項4】
前記コンテキスト特性のセットの前記少なくとも第1のシェアおよび前記適格性式の前記少なくとも第1のシェアに基づいて、前記デジタルコンポーネントが選択に適格であるかどうかを示す前記適格性パラメータの前記少なくとも第1のシェアを決定するステップが、前記適格性パラメータの第1の秘密シェアを決定するために、前記1つまたは複数の第2のコンピュータと協力して第2のセキュアMPCプロセスを実行することを含む、請求項1に記載のコンピュータ実装方法。
【請求項5】
コンピュータ実装方法であって、
複数のコンピュータを含むセキュアマルチパーティ計算(MPC)システムの第1のコンピュータによって、選択されたデジタルコンポーネントがクライアントデバイスにおいて表示される環境のコンテキスト特性のセットの少なくとも第1のシェアを取得するステップと、
デジタルコンポーネントのセット内の各デジタルコンポーネントに関して、
(i)前記第1のコンピュータによって、前記デジタルコンポーネントの1セットの適格性基準の間の関係を定義する適格性式の少なくとも第1のシェアを取得するステップと、
(ii)前記第1のコンピュータによって前記コンテキスト特性のセットの前記少なくとも第1のシェアおよび前記適格性式の前記少なくとも第1のシェアに基づいて、前記デジタルコンポーネントが前記クライアントデバイスにおいて表示されるための選択に適格であるかどうかを示す適格性パラメータの少なくとも第1のシェアを決定するステップと、
前記セキュアMPCシステムの1つまたは複数の第2のコンピュータと協力して前記第1のコンピュータによって、前記選択されたデジタルコンポーネントとして、デジタルコンポーネントが選択に適格であることを示す適格性パラメータを有する各デジタルコンポーネントを含む適格なデジタルコンポーネントのセットから所与のデジタルコンポーネントを選択するためにセキュアMPCプロセスを実行するステップと、
前記第1のコンピュータによって、前記セキュアMPCプロセスの結果として、前記選択されたデジタルコンポーネントを識別する選択結果の第1のシェアを生成するステップと、
前記第1のコンピュータによって前記クライアントデバイスに、前記選択結果の前記第1のシェアを送信するステップと
を含み、
特定のデジタルコンポーネントの前記適格性基準のセットの前記少なくとも第1のシェアが、前記特定のデジタルコンポーネントの特性のベクトルの第1の秘密シェアを含み、
前記コンテキスト特性のセットが、前記コンテキスト特性のベクトルを含み、
前記特定のデジタルコンポーネントの前記適格性式が、セット交差チェックを含み、
前記特定のデジタルコンポーネントの前記適格性パラメータの前記少なくとも第1のシェアを決定するステップが、前記セキュアMPCシステムの前記1つまたは複数の第2のコンピュータと協力して第2のセキュアMPCプロセスを使用して、前記特定のデジタルコンポーネントの特性の前記ベクトルの少なくとも1つの要素と前記コンテキスト特性の前記ベクトルの少なくとも1つの要素との間に交差が存在すると判定することを含む、
コンピュータ実装方法。
【請求項6】
前記適格性式が、前記特定のデジタルコンポーネントの特性の前記ベクトルの1つまたは複数の要素が前記コンテキスト特性の前記ベクトルの1つまたは複数の対応する要素と一致するときに前記特定のデジタルコンポーネントが選択に不適格であるブロックリストとして、前記特定のデジタルコンポーネントの特性の前記ベクトルを定義し、
前記特定のデジタルコンポーネントの前記適格性パラメータの前記少なくとも第1のシェアを決定するステップが、前記特定のデジタルコンポーネントの特性の前記ベクトルの前記少なくとも1つの要素と前記コンテキスト特性の前記ベクトルの前記少なくとも1つの要素との間に前記交差が存在するという判定に応答して、前記特定のデジタルコンポーネントが前記クライアントデバイスにおいて表示されるための選択に不適格であることを示すように、前記適格性パラメータの前記少なくとも第1のシェアの値を設定することを含む、
請求項5に記載のコンピュータ実装方法。
【請求項7】
前記適格性式が、前記特定のデジタルコンポーネントの特性の前記ベクトルの1つまたは複数の要素が前記コンテキスト特性の前記ベクトルの1つまたは複数の対応する要素と一致するときに前記特定のデジタルコンポーネントが選択に適格である有効リストとして、前記特定のデジタルコンポーネントの特性の前記ベクトルを定義し、
前記特定のデジタルコンポーネントの前記適格性パラメータの前記少なくとも第1のシェアを決定するステップが、前記特定のデジタルコンポーネントの特性の前記ベクトルの前記少なくとも1つの要素と前記コンテキスト特性の前記ベクトルの前記少なくとも1つの要素との間に前記交差が存在するという判定に応答して、前記特定のデジタルコンポーネントが前記クライアントデバイスにおいて表示されるための選択に適格であることを示すように、前記適格性パラメータの前記少なくとも第1のシェアの値を設定することを含む、
請求項5に記載のコンピュータ実装方法。
【請求項8】
コンピュータ実装方法であって、
複数のコンピュータを含むセキュアマルチパーティ計算(MPC)システムの第1のコンピュータによって、選択されたデジタルコンポーネントがクライアントデバイスにおいて表示される環境のコンテキスト特性のセットの少なくとも第1のシェアを取得するステップと、
デジタルコンポーネントのセット内の各デジタルコンポーネントに関して、
(i)前記第1のコンピュータによって、前記デジタルコンポーネントの1セットの適格性基準の間の関係を定義する適格性式の少なくとも第1のシェアを取得するステップと、
(ii)前記第1のコンピュータによって前記コンテキスト特性のセットの前記少なくとも第1のシェアおよび前記適格性式の前記少なくとも第1のシェアに基づいて、前記デジタルコンポーネントが前記クライアントデバイスにおいて表示されるための選択に適格であるかどうかを示す適格性パラメータの少なくとも第1のシェアを決定するステップと、
前記セキュアMPCシステムの1つまたは複数の第2のコンピュータと協力して前記第1のコンピュータによって、前記選択されたデジタルコンポーネントとして、デジタルコンポーネントが選択に適格であることを示す適格性パラメータを有する各デジタルコンポーネントを含む適格なデジタルコンポーネントのセットから所与のデジタルコンポーネントを選択するためにセキュアMPCプロセスを実行するステップと、
前記第1のコンピュータによって、前記セキュアMPCプロセスの結果として、前記選択されたデジタルコンポーネントを識別する選択結果の第1のシェアを生成するステップと、
前記第1のコンピュータによって前記クライアントデバイスに、前記選択結果の前記第1のシェアを送信するステップと
を含み、
特定のデジタルコンポーネントの前記適格性基準のセットの前記少なくとも第1のシェアが、前記特定のデジタルコンポーネントの特性を含む第1のブルームフィルタの第1の秘密シェアを含み、
前記コンテキスト特性のセットが、前記コンテキスト特性を含む第2のブルームフィルタを含み、
前記特定のデジタルコンポーネントの前記適格性式が、セット交差チェックを含み、
前記特定のデジタルコンポーネントの前記適格性パラメータの前記少なくとも第1のシェアを決定するステップが、前記セキュアMPCシステムの前記1つまたは複数の第2のコンピュータと協力して第2のセキュアMPCプロセスを使用して、前記第1のブルームフィルタの少なくとも1つの要素と前記第2のブルームフィルタの少なくとも1つの要素との間に交差が存在すると判定することを含む、
コンピュータ実装方法。
【請求項9】
特定のデジタルコンポーネントの前記適格性式が、前記デジタルコンポーネントの所与の特性と、前記コンテキスト特性のセットの対応する特性との間の比較を含む、請求項1に記載のコンピュータ実装方法。
【請求項10】
特定のデジタルコンポーネントの前記適格性式が、前記デジタルコンポーネントの所与の特性と、前記コンテキスト特性のセットの対応する特性との間の同等性テストを含む、請求項1に記載のコンピュータ実装方法。
【請求項11】
特定のデジタルコンポーネントの前記適格性式が、前記特定のデジタルコンポーネントが選択に適格であるときを定義する真理値表を含む、請求項1に記載のコンピュータ実装方法。
【請求項12】
前記適格性式が、2つ以上の部分式と、部分式の各ペアに関するブール演算子とを含むブール式を含む、請求項1に記載のコンピュータ実装方法。
【請求項13】
前記2つ以上の部分式が、(i)セット交差チェック、(ii)同等性テスト、および(iii)比較テストのうちの2つ以上を含む、請求項12に記載のコンピュータ実装方法。
【請求項14】
前記コンテキスト特性のセットが、(i)前記選択されたデジタルコンポーネントが表示されるリソースについてのデータ、(ii)前記クライアントデバイスのユーザについてのデータ、(iii)前記デジタルコンポーネントを表示するアプリケーションについてのデータ、または(iv)前記クライアントデバイスについてのデータのうちの少なくとも1つを含む、請求項1に記載のコンピュータ実装方法。
【請求項15】
システムであって、
1つまたは複数のプロセッサと、
命令を記憶した、1つまたは複数の記憶デバイスであって、前記命令が、前記1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、請求項1から14のいずれか一項に記載の方法を実行させる、記憶デバイスと、
を備えるシステム。
【請求項16】
1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、請求項1から14のいずれか一項に記載の方法を実行させる命令を担持する、コンピュータ可読記憶媒体。
【請求項17】
1つまたは複数のコンピュータによって実行されると、前記1つまたは複数のコンピュータに、請求項1から14のいずれか一項に記載の方法を実行させる命令を含む、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、暗号学およびデータセキュリティに関する。
【背景技術】
【0002】
セキュアマルチパーティ計算(MPC:multi-party computation)は、出力が指定のパーティのみに発出されると同時に、個々の当事者が別の当事者のデータまたは中間算出値にアクセスできないように、複数の当事者にわたって計算を分散させることによってデータへのアクセスを阻止する、暗号プロトコルのファミリーである。MPC計算システムは、典型的には、秘密シェアまたは他の暗号化形態のデータおよびパーティ間の情報のセキュアな交換を使用して計算を実施する。
【発明の概要】
【課題を解決するための手段】
【0003】
概して、本明細書に記載の対象の1つの革新的な態様は、複数のコンピュータを含むセキュアマルチパーティ計算(MPC)システムの第1のコンピュータによって、選択されたデジタルコンポーネントがクライアントデバイスにおいて表示される環境のコンテキスト特性(contextual property)のセットの少なくとも第1のシェアを取得するステップと、デジタルコンポーネントのセット内の各デジタルコンポーネントに関して、デジタルコンポーネントの1セットの適格性基準の間の関係を定義する適格性式(eligibility expression)の少なくとも第1のシェアを取得するステップと、コンテキスト特性のセットの少なくとも第1のシェアおよび適格性式の少なくとも第1のシェアに基づいて、デジタルコンポーネントがクライアントデバイスにおいて表示されるための選択に適格であるかどうかを示す適格性パラメータの少なくとも第1のシェアを決定するステップと、セキュアMPCシステムの1つまたは複数の第2のコンピュータと協力して第1のコンピュータによって、選択されたデジタルコンポーネントとして、デジタルコンポーネントが選択に適格であることを示す適格性パラメータを有する各デジタルコンポーネントを含む適格なデジタルコンポーネントのセットから所与のデジタルコンポーネントを選択するためにセキュアMPCプロセスを実行するステップと、セキュアMPCプロセスの結果として、選択されたデジタルコンポーネントを識別する選択結果の第1のシェアを生成するステップと、第1のコンピュータによってクライアントデバイスに、選択結果の第1のシェアを送信するステップとを含む方法に具現化され得る。この態様の他の実装形態は、コンピュータ記憶デバイスに符号化された方法の態様を実行するように構成された、対応する装置、システム、およびコンピュータプログラムを含む。
【0004】
これらのおよび他の実装形態は各々、以下の特徴のうちの1つまたは複数を任意選択で含み得る。いくつかの態様において、コンテキスト特性のセットの少なくとも第1のシェアを取得するステップは、クライアントデバイスまたはコンテンツプラットフォームのうちの1つからコンテキスト特性のセットの第1の秘密シェアを受信することを含む。
【0005】
いくつかの態様において、コンテキスト特性のセットの少なくとも第1のシェアは、コンテキスト特性のセット内のコンテキスト特性のすべてを含み、適格性式の少なくとも第1のシェアは、適格性式の全体を含み、デジタルコンポーネントが選択に適格であるかどうかを示す適格性パラメータの少なくとも第1のシェアを決定するステップは、他のコードの実行から隔離されたサンドボックス環境内でコンテキスト特性のセットに基づいて適格性式を評価することを含む。
【0006】
いくつかの態様において、コンテキスト特性のセットの少なくとも第1のシェアおよび適格性式の少なくとも第1のシェアに基づいて、デジタルコンポーネントが選択に適格であるかどうかを示す適格性パラメータの少なくとも第1のシェアを決定するステップは、適格性パラメータの第1の秘密シェアを決定するために、1つまたは複数の第2のコンピュータと協力して、第2のセキュアMPCプロセスを実行することを含む。
【0007】
いくつかの態様において、特定のデジタルコンポーネントの適格性基準のセットの少なくとも第1のシェアは、特定のデジタルコンポーネントの特性のベクトルの第1の秘密シェアを含み、コンテキスト特性のセットは、コンテキスト特性のベクトルを含み、特定のデジタルコンポーネントの適格性式は、セット交差チェック(set intersection check)を含み、特定のデジタルコンポーネントの適格性パラメータの少なくとも第1のシェアを決定するステップは、セキュアMPCシステムの1つまたは複数の第2のコンピュータと協力して第2のセキュアMPCプロセスを使用して、特定のデジタルコンポーネントの特性のベクトルの少なくとも1つの要素とコンテキスト特性のベクトルの少なくとも1つの要素との間に交差が存在すると判定することを含む。
【0008】
いくつかの態様において、適格性式は、特定のデジタルコンポーネントの特性のベクトルの1つまたは複数の要素がコンテキスト特性のベクトルの1つまたは複数の対応する要素と一致するときに特定のデジタルコンポーネントが選択に不適格であるブロックリストとして、特定のデジタルコンポーネントの特性のベクトルを定義し、特定のデジタルコンポーネントの適格性パラメータの少なくとも第1のシェアを決定するステップは、特定のデジタルコンポーネントの特性のベクトルの少なくとも1つの要素とコンテキスト特性のベクトルの少なくとも1つの要素との間に交差が存在するという判定に応答して、特定のデジタルコンポーネントがクライアントデバイスにおいて表示されるための選択に不適格であることを示すように、適格性パラメータの少なくとも第1のシェアの値を設定することを含む。
【0009】
いくつかの態様において、適格性式は、特定のデジタルコンポーネントの特性のベクトルの1つまたは複数の要素がコンテキスト特性のベクトルの1つまたは複数の対応する要素と一致するときに特定のデジタルコンポーネントが選択に適格である有効リスト(enabled list)として、特定のデジタルコンポーネントの特性のベクトルを定義し、特定のデジタルコンポーネントの適格性パラメータの少なくとも第1のシェアを決定するステップは、特定のデジタルコンポーネントの特性のベクトルの少なくとも1つの要素とコンテキスト特性のベクトルの少なくとも1つの要素との間に交差が存在するという判定に応答して、特定のデジタルコンポーネントがクライアントデバイスにおいて表示されるための選択に適格であることを示すように、適格性パラメータの少なくとも第1のシェアの値を設定することを含む。
【0010】
いくつかの態様において、特定のデジタルコンポーネントの適格性基準のセットの少なくとも第1のシェアは、特定のデジタルコンポーネントの特性を含む第1のブルームフィルタの第1の秘密シェアを含み、コンテキスト特性のセットは、コンテキスト特性を含む第2のブルームフィルタを含み、特定のデジタルコンポーネントの適格性式は、セット交差チェックを含み、特定のデジタルコンポーネントの適格性パラメータの少なくとも第1のシェアを決定するステップは、セキュアMPCシステムの1つまたは複数の第2のコンピュータと協力して第2のセキュアMPCプロセスを使用して、第1のブルームフィルタの少なくとも1つの要素と第2のブルームフィルタの少なくとも1つの要素との間に交差が存在すると判定することを含む。
【0011】
いくつかの態様において、特定のデジタルコンポーネントの適格性式は、デジタルコンポーネントの所与の特性と、コンテキスト特性のセットの対応する特性との間の比較を含む。いくつかの態様において、特定のデジタルコンポーネントの適格性式は、デジタルコンポーネントの所与の特性と、コンテキスト特性のセットの対応する特性との間の同等性テストを含む。
【0012】
いくつかの態様において、特定のデジタルコンポーネントの適格性式は、特定のデジタルコンポーネントが選択に適格であるときを定義する真理値表を含む。いくつかの態様において、適格性式は、2つ以上の部分式と、部分式の各ペアに関するブール演算子とを含むブール式を含む。2つ以上の部分式は、(i)セット交差チェック、(ii)同等性テスト、および(iii)比較テストのうちの2つ以上を含み得る。
【0013】
いくつかの態様において、コンテキスト特性のセットは、(i)選択されたデジタルコンポーネントが表示されるリソースについてのデータ、(ii)クライアントデバイスのユーザについてのデータ、(iii)デジタルコンポーネントを表示するアプリケーションについてのデータ、または(iv)クライアントデバイスについてのデータのうちの少なくとも1つを含む。
【0014】
本明細書で説明する主題は、以下の利点のうちの1つまたは複数を実現するように特定の実施形態で実施され得る。ユーザ情報のシェアに基づいてデジタルコンポーネントを選択するために、異なる当事者によって運用されるセキュアMPCシステムの2つ以上のコンピュータによって実行されるセキュアMPCプロセスを使用することは、MPCコンピュータ間の不正な共謀がない限り、ユーザ情報がMPCコンピュータまたは別の当事者のどちらによっても平文でアクセスされ得ないことを保証する。このようにして、少なくとも1つのMPCサーバが公正である限り、ユーザデータプライバシーは保持される。また、セキュアMPCプロセスは、MPCコンピュータまたは何らかの方法で情報のシェアを取得する別のエンティティのいずれによっても情報がアクセスされ得ないようにコンテンツプラットフォームの情報の機密性を保持するために、デジタルコンポーネント選択において、コンテンツプラットフォームから受信された情報のシェアを使用することができる。
【0015】
デジタルコンポーネント選択プロセスにおいて、MPCサーバは、そのパーティが平文内のユーザ情報にアクセスすることを阻止しながら1つまたは複数の適格性条件を満たす適格なデジタルコンポーネントから選択することができる。適格性条件は、要因の中でも、デジタルコンポーネントの配信の方式または頻度に対する制約およびガイドラインを含むことができる。条件は、ユーザグループメンバーシップ、頻度制御、ミューティング(たとえば、ユーザブロック)、ユーザのマイクロターゲティングを阻止するためのk-匿名性、ならびに/またはペーシングおよびバジェット制約を含むことができる。
【0016】
別の例示的な適格性条件は、デジタルコンポーネントが提示されるコンテキスト、たとえば、デジタルコンポーネントが表示されるリソース、デジタルコンポーネントを表示するクライアントデバイスの地理的位置、およびデジタルコンポーネントを表示するアプリケーション(たとえば、ブラウザ)の言語設定に関連する。また、デジタルコンポーネントプロバイダは、それらのデジタルコンポーネントが表示され得るおよび/または表示され得ないコンテキストを指定することができる。同様に、リソースパブリッシャは、それらのリソースとともに表示され得るまたは表示され得ないデジタルコンポーネントの特徴を指定することができる。その関連するコンテキストを有する各デジタルコンポーネント表示機会に適格なデジタルコンポーネントを識別するために使用され得る特性のすべての可能な組合せを考慮したキャッシュ検索キーを使用するのではなく、デジタルコンポーネントの基準は、たとえば、セキュアMPCプロセスを使用して秘密シェアでMPCコンピュータによって評価されることが可能な式を使用して定義され得る。このようにして、大きなキャッシュ検索キーの使用と比較して、MPCコンピュータによって記憶されるデータの量が削減する。また、これは、MPCコンピュータのデータストレージ要件を増加させることなく、デジタルコンポーネントの表示のパブリッシャおよびデジタルコンポーネントプロバイダの制御の柔軟性を高め、それが、MPCコンピュータが高速メモリ、たとえば、高速キャッシュにより多くのデジタルコンポーネント、デジタルコンポーネントに関する情報、および/または他の関連情報を記憶することを可能にする。
【0017】
デジタルコンポーネントの選択は、典型的にはコンテンツがクライアントデバイスにおいてロードされている時間に発生するオンラインプロセスであるため、このプロセスが、たとえば数ミリ秒以内など、迅速に完了することが重要である。本明細書に記載の技法は、クライアントデバイスとMPCクラスタとの間で送信されるデータのサイズを低減することによって、MPCクラスタによって必要とされる計算リソースを低減することによって、ならびに、MPCクラスタのサーバによって実施されるラウンドトリップ通信の数およびサーバ間で送信されるデータのサイズを低減することによって、デジタルコンポーネントが選択される速度を増強する。クライアントデバイスとサーバとの間のデータサイズの低減はまた、ネットワーク帯域幅消費、および、たとえばクライアントデバイスがバッテリ電力によって作動するモバイルデバイスである場合のクライアントデバイスのバッテリ消費も低減する。
【0018】
MPCクラスタは、MPCクラスタがセキュアMPCプロセスを使用して選択した、選択されたデジタルコンポーネントを識別する結果の秘密シェアを送信することができる。デジタルコンポーネントのすべてまたは大きいセットに対する情報ではなく選択されたデジタルコンポーネントのみに対して結果の秘密シェアを送ることは、結果を送信および受信する際に、レイテンシおよび消費される帯域幅、処理能力、およびバッテリ電力を同様に低減する。このことはまた、情報がそれに対してクライアントデバイスに提供されるデジタルコンポーネントの数を限定することによって、デジタルコンポーネントのための選択値をMPCクラスタにサブミットするコンテンツプラットフォームの機密情報の、潜在的な漏洩を低減する。
【0019】
コンテンツ提示におけるレイテンシを減らすことは、そのようなコンテンツが到着するのを待機している間にユーザデバイスにおいて起こるエラーの数も減らす。コンテンツは、ワイヤレスネットワークにより接続されるモバイルデバイスに数ミリ秒で提供されなければならないことが多いので、コンテンツを選択して提供する際のレイテンシを減らすことは、エラーを防ぎユーザの不満を減らすのに重要である。
【0020】
本明細書において説明される主題の1つまたは複数の実施形態の詳細は、添付の図面および以下の説明に記載される。主題の他の特徴、態様、および利点は、説明、図面、および特許請求の範囲から明らかとなろう。
【図面の簡単な説明】
【0021】
【
図1】MPCクラスタがクライアントデバイスへの配信用のデジタルコンポーネントを選択するためにセキュアMPCプロセスを実行する環境のブロック図である。
【
図2】
図1の環境内の例示的なデータフローを示す図である。
【
図3】クライアントデバイスへの配信用のデジタルコンポーネントを選択するための例示的なプロセスの図である。
【
図4】クライアントデバイスへの配信用のデジタルコンポーネントを選択するための例示的なプロセスの図である。
【
図5】デジタルコンポーネントが選択に適格であるかどうかを判定するための例示的なプロセスの図である。
【
図6】クライアントデバイスへの配信用のデジタルコンポーネントを選択するための例示的なプロセスの図である。
【
図7】例示的コンピュータシステムのブロック図である。
【発明を実施するための形態】
【0022】
様々な図面における同じ参照番号および名称は、同様の要素を示す。
【0023】
概して、本明細書は、ユーザプライバシーを保持し、選択プロセスに関与する各当事者のデータのセキュリティを保護する方法でデジタルコンポーネントを選択するために暗号学、秘密共有、およびセキュアMPCを使用するためのシステムおよび技法を説明する。本明細書に記載の技法は、デジタルコンポーネントを表示するクライアントデバイスに送信される、およびクライアントデバイスから送信されるデータのサイズを最小限に抑えながら、たとえば、要求が受信された後の数ミリ秒以内などの短い時間期間内に依然としてデジタルコンポーネントを提供しながら、そのようなプライバシー保持、およびデータセキュリティを可能にする。また、本技法は、デジタルコンポーネントが表示される環境と、特定の電子リソース、たとえば、ウェブページおよび/またはネイティブアプリケーションコンテンツとともに表示されるデジタルコンポーネントとを制御するためにコンテンツプラットフォームおよび/またはデジタルコンポーネントプロバイダによって指定される規則および他のデータの柔軟性およびセキュリティを提供する。
【0024】
図1は、MPCクラスタ130がクライアントデバイス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を含むことができる。
【0025】
ウェブサイト142は、1つまたは複数の電子リソース145を含む。リソース145は、ドメイン名、パスなどのドメイン内で一意なリソース識別子に関連付けられ、1つまたは複数のサーバによってホストされ得る。例示的ウェブサイトは、テキスト、画像、マルチメディアコンテンツ、およびスクリプトなどのプログラミング要素を含み得る、ハイパーテキストマークアップ言語(HTML)でフォーマットされたウェブページの集合である。各ウェブサイト142は、ウェブサイト142を制御、管理、および/または所有するエンティティであるコンテンツパブリッシャ140によって維持される。
【0026】
リソース145は、パブリッシャ140によってネットワーク105を介して提供することができ、リソースアドレスと関連付けることができる任意のデータである。リソースには、ほんのいくつかの例を挙げれば、HTMLページ、ワードプロセッシングドキュメント、およびポータブルドキュメントフォーマット(PDF)ドキュメント、画像、ビデオ、およびフィードソースが含まれる。リソース145は、単語、語句、写真などのようなコンテンツを含むことができ、埋め込まれた情報(たとえばメタデータ情報およびハイパーリンク)および/またはたとえばスクリプトなどの埋め込まれた命令を含んでもよい。
【0027】
クライアントデバイス110は、ネットワーク105を介して通信することが可能な電子デバイスである。例示的なクライアントデバイス110は、パーソナルコンピュータ、モバイル通信デバイス、たとえば、スマートフォン、およびネットワーク105を介してデータを送ることおよび受信することができる他のデバイスを含む。クライアントデバイス110はまた、マイクロフォンを通じてオーディオ入力を受け入れ、かつスピーカを通じてオーディオ出力を出力する、デジタルアシスタントデバイスを含むことができる。デジタルアシスタントが、オーディオ入力を受け入れるためにマイクロフォンをアクティブ化する「ホットワード」または「ホットフレーズ」を検出すると、デジタルアシスタントは、(たとえば、オーディオ入力を受け入れる準備ができている)聴取モードに入ることができる。デジタルアシスタントデバイスはまた、画像をキャプチャするとともに情報を視覚的に提示するためのカメラおよび/またはディスプレイを含むことができる。デジタルアシスタントは、ウェアラブルデバイス(たとえば、時計または眼鏡)、スマートフォン、スピーカデバイス、タブレットデバイス、または別のハードウェアデバイスを含む、異なる形態のハードウェアデバイスの中に実装され得る。クライアントデバイス110はまた、デジタルメディアデバイス、たとえば、テレビにビデオをストリーミングするためにテレビまたは他のディスプレイにプラグインするストリーミングデバイス、ゲームシステム、または仮想現実システムも含むことができる。
【0028】
クライアントデバイス110は、通常、ネットワーク105を介してデータを送ることおよび受信することを容易にするために、ウェブブラウザおよび/またはネイティブアプリケーションなどのアプリケーション112を含む。ネイティブアプリケーションは、特定のプラットフォームまたは特定のデバイスのために、たとえば、特定のオペレーティングシステムを有するモバイルデバイスのために開発されたアプリケーションである。パブリッシャ140は、ネイティブアプリケーションを開発することができ、ネイティブアプリケーションをクライアントデバイス110に提供すること、たとえば、ダウンロードのために利用可能にすることができる。ウェブブラウザは、たとえば、クライアントデバイス110のユーザが、ウェブブラウザのアドレスバーの中にリソース145に対するリソースアドレスを入力すること、またはリソースアドレスを参照するリンクを選択することに応答して、パブリッシャ140のウェブサイト142をホストするウェブサーバにリソース145を要求することができる。同様に、ネイティブアプリケーションは、パブリッシャのリモートサーバにアプリケーションコンテンツを要求することができる。
【0029】
いくつかのリソース、アプリケーションページ、または他のアプリケーションコンテンツは、リソース145またはアプリケーションページとともにデジタルコンポーネントを表示するためのデジタルコンポーネントスロットを含むことができる。本明細書全体にわたって使用される、「デジタルコンポーネント」という語句は、デジタルコンテンツまたはデジタル情報の別個の単位(たとえば、ビデオクリップ、オーディオクリップ、マルチメディアクリップ、画像、テキスト、またはコンテンツの別の単位)を指す。デジタルコンポーネントは、単一のファイルとして、またはファイルの集合体として物理メモリデバイスに電子的に記憶されてもよく、デジタルコンポーネントは、ビデオファイル、オーディオファイル、マルチメディアファイル、画像ファイル、またはテキストファイルの形態をとり、広告情報を含んでもよく、したがって、広告は、デジタルコンポーネントの1つのタイプである。たとえば、デジタルコンポーネントは、アプリケーション112によって表示されるウェブページ、アプリケーションコンテンツ(たとえばアプリケーションページ)、または他のリソースのコンテンツを補足することが意図されるコンテンツであってよい。より詳細には、デジタルコンポーネントは、リソースコンテンツに関連するデジタルコンテンツを含んでもよく、たとえば、デジタルコンポーネントは、ウェブページコンテンツと同じトピック、または関連するトピックに関連してもよい。したがって、デジタルコンポーネントのプロビジョニングは、ウェブページまたはアプリケーションコンテンツを補足し、一般に強化することができる。
【0030】
アプリケーション112が、1つまたは複数のデジタルコンポーネントスロットを含むリソース(またはアプリケーションコンテンツ)をロードするとき、アプリケーション112は、スロットごとにデジタルコンポーネントを要求することができる。いくつかの実装形態では、デジタルコンポーネントスロットは、アプリケーション112によって処理されると、アプリケーション112にクライアントデバイス110のユーザに表示するためのデジタルコンポーネントを要求させるコード、たとえば、1つまたは複数のスクリプトを含み得る。以下で説明するように、アプリケーション112は、MPCクラスタ130および/または1つもしくは複数のSSP170にデジタルコンポーネントを要求することができる。
【0031】
一部のパブリッシャ140は、SSP170を使用して、そのリソース145および/またはアプリケーション112のデジタルコンポーネントスロットに対するデジタルコンポーネントを取得するプロセスを管理する。SSP170は、リソースおよび/またはアプリケーションに対するデジタルコンポーネントを取得するプロセスを自動化するハードウェアおよび/またはソフトウェアにおいて実装される技術プラットフォームである。各パブリッシャ140は、対応するSSP170または複数のSSP170を有することができる。いくつかのパブリッシャ140が、同じSSP170を使用してよい。
【0032】
デジタルコンポーネントプロバイダ160は、パブリッシャのリソース145およびアプリケーション112のデジタルコンポーネントスロットに表示されるデジタルコンポーネントを作成(またはそうでなければパブリッシュ)することができる。たとえば、デジタルコンポーネントプロバイダ160は、デジタルコンポーネントプロバイダ160に関係するコンテンツを含むデジタルコンポーネントを作成することができる。特定の例において、製品製造者のデジタルコンポーネントは、製品に関連するコンテンツを含むことができる。
【0033】
デジタルコンポーネントプロバイダ160は、DSP150を使用して、デジタルコンポーネントスロット内に表示するために、そのデジタルコンポーネントのプロビジョニングを管理することができる。DSP150は、リソースおよび/またはアプリケーションで表示するためのデジタルコンポーネントを配信するプロセスを自動化するハードウェアおよび/またはソフトウェアにおいて実装される技術プラットフォームである。DSP150は、デジタルコンポーネントプロバイダ160に代わって複数のSSP170と対話して、複数の異なるパブリッシャ140のリソース145および/またはアプリケーション112で表示するためのデジタルコンポーネントを提供することができる。概して、DSP150は、(たとえば、SSP170から)デジタルコンポーネントの要求を受信し、要求に基づいて、1つまたは複数のデジタルコンポーネントプロバイダ160によって作成された1つまたは複数のデジタルコンポーネントの選択値を生成(または選択)し、デジタルコンポーネント(たとえば、デジタルコンポーネント自体、またはデジタルコンポーネントがダウンロードされることを可能にするコードを含む創作物要素)および選択値に関連するデータをSSP170に提供することができる。選択値は、デジタルコンポーネントプロバイダ160が、デジタルコンポーネントの表示またはそれとのユーザ対話のために提供する意思がある量であることができる。次いで、SSP170は、クライアントデバイス110での表示のためのデジタルコンポーネントを選択し、たとえば、デジタルコンポーネントまたはデジタルコンポーネントのダウンロードを可能にするコードを提供することによって、クライアントデバイス110にデジタルコンポーネントを表示させるデータをクライアントデバイス110に提供することができる。下記により詳細に説明するように、MPCクラスタ130は、クライアントデバイス110がユーザプライバシーを保持するように表示するためのデジタルコンポーネントを選択することができる。
【0034】
場合によっては、ウェブページ、アプリケーションページ、または、以前にユーザが訪れた、および/もしくはユーザと対話した他の電子リソースに関連する、デジタルコンポーネントをユーザが受信することが有益である。そのようなデジタルコンポーネントをユーザに配信するために、ユーザは、ユーザグループ、たとえば、ユーザ関心グループ、(たとえば、類似するアクションを実行した、もしくは類似する電子リソースを訪問した)類似するユーザのコホート、または類似するユーザデータに関わる他のグループタイプに割り当てられ得る。たとえば、ユーザが特定のリソースを訪問するとき、またはリソースにおいて特定の行動を実行する(たとえば、ウェブページに表示された特定のアイテムと対話する、またはアイテムを仮想カートに追加する)ときに、ユーザがユーザグループに追加され得る。ユーザグループは、デジタルコンポーネントプロバイダ160によって生成および更新され得る。すなわち、各デジタルコンポーネントプロバイダ160は、ユーザがデジタルコンポーネントプロバイダ160の電子リソースを訪問すると、デジタルコンポーネントプロバイダ160のユーザグループにユーザを割り当てることができる。ユーザグループはまた、コンテンツプラットフォームによって、たとえば、DSP150および/またはSSP170によって、作成および/または更新され得る。
【0035】
ユーザプライバシーを保護するために、ユーザのグループメンバーシップが、デジタルコンポーネントプロバイダ、コンテンツプラットフォーム、または他の当事者によるのではなく、たとえば、アプリケーション112、クライアントデバイス110のオペレーティングシステム、または別の信頼されるプログラムのうちの1つによって、ユーザのクライアントデバイス110において維持され得る。特定の例では、信頼されるプログラム(たとえば、ウェブブラウザまたはオペレーティングシステム)は、ウェブブラウザまたは別のアプリケーションを使用するユーザに対して(たとえば、ブラウザ、アプリケーション、またはクライアントデバイス110にログインされたユーザに対して)、ユーザグループ識別子のリスト(「ユーザグループリスト」)を維持することができる。ユーザグループリストは、メンバーとしてユーザを含むユーザグループごとにユーザグループ識別子を含むことができる。ユーザグループを作成するデジタルコンポーネントプロバイダ160またはコンテンツプラットフォームは、それらのユーザグループに対するユーザグループ識別子を指定することができる。ユーザグループに対するユーザグループ識別子は、グループを記述するもの(たとえば、ガーデニンググループ)またはグループを表すコード(たとえば、記述的ではない英数字シーケンス)であり得る。ユーザに対するユーザグループリストは、クライアントデバイス110においてセキュアなストレージの中に記憶され得、かつ/または他人がリストにアクセスすることを阻止するために、記憶されるときに暗号化され得る。
【0036】
アプリケーション112がデジタルコンポーネントプロバイダ160に関するリソース(たとえばウェブページ)、アプリケーションコンテンツ、またはデジタルコンポーネントを表示するとき、リソース、アプリケーションコンテンツ、またはデジタルコンポーネントは、アプリケーション112が1つまたは複数のユーザグループ識別子をユーザグループリストに追加することを要求することができる。それに応答して、アプリケーション112は、ユーザグループリストに1つまたは複数のユーザグループ識別子を追加することができ、ユーザグループリストをセキュアに記憶することができる。たとえば、ユーザが特定のアイテムに関するより多くの情報を閲覧することを選択するウェブページは、ユーザを、その特定のアイテムに関連するユーザグループに追加することができる。
【0037】
いくつかの実施態様において、MPCクラスタ130は、ユーザの関心を引くことがあるか、または別の様式でユーザ/ユーザデバイスにとって有益であり得る、デジタルコンポーネントを選択するために、ユーザのユーザグループメンバーシップを使用することができる。たとえば、そのようなデジタルコンポーネントまたは他のコンテンツは、ユーザエクスペリエンスを改善するか、ユーザデバイスの実行を改善するか、またはいくつかの他のやり方でユーザもしくはクライアントデバイス110の利益になる、データを含んでよい。しかしながら、MPCクラスタ130の計算システムMPC1およびMPC2がユーザに対するユーザグループ識別子に平文でアクセスすることを阻止するやり方で、ユーザのユーザグループリストのユーザグループ識別子が、デジタルコンポーネントを選択するために提供および使用され得、それによって、デジタルコンポーネントを選択するためにユーザグループメンバーシップデータを使用するときにユーザプライバシーを保存する。MPCクラスタ130はまた、下記により詳細に説明するように、他の条件を使用してデジタルコンポーネントを選択することもできる。平文とは、計算的にタグ付けされず、特別の方法でフォーマッティングされず、またはコードで書かれないテキスト、あるいは鍵もしくは他の暗号解読デバイスまたは他の暗号解読プロセスを必要とせずに見られることまたは使用されることが可能な形態のデータであり、バイナリファイルを含む。
【0038】
例示的なセキュアMPCクラスタ130は、たとえば、ユーザのグループメンバーシップおよび/またはコンテキストデータ(たとえば、選択されたデジタルコンポーネントが表示される環境のコンテキスト特性)に基づいて、ただし、平文のグループメンバーシップ、コンテキストデータ、もしくは他のユーザ情報、またはそのようなユーザ情報から導出された信号にアクセスすることなく、ユーザのクライアントデバイスに配信するためのデジタルコンポーネントを選択するためにセキュアMPCプロセスを実行する2つの計算システムMPC1およびMPC2を含む。例示的なMPCクラスタ130は2つの計算システムを含むが、MPCクラスタ130が2つ以上の計算システムを含む限り、もっと多くの計算システムも使用され得る。たとえば、MPCクラスタ130は、3つの計算システム、4つの計算システム、または別の適切な個数の計算システムを含むことができる。MPCクラスタ130の中でもっと多くの計算システムを使用することは、より多くのセキュリティをもたらすことができるが、MPCプロセスの複雑度を増大させることもある。各計算システムMPC1およびMPC2は、サーバ、または、他の適切なタイプのコンピュータとすることができる。
【0039】
計算システムMPC1およびMPC2は、異なるエンティティによって動作させられ得る。このように、各エンティティは、ユーザのグループメンバーシップ、または他のユーザ情報、またはそのようなユーザ情報から導出される信号に、平文でアクセスすることができない場合がある。たとえば、計算システムMPC1またはMPC2のうちの一方は、ユーザ、パブリッシャ140、DSP150、SSP170、およびデジタルコンポーネントプロバイダ160とは異なる、信頼される当事者によって動作させられ得る。たとえば、業界グループ、政府グループ、またはブラウザ開発者が、計算システムMPC1およびMPC2のうちの一方を保守し動作させることができる。他の計算システムは、信頼される異なる当事者が各計算システムMPC1およびMPC2を動作させるように、これらのグループのうちの異なるグループによって動作させられ得る。有利には、異なる計算システムMPC1およびMPC2を動作させる異なる当事者は、ユーザプライバシーを危険にさらすために共謀すべき動機を有し得ない。いくつかの実装形態では、計算システムMPC1およびMPC2は、アーキテクチャ的に分離され、本明細書で説明するセキュアMPCプロセスを実行する外側で互いに通信しないように監視される。
【0040】
各計算システムMPC1およびMPC2は、デジタルコンポーネント(たとえば、デジタルコンポーネントの創作物)、デジタルコンポーネントの選択値、およびデジタルコンポーネントの他の情報を記憶することができる。たとえば、計算システムMPC1およびMPC2は、以前のデジタルコンポーネント選択プロセスの一部としてSSP170および/またはDSP150から以前に受信されているか、または、たとえば、デジタルコンポーネント選択プロセスにおいて使用するために事前に提供されているなど、他の様態で計算システムMPC1およびMPC2に提供されている選択値をキャッシュすることができる。このようにMPCクラスタ130は、選択値を使用して、クライアントデバイス110から受信される将来のデジタルコンポーネント要求に応答してクライアントデバイス110に配信するためのデジタルコンポーネントを選択することができる。
【0041】
選択値および他の情報がMPCクラスタ130によってデジタルコンポーネント選択プロセスのために記憶されるデジタルコンポーネントが、本明細書において記憶されるデジタルコンポーネントとして参照され得る。しかしながら、デジタルコンポーネント自体が、必ずしもMPCクラスタ130によって記憶されるとは限らない。代わりに、MPCクラスタ130は、各記憶されるデジタルコンポーネントについて、デジタルコンポーネントをそこからダウンロードすることができるネットワークロケーションを参照する、たとえばコードなどのデータを記憶することができる。いくつかの実施態様において、デジタルコンポーネント自体が記憶され、MPCクラスタ130によってアプリケーション112に直接的に戻される。そのような実施態様は、アプリケーション112が、デバイスのバッテリおよび帯域幅を消費し得、デジタルコンポーネント自体をホストするサーバがデバイスを追跡するための追加の信号を漏洩し得る追加の要求において、デジタルコンポーネントおよび/またはデジタルコンポーネントの他の情報をフェッチする必要性を低減する。
【0042】
各記憶されるデジタルコンポーネントについて、各計算システムMPC1およびMPC2は、選択値、または、デジタルコンポーネントの選択値を決定するために計算システムMPC1およびMPC2によって使用することができる値のベクトルを記憶することができる。デジタルコンポーネントの選択値は、デジタルコンポーネントが表示されるコンテキストに基づき得る。たとえば、デジタルコンポーネントプロバイダ160は、たとえば、デジタルコンポーネントが特定のトピックに関連する場合、特定のトピックに関連するリソース(たとえば、旅行に関連するウェブページ)に表示されるように、そのデジタルコンポーネントに他のトピックに関してよりも高い選択値を与えて構わない場合がある。別の例として、デジタルコンポーネントプロバイダ160は、特定の特性、興味、意図、デジタルコンポーネントとの以前のインタラクションなどを有するユーザに対して表示されるように、そのデジタルコンポーネントにより高い選択値を与えて構わない場合がある。したがって、DSP150は、各選択値またはベクトルがコンテキストおよびユーザ特性の異なる組合せのためのものであるようにして、計算システムMPC1およびMPC2に、所与のデジタルコンポーネントの複数の選択値(または複数の選択値ベクトル)を提供することができる。
【0043】
各選択値またはベクトルおよびその対応するデジタルコンポーネントは、デジタルコンポーネント選択アイテムと呼ばれ得る。デジタルコンポーネント選択アイテムは、デジタルコンポーネント自体、選択値またはベクトル、デジタルコンポーネントに関する情報(たとえば、デジタルコンポーネントのメタデータ)、1セットの適格性基準の間の関係を定義する適格性式、および/または条件データを含み得る。
【0044】
適格性式は、デジタルコンポーネントがクライアントデバイス110において表示されるコンテキストに基づいて、デジタルコンポーネント選択アイテムがクライアントデバイス110への配信に適格であるかどうかを判定するために使用される。適格性基準は、適格性式に関する基準である。適格性式は、複数の部分式と部分式の間のブール演算子とを含むブール式の形式であることが可能である。例示的な適格性式は、次の通りであることが可能である: URL = example.com AND 位置 = 米国。DSP150は、計算システムMPC1およびMPC2に、デジタルコンポーネントの適格性式および対応する選択値(または選択値を決定するために使用され得る1つもしくは複数のベクトルなどのデータ)を、たとえば、デジタルコンポーネント選択アイテムの一部として提供することができる。例示的な適格性式、適格性基準、および適格性式を評価するための技法が、下で説明される。
【0045】
デジタルコンポーネント選択アイテムの条件データは、デジタルコンポーネント選択アイテム(ならびに、したがって、選択アイテムのデジタルコンポーネントおよび選択値)が所与のデジタルコンポーネント選択プロセスの候補となるために満たされなければならない条件を定義する。記憶されるデジタルコンポーネントは、ゼロ以上の対応する条件を有し得る。いくつかの実施態様において、選択の候補となるためには、デジタルコンポーネント選択アイテムが、デジタルコンポーネントの適格性基準に基づいて適格でなければならず、デジタルコンポーネント選択アイテムの各条件が、満たされなければならない。
【0046】
1つの例示的な条件は、選択されるデジタルコンポーネントが提供されるユーザが、記憶されるデジタルコンポーネントに対応するユーザグループのメンバーであることである。この条件は、ユーザグループメンバーシップ条件として参照することができる。この例において、計算システムMPC1およびMPC2は、デジタルコンポーネント選択アイテムに関して(たとえば、選択アイテムの一部として)、デジタルコンポーネントに対応する1つまたは複数のユーザグループ識別子のセットを記憶することができる。これらのユーザグループ識別子は、記憶されるデジタルコンポーネントが提供され得るユーザグループを識別する。すなわち、デジタルコンポーネント選択アイテムは、デジタルコンポーネント選択アイテムに関する1つまたは複数のユーザグループ識別子のセットによって識別されるユーザグループのうちの少なくとも1つのメンバーであるユーザに提供するデジタルコンポーネントを選択するために実行されるデジタルコンポーネント選択プロセスの候補であるに過ぎない。
【0047】
記憶されるデジタルコンポーネントの別の例示的な条件は、デジタルコンポーネントまたは特定のカテゴリのデジタルコンポーネントが、所与の持続時間にわたってある最大回数だけしか同じユーザに提供され得ないことを示すフリークエンシーキャップ条件である。デジタルコンポーネントに対する別の例示的な条件は、デジタルコンポーネントがユーザによって、たとえばミュートされたなど、ブロックされていることを示すブロックデジタルコンポーネント条件である。これらの例示的な条件について、計算システムMPC1およびMPC2は、複数のユーザの各々について、ユーザに提供することができないデジタルコンポーネントを表す、たとえばカッコウフィルタまたはブルームフィルタなどの確率的データ構造を受信および記憶することができる。たとえば、確率的データ構造は、ユーザによって直接的に、または、デジタルコンポーネントがユーザに表示される頻度が所与の持続時間中に超過されていることに起因してブロックされているデジタルコンポーネントのユニバーサル識別子を表すことができる。
【0048】
計算システムMPC1およびMPC2は、ユーザのクライアントデバイス110から、たとえば、計算システムMPC1およびMPC2のいずれかが平文において識別子にアクセスすることを阻止する暗号化形態の確率的データ構造を受信することができる。たとえば、ユーザのクライアントデバイス110上で実行中のアプリケーション112は、フリークエンシーキャップに起因してブロックされているかまたはユーザによってブロックされているブロックデジタルコンポーネントの識別子を表すブルームフィルタを生成することができる。アプリケーション112は、次いで、計算システムMPC1およびMPC2が、協働して、所与のデジタルコンポーネントがそのユーザについてブロックされているか否かを判定するためにセキュアMPCプロセスを使用してブルームフィルタに問い合わせることを可能にするデータを、各計算システムMPC1およびMPC2に提供することができる。計算システムMPC1およびMPC2は、このセキュアMPCプロセスを使用して、ブロックデジタルコンポーネント条件の秘密シェアを計算する。
【0049】
いくつかの実施態様において、ブロックされたデジタルコンポーネントの識別子は、ユーザグループ識別子と同じ確率的データ構造に含まれ、ハッシュ関数の同じセットかまたは異なるセットかのどちらかを使用して問い合わされ得る。しかしながら、ブロックデジタルコンポーネントの目標偽陽性率は、ユーザグループ識別子の偽陽性率よりも低くすることができる。したがって、ユーザグループ識別子よりも少ないハッシュ関数を使用して、ブロックデジタルコンポーネントのブルームフィルタを生成し、これに問い合わせることができる。ブロックデジタルコンポーネントのブルームフィルタのデータサイズを低減するために、ブロックデジタルコンポーネントとは異なるブルームフィルタによって、ユーザグループ識別子を表すことができる。これによって、ネットワークを介したブルームフィルタの送信におけるレイテンシが低減し、ブルームフィルタの送信における消費帯域幅が低減し、ブルームフィルタを送信するためのバッテリ電力使用量が低減する。
【0050】
記憶されるデジタルコンポーネントに対する別の例示的な条件は、ある持続時間にわたるデジタルコンポーネントの配信をペース調整するペーシング条件である。計算システムMPC1およびMPC2は、デジタルコンポーネントがある持続時間にわたって提供され得る総回数および/またはその持続時間にわたるデジタルコンポーネントの最大バジェットを示すデータを記憶することができる。計算システムMPC1およびMPC2は、この情報を使用して、デジタルコンポーネントがこの条件に基づいてデジタルコンポーネント選択プロセスの候補になり得る頻度をペース調整することができる(たとえば、デジタルコンポーネントが候補になるには、デジタルコンポーネントに対するすべての条件が満たされる必要がある)。いくつかの実施態様において、計算システムMPC1およびMPC2は、秘密シェアを使用して、ペーシング条件を有する記憶されるデジタルコンポーネントをペース調整する、たとえば比例積分微分(PID)コントローラなどのフィードバックコントローラを実装することができる。
【0051】
この例において、計算システムMPC1およびMPC2は、デジタルコンポーネントに対するPIDコントローラの設定点を記憶することができ、デジタルコンポーネントに対するPIDコントローラの測定変数を維持することができる。概して、PIDコントローラは、目標設定点と測定変数との間の差である誤差値を使用して、測定変数を設定点に向けて駆動する出力を決定するフィードバックコントローラである。クライアントデバイスへのデジタルコンポーネントの配信のペース調整の文脈において、キャンペーンに関する設定点は、インプレッション率、インタラクション率、コンバージョン率、および/またはリソース枯渇率(たとえば、バジェット消費率)とすることができる。同様に、測定変数は、所与の持続時間にわたる、インプレッション率、インタラクション率、コンバージョン率、および/またはリソース枯渇率とすることができる。計算システムMPC1およびMPC2はまた、各PIDコントローラに対する調整パラメータを記憶することもできる。設定点、測定変数、および調整パラメータは、目標プライバシー/データセキュリティに応じて、秘密シェア(各計算システムMPC1およびMPC2が各パラメータの対応するシェアを記憶する)または平文において記憶することができる。
【0052】
別の例示的な条件は、k-匿名性条件である。k-匿名性条件は、デジタルコンポーネントが、所与の持続時間にわたって少なくともk人のユーザへの配信に対して適格である(または選択されている)ことを要求するk-匿名性規則を含むことができる。k-匿名性の概念は、特定のユーザのためのデータが、しきい値数k人の他のユーザのデータから見分けられないことを保証する。システムは、たとえば、特定のデジタルコンポーネントが、1つまたは複数のデジタルコンポーネントを求める要求に応答してクライアントデバイス110に配信されること、および同じデジタルコンポーネントが、特定の時間期間内に、少なくともk人のユーザのセットに、または少なくともk個のアプリケーション112によって、表示されている場合があるかまたは表示されたことを保証することによって、k-匿名性規則を施行することができる。いくつかの実装形態では、デジタルコンポーネントが配信されている場合があるかまたは配信された先のk個のアプリケーション112の各々は、異なるユーザ用でなければならない。この例において、計算システムMPC1およびMPC2は、デジタルコンポーネントについて、値kを記憶し、デジタルコンポーネントが配信されている可能性があるユーザの数を維持することができる。
【0053】
デジタルコンポーネントが表示されている可能性があるユーザの数を決定することは、各実際のデジタルコンポーネント選択プロセスと並行して反事実的デジタルコンポーネント選択プロセスを実行することを含むことができる。この反事実的デジタルコンポーネント選択プロセスにおいて、すべてのデジタルコンポーネントは、それらがk-匿名性条件以外のすべての条件を満たす場合、候補になり得る。反事実的デジタルコンポーネント選択プロセスにおいて、デジタルコンポーネントが少なくともk人のユーザまたはk個のアプリケーション112に対して選択される場合デジタルコンポーネントは、k-匿名性条件がなければk人のユーザに表示されていることになる。これが発生すると、k-匿名性条件を満たすデジタルコンポーネントが(存在する場合はデジタルコンポーネントに対する他の条件が満たされていると仮定して)実際のデジタルコンポーネント選択プロセスに含まれ得、これは、k-匿名性条件を満たさないデジタルコンポーネントを含まない。
【0054】
いくつかの実施態様において、各デジタルコンポーネント選択アイテムは、選択値と、たとえば、創作物自体を含むデジタルコンポーネントの他の情報とを有するバイト配列であることが可能であるデジタルコンポーネント情報要素dc_information_elementの形式で記憶される。バイト配列は、アプリケーション112またはクライアントデバイス110の信頼されるプログラム、ならびに計算システムMPC1およびMPC2が解析して選択値およびメタデータを得ることができる特定のフォーマットを有することができる。いくつかの実施態様において、デジタルコンポーネント情報要素は、デジタルコンポーネント自体を含むことができる。
【0055】
本明細書全体にわたる説明に加えて、本明細書で説明するシステム、プログラム、または特徴により、ユーザ情報(たとえば、ユーザのソーシャルネットワーク、社会活動もしくは社会的アクティビティ、職業、ユーザの選好、またはユーザの現在位置についての情報)の収集が可能になり得るかどうかと、いつ可能になり得るのかの両方、およびサーバからのコンテンツまたは通信がユーザに送られるかどうかに関して、ユーザが選定を行うことを可能にする制御装置(たとえば、ユーザがそれと対話できるユーザインターフェース要素)がユーザに提供されてよい。加えて、いくつかのデータは、個人を識別できる情報が除去されるように、記憶または使用される前に1つまたは複数の方法で処理されてよい。たとえば、ユーザの識別情報は、個人を識別できる情報がユーザについて決定できないように扱われてもよく、またはユーザの地理的位置は、ユーザの具体的な位置を決定できないように、位置情報が取得される場合に(都市、郵便番号、もしくは州のレベルなどに)一般化されてもよい。したがって、ユーザは、ユーザについてのどの情報が収集されるか、その情報がどのように使用されるか、およびどの情報がユーザに提供されるかを制御することができる。
【0056】
本明細書において、MPCクラスタによって秘密シェアに対して実施されるいくつかの計算は、秘密シェア値の積または和であるものとして示される。これらの計算が実施される速度を増大させるために、たとえばビットANDなどのAND演算を使用して秘密シェアにおいて乗算を実施することができ、たとえばビットXOR演算などのXOR演算を使用して秘密シェアにおいて加算を実施することができる。いくつかの事例において、1つの平文整数に、Z2において0または1を表す秘密シェアが乗算されるとき(すなわち、2つのシェアの和のモジュロ2が0または1である)、乗算またはビットANDは必要ない。代わりに、各計算システムが、そのシェアを評価し、そのシェアが1である場合はその整数を返し、そのシェアが0である場合は0を返すことができる。
【0057】
図2は、
図1の環境100内の例示的なデータフローを示す。この説明は、2つのタイプの選択値、すなわち、ユーザグループメンバーシップもしくは他の企業機密情報などの機密ユーザ情報、またはその値の変化が、良心的でないパーティが機密情報を推測することを可能にする可能性があるパラメータに対して条件付けされている選択値、すなわち「条件付き選択値」、および、機密情報に対して条件付けされていない選択値、すなわち「無条件選択値」を含む。ユーザプライバシーを保護するために、「条件付き選択値」に対する条件が、SSP170またはDSP150の代わりにMPCクラスタ130内で評価されて、「条件付き選択値」がデジタルコンポーネント選択プロセスの候補であるか否かが判定される。
【0058】
この構造は、MPCクラスタ130が、ユーザプライバシーおよび企業秘密情報を保護することを可能にし、アプリケーション112のプロバイダなどのアプリケーションプロバイダに対するその信用性を証明することを可能にする。この例において、MPCクラスタ130は、セキュア2パーティ計算(2PC)アーキテクチャに依拠し、これは、MPCクラスタ130の2つの計算システムのうちの少なくとも一方が公正である場合に秘密ユーザデータまたは企業秘密情報の漏洩がないことを保証するために暗号学的技法を適用する。MPCクラスタ130が3つ以上の計算システムを含む場合、現行のMPCプロトコルを拡張することができ、または、他のMPCプロトコルを使用することができる。
【0059】
MPCクラスタ130は、セキュア2PCプロトコルを実行して、候補デジタルコンポーネントの適格性を評価するために条件を評価および適用し、選択値に基づいてデジタルコンポーネントを選択するために選択プロセスを実行し、それらの条件が依存するパラメータを更新するためのインプレッションおよびユーザインタラクション(たとえば、デジタルコンポーネント選択)通知を受信する。これらのプロセスのすべては、セキュア2PCおよび秘密共有技法を使用して行われ得る。このプロトコルは、
図3~
図6を参照しながら詳細に説明される。
【0060】
段階Aにおいて、アプリケーション112は、たとえば、SSP170などのコンテンツプラットフォームからのトリガ要素と協働して、デジタルコンポーネントに対する要求をMPCクラスタ130に送信する。アプリケーション112は、デジタルコンポーネントに対する複数の要求を、複数のデジタルコンポーネントをフェッチするための1つの組合せ要求にともに含めることができる。次いで、MPCクラスタ130は、組合せ要求内の各要求に独立してサーブするか、または、1つまたは複数の選択決定を総体的に行うことができる。この例において、要求は、単一のデジタルコンポーネントに対するものであり、機密情報に基づいて選択されるデジタルコンポーネント、または、機密情報を使用することなく選択されるデジタルコンポーネントに対する要求を含む。MPCクラスタ130は、各々がそれぞれの特定のデジタルコンポーネントにマッピングされる選択値のセットの中の特定の選択値に対応する特定のデジタルコンポーネントを選択することによって、要求に応答することができる。これらの選択値は、MPCクラスタ130において以前にキャッシュされたかもしくは他の様態で記憶された選択値、および/または、DSP150またはSSP170などのプラットフォームによって生成される選択値、ジャストインタイム(JIT)選択値とすることができる。JIT選択値は、必要性に応答して直接的に生成され、デジタルコンポーネントが必要とされるときにのみ選択値が生成されるため、効率を増大させ、無駄を低減する。たとえば、JIT選択値は、デジタルコンポーネントスロットが利用可能になったときに生成することができ、これは、デジタルコンポーネントに対する要求の受信によって示される。したがって、MPCクラスタ130は、その情報がMPCクラスタ130において記憶されている、記憶されるデジタルコンポーネント、および、そのJIT選択値が現在のデジタルコンポーネント要求に対して受信されているデジタルコンポーネントを含むデジタルコンポーネントのセットからデジタルコンポーネントを選択することができる。
【0061】
いくつかの実施態様において、デジタルコンポーネントの選択値は、2つ以上のベクトルを使用して決定することができる。MPCクラスタ130は、デジタルコンポーネントについて、デジタルコンポーネントの選択値を決定するために使用することができる値の第1のベクトルを記憶することができる。値の第1のベクトルは、デジタルコンポーネントが選択されているときにデジタルコンポーネントの選択値を決定するために使用することができる。したがって、値の第1のベクトルはまた、デジタルコンポーネントベースのベクトルとして参照することもできる。デジタルコンポーネントベースのベクトルは、2つ以上の次元にまたがる複数の要素を含むことができ、各要素は、デジタルコンポーネント提示機会の特定の特徴を表すことができる。たとえば、値のデジタルコンポーネントベースのベクトルは、デジタルコンポーネントに関連する地理的位置もしくは領域、言語、デジタルコンポーネントが関連する年齢もしくは年齢幅、ウェブページもしくは他の電子リソースの特定のURL、特定の製品もしくはサービス、デジタルコンポーネントがそれがアバブ・ザ・フォールド(above the fold)に表示されるときにうまく機能するのかもしくはそれがビロー・ザ・フォールド(below the fold)に表示されるときにうまく機能するのか、デジタルコンポーネントのタイプ、デジタルコンポーネントのサイズ、デジタルコンポーネントが表示されるのに最も適切である時刻、および/またはデジタルコンポーネントの他の適切な特徴に関する要素を含むことができる。いくつかの実施態様、たとえば、ニューラルネットワークを採用する実施態様において、値のデジタルコンポーネントベースのベクトルは、何らかの抽象ベクトル空間内のユーザグループならびに他のユーザおよび/またはデジタルコンポーネント信号の埋め込みであることが可能である。
【0062】
各要素の値は、要素に対応する特徴を有する現在のデジタルコンポーネント提示機会に基づくデジタルコンポーネントの選択値の増大または低減の量を反映することができる。たとえば、デジタルコンポーネントがダラスのユーザではなくアトランタのユーザに表示されることをDSP150が所望する場合、アトランタの要素の値を、1の値を上回る正の値とすることができ、ダラスの要素の値を、たとえば、0などの、1を下回る正の値、または負の値とすることができる。下記により詳細に説明するように、デジタルコンポーネントベースのベクトルの値は、デジタルコンポーネントの選択値を決定するためのベクトルドット積計算の一部とすることができる。
【0063】
要求は、アプリケーション112がマッピングされるかまたは他の方法で関連付けられるユーザグループのユーザグループ識別子などの機密となり得る情報と、デジタルコンポーネントが提示および/または表示されるコンテキストに関するアプリケーション112からのコンテキスト信号(たとえば、選択されたデジタルコンポーネントが表示される環境のコンテキスト特性)などの機密ではない情報とを含む、デジタルコンポーネント選択プロセスにおいて使用される情報を含む。下記により詳細に説明するように、システム110の設計は、機密または秘密であり得るユーザデータの保護を改善する。
【0064】
トリガ要素は、たとえば、アプリケーション112によって訪問されるインターネットロケーション内のデジタルコンポーネントスロットの存在を検出するタグとすることができる。トリガ要素は、たとえば、そのインターネットロケーションに配置することができ、アプリケーション112に、デジタルコンポーネントが要求されるべきであるデジタルコンポーネントスロットの存在を通知することができる。
【0065】
段階Bにおいて、MPCクラスタ130はコンテキスト信号などの機密でない情報に基づくデジタルコンポーネント要求をSSP170に送信する。この要求は、「コンテキスト要求」として参照される。コンテキスト要求は、デジタルコンポーネントに対する要求をトリガしたインターネットロケーション(たとえば、コンテンツパブリッシャ)によって直接的に収集される様々なコンテキスト信号および非機密ユーザ情報を含むことができる。たとえば、コンテキスト信号は、分析データ、言語設定、および、コンテンツパブリッシャが良好なユーザ体験を提供することを支援する他のデータを含むことができる。しかしながら、SSP170に提供されるコンテキスト要求は、ユーザグループ識別子などの機密情報を含まない。
【0066】
段階Cにおいて、SSP170は、コンテキスト要求を1つまたは複数のDSP150に転送する。この特定の例において、単純にするために、SSP170は、コンテキスト要求を単一のDSP150に転送する。たとえば、SSP170は、コンテキスト要求をDSP150に転送することができる。この例において、DSP150は、デジタルコンポーネント、および、デジタルコンポーネントにマッピングされている選択値を有するか、または、コンテキスト信号を使用してデジタルコンポーネントの選択値を決定することができる。
【0067】
段階Dにおいて、1つまたは複数のDSP150が、コンテキスト要求に応答して選択値を返す。たとえば、DSP150は、コンテキスト要求に応答して、デジタルコンポーネントにマッピングされている1つまたは複数の選択値を返す。DSP150は、選択値、デジタルコンポーネントに関する追加の情報、および任意で、たとえば創作物の形式のデジタルコンポーネント自体を含むデジタルコンポーネント選択アイテムの形式で選択値を返すことができる。DSP150は、コンテキスト要求に応答して任意の数の選択値を返すことができる。
【0068】
いくつかの実施態様において、DSP150は、加えて、ユーザグループ情報などの機密情報に基づいて、デジタルコンポーネント要求に応答して選択値を返すことができる。これらの選択値は、それが機密情報に関して条件付けられ、したがって、選択値が条件付けられている機密情報に一致する機密情報を含む要求を受信するMPCクラスタ130に関して条件付けられるため、「条件付き選択値」である。DSP150が提供する各選択値に関して、DSP150は、任意で、有効期間(TTL)パラメータ、すなわち、MPCクラスタ130が選択値をキャッシュするかまたは他の方法で記憶、たとえば、デジタルコンポーネント選択アイテムを記憶してよい最大期間などの情報を含む。このTTLパラメータは、MPCクラスタ130が、DSP150から受信される選択値をキャッシュすることを可能にする。TTLパラメータを用いない、いくつかの実施態様において、MPCクラスタ130は、受信選択値をキャッシュせず、代わりに、選択値が、たとえば、段階A、BおよびCにおいて送信されたデジタルコンポーネント要求に対応する選択プロセスなどの、選択プロセスに使用された後に、選択値を廃棄する。デジタルコンポーネント選択アイテムがMPCクラスタ130によって記憶される場合、MPCクラスタ130は、クライアントデバイスから受信された将来のデジタルコンポーネント要求に関する将来のデジタルコンポーネント選択プロセスに、デジタルコンポーネント選択アイテムを含めることができる。
【0069】
DSP150は、たとえば、デジタルコンポーネント選択アイテムの一部として、適格性式およびその対応する適格性基準、ならびにデジタルコンポーネント選択アイテムが選択の候補となるために満たされなければならない任意の条件を定義する条件データも提供し得る。この情報は、プライバシー保護の目標レベルおよび/またはデータセキュリティの目標レベルに応じて、平文またはシェア、たとえば、秘密シェアで提供され得る。秘密シェアが使用される場合、DSP150は、SSP170に、適格性式の第1の秘密シェア、適格性基準の第1の秘密シェア、および各条件に関する条件データの第1の秘密シェアを提供し得る。DSP150は、SSP170に、適格性式の第2の秘密シェア、適格性基準の第2の秘密シェア、および各条件に関する条件データの第2の秘密シェアも提供し得る。SSP170は、MPC1もMPC2も、不正な共謀がない限り、平文のいずれの情報にもアクセスし得ないように、MPC1に第1の秘密シェアを提供し、MPC2に第2の秘密シェアを提供することができる。
【0070】
選択値を決定するためにベクトルが使用されるとき、DSP150は、値の第2のベクトルを生成し、返すことができる。DSP150は、段階BおよびCにおいて送信されたデジタルコンポーネント要求のコンテキスト信号に基づいて、値の第2のベクトルを生成することができる。第2のベクトルは、コンテキストベクトルとして参照することができる。コンテキストベクトルは、デジタルコンポーネントベースのベクトルと同じ特徴に対応する同じ要素を含むことができる。しかしながら、DSP150は、デジタルコンポーネント要求のコンテキスト信号に基づいて、現在のデジタルコンポーネント要求に対するコンテキストベクトルの値を決定することができる。対照的に、DSP150のデジタルコンポーネントベースのベクトルの値は、MPCクラスタ130として記憶され、たとえば、デジタルコンポーネントベースのベクトルに対応するユーザグループに基づいて事前に決定される。
【0071】
コンテキストベクトルを提供する各DSP150について、MPCクラスタ130は、デジタルコンポーネントベースのベクトルおよびDSP150によって提供されるコンテキストベクトルのドット積を決定することによって、DSP150の各記憶されるデジタルコンポーネントの選択値を決定することができる。DSP150が、たとえば、異なるデジタルコンポーネントごとの、MPCクラスタ130によって記憶されている複数のデジタルコンポーネントベースのベクトルを有する場合、MPCクラスタ130は、各デジタルコンポーネントベースのベクトルについて、コンテキストベクトルおよびデジタルコンポーネントベースのベクトルのドット積を決定する。
【0072】
いくつかの実施態様において、デジタルコンポーネント要求がサブミットされるユーザのユーザプロファイルに基づいて、第3のベクトルを使用することができる。このベクトルは、他のベクトルと同じ次元および特徴を有することができるが、ユーザのユーザプロファイルに基づく値を有する。
【0073】
たとえば、ユーザプロファイルベクトル内のオースティンの位置要素の値は、ユーザがオースティンにいる場合は正の値を有することができ、または、ユーザがオースティンにいない場合は負の値もしくは0の値を有することができ、コンテキストベクトル内の同じ位置要素の値は、ユーザに現在示されているパブリッシャコンテンツのオースティンへの関連性が高い場合は正の値を有することができ、デジタルコンポーネントのデジタルコンポーネントベースのベクトル内の同じ位置要素の値は、デジタルコンポーネントがオースティンに関連する場合は正である。3つのベクトルのドット積を計算するために、計算システムMPC
1およびMPC
2は、最初に、3つのベクトルの各々から1つの、対応する要素の間での要素ごとの乗算を実施し、次いで、結果を合計する。たとえば、3つのベクトルがそれぞれV
1={v
1,1 ...v
1,n},V
2={v
2,1 ...v
2,n}およびV
3={v
3,1 ...v
3,n}であると仮定すると、3つのベクトルの間のドット積は、以下のようになる。
【数1】
【0074】
段階Eにおいて、SSP170は、DSP150からデジタルコンポーネント選択アイテムを受信し、MPCクラスタ130にデジタルコンポーネント選択アイテムを提供する。いくつかの実施態様において、SSP170は、MPCクラスタ130にデジタルコンポーネント選択アイテムを送信する前に、デジタルコンポーネント選択アイテムを処理することができる。
【0075】
たとえば、SSP170は、たとえば、選択値が特定のコンテンツプロバイダに関する発行後の値にどのように影響を与えるかを決定するための選択値規則を適用することができる。発行後の値は、たとえば、パブリッシャ140のリソースまたはアプリケーションコンテンツとともにデジタルコンポーネントを表示するためにパブリッシャ140に提供される量を示すことができる。次いで、SSP170は、選択プロセスを実施して、トップ無条件選択値、すなわち、最高の発行後の値をもたらす無条件選択値を決定する。無条件選択値は、機密情報に関して条件付けられておらず、したがって、バジェットおよびペーシング規則、広告主およびデジタルコンポーネント除外などのコンテンツ選択規則を、MPCクラスタ130ではなく、SSP170(またはDSP150)によって適用することができる。次いで、SSP170は、JIT選択値である以下のもの、すなわち、MPCクラスタ130におけるキャッシングを可能にするすべての選択値(TTL値を有する選択値)、および、その発行後の値がトップ無条件選択値の発行後の値以上であるすべての選択値を、MPCクラスタ130に転送する。
【0076】
いくつかの実施態様において、DSP150および/またはSSP170は、選択されたデジタルコンポーネント要求が表示される環境の特性を推測することができる。たとえば、DSP150および/またはSSP170は、デジタルコンポーネントが表示されるクライアントデバイス110の大雑把な位置、デジタルコンポーネントが表示されるリソースのトピック、デジタルコンポーネントが表示される時刻および/または日付などを推測することができる。SSP170は、推測された特性を、デジタルコンポーネント選択アイテムと一緒にMPCクラスタ130に提供することができる。いくつかの実施態様では、MPCクラスタ130は、DSP150およびSSP170において利用可能でない情報(クライアントデバイスのIPアドレスなど)に基づいて、デジタルコンポーネントが表示されるクライアントデバイス110の大雑把な位置を推測することができる。
【0077】
段階Fにおいて、MPCクラスタ130は、キャッシングを可能にする(すなわち、TTL値を有する)受信したJIT選択値によってそのキャッシュを更新する。加えて、MPCクラスタ130は、ユーザグループメンバーシップ規則、頻度制御、ペーシング規則、ならびに、特定のユーザの段階Eにおいて受信されるすべての選択値および以前にキャッシュされた選択値へのマイクロターゲティングを阻止するための規則などの選択規則を適用して、選択プロセスに対する有効な候補を選択する。規則は、要因の中でも、デジタルコンポーネントの配信の方式または頻度に対する制約およびガイドラインを含むことができる。規則は、頻度制御、ミュート、リソース枯渇、およびペーシング制約を含む。いくつかの実施態様において、MPCクラスタ130によって評価される条件を有するJITデジタルコンポーネントは、現在のデジタルコンポーネント選択プロセスについては無視することができる。たとえば、現在の選択プロセスについてこれらのデジタルコンポーネントを無視することによって、たとえば、デジタルコンポーネントの選択および提供におけるレイテンシの低減などの、性能上の利点を提供することができる。そして、MPCクラスタ130は、すべての適格な候補の間で最後の選択プロセスを実行し、勝利したデジタルコンポーネントを選択し、それから、デジタルコンポーネント要求に応じて、選択されたデジタルコンポーネントに関するデータをアプリケーション112に返す。規則の適用およびデジタルコンポーネントの選択は、
図3~
図6を参照して説明されるように、秘密シェアを使用するセキュアMPCプロセスを使用して実行され得る。
【0078】
段階Gにおいて、選択されたデジタルコンポーネントが、アプリケーション112によってレンダリングされる。次いで、アプリケーション112は、インプレッション通知をMPCクラスタ130に提供する。このインプレッション通知は、MPCクラスタ130が、たとえば、段階Aの後続の発生において受信される将来のデジタルコンポーネント要求に対する選択規則を執行することを可能にする更新パラメータに関連する情報をMPCクラスタ130が更新することを可能にするデータを含む。いくつかの実施態様において、アプリケーション112は、ユーザがデジタルコンポーネントをクリックするなどデジタルコンポーネントとインタラクションするとき、MPCクラスタ130にインタラクション通知を提供してよい。いくつかの実施態様において、アプリケーション112は、ネットワーク通信の数およびモバイルデバイスのバッテリ/帯域幅消費、ならびにMPCクラスタ130の処理/計算コストを低減するために将来のコンポーネント要求Aにピギーバックすることによって、インプレッションまたはインタラクション通知GをMPCクラスタ130に送信することができる。
【0079】
図3は、クライアントデバイスへの配信用のデジタルコンポーネントを選択するための例示的なプロセス300のスイムレーン図である。プロセス300の動作は、たとえば、クライアントデバイス110、MPCクラスタ130の計算システムMPC1およびMPC2、ならびにDSP150によって実施され得る。プロセス300の動作は、非一時的であり得る、1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス300の動作を実行させ得る。プロセス300および以下の他のプロセスは、2つの計算システムのMPCクラスタ130に関して説明されるが、3つ以上の計算システムを有するMPCクラスタも、類似のプロセスを実行するために使用され得る。加えて、プロセス300の動作はSSP170によって実施され得る。
【0080】
DSP150は、デジタルコンポーネントに関する情報を提供する(302)。この情報は、デジタルコンポーネントの選択値および追加の情報(たとえば、適格性式、適格性基準、および/または条件に関する条件データ)を含み得る。いくつかの実施態様において、DSP150は、選択値および追加の情報を、SSP(簡潔にするために
図3には示されていない)を介してMPCクラスタ130に提供する。たとえば、DSP150は、デジタルコンポーネント要求に応答して選択値および追加の情報を提供し、選択値に対応するデジタルコンポーネントを、MPCクラスタ130に記憶されているはずである、記憶されるデジタルコンポーネントとして指定することができる。
【0081】
上述のように、DSP150は、MPCクラスタ130に1つまたは複数のデジタルコンポーネントに関する1つまたは複数のデジタルコンポーネント選択アイテムを提供することができる。各デジタルコンポーネント選択アイテムは、対応するデジタルコンポーネント、選択値、および上述の他の情報を持ち得る。異なるコンテキスト環境(contextual environment)に関して異なる選択値を提供するために、DSP150は、同じデジタルコンポーネントのために複数のデジタルコンポーネント選択アイテムを提供することができ、各デジタルコンポーネント選択アイテムは、異なる適格性式または異なる適格性基準および異なる選択値を持ち得る。MPCクラスタ130は、デジタルコンポーネント選択アイテムを、クライアントデバイス110から受信された将来のデジタルコンポーネント要求のために、たとえば、キャッシュなどの高速なメモリに記憶することができる。
【0082】
いくつかの実施態様において、DSP150は、デジタルコンポーネントの静的な選択値の代わりに、デジタルコンポーネントの値のデジタルコンポーネントベースのベクトルを提供することができる。そのような例において、値のデジタルコンポーネントベースのベクトルを、選択値の代わりに記憶することができる。
【0083】
クライアントデバイス110がコンテンツを受信する(304)。たとえば、クライアントデバイス110は、ネイティブアプリケーションによる表示用のウェブブラウザまたはアプリケーションコンテンツによる表示のために、電子リソース(たとえば、ウェブページ)を受信することができる。コンテンツは、コンピュータ可読コード、たとえば、実行されたとき、各スロットに対してクライアントデバイス110にデジタルコンポーネントを要求させるスクリプトを含む、1つまたは複数のデジタルコンポーネントスロットを含むことができる。クライアントデバイス110は、クライアントデバイス110のディスプレイ上でコンテンツをレンダリングすることができる。
【0084】
クライアントデバイス110が、ユーザグループ識別子のセットを識別する(306)。ユーザグループ識別子のセットは、アプリケーション112またはクライアントデバイス110のユーザをメンバーとして含むユーザグループのユーザグループ識別子であることが可能である。たとえば、ユーザグループ識別子のセットは、ユーザグループリスト内のユーザグループ識別子であり得る。コンテンツをレンダリングするアプリケーション112または信頼されるプログラムは、たとえば、クライアントデバイス110のセキュアなストレージからユーザグループリストにアクセスすることによって、ユーザグループ識別子のセットを識別することができる。
【0085】
クライアントデバイス110は、確率的データ構造を生成する(308)。機密情報に基づいてデジタルコンポーネント要求をセキュアかつ効率的に生成するために、アプリケーション112は、カッコウフィルタまたはブルームフィルタなどの、確率的データ構造を使用することができる。この例では、確率的データ構造は、カッコウフィルタである。ブルームフィルタを使用する例は、
図8を参照して説明される。概して、カッコウフィルタは、バケットの配列を含み、各バケットは、b個のフィンガープリントを保持することができる。アイテムのフィンガープリントは、そのアイテムのハッシュから導出されるビット列である。カッコウフィルタは、アイテムが、b個の位置のいずれかにあるn個の異なるバケット内に配置されることを可能にするn個のハッシュ関数を使用する。典型的には、カッコウフィルタは、各バケット内のフィンガープリントの数およびバケットの数によって識別される。たとえば、(2, 4)カッコウフィルタは、2個のバケットを有し、カッコウ配列内の各バケットは、最大4個のフィンガープリントを記憶することができる。したがって、カッコウフィルタの合計容量は、2 x 4すなわち8個のフィンガープリントである。
【0086】
カッコウフィルタの構成に応じて、アイテムは、N個の可能な位置のうちの1つにおいてカッコウフィルタに挿入することができ、たとえば、N = 2である。アプリケーション112は、ユーザグループ識別子またはブロックされた識別子のセットからの識別子およびアプリケーション112によって生成される2つのランダム変数のいずれかによってパラメータ化されるN個の擬似ランダム関数(PRF)を使用して、アイテムが挿入されるすべての可能な位置を決定する。たとえば、アプリケーション112によって生成される2つのランダム変数が、 rand_var1aおよびrand_var1bであると仮定する。いくつかの実施態様において、アプリケーション112およびMPCクラスタ130は、PRFについて事前に合意し、PRF(x,y)∈[0,2k-1]であり、kはカッコウフィルタのバケット内の各アイテムのビット数である。
【0087】
カッコウフィルタの各位置は、ユーザグループ識別子もしくはブロックされた識別子によって占有され得るか、または空であり得る。ブロックされた識別子は、アプリケーション112が、たとえば、頻度制御に基づいてデジタルコンポーネントをブロックしている識別子、または、ユーザがユーザグループのデジタルコンポーネントをブロックすることを選択した識別子である。アプリケーション112は、カッコウフィルタテーブルを生成することができ、その要素は、PRF(ug_id, rand_var1a)、PRF(blocked_uid, rand_var1b)、および0であり、ug_idは、コンテンツプロバイダのドメインに基づいてユーザグループのラベルにHMACを適用することによって生成されるユーザグループの識別子であり、blocked_uidは、ブロックされた識別子のセットからの識別子であり、0は空のアイテムを表す。プロセスは、すべてのユーザグループ識別子に対して繰り返される。いくつかの実施態様において、たとえばカッコウフィルタまたはブルームフィルタなどの同じ確率的データ構造が、ユーザグループ識別子とブロックされた識別子の両方を記憶することができる。他の実施態様において、ユーザグループ識別子およびブロックされた識別子は、専用の確率的データ構造に記憶される。
【0088】
アプリケーション112は、ユーザグループ識別子および/またはブロックされた識別子のために生成されたカッコウフィルタテーブルに基づいて、ベクトルBを生成することができる。ベクトルB内の各値Biは、Bi = (Ai -PRF(rand_var2, i)) mod pとして表すことができ、Aはカッコウフィルタテーブルであり、iはベクトルBおよびカッコウフィルタテーブルAのインデックスである。アプリケーション112がデジタルコンポーネントスロットのデジタルコンポーネントに対する要求を開始するとき、アプリケーション112は、rand_var1a、rand_var1bおよびrand_var2を、要求のパラメータとして計算システムMPC1に送信する。アプリケーション112はまた、ベクトルB、rand_var1aおよびrand_var1bも、要求のパラメータとして計算システムMPC2に送信する。PRF(rand_var2, i)およびBiは、それぞれ計算システムMPC1およびMPC2によって保持される、Zp内のAiの2つの加法的秘密シェアである。計算システムMPC1およびMPC2のいずれも秘密シェアの両方にアクセスすることができないため、これらの計算システムのいずれも、ユーザプライバシーを保持しながらカッコウフィルタテーブルを再作成することはできない。
【0089】
ステップ306および308は、いくつかの実施態様において除外され得る任意のステップである。たとえば、MPCクラスタ130は、ユーザのユーザグループメンバーシップを考慮することなく、デジタルコンポーネントを提供し得る。ユーザグループメンバーシップが使用される実施態様において、クライアントデバイス110は、確率的データ構造を使用するのとは異なる方法で、ユーザグループメンバーシップデータを暗号化および/または圧縮し得る。
【0090】
クライアントデバイス110は、MPCクラスタ130に、デジタルコンポーネント要求(310)を送信する。デジタルコンポーネント要求は、選択されたデジタルコンポーネントが表示されるコンテキストに関連するコンテキストデータ、たとえば、選択されたデジタルコンポーネントが表示される環境のコンテキスト特性を含み得る。コンテキストデータは、デジタルコンポーネントが表示されるリソースについてのデータ、クライアントデバイス110のユーザについてのデータ、デジタルコンポーネントを表示するアプリケーション112についてのデータ、クライアントデバイス110についてのデータ、ならびに/または全般的なコンテキストデータ(たとえば、日付および時刻)を含み得る。
【0091】
リソースについてのデータは、リソースのURL、リソースのトピック、リソースのデジタルコンポーネントスロットの数、デジタルコンポーネントスロットのタイプ、デジタルコンポーネントスロットのリソース内の位置などを含み得る。ユーザについてのデータは、デモグラフィックデータ(たとえば、年齢、性別など)、ユーザグループメンバーシップ、および/または他の適切なユーザデータを含み得る。アプリケーション112についてのデータは、アプリケーションの名前(たとえば、特定のウェブブラウザもしくはネイティブアプリケーション)、アプリケーションのカテゴリ(たとえば、ブラウザ、ビデオストリーミングアプリケーション、地図アプリケーションなど)、および/またはアプリケーション112についての他の適切なデータを含み得る。クライアントデバイス110についてのデータは、クライアントデバイス110の広いエリアを示す大雑把な地理的位置情報(たとえば、都市、州、郵便番号など)、クライアントデバイス110のタイプ、クライアントデバイスのディスプレイのサイズなどを含み得る。
【0092】
コンテキストデータおよび/またはユーザデータの一部またはすべてがプライベートとみなされ得るとき、クライアントデバイス110は、いかなる権限のないエンティティがそのような情報を取得することも防止するために、暗号化または他の技法を使用してデータを送信することができる。これらのエンティティならびにMPCクラスタ130の計算システムMPC1およびMPC2が平文のコンテキストデータにアクセスすることを防止するために、クライアントデバイス110は、コンテキストデータのそれぞれのシェア、たとえば、秘密シェアを生成し、MPCクラスタ130の各計算システムにシェアを送信することができる。たとえば、クライアントデバイス110は、コンテキストデータの第1の秘密シェアを計算システムMPC1に送信し、コンテキストデータの第2の秘密シェアを計算システムMPC2に送信することができる。このようにして、不正な共謀がない限り、計算システムMPC1もMPC2も、平文のコンテキストデータを再構築することができない。
【0093】
いくつかの実施態様において、アプリケーション112は、平文の、または計算システムMPC1およびMPC2が平文のコンテキストデータにアクセスすることを可能にする暗号化技法を使用して暗号化されたコンテキストデータの一部を送信しながら、コンテキストデータの一部、たとえば、機密とみなされるコンテキストデータを秘密シェアを使用して送信するように構成され得る。これは、DSP150が少なくとも一部のコンテキストデータを使用してデジタルコンポーネントおよび/またはデジタルコンポーネントの選択値を選択することができるように、MPCクラスタ130がこのコンテキストデータをDSP150に配信するためにSSP170に送信することを可能にする。いくつかの実施態様において、クライアントデバイス110またはアプリケーション112は、コンテキストデジタルコンポーネント要求(contextual digital component request)を生成し、それをSSP170の公開鍵を使用してブロブ(blob)に暗号化し、ブロブをパラメータとしてデジタルコンポーネント要求に挿入する。そのような実施態様において、MPCクラスタ130は、平文のコンテキストデータにアクセスすることなく、SSP170を対象とするコンテキストデータを暗号化されたブロブとして転送することができる。
【0094】
ユーザグループメンバーシップを表すための確率的データ構造を含む実施態様において、デジタルコンポーネント要求は、カッコウフィルタのパラメータを含み得る。たとえば、クライアントデバイス110は、計算システムMPC1に、rand_var1a、rand_var1bおよびrand_var2を含むデジタルコンポーネント要求を送信することができる。クライアントデバイス110はまた、計算システムMPC2に、ベクトルB、rand_var1aおよびrand_var1bを含むデジタルコンポーネント要求を送信することもできる。両方のデジタルコンポーネント要求はまた、たとえば、電子リソースのURL、リソースのデジタルコンポーネントスロットの数、クライアントデバイス110の地理的位置、および/または、デジタルコンポーネントを選択するために使用することができる、たとえば、検索鍵などの他の適切なコンテキスト信号などの、コンテキスト信号も含むことができる。
【0095】
MPCクラスタ130は、コンテキストデジタルコンポーネント要求をSSP170に送信する(312)。このデジタルコンポーネント要求は、コンテキスト信号を含み得るが、ユーザをメンバーとして含むユーザグループを識別するユーザグループ識別子などの機密ユーザデータは含まない。たとえば、コンテキストデジタルコンポーネント要求は、クライアントデバイス110から受信された平文コンテキストデータを含み得るが、クライアントデバイス110から秘密シェアとして送信されたいかなるコンテキストデータも含まない。いくつかの実施態様において、コンテキストデジタルコンポーネント要求は、クライアントデバイス110上でレンダリングされたパブリッシャのページ上のSSPのタグによって、またはクライアントデバイス110にインストールされたパブリッシャのアプリケーション上のSSPのソフトウェア開発キット(SDK)によって生成された。
【0096】
SSP170は、コンテキストデジタルコンポーネント要求を1つまたは複数のDSP150に送信する(314)。各DSP150は、デジタルコンポーネントの1つまたは複数の条件付き選択値および/またはデジタルコンポーネントの1つまたは複数の無条件選択値によって、要求に応答することができる。各デジタルコンポーネントについて、応答は、デジタルコンポーネントを識別するデータ、デジタルコンポーネントの選択値、およびデジタルコンポーネントのメタデータ(または他の追加の情報)を含むことができる。たとえば、応答は、各デジタルコンポーネントに関するデジタルコンポーネント選択アイテム、たとえば、デジタルコンポーネント情報要素dc_information_elementを含み得る。各DSP150は、コンテキスト信号に基づいてデジタルコンポーネント選択プロセスに含めるための1つまたは複数のデジタルコンポーネントを選択し、各選択されるデジタルコンポーネントの選択値を決定または識別することができる。いくつかの実施態様において、DSP150は、コンテキスト信号に基づいて1つまたは複数のデジタルコンポーネントの各々のコンテキストベクトルを生成することができる。
【0097】
各DSP150は、その応答をSSP170に送信することができる(316)。SSP170は、応答をMPCクラスタ130に送信することができる(318)。上述のように、DSP150および/またはSSP170は、選択されたデジタルコンポーネントがクライアントデバイス110において表示される環境に関する追加のコンテキストデータを、たとえば、MPCクラスタ130から受信されたコンテキストデータに基づいて推測することができる。そうである場合、SSP170は、MPCクラスタ130への応答にこの追加のコンテキストデータを含めることもできる。
【0098】
MPCクラスタ130は、セキュアMPCプロセスを実施して、クライアントデバイス110における表示のために提供するためのデジタルコンポーネントを選択する(320)。この選択は、コンテキスト信号に基づいて、たとえば、適格性式および/または適格性基準を使用して、デジタルコンポーネント選択プロセスに適格であるデジタルコンポーネントおよびそれらの対応する選択値のセットを識別すること、たとえば、デジタルコンポーネント選択アイテムを識別することを含み得る。これは、適格なデジタルコンポーネント選択アイテムのセットから、選択の候補である候補デジタルコンポーネント選択アイテムを識別することも含み得る。候補デジタルコンポーネント選択アイテムは、DSP150が無条件選択値またはベクトルを提供した無条件デジタルコンポーネントと、デジタルコンポーネントの各条件が満たされる条件付きデジタルコンポーネントとを含み得る。条件付きデジタルコンポーネント選択アイテムは、デジタルコンポーネント選択アイテムのすべての条件が満たされるときにのみ、デジタルコンポーネント選択プロセスの候補とみなされる。
【0099】
MPCクラスタ130は、候補デジタルコンポーネント選択アイテムの選択値に基づいて、デジタルコンポーネント要求に応じてクライアントデバイス110にそのデジタルコンポーネントを提供すべきデジタルコンポーネント選択アイテムを、候補デジタルコンポーネントアイテムから選択し得る。ベクトルを使用して決定された選択値を有するデジタルコンポーネント選択アイテムに関して、MPCクラスタ130は、ベクトル、たとえば、デジタルコンポーネントベースのベクトル、コンテキストベクトル、および任意でユーザプロファイルベクトルの内積を決定することによってデジタルコンポーネント選択アイテムの選択値を決定することができる。
【0100】
MPCクラスタ130は、選択結果の秘密シェアをクライアントデバイス110に送信する(322)。いくつかの実施態様において、MPCクラスタ130はまた、デジタルコンポーネント選択プロセスの選択プロセス識別子も、クライアントデバイス110に送信することができる。選択プロセス識別子は、選択結果が生成されたデジタルコンポーネント選択プロセスを一意に識別することができる。たとえば、計算システムMPC1およびMPC2は、各々、計算システムMPC1およびMPC2がそれに対してクライアントデバイス110に提供するための選択結果を生成するための選択プロセスを実施する各デジタルコンポーネント要求について、それぞれの選択プロセス識別子SPIDを生成することができる。いくつかの実施態様において、選択プロセス識別子SPIDは、ノンスまたは不透明な英数字もしくは数字列であり得る。
【0101】
デジタルコンポーネントのすべてまたは大きなセットに関する情報ではなく、選択されたデジタルコンポーネントのみに関する結果の秘密シェアを送信することによって、同様に、結果の送信および受信におけるレイテンシおよび消費される帯域幅、処理能力、ならびにバッテリ電力を削減する。また、これは、情報がクライアントデバイスに提供されるデジタルコンポーネントの数を制限することによって、デジタルコンポーネントの選択値をMPCクラスタ130にサブミットするコンテンツプラットフォームの機密情報の潜在的な漏洩を低減する。
【0102】
MPCクラスタ130はまた、SPIDによって鍵を付けられたか、または、他の様態でSPIDにリンクされた選択プロセスの一部であった選択値のためのデータも記憶することができる。たとえば、計算システムMPC1は、選択プロセスについて計算システムMPC1によって生成されるSPID1に基づく鍵を有する選択値のためのデータを含むテーブルまたは他のデータ構造を記憶することができる。同様に、計算システムMPC2は、選択プロセスについて計算システムMPC2によって生成されるSPID2に基づく鍵を有する選択値のためのデータを含むテーブルまたは他のデータ構造を記憶することができる。これによって、MPCクラスタ130は、クライアントデバイス110から受信されるデータに基づいてフィードバックコントローラのためにプロセス変数を更新することが可能になる。いくつかの実施態様において、クライアントデバイス110またはアプリケーション112は、SPIDを生成する。いくつかの実施態様において、MPC1およびMPC2は、デジタルコンポーネント要求310からSPIDを推測する。
【0103】
選択結果は、選択デジタルコンポーネント選択アイテムのデジタルコンポーネントについての情報を含むバイト配列の形式であることが可能である。たとえば、選択結果は、デジタルコンポーネントの選択値と、デジタルコンポーネントのメタデータおよび/または他の追加の情報とを含むバイト配列であることが可能である。計算システムMPC1およびMPC2は、下記により詳細に説明するように、セキュアMPCプロセスを使用して、選択結果の秘密シェアを決定することができる。計算システムMPC1は、選択結果の第1の秘密シェアをクライアントデバイス110に送信することができ、計算システムMPC2は、選択結果の第2の秘密シェアをクライアントデバイス110に送信することができる。選択されたデジタルコンポーネントを計算システムMPC1およびMPC2が知ることを阻止するために、計算システムMPC1およびMPC2は、選択結果のそれらの秘密シェアを互いに共有することが阻止され得る。たとえば、MPC1およびMPC2は、デジタルコンポーネント要求内のパラメータであることが可能であるクライアントデバイスの公開鍵を用いてそのそれぞれの秘密シェアを独立して暗号化することができる。
【0104】
デジタルコンポーネントのすべてまたは大きなセットに関する情報ではなく、選択されたデジタルコンポーネントのみに関する結果の秘密シェアを送信することによって、同様に、結果の送信および受信におけるレイテンシおよび消費される帯域幅、処理能力、ならびにバッテリ電力を削減する。また、これは、情報がクライアントデバイスに提供されるデジタルコンポーネントの数を制限することによって、デジタルコンポーネントの選択値をMPCクラスタにサブミットするコンテンツプラットフォームの機密情報の潜在的な漏洩を低減する。
【0105】
クライアントデバイス110は、選択結果に対応するデジタルコンポーネントを決定する(324)。クライアントデバイス110がそれに対して計算システムMPC1およびMPC2から2つの秘密シェアを受信する選択結果ごとに、クライアントデバイス110は、2つの秘密シェアから選択結果を決定することができる。たとえば、下記により詳細に説明するような加法的秘密シェアライブラリを使用して、クライアントデバイス110は、選択結果の2つの秘密シェアを一緒に加算して選択結果を平文で取得することができる。このことは、デジタルコンポーネントに対する選択値、およびデジタルコンポーネントのためのメタデータ、たとえば、デジタルコンポーネントの識別情報、クライアントデバイス110がそこからデジタルコンポーネントをダウンロードできるロケーションなどへのアクセスを、クライアントデバイス110に与える。いくつかの実施態様において、バイト配列は、クライアントデバイス110が選択結果の秘密シェアを再構築した後にデジタルコンポーネントにアクセスし得るように、デジタルコンポーネント自体を含む。
【0106】
クライアントデバイス110は、デジタルコンポーネントを表示する(326)。たとえば、アプリケーション112が、ステップ304において受信したコンテンツを有するデジタルコンポーネントを表示することができる。いくつかの実施態様において、クライアントデバイス110は、選択結果のデジタルコンポーネントを表示することができる。
【0107】
いくつかの実施態様において、クライアントデバイス110は、MPCクラスタ130からのユーザグループメンバーシップ(または他のユーザ信号)に基づくデジタルコンポーネントを要求することができる。クライアントデバイス110はまた、SSP170からのコンテキスト信号に基づいてデジタルコンポーネントを要求することができる。これらのコンテキスト信号は、上記で説明した同じコンテキスト信号、および任意選択で、リソースのデジタルコンポーネントスロットの数、デジタルコンポーネントスロットのタイプ、リソースとともに表示され得るデジタルコンポーネントのタイプおよび/またはフォーマットなどの、追加のコンテキスト信号を含むことができる。SSP170は、デジタルコンポーネントに対するコンテキスト信号および選択値に基づいて1つまたは複数のデジタルコンポーネントを選択することができ、選択されたデジタルコンポーネント(または、デジタルコンポーネントを識別するデータ)およびデジタルコンポーネントに対する選択値のうちの1つまたは複数を、クライアントデバイス110に提供することができる。クライアントデバイス110は、次いで、MPCクラスタ130から受信された選択結果のデジタルコンポーネント、およびSSP170によって選択されたデジタルコンポーネントを含む、デジタルコンポーネントのセットから、リソースとともに表示するためのデジタルコンポーネントを選択することができる。リソースが複数のデジタルコンポーネントスロットを含む場合、クライアントデバイス110は、スロットごとにそれぞれのデジタルコンポーネントをMPCクラスタ130およびSSP170に要求することができる。
【0108】
クライアントデバイス110は、1つまたは複数のイベント通知をMPCクラスタ130に送信する(328)。たとえば、MPCクラスタ130から受信される選択結果のデジタルコンポーネントがクライアントデバイス110のアプリケーション112によって表示されると仮定すると、アプリケーション112は、デジタルコンポーネントの表示に応答してデジタルコンポーネントのインプレッション通知を送信することができる。別の例において、アプリケーション112は、たとえば、デジタルコンポーネントの選択/クリックなどのユーザインタラクションの検出に応答してユーザインタラクション通知を送信することができる。
【0109】
ユーザインタラクション通知について、アプリケーション112は、ユーザがデジタルコンポーネントとインタラクトした場合は1の値を有することができ、または、デジタルコンポーネントが表示された後の指定の持続時間以内にユーザがデジタルコンポーネントとインタラクトしなかった場合は0の値を有することができるブールパラメータであるクリックパラメータclickedの秘密シェアを生成することができる。したがって、この例において、いずれの値も、デジタルコンポーネントが表示されることを示すが、1の値が、ユーザがデジタルコンポーネントとインタラクトしたことを示すことができる。アプリケーション112は、コンピュータシステムMPC1に、計算システムMPC1から受信されるSPID1およびクリックパラメータの第1の秘密シェア[clicked1]を含む第1の通知を送信することができる。同様に、アプリケーション112は、コンピュータシステムMPC2に、計算システムMPC2から受信されるSPID2およびクリックパラメータの第2の秘密シェア[clicked2]を含む第2の通知を送信することができる。別の例において、通知は、たとえば、クリックパラメータと同様の秘密シェアを使用して、デジタルコンポーネントがクライアントデバイス110において表示されたか否かを別個に示すことができる。
【0110】
インプレッションおよびユーザインタラクション通知は、MPCクラスタ130が、デジタルコンポーネントを配信するペースを調整するために使用されるフィードバックコントローラのプロセス変数を更新することを可能にする。たとえば、プロセス変数がインプレッション率である場合、MPCクラスタ130は、インプレッション通知を使用して、デジタルコンポーネント(またはデジタルコンポーネントを含むキャンペーン)のインプレッションのカウントを更新することができる。プロセス変数がユーザインタラクション率である場合、MPCクラスタ130は、クリックパラメータを使用して、デジタルコンポーネント(またはデジタルコンポーネントを含むキャンペーン)に対するユーザインタラクションの数を更新することができる。特定の例において、計算システムMPC1は、SPID1を使用して、選択プロセスの記憶されているデータを得ることができ、計算システムMPC2は、SPID2を使用して、選択プロセスの記憶されているデータを得ることができる。次いで、MPCクラスタ130は、セキュアMPCプロセスを実施して、アプリケーション112によって表示されたデジタルコンポーネントのキャンペーンのプロセス変数(たとえば、インプレッション率、インタラクション率、コンバージョン率、および/またはリソース枯渇率)を更新することができる。同様に、MPCクラスタ130は、これらの通知を使用して、デジタルコンポーネントがk-匿名性条件を満たすか否かを判定するために使用されるカウントを更新することができる。
【0111】
図4は、クライアントデバイスへの配信用のデジタルコンポーネントを選択するための例示的なプロセス400のスイムレーン図である。プロセス400の動作は、たとえば、MPCクラスタ130の計算システムMPC1または計算システムMPC2によって実施され得る。プロセス400の動作は、非一時的であり得る、1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス400の動作を実行させ得る。
【0112】
計算システムMPC1およびMPC2は、デジタルコンポーネントの選択値を決定および/または識別する(402)。計算システムMPC1およびMPC2は、クライアントデバイス110から受信されるデジタルコンポーネント要求に応答して選択値を決定することができる。
図3を参照しながら説明したように、計算システムMPC1は、クライアントデバイス110から、コンテキストデータ、および、クライアントデバイス110のユーザのユーザグループ識別子を表す確率的データ構造の任意選択のデータを含むデジタルコンポーネント要求を受信することができる。確率的データ構造のデータは、パラメータrand_var1a、rand_var1bおよびrand_var2を含むことができる。同様に、計算システムMPC2は、クライアントデバイス110から、コンテキストデータならびにパラメータ、すなわちベクトルB、rand_var1aおよびrand_var1bを受信することができる。コンテキストデータは、上述のように、選択されたデジタルコンポーネントが表示される環境のコンテキスト特性を含み得る。
【0113】
クライアントデバイス110は、様々な方法で計算システムMPC1およびMPC2にコンテキストデータを送信することができる。いくつかの実施態様において、クライアントデバイス110は、コンテキストデータの第1の秘密シェアを計算システムMPC1に送信し、コンテキストデータの第2の秘密シェアを計算システムMPC2に送信することができる。一部のコンテキストデータが非機密であるとみなされる場合、クライアントデバイス110は、この非機密コンテキストデータを各計算システムMPC1およびMPC2に平文で送信することができる。
【0114】
いくつかの実施態様において、クライアントデバイス110は、コンテキスト特性をベクトルへと符号化し、ベクトルを各計算システムMPC1およびMPC2に送信するか、またはベクトルのそれぞれの秘密シェアを計算システムMPC1およびMPC2に送信することができる。ベクトルの要素は(ベクトル形式でないときは任意で)、整数として表現され得る。たとえば、それぞれの可能な位置に整数を割り当てるかまたは位置の郵便番号を使用することによって、位置が整数として表現され得る。
【0115】
選択値は、各計算システムMPC1およびMPC2によってそのデータが記憶される、記憶されるデジタルコンポーネントの選択値、ならびに、SSP170からデジタルコンポーネント選択プロセスについて受信されるJIT選択値を含むことができる。選択値がベクトルを使用して決定される状況について、各計算システムMPC1およびMPC2は、デジタルコンポーネントのベクトルのドット積を決定することによって、選択値を決定することができる。
【0116】
計算システムMPC1は、適格なデジタルコンポーネントを識別する(404)。計算システムMPC2も、適格なデジタルコンポーネントを特定する(406)。適格なデジタルコンポーネントは、デジタルコンポーネント要求のコンテキストデータに基づいて選択に適格であるデジタルコンポーネント選択アイテムを有するデジタルコンポーネントである。
【0117】
いくつかの実施態様において、計算システムMPC1およびMPC2は、デジタルコンポーネントの適格性式を使用して、それぞれの記憶されたおよび/またはJITデジタルコンポーネントが適格であるかどうかを判定する。適格性チェックの出力は、デジタルコンポーネント選択アイテム(ならびにそのデジタルコンポーネントおよび対応する選択値)が、デジタルコンポーネント要求に応答して表示するためにクライアントデバイス110に配信するための選択に適格かどうかを示す適格性パラメータであり得る。いくつかの実施態様において、デジタルコンポーネント選択アイテム「i」の適格性パラメータeligbility_check
iは、平文であることが可能である。いくつかの実施態様において、デジタルコンポーネント選択アイテムiの適格性パラメータeligbility_check
iは、計算システムMPC1が第1の秘密シェア[eligbility_check
i.1]を有し、計算システムMPC2が第2の秘密シェア[eligbility_check
i.2]を有するようにして秘密シェアであることが可能である。括弧は、パラメータの秘密シェアを表すために使用される。デジタルコンポーネントが選択に適格であるかどうかを判定するための例示的なプロセスが、
図5を参照して説明される。
【0118】
各適格なデジタルコンポーネントについて、計算システムMPC1およびMPC2は、デジタルコンポーネント要求に応答して、デジタルコンポーネント選択アイテムが、クライアントデバイス110に配信するために選択されるための候補であるか否かを判定する(408)。候補デジタルコンポーネント選択アイテムは、デジタルコンポーネントが条件付きデジタルコンポーネントである場合、そのデジタルコンポーネントの適格性基準を満たす適格なデジタルコンポーネント選択アイテムである。コンテキストに基づいて適格である各無条件デジタルコンポーネントも、候補デジタルコンポーネントである。計算システムMPC1およびMPC2は、計算システムMPC1およびMPC2のいずれも候補デジタルコンポーネントを平文で識別することができないように、セキュアMPCプロセスを使用して候補デジタルコンポーネント選択アイテムを決定することができる。
【0119】
ユーザグループメンバーシップ条件について、計算システムMPC1およびMPC2は、各適格なデジタルコンポーネント選択アイテム「i」のユーザグループメンバーシップ条件パラメータug_checkiのそれぞれの秘密シェアを計算することができる。計算システムMPC1によって維持されるユーザグループメンバーシップ条件パラメータug_checkiの第1の秘密シェアは、[ug_checki,1]として表すことができ、計算システムMPC2によって維持されるユーザグループメンバーシップ条件パラメータug_checkiの第2の秘密シェアは、[ug_checki,2]として表すことができる。
【0120】
ユーザのユーザグループメンバーシップを表すためにカッコウフィルタが使用される実施態様について、計算システムMPC1は、計算システムMPC2と協働して、下記の関係1に従って[ug_check
i,1]を計算する。
【数2】
【0121】
関係1において、Πは、複数のアイテムの乗算を示す。ここで、ug_id(x)は、選択値xと関連付けられるユーザグループ識別子ug_idを取り出すために使用される関数であり、{F1,…FN}は、カッコウフィルタテーブルA内のアイテムの可能なインデックスを計算するためのハッシュ関数のセットであり、rand_val1aは、デジタルコンポーネント要求において受信されるランダム値である。[Mx,1]は、配列[M1]内のx番目の要素である。==は、平文整数と、秘密整数の秘密シェアとの間の同等性テストである。==の結果は、0(等しくない)または1(等しい)のいずれかである秘密整数の秘密シェアである。ここで、[Mi,1]の値 = [PRF(rand_val2a, i)1]である。
【0122】
同様に、計算システムMPC2は、計算システムMPC1と協働して、下記の関係2に従って[ug_check
i,2]を計算する。
【数3】
【0123】
ここで、[Mi,2]の値 = Biである。
【0124】
デジタルコンポーネントが選択されているユーザのユーザグループメンバーシップに対して条件付けられているデジタルコンポーネント選択アイテムについて、計算システムMPC1およびMPC2は、ユーザグループメンバーシップ条件パラメータug_checkiの秘密シェア[ug_checki,1]および[ug_checki,2]を計算することができる。2つの秘密シェアの組合せは、ユーザがデジタルコンポーネントに対応するユーザグループのメンバーであるか否かを表すブール値であり得る。たとえば、1の値は、ユーザがメンバーであることを表すことができ、0の値は、ユーザがメンバーでないことを表すことができる。ユーザのユーザグループメンバーシップに対して条件付けられていないデジタルコンポーネント選択アイテムについて、計算システムMPC1およびMPC2は、組合せが、ユーザがデジタルコンポーネント選択アイテムに対応するユーザグループのメンバーであることを示す値(たとえば、1)を有するように、秘密シェア[ug_checki,1]および[ug_checki,2]のデフォルト値を使用することができる。
【0125】
ユーザのユーザグループメンバーシップを表すためにブルームフィルタが使用される実施態様において、計算システムMPC1およびMPC2は、ブルームフィルタに問い合わせることができる。結果は、計算システムMPC1が、ブルームフィルタの各ハッシュ関数について、ユーザグループメンバーシップ条件パラメータの第1の秘密シェア[ug_checki,1]を有することである。同様に、計算システムMPC2は、ブルームフィルタの各ハッシュ関数について、ユーザグループメンバーシップ条件パラメータの第2の秘密シェア[ug_checki,2]を有する。デジタルコンポーネントがユーザグループメンバーシップ条件を満たすためには、ブルームフィルタの各ハッシュ値のユーザグループメンバーシップ条件パラメータ、すなわち、ug_checkiは、真、すなわち1のブール値を有する必要があることになる。ユーザが特定のユーザグループに属しているかどうかをチェックするためには、ブルームフィルタがN個の配列インデックスにハッシュするN個のハッシュ関数を有すると仮定して、そのN個のインデックスのすべてのブール値が1または真でなければならない。実装レベルでは、各ug_checkパラメータは、N個の秘密シェアのビットANDの結果であることが可能である。各ハッシュ値の秘密シェアは、デジタルコンポーネント選択アイテムの候補パラメータの秘密シェアの最後の計算に含まれ得る。
【0126】
計算システムMPC1およびMPC2はまた、協働して、頻度制御またはミューティングに対して条件付けられている各デジタルコンポーネント選択アイテムiのブロックデジタルコンポーネントパラメータblocked_checkiのそれぞれの秘密シェア[blocked_checki,1]および[blocked_checki,2]を計算することもできる。2つの秘密シェアの組合せは、頻度制御に基づいて(たとえば、デジタルコンポーネントが一定の持続時間中に閾回数よりも多くユーザに提供されていない)、および/または、ユーザが、デジタルコンポーネントがユーザに表示されるようにしないことを選択したか否かに基づいて、デジタルコンポーネントがブロックデジタルコンポーネント条件を満たすか否かを表すブール値であり得る。たとえば、真または1の値のブール値は、これらの要因に基づいてデジタルコンポーネントをユーザに表示することができることを表すことができ、偽または0の値のブール値は、これらの要因に基づいてデジタルコンポーネントをユーザに表示することができないことを表すことができる。
【0127】
ブロックデジタルコンポーネントパラメータの秘密シェアを決定するために、計算システムMPC1およびMPC2は、ブロックデジタルコンポーネントの識別子を表すブルームフィルタのシェア、たとえば配列を使用することができる。アプリケーション112は、ブロックデジタルコンポーネントの識別子を表すブルームフィルタを生成し、ブルームフィルタを表すデータを計算システムMPC1およびMPC2に送信することができる。計算システムMPC1およびMPC2は、次いで、ブルームフィルタを表す配列を使用してブルームフィルタに問い合わせて、秘密シェア[blocked_checki,1]および[blocked_checki,2]を得ることができる。
【0128】
計算システムMPC1およびMPC2はまた、協働して、たとえば、フィードバックコントローラを使用してペースを調整される各デジタルコンポーネント選択アイテムiのペーシング制御チェックパラメータpacing_checkiのそれぞれの秘密シェア[pacing_checki,1]および[pacing_checki,2]を計算することもできる。2つの秘密シェアの組合せは、たとえば、フィードバックコントローラの出力に基づいて、デジタルコンポーネント選択アイテムがペーシング条件を満たすか否かを表すブール値とすることができる。たとえば、デジタルコンポーネントが目標インプレッション率に関連して頻繁に提供されすぎている場合、フィードバックコントローラの出力は、デジタルコンポーネントがこのデジタルコンポーネント選択プロセスに対して適格でないことを示すことができる。真または1の値のブール値は、デジタルコンポーネント選択アイテムが、たとえば、この選択プロセスに対してスロットリングされていないなど、ペーシング条件を満たすことを表すことができ、偽または0の値のブール値は、デジタルコンポーネント選択アイテムが、たとえば、この選択プロセスに対してスロットリングされているなど、ペーシング条件を満たさないことを表すことができる。
【0129】
リソース枯渇(たとえば、バジェット)およびペーシング規則を執行するために、計算システムMPC1およびMPC2は、フィードバックコントローラおよびリソース枯渇条件を使用して決定される確率を使用して、デジタルコンポーネントがデジタルコンポーネント選択プロセスに参加しないようにランダムにブロックすることができる。デジタルコンポーネントを含むキャンペーンがいかなる追加のリソースも有しない場合、確率は1に設定される。他の様態で、キャンペーンが配信スケジュールよりも早い場合、たとえば、ペーシング制御チェックパラメータpacing_checkiが0の値を有するように秘密シェア[pacing_checki,1]および[pacing_checki,2]を計算することによって、計算システムMPC1およびMPC2がデジタルコンポーネントをデジタルコンポーネント選択プロセスからブロックする可能性がより高くなるように、確率はより高い。キャンペーンが配信スケジュールの後である場合、確率はより低い。
【0130】
計算システムMPC1およびMPC2は、フィードバックコントローラを使用して加法的秘密シェアにおける各キャンペーンのペーシングセレクタパラメータpacing_selectorを定期的に計算することができる。概念的に、ペーシングセレクタパラメータは、最大範囲の倍数でスケールアップされる、スロットリング確率である。
【0131】
各デジタルコンポーネント要求および各デジタルコンポーネント選択アイテムについて、計算システムMPC1およびMPC2は、[0, maximum range]内に均一に分布する秘密数を計算する。そのランダム数がペーシングセレクタパラメータpacing_selector以下である場合、計算システムMPC1およびMPC2は、たとえば、ペーシング制御チェックパラメータpacing_checkiが0の値を有するように秘密シェア[pacing_checki,1]および[pacing_checki,2]を計算することによって、デジタルコンポーネント選択アイテムがデジタルコンポーネント選択プロセスに参加しないようにブロックする。
【0132】
デジタルコンポーネント選択プロセスの参加者のユーザプライバシーおよび秘密情報を保護するために、ランダム数とペーシングセレクタパラメータの両方が、加法的秘密シェア内にある。2つの秘密シェア間の比較は、文字化け回路プロトコルを使用して実施することができる。両方の秘密シェアを6または7ビットに制限することによって、比較プロトコルは、計算システムMPC1およびMPC2の間の1または2ラウンドの通信を必要とし得る。
【0133】
キャンペーンのペーシングセレクタパラメータを決定するために、計算システムは、各キャンペーンに使用されるリソースの量を、resources_used_campaign = Σ(clearing_value ×is_dc_the_winner)として計算することができ、この和は、キャンペーンのデジタルコンポーネントを含むデジタルコンポーネント選択プロセスの全体にわたり、パラメータclearing_valueは、デジタルコンポーネント選択プロセスのクリア値であり、is_dc_the_winnerは、デジタルコンポーネント選択プロセスにおけるデジタルコンポーネントの勝者パラメータである。この計算は、各計算システムMPC1およびMPC2が使用されるリソースの量の秘密シェアを保持するように、秘密シェアにおいて実施され得る。計算システムMPC1およびMPC2は、次いで、使用されるリソースの量、すなわち、resources_used_campaignが秘密シェアにおいてキャンペーンに割り振られるリソースの総量よりも多いか否かを判定することによって、キャンペーンのリソース消耗パラメータresources_exhaustedを計算することができる。
【0134】
計算システムMPC1およびMPC2は、各キャンペーンのペーシングセレクタパラメータpacing_selectorを、pacing_selector =resources_exhausted×maximum range +(1-resources_exhausted)×outputとして計算することができ、パラメータoutputはフィードバックコントローラの出力である。この計算は、秘密シェアにおける乗算を計算するために、計算システムMPC1およびMPC2の間の1回のRPCを使用することができる。しかしながら、計算は、任意のレイテンシが追加されることを阻止するために、オフラインで定期的に実施されてもよい。
【0135】
計算システムMPC1およびMPC2は、協働して、いくつかの実施態様においてはすべてのデジタルコンポーネントに適用することができる、k-匿名性条件を満たさなければならない各デジタルコンポーネント選択アイテムiのk-匿名性チェックパラメータkanonymity_checkiの[kanonymity_checki,1]および[kanonymity_checki,2]のそれぞれの秘密シェアを計算することもできる。2つの秘密シェアの組合せは、デジタルコンポーネント選択アイテムがk-匿名性条件を満たすか否かを表すブール値とすることができる。たとえば、1の値は、デジタルコンポーネント選択アイテムがk-匿名性を満たすことを表すことができ、0の値は、デジタルコンポーネント選択アイテムがk-匿名性を満たさず、デジタルコンポーネント選択プロセスからブロックされるべきであることを表すことができる。
【0136】
各条件付きデジタルコンポーネント(たとえば、少なくとも1つの条件を有するデジタルコンポーネント)の各条件に関して、各計算システムMPC1およびMPC2は、デジタルコンポーネントに対応するデジタルコンポーネント選択アイテムの各条件のパラメータの対応する秘密シェアを記憶することができる。このように、少なくとも1つのMPC計算システムが公正である限り、計算システムMPC1もMPC2も、パラメータの値が平文ではわからない。各デジタルコンポーネント選択アイテムは、0以上の条件について条件付けられ得る。所与のデジタルコンポーネント選択プロセスに関して、一部のデジタルコンポーネント選択アイテムは、他のデジタルコンポーネント選択アイテムと異なる条件および/または異なる量の条件を持ち得る。
【0137】
いくつかの実施態様において、デジタルコンポーネント選択アイテムがデジタルコンポーネント選択プロセスに含まれるために満たさなければならない唯一の条件は、コンテキストデータに基づく適格性条件である。この例において、他の条件(たとえば、k-匿名性、ペーシングなど)は考慮されない。
【0138】
いくつかの例示的な条件が上記で提供されているが、他の条件も使用されてもよい。概して、計算システムMPC1およびMPC2は、セキュアMPCプロセスを使用して条件パラメータの秘密シェアを計算することができる。条件パラメータを決定するための基準および技法は変化し得る。いくつかの実施態様において、条件パラメータの秘密シェアは、たとえば、計算システムMPC1およびMPC2が条件パラメータを計算しないように、別の計算システムから受信することができる。
【0139】
計算システムMPC1およびMPC2は、条件パラメータの秘密シェアを使用して、条件付きデジタルコンポーネント選択アイテム(ならびに、したがって、そのデジタルコンポーネントおよび対応する選択値)がデジタルコンポーネント選択プロセスの候補であるかどうかを判定することができる。計算システムMPC1およびMPC2は、条件付きデジタルコンポーネント選択アイテムの条件パラメータの秘密シェアを使用して、各条件付きデジタルコンポーネント選択アイテムiの候補パラメータis_dc_a_candidateiの秘密シェアを計算することができる。概して、条件付きデジタルコンポーネントが上述した条件の各々について条件付けされる場合、デジタルコンポーネントiの候補パラメータは、下記の関係3を使用して計算することができる。
is_dc_a_candidatei = ug_checki AND blocked_checki AND pacing_checki AND kanonymity_checki
【0140】
この例においては、AND演算子のみが使用されるが、OR、XOR、およびNOTなどの他のブール演算子も使用され得る。各条件パラメータの値は秘密シェア内にあるため、計算システムMPC1およびMPC2は、ラウンドトリップリモートプロシージャコール(RPC)を使用してセキュアMPCプロセスにおいて協働して、条件パラメータの秘密シェアを使用してデジタルコンポーネント選択アイテムiの候補パラメータの対応する秘密シェア[is_dc_a_candidatei,1]および[is_dc_a_candidatei,2]を決定することができる。論理AND演算を決定するための任意の適切な秘密共有アルゴリズムを使用して、デジタルコンポーネント選択アイテムiの候補パラメータの秘密シェア[is_dc_a_candidatei,1]および[is_dc_a_candidatei,2]を決定することができる。計算システムMPC1およびMPC2は、それらの条件の条件パラメータの秘密シェアのみを使用して、候補パラメータの秘密シェアを決定することができる。このセキュアMPCプロセスの終わりとして、計算システムMPC1は、各条件付きデジタルコンポーネント選択アイテムの候補パラメータの第1の秘密シェア[is_dc_a_candidatei,1]を保持し、計算システムMPC2は、各条件付きデジタルコンポーネント選択アイテムの候補パラメータの第2の秘密シェア[is_dc_a_candidatei,2]を保持する。
【0141】
いくつかの実施態様において、計算システムMPC1およびMPC2は、文字化け回路プロトコルを使用して各デジタルコンポーネントについて関係3を評価する。この例において、計算システムMPC1またはMPC2のうちの1つが、文字化け回路を構築し得る。この例について、計算システムMPC1が文字化け回路を構築すると仮定する。計算システムMPC1は、それ自体の秘密シェアを知っており、デジタルコンポーネントの候補パラメータが真または1になるために、計算システムMPC2の秘密シェアが保持しなければならない唯一の可能なビットパターンが存在することも知っている。そのような特性によって、計算システムMPC1は、たとえば、関係3において合計で約50個のブールパラメータが存在する場合に、文字化け回路を構築するために最大50個のみのゲートを必要とする。
【0142】
関係3において、1つのみのユーザグループメンバーシップ条件パラメータug_checkiが存在する。しかしながら、ユーザのユーザグループメンバーシップを表すためにブルームフィルタが使用される場合、関係3は、ブルームフィルタの各ハッシュ関数のそれぞれのユーザグループメンバーシップ条件パラメータug_checkiを含むことができる。同様に、ブロックデジタルコンポーネントがブルームフィルタを使用して表される場合、関係3は、このブルームフィルタの各ハッシュ関数のそれぞれのブロックデジタルコンポーネントパラメータblocked_checkiを含む。関係3において、pacing_checkiは、デジタルコンポーネントの所有者がペーシングチェックを可能にする場合にのみ存在する。
【0143】
計算システムMPC1は、選択値に基づいてデジタルコンポーネント選択アイテムの順序を決定する(410)。同様に、計算システムMPC2は、選択値に基づいてデジタルコンポーネント選択アイテムの順序を決定する(412)。これら2つの順序は、順序付けプロセスの入力が2つの計算システムMPC1およびMPC2上で同じであるため、正確に同じであるはずである。各計算システムMPC1およびMPC2が、デジタルコンポーネント選択アイテムの順序を決定することができる。各順序は、ステップ408において候補適格性について評価された候補デジタルコンポーネントおよび他のデジタルコンポーネントを含むことができる。たとえば、順序は、デジタルコンポーネント選択プロセスに利用可能なすべての利用可能なデジタルコンポーネント、(たとえば、コンテキストデータに基づいて適格な)デジタルコンポーネント選択プロセスのすべての適格なデジタルコンポーネント、またはMPCクラスタ130によって維持されたすべてのデジタルコンポーネントを含み得る。順序は、最高の選択値を有するデジタルコンポーネント選択アイテムから最低の選択値を有するデジタルコンポーネント選択アイテムまでであり得る。いくつかの実装形態では、その順序に対して使用される選択値は、たとえば、DSP150および/またはSSP170との任意の共有の後、選択されたデジタルコンポーネントがそれとともに表示されることになるリソースのパブリッシャ140に提供されることになる値であり得る。
【0144】
選択値が平文をなすとき、計算システムMPC1およびMPC2は、デジタルコンポーネント選択アイテムの順序を決定するためのいかなるラウンドトリップ計算も実行しなくてよい。代わりに、各計算システムMPC1およびMPC2は、デジタルコンポーネント選択アイテムを独立して順序付けすることができる。選択値が各計算システムMPC1およびMPC2に秘密シェアとして記憶され、各計算システムMPC1およびMPC2が各選択値のそれぞれの秘密シェアを有する場合、計算システムMPC1およびMPC2は、選択値に基づいてデジタルコンポーネント選択アイテムを順序付けするためにラウンドトリップ計算を使用してセキュアMPCプロセスを実行することができる。2つ以上の選択値の間に連結が存在する場合、計算システムMPC1およびMPC2は、これらの選択値に対応するデジタルコンポーネント選択アイテムの他のメタデータを使用して、連結を確定的に破壊することができる。
【0145】
計算システムMPC1およびMPC2は、各候補デジタルコンポーネント選択アイテムの累積値の秘密シェアを決定する(414)。概念的に、所与のデジタルコンポーネント選択アイテムに関する累積値は、たとえ所与のデジタルコンポーネント選択アイテムが候補であるとしても所与のデジタルコンポーネント選択アイテムを除外する、順序の最初から所与のデジタルコンポーネント選択アイテムまでの候補デジタルコンポーネント選択アイテムの総数を表す。すなわち、累積値は、所与のデジタルコンポーネント選択アイテムよりも選択に好ましいおよび/または適格である候補デジタルコンポーネント選択アイテムの数を表す。この概念は、下記のTable 1(表1)に示されている。
【表1】
【0146】
いくつかの実施態様において、所与のデジタルコンポーネント選択アイテムに関する累積値は、所与のデジタルコンポーネント選択アイテムが候補である場合は所与のデジタルコンポーネント選択アイテムを含む、順序の最初から所与のデジタルコンポーネント選択アイテムまでの候補デジタルコンポーネント選択アイテムの総数を表す。この例では、第4の列は、累積値が0ではなく1に等しいか否かを表す。簡潔にするために、残りの論述は、所与のデジタルコンポーネント選択アイテムに関する累積値が、たとえ所与のデジタルコンポーネント選択アイテムが候補であっても所与のデジタルコンポーネント選択アイテムを除外する、順序の最初から所与のデジタルコンポーネント選択アイテムまでの候補デジタルコンポーネント選択アイテムの総数を表す第1の例に関するものである。
【0147】
概念的に、Table 1(表1)において、累積値(acc)は、順序の最初から順序の最後まで進行するにつれて、1に等しい候補パラメータis_dc_a_candidateを有する各デジタルコンポーネント選択アイテムについてインクリメントされる。後述するように、累積値accの計算は、秘密シェアにおいて実施される。たとえば、最高の選択値の候補パラメータis_dc_a_candidateが0に等しいため、最高の選択値を有するデジタルコンポーネント選択アイテムの累積値accは0である。2番目に高いデジタルコンポーネント選択アイテム(2番目に高い選択値を有するデジタルコンポーネント選択アイテム)の候補パラメータis_dc_a_candidateは1に等しいが、2番目に高いデジタルコンポーネント選択アイテムよりも上のデジタルコンポーネント選択アイテムのいずれも1に等しい候補パラメータis_dc_a_candidateを持たないので、2番目に高いデジタルコンポーネント選択アイテムに関する累積値accも0である。順序を下ると、3番目に高い選択デジタルコンポーネント選択アイテム(3番目に高い選択値を有するデジタルコンポーネント選択アイテム)の候補パラメータis_dc_a_candidateの累積値accは、2番目に高いデジタルコンポーネント選択アイテムの候補パラメータis_dc_a_candidateが値1を有することに基づいて値1にインクリメントされる。3番目に高いデジタルコンポーネント選択アイテムの候補パラメータis_dc_a_candidateが0であるので、4番目に高いデジタルコンポーネント選択アイテム(4番目に高い選択値を有するデジタルコンポーネント選択アイテム)の累積値accはインクリメントされず、3番目に高いデジタルコンポーネント選択アイテムと同様に値0を有する。
【0148】
Table 1(表1)を使用すると、計算システムMPC1およびMPC2は、全体的な候補パラメータis_dc_a_candidateが値1を有し、Table 1(表1)の第4列に示されるように累積値accが値0を有する選択値に対応するデジタルコンポーネント選択アイテムのデジタルコンポーネントを、クライアントデバイス110に配信するために選択する。これは、候補パラメータis_dc_a_candidateが1の値を有する最高に順序付けされた選択値に対応するデジタルコンポーネントを表す。ユーザプライバシーを維持し、ユーザデータが漏洩しないことを保証するために、候補パラメータis_dc_a_candidateは計算システムMPC1およびMPC2の秘密シェア内にあるため、計算システムMPC1およびMPC2は、各デジタルコンポーネントの累積値accの秘密シェアを決定し、ラウンドトリップ計算を使用して、いずれのデジタルコンポーネントが、0に等しい累積値accおよび1に等しい候補パラメータis_dc_a_candidateを有するかを判定する。
【0149】
計算システムMPC1およびMPC2は、いくつかの実施態様においては秘密シェアアルゴリズムに応じて一切のラウンドトリップ計算なしに独立して各デジタルコンポーネント選択アイテムの累積値accのそれらの秘密シェアを決定することができる。たとえば、計算システムMPC1は、各デジタルコンポーネント選択アイテムiに関して、Table 1(表1)を参照して上で説明されたように、最高から最低まで順にデジタルコンポーネントのすべてを調べ、その過程でデジタルコンポーネント選択アイテムの候補パラメータis_dc_a_candidateを合計することによって、累積値accの第1のシェア[acci,1]を決定することができる。同様に、計算システムMPC2は、各デジタルコンポーネント選択アイテムiに関して、最高から最低まで順にデジタルコンポーネント選択アイテムのすべてを調べ、その過程でデジタルコンポーネント選択アイテムの候補パラメータis_dc_a_candidateを合計することによって、累積値accの第2のシェア[acci,2]を決定することができる。
【0150】
計算システムMPC1およびMPC2は、各デジタルコンポーネント選択アイテムについて、累積値が指定の値を有するか否かを示す結果の秘密シェアを決定する(416)。指定の値は、Table 1(表1)の列3および4に示すように、0の値であり得る。上述のように、累積値が0であり、全体的な候補パラメータis_dc_a_candidateが1であるデジタルコンポーネント選択アイテムは、候補デジタルコンポーネント選択アイテムの中で最高の選択値を有するデジタルコンポーネント選択アイテムである。
【0151】
計算システムMPC1およびMPC2は、各デジタルコンポーネント選択アイテムiの秘密シェアに関して等価演算acci == 0を計算するために、セキュアMPCプロセスの一部としての、たとえば複数回のRPCなどの複数ランドの計算に関与することができる。等価演算は、デジタルコンポーネント選択アイテムiの累積値acciが0の値を有するか否かを判定するために使用される。このプロセスの終了において、計算システムMPC1は、各デジタルコンポーネント選択アイテムiについて、結果acci == 0の一方の秘密シェアを有し、計算システムMPC2は、各デジタルコンポーネント選択アイテムiについて、結果acci == 0の他方の秘密シェアを有する。
【0152】
計算システムMPC1およびMPC2は、各デジタルコンポーネント選択アイテムiの勝者パラメータis_dc_the_winneriの秘密シェアを決定する(418)。計算システムMPC1およびMPC2は、各デジタルコンポーネント選択アイテムiについて、累積値acci == 0の秘密シェアおよび各デジタルコンポーネント選択アイテムiの候補パラメータis_dc_a_candidateiの秘密シェアに基づいて、勝者パラメータis_dc_the_winneriを決定することができる。各デジタルコンポーネント選択アイテムiの勝者パラメータis_dc_the_winneriは、デジタルコンポーネント選択アイテムi(およびそのデジタルコンポーネント)が選択プロセスの勝者であるかどうか、たとえば、デジタルコンポーネント選択アイテムiのデジタルコンポーネントがデジタルコンポーネント要求に応じたクライアントデバイス110への配信のために選択されるかどうかを示すブール値であることが可能である。
【0153】
いくつかの実施態様において、計算システムMPC1およびMPC2は、秘密シェア乗算プロトコルを実行して、各選択値について、秘密シェアに関して勝者パラメータis_dc_the_winneri==(is_dc_a_candidatei×(acci==0))を計算することができる。これは、2つの秘密シェアを乗算するための、計算システムMPC1およびMPC2の間の1回のRPCを含むことができる。このMPCプロセスの終了において、計算システムMPC1は、[is_dc_the_winneri,1] = [is_dc_a_candidatei,1] x ([acci,1] == 1)として表される結果is_dc_the_winneriの1つの秘密シェアを有する。同様に、計算システムMPC2は、[is_dc_the_winneri,2] = [is_dc_a_candidatei,2] x ([acci, 2] == 0)として表される結果is_dc_the_winneriの他の秘密シェアを有する。すべてのデジタルコンポーネント選択アイテムに関して、最大で1つのデジタルコンポーネント選択アイテムが1に等しい勝者パラメータis_dc_the_winneriを有し、それが、クライアントデバイス110への配信のために選択されるデジタルコンポーネントを有するデジタルコンポーネント選択アイテムであることに留意されたい。他のすべてのパラメータは0に等しい。
【0154】
計算システムMPC1およびMPC2は、選択結果を決定する(420)。いくつかの実施態様において、計算システムMPC1およびMPC2は、デジタルコンポーネント選択アイテムの勝者パラメータおよびデジタルコンポーネントのデジタルコンポーネント情報要素dc_information_elementに基づいて、選択結果を計算することができる。上述したように、デジタルコンポーネントのデジタルコンポーネント情報要素dc_information_elementは、デジタルコンポーネントの選択値およびデジタルコンポーネントの他のデータを含むことができる。
【0155】
概念的に、計算システムMPC1およびMPC2は、下記の関係4を使用して選択結果パラメータ「result」を計算することができる。
result=Σi is_dc_the_winneri×dc_information_elementi
【0156】
すなわち、計算システムMPC1およびMPC2は、すべてのデジタルコンポーネント選択アイテムにわたって、勝者パラメータis_dc_the_winneriおよびデジタルコンポーネント情報要素dc_information_elementiの積の総和を決定することができる。この例において、選択結果は、候補デジタルコンポーネントがない場合は値0を有するか、または、1に等しい勝者パラメータis_dc_the_winneriを有する選択されるデジタルコンポーネント選択アイテムのデジタルコンポーネント情報要素dc_information_elementに等しい値を有するかのいずれかになる。別の例において、デジタルコンポーネント情報要素dc_information_elementは、関係4において、デジタルコンポーネントの選択値と置き換えることができる。この例において、選択結果は、候補デジタルコンポーネント選択アイテムがない場合は値0を有するか、または、1に等しい勝者パラメータis_dc_the_winneriを有する選択されるデジタルコンポーネント選択アイテムの選択値に等しい値を有するかのいずれかになる。
【0157】
秘密シェアにおける計算を実施するために、計算システムMPC1はすべてのデジタルコンポーネント選択アイテムを取り、平文をなすことができる、デジタルコンポーネント選択アイテムのデジタルコンポーネント情報要素dc_information_elementiを、デジタルコンポーネント選択アイテムの勝者パラメータの第1の秘密シェア[is_dc_the_winneri,1]で乗算する。計算システムMPC1は、次いで、これらの積の総和を決定することができ、デジタルコンポーネント要求をサブミットしたクライアントデバイス110にその総和を返すことができる。すなわち、計算システムMPC1は、結果の第1の秘密シェア[result1]として、下記の関係5を使用して総和を決定することができる。
[result1]=Σi([is_dc_the_winneri]×dc_information_elementi)
【0158】
計算システムMPC2は、下記の関係6を使用して、類似の計算を実施して結果の第2のシェア[result2]を決定することができる。
[result2]=Σi([is_dc_the_winneri]×dc_information_elementi)
【0159】
いくつかの実施態様においては、MPCクラスタ130の性能が、秘密シェアで実行される乗算をビットAND演算によって置き換え、加算をビットXOR演算によって置き換えることによって、(たとえば、計算および計算システムMPC1と計算システムMPC2との間のラウンドトリップ通信を削減することによって)改善され得る。いくつかの実施態様においては、文字化け回路が、様々な関係を評価するために使用されることが可能であり、削減された計算およびラウンドトリップ通信をもたらす。たとえば、文字化け回路の実装において、MPC1は、ガーブラ(garbler)として働くことができ、MPC2は、エバリュエータ(evaluator)として働くことができる。
【0160】
計算システムMPC1は、選択結果の第1のシェア[result1]をクライアントデバイス110に送信する(422)。同様に、計算システムMPC2は、選択結果の第2のシェア[result2]をクライアントデバイス110に送信する(424)。次いで、アプリケーション112は、たとえば、加法的秘密シェアアルゴリズムが採用される場合は、秘密シェアの総和を決定することによって、2つの秘密シェア[result1]および[result2]を使用して選択結果resultを平文で再構築することができる。選択結果が0の値を有する場合、MPCクラスタ130は、クライアントデバイス110に配信するためのデジタルコンポーネントを識別していない。そうでない場合、選択結果は、デジタルコンポーネント情報要素dc_information_elementに等しい値を有する。アプリケーション112は、デジタルコンポーネント情報要素dc_information_elementを解析して、デジタルコンポーネントの選択値およびメタデータを得ることができる。次いで、アプリケーション112は、上述したように、デジタルコンポーネントを表示するか、または、当該デジタルコンポーネントおよびSSP170から受信される他のデジタルコンポーネントを使用して選択プロセスを実施することができる。
【0161】
いくつかの実施態様において、選択されたデジタルコンポーネントは、計算システムMPC1またはMPC2のいずれかが平文の選択されたデジタルコンポーネントにアクセス可能になることを防止し、デジタルコンポーネントをクライアントデバイス110に送信する際のレイテンシおよび帯域幅消費を削減するためにマスクを使用してクライアントデバイス110に送信される。この例において、アプリケーション112は、各デジタルコンポーネント要求のノンスを選択し、デジタルコンポーネント要求とともにノンスを送信することができる。アプリケーション112は、計算システムMPC1またはMPC2のうちの一方にノンスを送信することができる。例示を目的として、ノンスは計算システムMPC2に送信されると仮定する。
【0162】
アプリケーション112と計算システムMPC2の両方は、同じアルゴリズムおよび同じ入力を用いて、最大のデジタルコンポーネント創作物と同じサイズのマスクを独立して計算することができる。たとえば、マスクのi番目のビットは、PRF(nonce, i)として表すことができ、PRFは、擬似ランダム関数を表す。アプリケーション112と計算システムMPC2の両方は、ノンスおよびマスクを計算システムMPC1から厳密に秘密のままにすることができる。
【0163】
選択されるデジタルコンポーネントをアプリケーション112に送信するために、計算システムMPC2は、[result2]ビット単位XORマスクを計算システムMPC1に送信することができる。次いで、計算システムMPC1は、たとえば、デジタルコンポーネント要求への応答として、[result1]ビット単位XOR([result2]ビット単位XORマスク)をアプリケーション112に、選択結果として送信する。
【0164】
アプリケーション112は、デジタルコンポーネントの創作物として、[result1]ビット単位XOR([result2]ビット単位XORマスク)ビット単位XORマスクを計算する。これは、[result1]ビット単位XOR[result2]と等価である。これによって、プライベート情報抽出保証を保持しながら、最大の創作物のサイズに必要な帯域幅が低減する。これによって、上述したような、選択結果の2つの秘密シェアの送信に対する応答の帯域幅が低減する。このように、他のプロセスにおけるようなデジタルコンポーネント創作物の送信に対して、このプライバシー保持技法においては、追加のレイテンシまたは帯域幅消費がほとんどまたはまったくない。
【0165】
図5は、デジタルコンポーネントが選択に適格であるかどうかを判定するための例示的なプロセスの図である。プロセス500の動作は、たとえば、MPCクラスタ130の計算システムMPC1または計算システムMPC2によって実施され得る。プロセス500の動作は、非一時的であり得る、1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス500の動作を実行させ得る。
【0166】
計算システムMPC1は、選択されたデジタルコンポーネントがクライアントデバイスにおいて表示される環境のコンテキスト特性のセットを取得する(502)。計算システムMPC2も、コンテキスト特性の同じセットを取得する(504)。
【0167】
コンテキスト特性のセットは、クライアントデバイス110ならびに/あるいはコンテンツプラットフォーム、たとえば、SSP170および/または1つもしくは複数のDSP150から受信され得る。たとえば、クライアントデバイス110は、計算システムMPC1およびMPC2に、デジタルコンポーネント要求と一緒に、コンテキスト特性のセットを提供し得る。また、コンテンツプラットフォームは、上述のように、環境のコンテキスト特性を推測することができる。上述のように、コンテキスト特性は、デジタルコンポーネントが表示されるリソースについてのデータ、クライアントデバイス110のユーザについてのデータ、デジタルコンポーネントを表示するアプリケーション112についてのデータ、クライアントデバイス110についてのデータ、ならびに/または全般的なコンテキストデータ(たとえば、日付および時刻)を含み得る。
【0168】
特性のセットは、特性のベクトルの形式であることが可能である。いくつかの実施態様において、各計算システムMPC1およびMPC2は、コンテキスト特性のセットのそれぞれの秘密シェア、たとえば、コンテキスト特性のベクトルのそれぞれの秘密シェアを受信する。
【0169】
計算システムMPC1は、デジタルコンポーネント選択アイテムの適格性データを取得する(506)。計算システムMPC2も、デジタルコンポーネント選択アイテムの適格性データを取得する(508)。適格性データは、デジタルコンポーネント選択アイテムのデジタルコンポーネントおよび選択値がデジタルコンポーネント選択プロセスに含めるために利用可能であるコンテキスト環境を定義する適格性式および/または適格性基準を含み得る。
【0170】
適格性式は、適格性基準に基づく部分式と、ブールAND、ブールOR、および単項ブールNOTなどの、部分式の各ペアの間のブール演算子とを含むブール式の形式であることが可能である。ブールNOT演算子は、複数のパラメータに対する演算ではなく、単一のパラメータに対して作用し得る。各部分式は、1つまたは複数のコンテキスト特性に基づき得る。たとえば、1つの部分式が、デジタルコンポーネントを表示するクライアントデバイス110の地理的位置が特定の地理的領域内に位置することを要求する場合があり、別の部分式が、デジタルコンポーネントが表示されるリソースのトピックが1セットのトピックのうちの1つを有することを要求する場合がある。この例において、適格性式は、次のように表され得る: クライアントデバイスの位置 = 特定の地理的領域 AND リソースのトピック∈トピックのセット。
【0171】
場合によっては、たとえば、デジタルコンポーネント選択アイテムの適格性が単一のコンテキスト特性によって条件付けられるとき、適格性式は、単一の部分式のみを含む場合がある。しかし、MPCクラスタ130は、デジタルコンポーネントがリソースとともにどのように表示されるかをきめ細かく制御するために、任意のブール式、たとえば、複数の部分式と、部分式の間の論理演算子とを含むブール式をサポートすることができる。
【0172】
いくつかの実施態様においては、コンテンツプラットフォームが、デジタルコンポーネントの適格性式を提供する。そのような場合、ビジネスの機密情報を保護するために、コンテンツプラットフォームは、適格性式および対応する適格性基準のそれぞれの秘密シェアを計算システムMPC1およびMPC2に提供することができる。この例において、計算システムMPC1は、適格性式の第1の秘密シェアおよび適格性基準の第1の秘密シェアを受信する。同様に、計算システムMPC2は、適格性式の第2の秘密シェアおよび適格性基準の第2の秘密シェアを受信する。
【0173】
コンテンツプラットフォームは、平文の適格性式および適格性基準を提供することもできる。たとえば、コンテンツプラットフォームは、スクリプト関数または他のコンピュータ可読コードの形式で適格性式を提供することができる。そのような例において、計算システムMPC1およびMPC2は、サンドボックス環境内でスクリプトまたは他のコードを実行することによって、デジタルコンポーネント選択アイテムが適格であるかどうかを判定することができる。サンドボックス環境は、他のコードの実行から隔離され得る。サンドボックス環境を使用することは、たとえば、ユーザデータプライバシーを保持し、計算システムMPC1およびMPC2を悪意のあるコードから保護するために、スクリプトがいかなる入力/出力要求を行うこともまたはサンドボックス環境に提供されないいかなるデータを取得することも防止することができる。
【0174】
いくつかの実施態様において、MPCクラスタ130は、コンテンツプラットフォームによって提供された適格性基準および/または適格性式に基づいて適格性式を構築する。たとえば、DSP150は、そのデジタルコンポーネントのうちの1つに関して、デジタルコンポーネントが適格であるときを定義する部分式を提供することができる。同様に、SSP170は、リソースに関して、リソースとともに表示することが許されないデジタルコンポーネントの特性を定義する部分式を提供することができる。デジタルコンポーネント要求が、リソースとともにデジタルコンポーネントを表示するためのものであるとき、MPCクラスタ130は、リソースに関する部分式およびデジタルコンポーネントに関する部分式にアクセスし、適格性式を構築することができる。たとえば、計算システムMPC1およびMPC2は、デジタルコンポーネントがリソースとともに表示するのに適格であるためには部分式の両方のセットが満たされる必要があるので、AND演算子を使用してSSP170の部分式をDSP150の部分式と組み合わせることができる。適格性式が秘密シェアを使用して計算システムMPC1およびMPC2に提供される場合、計算システムMPC1およびMPC2は、下で説明されるように、セキュアMPCプロセスを使用して部分式の両方のセットが満たされるかどうかを評価することができる。
【0175】
適格性式を使用することは、大きなキャッシュ検索キーの使用と比較して、計算システムMPC1およびMPC2によって記憶されるデータの量を削減する。また、これは、計算システムMPC1およびMPC2のデータストレージ要件を増加させることなく、デジタルコンポーネントの表示のパブリッシャおよびデジタルコンポーネントプロバイダの制御の柔軟性を高め、それが、計算システムMPC1およびMPC2が高速メモリ、たとえば、高速キャッシュにより多くのデジタルコンポーネント、デジタルコンポーネントに関する情報、および/または他の関連情報を記憶することを可能にする。
【0176】
MPCクラスタ130は、様々なタイプの部分式をサポートすることができ、適格性基準の秘密シェアに基づいてセキュアMPCプロセスを使用して各タイプを評価することができる。いくつかの例示的なタイプは、セット交差チェック、同等性テスト、比較、および真理値表を含む。
【0177】
特性が特性のセットのメンバーであるかどうかを判定するために、セット交差チェックが使用され得る。これは、デジタルコンポーネントが、リソースのパブリッシャがそのリソースとともに表示させたくない特性を有するかどうかを判定するために使用され得る。たとえば、パブリッシャは、特定のアイテムに関連するコンテンツを有するデジタルコンポーネントをブロックする場合がある。セット交差チェックは、特定のアイテムがデジタルコンポーネントの特性のセット内の特性のうちの1つと一致するかどうかをチェックするために使用され得る。
【0178】
各デジタルコンポーネント選択アイテムは、Sdcsiとして表され得る特性のセットを有することが可能である。デジタルコンポーネントのいくつかの特性は、パブリッシャに代わってSSP170によって決定され、デジタルコンポーネント選択アイテムに付され得る。たとえば、デジタルコンポーネントレビュープロセス中に、SSP170は、デジタルコンポーネントが特定のアイテムについてのものであると判定し、デジタルコンポーネント選択アイテムに、SSPが決定した特性のうちの1つとして特定のアイテムを付す場合がある。SSPが決定した特性のセットは、Sdcsi,SSPと呼ばれ得る。
【0179】
SSP170は、たとえば、式P∈Sdcsiを提供することによって、パブリッシャのリソース上で特定のアイテムに関連するデジタルコンポーネントを選択しないようにMPCクラスタ130に指示することができ、式中、Pは、除外された特性(すなわち、特定のアイテム)を表し、Sdcsiは、SSP170によって推測された特性を含み得る、デジタルコンポーネントの特性を表す。SSP170は、特性がデジタルコンポーネントの特性のセット内にある場合、デジタルコンポーネントが選択に適格でないことをMPCクラスタ130に指示することができる。
【0180】
同様に、デジタルコンポーネントの一部の特性は、デジタルコンポーネントを発行するデジタルコンポーネントプロバイダ160に代わってDSP150によって決定され、デジタルコンポーネント選択アイテムに付され得る。DSPがスポーツに関連するリソースとともにのみデジタルコンポーネントが表示されてほしい場合、DSP150は、DSPが決定した特性のうちの1つとして、デジタルコンポーネント選択アイテムに特性「スポーツ」を追加することができる。DSPが決定した特性のセットは、Sdcsi,DSPと呼ばれ得る。
【0181】
DSP150は、特定の特性、たとえば、「スポーツ」がデジタルコンポーネント要求のコンテキスト特性のセットに含まれている場合に、デジタルコンポーネントが選択に適格となることを可能にするようにMPCクラスタ130に指示することができる。そのようにするために、DSP150は、式P∈Sdcsiを提供することができ、式中、Pは、デジタルコンポーネントが適格である1つまたは複数の所望の特性(すなわち、スポーツ)を表し、Sdcsiは、デジタルコンポーネントの特性を表す。DSP150は、特性がデジタルコンポーネントの特性のセット内にある場合、デジタルコンポーネントが選択に適格でないことをMPCクラスタ130に指示することができる。
【0182】
特性が特定の値を有するかどうかを判定するために、同等性テストが使用され得る。たとえば、クライアントデバイス110の地理的位置は、多くの異なる値を持つことが可能である一方、DSP150は、可能な位置のうちの1つにおいてのみデジタルコンポーネントの特定の選択値が適格であってほしい場合がある。同等性テストは、コンテキスト特性のセット内の特定の特性が特定の値を有するかどうか、またはデジタルコンポーネントの特性のうちの特定の特性が特定の値を有するかどうかを判定するために使用され得る。コンテンツプラットフォームは、コンテキスト特性かまたはデジタルコンポーネントの特性かのどちらかの特定の特性が特定の値を有するかどうかを判定するための同等性テストを実行するようにMPCクラスタ130に指示することができる。
【0183】
特性は、はっきりと定義された比較テストによって順序を示すことができる。たとえば、デジタルコンポーネント選択アイテムが60歳以上のユーザにのみ有効である場合、デジタルコンポーネント選択アイテムは、値60を持つ特性「最低年齢」を用いる式を有することができる。DSP150は、最低年齢特性を、コンテキスト特性のセットに含まれる場合があるユーザの年齢と比較するようにMPCクラスタ130に指示することができる。
【0184】
コンテンツプラットフォームは、1つもしくは複数のセット交差チェック、1つもしくは複数の同等性テスト、および/または1つもしくは複数の比較を含む複数のタイプの部分式を含む適格性式を生成することができる。これは、デジタルコンポーネントが表示され得るコンテキストと、パブリッシャリソース上に表示されるデジタルコンポーネントのコンテンツとのきめ細かい制御を提供する。例示的な式は、次の通りであることが可能である:
【数4】
【0185】
。この例においては、デジタルコンポーネントの特性Sdcsiが特定のアイテムを含まず、クライアントデバイス110の位置が特定の州内にあり、クライアントデバイス110のユーザの年齢が最低年齢以上である場合にのみ、デジタルコンポーネントは適格である。この例においてはAND演算子のみが使用されているが、OR、XOR、NOTなど他のブール演算子も使用され得る。
【0186】
計算機システムMPC1およびMPC2は、適格性式(510)を評価する。計算システムMPC1およびMPC2は、デジタルコンポーネントが選択に適格であるかどうかを判定するために、各デジタルコンポーネントの適格性式を評価する。上述のように、適格性式および対応する適格性基準が平文で計算システムMPC1およびMPC2に提供される場合、評価はサンドボックスで行われ得る。
【0187】
状況によっては、デジタルコンポーネント選択アイテムに関連する特性および/またはデジタルコンポーネント要求のコンテキスト特性のセットは、機密または極秘である場合がある。たとえば、DSP150は、リソースがどのように分類されているかによって、特定のデジタルコンポーネントまたはデジタルコンポーネントのセットがパブリッシャのリソース上に表示されることをDSP150が許さないことを特定のパブリッシャに知らせたくない場合がある。別の例において、SSP170は、特定のリソースがあるプロバイダのデジタルコンポーネントを表示するために利用可能であるが、別のプロバイダのデジタルコンポーネントを表示するためには利用不可能であることをデジタルコンポーネントプロバイダに明らかにしたくない場合がある。
【0188】
そのようなデータが漏洩することを防止するために、MPCクラスタ130は、デジタルコンポーネントが適格であるかどうかを判定するためにセキュアMPCプロセスを使用することができる。平文のコンテキスト特性のセット、適格性式、および適格性基準を受信する代わりに、各計算システムMPC1およびMPC2は、コンテキスト特性のセットのそれぞれの秘密シェア、適格性式のそれぞれの秘密シェア、および適格性基準のそれぞれの秘密シェアを受信することができる。そして、計算システムMPC1およびMPC2は、デジタルコンポーネント選択アイテムが適格であるかどうかを判定するために、秘密シェアを使用してセキュアMPCプロセスを実行することができる。
【0189】
セット交差チェックのために、特性は、たとえば、符号化される特性の数に応じて、ベクトル、ブルームフィルタ、または分散ポイント関数(DPF: distributed point function)を使用して符号化され得る。特性の数が限られており、たとえば、100、500、または他の適切な閾値未満である場合、ベクトルが効率的に使用され得る。機密情報を保護するために、ベクトルまたは特性は、Z2の加法的秘密シェアの2つのベクトルに分割され得る。たとえば、ベクトルの第1の要素がデジタルコンポーネント選択アイテムが特定のアイテムに関連しているかどうかを表し、デジタルコンポーネントが確かに特定のアイテムに関連している場合、S[0] = 1である秘密ベクトルSが存在する可能性がある。この例においては、ベクトルSの要素0が、特定のアイテムを表す。加法的秘密シェアの2つのベクトルは、それぞれS1およびS2であり、S1[0] XOR S2[0] == 1である。この例においては、計算システムMPC1が、ベクトルSの第1の秘密シェアS1を受信することができ、計算システムMPC2が、ベクトルSの第2の秘密シェアS2を受信することができる。デジタルコンポーネントが特定のアイテムに関連していない場合、式は、S[0] = 0かつS1[0] XOR S2[0] == 0となる。
【0190】
ベクトルは、デジタルコンポーネント選択アイテムのデジタルコンポーネントの限られた数の特性と、デジタルコンポーネント要求のコンテキスト特性のセットとを符号化するために使用され得る。S1およびS2が、それぞれMPC1およびMPC2によって保持されるデジタルコンポーネント選択アイテムに関する秘密シェアのベクトルを表すものとする。このベクトルは、デジタルコンポーネントに関する特性、たとえば、デジタルコンポーネントの特性、またはデジタルコンポーネントが適格であるもしくは適格でない環境の特性を符号化する。
【0191】
P1およびP2が、それぞれMPC1およびMPC2によって保持されるデジタルコンポーネント要求に関する秘密シェアのベクトルを表すものとする。このベクトルは、デジタルコンポーネント要求のコンテキスト特性を符号化する。概念的に、common_propertiesが、reconstruct(S1, S2) = reconstruct(P1, P2)を表すものとする。計算システムMPC1およびMP2は、セキュアMPCプロセスを使用して、ベクトルの秘密シェアを評価し、ベクトルの対応する要素を比較することによって、秘密シェアでcommon_propertiesを計算することができる。common_propertiesの要素が値1を有する場合、デジタルコンポーネント選択アイテムと現在のデジタルコンポーネント要求との両方が、要素に対応する同じ特性を共有している。SおよびPのデータ型が整数型ではなくブール型であるとき、比較演算は、セキュアMPCプロトコルにおいて余分なラウンドトリップを必要としない論理XORに最適化され得る。
【0192】
デジタルコンポーネント選択アイテムが現在のデジタルコンポーネント要求に関して指定されたいずれかの特性に関連付けられる場合にデジタルコンポーネント選択アイテムが選択に不適格であるようなブロックリストを実装するために、計算システムMPC1およびMPC2は、ユーザのプライバシーを保護するために秘密シェアで計算されたcommon_propertiesの要素をチェックする。すべての要素が値0を有する場合、デジタルコンポーネント選択アイテムは、現在の要求に関してブロックされない。
【0193】
キャッシュされた入札が現在のデジタルコンポーネント要求に関して指定されたいずれかの特性に関連付けられる場合にデジタルコンポーネント選択アイテムが選択に適格であるような有効リストを実装するために、計算システムMPC1およびMPC2は、common_propertiesの要素をチェックする。すべての要素が値0を有する場合、デジタルコンポーネント選択アイテムは、現在のデジタルコンポーネント要求に関してブロックされる。
【0194】
common_propertiesを計算し、common_propertiesのすべての要素が値0を有するかどうかをチェックするために使用され得るいくつかの技法が存在する。1つの技法は、紛失通信(OT)をともなうGoldreich-Micali-Wigderson(GMW)であり、別の手法は、文字化け回路である。どちらの手法も、2つの計算システムMPC1およびMPC2の間でオンライン通信の1回のオンラインのラウンドを利用する。
【0195】
(たとえば、特性の閾値の数を超える)多数の特性が存在するとき、ベクトルの使用は、ブルームフィルタまたはDPFの使用ほど効率的でない場合がある。デジタルコンポーネント選択アイテムおよびデジタルコンポーネント要求の特性の平均の数が特性の総数に比べて少ない場合、ならびにユースケースがあるレベルの偽陽性率(FPR)を許容し得る場合、特性は、ブルームフィルタで符号化されることが可能である。それ以外の場合は、特性は、DPFで符号化され得る。いずれの解決策においても、コンテンツプラットフォームとMPCクラスタ130との間の通信帯域幅が削減される。
【0196】
同等性テストのために、デジタルコンポーネント選択アイテムに関して、MPC1およびMPC2が、デジタルコンポーネント選択アイテムの特性の2つの秘密シェア[p1]および[p2]をそれぞれ保持していると仮定する。デジタルコンポーネント要求に関して、SSP170は、デジタルコンポーネント要求の特性(たとえば、コンテキスト特性のセット)の2つの秘密シェア[q1]および[q2]をMPC1およびMPC2にそれぞれ送信する。MPC1およびMPC2は、2つの秘密メッセージpおよびqが等しいかどうかを比較し、p = reconstruct ([p1], [p2])であり、q = reconstruct ([q1], [q2])である。
【0197】
次の2つのアサーション、すなわち、pおよびqが等しいと、p-q = 0とは等価である。この観察により、代替的なプロトコルは、MPCクラスタ130が、秘密シェア計算を使用して、tmp = p-qを計算し、tmpが0に等しいかどうかを判定し得ることである。そのようにするために、MPC1は、[tmp1] = [p1] - [q1]を計算し、MPC2は、[tmp1] = [p2] - [q2]を計算する。それから、計算システムMPC1およびMPC2は、GMWまたは文字化け回路を使用して、秘密メッセージtmpが0に等しい(すなわち、tmpのすべてのビットが0である)かどうかを判定することができる。
【0198】
上述の式に加えて、MPCクラスタ130は、デジタルコンポーネント要求に応答してデジタルコンポーネント選択アイテムが選択に適格であるかどうかを判定するための制御を定義する真理値表をサポートし得る。MPCクラスタ130は、適格性式に基づいて真理値表を生成することができる。
【0199】
様々な部分式を評価した後、計算システムMPC1およびMPC2は、適格性式のブール演算子を評価することができる。いくつかの部分式の結果は、各計算システムMPC1およびMPC2によって保持される秘密シェアであることが可能であるので、計算システムMPC1およびMPCは、セキュアMPCプロセスを使用してブール演算子を評価することができる。これの結果も、デジタルコンポーネント選択アイテムが適格であるかどうかを示す適格性パラメータeligbility_checkiの秘密シェアであることが可能である。たとえば、計算システムMPC1が、第1の秘密シェア[eligbility_checki.1]を有することが可能であり、計算システムMPC2が、第2の秘密シェア[eligbility_checki.2]を有することが可能である。そして、計算システムMPC1およびMPC2は、上述のように、デジタルコンポーネントを選択するためのプロセスの一部として、適格性パラメータの秘密シェアを使用することができる。
【0200】
図6は、デジタルコンポーネント選択プロセス内のデジタルコンポーネントの最高の他の選択値を決定するための例示的なプロセス600の図である。プロセス600の動作は、たとえば、MPCクラスタ130の計算システムMPC1またはMPC2によって、MPCクラスタ130の他の計算システムと協力して実施され得る。プロセス600の動作は、非一時的であり得る、1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス600の動作を実行させ得る。
【0201】
計算システムは、選択されたデジタルコンポーネントがクライアントデバイスにおいて表示される環境のコンテキスト特性のセットの少なくとも第1のシェアを取得する(602)。コンテキスト特性のセットは、クライアントデバイス110ならびに/あるいはコンテンツプラットフォーム、たとえば、SSP170および/または1つもしくは複数のDSP150から受信され得る。たとえば、クライアントデバイス110は、計算システムMPC1およびMPC2に、デジタルコンポーネント要求と一緒に、コンテキスト特性のセットを提供し得る。また、コンテンツプラットフォームは、上述のように、環境のコンテキスト特性を推測することができる。上述のように、コンテキスト特性は、デジタルコンポーネントが表示されるリソースについてのデータ、クライアントデバイス110のユーザについてのデータ、デジタルコンポーネントを表示するアプリケーション112についてのデータ、クライアントデバイス110についてのデータ、ならびに/または全般的なコンテキストデータ(たとえば、日付および時刻)を含み得る。
【0202】
計算システムは、コンテキスト特性のセットの第1の秘密シェアを受信することができる。MPCクラスタ130のそれぞれの他の計算システムは、コンテキスト特性のセットのそれぞれの第2の秘密シェアを受信することができる。
【0203】
計算システムは、デジタルコンポーネントのセット内の各デジタルコンポーネントに関して、デジタルコンポーネントの1セットの適格性基準の間の関係を定義する適格性式の少なくとも第1のシェアを取得する(604)。上述のように、適格性式は、1つまたは複数の部分式、NOTなどの単項ブール演算子、および部分式のペアの間のブール演算子を含み得る。
【0204】
計算システムは、適格性式の第1の秘密シェアおよび適格性式に関する適格性基準の第1の秘密シェアを受信することができる。MPCクラスタ130のそれぞれの他の計算システムは、適格性式のセットのそれぞれの第2の秘密シェアおよび適格性基準のそれぞれの第2の秘密シェアを受信することができる。
【0205】
計算システムは、各デジタルコンポーネントに関して、コンテキスト特性のセットの少なくとも第1のシェアおよび適格性式の少なくとも第1のシェアに基づいて、デジタルコンポーネントがクライアントデバイスにおいて表示されるための選択に適格であるかどうかを示す適格性パラメータの少なくとも第1のシェアを決定する(606)。計算システムは、
図5に示され、上で説明されたプロセス500を使用して、適格性パラメータの第1のシェアを決定することができる。MPCクラスタ130のそれぞれの他の計算システムは、プロセス500の一部として、適格性パラメータの第2のシェアを決定することができる。
【0206】
計算システムは、MPCクラスタのそれぞれの他の計算システムと協力して、選択されたデジタルコンポーネントとして、デジタルコンポーネントが選択に適格であることを示す適格性パラメータを有する各デジタルコンポーネントを含む適格なデジタルコンポーネントのセットから所与のデジタルコンポーネントを選択するためにセキュアMPCプロセスを実行する(608)。計算システムは、
図4に示され、上で説明されたプロセス400を使用して、他の計算システムと協力してデジタルコンポーネントを選択することができる。
【0207】
計算システムは、セキュアMPCプロセスの結果として、選択されたデジタルコンポーネントを識別する選択結果の第1のシェアを生成する(610)。MPCクラスタ130のそれぞれの他の計算システムは、選択結果のそれぞれの第2のシェアを生成する。計算システムは、
図4に示され、上で説明されたプロセス400の一部として、選択結果のシェアを決定することができる。
【0208】
計算システムは、クライアントデバイスに、選択結果の第1のシェアを送信する(612)。また、MPCクラスタ130のそれぞれの他の計算システムは、選択結果のそのそれぞれの第2のシェアをクライアントデバイスに送信する。そして、クライアントデバイスは、選択されたデジタルコンポーネントにアクセスし、デジタルコンポーネントを表示することができる。
【0209】
いくつかの実施態様において、MPCクラスタ130は、デジタルコンポーネントが選択プロセスの候補であるかどうかを判定するため、たとえば、デジタルコンポーネントの候補パラメータの秘密シェアを決定するためのセキュアMPCプロセスのために文字化け回路を使用することができる。デジタルコンポーネントごとに多くの条件、場合によっては数十個が存在し得るので、各デジタルコンポーネントに関して文字化け回路内に多くのゲートが存在する。ゲート数を減らすことは、セキュアMPCプロトコルを実行するための帯域幅のコストを削減し、デジタルコンポーネントを選択する際のレイテンシを大幅に削減する。
【0210】
たとえば、同じデジタルコンポーネントに関して、またはデジタルコンポーネントのグループに関して、入力または中間ブール変数の同じペア間の多くの反復的な計算および論理AND計算が存在する。部分式の重複した計算を避け、したがって、AND演算の数を減らすために、貪欲法が使用され得る。
【0211】
上述のプロセスにおいて、候補パラメータis_dc_a_candidateは、ZP内にあり、0かまたは1かのどちらかの値を有すると仮定され得る。MPCクラスタ130は、最高から最低まで、選択値を有するデジタルコンポーネント(たとえば、パブリッシャに帰せられる部分)からすべてのキャッシュされたデジタルコンポーネントに対して反復する。それぞれのキャッシュされたデジタルコンポーネントiに関して、MPCクラスタ130は、累積値acciを計算し、それから、ZPにおいてacci == 0を計算する。結果は、Z2に逆変換される。Z2からZpへのおよびその逆の変換は、プロトコルの複雑さを増加させる。文字化け回路を使用するZpにおける同等性テストacci == 0は、log2(p)個のゲートを要することがあり得、これは、多大な性能および帯域幅のコストである。
【0212】
MPCクラスタ130は、候補パラメータis_dc_a_candidateiをZ2に保ち、ずっと低い計算および帯域幅のコストで、ブール回路によってZ2で累積値acci、それからacci == 0を計算することができる。これを行うために、累積値acciは、2つの可能な値、すなわち、いずれの候補デジタルコンポーネントも現在のデジタルコンポーネントiの現在の選択値よりも高い選択値を持たない場合の0、または少なくとも1つの候補デジタルコンポーネントが現在のデジタルコンポーネントの現在の選択値よりも高い選択値を有する場合の1に制限される。上述のプロセスにおいて、累積値は、各候補デジタルコンポーネントに関してインクリメントされたとき、1より大きくなる可能性があった。
【0213】
累積値accの更新されたセマンティクス(semantics)によって、MPCクラスタ130は、以下のように、最高の選択値から最低の選択値まで、すべてのキャッシュされたデジタルコンポーネントに対して反復しながら、勝者パラメータis_dc_the_winneriに関する累積値を計算することができる。最高の選択値を有するデジタルコンポーネントに関する累積値accは、常に0である。計算は、必要とされない。
【0214】
2番目に高い選択値を有するデジタルコンポーネントに関する累積値accは、最高の選択値を有するデジタルコンポーネントの候補パラメータis_dc_a_candidateの値と常に等しい。これに関しても計算は必要とされない。
【0215】
MPCクラスタ130が、n番目に高い選択値を有するデジタルコンポーネントに関する累積値accを既に計算したと仮定する。(n+1)番目に高い選択値を有するデジタルコンポーネントに関する累積値accは、accn+1 = accn OR is_dc_a_candidatenとして計算され得る。MPCクラスタ130は、勝者パラメータis_dc_a_winnern+1 = is_dc_a_candidaten+1 AND NOT accn+1をさらに計算することができる。
【0216】
MPCクラスタ130は、それぞれのキャッシュされたデジタルコンポーネントに関して4つの配線、たとえば、2つの入力線(accnおよびis_dc_a_candidaten)ならびに2つの出力線(accn+1およびis_dc_a_winnern+1)を有する2つのゲートを持つ可能性がある。これらの拡張により、MPCクラスタ130は、キャッシュされたデジタルコンポーネント1個あたり数十個のゲートではなく2つのゲートだけ必要とする。この暗号プロセスは、上述のように候補の適格性の判定の一部として実行され得る。
【0217】
図7は、上述の動作を実行するために使用され得る例示的なコンピュータシステム700のブロック図である。システム700は、プロセッサ710、メモリ720、記憶デバイス730、および入力/出力デバイス740を含む。構成要素710、720、730、および740の各々は、たとえば、システムバス750を使用して、相互接続され得る。プロセッサ710は、システム700内で実行するための命令を処理することが可能である。いくつかの実施態様では、プロセッサ710は、シングルスレッドプロセッサである。別の実施態様では、プロセッサ710は、マルチスレッドプロセッサである。プロセッサ710は、メモリ720の中または記憶デバイス730上に記憶された命令を処理することが可能である。
【0218】
メモリ720は、システム700内に情報を記憶する。一実施態様では、メモリ720はコンピュータ可読媒体である。いくつかの実施態様では、メモリ720は揮発性メモリユニットである。別の実施態様では、メモリ720は不揮発性メモリユニットである。
【0219】
記憶デバイス730は、システム700に対する大容量記憶装置を提供することが可能である。いくつかの実施態様では、記憶デバイス730は、コンピュータ可読媒体である。様々な異なる実施態様では、記憶デバイス730は、たとえば、ハードディスクデバイス、光ディスクデバイス、複数のコンピューティングデバイス(たとえば、クラウド記憶デバイス)によってネットワーク上で共有される記憶デバイス、または何らかの他の大容量記憶デバイスを含み得る。
【0220】
入力/出力デバイス740は、システム1000のための入力/出力動作を行う。いくつかの実施態様では、入力/出力デバイス740は、ネットワークインターフェースデバイス、たとえば、Ethernetカード、シリアル通信デバイス、たとえば、およびRS-232ポート、ならびに/またはワイヤレスインターフェースデバイス、たとえば、および802.11カードのうちの1つまたは複数を含み得る。別の実施態様では、入力/出力デバイスは、入力データを受信し、出力データを外部デバイス760、たとえば、キーボード、プリンタ、およびディスプレイデバイスに送信するように構成された、ドライバデバイスを含み得る。しかしながら、モバイルコンピューティングデバイス、モバイル通信デバイス、セットトップボックステレビクライアントデバイスなど、他の実施態様が使われてもよい。
【0221】
例示的な処理システムが
図7で説明されているが、本明細書で説明した主題および機能的動作の実施態様は、他のタイプのデジタル電子回路において、もしくは本明細書で開示する構造およびそれらの構造等価物を含む、コンピュータソフトウェア、ファームウェア、または、ハードウェアにおいて、またはそれらのうちの1つまたは複数の組合せにおいて実装され得る。
【0222】
主題の実施形態および本明細書で説明する動作は、デジタル電子回路で、または本明細書で開示する構造およびその構造的均等物を含むコンピュータソフトウェア、ファームウェア、もしくはハードウェアで、またはそれらのうちの1つもしくは複数の組合せにおいて実装され得る。本明細書で説明する主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のために、またはデータ処理装置の動作を制御するために、(1つまたは複数の)コンピュータ記憶媒体上で符号化された、コンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。代替または追加として、プログラム命令は、データ処理装置による実行のための、好適な受信機装置への送信のために情報を符号化するために生成される、人工的に生成された伝搬信号、たとえば、機械生成された電気信号、光信号、または電磁信号上で符号化され得る。コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの1つもしくは複数の組合せであり得るか、またはそれらに含まれ得る。その上、コンピュータ記憶媒体は伝搬信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝搬信号の中で符号化されたコンピュータプログラム命令のソースまたは宛先であり得る。コンピュータ記憶媒体はまた、1つまたは複数の別個の物理構成要素または媒体(たとえば、複数のCD、ディスク、または他の記憶デバイス)であり得るか、またはそれらに含まれ得る。
【0223】
本明細書で説明する動作は、1つまたは複数のコンピュータ可読記憶デバイス上に記憶されたまたは他のソースから受信されたデータに対してデータ処理装置によって実行される動作として実装され得る。
【0224】
「データ処理装置」という用語は、例として、プログラマブルプロセッサ、コンピュータ、システムオンチップ、または上記の複数のもの、もしくは上記のものの組合せを含む、データを処理するためのあらゆる種類の装置、デバイス、および機械を包含する。装置は、専用論理回路構成、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含むことができる。装置はまた、ハードウェアに加えて、当該のコンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想機械、またはそれらのうちの1つまたは複数の組合せを構成するコードを含むことができる。装置および実行環境は、ウェブサービス、分散コンピューティング基盤およびグリッドコンピューティング基盤などの様々な異なるコンピューティングモデル基盤を実現することができる。
【0225】
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとも呼ばれる)は、コンパイル型言語またはインタプリタ型言語、宣言型言語または手続き型言語を含む、任意の形態のプログラミング言語で書くことができ、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境において使用するのに適した他のユニットとして含む、任意の形態で展開され得る。コンピュータプログラムは、ファイルシステムの中のファイルに対応し得るが、そうである必要はない。プログラムは、他のプログラムもしくはデータ(たとえば、マークアップ言語文書の中に記憶された1つまたは複数のスクリプト)を保持するファイルの一部分の中に、当該のプログラムに専用の単一のファイルの中に、または複数の協調ファイル(たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの部分を記憶するファイル)の中に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに配置されるかもしくは複数のサイトにわたって分散され通信ネットワークによって相互接続される、複数のコンピュータ上で実行されるように展開され得る。
【0226】
本明細書で説明するプロセスおよび論理フローは、入力データ上で動作し、出力を生成することによってアクションを実行するために、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルプロセッサによって実行され得る。プロセスおよび論理フローはまた、専用論理回路構成、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実行され得、装置もそれらとして実装されてよい。
【0227】
コンピュータプログラムの実行に好適なプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方を含む。一般に、プロセッサは、命令およびデータを読取り専用メモリ、もしくはランダムアクセスメモリ、またはその両方から受信することになる。コンピュータの必須要素は、命令に従ってアクションを実行するためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータはまた、データを記憶するための1つまたは複数の大容量記憶デバイス、たとえば、磁気ディスク、光磁気ディスク、もしくは光ディスクを含むか、またはそれらからデータを受信することもしくはそれらにデータを転送すること、またはその両方を行うために、動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有することは必須でない。その上、コンピュータは、ほんのいくつかの例を挙げれば、別のデバイス、たとえば、携帯電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲーム機、全地球測位システム(GPS)レシーバ、またはポータブル記憶デバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)の中に組み込まれ得る。コンピュータプログラム命令およびデータを記憶するのに適したデバイスは、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば、内部ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、不揮発性媒体、および不揮発性メモリデバイスを含む。プロセッサおよびメモリは、専用論理回路構成によって増補され得るか、または専用論理回路構成の中に組み込まれ得る。
【0228】
ユーザとの対話を提供するために、本明細書で説明する主題の実施形態は、ユーザに情報を表示するための、CRT(陰極線管)またはLCD(液晶ディスプレイ)モニタなどのディスプレイデバイス、ならびに、キーボード、および、ユーザがコンピュータに入力を提供することができる、たとえば、マウスまたはトラックボールなどのポインティングデバイスを有するコンピュータ上で実装され得る。他の種類のデバイスも、ユーザとの対話を提供するために使用され得る。たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであってもよく、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形態で受け取られてもよい。加えて、コンピュータは、文書をユーザによって使用されるデバイスに送信し、文書をそのデバイスから受信することによって、たとえば、ユーザのクライアントデバイス上のウェブブラウザから受信された要求に応答してウェブページをそのウェブブラウザに送信することによって、ユーザと対話することができる。
【0229】
本明細書で説明する主題の実施形態は、たとえば、データサーバとして、バックエンド構成要素を含むか、またはミドルウェア構成要素、たとえば、アプリケーションサーバを含むか、またはフロントエンド構成要素、たとえば、ユーザがそれを通じて本明細書で説明する主題の一実施態様と対話できるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータを含むか、あるいは1つまたは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、またはフロントエンド構成要素の任意の組合せを含む、計算システムにおいて実装され得る。システムの構成要素は、任意の形態または媒体のデジタルデータ通信、たとえば、通信ネットワークによって、相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
【0230】
計算システムは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは、一般に、互いに遠隔にあり、通常、通信ネットワークを通じて相互作用する。クライアントとサーバとの関係は、コンピュータプログラムがそれぞれのコンピュータ上で実行し互いにクライアントサーバ関係を有することによって生じる。いくつかの実施形態では、サーバは、(たとえば、クライアントデバイスと対話するユーザにデータを表示するとともにそのユーザからユーザ入力を受信するために)データ(たとえば、HTMLページ)をクライアントデバイスへ送信する。クライアントデバイスにおいて生成されたデータ(たとえば、ユーザ対話の結果)は、サーバにおいてクライアントデバイスから受信され得る。
【0231】
本明細書は多くの特定の実装詳細を含むが、これらは任意の発明の範囲または特許請求され得るものの範囲に対する限定として解釈されるべきではなく、むしろ特定の発明の特定の実施形態に特有の特徴の説明として解釈されるべきである。別個の実施形態の文脈において本明細書で説明されるいくつかの特徴はまた、単一の実施形態において組み合わせて実施され得る。反対に、単一の実施形態の文脈において説明される様々な特徴はまた、複数の実施形態において別々に、または任意の好適な部分組合せにおいて実施され得る。その上、特徴はいくつかの組合せで働くものとして上記で説明されることがあり、当初はそのようなものとして特許請求されることさえあるが、特許請求される組合せからの1つまたは複数の特徴は、場合によっては、その組合せから削除することができ、特許請求される組合せは、部分組合せまたは部分組合せの変形形態を対象としてよい。
【0232】
同様に、動作は、特定の順序で図面に示されるが、このことは、望ましい結果を達成するために、そのような動作が図示した特定の順序もしくは逐次的な順序で実行されること、または例示したすべての動作が実行されることを必要とするものとして理解されるべきではない。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。その上、上記で説明した実施形態における様々なシステム構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、説明したプログラム構成要素およびシステムが、一般に、単一のソフトウェア製品の中に一緒に組み込まれ得るか、または複数のソフトウェア製品の中にパッケージ化され得ることを理解されたい。
【0233】
したがって、本主題の特定の実施形態が説明されている。他の実施形態が以下の特許請求の範囲内に入る。場合によっては、特許請求の範囲の中に列挙されるアクションは、異なる順序で実行することができ、それでもなお望ましい結果を達成することができる。加えて、添付の図面に示されるプロセスは、望ましい結果を達成するために、必ずしも図示の特定の順序または逐次的な順序を必要とするとは限らない。いくつかの実施態様では、マルチタスキングおよび並列処理が有利であり得る。
【符号の説明】
【0234】
100 環境
105 データ通信ネットワーク
110 クライアントデバイス
112 アプリケーション
130 セキュアMPCクラスタ
140 パブリッシャ
142 ウェブサイト
145 電子リソース、リソース
150 DSP
160 デジタルコンポーネントプロバイダ
170 SSP
310 デジタルコンポーネント要求
400 プロセス
500 プロセス
700 コンピュータシステム
710 プロセッサ
720 メモリ
730 記憶デバイス
740 入力/出力デバイス
750 システムバス
760 外部デバイス
1000 システム