Use multi-party computation and K-anonymity techniques to protect confidential information
By using MPC and k-anonymization technologies in multi-party computing and k-anonymization technologies, the computing system is allocated to receive encrypted user group identifiers and perform k-anonymization processes, and the problem of difficulty in protecting confidential information of multiple entities in the prior art is solved, and an efficient and secure content selection process is achieved.
Patent Information
- Application Number
- CN202180034297.1
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2020-08-02
- Filing Date
- 2021-04-21
- Publication Date
- 2025-05-02
- Estimated Expiration
- 2041-04-21
AI Technical Summary
The prior art is difficult to effectively protect the confidential information of multiple entities in multi-party computing and k-anonymity technology to prevent information leakage and sharing.
By using multi-party computing (MPC) and k-anonymity techniques, the computing system is allocated to receive encrypted user group identifiers, a k-anonymity process is performed, and a digital component is selected based on the selection parameters to ensure data confidentiality.
It realizes the protection of confidential information of participating entities during the content selection process, prevents information leakage and sharing, reduces calculation burden and waiting time, and improves the efficiency and security of the process.
Smart Images

Figure CN115552838B_ABST
Abstract
Description
[0001] CROSS-REFERENCE TO RELATED APPLICATIONS
[0002] This application claims priority to Israel Application No. 276440 filed on August 2, 2020. The disclosure of the foregoing application is hereby incorporated by reference in its entirety. Background Art
[0003] Multi-party computation is a cryptographic technique that distributes computation across multiple parties so that each party cannot access the data of other parties. k-anonymity can be used to ensure that the data of each member in the group is anonymous. For data with k-anonymity property, the data for a member cannot be distinguished from the data of k-1 other members in the group. Summary of the invention
[0004] This specification describes techniques related to protecting confidential information of multiple entities using multi-party computation (MPC) and k-anonymity techniques.
[0005] In general, one innovative aspect of the subject matter described in this specification can be embodied in methods, the methods comprising receiving, by a first multi-party computing (MPC) computing system, from a client device, a content request including a set of encrypted user group identifiers, wherein each encrypted user group identifier is encrypted using a first encryption key of a second MPC computing system; for each encrypted user group identifier, transmitting a request to the second MPC computing system, the request including the encrypted user group identifier; for each user group identifier that satisfies a k-anonymity process performed by the second MPC computing system: receiving, by the first MPC computing system, a plaintext value of the user group identifier from the second MPC computing system; and transmitting, by the first MPC computing system, a selection parameter request including the plaintext value of the user group identifier to one or more platforms; receiving, by the first MPC computing system, from the second MPC computing system, a set of selection parameter elements, the set of selection parameter elements each including a creative element of a corresponding digital component and a selection parameter identifier of the digital component; selecting, by the first MPC computing system, a given digital component based on the selection parameter identifier; and transmitting, by the first MPC computing system, the creative element of the digital component to the client device. Other embodiments of this aspect include corresponding apparatus, systems, and computer programs configured to perform aspects of the described method encoded on computer storage devices.
[0006] These and other embodiments may each optionally include one or more of the following features. In some aspects, the content request includes a resource locator of a resource for which a digital component is being requested. Some aspects may include: generating a request identifier by the first MPC computing system based on the resource locator and a random number corresponding to the content request, and encrypting the request identifier by the first MPC computing system. The request may include an encrypted request identifier.
[0007] In some aspects, receiving a plaintext value for each user group identifier that satisfies the k-anonymity process may include receiving a return request for each user group identifier that satisfies the k-anonymity process. Each return request may include a user group identifier and a twice-encrypted request identifier generated by the second MPC computing system by encrypting the encrypted request identifier using a second encryption key of the second MPC computing system. Each selection parameter request may include a twice-encrypted request identifier. Each selection parameter element may include an encrypted request identifier generated by the second MPC computing system by decrypting the twice-encrypted request identifier after receiving the twice-encrypted request from the platform and the selection parameter identifiers of the creative element and the selection parameter element.
[0008] In some aspects, the second MPC computing system receives a selection parameter response from each of the one or more platforms, the selection parameter response including a secondary encryption request identifier, a corresponding creative element of the corresponding digital component, a selection parameter of the corresponding digital component, and a digital component provider identifier that publishes the corresponding digital component. The second MPC computing system identifies a corresponding selection parameter identifier for each selection parameter response based on a range of selection parameter values for the selection parameter including the selection parameter. The second MPC computing system generates a selection parameter element based on the selection parameter response and the selection parameter identifier.
[0009] In some aspects, for each user group identifier, the content request includes an encrypted composite message. The encrypted composite message may include: an encrypted version of the composite message, the encrypted version of the composite message including the user group identifier; an application public key for an application of the client device that initiated the content request; and a signed redemption record issued by the trust token issuer in response to determining that the client device is trustworthy.
[0010] In some aspects, the content request includes a context signal. Some aspects may include determining that the context signal satisfies k-anonymity. In response to determining that the context signal satisfies k-anonymity, the first MPC computing system encrypts the context signal. The first MPC computing system includes each context signal that satisfies k-anonymity in the request.
[0011] Some aspects may include identifying in each creative element a first set of attributes for the corresponding digital component, and identifying in the lookup table a second set of excluded attributes that are excluded by a publisher of the resource. Selecting, by the first MPC computing system, a given digital component based on the selection parameter may include, for each creative element, determining whether one or more attributes in the first set of attributes for the creative element match excluded attributes, and excluding each creative element having at least one attribute that matches an excluded attribute.
[0012] In some aspects, selecting, by the first MPC computing system, a given digital component based on a selection parameter identifier may include: for each selection parameter element, identifying in a first lookup table a shared code of a creative element of the selection parameter element based on a resource locator of a resource and a digital component identifier of a digital component provider that published a corresponding digital component of the creative element; identifying in a second lookup table a publisher return identifier based on the shared code and the selection parameter identifier of the selection parameter element; and selecting as the given digital component the digital component of the given selection parameter element having the highest publisher return identifier.
[0013] In some aspects, transmitting the creative element of the digital component by the first MPC computing system to the client device may include transmitting a content request result that includes the creative element, a publisher return identifier for a given selection parameter element, a digital component provider identifier for the given digital component, a timestamp indicating when the given digital component was selected, and a digital signature.
[0014] In some aspects, the client device transmits a second content request to the second platform. The second content request result may include a content result request and an additional context signal. The second platform selects a second digital component from a set of digital components to present at the client device, the set of digital components including a given digital component and one or more digital components selected based on the additional context signal.
[0015] The subject matter described in this specification can be implemented in specific embodiments to achieve one or more of the advantages. Using MPC and k-anonymity techniques to perform a content selection process prevents confidential information (e.g., personal information) of entities participating in the process from being disclosed to other entities, and prevents confidential information necessary to perform the process from being shared between entities. The techniques described in this document partition confidential information and operations of the process into different computing systems to ensure that if one entity's computer is compromised, the amount of confidential information that can be accessed is minimized or at least reduced relative to other techniques.
[0016] The MPC techniques described in this document use multiple lookup tables maintained by multiple computing systems participating in the MPC process to protect the confidentiality of the information in the tables. The tables may include codes in place of actual data so that the computing systems participating in the MPC process cannot access the underlying data, but can still use these codes to perform the operations of the process. Using codes instead of actual data can protect data even if the data is compromised, for example, stolen or leaked to another entity. Using lookup tables and codes in this manner reduces the computational burden on the computing systems used to implement the MPC process relative to the encryption techniques required to protect the data (e.g., homomorphic encryption techniques). This reduces the necessary central processing unit (CPU) cycles required to perform the process (e.g., by not having to encrypt and decrypt large amounts of data), reduces the latency of performing processes that are critical to the implementation, where the process is used to select content to be provided to and presented on a user device, and makes the entire process more efficient.
[0017] Reducing latency for content provision can also reduce the number of errors that occur on user devices while waiting for such content to arrive. Because content typically needs to be provided within milliseconds to mobile devices connected via a wireless network, reducing latency for selecting and providing content is critical to preventing errors and reducing user frustration. Batch processing techniques can also be used to reduce computational requirements (e.g., for handling a larger number of individual requests) and reduce bandwidth consumption of networks connecting computing systems of various entities.
[0018] Using the combination of MPC, k-anonymity, probabilistic encryption, and lookup tables described in this document, a synergistic effect is provided for protecting the data confidentiality of each of the entities involved in the process of requesting content, providing candidate content for potential selection and selection parameters for candidate content, selecting content, and providing content for presentation. This includes protecting the confidentiality of user data of users to whom content is provided, the confidentiality of selection parameters for candidate content submitted by a platform (e.g., a DSP), and the manner in which a platform (e.g., an SSP) selects content.
[0019] Various features and advantages of the foregoing subject matter are described below with reference to the accompanying drawings. Additional features and advantages will be apparent from the subject matter described herein and in the claims. BRIEF DESCRIPTION OF THE DRAWINGS
[0020] Figure 1 is a block diagram of an environment for distributing content to client devices.
[0021] Figure 2 is a swim lane diagram illustrating an example process for selecting and providing content to a client device.
[0022] Figure 3is a swim lane diagram illustrating an example process for selecting content.
[0023] Figure 4 is a block diagram of an example computer system.
[0024] Like reference numbers and numerals in the various drawings indicate like elements. DETAILED DESCRIPTION
[0025] In general, this document describes a system that employs MPC, k-anonymity techniques, and other types of encryption to prevent sharing or disclosure of confidential information of each entity involved in the selection and distribution of electronic content to client devices. Digital signature techniques can also be used to detect and prevent fraud in data transmission.
[0026] Figure 1 1 is a block diagram of an environment 100 for distributing content to a client device 110. The example environment 100 includes a data communication network 105, such as a local area network (LAN), a wide area network (WAN), the Internet, a mobile network, or a combination thereof. The network 105 connects the client devices 110, the MPC clusters 130, the demand side platform (DSP) 150, the supply side platform (SSP) 170, the publishers 140, and the websites 142. The example environment 100 may include many different client devices 110, MPC clusters 130, DSPs 150, SSPs 170, publishers 140, and websites 142.
[0027] The client device 110 is an electronic device capable of communicating over the network 105. Example client devices 110 include personal computers, mobile communication devices, such as smart phones, and other devices that can send and receive data over the network 105. The client device may also include a digital assistant device that accepts audio input through a microphone and outputs audio output through a speaker. When the digital assistant detects a "hot word" or "hot phrase" that activates the microphone to accept audio input, the digital assistant may be placed in a listening mode (e.g., ready to accept audio input). The digital assistant device may also include a camera and / or a display to capture images and present information visually. The digital assistant may be implemented in different forms of hardware devices, including wearable devices (e.g., watches or glasses), smart phones, speaker devices, tablet devices, or another hardware device. The client device may also include a digital media device, such as a streaming device that is plugged into a television or other display to stream video to a television.
[0028] The client device 110 typically includes applications 112, such as a web browser and / or native applications, to facilitate sending and receiving data over the network 105. A native application is an application developed for a specific platform or a specific device (e.g., a mobile device with a specific operating system). Publishers 140 can develop and provide (e.g., make available for download) native applications to client devices 110. For example, in response to a user of the client device 110 entering a resource address of a resource 145 in an address bar of a web browser or selecting a link that references a resource address, the web browser can request the resource 145 from a web server hosting a website 142 of the publisher 140. Similarly, a native application can request application content from a remote server of the publisher.
[0029] Some resources, application pages or other application content may include digital component slots for presenting digital components with resources 145 or application pages. As used throughout this document, the phrase "digital component" refers to a discrete unit of digital content or digital information (e.g., a video clip, an audio clip, a multimedia clip, an image, a text, or another content unit). A digital component may be electronically stored in a physical memory device as a single file or a collection of files, and the digital component may take the form of a video file, an audio file, a multimedia file, an image file, or a text file, and include advertising information so that an advertisement is a type of digital component. For example, a digital component may be content intended to supplement the content of a web page or other resource presented by application 112. More specifically, a digital component may include digital content related to resource content (e.g., a digital component may relate to the same subject as web page content, or a related subject). Therefore, the provision of a digital component may supplement and generally enhance a web page or application content.
[0030] When application 112 loads a resource (or application content) that includes one or more digital component slots, application 112 may request a digital component for each slot. In some implementations, a digital component slot may include code (e.g., a script) that causes application 112 to request a digital component from a digital component distribution system that selects a digital component and provides the digital component to application 112 for presentation to a user of client device 110.
[0031] Some publishers 140 use SSP 170 to manage the process of obtaining digital components for digital component slots of their resources and / or applications. 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. SSP 170 can interact with one or more DSPs 150 to obtain information that can be used to select digital components for digital component slots. As described in more detail below, this information can include selection parameters that represent the number of digital components that digital component providers 160 are willing to provide to publishers 140 for presenting digital component providers 160. Each publisher 140 can have a corresponding SSP 170 or multiple SSPs 170. Some publishers 140 can use the same SSP 170.
[0032] Digital component providers 160 may create (or otherwise publish) digital components that are presented in digital component slots of resources and applications of publishers. Digital component providers 160 may use DSP 150 to manage the provision of their digital components for presentation in digital component slots. DSP 150 is a technology platform implemented in hardware and / or software that automates the process of allocating digital components for presentation with resources and / or applications. DSP 150 may interact with multiple SSPs 170 on behalf of digital component providers 160 to provide digital components for presentation with resources and / or applications of multiple different publishers 140. In general, DSP 150 may receive a request for a digital component (e.g., directly or through an exchange from SSP 170), generate (or select) selection parameters for one or more digital components created by one or more digital component providers based on the request, and provide data related to the digital component (e.g., the digital component itself) and the selection parameters to SSP 170.
[0033] The way SSP 170 selects digital components and the way DSP 150 allocates digital components (e.g., generating selection parameters and / or the selection parameters themselves) typically includes confidential information that should not be shared with other parties. The techniques described in this document protect this information from being shared or disclosed to other parties.
[0034] In some cases, it is beneficial for a user to receive digital components related to a web page, application page, or other electronic resource that the user has previously visited and / or interacted with. In order to assign such digital components to a user, when a user visits a particular resource or performs a particular action on a resource (e.g., interacts with a particular item presented on a web page or adds the item to a virtual shopping cart), the user can be assigned to a user group. The user group can be generated by the digital component provider 160. That is, when a user visits the electronic resources of the digital component provider 160, each digital component provider 160 can assign the user to their user group.
[0035] To protect user privacy, a user's group membership may be maintained on the user's client device 110, such as by one of the applications 112, rather than by the digital component provider or other party. In a specific example, a web browser may maintain a list of user group identifiers ("user group list") for a user using the web browser. The user group list may include a group identifier for each user group to which the user has been added. Digital component providers 160 that create user groups may specify user group identifiers for their user groups. The user group identifier for a user group may describe the group (e.g., a gardening group group) or a code (e.g., a non-descriptive alphanumeric sequence) that represents the group. The user group list for a user may be stored in a secure storage device of the client device 110, and / or may be encrypted when stored.
[0036] When the application 112 presents a resource or application content related to the digital component provider 160 or a web page on the website 142, the resource may request the application 112 to add one or more user group identifiers to the user group list. In response, the application 112 may add the one or more user group identifiers to the user group list and securely store the user group list. As described in more detail below, the application 112 may send the user group identifiers in the user group list along with a request for content, e.g., a request for one or more digital components, to the MPC cluster 130. Instead of sending a plaintext value of the user group identifier, the application 112 may encrypt the user group identifier and send the encrypted user group identifier to the MPC cluster 130 so that an unintended recipient of the user group identifier cannot access the plaintext value of the user group identifier.
[0037] The MPC cluster 130 includes a plurality of computing systems that perform a multi-party computing process to select digital components based on one or more user group identifiers and additional information. In this example, the MPC cluster 130 includes a first computing system S1 and a second computing system S2. The computing systems S1 and S2 may be owned and operated by the same party (e.g., a browser developer, an application developer, or an industry group) or different parties (e.g., one party is operated by a browser developer and the other party is operated by an industry group). Other numbers of computing systems may also be used as long as the number is greater than 1.
[0038] Using MPC to select digital components based on a user's group identifier protects the user's privacy by preventing any party (including the party operating the computing system of the MPC cluster 130) from determining to which group the user belongs, thereby protecting the user's personal information. The MPC process along with the k-anonymity technique also prevents other parties from accessing confidential information of the SSP 170 and DSP 150. The k-anonymity technique can also prevent the DSP 150 and / or digital component provider 160 from micro-targeting specific client devices 110, for example, by using the user's specific user information to select digital components for the user. Figure 2 and Figure 3 An example process for selecting and distributing content using MPC, k-anonymity techniques, and other encryption techniques is shown in FIG.
[0039] In some implementations, the application 112 may provide a user interface that enables a user to manage the user groups to which the user is assigned. For example, the user interface may enable a user to remove a user group identifier, prevent all or specific resources, publishers, digital component providers, digital component switches, and / or DSPs 150 from adding a user to a user group (e.g., prevent an entity from adding a user group identifier to a list of user group identifiers maintained by the application 112). This provides greater transparency and control to the user.
[0040] Figure 2 is a swim lane diagram illustrating an example process 200 for selecting and providing content to a client device 110. The operations of process 200 may be implemented, for example, by a client device 110, an MPC cluster 130, one or more DSPs 150, and an SSP 170. The operations of process 200 may also 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 cause the one or more data processing devices to perform the operations of process 200.
[0041] In this example, SSP 170 is an SSP used by a particular publisher to manage the process of obtaining digital parts for digital part slots of its resources and / or applications, and client device 110 requests content in response to an application of client device 110 loading an electronic resource (e.g., a web page or a local application) of the publisher. SSP 170 may review the digital part before enabling it to be provided for presentation with the electronic resource of the publisher for which SSP 170 obtained the digital part. For example, SSP 170 may review the content and format of the digital part to ensure that it meets various standards, such as not including specific types of content, meeting data and / or display size requirements, etc.
[0042] If the SSP 170 approves the digital component, the SSP 170 may generate a signed creative element for the digital component. The signed creative element may include a collection of content and a digital signature generated based on the collection of content. For example, the collection of content may include a creative snippet, a digital component provider identifier that uniquely identifies a digital component provider that created and / or published the digital component (this allows the SSP 170 to determine the corresponding DSP 150 of the digital component), creative metadata, a resource locator of the SSP 170, and / or an expiration date of the digital signature (e.g., requiring the DSP to periodically resubmit the digital component for revalidation).
[0043] The creative snippet may include the digital component itself (or a resource locator or a link to a server from which the digital component may be downloaded). The creative snippet may also include computer executable code for rendering the digital component, such as a script that downloads the digital component from a server and presents the digital component in a digital component slot. The creative snippet may also include computer executable code for transmitting information about the presentation of the digital component to an aggregation server, such as a script that causes a client device to transmit information to an aggregation server.
[0044] The resource locator of SSP 170 may be an eTLD+1 of the domain of SSP 170. An eTLD+1 is a valid top-level domain name (eTLD) plus one more label than the public suffix. An example eTLD+1 is "example.com", where ".com" is the top-level domain name.
[0045] The metadata may include a collection of attributes that enable the SSP 170 to enforce publisher-defined exclusions on digital components. For example, a publisher may not allow digital components with specific attributes (e.g., having content associated with a specific category) to be presented with its resources. The metadata may include a list of prohibited categories, themes, or other attributes of digital components that are prohibited by the publisher. In some embodiments, the SSP 170 may encrypt each attribute and include each encrypted attribute in a signed creative element. For example, the SSP 170 may encrypt each attribute using an asymmetric public key of the SSP 170. In this way, only the SSP 170 can access the plaintext value of each attribute using an asymmetric private key corresponding to the public key. As described below, the MPC cluster 130 may use attributes (e.g., in encrypted form) to exclude digital components of a publisher. If the attributes are encrypted, the MPC cluster 130 can still perform exclusions, but it is impossible to determine which attributes the publisher has excluded, thereby protecting the publisher's confidential information.
[0046] The SSP 170 may create a digital signature by signing a collection of content using the asymmetric private key of the SSP 170. A recipient of the signed creative element may verify the digital signature using the asymmetric public key corresponding to the private key used to generate the signature. If any data block in the collection of content changes after the digital signature is generated, verification of the digital signature will fail. The SSP 170 may send the signed creative element for each digital component to the DSP 150 of the digital component provider 160 that created / published the digital component.
[0047] The client device 110 transmits a content request based on a user group to the MPC cluster 130 (202). For example, a web browser running on the client device 110 can load a resource of a publisher having one or more digital component slots. In another example, a user can launch a local application of the publisher, and the content of the application can include one or more digital component slots. The application 112 including the digital component slot can transmit a content request based on the user group.
[0048] In this example process 200, the application 112 may transmit two separate content requests. The application 112 may first transmit a user group-based content request to request digital components based on one or more user groups to which the user of the client device 110 is assigned. The application 112 may then send a contextual content request that requests digital components based on additional contextual information and, if one digital component is obtained using the user group-based content request, requests one or more digital components selected based on one or more user groups. This enables the contextual content selection process to include digital components selected based on one or more user groups while maintaining the confidentiality of the user groups to which the user is assigned and the confidentiality of the information of the DSP used to select the digital components.
[0049] The user group based content request may include some contextual signals, but less than the contextual content request described below. For example, the user group content request may include a resource locator of a resource, such as a uniform resource locator (URL) of a web page or a uniform resource identifier (URI) of application content. The user group content request may also include a language (e.g., the language of the content rendered by the application rendering the content) and / or coarse geolocation information indicating a coarse location of the client device 110.
[0050] The user group-based content request may also include a user group identifier of the user group to which the user of the client device 110 is assigned. As described in more detail below, the user group-based content request may include an encrypted user group identifier and a signed redemption record (SRR) to protect user privacy and prevent fraud. The SRR indicates that the client device has been evaluated by the trust token issuer and determined to be trustworthy.
[0051] The MPC cluster 130 receives the user group-based content request and transmits the corresponding user group-based content request to one or more DSPs 150 (204). After receiving the user group-based content request, the MPC cluster 130 may verify the SRR. The MPC cluster 130 may also implement k-anonymity on various information included in the request and perform an MPC process, which includes transmitting the user group-based request to the DSP 150, receiving selection parameters from the DSP 150 (206), and selecting content (e.g., one or more digital components) based on the selection parameters (208). Figure 3 These operations are described in more detail.
[0052] The MPC cluster 130 transmits a user group content response of the selected content to the application 112 (210). The MPC cluster 130 may select a digital component and transmit a user group content response to the application 112, the user group content response including at least a creative element of the signature of the selected digital component. The digital component may also be referred to as a user group-based digital component because the digital component is selected based on the user's user group membership.
[0053] In some embodiments, the user group content response includes a collection of content, the collection of content including a signed creative element of a user group-based digital component, a publisher return identifier, a selection parameter identifier (described below), a digital component provider identifier that uniquely identifies a digital component provider that creates / publishes the user group-based digital component, and / or a timestamp indicating the time when the content selection process was performed to select the user group-based digital component (which may be a high-resolution timestamp at a millisecond level or finer granularity). The user group content response may also include a digital signature generated by computing system S1 of MPC cluster 130 on a cryptographic hash (e.g., SHA256) of the signed creative element, a resource locator of a resource that will render the digital component, a publisher return identifier, a selection parameter identifier, a digital component identifier, and a timestamp. Computing system S1 may generate the digital signature using a private key of computing system S1.
[0054] Generating a digital signature of a cryptographic hash of the signed creative element, rather than the signed creative element itself, reduces the size of the data required to verify the signature and the processing power (e.g., number of CPU cycles) required to verify the digital signature. The reduced data size can increase data transfer speeds, reduce bandwidth consumption, and reduce data storage requirements. If the digital signature is on the entire creative element, a recipient who wants to verify the signature must somehow receive the creative element in its entirety, which is much larger than a cryptographic hash of the creative element.
[0055] The timestamp is used as a unique identifier for the selection process, and the digital signature can be used to prevent fraud. The combination of the unique identifier of the selection process and the digital signature prevents a compromised / malicious application (e.g., a browser) or script from committing fraud by forging selection parameters or launching a replay attack (e.g., denial of service) using a collection of the same content. For example, the client device 110 (or SSP, or audit process) can verify the digital signature using the public key of the computing system S1, which corresponds to the private key of the computing system S1 used to sign the content. If the verification of the signature fails, the signed content has been modified. In addition, if multiple user content responses with the same timestamp are received, the client device 110 (of the SSP or audit process) can detect a replay attack. In addition, including the resource locator of the resource in the collection of digitally signed content binds the user group content response to this specific presentation of the resource.
[0056] The publisher return identifier is an identifier that represents the amount (e.g., but not the amount itself) that the publisher will receive from the digital component provider for the digital component rendered by the publisher's resources. However, the publisher return identifier is meaningless to entities other than the publisher and its SSP 170.
[0057] Application 112 transmits a context content request to SSP 170 (212). The context content request may include at least a portion of the information in the user group content response and the context data. For example, the context content request may include a publisher return identifier and / or a digital component provider identifier from the user group content response. The publisher return identifier enables SSP 170 to include the digital component selected by MPC cluster 130 in a context content selection process that selects the digital component for presentation with the publisher's resources based on the complete set of context data.
[0058] The context data of the context content request may include the same context data as the user group-based content request as well as additional context data, such as the number of digital component slots included in the resource, the location of the digital component slots within the resource, the size of the digital component slots, the type of the digital component slots, etc.
[0059] The SSP 170 sends contextual content requests (214) to one or more DSPs 150. These contextual content requests may include the contextual data of the contextual content requests received from the applications 112, but not include information from the user group content responses included in the contextual content requests.
[0060] Each DSP 150 may transmit the selection parameters to the SSP 170 (216). For example, each DSP 150 may select one or more digital components based on the context data on behalf of the digital component providers represented by the DSP 150. For each digital component, the DSP 150 may also generate or select the selection parameters for the digital component. The DSP 150 may then transmit the selection parameters and data for the digital component (e.g., the creative elements of the signature, the digital component itself, or a resource locator for the digital component) to the SSP 170.
[0061] The SSP 170 selects content based at least in part on the selection parameters received from the DSP 150 and the publisher return identifier of the digital component selected by the MPC cluster 130. The SSP 170 can determine the size of the selection parameters for the content request based on the user group. For example, the SSP 170 can include a lookup table or other appropriate data structure that maps (e.g., links, indexes, or otherwise associates) the publisher's selection parameter identifier to the selection parameter. The lookup table can include an array (e.g., a column) of selection parameter identifiers, and for each selection parameter identifier, a corresponding selection parameter. The selection parameter can be quantized. For example, each selection parameter identifier can correspond to a range of selection parameter values.
[0062] The SSP 170 may select the digital component having the highest selection parameter identifier from among the selection parameter identifiers of the digital components based on the user group and the selection parameter identifiers received from the DSP 150. In some embodiments, as described in more detail below, the selection parameter identifier represents a post-share quantity that the publisher will receive after assigning shares to the SSP 170 and / or DSP 150. In this example, the SSP 170 may also determine a post-share quantity for the selection parameter received from the DSP 150 and select the digital component having the highest post-share quantity.
[0063] SSP 170 may then transmit the selected digital component and / or the creative snippet of the selected digital component to client device 110 (220). In turn, application 112 may render the selected digital component using the publisher's resources (222).
[0064] As described above, the context content request may include a publisher return identifier and / or a digital component provider identifier from a user group content response. This may simplify adoption of this approach, increase the speed of adoption of this approach, and simplify adoption of this approach by existing SSPs that select digital components for presentation based on conventional context content requests without requiring the user group-based techniques described in this document. If the context content request includes a publisher return identifier but does not include a digital component provider identifier, then when a user group-based digital component is selected, the SSP 170 may be modified to include a placeholder (e.g., a fictitious) DSP as the DSP for the user group-based digital component. In this example, upon receiving an aggregate value (e.g., presentation of a DSP-based digital component) to be requested from the DSP from the aggregation system (e.g., from the aggregation system's application programming interface (API)), the SSP 170 may replace the quantity to be requested for the virtual DSP with the quantity reported by the aggregation system. If the context content request includes a digital component provider identifier, the SSP 170 may not need to be modified at all.
[0065] In some embodiments, the creative snippet may cause the application 112 to transmit a report to the aggregation server reporting the presentation of the digital component of the user group-based digital component. The report may include at least a portion of the user group content response of the digital component received from the MPC cluster 130. For example, the report may include a publisher return identifier, a selection parameter identifier, a digital component provider identifier that uniquely identifies the digital component provider that created / published the user group-based digital component, a timestamp indicating the time when the content selection process was performed to select the user group-based digital component, and a digital signature generated by the computing system S1.
[0066] Figure 3 is a swim lane diagram illustrating an example process 300 for selecting content. The operations of process 300 may be implemented, for example, by client device 110, computing systems S1 and S2 of MPC cluster 130, one or more DSPs 150, and one or more DSPs 150. The operations of process 300 may also be implemented as instructions stored on one or more computer-readable media, which may be non-transitory, and the execution of the instructions by one or more data processing devices may cause the one or more data processing devices to perform the operations of process 300.
[0067] The client device 110 transmits a content request based on a user group to the computing system S1 (302). Figure 2As described in operation 202 of , the client device 110 can transmit two different content requests, a content request based on a user group and a contextual content request, in order to select one or more digital components to be provided to the client device. In this example, the application 112 running on the client device 110 can transmit a content request based on a user group to the computing system S1.
[0068] The user group-based content request may include some contextual signals, such as a resource locator of a resource, such as a URL or URI, a language (e.g., the language in which the content is presented by an application that renders the content), and / or coarse geolocation information indicating a coarse location of the client device 110.
[0069] The user group-based content request may also include a user group identifier of the user group to which the user of the client device 110 is assigned. The user group identifiers may all be sent in one request, for example, rather than sending a separate request for each user group identifier. The application 112 may encrypt each user group identifier and include the encrypted user group identifier in the user group-based content request.
[0070] In some embodiments, the client device 110 encrypts each user group identifier using a public key of the computing system S2 of the MPC cluster 130. A probabilistic public key encryption scheme may be used to encrypt each user group identifier. The probabilistic nature of such an encryption scheme provides semantic security, where the encryption scheme encrypts the same plaintext (e.g., user group identifier) into different ciphertexts when the encryption scheme is repeatedly called with the same public key. Examples of probabilistic encryption schemes that may be used for encrypted user group identifiers are elliptic curve P-256 and elliptic curve P25519.
[0071] For each user group identifier, the application 112 may generate a composite message and encrypt the composite message using a probabilistic public key-based encryption algorithm and a public key of the computing system S2. The composite message for the user group identifier may include the user group identifier, an application public key (e.g., a public key of the application 112 that sends the user group-based content request, corresponding to an application private key maintained confidentially by the application 112), the SRR of the user group identifier, and a digital signature. The application 112 may generate a digital signature based on the other contents of the composite message, such as by signing the user group identifier, the application public key, and the SRR using the application private key.
[0072] Application 112 may then encrypt the composite message for each user group identifier using the encryption key of computing system S2. The encryption process may include applying a probabilistic asymmetric key algorithm to the composite message using the public key of computing system S2. Encrypting each user group identifier using the key of computing system S2 prevents computing system S1, which receives a user group-based content request, from combining the user group identifier with a context signal included in the user group-based content request.
[0073] The digital signature enables computing system S2 to detect fraud. For example, if verification of the digital signature fails, the contents of the composite message have been modified after the digital signature was generated.
[0074] The SRRs also enable the computing system S2 to detect fraud, such as user group membership fraud. Each composite message may include a different SRR obtained for its user group identifier. That is, a user group-based content request may include a corresponding SRR for each user group identifier to which the user is assigned. Each composite message may also include a different application public key, which is used to obtain the SRR for the user group identifier. This prevents the computing system S2 from inferring that a set of user group identifiers are from the same application 112, protecting user privacy by not enabling the computing system S2 to associate all user groups to which the user belongs.
[0075] Each SRR may include: an issuer origin (e.g., the eTLD+1 domain of computing system S2); a binding; the eTLD+1 of the trust token issuer that issued the trust token that was redeemed to obtain the SRR; a redemption timestamp indicating the time when the trust token was redeemed; and a digital signature signed by the trust token issuer. The signature enables the recipient to verify that the trust token issuer evaluated the client device and deemed the device to be trustworthy, and that the contents of the SRR have not been modified. The trust token issuer can generate the digital signature using a private key and the other contents of the SRR.
[0076] The binding may bind the SRR to the user group identifier and the application public key of the user group identifier. This prevents the SRR from being used by other applications (e.g., on other devices) or for other group identifiers. In some embodiments, the binding is a cryptographic hash of the user group identifier and the application public key of the user group identifier. In some embodiments, the binding is a hash-based message authentication code (HMAC) of the user group identifier and the application public key of the user group identifier.
[0077] The application 112 may request an SRR for each user group identifier from a trust token issuer. The trust token issuer may issue a trust token based on the trustworthiness of the client device 110 and / or the application 112. For each user group identifier, the request may include a corresponding trust token and an encrypted hash (or HMAC) of a public key and the user group identifier. In some embodiments, the application 112 generates a cryptographic hash for each user group identifier using a cryptographic function. For example, the application 112 may generate an HMAC of the user group identifier and its corresponding application public key for the user group identifier.
[0078] By sending a cryptographic hash (e.g., an HMAC in some implementations) rather than a user group identifier to the trust token issuer, the user group to which the user is assigned is not disclosed to the trust token issuer. The trust token issuer can generate an SRR for each user group identifier, including generating a digital signature using the trust token issuer's private key. This enables the recipient of the SRR to detect whether the contents of the SRR have been altered by attempting to verify the digital signature using the public key corresponding to the trust token issuer's private key.
[0079] In order to prevent the computing system S1 from knowing the number of user groups to which the user of the client device 110 is assigned, the application 112 transmitting the request may encrypt a pseudo user group identifier and insert the encrypted pseudo user group identifier into the content request based on the user group. For example, the application 112 may insert an arbitrary or periodically changing number of encrypted pseudo user group identifiers into the content request based on the user group. Each pseudo user group identifier may be encrypted using the public key of the computing system S2 of the MPC cluster 130. The pseudo user group identifier may have a common value, such as a zero value or some other constant.
[0080] Generating user group content requests in this manner prevents computing system S1 from associating each user's user group identifier (via the encrypted user group identifier) and learning the number of user groups to which each user is assigned (using the pseudo identifier). Because MPC cluster 130 may receive many requests from many different client devices, these techniques may prevent computing systems S1 and S2 from learning the user group membership of each of the users.
[0081] The user group content request may also include an SRR for the request itself, e.g., to supplement the encrypted SRR for each user group identifier. This enables computing system S1 to verify that the user group content request was sent by a trusted client device. After receiving the user group content request from application 112, computing system S1 may verify the SRR. For example, computing system S1 may verify the signature of the SRR using the public key of the trust token issuer and thereby ensure that the contents of the SRR have not been modified since the signature was generated. Computing system S1 may also ensure that the redemption timestamp is recent, e.g., within a threshold amount of time of the time when the user group-based content request was received.
[0082] The computing system S1 applies k-anonymity to context signals included in the user group-based content requests (304). The k-anonymity technique can be used to ensure that the context signal group for each user for which the application sends the user group-based content request is shared among at least K users, and therefore cannot uniquely identify a single user or a small group of users. When applying k-anonymity to the context signals, the computing system S1 can use context signals received from multiple client device groups over a period of time, such as the day, week, month, etc., such as from many different users from which the user group content requests were received.
[0083] The computing system S1 may use a cryptographic hash included in each SRR (e.g., a cryptographic hash of a user group identifier and an application public key) to determine the number of unique applications that sent a particular set of context signals. The computing system S1 may compare the number of unique applications to an anonymity threshold and determine that the set of context signals satisfies k-anonymity if the number meets or exceeds the anonymity threshold. If the set of context signals does not satisfy k-anonymity, for example because the number of unique applications is less than the anonymity threshold, the computing system S1 may respond to the user group-based content request without digital components. The anonymity threshold may be based on a parameter k of the target k-anonymity.
[0084] In another example, computing system S1 may apply k-anonymity to each context signal included in a content request based on a user group. For example, computing system S1 may compare the number of unique applications from which individual context signals are received to an anonymity threshold. If the number of unique applications meets or exceeds the anonymity threshold, the individual context signal satisfies k-anonymity. Computing system S1 may ignore (e.g., delete) context signals that do not satisfy k-anonymity, but continue to process context signals that satisfy k-anonymity.
[0085] Computing system S1 creates a unique request identifier for a user group-based content request received from application 112. The request identifier may be a composite message that includes a nonce (e.g., an arbitrary, pseudo-random, or random number) and a resource locator of a resource that will present the selected content. For example, the request identifier may include a nonce and a domain (e.g., example.com), URL, or URI of the resource. This enables computing system S1 to associate a selection parameter identifier received from computing system S2 and use the selection parameter identifier to select a digital component to return to application 112, as described below.
[0086] Computing system S1 may send a corresponding request to computing system S2 for each user group identifier received from application 112 (e.g., each encrypted composite message received from application 112, because computing system S1 does not have access to the plaintext user group identifier) (308). Before generating the request, computing system S1 may encrypt the request identifier and context signal received in the user group-based content request received from application 112 using a secret key owned by computing system S1. The encryption of the request identifier may use a probabilistic symmetric encryption algorithm on the plaintext of the request identifier using the key. Similarly, the encryption of the context signal may use a probabilistic symmetric encryption algorithm on the plaintext of the context signal using the key. Each request may include an encrypted request identifier of the user group identifier, an encrypted context signal, and an encrypted composite message.
[0087] By sending one request for each user group identifier, computing system S2 cannot infer which user group identifiers are from the same application 112 or the same client device 110. For example, computing system S1 may send requests for many different client devices to computing system S2 at the same time or within a short period of time (e.g., within seconds, milliseconds, or minutes). Since many different requests are sent for many different client devices and each request is for one user group identifier, computing system S2 will not be able to associate the user group identifier of a particular client device.
[0088] Computing system S2 performs k-anonymization on the user group identifier ( 310 ). Computing system S2 can perform k-anonymization on the user group identifier received from application 112 in the user group-based content request so that uncommon user group identifiers cannot be associated with users of client device 110 .
[0089] To implement k-anonymity for the user group identifier, the computing system S2 decrypts the composite message of each request using its private key corresponding to the public key used to encrypt the composite message. As described above, the composite message of the user group identifier may include the user group identifier, the application public key (e.g., the public key of the application 112 that sends the user group-based content request, corresponding to the application private key maintained confidentially by the application 112), the SRR of the user group identifier, and the digital signature.
[0090] Computing system S2 may then verify the composite message. This may include multiple verifications. Computing system S2 may attempt to verify the digital signature using the application public key to ensure that other contents of the composite message have not been modified. Computing system S2 may attempt to verify the freshness of the SRR, such as by ensuring that the time represented by the timestamp of the SRR is within a threshold amount of time of the current time at which the verification is performed. Computing system S2 may attempt to verify the digital signature of the SRR using the public key of the trust token issuer to ensure that the contents of the SRR have not been modified. Computing system S2 may attempt to verify the publisher origin of the SRR to ensure that the publisher origin of the SRR matches the eTLD+1 of computing system S2. Computing system S2 may attempt to verify the binding value, such as by ensuring that the binding value of the SRR is a cryptographic hash of the user group identifier and the application public key. For example, computing system S2 may recalculate the cryptographic hash using the same cryptographic function and key and compare the hash to the binding value.
[0091] These verifications can be used to detect potential untrusted applications, such as application 112 or untrusted computing system S1. If all verifications are successful, computing system S2 can implement k-anonymity for the user group identifier. To determine whether an individual user group identifier satisfies k-anonymity, computing system S1 can compare the number of requests that include the user group identifier - for example, the number of applications that have sent requests that include the user group identifier - to an anonymity threshold. If the number of requests meets or exceeds the anonymity threshold, computing system S1 can determine that the user group identifier satisfies k-anonymity. If the user group identifier is forged (e.g., a pseudo-identifier sent by application 112) or does not satisfy k-anonymity, computing system S2 can ignore the request and not send a return request for the user group identifier to computing system S1.
[0092] For a user group identifier that is not forged and is k-anonymous, computing system S2 transmits a return request to computing system S1 (312). The return request for the user group identifier may include the encrypted context signal received for the user group identifier (e.g., the context signal encrypted using the key of computing system S1 received in the request sent to computing system S2), the twice-encrypted request identifier, and the decrypted user group identifier. That is, when the user group identifier of the encrypted composite message received in the request received from computing system S1 is k-anonymous and not forged, computing system S2 may encrypt the already encrypted request identifier (encrypted using the secret key of computing system S1) using the secret key of computing system S2 (which may also be probabilistic symmetric key encryption). Computing system S2 may then generate and transmit a return request that includes the twice-encrypted request identifier, the encrypted context signal received in the request, and the plaintext value of the user group identifier (which is received in encrypted form together with the request from computing system S1).
[0093] The computing system S1 applies the DSP / digital component provider exclusion to each return request (314). The computing system S1 can decrypt the encrypted context signals using its secret key to recover the context signals in plain text. These context signals can include the domain, URL, or URI of the publisher's resource where the selected content will be presented. The computing system S1 can compare this information with a lookup table that maps the domain, URL, or URI to DSPs and / or digital component providers that are qualified to provide digital components to be presented with the publisher's resources. The publisher's SSP 170 can upload the lookup table to the computing system S1. This enables the computing system S1 to implement a DSP filter, which can significantly reduce the number of requests sent to the DSP's computer, such as the number of queries per second, and will therefore reduce network usage and the burden of the DSP's computer service requests.
[0094] In some embodiments, the user group identifier may encode sufficient information to specify the set of DSPs and / or digital component providers intended by the user group identifier. The computing system S1 may determine the union of the set of DSPs and / or digital component providers specified by the user group identifier and the set of DSPs and / or digital components that survived the lookup table filtering.
[0095] The computing system S1 generates and transmits a user group-based content selection parameter request to one or more DSPs 150 (316). For each return request received from the computing system S2, the computing system S1 may send a user group-based content request to each DSP in the union of the two sets, including the DSP of each digital component provider in the union of the two sets. Each of these selection parameter requests may include a twice-encrypted user group identifier of the return request, the user group identifier of the return request, and a context signal in plain text corresponding to the return request. Thus, for a user group-based content request received from the client device 110, the computing system S1 may send a corresponding selection parameter request for each user group identifier of the user group-based content request that satisfies k-anonymity to each of the one or more DSPs 150.
[0096] Each DSP 150 may transmit the selection parameters to the computing system S2 (318). For example, each DSP 150 may select one or more digital components based on the user group identifier and / or the context data on behalf of the digital component provider represented by the DSP 150. For each digital component, the DSP 150 may also generate or select the selection parameters for the digital component based on the user group identifier and / or the context data.
[0097] DSP 150 may then generate a selection parameter response that includes the secondary encryption request identifier received in the selection parameter request, the signature creative element of the selected digital component, the determined selection parameters, and a digital component provider identifier that uniquely identifies the digital component provider that created / published the selected digital component. DSP 150 may then transmit the selection parameter response to computing system S2.
[0098] The computing system S2 applies k-anonymity to the selection parameters received from the DSP 150 (320). In some embodiments, the MPC cluster 130 uses multiple lookup tables to implement k-anonymity and maintain confidentiality of the pre-sharing selection parameters and post-sharing selection parameters and sharing amounts assigned to the SSP 170. The selection parameters received from the DSP 150 may be pre-shared selection parameters. For example, the publisher's SSP 170 may upload a first lookup table (Table 1) that includes selection parameter boundaries and corresponding selection parameter identifiers.
[0099]
[0100] Table 1
[0101] In the table, bounds defines the boundaries of each range. If the selection parameter is within a particular range, the computing system S2 assigns a selection parameter identifier of the range to the selection parameter.
[0102] The selection parameter identifiers do not have any semantic meaning other than any unique identifier for a particular selection parameter range, which is known only to the SSP 170 and the computing system S2. The computing system S2 may access the lookup table and identify the selection parameter identifiers corresponding to the selection parameters received from the DSP 150. The computing system S2 may identify the selection parameter identifier for each selection parameter received from the DSP 150 in the selection parameter response.
[0103] The computing system S2 may then implement k-anonymity on one or more of the signed creative elements in the selection parameter responses, the selection parameter identifiers, and the digital component provider identifiers. This k-anonymity technique may involve the selection parameter responses to user group-based content requests received by the MPC cluster 130 from many different client devices, including selection parameter responses generated based on user group-based content requests received from the client device 110. In order to determine whether an individual selection parameter satisfies k-anonymity, the computing system S2 may compare the number of selection parameter responses that include the individual selection parameter with an anonymity threshold. If the number meets or exceeds the anonymity threshold, the computing system S2 may determine that the selection parameter satisfies k-anonymity. The computing system S2 may ignore any selection parameter that does not satisfy k-anonymity.
[0104] For each selection parameter that satisfies k-anonymity, computing system S2 generates a selection parameter element and transmits it to computing system S1 (322). The selection parameter element for the selection parameter may include an encrypted request identifier corresponding to the selection parameter, a signed creative element corresponding to the selection parameter, a selection parameter identifier corresponding to the selection parameter, and / or a digital component provider that created / published a digital component corresponding to the selection parameter. For example, computing system S2 may decrypt the twice-encrypted request identifier using its secret key to recover the encrypted request identifier encrypted using the secret key of computing system S1.
[0105] Computing system S1 applies the creative exclusion to the selection parameter element (324). Computing system S1 can decrypt the request identifier of each selection parameter element using its secret key, thereby recovering each request identifier in plain text. As described above, each request identifier is a composite message that includes a random number and a resource locator of a resource that will render the selected content. The resource locator can be used to apply the creative exclusion.
[0106] As described above, a publisher may not allow digital components with certain attributes (e.g., having content associated with a certain category) to be presented with its assets. The publisher's SSP 170 may define a set of digital component attributes to support creative exclusion. Such attributes may be represented as a finite discrete set: P = {P1, P2, ..., Pn}. The SSP 170 may optionally encrypt these attributes using a deterministic symmetric encryption algorithm using the SSP's secret encryption key, similar to how attributes may be encrypted for inclusion in a signed creative element.
[0107] Computing system S1 may periodically obtain each publisher's attribute set from the publisher's SSP 170. SSP 170 may store each publisher's attribute set locally (eg, in a cache). For example, computing system S1 may maintain a data structure similar to Table 2 below.
[0108] Resource Locator Creative Exclusion example.com / mainpage <![CDATA[P1、P 41 、P 90 ]]> example.com / secondpage <![CDATA[P7]]>
[0109] Table 2
[0110] In this table, each attribute (e.g., P1, P 41 The attribute set in the Creative Exclusion column indicates the following attributes: if assigned to a digital component, it indicates that the digital component should not be provided for presentation with the resource corresponding to the resource locator.
[0111] To apply the creative exclusion to the selection parameter element, computing system S1 may obtain from the signed creative element a set of attributes included in the metadata of the signed creative element. Computing system S1 may then compute the intersection of the attribute set of the signed creative element and the attribute set of the creative exclusion for the resource locator defined as the request identifier included in the selection parameter element. If the intersection is empty, then the digital component of the signed creative element is eligible for presentation with the resource corresponding to the resource locator. Otherwise, computing system S1 may ignore the creative element and its selection parameter element.
[0112] Computing system S1 selects content to be provided to application 112 in response to the user group-based content request (326). The user group-based content request received from application 112 has a corresponding request identifier based on its random number and a resource locator of a resource for which content is selected. After applying creative exclusion to the selection parameter element with the request identifier, computing system S1 can collect a set of all selection parameter elements received with the request identifier. Computing system S1 can then select a digital component based on the selection parameter identifier included in the set of selection parameter elements.
[0113] In some embodiments, the publisher is assigned a portion of the selection parameters of the selected digital component, which is shared to the SSP 170 and / or DSP 150. The selection parameter can represent a monetary amount, and each share can be a portion of the monetary amount. The selection parameter identifier in the selection parameter element corresponds to the pre-shared selection parameter. The manner of determining the sharing is confidential information that should be protected. To this end, the computing system S1 can use two lookup tables, which prevents the computing system S1 from obtaining information about the manner of determining the sharing. In other embodiments, encryption techniques, such as homomorphic encryption, can be used for the selection parameters. However, this will result in significantly longer waiting times, computing resources (e.g., CPU cycles) required to encrypt and decrypt information, greater complexity in troubleshooting, and significantly reduced efficiency relative to the use of lookup tables.
[0114] The first lookup table (Table 3 below) may map resource locators to digital component identifiers and shared codes. SSP 170 may upload the lookup table to computing system S1. The shared code may not be meaningful to entities outside of SSP 170.
[0115] Resource Locator Digital Component Provider Identifier Shared Code example.com / mainpage 76 A739 example.com / secondpage 91 320od
[0116] Table 3
[0117] For user group based content requests, computing system S1 may look up the shared code of each signed creative element in the set of selection parameter elements. Computing system S1 may use the resource locator of the request identifier and the digital component identifier of the signed creative element to look up the shared code of the signed creative element.
[0118] Computing system S1 may then use a second lookup table (Table 4 below) to look up the selection parameter identifier for each signed creative element in the set of selection parameter elements. SSP 170 may also upload the lookup table to computing system S1.
[0119] The publisher returns an identifier Shared Code Select parameter identifier 1 1683b <![CDATA[Parameter_ID6 <!-- 15 -->]]> 2 38r4j <![CDATA[Parameter_ID1]]> … … m D2D <![CDATA[Parameter_ID 93 ]]>
[0120] Table 4
[0121] The publisher return identifier corresponds to the share of the selection parameter that the publisher will receive. The value of the publisher return identifier may be monotonic, i.e., the larger the publisher return identifier, the larger the amount that the publisher will receive.
[0122] Computing system S1 may use the shared code of the creative element (identified using Table 3) and the selection parameter identifier of the creative element to look up the publisher return identifier of each signed creative element in the set of selection parameter elements.
[0123] Among all eligible creative elements having the same request identifier—eg, each creative element in the set of selection parameter elements—computing system S1 selects the creative element corresponding to the signature of the largest publisher return identifier.
[0124] The computing system S1 transmits the user group content response to the application 112 (328). Figure 2 As described in operation 210 of , the user group content response may include a collection of content, the collection of content including the selected signed creative element, the publisher return identifier of the selected signed creative element, the digital component provider identifier of the digital component of the signed creative element, and a timestamp indicating the time when the content selection process was performed to select the signed creative element. The user group content response may also include a digital signature generated by the computing system S1. After receiving the user group content request, the application 112 may transmit a context content request to the SSP 170, and continue Figure 2 The process 200 is to select a final digital component for presentation with a resource.
[0125] Figure 4 4 is a block diagram of an example computer system 400 that can be used to perform the above operations. System 400 includes a processor 410, a memory 420, a storage device 430, and an input / output device 440. Each of components 410, 420, 430, and 440 can be interconnected, for example, using a system bus 450. Processor 410 is capable of processing instructions executed within system 400. In some embodiments, processor 410 is a single-threaded processor. In another embodiment, processor 410 is a multi-threaded processor. Processor 410 is capable of processing instructions stored in memory 420 or storage device 430.
[0126] Memory 420 stores information within system 400. In one embodiment, memory 420 is a computer readable medium. In some embodiments, memory 420 is a volatile memory unit. In another embodiment, memory 420 is a non-volatile memory unit.
[0127] The storage device 430 can provide mass storage for the system 400. In some embodiments, the storage device 430 is a computer-readable medium. In various embodiments, the storage device 430 may include, for example, a hard disk device, an optical disk device, a storage device shared by multiple computing devices over a network (e.g., a cloud storage device), or some other mass storage device.
[0128] Input / output device 440 provides input / output operation for system 400.In some embodiments, input / output device 440 can include one or more in network interface device, such as Ethernet card, serial communication device (such as, RS-232 port) and / or wireless interface device such as and 802.11 card.In another embodiment, input / output device can include the driver device that is configured to receive input data and send output data to external device 460---such as, keyboard, printer and display device.But, other embodiments can also be used, such as mobile computing device, mobile communication device, set-top box TV client device etc.
[0129] Although already Figure 4 An example processing system is described in the specification, but the subject matter and implementation of the functional operations described in this specification may be implemented in other types of digital electronic circuits, or in computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or a combination of one or more of them.
[0130] The embodiments of the subject matter and operations described in this specification may be implemented in digital electronic circuits, or in computer software, firmware or hardware, including the structures disclosed in this specification and their structural equivalents, or a combination of one or more of them. The embodiments of the subject matter described in this specification may be implemented as one or more computer programs, i.e., one or more modules of computer program instructions, which are encoded on a computer storage medium (or a single medium) for execution by a data processing device or for controlling the operation of a data processing device. Alternatively or additionally, program instructions may be encoded on an artificially generated propagation signal, such as a machine-generated electrical, optical or electromagnetic signal, which is generated to encode information for transmission to a suitable receiver device for execution by a data processing device. 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 of them. In addition, although a computer storage medium is not a propagation signal, a computer storage medium may be a source or destination of computer program instructions encoded in an artificially generated propagation signal. A computer storage medium may also be or be included in one or more separate physical components or media (e.g., multiple CDs, disks or other storage devices).
[0131] The operations described in this specification 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.
[0132] The term "data processing apparatus" encompasses all kinds of apparatus, devices and machines for processing data, including, for example, a programmable processor, a computer, a system on a chip, or a plurality or combination of the foregoing. The apparatus may include dedicated logic circuits, such as an FPGA (field programmable gate array) or an ASIC (application-specific integrated circuit). In addition to hardware, the apparatus may also include code that creates an execution environment for the computer program in question, such as code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more of them. The apparatus and execution environment may implement a variety of different computing model infrastructures, such as web services, distributed computing, and grid computing infrastructures.
[0133] A computer program (also referred to as a program, software, software application, script, or code) may be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and may be deployed in any form, including as a stand-alone program or a module, component, subroutine, object, or other unit suitable for a computing environment. A computer program may, but need not, correspond to a file in a file system. A program may be stored 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 the program in question, or in multiple collaborative files (e.g., files storing one or more modules, subroutines, or portions of code). A computer program may be deployed to execute on a single computer or on multiple computers located in one location or distributed in multiple locations and interconnected by a communications network.
[0134] The processes and logic flows described in this specification may be performed by one or more programmable processors executing one or more computer programs to perform actions by operating on input data and generating output. The processes and logic flows may also be performed by special purpose logic circuitry, and the apparatus may also be implemented as special purpose logic circuitry, such as an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
[0135] Processors suitable for executing computer programs include, for example, general-purpose microprocessors and special-purpose microprocessors. Typically, the processor will receive instructions and data from a read-only memory or a random access memory or both. The basic elements of a computer are a processor for performing actions according to instructions and one or more memory devices for storing instructions and data. Typically, a computer will also include or be operatively coupled to receive data from or transfer data to one or more large-capacity storage devices for storing data, such as disks, magneto-optical disks, or optical disks, or both. However, a computer does not need to have such devices. In addition, a computer may be embedded in another device, such as a mobile phone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a global positioning system (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive), etc. Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media, and memory devices, including, for example, semiconductor memory devices, such as EPROM, EEPROM, and flash memory devices; disks, such as internal hard disks or removable disks; magneto-optical disks; and DVD-ROM disks. The processor and memory may be supplemented or incorporated into them by dedicated logic circuits.
[0136] To provide interaction with a user, embodiments of the subject matter described in this specification may be implemented on a computer having a display device, such as a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user, and a keyboard and pointing device, such as a mouse or trackball, that the user can use to provide input to the computer. Other types of devices may also be used to provide interaction with the user; for example, the feedback provided to the user may be any form of sensory feedback, such as visual feedback, auditory feedback, or tactile feedback; and input from the user may be received in any form, including sound, voice, or tactile input. In addition, the computer may interact with the user by sending documents to and receiving documents from a device used by the user; for example, by sending a web page to a web browser on a user's client device in response to a request received from the web browser.
[0137] Embodiments of the subject matter described in this specification may be implemented in a computing system that includes a back-end component such as a data server, or includes a middleware component such as an application server, or includes a front-end component such as a client computer having a graphical user interface or a web browser through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more of the back-end components, middleware components, or front-end components. The components of the system may be interconnected by digital data communication in any form or medium, such as a communication network. Examples of communication networks include local area networks ("LANs") and wide area networks ("WANs"), interconnected networks (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).
[0138] A computing system may include a client and a server. The client and the server are usually remote from each other and usually interact through a communication network. The relationship between the client and the server is due to the computer programs running on the respective computers, and they have a client-server relationship with each other. In some embodiments, the server transmits data (e.g., an HTML page) to the client device (e.g., in order to display data to a user interacting with the client device and receive user input from it). Data generated at the client device (e.g., the result of the user interaction) can be received from the client device at the server.
[0139] Although this specification contains many specific implementation details, these should not be viewed as limitations on any invention or the scope of what may be claimed, but rather as descriptions of features specific to particular embodiments of particular inventions. Certain features described in this specification in the context of separate embodiments may also be implemented in combination in a single embodiment. Conversely, various features described in the context of a single embodiment may also be implemented in multiple embodiments, either individually or in any suitable sub-combination. Furthermore, although features may be described above as functioning in certain combinations, and even initially claimed as such, one or more features from a claimed combination may in some cases be deleted from that combination, and a claimed combination may be directed to a sub-combination or a variation of a sub-combination.
[0140] Similarly, although the operations are depicted in a particular order in the accompanying drawings, it should not be understood that such operations are required to be performed in the particular order shown or in a sequential order, or that all of the operations shown are required to be performed to achieve the desired result. In some cases, multitasking and parallel processing may be advantageous. In addition, the separation of various system components in the above-described embodiments should not be understood as requiring such separation in all embodiments, and it should be understood that the described program components and systems can generally be integrally formed in a single software product or packaged into multiple software products.
[0141] Thus, specific embodiments of the subject matter have been described. Other embodiments are within the scope of the following claims. In some cases, the actions described in the claims can be performed in a different order and still achieve the desired results. In addition, the processes depicted in the accompanying drawings do not necessarily require the specific order shown or the sequential order to achieve the desired results. In some embodiments, multitasking and parallel processing may be advantageous.
Claims
1. A method comprising: receiving, by the first MPC computing system, from a client device, a content request including a set of encrypted user group identifiers, wherein each encrypted user group identifier is encrypted using a first encryption key of a second MPC computing system; for each encrypted user group identifier, transmitting a request to the second MPC computing system, the request including the encrypted user group identifier; For each user group identifier that satisfies the k-anonymity process performed by the second MPC computing system: receiving, by the first MPC computing system from the second MPC computing system, a plain text value of the user group identifier; and Transmitting, by the first MPC computing system to one or more platforms, a selection parameter request including the plaintext value of the user group identifier; receiving, by the first MPC computing system from the second MPC computing system, a set of selection parameter elements, each of the set of selection parameter elements including a creative element corresponding to a digital component and a selection parameter identifier for the digital component; selecting, by the first MPC computing system, a given digital component based on the selection parameter identifier; and The creative elements of the digital components are transmitted by the first MPC computing system to the client device.
2. The method according to claim 1, wherein: The content request includes a resource locator of a resource for which a digital component is being requested, the method further comprising: generating, by the first MPC computing system, a request identifier based on the resource locator and a random number corresponding to the content request; and encrypting the request identifier by the first MPC computing system, The request includes the encrypted request identifier.
3. The method according to claim 2, wherein: Receiving the plaintext value of each user group identifier that satisfies the k-anonymity process includes: receiving a return request for each user group identifier that satisfies the k-anonymity process, each return request including the user group identifier and a secondary encrypted request identifier generated by the second MPC computing system by encrypting the encrypted request identifier using a second encryption key of the second MPC computing system; Each select parameter request includes the twice-encrypted request identifier; and Each selection parameter element includes the encrypted request identifier generated by the second MPC computing system by decrypting the twice encrypted request identifier after receiving the twice encrypted request and the creative element and the selection parameter identifier of the selection parameter element from a platform.
4. The method according to claim 3, wherein: The second MPC computing system: receiving a selection parameter response from each of the one or more platforms, the selection parameter response comprising the secondary encrypted request identifier, a respective creative element of a respective digital component, selection parameters for the respective digital component, and a digital component provider identifier that published the respective digital component; identifying, for each selection parameter response, a corresponding selection parameter identifier based on a range of selection parameter values for the selection parameter including the selection parameter; as well as The selection parameter element is generated based on the selection parameter response and the selection parameter identifier.
5. The method according to claim 1, wherein: For each user group identifier, the content request includes an encrypted composite message, the encrypted composite message including: an encrypted version of the composite message, the encrypted version of the composite message including the user group identifier; an application public key for an application on the client device that initiates the content request; and a signed redemption record, the signed redemption record being issued by a trust token issuer in response to determining that the client device is trustworthy.
6. The method according to claim 1, wherein: The content request includes a context signal, and the method further includes: Determining that the context signal satisfies k-anonymity; and In response to determining that the context signal satisfies k-anonymity: Encrypting the context signal by the first MPC computing system; and Each context signal that satisfies k-anonymity is included in the request.
7. The method according to claim 1, further comprising: identifying in each creative element a first set of attributes of the corresponding digital component; as well as identifying in the lookup table a second set of exclusion attributes that are excluded by a publisher of the resource for which the digital component is being requested; Wherein, selecting, by the first MPC computing system, a given digital component based on the selection parameter comprises: For each creative element, determining whether one or more attributes in the first set of attributes of the creative element match an exclusion attribute; and Every creative element that has at least one attribute that matches the excluded attribute is excluded.
8. The method according to claim 1, wherein: Selecting, by the first MPC computing system, a given digital component based on the selection parameter identifier includes: For each select parameter element: identifying, in a first lookup table, a shared code of the creative element of the selection parameter element based on a resource locator of a resource and a digital component identifier of a digital component provider that published the corresponding digital component of the creative element; and identifying, in a second lookup table, a publisher return identifier based on the shared code and the selection parameter identifier of the selection parameter element; and The digital component of a given selection parameter element having the highest publisher return identifier is selected as the given digital component.
9. The method according to claim 8, wherein: Transmitting the creative element of the digital component to the client device by the first MPC computing system includes transmitting a content request result, the content request result including the creative element, the publisher return identifier of the given selection parameter element, the digital component provider identifier of the given digital component, a timestamp indicating the time when the given digital component was selected, and a digital signature.
10. The method according to claim 9, wherein: The client device transmits a second content request to the second platform; The second content request result includes the content result request and an additional context signal; and The second platform selects a second digital component from among a set of digital components to present at the client device, the set of digital components comprising the given digital component and one or more digital components selected based on the additional context signal.
11. A system comprising: one or more processors; as well as one or more storage devices storing instructions that, when executed by the one or more processors, cause the one or more processors to perform operations comprising: receiving, by the first MPC computing system from a client device, a content request including a set of encrypted user group identifiers, wherein each encrypted user group identifier is encrypted using a first encryption key of a second MPC computing system; for each encrypted user group identifier, transmitting a request to the second MPC computing system, the request including the encrypted user group identifier; For each user group identifier that satisfies the k-anonymity process performed by the second MPC computing system: receiving, by the first MPC computing system from the second MPC computing system, a plain text value of the user group identifier; and Transmitting, by the first MPC computing system to one or more platforms, a selection parameter request including the plaintext value of the user group identifier; receiving, by the first MPC computing system from the second MPC computing system, a set of selection parameter elements, each of the set of selection parameter elements including a creative element corresponding to a digital component and a selection parameter identifier for the digital component; selecting, by the first MPC computing system, a given digital component based on the selection parameter identifier; and The creative elements of the digital components are transmitted by the first MPC computing system to the client device.
12. The system according to claim 11, wherein: The content request includes a resource locator of a resource for which a digital component is being requested, and the operations include: generating, by the first MPC computing system, a request identifier based on the resource locator and a random number corresponding to the content request; and encrypting the request identifier by the first MPC computing system, The request includes the encrypted request identifier.
13. The system of claim 12, wherein: Receiving the plaintext value of each user group identifier that satisfies the k-anonymity process includes: receiving a return request for each user group identifier that satisfies the k-anonymity process, each return request including the user group identifier and a secondary encrypted request identifier generated by the second MPC computing system by encrypting the encrypted request identifier using a second encryption key of the second MPC computing system; Each select parameter request includes the twice-encrypted request identifier; and Each selection parameter element includes the encrypted request identifier generated by the second MPC computing system by decrypting the twice encrypted request identifier after receiving the twice encrypted request and the creative element and the selection parameter identifier of the selection parameter element from a platform.
14. The system according to claim 13, wherein: The second MPC computing system: receiving a selection parameter response from each of the one or more platforms, the selection parameter response comprising the secondary encrypted request identifier, a respective creative element of a respective digital component, selection parameters for the respective digital component, and a digital component provider identifier that published the respective digital component; identifying, for each selection parameter response, a corresponding selection parameter identifier based on a range of selection parameter values for the selection parameter including the selection parameter; as well as The selection parameter element is generated based on the selection parameter response and the selection parameter identifier.
15. The system according to claim 11, wherein: For each user group identifier, the content request includes an encrypted composite message, the encrypted composite message including: an encrypted version of the composite message, the encrypted version of the composite message including the user group identifier; an application public key for an application on the client device that initiates the content request; and a signed redemption record, the signed redemption record being issued by a trust token issuer in response to determining that the client device is trustworthy.
16. The system according to claim 11, wherein: The content request includes a context signal, and the operations include: Determining that the context signal satisfies k-anonymity; and In response to determining that the context signal satisfies k-anonymity: Encrypting the context signal by the first MPC computing system; and Each context signal that satisfies k-anonymity is included in the request.
17. The system of claim 11, further comprising: identifying in each creative element a first set of attributes of the corresponding digital component; as well as identifying in the lookup table a second set of exclusion attributes that are excluded by a publisher of the resource for which the digital component is being requested; Wherein, selecting, by the first MPC computing system, a given digital component based on the selection parameter comprises: For each creative element, determining whether one or more attributes in the first set of attributes of the creative element match an exclusion attribute; and Every creative element that has at least one attribute that matches the excluded attribute is excluded.
18. The system of claim 11, wherein: Selecting, by the first MPC computing system, a given digital component based on the selection parameter identifier includes: For each select parameter element: identifying, in a first lookup table, a shared code of the creative element of the selection parameter element based on a resource locator of a resource and a digital component identifier of a digital component provider that published the corresponding digital component of the creative element; and identifying, in a second lookup table, a publisher return identifier based on the shared code and the selection parameter identifier of the selection parameter element; and The digital component of a given selection parameter element having the highest publisher return identifier is selected as the given digital component.
19. The system of claim 18, wherein: Transmitting the creative element of the digital component to the client device by the first MPC computing system includes transmitting a content request result, the content request result including the creative element, the publisher return identifier of the given selection parameter element, the digital component provider identifier of the given digital component, a timestamp indicating the time when the given digital component was selected, and a digital signature.
20. A non-transitory computer-readable medium storing instructions that, when executed by one or more processors, cause the one or more processors to perform operations comprising: receiving, by the first MPC computing system from a client device, a content request including a set of encrypted user group identifiers, wherein each encrypted user group identifier is encrypted using a first encryption key of a second MPC computing system; for each encrypted user group identifier, transmitting a request to the second MPC computing system, the request including the encrypted user group identifier; For each user group identifier that satisfies the k-anonymity process performed by the second MPC computing system: receiving, by the first MPC computing system from the second MPC computing system, a plain text value of the user group identifier; and Transmitting, by the first MPC computing system to one or more platforms, a selection parameter request including the plaintext value of the user group identifier; receiving, by the first MPC computing system from the second MPC computing system, a set of selection parameter elements, each of the set of selection parameter elements including a creative element corresponding to a digital component and a selection parameter identifier for the digital component; selecting, by the first MPC computing system, a given digital component based on the selection parameter identifier; and The creative elements of the digital components are transmitted by the first MPC computing system to the client device.
Citation Information
Patent Citations
Domain specific browser identifiers as replacement of browser cookies
WO2019194811A1