# US 12,192,340 B2 · Using secure MPC and vector computations to protect access to information in content distribution

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,192,340 B2
- Document ID: US12192340B2
- Status: Granted
- Kind: B2
- Application number: 17/793,831
- Filed: 2022-01-06
- Published: 2023-03-09
- Granted: 2025-01-07
- Earliest claimed: 2021-01-10
- Assignees: Google Inc.
- Applicants: Google LLC
- Inventors: Gang Wang; Ardian Poernomo; Marcel M. Moti Yung
- Web page: https://patentgrep.com/patent/US12192340B2

## CPC

- H04L 9/085: {Secret sharing or secret splitting, e.g. threshold schemes}
- G06F 21/6245: {Protecting personal data, e.g. for financial or medical purposes}
- G06Q 10/10: Office automation; Time management
- G06Q 30/0241: Advertisements
- H04L 9/0643: {Hash functions, e.g. MD5, SHA, HMAC or f9 MAC}
- H04L 9/0841: {involving Diffie-Hellman or related key agreement protocols}
- G06Q 2220/00: Business processing using cryptography
- H04L 2209/46: Secure multiparty computation, e.g. millionaire problem
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- G06Q: INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR

## Abstract

This disclosure relates to protecting the security of information in content selection and distribution. In one aspect, a method includes receiving, from a client device and by a first computing system of multi-party computation (MPC) systems, a digital component request including first secret shares of data identifying user groups that include a user of the client device as a member. The first computing system transmits a contextual digital component request to a content platform. The first computing system receives, from the content platform, selection data for multiple digital components. The selection data includes first vector data defining a contextual-based vector of values selected based in part on the set of contextual signals. The first computing system obtains, for each digital component, second vector data defining a user group-based vector of values selected based in part on a respective user group corresponding to the digital component.

## Claims

### Claim 1

A computer-implemented method comprising:
receiving, from a client device and by a first computing system of a plurality of multi-party computation (MPC) systems, a digital component request comprising first secret shares of data identifying user groups that include a user of the client device as a member and a set of contextual signals;
transmitting, by the first computing system, a contextual digital component request to a content platform;
receiving, by the first computing system and from the content platform, selection data for a plurality of digital components, wherein the selection data comprises first vector data defining a contextual-based vector of values selected based at least in part on the set of contextual signals;
obtaining, by the first computing system and for each of the plurality of digital components, second vector data defining a user group-based vector of values selected based at least in part on a respective user group corresponding to the digital component;
determining, by the first computing system, a selection value for each digital component based on the first vector data and the second vector data;
determining, for each digital component, a candidate parameter that indicates whether the respective user group identifier corresponding to the digital component matches a user group that includes the user as a member;
generating, based on the selection values and the candidate parameters, a first secret share of a selection result that identifies, from a plurality of candidate digital components, a given digital component having a highest selection value, wherein each candidate digital component is a digital component for which the candidate parameter for the selection value corresponding to the digital component indicates that the respective user group identifier corresponding to the selection value matches a user group that includes the user as a member; and
transmitting, to the client device, the first secret share of a selection result identifying the given digital component.

### Claim 2 (depends on 1)

The computer-implemented method of claim 1, wherein determining, by the first computing system, the selection value for each digital component based on the first vector data and the second vector data comprises determining a dot product of the contextual-based vector of values for the digital component and the user group-based vector of values.

### Claim 3 (depends on 1)

The computer-implemented method of claim 1, wherein the first vector data comprises first secret shares of the contextual-based vector of values and the second vector data comprises first secret shares of the user group-based vector of values.

### Claim 4 (depends on 3)

The computer-implemented method of claim 3, wherein determining, by the first computing system, the selection value for each digital component based on the first vector data and the second vector data comprises collaborating with one or more second computing systems of the plurality of MPC systems to perform a secure MPC process to determine a dot product of the contextual-based vector of values for the digital component and the user group-based vector of values.

### Claim 5 (depends on 1)

The computer-implemented method of claim 1, wherein the selection value for each digital component is based on a user profile for the user.

### Claim 6 (depends on 5)

The computer-implemented method of claim 5, wherein determining, by the first computing system, the selection value for each digital component based on the first vector data and the second vector data comprises determining a dot product of the contextual-based vector for the digital component, the user group-based vector for the digital component, and a user profile vector for the user profile for the user.

### Claim 7 (depends on 1)

The computer-implemented method of claim 1, wherein determining the candidate parameter for each selection value comprises determining a first secret share of the candidate parameter for each selection value.

### Claim 8 (depends on 1)

The computer-implemented method of claim 1, wherein generating the first secret share of the selection result comprises:
generating an order of the selection values based on a magnitude of each selection value;
determining, based on the order of the selection values and the candidate parameter for each selection value, a first secret share of an accumulated value for each selection value;
determining, for each selection value, a first secret share of a winner parameter based on (i) the candidate parameter for the selection value and (ii) a result of an equality test that indicates whether the accumulated value for the selection value is a specified value; and
determining, as the first secret share of the selection result, a first secret share of a sum of, for each selection value, a product of the winner parameter for the selection value and a digital component information element for the selection value.

### Claim 9 (depends on 8)

The computer-implemented method of claim 8, wherein determining the first secret share of the accumulated value for each selection value comprises:
for each individual selection value, determining a quantity of selection values, between a highest selection value and the individual selection value inclusive, that have a candidate parameter that indicates that the respective user group identifier corresponding to the selection value matches a user group that includes the user as a member.

### Claim 10

A system comprising:
a first computing system comprising one or more processors; and
one or more storage devices storing instructions that, when executed by the one or more processors, cause the one or more processor to perform operations comprising:
receiving, from a client device and by the first computing system of a plurality of multi-party computation (MPC) systems, a digital component request comprising first secret shares of data identifying user groups that include a user of the client device as a member and a set of contextual signals;
transmitting, by the first computing system, a contextual digital component request to a content platform;
receiving, by the first computing system and from the content platform, selection data for a plurality of digital components, wherein the selection data comprises first vector data defining a contextual-based vector of values selected based at least in part on the set of contextual signals;
obtaining, by the first computing system and for each of the plurality of digital components, second vector data defining a user group-based vector of values selected based at least in part on a respective user group corresponding to the digital component;
determining, by the first computing system, a selection value for each digital component based on the first vector data and the second vector data;
determining, for each digital component, a candidate parameter that indicates whether the respective user group identifier corresponding to the digital component matches a user group that includes the user as a member;
generating, based on the selection values and the candidate parameters, a first secret share of a selection result that identifies, from a plurality of candidate digital components, a given digital component having a highest selection value, wherein each candidate digital component is a digital component for which the candidate parameter for the selection value corresponding to the digital component indicates that the respective user group identifier corresponding to the selection value matches a user group that includes the user as a member; and
transmitting, to the client device, the first secret share of a selection result identifying the given digital component.

### Claim 11 (depends on 10)

The system of claim 10, wherein determining, by the first computing system, the selection value for each digital component based on the first vector data and the second vector data comprises determining a dot product of the contextual-based vector of values for the digital component and the user group-based vector of values.

### Claim 12 (depends on 10)

The system of claim 10, wherein the first vector data comprises first secret shares of the contextual-based vector of values and the second vector data comprises first secret shares of the user group-based vector of values.

### Claim 13 (depends on 12)

The system of claim 12, wherein determining, by the first computing system, the selection value for each digital component based on the first vector data and the second vector data comprises collaborating with one or more second computing systems of the plurality of MPC systems to perform a secure MPC process to determine a dot product of the contextual-based vector of values for the digital component and the user group-based vector of values.

### Claim 14 (depends on 10)

The system of claim 10, wherein the selection value for each digital component is based on a user profile for the user.

### Claim 15 (depends on 14)

The system of claim 14, wherein determining, by the first computing system, the selection value for each digital component based on the first vector data and the second vector data comprises determining a dot product of the contextual-based vector for the digital component, the user group-based vector for the digital component, and a user profile vector for the user profile for the user.

### Claim 16 (depends on 10)

The system of claim 10, wherein determining the candidate parameter for each selection value comprises determining a first secret share of the candidate parameter for each selection value.

### Claim 17 (depends on 10)

The system of claim 10, wherein generating the first secret share of the selection result comprises:
generating an order of the selection values based on a magnitude of each selection value;
determining, based on the order of the selection values and the candidate parameter for each selection value, a first secret share of an accumulated value for each selection value;
determining, for each selection value, a first secret share of a winner parameter based on (i) the candidate parameter for the selection value and (ii) a result of an equality test that indicates whether the accumulated value for the selection value is a specified value; and
determining, as the first secret share of the selection result, a first secret share of a sum of, for each selection value, a product of the winner parameter for the selection value and a digital component information element for the selection value.

### Claim 18 (depends on 17)

The system of claim 17, wherein determining the first secret share of the accumulated value for each selection value comprises:
for each individual selection value, determining a quantity of selection values, between a highest selection value and the individual selection value inclusive, that have a candidate parameter that indicates that the respective user group identifier corresponding to the selection value matches a user group that includes the user as a member.

### Claim 19

A non-transitory computer storage medium encoded with instructions that, when executed by a first computing system, cause the first computing system to perform operations comprising:
receiving, from a client device and by the first computing system of a plurality of multi-party computation (MPC) systems, a digital component request comprising first secret shares of data identifying user groups that include a user of the client device as a member and a set of contextual signals;
transmitting, by the first computing system, a contextual digital component request to a content platform;
receiving, by the first computing system and from the content platform, selection data for a plurality of digital components, wherein the selection data comprises first vector data defining a contextual-based vector of values selected based at least in part on the set of contextual signals;
obtaining, by the first computing system and for each of the plurality of digital components, second vector data defining a user group-based vector of values selected based at least in part on a respective user group corresponding to the digital component;
determining, by the first computing system, a selection value for each digital component based on the first vector data and the second vector data;
determining, for each digital component, a candidate parameter that indicates whether the respective user group identifier corresponding to the digital component matches a user group that includes the user as a member;
generating, based on the selection values and the candidate parameters, a first secret share of a selection result that identifies, from a plurality of candidate digital components, a given digital component having a highest selection value, wherein each candidate digital component is a digital component for which the candidate parameter for the selection value corresponding to the digital component indicates that the respective user group identifier corresponding to the selection value matches a user group that includes the user as a member; and
transmitting, to the client device, the first secret share of a selection result identifying the given digital component.

### Claim 20 (depends on 19)

The non-transitory computer storage medium of claim 19, wherein determining, by the first computing system, the selection value for each digital component based on the first vector data and the second vector data comprises determining a dot product of the contextual-based vector of values for the digital component and the user group-based vector of values.
