JP2023529783A - Improved performance of secure multiparty computation - Google Patents

Improved performance of secure multiparty computation Download PDF

Info

Publication number
JP2023529783A
JP2023529783A JP2022564428A JP2022564428A JP2023529783A JP 2023529783 A JP2023529783 A JP 2023529783A JP 2022564428 A JP2022564428 A JP 2022564428A JP 2022564428 A JP2022564428 A JP 2022564428A JP 2023529783 A JP2023529783 A JP 2023529783A
Authority
JP
Japan
Prior art keywords
digital component
digital
selection
value
mpc1
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2022564428A
Other languages
Japanese (ja)
Other versions
JP7471450B2 (en
JPWO2022192152A5 (en
Inventor
ガン・ワン
サルバール・パテル
マルセル・エム・モティ・ユン
カーン・セス
ケヴィン・ウェイ・リ・イオ
ベンジャミン・クロイター
マリアナ・ライコヴァ
タンクレデ・ルポワン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Google LLC
Original Assignee
Google LLC
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Google LLC filed Critical Google LLC
Publication of JP2023529783A publication Critical patent/JP2023529783A/en
Publication of JPWO2022192152A5 publication Critical patent/JPWO2022192152A5/ja
Application granted granted Critical
Publication of JP7471450B2 publication Critical patent/JP7471450B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/085Secret sharing or secret splitting, e.g. threshold schemes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/46Secure multiparty computation, e.g. millionaire problem
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/46Secure multiparty computation, e.g. millionaire problem
    • H04L2209/466Electronic auction

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)
  • Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
  • Measurement Of The Respiration, Hearing Ability, Form, And Blood Characteristics Of Living Organisms (AREA)
  • Complex Calculations (AREA)

Abstract

本明細書は、セキュアMPCを使用して、ユーザプライバシーを保持し、選択プロセスに関与する各パーティのデータのセキュリティを保護するように、デジタルコンポーネントを選択することに関する。一態様において、方法は、セキュアMPCシステムの第1の計算システムによって、クライアントデバイスから、デジタルコンポーネント要求およびノンスを受信するステップを含む。第1の計算システムは、ノンスおよび関数に基づいて、クライアントデバイスのユーザをメンバーとして含むユーザグループのユーザグループ識別子を表すブルームフィルタのシェアを含む配列を生成する。複数のユーザグループ識別子の各々について、第1の計算システムは、セキュアMPCシステムの1つまたは複数の第2の計算システムと協働し、配列を使用して、1つまたは複数のユーザグループメンバーシップ条件パラメータのそれぞれの第1の秘密シェアを計算する。This specification relates to using secure MPC to select digital components in a manner that preserves user privacy and protects the security of data for each party involved in the selection process. In one aspect, a method includes receiving a digital component request and a nonce from a client device by a first computing system of a secure MPC system. The first computing system generates, based on the nonce and the function, an array that includes shares of Bloom filters representing user group identifiers of user groups that include the user of the client device as a member. For each of the plurality of user group identifiers, the first computing system cooperates with one or more second computing systems of the secure MPC system to identify one or more user group memberships using an array. Compute the first secret share of each of the condition parameters.

Description

本明細書は、暗号学およびデータセキュリティに関する。 This specification relates to cryptography and data security.

セキュアマルチパーティ計算(MPC:multi-party computation)は、出力が指定のパーティのみに発出されると同時に、個々の当事者が別の当事者のデータまたは中間算出値にアクセスできないように、複数の当事者にわたって計算を分散させることによってデータへのアクセスを阻止する、暗号プロトコルのファミリーである。MPC計算システムは、典型的には、秘密シェアまたは他の暗号化形態のデータおよびパーティ間の情報のセキュアな交換を使用して計算を実施する。 Secure multi-party computations (MPCs) are computations performed across multiple parties so that output is emitted only to designated parties, while no individual party has access to another party's data or intermediate computations. A family of cryptographic protocols that block access to data by distributing computation. MPC computing systems typically perform computations using secret shares or other encrypted forms of data and secure exchange of information between parties.

一般に、本明細書に記載の主題の1つの発明的態様は、セキュアマルチパーティ計算(MPC)システムの第1の計算システムによって、クライアントデバイスから、デジタルコンポーネント要求およびノンスを受信するステップと、ノンスおよび関数に基づいて、クライアントデバイスのユーザをメンバーとして含むユーザグループのユーザグループ識別子を表すブルームフィルタのシェアを含む配列を生成するステップと、複数のユーザグループ識別子について、セキュアMPCシステムの1つまたは複数の第2の計算システムと協働し、配列を使用して、クライアントデバイスのユーザがユーザグループ識別子によって識別されるユーザグループのメンバーであるか否かを表す1つまたは複数のユーザグループメンバーシップ条件パラメータのそれぞれの第1の秘密シェアを計算するステップと、複数のデジタルコンポーネントの各デジタルコンポーネントについて、デジタルコンポーネントに対応する所与のユーザグループ識別子を識別するステップ、ならびに第1の計算システムによって、1つまたは複数の第2の計算システムの各々と協働して、少なくとも、所与のユーザグループ識別子によって識別される所与のユーザグループに対応する各ユーザグループメンバーシップ条件パラメータのそれぞれの第1の秘密シェア、および1つまたは複数の第2のコンピュータの各々によって保持される所与のユーザグループ識別子によって識別される所与のユーザグループに対応するユーザグループメンバーシップ条件パラメータの第2の秘密シェアに基づいて、候補パラメータの第1の秘密シェアを計算するステップであって、候補パラメータは、デジタルコンポーネントがデジタルコンポーネント要求の適格な候補であるか否かを示す、計算するステップを行うステップと、各デジタルコンポーネントの候補パラメータの第1の秘密シェアおよび各デジタルコンポーネントの選択値に基づいて、選択されたデジタルコンポーネントを表す選択結果の第1の秘密シェアを生成するステップと、選択結果の第1の秘密シェアをクライアントデバイスに送るステップとを含む方法において具現化することができる。この態様の他の実装形態は、コンピュータ記憶デバイスに符号化された方法の態様を実行するように構成された、対応する装置、システム、およびコンピュータプログラムを含む。 In general, one inventive aspect of the subject matter described herein is the steps of receiving a digital component request and a nonce from a client device by a first computing system of a secure multi-party computing (MPC) system; generating an array containing a share of bloom filters representing user group identifiers of user groups that include users of client devices as members, based on a function; One or more user group membership condition parameters in cooperation with the second computing system and using the array to represent whether the user of the client device is a member of the user group identified by the user group identifier. and for each digital component of the plurality of digital components, identifying a given user group identifier corresponding to the digital component, and by the first computing system, a or in cooperation with each of a plurality of second computing systems, at least a respective first secret of each user group membership condition parameter corresponding to a given user group identified by a given user group identifier; and a second secret share of user group membership condition parameters corresponding to a given user group identified by a given user group identifier maintained by each of the one or more second computers. calculating a first secret share of a candidate parameter, the candidate parameter indicating whether the digital component is an eligible candidate for a digital component request; generating a first secret share of the selection result representing the selected digital component based on the first secret share of the candidate parameter of the component and the selected value of each digital component; to the client device. Other implementations of this aspect include corresponding apparatus, systems, and computer programs configured to carry out aspects of the method encoded in computer storage devices.

これらのおよび他の実装形態は各々、以下の特徴のうちの1つまたは複数を任意選択で含み得る。いくつかの態様では、第2のMPCシステムの1つまたは複数の第2のコンピュータと協働して、ユーザグループメンバーシップ条件パラメータの第1の秘密シェアを計算するステップは、文字化け回路プロトコルまたはGoldreich-Micali-Wigderson(GMW)プロトコルの一方を使用して、ユーザグループメンバーシップ条件パラメータの第1の秘密シェアを計算するステップを含む。 These and other implementations can each optionally include one or more of the following features. In some aspects, the step of calculating, in cooperation with one or more second computers of a second MPC system, the first secret share of the user group membership condition parameters comprises a garbled circuit protocol or Calculating a first secret share of user group membership condition parameters using one of the Goldreich-Micali-Wigderson (GMW) protocols.

いくつかの態様では、1つまたは複数の第2のコンピュータの各々と協働して、候補パラメータの第1の秘密シェアを計算するステップが、1つまたは複数の追加の条件についてのパラメータのそれぞれの秘密シェアに基づいて候補パラメータの第1の秘密シェアを計算するステップを含む。 In some aspects, the step of calculating, in cooperation with each of the one or more second computers, the first secret share of the candidate parameters is the step of computing each of the parameters for the one or more additional conditions. calculating a first secret share of the candidate parameter based on the secret shares of .

いくつかの態様は、ブロックデジタルコンポーネントのセットを表す追加のブルームフィルタの追加のノンスを受信するステップと、追加のブルームフィルタのシェアを表す追加の配列を生成するステップと、複数のデジタルコンポーネントのうちの1つまたは複数のデジタルコンポーネントについて、1つまたは複数の第2の計算システムと協働し、追加の配列を使用して、デジタルコンポーネントがクライアントデバイスでブロックされているか否かを表すブロック条件パラメータの第1の秘密シェアを計算するステップとを含む。デジタルコンポーネントの候補パラメータは、ブロック条件パラメータに基づいている。 Some aspects include the steps of: receiving additional nonces of additional Bloom filters representing sets of block digital components; generating additional arrays representing shares of the additional Bloom filters; a block condition parameter representing whether or not the digital component is blocked on the client device, using an additional array, in cooperation with one or more second computing systems, for one or more digital components of and calculating a first secret share of . Candidate parameters for digital components are based on block condition parameters.

いくつかの態様では、選択結果の第1の秘密シェアは、選択結果の秘密シェアとクライアントデバイスから受信された第2のマスクとの間でビットXOR演算を実施することによって計算された結果を含む。いくつかの態様では、第1の計算システムは、プロセッサのセットを含むサービングプールと、プロセッサのセットの間で計算負荷を平衡させるロードバランサとを含む。第1の計算システムは、完了したデジタルコンポーネント選択プロセスに関係するデータを含むログへの更新に基づいてスナップショットを生成し、スナップショットをサービングプールに提供するプロセッサの追加のセットを含むログプロセッサプールを含むことができる。 In some aspects, the first secret share of the selection result includes a result calculated by performing a bitwise XOR operation between the secret share of the selection result and the second mask received from the client device. . In some aspects, a first computing system includes a serving pool that includes a set of processors and a load balancer that balances computing load among the set of processors. A first computing system generates snapshots based on updates to the log containing data related to the completed digital component selection process, and a log processor pool that includes an additional set of processors that provide the snapshots to the serving pool. can include

本明細書で説明する主題は、以下の利点のうちの1つまたは複数を実現するように特定の実施形態で実施され得る。ユーザ情報のシェアに基づいてデジタルコンポーネントを選択するために、異なる当事者によって動作させられる2つ以上のMPCサーバによって実行されるセキュアMPCプロセスを使用することは、MPCサーバ間に不正な共謀がない場合にMPCサーバまたは別の当事者のいずれかによって平文(cleartext)でユーザ情報がアクセスされ得ないことを保証する。このような、少なくとも1つのMPCサーバが公正である限り、ユーザデータプライバシーは保持される。 The subject matter described herein may be implemented in particular embodiments to achieve one or more of the following advantages. Using a secure MPC process, run by two or more MPC servers operated by different parties, to select digital components based on sharing of user information, provided there is no unauthorized collusion between the MPC servers. user information cannot be accessed in cleartext by either the MPC server or another party. As such, user data privacy is preserved as long as at least one MPC server is fair.

デジタルコンポーネント選択プロセスにおいて、MPCサーバは、そのパーティが平文内のユーザ情報にアクセスすることを阻止しながら1つまたは複数の適格性条件を満たす適格なデジタルコンポーネントから選択することができる。適格性条件は、要因の中でも、デジタルコンポーネントの配信の方式または頻度に対する制約およびガイドラインを含むことができる。条件は、ユーザグループメンバーシップ、頻度制御、ミューティング(たとえば、ユーザブロック)、ユーザのマイクロターゲティングを阻止するためのk-匿名性、ならびに/またはペーシングおよびバジェット制約を含むことができる。 In the digital component selection process, the MPC server can select from eligible digital components that meet one or more eligibility conditions while preventing that party from accessing user information in plaintext. Eligibility conditions can include, among other factors, constraints and guidelines on the manner or frequency of distribution of the digital component. Conditions can include user group membership, frequency control, muting (eg, user blocking), k-anonymity to prevent micro-targeting of users, and/or pacing and budget constraints.

デジタルコンポーネントの選択は、典型的にはコンテンツがクライアントデバイスにおいてロードされている時間に発生するオンラインプロセスであるため、このプロセスが、たとえば数ミリ秒以内など、迅速に完了することが重要である。本明細書に記載の技法は、クライアントデバイスとMPCクラスタとの間で送信されるデータのサイズを低減することによって、MPCクラスタによって必要とされる計算リソースを低減することによって、ならびに、MPCクラスタのサーバによって実施されるラウンドトリップ通信/計算の数およびサーバ間で送信されるデータのサイズを低減することによって、デジタルコンポーネントが選択される速度を増強する。クライアントデバイスとサーバとの間のデータサイズの低減はまた、ネットワーク帯域幅消費、および、たとえばクライアントデバイスがバッテリ電力によって作動するモバイルデバイスである場合のクライアントデバイスのバッテリ消費も低減する。 Since digital component selection is an online process that typically occurs at the time the content is loaded on the client device, it is important that this process be completed quickly, eg, within milliseconds. The techniques described herein reduce the size of data transmitted between client devices and the MPC cluster, by reducing the computational resources required by the MPC cluster, and by reducing the size of the MPC cluster. It enhances the speed at which digital components are selected by reducing the number of round-trip communications/computations performed by the servers and the size of the data transmitted between servers. Reducing the data size between the client device and the server also reduces network bandwidth consumption and battery consumption of the client device, for example when the client device is a mobile device that operates on battery power.

ユーザのクライアントデバイスは、メンバーとしてのユーザを含むユーザグループを表す、たとえばカッコウフィルタまたはブルームフィルタなどの確率的データ構造を生成することができ、確率的データ構造、または確率的データ構造を表すデータをMPCクラスタのサーバに提供することができる。確率的データ構造をこのように使用すると、ユーザのグループメンバーシップへのアクセスを阻止することによってユーザプライバシーが保護され、データセキュリティが維持され、また、確率的データ構造はデータのセットのコンパクトな表現であるため、MPCクラスタに提供される情報のサイズが低減される。確率的データ構造を表すデータは、データの一部のみを受信するパーティが、他の部分を有するか、または、たとえばセキュアMPCプロセスを使用して他のMPCサーバと協働することなしにユーザのユーザグループメンバーシップにアクセスすることができないように、生成し、MPCサーバに送信することができる。データサイズの低減は、情報を送信するために消費される帯域幅の量を減らし、情報を送信する際のレイテンシを短縮し、情報を送信するために必要とされる、バッテリで実行中のデバイス(たとえば、モバイルデバイス)のための処理能力および関連するバッテリ電力の量を低減する。 A user's client device can generate a probabilistic data structure, e.g., a Cuckoo filter or a Bloom filter, representing a user group that includes the user as a member, and generates a probabilistic data structure, or data representing the probabilistic data structure. It can be provided to the servers of the MPC cluster. Using probabilistic data structures in this way protects user privacy and maintains data security by preventing access to user group memberships, and probabilistic data structures provide a compact representation of a set of data. thus reducing the size of the information provided to the MPC cluster. The data representing the probabilistic data structure is such that a party receiving only part of the data can either have the other part, or the user's It can be generated and sent to the MPC server so that user group membership cannot be accessed. Reducing the data size reduces the amount of bandwidth consumed to transmit information, reduces latency in transmitting information, and the device running on battery required to transmit information. Reduce the amount of processing power and associated battery power for (e.g., mobile devices).

MPCクラスタは、MPCクラスタがセキュアMPCプロセスを使用して選択した、選択されたデジタルコンポーネントを識別する結果の秘密シェアを送信することができる。デジタルコンポーネントのすべてまたは大きいセットに対する情報ではなく選択されたデジタルコンポーネントのみに対して結果の秘密シェアを送ることは、結果を送信および受信する際に、レイテンシおよび消費される帯域幅、処理能力、およびバッテリ電力を同様に低減する。このことはまた、情報がそれに対してクライアントデバイスに提供されるデジタルコンポーネントの数を限定することによって、デジタルコンポーネントのための選択値をMPCクラスタにサブミットするコンテンツプラットフォームの機密情報の、潜在的な漏洩を低減する。 The MPC cluster can transmit a secret share of the results identifying the selected digital components that the MPC cluster has selected using the secure MPC process. Sending secret shares of results to only selected digital components, rather than information for all or a large set of digital components, reduces latency and consumes bandwidth, processing power, and overhead in sending and receiving results. Battery power is similarly reduced. This also exposes the potential disclosure of sensitive information of content platforms that submit selection values for digital components to the MPC cluster by limiting the number of digital components for which information is provided to client devices. to reduce

コンテンツ提示におけるレイテンシを減らすことは、そのようなコンテンツが到着するのを待機している間にユーザデバイスにおいて起こるエラーの数も減らす。コンテンツは、ワイヤレスネットワークにより接続されるモバイルデバイスに数ミリ秒で提供されなければならないことが多いので、コンテンツを選択して提供する際のレイテンシを減らすことは、エラーを防ぎユーザの不満を減らすのに重要である。 Reducing latency in content presentation also reduces the number of errors that occur at user devices while waiting for such content to arrive. Since content often must be delivered in milliseconds to mobile devices connected by wireless networks, reducing latency in selecting and delivering content helps prevent errors and reduce user frustration. important to

本明細書に記載のセキュアMPC技法は、柔軟であり、種々のタイプの選択プロセス、ならびに/または、フロア、階層、および/もしくはブーストなどの追加の選択プロセス機能をサポートする。本明細書に記載のセキュアMPC技法は、ユーザプライバシーおよびデータセキュリティを依然として保持しながら、そのような機能を有効化する。階層が使用されるとき、複数の選択プロセスを、並列に実施してデジタルコンポーネントの選択におけるレイテンシを低減することができ、または、順次的に実施して不要な計算を低減することができる。デジタルコンポーネント選択プロセスの効率を改善するために使用することができるメトリックを集約して、ユーザプライバシーを保持するように、適切なパーティに報告することができる。 The secure MPC techniques described herein are flexible and support different types of selection processes and/or additional selection process features such as floors, hierarchies, and/or boosts. The secure MPC techniques described herein enable such functionality while still preserving user privacy and data security. When a hierarchy is used, multiple selection processes can be performed in parallel to reduce latency in selecting digital components, or can be performed sequentially to reduce unnecessary computations. Metrics that can be used to improve the efficiency of the digital component selection process can be aggregated and reported to appropriate parties so as to preserve user privacy.

本明細書において説明される主題の1つまたは複数の実施形態の詳細は、添付の図面および以下の説明に記載される。主題の他の特徴、態様、および利点は、説明、図面、および特許請求の範囲から明らかとなろう。 The details of one or more embodiments of the subject matter described in this specification are set forth in the accompanying drawings and the description below. Other features, aspects, and advantages of the subject matter will be apparent from the description, drawings, and claims.

MPCクラスタがクライアントデバイスへの配信用のデジタルコンポーネントを選択するためにセキュアMPCプロセスを実行する環境のブロック図である。1 is a block diagram of an environment in which an MPC cluster executes a secure MPC process to select digital components for delivery to client devices; FIG. 図1の環境内の例示的なデータフローを示す図である。2 illustrates an exemplary data flow within the environment of FIG. 1; FIG. クライアントデバイスへの配信用のデジタルコンポーネントを選択するための例示的なプロセスの図である。FIG. 4 is an illustration of an exemplary process for selecting digital components for delivery to client devices; クライアントデバイスへの配信用のデジタルコンポーネントを選択するための例示的なプロセスの図である。FIG. 4 is an illustration of an exemplary process for selecting digital components for delivery to client devices; クライアントデバイスへの配信用のデジタルコンポーネントを選択するための例示的なプロセスの図である。FIG. 4 is an illustration of an exemplary process for selecting digital components for delivery to client devices; デジタルコンポーネント選択プロセス内のデジタルコンポーネントの最高の他の選択値を決定するための例示的なプロセスの図である。FIG. 4 is an exemplary process for determining best alternative selection values for digital components within a digital component selection process; 実際のデジタルコンポーネント選択プロセスおよび反事実的デジタルコンポーネント選択プロセスの第1の選択値の間の差を決定するための例示的なプロセスの流れ図である。FIG. 5 is a flow diagram of an exemplary process for determining a difference between first selection values of an actual digital component selection process and a counterfactual digital component selection process; FIG. 秘密シェアを使用して送信されるブルームフィルタを使用して、ユーザがユーザグループのメンバーであるか否かを判定するための例示的なプロセスの流れ図である。FIG. 10 is a flow diagram of an exemplary process for determining whether a user is a member of a user group using a bloom filter sent using a secret share; FIG. 例示的MPCコンピュータシステムのブロック図である。1 is a block diagram of an exemplary MPC computer system; FIG. 例示的コンピュータシステムのブロック図である。1 is a block diagram of an exemplary computer system; FIG.

様々な図面における同じ参照番号および名称は、同様の要素を示す。 The same reference numbers and designations in the various drawings indicate similar elements.

概して、本明細書は、セキュアMPCを使用して、ユーザプライバシーを保持し、選択プロセスに関与する各パーティのデータのセキュリティを保護するように、デジタルコンポーネントを選択するためのシステムおよび技法を説明する。選択プロセスの増強は、デジタルコンポーネント選択プロセスの複数の変更をサポートし、コンテンツパブリッシャおよびコンテンツプラットフォームに、ユーザプライバシーおよびデータセキュリティを維持しながら、デジタルコンポーネントの選択を管理する柔軟性を与える。たとえば、本明細書に記載のMPCクラスタは、階層、選択値ブースト、第1の値の選択プロセス、第2の値の選択プロセス、および/または、これらの変形のうちの1つまたは複数の組合せを含むセキュアデジタルコンポーネント選択プロセスを実施することができる。本明細書に記載の技法は、デジタルコンポーネントを表示するクライアントデバイスに送信される、およびクライアントデバイスから送信されるデータのサイズを最小限に抑えながら、たとえば、要求が受信された後の数ミリ秒以内などの短い時間期間内に依然としてデジタルコンポーネントを提供しながら、そのような柔軟性、プライバシー保持、およびデータセキュリティを可能にする。 In general, this specification describes systems and techniques for selecting digital components using secure MPC to preserve user privacy and protect the data security of each party involved in the selection process. . The selection process enhancements support multiple changes to the digital component selection process, giving content publishers and content platforms the flexibility to manage digital component selection while maintaining user privacy and data security. For example, the MPC clusters described herein may include hierarchies, selection value boosting, first value selection processes, second value selection processes, and/or combinations of one or more of these variations. A secure digital component selection process can be implemented that includes: The techniques described herein minimize the size of the data sent to and from the client device that displays the digital component, while minimizing the size of the data sent, for example, a few milliseconds after the request is received. It allows for such flexibility, privacy preservation, and data security while still providing digital components within short time periods such as within.

MPCクラスタはまた、さらなるデジタルコンポーネント選択プロセスをさらに増強するために使用することができる、完了した選択プロセスに基づいて、たとえばメトリックなどの情報を生成することもできる。この情報は、MPCクラスタのサーバおよび/または他のパーティ間の不正な共謀がなければ、ユーザデータ、ならびに、パブリッシャおよび/もしくはコンテンツプラットフォームのデータにアクセスすることができないように、セキュアMPCを使用して生成することができる。情報は、受け手のみが平文の情報にアクセスすることができるように、たとえば秘密シェアなどの暗号化形態で適切なパーティに報告することができる。ユーザプライバシーを保護するために、いくつかの実施態様では、意図された受け手が、差分プライバシーノイズが加わっている、かつ/または、集約されたい形態の、平文の情報にアクセスすることができる。平文とは、計算的にタグ付けされず、特別の方法でフォーマッティングされず、またはコードで書かれないテキスト、あるいは鍵もしくは他の暗号解読デバイスまたは他の暗号解読プロセスを必要とせずに見られることまたは使用されることが可能な形態のデータであり、バイナリファイルを含む。 The MPC cluster can also generate information, eg, metrics, based on the completed selection process that can be used to further enhance the further digital component selection process. This information uses secure MPC so that user data and publisher and/or content platform data cannot be accessed without unauthorized collusion between the servers of the MPC cluster and/or other parties. can be generated by Information can be reported to the appropriate party in encrypted form, eg, secret shares, so that only the recipient can access the information in plaintext. To protect user privacy, in some implementations, the intended recipient may have access to the information in plaintext, in which differential privacy noise has been added and/or in the form desired to be aggregated. Plaintext is text that is not computationally tagged, specially formatted, or written in code, or that can be viewed without the need for a key or other decryption device or other decryption process. Or data in a form that can be used, including binary files.

本明細書において、MPCクラスタによって秘密シェアに対して実施されるいくつかの計算は、秘密シェア値の積または和であるものとして示される。これらの計算が実施される速度を増大させるために、たとえばビットANDなどのAND演算を使用して秘密シェアにおいて乗算を実施することができ、たとえばビットXOR演算などのXOR演算を使用して秘密シェアにおいて加算を実施することができる。いくつかの事例において、1つの平文整数に、Z2において0または1を表す秘密シェアが乗算されるとき(すなわち、2つのシェアの和のモジュロ2が0または1である)、乗算またはビットANDは必要ない。代わりに、各計算システムが、そのシェアを評価し、そのシェアが1である場合はその整数を返し、そのシェアが0である場合は0を返すことができる。 Some computations performed on secret shares by the MPC cluster are shown herein as being products or sums of secret share values. To increase the speed at which these calculations are performed, multiplication can be performed on the secret share using an AND operation, such as a bitwise AND, and an XOR operation, such as a bitwise XOR operation, can be used to perform the secret share Addition can be performed in In some cases, when one plaintext integer is multiplied by a secret share representing 0 or 1 in Z2 (i.e., the sum of the two shares modulo 2 is 0 or 1), the multiplication or bit-AND is unnecessary. Alternatively, each computing system can evaluate its share and return its integer if its share is 1 and 0 if its share is 0.

図1は、MPCクラスタ130がクライアントデバイス110への配信用のデジタルコンポーネントを選択するためにセキュアMPCプロセスを実行する環境100のブロック図である。MPCクラスタ130はまた、完了したデジタルコンポーネント選択プロセスの情報も生成し、この情報を適切なパーティに提供する。 FIG. 1 is a block diagram of an environment 100 in which an MPC cluster 130 performs a secure MPC process to select digital components for delivery to client devices 110. As shown in FIG. The MPC cluster 130 also generates information of the completed digital component selection process and provides this information to the appropriate parties.

例示的な環境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を含むことができる。 Exemplary environment 100 includes a data communication network 105 such as a local area network (LAN), wide area network (WAN), the Internet, mobile networks, or combinations thereof. The network 105 includes client devices 110, secure MPC clusters 130, publishers 140, websites 142, and content platforms such as supply-side platforms (SSPs) 170 and demand-side platforms (DSPs). Connect 150. Exemplary environment 100 can include many different client devices 110 , secure MPC clusters 130 , publishers 140 , websites 142 , DSPs 150 and SSPs 170 .

ウェブサイト142は、1つまたは複数の電子リソース145を含む。リソース145は、ドメイン名に関連付けられ、1つまたは複数のサーバによってホストされ得る。例示的ウェブサイトは、テキスト、画像、マルチメディアコンテンツ、およびスクリプトなどのプログラミング要素を含み得る、ハイパーテキストマークアップ言語(HTML)でフォーマットされたウェブページの集合である。各ウェブサイト142は、ウェブサイト142を制御、管理、および/または所有するエンティティであるコンテンツパブリッシャ140によって維持される。 Website 142 includes one or more electronic resources 145 . A resource 145 may be associated with a domain name and hosted by one or more servers. An exemplary website is a collection of web pages formatted in Hypertext Markup Language (HTML) that can include programming elements such as text, images, multimedia content, and scripts. Each website 142 is maintained by a content publisher 140 , an entity that controls, manages and/or owns website 142 .

リソース145は、パブリッシャ140によってネットワーク105を介して提供することができ、リソースアドレスと関連付けることができる任意のデータである。リソースには、ほんのいくつかの例を挙げれば、HTMLページ、ワードプロセッシングドキュメント、およびポータブルドキュメントフォーマット(PDF)ドキュメント、画像、ビデオ、およびフィードソースが含まれる。リソース145は、単語、語句、写真などのようなコンテンツを含むことができ、埋め込まれた情報(たとえばメタデータ情報およびハイパーリンク)および/またはたとえばスクリプトなどの埋め込まれた命令を含んでもよい。 Resource 145 is any data that can be provided over network 105 by publisher 140 and that can be associated with a resource address. Resources include HTML pages, word processing documents, and Portable Document Format (PDF) documents, images, videos, and feed sources, just to name a few. Resources 145 can include content such as words, phrases, pictures, etc., and may include embedded information (eg, metadata information and hyperlinks) and/or embedded instructions such as, for example, scripts.

クライアントデバイス110は、ネットワーク105を介して通信することが可能な電子デバイスである。例示的なクライアントデバイス110は、パーソナルコンピュータ、モバイル通信デバイス、たとえば、スマートフォン、およびネットワーク105を介してデータを送ることおよび受信することができる他のデバイスを含む。クライアントデバイス110はまた、マイクロフォンを通じてオーディオ入力を受け入れ、かつスピーカを通じてオーディオ出力を出力する、デジタルアシスタントデバイスを含むことができる。デジタルアシスタントが、オーディオ入力を受け入れるためにマイクロフォンをアクティブ化する「ホットワード」または「ホットフレーズ」を検出すると、デジタルアシスタントは、(たとえば、オーディオ入力を受け入れる準備ができている)聴取モードに入ることができる。デジタルアシスタントデバイスはまた、画像をキャプチャするとともに情報を視覚的に提示するためのカメラおよび/またはディスプレイを含むことができる。デジタルアシスタントは、ウェアラブルデバイス(たとえば、時計または眼鏡)、スマートフォン、スピーカデバイス、タブレットデバイス、または別のハードウェアデバイスを含む、異なる形態のハードウェアデバイスの中に実装され得る。クライアントデバイス110はまた、デジタルメディアデバイス、たとえば、テレビにビデオをストリーミングするためにテレビまたは他のディスプレイにプラグインするストリーミングデバイス、ゲームシステム、または仮想現実システムも含むことができる。 Client device 110 is an electronic device capable of communicating over network 105 . Exemplary client devices 110 include personal computers, mobile communication devices such as smart phones, and other devices capable of sending and receiving data over network 105 . Client device 110 may also include a digital assistant device that accepts audio input through a microphone and outputs audio output through speakers. When the digital assistant detects a "hot word" or "hot phrase" that activates the microphone to accept audio input, the digital assistant enters listening mode (e.g., ready to accept audio input). can be done. Digital assistant devices can also include cameras and/or displays for capturing images and visually presenting information. Digital assistants may be implemented in different forms of hardware devices, including wearable devices (eg, watches or glasses), smartphones, speaker devices, tablet devices, or other hardware devices. Client devices 110 may also include digital media devices, such as streaming devices that plug into a television or other display to stream video to the television, gaming systems, or virtual reality systems.

クライアントデバイス110は、通常、ネットワーク105を介してデータを送ることおよび受信することを容易にするために、ウェブブラウザおよび/またはネイティブアプリケーションなどのアプリケーション112を含む。ネイティブアプリケーションは、特定のプラットフォームまたは特定のデバイスのために、たとえば、特定のオペレーティングシステムを有するモバイルデバイスのために開発されたアプリケーションである。パブリッシャ140は、ネイティブアプリケーションを開発することができ、ネイティブアプリケーションをクライアントデバイス110に提供すること、たとえば、ダウンロードのために利用可能にすることができる。ウェブブラウザは、たとえば、クライアントデバイス110のユーザが、ウェブブラウザのアドレスバーの中にリソース145に対するリソースアドレスを入力すること、またはリソースアドレスを参照するリンクを選択することに応答して、パブリッシャ140のウェブサイト142をホストするウェブサーバにリソース145を要求することができる。同様に、ネイティブアプリケーションは、パブリッシャのリモートサーバにアプリケーションコンテンツを要求することができる。 Client device 110 typically includes an application 112 such as a web browser and/or native application to facilitate sending and receiving data over network 105 . A native application is an application developed for a specific platform or a specific device, for example a mobile device with a specific operating system. A publisher 140 can develop native applications and provide them to client devices 110, eg, make them available for download. The web browser, for example, responds to a user of client device 110 entering a resource address for resource 145 into the web browser's address bar or selecting a link that references the resource address. Resources 145 can be requested from a web server that hosts website 142 . Similarly, native applications can request application content from the publisher's remote server.

いくつかのリソース、アプリケーションページ、または他のアプリケーションコンテンツは、リソース145またはアプリケーションページとともにデジタルコンポーネントを表示するためのデジタルコンポーネントスロットを含むことができる。本明細書全体にわたって使用される、「デジタルコンポーネント」という語句は、デジタルコンテンツまたはデジタル情報の別個の単位(たとえば、ビデオクリップ、オーディオクリップ、マルチメディアクリップ、画像、テキスト、またはコンテンツの別の単位)を指す。デジタルコンポーネントは、単一のファイルとして、またはファイルの集合体として物理メモリデバイスに電子的に記憶されてもよく、デジタルコンポーネントは、ビデオファイル、オーディオファイル、マルチメディアファイル、画像ファイル、またはテキストファイルの形態をとり、広告情報を含んでもよく、したがって、広告は、デジタルコンポーネントの1つのタイプである。たとえば、デジタルコンポーネントは、アプリケーション112によって表示されるウェブページ、アプリケーションコンテンツ(たとえばアプリケーションページ)、または他のリソースのコンテンツを補足することが意図されるコンテンツであってよい。より詳細には、デジタルコンポーネントは、リソースコンテンツに関連するデジタルコンテンツを含んでもよく、たとえば、デジタルコンポーネントは、ウェブページコンテンツと同じトピック、または関連するトピックに関連してもよい。したがって、デジタルコンポーネントのプロビジョニングは、ウェブページまたはアプリケーションコンテンツを補足し、一般に強化することができる。 Some resources, application pages, or other application content may include digital component slots for displaying digital components with the resource 145 or application page. As used throughout this specification, the phrase "digital component" refers to any discrete unit of digital content or digital information (e.g., video clip, audio clip, multimedia clip, image, text, or another unit of content). point to A digital component may be stored electronically in a physical memory device as a single file or as a collection of files; the digital component may be a video file, audio file, multimedia file, image file, or text file. It may take a form and contain advertising information, and thus an advertisement is a type of digital component. For example, a digital component may be a web page displayed by application 112, application content (eg, an application page), or content intended to supplement the content of other resources. More specifically, the digital component may include digital content related to the resource content, eg, the digital component may relate to the same topic as, or a related topic to, the web page content. Therefore, the provisioning of digital components can complement and generally enhance web page or application content.

アプリケーション112が、1つまたは複数のデジタルコンポーネントスロットを含むリソース(またはアプリケーションコンテンツ)をロードするとき、アプリケーション112は、スロットごとにデジタルコンポーネントを要求することができる。いくつかの実装形態では、デジタルコンポーネントスロットは、アプリケーション112によって処理されると、アプリケーション112にクライアントデバイス110のユーザに表示するためのデジタルコンポーネントを要求させるコード、たとえば、1つまたは複数のスクリプトを含み得る。以下で説明するように、アプリケーション112は、MPCクラスタ130および/または1つもしくは複数のSSP170にデジタルコンポーネントを要求することができる。 When application 112 loads a resource (or application content) that includes one or more digital component slots, application 112 can request a digital component for each slot. In some implementations, a digital component slot contains code, e.g., one or more scripts, that, when processed by application 112, causes application 112 to request a digital component for display to a user of client device 110. obtain. As described below, application 112 may request digital components from MPC cluster 130 and/or one or more SSPs 170 .

一部のパブリッシャ140は、SSP170を使用して、そのリソース145および/またはアプリケーション112のデジタルコンポーネントスロットに対するデジタルコンポーネントを取得するプロセスを管理する。SSP170は、リソースおよび/またはアプリケーションに対するデジタルコンポーネントを取得するプロセスを自動化するハードウェアおよび/またはソフトウェアにおいて実装される技術プラットフォームである。各パブリッシャ140は、対応するSSP170または複数のSSP170を有することができる。いくつかのパブリッシャ140が、同じSSP170を使用してよい。 Some publishers 140 use SSPs 170 to manage the process of obtaining digital components for their resources 145 and/or application 112 digital component slots. SSP 170 is a technology platform implemented in hardware and/or software that automates the process of obtaining digital components for resources and/or applications. Each publisher 140 may have a corresponding SSP 170 or multiple SSPs 170 . Several publishers 140 may use the same SSP 170.

デジタルコンポーネントプロバイダ160は、パブリッシャのリソース145およびアプリケーション112のデジタルコンポーネントスロットに表示されるデジタルコンポーネントを作成(またはそうでなければパブリッシュ)することができる。たとえば、デジタルコンポーネントプロバイダ160は、デジタルコンポーネントプロバイダ160に関係するコンテンツを含むデジタルコンポーネントを作成することができる。特定の例において、製品製造者のデジタルコンポーネントは、製品に関連するコンテンツを含むことができる。 Digital component providers 160 can create (or otherwise publish) digital components that appear in publisher resources 145 and digital component slots in applications 112 . For example, digital component provider 160 may create a digital component that includes content related to digital component provider 160 . In certain examples, a product manufacturer's digital component may include content related to the product.

デジタルコンポーネントプロバイダ160は、DSP150を使用して、デジタルコンポーネントスロット内に表示するために、そのデジタルコンポーネントのプロビジョニングを管理することができる。DSP150は、リソースおよび/またはアプリケーションで表示するためのデジタルコンポーネントを配信するプロセスを自動化するハードウェアおよび/またはソフトウェアにおいて実装される技術プラットフォームである。DSP150は、デジタルコンポーネントプロバイダ160に代わって複数のSSP170と対話して、複数の異なるパブリッシャ140のリソース145および/またはアプリケーション112で表示するためのデジタルコンポーネントを提供することができる。一般に、DSP150は、デジタルコンポーネントの要求を(たとえば、SSP170から)受信し、要求に基づいて1つまたは複数のデジタルコンポーネントプロバイダ160によって作成された1つまたは複数のデジタルコンポーネントに対する選択値を生成(または選択)し、デジタルコンポーネント(たとえば、デジタルコンポーネント自体またはデジタルコンポーネントがダウンロードされることを可能にするコード)および選択パラメータに関連するデータをSSP170に提供することができる。選択値は、デジタルコンポーネントプロバイダ160が、デジタルコンポーネントの表示またはそれとのユーザ対話のために提供する意思がある量を示すことができる。次いで、SSP170は、クライアントデバイス110での表示のためのデジタルコンポーネントを選択し、たとえば、デジタルコンポーネントまたはデジタルコンポーネントのダウンロードを可能にするコードを提供することによって、クライアントデバイス110にデジタルコンポーネントを表示させるデータをクライアントデバイス110に提供することができる。下記により詳細に説明するように、MPCクラスタ130は、クライアントデバイス110がユーザプライバシーを保持するように表示するためのデジタルコンポーネントを選択することができる。 Digital component provider 160 can use DSP 150 to manage the provisioning of its digital components for display in digital component slots. DSP 150 is a technology platform implemented in hardware and/or software that automates the process of delivering digital components for display in resources and/or applications. A DSP 150 may interact with multiple SSPs 170 on behalf of a digital component provider 160 to provide digital components for display in multiple different publisher's 140 resources 145 and/or applications 112 . In general, DSP 150 receives requests for digital components (e.g., from SSP 170) and generates selection values for one or more digital components produced by one or more digital component providers 160 based on the requests (or selection), and data associated with the digital component (eg, the digital component itself or code that enables the digital component to be downloaded) and selection parameters can be provided to SSP 170 . A selection value may indicate an amount that the digital component provider 160 is willing to provide for display or user interaction with the digital component. The SSP 170 then selects the digital components for display on the client device 110 and provides data that causes the client device 110 to display the digital components, e.g., by providing the digital components or code that enables download of the digital components. can be provided to the client device 110. As described in more detail below, the MPC cluster 130 can select digital components for display by the client device 110 to preserve user privacy.

場合によっては、ウェブページ、アプリケーションページ、または、以前にユーザが訪れた、および/もしくはユーザと対話した他の電子リソースに関連する、デジタルコンポーネントをユーザが受信することが有益である。そのようなデジタルコンポーネントをユーザに配信するために、ユーザは、ユーザグループ、たとえば、同じまたは類似するトピックに関心のあるユーザのユーザ関心グループ、類似するユーザのコホート、または類似するユーザデータに関わる他のグループタイプに割り当てられ得る。ユーザが特定のリソースを訪問するとき、またはリソースにおいて特定の行動を実行する(たとえば、ウェブページに表示された特定のアイテムと対話する、またはアイテムを仮想カートに追加する)ときに、ユーザがユーザグループに割り当てられ得る。ユーザグループは、デジタルコンポーネントプロバイダ160によって生成および更新され得る。すなわち、各デジタルコンポーネントプロバイダ160は、ユーザがデジタルコンポーネントプロバイダ160の電子リソースを訪問すると、デジタルコンポーネントプロバイダ160のユーザグループにユーザを割り当てることができる。ユーザグループはまた、コンテンツプラットフォームによって、たとえば、DSP150および/またはSSP170によって、作成および/または更新され得る。 In some cases, it is beneficial for a user to receive digital components related to web pages, application pages, or other electronic resources that the user has previously visited and/or interacted with. In order to deliver such digital components to users, users may collect data from user groups, e.g., user interest groups of users interested in the same or similar topics, cohorts of similar users, or others involved in similar user data. group type. When a user visits a particular resource or performs a particular action on a resource (for example, interacting with a particular item displayed on a web page or adding an item to a virtual cart), the user can be assigned to groups. User groups may be created and updated by digital component providers 160 . That is, each digital component provider 160 can assign a user to a group of users of the digital component provider 160 when the user visits electronic resources of the digital component provider 160 . User groups may also be created and/or updated by the content platform, eg, by DSP 150 and/or SSP 170 .

ユーザプライバシーを保護するために、ユーザのグループメンバーシップが、デジタルコンポーネントプロバイダ、コンテンツプラットフォーム、または他の当事者によるのではなく、たとえば、アプリケーション112、クライアントデバイス110のオペレーティングシステム、または別の信頼されるプログラムのうちの1つによって、ユーザのクライアントデバイス110において維持され得る。特定の例では、信頼されるプログラム(たとえば、ウェブブラウザまたはオペレーティングシステム)は、ウェブブラウザまたは別のアプリケーションを使用するユーザに対して(たとえば、ブラウザ、アプリケーション、またはクライアントデバイス110にログインされたユーザに対して)、ユーザグループ識別子のリスト(「ユーザグループリスト」)を維持することができる。ユーザグループリストは、メンバーとしてユーザを含むユーザグループごとにユーザグループ識別子を含むことができる。ユーザグループを作成するデジタルコンポーネントプロバイダ160またはコンテンツプラットフォームは、それらのユーザグループに対するユーザグループ識別子を指定することができる。ユーザグループに対するユーザグループ識別子は、グループを記述するもの(たとえば、ガーデニンググループ)またはグループを表すコード(たとえば、記述的ではない英数字シーケンス)であり得る。ユーザに対するユーザグループリストは、クライアントデバイス110においてセキュアなストレージの中に記憶され得、かつ/または他人がリストにアクセスすることを阻止するために、記憶されるときに暗号化され得る。 To protect user privacy, a user's group membership is determined by, for example, the application 112, the operating system of the client device 110, or another trusted program, rather than by a digital component provider, content platform, or other party. may be maintained at the user's client device 110 by one of the In certain instances, a trusted program (e.g., a web browser or an operating system) may access a user using a web browser or another application (e.g., a user logged into the browser, application, or client device 110). ), a list of user group identifiers (a "user group list") can be maintained. The user group list may contain a user group identifier for each user group that has the user as a member. Digital component providers 160 or content platforms that create user groups can specify user group identifiers for those user groups. A user group identifier for a user group can be something that describes the group (eg, a gardening group) or a code that represents the group (eg, a non-descriptive alphanumeric sequence). User group lists for users may be stored in secure storage at client device 110 and/or may be encrypted when stored to prevent others from accessing the lists.

アプリケーション112がデジタルコンポーネントプロバイダ160に関するリソース(たとえばウェブページ)、アプリケーションコンテンツ、またはデジタルコンポーネントを表示するとき、リソース、アプリケーションコンテンツ、またはデジタルコンポーネントは、アプリケーション112が1つまたは複数のユーザグループ識別子をユーザグループリストに追加することを要求することができる。それに応答して、アプリケーション112は、ユーザグループリストに1つまたは複数のユーザグループ識別子を追加することができ、ユーザグループリストをセキュアに記憶することができる。たとえば、ユーザが特定のアイテムに関するより多くの情報を閲覧することを選択するウェブページは、ユーザを、その特定のアイテムに関連するユーザグループに追加することができる。 When application 112 displays a resource (e.g., web page), application content, or digital component on digital component provider 160, the resource, application content, or digital component is displayed by application 112 using one or more user group identifiers as user group identifiers. You can request to be added to the list. In response, application 112 can add one or more user group identifiers to the user group list and securely store the user group list. For example, a web page where a user chooses to view more information about a particular item may add the user to a user group associated with that particular item.

いくつかの実施態様において、MPCクラスタ130は、ユーザの関心を引くことがあるか、または別の様式でユーザ/ユーザデバイスにとって有益であり得る、デジタルコンポーネントを選択するために、ユーザのユーザグループメンバーシップを使用することができる。たとえば、そのようなデジタルコンポーネントまたは他のコンテンツは、ユーザエクスペリエンスを改善するか、ユーザデバイスの実行を改善するか、またはいくつかの他のやり方でユーザもしくはクライアントデバイス110の利益になる、データを含んでよい。しかしながら、MPCクラスタ130の計算システムMPC1およびMPC2がユーザに対するユーザグループ識別子に平文でアクセスすることを阻止するやり方で、ユーザのユーザグループリストのユーザグループ識別子が、デジタルコンポーネントを選択するために提供および使用され得、それによって、デジタルコンポーネントを選択するためにユーザグループメンバーシップデータを使用するときにユーザプライバシーを保存する。MPCクラスタ130はまた、下記により詳細に説明するように、他の条件を使用してデジタルコンポーネントを選択することもできる。 In some implementations, the MPC cluster 130 uses the user's user group members to select digital components that may be of interest to the user or otherwise beneficial to the user/user device. Ships can be used. For example, such digital components or other content may include data that improves the user experience, improves the performance of the user device, or benefits the user or client device 110 in some other way. OK. However, in a manner that prevents computing systems MPC1 and MPC2 of MPC cluster 130 from accessing the user group identifier for the user in plaintext, the user group identifier of the user's user group list is provided and used to select the digital component. can be used, thereby preserving user privacy when using user group membership data to select digital components. MPC cluster 130 may also select digital components using other criteria, as described in more detail below.

セキュアMPCクラスタ130は、ユーザのグループメンバーシップに基づいて、ただし、グループメンバーシップ情報もしくは他のユーザ情報、またはそのようなユーザ情報から導出される信号に平文でアクセスすることなく、ユーザのクライアントデバイスへの配信用のデジタルコンポーネントを選択するためにセキュアMPCプロセスを実行する、2つの計算システムMPC1およびMPC2を含む。例示的なMPCクラスタ130は2つの計算システムを含むが、MPCクラスタ130が2つ以上の計算システムを含む限り、もっと多くの計算システムも使用され得る。たとえば、MPCクラスタ130は、3つの計算システム、4つの計算システム、または別の適切な個数の計算システムを含むことができる。MPCクラスタ130の中でもっと多くの計算システムを使用することは、より多くのセキュリティをもたらすことができるが、MPCプロセスの複雑度を増大させることもある。各計算システムは、サーバ、または、他の適切なタイプのコンピュータとすることができる。MPC計算システムの例示的なアーキテクチャは、図9に示されている。 The secure MPC cluster 130 is based on the user's group membership, but without cleartext access to group membership information or other user information, or signals derived from such user information, to the user's client device. It includes two computational systems MPC1 and MPC2 that perform a secure MPC process to select digital components for delivery to. Although the exemplary MPC cluster 130 includes two computing systems, more computing systems can be used as long as the MPC cluster 130 includes two or more computing systems. For example, MPC cluster 130 may include three computing systems, four computing systems, or another suitable number of computing systems. Using more computing systems in the MPC cluster 130 can provide more security, but can also increase the complexity of the MPC process. Each computing system may be a server or other suitable type of computer. An exemplary architecture of the MPC computing system is shown in FIG.

計算システムMPC1およびMPC2は、異なるエンティティによって動作させられ得る。このように、各エンティティは、ユーザのグループメンバーシップ、または他のユーザ情報、またはそのようなユーザ情報から導出される信号に、平文でアクセスすることができない場合がある。たとえば、計算システムMPC1またはMPC2のうちの一方は、ユーザ、パブリッシャ140、DSP150、SSP170、およびデジタルコンポーネントプロバイダ160とは異なる、信頼される当事者によって動作させられ得る。たとえば、業界グループ、政府グループ、またはブラウザ開発者が、計算システムMPC1およびMPC2のうちの一方を保守し動作させることができる。他の計算システムは、信頼される異なる当事者が各計算システムMPC1およびMPC2を動作させるように、これらのグループのうちの異なるグループによって動作させられ得る。有利には、異なる計算システムMPC1およびMPC2を動作させる異なる当事者は、ユーザプライバシーを危険にさらすために共謀すべき動機を有し得ない。いくつかの実装形態では、計算システムMPC1およびMPC2は、アーキテクチャ的に分離され、本明細書で説明するセキュアMPCプロセスを実行する外側で互いに通信しないように監視される。 Computing systems MPC1 and MPC2 may be operated by different entities. As such, each entity may not have plaintext access to a user's group memberships, or other user information, or signals derived from such user information. For example, one of computing systems MPC1 or MPC2 may be operated by a trusted party different from the user, publisher 140, DSP 150, SSP 170, and digital component provider 160. For example, an industry group, a government group, or a browser developer can maintain and operate one of the computing systems MPC1 and MPC2. Other computing systems may be operated by different ones of these groups, such as different trusted parties operating each computing system MPC1 and MPC2. Advantageously, different parties operating different computing systems MPC1 and MPC2 may have no motive to collude to compromise user privacy. In some implementations, computing systems MPC1 and MPC2 are architecturally separated and monitored from communicating with each other outside of executing the secure MPC processes described herein.

各計算システムMPC1およびMPC2は、デジタルコンポーネント(たとえば、デジタルコンポーネントの創作物)、デジタルコンポーネントの選択値、およびデジタルコンポーネントの他の情報を記憶することができる。たとえば、計算システムMPC1およびMPC2は、以前のデジタルコンポーネント選択プロセスの一部としてSSP170および/またはDSP150から以前に受信されているか、または、たとえば、デジタルコンポーネント選択プロセスにおいて使用するために事前に提供されているなど、他の様態で計算システムMPC1およびMPC2に提供されている選択値をキャッシュすることができる。このようにMPCクラスタ130は、選択値を使用して、クライアントデバイス110から受信される将来のデジタルコンポーネント要求に応答してクライアントデバイス110に配信するためのデジタルコンポーネントを選択することができる。選択値および他の情報がMPCクラスタ130によってデジタルコンポーネント選択プロセスのために記憶されるデジタルコンポーネントが、本明細書において記憶されるデジタルコンポーネントとして参照され得る。しかしながら、デジタルコンポーネント自体が、必ずしもMPCクラスタ130によって記憶されるとは限らない。代わりに、MPCクラスタ130は、各記憶されるデジタルコンポーネントについて、デジタルコンポーネントをそこからダウンロードすることができるネットワークロケーションを参照する、たとえばコードなどのデータを記憶することができる。いくつかの実施態様において、デジタルコンポーネント自体が記憶され、MPCクラスタ130によってアプリケーション112に直接的に戻される。そのような実施態様は、アプリケーション112が、デバイスのバッテリおよび帯域幅を消費し得、デジタルコンポーネント自体をホストするサーバがデバイスを追跡するための追加の信号を漏洩し得る追加の要求において、デジタルコンポーネントおよび/またはデジタルコンポーネントの他の情報をフェッチする必要性を低減する。 Each computing system MPC1 and MPC2 can store digital components (eg, creations of the digital components), selected values for the digital components, and other information for the digital components. For example, computational systems MPC1 and MPC2 have previously been received from SSP170 and/or DSP150 as part of a previous digital component selection process, or have been provided in advance for use in, for example, a digital component selection process. Selection values that have been provided to computing systems MPC1 and MPC2 in other manners can be cached. Thus, MPC cluster 130 can use the selection values to select digital components for delivery to client device 110 in response to future digital component requests received from client device 110 . Digital components whose selection values and other information are stored by the MPC cluster 130 for the digital component selection process may be referred to herein as stored digital components. However, the digital components themselves are not necessarily stored by MPC cluster 130 . Alternatively, the MPC cluster 130 can store data, eg, code, for each stored digital component that references a network location from which the digital component can be downloaded. In some embodiments, the digital component itself is stored and returned directly to application 112 by MPC cluster 130 . Such an implementation may cause the application 112 to consume the device's battery and bandwidth, and the server hosting the digital component itself may leak additional signals to track the device. and/or reduce the need to fetch other information for digital components.

各記憶されるデジタルコンポーネントについて、各計算システムMPC1およびMPC2は、選択値、または、デジタルコンポーネントの選択値を決定するために計算システムMPC1およびMPC2によって使用することができる値のベクトルを記憶することができる。各計算システムMPC1およびMPC2はまた、各デジタルコンポーネントについて、デジタルコンポーネントが所与のデジタルコンポーネント選択プロセスの適格な候補となるために満たされなければならない条件を規定する条件データも記憶することができる。記憶されるデジタルコンポーネントは、ゼロ以上の対応する条件を有し得る。 For each stored digital component, each computing system MPC1 and MPC2 can store a selection value or vector of values that can be used by computing systems MPC1 and MPC2 to determine the selection value of the digital component. can. Each computing system MPC1 and MPC2 may also store, for each digital component, conditional data specifying conditions that must be met for the digital component to be a qualified candidate for a given digital component selection process. A stored digital component may have zero or more corresponding terms.

1つの例示的な条件は、選択されるデジタルコンポーネントが提供されるユーザが、記憶されるデジタルコンポーネントに対応するユーザグループのメンバーであることである。この条件は、ユーザグループメンバーシップ条件として参照することができる。この例において、計算システムMPC1およびMPC2は、記憶されるデジタルコンポーネントについて、当該デジタルコンポーネントに対応する1つまたは複数のユーザグループ識別子から成るセットを記憶することができる。これらのユーザグループ識別子は、記憶されるデジタルコンポーネントが提供され得るユーザグループを識別する。すなわち、記憶されるデジタルコンポーネントは、記憶されるデジタルコンポーネントの1つまたは複数のユーザグループ識別子から成るセットによって識別されるユーザグループのうちの少なくとも1つのメンバーであるユーザに提供するためのデジタルコンポーネントを選択するために実施されるデジタルコンポーネント選択プロセスの候補にすぎない。 One exemplary condition is that the user to whom the selected digital component is provided is a member of the user group corresponding to the stored digital component. This condition can be referred to as a user group membership condition. In this example, computing systems MPC1 and MPC2 may store, for stored digital components, a set of one or more user group identifiers corresponding to the digital components. These user group identifiers identify user groups to which the stored digital components may be provided. That is, the stored digital component provides the digital component for provision to users who are members of at least one of the user groups identified by the set of one or more user group identifiers of the stored digital component. It is merely a candidate for the digital component selection process that is performed to select.

記憶されるデジタルコンポーネントの別の例示的な条件は、デジタルコンポーネントまたは特定のカテゴリのデジタルコンポーネントが、所与の持続時間にわたってある最大回数だけしか同じユーザに提供され得ないことを示すフリークエンシーキャップ条件である。デジタルコンポーネントに対する別の例示的な条件は、デジタルコンポーネントがユーザによって、たとえばミュートされたなど、ブロックされていることを示すブロックデジタルコンポーネント条件である。これらの例示的な条件について、計算システムMPC1およびMPC2は、ストアから、複数のユーザの各々について、ユーザに提供することができないデジタルコンポーネントを表す、たとえばカッコウフィルタまたはブルームフィルタなどの確率的データ構造を受信することができる。たとえば、確率的データ構造は、ユーザによって直接的に、または、デジタルコンポーネントがユーザに表示される頻度が所与の持続時間中に超過されていることに起因してブロックされているデジタルコンポーネントのユニバーサル識別子を表すことができる。 Another exemplary condition for digital components to be stored is a frequency cap condition that indicates that a digital component or a particular category of digital components can only be provided to the same user a certain maximum number of times over a given duration. be. Another exemplary condition for a digital component is a block digital component condition that indicates that the digital component has been blocked, eg, muted, by the user. For these exemplary conditions, computing systems MPC1 and MPC2, from a store, for each of a plurality of users, create probabilistic data structures, such as Cuckoo filters or Bloom filters, representing digital components that cannot be provided to users. can receive. For example, a probabilistic data structure can be a universal data structure for digital components that are blocked either directly by the user or because the frequency with which the digital component is displayed to the user is exceeded during a given duration. It can represent an identifier.

計算システムMPC1およびMPC2は、ユーザのクライアントデバイス110から、たとえば、計算システムMPC1およびMPC2のいずれかが平文において識別子にアクセスすることを阻止する暗号化形態の確率的データ構造を受信することができる。たとえば、ユーザのクライアントデバイス110上で実行中のアプリケーション112は、フリークエンシーキャップに起因してブロックされているかまたはユーザによってブロックされているブロックデジタルコンポーネントの識別子を表すブルームフィルタを生成することができる。アプリケーション112は、次いで、計算システムMPC1およびMPC2が、協働して、所与のデジタルコンポーネントがそのユーザについてブロックされているか否かを判定するためにセキュアMPCプロセスを使用してブルームフィルタに問い合わせることを可能にするデータを、各計算システムMPC1およびMPC2に提供することができる。計算システムMPC1およびMPC2は、このセキュアMPCプロセスを使用して、ブロックデジタルコンポーネント条件の秘密シェアを計算する。ブルームフィルタを生成し、これに問い合わせるための例示的なプロセスについて、図8を参照しながら説明する。 Computing systems MPC1 and MPC2 may receive from a user's client device 110, for example, a probabilistic data structure in encrypted form that prevents either of computing systems MPC1 and MPC2 from accessing the identifier in cleartext. For example, an application 112 running on a user's client device 110 can generate a bloom filter representing identifiers of blocked digital components that are blocked due to frequency capping or blocked by the user. Application 112 then causes computing systems MPC1 and MPC2 to jointly interrogate Bloom filters using a secure MPC process to determine whether a given digital component is blocked for that user. can be provided to each computing system MPC1 and MPC2. Calculation systems MPC1 and MPC2 use this secure MPC process to calculate the secret share of the block digital component terms. An exemplary process for creating and querying Bloom filters is described with reference to FIG.

いくつかの実施態様において、ブロックデジタルコンポーネントの識別子は、ユーザグループ識別子と同じ確率的データ構造内に含めることができ、異なるハッシュ関数を使用して問い合わせることができる。しかしながら、ブロックデジタルコンポーネントの目標偽陽性率は、ユーザグループ識別子の偽陽性率よりも低くすることができる。したがって、ユーザグループ識別子よりも少ないハッシュ関数を使用して、ブロックデジタルコンポーネントのブルームフィルタを生成し、これに問い合わせることができる。ブロックデジタルコンポーネントのブルームフィルタのデータサイズを低減するために、ブロックデジタルコンポーネントとは異なるブルームフィルタによって、ユーザグループ識別子を表すことができる。これによって、ネットワークを介したブルームフィルタの送信におけるレイテンシが低減し、ブルームフィルタの送信における消費帯域幅が低減し、ブルームフィルタを送信するためのバッテリ電力使用量が低減する。 In some implementations, block digital component identifiers can be contained within the same probabilistic data structure as user group identifiers and can be queried using different hash functions. However, the target false positive rate for block digital components can be lower than the false positive rate for user group identifiers. Thus, a Bloom filter of block digital components can be generated and queried using fewer hash functions than user group identifiers. To reduce the data size of the Bloom filter of the block digital component, the user group identifier can be represented by a different Bloom filter than the block digital component. This reduces latency in transmitting Bloom filters over the network, reduces bandwidth consumption in transmitting Bloom filters, and reduces battery power usage for transmitting Bloom filters.

記憶されるデジタルコンポーネントに対する別の例示的な条件は、ある持続時間にわたるデジタルコンポーネントの配信をペース調整するペーシング条件である。計算システムMPC1およびMPC2は、デジタルコンポーネントがある持続時間にわたって提供され得る総回数および/またはその持続時間にわたるデジタルコンポーネントの最大バジェットを示すデータを記憶することができる。計算システムMPC1およびMPC2は、この情報を使用して、デジタルコンポーネントがこの条件に基づいてデジタルコンポーネント選択プロセスの候補になり得る頻度をペース調整することができる(たとえば、デジタルコンポーネントが候補になるには、デジタルコンポーネントに対するすべての条件が満たされる必要がある)。いくつかの実施態様において、計算システムMPC1およびMPC2は、秘密シェアを使用して、ペーシング条件を有する記憶されるデジタルコンポーネントをペース調整する、たとえば比例積分微分(PID)コントローラなどのフィードバックコントローラを実装することができる。 Another exemplary condition for a stored digital component is a pacing condition that paces the delivery of the digital component over a period of time. Computing systems MPC1 and MPC2 may store data indicating the total number of times a digital component may be provided over a duration and/or the maximum budget for the digital component over that duration. Computing systems MPC1 and MPC2 can use this information to pace how often a digital component can be a candidate for the digital component selection process based on this condition (e.g., digital all conditions for the component must be met). In some embodiments, computing systems MPC1 and MPC2 implement feedback controllers, such as proportional-integral-derivative (PID) controllers, that use secret shares to pace stored digital components with pacing conditions. be able to.

この例において、計算システムMPC1およびMPC2は、デジタルコンポーネントに対するPIDコントローラの設定点を記憶することができ、デジタルコンポーネントに対するPIDコントローラの測定変数を維持することができる。概して、PIDコントローラは、目標設定点と測定変数との間の差である誤差値を使用して、測定変数を設定点に向けて駆動する出力を決定するフィードバックコントローラである。クライアントデバイスへのデジタルコンポーネントの配信のペース調整の文脈において、キャンペーンに関する設定点は、インプレッション率、インタラクション率、コンバージョン率、および/またはリソース枯渇率(たとえば、バジェット消費率)とすることができる。同様に、測定変数は、所与の持続時間にわたる、インプレッション率、インタラクション率、コンバージョン率、および/またはリソース枯渇率とすることができる。計算システムMPC1およびMPC2はまた、各PIDコントローラに対する調整パラメータを記憶することもできる。設定点、測定変数、および調整パラメータは、目標プライバシー/データセキュリティに応じて、秘密シェア(各計算システムMPC1およびMPC2が各パラメータの対応するシェアを記憶する)または平文において記憶することができる。 In this example, the computing systems MPC1 and MPC2 can store the setpoints of the PID controllers for the digital components and maintain the measured variables of the PID controllers for the digital components. Generally, a PID controller is a feedback controller that uses an error value, which is the difference between the target setpoint and the measured variable, to determine the output that drives the measured variable towards the setpoint. In the context of pacing the delivery of digital components to client devices, set points for campaigns can be impression rates, interaction rates, conversion rates, and/or resource depletion rates (e.g., budget consumption rates). Similarly, the measured variable can be impression rate, interaction rate, conversion rate, and/or resource depletion rate over a given duration. Computing systems MPC1 and MPC2 can also store tuning parameters for each PID controller. Setpoints, measurement variables, and tuning parameters can be stored in secret shares (each computing system MPC1 and MPC2 stores the corresponding share of each parameter) or in plaintext, depending on the target privacy/data security.

別の例示的な条件は、k-匿名性条件である。k-匿名性条件は、デジタルコンポーネントが、所与の持続時間にわたって少なくともk人のユーザへの配信に対して適格である(または選択されている)ことを要求するk-匿名性規則を含むことができる。k-匿名性の概念は、特定のユーザのためのデータが、しきい値数k人の他のユーザのデータから見分けられないことを保証する。システムは、たとえば、特定のデジタルコンポーネントが、1つまたは複数のデジタルコンポーネントを求める要求に応答してクライアントデバイス110に配信されること、および同じデジタルコンポーネントが、特定の時間期間内に、少なくともk人のユーザのセットに、または少なくともk個のアプリケーション112によって、表示されている場合があるかまたは表示されたことを保証することによって、k-匿名性規則を施行することができる。いくつかの実装形態では、デジタルコンポーネントが配信されている場合があるかまたは配信された先のk個のアプリケーション112の各々は、異なるユーザ用でなければならない。この例において、計算システムMPC1およびMPC2は、デジタルコンポーネントについて、値kを記憶し、デジタルコンポーネントが配信されている可能性があるユーザの数を維持することができる。 Another exemplary condition is the k-anonymity condition. The k-anonymity conditions include k-anonymity rules that require the digital component to be eligible (or selected) for delivery to at least k users for a given duration. can be done. The concept of k-anonymity ensures that the data for a particular user is indistinguishable from the data of a threshold number k of other users. The system may, for example, ensure that a particular digital component is delivered to a client device 110 in response to a request for one or more digital components, and that the same digital component is delivered to at least k people within a particular time period. of users, or by at least k applications 112, may or have been displayed, k-anonymity rules can be enforced. In some implementations, each of the k applications 112 to which the digital component may or have been distributed should be for a different user. In this example, computing systems MPC1 and MPC2 may store a value k for the digital component and maintain the number of users to whom the digital component may have been distributed.

デジタルコンポーネントが表示されている可能性があるユーザの数を決定することは、各実際のデジタルコンポーネント選択プロセスと並行して反事実的デジタルコンポーネント選択プロセスを実行することを含むことができる。この反事実的デジタルコンポーネント選択プロセスにおいて、すべてのデジタルコンポーネントは、それらがk-匿名性条件以外のすべての条件を満たす場合、候補になり得る。反事実的デジタルコンポーネント選択プロセスにおいて、デジタルコンポーネントが少なくともk人のユーザまたはk個のアプリケーション112に対して選択される場合デジタルコンポーネントは、k-匿名性条件がなければk人のユーザに表示されていることになる。これが発生すると、k-匿名性条件を満たすデジタルコンポーネントが(存在する場合はデジタルコンポーネントに対する他の条件が満たされていると仮定して)実際のデジタルコンポーネント選択プロセスに含まれ得、これは、k-匿名性条件を満たさないデジタルコンポーネントを含まない。 Determining the number of users for whom the digital component may have been displayed can include performing a counterfactual digital component selection process in parallel with each actual digital component selection process. In this counterfactual digital component selection process, all digital components are candidates if they satisfy all conditions except the k-anonymity condition. In the counterfactual digital component selection process, if a digital component is selected for at least k users or k applications 112, the digital component is visible to k users in the absence of k-anonymity conditions. There will be When this occurs, the digital components that satisfy the k-anonymity conditions (assuming other conditions for digital components, if any, are met) can be included in the actual digital component selection process, which is k. - does not contain digital components that do not meet the anonymity conditions;

いくつかの実施態様において、各計算システムMPC1およびMPC2は、デジタルコンポーネントおよびそれらのそれぞれの情報をコンテキスト信号のセットにマッピングするデータ構造内に、デジタルコンポーネントに関する情報を記憶する。たとえば、各デジタルコンポーネントは、コンテキスト信号のセットを含むリソースおよび/またはアプリケーションを用いた提示環境における表示に対して適格であり得る。コンテキスト信号は、たとえば、リソースのトピック、リソースに見られるキーワード、リソースのリソースロケータ、クライアントデバイス110の地理的位置、アプリケーション112の言語設定、リソースのデジタルコンポーネントスロットの数、デジタルコンポーネントスロットのタイプ、および/または、他の適切なコンテキスト信号を含むことができる。加えて、デジタルコンポーネントは、コンテキスト信号のセットごとに1つの、複数の対応する選択値を有することができる。そのようなデータ構造を使用することによって、計算システムMPC1およびMPC2が、デジタルコンポーネント選択プロセスに対して適格であるデジタルコンポーネントを識別することが可能になる。計算システムMPC1およびMPC2は、これらの条件を使用して、デジタルコンポーネント選択プロセスにおける選択に対する実際の適格な候補であるデジタルコンポーネントをこれらの適格なデジタルコンポーネントから識別することができる。デジタルコンポーネントが適格であるか否かの判定に使用するためのコンテキスト信号のセットは、計算システムMPC1およびMPC2が、デジタルコンポーネント要求のコンテキスト信号を使用して適格なデジタルコンポーネントを検索することを可能にする検索鍵の形態とすることができる。 In some implementations, each computing system MPC1 and MPC2 stores information about the digital components in a data structure that maps the digital components and their respective information to a set of context signals. For example, each digital component may be eligible for display in a presentation environment using resources and/or applications that include a set of contextual signals. Context signals may be, for example, the topic of the resource, the keywords found in the resource, the resource locator of the resource, the geographic location of the client device 110, the language setting of the application 112, the number of digital component slots of the resource, the type of digital component slots, and /or other suitable context signals may be included. Additionally, the digital component can have multiple corresponding selection values, one for each set of context signals. Using such a data structure allows computing systems MPC1 and MPC2 to identify digital components that are eligible for the digital component selection process. Computing systems MPC1 and MPC2 can use these conditions to identify digital components from those eligible digital components that are actually eligible candidates for selection in the digital component selection process. A set of context signals for use in determining whether a digital component is eligible enables computing systems MPC1 and MPC2 to search for eligible digital components using the digital component request context signals. It can be in the form of a search key that

デジタルコンポーネントが、デジタルコンポーネントに対する適格なユーザグループを識別する対応するユーザグループ識別子と関連付けられる場合、情報は、ルックアップテーブル(LUT)を使用して記憶することができる。LUTを使用することによって、いくらかの性能上の利点を提供することができるが、他の適切なデータ構造も使用されてもよい。LUTは、コンテキスト信号、またはコンテキスト信号から導出される検索鍵をデジタルコンポーネントのセットに、本明細書に記載の他の条件に従って当該デジタルコンポーネントのセットが表示のために適格であり、かつ/または、その選択値もしくはベクトルが適格であるように、マッピングする。このように、計算システムMPC1およびMPC2は、各デジタルコンポーネントについて、たとえば、コンテキスト信号のセットごとに1つなど、複数の選択値を記憶することができる。 Where a digital component is associated with a corresponding user group identifier that identifies an eligible user group for the digital component, the information can be stored using a lookup table (LUT). Using LUTs can provide some performance advantage, but other suitable data structures may also be used. The LUT applies the context signal, or a search key derived from the context signal, to a set of digital components such that the set of digital components is eligible for display according to other conditions described herein; and/or Map as that selection value or vector is eligible. Thus, the computing systems MPC1 and MPC2 can store multiple selection values for each digital component, eg, one for each set of context signals.

いくつかの実施態様において、検索鍵は、コンテキスト信号のハッシュベースメッセージ認証コード(HMAC)である。たとえば、検索鍵は、HMAC(URL, HMAC(language, location))とすることができ、パラメータURLは、デジタルコンポーネントおよび選択値が適格であるリソースのURLであり、パラメータlanguageは、デジタルコンポーネントおよび選択値が適格であるアプリケーション112の指定言語であり、パラメータlocationは、デジタルコンポーネントおよび選択値が適格である地理的位置である。デジタルコンポーネント要求のコンテキスト信号がこれらのパラメータに一致する場合、検索鍵にマッピングされているデジタルコンポーネントおよび選択値は、要求に応答してデジタルコンポーネントを選択するためのデジタルコンポーネント選択プロセスに対して適格である。URL、location、およびlanguageに加えて、またはそれらの代わりに、他のコンテキスト信号を使用することができる。 In some implementations, the search key is a hash-based message authentication code (HMAC) of the context signal. For example, the search key can be HMAC(URL, HMAC(language, location)), the parameter URL is the URL of the resource for which the digital component and the selection value are eligible, the parameter language is the digital component and the selection The application 112 designation language for which the value is eligible, and the parameter location is the geographic location for which the digital component and selection value are eligible. If the context signal of the digital component request matches these parameters, then the digital component and selection value mapped to the search key are eligible for the digital component selection process to select the digital component in response to the request. be. Other context signals can be used in addition to or instead of URL, location, and language.

ネットワーク105を介してデジタルコンポーネント要求を送信するために使用される帯域幅の量およびレイテンシの量を低減するために、アプリケーション112は、コンテキスト信号を計算システムMPC1およびMPC2に送信するのではなく、同じHMACを使用して検索鍵を計算することができる。これによってまた、クライアントデバイス110によって消費されるバッテリの量、および、各計算システムMPC1およびMPC2によって受信されるデータの量も低減する。 To reduce the amount of bandwidth and latency used to send digital component requests over network 105, application 112 sends context signals to computing systems MPC1 and MPC2 rather than sending them to the same HMAC can be used to compute the search key. This also reduces the amount of battery consumed by client device 110 and the amount of data received by each computing system MPC1 and MPC2.

いくつかの実施態様において、たとえば、デジタルコンポーネントがユーザのユーザグループメンバーシップに関して条件付けされている場合、2段階LUTテーブルが使用される。第1段階は、要求鍵(UG_Request_Key)によって鍵が付けられ得る。UG_Request_Keyは、コンテキスト信号のセット、たとえば、デジタルコンポーネント要求のコンテキスト信号(たとえば、URL、location、languageなど)のセット、またはデジタルコンポーネントが配信に対して適格であるコンテキスト信号のセットに基づく、複合メッセージの形態である検索鍵であり得る。すなわち、第1段階LUTは、コンテキスト信号のセットに基づいて鍵が付けられ得る。第1段階の鍵は、たとえば、SHA256などのハッシュ関数を使用した、UG_Request_Keyのハッシュであり得る。この鍵は、たとえば、16バイト、または別の適切なビット数などの、指定のビット数に短縮することができる。第1段階LUTにおける各鍵UG_Request_Keyの値は、UG_Request_Keyのコンテキスト信号を含むデジタルコンポーネント要求に対して適格であるデジタルコンポーネントのデータを含む第2段階LUTの行を示すことができる。例示的な第1段階LUTを、下記にTable 1(表1)として示す。 In some implementations, a two-level LUT table is used, for example, when the digital component is conditioned on the user's user group membership. The first stage may be keyed by a request key (UG_Request_Key). UG_Request_Key is the set of context signals, e.g., the set of context signals for a digital component request (e.g., URL, location, language, etc.), or the set of context signals for which a digital component is eligible for delivery. It can be a search key that is of the form: That is, the first stage LUT can be keyed based on a set of context signals. The first stage key can be a hash of UG_Request_Key, for example using a hash function such as SHA256. This key can be shortened to a specified number of bits, eg, 16 bytes, or another suitable number of bits. Each key UG_Request_Key value in the first stage LUT may indicate a row in the second stage LUT containing digital component data eligible for the digital component request containing the UG_Request_Key's context signal. An exemplary first stage LUT is shown below as Table 1.

Figure 2023529783000002
Figure 2023529783000002

第2段階LUTは、第1段階LUTの中のユーザグループ要求鍵UG_Request_Keyとユーザグループ識別子との組合せに基づいて鍵が付けられ得る。いくつかの実施態様において、第2段階LUTは、配列または他の適切なデータ構造とすることができる。第2段階LUTの中の各行は、特定のデジタルコンポーネントに対する特定の選択値(または値のベクトル)に対するものであり得る。たとえば、DSP150は、各選択値がコンテキスト信号の異なるセットおよび/または異なるユーザグループ識別子に対するものである、同じデジタルコンポーネントに対する異なる選択値をサブミットすることができる。したがって、デジタルコンポーネントの選択値は、コンテキストおよびデジタルコンポーネント選択プロセスが実施されているユーザのユーザグループメンバーシップに基づいて変化し得る。 The second stage LUT may be keyed based on the combination of the user group request key UG_Request_Key and the user group identifier in the first stage LUT. In some embodiments, the second stage LUT can be an array or other suitable data structure. Each row in the second stage LUT may be for a particular selected value (or vector of values) for a particular digital component. For example, DSP 150 may submit different selection values for the same digital component, each selection value for a different set of context signals and/or a different user group identifier. Accordingly, the selection value of the digital component may change based on the context and user group membership of the user for whom the digital component selection process is being performed.

DSP150またはデジタルコンポーネントプロバイダ160は、DSP150またはデジタルコンポーネントプロバイダがデジタルコンポーネントを表示させることを希望する先のユーザグループに、デジタルコンポーネントを関連付けること、たとえば、リンクさせるかまたはマッピングすることができる。たとえば、DSP150は、フライフィッシングに関連するデジタルコンポーネントが、フライフィッシングに関心を示した人に表示されることを所望する場合がある。この例では、DSP150は、デジタルコンポーネントが、フライフィッシングへの関心を示したことがある人を含むユーザグループに対するユーザグループ識別子に対応することを示すデータを、MPCクラスタ130に提供することができる。 DSP 150 or digital component provider 160 can associate, eg, link or map, the digital component to a group of users to whom DSP 150 or digital component provider wishes to have the digital component displayed. For example, the DSP 150 may desire that digital components related to fly fishing be displayed to those who have expressed an interest in fly fishing. In this example, DSP 150 may provide data to MPC cluster 130 indicating that the digital component corresponds to a user group identifier for a user group that includes people who have expressed an interest in fly fishing.

いくつかの実装形態では、第2段階LUTの中の行のための鍵は、その行のデジタルコンポーネントに対するユーザグループ要求鍵UG_Request_Keyとユーザグループ識別子との組合せに基づいて生成された、ハッシュまたはコードであり得る。たとえば、鍵は、HMACSHA256(UG_Request_Key, ug_id)として表すことができる、その組合せのHMACであり得る。ユーザグループ識別子ug_idは、ユーザグループに対する内部ユーザグループ識別子とユーザグループの所有者の(たとえば、ユーザグループを所有するDSP、SSP、またはデジタルコンポーネントプロバイダの)ドメインとの組合せに基づくことができる。たとえば、ユーザグループ識別子ug_idは、所有者ドメインのeTLD+1およびユーザグループに対する所有者の内部ユーザグループ識別子のデジタルダイジェストであり得る。eTLD+1は、パブリックサフィックスを超える、実効トップレベルドメイン(eTLD:effective top-level domain)+1レベルである。例示的なeTLD+1は「example.com」であり、ここで、「.com」がトップレベルドメインである。ug_idは、16バイトまたは別の適切なデータサイズに短縮され得る。 In some implementations, the key for a row in the second stage LUT is a hash or code generated based on the combination of the user group request key UG_Request_Key and the user group identifier for the row's digital component. could be. For example, the key can be the HMAC of the combination, which can be represented as HMAC SHA256 (UG_Request_Key, ug_id). The user group identifier ug_id can be based on a combination of the internal user group identifier for the user group and the domain of the user group's owner (eg, the DSP, SSP, or digital component provider that owns the user group). For example, the user group identifier ug_id may be a digital digest of the owner's internal user group identifier for the owner domain's eTLD+1 and user group. eTLD+1 is the effective top-level domain (eTLD)+1 level above the public suffix. An exemplary eTLD+1 is "example.com", where ".com" is the top level domain. The ug_id may be shortened to 16 bytes or another suitable data size.

以前のフライフィッシングの例を続けると、その人のフライフィッシングのグループ内のユーザに表示されることになるデジタルコンポーネントに関する情報を含む行の第2段階検索鍵は、ユーザグループ要求鍵UG_Request_Keyと、その人のフライフィッシングのグループのユーザグループ識別子ug_idとの組合せとすることができる。デジタルコンポーネントは異なるコンテキストにおいて提示され得るため、第2段階ルックアップテーブルは、各々が異なるユーザグループ要求鍵UG_Request_Keyおよび異なる値を有する、その人のフライフィッシングのグループのユーザグループ識別子ug_idと関連付けられるデジタルコンポーネントの複数の行を含むことができる。 Continuing with our previous fly-fishing example, the second-stage search keys for rows containing information about digital components that will be displayed to users in that person's fly-fishing group are the user group request key UG_Request_Key and its UG_Request_Key. It can be combined with the user group identifier ug_id of the fly fishing group of people. Since the digital components can be presented in different contexts, the second stage lookup table is a digital component associated with the user group identifier ug_id of the person's fly fishing group, each with a different user group request key UG_Request_Key and a different value. can contain multiple lines of

第2段階LUTの各行に対する値は、デジタルコンポーネントに対する選択値(または値のベクトル)、およびデジタルコンポーネントのための他のデータ、たとえば、デジタルコンポーネントまたはデジタルコンポーネントがそこからダウンロードされ得るネットワークロケーションを識別するメタデータなどであり得る。いくつかの実施態様において、行は、アプリケーション112によって、たとえばウェブパッケージフォーマットにおいてレンダリングされる準備ができたデジタルコンポーネント自体を含むことができる。 The value for each row of the second stage LUT identifies the selected value (or vector of values) for the digital component, and other data for the digital component, such as the digital component or a network location from which the digital component can be downloaded. It can be metadata and the like. In some implementations, a row may contain the digital component itself ready to be rendered by the application 112, for example in a web package format.

その値は、選択値およびメタデータを有するバイトアレイであり得る、デジタルコンポーネント情報要素dc_information_elementであり得る。バイト配列は、アプリケーション112またはクライアントデバイス110の信頼されるプログラム、ならびに計算システムMPC1およびMPC2が解析して選択値およびメタデータを得ることができる特定のフォーマットを有することができる。いくつかの実施態様において、デジタルコンポーネント情報要素は、デジタルコンポーネント自体を含むことができる。例示的な第2段階LUTを、下記にTable 2(表2)として示す。ベクトルが選択値の決定に使用される場合、選択値は、Table 2(表2)のベクトルに置き換えることができる。 Its value may be a digital component information element dc_information_element, which may be a byte array with selection values and metadata. The byte array may have a specific format that can be parsed by application 112 or trusted programs of client device 110 and computing systems MPC1 and MPC2 to obtain selection values and metadata. In some implementations, the digital component information element can include the digital component itself. An exemplary second stage LUT is shown below as Table 2. If a vector is used to determine the selection values, the selection values can be replaced with the vectors in Table 2.

Figure 2023529783000003
Figure 2023529783000003

第2段階LUTは、選択値を特定のデジタルコンポーネント、特定のユーザグループ識別子ug_id、および、第1段階検索鍵UG_Request_Keyによって規定されるコンテキスト信号の特定のセットにマッピングする。そのようにすることによって、第2段階LUTは、デジタルコンポーネントに対する選択値がそれに対して適格である、デジタルコンポーネントスロットの特定のコンテキストを示す。このことにより、コンテキスト信号およびユーザのグループメンバーシップによって規定される、異なるコンテキストに対して、DSP150またはデジタルコンポーネントプロバイダ160が、同じデジタルコンポーネントに対する異なる選択値を指定することが可能になる。デジタルコンポーネントが表示される先のユーザが、特定のユーザグループ識別子ug_idによって識別される特定のユーザグループのメンバーであること、および第1段階ルックアップ鍵のコンテキスト信号によって規定される特定のコンテキストでデジタルコンポーネントが表示されることを示す、デジタルコンポーネント要求が受信されるとき、整合するユーザグループ識別子および整合する第1段階ルックアップ鍵を有する、第2段階LUTの中の選択値を有する任意のデジタルコンポーネントが、要求に応答して配信のために選択されるべき候補である。 A second stage LUT maps the selection value to a particular set of context signals defined by a particular digital component, a particular user group identifier ug_id, and a first stage search key UG_Request_Key. By doing so, the second stage LUT indicates the specific context of the digital component slot for which the selection value for the digital component is eligible. This allows DSP 150 or digital component provider 160 to specify different selection values for the same digital component for different contexts, defined by the context signal and the user's group membership. The user to whom the digital component is displayed is a member of a particular user group identified by a particular user group identifier ug_id, and in a particular context defined by the context signal of the first stage lookup key. Any digital component with selected values in a second stage LUT with a matching user group identifier and a matching first stage lookup key when a digital component request is received indicating that the component is to be displayed are candidates to be selected for delivery in response to the request.

本明細書全体にわたる説明に加えて、本明細書で説明するシステム、プログラム、または特徴により、ユーザ情報(たとえば、ユーザのソーシャルネットワーク、社会活動もしくは社会的アクティビティ、職業、ユーザの選好、またはユーザの現在位置についての情報)の収集が可能になり得るかどうかと、いつ可能になり得るのかの両方、およびサーバからのコンテンツまたは通信がユーザに送られるかどうかに関して、ユーザが選定を行うことを可能にする制御装置(たとえば、ユーザがそれと対話できるユーザインターフェース要素)がユーザに提供されてよい。加えて、いくつかのデータは、個人を識別できる情報が除去されるように、記憶または使用される前に1つまたは複数の方法で処理されてよい。たとえば、ユーザの識別情報は、個人を識別できる情報がユーザについて決定できないように扱われてもよく、またはユーザの地理的位置は、ユーザの具体的な位置を決定できないように、位置情報が取得される場合に(都市、ZIPコード、もしくは州のレベルなどに)一般化されてもよい。したがって、ユーザは、ユーザについてのどの情報が収集されるか、その情報がどのように使用されるか、およびどの情報がユーザに提供されるかを制御することができる。 In addition to the descriptions throughout this specification, any system, program, or feature described herein may provide user information (e.g., the user's social networks, social activities or activities, occupation, user preferences, or user Allows users to make choices regarding both whether and when collection of information about their current location) can be enabled, and whether content or communications from the server is sent to them The user may be provided with a control (eg, a user interface element with which the user can interact) that allows the user to. Additionally, some data may be processed in one or more ways before being stored or used such that personally identifiable information is removed. For example, a user's identity may be treated such that personally identifiable information cannot be determined about the user, or a user's geographic location may be obtained from location information such that the user's specific location cannot be determined. may be generalized (to city, ZIP code, or state level, etc.) Thus, the user can control what information is collected about the user, how that information is used, and what information is provided to the user.

図2は、図1の環境100内の例示的なデータフローを示す。この説明は、2つのタイプの選択値、すなわち、ユーザグループメンバーシップもしくは他の企業機密情報などの機密ユーザ情報、またはその値の変化が、良心的でないパーティが機密情報を推測することを可能にする可能性があるパラメータに対して条件付けされている選択値、すなわち「条件付き選択値」、および、機密情報に対して条件付けされていない選択値、すなわち「無条件選択値」を含む。ユーザプライバシーを保護するために、「条件付き選択値」に対する条件が、SSP170またはDSP150の代わりにMPCクラスタ130内で評価されて、「条件付き選択値」がコンテンツ選択プロセスの候補であるか否かが判定される。 FIG. 2 shows an exemplary data flow within environment 100 of FIG. This description describes two types of selected values: sensitive user information, such as user group membership or other company sensitive information, or changes in that value that allow an unscrupulous party to infer sensitive information. It includes selection values that are conditioned on parameters that may be used, or "conditional selection values," and selection values that are not conditioned on sensitive information, or "unconditional selection values." To protect user privacy, the conditions for the "conditional selection value" are evaluated within the MPC cluster 130 instead of the SSP 170 or DSP 150 to determine whether the "conditional selection value" is a candidate for the content selection process. is determined.

この構造は、MPCクラスタ130が、ユーザプライバシーおよび企業秘密情報を保護することを可能にし、アプリケーション112のプロバイダなどのアプリケーションプロバイダに対するその信用性を証明することを可能にする。この例において、MPCクラスタ130は、セキュア2パーティ計算(2PC)アーキテクチャに依拠し、これは、MPCクラスタ130の2つの計算システムのうちの少なくとも一方が公正である場合に秘密ユーザデータまたは企業秘密情報の漏洩がないことを保証するために暗号学的技法を適用する。MPCクラスタ130が3つ以上の計算システムを含む場合、現行のMPCプロトコルを拡張することができ、または、他のMPCプロトコルを使用することができる。 This structure allows MPC cluster 130 to protect user privacy and confidential business information and to prove its trustworthiness to application providers, such as the provider of application 112 . In this example, MPC cluster 130 relies on a secure two-party computing (2PC) architecture, which allows confidential user data or confidential trade information to be stored if at least one of the two computing systems of MPC cluster 130 is fair. apply cryptographic techniques to ensure that there is no leakage of If the MPC cluster 130 includes more than two computing systems, the current MPC protocol can be extended or other MPC protocols can be used.

MPCクラスタ130は、セキュア2PCプロトコルを実行して、候補デジタルコンポーネントを選択するために条件を評価および適用し、選択値に基づいてデジタルコンポーネントを選択するために選択プロセスを実行し、それらの条件が依存するパラメータを更新するためのインプレッション通知を受信する。これらのプロセスのすべては、秘密共有技法を使用して行うことができる。このプロトコルは、図3を参照しながら詳細に説明される。 The MPC cluster 130 executes a secure 2PC protocol to evaluate and apply conditions to select candidate digital components, performs a selection process to select digital components based on selection values, and if those conditions are Receive impression notifications to update dependent parameters. All of these processes can be done using secret sharing techniques. This protocol is described in detail with reference to FIG.

段階Aにおいて、アプリケーション112は、たとえば、SSP170などのコンテンツプラットフォームからのトリガ要素と協働して、デジタルコンポーネントに対する要求をMPCクラスタ130に送信する。アプリケーション112は、デジタルコンポーネントに対する複数の要求を、複数のデジタルコンポーネントをフェッチするための1つの組合せ要求にともに含めることができる。次いで、MPCクラスタ130は、組合せ要求内の各要求に独立してサーブするか、または、1つまたは複数の選択決定を総体的に行うことができる。この例において、要求は、単一のデジタルコンポーネントに対するものであり、機密情報に基づいて選択されるデジタルコンポーネント、または、機密情報を使用することなく選択されるデジタルコンポーネントに対する要求を含む。MPCクラスタ130は、各々がそれぞれの特定のデジタルコンポーネントにマッピングされる選択値のセットの中の特定の選択値に対応する特定のデジタルコンポーネントを選択することによって、要求に応答することができる。これらの選択値は、MPCクラスタ130において以前にキャッシュされたかもしくは他の様態で記憶された選択値、および/または、DSP150またはSSP170などのプラットフォームによって生成される選択値、ジャストインタイム(JIT)選択値とすることができる。JIT選択値は、必要性に応答して直接的に生成され、デジタルコンポーネントが必要とされるときにのみ選択値が生成されるため、効率を増大させ、無駄を低減する。たとえば、JIT選択値は、デジタルコンポーネントスロットが利用可能になったときに生成することができ、これは、デジタルコンポーネントに対する要求の受信によって示される。したがって、MPCクラスタ130は、その情報がMPCクラスタ130において記憶されている、記憶されるデジタルコンポーネント、および、そのJIT選択値が現在のデジタルコンポーネント要求に対して受信されているデジタルコンポーネントを含むデジタルコンポーネントのセットからデジタルコンポーネントを選択することができる。 In phase A, application 112 sends a request for a digital component to MPC cluster 130 in cooperation with a triggering element from a content platform, such as SSP 170, for example. Application 112 may include multiple requests for digital components together in one combined request to fetch multiple digital components. The MPC cluster 130 can then independently serve each request in the combined request or collectively make one or more selection decisions. In this example, the request is for a single digital component and includes a request for the digital component to be selected based on sensitive information or selected without sensitive information. The MPC cluster 130 can respond to the request by selecting a particular digital component corresponding to a particular selection value in a set of selection values each mapped to a respective particular digital component. These selection values may be previously cached or otherwise stored selection values in MPC cluster 130 and/or selection values generated by a platform such as DSP 150 or SSP 170, just-in-time (JIT) selection. can be a value. JIT selection values are generated directly in response to need, increasing efficiency and reducing waste because selection values are generated only when digital components are needed. For example, a JIT selection value can be generated when a digital component slot becomes available, indicated by receipt of a request for the digital component. Thus, MPC cluster 130 is a digital component including the stored digital component whose information is stored in MPC cluster 130 and the digital component whose JIT selection value has been received for the current digital component request. You can choose a digital component from a set of

いくつかの実施態様において、デジタルコンポーネントの選択値は、2つ以上のベクトルを使用して決定することができる。MPCクラスタ130は、デジタルコンポーネントについて、デジタルコンポーネントの選択値を決定するために使用することができる値の第1のベクトルを記憶することができる。値の第1のベクトルは、1つまたは複数のユーザグループに特有であり得、たとえば、デジタルコンポーネントが1つまたは複数のユーザグループのメンバーであるユーザに対して選択されているときにデジタルコンポーネントの選択値を決定するために使用することができる。したがって、値の第1のベクトルはまた、ユーザグループベースのベクトルとして参照することもできる。ユーザグループベースのベクトルは、2つ以上の次元にまたがる複数の要素を含むことができ、各要素は、デジタルコンポーネント提示機会の特定の特徴を表すことができる。たとえば、値のユーザグループベースのベクトルは、地理的位置もしくは地域、言語、年齢もしくは年齢幅、ウェブページもしくは他の電子リソースの特定のURL、特定の製品もしくはサービス、デジタルコンポーネントスロットがフォールドの上であるかもしくは下であるか、デジタルコンポーネントスロットのタイプ、デジタルコンポーネントスロットのサイズ、電子リソース上のデジタルコンポーネントスロットの数、時刻、ウェブ特性識別子、および/または、デジタルコンポーネント提示機会の他の適切な特徴の要素を含むことができる。たとえば、ニューラルネットワークを採用する実施態様などの、いくつかの実施態様において、値のユーザグループベースのベクトルは、いくつかの抽象ベクトル空間内のユーザグループの埋め込みとすることができる。 In some implementations, the selected values for the digital components can be determined using more than one vector. MPC cluster 130 may store, for a digital component, a first vector of values that may be used to determine a selected value for the digital component. The first vector of values may be specific to one or more user groups, e.g. Can be used to determine the selection value. Therefore, the first vector of values can also be referred to as a user group-based vector. A user group-based vector can include multiple elements spanning two or more dimensions, and each element can represent a particular characteristic of the digital component presentation opportunity. For example, a user group-based vector of values could be a geographic location or region, a language, an age or age range, a particular URL for a web page or other electronic resource, a particular product or service, a digital component slot on which to fold. is or is, the type of digital component slot, the size of the digital component slot, the number of digital component slots on the electronic resource, the time of day, the web feature identifier, and/or other suitable characteristics of the digital component presentation opportunity can contain elements of For example, in some implementations, such as implementations employing neural networks, the user group-based vector of values can be an embedding of the user group in some abstract vector space.

各要素の値は、要素に対応する特徴を有する現在のデジタルコンポーネント提示機会に基づくデジタルコンポーネントの選択値の増大または低減の量を反映することができる。たとえば、デジタルコンポーネントがダラスのユーザではなくアトランタのユーザに表示されることをDSP150が所望する場合、アトランタの要素の値を、1の値を上回る正の値とすることができ、ダラスの要素の値を、たとえば、0などの、1を下回る正の値、または負の値とすることができる。下記により詳細に説明するように、ユーザグループベースのベクトルの値は、デジタルコンポーネントの選択値を決定するためのベクトルドット積計算の一部とすることができる。 The value of each element can reflect an amount of increase or decrease in the selected value of the digital component based on current digital component presentation opportunities with the characteristics corresponding to the element. For example, if the DSP 150 wants the digital component to be displayed to users in Atlanta but not to users in Dallas, then the value of the Atlanta element can be a positive value greater than 1 and the value of the Dallas element can be positive. The value can be a positive value less than 1, such as 0, or a negative value, for example. As described in more detail below, the values of the user group-based vectors can be part of a vector dot product calculation for determining the selected values of the digital components.

要求は、アプリケーション112がマッピングされるかまたは他の様態で関連付けられるユーザグループのユーザグループ識別子などの、機密であり得る情報、ならびに、デジタルコンポーネントが提示および/または表示されるコンテキストに関するアプリケーション112からのコンテキスト信号などの機密でない情報を含む、デジタルコンポーネント選択プロセスにおいて使用される情報を含む。下記により詳細に説明するように、システム110の設計は、機密または秘密であり得るユーザデータの保護を改善する。 The request includes information that may be sensitive, such as the user group identifier of the user group to which the application 112 is mapped or otherwise associated, as well as information from the application 112 regarding the context in which the digital component is presented and/or displayed. Contains information used in the digital component selection process, including non-sensitive information such as context signals. As described in more detail below, the design of system 110 improves protection of user data that may be sensitive or confidential.

トリガ要素は、たとえば、アプリケーション112によって訪問されるインターネットロケーション内のデジタルコンポーネントスロットの存在を検出するタグとすることができる。トリガ要素は、たとえば、そのインターネットロケーションに配置することができ、アプリケーション112に、デジタルコンポーネントが要求されるべきであるデジタルコンポーネントスロットの存在を通知することができる。 A triggering element can be, for example, a tag that detects the presence of a digital component slot within an Internet location visited by application 112 . A trigger element can be located, for example, at its Internet location, and can notify application 112 of the existence of a digital component slot in which a digital component should be requested.

段階Bにおいて、MPCクラスタ130はコンテキスト信号などの機密でない情報に基づくデジタルコンポーネント要求をSSP170に送信する。この要求は、「コンテキスト要求」として参照される。コンテキスト要求は、デジタルコンポーネントに対する要求をトリガしたインターネットロケーション(たとえば、コンテンツパブリッシャ)によって直接的に収集される様々なコンテキスト信号および非機密ユーザ情報を含むことができる。たとえば、コンテキスト信号は、分析データ、言語設定、および、コンテンツパブリッシャが良好なユーザ体験を提供することを支援する他のデータを含むことができる。しかしながら、SSP170に提供されるコンテキスト要求は、ユーザグループ識別子などの機密情報を含まない。 At phase B, MPC cluster 130 sends to SSP 170 a digital component request based on non-sensitive information such as context signals. This request is referred to as a "context request". Contextual requests can include various contextual signals and non-sensitive user information collected directly by the Internet location (eg, content publisher) that triggered the request for the digital component. For example, context signals may include analytical data, language preferences, and other data that assist content publishers in providing a good user experience. However, context requests provided to SSP 170 do not contain sensitive information such as user group identifiers.

段階Cにおいて、SSP170は、コンテキスト要求を1つまたは複数のDSP150に転送する。この特定の例において、単純にするために、SSP170は、コンテキスト要求を単一のDSP150に転送する。たとえば、SSP170は、コンテキスト要求をDSP150に転送することができる。この例において、DSP150は、デジタルコンポーネント、および、デジタルコンポーネントにマッピングされている選択値を有するか、または、コンテキスト信号を使用してデジタルコンポーネントの選択値を決定することができる。 At phase C, SSP 170 forwards the context request to one or more DSPs 150 . In this particular example, the SSP 170 forwards the context request to a single DSP 150 for simplicity. For example, SSP 170 can forward the context request to DSP 150 . In this example, the DSP 150 may have the digital component and the selected value mapped to the digital component, or use the context signal to determine the selected value of the digital component.

段階Dにおいて、1つまたは複数のDSP150が、コンテキスト要求に応答して選択値を返す。たとえば、DSP150は、コンテキスト要求に応答して、デジタルコンポーネントにマッピングされている1つまたは複数の選択値を返す。DSP150は、コンテキスト要求に応答して任意の数の選択値を返すことができる。いくつかの実施態様において、DSP150は、加えて、ユーザグループ情報などの機密情報に基づいて、デジタルコンポーネント要求に応答して選択値を返すことができる。これらの選択値は、それが機密情報に関して条件付けられ、したがって、選択値が条件付けられている機密情報に一致する機密情報を含む要求を受信するMPCクラスタ130に関して条件付けられるため、「条件付き選択値」である。DSP150が提供する各選択値について、DSP150は、有効期間(TTL)パラメータ、すなわち、MPCクラスタ130が選択値をキャッシュすることができる最大期間などの情報を含む。このTTLパラメータは、MPCクラスタ130が、DSP150から受信される選択値をキャッシュすることを可能にする。TTLパラメータを用いない、いくつかの実施態様において、MPCクラスタ130は、受信選択値をキャッシュせず、代わりに、選択値が、たとえば、段階A、BおよびCにおいて送信されたデジタルコンポーネント要求に対応する選択プロセスなどの、選択プロセスに使用された後に、選択値を廃棄する。 At stage D, one or more DSPs 150 return selection values in response to the context request. For example, DSP 150 responds to context requests by returning one or more selection values that are mapped to digital components. DSP 150 can return any number of selection values in response to a context request. In some implementations, DSP 150 may additionally return selected values in response to digital component requests based on sensitive information, such as user group information. These selection values are "conditional selection values" because they are conditioned on sensitive information and are therefore conditioned on MPC clusters 130 that receive requests containing sensitive information that match the sensitive information on which the selection values are conditioned. is. For each selection value that DSP 150 provides, DSP 150 includes information such as a time-to-live (TTL) parameter, ie, the maximum time period that MPC cluster 130 can cache the selection value. This TTL parameter allows MPC cluster 130 to cache selection values received from DSP 150 . In some embodiments that do not use the TTL parameter, the MPC cluster 130 does not cache received selection values, instead the selection values correspond to digital component requests sent in stages A, B and C, for example. Discard the selection value after it has been used in a selection process, such as a selection process that

選択値を決定するためにベクトルが使用されるとき、DSP150は、値の第2のベクトルを生成し、返すことができる。DSP150は、段階BおよびCにおいて送信されたデジタルコンポーネント要求のコンテキスト信号に基づいて、値の第2のベクトルを生成することができる。第2のベクトルは、コンテキストベクトルとして参照することができる。コンテキストベクトルは、ユーザグループベースのベクトルと同じ特徴に対応する同じ要素を含むことができる。しかしながら、DSP150は、デジタルコンポーネント要求のコンテキスト信号に基づいて、現在のデジタルコンポーネント要求に対するコンテキストベクトルの値を決定することができる。対照的に、DSP150のユーザグループベースのベクトルの値は、MPCクラスタ130として記憶され、たとえば、ユーザグループベースのベクトルに対応するユーザグループに基づいて事前に決定される。 When a vector is used to determine selection values, DSP 150 may generate and return a second vector of values. DSP 150 may generate a second vector of values based on the context signal of the digital component request sent in stages B and C. FIG. A second vector can be referred to as a context vector. The context vector can contain the same elements that correspond to the same features as the user group-based vector. However, DSP 150 can determine the value of the context vector for the current digital component request based on the digital component request's context signal. In contrast, the user-group-based vector values of DSP 150 are stored as MPC clusters 130 and are predetermined, eg, based on the user group corresponding to the user-group-based vector.

コンテキストベクトルを提供する各DSP150について、MPCクラスタ130は、ユーザグループベースのベクトルおよびDSP150によって提供されるコンテキストベクトルのドット積を決定することによって、DSP150の各記憶されるデジタルコンポーネントの選択値を決定することができる。DSP150が、たとえば、異なるデジタルコンポーネントごとの、MPCクラスタ130によって記憶されている複数のユーザグループベースのベクトルを有する場合、MPCクラスタ130は、各ユーザグループベースのベクトルについて、コンテキストベクトルおよびユーザグループベースのベクトルのドット積を決定する。 For each DSP 150 that provides a context vector, MPC cluster 130 determines the selected value for each stored digital component of DSP 150 by determining the dot product of the user group-based vector and the context vector provided by DSP 150. be able to. If DSP 150 has multiple user-group-based vectors stored by MPC cluster 130, for example, for different digital components, MPC cluster 130 stores a context vector and a user-group-based vector for each user-group-based vector. Determines the dot product of vectors.

いくつかの実施態様において、デジタルコンポーネント要求がサブミットされるユーザのユーザプロファイルに基づいて、第3のベクトルを使用することができる。このベクトルは、他のベクトルと同じ次元および特徴を有することができるが、ユーザのユーザプロファイルに基づく値を有する。 In some implementations, a third vector can be used based on the user profile of the user to whom the digital component request is submitted. This vector can have the same dimensions and characteristics as the other vectors, but has values based on the user's user profile.

たとえば、ユーザプロファイルベクトル内のオースティンの位置要素の値は、ユーザがオースティンにいる場合は正の値を有することができ、または、ユーザがオースティンにいない場合は負の値もしくは0の値を有することができ、コンテキストベクトル内の同じ位置要素の値は、ユーザに現在示されているパブリッシャコンテンツのオースティンへの関連性が高い場合は正の値を有することができ、デジタルコンポーネントのユーザグループベースのベクトル内の同じ位置要素の値は、デジタルコンポーネントがオースティンに関連する場合は正である。3つのベクトルのドット積を計算するために、計算システムMPC1およびMPC2は、最初に、3つのベクトルの各々から1つの、対応する要素の間での要素ごとの乗算を実施し、次いで、結果を合計する。たとえば、3つのベクトルがそれぞれV1={v1,1 ...v1,n},V2={v2,1 ...v2,n}およびV3={v3,1 ...v3,n}であると仮定すると、3つのベクトルの間のドット積は、以下のようになる。 For example, the value of the Austin location element in the user profile vector can have a positive value if the user is in Austin, or a negative value or a value of 0 if the user is not in Austin. and the value of the same location element in the context vector can have a positive value if the publisher content currently being shown to the user is highly relevant to Austin, and the user group-based vector of digital components The value of the same position element in is positive if the digital component is associated with Austin. To compute the dot product of three vectors, computing systems MPC 1 and MPC 2 first perform element-wise multiplications between corresponding elements, one from each of the three vectors, and then Sum the results. For example, if the three vectors are respectively V 1 ={v 1,1 ...v 1,n }, V 2 ={v 2,1 ...v 2,n } and V 3 ={v 3,1 . ..v 3,n }, the dot product between the three vectors is:

Figure 2023529783000004
Figure 2023529783000004

段階Eにおいて、SSP170は、コンテンツ選択規則を、条件付き選択値に対応するデジタルコンポーネントに適用する。上述したように、これらの条件は、ユーザグループ識別子、頻度制御、ブロック(たとえば、ミュート)デジタルコンポーネント、ペーシング、および/またはk-匿名性に基づくことができる。 At stage E, SSP 170 applies content selection rules to digital components corresponding to conditional selection values. As noted above, these conditions can be based on user group identifiers, frequency control, block (eg, mute) digital components, pacing, and/or k-anonymity.

SSP170はまた、たとえば、選択値が特定のコンテンツプロバイダの発行後の値にどのように影響を与えるかを決定するためにも、選択値規則を適用する。発行後の値は、たとえば、パブリッシャ140のリソースまたはアプリケーションコンテンツとともにデジタルコンポーネントを表示するためにパブリッシャ140に提供される量を示すことができる。次いで、SSP170は、選択プロセスを実施して、トップ無条件選択値、すなわち、最高の発行後の値をもたらす無条件選択値を決定する。無条件選択値は、機密情報に関して条件付けられておらず、したがって、バジェットおよびペーシング規則、広告主およびデジタルコンポーネント除外などのコンテンツ選択規則を、MPCクラスタ130ではなく、SSP170によって適用することができる。次いで、SSP170は、JIT選択値である以下のもの、すなわち、MPCクラスタ130におけるキャッシングを可能にするすべての選択値(TTL値を有する選択値)、および、その発行後の値がトップ無条件選択値の発行後の値以上であるすべての選択値を、MPCクラスタ130に転送する。 SSP 170 also applies selection value rules, for example, to determine how selection values affect post-publication values for a particular content provider. The post-publication value can indicate, for example, the amount provided to the publisher 140 for display of the digital component along with the publisher's 140 resource or application content. SSP 170 then performs a selection process to determine the top unconditional selection value, ie, the unconditional selection value that yields the highest post-issuance value. Unconditional selection values are not conditioned on sensitive information, so content selection rules such as budget and pacing rules, advertiser and digital component exclusions can be applied by SSP 170 rather than MPC cluster 130 . The SSP 170 then finds the following JIT selection values: all selection values that enable caching in the MPC cluster 130 (selection values with TTL values), and their post-emission value is the top unconditional selection All selected values that are greater than or equal to the post-published value of the value are forwarded to the MPC cluster 130 .

段階Fにおいて、MPCクラスタ130は、キャッシングを可能にする(すなわち、TTL値を有する)受信したJIT選択値によってそのキャッシュを更新する。加えて、MPCクラスタ130は、ユーザグループメンバーシップ規則、頻度制御、ペーシング規則、ならびに、特定のユーザの段階Eにおいて受信されるすべての選択値および以前にキャッシュされた選択値へのマイクロターゲティングを阻止するための規則などの選択規則を適用して、選択プロセスに対する有効な候補を選択する。規則は、要因の中でも、デジタルコンポーネントの配信の方式または頻度に対する制約およびガイドラインを含むことができる。規則は、頻度制御、ミュート、リソース枯渇、およびペーシング制約を含む。いくつかの実施態様において、MPCクラスタ130によって評価される条件を有するJITデジタルコンポーネントは、現在のデジタルコンポーネント選択プロセスについては無視することができる。たとえば、現在の選択プロセスについてこれらのデジタルコンポーネントを無視することによって、たとえば、デジタルコンポーネントの選択および提供におけるレイテンシの低減などの、性能上の利点を提供することができる。次いで、MPCクラスタ130は、すべての適格な候補の間で最後の選択プロセスを実行し、勝利した選択値を選択し、次いで、デジタルコンポーネント要求に応答して、勝利した選択値にマッピングされているデジタルコンポーネントのデータをアプリケーション112に返す。 In phase F, the MPC cluster 130 updates its cache with the received JIT selection values that enable caching (ie, have TTL values). In addition, the MPC cluster 130 blocks user group membership rules, frequency controls, pacing rules, and micro-targeting to all received and previously cached selection values in phase E for a particular user. Apply selection rules, such as the rule for , to select valid candidates for the selection process. Regulations can include, among other factors, restrictions and guidelines on the manner or frequency of distribution of digital components. Rules include frequency control, muting, resource exhaustion, and pacing constraints. In some implementations, JIT digital components with conditions evaluated by the MPC cluster 130 can be ignored for the current digital component selection process. For example, ignoring these digital components for the current selection process can provide performance benefits, such as reduced latency in selecting and providing digital components. The MPC cluster 130 then performs a final selection process among all eligible candidates and selects the winning selection value, which is then mapped to the winning selection value in response to the digital component request. Return digital component data to application 112 .

段階Gにおいて、勝利した選択値にマッピングされているデジタルコンポーネントが、アプリケーション112によってレンダリングされる。次いで、アプリケーション112は、インプレッション通知をMPCクラスタ130に提供する。このインプレッション通知は、MPCクラスタ130が、たとえば、段階Aの後続の発生において受信される将来のデジタルコンポーネント要求に対する選択規則を執行することを可能にする更新パラメータに関連する情報をMPCクラスタ130が更新することを可能にするデータを含む。いくつかの実施態様において、アプリケーション112は、ネットワーク通信の数およびモバイルデバイスのバッテリ/帯域幅消費、ならびにMPCクラスタ130の処理/計算コストを低減するために将来のコンポーネント要求Aにピギーバックすることによって、インプレッション通知GをMPCクラスタ130に送信することができる。 At stage G, the digital component mapped to the winning selection value is rendered by application 112 . Application 112 then provides the impression notification to MPC cluster 130 . This impression notification causes the MPC cluster 130 to update information related to update parameters that enable the MPC cluster 130 to enforce selection rules for future digital component requests received in subsequent occurrences of Phase A, for example. contains data that allows you to In some implementations, the application 112 piggybacks on future component requests A to reduce the number of network communications and mobile device battery/bandwidth consumption, as well as the MPC cluster 130 processing/computation costs. , an impression notification G can be sent to the MPC cluster 130 .

図3は、クライアントデバイスへの配信用のデジタルコンポーネントを選択するための例示的なプロセス300のスイムレーン図である。プロセス300の動作は、たとえば、クライアントデバイス110、MPCクラスタ130の計算システムMPC1およびMPC2、ならびにDSP150によって実施され得る。プロセス300の動作は、非一時的であり得る、1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス300の動作を実行させ得る。プロセス300および以下の他のプロセスは、2つの計算システムのMPCクラスタ130に関して説明されるが、3つ以上の計算システムを有するMPCクラスタも、類似のプロセスを実行するために使用され得る。加えて、プロセス300の動作はSSP170によって実施され得る。 FIG. 3 is a swimlane diagram of an exemplary process 300 for selecting digital components for delivery to client devices. The operations of process 300 may be performed by client device 110, computing systems MPC1 and MPC2 of MPC cluster 130, and DSP 150, for example. The operations of process 300 may be implemented as instructions stored on one or more computer-readable media, which may be non-transitory, and execution of the instructions by one or more data processing devices may occur in one Or, multiple data processing devices may perform the operations of process 300 . Although process 300 and other processes below are described with respect to an MPC cluster 130 of two computing systems, MPC clusters with more than two computing systems can also be used to perform similar processes. Additionally, the operations of process 300 may be performed by SSP 170 .

例示的なプロセス300は、階層、ブースト、第1の値の選択プロセス(たとえば、第1の価格のオークション)、第2の値の選択プロセス(たとえば、第2の価格のオークション)、およびフロアなどの変形を含むことができる。これらの変形の各々は、図3~図5を参照しながら説明される。 The exemplary process 300 includes tiers, boosts, first value selection processes (eg, first price auctions), second value selection processes (eg, second price auctions), floors, and the like. can include variations of Each of these variations is described with reference to FIGS. 3-5.

概して、ブーストは、デジタルコンポーネントの選択値が調整される量である。たとえば、コンテンツパブリッシャは、SSP170に、デジタルコンポーネントがパブリッシャのリソース145またはアプリケーションコンテンツのうちの1つとともに表示するために選択されているときに指定量「x」のブーストを特定のDSP150に与えるように指示することができる。DSP150が「y」の選択値をサブミットする場合、デジタルコンポーネント選択プロセスにおいて使用される選択値はx + yになる。しかしながら、DSP150は、デジタルコンポーネントが選択される場合に第1の選択値または第2の選択値のプロセスにおいてy以下の量を提供することのみを要求される。プロセス300において、MPCクラスタ130は、SSP170によって提供される情報に従って選択値にブーストを適用することができる。たとえば、各SSP170は、DSP150およびパブリッシャ140の対にブーストをマッピングする情報を提供することができる。すなわち、情報は、特定のDSPの選択値が、特定のパブリッシャのコンテンツとともに表示するためのデジタルコンポーネントを選択しているデジタルコンポーネント選択プロセスのために特定の量だけブーストされるべきであることを示すことができる。いくつかの実施態様において、SSP/パブリッシャは、より粒度の高いレベルにおいてブーストをサポートすることができる。たとえば、各検索鍵について(たとえば、コンテキスト信号の各セットについて)、SSP/パブリッシャはブーストを指定することができる。 In general, boost is the amount by which the selected value of the digital component is adjusted. For example, a content publisher may instruct the SSP 170 to give a specified amount of 'x' boost to a particular DSP 150 when a digital component is selected for display with one of the publisher's resources 145 or application content. can give instructions. If the DSP 150 submits a selection value of 'y', the selection value used in the digital component selection process will be x+y. However, DSP 150 is only required to provide quantities less than or equal to y in the first selection value or second selection value process when a digital component is selected. In process 300 , MPC cluster 130 may apply boosts to selected values according to information provided by SSP 170 . For example, each SSP 170 may provide information mapping boosts to DSP 150 and publisher 140 pairs. That is, the information indicates that a particular DSP's selection value should be boosted by a particular amount for the digital component selection process that is selecting digital components for display with content from a particular publisher. be able to. In some implementations, the SSP/publisher can support boosting at a more granular level. For example, for each search key (eg, for each set of context signals) the SSP/publisher can specify a boost.

SSP170は、セキュアMPCクラスタ130に、DSP150を、異なる優先度を有する複数の階層に分割するように指示することができる。デジタルコンポーネント選択プロセスにおいてすべての候補デジタルコンポーネントの間で最高の選択値に対応するデジタルコンポーネントを選択するのではなく、最高優先度階層内の最高の選択値を有するデジタルコンポーネントが選択される。例示のために、最高階層および最低階層の2つの階層がある例を考える。最高階層内に1つまたは複数の候補デジタルコンポーネントがある場合、たとえ最低階層内の候補デジタルコンポーネントが、最高階層内のすべての候補デジタルコンポーネントの選択値よりも高い選択値を有していたとしても、最高階層内の最高の選択値を有する候補デジタルコンポーネントが選択される。 SSP 170 may direct secure MPC cluster 130 to partition DSP 150 into multiple tiers with different priorities. Rather than selecting the digital component corresponding to the highest selection value among all candidate digital components in the digital component selection process, the digital component with the highest selection value within the highest priority hierarchy is selected. To illustrate, consider an example where there are two tiers, the highest tier and the lowest tier. If there is one or more candidate digital components in the highest tier, even if the candidate digital component in the lowest tier has a higher selection value than all candidate digital components in the highest tier , the candidate digital component with the highest selection value in the highest hierarchy is selected.

第1の値の選択プロセスと第2の値の選択プロセスとの間の主な差は、選択されるデジタルコンポーネントのクリア量である。クリア量は、デジタルコンポーネントの表示のためにDSP150によってパブリッシャ140および/またはSSP170に提供される必要がある量である。同じデジタルコンポーネントが、両方のプロセスを使用して選択される。第1の値の選択プロセスにおいて、DSP150は、パブリッシャ140および/またはSSP170に、DSP150によってサブミットされる選択値に等しい量を提供することを要求される。第2の値の選択プロセスにおいて、DSP150は、代わりに2番目に高い選択値に基づく量を提供することを要求される。第2の選択値のプロセスとともに階層が使用される場合、2番目に高い値は、選択されるデジタルコンポーネントと同じ階層内の2番目に高い値になる。同じ階層内にそのような候補デジタルコンポーネントがない場合、2番目に高い値は、デジタルコンポーネント選択プロセスの最小値であり得る。 The main difference between the first value selection process and the second value selection process is the amount of clearing of the selected digital component. A clear amount is an amount that needs to be provided by DSP 150 to publisher 140 and/or SSP 170 for display of the digital component. The same digital component is selected using both processes. In the first value selection process, DSP 150 is required to provide publisher 140 and/or SSP 170 with an amount equal to the selection value submitted by DSP 150 . In the second value selection process, DSP 150 is asked to provide a quantity based on the second highest selected value instead. If a hierarchy is used with the second selection value process, the second highest value will be the second highest value within the same hierarchy as the selected digital component. If there are no such candidate digital components in the same hierarchy, the second highest value may be the minimum value of the digital component selection process.

選択値フロアは、パブリッシャ140がデジタルコンポーネントの表示のために許容しようとしている最小選択値を示すことができる。パブリッシャ140は、様々なDSP150、各カテゴリのデジタルコンポーネント(たとえば、自動車に関連するデジタルコンポーネントに対する1つのフロアおよびガーデニングに関連するデジタルコンポーネントに対するもう1つのフロア)、各デジタルコンポーネントプロバイダ160、各ブランド、パブリッシャのサイト上の各ページ、各デジタルコンポーネントスロット、デジタルコンポーネントスロットのグループ、および/またはデジタルコンポーネントの他のタイプのグループに対して選択値フロアを指定することができる。いくつかの実施態様において、SSP170が、前もって、または、たとえば段階Aの各デジタルコンポーネント要求に対して、パブリッシャ140の代わりにフロアを設定することができる。 A selection value floor may indicate the minimum selection value that the publisher 140 is willing to allow for display of the digital component. The publisher 140 has various DSPs 150, digital components for each category (e.g. one floor for digital components related to automobiles and another floor for digital components related to gardening), each digital component provider 160, each brand, publisher A selected value floor can be specified for each page, each digital component slot, group of digital component slots, and/or group of other types of digital components on the site of . In some embodiments, SSP 170 may set the floor in advance or on behalf of publisher 140 for each digital component request in phase A, for example.

DSP150は、選択値およびデジタルコンポーネントに関する追加の情報(たとえば、条件などの選択基準)をMPCクラスタ130に提供する(302)。いくつかの実施態様において、DSP150は、選択値および追加の情報を、SSP(簡潔にするために図3には示されていない)を介してMPCクラスタ130に提供する。たとえば、DSP150は、デジタルコンポーネント要求に応答して選択値および追加の情報を提供し、選択値に対応するデジタルコンポーネントを、MPCクラスタ130に記憶されているはずである、記憶されるデジタルコンポーネントとして指定することができる。 DSP 150 provides additional information (eg, selection criteria, such as conditions) regarding selection values and digital components to MPC cluster 130 (302). In some embodiments, DSP 150 provides selection values and additional information to MPC cluster 130 via an SSP (not shown in FIG. 3 for simplicity). For example, DSP 150 responds to a digital component request by providing selected values and additional information, and designates the digital component corresponding to the selected value as a stored digital component that should have been stored in MPC cluster 130. can do.

MPCクラスタ130は、クライアントデバイス110から受信される将来のデジタルコンポーネント要求に対する選択値および選択基準を記憶することができる。デジタルコンポーネントごとに、DSP150はまた、デジタルコンポーネントのための追加のデータ、たとえば、メタデータをアップロードすることができる。デジタルコンポーネントに関する追加の情報は、デジタルコンポーネントがデジタルコンポーネント選択プロセスに含まれるために満たされなければならない1つまたは複数の条件(および条件のパラメータ)を含むことができる。たとえば、追加の情報は、デジタルコンポーネントに対応するユーザグループの1つまたは複数のユーザグループ識別子を含むことができる。 MPC cluster 130 can store selection values and selection criteria for future digital component requests received from client device 110 . For each digital component, DSP 150 can also upload additional data, eg, metadata, for the digital component. Additional information about the digital component may include one or more conditions (and parameters of the conditions) that must be met for the digital component to be included in the digital component selection process. For example, the additional information can include one or more user group identifiers of user groups corresponding to the digital component.

デジタルコンポーネントに関する追加の情報は、デジタルコンポーネントがそれに対して適格であるコンテキスト、たとえば、クライアントデバイス110のロケーション、アプリケーション112のために選択された言語、デジタルコンポーネントがそれとともに提示され得るリソースのURL、および/または、デジタルコンポーネントがそれとともに提示され得ないリソースの除外されるURLを示す、コンテキスト選択信号を含むことができる。デジタルコンポーネントに関する追加の情報はまた、たとえば、一意識別子、デジタルコンポーネントがそこから取得され得るドメイン、および/またはデジタルコンポーネントのための他の適切なデータを使用して、デジタルコンポーネントを識別することができる。この追加の情報は、デジタルコンポーネントのメタデータとして含まれ得る。 Additional information about the digital component may include the context for which the digital component is eligible, such as the location of the client device 110, the language selected for the application 112, the URL of the resource with which the digital component may be presented, and /or may include a context selection signal that indicates an excluded URL for a resource with which the digital component may not be presented. Additional information about the digital component may also identify the digital component using, for example, a unique identifier, the domain from which the digital component may be obtained, and/or other suitable data for the digital component. . This additional information may be included as metadata for the digital component.

いくつかの実施態様において、MPCクラスタ130は、MPCクラスタ130に提供された、デジタルコンポーネントに対する選択値、選択基準および他の情報を、デジタルコンポーネント要求のためにキャッシュするかまたは他の様態で記憶する。この例では、デジタルコンポーネントおよび選択値のためのコンテキスト信号は、そのデジタルコンポーネント要求の中に含まれるコンテキスト信号を含むことができる。上述したように、選択値およびメタデータは2段階LUTに記憶することができる。 In some embodiments, MPC cluster 130 caches or otherwise stores selection values, selection criteria, and other information for digital components provided to MPC cluster 130 for digital component requests. . In this example, the context signal for the digital component and selection value can include the context signal included in the digital component request. As noted above, selection values and metadata can be stored in a two-stage LUT.

いくつかの実施態様において、DSP150は、デジタルコンポーネントの静的な選択値の代わりに、デジタルコンポーネントの値のユーザグループベースのベクトルを提供することができる。そのような例において、値のユーザグループベースのベクトルを、選択値の代わりに記憶することができる。 In some implementations, the DSP 150 can provide a user group-based vector of digital component values instead of statically selected values for the digital components. In such an example, a user group-based vector of values can be stored instead of the selection values.

クライアントデバイス110がコンテンツを受信する(304)。たとえば、クライアントデバイス110は、ネイティブアプリケーションによる表示用のウェブブラウザまたはアプリケーションコンテンツによる表示のために、電子リソース(たとえば、ウェブページ)を受信することができる。コンテンツは、コンピュータ可読コード、たとえば、実行されたとき、各スロットに対してクライアントデバイス110にデジタルコンポーネントを要求させるスクリプトを含む、1つまたは複数のデジタルコンポーネントスロットを含むことができる。クライアントデバイス110は、クライアントデバイス110のディスプレイ上でコンテンツをレンダリングすることができる。 Client device 110 receives the content (304). For example, client device 110 can receive electronic resources (eg, web pages) for display by a web browser or application content for display by native applications. The content may include one or more digital component slots containing computer readable code, eg, a script that, when executed, causes client device 110 to request a digital component for each slot. A client device 110 can render content on a display of the client device 110 .

クライアントデバイス110が、ユーザグループ識別子のセットを識別する(306)。ユーザグループ識別子のセットは、メンバーとしてユーザを含むユーザグループのユーザグループ識別子とすることができる。たとえば、ユーザグループ識別子のセットは、ユーザグループリスト内のユーザグループ識別子であり得る。コンテンツをレンダリングするアプリケーション112または信頼されるプログラムは、たとえば、クライアントデバイス110のセキュアなストレージからユーザグループリストにアクセスすることによって、ユーザグループ識別子のセットを識別することができる。 The client device 110 identifies (306) a set of user group identifiers. A set of user group identifiers may be user group identifiers of user groups that include the user as a member. For example, the set of user group identifiers may be user group identifiers in a user group list. An application 112 or trusted program rendering content may identify the set of user group identifiers, for example, by accessing the user group list from secure storage of the client device 110 .

クライアントデバイス110は、確率的データ構造を生成する(308)。機密情報に基づいてデジタルコンポーネント要求をセキュアかつ効率的に生成するために、アプリケーション112は、カッコウフィルタまたはブルームフィルタなどの、確率的データ構造を使用することができる。この例では、確率的データ構造は、カッコウフィルタである。ブルームフィルタを使用する例は、図8を参照して説明される。概して、カッコウフィルタは、バケットの配列を含み、各バケットは、b個のフィンガープリントを保持することができる。アイテムのフィンガープリントは、そのアイテムのハッシュから導出されるビット列である。カッコウフィルタは、アイテムが、b個の位置のいずれかにあるn個の異なるバケット内に配置されることを可能にするn個のハッシュ関数を使用する。典型的には、カッコウフィルタは、各バケット内のフィンガープリントの数およびバケットの数によって識別される。たとえば、(2, 4)カッコウフィルタは、2個のバケットを有し、カッコウ配列内の各バケットは、最大4個のフィンガープリントを記憶することができる。したがって、カッコウフィルタの合計容量は、2 x 4すなわち8個のフィンガープリントである。 Client device 110 generates a probabilistic data structure (308). To securely and efficiently generate digital component requests based on sensitive information, application 112 may use probabilistic data structures, such as Cuckoo filters or Bloom filters. In this example, the probabilistic data structure is a cuckoo filter. An example using Bloom filters is described with reference to FIG. In general, a Cuckoo filter contains an array of buckets, each of which can hold b fingerprints. An item's fingerprint is a string of bits derived from the hash of that item. The Cuckoo filter uses n hash functions that allow items to be placed in n different buckets at any of b positions. Typically, Cuckoo filters are identified by the number of fingerprints in each bucket and the number of buckets. For example, a (2, 4) Cuckoo filter has 2 buckets and each bucket in the Cuckoo array can store up to 4 fingerprints. The total capacity of the Cuckoo filter is therefore 2 x 4 or 8 fingerprints.

カッコウフィルタの構成に応じて、アイテムは、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はカッコウフィルタのバケット内の各アイテムのビット数である。 Depending on the configuration of the Cuckoo filter, an item can be inserted into the Cuckoo filter in one of N possible positions, eg N=2. Application 112 uses N pseudorandom functions (PRFs) parameterized by an identifier from a user group identifier or a set of blocked identifiers and one of two random variables generated by application 112 to Determine all possible positions where the item will be inserted. For example, assume two random variables generated by application 112 are rand_var1a and rand_var1b. In some implementations, application 112 and MPC cluster 130 pre-agreement on the PRF, where PRF(x,y) ∈ [0,2 k −1], where k is each item in the bucket of the cuckoo filter. is the number of bits in

カッコウフィルタの各位置は、ユーザグループ識別子もしくはブロックされた識別子によって占有され得るか、または空であり得る。ブロックされた識別子は、アプリケーション112が、たとえば、頻度制御に基づいてデジタルコンポーネントをブロックしている識別子、または、ユーザがユーザグループのデジタルコンポーネントをブロックすることを選択した識別子である。アプリケーション112は、カッコウフィルタテーブルを生成することができ、その要素は、PRF(ug_id, rand_var1a)、PRF(blocked_uid, rand_var1b)、および0であり、ug_idは、コンテンツプロバイダのドメインに基づいてユーザグループのラベルにHMACを適用することによって生成されるユーザグループの識別子であり、blocked_uidは、ブロックされた識別子のセットからの識別子であり、0は空のアイテムを表す。プロセスは、すべてのユーザグループ識別子に対して繰り返される。いくつかの実施態様において、たとえばカッコウフィルタまたはブルームフィルタなどの同じ確率的データ構造が、ユーザグループ識別子とブロックされた識別子の両方を記憶することができる。他の実施態様において、ユーザグループ識別子およびブロックされた識別子は、専用の確率的データ構造に記憶される。 Each position of the cuckoo filter may be occupied by a user group identifier or blocked identifier, or may be empty. A blocked identifier is an identifier for which application 112 has blocked a digital component, eg, based on frequency control, or an identifier for which a user has chosen to block a digital component for a group of users. Application 112 can generate a cuckoo filter table whose elements are PRF(ug_id, rand_var1a), PRF(blocked_uid, rand_var1b), and 0, where ug_id is the is the user group identifier generated by applying HMAC to the label, blocked_uid is an identifier from the set of blocked identifiers, and 0 represents an empty item. The process is repeated for all user group identifiers. In some implementations, the same probabilistic data structure, such as a Cuckoo filter or a Bloom filter, can store both user group identifiers and blocked identifiers. In another embodiment, user group identifiers and blocked identifiers are stored in dedicated probabilistic data structures.

アプリケーション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のいずれも秘密シェアの両方にアクセスすることができないため、これらの計算システムのいずれも、ユーザプライバシーを保持しながらカッコウフィルタテーブルを再作成することはできない。 Application 112 may generate vector B based on a cuckoo filter table generated for user group identifiers and/or blocked identifiers. each value B in vector Biis Bi = (Ai- PRF(rand_var2, i)) mod p, where A is the Cuckoo filter table and i is the vector B and the Cuckoo filter table A index. When application 112 initiates a request for a digital component in a digital component slot, application 112 sends rand_var1a, rand_var1b and rand_var2 as parameters of the request to computing system MPC1. Application 112 also sends vector B, rand_var1a and rand_var1b as parameters of the request to computing system MPC2. PRF(rand_var2, i) and Biare maintained by computational systems MPC1 and MPC2, respectively, ZpA iniis the two additive secret shares of . Since neither computing system MPC1 nor MPC2 has access to both secret shares, neither of these computing systems can recreate the Cuckoo filter table while preserving user privacy.

クライアントデバイス110は、MPCクラスタ130に、カッコウフィルタのパラメータを含むデジタルコンポーネント要求を送信する(310)。たとえば、クライアントデバイス110は、計算システムMPC1に、rand_var1a、rand_var1bおよびrand_var2を含むデジタルコンポーネント要求を送信することができる。クライアントデバイス110はまた、計算システムMPC2に、ベクトルB、rand_var1aおよびrand_var1bを含むデジタルコンポーネント要求を送信することもできる。両方のデジタルコンポーネント要求はまた、たとえば、電子リソースのURL、リソースのデジタルコンポーネントスロットの数、クライアントデバイス110の地理的位置、および/または、デジタルコンポーネントを選択するために使用することができる、たとえば、検索鍵などの他の適切なコンテキスト信号などの、コンテキスト信号も含むことができる。 Client device 110 sends (310) to MPC cluster 130 a digital component request that includes the parameters of the cuckoo filter. For example, client device 110 may send computing system MPC1 a digital component request that includes rand_var1a, rand_var1b, and rand_var2. Client device 110 may also send computing system MPC2 a digital component request that includes vector B, rand_var1a and rand_var1b. Both digital component requests can also be used to select, for example, the URL of the electronic resource, the number of digital component slots in the resource, the geographic location of the client device 110, and/or the digital component. Context signals may also be included, such as other suitable context signals such as search keys.

MPCクラスタ130は、コンテキストデジタルコンポーネント要求をSSP170に送信する(312)。このデジタルコンポーネント要求は、コンテキスト信号を含み得るが、ユーザをメンバーとして含むユーザグループを識別するユーザグループ識別子などの機密ユーザデータは含まない。いくつかの実施態様において、コンテキストデジタルコンポーネント要求は、クライアントデバイス110上でレンダリングされているパブリッシャのページ上のSSPのタグによって生成されたものである。アプリケーション112は、動作310において送信されるデジタルコンポーネント要求にピギーバックすることによって、MPCクラスタ130を介してSSP170にコンテキストデジタルコンポーネント要求を送信する。いくつかの実施態様において、アプリケーション112は、SSP170の公開鍵を使用してコンテキストデジタルコンポーネント要求を暗号化し、動作310において送信されるデジタルコンポーネント要求にピギーバックすることによって、暗号化コンテキストデジタルコンポーネント要求をSSP170に送信し、結果、SSP170以外の誰もコンテキストデジタルコンポーネントを復号することができない。 MPC cluster 130 sends a contextual digital component request to SSP 170 (312). This digital component request may contain context signals, but does not contain sensitive user data such as a user group identifier that identifies the user group of which the user is a member. In some implementations, the contextual digital component request was generated by the SSP's tag on the publisher's page being rendered on the client device 110 . Application 112 sends a contextual digital component request to SSP 170 via MPC cluster 130 by piggybacking on the digital component request sent in operation 310 . In some implementations, application 112 encrypts the context digital component request using SSP 170's public key and piggybacks on the digital component request sent in operation 310 to encrypt the context digital component request. SSP 170 so that no one but SSP 170 can decode the context digital component.

SSP170は、コンテキストデジタルコンポーネント要求を1つまたは複数のDSP150に送信する(314)。各DSP150は、デジタルコンポーネントの1つまたは複数の条件付き選択値および/またはデジタルコンポーネントの1つまたは複数の無条件選択値によって、要求に応答することができる。各デジタルコンポーネントについて、応答は、デジタルコンポーネントを識別するデータ、デジタルコンポーネントの選択値、およびデジタルコンポーネントのメタデータ(または他の追加の情報)を含むことができる。たとえば、応答は、各デジタルコンポーネントのデジタルコンポーネント情報要素dc_information_elementを含むことができる。各DSP150は、コンテキスト信号に基づいてデジタルコンポーネント選択プロセスに含めるための1つまたは複数のデジタルコンポーネントを選択し、各選択されるデジタルコンポーネントの選択値を決定または識別することができる。いくつかの実施態様において、DSP150は、コンテキスト信号に基づいて1つまたは複数のデジタルコンポーネントの各々のコンテキストベクトルを生成することができる。 SSP 170 sends a contextual digital component request to one or more DSPs 150 (314). Each DSP 150 can respond to requests with one or more conditionally selected values for the digital component and/or one or more unconditionally selected values for the digital component. For each digital component, the response may include data identifying the digital component, selected values for the digital component, and metadata (or other additional information) for the digital component. For example, the response may include a digital component information element dc_information_element for each digital component. Each DSP 150 can select one or more digital components for inclusion in the digital component selection process based on the context signal and determine or identify a selection value for each selected digital component. In some implementations, DSP 150 may generate a context vector for each of one or more digital components based on the context signal.

各DSP150は、その応答をSSP170に送信することができる(316)。SSP170は、応答をMPCクラスタ130に送信することができる(318)。いくつかの実施態様において、SSP170は、応答をMPCクラスタ130に送信する前に、デジタルコンポーネント選択プロセスに対して1つまたは複数のフロアを適用することができる。SSP170は、デジタルコンポーネントが選択されている電子リソースのパブリッシャ140に基づいてフロアを適用することができる。上述したように、パブリッシャ140は、DSP150、デジタルコンポーネントのカテゴリ、デジタルコンポーネントプロバイダ160、ブランド、および/または他のタイプのデジタルコンポーネントのグループに対して、フロアを指定することができる。 Each DSP 150 may send its response to SSP 170 (316). SSP 170 may send the response to MPC cluster 130 (318). In some implementations, SSP 170 may apply one or more floors to the digital component selection process before sending the response to MPC cluster 130 . The SSP 170 may apply the floor based on the electronic resource publisher 140 whose digital component is selected. As discussed above, publishers 140 may designate floors for DSPs 150, categories of digital components, digital component providers 160, brands, and/or groups of other types of digital components.

SSP170は、パブリッシャ140によって指定されているフロアを識別し、それらをDSP150から受信される選択値に適用することができる。選択値が対応するフロアよりも小さい場合、SSP170は、たとえば、選択値をMPCクラスタ130に提供しないことによって、選択値をデジタルコンポーネント選択プロセスから除去することができる。たとえば、パブリッシャ140が、所与のデジタルコンポーネントプロバイダ160に対して、5単位のフロアを指定したと仮定する。DSP150が、所与のデジタルコンポーネントプロバイダ160のデジタルコンポーネントに対して4単位の選択値を提供した場合、SSP170は、デジタルコンポーネント選択プロセスから選択値をフィルタリングすることができる。 SSP 170 can identify the floors specified by publisher 140 and apply them to the selection values received from DSP 150 . If the selection value is less than the corresponding floor, SSP 170 may remove the selection value from the digital component selection process by, for example, not providing the selection value to MPC cluster 130 . For example, assume a publisher 140 has specified 5 units of floors for a given digital component provider 160 . If DSP 150 provided a selection value of 4 units for a digital component of a given digital component provider 160, SSP 170 can filter the selection value from the digital component selection process.

上述したように、DSP150は、将来のデジタルコンポーネントプロセスに使用するために記憶される、記憶されるデジタルコンポーネントの選択値を提供することができる。これらの選択値が対応するフロアを満たさない場合、デジタルコンポーネントおよびそれらの関連する選択値は、SSP170がそれらをMPCクラスタ130に転送しないため、MPCクラスタ130に記憶されない。 As described above, the DSP 150 can provide stored digital component selection values that are stored for use in future digital component processes. If these selection values do not fill the corresponding floor, the digital components and their associated selection values are not stored in MPC cluster 130 because SSP 170 does not forward them to MPC cluster 130 .

いくつかの実施態様において、SSP170ではなく、またはそれに加えて、MPCクラスタクラスタ130が、フロアを執行する。MPCクラスタ130は、選択値を決定するためにベクトルが使用される場合にベクトルのドット積を計算するため、MPCクラスタ130は、これらの選択値に対してフロアを執行することができる。たとえば、SSP170ではなく、MPCクラスタ130がまた、静的な選択値に対してもフロアを執行することができる。 In some embodiments, MPC cluster cluster 130, rather than or in addition to SSP 170, enforces the floor. Because MPC cluster 130 computes the dot product of vectors when vectors are used to determine selection values, MPC cluster 130 can enforce floors on these selection values. For example, the MPC cluster 130, rather than the SSP 170, can also enforce floors for static selection values.

MPCクラスタ130は、セキュアMPCプロセスを実施して、クライアントデバイス110における表示のために提供するためのデジタルコンポーネントを選択する(320)。この選択は、たとえば、図1を参照しながら上述した第1段階検索鍵などの検索鍵を使用して、コンテキスト信号に基づいてデジタルコンポーネント選択プロセスに対して適格であるデジタルコンポーネントのセットおよびそれらの対応する選択値を識別することを含むことができる。これはまた、デジタルコンポーネントのセットから、選択のための候補である候補デジタルコンポーネントを識別することも含むことができる。候補デジタルコンポーネントは、DSP150が選択値を提供した無条件デジタルコンポーネント、および、デジタルコンポーネントの各条件が満たされる条件付きデジタルコンポーネントを含むことができる。条件付きデジタルコンポーネントは、デジタルコンポーネントのすべての条件が満たされる場合にのみ、デジタルコンポーネント選択プロセスの候補と考えられる。 MPC cluster 130 performs a secure MPC process to select digital components to provide for display on client device 110 (320). This selection is based on the context signal using a search key, such as the first stage search key described above with reference to FIG. It can include identifying a corresponding selection value. This can also include identifying candidate digital components that are candidates for selection from the set of digital components. Candidate digital components can include unconditional digital components for which DSP 150 has provided selection values, and conditional digital components for which each condition of the digital component is satisfied. A conditional digital component is considered a candidate for the digital component selection process only if all the conditions of the digital component are met.

MPCクラスタ130は、候補デジタルコンポーネントの選択値に基づいて、候補デジタルコンポーネントから、デジタルコンポーネント要求に応答してクライアントデバイス110に提供するためのデジタルコンポーネントを選択することができる。ベクトルを使用して決定された選択値を有するデジタルコンポーネントについて、MPCクラスタ130は、たとえば、ユーザグループベースのベクトル、コンテキストベクトル、および任意選択的にユーザプロファイルベクトルなどのベクトルのドット積を決定することによって、デジタルコンポーネントの選択値を決定することができる。 MPC cluster 130 may select from the candidate digital components a digital component for provision to client device 110 in response to the digital component request based on the selection values of the candidate digital components. For digital components with selected values determined using vectors, the MPC cluster 130 determines the dot product of vectors such as, for example, a user group-based vector, a context vector, and optionally a user profile vector. can determine the selected value of the digital component.

デジタルコンポーネントの選択において、MPCクラスタ130は、デジタルコンポーネントの任意の階層またはブーストも考慮することができる。上述したように、パブリッシャ140は、DSP150および/またはデジタルコンポーネントプロバイダ160の階層および/またはブーストを確立することができる。そのデジタルコンポーネントが選択されているパブリッシャ140がブーストを確立した場合、MPCクラスタ130(またはSSP170)は、パブリッシャ140によって指定される対応するブーストを使用してDSP150および/またはデジタルコンポーネントプロバイダ160のデジタルコンポーネントの選択値を調整することができる。選択値を決定するためにベクトルが使用される場合、MPCクラスタ130は、ベクトルのドット積を計算することによって選択値が決定された後に選択値を調整することができる。 In selecting digital components, the MPC cluster 130 can also consider any hierarchy or boost of digital components. As noted above, publisher 140 may establish a hierarchy and/or boost of DSPs 150 and/or digital component providers 160 . If the publisher 140 whose digital component is selected establishes a boost, the MPC cluster 130 (or SSP 170) uses the corresponding boost specified by the publisher 140 to boost the digital component of the DSP 150 and/or the digital component provider 160. can be adjusted. If a vector is used to determine the selection value, MPC cluster 130 can adjust the selection value after the selection value is determined by computing the dot product of the vectors.

階層が使用される場合、MPCクラスタ130は、各階層について、たとえば、最高優先度階層から最低優先度へと順次的にまたは並列に選択プロセスを実施することができる。MPCクラスタ130は、少なくとも1つの候補デジタルコンポーネントを含む最高優先度階層内の最高の選択値を有するデジタルコンポーネントを選択することができる。たとえば、最高優先度階層内のデジタルコンポーネントのいずれもが、たとえば、デジタルコンポーネント選択プロセスに含めるためのその条件のすべてを満たす候補でない場合、MPCクラスタ130は、候補を含む2番目に高い優先度の階層から候補を選択する。 If hierarchies are used, the MPC cluster 130 may perform the selection process for each hierarchy, eg, from highest priority hierarchy to lowest priority, either sequentially or in parallel. MPC cluster 130 may select the digital component with the highest selection value in the highest priority hierarchy that contains at least one candidate digital component. For example, if none of the digital components in the highest priority hierarchy are candidates that meet all of their conditions for inclusion in, for example, the digital component selection process, the MPC cluster 130 selects the next highest priority containing candidates. Select a candidate from a hierarchy.

MPCクラスタ130は、選択プロセスが実施される速度を改善するために、各階層について並列に選択プロセスを実施することができる。このように、最高優先度階層内に候補がない場合、MPCクラスタ130は、各他の階層の選択プロセスをすでに開始しており、完了している場合があり、結果、最後のデジタルコンポーネントが選択され得る。 MPC cluster 130 may perform the selection process for each layer in parallel to improve the speed at which the selection process is performed. Thus, if there are no candidates in the highest priority tier, the MPC cluster 130 has already begun and may have completed the selection process for each other tier, resulting in the last digital component being selected. can be

MPCクラスタ130は、最高優先度階層から最低優先度階層へと順次的に選択プロセスを実施することができる。速度がそれほど重要でない場合、これによって、最高優先度階層が候補デジタルコンポーネントを含む場合に、最低優先度階層について実施される無駄な計算を低減することができる。セキュアMPCプロセスを使用してデジタルコンポーネントを選択するための例示的なプロセスは図4に示されており、下記に説明する。 MPC cluster 130 may perform the selection process sequentially from the highest priority tier to the lowest priority tier. If speed is less important, this can reduce the wasteful computations performed on the lowest priority tier when the highest priority tier contains the candidate digital component. An exemplary process for selecting digital components using the secure MPC process is shown in FIG. 4 and described below.

MPCクラスタ130は、選択結果の秘密シェアをクライアントデバイス110に送信する(322)。いくつかの実施態様において、MPCクラスタ130はまた、デジタルコンポーネント選択プロセスの選択プロセス識別子も、クライアントデバイス110に送信することができる。選択プロセス識別子は、選択結果が生成されたデジタルコンポーネント選択プロセスを一意に識別することができる。たとえば、計算システムMPC1およびMPC2は、各々、計算システムMPC1およびMPC2がそれに対してクライアントデバイス110に提供するための選択結果を生成するための選択プロセスを実施する各デジタルコンポーネント要求について、それぞれの選択プロセス識別子SPIDを生成することができる。いくつかの実施態様において、選択プロセス識別子SPIDは、ノンスまたは不透明な英数字もしくは数字列であり得る。 MPC cluster 130 sends the resulting secret share to client device 110 (322). In some implementations, MPC cluster 130 may also transmit a selection process identifier for the digital component selection process to client device 110 . A selection process identifier may uniquely identify the digital component selection process from which the selection results were generated. For example, computing systems MPC1 and MPC2 each perform a selection process for generating a selection result for computing systems MPC1 and MPC2 to provide to client device 110 for each digital component request. An identifier SPID can be generated. In some embodiments, the selection process identifier SPID can be a nonce or an opaque alphanumeric or numeric string.

MPCクラスタ130はまた、SPIDによって鍵を付けられたか、または、他の様態でSPIDにリンクされた選択プロセスの一部であった選択値のためのデータも記憶することができる。たとえば、計算システムMPC1は、選択プロセスについて計算システムMPC1によって生成されるSPID1に基づく鍵を有する選択値のためのデータを含むテーブルまたは他のデータ構造を記憶することができる。同様に、計算システムMPC2は、選択プロセスについて計算システムMPC2によって生成されるSPID2に基づく鍵を有する選択値のためのデータを含むテーブルまたは他のデータ構造を記憶することができる。これによって、MPCクラスタ130は、クライアントデバイス110から受信されるデータに基づいてフィードバックコントローラのためにプロセス変数を更新することが可能になる。 The MPC cluster 130 may also store data for selection values that were part of the selection process that were keyed by the SPID or otherwise linked to the SPID. For example, computing system MPC1 may store a table or other data structure containing data for selection values with keys based on SPID 1 generated by computing system MPC1 for the selection process. Similarly, computing system MPC2 may store a table or other data structure containing data for selection values with keys based on SPID 2 generated by computing system MPC2 for the selection process. This allows the MPC cluster 130 to update process variables for the feedback controller based on data received from the client device 110 .

選択結果は、選択されるデジタルコンポーネントに関する情報を含むバイト配列の形態であり得る。たとえば、選択結果は、第2のLUTの中のデジタルコンポーネントに対する値、たとえば、デジタルコンポーネントに対する選択値およびデジタルコンポーネントのためのメタデータを含む、バイト配列であり得る。計算システムMPC1およびMPC2は、下記により詳細に説明するように、セキュアMPCプロセスを使用して、選択結果の秘密シェアを決定することができる。計算システムMPC1は、選択結果の第1の秘密シェアをクライアントデバイス110に送信することができ、計算システムMPC2は、選択結果の第2の秘密シェアをクライアントデバイス110に送信することができる。選択されたデジタルコンポーネントを計算システムMPC1およびMPC2が知ることを阻止するために、計算システムMPC1およびMPC2は、選択結果のそれらの秘密シェアを互いに共有することが阻止され得る。 The selection result may be in the form of a byte array containing information about the digital component selected. For example, the selection result may be a byte array containing values for the digital components in the second LUT, eg, selection values for the digital components and metadata for the digital components. Computing systems MPC1 and MPC2 may use a secure MPC process to determine the secret share of the selection result, as described in more detail below. Computing system MPC1 may transmit a first secret share of the selection result to client device 110 and computing system MPC2 may transmit a second secret share of the selection result to client device 110 . To prevent computing systems MPC1 and MPC2 from knowing the selected digital component, computing systems MPC1 and MPC2 may be prevented from sharing with each other their secret share of the selection result.

クライアントデバイス110は、選択結果に対応するデジタルコンポーネントを決定する(324)。クライアントデバイス110がそれに対して計算システムMPC1およびMPC2から2つの秘密シェアを受信する選択結果ごとに、クライアントデバイス110は、2つの秘密シェアから選択結果を決定することができる。たとえば、下記により詳細に説明するような加法的秘密シェアライブラリを使用して、クライアントデバイス110は、選択結果の2つの秘密シェアを一緒に加算して選択結果を平文で取得することができる。このことは、デジタルコンポーネントに対する選択値、およびデジタルコンポーネントのためのメタデータ、たとえば、デジタルコンポーネントの識別情報、クライアントデバイス110がそこからデジタルコンポーネントをダウンロードできるロケーションなどへのアクセスを、クライアントデバイス110に与える。 Client device 110 determines (324) a digital component corresponding to the selection result. For each selection result for which client device 110 receives two secret shares from computing systems MPC1 and MPC2, client device 110 can determine the selection result from the two secret shares. For example, using an additive secret share library as described in more detail below, the client device 110 can add together two secret shares of the selection result to obtain the selection result in plaintext. This gives the client device 110 access to selection values for the digital component and metadata for the digital component, such as identification of the digital component, locations from which the client device 110 can download the digital component, and the like. .

クライアントデバイス110は、デジタルコンポーネントを表示する(326)。たとえば、アプリケーション112が、ステップ304において受信したコンテンツを有するデジタルコンポーネントを表示することができる。いくつかの実施態様において、クライアントデバイス110は、選択結果のデジタルコンポーネントを表示することができる。 Client device 110 displays 326 the digital component. For example, application 112 may display the digital component with the content received at step 304 . In some implementations, client device 110 can display a digital component of the selection results.

いくつかの実装形態では、クライアントデバイス110は、MPCクラスタ130からのユーザグループメンバーシップに基づいてデジタルコンポーネントを要求することができる。クライアントデバイス110はまた、SSP170からのコンテキスト信号に基づいてデジタルコンポーネントを要求することができる。これらのコンテキスト信号は、上記で説明した同じコンテキスト信号、および任意選択で、リソースのデジタルコンポーネントスロットの数、デジタルコンポーネントスロットのタイプ、リソースとともに表示され得るデジタルコンポーネントのタイプおよび/またはフォーマットなどの、追加のコンテキスト信号を含むことができる。SSP170は、デジタルコンポーネントに対するコンテキスト信号および選択値に基づいて1つまたは複数のデジタルコンポーネントを選択することができ、選択されたデジタルコンポーネント(または、デジタルコンポーネントを識別するデータ)およびデジタルコンポーネントに対する選択値のうちの1つまたは複数を、クライアントデバイス110に提供することができる。クライアントデバイス110は、次いで、MPCクラスタ130から受信された選択結果のデジタルコンポーネント、およびSSP170によって選択されたデジタルコンポーネントを含む、デジタルコンポーネントのセットから、リソースとともに表示するためのデジタルコンポーネントを選択することができる。リソースが複数のデジタルコンポーネントスロットを含む場合、クライアントデバイス110は、スロットごとにそれぞれのデジタルコンポーネントをMPCクラスタ130およびSSP170に要求することができる。 In some implementations, client device 110 can request digital components based on user group membership from MPC cluster 130 . Client device 110 may also request digital components based on context signals from SSP 170 . These context signals may be the same context signals described above, and optionally additional information such as the number of digital component slots for the resource, the type of digital component slots, the type and/or format of the digital components that may be displayed with the resource. context signal. The SSP170 is capable of selecting one or more digital components based on the context signal and selection values for the digital components, and determining the selected digital components (or data identifying the digital components) and the selection values for the digital components. One or more of which may be provided to client device 110 . Client device 110 may then select a digital component for display with the resource from a set of digital components, including the digital component of the selection result received from MPC cluster 130 and the digital component selected by SSP 170 . can. If a resource includes multiple digital component slots, client device 110 can request a respective digital component from MPC cluster 130 and SSP 170 for each slot.

クライアントデバイス110は、1つまたは複数のイベント通知をMPCクラスタ130に送信する(328)。たとえば、MPCクラスタ130から受信される選択結果のデジタルコンポーネントがクライアントデバイス110のアプリケーション112によって表示されると仮定すると、アプリケーション112は、デジタルコンポーネントの表示に応答してデジタルコンポーネントのインプレッション通知を送信することができる。別の例において、アプリケーション112は、たとえば、デジタルコンポーネントの選択/クリックなどのユーザインタラクションの検出に応答してユーザインタラクション通知を送信することができる。 Client device 110 sends one or more event notifications to MPC cluster 130 (328). For example, assuming that the digital components of the selection results received from the MPC cluster 130 are displayed by the application 112 on the client device 110, the application 112 will send an impression notification of the digital components in response to the display of the digital components. can be done. In another example, application 112 can send a user interaction notification in response to detecting a user interaction such as, for example, selecting/clicking a digital component.

ユーザインタラクション通知について、アプリケーション112は、ユーザがデジタルコンポーネントとインタラクトした場合は1の値を有することができ、または、デジタルコンポーネントが表示された後の指定の持続時間以内にユーザがデジタルコンポーネントとインタラクトしなかった場合は0の値を有することができるブールパラメータであるクリックパラメータclickedの秘密シェアを生成することができる。したがって、この例において、いずれの値も、デジタルコンポーネントが表示されることを示すが、1の値が、ユーザがデジタルコンポーネントとインタラクトしたことを示すことができる。アプリケーション112は、コンピュータシステムMPC1に、計算システムMPC1から受信されるSPID1およびクリックパラメータの第1の秘密シェア[clicked1]を含む第1の通知を送信することができる。同様に、アプリケーション112は、コンピュータシステムMPC2に、計算システムMPC2から受信されるSPID2およびクリックパラメータの第2の秘密シェア[clicked2]を含む第2の通知を送信することができる。別の例において、通知は、たとえば、クリックパラメータと同様の秘密シェアを使用して、デジタルコンポーネントがクライアントデバイス110において表示されたか否かを別個に示すことができる。 For user interaction notification, application 112 can have a value of 1 if the user has interacted with the digital component, or if the user has interacted with the digital component within a specified duration of time after the digital component is displayed. We can generate a secret share for the click parameter clicked, which is a boolean parameter that can have a value of 0 if it wasn't there. Thus, in this example, any value indicates that the digital component is displayed, but a value of 1 can indicate that the user has interacted with the digital component. Application 112 may send computer system MPC1 a first notification that includes SPID 1 and a first secret share of click parameters [clicked 1 ] received from computing system MPC1. Similarly, application 112 may send computer system MPC2 a second notification including SPID 2 received from computing system MPC2 and a second secret share of click parameters [clicked 2 ]. In another example, the notification can separately indicate whether or not the digital component was displayed at the client device 110, eg, using secret shares similar to click parameters.

インプレッションおよびユーザインタラクション通知は、MPCクラスタ130が、デジタルコンポーネントを配信するペースを調整するために使用されるフィードバックコントローラのプロセス変数を更新することを可能にする。たとえば、プロセス変数がインプレッション率である場合、MPCクラスタ130は、インプレッション通知を使用して、デジタルコンポーネント(またはデジタルコンポーネントを含むキャンペーン)のインプレッションのカウントを更新することができる。プロセス変数がユーザインタラクション率である場合、MPCクラスタ130は、クリックパラメータを使用して、デジタルコンポーネント(またはデジタルコンポーネントを含むキャンペーン)に対するユーザインタラクションの数を更新することができる。特定の例において、計算システムMPC1は、SPID1を使用して、選択プロセスの記憶されているデータを得ることができ、計算システムMPC2は、SPID2を使用して、選択プロセスの記憶されているデータを得ることができる。次いで、MPCクラスタ130は、セキュアMPCプロセスを実施して、アプリケーション112によって表示されたデジタルコンポーネントのキャンペーンのプロセス変数(たとえば、インプレッション率、インタラクション率、コンバージョン率、および/またはリソース枯渇率)を更新することができる。同様に、MPCクラスタ130は、これらの通知を使用して、デジタルコンポーネントがk-匿名性条件を満たすか否かを判定するために使用されるカウントを更新することができる。 Impression and user interaction notifications enable the MPC cluster 130 to update process variables in feedback controllers used to pace the delivery of digital components. For example, if the process variable is impression rate, the MPC cluster 130 can use impression notifications to update the count of impressions for the digital component (or campaigns containing the digital component). If the process variable is user interaction rate, the MPC cluster 130 can use the click parameter to update the number of user interactions for the digital component (or campaign containing the digital component). In a particular example, computing system MPC1 can use SPID 1 to obtain the stored data of the selection process, and computing system MPC2 can use SPID 2 to obtain the stored data of the selection process. data can be obtained. The MPC cluster 130 then implements a secure MPC process to update process variables (eg, impression rate, interaction rate, conversion rate, and/or resource exhaustion rate) of digital component campaigns displayed by application 112. be able to. Similarly, MPC cluster 130 can use these notifications to update counts used to determine whether a digital component satisfies the k-anonymity condition.

図4は、クライアントデバイスへの配信用のデジタルコンポーネントを選択するための例示的なプロセス400のスイムレーン図である。プロセス400の動作は、たとえば、MPCクラスタ130の計算システムMPC1または計算システムMPC2によって実施され得る。プロセス400の動作は、非一時的であり得る、1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス400の動作を実行させ得る。 FIG. 4 is a swimlane diagram of an exemplary process 400 for selecting digital components for delivery to client devices. The operations of process 400 may be performed by computing system MPC1 or computing system MPC2 of MPC cluster 130, for example. The operations of process 400 may be implemented as instructions stored on one or more computer-readable media, which may be non-transitory, and execution of the instructions by one or more data processing devices may occur in one Or, multiple data processing devices may perform the operations of process 400 .

プロセス400は、第1の値の選択プロセス、第2の値の選択プロセス、ならびに/または、ブーストおよび/もしくはフロアを含む選択プロセスに使用することができる。これらの変形の各々は、下記に説明する。図5に示す別の例示的なプロセス500は、階層を含む選択プロセスに使用することができる。プロセス500はまた、第1の値の選択プロセス、第2の値の選択プロセス、ブースト、および/またはフロアもサポートすることができる。 The process 400 can be used for a first value selection process, a second value selection process, and/or a selection process involving boost and/or floor. Each of these variations is described below. Another example process 500 shown in FIG. 5 can be used for a selection process involving hierarchy. Process 500 may also support a first value selection process, a second value selection process, a boost, and/or a floor.

計算システムMPC1およびMPC2は、デジタルコンポーネントの選択値を決定および/または識別する(402)。計算システムMPC1およびMPC2は、クライアントデバイス110から受信されるデジタルコンポーネント要求に応答して選択値を決定することができる。図3を参照しながら説明したように、計算システムMPC1は、クライアントデバイス110から、コンテキスト信号、および、クライアントデバイス110のユーザのユーザグループ識別子を表す確率的データ構造のデータを含むデジタルコンポーネント要求を受信することができる。確率的データ構造のデータは、パラメータrand_var1a、rand_var1bおよびrand_var2を含むことができる。同様に、計算システムMPC2は、クライアントデバイス110から、コンテキスト信号ならびにパラメータ、すなわちベクトルB、rand_var1aおよびrand_var1bを受信することができる。コンテキスト信号は、たとえば、図1を参照しながら説明した第1段階検索鍵(SHA256(UG_Request_Key))などの検索鍵の形態であり得る。 Computing systems MPC1 and MPC2 determine and/or identify selected values for digital components (402). Computing systems MPC1 and MPC2 may determine the selection values in response to digital component requests received from client device 110 . As described with reference to FIG. 3, computing system MPC1 receives from client device 110 a context signal and a digital component request including data in a probabilistic data structure representing a user group identifier of a user of client device 110. can do. The data of the probabilistic data structure can include the parameters rand_var1a, rand_var1b and rand_var2. Similarly, computing system MPC2 may receive context signals and parameters from client device 110: vector B, rand_var1a and rand_var1b. The context signal may be, for example, in the form of a search key, such as the first stage search key (SHA256 (UG_Request_Key)) described with reference to FIG.

選択値は、各計算システムMPC1およびMPC2によってそのデータが記憶される、記憶されるデジタルコンポーネントの選択値、ならびに、SSP170からデジタルコンポーネント選択プロセスについて受信されるJIT選択値を含むことができる。選択値がベクトルを使用して決定される状況について、各計算システムMPC1およびMPC2は、デジタルコンポーネントのベクトルのドット積を決定することによって、選択値を決定することができる。計算システムMPC1およびMPC2はまた、パブリッシャ140またはSSP170がそれに対してブーストを確立したデジタルコンポーネントの任意のブーストを適用し、および/または、パブリッシャ140またはSSP170によって確立される任意のフロアを執行することもできる。 The selection values may include stored digital component selection values whose data is stored by each computing system MPC1 and MPC2, as well as JIT selection values received from SSP 170 for the digital component selection process. For situations where the selection value is determined using a vector, each computing system MPC1 and MPC2 can determine the selection value by determining the vector dot product of the digital components. Computing systems MPC1 and MPC2 may also apply any boost of digital components to which publisher 140 or SSP170 has established a boost and/or enforce any floors established by publisher 140 or SSP170. can.

計算システムMPC1は、適格なデジタルコンポーネントを識別する(404)。計算システムMPC1は、たとえば、図3を参照しながら説明したように、クライアントデバイス110から受信されるデジタルコンポーネント要求に対して適格なデジタルコンポーネントを識別することができる。適格なデジタルコンポーネントは、デジタルコンポーネント要求のコンテキスト信号に基づいて選択に対して適格であるデジタルコンポーネントである。たとえば、適格なデジタルコンポーネントは、たとえば、要求の検索鍵に一致する検索鍵を有するデジタルコンポーネントなど、デジタルコンポーネント要求のコンテキスト信号に一致するコンテキスト信号のセットを有するデジタルコンポーネントであり得る。 Computing system MPC1 identifies (404) eligible digital components. Computing system MPC1 may, for example, identify eligible digital components for digital component requests received from client device 110, as described with reference to FIG. An eligible digital component is a digital component that is eligible for selection based on the context signal of the digital component request. For example, a qualified digital component may be a digital component that has a set of context signals that match the context signals of the digital component request, eg, a digital component that has a search key that matches the search key of the request.

2段階LUTが使用される実施態様において、計算システムMPC1は、デジタルコンポーネント要求の第1段階検索鍵を使用して適格なデジタルコンポーネントを識別することができる。計算システムMPC1は、第1段階LUTにアクセスし、第1段階検索鍵を使用して、第1段階検索鍵によって表されるコンテキスト信号のセットについて、たとえば、その選択値が受信されている、表示されるのに適格であるデジタルコンポーネントの情報を含む第2段階LUTの行を識別することができる。たとえば、上述したように、第2段階LUTの各行は、デジタルコンポーネントに関する情報、および、コンテキスト信号のセットに基づく第2段階検索鍵を含む。したがって、計算システムMPC1は、第1段階検索鍵を使用して、デジタルコンポーネント要求において受信される第1段階検索鍵によって定義されるコンテキスト信号のセットに一致するコンテキスト信号のセットを有する第2段階LUTの行を識別することができる。これらの行は、表示されるのに適格であるか、または、デジタルコンポーネント要求において受信される第1段階検索鍵によって定義されるコンテキストに対して適格な選択値を有するデジタルコンポーネントに関する情報を含む。 In embodiments where a two-stage LUT is used, computing system MPC1 can use the first-stage search key of the digital component request to identify eligible digital components. Computing system MPC1 accesses the first-stage LUT and uses the first-stage search key to display, for a set of context signals represented by the first-stage search key, e.g. Rows of the second stage LUT can be identified that contain information about the digital components that are eligible to be processed. For example, as described above, each row of the second stage LUT contains information about the digital component and a second stage search key based on a set of context signals. Accordingly, computing system MPC1 uses the first-stage search key to generate a second-stage LUT having a set of context signals that match the set of context signals defined by the first-stage search key received in the digital component request. rows can be identified. These rows contain information about digital components that are eligible to be displayed or have selected values that are eligible for the context defined by the first stage search key received in the digital component request.

計算システムMPC2は、適格なデジタルコンポーネントを識別する(406)。計算システムMPC2は、クライアントデバイス110から受信されるデジタルコンポーネント要求に対して適格なデジタルコンポーネントを識別することができる。計算システムMPC2は、計算システムMPC1と同様の方法で適格なデジタルコンポーネントを識別することができる。MPCクラスタ130がフロアを執行する実施態様において、各MPC計算システムMPC1およびMPC2は、適格なデジタルコンポーネントから、その対応するフロアを満たさない、たとえば、満足しないかまたは超えない選択値を有する任意の適格なデジタルコンポーネントをフィルタリングすることができる。 Computing system MPC2 identifies (406) eligible digital components. Computing system MPC2 may identify eligible digital components for digital component requests received from client device 110 . Computing system MPC2 can identify eligible digital components in a manner similar to computing system MPC1. In embodiments where the MPC cluster 130 enforces a floor, each MPC computational system MPC1 and MPC2 selects from the eligible digital components any eligible having a selection value that does not satisfy, e.g., does not satisfy or exceed, its corresponding floor. digital components can be filtered.

各適格なデジタルコンポーネントについて、計算システムMPC1およびMPC2は、デジタルコンポーネント要求に応答して、デジタルコンポーネントおよびその選択値が、クライアントデバイス110に配信するために選択されるための候補であるか否かを判定する(408)。候補デジタルコンポーネントは、デジタルコンポーネントが条件付きデジタルコンポーネントである場合は、デジタルコンポーネントに対する1つまたは複数の条件のすべてを満たす適格なデジタルコンポーネントである。コンテキストに基づいて適格である各無条件デジタルコンポーネントも、候補デジタルコンポーネントである。計算システムMPC1およびMPC2は、計算システムMPC1およびMPC2のいずれも候補デジタルコンポーネントを平文で識別することができないように、セキュアMPCプロセスを使用して候補デジタルコンポーネントを決定することができる。 For each eligible digital component, computing systems MPC1 and MPC2 respond to the digital component request to determine whether the digital component and its selected value are candidates for selection for delivery to client device 110. Determine (408). A candidate digital component is an eligible digital component that satisfies all of the one or more conditions for the digital component if the digital component is a conditional digital component. Each unconditional digital component that qualifies based on the context is also a candidate digital component. Computing systems MPC1 and MPC2 may determine candidate digital components using a secure MPC process such that none of computing systems MPC1 and MPC2 can identify candidate digital components in plaintext.

ユーザグループメンバーシップ条件について、計算システムMPC1およびMPC2は、各適格なデジタルコンポーネント「i」のユーザグループメンバーシップ条件パラメータug_checkiのそれぞれの秘密シェアを計算することができる。計算システムMPC1によって維持されるユーザグループメンバーシップ条件パラメータug_checkiの第1の秘密シェアは、[ug_checki,1]として表すことができ、計算システムMPC2によって維持されるユーザグループメンバーシップ条件パラメータug_checkiの第2の秘密シェアは、[ug_checki,2]として表すことができる。括弧はパラメータの秘密シェアを表すために使用されている。 For user group membership conditions, computing systems MPC1 and MPC2 can compute respective secret shares of user group membership condition parameters ug_check i for each eligible digital component 'i'. The first secret share of the user group membership condition parameter ug_check i maintained by computing system MPC1 can be represented as [ug_check i,1 ] and the user group membership condition parameter ug_check i maintained by computing system MPC2. The second secret share of can be represented as [ug_check i,2 ]. Parentheses are used to denote secret shares of parameters.

ユーザのユーザグループメンバーシップを表すためにカッコウフィルタが使用される実施態様について、計算システムMPC1は、計算システムMPC2と協働して、下記の関係1に従って[ug_checki,1]を計算する。 For embodiments in which a cuckoo filter is used to represent a user's user group membership, computing system MPC1, in cooperation with computing system MPC2, computes [ug_check i,1 ] according to Relation 1 below.

Figure 2023529783000005
Figure 2023529783000005

関係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]である。 In relation 1, Π denotes multiplication of multiple items. where ug_id(x) is the function used to retrieve the user group identifier ug_id associated with the selection value x and {F 1 ,...F N } are the possible A set of hash functions to compute the index, rand_val1a is the random value received in the digital component request. [M x,1 ] is the xth element in the array [M 1 ]. == is an equality test between a plaintext integer and a secret share of a secret integer. The result of == is the secret share of secret integers that are either 0 (not equal) or 1 (equal). where the value of [M i,1 ]=[PRF(rand_val2a, i) 1 ].

同様に、計算システムMPC2は、計算システムMPC2と協働して、下記の関係2に従って[ug_checki,2]を計算する。 Similarly, computing system MPC2, in cooperation with computing system MPC2, computes [ug_check i,2 ] according to Relation 2 below.

Figure 2023529783000006
Figure 2023529783000006

ここで、[Mi,2]の値= Biである。 where the value of [M i,2 ] = B i .

デジタルコンポーネントが選択されているユーザのユーザグループメンバーシップに対して条件付けられているデジタルコンポーネントについて、計算システムMPC1およびMPC2は、ユーザグループメンバーシップ条件パラメータug_checkiの秘密シェア[ug_checki,1]および[ug_checki,2]を計算することができる。2つの秘密シェアの組合せは、ユーザがデジタルコンポーネントに対応するユーザグループのメンバーであるか否かを表すブール値であり得る。たとえば、1の値は、ユーザがメンバーであることを表すことができ、0の値は、ユーザがメンバーでないことを表すことができる。ユーザのユーザグループメンバーシップに対して条件付けられていないデジタルコンポーネントについて、計算システムMPC1およびMPC2は、組合せが、ユーザがデジタルコンポーネントに対応するユーザグループのメンバーであることを示す値(たとえば、1)を有するように、秘密シェア[ug_checki,1]および[ug_checki,2]のデフォルト値を使用することができる。 For a digital component whose digital component is conditioned on user group membership of the selected user, computing systems MPC1 and MPC2 compute the secret shares of user group membership condition parameters ug_check i [ug_check i,1 ] and [ ug_check i,2 ] can be computed. The combination of the two secret shares can be a Boolean value representing whether the user is a member of the user group corresponding to the digital component. For example, a value of 1 can represent that the user is a member and a value of 0 can represent that the user is not a member. For digital components that are not conditioned on the user's user group membership, computing systems MPC1 and MPC2 generate a value (e.g., 1) that indicates that the user is a member of the user group corresponding to the digital component. The default values for secret shares [ug_check i,1 ] and [ug_check i,2 ] can be used to have.

ユーザのユーザグループメンバーシップを表すためにブルームフィルタが使用される実施態様において、計算システムMPC1およびMPC2は、図8を参照しながら説明されるように、ブルームフィルタに問い合わせることができる。結果は、計算システムMPC1が、ブルームフィルタの各ハッシュ関数について、ユーザグループメンバーシップ条件パラメータの第1の秘密シェア[ug_checki,1]を有することである。同様に、計算システムMPC2は、ブルームフィルタの各ハッシュ関数について、ユーザグループメンバーシップ条件パラメータの第2の秘密シェア[ug_checki,2]を有する。デジタルコンポーネントがユーザグループメンバーシップ条件を満たすためには、ブルームフィルタの各ハッシュ値のユーザグループメンバーシップ条件パラメータ、すなわち、ug_checkiは、真、すなわち1のブール値を有する必要があることになる。各ハッシュ値の秘密シェアは、デジタルコンポーネントの候補パラメータの秘密シェアの最後の計算に含まれ得る。 In embodiments where Bloom filters are used to represent user group memberships of users, computing systems MPC1 and MPC2 can query the Bloom filters as described with reference to FIG. The result is that the computing system MPC1 has a first secret share of user group membership condition parameters [ug_check i,1 ] for each hash function of the Bloom filter. Similarly, the computing system MPC2 has a second secret share of user group membership condition parameters [ug_check i,2 ] for each hash function of the Bloom filter. It follows that for a digital component to satisfy the user group membership condition, the user group membership condition parameter of each hash value of the bloom filter, ie ug_checki , must have a boolean value of true, ie 1. The secret share of each hash value may be included in the final computation of the secret shares of the candidate parameters of the digital component.

計算システムMPC1およびMPC2はまた、協働して、頻度制御またはミューティングに対して条件付けられている各デジタルコンポーネントiのブロックデジタルコンポーネントパラメータblocked_checkiのそれぞれの秘密シェア[blocked_checki,1]および[blocked_checki,2]を計算することもできる。2つの秘密シェアの組合せは、頻度制御に基づいて(たとえば、デジタルコンポーネントが一定の持続時間中に閾回数よりも多くユーザに提供されていない)、および/または、ユーザが、デジタルコンポーネントがユーザに表示されるようにしないことを選択したか否かに基づいて、デジタルコンポーネントがブロックデジタルコンポーネント条件を満たすか否かを表すブール値であり得る。たとえば、真または1の値のブール値は、これらの要因に基づいてデジタルコンポーネントをユーザに表示することができることを表すことができ、偽または0の値のブール値は、これらの要因に基づいてデジタルコンポーネントをユーザに表示することができないことを表すことができる。 Computing systems MPC1 and MPC2 also cooperate to compute the respective secret shares [blocked_check i ,1 ] and [blocked_check i,2 ] can also be calculated. The combination of the two secret shares is based on a frequency control (e.g., the digital component has not been provided to the user more than a threshold number of times during a certain duration) and/or the user decides that the digital component It may be a Boolean value representing whether or not the digital component satisfies the block digital component condition based on whether or not it has been chosen not to be displayed. For example, a boolean value of true or 1 can represent that the digital component can be displayed to the user based on these factors, and a boolean value of false or 0 can represent It can indicate that the digital component cannot be displayed to the user.

ブロックデジタルコンポーネントパラメータの秘密シェアを決定するために、計算システムMPC1およびMPC2は、ブロックデジタルコンポーネントの識別子を表すブルームフィルタのシェア、たとえば配列を使用することができる。アプリケーション112は、図8を参照しながら説明されているように、ブロックデジタルコンポーネントの識別子を表すブルームフィルタを生成し、ブルームフィルタを表すデータを計算システムMPC1およびMPC2に送信することができる。計算システムMPC1およびMPC2は、次いで、図8を参照しながら説明されているように、ブルームフィルタを表す配列を使用してブルームフィルタに問い合わせて、秘密シェア[blocked_checki,1]および[blocked_checki,2]を得ることができる。 To determine the secret shares of the block digital component parameters, the computing systems MPC1 and MPC2 can use shares, eg arrays, of bloom filters representing the identifiers of the block digital components. Application 112 may generate Bloom filters representing identifiers of block digital components and send data representing the Bloom filters to computing systems MPC1 and MPC2, as described with reference to FIG. Computing systems MPC1 and MPC2 then query Bloom filters using arrays representing Bloom filters to obtain secret shares [blocked_check i,1 ] and [blocked_check i, 2 ] can be obtained.

計算システムMPC1およびMPC2はまた、協働して、たとえば、フィードバックコントローラを使用してペースを調整される各デジタルコンポーネントiのペーシング制御チェックパラメータpacing_checkiのそれぞれの秘密シェア[pacing_checki,1]および[pacing_checki,2]を計算することもできる。2つの秘密シェアの組合せは、たとえば、フィードバックコントローラの出力に基づいて、デジタルコンポーネントがペーシング条件を満たすか否かを表すブール値とすることができる。たとえば、デジタルコンポーネントが目標インプレッション率に関連して頻繁に提供されすぎている場合、フィードバックコントローラの出力は、デジタルコンポーネントがこのデジタルコンポーネント選択プロセスに対して適格でないことを示すことができる。真または1の値のブール値は、デジタルコンポーネントが、たとえば、この選択プロセスに対してスロットリングされていないなど、ペーシング条件を満たすことを表すことができ、偽または0の値のブール値は、デジタルコンポーネントが、たとえば、この選択プロセスに対してスロットリングされているなど、ペーシング条件を満たさないことを表すことができる。 Computing systems MPC1 and MPC2 also cooperate to calculate, for example, respective secret shares of the pacing control check parameter pacing_check i for each digital component i that is paced using a feedback controller [pacing_check i,1 ] and [ You can also compute the spacing_check i,2 ]. The combination of the two secret shares can be, for example, a Boolean value representing whether or not the digital component satisfies the pacing condition based on the output of the feedback controller. For example, if a digital component is being served too frequently in relation to a target impression rate, the output of the feedback controller can indicate that the digital component is not eligible for this digital component selection process. A boolean value of true or 1 can represent that the digital component satisfies the pacing condition, e.g. not being throttled for this selection process, while a boolean value of false or 0 can represent A digital component may indicate that the pacing condition is not met, eg, being throttled for this selection process.

リソース枯渇(たとえば、バジェット)およびペーシング規則を執行するために、計算システムMPC1およびMPC2は、フィードバックコントローラおよびリソース枯渇条件を使用して決定される確率を使用して、デジタルコンポーネントがデジタルコンポーネント選択プロセスに参加しないようにランダムにブロックすることができる。デジタルコンポーネントを含むキャンペーンがいかなる追加のリソースも有しない場合、確率は1に設定される。他の様態で、キャンペーンが配信スケジュールよりも早い場合、たとえば、ペーシング制御チェックパラメータpacing_checkiが0の値を有するように秘密シェア[pacing_checki,1]および[pacing_checki,2]を計算することによって、計算システムMPC1およびMPC2がデジタルコンポーネントをデジタルコンポーネント選択プロセスからブロックする可能性がより高くなるように、確率は高く(たとえば、0を上回り、1に近くなるように)設定される。キャンペーンが配信スケジュールの後である場合、確率はより低い。 To enforce resource depletion (e.g., budget) and pacing rules, computing systems MPC1 and MPC2 use probabilities determined using feedback controllers and resource depletion conditions to determine whether digital components are included in the digital component selection process. You can randomly block them from participating. The probability is set to 1 if the campaign containing the digital component does not have any additional resources. Otherwise, if the campaign is ahead of the delivery schedule, e.g., by calculating the secret shares [pacing_check i,1 ] and [pacing_check i,2 ] such that the pacing control check parameter pacing_check i has a value of 0 , the probability is set high (eg, greater than 0 and closer to 1) so that computing systems MPC1 and MPC2 are more likely to block the digital component from the digital component selection process. The probability is lower if the campaign is after the delivery schedule.

計算システムMPC1およびMPC2は、フィードバックコントローラを使用して加法的秘密シェアにおける各キャンペーンのペーシングセレクタパラメータpacing_selectorを定期的に計算することができる。概念的に、ペーシングセレクタパラメータは、最大範囲の倍数でスケールアップされる、スロットリング確率である。 Computing systems MPC1 and MPC2 may periodically compute the pacing selector parameter pacing_selector for each campaign in the additive secret share using a feedback controller. Conceptually, the pacing selector parameter is a throttling probability scaled up in multiples of the maximum range.

各デジタルコンポーネント要求および各デジタルコンポーネントについて、計算システムMPC1およびMPC2は、[0, maximum range]内に均一に分布する秘密数を計算する。そのランダム数がペーシングセレクタパラメータpacing_selector以下である場合、計算システムMPC1およびMPC2は、たとえば、ペーシング制御チェックパラメータpacing_checkiが0の値を有するように秘密シェア[pacing_checki,1]および[pacing_checki,2]を計算することによって、デジタルコンポーネントがデジタルコンポーネント選択プロセスに参加しないようにブロックする。 For each digital component request and each digital component, the computing systems MPC1 and MPC2 compute a secret number uniformly distributed within [0, maximum range]. If the random number is less than or equal to the pacing selector parameter pacing_selector, computing systems MPC1 and MPC2 may, for example, select secret shares [pacing_check i,1 ] and [pacing_check i,2 ] such that the pacing control check parameter pacing_check i has a value of 0. ] to block digital components from participating in the digital component selection process.

デジタルコンポーネント選択プロセスの参加者のユーザプライバシーおよび秘密情報を保護するために、ランダム数とペーシングセレクタパラメータの両方が、加法的秘密シェア内にある。2つの秘密シェア間の比較は、文字化け回路プロトコルを使用して実施することができる。両方の秘密シェアを6または7ビットに制限することによって、比較プロトコルは、計算システムMPC1およびMPC2の間の1または2ラウンドの通信を必要とし得る。 Both the random number and the pacing selector parameters are within the additive secret share to protect the user privacy and confidential information of the participants in the digital component selection process. A comparison between two secret shares can be performed using the garbled circuit protocol. By limiting both secret shares to 6 or 7 bits, the comparison protocol may require one or two rounds of communication between computing systems MPC1 and MPC2.

キャンペーンのペーシングセレクタパラメータを決定するために、計算システムは、各キャンペーンに使用されるリソースの量を、resources_used_campaign =Σ(clearing_value×is_dc_the_winner)として計算することができ、この和は、キャンペーンのデジタルコンポーネントを含むデジタルコンポーネント選択プロセスの全体にわたり、パラメータclearing_valueは、デジタルコンポーネント選択プロセスのクリア値であり、is_dc_the_winnerは、デジタルコンポーネント選択プロセスにおけるデジタルコンポーネントの勝者パラメータである。この計算は、各計算システムMPC1およびMPC2が使用されるリソースの量の秘密シェアを保持するように、秘密シェアにおいて実施され得る。計算システムMPC1およびMPC2は、次いで、使用されるリソースの量、すなわち、resources_used_campaignが秘密シェアにおいてキャンペーンに割り振られるリソースの総量よりも多いか否かを判定することによって、キャンペーンのリソース消耗パラメータresources_exhaustedを計算することができる。 To determine a campaign's pacing selector parameters, the computation system can compute the amount of resources used for each campaign as resources_used_campaign = Σ(clearing_value x is_dc_the_winner), and this sum is the digital component of the campaign. Throughout the digital component selection process including, the parameter clearing_value is the clearing value of the digital component selection process and is_dc_the_winner is the winner parameter of the digital component in the digital component selection process. This computation may be performed in secret shares such that each computing system MPC1 and MPC2 keeps a secret share of the amount of resources used. Computing systems MPC1 and MPC2 then calculate the resource exhaustion parameter resources_exhausted of the campaign by determining whether the amount of resources used, resources_used_campaign, is greater than the total amount of resources allocated to the campaign in the secret share. can do.

計算システムMPC1およびMPC2は、各キャンペーンのペーシングセレクタパラメータpacing_selectorを、pacing_selector =resources_exhausted×maximum range +(1-resources_exhausted)×outputとして計算することができ、パラメータoutputはフィードバックコントローラの出力である。この計算は、秘密シェアにおける乗算を計算するために、計算システムMPC1およびMPC2の間の1回のRPCを使用することができる。しかしながら、計算は、任意のレイテンシが追加されることを阻止するために、オフラインで定期的に実施されてもよい。 Computing systems MPC1 and MPC2 may compute the pacing selector parameter pacing_selector for each campaign as pacing_selector=resources_exhausted*maximum range+(1-resources_exhausted)*output, where parameter output is the output of the feedback controller. This computation can use a single RPC between computing systems MPC1 and MPC2 to compute the multiplication on the secret share. However, the computations may be performed offline periodically to prevent adding any latency.

計算システムMPC1およびMPC2は、協働して、いくつかの実施態様においてはすべてのデジタルコンポーネントに適用することができる、k-匿名性条件を満たさなければならない各デジタルコンポーネントiのk-匿名性チェックパラメータkanonymity_checkiの[kanonymity_checki,1]および[kanonymity_checki,2]のそれぞれの秘密シェアを計算することもできる。2つの秘密シェアの組合せは、デジタルコンポーネントがk-匿名性条件を満たすか否かを表すブール値とすることができる。たとえば、1の値は、デジタルコンポーネントがk-匿名性を満たすことを表すことができ、0の値は、デジタルコンポーネントがk-匿名性を満たさず、デジタルコンポーネント選択プロセスからブロックされるべきであることを表すことができる。 Computing systems MPC1 and MPC2 jointly perform a k-anonymity check for each digital component i that must satisfy a k-anonymity condition, which in some embodiments can be applied to all digital components. It is also possible to compute the secret share of each of [kanonymity_check i,1 ] and [kanonymity_check i,2 ] of the parameter kanonymity_check i . The combination of the two secret shares can be a Boolean value representing whether the digital component satisfies the k-anonymity condition. For example, a value of 1 can represent that the digital component satisfies k-anonymity, and a value of 0 indicates that the digital component does not satisfy k-anonymity and should be blocked from the digital component selection process. can represent

計算システムMPC1およびMPC2は、ログ(図9を参照しながら説明されるような)を定期的に処理して、勝者デジタルコンポーネントがアプリケーション112によって示されており(または示されている可能性があり)、たとえば、対応する選択プロセス識別子がインプレッション通知において受信されているデジタルコンポーネント選択プロセスを識別することができる。これらの選択プロセスの間で、計算システムMPC1およびMPC2は、ユーザのアプリケーション112によって示された(または示されている可能性がある)インプレッションの数を、impression_showi=Σ(is_dc_the_winner_i)としてカウントする。ここで、iは、デジタルコンポーネントまたはキャンペーンを表すことができる。計算は、各計算システムMPC1およびMPC2がインプレッションの数impression_showiの秘密シェアを有するように、秘密シェアにおいて実施される。計算システムMPC1およびMPC2は、次いで、たとえば、インプレッションの数を秘密シェアにわたってkと比較することによって、インプレッションの数が値kを超えるか否かを判定することができる。 Computing systems MPC1 and MPC2 periodically process logs (as described with reference to FIG. 9) to determine which winning digital component is (or could be) indicated by application 112. ), for example, identifying a digital component selection process for which a corresponding selection process identifier has been received in the impression notification. During these selection processes, computing systems MPC1 and MPC2 count the number of impressions shown (or potentially shown) by the user's application 112 as impression_show i =Σ(is_dc_the_winner_i). Here i can represent a digital component or a campaign. The computation is performed in secret shares such that each computation system MPC1 and MPC2 has a secret share of the number impression_show i of impressions. Computing systems MPC1 and MPC2 can then determine whether the number of impressions exceeds the value k, for example by comparing the number of impressions to k over the secret share.

各条件付きデジタルコンポーネント(たとえば、少なくとも1つの条件を有するデジタルコンポーネント)の各条件について、各計算システムMPC1およびMPC2は、デジタルコンポーネントに対する各条件のパラメータの対応する秘密シェアを記憶することができる。このように、少なくとも1つのMPC計算システムが公正である限り、計算システムMPC1もMPC2も、パラメータの値が平文ではわからない。各デジタルコンポーネントは、0以上の条件について条件付けられ得る。所与のデジタルコンポーネント選択プロセスについて、いくつかのデジタルコンポーネントは、他のデジタルコンポーネントとは異なる条件および/または異なる条件量を有することができる。 For each condition of each conditional digital component (eg, a digital component with at least one condition), each computing system MPC1 and MPC2 can store a corresponding secret share of each condition's parameters for the digital component. Thus, as long as at least one MPC computing system is fair, neither computing system MPC1 nor MPC2 knows the values of the parameters in plaintext. Each digital component can be conditioned on zero or more conditions. For a given digital component selection process, some digital components may have different conditions and/or different condition quantities than other digital components.

いくつかの例示的な条件が上記で提供されているが、他の条件も使用されてもよい。概して、計算システムMPC1およびMPC2は、セキュアMPCプロセスを使用して条件パラメータの秘密シェアを計算することができる。条件パラメータを決定するための基準および技法は変化し得る。いくつかの実施態様において、条件パラメータの秘密シェアは、たとえば、計算システムMPC1およびMPC2が条件パラメータを計算しないように、別の計算システムから受信することができる。 Although some exemplary conditions are provided above, other conditions may also be used. In general, computing systems MPC1 and MPC2 can compute a secret share of conditional parameters using a secure MPC process. Criteria and techniques for determining conditional parameters may vary. In some implementations, the secret share of conditional parameters may be received from another computing system, such that, for example, computing systems MPC1 and MPC2 do not calculate conditional parameters.

計算システム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
Computing systems MPC1 and MPC2 can use the secret share of conditional parameters to determine whether a conditional digital component is a candidate for the digital component selection process. Computing systems MPC1 and MPC2 can use the secret share of the conditional parameters of the conditional digital component to calculate the secret share of the candidate parameter is_dc_a_candidate i for each conditional digital component i. In general, if the conditional digital component is conditioned on each of the above conditions, the candidate parameters for digital component i can be calculated using Relation 3 below.
is_dc_a_candidate i = ug_check i AND blocked_check i AND pacing_check i AND kanonymity_check i

各条件パラメータの値は秘密シェア内にあるため、計算システム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]を保持する。 Since the value of each conditional parameter is in the secret share, computing systems MPC1 and MPC2 cooperate in a secure MPC process using round-trip remote procedure calls (RPCs) to use the secret share of the conditional parameter. The corresponding secret shares [is_dc_a_candidate i,1 ] and [is_dc_a_candidate i,2 ] of the candidate parameters of digital component i can be determined. Any suitable secret sharing algorithm for determining a logical AND operation can be used to determine the secret shares [is_dc_a_candidate i,1 ] and [is_dc_a_candidate i,2 ] of the candidate parameters of digital component i. Computing systems MPC1 and MPC2 can use only the secret shares of the condition parameters of their conditions to determine the secret shares of the candidate parameters. At the end of this secure MPC process, computing system MPC1 retains the first secret share [is_dc_a_candidate i,1 ] of each conditional digital component's candidate parameter, and computing system MPC2 keeps each conditional digital component's candidate parameter hold a second secret share [is_dc_a_candidate i,2 ] of

いくつかの実施態様において、計算システムMPC1およびMPC2は、文字化け回路プロトコルを使用して各デジタルコンポーネントについて関係3を評価する。この例において、計算システムMPC1またはMPC2のうちの1つが、文字化け回路を構築し得る。この例について、計算システムMPC1が文字化け回路を構築すると仮定する。計算システムMPC1は、それ自体の秘密シェアを知っており、デジタルコンポーネントの候補パラメータが真または1になるために、計算システムMPC2の秘密シェアが保持しなければならない唯一の可能なビットパターンが存在することも知っている。そのような特性によって、計算システムMPC1は、たとえば、関係3において合計で約50個のブールパラメータが存在する場合に、文字化け回路を構築するために最大50個のみのゲートを必要とする。 In some embodiments, computing systems MPC1 and MPC2 evaluate relation 3 for each digital component using a garbled circuit protocol. In this example, one of the computing systems MPC1 or MPC2 may build a garbled circuit. For this example, assume that computing system MPC1 constructs a garbled circuit. Computing system MPC1 knows its own secret share, and there is only one possible bit pattern that computing system MPC2's secret share must hold in order for the digital component's candidate parameter to be true or 1. I also know With such properties, the computing system MPC1, for example, requires only a maximum of 50 gates to construct the garbled circuit when there are about 50 Boolean parameters in relation 3 in total.

関係3において、1つのみのユーザグループメンバーシップ条件パラメータug_checkiが存在する。しかしながら、ユーザのユーザグループメンバーシップを表すためにブルームフィルタが使用される場合、関係3は、ブルームフィルタの各ハッシュ関数のそれぞれのユーザグループメンバーシップ条件パラメータug_checkiを含むことができる。同様に、ブロックデジタルコンポーネントがブルームフィルタを使用して表される場合、関係3は、このブルームフィルタの各ハッシュ関数のそれぞれのブロックデジタルコンポーネントパラメータblocked_checkiを含む。関係3において、pacing_checkiは、デジタルコンポーネントの所有者がペーシングチェックを可能にする場合にのみ存在する。 In relation 3, there is only one user group membership condition parameter ug_checki . However, if Bloom filters are used to represent user group memberships of users, Relation 3 can include the respective user group membership condition parameter ug_check i for each hash function of the Bloom filter. Similarly, if the blocked digital component is represented using a Bloom filter, relation 3 contains the respective blocked digital component parameter blocked_check i for each hash function of this Bloom filter. In relationship 3, pacing_check i is present only if the owner of the digital component enables pacing checks.

計算システムMPC1は、選択値に基づいてデジタルコンポーネントの順序を決定する(410)。同様に、計算システムMPC2は、選択値に基づいてデジタルコンポーネントの順序を決定する(412)。これら2つの順序は、順序付けプロセスの入力が2つの計算システムMPC1およびMPC2上で同じであるため、正確に同じであるはずである。各計算システムMPC1およびMPC2が、デジタルコンポーネントの順序を決定することができる。各順序は、ステップ408において候補適格性について評価された候補デジタルコンポーネントおよび他のデジタルコンポーネントを含むことができる。たとえば、順序は、デジタルコンポーネント選択プロセスに利用可能であるすべての利用可能なデジタルコンポーネント、デジタルコンポーネント選択プロセスに対するすべての適格なデジタルコンポーネント(たとえば、コンテキスト信号に基づいて適格)、または、使用される場合は第2段階LUT内のすべてのデジタルコンポーネントを含むことができる。順序は、最高の選択値を有するデジタルコンポーネントから最低の選択値を有するデジタルコンポーネントまでであり得る。いくつかの実装形態では、その順序に対して使用される選択値は、たとえば、DSP150および/またはSSP170との任意の共有の後、選択されたデジタルコンポーネントがそれとともに表示されることになるリソースのパブリッシャ140に提供されることになる値に、任意の適用可能なブーストを加えた値であり得る。 Computing system MPC1 determines (410) the order of the digital components based on the selection values. Similarly, computing system MPC2 determines the order of the digital components based on the selected value (412). These two orders should be exactly the same because the inputs to the ordering process are the same on the two computational systems MPC1 and MPC2. Each computing system MPC1 and MPC2 can determine the order of the digital components. Each order may include candidate digital components and other digital components evaluated for candidate eligibility in step 408 . For example, the order may be all available digital components available for the digital component selection process, all eligible digital components for the digital component selection process (e.g., eligible based on the context signal), or if used can contain all the digital components in the second stage LUT. The order may be from the digital component with the highest selected value to the digital component with the lowest selected value. In some implementations, the selection value used for the order is, for example, the number of resources with which the selected digital component will be displayed after any sharing with DSP 150 and/or SSP 170. It may be the value to be provided to the publisher 140 plus any applicable boost.

選択値が平文をなすとき、計算システムMPC1およびMPC2は、デジタルコンポーネントの順序を決定するためのいかなるラウンドトリップ計算も実行しなくてよい。代わりに、各計算システムMPC1およびMPC2は、選択値を独立して順序付けすることができる。各計算システムMPC1およびMPC2が各選択値のそれぞれの秘密シェアを有して、各計算システムMPC1およびMPC2において秘密シェアとして選択値が記憶された場合、計算システムMPC1およびMPC2は、選択値を順序付けするためのラウンドトリップ計算を使用して、セキュアMPCプロセスを実行することができる。2つ以上の選択値の間に連結が存在する場合、計算システムMPC1およびMPC2は、これらの選択値に対応するデジタルコンポーネントの他のメタデータを使用して、連結を確定的に破壊することができる。 When the selection values are plaintext, the computation systems MPC1 and MPC2 need not perform any round-trip computations to determine the order of the digital components. Alternatively, each computing system MPC1 and MPC2 can independently order the selection values. If each computation system MPC1 and MPC2 has a respective secret share of each selection value, and the selection values are stored as secret shares in each computation system MPC1 and MPC2, then the computation systems MPC1 and MPC2 order the selection values. A secure MPC process can be performed using round-trip computation for If a concatenation exists between two or more selection values, the computing systems MPC1 and MPC2 may use other metadata of the digital components corresponding to these selection values to deterministically break the concatenation. can.

計算システムMPC1およびMPC2は、各候補デジタルコンポーネントの累積値の秘密シェアを決定する(414)。概念的に、所与のデジタルコンポーネントの累積値は、所与のデジタルコンポーネントが候補である場合であっても所与のデジタルコンポーネントを除外した、順序の最初から所与のデジタルコンポーネントの選択値までの候補デジタルコンポーネントの総数を表す。すなわち、累積値は、所与のデジタルコンポーネントよりも選択に対して適格である候補デジタルコンポーネントの数を表す。この概念は、下記のTable 3(表3)に示されている。 Computing systems MPC1 and MPC2 determine the secret share of the cumulative value of each candidate digital component (414). Conceptually, the cumulative value of a given digital component is from the beginning of the order to the selected value of the given digital component, excluding the given digital component even if the given digital component is a candidate. represents the total number of candidate digital components of . That is, the cumulative value represents the number of candidate digital components that are more eligible for selection than the given digital component. This concept is illustrated in Table 3 below.

Figure 2023529783000007
Figure 2023529783000007

いくつかの実施態様において、所与のデジタルコンポーネントの累積値は、所与のデジタルコンポーネントが候補である場合は所与のデジタルコンポーネントを含む、順序の最初から所与のデジタルコンポーネントまでの候補デジタルコンポーネントの総数を表す。この例では、第4の列は、累積値が0ではなく1に等しいか否かを表す。簡潔にするために、残りの論述は、所与のデジタルコンポーネントの累積値が、所与のデジタルコンポーネントが候補である場合であっても所与のデジタルコンポーネントを除外した、順序の最初から所与のデジタルコンポーネントまでの候補デジタルコンポーネントの総数を表す、第1の例に関するものである。 In some implementations, the cumulative value of a given digital component is the candidate digital component from the beginning of the order to the given digital component, including the given digital component if the given digital component is a candidate. represents the total number of In this example, the fourth column represents whether the cumulative value is equal to 1 instead of 0. For the sake of brevity, the rest of the discussion assumes that the cumulative value of a given digital component is a given for the first example, representing the total number of candidate digital components up to the digital component of .

概念的に、Table 3(表3)において、累積値(acc)は、順序の最初から順序の最後まで進行するにつれて、1に等しい候補パラメータis_dc_a_candidateを有する各デジタルコンポーネントについてインクリメントされる。後述するように、累積値accの計算は、秘密シェアにおいて実施される。たとえば、最高の選択値の候補パラメータis_dc_a_candidateが0に等しいため、最高の選択値を有するデジタルコンポーネントの累積値accは0である。2番目に高いデジタルコンポーネントの候補パラメータis_dc_a_candidateは1に等しいが、2番目に高いデジタルコンポーネントを上回る選択値はいずれも1に等しい候補パラメータis_dc_a_candidateを有しないため、2番目に高いデジタルコンポーネントの累積値accも0である。順序を下ると、3番目に高い選択デジタルコンポーネントの候補パラメータis_dc_a_candidateの累積値accは、1の値を有する2番目に高い選択値の候補パラメータis_dc_a_candidateに基づいて、1の値にインクリメントされる。3番目に高いデジタルコンポーネントの候補パラメータis_dc_a _candidateは0であるため、4番目のデジタルコンポーネントの累積値acc はインクリメントされず、3番目に高いデジタルコンポーネントのように0の値を有する。 Conceptually, in Table 3, the cumulative value (acc) is incremented for each digital component that has a candidate parameter is_dc_a_candidate equal to 1 as it progresses from the beginning of the sequence to the end of the sequence. As will be described below, the calculation of the cumulative value acc is performed in secret shares. For example, the highest selected value candidate parameter is_dc_a_candidate is equal to zero, so the digital component with the highest selected value has a cumulative value acc of zero. The candidate parameter is_dc_a_candidate of the second highest digital component is equal to 1, but none of the selected values above the second highest digital component have the candidate parameter is_dc_a_candidate equal to 1, so the cumulative value of the second highest digital component acc is also 0. Down the order, the cumulative value acc of the candidate parameter is_dc_a_candidate of the third highest selected digital component is incremented to a value of one based on the candidate parameter is_dc_a_candidate of the second highest selected value having a value of one. Since the candidate parameter is_dc_a_candidate of the third highest digital component is 0, the cumulative value acc of the fourth digital component is not incremented and has a value of 0 like the third highest digital component.

Table 3(表3)を使用して、計算システムMPC1およびMPC2は、クライアントデバイス110への配信のために、Table 3(表3)の第4の列に示すように、全体的な候補パラメータis_dc_a_candidateが1の値を有し、累積値accが0の値を有する選択値に対応するデジタルコンポーネントを選択する。これは、候補パラメータis_dc_a_candidateが1の値を有する最高に順序付けされた選択値に対応するデジタルコンポーネントを表す。ユーザプライバシーを維持し、ユーザデータが漏洩しないことを保証するために、候補パラメータis_dc_a_candidateは計算システムMPC1およびMPC2の秘密シェア内にあるため、計算システムMPC1およびMPC2は、各デジタルコンポーネントの累積値accの秘密シェアを決定し、ラウンドトリップ計算を使用して、いずれのデジタルコンポーネントが、0に等しい累積値accおよび1に等しい候補パラメータis_dc_a_candidateを有するかを判定する。 Using Table 3, computing systems MPC1 and MPC2 specify the overall candidate parameter is_dc_a_candidate for delivery to client device 110, as shown in the fourth column of Table 3. has a value of 1 and the accumulation value acc has a value of 0. It represents the digital component corresponding to the highest ordered selection value whose candidate parameter is_dc_a_candidate has a value of one. In order to maintain user privacy and ensure that no user data is leaked, the candidate parameter is_dc_a_candidate is within the secret share of computational systems MPC1 and MPC2, so computational systems MPC1 and MPC2 have the cumulative value acc of each digital component. Determine the secret shares and use round-trip calculations to determine which digital components have an accumulated value acc equal to 0 and a candidate parameter is_dc_a_candidate equal to 1.

計算システムMPC1およびMPC2は、いくつかの実施態様においては秘密シェアアルゴリズムに応じて一切のラウンドトリップ計算なしに独立して各デジタルコンポーネントの累積値accのそれらの秘密シェアを決定することができる。たとえば、計算システムMPC1は、各デジタルコンポーネントiについて、Table 3(表3)を参照しながら上述したように、最高から最低への順序ですべてのデジタルコンポーネントをトラバースし、進行中にデジタルコンポーネントの候補パラメータis_dc_a_candidateを合計することによって、累積値accの第1のシェア[acci,1]を決定することができる。同様に、計算システムMPC2は、各デジタルコンポーネントiについて、最高から最低への順序ですべてのデジタルコンポーネントをトラバースし、進行中にデジタルコンポーネントの候補パラメータis_dc_a_candidateを合計することによって、累積値accの第2のシェア[acci,2]を決定することができる。 Computing systems MPC1 and MPC2 can independently determine their secret share of the cumulative value acc of each digital component without any round-trip calculations according to a secret share algorithm in some embodiments. For example, the computation system MPC1 may, for each digital component i, traverse all digital components in order from highest to lowest, as described above with reference to Table 3, and select candidate digital components on the fly. The first share [acc i,1 ] of the cumulative value acc can be determined by summing the parameter is_dc_a_candidate. Similarly, the computation system MPC2, for each digital component i, traverses all the digital components in order from highest to lowest, summing the candidate parameters is_dc_a_candidate of the digital components on the fly, thereby obtaining the second can determine the share [acc i,2 ] of .

計算システムMPC1およびMPC2は、各デジタルコンポーネントについて、累積値が指定の値を有するか否かを示す結果の秘密シェアを決定する(416)。指定の値は、Table 3(表3)の列3および4に示すように、0の値であり得る。上述したように、累積値が0に等しく、全体的な候補パラメータis_dc_a_candidateが1であるデジタルコンポーネントは、候補デジタルコンポーネントの中で最高の選択値を有するデジタルコンポーネントである。 Computing systems MPC1 and MPC2 determine, for each digital component, a secret share of results indicating whether the cumulative value has a specified value (416). The specified value can be a value of 0, as shown in columns 3 and 4 of Table 3. As mentioned above, the digital component whose cumulative value is equal to 0 and whose overall candidate parameter is_dc_a_candidate is 1 is the digital component with the highest selected value among the candidate digital components.

計算システムMPC1およびMPC2は、各デジタルコンポーネントiの秘密シェアに関して等価演算acci == 0を計算するために、セキュアMPCプロセスの一部としての、たとえば複数回のRPCなどの複数ランドの計算に関与することができる。等価演算は、デジタルコンポーネントiの累積値acciが0の値を有するか否かを判定するために使用される。このプロセスの終了において、計算システムMPC1は、各デジタルコンポーネントiについて、結果acci == 0の一方の秘密シェアを有し、計算システムMPC2は、各デジタルコンポーネントについて、結果acci == 0の他方の秘密シェアを有する。 Computing systems MPC1 and MPC2 participate in multi-land computations, e.g., multiple RPCs, as part of the secure MPC process to compute the equivalent operation acc i == 0 on the secret share of each digital component i. can do. The equality operation is used to determine whether the accumulated value acc i of digital component i has a value of zero. At the end of this process, computing system MPC1 has, for each digital component i, one secret share of the result acc i == 0, and computing system MPC2 has, for each digital component, the other secret share of the result acc i == 0. has a secret share of

計算システム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がデジタルコンポーネント要求に応答してクライアントデバイス110への配信のために選択されるか否かなど、デジタルコンポーネントiが選択プロセスの勝者であるか否かを示すブール値であり得る。 Computing systems MPC 1 and MPC 2 determine (418) the secret share of the winner parameter is_dc_the_winner i for each digital component i. Computing systems MPC1 and MPC2 may determine, for each digital component i, the winner parameter is_dc_the_winner i based on the secret share of the cumulative value acc i == 0 and the secret share of the candidate parameter is_dc_a_candidate i for each digital component i. . The winner parameter is_dc_the_winner i for each digital component i indicates whether digital component i is the winner of the selection process, e.g., whether digital component i is selected for delivery to client device 110 in response to a digital component request. It can be a boolean value indicating whether or not there is.

いくつかの実施態様において、計算システム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_candidatesv, 2] x ([acci, 2] == 0)として表される結果is_dc_the_winneriの他の秘密シェアを有する。すべてのデジタルコンポーネントについて、最大で1つのデジタルコンポーネントが、1に等しい勝者パラメータis_dc_the_winneriを有し、このデジタルコンポーネントが、クライアントデバイス110への配信のために選択されるデジタルコンポーネントであることに留意されたい。他のすべてのパラメータは0に等しい。 In some embodiments, computing systems MPC1 and MPC2 execute a secret share multiplication protocol to determine, for each selected value, the winner parameter is_dc_the_winner i ==(is_dc_a_candidate i ×(acc i ==0)) in terms of the secret share. can be calculated. This may involve one RPC between computing systems MPC1 and MPC2 to multiply the two secret shares. At the end of this MPC process, the computing system MPC1 has one secret share of the result is_dc_the_winner i represented as [is_dc_the_winner i,1 ] = [is_dc_a_candidate i,1 ] x ([acc i,1 ] == 1) have. Similarly, computing system MPC2 has another secret share of result is_dc_the_winner i denoted as [is_dc_the_winner i,2 ]=[is_dc_a_candidate sv,2 ] x ([acc i,2 ]==0). Note that for all digital components, at most one digital component has a winner parameter is_dc_the_winner i equal to 1, and this digital component is the digital component selected for delivery to the client device 110. sea bream. All other parameters are equal to 0.

第1の値の選択プロセスについて、計算システムMPC1およびMPC2は、各デジタルコンポーネントiの勝者パラメータis_dc_the_winneriを決定するために、同様のプロセスを実施することができる。たとえば、計算システムMPC1およびMPC2は、秘密シェア同等性テストを実施して、第1の選択値のパラメータmaybe_first_svi = (acci == 0)の秘密シェアを決定することができる。デジタルコンポーネントiの第1の選択値のパラメータmaybe_first_sviは、デジタルコンポーネントの選択値が候補デジタルコンポーネントの間で最高であり得るか否かを表すブール値であり得る。選択値は、選択値に対応するデジタルコンポーネントが実際に候補デジタルコンポーネントである場合にのみ、候補デジタルコンポーネントの間で最高の選択値となる。したがって、デジタルコンポーネントiの第1の選択値のパラメータmaybe_first_sviは、デジタルコンポーネントが実際に候補デジタルコンポーネントである場合に、デジタルコンポーネントが最高の選択値を有するか否かを表す。この同等性テストの終了において、計算システムMPC1は、デジタルコンポーネントiの第1の選択値のパラメータmaybe_first_sviの第1の秘密シェア[maybe_first_svi,1]を有し、計算システムMPC2は、デジタルコンポーネントiの第1の選択値のパラメータmaybe_first_sviの第2の秘密シェア[maybe_first_svi,2]を有する。 For the first value selection process, computing systems MPC1 and MPC2 may perform a similar process to determine the winner parameter is_dc_the_winner i for each digital component i. For example, computing systems MPC1 and MPC2 may perform a secret share equivalence test to determine the secret share of the first selected value parameter maybe_first_sv i = (acc i == 0). The first selection value parameter maybe_first_sv i for digital component i may be a Boolean value representing whether the selection value for the digital component may be the highest among the candidate digital components. A selection value is the highest selection value among candidate digital components only if the digital component corresponding to the selection value is actually a candidate digital component. Thus, the parameter maybe_first_sv i for the first selection value of digital component i represents whether the digital component has the highest selection value, if the digital component is indeed a candidate digital component. At the end of this equivalence test, computing system MPC1 has the first secret share [maybe_first_sv i,1 ] of the parameter maybe_first_sv i of the first selected value of digital component i, and computing system MPC2 has the first secret share [maybe_first_sv i,1 ] of digital component i has a second secret share [maybe_first_sv i,2 ] of the parameter maybe_first_sv i of the first selected value of .

計算システムMPC1およびMPC2は、次いで、下記の関係4を使用して、秘密シェアに関して各デジタルコンポーネントiの勝者パラメータis_dc_the_winneriを計算することができる。
is_dc_the_winneri==((is_dc_a_candidatei = TRUE) AND (maybe_first_svi =TRUE))
Computing systems MPC1 and MPC2 can then use Relation 4 below to compute the winner parameter is_dc_the_winner i for each digital component i with respect to the secret share.
is_dc_the_winner i ==((is_dc_a_candidate i = TRUE) AND (maybe_first_sv i =TRUE))

計算システムMPC1およびMPC2は、選択結果を決定する(420)。いくつかの実施態様において、計算システムMPC1およびMPC2は、デジタルコンポーネントの勝者パラメータおよびデジタルコンポーネントのデジタルコンポーネント情報要素dc_information_elementに基づいて、選択結果を計算することができる。上述したように、デジタルコンポーネントのデジタルコンポーネント情報要素dc_information_elementは、デジタルコンポーネントの選択値およびデジタルコンポーネントの他のデータを含むことができる。 Computing systems MPC1 and MPC2 determine a selection result (420). In some implementations, the computing systems MPC1 and MPC2 may compute the selection result based on the digital component's winner parameter and the digital component's digital component information element dc_information_element. As mentioned above, the digital component information element dc_information_element of the digital component can contain the selection value of the digital component and other data of the digital component.

概念的に、計算システムMPC1およびMPC2は、下記の関係5を使用して選択結果パラメータ「result」を計算することができる。
result=Σi is_dc_the_winneri×dc_information_elementi
Conceptually, the computing systems MPC1 and MPC2 can compute the selection result parameter "result" using relation 5 below.
result=Σ i is_dc_the_winner i ×dc_information_element i

すなわち、計算システムMPC1およびMPC2は、すべてのデジタルコンポーネントにわたって、勝者パラメータis_dc_the_winneriおよびデジタルコンポーネント情報要素dc_information_elementiの積の総和を決定することができる。この例において、選択結果は、候補デジタルコンポーネントがない場合は値0を有するか、または、1に等しい勝者パラメータis_dc_the_winneriを有する選択されるデジタルコンポーネントのデジタルコンポーネント情報要素dc_information_elementに等しい値を有するかのいずれかになる。別の例において、デジタルコンポーネント情報要素dc_information_elementは、関係5において、デジタルコンポーネントの選択値と置き換えることができる。この例において、選択結果は、候補デジタルコンポーネントがない場合は値0を有するか、または、1に等しい勝者パラメータis_dc_the_winneriを有する選択されるデジタルコンポーネントの選択値に等しい値を有するかのいずれかになる。 That is, the computing systems MPC1 and MPC2 can determine the sum of the products of the winner parameter is_dc_the_winner i and the digital component information element dc_information_element i over all digital components. In this example, the selection result has a value of 0 if there are no candidate digital components, or a value equal to the digital component information element dc_information_element of the selected digital component with the winner parameter is_dc_the_winner i equal to 1. be either. In another example, the digital component information element dc_information_element can be replaced in relation 5 with the selected value of the digital component. In this example, the selection result either has a value of 0 if there are no candidate digital components, or has a value equal to the selection value of the selected digital component with the winner parameter is_dc_the_winner i equal to 1. Become.

秘密シェアにおける計算を実施するために、計算システムMPC1はすべてのデジタルコンポーネントを取り、平文をなすことができる、デジタルコンポーネントのデジタルコンポーネント情報要素dc_information_elementiを、デジタルコンポーネントの勝者パラメータの第1の秘密シェア[is_dc_the_winneri,1]で乗算する。計算システムMPC1は、次いで、これらの積の総和を決定することができ、デジタルコンポーネント要求をサブミットしたクライアントデバイス110にその総和を返すことができる。すなわち、計算システムMPC1は、結果の第1の秘密シェア[result1]として、下記の関係6を使用して総和を決定することができる。
[result1]=Σi([is_dc_the_winneri]×dc_information_elementi)
To perform the computation in the secret share, the computation system MPC1 takes all the digital components and can make plaintext the digital component information element dc_information_element i of the digital component and the first secret share of the winner parameter of the digital component. Multiply by [is_dc_the_winner i,1 ]. Computing system MPC1 can then determine the sum of these products and return the sum to the client device 110 that submitted the digital component request. That is, the computing system MPC1 can determine the summation using relation 6 below as the first secret share of the result [result 1 ].
[result 1 ]=Σ i ([is_dc_the_winner i ]×dc_information_element i )

計算システムMPC2は、下記の関係7を使用して、類似の計算を実施して結果の第2のシェア[result2]を決定することができる。
[result2]=Σi([is_dc_the_winneri]×dc_information_elementi)
Computing system MPC 2 can perform a similar computation to determine a second share of results [result 2 ] using relationship 7 below.
[result 2 ]=Σ i ([is_dc_the_winner i ]×dc_information_element i )

計算システム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から受信される他のデジタルコンポーネントを使用して選択プロセスを実施することができる。 Computing system MPC1 sends 422 a first share of the selection result [result 1 ] to client device 110 . Similarly, computing system MPC2 sends a second share of the selection result [result 2 ] to client device 110 (424). Application 112 then uses the two secret shares [result 1 ] and [result 2 ] to determine the selection result result, e.g., by determining the sum of the secret shares if an additive secret share algorithm is employed. can be reconstructed in plaintext. If the selection result has a value of 0, MPC cluster 130 has not identified a digital component for delivery to client device 110 . Otherwise, the selection result has a value equal to the digital component information element dc_information_element. Application 112 can parse the digital component information element dc_information_element to obtain the digital component's selection values and metadata. Application 112 can then display the digital component or perform a selection process using that digital component and other digital components received from SSP 170, as described above.

いくつかの実施態様において、選択されるデジタルコンポーネントは、計算システムMPC1またはMPC2のいずれかが、選択されるデジタルコンポーネントに平文でアクセスすることが可能になるのを阻止し、デジタルコンポーネントのクライアントデバイス110への送信におけるレイテンシを低減するために、マスクを使用してクライアントデバイス110に送信される。この例において、アプリケーション112は、各デジタルコンポーネント要求のノンスを選択し、デジタルコンポーネント要求とともにノンスを送信することができる。アプリケーション112は、計算システムMPC1またはMPC2のうちの一方にノンスを送信することができる。例示を目的として、ノンスは計算システムMPC2に送信されると仮定する。 In some implementations, the selected digital component prevents either computing system MPC1 or MPC2 from being able to access the selected digital component in plaintext, and the digital component's client device 110 is sent to client device 110 using a mask to reduce latency in transmission to. In this example, application 112 can select a nonce for each digital component request and send the nonce with the digital component request. Application 112 can send a nonce to one of computing systems MPC1 or MPC2. For purposes of illustration, assume that the nonce is sent to computing system MPC2.

アプリケーション112と計算システムMPC2の両方は、同じアルゴリズムおよび同じ入力を用いて、最大のデジタルコンポーネント創作物と同じサイズのマスクを独立して計算することができる。たとえば、マスクのi番目のビットは、PRF(nonce, i)として表すことができ、PRFは、擬似ランダム関数を表す。アプリケーション112と計算システムMPC2の両方は、ノンスおよびマスクを計算システムMPC1から厳密に秘密のままにすることができる。 Both the application 112 and the computing system MPC2 can independently compute a mask the same size as the largest digital component creation, using the same algorithms and the same inputs. For example, the i-th bit of the mask can be represented as PRF(nonce, i), where PRF represents a pseudo-random function. Both application 112 and computing system MPC2 can keep the nonce and mask strictly secret from computing system MPC1.

選択されるデジタルコンポーネントをアプリケーション112に送信するために、計算システムMPC2は、[result2]ビット単位XORマスクを計算システムMPC1に送信することができる。次いで、計算システムMPC1は、たとえば、デジタルコンポーネント要求への応答として、[result1]ビット単位XOR([result2]ビット単位XORマスク)をアプリケーション112に、選択結果として送信する。 To send the selected digital component to application 112, computing system MPC2 may send the [result 2 ] bitwise XOR mask to computing system MPC1. Computing system MPC1 then sends [result 1 ] bitwise XOR ([result 2 ] bitwise XOR mask) to application 112 as a selection result, eg, in response to the digital component request.

アプリケーション112は、デジタルコンポーネントの創作物として、[result1]ビット単位XOR([result2]ビット単位XORマスク)ビット単位XORマスクを計算する。これは、[result1]ビット単位XOR[result2]と等価である。これによって、プライベート情報抽出保証を保持しながら、最大の創作物のサイズに必要な帯域幅が低減する。これによって、上述したような、選択結果の2つの秘密シェアの送信に対する応答の帯域幅が低減する。このように、他のプロセスにおけるようなデジタルコンポーネント創作物の送信に対して、このプライバシー保持技法においては、追加のレイテンシまたは帯域幅消費がほとんどまたはまったくない。 Application 112 computes the [result 1 ] bitwise XOR ([result 2 ] bitwise XOR mask) bitwise XOR mask as a creation of the digital component. This is equivalent to [result 1 ] bitwise XOR [result 2 ]. This reduces the bandwidth required for the largest creation sizes while maintaining private information extraction guarantees. This reduces the bandwidth of the response to the transmission of the two secret shares of the selection result, as described above. Thus, there is little or no additional latency or bandwidth consumption in this privacy-preserving technique relative to the transmission of digital component creations as in other processes.

第2の値の選択プロセスについて、計算システムMPC1およびMPC2は、各デジタルコンポーネントについて、第2の選択値のパラメータmaybe_second_sviの秘密シェアを計算することができる。デジタルコンポーネントiの第2の選択値のパラメータは、デジタルコンポーネントの選択値が候補デジタルコンポーネントの間で2番目に高い選択値であり得るか否かを表すブール値であり得る。選択値は、選択値に対応するデジタルコンポーネントが実際に候補デジタルコンポーネントである場合にのみ、候補デジタルコンポーネントの間で2番目に高い選択値となる。したがって、デジタルコンポーネントiの第2の選択値のパラメータmaybe_second_sviは、デジタルコンポーネントが実際に候補デジタルコンポーネントである場合に、デジタルコンポーネントが2番目に高い選択値を有するか否かを表す。計算システムMPC1およびMPC2は、秘密シェア同等性テストを実施して、第2の選択値のパラメータmaybe_second_svi = (acci == 1)の秘密シェアを決定することができる。 For the second value selection process, the computing systems MPC1 and MPC2 may compute the secret share of the second selection value parameter maybe_second_sv i for each digital component. The second selected value parameter for digital component i may be a Boolean value representing whether the selected value of the digital component may be the second highest selected value among the candidate digital components. A selection value is the second highest selection value among candidate digital components only if the digital component corresponding to the selection value is actually a candidate digital component. Thus, the parameter maybe_second_sv i for the second selection value of digital component i represents whether the digital component has the second highest selection value, if the digital component is indeed a candidate digital component. Computing systems MPC1 and MPC2 may perform a secret share equivalence test to determine the secret share for the second selected value parameter maybe_second_sv i = (acc i == 1).

この同等性テストの終了において、計算システムMPC1は、デジタルコンポーネントiの第2の選択値のパラメータmaybe_second_sviの第1の秘密シェア[maybe_second_svi,1]を有し、計算システムMPC2は、デジタルコンポーネントiの第2の選択値のパラメータmaybe_second_sviの第2の秘密シェア[maybe_second_svi,2]を有する。 At the end of this equivalence test, computing system MPC1 has the first secret share [maybe_second_sv i,1 ] of the parameter maybe_second_sv i of the second selected value of digital component i, and computing system MPC2 has digital component i has a second secret share [maybe_second_sv i,2 ] of parameter maybe_second_sv i with a second selected value of .

次いで、計算システムMPC1およびMPC2は、各デジタルコンポーネントiについて、is_dc_a_candidatei AND maybe_second_sviの結果が真または1のブール値であるか否かを判定することによって、秘密シェアに関して2番目に高い選択値を有する候補デジタルコンポーネントを決定することができる。すなわち、計算システムMPC1およびMPC2は、いずれのデジタルコンポーネントが、候補デジタルコンポーネントであり、真または1のブール値を有する第2の選択値のパラメータmaybe_second_sviを有するかを判定することができる。 Computing systems MPC1 and MPC2 then, for each digital component i, determine if the result of is_dc_a_candidate i AND maybe_second_sv i is a boolean value of true or 1, to determine the second highest selected value for the secret share. Candidate digital components to have can be determined. That is, the computing systems MPC1 and MPC2 can determine which digital component is a candidate digital component and has a second selected value parameter maybe_second_sv i having a Boolean value of true or one.

概念的に、計算システムMPC1およびMPC2は、下記の関係8を使用して候補の間で2番目に高い選択値を計算することができる。
second_selection_value=Σi(selectionvaluei x (is_dc_a_candidatei AND maybe_second_svi ))
Conceptually, computation systems MPC1 and MPC2 can compute the second highest selection value among the candidates using relationship 8 below.
second_selection_value=Σ i (selectionvalue i x (is_dc_a_candidate i AND maybe_second_sv i ))

関係8において、パラメータ「selectionvaluei」は、(任意のブーストを有する)デジタルコンポーネントiの選択値であり、パラメータ「second_selection_value」は、候補デジタルコンポーネントの間で2番目に高い選択値の値である。関係を使用して、第2の選択値は、候補であり、真のブール値を有する第2の選択値のパラメータを有するデジタルコンポーネントの選択値である。この関係におけるブール値は、1(真)または0(偽)の値として処理することができる。 In relation 8, parameter 'selectionvalue i ' is the selection value of digital component i (with any boost) and parameter 'second_selection_value' is the value of the second highest selection value among the candidate digital components. Using the relation, the second selection value is the selection value of the digital component that is a candidate and has a second selection value parameter that has a true boolean value. Boolean values in this relationship can be treated as values of 1 (true) or 0 (false).

秘密シェアにおいて、計算システムMPC1およびMPC2は、秘密シェアを用いてis_dc_a_candidatei AND maybe_second_sviの結果を計算し、その結果をZ2空間内の2つの加法的秘密シェア(たとえば、加算し、その後mod 2をとった値)として表す。加えて、選択値は平文である。関係8は、乗算を、平文表現における選択値内の各ビットと、各計算システムMPC1およびMPC2によって保持されるis_dc_a_candidatei AND maybe_second_sviの結果の1ビット秘密シェアとの間のビット単位論理AND演算に置き換えることによって単純化することができる。加えて、総和を、ビット単位XOR演算に置き換えることができる。 In the secret share, computation systems MPC1 and MPC2 use the secret share to calculate the result of is_dc_a_candidate i AND maybe_second_sv i , and the result to two additive secret shares in Z 2 space (e.g., add, then mod 2 ). Additionally, the selection value is plaintext. Relation 8 reduces the multiplication to a bitwise logical AND operation between each bit in the selected value in the plaintext representation and the 1-bit secret share of the result of is_dc_a_candidate i AND maybe_second_sv i held by each computing system MPC1 and MPC2. It can be simplified by replacing Additionally, the summation can be replaced with a bitwise XOR operation.

図5は、クライアントデバイスへの配信用のデジタルコンポーネントを選択するための例示的なプロセス500のスイムレーン図である。プロセス500の動作は、たとえば、MPCクラスタ130の計算システムMPC1または計算システムMPC2によって実施され得る。プロセス500の動作は、非一時的であり得る、1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス500の動作を実行させ得る。上記で言及したように、プロセス500は、階層を含む選択プロセスに使用することができる。 FIG. 5 is a swimlane diagram of an exemplary process 500 for selecting digital components for delivery to client devices. The operations of process 500 may be performed by computing system MPC1 or computing system MPC2 of MPC cluster 130, for example. The operations of process 500 may be implemented as instructions stored on one or more computer-readable media, which may be non-transitory, and execution of the instructions by one or more data processing devices may occur in one Or, multiple data processing devices may perform the operations of process 500 . As mentioned above, process 500 can be used for selection processes involving hierarchies.

計算システムMPC1およびMPC2は、デジタルコンポーネントの選択値を決定する(502)。計算システムMPC1およびMPC2は、クライアントデバイス110からのデジタルコンポーネント要求の受信に応答して選択値を取得または決定することができる。計算システムMPC1は、デジタルコンポーネント選択プロセスに対して適格である、適格なデジタルコンポーネントを識別する(504)。計算システムMPC2もまた、デジタルコンポーネント選択プロセスに対して適格である、適格なデジタルコンポーネントを識別する(506)。各適格なデジタルコンポーネントについて、計算システムMPC1およびMPC2は、デジタルコンポーネントがデジタルコンポーネント選択プロセスの候補であるか否かを判定する(508)。ステップ502~508は、図4に示すプロセス400のステップ402~408と同じであるかまたは類似し得る。 Computing systems MPC1 and MPC2 determine (502) selected values for the digital components. Computing systems MPC1 and MPC2 may obtain or determine selection values in response to receiving digital component requests from client device 110 . Computing system MPC1 identifies eligible digital components that are eligible for the digital component selection process (504). Computing system MPC2 also identifies eligible digital components that are eligible for the digital component selection process (506). For each eligible digital component, computing systems MPC1 and MPC2 determine (508) whether the digital component is a candidate for the digital component selection process. Steps 502-508 may be the same as or similar to steps 402-408 of process 400 shown in FIG.

計算システムMPC1は、デジタルコンポーネントを階層にグループ化する(510)。上述したように、パブリッシャは、DSP150および/またはデジタルコンポーネントプロバイダ160の階層を確立することができる。パブリッシャの階層は、最高優先度階層、最低優先度階層、および、任意選択的に、最高優先度と最低優先度との間の1つまたは複数の階層を含むことができる。 Computing system MPC1 groups (510) the digital components into a hierarchy. As noted above, publishers may establish hierarchies of DSPs 150 and/or digital component providers 160 . The hierarchy of publishers may include a highest priority tier, a lowest priority tier, and optionally one or more tiers between the highest and lowest priority.

計算システムMPC1は、デジタルコンポーネントに対応し、たとえば、デジタルコンポーネントの選択値または値のベクトルを与えられている、DSP150またはデジタルコンポーネントプロバイダ160に基づいて、各デジタルコンポーネントの階層を決定することができる。次いで、計算システムMPC1は、デジタルコンポーネントをそれらのそれぞれの階層にグループ化することができる。同様に、計算システムMPC2は、デジタルコンポーネントをそれらのそれぞれの階層にグループ化することができる(512)。階層のデジタルコンポーネントのグループは、計算システムMPC1とMPC2の両方について同じであるべきである。いくつかの実施態様において、SSP170は、階層を明示的に決定し、次いで、MPCクラスタ130に記憶、たとえばキャッシュされることになる各選択値のメタデータに符号化する。 Computing system MPC1 can determine the hierarchy of each digital component based on DSP 150 or digital component provider 160, which corresponds to the digital component and is provided, for example, with a selection value or vector of values for the digital component. Computing system MPC1 can then group the digital components into their respective hierarchies. Similarly, computing system MPC2 may group digital components into their respective hierarchies (512). The grouping of digital components in the hierarchy should be the same for both computing systems MPC1 and MPC2. In some implementations, SSP 170 explicitly determines the hierarchy and then encodes it into metadata for each selection value to be stored, eg, cached, in MPC cluster 130 .

計算システムMPC1およびMPC2は、次いで、それらの階層のうちの1つまたは複数の各々について個々の選択プロセスを実施して、デジタルコンポーネント要求に応答して提供するデジタルコンポーネントを選択することができる(513)。いくつかの実施態様において、計算システムMPC1およびMPC2は、選択プロセスを階層に対して並列に実施する。いくつかの実施態様において、計算システムMPC1およびMPC2は、選択プロセスを順次的に実施し、最高優先度階層から開始して、選択プロセスがすべての階層に対して実施されるまで、階層ごとに下っていく。いくつかの実施態様において、計算システムMPC1およびMPC2は、階層内で候補が見つかると停止し得るが、これは、ユーザ機密情報を計算システムMPC1およびMPC2への漏洩への危険にさらす可能性がある。破線ボックス内のステップは、個々の選択プロセスが実施される階層ごとに実施される。 Computing systems MPC1 and MPC2 may then perform individual selection processes for each of one or more of their hierarchies to select digital components to provide in response to digital component requests (513 ). In some embodiments, computing systems MPC1 and MPC2 perform the selection process on the hierarchy in parallel. In some embodiments, computing systems MPC1 and MPC2 perform the selection process sequentially, starting with the highest priority tier and descending tier by tier until the selection process has been performed for all tiers. To go. In some implementations, computing systems MPC1 and MPC2 may stop when a candidate is found in the hierarchy, but this may expose user sensitive information to exposure to computing systems MPC1 and MPC2. . The steps within the dashed box are performed for each hierarchy where the individual selection process is performed.

計算システムMPC1は、選択値によって階層にグループ化されるデジタルコンポーネントを順序付けする(514)。選択値は、最初に階層優先度によって、次いで同じ階層内で選択値によって順序付けすることができる。同様に、計算システムMPC2は、選択値によって階層にグループ化されるデジタルコンポーネントを順序付けする(516)。各階層について、これらのステップ514および516は、図4に示すプロセス400のステップ410および412と同様である。しかしながら、順序は、階層内に含まれるデジタルコンポーネントのみを含む。 Computing system MPC1 orders (514) the digital components grouped into hierarchies by selection values. The selection values may be ordered first by hierarchy priority and then by selection value within the same hierarchy. Similarly, computing system MPC2 orders (516) the digital components grouped into hierarchies by selection values. For each hierarchy, these steps 514 and 516 are similar to steps 410 and 412 of process 400 shown in FIG. However, the sequence only includes digital components contained within the hierarchy.

計算システムMPC1およびMPC2は、協働して、階層内の各デジタルコンポーネントの累積値acciの秘密シェアを決定する(518)。上述したように、所与のデジタルコンポーネントの累積値は、所与のデジタルコンポーネントが候補である場合であっても所与のデジタルコンポーネントを除外した、順序の最初から所与のデジタルコンポーネントの選択値までの候補デジタルコンポーネントの総数を表すことができる。計算システムMPC1およびMPC2は、図4のプロセス400のステップ414を参照しながら上述したのと同様にして、階層内のデジタルコンポーネントの累積値を決定することができる。 Computing systems MPC1 and MPC2 cooperate to determine the secret share of the cumulative value acc i of each digital component in the hierarchy (518). As noted above, the cumulative value of a given digital component is the selected value of the given digital component from the beginning of the order, excluding the given digital component even if the given digital component is a candidate. can represent the total number of candidate digital components up to . Computing systems MPC1 and MPC2 may determine the cumulative value of the digital components in the hierarchy in a manner similar to that described above with reference to step 414 of process 400 of FIG.

計算システムMPC1およびMPC2は、いくつかの実施態様においては秘密シェアアルゴリズムに応じて一切のラウンドトリップ計算なしに独立して各デジタルコンポーネントの累積値accのそれらの秘密シェアを決定することができる。たとえば、計算システムMPC1は、各デジタルコンポーネントiについて、Table 3(表3)を参照しながら上述したように、最高から最低への順序で階層内のすべてのデジタルコンポーネントをトラバースし、進行中にデジタルコンポーネントの候補パラメータis_dc_a_candidateを合計することによって、累積値accの第1のシェア[acci,1]を決定することができる。同様に、計算システムMPC2は、各デジタルコンポーネントiについて、最高から最低への順序で階層内のすべてのデジタルコンポーネントをトラバースし、進行中にデジタルコンポーネントの候補パラメータis_dc_a_candidateを合計することによって、累積値accの第2のシェア[acci,2]を決定することができる。 Computing systems MPC1 and MPC2 can independently determine their secret share of the cumulative value acc of each digital component without any round-trip calculations according to a secret share algorithm in some embodiments. For example, the computing system MPC1 may, for each digital component i, traverse all digital components in the hierarchy in order from highest to lowest, as described above with reference to Table 3, and digital A first share [acc i,1 ] of the cumulative value acc can be determined by summing the component candidate parameters is_dc_a_candidate. Similarly, the computation system MPC2, for each digital component i, traverses all the digital components in the hierarchy in order from highest to lowest, summing the digital component's candidate parameter is_dc_a_candidate on the fly to obtain the cumulative value acc A second share of [acc i,2 ] can be determined.

計算システムMPC1およびMPC2は、階層内の各候補デジタルコンポーネントについて、累積値が指定の値に等しいか否かを示す結果の秘密シェアを決定する(520)。指定の値は、Table 3(表3)の列3および4に示すように、0の値であり得る。階層内で、累積値が0であり、全体的な候補パラメータis_dc_a_candidateが真または1のブール値を有するデジタルコンポーネントは、存在する場合、階層内の候補デジタルコンポーネントの中で最高の選択値を有するデジタルコンポーネントである。 Computing systems MPC1 and MPC2 determine, for each candidate digital component in the hierarchy, a secret share of results indicating whether the cumulative value is equal to a specified value (520). The specified value can be a value of 0, as shown in columns 3 and 4 of Table 3. Within the hierarchy, a digital component with a cumulative value of 0 and an overall candidate parameter is_dc_a_candidate with a boolean value of true or 1 is the digital with the highest selection value among the candidate digital components in the hierarchy, if any. is a component.

計算システムMPC1およびMPC2は、各デジタルコンポーネントiの秘密シェアに関して等価演算acci == 0を計算するために、セキュアMPCプロセスの一部としての、たとえば複数回のRPCなどの複数ラウンドの計算に関与することができる。等価演算は、デジタルコンポーネントiの累積値acciが0の値を有するか否かを判定するために使用される。このプロセスの終了において、計算システムMPC1は、階層内の各デジタルコンポーネントiについて、結果acci == 0の一方の秘密シェアを有し、計算システムMPC2は、階層内の各デジタルコンポーネントについて、結果acci == 0の他方の秘密シェアを有する。 Computational systems MPC1 and MPC2 participate in multiple rounds of computation, e.g., multiple RPCs, as part of the secure MPC process to compute the equivalent operation acc i == 0 on the secret share of each digital component i. can do. The equality operation is used to determine whether the accumulated value acc i of digital component i has a value of zero. At the end of this process, computing system MPC1 has, for each digital component i in the hierarchy, one secret share with the result acc i == 0, and computing system MPC2 has, for each digital component in the hierarchy, the result acc It has the secret share of the other with i == 0.

計算システムMPC1およびMPC2は、階層内の各デジタルコンポーネントの勝者パラメータの秘密シェアを決定する(522)。計算システムMPC1およびMPC2は、階層内の各デジタルコンポーネントiについての、累積値acci == 0の秘密シェアおよび階層内の各デジタルコンポーネントiの候補パラメータis_dc_a_candidateiの秘密シェアに基づいて、勝者パラメータis_dc_the_winneriを決定することができる。各デジタルコンポーネントiの勝者パラメータis_dc_the_winneriは、たとえば、デジタルコンポーネントiが候補デジタルコンポーネントであり、階層内の候補デジタルコンポーネントの間で最高の選択値を有するか否かなど、デジタルコンポーネントiが階層の選択プロセスの勝者であるか否かを示すブール値とすることができる。いくつかの実施態様において、計算システムMPC1およびMPC2は、秘密シェア乗算プロトコルを実行して、各選択値について、秘密シェアに関して勝者パラメータis_dc_the_winneri=(is_dc_a_candidatei×(acci==0))を計算することができる。 Computing systems MPC1 and MPC2 determine the secret share of the winning parameter for each digital component in the hierarchy (522). Computing systems MPC1 and MPC2 compute the winner parameter is_dc_the_winner i can be determined. The winner parameter is_dc_the_winner i for each digital component i determines whether digital component i is a candidate digital component and whether digital component i has the highest selection value among candidate digital components in the hierarchy. It can be a boolean indicating whether the process is the winner. In some embodiments, computational systems MPC1 and MPC2 run a secret share multiplication protocol to compute, for each selected value, the winner parameter is_dc_the_winner i =(is_dc_a_candidate i ×(acc i ==0)) in terms of secret shares. can do.

計算システムMPC1およびMPC2は、選択結果を決定する(524)。計算システムMPC1およびMPC2は、デジタルコンポーネントが階層の勝者であることを示す値(たとえば、ブールの真または1)を有する勝者パラメータis_dc_the_winneriを有するデジタルコンポーネントを含む最高の階層を決定することによって、選択結果を決定することができる。このデジタルコンポーネントは、デジタルコンポーネント選択プロセス全体の勝者である。計算システムMPC1およびMPC2は、累積値を使用して、真または1に等しい勝者パラメータを有する最高の階層を決定することができる。たとえば、計算システムMPC1およびMPC2は、階層内のすべてのデジタルコンポーネントの累積値が0でない最高の階層を識別することができる。 Computing systems MPC1 and MPC2 determine the selection result (524). Computing systems MPC1 and MPC2 select by determining the highest stratum containing a digital component with a winner parameter is_dc_the_winner i with a value (e.g., boolean true or 1) indicating that the digital component is the winner of the stratum. result can be determined. This digital component is the winner of the entire digital component selection process. Calculation systems MPC1 and MPC2 can use the cumulative value to determine the highest tier with a winner parameter equal to true or one. For example, computing systems MPC1 and MPC2 can identify the highest hierarchy in which all digital components in the hierarchy have non-zero cumulative values.

計算システムMPC1は、デジタルコンポーネント要求がそこから受信されたクライアントデバイス110に、選択結果の第1の秘密シェアを提供する(526)。計算システムMPC2は、デジタルコンポーネント要求がそこから受信されたクライアントデバイス110に、選択結果の第2の秘密シェアを提供する(528)。 Computing system MPC1 provides the first secret share of the selection result to the client device 110 from which the digital component request was received (526). Computing system MPC2 provides a second secret share of the selection result to the client device 110 from which the digital component request was received (528).

階層を含む第2の値の選択プロセスにおいて、デジタルコンポーネントの選択値は、デジタルコンポーネントが、選択されるデジタルコンポーネントと同じ階層内にある場合にのみ、選択プロセスの第2の選択値を提供するのに適格である。第2の選択値を決定するために、計算システムMPC1およびMPC2は、各階層tについて、階層tがクライアントデバイス110に配信するために選択されているデジタルコンポーネントを含むか否かを表す勝利階層パラメータmaybe_winning_tiertを計算することができる。概念的に、計算システムMPC1およびMPC2は、下記の関係9を使用して各階層tの勝利階層パラメータmaybe_winning_tiertを計算することができる。 In a second value selection process that includes a hierarchy, the selected value of the digital component provides the second selected value of the selection process only if the digital component is within the same hierarchy as the digital component being selected. eligible for To determine the second selection value, computing systems MPC1 and MPC2 determine, for each tier t, a winning tier parameter representing whether tier t contains the digital component selected for delivery to client device 110. Maybe_winning_tier t can be calculated. Conceptually, computation systems MPC1 and MPC2 can compute the winning tier parameter maybe_winning_tier t for each tier t using relationship 9 below.

Figure 2023529783000008
Figure 2023529783000008

関係9において、パラメータ「T」は、階層tよりも高い優先度を有するすべての階層を表す。したがって、階層の勝利階層パラメータmaybe_winning_tiertは、任意のより高い優先度の階層が候補デジタルコンポーネントを含むか否かを表す。そうでない場合、階層tは、少なくとも1つの候補デジタルコンポーネントを含む場合に、勝利階層である。 In relation 9, the parameter 'T' represents all tiers with a higher priority than tier t. Thus, the tier's winning tier parameter maybe_winning_tier t represents whether any higher priority tier contains the candidate digital component. Otherwise, stratum t is a winning stratum if it contains at least one candidate digital component.

総和と値0との間の同等性テストはまた、計算システムMPC1とMPC2との間のRPCを使用して計算することもできる。様々な計算の複数のRPCをともにより少数のRPCにグループ化して、計算システムMPC1とMPC2との間のレイテンシおよびネットワーク帯域幅消費を低減することができる。 An equality test between the sum and the value 0 can also be computed using an RPC between computation systems MPC1 and MPC2. Multiple RPCs of various computations can be grouped together into fewer RPCs to reduce latency and network bandwidth consumption between computing systems MPC1 and MPC2.

次いで、計算システムMPC1およびMPC2は、第2の選択値が、所与のデジタルコンポーネントの第2の選択値によって、所与のデジタルコンポーネントの候補パラメータis_dc_a_candidatei、(図4を参照しながら上述したように計算することができる)デジタルコンポーネントの第2の選択値のパラメータmaybe_second_svi、および所与のデジタルコンポーネントを含む階層tの勝利階層パラメータmaybe_winning_tiertの組合せに基づいて設定されるか否かを判定することができる。たとえば、第2の選択値は、所与のデジタルコンポーネントのis_dc_a_candidatei AND maybe_second_svi AND maybe_winning_tiertが真または1のブール値を有するときに、所与のデジタルコンポーネントの選択値によって設定される。 Calculation systems MPC1 and MPC2 then determine that the second selection value is determined by the second selection value of the given digital component to the candidate parameter is_dc_a_candidate i of the given digital component (as described above with reference to FIG. 4). determined based on the combination of the digital component's second choice value parameter maybe_second_sv i , and the winning tier parameter maybe_winning_tier t of the tier t containing the given digital component. be able to. For example, the second selection value is set by the selection value of a given digital component when is_dc_a_candidate i AND maybe_second_sv i AND maybe_winning_tier t of the given digital component has a boolean value of true or one.

次いで、計算システムMPC1およびMPC2は、所与のデジタルコンポーネントの選択値を使用して第2の選択値を決定することができる。たとえば、第2の選択値は、所与のデジタルコンポーネントの選択値または所与のデジタルコンポーネントの選択値+指定量に等しくなり得る。 Computing systems MPC1 and MPC2 can then use the selected value of the given digital component to determine a second selected value. For example, the second selection value may equal the selection value of the given digital component or the selection value of the given digital component plus a specified amount.

DSP150およびデジタルコンポーネントプロバイダ160は、多くの場合、同様の選択プロセスにおいてデジタルコンポーネントに対して提供する選択値を最適化または改善することができるように、デジタルコンポーネントプロセスの最高の他の選択値を知ることから利益を得ることができる。たとえば、そのデジタルコンポーネントが選択されたDSP150は、その選択値が次に高い選択値よりもどれだけ高かったかを知ることから利益を得る場合がある。同様に、そのデジタルコンポーネントが選択されなかったDSP150は、デジタルコンポーネントが選択されるためには選択値がどれくらい高い必要があるかを知ることから利益を得る場合がある。DSP150および/またはデジタルコンポーネントプロバイダ160が、この情報に基づいて選択値を提供する場合、DSP150は、たとえば、過度に高い選択値に起因する無駄を回避すること、または、低い選択値に起因するデジタルコンポーネント提示機会の損失を回避することなど、その目的を達成する可能性がより高い。 DSP 150 and digital component provider 160 often know the best other selection values for digital component processes so that they can optimize or improve the selection values they provide for digital components in similar selection processes. can benefit from it. For example, the DSP 150 whose digital component was selected may benefit from knowing how much higher its selected value was than the next higher selected value. Similarly, a DSP 150 whose digital component was not selected may benefit from knowing how high the selection value must be for the digital component to be selected. If DSP 150 and/or digital component provider 160 provide selection values based on this information, DSP 150 can, for example, avoid waste due to excessively high selection values or digital It is more likely to achieve its objectives, such as avoiding loss of component presentation opportunities.

そのデジタルコンポーネントが選択されたDSP150またはデジタルコンポーネントプロバイダ160について、最高の他の選択値は、2番目に高い選択値である。すべての他のものについて、最高の他の選択値は最高の選択値である。これは、第1の値の選択プロセスと第2の値の選択プロセスの両方について同じである。 For the DSP 150 or digital component provider 160 whose digital component was selected, the highest other selection value is the second highest selection value. For all others, the highest other selected value is the highest selected value. This is the same for both the first value selection process and the second value selection process.

図6は、デジタルコンポーネント選択プロセス内のデジタルコンポーネントの最高の他の選択値を決定するための例示的なプロセス600の図である。プロセス600の動作は、たとえば、MPCクラスタ130の計算システムMPC1または計算システムMPC2によって実施され得る。プロセス600の動作は、非一時的であり得る、1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス600の動作を実行させ得る。 FIG. 6 is an illustration of an exemplary process 600 for determining best alternative selection values for digital components within a digital component selection process. The operations of process 600 may be performed by computing system MPC1 or computing system MPC2 of MPC cluster 130, for example. The operations of process 600 may be implemented as instructions stored on one or more computer-readable media, which may be non-transitory, and execution of the instructions by one or more data processing devices may occur in one Or, multiple data processing devices may perform the operations of process 600 .

計算システムMPC1およびMPC2は、デジタルコンポーネント選択プロセスを実施して、クライアントデバイスに配信するためのデジタルコンポーネントを選択する(602)。計算システムMPC1およびMPC2は、セキュアMPCプロセスを使用して協働して、図3~図5を参照しながら上述したように、デジタルコンポーネントを選択することができる。 Computing systems MPC1 and MPC2 perform a digital component selection process to select digital components for delivery to client devices (602). Computing systems MPC1 and MPC2 may cooperate using a secure MPC process to select digital components as described above with reference to FIGS.

計算システムMPC1およびMPC2は、デジタルコンポーネント選択プロセスの第1の選択値を決定する(604)。第1の選択値は、クライアントデバイス110への配信のために選択されているデジタルコンポーネントの選択値であり得る。たとえば、第1の選択値は、候補デジタルコンポーネントの最高の選択値であり得る。階層が使用される場合、第1の選択値は、少なくとも1つの候補デジタルコンポーネントを含む最高優先度階層内の候補デジタルコンポーネントの最高の選択値であり得る。 Computing systems MPC1 and MPC2 determine a first selection value for the digital component selection process (604). The first selection value may be the selection value of the digital component being selected for delivery to client device 110 . For example, the first selection value may be the highest selection value of the candidate digital components. If hierarchies are used, the first selection value may be the highest selection value of the candidate digital component in the highest priority hierarchy containing at least one candidate digital component.

計算システムMPC1およびMPC2は、協働して、セキュアMPCプロセスを使用して第1の選択値を決定することができる。概念的に、計算システムMPC1およびMPC2は、下記の関係10を使用して第1の選択値を決定することができる。
first selection value= Σ(selection_valuei x (is_dc_a_candidatei AND maybe_first_svi))
Computing systems MPC1 and MPC2 may cooperate to determine the first selected value using a secure MPC process. Conceptually, computing systems MPC1 and MPC2 can use relationship 10 below to determine the first selection value.
first selection value= Σ(selection_value i x (is_dc_a_candidate i AND maybe_first_sv i ))

この総和は、デジタルコンポーネント選択プロセスに含まれるすべてのデジタルコンポーネントにわたるものであり得る。各デジタルコンポーネントiの選択値(selection_valuei)は平文であり得る。上述したように、計算システムMPC1およびMPC2は、候補パラメータis_dc_a_candidateiおよび第1の選択値のパラメータmaybe_first_sviの秘密シェアを計算することができる。計算システムMPC1は、各デジタルコンポーネントiについて、候補パラメータis_dc_a_candidateiの第1のシェア[is_dc_a_candidatei,1]および第1の選択値のパラメータmaybe_first_sviの第1のシェア[maybe_first_svi,1]を記憶することができる。同様に、計算システムMPC2は、各デジタルコンポーネントiについて、候補パラメータis_dc_a_candidateiの第2のシェア[is_dc_a_candidatei,2]および第1の選択値のパラメータmaybe_first_sviの第2のシェア[maybe_first_svi,2]を記憶することができる。 This sum may be over all digital components involved in the digital component selection process. The selection value (selection_value i ) for each digital component i can be plaintext. As described above, the computing systems MPC1 and MPC2 can compute the secret share of the candidate parameter is_dc_a_candidate i and the first selection value parameter maybe_first_sv i . The computing system MPC1 stores, for each digital component i, a first share [is_dc_a_candidate i ,1 ] of the candidate parameter is_dc_a_candidate i and a first share [maybe_first_sv i ,1 ] of the first selection value parameter maybe_first_sv i . be able to. Similarly, the computation system MPC2 computes, for each digital component i, the second share of the candidate parameter is_dc_a_candidate i ,2 ] and the second share of the first selection value parameter maybe_first_sv i,2 [ maybe_first_sv i,2 ] can be stored.

計算システムMPC1およびMPC2は、デジタルコンポーネント選択プロセスの第2の選択値を決定する(606)。第2の選択値は、クライアントデバイス110への配信のために選択されているデジタルコンポーネントの選択値の後の次に高い選択値であり得る。たとえば、第2の選択値は、候補デジタルコンポーネントの2番目に高い選択値であり得る。階層が使用される場合、第2の選択値は、少なくとも1つの候補デジタルコンポーネントを含む最高優先度階層内の候補デジタルコンポーネントの2番目に高い選択値であり得る。 Computing systems MPC1 and MPC2 determine a second selection value for the digital component selection process (606). The second selection value may be the next highest selection value after the selection value of the digital component being selected for delivery to client device 110 . For example, the second selected value may be the second highest selected value of the candidate digital component. If a hierarchy is used, the second selection value may be the second highest selection value of the candidate digital component within the highest priority hierarchy containing at least one candidate digital component.

計算システムMPC1およびMPC2は、協働して、セキュアMPCプロセスを使用して第2の選択値を決定することができる。概念的に、計算システムMPC1およびMPC2は、下記の関係11を使用して第2の選択値を決定することができる。
second selection value= Σ(selection_valuei x (is_dc_a_candidatei AND maybe_second_svi))
Computing systems MPC1 and MPC2 may cooperate to determine the second selected value using a secure MPC process. Conceptually, computing systems MPC1 and MPC2 can use relationship 11 below to determine the second selection value.
second selection value= Σ(selection_value i x (is_dc_a_candidate i AND maybe_second_sv i ))

この総和は、デジタルコンポーネント選択プロセスに含まれるすべてのデジタルコンポーネントにわたるものであり得る。上述したように、計算システムMPC1およびMPC2は、候補パラメータis_dc_a_candidateiおよび第2の選択値のパラメータmaybe_second_sviの秘密シェアを計算することができる。計算システムMPC1は、各デジタルコンポーネントiについて、第2の選択値のパラメータmaybe_second_sviの第1のシェア[maybe_second_svi,1]を記憶することができる。同様に、計算システムMPC2は、各デジタルコンポーネントiについて、第2の選択値のパラメータmaybe_second_sviの第2のシェア[maybe_second_svi,2]を記憶することができる。 This sum may be over all digital components involved in the digital component selection process. As described above, the computing systems MPC1 and MPC2 can compute the secret share of the candidate parameter is_dc_a_candidate i and the second selected value parameter maybe_second_sv i . The computing system MPC1 may store, for each digital component i, a first share [maybe_second_sv i ,1 ] of the second selection value parameter maybe_second_sv i . Similarly, the computing system MPC2 may store for each digital component i a second share [maybe_second_sv i ,2 ] of the second selection value parameter maybe_second_sv i .

関係10および11において、真および偽のブール値は、それぞれ1および0として処理することができる。秘密シェアにおいて、計算システムMPC1およびMPC2は、(たとえば、計算システム間のRPCを使用して)秘密シェアを用いて両方の関係10と11のAND演算の結果を計算し、その結果をZ2空間内の2つの加法的秘密シェア(たとえば、加算し、その後mod 2をとった値)として表す。したがって、各計算システムは、第1の選択値および第2の選択値の秘密シェアを記憶することができる。たとえば、計算システムMPC1は、第1の選択値の第1のシェアおよび第2の選択値の第1のシェアを記憶することができる。同様に、計算システムMPC2は、第1の選択値の第2のシェアおよび第2の選択値の第2のシェアを記憶することができる。第1の選択値の2つのシェアの総和(たとえば、加算し、その後mod 2をとった値)は第1の選択値に等しく、第2の選択値の2つのシェアの総和(たとえば、加算し、その後mod 2をとった値)は第2の選択値に等しい。 In relations 10 and 11, true and false Boolean values can be treated as 1 and 0 respectively. In the secret share, computational systems MPC1 and MPC2 compute the result of the AND operation of both relations 10 and 11 using the secret share (e.g., using RPCs between computational systems), and store the result in the Z2 space as the two additive secret shares in (eg, added and then mod 2). Each computing system can thus store a secret share of the first selection value and the second selection value. For example, computing system MPC1 may store a first share of a first selection value and a first share of a second selection value. Similarly, the computing system MPC2 can store a second share of the first selection value and a second share of the second selection value. The sum of the two shares of the first selection value (e.g. added and then mod 2) is equal to the first selection value, and the sum of the two shares of the second selection value (e.g. , then mod 2) is equal to the second selection value.

関係10および11は、乗算を、上記選択値の各選択値(selection_valuei)と、候補パラメータと各計算システムMPC1およびMPC2によって保持される第1の選択値のパラメータ(または第2の選択値のパラメータ)との間のAND演算の結果の1ビット秘密シェアとの間のビット単位AND演算に置き換えることによって単純化することができる。加えて、関係10および11の総和を、ビット単位XOR演算に置き換えることができる。 Relations 10 and 11 apply the multiplication of each selection value (selection_value i ) of the above selection values to the candidate parameters and parameters of the first selection value held by each computational system MPC1 and MPC2 (or of the second selection value parameter) by replacing it with a bitwise AND operation with the 1-bit secret share of the result of the AND operation. Additionally, the summation of relations 10 and 11 can be replaced with a bitwise XOR operation.

各デジタルコンポーネントについて、計算システムMPC1およびMPC2は、最高の他の選択値を計算する(608)。計算システムMPC1およびMPC2は、秘密シェアにおける2ステッププロセスを使用してデジタルコンポーネントの最高の他の選択値を計算することができる。計算システムMPC1およびMPC2は、デジタルコンポーネントiの勝者パラメータis_dc_the_winneriを計算することができる。計算システムMPC1およびMPC2は、候補パラメータis_dc_a_candidateiの秘密シェアおよび第1の選択値のパラメータmaybe_first_sviの秘密シェアを使用して勝者パラメータis_dc_the_winneriを計算することができ、たとえば、is_dc_the_winneri = is_dc_a_candidatei AND maybe_first_sviである。 For each digital component, computing systems MPC1 and MPC2 compute (608) the best other selection value. Calculation systems MPC1 and MPC2 can use a two-step process in secret shares to calculate the best alternative value of the digital component. Computing systems MPC1 and MPC2 can compute the winner parameter is_dc_the_winner i for digital component i. Computing systems MPC1 and MPC2 may compute the winner parameter is_dc_the_winner i using the secret share of the candidate parameter is_dc_a_candidate i and the secret share of the first selection value parameter maybe_first_sv i , for example is_dc_the_winner i = is_dc_a_candidate i AND maybe_first_sv i .

計算システムMPC1およびMPC2は、次いで、関係12を使用してデジタルコンポーネントiの最高の他の選択値(HOSVi)を計算することができる。
HOSVi=(is_dc_the_winneri×second selection value)+((1-is_dc_the_winneri)×first selection value)
Calculation systems MPC1 and MPC2 can then use relationship 12 to calculate the best other selected value (HOSV i ) of digital component i.
HOSV i =(is_dc_the_winner i ×second selection value)+((1-is_dc_the_winner i )×first selection value)

勝者パラメータ、第1の選択値、および第2の選択値は、計算システムMPC1およびMPC2によって秘密シェア内に保持されるため、計算システムMPC1およびMPC2は、協働して、2つの計算システムMPC1とMPC2との間のRPCを使用して最高の他の選択値を決定する。 Since the winning parameter, the first selection value, and the second selection value are held in a secret share by computing systems MPC1 and MPC2, computing systems MPC1 and MPC2 cooperate to cooperate with the two computing systems MPC1. RPCs to and from MPC2 are used to determine the best other selection value.

このプロセスの終了において、計算システムMPC1は、デジタルコンポーネントiの最高の他の選択値の第1のシェア[HOSVi,1]を記憶し、計算システムMPC2は、デジタルコンポーネントiの最高の他の選択値の第2のシェア[HOSVi,2]を記憶する。 At the end of this process, computing system MPC1 stores the first share [HOSV i,1 ] of the best other selection value of digital component i, and computing system MPC2 stores the best other selection value of digital component i. Store the second share of values [HOSV i,2 ].

計算システムMPC1は、各デジタルコンポーネントの最高の他の選択値の第1のシェアを、たとえば、デジタルコンポーネントに対応するDSP150またはデジタルコンポーネント160に送信する(610)。同様に、計算システムMPC2は、各デジタルコンポーネントの最高の他の選択値の第2のシェアを、たとえば、デジタルコンポーネントに対応するDSP150またはデジタルコンポーネント160に送信する(612)。いくつかの実施態様において、計算システムMPC1およびMPC2は、各DSP150および/または各デジタルコンポーネントプロバイダ160の情報を集約する集約サービスに、シェアを提供する。 Computing system MPC1 sends (610) a first share of the best other selected value for each digital component, eg, to DSP 150 or digital component 160 corresponding to the digital component. Similarly, computing system MPC2 sends a second share of the highest other selected value for each digital component (612), eg, to DSP 150 or digital component 160 corresponding to the digital component. In some embodiments, computing systems MPC1 and MPC2 provide shares to an aggregation service that aggregates each DSP's 150 and/or each digital component provider's 160 information.

2つの秘密シェアの受け手は、シェアを組み合わせて、デジタルコンポーネント選択プロセスにおけるデジタルコンポーネントの最高の他の選択値を導出することができる。たとえば、加法的秘密共有アルゴリズムが使用される場合、受け手は、2つのシェアを加算することによって、最高の他の選択値を導出することができる。 The two secret share recipients can combine the shares to derive the best alternative selection value for the digital component in the digital component selection process. For example, if an additive secret sharing algorithm is used, the recipient can derive the best other choice value by adding the two shares.

計算システムMPC1およびMPC2は、追加のデータを、最高の他の選択値とともに送信することができる。たとえば、計算システムMPC1およびMPC2は、たとえば検索鍵などの、デジタルコンポーネント選択プロセスのコンテキスト信号を、最高の他の選択値のそのシェアとともに送信することができる。このように、同じまたは類似のコンテキストを有するデジタルコンポーネント選択プロセスの選択値のランドスケープを、同じまたは類似のコンテキストを有するデジタルコンポーネント選択プロセスの最高の他の選択値を使用して計算することができる。 Computing systems MPC1 and MPC2 can send additional data along with the best other selection values. For example, computing systems MPC1 and MPC2 may transmit contextual signals of the digital component selection process, eg search keys, along with their share of the highest other selection values. In this way, a landscape of selection values for digital component selection processes with the same or similar contexts can be computed using the best other selection values for digital component selection processes with the same or similar contexts.

いくつかの実施態様において、性能を増大させるために、計算システムMPC1およびMPC2は、最高の他の選択値を非同期的に、デジタルコンポーネント選択プロセスの選択結果がクライアントデバイス110に提供された後に計算することができる。これによって、デジタルコンポーネントの送信および表示におけるレイテンシが低減する。いくつかの実施態様において、計算システムMPC1およびMPC2は、計算システムMPC1およびMPC2に対する負荷がベースライン負荷よりも低い場合に、最高の他の選択値を計算することができる。 In some embodiments, to increase performance, computing systems MPC1 and MPC2 compute the best other selection value asynchronously after the selection results of the digital component selection process are provided to client device 110. be able to. This reduces latency in the transmission and display of digital components. In some embodiments, computing systems MPC1 and MPC2 may calculate the best other selection value when the load on computing systems MPC1 and MPC2 is lower than the baseline load.

選択値のフロアを含む選択プロセスについて、最高の他の選択値を正確に計算するために、追加のステップを採用することができる。計算システムMPC1およびMPC2は、図6を参照しながら説明されているように、最高の他の選択値を計算することができる。計算システムMPC1およびMPC2は、このとき、たとえば、いずれの選択値も適用可能なフロアより小さくならないように、フロアを考慮に入れるように最高の他の選択値を調整することができる。 For the selection process involving the floor of selection values, additional steps can be taken to accurately calculate the best other selection value. Calculation systems MPC1 and MPC2 can calculate the best other selection value as described with reference to FIG. Computing systems MPC1 and MPC2 may then adjust the highest other selected value to take account of the floor, for example so that no selected value is less than the applicable floor.

Hが計算されている最高の他の選択値を示すものとし、Fが適用可能なフロアを示すものとする。最終的な最高の他の選択値は(H>F)×H+(1-H>Fとなり、これはF+(H>F)×(H-F)と等価である。 Let H denote the highest alternative value being calculated and F denote the applicable floor. The final best alternative value will be (H>F)*H+(1-H>F, which is equivalent to F+(H>F)*(H-F).

ユーザプライバシーを保護するために、Hは秘密シェアの形態である。各計算システムMPC1およびMPC2は、それぞれ秘密シェア[H1]および[H2]のうちの一方を保持する。計算システムMPC1は、関係13を使用して、秘密シェア内の最終的な最高の他の選択値の第1のシェアを計算することができる。
[HOSV1 ]=F+([H1 ]>F)×([H1]-F)
To protect user privacy, H is a form of secret share. Each computing system MPC1 and MPC2 holds one of the secret shares [H 1 ] and [H 2 ] respectively. Computing system MPC1 can use relationship 13 to compute the first share of the final highest other selected value in the secret share.
[ HOSV1 ]=F+([ H1 ]>F)×([ H1 ]-F)

同様に、計算システムMPC2は、関係14を使用して、秘密シェア内の最終的な最高の他の選択値の第2のシェアを計算することができる。
[HOSV2 ]=F+([H2 ]>F)×([H2]-F)
Similarly, computing system MPC2 can use relationship 14 to compute the second share of the final highest other selected value in the secret share.
[ HOSV2 ]=F+([ H2 ]>F)×([ H2 ]-F)

フロアを含むデジタルコンポーネントプロセスの最高の他の選択値を計算するこのプロセスは、比較テストのための3ラウンド以上のRPCおよび乗算のための1ラウンドのRPCを利用することができる。 This process of calculating the best alternative value of the digital component process, including the floor, can utilize 3 or more rounds of RPCs for comparison testing and 1 round of RPCs for multiplication.

階層および/またはブーストがデジタルコンポーネント選択プロセスにおいて使用される場合、たとえば、選択されるデジタルコンポーネントの選択値などの第1の選択値は、候補デジタルコンポーネントの間で最高の選択値よりも低くなり得る。たとえば、最高優先度階層内の候補デジタルコンポーネントが、より低い優先度の階層内の候補デジタルコンポーネントよりも低い選択値を有する場合、より高い優先度の階層内の候補デジタルコンポーネントが、より低い選択値を有するにもかかわらず、選択され得る。同様に、デジタルコンポーネントは、パブリッシャが受け取るものが、非ブーストデジタルコンポーネントが選択された場合よりも低くなるように、デジタルコンポーネント選択値において使用される選択値を、非ブースト(またはブーストがより低い)デジタルコンポーネントよりも高くするブーストを受け取ることができる。MPCクラスタ130は、パブリッシャが階層および/またはブーストと関連付けられる機会コストを分析することができるように、2つの値の間の差を決定することができる。 When hierarchy and/or boosting are used in the digital component selection process, the first selection value, e.g., the selection value of the digital component to be selected, may be lower than the highest selection value among the candidate digital components. . For example, if a candidate digital component in the highest priority tier has a lower selection value than a candidate digital component in a lower priority tier, then the candidate digital component in the higher priority tier has a lower selection value can be selected despite having Similarly, the digital component may select the non-boosted (or lower boosted) selection value used in the digital component selection value such that what the publisher receives is lower than if the non-boosted digital component had been selected. It can receive a boost that makes it higher than the digital component. The MPC cluster 130 can determine the difference between the two values so that the publisher can analyze the opportunity costs associated with tiers and/or boosts.

図7は、実際のデジタルコンポーネント選択プロセスおよび反事実的デジタルコンポーネント選択プロセスの第1の選択値の間の差を決定するための例示的なプロセス700の流れ図である。プロセス700の動作は、たとえば、MPCクラスタ130の計算システムMPC1または計算システムMPC2によって実施され得る。プロセス700の動作は、非一時的であり得る、1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス700の動作を実行させ得る。 FIG. 7 is a flow diagram of an exemplary process 700 for determining the difference between first selection values of an actual digital component selection process and a counterfactual digital component selection process. The operations of process 700 may be performed by computing system MPC1 or computing system MPC2 of MPC cluster 130, for example. The operations of process 700 may be implemented as instructions stored on one or more computer-readable media, which may be non-transitory, and execution of the instructions by one or more data processing devices may occur in one Or, multiple data processing devices may perform the operations of process 700 .

計算システムMPC1およびMPC2は、実際のデジタルコンポーネント選択プロセスを実施する(702)。計算システムMPC1およびMPC2は、実際のデジタルコンポーネント選択プロセスを実施して、デジタルコンポーネント要求に応答してクライアントデバイス110に提供するためのデジタルコンポーネントを選択することができる。実際のデジタルコンポーネント選択プロセスは、デジタルコンポーネントの階層、および/または、デジタルコンポーネント選択プロセスに含まれる1つまたは複数のデジタルコンポーネントに対するブーストを含むことができる。たとえば、実際のデジタルコンポーネントプロセスは、図3~図5のプロセスと同じまたは同様であるべきである。 Computing systems MPC1 and MPC2 perform the actual digital component selection process (702). Computing systems MPC1 and MPC2 may perform the actual digital component selection process to select digital components to provide to client device 110 in response to digital component requests. The actual digital component selection process may include a hierarchy of digital components and/or boosts to one or more digital components included in the digital component selection process. For example, the actual digital component process should be the same or similar to the process of Figures 3-5.

計算システムMPC1およびMPC2は、反事実的デジタルコンポーネント選択プロセスを実施する(704)。反事実的デジタルコンポーネントプロセスのステップは、実際のデジタルコンポーネント選択プロセスのステップと同様であり得る。しかしながら、反事実的デジタルコンポーネント選択プロセスにおいては、実際のデジタルコンポーネント選択プロセスの階層および/またはブーストは除去される。実際のデジタルコンポーネント選択プロセスが階層を含む場合(たとえば、図4のプロセス400にあるように)、反事実的デジタルコンポーネント選択プロセスは、1つのグループ内にすべてのデジタルコンポーネントを有する(たとえば、図5のプロセス500にあるように)。実際のデジタルコンポーネント選択プロセスが1つまたは複数のデジタルコンポーネントの選択値のブーストを含んでいた場合、それらのブーストは、反事実的デジタルコンポーネント選択プロセスにおいては除去される。すなわち、反事実的デジタルコンポーネント選択プロセスにおける選択値は、ブースト選択値ではなく、受信選択値であり得る。 Computing systems MPC1 and MPC2 perform a counterfactual digital component selection process (704). The steps of the counterfactual digital component process can be similar to the steps of the actual digital component selection process. However, in the counterfactual digital component selection process, the layers and/or boosts of the actual digital component selection process are removed. If the actual digital component selection process involves hierarchy (eg, as in process 400 of FIG. 4), the counterfactual digital component selection process has all digital components in one group (eg, the , as in process 500). If the actual digital component selection process involved boosting the selected value of one or more digital components, those boosts are removed in the counterfactual digital component selection process. That is, the selection value in the counterfactual digital component selection process may be the received selection value rather than the boost selection value.

計算システムMPC1およびMPC2は、実際のデジタルコンポーネント選択プロセスのクリア値を決定する(706)。このクリア値は、選択されるデジタルコンポーネントの選択値に基づくことができる。たとえば、クリア値は、選択されるデジタルコンポーネントを表示するためにパブリッシャに実際に提供される選択値の量であり得る。デジタルコンポーネントの選択値がブーストされた場合、ブースト量は、動作414において各候補デジタルコンポーネントの累積値が決定される場合にのみ、選択値の順序に影響を与える。 Computing systems MPC1 and MPC2 determine clear values for the actual digital component selection process (706). This clear value can be based on the selected value of the selected digital component. For example, the clear value may be the amount of selection value actually provided to the publisher to display the selected digital component. If the selected values of the digital components are boosted, the amount of boost affects the order of the selected values only when the cumulative value of each candidate digital component is determined in operation 414 .

第2の値の選択プロセスにおいて、クリア値は、選択されるデジタルコンポーネントの選択値の後の次に高い選択値に基づく。第2の選択値のプロセスとともに階層が使用される場合、2番目に高い値は、選択されるデジタルコンポーネントと同じ階層内の2番目に高い値になる。同じ階層内にそのような候補デジタルコンポーネントがない場合、2番目に高い値は、デジタルコンポーネント選択プロセスの最小値であり得る。 In the second value selection process, the clear value is based on the next higher selected value after the selected digital component's selected value. If a hierarchy is used with the second selection value process, the second highest value will be the second highest value within the same hierarchy as the selected digital component. If there are no such candidate digital components in the same hierarchy, the second highest value may be the minimum value of the digital component selection process.

計算システムMPC1およびMPC2は、反事実的デジタルコンポーネント選択プロセスのクリア値を決定する(708)。このクリア値は、反事実的デジタルコンポーネント選択プロセスにおいて選択されているデジタルコンポーネントに基づくことができる。第2の値の選択プロセスにおいて、クリア値は、実際のデジタルコンポーネント選択プロセスのクリア値と同様に、選択されるデジタルコンポーネントの選択値の後の次に高い選択値に基づく。 Computing systems MPC1 and MPC2 determine clear values for the counterfactual digital component selection process (708). This clear value can be based on the digital component being selected in the counterfactual digital component selection process. In the second value selection process, the clear value is based on the next higher selection value after the selection value of the selected digital component, similar to the clear value in the actual digital component selection process.

計算システムMPC1およびMPC2は、2つのクリア値の間の差を決定する(710)。計算システムMPC1およびMPCは、実際のデジタルコンポーネント選択値のクリア値から反事実的デジタルコンポーネント選択プロセスのクリア値を減算することによって、差を決定することができる。 Calculation systems MPC1 and MPC2 determine the difference between the two clear values (710). Computing systems MPC1 and MPC can determine the difference by subtracting the clear value of the counterfactual digital component selection process from the clear value of the actual digital component selection value.

計算システムMPC1およびMPC2は、受け手に差を提供する(712)。たとえば、計算システムの1つは、選択後にデジタルコンポーネントがそれとともに表示されたリソースまたはアプリケーションコンテンツのパブリッシャに差を提供することができる。別の例において、計算システムの1つは、パブリッシャの差を集約する集約サーバに差を提供することができる。いずれの例においても、計算システムは、差を示すデータとともに、たとえば検索鍵などの、実際のデジタルコンポーネント選択プロセスのコンテキスト信号、および、パブリッシャを識別するデータ(集約サーバに送信される場合)を提供することができる。 Computing systems MPC1 and MPC2 provide the difference to the recipient (712). For example, one of the computing systems can provide a difference to the publisher of the resource or application content with which the digital component was displayed after selection. In another example, one of the computing systems can provide differences to an aggregation server that aggregates publisher differences. In both examples, the computing system provides the difference data as well as the contextual signals of the actual digital component selection process, e.g. search keys, and the data identifying the publisher (if sent to the aggregation server). can do.

集約サーバは、各パブリッシャについて報告されている差を集約し、階層および/またはブーストの使用の機会コストを示す、たとえば対話型ユーザインターフェースの形態のデータを提供することができる。いくつかの実施態様において、計算システムMPC1およびMPC2はまた、各実際のデジタルコンポーネント選択プロセスについて、選択結果を集約サーバに提供することもできる。このように、集約サーバは、各DSP150および/またはデジタルコンポーネントプロバイダ160の機会コストを集約することができる。 An aggregation server can aggregate the differences reported for each publisher and provide data, eg, in the form of an interactive user interface, that indicates the opportunity cost of using tiers and/or boosts. In some embodiments, computing systems MPC1 and MPC2 may also provide selection results to an aggregation server for each actual digital component selection process. In this way, the aggregation server can aggregate the opportunity cost of each DSP 150 and/or digital component provider 160 .

実際のデジタルコンポーネント選択プロセスの選択されるデジタルコンポーネントのクライアントデバイス110への提供におけるレイテンシを低減するために、プロセス700のステップ704~712のうちの一部またはすべては非同期的に、たとえば、選択結果がクライアントデバイス110に提供された後に実施することができる。 To reduce the latency in providing the selected digital component to the client device 110 of the actual digital component selection process, some or all of steps 704-712 of process 700 may be performed asynchronously, e.g. is provided to the client device 110.

図8は、秘密シェアを使用して送信されるブルームフィルタを使用して、ユーザがユーザグループのメンバーであるか否かを判定するための例示的なプロセス800の流れ図である。プロセス800の動作は、たとえば、クライアントデバイス110上で実行されるアプリケーション112、ならびに、図1のMPCクラスタ130の計算システムMPC1およびMPC2によって実施され得る。プロセス800の動作は、非一時的であり得る、1つまたは複数のコンピュータ可読媒体上に記憶された命令として実装されてもよく、1つまたは複数のデータ処理装置による命令の実行は、1つまたは複数のデータ処理装置にプロセス800の動作を実行させ得る。 FIG. 8 is a flow diagram of an exemplary process 800 for determining whether a user is a member of a user group using bloom filters transmitted using secret shares. The operations of process 800 may be performed, for example, by application 112 executing on client device 110 and computing systems MPC1 and MPC2 of MPC cluster 130 of FIG. The operations of process 800 may be implemented as instructions stored on one or more computer-readable media, which may be non-transitory, and execution of the instructions by one or more data processing devices may occur in one Or, multiple data processing devices may perform the operations of process 800 .

ブルームフィルタを使用してユーザのグループメンバーシップを表すデータを送信することによって、ユーザのユーザグループを識別するデータが平文で送信されていないため、送信されるデータの量を低減し、ユーザプライバシーを保持することができる。計算システムMPC1およびMPC2が、ユーザのグループメンバーシップに平文でアクセスすることが可能になることを阻止するために、アプリケーション112は、ブルームフィルタ全体を各計算システムMPC1およびMPC2に送信するのではなく、たとえばブルームフィルタの秘密シェアなどのそれぞれのシェアを各計算システム112に送信することができる。しかしながら、これは、各計算システムMPC1およびMPC2に1つずつ、2つのブルームフィルタを送信するのと同等のデータを送信することを必要とし得る。これを阻止し、クライアントデバイス110からネットワーク105にわたって計算システムMPC1およびMPC2へと送信されるデータの量をさらに低減するために、アプリケーション112は、ノンスを使用して生成される第1の配列およびアプリケーション112によって作成されている元のブルームフィルタを、たとえば計算システムMPC1などの計算システムの1つに送信することができ、ノンスのみを他の計算システムMPC2に送信することができる。このように、1つの配列のみがクライアントデバイス110から送信される。ノンスは、たとえば16バイトと小さくすることができるため、これによって、クライアントデバイス110から送信されるデータの量が大幅に低減し、それによって、クライアントデバイス110の帯域幅消費、レイテンシ、およびバッテリ消費が低減する。 By using bloom filters to transmit data representing a user's group membership, the data identifying the user's user groups is not being transmitted in plaintext, thus reducing the amount of data transmitted and improving user privacy. can hold. To prevent computing systems MPC1 and MPC2 from being able to access a user's group membership in plaintext, application 112 does not send the entire Bloom filter to each computing system MPC1 and MPC2. A respective share, eg, a bloom filter secret share, can be sent to each computing system 112 . However, this may require sending the equivalent of sending two Bloom filters, one to each computing system MPC1 and MPC2. To prevent this and further reduce the amount of data sent from client device 110 over network 105 to computing systems MPC1 and MPC2, application 112 uses a first array generated using a nonce and an application The original Bloom filter being created by 112 can be sent to one of the computing systems, eg, computing system MPC1, and only the nonce can be sent to the other computing system MPC2. Thus, only one array is sent from client device 110 . Since the nonce can be small, say 16 bytes, this greatly reduces the amount of data sent from the client device 110, thereby reducing the bandwidth consumption, latency, and battery consumption of the client device 110. Reduce.

プロセス800は、ユーザグループにおけるユーザのメンバーシップを表すブルームフィルタに関して説明されているが、同様のプロセスを使用して、ブロックデジタルコンポーネントを表すためのブルームフィルタを生成し、デジタルコンポーネントがブロックされているか否かを問い合わせることができる。その例において、ブルームフィルタは、ユーザグループの識別子ではなく、ブロックデジタルコンポーネントの識別子を表す。 Although the process 800 is described in terms of bloom filters representing user membership in user groups, a similar process can be used to generate bloom filters to represent blocked digital components and whether digital components are blocked or not. You can inquire whether or not In that example, the Bloom filters represent identifiers of block digital components rather than identifiers of user groups.

ブルームフィルタの構成は、計算システムMPC1およびMPC2による送信および/または処理に適合させることができる。ブルームフィルタのパラメータは、ブルームフィルタによって表すことができるユーザグループの数、ブルームフィルタの所望の偽陽性率、ブルームフィルタを生成するために使用されるハッシュ関数の数、および、要素がブルームフィルタに含まれるか否かのテスト、ならびに、ブルームフィルタのサイズを含む。 The configuration of Bloom filters can be adapted for transmission and/or processing by computing systems MPC1 and MPC2. Bloom filter parameters are the number of user groups that can be represented by the Bloom filter, the desired false positive rate of the Bloom filter, the number of hash functions used to generate the Bloom filter, and the number of elements included in the Bloom filter. It contains a test if it is possible, as well as the size of the bloom filter.

ハッシュ関数の数を低減することによって、ユーザがユーザグループのメンバーであるか否かを問い合わせるときの、計算システムMPC1およびMPC2に対する計算負担が低減される。しかしながら、これによって、ブルームフィルタのサイズが一定のままである場合、偽陽性率が増大し得る。目標偽陽性率が存在する場合、ハッシュ関数を低減する結果として、ブルームフィルタサイズが増大し得、これによって、消費される帯域幅の量が増大し得る。したがって、ブルームフィルタのパラメータは、計算システムMPC1およびMPC2に関する帯域幅/バッテリ消費と計算負担との間のトレードオフを使用して選択され得る。 Reducing the number of hash functions reduces the computational burden on the computing systems MPC1 and MPC2 when querying whether a user is a member of a user group. However, this can increase the false positive rate if the Bloom filter size remains constant. Given a target false positive rate, reducing the hash function may result in an increase in Bloom filter size, which may increase the amount of bandwidth consumed. Bloom filter parameters may thus be selected using a trade-off between bandwidth/battery consumption and computational burden for computing systems MPC1 and MPC2.

アプリケーション112は、ブルームフィルタを生成する(802)。アプリケーション112は、アプリケーション112のユーザをメンバーとして含むユーザグループのユーザグループ識別子を使用してブルームフィルタを生成することができる。そうするために、アプリケーション112は、ブルームフィルタの各ハッシュ関数を使用して、ユーザグループ識別子をブルームフィルタ内の位置のうちの1つにマッピングする。アプリケーション112は、ユーザの各ユーザグループ識別子についてこの動作を実施することができる。ブロックデジタルコンポーネントに対するブルームフィルタを構築するとき、アプリケーション112は、ブロックデジタルコンポーネントに対するブルームフィルタの各ハッシュ関数を、各ブロックデジタルコンポーネントの識別子に適用することができる。ブルームフィルタは、サイズNのビット配列Aである。ブルームフィルタの各ビットは、0または1のいずれかであり、すなわち、A[i]∈{0,1}である。 Application 112 generates (802) a bloom filter. Application 112 may generate Bloom filters using user group identifiers of user groups that include the user of application 112 as a member. To do so, the application 112 maps the user group identifier to one of its locations within the Bloom filter using each hash function of the Bloom filter. Application 112 can perform this operation for each user group identifier of the user. When constructing the Bloom filter for the block digital component, the application 112 may apply each hash function of the Bloom filter for the block digital component to each block digital component's identifier. A Bloom filter is a bit array A of size N. Each bit of the Bloom filter is either 0 or 1, ie A[i]ε{0,1}.

アプリケーション112ならびに計算システムMPC1およびMPC2は、擬似ランダム関数(PRF)について事前に合意することができる。PRFは、2つのパラメータをとり、包含的に{0, 1}内のPRFメンバーを生成することができる。 Application 112 and computing systems MPC1 and MPC2 may pre-agree on a pseudo-random function (PRF). PRF takes two parameters and can be inclusive to generate PRF members in {0, 1}.

アプリケーション112は、ノンスを選択する(804)。各デジタルコンポーネント要求について、アプリケーション112は、計算システムMPC1またはMPC2のうちの一方のみと共有されることになるノンスを、たとえばランダムにまたは擬似ランダムに選択することができる。この例において、ノンスは計算システムMPC2と共有される。 Application 112 selects a nonce (804). For each digital component request, application 112 may, for example, randomly or pseudo-randomly select a nonce to be shared with only one of computing systems MPC1 or MPC2. In this example, the nonce is shared with computing system MPC2.

アプリケーション112は、ブルームフィルタおよびノンスを使用して第1の配列A1を計算する(806)。アプリケーション112は、合意されたPRFを使用して第1の配列A1を計算することができる。たとえば、アプリケーション112は、関係15を使用して第1の配列A1を計算することができる。
A1 [i]=A[i] XOR PRF(nonce,i)
Application 112 computes a first array A1 using the Bloom filter and the nonce (806). Application 112 may compute the first array A1 using the agreed PRF. For example, application 112 can use relationship 15 to compute first array A1.
A1 [i]=A[i] XOR PRF(nonce,i)

関係15において、XOR演算はビット単位XOR演算である。 In relation 15, the XOR operation is a bitwise XOR operation.

アプリケーション112は、第1の配列を計算システムMPC1に送信する(808)。アプリケーション112はまた、ノンスを計算システムMPC2に送信する(810)。 Application 112 sends (808) the first array to computing system MPC1. Application 112 also sends a nonce to computing system MPC2 (810).

計算システムMPC2は、ノンスを使用して第2の配列A2を計算する(812)。計算システムMPC2は、ノンスおよびPRFを使用して第2の配列A2を計算することができる。たとえば、計算システムMPC2は、関係16を使用して第2の配列A2を計算することができる。
A2 [i]=PRF(nonce,i)
Computing system MPC2 computes a second array A2 using the nonce (812). The computing system MPC2 can compute the second array A2 using the nonce and the PRF. For example, computing system MPC2 can use relation 16 to compute the second array A2.
A2 [i]=PRF(nonce,i)

計算システムMPC1およびMPC2は、第1の配列A1および第2の配列A2を使用して、ユーザが1つまたは複数のユーザグループのメンバーであるか否かを判定する(814)。概して、ブルームフィルタの各ハッシュ関数をユーザグループ識別子に適用して、ハッシュ関数およびユーザグループ識別子に対応するブルームフィルタの要素を決定することによって、ブルームフィルタに問い合わせることができる。ユーザ識別子について、各ハッシュ関数の要素が1の値を有する場合、これは、ユーザがグループのメンバーであることを表す。無論、ブルームフィルタの性質に起因して、何らかの偽陽性があり得る。 Computing systems MPC1 and MPC2 use the first array A1 and the second array A2 to determine whether the user is a member of one or more user groups (814). In general, a Bloom filter can be queried by applying each hash function of the Bloom filter to a user group identifier to determine the element of the Bloom filter that corresponds to the hash function and the user group identifier. For a user identifier, if each hash function element has a value of 1, this indicates that the user is a member of the group. Of course, due to the nature of Bloom filters, there may be some false positives.

計算システムMPC1もMPC2もブルームフィルタ全体にアクセスすることができないため(代わりに、各々ブルームフィルタの秘密シェアのみを有する)、計算システムMPC1およびMPC2は、暗号プロトコルを使用して、ユーザグループ識別子によって、ユーザがユーザグループ識別子のメンバーであるか否かを判定することができる。使用することができる一部の例示的な暗号プロトコルは、文字化け回路およびGoldreich-Micali-Wigderson (GMW)プロトコルを含む。 Since neither computing system MPC1 nor MPC2 has access to the entire Bloom filter (instead, each has only the Bloom filter's secret share), computing systems MPC1 and MPC2 can use a cryptographic protocol to identify, by user group identifier, It can be determined whether the user is a member of the user group identifier. Some exemplary cryptographic protocols that may be used include Garbage Circuit and the Goldreich-Micali-Wigderson (GMW) protocol.

いずれのアルゴリズムにおいても、アルゴリズムへの入力は(概念的に)ブルームフィルタの秘密シェア、すなわち、第1の配列A1および第2の配列A2である。出力は、デジタルコンポーネントごとに1つの、ブールメッセージ、すなわち、ユーザが対応するデジタルコンポーネントと関連付けられるユーザグループのメンバーであるか否か、のブールメッセージのセットの秘密シェアである。 In any algorithm, the inputs to the algorithm are (conceptually) the secret shares of the Bloom filter, ie the first array A1 and the second array A2 . The output is a secret share of a set of Boolean messages, one for each digital component, ie whether or not the user is a member of the user group associated with the corresponding digital component.

GMWプロトコルにおいて、たとえば、計算システムMPC1などの、MPC計算システムの1つは、秘密シェアの可能なビットパターンあたり1つの行が計算システムMPC2によって占められる、真理値表を作成する。計算システムMPC1は、結果のそれ自体の秘密シェアを、たとえばランダムに選択し、結果のそれ自体の秘密シェア、および、場合によってはその行に対応する計算システムMPC2の秘密シェアに基づいて、各行の計算システムMPC2の秘密シェアを計算する。真理値表が構築された後、計算システムMPC2は、紛失通信プロトコルを使用して、それ自体の秘密シェアに基づいて、表からただ1つの行をフェッチする。このプロトコルにおいて、1つの計算システムが、複数の情報片のうちの1つを他の計算システムに転送するが、いずれの情報片(存在する場合)が転送されたかはわからない。この紛失通信プロトコルは、プロセスがいかなるパーティにもいかなる情報も漏洩しないことを保証する。 In the GMW protocol, one of the MPC computing systems, eg, computing system MPC1, creates a truth table in which one row per possible bit pattern of secret sharing is occupied by computing system MPC2. Computing system MPC1 selects its own secret share of the result, e.g. Calculate the secret share of the computing system MPC2. After the truth table is constructed, the computing system MPC2 uses the oblivious transfer protocol to fetch just one row from the table based on its own secret share. In this protocol, one computing system transfers one of multiple pieces of information to another computing system, but does not know which piece of information (if any) has been transferred. This oblivious transfer protocol ensures that processes do not leak any information to any party.

所与のユーザグループ識別子に対するブルームフィルタへの問い合わせの結果は、各ハッシュ関数のユーザグループメンバーシップ条件パラメータの秘密シェアである。ユーザグループメンバーシップ条件パラメータの秘密シェアは、デジタルコンポーネント選択プロセスにおいて、ユーザグループに対応するデジタルコンポーネントがデジタルコンポーネント選択プロセスの候補であるか否かを判定するために使用することができる。たとえば、10個のハッシュ関数が使用される場合、計算システムMPC1は、各ユーザグループ識別子のユーザグループメンバーシップ条件パラメータの10個の第1の秘密シェアを有することになる。同様に、計算システムMPC2は、各ユーザグループ識別子のユーザグループメンバーシップ条件パラメータの10個の第2の秘密シェアを有することになる。 The result of querying the Bloom filter for a given user group identifier is the secret share of the user group membership condition parameters for each hash function. The secret share of user group membership condition parameter can be used in the digital component selection process to determine whether the digital component corresponding to the user group is a candidate for the digital component selection process. For example, if 10 hash functions are used, computing system MPC1 will have 10 first secret shares of user group membership condition parameters for each user group identifier. Similarly, computing system MPC2 will have ten second secret shares of user group membership condition parameters for each user group identifier.

ブルームフィルタがブロックデジタルコンポーネントの識別子を表す場合、計算システムMPC1およびMPC2は、同様にして、第2の配列を再構築し、ブルームフィルタに問い合わせることができる。所与のデジタルコンポーネントに対するこのブルームフィルタへの問い合わせの結果は、各ハッシュ関数のブロック条件パラメータである。ブロック条件パラメータの秘密シェアは、デジタルコンポーネント選択プロセスにおいて、デジタルコンポーネントがデジタルコンポーネント選択プロセスの候補であるか否かを判定するために使用することができる。 Computing systems MPC1 and MPC2 can similarly reconstruct the second array and query the Bloom filters if the Bloom filters represent identifiers of block digital components. The result of querying this bloom filter for a given digital component is the block condition parameter of each hash function. The secret share of block condition parameters can be used in the digital component selection process to determine whether a digital component is a candidate for the digital component selection process.

図9は、例示的なMPC計算システム900のブロック図である。本明細書に記載のMPC計算システムのいずれかは、MPC計算システム900を使用して実装することができる。代替的に、MPC計算システムは、1つまたは複数のサーバとして実装されてもよい。しかしながら、MPC計算システム900のアーキテクチャおよび構成は、汎用サーバ構成の使用と比較して多くの性能改善を提供する。 FIG. 9 is a block diagram of an exemplary MPC computing system 900. As shown in FIG. Any of the MPC computing systems described herein can be implemented using MPC computing system 900 . Alternatively, the MPC computing system may be implemented as one or more servers. However, the architecture and configuration of MPC computing system 900 provides many performance improvements compared to using general-purpose server configurations.

MPC計算システム900は、ロードバランサ910と、サービングプール920と、ログプロセッサプール940とを含む。計算システム900はまた、ログ930およびスナップショット950を生成、更新、および他の様態で維持する。 MPC computing system 900 includes load balancer 910 , serving pool 920 and log processor pool 940 . Computing system 900 also generates, updates, and otherwise maintains logs 930 and snapshots 950 .

いくつかの実施態様において、MPC計算システム900は、デジタルコンポーネントの選択およびデジタルコンポーネントのクライアントデバイス110への提供におけるレイテンシを低減するために、様々な地理的領域において展開される。たとえば、2つ以上のMPC計算システム900を有するMPCクラスタは、領域のセットの各領域内に展開することができる。各MPCクラスタが、たとえばMPC1およびMPC2などの2つのMPC計算システムを含む場合、各領域は、異なるパーティによって運用される一対のMPC計算システム900を含むことができる。すべての領域にわたるMPC1の各インスタンスは、第1のパーティによって運用することができ、すべての領域にわたるMPC2の各インスタンスは、第1のパーティとは異なる第2のパーティによって運用することができる。 In some implementations, the MPC computing system 900 is deployed in various geographic regions to reduce latency in selecting digital components and providing digital components to client devices 110 . For example, an MPC cluster having two or more MPC computing systems 900 can be deployed within each region of the set of regions. If each MPC cluster contains two MPC computing systems, eg, MPC1 and MPC2, each domain may contain a pair of MPC computing systems 900 operated by different parties. Each instance of MPC1 across all domains may be operated by a first party and each instance of MPC2 across all domains may be operated by a second party that is different from the first party.

ある領域内のMPCクラスタは、その領域内のクライアントデバイス110によって生成されるデジタルコンポーネント要求に対するデジタルコンポーネント選択プロセスを実施することができる。たとえば、特定の領域においてクライアントデバイス110へと送信される、たとえばタグなどのデジタルコンポーネントスロットに関する命令は、その特定の領域内のMPC計算システム900のネットワークロケーションへの参照を含むことができる。このようにして、アプリケーション112は、デジタルコンポーネント要求および通知を、適切な領域内のMPC計算システム900に送信する。別の例において、ドメイン名サービス(DNS)またはロードバランサ910が、物理的距離においてクライアントデバイス110に最も近いMPC計算システム900を選択する。 An MPC cluster within a region may perform a digital component selection process for digital component requests generated by client devices 110 within that region. For example, instructions regarding digital component slots, eg, tags, sent to client device 110 in a particular region may include references to the network location of MPC computing system 900 within that particular region. In this manner, application 112 sends digital component requests and notifications to MPC computing system 900 within the appropriate region. In another example, a domain name service (DNS) or load balancer 910 selects the MPC computing system 900 closest to the client device 110 in physical distance.

ある領域内のMPC1は、同じ領域内のMPC2と協働して、受信される要求に基づいてデジタルコンポーネントを選択し、ログを更新することができる。これによって、MPC計算システム900間の距離が低減されるため、MPC計算システム900間のラウンドトリップを必要とする協働計算の実施におけるレイテンシおよび消費帯域幅が低減する。これによってまた、クライアントデバイス110とMPC計算システム900との間の、たとえばデジタルコンポーネント要求、デジタルコンポーネント応答、およびインプレッション通知などの、データ送信におけるレイテンシおよび消費帯域幅も低減する。 MPC1 in a domain can cooperate with MPC2 in the same domain to select digital components and update logs based on requests received. This reduces the distance between MPC computing systems 900, thereby reducing latency and bandwidth consumption in performing collaborative computing that requires round trips between MPC computing systems 900. FIG. This also reduces latency and bandwidth consumption in data transmissions between client device 110 and MPC computing system 900, such as digital component requests, digital component responses, and impression notifications.

いくつかの実施態様において、ログプロセッサプール940は、スナップショットの作成および他の領域内のMPC計算システム900への発行のために、領域の適切なサブセット内でのみ有効化される。たとえば、第1のパーティによって運用される、各領域内の第1のMPC計算システムMPC1があり得る。これらの第1のMPC計算システムのサブセットは、すべての第1のMPC計算システムのスナップショットを作成し、このスナップショットを他の第1のMPC計算システムに発行することができる。同様に、第2のパーティによって運用される、各領域内の第2のMPC計算システムMPC2があり得る。これらの第2のMPC計算システムのサブセットは、すべての第2のMPC計算システムのスナップショットを作成し、このスナップショットを他の第2のMPC計算システムに発行することができる。重要なことに、第1のMPC計算システムは、ユーザプライバシーを保持するために、ログまたはスナップショットを第2のMPC計算システムと共有せず、逆も同様である。しかしながら、第1の計算システムおよび第2の計算システムは、データの少なくとも一部が機密および/または秘密であり、いずれかの計算システムによって平文でアクセス可能であるべきではないときに、セキュアMPCプロセスを実施して、ログ内のデータを処理する。効率的に、かつレイテンシまたは帯域幅消費を増大させることなくこれを行うために、第1のMPC計算システムのサブセットおよび第2のMPC計算システムのサブセットは同じ領域内にあり得る。 In some embodiments, the log processor pool 940 is enabled only within the appropriate subset of regions for creating and issuing snapshots to the MPC computing system 900 in other regions. For example, there may be a first MPC computing system MPC1 in each region operated by a first party. A subset of these first MPC computing systems can create a snapshot of all first MPC computing systems and publish this snapshot to other first MPC computing systems. Similarly, there may be a second MPC computing system MPC2 in each domain operated by a second party. A subset of these second MPC computing systems can create a snapshot of all second MPC computing systems and publish this snapshot to other second MPC computing systems. Importantly, the first MPC computing system does not share logs or snapshots with the second MPC computing system, and vice versa, to preserve user privacy. However, the first computing system and the second computing system can be used in a secure MPC process when at least a portion of the data is sensitive and/or secret and should not be accessible in plaintext by either computing system. to process the data in the log. To do this efficiently and without increasing latency or bandwidth consumption, the first subset of MPC computing systems and the second subset of MPC computing systems may be within the same region.

ロードバランサ910は、クライアントデバイス110上で実行しているアプリケーション112から要求を受信する。いくつかの例においてHTTP要求の形態であり得るこれらの要求は、デジタルコンポーネント要求および通知を含むことができる。通知は、デジタルコンポーネントがクライアントデバイス110において表示されたこと、および、任意選択的に、ユーザがデジタルコンポーネントとインタラクトしたか否かをMPC計算システム900に通知するインプレッション通知を含むことができる。インプレッション通知はまた、表示されるデジタルコンポーネントが表示されたデジタルコンポーネント選択プロセスを識別する選択プロセス識別子などの追加の情報も含むことができる。k-匿名性条件について、インプレッション通知はまた、実際のデジタルコンポーネント選択プロセスの勝者および反事実的選択プロセスの勝者を識別するデータも含むことができ、結果、MPC計算システム900は、各デジタルコンポーネントのインプレッション通知を更新することができる。 A load balancer 910 receives requests from applications 112 running on client devices 110 . These requests, which can be in the form of HTTP requests in some examples, can include digital component requests and notifications. Notifications can include impression notifications that notify MPC computing system 900 that a digital component has been displayed at client device 110 and, optionally, whether a user has interacted with the digital component. The impression notification may also include additional information, such as a selection process identifier that identifies the digital component selection process through which the displayed digital component was displayed. For the k-anonymity condition, the impression notification may also include data identifying the winners of the actual digital component selection process and the winners of the counterfactual selection process, so that the MPC computational system 900 Impression notifications can be updated.

ロードバランサ910は、サービングプール920内のプロセッサの間で負荷を平衡させるように、サービングプール920のプロセッサに要求を割り当てることができる。たとえば、ロードバランサ910は、プロセッサ間で順序を交互にするか、または、各プロセッサの負荷を監視し、現在の負荷に基づいて要求を割り当てることができる。 A load balancer 910 can assign requests to the processors of the serving pool 920 to balance the load among the processors in the serving pool 920 . For example, the load balancer 910 can alternate order among the processors or monitor the load of each processor and allocate requests based on the current load.

サービングプール920は、複数のプロセッサを含み、それらの各々を、たとえば、1つまたは複数のマイクロプロセッサ、1つまたは複数のサーバクラスコンピュータ、および/または1つまたは複数の特定用途向け集積回路(ASIC)として実装することができる。サービングプールのプロセッサは、典型的にはレイテンシに敏感である、入来する要求を処理する。たとえば、サービングプール920のプロセッサは、別のMPC計算システム900のプロセッサと協働してデジタルコンポーネント選択プロセスを実施することができる。サービングプール920のプロセッサはまた、完了したデジタルコンポーネント選択プロセスおよび/または受信した通知に基づいて、ログ930を更新することもできる。 Serving pool 920 includes multiple processors, each of which may be, for example, one or more microprocessors, one or more server class computers, and/or one or more application specific integrated circuits (ASICs). ) can be implemented as The serving pool processors handle incoming requests, which are typically latency sensitive. For example, a processor of serving pool 920 may cooperate with a processor of another MPC computing system 900 to implement a digital component selection process. Serving pool 920 processors may also update log 930 based on completed digital component selection processes and/or notifications received.

サービングプール920のプロセッサは、記憶されるデジタルコンポーネントについて現在のデータベースを維持することができる。このデータベースは、デジタルコンポーネントのパラメータおよび/または条件の現在の値を含むことができる。たとえば、データベースは、各記憶されるデジタルコンポーネントについて、選択値またはベクトル、たとえば、k-匿名性およびペーシングなどのオフラインで計算することができる条件などの、条件の少なくとも一部のパラメータの秘密シェア、残りバジェット、(たとえば、k-匿名性条件に関する)インプレッションの数、および/または、本明細書に記載のデジタルコンポーネント選択プロセスにおいて使用されるデジタルコンポーネントの他のデータを含むことができる。 Serving pool 920 processors can maintain a current database of stored digital components. This database may contain the current values of the parameters and/or conditions of the digital components. For example, the database stores, for each stored digital component, a selection value or vector, a secret share of at least some parameters of conditions, such as conditions that can be calculated offline, e.g., k-anonymity and pacing; Remaining budget, number of impressions (eg, for k-anonymity terms), and/or other data for digital components used in digital component selection processes described herein may be included.

いくつかの実施態様において、サービングプールのデータベースはスナップショットである。たとえば、各スナップショットは、スナップショットのバージョンを識別するバージョン識別子を有することができる。両方のMPCシステムが、同じバージョンのスナップショットを使用して動作しているべきである。 In some embodiments, the serving pool database is a snapshot. For example, each snapshot can have a version identifier that identifies the version of the snapshot. Both MPC systems should be running using the same snapshot version.

ログ930は、MPCクラスタによって記憶されるデジタルコンポーネントに関係する様々な情報を記憶する複数のタイプのログを含むことができる。たとえば、ログ930は、デジタルコンポーネント、ならびに、たとえば、選択値、選択値ベクトル、検索鍵、対応するユーザグループ識別子、条件、および/または他の適切な情報などの、デジタルコンポーネントの対応するデータを記憶するためのログを含むことができる。 Logs 930 can include multiple types of logs that store various information related to digital components stored by the MPC cluster. For example, log 930 stores digital components and corresponding data for the digital components, such as, for example, selection values, selection value vectors, search keys, corresponding user group identifiers, conditions, and/or other suitable information. can include logs for

ログ930は、完了したデジタルコンポーネント要求の情報のログを含むことができる。そのようなログは、各デジタルコンポーネント選択プロセスの選択プロセス識別子、デジタルコンポーネント選択プロセスのクリア値、および、デジタルコンポーネント選択プロセスに含まれていた各デジタルコンポーネントのパラメータを含むことができる。これらのパラメータは、たとえば、デジタルコンポーネントの候補パラメータ、勝者パラメータ、選択値、および/または累積値の秘密シェアを含むことができる。 Log 930 may include a log of information for completed digital component requests. Such a log may include a selection process identifier for each digital component selection process, a clear value for the digital component selection process, and parameters for each digital component that was included in the digital component selection process. These parameters may include, for example, a secret share of digital component candidate parameters, winning parameters, selected values, and/or accumulated values.

ログ930は、デジタルコンポーネントに対する条件が満たされているか否かを判定するために使用されるパラメータのログを含むことができる。たとえば、そのようなログは、各デジタルコンポーネントについて、インプレッションの数、選択の数、コンバージョンの数、総バジェット、残りバジェット、および/または、デジタルコンポーネントが提示され得た回数(たとえば、k-匿名性について反事実的選択プロセスにおいて選択された回数)を含むことができる。ユーザプライバシーおよび機密ユーザデータの秘密性を保護するために、いくつかの実施態様において、ログ930は、上記情報の秘密シェアを含む。 Logs 930 may include logs of parameters used to determine whether conditions for digital components are met. For example, such logs may include, for each digital component, the number of impressions, the number of selections, the number of conversions, the total budget, the remaining budget, and/or the number of times the digital component has been presented (e.g., k-anonymity selected in the counterfactual selection process). To protect user privacy and confidentiality of sensitive user data, in some implementations log 930 includes a secret share of the above information.

ログプロセッサプール940は、ログ930を処理し、ログに基づいてスナップショット950を生成するプロセッサ(たとえば、マイクロプロセッサ、サーバ、またはASIC)を含むことができる。各スナップショットは、サービングプール920のプロセッサによって維持されるデータベースの更新を含む。たとえば、デジタルコンポーネントが選択され、クライアントデバイス110において表示された場合、スナップショットは、デジタルコンポーネントの更新済み残りバジェット、および、デジタルコンポーネントの更新済みインプレッション数を含むことができる。ログプロセッサプール940は、ログ930内の更新済みデータに基づいてスナップショットを生成し、サービングプール920のプロセッサにスナップショットを発行することができる。ログプロセッサプール900のプロセッサはまた、たとえば、ログプロセッサプール940がいくつかのMPC計算システム900においてのみ有効化されている場合、同じパーティによって運用される他のMPC計算システムにスナップショットを発行することもできる。 Log processor pool 940 may include processors (eg, microprocessors, servers, or ASICs) that process logs 930 and generate snapshots 950 based on the logs. Each snapshot contains updates to the database maintained by the processors of serving pool 920 . For example, if a digital component is selected and displayed at the client device 110, the snapshot can include the updated remaining budget for the digital component and the updated number of impressions for the digital component. Log processor pool 940 can generate snapshots based on updated data in log 930 and issue snapshots to processors of serving pool 920 . Processors in log processor pool 900 may also issue snapshots to other MPC computing systems operated by the same party, for example, if log processor pool 940 is enabled only in some MPC computing systems 900. can also

要求への応答におけるレイテンシを低減するために、サービングプール920のプロセッサは、要求を受信した直後に、これらの要求を処理することができる。時間依存でないプロセスは、ログプロセッサプール940のプロセッサによって処理することができる。たとえば、サービングプール920は、デジタルコンポーネントの選択およびクライアントデバイス110への提供のクリティカルパス上の任意のプロセスを実施することができる。ログプロセッサプール940は、クリティカルパス上にない任意のプロセスを実施することができる。しかしながら、データベースへの更新は、デジタルコンポーネントが最新情報を使用して選択されていることを保証するために、迅速に行われるべきである。したがって、図9に示すアーキテクチャによって提供されるものとしてのプロセッサの異なるセットを使用することによって、デジタルコンポーネント選択プロセスとデータベースへの更新の両方が非常に迅速に実施されることを可能にする。 To reduce latency in responding to requests, the processors of serving pool 920 can process these requests immediately after receiving them. Processes that are not time sensitive can be processed by processors in log processor pool 940 . For example, serving pool 920 may implement any process on the critical path of digital component selection and provision to client device 110 . Log processor pool 940 can run any process that is not on the critical path. However, updates to the database should be made quickly to ensure that digital components are selected using up-to-date information. Thus, using a different set of processors as provided by the architecture shown in Figure 9 allows both the digital component selection process and updates to the database to be performed very quickly.

図10は、上で説明された動作を実行するために使用され得る例示的なコンピュータシステム1000のブロック図である。システム1000は、プロセッサ1010、メモリ1020、記憶デバイス1030、および入出力デバイス1040を含む。構成要素1010、1020、1030、および1040の各々は、たとえば、システムバス1050を使用して、相互接続され得る。プロセッサ1010は、システム1000内で実行するための命令を処理することが可能である。いくつかの実施態様では、プロセッサ1010は、シングルスレッドプロセッサである。別の実施態様では、プロセッサ1010は、マルチスレッドプロセッサである。プロセッサ1010は、メモリ1020の中または記憶デバイス1030上に記憶された命令を処理することが可能である。 FIG. 10 is a block diagram of an exemplary computer system 1000 that can be used to perform the operations described above. System 1000 includes processor 1010 , memory 1020 , storage devices 1030 and input/output devices 1040 . Each of components 1010, 1020, 1030, and 1040 may be interconnected using system bus 1050, for example. Processor 1010 is capable of processing instructions for execution within system 1000 . In some implementations, processor 1010 is a single-threaded processor. In another embodiment, processor 1010 is a multithreaded processor. Processor 1010 can process instructions stored in memory 1020 or on storage device 1030 .

メモリ1020は、システム1000内に情報を記憶する。一実施態様では、メモリ1020はコンピュータ可読媒体である。いくつかの実施態様では、メモリ1020は揮発性メモリユニットである。別の実施態様では、メモリ1020は不揮発性メモリユニットである。 Memory 1020 stores information within system 1000 . In one implementation, memory 1020 is a computer-readable medium. In some implementations, memory 1020 is a volatile memory unit. In another embodiment, memory 1020 is a non-volatile memory unit.

記憶デバイス1030は、システム1000に対する大容量記憶装置を提供することが可能である。いくつかの実施態様では、記憶デバイス1030は、コンピュータ可読媒体である。様々な異なる実施態様では、記憶デバイス1030は、たとえば、ハードディスクデバイス、光ディスクデバイス、複数のコンピューティングデバイス(たとえば、クラウド記憶デバイス)によってネットワーク上で共有される記憶デバイス、または何らかの他の大容量記憶デバイスを含み得る。 Storage device 1030 may provide mass storage for system 1000 . In some implementations, storage device 1030 is a computer-readable medium. In various different implementations, the storage device 1030 is, for example, a hard disk device, an optical disk device, a storage device shared over a network by multiple computing devices (eg, a cloud storage device), or some other mass storage device. can include

入力/出力デバイス1040は、システム1000のための入力/出力動作を行う。いくつかの実施態様では、入力/出力デバイス1040は、ネットワークインターフェースデバイス、たとえば、Ethernetカード、シリアル通信デバイス、たとえば、およびRS-232ポート、ならびに/またはワイヤレスインターフェースデバイス、たとえば、および802.11カードのうちの1つまたは複数を含み得る。別の実施態様では、入出力デバイスは、入力データを受信し、出力データを外部デバイス1060、たとえば、キーボード、プリンタ、およびディスプレイデバイスに送信するように構成された、ドライバデバイスを含み得る。しかしながら、モバイルコンピューティングデバイス、モバイル通信デバイス、セットトップボックステレビクライアントデバイスなど、他の実施態様が使われてもよい。 Input/output device 1040 performs input/output operations for system 1000 . In some implementations, the input/output device 1040 is a network interface device such as an Ethernet card, a serial communication device such as an RS-232 port, and/or a wireless interface device such as an 802.11 card. It may contain one or more. In another embodiment, input/output devices may include driver devices configured to receive input data and send output data to external devices 1060, such as keyboards, printers, and display devices. However, other implementations may be used, such as mobile computing devices, mobile communications devices, set-top box television client devices, and the like.

例示的な処理システムが図10で説明されているが、本明細書で説明した主題および機能的動作の実施態様は、他のタイプのデジタル電子回路において、もしくは本明細書で開示する構造およびそれらの構造等価物を含む、コンピュータソフトウェア、ファームウェア、または、ハードウェアにおいて、またはそれらのうちの1つまたは複数の組合せにおいて実装され得る。 Although an exemplary processing system is illustrated in FIG. 10, the subject matter and functional operational implementations described herein may be implemented in other types of digital electronic circuits or in the structures and structures disclosed herein. may be implemented in computer software, firmware, or hardware, including structural equivalents of, or in a combination of one or more thereof.

主題の実施形態および本明細書で説明する動作は、デジタル電子回路で、または本明細書で開示する構造およびその構造的均等物を含むコンピュータソフトウェア、ファームウェア、もしくはハードウェアで、またはそれらのうちの1つもしくは複数の組合せにおいて実装され得る。本明細書で説明する主題の実施形態は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のために、またはデータ処理装置の動作を制御するために、(1つまたは複数の)コンピュータ記憶媒体上で符号化された、コンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。代替または追加として、プログラム命令は、データ処理装置による実行のための、好適な受信機装置への送信のために情報を符号化するために生成される、人工的に生成された伝搬信号、たとえば、機械生成された電気信号、光信号、または電磁信号上で符号化され得る。コンピュータ記憶媒体は、コンピュータ可読記憶デバイス、コンピュータ可読記憶基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの1つもしくは複数の組合せであり得るか、またはそれらに含まれ得る。その上、コンピュータ記憶媒体は伝搬信号ではないが、コンピュータ記憶媒体は、人工的に生成された伝搬信号の中で符号化されたコンピュータプログラム命令のソースまたは宛先であり得る。コンピュータ記憶媒体はまた、1つまたは複数の別個の物理構成要素または媒体(たとえば、複数のCD、ディスク、または他の記憶デバイス)であり得るか、またはそれらに含まれ得る。 Embodiments of the subject matter and operations described herein may be implemented in, or in, digital electronic circuitry, or computer software, firmware, or hardware, including the structures disclosed herein and structural equivalents thereof. Can be implemented in one or more combinations. Embodiments of the subject matter described herein comprise one or more computer programs, i.e., (one or more), for execution by or for controlling the operation of a data processing apparatus. It may be implemented as one or more modules of computer program instructions encoded on a computer storage medium. Alternatively or additionally, the program instructions may be transmitted to an artificially generated propagated signal, e.g. , may be encoded on a machine-generated electrical, optical, or electromagnetic signal. A computer storage medium may be or be included in a computer readable storage device, a computer readable storage substrate, a random or serial access memory array or device, or a combination of one or more thereof. Moreover, although a computer storage medium is not a propagated signal, a computer storage medium can be a source or destination of computer program instructions encoded in an artificially generated propagated signal. A computer storage medium may also be or be contained within one or more separate physical components or media (eg, multiple CDs, discs, or other storage devices).

本明細書で説明する動作は、1つまたは複数のコンピュータ可読記憶デバイス上に記憶されたまたは他のソースから受信されたデータに対してデータ処理装置によって実行される動作として実装され得る。 The operations described herein may be implemented as operations performed by a data processing apparatus on data stored on one or more computer-readable storage devices or received from other sources.

「データ処理装置」という用語は、例として、プログラマブルプロセッサ、コンピュータ、システムオンチップ、または上記の複数のもの、もしくは上記のものの組合せを含む、データを処理するためのあらゆる種類の装置、デバイス、および機械を包含する。装置は、専用論理回路構成、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含むことができる。装置はまた、ハードウェアに加えて、当該のコンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想機械、またはそれらのうちの1つまたは複数の組合せを構成するコードを含むことができる。装置および実行環境は、ウェブサービス、分散コンピューティング基盤およびグリッドコンピューティング基盤などの様々な異なるコンピューティングモデル基盤を実現することができる。 The term "data processor" means any kind of apparatus, device, and for processing data including, by way of example, programmable processors, computers, systems-on-chips, or any number or combination of the above. Including machinery. The device may include dedicated logic circuitry, such as FPGAs (Field Programmable Gate Arrays) or ASICs (Application Specific Integrated Circuits). The apparatus also includes, in addition to hardware, code that creates an execution environment for the computer program in question, such as processor firmware, protocol stacks, database management systems, operating systems, cross-platform runtime environments, virtual machines, or any of these. It may contain code that constitutes a combination of one or more of them. Devices and execution environments can implement a variety of different computing model infrastructures, such as web services, distributed computing infrastructures, and grid computing infrastructures.

コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとも呼ばれる)は、コンパイル型言語またはインタプリタ型言語、宣言型言語または手続き型言語を含む、任意の形態のプログラミング言語で書くことができ、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境において使用するのに適した他のユニットとして含む、任意の形態で展開され得る。コンピュータプログラムは、ファイルシステムの中のファイルに対応し得るが、そうである必要はない。プログラムは、他のプログラムもしくはデータ(たとえば、マークアップ言語文書の中に記憶された1つまたは複数のスクリプト)を保持するファイルの一部分の中に、当該のプログラムに専用の単一のファイルの中に、または複数の協調ファイル(たとえば、1つまたは複数のモジュール、サブプログラム、またはコードの部分を記憶するファイル)の中に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに配置されるかもしくは複数のサイトにわたって分散され通信ネットワークによって相互接続される、複数のコンピュータ上で実行されるように展開され得る。 Computer programs (also called programs, software, software applications, scripts, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and stand-alone It may be deployed in any form, including as a program, or as modules, components, subroutines, objects, or other units suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program can be either in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to that program. or in multiple collaboration files (eg, files that store one or more modules, subprograms, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers located at one site or distributed across multiple sites and interconnected by a communication network.

本明細書で説明するプロセスおよび論理フローは、入力データ上で動作し、出力を生成することによってアクションを実行するために、1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルプロセッサによって実行され得る。プロセスおよび論理フローはまた、専用論理回路構成、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実行され得、装置もそれらとして実装されてよい。 The processes and logic flows described herein are implemented by one or more programmable processors executing one or more computer programs to perform actions by operating on input data and generating output. can be performed. The processes and logic flows may also be performed by dedicated logic circuitry, such as FPGAs (Field Programmable Gate Arrays) or ASICs (Application Specific Integrated Circuits), and devices may also be implemented as such.

コンピュータプログラムの実行に好適なプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサの両方を含む。一般に、プロセッサは、命令およびデータを読取り専用メモリ、もしくはランダムアクセスメモリ、またはその両方から受信することになる。コンピュータの必須要素は、命令に従ってアクションを実行するためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータはまた、データを記憶するための1つまたは複数の大容量記憶デバイス、たとえば、磁気ディスク、光磁気ディスク、もしくは光ディスクを含むか、またはそれらからデータを受信することもしくはそれらにデータを転送すること、またはその両方を行うために、動作可能に結合される。しかしながら、コンピュータはそのようなデバイスを有することは必須でない。その上、コンピュータは、ほんのいくつかの例を挙げれば、別のデバイス、たとえば、携帯電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレーヤ、ゲーム機、全地球測位システム(GPS)レシーバ、またはポータブル記憶デバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)の中に組み込まれ得る。コンピュータプログラム命令およびデータを記憶するのに適したデバイスは、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば、内部ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、不揮発性媒体、および不揮発性メモリデバイスを含む。プロセッサおよびメモリは、専用論理回路構成によって増補され得るか、または専用論理回路構成の中に組み込まれ得る。 Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors. Generally, a processor will receive instructions and data from read-only memory, random-access memory, or both. The essential elements of a computer are a processor for performing actions according to instructions, and one or more memory devices for storing instructions and data. Generally, a computer also includes, receives data from, or sends data to, one or more mass storage devices, such as magnetic, magneto-optical, or optical disks, for storing data. operably coupled to transfer, or both. However, a computer is not required to have such a device. Moreover, the computer may be used by another device such as a mobile phone, personal digital assistant (PDA), mobile audio or video player, game console, global positioning system (GPS) receiver, or It may be incorporated into a portable storage device (eg, Universal Serial Bus (USB) flash drive). Devices suitable for storing computer program instructions and data include, by way of example, semiconductor memory devices such as EPROM, EEPROM and flash memory devices, magnetic disks such as internal or removable disks, magneto-optical disks and CDs. - includes all forms of non-volatile memory, non-volatile media, and non-volatile memory devices, including ROM discs and DVD-ROM discs. The processor and memory may be augmented by, or embedded within, dedicated logic circuitry.

ユーザとの対話を提供するために、本明細書で説明する主題の実施形態は、ユーザに情報を表示するための、CRT(陰極線管)またはLCD(液晶ディスプレイ)モニタなどのディスプレイデバイス、ならびに、キーボード、および、ユーザがコンピュータに入力を提供することができる、たとえば、マウスまたはトラックボールなどのポインティングデバイスを有するコンピュータ上で実装され得る。他の種類のデバイスも、ユーザとの対話を提供するために使用され得る。たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックであってもよく、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形態で受け取られてもよい。加えて、コンピュータは、文書をユーザによって使用されるデバイスに送信し、文書をそのデバイスから受信することによって、たとえば、ユーザのクライアントデバイス上のウェブブラウザから受信された要求に応答してウェブページをそのウェブブラウザに送信することによって、ユーザと対話することができる。 To provide user interaction, embodiments of the subject matter described herein include a display device, such as a CRT (Cathode Ray Tube) or LCD (Liquid Crystal Display) monitor, for displaying information to a user, and It can be implemented on a computer having a keyboard and pointing device such as a mouse or trackball that allows a user to provide input to the computer. Other types of devices may also be used to provide user interaction. For example, the feedback provided to the user may be any form of sensory feedback, e.g., visual, auditory, or tactile feedback, and the input from the user may be acoustic, audio, or tactile. It may be received in any form, including In addition, the computer can send documents to and receive documents from a device used by a user to, for example, render web pages in response to requests received from a web browser on the user's client device. You can interact with the user by sending to their web browser.

本明細書で説明する主題の実施形態は、たとえば、データサーバとして、バックエンド構成要素を含むか、またはミドルウェア構成要素、たとえば、アプリケーションサーバを含むか、またはフロントエンド構成要素、たとえば、ユーザがそれを通じて本明細書で説明する主題の一実施態様と対話できるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータを含むか、あるいは1つまたは複数のそのようなバックエンド構成要素、ミドルウェア構成要素、またはフロントエンド構成要素の任意の組合せを含む、計算システムにおいて実装され得る。システムの構成要素は、任意の形態または媒体のデジタルデータ通信、たとえば、通信ネットワークによって、相互接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)およびワイドエリアネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。 Embodiments of the subject matter described herein may include back-end components, eg, as data servers, or may include middleware components, eg, application servers, or may include front-end components, eg, when users or one or more such back-end components, middleware components, or front-end It can be implemented in a computing system containing any combination of components. The components of the system can be interconnected by any form or medium of digital data communication, eg, a communication network. Examples of communication networks include local area networks (“LAN”) and wide area networks (“WAN”), internetworks (eg, the Internet), and peer-to-peer networks (eg, ad-hoc peer-to-peer networks).

計算システムは、クライアントおよびサーバを含むことができる。クライアントおよびサーバは、一般に、互いに遠隔にあり、通常、通信ネットワークを通じて相互作用する。クライアントとサーバとの関係は、コンピュータプログラムがそれぞれのコンピュータ上で実行し互いにクライアントサーバ関係を有することによって生じる。いくつかの実施形態では、サーバは、(たとえば、クライアントデバイスと対話するユーザにデータを表示するとともにそのユーザからユーザ入力を受信するために)データ(たとえば、HTMLページ)をクライアントデバイスへ送信する。クライアントデバイスにおいて生成されたデータ(たとえば、ユーザ対話の結果)は、サーバにおいてクライアントデバイスから受信され得る。 The computing system can include clients and servers. A client and server are generally remote from each other and typically interact through a communication network. The relationship of client and server arises by virtue of computer programs running on the respective computers and having a client-server relationship to each other. In some embodiments, the server sends data (eg, HTML pages) to the client device (eg, to display data to and receive user input from a user interacting with the client device). Data generated at the client device (eg, results of user interactions) may be received from the client device at the server.

本明細書は多くの特定の実装詳細を含むが、これらは任意の発明の範囲または特許請求され得るものの範囲に対する限定として解釈されるべきではなく、むしろ特定の発明の特定の実施形態に特有の特徴の説明として解釈されるべきである。別個の実施形態の文脈において本明細書で説明されるいくつかの特徴はまた、単一の実施形態において組み合わせて実施され得る。反対に、単一の実施形態の文脈において説明される様々な特徴はまた、複数の実施形態において別々に、または任意の好適な部分組合せにおいて実施され得る。その上、特徴はいくつかの組合せで働くものとして上記で説明されることがあり、当初はそのようなものとして特許請求されることさえあるが、特許請求される組合せからの1つまたは複数の特徴は、場合によっては、その組合せから削除することができ、特許請求される組合せは、部分組合せまたは部分組合せの変形形態を対象としてよい。 While this specification contains many specific implementation details, these should not be construed as limitations on the scope of any invention or what may be claimed, but rather specific to particular embodiments of particular inventions. should be construed as a description of the features. Certain features that are described in this specification in the context of separate embodiments can also be implemented in combination in a single embodiment. Conversely, various features that are described in the context of a single embodiment can also be implemented in multiple embodiments separately or in any suitable subcombination. Moreover, although features may be described above as working in several combinations, and may even be originally claimed as such, one or more from the claimed combinations Features may optionally be omitted from the combination, and the claimed combination may be directed to sub-combinations or variations of sub-combinations.

同様に、動作は、特定の順序で図面に示されるが、このことは、望ましい結果を達成するために、そのような動作が図示した特定の順序もしくは逐次的な順序で実行されること、または例示したすべての動作が実行されることを必要とするものとして理解されるべきではない。いくつかの状況では、マルチタスキングおよび並列処理が有利であり得る。その上、上記で説明した実施形態における様々なシステム構成要素の分離は、すべての実施形態においてそのような分離を必要とするものとして理解されるべきではなく、説明したプログラム構成要素およびシステムが、一般に、単一のソフトウェア製品の中に一緒に組み込まれ得るか、または複数のソフトウェア製品の中にパッケージ化され得ることを理解されたい。 Similarly, although operations are shown in the figures in a particular order, this implies that such operations are performed in the specific order shown or sequential order to achieve desirable results; It should not be understood as requiring that all illustrated acts be performed. Multitasking and parallel processing may be advantageous in some situations. Moreover, the separation of various system components in the embodiments described above should not be understood as requiring such separation in all embodiments, as the program components and systems described It should be appreciated that, in general, they may be incorporated together in a single software product or packaged in multiple software products.

したがって、本主題の特定の実施形態が説明されている。他の実施形態が以下の特許請求の範囲内に入る。場合によっては、特許請求の範囲の中に列挙されるアクションは、異なる順序で実行することができ、それでもなお望ましい結果を達成することができる。加えて、添付の図面に示されるプロセスは、望ましい結果を達成するために、必ずしも図示の特定の順序または逐次的な順序を必要とするとは限らない。いくつかの実施態様では、マルチタスキングおよび並列処理が有利であり得る。 Accordingly, specific embodiments of the present subject matter have been described. Other embodiments are within the scope of the following claims. In some cases, the actions recited in the claims can be performed in a different order and still achieve desirable results. Additionally, the processes illustrated in the accompanying drawings do not necessarily require the particular order illustrated or sequential order to achieve desirable results. Multitasking and parallel processing may be advantageous in some implementations.

100 環境
105 ネットワーク
110 クライアントデバイス
112 アプリケーション
130 セキュアMPCクラスタ
140 パブリッシャ
142 ウェブサイト
145 リソース
150 DSP
160 デジタルコンポーネントプロバイダ
170 SSP
900 MPC計算システム
910 ロードバランサ
920 サービングプール
930 ログ
940 ログプロセッサプール
950 スナップショット
1000 コンピュータシステム
1010 プロセッサ
1020 メモリ
1030 記憶デバイス
1040 入出力デバイス
1050 システムバス
1060 外部デバイス
100 environment
105 network
110 client devices
112 applications
130 Secure MPC Cluster
140 Publisher
142 websites
145 Resources
150 DSPs
160 Digital Component Provider
170 SSP
900 MPC calculation system
910 load balancer
920 serving pool
930 logs
940 log processor pool
950 snapshots
1000 computer system
1010 processor
1020 memory
1030 storage device
1040 I/O device
1050 system bus
1060 external device

Claims (10)

コンピュータ実装方法であって、
セキュアマルチパーティ計算(MPC)システムの第1の計算システムによって、クライアントデバイスから、デジタルコンポーネント要求およびノンスを受信するステップと、
前記ノンスおよび関数に基づいて、前記クライアントデバイスのユーザをメンバーとして含むユーザグループのユーザグループ識別子を表すブルームフィルタのシェアを含む配列を生成するステップと、
複数のユーザグループ識別子の各々について、前記セキュアMPCシステムの1つまたは複数の第2の計算システムと協働し、前記配列を使用して、前記クライアントデバイスの前記ユーザが前記ユーザグループ識別子によって識別されるユーザグループのメンバーであるか否かを表す1つまたは複数のユーザグループメンバーシップ条件パラメータのそれぞれの第1の秘密シェアを計算するステップと、
複数のデジタルコンポーネントの各デジタルコンポーネントについて、
前記デジタルコンポーネントに対応する所与のユーザグループ識別子を識別するステップ、ならびに
前記1つまたは複数の第2の計算システムの各々と協働して、少なくとも、前記所与のユーザグループ識別子によって識別される所与のユーザグループに対応する各ユーザグループメンバーシップ条件パラメータの前記それぞれの第1の秘密シェア、および前記1つまたは複数の第2のコンピュータの各々によって保持される前記所与のユーザグループ識別子によって識別される所与のユーザグループに対応する前記ユーザグループメンバーシップ条件パラメータの第2の秘密シェアに基づいて、候補パラメータの第1の秘密シェアを計算するステップであって、前記候補パラメータは、前記デジタルコンポーネントが前記デジタルコンポーネント要求の適格な候補であるか否かを示す、計算するステップを行うステップと、
各デジタルコンポーネントの前記候補パラメータの前記第1の秘密シェアおよび各デジタルコンポーネントの選択値に基づいて、選択されたデジタルコンポーネントを表す選択結果の第1の秘密シェアを生成するステップと、
前記選択結果の前記第1の秘密シェアを前記クライアントデバイスに送るステップと
を含む、コンピュータ実装方法。
A computer-implemented method comprising:
receiving a digital component request and nonce from a client device by a first computing system of a secure multi-party computing (MPC) system;
generating an array containing bloom filter shares representing user group identifiers of user groups that include the user of the client device as a member based on the nonce and the function;
collaborating with one or more second computing systems of the secure MPC system for each of a plurality of user group identifiers and using the array to identify the user of the client device by the user group identifier; computing a first secret share for each of one or more user group membership condition parameters representing membership of a user group that
For each digital component of the plurality of digital components,
identifying a given user group identifier corresponding to said digital component; and in cooperation with each of said one or more second computing systems identified at least by said given user group identifier. by said respective first secret share of each user group membership condition parameter corresponding to a given user group and said given user group identifier maintained by each of said one or more second computers; calculating a first secret share of a candidate parameter based on a second secret share of said user group membership condition parameter corresponding to a given user group identified, said candidate parameter being said performing a calculating step indicating whether a digital component is an eligible candidate for said digital component request;
generating a first secret share of selection results representing the selected digital component based on the first secret share of the candidate parameter for each digital component and the selected value for each digital component;
and sending the first secret share of the selection result to the client device.
前記第2のMPCシステムの前記1つまたは複数の第2のコンピュータと協働して、前記ユーザグループメンバーシップ条件パラメータの前記第1の秘密シェアを計算するステップが、文字化け回路プロトコルまたはGoldreich-Micali-Wigderson(GMW)プロトコルの一方を使用して、前記ユーザグループメンバーシップ条件パラメータの前記第1の秘密シェアを計算するステップを含む、請求項1に記載のコンピュータ実装方法。 The step of calculating, in cooperation with the one or more second computers of the second MPC system, the first secret share of the user group membership condition parameters comprises a garbled circuit protocol or a Goldreich- 2. The computer-implemented method of claim 1, comprising computing the first secret share of the user group membership condition parameter using one of the Micali-Wigderson (GMW) protocols. 前記1つまたは複数の第2のコンピュータの各々と協働して、前記候補パラメータの前記第1の秘密シェアを計算するステップが、1つまたは複数の追加条件についてのパラメータのそれぞれの秘密シェアに基づいて前記候補パラメータの前記第1の秘密シェアを計算するステップを含む、請求項1から2のいずれか一項に記載のコンピュータ実装方法。 The step of calculating, in cooperation with each of the one or more second computers, the first secret share of the candidate parameters is performed on each secret share of the parameters for one or more additional conditions. 3. The computer-implemented method of any one of claims 1-2, comprising calculating the first secret share of the candidate parameter based on. ブロックデジタルコンポーネントのセットを表す追加のブルームフィルタの追加のノンスを受信するステップと、
前記追加のブルームフィルタのシェアを表す追加の配列を生成するステップと、
前記複数のデジタルコンポーネントのうちの1つまたは複数のデジタルコンポーネントについて、前記1つまたは複数の第2の計算システムと協働し、前記追加の配列を使用して、前記デジタルコンポーネントが前記クライアントデバイスでブロックされているか否かを表すブロック条件パラメータの第1の秘密シェアを計算するステップであって、前記デジタルコンポーネントの前記候補パラメータが、前記ブロック条件パラメータに基づいている、計算するステップと
をさらに含む、請求項1から3のいずれか一項に記載のコンピュータ実装方法。
receiving additional nonces for additional bloom filters representing sets of block digital components;
generating additional arrays representing shares of the additional bloom filters;
for one or more digital components of said plurality of digital components, in cooperation with said one or more second computing systems, and using said additional array, said digital component at said client device; calculating a first secret share of a block condition parameter representing whether or not it is blocked, wherein said candidate parameter of said digital component is based on said block condition parameter. 4. The computer-implemented method of any one of claims 1-3.
前記選択結果の前記第1の秘密シェアが、前記選択結果の秘密シェアと前記クライアントデバイスから受信された第2のマスクとの間でビットXOR演算を実施することによって計算された結果を含む、請求項1から4のいずれか一項に記載のコンピュータ実装方法。 The claim wherein the first secret share of the selection result comprises a result calculated by performing a bitwise XOR operation between the secret share of the selection result and a second mask received from the client device. Clause 5. The computer-implemented method of any one of clauses 1-4. 前記第1の計算システムが、プロセッサのセットを含むサービングプールと、プロセッサの前記セットの間で計算負荷を平衡させるロードバランサとを含む、請求項1から5のいずれか一項に記載のコンピュータ実装方法。 6. The computer implementation of any one of claims 1-5, wherein the first computing system comprises a serving pool comprising a set of processors and a load balancer to balance computational load among the set of processors. Method. 前記第1の計算システムが、完了したデジタルコンポーネント選択プロセスに関係するデータを含むログへの更新に基づいてスナップショットを生成し、前記スナップショットを前記サービングプールに提供するプロセッサの追加のセットを含むログプロセッサプールを含む、請求項6に記載のコンピュータ実装方法。 The first computing system includes an additional set of processors that generate snapshots based on updates to a log containing data related to a completed digital component selection process and provide the snapshots to the serving pool. 7. The computer-implemented method of Claim 6, comprising a log processor pool. システムであって、
1つまたは複数のプロセッサと、
命令を記憶した、1つまたは複数の記憶デバイスと
を備え、前記命令が、前記1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、請求項1から7のいずれか一項に記載の方法を実行させる
システム。
a system,
one or more processors;
and one or more storage devices storing instructions, said instructions, when executed by said one or more processors, to said one or more processors of any of claims 1 to 7. A system for carrying out the method of claim 1.
1つまたは複数のプロセッサによって実行されると、前記1つまたは複数のプロセッサに、請求項1から8のいずれか一項に記載の方法を実行させる命令を担持する、コンピュータ可読記憶媒体。 A computer readable storage medium carrying instructions which, when executed by one or more processors, cause said one or more processors to perform the method of any one of claims 1 to 8. コンピュータによって実行されると、前記コンピュータに、請求項1から7のいずれか一項に記載の方法の前記ステップを実行させる命令を含む、コンピュータプログラム製品。 A computer program product comprising instructions which, when executed by a computer, cause said computer to perform the steps of the method according to any one of claims 1 to 7.
JP2022564428A 2021-03-08 2022-03-07 Improving the performance of secure multiparty computation Active JP7471450B2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
IL281330A IL281330A (en) 2021-03-08 2021-03-08 Enhanced performance of secure multi-party computation
IL281330 2021-03-08
PCT/US2022/019182 WO2022192152A1 (en) 2021-03-08 2022-03-07 Enhanced performance of secure multi-party computation

Publications (3)

Publication Number Publication Date
JP2023529783A true JP2023529783A (en) 2023-07-12
JPWO2022192152A5 JPWO2022192152A5 (en) 2024-02-22
JP7471450B2 JP7471450B2 (en) 2024-04-19

Family

ID=80952162

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022564428A Active JP7471450B2 (en) 2021-03-08 2022-03-07 Improving the performance of secure multiparty computation

Country Status (7)

Country Link
US (1) US20230155820A1 (en)
EP (1) EP4128653A1 (en)
JP (1) JP7471450B2 (en)
KR (1) KR20220155370A (en)
CN (1) CN115428395A (en)
IL (1) IL281330A (en)
WO (1) WO2022192152A1 (en)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2984559B1 (en) 2011-12-20 2015-10-23 Morpho IDENTIFICATION OF INDIVIDUALS BY SECURE CALCULATION
US10721063B2 (en) 2015-05-07 2020-07-21 Nec Corporation Secure computation data utilization system, method, apparatus and non-transitory medium
US11553335B2 (en) 2019-05-07 2023-01-10 Qualcomm Incorporated Secure multiparty computation for Internet of Things communications
US11222129B2 (en) 2019-06-24 2022-01-11 International Business Machines Corporation Entity resolution between multiple private data sources

Also Published As

Publication number Publication date
JP7471450B2 (en) 2024-04-19
KR20220155370A (en) 2022-11-22
US20230155820A1 (en) 2023-05-18
WO2022192152A1 (en) 2022-09-15
EP4128653A1 (en) 2023-02-08
CN115428395A (en) 2022-12-02
IL281330A (en) 2022-10-01

Similar Documents

Publication Publication Date Title
JP2023067928A (en) Using secure multi-party computation to improve content selection process integrity
JP7471425B2 (en) Feedback Controller Using Secret Sharing
US20230188329A1 (en) Using secure multi-party computation and probabilistic data structures to protect access to information
JP2023549009A (en) Cryptographically secure control using secure multiparty computation
EP4081971B1 (en) Using secure mpc and vector computations to protect access to information in content distribution
JP7440667B2 (en) Flexible content selection process using secure multiparty calculations
JP7425222B2 (en) Privacy Preserving Measurements Using Secure Multiparty Computation
JP7471450B2 (en) Improving the performance of secure multiparty computation
JP2023533906A (en) Privacy-preserving cross-domain experimental group segmentation and monitoring
WO2024030200A1 (en) Single request architecture for increasing efficiency of secure multi-party computations

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20221202

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20221202

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231122

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20231204

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20231122

A524 Written submission of copy of amendment under article 19 pct

Free format text: JAPANESE INTERMEDIATE CODE: A524

Effective date: 20240214

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20240311

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240409

R150 Certificate of patent or registration of utility model

Ref document number: 7471450

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150