CN115088005A - 使用安全mpc和向量计算来在内容分发中保护对信息的访问 - Google Patents
使用安全mpc和向量计算来在内容分发中保护对信息的访问 Download PDFInfo
- Publication number
- CN115088005A CN115088005A CN202280002639.6A CN202280002639A CN115088005A CN 115088005 A CN115088005 A CN 115088005A CN 202280002639 A CN202280002639 A CN 202280002639A CN 115088005 A CN115088005 A CN 115088005A
- Authority
- CN
- China
- Prior art keywords
- digital component
- mpc
- user
- selection
- vector
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 239000013598 vector Substances 0.000 title claims abstract description 210
- 238000000034 method Methods 0.000 claims abstract description 115
- 230000008569 process Effects 0.000 claims description 82
- 238000012360 testing method Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 13
- 230000006870 function Effects 0.000 description 85
- 235000019800 disodium phosphate Nutrition 0.000 description 57
- 241000544061 Cuculus canorus Species 0.000 description 41
- 230000000875 corresponding effect Effects 0.000 description 37
- 239000000047 product Substances 0.000 description 29
- 230000004044 response Effects 0.000 description 22
- 238000012545 processing Methods 0.000 description 18
- 238000004364 calculation method Methods 0.000 description 16
- 230000014509 gene expression Effects 0.000 description 13
- 239000000654 additive Substances 0.000 description 10
- 230000000996 additive effect Effects 0.000 description 10
- 230000001186 cumulative effect Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 10
- 238000004891 communication Methods 0.000 description 9
- 235000014510 cooky Nutrition 0.000 description 7
- 230000003993 interaction Effects 0.000 description 6
- 230000009471 action Effects 0.000 description 5
- 230000003190 augmentative effect Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 5
- 239000002131 composite material Substances 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 4
- 238000003780 insertion Methods 0.000 description 4
- 230000037431 insertion Effects 0.000 description 4
- 238000013515 script Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 238000013459 approach Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 230000000052 comparative effect Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 239000013589 supplement Substances 0.000 description 2
- 101710165590 Mitochondrial pyruvate carrier 1 Proteins 0.000 description 1
- 102100024828 Mitochondrial pyruvate carrier 1 Human genes 0.000 description 1
- 101710101695 Probable mitochondrial pyruvate carrier 1 Proteins 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000012797 qualification Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0838—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these
- H04L9/0841—Key agreement, i.e. key establishment technique in which a shared key is derived by parties as a function of information contributed by, or associated with, each of these involving Diffie-Hellman or related key agreement protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- 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
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- 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
- G06Q30/00—Commerce
- G06Q30/02—Marketing; Price estimation or determination; Fundraising
- G06Q30/0241—Advertisements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- 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
- G06Q2220/00—Business processing using cryptography
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/46—Secure multiparty computation, e.g. millionaire problem
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Strategic Management (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Entrepreneurship & Innovation (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- Finance (AREA)
- Economics (AREA)
- Human Resources & Organizations (AREA)
- Marketing (AREA)
- Accounting & Taxation (AREA)
- Development Economics (AREA)
- Power Engineering (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Health & Medical Sciences (AREA)
- Data Mining & Analysis (AREA)
- Game Theory and Decision Science (AREA)
- Tourism & Hospitality (AREA)
- Quality & Reliability (AREA)
- Operations Research (AREA)
- Computer Hardware Design (AREA)
- Databases & Information Systems (AREA)
- Medical Informatics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Storage Device Security (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本公开涉及在内容选择和分发中保护信息的安全。在一个方面中,一种方法包括:从客户端设备并且由多方计算(MPC)系统中的第一计算系统接收数字组件请求,该数字组件请求包括识别包括客户端设备的用户作为成员的用户组的数据的第一秘密份额。第一计算系统向内容平台传输上下文数字组件请求。第一计算系统从内容平台接收多个数字组件的选择数据。选择数据包括第一向量数据,第一向量数据定义部分地基于上下文信号集合选择的值的基于上下文的向量。第一计算系统对于每个数字组件获得第二向量数据,第二向量数据定义部分地基于与数字组件相对应的相应用户组选择的值的基于用户组的向量。
Description
技术领域
本说明书涉及密码学和数据安全。
背景技术
安全多方计算(MPC)是通过跨越多方分发计算来防止对数据的访问使得没有个体方能够访问另一方的数据或中间计算值同时输出仅被释放给指定方的密码协议族。MPC计算系统通常使用数据的秘密份额来执行计算,并且有时对加密数据执行计算。
发明内容
通常,本说明书中描述的主题的一个创新方面能够被体现在方法中,这些方法包括:从客户端设备并且由多方计算(MPC)系统中的第一计算系统接收数字组件请求,该数字组件请求包括识别包括客户端设备的用户作为成员的用户组的数据的第一秘密份额和上下文信号集合;由第一计算系统向内容平台传输上下文数字组件请求;由第一计算系统并且从内容平台接收多个数字组件的选择数据,其中,选择数据包括第一向量数据,第一向量数据定义至少部分地基于上下文信号集合选择的值的基于上下文的向量;由第一计算系统并且对于数字组件中的每一个获得第二向量数据,第二向量数据定义至少部分地基于与数字组件相对应的相应用户组选择的值的基于用户组的向量;由第一计算系统基于第一向量数据和第二向量数据来确定每个数字组件的选择值;对于每个数字组件,确定指示与该数字组件相对应的相应用户组标识符是否与包括用户作为成员的用户组匹配的候选参数;基于选择值和候选参数来生成选择结果的第一秘密份额,该选择结果从多个候选数字组件中识别具有最高选择值的给定数字组件,其中,每个候选数字组件是与该数字组件相对应的选择值的候选参数指示与选择值相对应的第二用户组标识符与包括用户作为成员的用户组匹配的数字组件;以及向客户端设备传输识别给定数字组件的选择结果的第一秘密份额。此方面的其他实现方式包括对应的装置、系统、以及在计算机存储设备上编码的被配置成执行方法的各方面的计算机程序。
这些和其他实现方式能够各自可选地包括以下特征中的一个或多个。在一些方面中,由第一计算系统基于第一向量数据和第二向量数据来确定每个数字组件的选择值包括确定数字组件的值的基于上下文的向量和值的基于用户组的向量的点积。
在一些方面中,第一向量数据包括值的基于上下文的向量的第一秘密份额并且第二向量数据包括值的基于用户组的向量的第一秘密份额。由第一计算系统基于第一向量数据和第二向量数据来确定每个数字组件的选择值能够包括与多个MPC系统中的一个或多个第二计算系统协作以执行安全MPC过程来确定数字组件的值的基于上下文的向量和值的基于用户组的向量的点积。
在一些方面中,每个数字组件的选择值是基于用户的用户简档。由第一计算系统基于第一向量数据和第二向量数据来确定每个数字组件的选择值能够包括确定数字组件的基于上下文的向量、数字组件的基于用户组的向量和用户的用户简档的用户简档向量的点积。
在一些方面中,确定每个选择值的候选参数包括确定每个选择值的候选参数的第一秘密份额。在一些方面中,生成选择结果的第一秘密份额包括:基于每个选择值的幅度来生成选择值的次序;基于选择值的次序和每个选择值的候选参数来确定每个选择值的累积值的第一秘密份额;对于每个选择值,基于(i)选择值的候选参数和(ii)指示选择值的累积值是否是指定值的相等性测试的结果来确定获胜者参数的第一秘密份额;以及对于每个选择值,确定选择值的获胜者参数和选择值的数字组件信息元素的乘积之和的第一秘密份额作为选择结果的第一秘密份额。
在一些方面中,确定每个选择值的累积值的第一秘密份额包括:对于每个个体选择值,确定在最高选择值与个体选择值之间的包括最高选择值和个体选择值的一定量的选择值,该一定量的选择值具有指示与选择值相对应的第二用户组标识符与一个或多个第一用户组标识符中的至少一个匹配的候选参数。
本说明书中描述的主题能够在特定实施例中实现,以便实现以下优点中的一个或多个。使用通过由不同方操作的两个或更多个MPC服务器执行的安全MPC过程以基于用户信息的秘密份额来选择数字组件确保在MPC服务器之间缺乏未授权的串通的情况下用户信息不能被MPC服务器或另一方以明文访问。
在数字组件选择过程中,MPC服务器能够从满足一个或多个合格条件的合格数字组件中选择,同时防止各方以明文访问用户信息。合格条件能够包括对数字组件的分发的方式或频率的限制和指导,以及其他因素。这些条件能够包括用户组成员资格、频率控制、静音、预算、k-匿名和/或调步约束。
用户的客户端设备能够生成表示包括用户作为成员的用户组的概率数据结构,例如布谷鸟过滤器,并且生成分布式点函数,每个包括用户作为成员的用户组一个分布式点函数。分布式点函数是加密地表示用户是否是用户组的成员的秘密份额。以这种方式使用概率数据结构和/或分布式点函数通过防止对用户的组成员资格的访问来保护用户隐私并且减少提供给MPC集群的信息的大小。数据大小的这种减少减少传输信息所消耗的带宽的量,减少传输信息时的时延,并且减少在电池上运行的设备(例如,移动设备)传输信息所需要的处理功率和相关联的电池电力的量。
MPC集群能够传输识别MPC集群使用安全MPC过程选择的选择数字组件的结果的秘密份额。通过仅发送选择数字组件的结果的秘密份额,而不是发送所有数字组件或数字组件的大集合的信息,类似地减少了在传输和接收结果时消耗的带宽、时延、处理功率和电池电力。这还通过限制向客户端设备提供信息的数字组件的数量来减少将数字组件的选择值提交给MPC集群的内容平台的机密信息的潜在泄漏。
选择值以及有关它们对应的数字组件的信息能够被存储在使用上下文信号集合作为每个选择值的键的数据结构中。然而,这对于仅在非常特定的上下文中合格的选择值能够产生大量键。例如,内容平台可能想要对于许多不同上下文中的每一个使用不同选择值。使用基于上下文信号生成的值的向量和针对用户组生成的值的向量来确定数字组件的选择值,向量计算能够被用于大幅减少存储在数据结构中的数据量,从而减少用于存储许多不同上下文的许多不同选择值的数据存储要求。向量计算还在为各种数字组件呈现上下文准确地指定选择值时实现更多灵活性,同时还使得能够强制执行发布者控件,在该发布者控件上,数字组件能够与发布者的内容一起呈现。能够使用秘密共享来执行向量计算,使得基于用户简档的值的向量能够被用于确定选择值,而不将用户信息暴露给MPC集群或其他方。
在以下附图和描述中阐述本说明书中描述的主题的一个或多个实施例的细节。根据说明书、附图和权利要求书,主题的其他特征、方面和优点将变得显而易见。
附图说明
图1是其中MPC集群执行安全MPC过程以选择用于分发给客户端设备的数字组件的环境的框图。
图2示出图1的环境内的示例数据流。
图3是用于选择用于在客户端设备处呈现的数字组件的示例过程的泳道图。
图4是用于选择用于分发给客户端设备的数字组件的示例过程的泳道图。
图5是图示用于选择用于分发给客户端设备的数字组件的示例过程的流程图。
图6是示例计算机系统的框图。
在各个附图中相同的附图标记和名称指示相同的元件。
具体实施方式
通常,本文档描述用于在内容选择和分发中保护信息的安全的系统和技术。服务器计算机的MPC集群能够执行安全MPC过程以基于用户信息来选择数字组件,而无需任一MPC服务器能够在缺乏未授权的串通的情况下以明文访问用户信息。能够使用概率数据结构(例如布谷鸟过滤器)来将用户信息发送到MPC集群,以减少通过网络传输的信息的数据大小并且在传输期间保持信息安全。
MPC集群能够使用向量计算(例如向量点积计算)来确定数字组件的选择值。例如,MPC集群能够通过确定对于数字组件为用户组生成的值的向量与对于数字组件呈现环境基于上下文信号生成的值的向量之间的点积来确定数字组件的选择值。选择值能够指示数字组件提供者愿意为呈现或用户与数字组件的交互提供的金额。
图1是其中MPC集群执行安全MPC过程以选择用于分发给客户端设备110的数字组件的环境100的框图。示例环境100包括数据通信网络105,例如局域网(LAN)、广域网(WAN)、互联网、移动网络或其组合。网络105连接客户端设备110、安全MPC集群130、发布者140、网站142、内容平台,例如供应方平台(SSP)170和需求方平台DSP(150)。示例环境100可以包括许多不同的客户端设备110、安全MPC集群130、发布者140、网站142、DSP 150和SSP 170。
客户端设备110是能够通过网络105进行通信的电子设备。示例客户端设备110包括个人计算机、移动通信设备,例如智能电话,以及能够通过网络105发送和接收数据的其他设备。客户端设备还能够包括通过麦克风接受音频输入并通过扬声器输出音频输出的数字助理设备。当数字助理检测到激活麦克风以接受音频输入的“热门词”或“热门短语”时,数字助理能够被置于收听模式(例如,准备好接受音频输入)。数字助理设备还能够包括照相机和/或显示器,以捕获图像并且视觉地呈现信息。数字助理能够在不同形式的硬件设备中实现,包括可穿戴设备(例如,手表或眼镜)、智能电话、扬声器设备、平板设备或另一硬件设备。客户端设备还能够包括数字媒体设备,例如插入电视或其他显示器中以将视频流式传输到电视、游戏系统或虚拟现实系统的流式传输设备。
客户端设备110通常包括应用112,诸如web浏览器和/或原生应用,以便于通过网络105发送和接收数据。原生应用是针对特定平台或特定设备(例如,具有特定操作系统的移动设备)开发的应用。发布者140能够开发并向客户端设备110提供(例如,使其可供下载)原生应用。例如,响应于客户端设备110的用户在web浏览器的地址栏中输入资源145的资源地址或者选择引用资源地址的链接,web浏览器能够从托管发布者140的网站142的web服务器请求资源145。类似地,原生应用能够从发布者的远程服务器请求应用内容。
一些资源、应用页面或其他应用内容能够包括用于与资源145或应用页面一起呈现数字组件的数字组件槽。如贯穿本文所使用的,短语“数字组件”指的是数字内容或数字信息的离散单元(例如,视频剪辑、音频剪辑、多媒体剪辑、图像、文本或另一内容单元)。数字组件能够作为单个文件或以文件集合电子地存储在物理存储器设备中,并且数字组件能够采取视频文件、音频文件、多媒体文件、图像文件或文本文件的形式,并且包括广告信息,使得广告是一种类型的数字组件。例如,数字组件可以是旨在补充由应用112呈现的网页或其他资源的内容的内容。更具体地,数字组件可以包括与资源内容相关的数字内容(例如,数字组件可以涉及与网页内容相同的主题,或者相关主题)。因此,数字组件的提供能够补充并且通常增强网页或应用内容。
当应用112加载包括一个或多个数字组件槽的资源(或应用内容)时,应用112能够请求每个槽的数字组件。在一些实施方式中,数字组件槽能够包括使得应用112从数字组件分发系统请求数字组件的代码(例如,脚本),该数字组件分发系统选择数字组件并将该数字组件提供给应用112以用于呈现给客户端设备110的用户。如下所述,应用112能够从MPC集群130和/或一个或多个SSP 170请求数字组件。
一些发布者140使用SSP 170来管理获得其资源和/或应用的数字组件槽的数字组件的过程。SSP 170是以硬件和/或软件实现的技术平台,该技术平台使获得资源和/或应用的数字组件的过程自动化。每个发布者140能够具有对应的SSP 170或多个SSP 170。一些发布者140可以使用相同的SSP 170。
数字组件提供者160能够创建(或者以其他方式发布)在发布者的资源和应用的数字组件槽中呈现的数字组件。数字组件提供者160能够使用DSP 150来管理对其数字组件的提供以用于在数字组件槽中呈现。DSP 150是以硬件和/或软件实现的技术平台,该技术平台使分发数字组件以用于与资源和/或应用一起呈现的过程自动化。DSP 150能够代表数字组件提供者160与多个供应方平台SSP进行交互,以提供数字组件以用于与多个不同发布者140的资源和/或应用一起呈现。通常,DSP 150能够(例如,从SSP)接收对数字组件的请求,基于该请求来生成(或选择)由一个或多个数字组件提供者创建的一个或多个数字组件的选择值,并且向SSP提供与数字组件相关的数据(例如,数字组件本身)和选择参数。选择值能够指示数字组件提供者160愿意为呈现或用户与数字组件的交互提供的金额。然后,SSP能够选择在客户端设备110处呈现的数字组件,并向客户端设备110提供使客户端设备110呈现该数字组件的数据。
在一些情况下,接收与网页、应用页面或用户先前访问和/或交互的其他电子资源相关的数字组件对用户是有益的。为了将这种数字组件分发给用户,当用户访问特定资源或对该资源执行特定动作(例如,与网页上呈现的特定项进行交互或将该项添加到虚拟购物车)时,能够将用户指派到用户组,例如,用户兴趣组、相似用户的群组或涉及相似用户数据的其他组类型。用户组能够由数字组件提供者160生成。也就是说,当用户访问数字组件提供者160的电子资源时,每个数字组件提供者160能够将用户指派到他们的用户组。用户组也能够由内容平台创建,例如由DSP 150和/或SSP 170创建。
为了保护用户隐私,能够在用户的客户端设备110处维护用户组成员资格,例如,由应用112之一或客户端设备110的操作系统来维护,而不是由数字组件提供者、内容平台或其他方来维护。在特定示例中,可信程序(例如,web浏览器或操作系统能够为使用web浏览器或另一应用的用户(例如,登录到浏览器、应用或客户端设备110的用户)维护用户组标识符列表(“用户组列表”)。用户组列表能够包括用户作为成员的每个用户组的组标识符。创建用户组的数字组件提供者160能够为他们的用户组指定用户组标识符。用户组的用户组标识符能够描述该组(例如,园艺组)或表示该组的代码(例如,非描述性的字母数字序列)。用户的用户组列表能够被存储在客户端设备110处的安全存储中和/或能够在存储时被加密以防止其他人访问该列表。
当应用112呈现与数字组件提供者160相关的资源或应用内容或网站142上的网页时,该资源能够请求应用112向用户组列表添加一个或多个用户组标识符。作为响应,应用112能够将一个或多个用户组标识符添加到用户组列表,并且安全地存储用户组列表。
MPC集群130能够使用用户的用户组成员资格来选择用户可能感兴趣的或者以另一种方式对用户/用户设备有益的数字组件或其他内容。例如,这种数字组件或其他内容可以包括改善用户体验、改善用户设备的运行或者以某种其他方式使用户或用户设备受益的数据。然而,用户的用户组列表的用户组标识符能够被提供并用于以防止MPC集群130中的计算系统MPC1和MPC2以明文访问用户的用户组标识符的方式来选择数字组件,从而在使用用户组成员资格数据来选择数字组件时保护用户隐私。明文是以能够在不需要密钥或其他解密设备或其他解密过程的情况下被查看或使用的形式的没有被计算地标记、特殊格式化或以代码或数据(包括二进制文件)编写的文本。
安全MPC集群130包括两个计算系统MPC1和MPC2(例如,服务器计算机),它们执行安全MPC过程,以基于用户组成员资格来选择用于分发给用户的客户端设备的数字组件,但是不以明文访问组成员资格信息。尽管示例MPC集群130包括两个计算系统,但是也能够使用更多计算系统,只要MPC集群130包括多于一个计算系统。例如,MPC集群130能够包括三个计算系统、四个计算系统或其他适当数量的计算系统。在MPC集群130中使用更多计算系统能够提供更多安全性,但是也能够增加MPC过程的复杂性。
计算系统MPC1和MPC2能够由不同的实体操作。以这种方式,每个实体可能无法以明文访问完整用户简档。例如,计算系统MPC1或MPC2中的一个能够由与用户、发布者140、DSP150、SSP 170和数字组件提供者160不同的可信方来操作。例如,产业组、政府组或浏览器开发者可以维护和操作计算系统MPC1和MPC2中的一个。其他计算系统可以由这些组中的不同一个来操作,使得不同可信方操作每个计算系统MPC1和MPC2。优选地,操作不同计算系统MPC1和MPC2的不同方没有动机去串通起来危害用户隐私。在一些实施方式中,计算系统MPC1和MPC2在体系结构上是分离的,并且被监视以在除了执行本文中描述的安全MPC过程之外不与彼此通信。
每个计算系统MPC1和MPC2能够存储用于确定数字组件的选择值的值的向量。例如,作为先前数字组件选择过程的一部分,计算系统MPC1和MPC2能够高速缓存先前从SSP 170和/或DSP 150接收到的向量。以这种方式,MPC集群130能够响应于从客户端设备110接收到的未来的基于用户组的数字组件请求而使用向量来选择用于分发给客户端设备110的数字组件。
计算系统MPC1和MPC2能够存储数字组件(例如要提供给作为用户组的成员的用户的数字组件)的值的基于用户组的向量Vug。值可以是浮点值或不同计算机数字格式的值。这样的基于用户组的向量Vug能够被用于确定数字组件的选择值以用于在数字组件选择过程中使用,以便选择要分发以供呈现给用户组中的用户的数字组件。基于用户组的向量Vug能够包括跨两个或更多个维度的多个元素并且每个元素能够表示数字组件呈现机会的特定特征。例如,值的基于用户组的向量Vug能够包括以下各项的元素:地理位置或地区、口语语言、年龄或年龄范围、Web页面或其他电子资源的特定URL、特定产品或服务、数字组件槽是在首屏上方还是下方、数字组件槽的类型、数字组件槽的大小、电子资源上的数字组件槽的数目、一天中的时间、Web属性标识符和/或数字组件呈现机会的其他适当特征。在一些实现方式(例如采用神经网络的实现方式)中,基于用户组的向量Vug能够是用户组在某个抽象向量空间中的嵌入。
每个元素的值能够反映要基于具有与该元素相对应的特征的当前数字组件呈现机会来增加或减小数字组件的选择值的量。例如,如果DSP 150想要将数字组件呈现给亚特兰大的用户,而不是达拉斯的用户,则针对亚特兰大的元素的值能够是高于值一的正值,而针对达拉斯的元素的值能够是低于一的正值(例如,零)或负值。如在下面更详细地描述的,这些值能够是确定数字组件的选择值的向量点积计算的部分。
在一些实施方式中,每个计算MPC1和MPC2使用两级查找表(LUT)来存储数字组件的值的基于用户组的向量Vug。使用两级LUT能够提供一些性能优势,但是也能够使用其他适当的数据结构。第一级能够通过用户组请求键(UG_Request_Key)来键控。UG_Request_Key能够是基于上下文信号集合的复合消息,例如数字组件请求的上下文信号集合(例如URL、位置、语言等)或对于其而言数字组件有资格用于分发的上下文信号集合。也就是说,第一级LUT能够基于上下文信号集合来键控。第一级的键能够是UG_Request_Key的散列,例如使用诸如SHA256的散列函数。该键可以被截断为指定数量的比特,例如16比特、32比特或其他适当数量的比特。第一级LUT中的每个键UG_Request_Key的值能够指示包括有资格用于包括UG_Request_Key的上下文信号的数字组件请求的数字组件的数据的第二级LUT的行。示例第一级LUT如下表1所示。
键 | 值 |
SHA256(UG_Request_Key) | 行… |
… | 行… |
表1
第二级LUT能够基于第一级LUT中的用户组请求键UG_Request_Key与用户组标识符的组合来键控。第二级LUT中的每行能够用于特定数字组件的特定选择值。例如,DSP 150能够针对相同的数字组件提交不同的选择值,其中每个选择值用于不同的上下文信号集合和/或不同的用户组标识符。因此,数字组件的选择值能够基于上下文和其他因素而变化。
DSP 150或数字组件提供者160能够将数字组件关联(例如链接或映射)到DSP 150或数字组件提供者想要将数字组件呈现给的用户组。例如,DSP 150可能想要将与男子篮球鞋相关的数字组件呈现给已经示出对篮球和/或鞋感兴趣的男性。在这个示例中,DSP 150能够向MPC集群130提供指示数字组件对应于包括已经示出对篮球和/或鞋感兴趣的男性的用户组的用户组标识符的数据。
在一些实施方式中,第二级LUT中的行的键能够是基于用户组请求键UG_Request_Key和该行的数字组件的用户组标识符的组合生成的散列或代码。例如,键能够是该组合的基于散列的消息认证码(HMAC),其能够被表示为HMACSHA256(UG_Request_Key,ug_id)。用户组标识符ug_id能够基于用户组的内部用户组标识符与用户组的所有者(例如,拥有用户组的DSP、SSP或数字组件提供者)的域的组合。例如,用户组标识符ug_id能够是所有者域的eTLD+1和用户组的所有者的内部用户组标识符的HMAC。eTLD+1是有效顶级域(eTLD)加上比公共后缀多一级的域。eTLD+1的示例是“example.com”,其中“.com”是顶级域。ug_id能够被截断为16字节或其他适当的数据大小。
继续前面的男子篮球鞋的示例,包括要呈现给男子篮球鞋组中的用户的数字组件的信息的行的第二级查找键能够是用户组请求键UG_Request_Key与男子篮球鞋组的用户组标识符ug_id的组合。由于数字组件能够在不同的上下文中呈现,所以第二级查找表能够包括与男子篮球鞋组的用户组标识符ug_id相关联的数字组件的多个行,每行具有不同的用户组请求键UG_Request_Key和不同的值。
第二级LUT的每行的值能够是数字组件的基于用户组的向量Vug和数字组件的其他数据,例如,识别数字组件或能够从其下载数字组件的网络位置的元数据等。示例第二级LUT如下表2所示。
键 | 值 |
HMAC(UG_Request_Key,UG_ID) | {V<sub>ug</sub>,元数据} |
… | … |
表2
第二级LUT将基于用户组的向量Vug映射到特定数字组件,映射到特定用户组标识符ug_id,并且映射到由第一级查找键UG_Request_Key定义的特定上下文信号集合。通过这样做,第二级LUT指示数字组件的基于用户组的向量Vug对于其来说合格的数字组件槽的特定上下文。由于基于用户组的向量Vug基于数字组件呈现机会的潜在大量特征的组合来定义选择值,因此第一级查找键UG_Request_Key的上下文信号的数量能够是最小的,例如,以指定能够与之一起呈现数字组件的特定资源。这减少为特定上下文指定特定选择值所需的表中的行数。
当接收到指示数字组件将被呈现给的用户是由特定用户组标识符ug_ig识别的特定用户组的成员的数字组件请求并且该数字组件将在由第一级查找键的上下文信号限定的特定上下文中被呈现时,具有匹配的用户组标识符和匹配的第一级查找键的任何数字组件都是响应于该请求而被选择用于分发的候选。虽然在这个示例中使用了两级LUT,但是也能够使用其他适当的数据结构。
除了贯穿本文的描述之外,可以向用户提供控件(例如,用户能够与之进行交互的用户接口元件),以允许用户选择是否以及何时本文描述的系统、程序或特征可以使得能够收集用户信息(例如,关于用户的社交网络、社交动作或活动、职业、用户的偏好或用户的当前位置的信息),以及是否从服务器向用户发送内容或通信。此外,在存储或使用某些数据之前,可以以一种或多种方式对其进行处置,使得去除个人可识别信息。例如,用户的身份可以被处置,使得不能确定用户的个人可识别信息,或者可以在获得位置信息的情况下使用户的地理位置一般化(例如城市、邮政编码或州级),使得不能确定用户的具体位置。因此,用户可以控制收集关于用户的什么信息、如何使用该信息以及向用户提供什么信息。
图2示出图1的环境内的示例数据流200。在阶段A中,应用112向MPC集群130传输数字组件请求。该数字组件请求可以是针对要在将由应用112呈现的内容的数字组件槽中呈现的数字组件的。
请求能够包括关于使用应用112的用户的用户组成员资格的数据,例如在如下所述的秘密份额中,以及数字组件槽的上下文信号。上下文信号能够通过包括诸如以下各项的信号来描述数字组件呈现机会:客户端设备110的地理位置、由应用112使用的口语语言、包括数字组件槽的内容的URL、数字组件是在首屏上方还是下方、数字组件槽的类型和/或大小、在客户端设备110的位置处的一天中的当前时间、内容的Web属性标识符和/或其他适当的特征。
如果应用112支持cookie,则请求还能够包括包括数字组件槽的内容的发布者的第一方cookie。这能够使得SSP 170和/或DSP 150能够在选择数字组件以考虑在数字组件槽中呈现时使用附加用户数据。
如果被应用112支持,则请求还能够包括用户群组的群组标识符,用户群组包括应用112的用户作为成员。此群组标识符是例如在每个设备处在不共享来自设备的信息的情况下被确定为具有类似的跨域浏览模式的用户的群组的低熵(例如,16-20位)标识符。这能够使得SSP 170和/或DSP 150能够推测关于应用112的用户的附加信息。
在阶段B中,MPC集群130针对包括数字组件槽的内容的发布者向SSP 170传输上下文数字组件请求。此请求能够包括上下文信号、第一方cookie和/或群组标识符。此请求不包括用户组成员资格数据。
在阶段C中,SSP 170向一个或多个DSP 150发送上下文数字组件请求。在阶段D中,DSP 150生成数字组件选择数据并且将其传输到SSP 170。此选择数据能够包括由DSP 150基于包括在上下文数字组件请求中的信息(例如基于上下文信号)并且使用基于第一方cookie和/或群组标识符获得或推测的信息生成的基于上下文的向量Vcontext。
对于每个DSP 150,其基于上下文的向量Vcontext能够具有由MPC集群130存储的其基于用户组的向量Vug的结构。这使得MPC集群130能够执行点积计算以对于DSP 150的每个基于用户组的向量Vug确定与该用户组相对应的数字组件的选择值。例如,DSP 150的基于上下文的向量Vcontext能够具有与其基于用户组的向量Vug中的每一个相同的维度和特征。然而,DSP 150能够基于上下文数字组件请求中的信息来确定基于上下文的向量Vcontext的值以生成针对数字组件请求的定制选择值。对于给定上下文数字组件请求,每个DSP 150能够提供单个基于上下文的向量Vcontext以用于在确定基于用户组的向量Vug被存储在MPC集群130处的其数字组件中的每一个的选择值时使用。
除了提供基于上下文的向量Vcontext之外,DSP 150还能够提供要针对当前或将来数字组件请求存储在MPC集群130处的一个或多个条件选择值或向量。例如,DSP 150能够将用于存储在MPC集群130处的新的或更新的基于用户组的向量Vug捎带到响应上。利用每个基于用户组的向量Vug,DSP 150能够提供用于存储在MPC集群130处的其他数据,诸如向量的用户组请求键UG_Request_Key和/或向量的元数据。向量能够在发送到SSP 170之前被DSP150拆分成秘密份额和/或数字签名以保护用户隐私,保护商业机密信息,防止计算系统MPC1和MPC2以明文访问信息,并且/或者防止中间人攻击或窃听(例如,在DSP 150与SSP 170之间或在介于它们之间的其他合作者之间,但是在图2中未示出)。
DSP 150还能够为用于考虑作为被选择为要响应于数字组件请求而在客户端设备110处呈现的数字组件的数字组件提供无条件选择值(例如,不以用户组成员资格和不存在于阶段B和阶段C中的其他敏感信息为条件)和数据。这样的数字组件能够是仅针对当前数字组件请求而提供的,而不是由MPC集群130存储用于将来数字组件请求的。
在阶段E中,SSP 170向MPC集群130传输从DSP 150接收到的向量和/或选择值。如在下面更详细地描述的,在向MPC集群130传输向量和/或选择值之前,SSP 170能够对向量和/或选择值应用发布者控件。在一些实现方式中,SSP 170能够在向MPC集群130发送向量和/或选择值之前修改向量和/或选择值以说明共享布置。
在阶段F中,MPC集群130执行数字组件选择过程并且向应用112传输选择结果。示例选择过程被图示在图4中并且在下面描述。MPC集群130还能够存储基于用户组的向量Vug和与对应的数字组件相关的相关联的元数据/键以用于在后续数字组件选择过程中使用。
在阶段G中,应用112向MPC集群130传输通知。通知能够识别由应用呈现的数字组件并且/或者包括指示数字组件是否被应用112的用户交互(例如选择)的数据。在一些实现方式中,阶段G中的通知能够在不久的将来在阶段A中捎带在数字组件请求上。这种捎带减少由应用112发送的请求的数并且可以减少应用112的网络和电池消耗。
图3是用于选择用于在客户端设备处呈现的数字组件的示例过程300的泳道图。过程300的操作能够例如由客户端设备110、MPC集群130中的计算系统MPC1和MPC2以及DSP 150来实现。过程300的操作也能够被实现为存储在一个或多个计算机可读介质上的指令,该一个或多个计算机可读介质可以是非暂时性的,并且由一个或多个数据处理装置对指令的指令能够使得一个或多个数据处理装置执行过程300的操作。尽管根据两个计算系统MPC集群130描述了过程300和下面的其他过程,但是具有多于两个计算系统的MPC集群也能够用于执行类似的过程。另外,过程300的操作能够由SSP 170来实现。
DSP 150向MPC集群130(302)提供数字组件的基于用户组的向量Vug。例如,DSP能够经由SSP 170向MPC集群130提供数字组件的基于用户组的向量Vug。如上所述,DSP 150能够连同基于上下文的向量Vcontext一起(例如,捎带到包括基于上下文的向量Vcontext的响应上)提供基于用户组的向量Vug。然而,基于用户组的向量Vug能够是针对将来数字组件请求的点积计算的两个输入之一,而基于上下文的向量Vcontext是针对当前数字组件请求的点积计算的两个输入之一。MPC集群130能够将基于用户组的向量Vug与对应的数字组件和/或其相关元数据一起存储以用于从客户端设备110接收到的将来数字组件请求。在另一示例中,DSP150能够例如基于生成新的或更新的基于用户组的向量Vug来在数字组件请求之外提供数字组件的基于用户组的向量Vug。
对于每个数字组件,DSP 150还能够上传数字组件的附加数据,例如元数据。数字组件的附加数据能够包括与该数字组件相对应的用户组的用户组标识符。数字组件的数据还能够包括基于指示数字组件对于其来说合格的上下文(例如,客户端设备110的位置、为应用112选择的口语语言、能够与之一起呈现数字组件的资源的通用资源定位符(URL))的上下文选择信号集合的用户组请求键UG_Request_Key。MPC集群130高速缓存或者以其他方式存储提供给MPC集群130以用于将来数字组件请求的数字组件的基于用户组的向量Vug。如上所述,能够在两级LUT或其他合适的数据结构中存储数据。
客户端设备110接收内容(304)。例如,客户端设备110能够接收用于由Web浏览器呈现的电子资源(例如,网页)或用于由原生应用呈现的应用内容。该内容能够包括一个或多个数字组件槽,该一个或多个数字组件槽包括在被执行时使得客户端设备110请求每个槽的数字组件的计算机可读代码,例如脚本。客户端设备110能够在客户端设备110的显示器上渲染内容。
客户端设备110识别用户组标识符集合(306)。用户组标识符集合能够是包括用户作为成员的用户组的用户组标识符。例如,用户组标识符集合能够是用户组列表中的用户组标识符。呈现内容或可信程序的应用112能够例如通过从客户端设备110的安全存储访问用户组列表来识别用户组标识符集合。
为了保护用户的隐私使得MPC集群130的计算系统不能够访问用户的用户组标识符,应用112能够向MPC集群130的每个计算系统发送用户组标识符的相应秘密份额。在此示例中,应用112发送表示用户标识符的秘密份额的分布式点函数。然而,能够使用其他适当的秘密共享技术,包括如下所述向MPC集群130发送布谷鸟过滤器。
应用112或可信程序能够使用用户组标识符集合来生成概率数据结构(308)。在一些实施方式中,概率数据结构是使用两个散列函数F1和F2的具有表的布谷鸟过滤器。布谷鸟散列是一种散列法,它使用总共有(1+\ε)N个条目的两个(或更多个)表来存储N个项,例如用户组标识符,使得每个条目将包含最多一个项。另外,每个项,例如用户组标识符,将出现在由两个散列函数F1和F2之一定义的两个条目之一中,其输出是集合[(1+\ε)N]。与键k相关联的项将出现在第一个表中的位置F1(k)或第二个表中的位置F2(k)处。对于相当大的N个项(例如,N≥1000),使用\ε=0.1就足够了,这意味着N个项能够使用布谷鸟散列法进行散列,其中组合的表大小为1.1N。在这些表达式中,ε可以被称为加载因子。
为了使用布谷鸟过滤器构建稀疏私有信息检索数据结构,使用布谷鸟散列法将多达N个用户组标识符散列到两个(或更多)表中,这些表具有1.1N的组合大小或另一适当大小。所有空条目都能够用0比特字符串替换。为了查询与键k相关联的用户组标识符,用户组标识符(如果它存在于数据结构中)将出现在第一个表中的条目F1(k)或第二个表中的F2(k)处。使用表大小C=1.1N将得到1≤F1(ug_id),F2(ug_id)≤C。
客户端设备110能够通过使用散列函数F1和F2两者为用户组标识符集合中的每个用户组标识符计算用户组标识符的两个可能位置来生成布谷鸟过滤器。如果两个可能位置中的至少一个是空的,则客户端设备110能够将元素插入到空位置中,该空位置能够在任一表中,以完成针对该用户组标识符的插入过程。如果两个位置都被占用,则客户端设备110随机挑选一个位置,并将当前在该位置中的项与要插入的项交换。客户端设备110然后能够重新计算两个散列函数F1和F2,并再次尝试插入。重复该过程,直到对于用户组标识符集合中的每个用户组标识符,插入成功或者太多次尝试失败。在构建了布谷鸟过滤器之后,每个用户组标识符ug_id被存储在表的特定索引中。
客户端设备110生成分布式点函数(310)。应用112或可信程序能够使用点函数和布谷鸟过滤器表来生成分布式点函数。分布式点函数表示点函数的秘密份额。一般来说,点函数是函数fi:[N][N],其中当x!=i并且f(i)=1时,f(x)=0。点函数fi的秘密共享是两个函数gi:[N]->[N]和hi:[N]->[N],使得对于集合[N]中的所有x,fi(x)=gi(x)+hi(x)。此外,给定函数hi或gi(但不是两者)的详细说明,不可能恢复原始函数fi。
如果i=F1(ug_id),则Gug_id(i)=gug_id,1(i)+gug_id,2(i)=ug_id, (1)
否则Gug_id(i)=gug_id,1(i)+gug_id,2(i)=0, (2)
如果i=F2(ug_id),则Hug_id(i)=hug_id,1(i)+hug_id,2(i)=ug_id (3)
否则Hug_id(i)=hug_id,1(i)+hug_id,2(i)=0 (4)
也就是说,能够在多个可能的点(例如,多个可能的用户组标识符)上评估特定点函数的分布式点函数,但是除了包括用户作为成员并且为其生成分布式点函数的用户组的用户组标识符ug_id之外,结果总是零。分布式点函数具有非常小的数据大小,与发送其他加密形式的用户组标识符相比,该数据大小能够通过网络传输而不使用太多带宽并且具有较低的时延。
对于给定用户组标识符ug_id、点函数F1和布谷鸟过滤器的对应第一表,客户端设备110生成用于计算系统MPC1的分布式点函数gug_id,1和用于计算系统MPC2的分布式函数gug_id,2。类似地,对于给定用户组标识符ug_id、点函数F2和布谷鸟过滤器的对应第二表,客户端设备110生成用于计算系统MPC1的分布式点函数hug_id,1和用于计算系统MPC2的分布式点函数hug_id,2。
客户端设备110向MPC集群130传输数字组件请求(312)。数字组件请求能够包括分布式点函数。客户端设备110能够向计算系统MPC1传输包括每个分布式点函数gug_id,1和每个分布式点函数hug_id,1的数字组件请求。数字组件请求能够包括第一级查找键,例如SHA256(UG_Request_Key)。客户端设备110能够基于数字组件请求的上下文信号来生成第一级查找键。例如,客户端设备110能够通过生成复合消息来生成第一级查找键,该复合消息包括上下文信号,诸如选择的数字组件将与其一起被呈现的资源的URL、提交数字组件请求的客户端设备110的位置、将呈现选择的数字组件的应用112的口语语言等。客户端设备110然后能够对复合消息应用散列函数,例如SHA256函数,以生成第一级查找键。
类似地,客户端设备110能够向计算系统MPC2传输包括每个分布式点函数gug_id,2和每个分布式点函数hug_id,2的数字组件请求。该数字组件请求还能够包括第一级查找键,例如SHA256(UG_Request_Key)。由于上下文信号是相同的,所以对于发送到MPC集群130中的两个计算系统MPC1和MPC2的数字组件请求,第一级查找键能够是相同的。
计算系统MPC1能够创建加性秘密份额的向量[M1]=[m1,1,…mC,1],其中对于1≤i≤C,mi,1=gug_id,1(i)。本文中使用括号来表示秘密的秘密份额。类似地,计算系统MPC2能够创建加性秘密份额的向量[M2]=[m1,2,…mC,2],其中对于1≤i≤C,mi,2=gug_id,2(i)。在这个示例中,秘密份额[mi,1]和[mi,2]是Gug_id(i)的加性秘密份额,并且[M1]和[M2]是M的两个加性秘密份额,即维数C的向量,其中Mi=Gug_id(i)。可以使用Shamir的秘密共享或另一种适当的秘密共享技术来生成秘密份额。计算系统MPC1和MPC2能够为点函数hug_id,1(i)和hug_id,1(i)生成相似的向量。
发送到计算系统MPC1和/或MPC2中的至少一个的数字组件请求能够包括上下文数字组件请求。如上所述,上下文数字组件请求能够包括用于数字组件呈现机会、第一方cookie和/或群组标识符的上下文信号。在这种情况下,上下文信号能够包括包含内容的电子资源的URL、客户端设备110的位置、应用112的口语语言等。
MPC集群130向SSP 170传输上下文数字组件请求(314)。SSP 170向一个或多个DSP150传输上下文数字组件请求(316)。DSP 150能够基于包括在上下文数字组件请求中的信息来生成基于上下文的向量Vcontext并且向SSP 170传输包括基于上下文的向量Vcontext的响应(318)。如上所述,DSP 150还能够提供新的或更新的基于用户组的向量Vug用于当前数字组件选择过程和/或以被存储在MPC集群130处以用于将来数字组件选择过程。
在一些实现方式中,来自DSP 150的响应能够包括用于基于上下文信号和/或包括在上下文数字组件请求中的其他信息选择的数字组件的无条件选择值。这能够是对基于上下文的向量Vcontext的补充或代替。例如,这些数字组件能够为当前数字组件请求而被选择,而不是用于高速缓存在MPC集群130处。
SSP 170向MPC集群130传输来自DSP 150的响应(320)。在一些实现方式中,SSP170能够在向MPC集群130传输响应之前对响应强制执行发布者控件。如果数字组件具有内容的发布者已经排除的特征,则此类发布者控件能够从考虑中过滤数字组件。此类发布者控件还能够过滤从发布者已经排除的数字组件提供者接收到的数字组件。
在一些实现方式中,SSP 170还能够在向MPC集群130发送向量和/或选择值之前基于发布者、SSP 170和/或DSP 150之间的共享协议来调整向量和/或选择值。这么做的结果是将从数字组件提供者160将为呈现或用户与数字组件的交互提供的总体选择值提供给发布者的最终金额。在一个示例中,SSP 170能够将基于用户组的向量Vug乘以值(1-share)以获得结果向量Vug’。参数share能够表示使用将被提供给SSP 170和/或DSP 150的向量Vug计算的选择值的百分比。参数share能够基于提供者与SSP 170和/或DSP 150的协议跨数字组件变化。在此示例中,结果向量Vug’能够由计算系统MPC1和MPC2存储并且只要所存储的向量及其数字组件保持对数字组件选择过程活动就被多次使用。
在另一示例中,SSP 170能够将上下文向量Vcontext乘以(1-share)以获得结果向量Vcontext’。在此示例中,结果向量能够由计算系统MPC1和MPC2存储并且用于当前数字组件选择过程。然而,由于上下文向量特定于当前数字组件选择过程,因此它可以不被用于将来数字组件选择过程。在另一示例中,每个数字组件的参数share能够由计算系统MPC1和MPC2存储并且重复利用于将来数字组件选择过程,例如,以计算结果向量Vug’和Vcontext’。
MPC集群130响应于数字组件请求而执行数字组件选择过程以选择要分发给客户端设备110的数字组件(322)。这能够包括使用第一级查找键来在计算系统MPC1和MPC2的两级查找表中识别合格数字组件。这还能够包括基于具有与用户的用户组标识符之一匹配的用户组标识符的数字组件来识别作为供选择的候选的数字组件。这还能够包括基于数字组件的选择值来从候选数字组件中选择数字组件。这能够全部在计算系统MPC1或MPC2不能够以明文访问用户组标识符和/或其他用户数据的情况下被执行。在图4中图示并且在下面描述用于使用安全MPC过程来选择数字组件的示例过程。
MPC集群130向客户端设备110传输选择结果的秘密份额(324)。选择结果能够是包括关于选择的数字组件的信息的字节数组的形式。例如,选择结果能够是包括第二LUT中的数字组件的值(例如,数字组件的选择值和数字组件的元数据)的字节数组。计算系统MPC1和MPC2能够使用安全MPC过程来确定选择结果的秘密份额,如下面更详细描述的。计算系统MPC1能够向客户端设备110传输选择结果的第一秘密份额,并且计算系统MPC2能够向客户端设备110发送选择结果的第二秘密份额。为了防止计算系统MPC1和MPC2知道选择的数字组件,能够防止计算系统MPC1和MPC2与彼此共享它们的选择结果的秘密份额,例如,通过使用应用(例如,浏览器)的公钥来对它们的秘密份额进行加密。
当使用两个表的布谷鸟过滤器时,MPC集群130能够提供两个选择结果的秘密份额,每个表一个。然而,检索两个数字组件的两个用户组列表选择值有助于选择值废弃。为了降低这种风险,MPC集群130能够使用另一种安全MPC技术来返回具有最高选择值的最多一个选择结果,如下所述。
客户端设备110确定对应于选择结果的数字组件(326)。对于客户端设备110从计算系统MPC1和MPC2接收两个秘密份额的每个选择结果,客户端设备110能够从这两个秘密份额确定选择结果。例如,使用如下面更详细描述的加性秘密份额库,客户端设备110能够将选择结果的两个秘密份额相加在一起,以获得以明文的选择结果。这使得客户端设备110能够访问数字组件的选择值和数字组件的元数据,例如数字组件的身份、客户端设备110能够从其下载数字组件的位置等。
客户端设备110能够呈现数字组件(328)。例如,应用112能够呈现具有在步骤204中接收到的内容的数字组件。在一些实施方式中,客户端设备110能够呈现选择结果的数字组件。如果接收到两个选择结果,则客户端设备110(例如,应用112)能够选择具有最高选择值的数字组件,并呈现选择的数字组件。
如果资源包括多个数字组件槽,则客户端设备110能够从MPC集群130和从SSP 170请求每个槽的相应数字组件。为了减少消耗的带宽和时延,客户端设备110能够一次为所有数字组件槽传输用户组标识符的分布式点函数。
尽管用于生成布谷鸟过滤器和分布式点函数的步骤在图3中被示为在接收内容之后被执行,但是客户端设备110能够在接收内容之前生成布谷鸟过滤器和分布式点函数。例如,客户端设备110能够定期地或响应于用户的用户组成员资格正在被更新,生成并高速缓存布谷鸟过滤器和分布式点函数。
图4是用于选择用于分发给客户端设备的数字组件的示例过程400的泳道图。过程400的操作能够例如由MPC集群130中的计算系统MPC1和MPC2来实现。过程400的操作也能够被实现为存储在一个或多个计算机可读介质上的指令,该一个或多个计算机可读介质可以是非暂时性的,并且由一个或多个数据处理装置对指令的执行能够使得一个或多个数据处理装置执行过程400的操作。
计算系统MPC1和MPC2使用与每个高速缓存的数字组件相关联的基于用户组的向量Vug和响应于从客户端设备110接收到的数字组件请求而接收到的上下文向量Vcontext来确定数字组件的选择值(402)。计算系统MPC1和MPC2能够确定向量由计算系统MPC1和MPC2存储在例如两级LUT中的每个数字组件的选择值,以及响应于从客户端设备110接收到的数字组件请求而从SSP 170接收到的任何向量,如以上参考图3所描述的。
为了确定数字组件的选择值,计算系统MPC1和MPC2能够确定所存储的与数字组件相关联的向量Vug和响应于数字组件请求而针对数字组件(和DSP 150的其他数字组件)从DSP 150接收到的基于上下文的向量Vcontext的点积。在一些实现方式中,计算系统MPC1和MPC2取决于共享被处理的方式而确定向量之一(例如Vcontext)和另一向量的在共享之后(例如,在乘以(1-share)之后)的结果(例如Vug’)的点积。点积的结果是针对对应的数字组件请求的数字组件的选择值。如果对于数字组件向MPC集群130提供参数share,则能够将从点积计算得到的值乘以(1-share)。
在一些实现方式中,计算系统MPC1和MPC2能够确定三个向量(数字组件的上下文向量Vcontext、数字组件的基于用户组的向量Vug和表示从其接收到数字组件请求的客户端设备110的用户的用户简档的用户向量Vuser)的点积作为数字组件的选择值。每个向量能够具有相同维度和表示相同特征的相同元素。然而,每个向量能够具有不同的元素值,这取决于由该元素表示的特征的权重。例如,用户简档向量中针对奥斯汀的位置元素的值在用户在奥斯汀的情况下能够具有正值或者在用户不在奥斯汀的情况下能够具有负值或零值;上下文向量中的相同位置元素的值在当前向用户示出的发布者内容与奥斯汀高度相关的情况下能够具有正值;数字组件的基于用户组的向量中的相同位置元素的值在数字组件与奥斯汀相关的情况下是正的。为了计算三个向量的点积,计算系统MPC1和MPC2首先在对应元素(三个向量中的每一个向量一个)之间执行逐元素乘法,然后对结果求和。例如,假定三个向量分别是V1={v1,1...v1,n}、V2={v2,1...v2,n}和V3={v3,1...v3,n},三个向量之间的点积将是
应用112能够例如基于从SSP 170或DSP 150接收到的特征向量来生成用户的用户简档。应用112能够随着时间而累积用户简档并且向每个计算系统MPC1和MPC2提供用户简档的相应秘密份额。
在一些实现方式中,计算系统MPC1和MPC2能够限制使用两个(或三个)向量确定的选择值。以这种方式,所得的选择值不高于第一阈值或低于第二阈值。例如,计算系统MPC1和MPC2能够使用cap函数来输出介于数字组件的指定最小值和指定最大值之间的范围之间的选择值,例如,由DSP 150为数字组件所指定的。
在一些实现方式中,例如,如果未使用用户简档,则计算系统MPC1和MPC2使用明文向量来以明文计算选择值。在一些实现方式中,计算系统MPC1和MPC2使用安全MPC过程以使用每个向量的秘密份额来计算选择值。例如,SSP 170或DSP 150能够将从敏感用户信息推导出的向量拆分成秘密份额并且将向量的相应秘密份额提供给每个计算系统MPC1和MPC2。在计算系统MPC1和MPC2计算每个选择值的秘密份额之后,计算系统MPC1和MPC2能够以明文重构选择值,例如,通过将选择值的秘密份额加在一起(如果秘密份额是加性秘密份额)。在点积计算中包括用户简档向量的实现方式中,如下所述,安全MPC过程被用于通过防止计算系统MPC1或MPC2以明文访问用户简档来保护用户隐私。
计算系统MPC1识别合格数字组件(404)。如上所述,对于包括客户端设备的用户作为成员的每个用户接口组,数字组件请求能够包括由客户端设备110使用散列函数F1为用户接口组标识符ug_id生成的分布式点函数gug_id,1。如果使用两个表的布谷鸟过滤器,则数字组件请求还能够包括由客户端设备110使用散列函数F2为用户接口组标识符ug_id生成的分布式点函数hug_id,1。数字组件请求还能够包括基于数字组件请求的上下文信号而生成的第一级查找键,例如SHA256(UG_Request_Key)。
计算系统MPC1能够使用数字组件请求的第一级查找键来识别数字组件的合格的基于用户组的向量。计算系统MPC1能够访问第一级LUT并且使用第一级查找键来识别第二级LUT的包括对于由第一级查找键表示的上下文信号集合有资格用于呈现的数字组件(例如,对于其已接收到基于用户组的向量)的基于用户组的向量的信息。例如,如上所述,第二级LUT的每个行包括数字组件和基于上下文信号集合的第二级查找键的信息。因此,计算系统MPC1能够使用第一级查找键来识别第二级LUT的具有与由在数字组件请求中接收到的第一级查找键定义的上下文信号集合匹配的上下文信号集合的行。这些行包括对于由在数字组件请求中接收到的第一级查找键定义的上下文而言有资格被呈现或具有合格的基于用户组的向量的数字组件的信息。
计算系统MPC2识别合格的基于用户组的向量(406)。计算系统MPC2能够识别针对从客户端设备110接收到的数字组件请求的合格的基于用户组的向量。对于包括客户端设备的用户作为成员的每个用户接口组,该数字组件请求能够包括由客户端设备110使用散列函数F1为用户接口组标识符ug_id生成的分布式点函数gug_id,2。如果使用两个表的布谷鸟过滤器,则数字组件请求还能够包括由客户端设备110使用散列函数F2为用户接口组标识符ug_id生成的分布式点函数hug_id,2。数字组件请求还能够包括基于数字组件请求的上下文信号生成的第一级查找键,例如SHA256(UG_Request_Key)。
由计算系统MPC2接收到的数字组件请求的第一级查找键能够与由计算系统MPC1接收到的第一级查找键相同。每个分布式点函数gug_id,2能够基于与由计算系统MPC1接收到的对应分布式点函数相同的分布式点函数Gud_id来生成。也就是说,对于包括用户作为成员的用户组的用户组标识符ud_id,客户端设备110能够使用散列函数F1来生成数字组件请求的分布式函数gug_id,1和gug_id,2。类似地,对于包括用户作为成员的用户组的用户组标识符ud_id,客户端设备110能够使用散列函数F2来生成数字组件请求的分布式函数hug_id,1和hug_id,2。
为简洁起见,过程400的剩余步骤根据响应于根据散列函数F1的分布式点函数的数字组件请求而选择用于分发给客户端设备110的数字组件来描述。然而,能够对散列函数F2的分布式点函数执行相同的步骤。这能够得到两个选择的数字组件,并且MPC集群130能够执行附加操作来选择两个数字组件中的一个,如下所述。
计算系统MPC2能够使用数字组件请求的第一级查找键来识别合格的基于用户组的向量。计算系统MPC2能够访问第一级LUT,并且使用第一级查找键来识别第二级LUT的包括对于由第一级查找键表示的上下文信号集合有资格被呈现的数字组件(例如,对于其已经接收到选择值)的信息的行。如上所述,每个计算系统MPC1和MPC2能够维护包括相同信息的相应的两级LUT。
针对每个合格选择值,计算系统MPC1和MPC2响应于数字组件请求而确定该选择值及其数字组件是否是被选择用于分发给客户端设备110的候选(408)。候选的基于用户组的向量是具有与用户的用户组标识符相匹配的用户组标识符(例如包括用户作为成员的用户组的用户组标识符)的数字组件的合格的基于用户组的向量。如上所述,能够将每个数字组件映射到包括DSP 150或数字组件提供者160指示应该向其呈现数字组件的成员的一个或多个用户组。如上所述,此信息是第二级LUT的第二级查找键的部分。
第二级LUT中的行的数字组件在作为该行的第二级查找键的部分的其用户组标识符ug_id与用户的用户组标识符之一匹配的情况下是供选择的候选。在概念上,为了使用布谷鸟过滤器来确定数字组件是否是候选以表示用户的组成员资格,其中布谷鸟过滤器允许将元素插入到两个(或更多个)可能位置之一中,计算系统能够确定第二级查找键的用户组标识符ug_id是否与两个(或更多个)布谷鸟过滤器位置之一中的两个(或更多个)标签之一匹配。
除了此基于用户组的条件之外,MPC集群130还能够应用其他条件、频率控制、静音、预算、k-匿名和/或调步约束。例如,为了成为数字组件选择过程的候选,在数字组件选择过程中能够要求数字组件满足合格性的一个或多个条件。这些条件能够包括例如与数字组件相关联的用户组是否与数字组件将被提供给的用户的用户组匹配;数字组件是否满足防止同一用户在一段时间内被暴露于同一数字组件超过指定次数的频率控制条件;数字组件是否满足防止数字组件被呈现给已经选择静音的用户的静音条件;数字组件是否满足k-匿名条件;和/或包括数字组件的活动是否满足在活动中调步数字组件的分发的调步合格性条件。
计算系统MPC1和MPC2能够使用利用秘密份额的安全MPC技术来识别候选基于用户组的向量,使得计算系统MPC1和MPC2都不知道哪些数字组件是候选或包括用户作为成员的用户组。为了这么做,计算系统MPC1对于与用户组标识符ug_id相关联的每个高速缓存的数字组件计算候选参数is_dc_a_candidate的第一份额。类似地,计算系统MPC2对于与用户组标识符ug_id相关联的每个高速缓存的数字组件计算候选参数is_dc_a_candidate的第二份额。候选参数is_dc_a_candidate能够是指示链接到高速缓存的数字组件的基于用户组的向量是否是候选的布尔值(例如,零或一)。如果数字组件的基于用户组的向量是候选,则使用基于用户组的向量计算的其对应的选择值是候选以及对应的数字组件。
能够将候选参数is_dc_a_candidate的第一份额表示为[is_dc_a_candidatedc,1]并且能够将候选参数is_dc_a_candidate的第二份额表示为[is_dc_a_candidatedc,2]。与用户组标识符ug_id相关联的高速缓存的数字组件dc的候选参数的第一秘密份额是等同于ug_id==[gug_id,1(F1(ug_id))]的布尔的秘密份额。与用户组标识符ug_id相关联的高速缓存的数字组件dc的候选参数的第二秘密份额是等同于ug_id==[gug_id,2(F1(ug_id))]的布尔的秘密份额。符号“==”表示相等性测试,其在两个值相等的情况下为真(或1)或者在值不相等的情况下为假(或0)。
计算系统MPC1和MPC2能够在计算系统MPC1和MPC2之间的一次或多次往返情况下使用安全MPC技术来针对散列函数F1计算秘密份额[is_dc_a_candidatedc,1]和[is_dc_a_candidatedc,2]以评价ug_id==[gug_id,1(F1(ug_id))]和ug_id==[gug_id,2(F1(ug_id))]的相等性表达式。也就是说,计算系统MPC1和MPC2能够对于作为数字组件请求的部分从客户端设备110接收到的每个用户组标识符基于分布式点函数gug_id,1和gug_id,2来确定与用户组标识符ug_id相关联的每个高速缓存的数字组件dc的秘密份额[is_dc_a_candidatedc,1]和[is_dc_a_candidatedc,2]。
计算系统MPC1和MPC2能够使用支持下面表3中示出的操作的秘密共享技术或秘密共享库。支持这些操作的一个示例秘密共享技术是通过私有信息聚合的安全性(SEPIA)。
表3
计算系统MPC1确定基于基于用户组的向量和上下文向量计算的选择值的次序(410)。类似地,计算系统MPC2基于基于用户组的向量和上下文向量来确定选择值的次序(412)。每个计算系统MPC1和MPC2能够确定与其第二级LUT中与UG_Request_Key匹配的高速缓存的数字组件相关联的选择值的次序。此次序能够包括对于在第二级LUT中高速缓存的与UG_Request_Key匹配的所有数字组件计算的所有选择值,包括对于数字组件选择过程来说合格的候选数字组件的选择值和不是候选并且因此不合格的数字组件的选择值。次序能够是从计算的最高选择值到计算的最低选择值。在一些实现方式中,用于次序的选择值能够是例如在与DSP 150和/或SSP 170的任何共享之后将被提供给将与之一起呈现选择的数字组件的资源的发布者的值。由于选择值是明文的,因此计算系统MPC1和MPC2不必执行任何往返计算来对选择值进行排序。替代地,每个计算系统MPC1和MPC2能够独立地对其第二级LUT的选择值进行排序。如果选择值作为秘密份额被存储在每个计算系统MPC1和MPC2处,其中每个计算系统MPC1和MPC2具有每个选择值的相应秘密份额,则计算系统MPC1和MPC2能够使用往返计算来执行安全MPC过程以对选择值进行排序。
计算系统MPC1和MPC2确定与高速缓存的数字组件相关联的每个候选选择值的累积值的秘密份额(414)。在概念上,数字组件的给定选择值的累积值表示从次序的顶部到给定选择值(如果给定选择值是候选则包括给定选择值)的候选选择值的总数目。此概念被示出在下表4中。
排序的选择值 | is_dc_a_candidate | 累积值(acc) | 累积值是否等于1? |
最高 | 0 | 0 | 0 |
第二高 | 1 | 1 | 1 |
第三高 | 0 | 1 | 1 |
第四高 | 1 | 2 | 0 |
… | … | … | … |
表4
在一些实现方式中,数字组件的给定选择值的累积值表示从次序的顶部到给定选择值(如果给定选择值是候选则排除给定选择值)的候选选择值的总数目。在此示例中,第四列将表示累积值是否等于零而不是一。在任一情况下,每个选择值的累积值指示选择值在候选选择值的排名次序中的位置,候选选择值是用于基于选择值与和用户的用户组标识符匹配的用户组标识符相关联而选择的候选。
在表4中,对于具有等于一的候选参数is_dc_a_candidate的每个选择值,累积值(acc)随着它从次序的顶部前进到次序的底部而递增。例如,与高速缓存的数字组件相关联的最高选择值的累积值acc是零,因为具有最高选择值的数字组件的候选参数is_dc_a_candidate等于零。具有第二高选择值的数字组件的累积值acc是一,因为具有第二选择值的数字组件的候选参数is_dc_a_candidate等于一并且没有高于具有第二高选择值的数字组件的数字组件具有等于一的候选参数is_dc_a_candidate。往次序下方移动,具有第三高选择值的数字组件的候选参数is_dc_a_candidate是零,所以具有第三高选择值的数字组件的累积值acc不从具有第二高选择值的数字组件的累积值acc递增。由于具有第四高选择值的数字组件的候选参数is_dc_a_candidate是一,因此具有第四高选择值的数字组件的累积值acc从具有第三高选择值的数字组件的累积值acc递增一。因此,具有第四高选择值的数字组件的累积值acc等于二,因为从最高选择值到第四高选择值(包括最高选择值和第四高选择值)存在两个具有候选参数is_dc_a_candidate的选择值。
在一些实现方式中,给定数字组件的累积值表示从次序的顶部到给定数字组件(排除给定数字组件)的候选数字组件的总数目。在此示例中,第四列将表示累积值是否等于零而不是一。在任一情况下,每个数字组件的累积值指示数字组件在候选数字组件的排名次序中的位置,候选数字组件是用于基于数字组件与和用户的用户组标识符匹配的用户组标识符相关联而选择的候选。
使用表4,计算系统MPC1和MPC2将选择与候选参数is_dc_a_candidate具有值一并且累积值acc具有值一的选择参数相对应的数字组件以用于分发给客户端设备110,如表4的第四列中所指示的。这表示具有候选参数is_dc_a_candidate具有值一的最高排序选择值的数字组件。由于候选参数is_dc_a_candidate在秘密份额中以便计算系统MPC1和MPC2维护用户隐私并且确保不泄漏用户数据,因此计算系统MPC1和MPC2确定每个选择值的累积值acc的秘密份额并且使用往返计算来确定哪个选择值具有等于一的累积值acc和等于一的候选参数is_dc_a_candidate。
计算系统MPC1和MPC2能够在没有任何往返计算的情况下独立地确定它们的每个数字组件的累积值acc的秘密份额。例如,计算系统MPC1能够对于每个数字组件dc通过按从最高到最低的次序遍历所有选择值并且沿途按次序对数字组件的候选参数is_dc_a_candidate求和来确定累积值acc的第一份额[accdc,1],如以上参考表4所描述的。类似地,计算系统MPC2能够对于每个数字组件dc通过按从最高到最低的次序遍历所有选择值并且沿途按次序对数字组件的候选参数is_dc_a_candidate求和来确定累积值acc的第二份额[accdc,2]。
计算系统MPC1和MPC2对于与数字组件dc相关联的每个选择值确定指示累积值acc是否具有指定值的结果的秘密份额(416)。指定值可以是值一,如表4的第3和4列所示,或者在其他实现方式中为零。如上所述,累积值为一并且候选参数is_dc_a_candidate为一的数字组件是具有候选选择值当中的最高选择值的数字组件。
计算系统MPC1和MPC2能够参与作为安全MPC过程的部分的多轮计算,例如多个远程过程调用(RPC),以根据每个数字组件的秘密份额计算相等性运算accdc==1。在此过程结束时,计算系统MPC1对于每个数字组件dc具有结果[accdc,1]==1的秘密份额,而计算系统MPC2对于每个数字组件dc具有结果[accdc,2]==1的另一秘密份额。
计算系统MPC1和MPC2确定选择结果(418)。计算系统MPC1和MPC2能够对于每个数字组件dc基于accdc==1的秘密份额和候选参数is_dc_a_candidatedc的秘密份额来确定选择结果。为了这样做,计算系统MPC1和MPC2能够根据秘密份额计算每个数字组件dc的获胜者参数is_dc_the_winnerdc。获胜者参数is_dc_the_winnerdc能够是指示数字组件dc是否是选择过程的获胜者(例如对应的数字组件是否响应于数字组件请求而被选择以用于分发给客户端设备110)的布尔值(例如,零或一,或真或假)。
数字组件的获胜者参数is_dc_the_winnerdc能够是基于数字组件的候选参数is_dc_a_candidatedc以及数字组件的累积值acc是否等于指定值,例如,取决于如何如上所述确定表4的第四列而等于一或零。在下面的示例中,MPC集群130能够对于每个数字组件确定这两个参数的乘积。还能够使用其他技术来确定候选参数is_dc_a_candidatedc是否是真或一并且累积值是否等于指定值,例如使用如下所述的真值表。
每个计算系统MPC1和MPC2能够执行秘密份额乘法协议以对于每个数字组件dc根据秘密份额来计算获胜者参数is_dc_the_winnerdc==(is_dc_a_candidatedc×(accdc==1))。取决于所使用的安全MPC过程,这可能需要计算系统MPC1和MPC2之间的一个RPC来将两个秘密份额相乘。在此MPC过程结束时,计算系统MPC1对于每个数字组件dc具有结果is_dc_the_winnerdc的一个秘密份额,被表示为[is_dc_the_winnerdc,1]=[is_dc_a_candidatedc,1]x([accdc,1]==1)。类似地,计算系统MPC2对于每个数字组件dc具有结果is_dc_the_winnerdc的另一秘密份额,被表示为[is_dc_the_winnerdc,2]=[is_dc_a_candidatedc,2]x([accdc,2]==1)。注意,对于所有数字组件,至多一个数字组件具有等于一的获胜者参数is_dc_the_winnerdc,其对应于被选择以用于分发给客户端设备110的数字组件。所有其他数字组件将等于零。
计算系统MPC1和MPC2能够基于数字组件的获胜者参数和数字组件的数字组件信息元素dc_information_element来计算选择结果。如上所述,数字组件的数字组件信息元素dc_information_element能够包括数字组件的选择值和数字组件的其他数据,例如,形式为具有数字序列的字节数组。
计算系统MPC1和MPC2能够使用下面的关系式5来计算作为resultF1的选择结果。
在此示例中,选择结果resultF1将在不存在具有与用户的用户组标识符匹配的用户组标识符的高速缓存的数字组件的情况下具有值零或者将具有等于具有等于一的获胜者参数is_dc_the_winnerdc的选择的数字组件的数字组件信息元素dc_information_element的值。
为了在秘密份额中执行计算,计算系统MPC1取得所有高速缓存的数字组件信息元素,并且对于每个数字组件dc,将能够为明文的数字组件信息元素dc_information_elementdc乘以获胜者参数的第一秘密份额[is_dc_the_winnerdc,1]。计算系统MPC1然后能够确定这些乘积之和并且将该和返回给提交了数字组件请求的客户端设备110。也就是说,计算系统MPC1能够确定使用下面的关系式6的求和作为结果的第一份额
计算系统MPC1能够将选择结果的第一份额返回给客户端设备110。类似地,计算系统MPC2能够将选择结果的第二份额返回给客户端设备110。应用112然后能够使用两个秘密份额和来以明文重构选择结果resultF1,例如通过在采用加性秘密份额算法的情况下确定秘密份额之和。如果选择结果resultF1具有值零,则MPC集群130不为包括用户作为成员的任何用户组识别数字组件。否则,选择结果resultF1具有等于数字组件信息元素dc_information_element的值,应用112能够解析数字组件信息元素dc_information_element以获得数字组件的选择值和元数据。如上所述,应用112然后能够显示数字组件或者使用该数字组件和从SSP 170接收到的其他数字组件来执行选择过程。
在双表布谷鸟过滤器实现方式中,应用112能够接收两个选择结果,每个散列函数F1和F2一个。在此示例中,应用112能够从包括这些数字组件和从SSP 170接收到的任何数字组件两者的数字组件集合中选择数字组件。
在一些实现方式中,应用112能够执行最终验证,即由MPC集群130选择的数字组件的用户组与包括用户作为成员的用户组匹配。例如,每个数字组件的数字组件信息元素dc_information_element能够包括该数字组件的用户组标识符。应用112能够将数字组件信息元素dc_information_element的用户组标识符与用户的用户组列表进行比较。如果不存在匹配,则应用112能够从选择过程中排除数字组件。如果存在匹配,则应用112能够将数字组件包括在选择过程中。
如上所述,从MPC集群130接收两个选择结果能够促进选择值打架。为了降低此风险,MPC集群130能够执行返回仅一个选择结果的过程。
在单表布谷鸟过滤器实现方式中,每个用户组标识符ug_id能够出现在其索引为F1(ug_id)和F2(ug_id)的两个(或更多个)地方中。令M表示单表布谷鸟过滤器并且Mi表示表中的第i个元素的值。如果或则具有用户组标识符ug_id的数字组件的选择值的候选参数is_dc_a_candidatedc为真。此MPC集群130能够使用下面的关系式8或9来针对选择值计算与用户组标识符ug_id相关联的数字组件dc的候选参数is_dc_a_candidatedc。
关系式8能够涉及能够并行地执行的两个相等性测试。关系式9能够涉及一个相等性测试和一个乘法。当使用安全MPC过程来在秘密份额上执行这些运算时,乘法需要较少的计算和一次往返但是相等性测试能够在概率求解中需要更多的计算和四次往返。因此,关系式8能够需要比关系式9少一次往返但更多的计算。
计算系统MPC1能够基于关系式8使用下面的关系式10来在秘密份额上针对选择值计算与用户组标识符ug_id相关联的数字组件dc的候选参数is_dc_a_candidatedc。
[is_dc_a_candidatedc,1]=(ug_id==[gug_id,1(F1(ug_id))])+(ug_id==[gug_id,1(F2(ug_id))]) (10)
类似地,计算系统MPC2能够基于关系式9使用下面的关系式11来在秘密份额上计算与用户组标识符ug_id相关联的数字组件dc的候选参数is_dc_a_candidatedc。
[is_dc_a_candidatedc,2]=(ug_id==[gug_id,2(F1(ug_id))])+(ug_id==[gug_id,2(F2(ug_id))]) (11)
计算系统MPC1能够基于关系式9使用下面的关系式12来在秘密份额上计算与用户组标识符ug_id相关联的数字组件dc的候选参数is_dc_a_candidatedc。
[is_dc_a_candidatedc,1]=(ug_id-[gug_id,1(F1(ug_id))])×(ug_id-[gug_id,1(F2(ug_id))]) (12)
计算系统MPC2能够基于关系式10使用下面的关系式13来在秘密份额上计算与用户组标识符ug_id相关联的数字组件dc的候选参数is_dc_a_candidatedc。
[is_dc_a_candidatedc,2]=(ug_id-[gug_id,2(F1(ug_id))])×(ug_id-[gug_id,2(F2(ug_id))]) (13)
MPC集群130然后能够使用与图3的过程300类似的过程来计算选择结果result的秘密份额。特别地,计算系统MPC1和MPC2能够对于每个数字组件dc分别基于数字组件的选择值的次序和数字组件的候选参数来计算累积值acc的秘密份额[accdc,1]和[accdc,2]。
计算系统MPC1和MPC2能够对于每个数字组件dc分别基于数字组件dc的候选参数以及数字组件dc的累积值是否等于一来计算获胜者参数is_dc_the_winner的秘密份额[is_dc_the_winnerdc,1]和[is_dc_the_winnerdc,2]。
计算系统MPC1和MPC2能够使用下面的关系式14和15来计算选择结果result的秘密份额[result1]和[result2]。
[result1]=∑dc([is_dc_the_winnerdc,1]×dc_information_elementdc) (14)
[result2]=∑dc([is_dc_the_winnerdc,2]×dc_information_elementdc) (15)
计算系统MPC1能够将选择结果[result1]的第一份额返回给应用112并且计算系统MPC2能够将选择结果[result2]的第二份额返回给应用112。如上所述,应用112然后能够使用两个秘密份额来重构选择结果result。
在一些实现方式中,不是使用分布式点函数,而是能够向MPC集群130发送布谷鸟过滤器本身。在此示例中,应用112能够使用通过用户组标识符或来自封锁标识符集合的标识符和由应用112生成的两个随机变量中的任一随机变量参数化的伪随机函数(PRF)。例如,假定由应用112生成的三个随机变量是rand_var1a、rand_var1b和rand_var2。还假定桶中的每个项是k比特整数。在一些实现方式中,应用112和MPC集群130提前就PRF达成一致,其中k是布谷鸟过滤器的桶中的每个项中的比特数。布谷鸟过滤器的桶中的每个项能够被用户组标识符或封锁标识符占用,或者为空。例如,应用112能够生成其项为PRF(ug_id,rand_var1a)、PRF(blocked_id,rand_var1b)或0的布谷鸟过滤器表,其中ug_id是通过基于内容提供者的域在用户组的标签(例如,用户组标识符)上应用HMAC而生成的用户组的标识符并且0表示空项。对所有用户组标识符和封锁标识符重复该过程。
应用112能够基于针对用户组标识符和封锁标识符生成的布谷鸟过滤器表来生成向量B。能够将向量B中的每个值Bi表示为Bi=(Ai_PRF(rand_var2,i))modp,其中A是布谷鸟过滤器表并且i是向量B和布谷鸟过滤器表A的索引。当应用112发起对用于数字组件槽的数字组件的请求时,应用将rand_var1a、rand_var1b和rand_var2作为请求的参数传输到计算系统MPC1。应用112还将向量B、rand_var1a和rand_var1b作为请求的参数传输到计算系统MPC2。PRF(rand_var2,i)和Bi是Ai在Zp中的两个加性秘密份额,分别由计算系统MPC1和MPC2保持。因为计算系统MPC1和MPC2都不能够访问这两个秘密份额,所以计算系统都不能够重现布谷鸟过滤器表,从而保存用户隐私。
计算系统MPC1确定每个候选选择值是否与请求中指定的用户组相关联。计算系统MPC1接收布谷鸟过滤器表M的秘密份额的数组的等同物,由[M1]表示。存在于M中的每个用户组标识符将位于N个可能位置之一中。
计算系统MPC1根据下面的关系式16来计算基于用户组的候选参数[is_dc_a_candidatex,1]:
其中Π表示多个项的乘法。这里,ug_id(x)是用于检索与选择值x相关联的用户组标识符ug_id的函数,{F1,…FN}是用于计算布谷鸟过滤器表A内的项的可能索引的散列函数的集合,并且rand_val1a是在数字组件请求中接收到的随机值。[Mx,1]是数组[M1]中的第x个元素。==是明文整数与秘密整数的秘密份额之间的相等性测试。==的结果是要么为0(不相等)要么为1(相等)的秘密整数的秘密份额。这里,[Mi,1]的值=[PRF(rand_val2a,i)1]。
类似地,计算系统MPC2根据下面的关系式17来计算基于用户组的候选参数[is_dc_a_candidatex,2]:
这里,[Mi,2]的值=Bi。
以上描述将其值为0或1的秘密整数的秘密份额之间的乘法与计算机逻辑AND相关。以上描述还将1减去其值为0或1的秘密整数的秘密份额与计算机逻辑NOT相关。在一些实现方式中,能够采用替代解决方案来评价关于秘密份额的逻辑表达式。例如,为了计算其值为0或1的秘密整数的加性若干秘密份额的逻辑AND,MPC服务器能够将那些加性秘密份额的和与秘密份额的数目进行比较。对于又一示例,为了计算以秘密份额作为输入的任意逻辑表达式,MPC服务器能够采用真值表方法,即,计算系统MPC1能够构建包含由MPC2保持的输入秘密份额的每个可能组合的一个行的真值表。计算系统MPC1为表示为[result1]的结果随机地选择秘密份额。对于每个行,计算系统MPC1能够组合其输入秘密份额和由MPC2保持的推测输入秘密份额来以明文重构逻辑表达式的输入,然后评价逻辑表达式的结果。对于每个行,计算系统MPC1将结果拆分为两个秘密份额,其中的一个是[result1],另一个是[result2]。计算系统MPC1然后将[result2]写入到真值表中的行。在计算系统MPC1完成真值表的构建之后,计算系统MPC2能够发起不经意传输扩展(OTe)以提取真值表中与由MPC2保持的输入秘密份额相对应的行。提取结果是[result2]。在以上过程结束时,计算系统MPC1和MPC2分别保持[result1]和[result2],它们是逻辑表达式结果的秘密份额。计算系统MPC1不知道[result2]的值,而计算系统MPC2不知道[result1]的值。在一些实现方式中,计算系统MPC1和MPC2能够通过构建乱码电路来评价逻辑表达式以确定is_dc_a_candidatesv,1和is_dc_a_candidatesv,2。
图5是图示用于选择用于分发给客户端设备的数字组件的示例过程500的流程图。过程500的操作能够例如由MPC集群130的计算系统MPC1或计算系统MPC2实现。还能够将过程500的操作实现为存储在可以为非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置对指令的执行能够使一个或多个数据处理装置执行过程500的操作。为了简洁,过程500被描述为由计算系统MPC1执行。
计算系统MPC1从客户端设备110接收数字组件请求(502)。数字组件请求能够包括识别包括客户端设备110的用户作为成员的一个或多个第一用户组的数据的秘密份额。例如,数字组件请求能够包括一个或多个布谷鸟过滤器或其他合适的概率数据结构和/或分布式点函数。每个分布式点函数能够表示点函数的秘密份额,其指示客户端设备的用户是否是由相应第一用户组标识符识别的相应第一用户组的成员。例如,由计算系统MPC1接收到的数字组件请求能够包括针对包括客户端设备110的用户作为成员的每个用户组的分布式点函数gug_id,1。如上所述,数字组件请求还能够包括上下文信号、第一方cookie和/或群组标识符。
数字组件请求还能够包括查找键。例如,数字组件请求能够包括UG_Request_Key,其能够是基于上下文信号集合(例如数字组件请求的上下文信号集合)的复合消息。能够向一个或多个附加MPC系统(例如计算系统MPC2)发送类似的数字组件请求,该附加计算系统将在安全MPC过程中与计算系统MPC1协作以选择要响应于数字组件请求而向客户端设备110提供的数字组件。对于数字组件请求的每个分布式点函数,每个其他数字组件请求能够包括使用相同点函数来针对相同用户组标识符生成的对应的分布式点函数。例如,计算系统MPC2将对于由计算系统MPC1接收到的每个分布式点函数gug_id,1接收对应的分布式点函数gug_id,2。
计算系统MPC1向内容平台传输上下文数字组件请求(504)。例如,计算系统MPC1能够向SSP 170传输上下文数字组件请求。上下文数字组件请求能够包括上下文信号、第一方cookie以及接收到的数字组件请求的群组标识符。
计算系统MPC1接收多个数字组件中的每一个数字组件的选择数据(506)。数字组件的选择数据能够包括第一向量数据,第一向量数据定义至少部分地基于上下文信号集合选择的值的基于上下文的向量Vcontext。例如,数字组件的选择数据能够包括基于上下文的向量或基于上下文的向量的值的第一秘密份额的数组。
计算系统MPC1对于多个数字组件中的每一个数字组件获得第二向量数据,第二向量数据定义至少部分地基于与数字组件相对应的相应用户组选择的值的基于用户组的向量Vug(508)。例如,计算系统MPC1能够存储基于用户组的向量Vug的第一秘密份额的基于用户组的向量Vug。
计算系统MPC1基于第一向量数据和第二向量数据来确定每个数字组件的选择值(510)。例如,计算系统MPC1能够确定两个向量Vug和Vcontext的点积。如果向量被传输并存储在秘密份额中,则计算系统MPC1能够与计算系统MPC2协作以确定向量Vug和Vcontext的点积的秘密份额。在一些实现方式中,如上所述,计算系统MPC1使用向量Vug、Vcontext和用户的用户简档的用户简档向量来确定数字组件的选择值。
计算系统MPC1与多个MPC系统中的一个或多个第二计算系统协作使用安全MPC过程来对于每个数字组件确定候选参数(512)。候选参数is_dc_a_candidate能够指示数字组件是否满足数字组件选择过程中的合格性的一个或多个条件。这些条件能够包括例如与数字组件相关联的用户组是否与数字组件将被提供给的用户的用户组匹配;数字组件是否满足防止同一用户在一段时间内被暴露于同一数字组件超过指定次数的频率控制条件;数字组件是否满足防止数字组件被呈现给已经选择静音的用户的静音条件;数字组件是否满足k-匿名条件;和/或包括数字组件的活动是否满足在活动中调步数字组件的分发的调步合格性条件。
例如,候选参数is_dc_a_candidate能够指示与数字组件相对应的第二用户组标识符是否与一个或多个第一用户组标识符中的至少一个匹配。也就是说,在此示例中,数字组件的候选参数is_dc_a_candidate指示数字组件的用户组标识符是否与包括客户端设备110的用户作为成员的用户组的用户组标识符匹配。如果是,则数字组件是作为供被选择的候选的候选数字组件。如上所述,计算系统MPC1能够使用安全MPC过程来与包括计算系统MPC2的一个或多个附加MPC系统协作以对于每个选择值获得候选参数is_dc_a_candidate的第一秘密份额。
能够在基于上下文例如使用用户组请求键UG_Request_Key来过滤数字组件之后执行对数字组件的候选参数的这种确定。例如,MPC集群130能够使用候选参数is_dc_a_candidate来执行两个顺序阶段过滤操作,一个基于请求键而另一个基于一个或多个条件。
计算系统MPC1生成选择结果的第一秘密份额(514)。计算系统MPC1能够与包括计算系统MPC2的一个或多个附加MPC系统协作,以生成选择结果。通常,选择结果识别具有最高选择值的候选数字组件。如上所述,MPC系统能够对选择值进行排序,确定每个选择值的累积值,并且对于与选择值相关联的每个数字组件确定获胜者参数is_dc_the_winner的秘密份额。MPC系统然后能够协作以对于每个选择值确定选择值的获胜者参数和选择值的数字组件信息元素的乘积之和的秘密份额作为选择结果的秘密份额。例如,MPC系统能够使用以上示出的关系式5来确定乘积之和的秘密份额。
计算系统MPC1向客户端设备110提供识别给定数字组件的选择结果的第一秘密份额(516)。如上所述,选择结果识别所选择的数字组件和数字组件的选择值。客户端设备110还能够从一个或多个附加MPC系统中的每一个接收选择结果的相应秘密份额。如上所述,客户端设备110能够使用秘密份额来重构选择结果。
在一些情况下,能够将上下文向量Vcontext认为是用于DSP的敏感信息。在此类情况下,DSP能够例如在秘密份额中提供上下文向量Vcontext的加密版本。例如,DSP 150能够向计算系统MPC1提供上下文向量Vcontext的第一秘密份额并且向MPC2提供上下文向量Vcontext的第二秘密份额。在此示例中,计算系统MPC1和MPC2能够确定具有最高选择值的数字组件,并且因此是使用安全MPC过程的选择的数字组件,使得计算系统不能以明文访问向量或选择值。能够使用这个过程代替上述基于累积值的排序。
计算系统MPC1和MPC2然后能够执行安全MPC过程以计算向量(例如,用户组向量、上下文向量和用户向量)的点积。此计算的结果是两个秘密份额数组[V1]={[v1,1],…[vN,1]}和[V2]={[v1,2],…[vN,2]}。在这些表示中,N是数组的维度并且第二下标表示元素的秘密份额,例如,第一=1,第二=2。
数组中的每个元素能够对应于数字组件的选择值。例如,[v1,1]和[v1,2]能够是针对数字组件的选择值的元素的两个秘密份额。在一些实现方式中,数组中的每个元素包括数字组件的复合消息(例如,字节数组)。如上所述,字节数组能够包括从点积计算得到的选择值和数字组件的信息。
假定计算系统MPC1和MPC2两者都能够访问与元素数组相对应的明文项{Item1,…ItemN}的相同列表。函数reconstruct能够被用于重构由秘密份额[vi,1]和[vi,2]表示的数组中的项的值vi。也就是说,vi=reconstruct([vi,1],[vi,2])。
计算系统MPC1和MPC2能够返回最大值和数组中具有最大值的对应项,而不以明文向计算系统MPC1或MPC2泄漏任何信息。为了这样做,计算系统MPC1应该返回秘密份额对{[max_v1],[max_element1]}并且计算系统MPC2应该返回秘密份额对{[max_v2],[max_element2]},使得reconstruct([max_v1],[max_v2])=reconstruct([vmax_i,1],[vmax_i,1])并且reconstruct([max_element1],[max_element2])=Itemmax_i。在此示例中,最大值对应于最高选择值并且最大元素对应于具有最大值的数字组件。最大元素能够包括复合消息,例如数字组件的字节数组。
用于在秘密份额中确定最大值和具有最大值的元素的一种方式是在任何秘密份额对之间进行成对秘密份额比较。例如,对于任何i≤i<j≤N,计算系统MPC1和MPC2能够协作以执行秘密份额比较。计算系统MPC1获得[mi,j,1]=[vi,1]>[vj,1]并且计算系统MPC2获得[mi,j,2]=[vi,2]>[vj,2]。比较参数mi,j=reconstruct([mi,j,1],[mi,j,2])在vi>vj的情况下为一,否则为零。参数mi,j的秘密份额[mi,j,1]和[mi,j,2]能够是ZM中的加性秘密份额,其中M≥N。
为了找到最大元素,计算系统MPC1在本地对对于每个i∈[1,N]有多少其他值大于vi进行计数,即,类似地,计算系统MPC2在本地对对于每个i∈[1,N]有多少其他值大于vi进行计数,即,计算系统MPC1和MPC2然后协作以对于每个i∈[1,N]测试counti是否等于0,即计算系统MPC1具有[is_max_elementi,1]=([counti,1]==0)并且计算系统MPC2具有[is_max_elementi,2]=([counti,2]==0)。注意,[is_max_elementi,1]和[is_max_elementi,2]能够是Z2中的加性秘密份额。
计算系统MPC1能够通过[max_v1]=∑i[vi,1]×[is_max_elementi,1]来计算[max_v1]。计算系统MPC1还能够通过[max_element1]=∑i([elementi,1]×[is_max_elementi,1])来计算[max_element1]。
类似地,计算系统MPC2能够通过[max_v2]=∑i[vi,2]×[is_max_elementi,2]来计算[max_v1]。计算系统MPC2还能够通过[max_element2]=∑i([elementi,2]×[is_max_elementi,2])来计算[max_element2]。
为了提高这些比较运算的效率,MPC集群130能够使用分而治之(divide-and-conquer)算法。为了这样做,MPC集群130能够将数组的元素划分成组,例如变成个组,其中每个组包含个元素。在不使用分而治之的情况下,求解可能需要计算系统MPC1和MPC2之间的六轮通信。比较测试阶段能够需要个秘密份额对的比较。相等性测试阶段能够需要N个相等性测试。
使用具有个组的分而治之,能够通过总共六轮的三轮比较测试和三轮相等性测试来求解每个更简单的问题。能够将每个更简单的问题的结果组合成能够通过总共六轮的三轮比较测试和三轮相等性测试来求解的大小为的另一更简单的问题。
如上所述,能够基于三个向量:数字组件的上下文向量Vcontext、数字组件的基于用户组的向量Vug和表示用户的用户简档的用户向量Vuser来确定数字组件的选择值。群组标识符能够由应用112利用由应用开发者(例如,浏览器开发者)为整个数字组件分发行业选取的算法来计算。群组标识符算法不可由个体内容平台或数字组件提供者定制。在此示例中,MPC集群130能够使用三个向量来计算数字组件的选择值,如选择值=Cap(Vug·Vcontext·Vuser,maxsv,minsv),其中maxsv是最大选择值,minsv是最小选择值,使得所得的选择值介于最大值与最小值之间。能够将三个向量之间的点积计算为∑i(Vug,i1×Vcontext,i×Vuser,i),其中i是向量的索引.
在一些情形下,在共享之后的发布者金额被认为是隐私敏感的,例如,如果金额是使用用户向量Vuser从如上所述的跨域用户简档推导出的。在此类情况下,可能期望防止MPC集群130的每个服务器以明文访问发布者金额。在没有明文金额的情况下,MPC集群130可能不能够对选择值进行排序,如上所述。在此示例中,为了确定数字组件是否是候选,计算系统MPC1能够接收由[M1]表示的布谷鸟过滤器表M的秘密份额的数组的等同物。每个用户组标识符ug_id如果存在于M中则将位于N个可能的位置之一中。
将ug_id(dc)定义为用于检索与其信息由MPC集群130存储的数字组件dc相对应的用户组标识符ug_id的函数。还将{F1,...FN}定义为用于计算布谷鸟过滤器表A内的项的可能索引的函数。
计算系统MPC1将[match_ugdc,1,i]计算为其中i∈[1,N]。类似地,计算系统MPC2将[match_ugdc,2,i]计算为其中i∈[1,N]。注意[Mi,2]=PRF(noncesecret share,i),其中noncesecret_share是从客户端设备110接收到的数字组件请求中的参数,通过计算系统MPC2的公钥来加密。秘密份额[match_ugdc,1,i]和[match_ugdc,1,i]是0或1,其中match_ugdc,i=[match_ugdc,1,i]bitwise_xor[match_ugdc,2,i]在数字组件dc的用户组标识符与布谷滤波器中的第i个可能位置匹配的情况下为一,否则为零。另外,注意,当且仅当数字组件dc对应于包括用户作为成员的用户组的用户兴趣组标识符时,match_ugdc=match_ugdc,1或match_ugdc,2…或match_ugdc,N才为真(其中高概率取决于布谷鸟过滤器中的标签的长度)。
还能够修改上述技术以支持新近度和其他每用户组级别信号。兴趣组新近度,即用户被添加到用户组有多近,能够是用于决定选择值的重要信号。例如,如果用户在不止八小时以前被添加到再营销列表,则使用用户组成员资格来分发数字组件的值能够下降一半。为了在不削弱安全和隐私保证的情况下基于新近度实现精确选择值,能够修改上述密码技术,使得每个内容平台将新近度桶化成少量桶,例如,四个基于时间段的桶。对于每个桶,内容平台能够为上述点积计算定义向量。
当生成对MPC集群130的数字组件请求时,应用112能够对于包括用户作为成员的每个用户组,将新近度桶信息与用户组标识符组合以创建扩增用户组标识符,例如,HMAC(ug_id,recency_bucket_id),其中recency_bucket_id是与用户何时被添加到用户组ug_id相对应的新近度桶的标识符。例如,如果用户在两小时以前被添加到用户组,则扩增用户组标识符能够是基于在当前时间之前1-3小时的时间段的新近度桶的标识符。应用然后将扩增用户组标识符而不是原始用户组标识符插入到布谷鸟过滤器中。应用112然后针对MPC集群130中的两个服务器中的每一个服务器将布谷鸟过滤器分成两个秘密份额。
在接收到上下文响应时,对于每个高速缓存的数字组件和每个有效的新近度桶标识符,MPC集群130使用上述点积技术来以明文计算发布者金额。MPC集群130然后将数字组件和所计算的发布者金额插入到列表中。MPC集群130也将与上下文响应一起接收到的任何选择值插入在相同列表中,并且基于发布者金额从最高到最低对列表进行排序。列表大小与新近度桶的平均基数成比例。例如,如果存在1,000个高速缓存的数字组件,则平均每个高速缓存的数字组件具有四个新近度桶,这将创建大小为4,000的发布者金额列表。
MPC集群130计算对应的扩增用户组标识符,然后依靠秘密份额相等性测试算法来检查扩增用户组标识符是否在布谷鸟过滤器中以确定高速缓存的数字组件和对应的选择值(例如,发布者金额)有资格用于选择过程。
类似地,相同方法能够支持其他低熵每用户组用户级别信号。例如,如果用户组是关于让电子装置留在购物车中的用户,则用户级别信号能够是电子装置的桶化值,例如低/中/高金额。
图6是能够用于执行上述操作的示例计算机系统600的框图。系统600包括处理器610、存储器620、存储设备630和输入/输出设备640。组件610、620、630和640中的每一个都能够例如使用系统总线650来互连。处理器610能够处理用于在系统600内执行的指令。在一些实施方式中,处理器610是单线程处理器。在另一实施方式中,处理器610是多线程处理器。处理器610能够处理存储在存储器620或存储设备630中的指令。
存储器620存储系统600内的信息。在一个实施方式中,存储器620是计算机可读介质。在一些实施方式中,存储器620是易失性存储器单元。在另一实施方式中,存储器620是非易失性存储器单元。
存储设备630能够为系统600提供大容量存储。在一些实施方式中,存储设备630是计算机可读介质。在各种不同的实施方式中,存储设备630能够包括例如硬盘设备、光盘设备、由多个计算设备通过网络共享的存储设备(例如,云存储设备)或一些其他大容量存储设备。
输入/输出设备640为系统600提供输入/输出操作。在一些实施方式中,输入/输出设备640能够包括以下各项中的一项或多项:网络接口设备,例如以太网卡,串行通信设备,例如RS-232端口,和/或无线接口设备,例如802.11卡。在另一实施方式中,输入/输出设备能够包括被配置成接收输入数据并将输出数据发送到外部设备660(例如,键盘、打印机和显示设备)的驱动设备。然而,也能够使用其他实施方式,诸如移动计算设备、移动通信设备、机顶盒电视客户端设备等。
尽管已经在图6中描述了示例处理系统,但是本说明书中描述的主题和功能操作的实施方式能够在其他类型的数字电子电路中、或者在计算机软件、固件或硬件(包括本说明书中公开的结构及其结构等同物)中、或者在它们中的一个或多个的组合中实现。
本说明书中描述的主题和操作的实施例能够在数字电子电路中、或者在计算机软件、固件或硬件(包括本说明书中公开的结构及其结构等同物)中、或者在它们中的一个或多个的组合中实现。本说明书中描述的主题的实施例能够被实现为一个或多个计算机程序,即,计算机程序指令的一个或多个模块,其被编码在计算机存储介质(或介质)上以用于由数据处理装置执行或控制数据处理装置的操作。替代地或附加地,程序指令能够被编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号,其被生成以编码信息以传输到合适的接收器装置,以用于由数据处理装置执行。计算机存储介质能够是计算机可读存储设备、计算机可读存储基底、随机或串行存取存储器阵列或设备、或者它们中的一个或多个的组合或被包括在计算机可读存储设备、计算机可读存储基底、随机或串行存取存储器阵列或设备、或者它们中的一个或多个的组合中。此外,虽然计算机存储介质不是传播信号,但是计算机存储介质能够是编码在人工生成的传播信号中的计算机程序指令的源或目的地。计算机存储介质也能够是一个或多个单独的物理组件或介质(例如,多个CD、盘或其他存储设备)或被包括在一个或多个单独的物理组件或介质(例如,多个CD、盘或其他存储设备)中。
本说明书中描述的操作能够被实现为由数据处理装置对存储在一个或多个计算机可读存储设备上或从其他源接收到的数据执行的操作。
术语“数据处理装置”包含用于处理数据的所有种类的装置、设备和机器,包括例如可编程处理器、计算机、片上系统或前述的多个或组合。该装置能够包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,该装置还能够包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机或它们中的一个或多个的组合的代码。该装置和执行环境能够实现各种不同的计算模型基础设施,诸如web服务、分布式计算和网格计算基础设施。
计算机程序(也称为程序、软件、软件应用、脚本或代码)能够用任何形式的编程语言编写,包括编译或解释语言、声明或过程语言,并且它能够以任何形式部署,包括作为独立程序或作为模块、组件、子例程、对象或适合在计算环境中使用的其他单元。计算机程序可以但不需要对应于文件系统中的文件。程序能够被存储在保存其他程序或数据的文件的部分中(例如,存储在标记语言文档中的一个或多个脚本),存储在专用于所讨论的程序的单个文件中,或者存储在多个协作文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。计算机程序能够被部署以在一个计算机上或位于一个站点或跨多个站点分布并通过通信网络互连的多个计算机上执行。
本说明书中描述的过程和逻辑流程能够由执行一个或多个计算机程序的一个或多个可编程处理器来执行,以通过对输入数据进行操作并生成输出来执行动作。过程和逻辑流程也能够由专用逻辑电路来执行,并且装置也能够被实现为专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
举例来说,适合于执行计算机程序的处理器包括通用微处理器和专用微处理器两者。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于根据指令来执行动作的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或可操作地耦合到用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘,以从该大容量存储设备接收数据或向其传递数据,或两者。然而,计算机不需要有这样的设备。此外,计算机能够被嵌入在另一个设备中,例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储设备(例如,通用串行总线(USB)闪存驱动器)等等。适合于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器能够由专用逻辑电路来补充或并入专用逻辑电路中。
为了提供与用户的交互,本说明书中描述的主题的实施例能够在计算机上实现,该计算机具有用于向用户显示信息的显示设备,例如CRT(阴极射线管)或LCD(液晶显示器)监视器,以及用户能够通过其向计算机提供输入的键盘和定点设备,例如鼠标或轨迹球。也能够使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈能够是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且能够以任何形式接收来自用户的输入,包括声音、语音或触觉输入。此外,计算机能够通过向由用户使用的设备发送文档和从由用户使用的设备接收文档来与用户交互;例如,通过响应于从web浏览器接收到的请求,向用户的客户端设备上的web浏览器发送网页。
本说明书中描述的主题的实施例能够在计算系统中实施,该计算系统包括后端组件(例如作为数据服务器)或者包括中间件组件(例如应用服务器)或者包括前端组件(例如具有用户能够通过其与本说明书中描述的主题的实施方式进行交互的图形用户界面或Web浏览器的客户端计算机)或者包括一个或多个这样的后端组件、中间件组件或前端组件的任何组合。该系统的组件能够通过任何形式或介质的数字数据通信(例如通信网络)来互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、互联网(例如,因特网)和对等网络(例如,自组织对等网络)。
计算系统能够包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系是由于在相应的计算机上运行的计算机程序而产生的,并且与彼此具有客户端-服务器关系。在一些实施例中,服务器将数据(例如,HTML页面)发送到客户端设备(例如,为了向与客户端设备交互的用户显示数据并从用户接收用户输入)。在客户端设备处生成的数据(例如,用户交互的结果)能够在服务器处从客户端设备接收。
虽然本说明书包含许多具体的实现细节,但是这些不应当被解释为对任何发明的范围或可能要求保护的范围的限制,而是对特定于特定发明的特定实施例的特征的描述。本说明书中在单独的实施例的上下文中描述的某些特征也能够在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也能够在多个实施例中单独地或以任何合适的子组合来实现。此外,尽管特征可以在上面被描述为以某些组合起作用,并且甚至最初如此要求保护,但是来自要求保护的组合的一个或多个特征在一些情况下能够从该组合中删除,并且要求保护的组合可以涉及子组合或子组合的变体。
类似地,虽然在附图中以特定的顺序描述了操作,但是这不应当被理解为要求这样的操作以所示的特定顺序或先后顺序执行,或者要求所有示出的操作都被执行,以获得期望的结果。在某些情况下,多任务和并行处理可以是有利的。此外,上述实施例中的各种系统组件的分离不应当被理解为在所有实施例中都需要这样的分离,并且应当理解,所描述的程序组件和系统通常能够一起被集成在单个软件产品中或者打包成多个软件产品。
因此,已经描述了主题的特定实施例。其他实施例处在所附权利要求的范围内。在一些情况下,权利要求中记载的动作能够以不同的顺序执行,并且仍然实现期望的结果。此外,附图中描绘的过程不一定需要所示的特定顺序或先后顺序来实现期望的结果。在某些实施方式中,多任务和并行处理可以是有利的。
Claims (12)
1.一种计算机实现的方法,包括:
从客户端设备并且由多个多方计算MPC系统中的第一计算系统接收数字组件请求,所述数字组件请求包括识别包括所述客户端设备的用户作为成员的用户组的数据的第一秘密份额和上下文信号集合;
由所述第一计算系统向内容平台传输上下文数字组件请求;
由所述第一计算系统并且从所述内容平台接收多个数字组件的选择数据,其中,所述选择数据包括第一向量数据,所述第一向量数据定义至少部分地基于所述上下文信号集合选择的值的基于上下文的向量;
由所述第一计算系统并且对于所述多个数字组件中的每一个获得第二向量数据,所述第二向量数据定义至少部分地基于与所述数字组件相对应的相应用户组选择的值的基于用户组的向量;
由所述第一计算系统基于所述第一向量数据和所述第二向量数据来确定每个数字组件的选择值;
对于每个数字组件,确定指示与所述数字组件相对应的相应用户组标识符是否与包括所述用户作为成员的用户组匹配的候选参数;
基于所述选择值和所述候选参数来生成选择结果的第一秘密份额,所述选择结果从多个候选数字组件中识别具有最高选择值的给定数字组件,其中,每个候选数字组件是与所述数字组件相对应的所述选择值的所述候选参数指示与所述选择值相对应的所述第二用户组标识符与包括所述用户作为成员的用户组匹配的数字组件;以及
向所述客户端设备传输识别所述给定数字组件的选择结果的所述第一秘密份额。
2.根据权利要求1所述的计算机实现的方法,其中,由所述第一计算系统基于所述第一向量数据和所述第二向量数据来确定每个数字组件的所述选择值包括确定所述数字组件的值的所述基于上下文的向量和值的基于用户组的向量的点积。
3.根据权利要求1或2所述的计算机实现的方法,其中,所述第一向量数据包括值的基于上下文的向量的第一秘密份额并且所述第二向量数据包括值的基于用户组的向量的第一秘密份额。
4.根据权利要求3所述的计算机实现的方法,其中,由所述第一计算系统基于所述第一向量数据和所述第二向量数据来确定每个数字组件的所述选择值包括与所述多个MPC系统中的一个或多个第二计算系统协作以执行安全MPC过程来确定所述数字组件的值的基于上下文的向量和值的基于用户组的向量的点积。
5.根据任一前述权利要求所述的计算机实现的方法,其中,每个数字组件的所述选择值是基于所述用户的用户简档。
6.根据权利要求5所述的计算机实现的方法,其中,由所述第一计算系统基于所述第一向量数据和所述第二向量数据来确定每个数字组件的所述选择值包括确定所述数字组件的所述基于上下文的向量、所述数字组件的所述基于用户组的向量和所述用户的所述用户简档的用户简档向量的点积。
7.根据任一前述权利要求所述的计算机实现的方法,其中,确定每个选择值的所述候选参数包括确定每个选择值的所述候选参数的第一秘密份额。
8.根据任一前述权利要求所述的计算机实现的方法,其中,生成所述选择结果的所述第一秘密份额包括:
基于每个选择值的幅度来生成所述选择值的次序;
基于所述选择值的所述次序和每个选择值的所述候选参数来确定每个选择值的累积值的第一秘密份额;
对于每个选择值,基于(i)所述选择值的所述候选参数和(ii)指示所述选择值的所述累积值是否是指定值的相等性测试的结果来确定获胜者参数的第一秘密份额;
对于每个选择值,确定所述选择值的所述获胜者参数和所述选择值的数字组件信息元素的乘积,以及确定所述乘积的和的第一秘密份额作为所述选择结果的所述第一秘密份额。
9.根据权利要求8所述的计算机实现的方法,其中,确定每个选择值的所述累积值的所述第一秘密份额包括:
对于每个个体选择值,确定在最高选择值与所述个体选择值之间的包括所述最高选择值和所述个体选择值的一定量的选择值,所述一定量的选择值具有指示与所述选择值相对应的所述第二用户组标识符与所述一个或多个第一用户组标识符中的至少一个匹配的候选参数。
10.一种系统,包括:
一个或多个处理器;以及
存储指令的一个或多个存储设备,所述指令在由所述一个或多个处理器执行时使所述一个或多个处理器执行根据任一前述权利要求所述的方法。
11.一种承载指令的计算机可读存储介质,所述指令在由一个或多个处理器执行时使所述一个或多个处理器执行根据权利要求1至9中的任一项所述的方法。
12.一种包括指令的计算机程序产品,所述指令在由计算机执行时使所述计算机执行根据权利要求1至9中的任一项所述的方法的步骤。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IL280056A IL280056A (en) | 2021-01-10 | 2021-01-10 | Using secure mpc and vector computations to protect access to information in content distribution |
IL280056 | 2021-01-10 | ||
PCT/US2022/011372 WO2022150428A1 (en) | 2021-01-10 | 2022-01-06 | Using secure mpc and vector computations to protect access to information in content distribution |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115088005A true CN115088005A (zh) | 2022-09-20 |
Family
ID=80218401
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280002639.6A Pending CN115088005A (zh) | 2021-01-10 | 2022-01-06 | 使用安全mpc和向量计算来在内容分发中保护对信息的访问 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20230076256A1 (zh) |
EP (1) | EP4081971B1 (zh) |
JP (1) | JP7397212B2 (zh) |
KR (1) | KR20220126767A (zh) |
CN (1) | CN115088005A (zh) |
IL (1) | IL280056A (zh) |
WO (1) | WO2022150428A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102021200491A1 (de) * | 2021-01-20 | 2022-07-21 | Robert Bosch Gesellschaft mit beschränkter Haftung | Verfahren und Vorrichtung zum Verwalten von mit wenigstens einem technischen Erzeugnis assoziierten Daten |
IL295204A (en) * | 2022-07-31 | 2024-02-01 | Google Llc | A single request structure for increasing the efficiency of secure multilateral calculations |
KR20240047580A (ko) | 2022-10-05 | 2024-04-12 | 주식회사 엘지에너지솔루션 | 용접이 없는 전지모듈 |
US20240202360A1 (en) * | 2022-12-16 | 2024-06-20 | Google Llc | Privacy preserving custom embeddings |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9130757B2 (en) * | 2008-08-11 | 2015-09-08 | International Business Machines Corporation | Method for authenticated communication in dynamic federated environments |
CN102473183A (zh) | 2009-07-14 | 2012-05-23 | 索尼公司 | 内容推荐系统、内容推荐方法、内容推荐设备以及信息存储介质 |
JP5369066B2 (ja) * | 2010-08-02 | 2013-12-18 | 日本電信電話株式会社 | リコメンデーションシステム、発言端末、検索端末、リコメンデーション方法 |
EP2688264B1 (en) | 2012-07-16 | 2016-08-24 | Alcatel Lucent | Method and apparatus for privacy protected clustering of user interest profiles |
EP3031165A2 (en) | 2013-08-09 | 2016-06-15 | Thomson Licensing | A method and system for privacy preserving matrix factorization |
US10068247B2 (en) * | 2014-12-17 | 2018-09-04 | Excalibur Ip, Llc | Pacing control for online ad campaigns |
JP6750195B2 (ja) * | 2015-06-24 | 2020-09-02 | 日本電気株式会社 | 広告配信装置、広告受信装置、広告配信システム、広告配信方法、広告受信方法、およびプログラム |
US10791123B2 (en) * | 2015-11-25 | 2020-09-29 | Yaron Gvili | Selectivity in privacy and verification with applications |
US9565020B1 (en) * | 2016-02-02 | 2017-02-07 | International Business Machines Corporation | System and method for generating a server-assisted strong password from a weak secret |
US9954684B2 (en) * | 2016-02-29 | 2018-04-24 | PreVeil LLC | Secure sharing |
WO2018135334A1 (ja) | 2017-01-19 | 2018-07-26 | ソニー株式会社 | 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム |
CN111133719B (zh) | 2017-09-29 | 2024-01-26 | 罗伯特·博世有限公司 | 用于利用spdz的更快速的安全多方内积计算的方法 |
EP3506547A1 (en) * | 2017-12-28 | 2019-07-03 | Flytxt B.V. | Providing security against user collusion in data analytics using random group selection |
WO2020077576A1 (en) | 2018-10-17 | 2020-04-23 | Alibaba Group Holding Limited | Secret sharing with a trusted initializer |
US11245536B2 (en) * | 2019-04-16 | 2022-02-08 | Meta Platforms, Inc. | Secure multi-party computation attribution |
US11811933B2 (en) * | 2019-11-27 | 2023-11-07 | Visa International Service Association | System and method for fair, secure n-party computation using at least one blockchain |
US11233636B1 (en) * | 2020-07-24 | 2022-01-25 | Salesforce.Com, Inc. | Authentication using key agreement |
EP4038532B1 (en) * | 2020-12-04 | 2023-07-26 | Google LLC | Secured management of data distribution restrictions |
-
2021
- 2021-01-10 IL IL280056A patent/IL280056A/en unknown
-
2022
- 2022-01-06 US US17/793,831 patent/US20230076256A1/en active Pending
- 2022-01-06 KR KR1020227028251A patent/KR20220126767A/ko unknown
- 2022-01-06 WO PCT/US2022/011372 patent/WO2022150428A1/en unknown
- 2022-01-06 CN CN202280002639.6A patent/CN115088005A/zh active Pending
- 2022-01-06 JP JP2022549741A patent/JP7397212B2/ja active Active
- 2022-01-06 EP EP22702813.1A patent/EP4081971B1/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP7397212B2 (ja) | 2023-12-12 |
EP4081971A1 (en) | 2022-11-02 |
WO2022150428A1 (en) | 2022-07-14 |
EP4081971B1 (en) | 2024-03-06 |
JP2023521542A (ja) | 2023-05-25 |
IL280056A (en) | 2022-08-01 |
KR20220126767A (ko) | 2022-09-16 |
US20230076256A1 (en) | 2023-03-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4081971B1 (en) | Using secure mpc and vector computations to protect access to information in content distribution | |
EP4070223B1 (en) | Using secure multi-party computation to improve content selection process integrity | |
US20230188329A1 (en) | Using secure multi-party computation and probabilistic data structures to protect access to information | |
JP7471450B2 (ja) | セキュアマルチパーティ計算の性能の向上 | |
JP7440667B2 (ja) | セキュアマルチパーティ計算を使用したフレキシブルなコンテンツ選択プロセス | |
CN114945932A (zh) | 使用秘密共享的反馈控制器 | |
US20240195603A1 (en) | Cryptographically secure control using secure multi-party computation | |
EP4101121B1 (en) | Privacy preserving measurements using secure multi-party computation |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |