CN115918029A - 使用安全多方计算的灵活内容选择过程 - Google Patents
使用安全多方计算的灵活内容选择过程 Download PDFInfo
- Publication number
- CN115918029A CN115918029A CN202280004253.9A CN202280004253A CN115918029A CN 115918029 A CN115918029 A CN 115918029A CN 202280004253 A CN202280004253 A CN 202280004253A CN 115918029 A CN115918029 A CN 115918029A
- Authority
- CN
- China
- Prior art keywords
- digital component
- digital
- selection
- value
- parameter
- 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
- 238000000034 method Methods 0.000 title claims abstract description 335
- 230000008569 process Effects 0.000 title claims abstract description 311
- 238000003860 storage Methods 0.000 claims description 26
- 238000004590 computer program Methods 0.000 claims description 13
- 238000001914 filtration Methods 0.000 claims description 3
- 101710165595 Mitochondrial pyruvate carrier 2 Proteins 0.000 description 261
- 102100025031 Mitochondrial pyruvate carrier 2 Human genes 0.000 description 261
- 101710101698 Probable mitochondrial pyruvate carrier 2 Proteins 0.000 description 261
- 101710165590 Mitochondrial pyruvate carrier 1 Proteins 0.000 description 258
- 102100024828 Mitochondrial pyruvate carrier 1 Human genes 0.000 description 258
- 101710101695 Probable mitochondrial pyruvate carrier 1 Proteins 0.000 description 258
- 239000013598 vector Substances 0.000 description 67
- 230000000875 corresponding effect Effects 0.000 description 46
- 230000004044 response Effects 0.000 description 31
- 238000012545 processing Methods 0.000 description 28
- 238000009826 distribution Methods 0.000 description 26
- 230000006870 function Effects 0.000 description 24
- 238000010586 diagram Methods 0.000 description 18
- 239000000047 product Substances 0.000 description 15
- 238000004364 calculation method Methods 0.000 description 14
- 230000000694 effects Effects 0.000 description 14
- 230000003993 interaction Effects 0.000 description 12
- 238000004891 communication Methods 0.000 description 11
- 230000001143 conditioned effect Effects 0.000 description 11
- 239000000654 additive Substances 0.000 description 8
- 230000000996 additive effect Effects 0.000 description 8
- 238000004422 calculation algorithm Methods 0.000 description 8
- 238000012360 testing method Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 235000019800 disodium phosphate Nutrition 0.000 description 7
- 230000002776 aggregation Effects 0.000 description 6
- 238000004220 aggregation Methods 0.000 description 6
- 238000013515 script Methods 0.000 description 6
- 230000009471 action Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012856 packing Methods 0.000 description 3
- 230000000644 propagated effect Effects 0.000 description 3
- 230000002829 reductive effect Effects 0.000 description 3
- 101100346189 Caenorhabditis elegans mpc-1 gene Proteins 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000903 blocking effect Effects 0.000 description 2
- 238000004140 cleaning Methods 0.000 description 2
- 230000000670 limiting effect Effects 0.000 description 2
- 238000010295 mobile communication Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 239000013589 supplement Substances 0.000 description 2
- 239000002699 waste material Substances 0.000 description 2
- 241000544061 Cuculus canorus Species 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007717 exclusion Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000010413 gardening Methods 0.000 description 1
- 239000011521 glass Substances 0.000 description 1
- 230000002452 interceptive effect Effects 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
- 238000009877 rendering Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000001953 sensory effect Effects 0.000 description 1
- 230000011273 social behavior Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001960 triggered effect Effects 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/085—Secret sharing or secret splitting, e.g. threshold schemes
-
- 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
-
- 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
- H04L2209/466—Electronic auction
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Storage Device Security (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Studio Circuits (AREA)
Abstract
本文档涉及使用安全MPC以保护用户隐私并保护选择过程中涉及的每一方的数据的安全性的方式来选择数字组件。在一个方面中,一种方法包括由安全MPC系统的第一服务器从客户端设备接收数字组件请求。第一服务器为集合中的每个数字组件识别选择值和优先级层级。对于每个层级,第一服务器与安全MPC系统的一个或多个第二服务器协作地使用安全MPC过程来确定优先级层级中的每个数字组件的获胜者参数的第一秘密份额。第一服务器识别给定数字组件具有指示给定数字组件是获胜数字组件的获胜者参数的最高层级。
Description
技术领域
本说明书涉及密码学和数据安全性。
背景技术
安全多方计算(MPC)是通过跨多方分发计算来防止对数据的访问使得没有个体方能够访问另一方的数据或中间计算值同时输出仅被释放给指定方的密码协议族。MPC计算系统通常使用秘密份额或其他加密形式的数据来执行计算以及各方之间的信息的安全交换。
发明内容
通常,本说明书中描述的主题的一个创新方面能够被体现在方法中,该方法包括:由安全多方计算(MPC)系统的第一服务器从客户端设备接收数字组件请求;对于数字组件集合中的每个数字组件,识别数字组件的选择值和数字组件的优先级层级;对于多个优先级层级中的每一个:与安全MPC系统的一个或多个第二服务器协作地使用安全MPC过程来确定优先级层级中的每个数字组件的获胜者参数的第一秘密份额,包括:对于优先级层级中的每个数字组件,确定指示数字组件是否是用于选择的候选的候选参数的第一秘密份额;以及基于(i)优先级层级中的每个数字组件的候选参数的值的第一秘密份额,(ii)优先级层级中的每个数字组件的候选参数的一个或多个第二秘密份额,以及优先级层级中的每个数字组件的选择值,确定优先级层级中的每个数字组件的获胜者参数的秘密份额;识别多个层级中给定数字组件具有获胜者参数的最高层级,获胜者参数指示给定数字组件是层级的获胜数字组件;以及向客户端设备提供识别给定数字组件的选择结果的第一秘密份额。该方面的其他实施方式包括对应的装置、系统和被配置为执行在计算机存储设备上编码的方法的方面的计算机程序。
这些和其他实施方式能够各自可选地包括以下特征中的一个或多个。在一些方面中,与安全MPC系统的一个或多个第二服务器协作地使用安全MPC过程来确定优先级层级中的每个数字组件的获胜者参数的第一秘密份额包括并行地确定每个优先级层级中的每个数字组件的获胜者参数的第一秘密份额。该实施例特别有利,因为这能够提高执行整个数字内容选择过程的速度。
在一些方面中,与安全MPC系统的一个或多个第二服务器协作地使用安全MPC过程来确定优先级层级中的每个数字组件的获胜者参数的第一秘密份额包括:确定从最高优先级层级到最低优先级层级的序列中的每个优先级层级中的每个数字组件的获胜者参数的第一秘密份额。该实施例在处理的速度不是关键的情况下是特别有利的。相反,如果较高优先级层级包括获胜数字组件,则该特定实施例通过避免对较低优先级层级的浪费计算来高效地使用计算资源。
在一些方面中,对于优先级层级中的每个数字组件,确定指示数字组件是否是用于选择的候选的候选参数的第一秘密份额包括:与一个或多个第二服务器中的每个第二服务器协作地基于特定数字组件的一个或多个条件的秘密份额来确定特定数字组件的候选参数的第一秘密份额。
在一些方面中,对于数字组件集合中的每个数字组件,识别数字组件的选择值包括:对于给定内容平台,识别由接收到针对其的数字组件请求的电子资源的发布者或发布者的内容平台建立的提升;以及使用提升来调整内容平台的每个数字组件的选择值。
一些方面包括:识别由接收到针对其的数字组件请求的电子资源的发布者建立的选择值下限;以及从数字组件集合中过滤具有小于选择值下限的选择值的一个或多个数字组件。从数字组件集合中过滤的那些数字组件可以对应于不必要的和/或不相关的数字组件(因为它们具有低于下限值的选择值)。因此,以这种方式过滤掉不必要的数字组件能够减少网络带宽使用和计算资源使用,从而使整个内容选择过程更高效。
在一些方面中,确定优先级层级中的每个数字组件的获胜者参数的秘密份额包括:基于优先级层级中的每个数字组件的选择值对优先级层级中的数字组件进行排序;至少基于排序和优先级层级中的每个数字组件的候选参数的第一秘密份额来确定层级中的每个数字组件的累加值的第一秘密份额,其中,数字组件的累加值指示优先级层级中具有比数字组件更高的选择值的候选数字组件的数量;以及对于优先级层级中的每个数字组件,基于数字组件的候选参数的第一秘密份额、数字组件的候选参数的一个或多个第二秘密份额中的每一个以及数字组件的累加值来确定数字组件的获胜者参数的第一秘密份额。一些方面包括确定对应于第二值选择过程的第二选择值,包括:对于每个优先级层级,确定表示给定数字组件是否被包括在优先级层级中的获胜层级参数的第一秘密份额;对于数字组件集合中的每个数字组件,确定第二选择值参数的第一秘密份额,第二选择值参数表示数字组件的选择值是否可能是候选数字组件集合当中的第二高选择值;将对于其而言以下各项成立的数字组件的选择值识别为第二选择值:(i)数字组件的候选参数指示数字组件是用于选择的候选,(ii)获胜层级参数指示给定数字组件被包括在获胜层级中,以及(iii)第二选择值参数指示数字组件的选择值可能是候选数字组件集合当中的第二高选择值。
本说明书中描述的主题能够在特定实施例中实现,以便实现以下优点中的一个或多个。使用通过由不同方操作的两个或更多个MPC服务器执行的安全MPC过程以基于用户信息的份额来选择数字组件确保了在MPC服务器之间没有未经授权的共谋的情况下,MPC服务器或另一方不能以明文访问用户信息。以这种方式,只要至少一个MPC服务器是诚实的,用户数据隐私就被保护。
在数字组件选择过程中,MPC服务器能够从满足一个或多个资格条件的合格数字组件中进行选择,同时防止各方以明文访问用户信息。资格条件能够包括关于数字组件的分发的方式或频率的限制和指南以及其他因素。条件能够包括用户组成员资格、频率控制、静音(例如,用户阻止)、用于防止用户的微靶向的k匿名、和/或调步(pacing)和预算约束。
由于数字组件的选择是通常在客户端设备处正在加载内容时发生的在线过程,因此快速(例如,在几毫秒内)完成该过程很重要。本文档中描述的技术通过减小在客户端设备与MPC集群之间传送的数据的大小、通过减少MPC集群所需的计算资源以及通过减少由MPC集群的服务器执行的往返通信/计算的数量和在服务器之间传送的数据的大小来增强选择数字组件的速度。客户端设备和服务器之间的数据大小的减小还减少了客户端设备的网络带宽消耗和电池消耗,例如,如果客户端设备是以电池功率运行的移动设备。
用户的客户端设备能够生成表示包括用户作为成员的用户组的概率数据结构(例如,布谷过滤器或布隆过滤器),并且能够向MPC集群的服务器提供该概率数据结构或表示该概率数据结构的数据。以这种方式使用概率数据结构通过防止对用户的组成员资格的访问来保护用户隐私并维护数据安全性,并且减小提供给MPC集群的信息的大小,因为概率数据结构是数据集的紧凑表示。能够生成表示概率数据结构的数据并将其发送到MPC服务器,使得在不具有其他部分或与其他MPC服务器协作(例如,使用安全MPC过程)的情况下,没有仅接收数据的一部分的一方能够访问用户的用户组成员资格。数据大小的减小减少传送信息所消耗的带宽量,减少传送信息的延时,并且减少传送信息所需的以电池运行的设备(例如,移动设备)的处理功率和相关联的电池功率的量。
MPC集群能够传送识别MPC集群使用安全MPC过程选择的所选择的数字组件的结果的秘密份额。通过发送仅所选择的数字组件的结果的秘密份额而不是所有数字组件或大的数字组件集的信息,类似地减少传送和接收结果的延时和消耗的带宽、处理功率和电池功率。这还通过限制向客户端设备提供其信息的数字组件的数量来减少向MPC集群提交数字组件的选择值的内容平台的机密信息的潜在泄露。
减少内容呈现的延时还减少在等待这样的内容到达时在用户设备处发生的错误的数量。由于内容通常需要在几毫秒内提供给通过无线网络连接的移动设备,因此减少选择和提供内容的延时对于防止错误和减少用户沮丧是至关重要的。
本文档中描述的安全MPC技术是灵活的,并且支持不同类型的选择过程和/或附加的选择过程特征,诸如下限(floor)、层级(tier)和/或提升(boost)。本文档中描述的安全MPC技术实现了这样的特征,同时仍然保护用户隐私和数据安全性。当使用层级时,多个选择过程能够并行地执行以减少数字组件的选择的延时,或者顺序地执行以减少不必要的计算。能够用来提高数字组件选择过程的效率的度量能够以保护用户隐私的方式被聚合并报告给适当的各方。
在附图和以下描述中阐述了本说明书中描述的主题的一个或多个实施例的细节。根据说明书、附图和权利要求书,主题的其他特征、方面和优点将变得显而易见。
附图说明
图1是其中MPC集群执行安全MPC过程以选择用于分发给客户端设备的数字组件的环境的框图。
图2示出了图1的环境内的示例性数据流。
图3是用于选择用于分发给客户端设备的数字组件的示例性过程的图。
图4是用于选择用于分发给客户端设备的数字组件的示例性过程的图。
图5是用于选择用于分发给客户端设备的数字组件的示例性过程的图。
图6是用于在数字组件选择过程中确定数字组件的最高的其他选择值的示例性过程的图。
图7是用于确定真实数字组件选择过程的第一选择值与反事实数字组件选择过程的第一选择值之间的差的示例性过程的流程图。
图8是用于使用利用秘密份额发送的布隆过滤器来确定用户是否是用户组的成员的示例性过程的流程图。
图9是示例性MPC计算系统的框图。
图10是示例性计算机系统的框图。
各个附图中相同的附图标记和名称指示相同的元件。
具体实施方式
通常,本文档描述了用于使用安全MPC以保护用户隐私并保护选择过程中涉及的每一方的数据的安全性的方式来选择数字组件的系统和技术。对选择过程的增强支持数字组件选择过程的多个变型,从而为管理数字组件的选择的内容发布者和内容平台提供灵活性,同时维护用户隐私和数据安全性。例如,本文档中描述的MPC集群能够执行安全数字组件选择过程,其包括层级、选择值提升、第一值选择过程、第二值选择过程和/或这些变型中的一个或多个的组合。本文档中描述的技术允许这种灵活性、隐私保护和数据安全性,同时在接收到请求之后仍然在短时间段内(例如,在几毫秒内)提供数字组件,并且同时最小化发送到显示数字组件的客户端设备和从显示数字组件的客户端设备发送的数据的大小。
MPC集群还能够基于完成的选择过程来生成信息,例如度量,其能够用于进一步增强未来的数字组件选择过程。能够使用安全MPC来生成该信息,使得在MPC集群的服务器和/或其他方之间没有未经授权的共谋的情况下,用户数据和发布者和/或内容平台的数据不可访问。能够以加密形式(例如,作为秘密份额)将信息报告给适当的各方,使得只有接收者能够以明文访问信息。为了保护用户隐私,在一些实施方式中,预期接收者能够以应用了差分隐私噪声的明文和/或以聚合形式访问信息。明文是以能够在不需要密钥或其他解密设备或其他解密过程的情况下被查看或使用的形式的未经计算标记、特殊格式化或以代码或数据(包括二进制文件)编写的文本。
在本文档中,由MPC集群在秘密份额上执行的一些计算被示出为秘密份额值的乘积或总和。为了提高执行这些计算的速度,能够使用AND运算(例如,逐比特AND)在秘密份额中执行乘法,并且能够使用XOR运算(例如,逐比特XOR运算)在秘密份额中执行加法。在一些情况下,当一个明文整数乘以表示Z2中的零或一的秘密份额(即,两个份额模2之和为零或一)时,不需要乘法或逐比特AND。相反,每个计算系统能够评估其份额,并且如果其份额为一,则返回整数,并且如果其份额为零,则返回零。
图1是其中MPC集群130执行安全MPC过程以选择用于分发给客户端设备110的数字组件的环境100的框图。MPC集群130还生成完成的数字组件选择过程的信息,并将该信息提供给适当的各方。
示例性环境100包括数据通信网络105,诸如局域网(LAN)、广域网(WAN)、互联网、移动网络或其组合。网络105连接客户端设备110、安全MPC集群130、发布者140、网站142和内容平台,例如供应侧平台(SSP)170和需求侧平台(DSP)150。示例性环境100能够包括许多不同的客户端设备110、安全MPC集群130、发布者140、网站142、DSP 150和SSP 170。
网站142包括一个或多个电子资源145。资源145能够与域名相关联并且由一个或多个服务器托管。示例性网站是以超文本标记语言(HTML)格式化的web页面的集合,其能够包含文本、图像、多媒体内容和诸如脚本的编程元素。每个网站142由内容发布者140维护,内容发布者140是控制、管理和/或拥有网站142的实体。
资源145是能够由发布者140通过网络105提供并且能够与资源地址相关联的任何数据。资源包括HTML页面、文字处理文档和可移植文档格式(PDF)文档、图像、视频和馈送源,仅举几例。资源145能够包括诸如单词、短语、图片等的内容,并且可以包括嵌入式信息(例如,元信息和超链接)和/或嵌入式指令,例如脚本。
客户端设备110是能够通过网络105进行通信的电子设备。示例性客户端设备110包括个人计算机、移动通信设备(例如,智能电话)以及能够通过网络105发送和接收数据的其他设备。客户端设备110还能够包括通过麦克风接受音频输入并且通过扬声器输出音频输出的数字助理设备。当数字助理检测到激活麦克风以接受音频输入的“热词”或“热短语”时,能够将数字助理置于收听模式(例如,准备好接受音频输入)。数字助理设备还能够包括相机和/或显示器以捕获图像并在视觉上呈现信息。数字助理能够以不同形式的硬件设备来实现,硬件设备包括可穿戴设备(例如,手表或眼镜)、智能电话、扬声器设备、平板设备或另一硬件设备。客户端设备110还能够包括数字媒体设备,例如插入电视或其他显示器中以将视频流式传输到电视的流式传输设备、游戏系统或虚拟现实系统。
客户端设备110通常包括应用112,诸如web浏览器和/或本机应用,以便于通过网络105发送和接收数据。本机应用是针对特定平台或特定设备(例如,针对具有特定操作系统的移动设备)开发的应用。发布者140能够开发本机应用并将其提供给客户端设备110,例如,使其可用于下载。web浏览器能够从托管发布者140的网站142的web服务器请求资源145,例如,响应于客户端设备110的用户在web浏览器的地址栏中输入资源145的资源地址或选择引用资源地址的链接。类似地,本机应用能够从发布者的远程服务器请求应用内容。
一些资源、应用页面或其他应用内容能够包括用于与资源145或应用页面一起显示数字组件的数字组件槽。如贯穿本文档所使用的,短语“数字组件”是指数字内容或数字信息的离散单元(例如,视频剪辑、音频剪辑、多媒体剪辑、图像、文本或另一内容单元)。数字组件能够作为单个文件或以文件集合电子地存储在物理存储器设备中,并且数字组件能够采取视频文件、音频文件、多媒体文件、图像文件或文本文件的形式,并且包括广告信息,使得广告是一种类型的数字组件。例如,数字组件可以是旨在补充web页面的内容、应用内容(例如,应用页面)或由应用112显示的其他资源的内容。更具体地,数字组件可以包括与资源内容相关的数字内容,例如,数字组件可以涉及与web页面内容相同的主题,或者涉及相关主题。因此,数字组件的提供能够补充并且通常增强web页面或应用内容。
当应用112加载包括一个或多个数字组件槽的资源(或应用内容)时,应用112能够为每个槽请求数字组件。在一些实施方式中,数字组件槽能够包括代码,例如,一个或多个脚本,该代码在由应用112处理时,使得应用112请求数字组件以显示给客户端设备110的用户。如下所述,应用112能够从MPC集群130和/或一个或多个SSP 170请求数字组件。
一些发布者140使用SSP 170来管理为其资源145和/或应用112的数字组件槽获得数字组件的过程。SSP 170是以硬件和/或软件实现的技术平台,其使为资源和/或应用获得数字组件的过程自动化。每个发布者140能够具有对应的SSP 170或多个SSP 170。一些发布者140可以使用相同的SSP 170。
数字组件提供者160能够创建(或以其他方式发布)在发布者的资源145和应用112的数字组件槽中显示的数字组件。例如,数字组件提供者160能够创建包括与数字组件提供者160相关的内容的数字组件。在特定示例中,产品制造商的数字组件能够包括与产品相关的内容。
数字组件提供者160能够使用DSP 150来管理其数字组件的供应以用于在数字组件槽中显示。DSP 150是以硬件和/或软件实现的技术平台,其使分发数字组件以与资源和/或应用一起显示的过程自动化。DSP 150能够代表数字组件提供者160与多个SSP 170交互,以提供用于与多个不同发布者140的资源145和/或应用112一起显示的数字组件。通常,DSP150能够(例如,从SSP 170)接收对数字组件的请求,基于该请求来生成(或选择)由一个或多个数字组件提供者160创建的一个或多个数字组件的选择值,并且将与数字组件相关的数据(例如,数字组件本身或使得数字组件能够被下载的代码)和选择参数提供给SSP 170。选择值能够指示数字组件提供者160愿意提供以与数字组件一起显示或用户与数字组件交互的量。然后,SSP 170能够选择用于在客户端设备110处显示的数字组件,并且向客户端设备110提供使得客户端设备110显示数字组件的数据,例如,通过提供数字组件或使得能够下载数字组件的代码。如下更详细所述,MPC集群130能够以保护用户隐私的方式选择用于客户端设备110显示的数字组件。
在一些情况下,接收与由用户先前访问和/或与用户交互的web页面、应用页面或其他电子资源相关的数字组件对用户而言是有益的。为了将这样的数字组件分发给用户,能够将用户分配给用户组,例如,对相同或相似主题感兴趣的用户的用户兴趣组、相似用户的群组或涉及相似用户数据的其他组类型。当用户访问特定资源或在资源处执行特定动作(例如,与web页面上显示的特定项目交互或将项目添加到虚拟购物车)时,能够将用户分配给用户组。用户组能够由数字组件提供者160生成和更新。也就是说,当用户访问数字组件提供者160的电子资源时,每个数字组件提供者160能够将用户分配给其用户组。用户组也能够由内容平台(例如,由DSP 150和/或SSP 170)创建和/或更新。
为了保护用户隐私,例如,能够通过应用112、客户端设备110的操作系统或另一可信程序之一,而不是通过数字组件提供者、内容平台或其他方,在用户的客户端设备110处维护用户的组成员资格。在特定示例中,可信程序(例如,web浏览器或操作系统)能够维护使用web浏览器或另一应用的用户(例如,登录到浏览器、应用或客户端设备110的用户)的用户组标识符的列表(“用户组列表”)。用户组列表能够包括将用户包括为成员的每个用户组的用户组标识符。创建用户组的数字组件提供者160或内容平台能够为其用户组指定用户组标识符。用户组的用户组标识符能够描述组(例如,园艺组)或表示组的代码(例如,非描述性的字母数字序列)。用户的用户组列表能够被存储在客户端设备110处的安全存储装置中和/或能够在存储时被加密以防止其他人访问该列表。
当应用112显示与数字组件提供者160相关的资源(例如,web页面)、应用内容或数字组件时,资源、应用内容或数字组件能够请求应用112向用户组列表添加一个或多个用户组标识符。作为响应,应用112能够将一个或多个用户组标识符添加到用户组列表并安全地存储用户组列表。例如,用户选择查看关于特定项目的更多信息的web页面能够将用户添加到与特定项目相关的用户组。
在一些实施方式中,MPC集群130能够使用用户的用户组成员资格来选择用户可能感兴趣的数字组件或者以另一种方式对用户/用户设备有益的数字组件。例如,这样的数字组件或其他内容可以包括改善用户体验、改善用户设备的运行或者以某种其他方式有益于用户或客户端设备110的数据。然而,用户的用户组列表的用户组标识符能够被提供和用于以防止MPC集群130的计算系统MPC1和MPC2以明文访问用户的用户组标识符的方式选择数字组件,从而在使用用户组成员资格数据来选择数字组件时保护用户隐私。MPC集群130还能够使用其他条件来选择数字组件,如下面更详细所述。
安全MPC集群130包括两个计算系统MPC1和MPC2,其执行安全MPC过程以基于用户的组成员资格来选择用于分发给用户的客户端设备的数字组件,但是不以明文访问组成员资格或其他用户信息或从这样的用户信息导出的信号。尽管示例性MPC集群130包括两个计算系统,但是也能够使用更多的计算系统,只要MPC集群130包括多于一个计算系统即可。例如,MPC集群130能够包括三个计算系统、四个计算系统或另一适当数量的计算系统。在MPC集群130中使用更多的计算系统能够提供更多的安全性,但是也能够增加MPC过程的复杂性。每个计算系统能够是服务器或其他适当类型的计算机。在图9中示出了MPC计算系统的示例性架构。
计算系统MPC1和MPC2能够由不同的实体操作。以这种方式,每个实体可能无法以明文访问用户的组成员资格、或其他用户信息、或从这样的用户信息导出的信号。例如,计算系统MPC1或MPC2中的一个能够由与用户、发布者140、DSP 150、SSP 170和数字组件提供者160不同的可信方操作。例如,行业组、政府组或浏览器开发者能够维护和操作计算系统MPC1和MPC2中的一个。其他计算系统能够由这些组中的不同组操作,使得不同的可信方操作每个计算系统MPC1和MPC2。有利地,操作不同计算系统MPC1和MPC2的不同方可能没有共谋来危及用户隐私的动机。在一些实施方式中,计算系统MPC1和MPC2在架构上分离,并且被监视以在执行本文档中描述的安全MPC过程之外不与彼此通信。
每个计算系统MPC1和MPC2能够存储数字组件(例如,数字组件的创意)、数字组件的选择值以及数字组件的其他信息。例如,计算系统MPC1和MPC2能够高速缓存作为先前数字组件选择过程的一部分或者以其他方式提供给计算系统MPC1和MPC2(例如,预先提供以用于在数字组件选择过程中使用)的先前从SSP 170和/或DSP 150接收到的选择值。以这种方式,MPC集群130能够响应于从客户端设备110接收到的未来数字组件请求而使用选择值来选择用于分发给客户端设备110的数字组件。在本文档中,由MPC集群130为数字组件选择过程存储其选择值和其他信息的数字组件能够被称为存储的数字组件。然而,数字组件本身不一定由MPC集群130存储。相反,MPC集群130能够为每个存储的数字组件存储数据,例如,引用能够从其下载数字组件的网络位置的代码。在一些实施方式中,数字组件本身由MPC集群130被存储,并且直接返回到应用112。这样的实施方式减少了应用112在可能消耗设备的电池和带宽并且可能泄露泄露用于托管数字组件本身的服务器跟踪设备的附加信号的附加请求中提取数字组件和/或数字组件的其他信息的需要。
对于每个存储的数字组件,每个计算系统MPC1和MPC2能够存储能够由计算系统MPC1和MPC2使用以确定数字组件的选择值的选择值或值的向量。每个计算系统MPC1和MPC2还能够为每个数字组件存储条件数据,该条件数据定义数字组件成为用于给定数字组件选择过程的合格候选必须满足的条件。所存储的数字组件能够具有零个或多个对应的条件。
一个示例性条件是将向其提供所选择的数字组件的用户是与所存储的数字组件相对应的用户组的成员。该条件能够被称为用户组成员资格条件。在该示例中,计算系统MPC1和MPC2能够为所存储的数字组件存储与数字组件相对应的一个或多个用户组标识符的集合。这些用户组标识符识别能够为其提供所存储的数字组件的用户组。也就是说,所存储的数字组件仅是用于数字组件选择过程的候选,该数字组件选择过程被执行以选择要提供给用户的数字组件,该用户是由所存储的数字组件的一个或多个用户组标识符的集合识别的用户组中的至少一个用户组的成员。
所存储的数字组件的另一示例性条件是频率上限条件,其指示数字组件或特定类别的数字组件仅能够在给定持续时间内被提供给同一用户最大次数。数字组件的另一示例性条件是阻止数字组件条件,其指示数字组件已经被用户阻止(例如,静音)。对于这些示例性条件,计算系统MPC1和MPC2能够对于多个用户中的每一个从存储装置接收概率数据结构,例如,布谷过滤器或布隆过滤器,其表示不能被提供给用户的数字组件。例如,概率数据结构能够表示直接被用户阻止或者由于在给定持续时间期间超过数字组件被显示给用户的频率而被用户阻止的数字组件的通用标识符。
计算系统MPC1和MPC2能够从用户的客户端设备110例如以防止计算系统MPC1或MPC2以明文访问标识符的加密形式接收概率数据结构。例如,在用户的客户端设备110上运行的应用112能够生成布隆过滤器,该布隆过滤器表示由于频率上限而被阻止或被用户阻止的被阻止数字组件的标识符。然后,应用112能够向每个计算系统MPC1和MPC2提供数据,该数据使得计算系统MPC1和MPC2能够使用安全MPC过程协作地查询布隆过滤器,以为用户确定给定数字组件是否被阻止。计算系统MPC1和MPC2使用该安全MPC过程来计算被阻止数字组件条件的秘密份额。参考图8描述了用于生成和查询布隆过滤器的示例性过程。
在一些实施方式中,被阻止数字组件的标识符能够被包括在与用户组标识符相同的概率数据结构中,并且使用不同的散列函数来查询。然而,被阻止数字组件的目标误报率能够低于该用户组标识符的误报率。因此,能够使用比用户组标识符更少的散列函数来生成和查询用于被阻止数字组件的布隆过滤器。为了减小用于被阻止数字组件的布隆过滤器的数据大小,用户组标识符能够由与被阻止数字组件不同的布隆过滤器表示。这减少了通过网络发送布隆过滤器的延时,减少了发送布隆过滤器所消耗的带宽,并且减少了发送布隆过滤器的电池功率使用。
所存储的数字组件的另一示例性条件是在一段持续时间内对数字组件的分发进行调步的调步条件。计算系统MPC1和MPC2能够存储指示在一段持续时间内能够提供数字组件的总次数和/或数字组件在该持续时间内的最大预算的数据。计算系统MPC1和MPC2能够使用该信息以基于该条件(例如,对于成为候选的数字组件必须满足数字组件的所有条件)对数字组件能够是用于数字组件选择过程的候选的频率进行调步。在一些实施方式中,计算系统MPC1和MPC2能够实现使用秘密份额对具有调步条件的所存储的数字组件进行调步的反馈控制器,例如,比例-积分-微分(PID)控制器。
在该示例中,计算系统MPC1和MPC2能够存储用于数字组件的PID控制器的设定点,并且维护用于数字组件的PID控制器的测量变量。通常,PID控制器是反馈控制器,其使用误差值(其是目标设定点和测量变量之间的差)来确定将测量变量朝向设定点驱动的输出。在对数字组件到客户端设备的分发进行调步的上下文中,活动的设定点能够是展示率、交互率、转化率和/或资源耗尽率(例如,预算支出率)。类似地,测量变量可以是给定持续时间内的展示率、交互率、转化率和/或资源消耗率。计算系统MPC1和MPC2还能够存储用于每个PID控制器的微调参数。设定点、测量变量和微调参数能够被存储在秘密份额中(其中每个计算系统MPC1和MPC2存储每个参数的对应份额)或明文中,这取决于目标隐私/数据安全性。
另一示例性条件是k匿名条件。k匿名条件能够包括k匿名规则,其要求数字组件有资格(或将已经被选择)用于在给定的持续时间内分发给至少k个用户。k匿名的概念确保特定用户的数据与阈值数量k的其他用户的数据不可区分。系统能够例如通过确保响应于对一个或多个数字组件的请求而将特定数字组件分发给客户端设备110来强制实施k匿名规则,并且相同的数字组件能够在特定时间段内已经被或被显示给至少k个用户的集合或由至少k个应用112显示。在一些实施方式中,数字组件能够已经被或被分发给的k个应用112中的每一个必须用于不同的用户。在该示例中,计算系统MPC1和MPC2能够为数字组件存储值k并且维护数字组件能够已经被分发给的用户的数量。
确定能够已经被显示数字组件的用户的数量能够包括与每个实际数字组件选择过程并行地执行反事实数字组件选择过程。在该反事实数字组件选择过程中,如果所有数字组件都满足除k匿名条件之外的所有条件,则它们能够是候选。如果在反事实数字组件选择过程中为至少k个用户或应用112选择数字组件,则如果不是针对k匿名条件,数字组件将已经被显示给k个用户。一旦发生这种情况,满足k匿名条件的数字组件能够被包括在实际数字组件选择过程中(假设满足数字组件的其他条件(如果有的话)),其不包括具有未满足的k匿名条件的数字组件。
在一些实施方式中,每个计算系统MPC1和MPC2将数字组件的信息存储在将数字组件及其相应信息映射到上下文信号集合的数据结构中。例如,每个数字组件能够有资格在具有包括上下文信号集合的资源和/或应用的呈现环境中显示。上下文信号能够包括例如资源的主题、在资源中找到的关键字、资源的资源定位符、客户端设备110的地理位置、应用112的口语设置、资源的数字组件槽的数量、数字组件槽的类型和/或其他适当的上下文信号。另外,数字组件能够具有多个对应的选择值,对于每个上下文信号集合一个选择值。使用这样的数据结构使得计算系统MPC1和MPC2能够识别有资格用于数字组件选择过程的数字组件。然后,计算系统MPC1和MPC2能够使用条件来从这些合格数字组件中识别作为用于在数字组件选择过程中选择的实际合格候选的数字组件。用于在确定数字组件是否合格中使用的上下文信号集合能够以查找键的形式,该查找键使得计算系统MPC1和MPC2能够使用数字组件请求的上下文信号来查找合格数字组件。
当数字组件与识别数字组件的合格用户组的对应用户组标识符相关联时,能够使用查找表(LUT)来存储信息。使用LUT能够提供一些性能优点,但是也能够使用其他适当的数据结构。LUT将上下文信号或从上下文信号导出的查找键映射到数字组件集合,使得数字组件集合有资格用于显示和/或其选择值或向量合格,受制于本文档中描述的其他条件。以这种方式,计算系统MPC1和MPC2能够为每个数字组件存储多个选择值,例如,对于每个上下文信号集合一个选择值。
在一些实施方式中,查找键是上下文信号的基于散列的消息认证码(HMAC)。例如,查找键能够是HMAC(URL,HMAC(语言,位置)),其中,参数URL是数字组件和选择值合格的资源的URL,参数语言是数字组件和选择值合格的应用112的指定口语,并且参数位置是数字组件和选择值合格的地理位置。如果数字组件请求的上下文信号与这些参数匹配,则映射到查找键的数字组件和选择值对于用于响应于该请求而选择数字组件的数字组件选择过程是合格的。除了URL、位置和语言之外或代替URL、位置和语言,能够使用其他上下文信号。
为了减少通过经由网络105传送数字组件请求所消耗的带宽量和延时量,应用112能够使用相同的HMAC来计算查找键,而不是将上下文信号发送到计算系统MPC1和MPC2。这还减少了由客户端设备110消耗的电池量以及由每个计算系统MP1和MPC2接收的数据量。
在一些实施方式中,例如,当数字组件以用户的用户组成员资格为条件时,使用两级LUT表。第一级能够由请求键(UG_Request_Key)键控。UG_Request_Key能够是基于上下文信号集合(例如,数字组件请求的上下文信号集合(例如,URL、位置、语言等)或对于其而言数字组件有资格用于分发的上下文信号集合)的复合消息形式的查找键。也就是说,能够基于上下文信号集合来键控第一级LUT。第一级的键能够是例如使用诸如SHA256的散列函数的UG_Request_Key的散列。该键能够被截断到指定数量的比特,例如,被截断到16个字节,或另一适当数量的比特。第一级LUT中的每个键UG_Request_Key的值能够第二级LUT的指示包括对于包括UG_Request_Key的上下文信号的数字组件请求而言合格的数字组件的数据的行。示例性第一级LUT如下表1所示。
键 | 值 |
SHA256(UG_Request_Key) | 行… |
… | 行… |
表1
能够基于第一级LUT中的用户组请求键UG_Request_Key和用户组标识符的组合来对第二阶段LUT进行键控。在一些实施方式中,第二级LUT能够是数组或其他适当的数据结构。第二级LUT中的每行能够是用于特定数字组件的特定选择值(或值的向量)。例如,DSP150能够针对相同的数字组件提交不同的选择值,其中每个选择值是用于不同上下文信号集合和/或不同的用户组标识符。因此,数字组件的选择值能够基于正在对其执行数字组件选择过程的用户的上下文和用户组成员资格而变化。
DSP 150或数字组件提供者160能够将数字组件关联(例如,链接或映射)到DSP150或数字组件提供者想要向其显示数字组件的用户组。例如,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和用户组的所有者的内部用户组标识符的数字摘要。eTLD+1是有效顶级域(eTLD)加上比公共后缀多一个级别。示例性eTLD+1是“example.com”,其中“.com”是顶级域。ug_id能够被截断到16个字节或另一适当的数据大小。
继续先前的飞钓示例,包括要显示给男子飞钓组中的用户的数字组件的信息的行的第二级查找键能够是男子飞钓组的用户组请求键UG_Request_Key和用户组标识符ug_id的组合。由于数字组件能够在不同的上下文中呈现,因此第二级查找表能够包括与男子飞钓组的用户组标识符ug_id相关联的数字组件的多个行,每行具有不同的用户组请求键UG_Request_Key和不同的值。
第二级LUT的每行的值能够是数字组件的选择值(或值的向量)和数字组件的其他数据,例如,识别数字组件或能够从其下载数字组件的网络位置的元数据等。在一些实施方式中,该行能够包含例如以web包格式的准备好由应用112渲染的数字组件本身。
该值能够是数字组件信息元素dc_information_element,其能够是具有选择值和元数据的字节数组。字节数组能够具有客户端设备110的应用112或可信程序以及计算系统MPC1和MPC2能够解析以获得选择值和元数据的特定格式。在一些实施方式中,数字组件信息元素能够包括数字组件本身。示例性第二级LUT如下表2所示。当向量用于确定选择值时,选择值能够由表2中的向量代替。
键 | 值 |
HMAC(UG_Request_Key,UG_ID) | {选择值,元数据} |
… | … |
表2
第二级LUT将选择值映射到特定数字组件、特定用户组标识符ug_id、以及由第一级查找键UG_Request_Key定义的特定上下文信号集合。通过这样做,第二级LUT指示对于其而言数字组件的选择值合格的数字组件槽的特定上下文。这允许DSP 150或数字组件提供者160为用于由上下文信号和用户的组成员资格定义的不同上下文的相同数字组件指定不同的选择值。当接收到指示将向其显示数字组件的用户是由特定用户组标识符ug_id识别的特定用户组的成员并且数字组件将在由第一级查找键的上下文信号定义的特定上下文中显示的数字组件请求时,在第二级LUT中具有匹配的用户组标识符和匹配的第一级查找键的选择值的任何数字组件是用于响应于该请求而被选择用于分发的候选。
除了贯穿本文档的描述之外,可以向用户提供控件(例如,用户能够与之交互的用户界面元素),从而允许用户关于本文描述的系统、程序或特征是否以及何时可以使得能够收集用户信息(例如,关于用户的社交网络、社交行为、或活动、职业、用户的偏好、或用户的当前位置的信息)以及是否从服务器向用户发送内容或通信进行选择。另外,某些数据可以在其被存储或使用之前以一种或多种方式被处理,使得个人可识别信息被移除。例如,可以处理用户的身份,使得不能确定用户的个人可识别信息,或者可以概括获得位置信息的用户的地理位置(诸如到城市、邮政编码或州级),使得不能确定用户的具体位置。因此,用户可以控制收集关于用户的什么信息、如何使用该信息以及向用户提供什么信息。
图2示出了图1的环境100内的示例性数据流。该描述包括两种类型的选择值:以敏感用户信息为条件的选择值,诸如用户组成员资格或其他商业敏感信息,或者其值的变化能够允许不道德方推断敏感信息的参数,或者“条件选择值”;以及不以敏感信息为条件的选择值,或“无条件选择值”。为了保护用户隐私,在MPC集群130而不是SSP 170或DSP 150内评估“条件选择值”的条件,以确定“条件选择值”是否是用于内容选择过程的候选。
该结构允许MPC集群130保护用户隐私和商业机密信息,并且向应用提供者(诸如应用112的提供者)证明其可信度。在该示例中,MPC集群130依赖安全2方计算(2PC)架构,其应用密码技术来保证如果MPC集群130的两个计算系统中的至少一个是诚实的,则不存在机密用户数据或商业机密信息的泄露。如果MPC集群130包括多于两个计算系统,则能够扩展当前MPC协议,或者能够使用其他MPC协议。
MPC集群130运行安全2PC协议以评估和应用选择候选数字组件的条件,实施选择过程以基于选择值来选择数字组件,并且接收展示通知以更新这些条件所依赖的参数。所有这些过程能够使用秘密份额技术来完成。参考图3详细描述该协议。
在级A中,应用112例如与来自诸如SSP 170的内容平台的触发元件协作地向MPC集群130发送对数字组件的请求。应用112能够将对数字组件的多个请求一起包括为一个组合请求以提取多个数字组件。然后,MPC集群130能够独立地服务组合请求中的每个请求,或者整体地做出一个或多个选择决策。在该示例中,请求是针对单个数字组件的,并且包括对基于敏感信息选择的数字组件或在不使用敏感信息的情况下选择的数字组件的请求。MPC集群130能够通过选择与来自各自映射到相应的特定数字组件的选择值集合当中的特定选择值相对应的特定数字组件来响应该请求。这些选择值能够是先前高速缓存或以其他方式存储在MPC集群130处的选择值和/或由诸如DSP 150或SSP 170的平台生成的选择值、即时(JIT)选择值。JIT选择值是响应于需要而直接生成的,并且提高效率并减少浪费,因为该选择值仅在需要数字组件时生成。例如,当数字组件槽变得可用时——这由接收到对数字组件的请求来指示,能够生成JIT选择值。因此,MPC集群130能够从包括在MPC集群130处存储其信息的所存储的数字组件和对于当前数字组件请求接收到其JIT选择值的数字组件的数字组件集合中选择数字组件。
在一些实施方式中,能够使用两个或更多个向量来确定数字组件的选择值。MPC集群130能够为数字组件存储能够用于确定该数字组件的选择值的第一值向量。第一值向量能够特定于一个或多个用户组,例如,当正在为作为一个或多个用户组的成员的用户选择数字组件时,能够用于确定该数字组件的选择值。因此,第一值向量也能够被称为基于用户组的向量。基于用户组的向量能够包括跨两个或更多个维度的多个元素,并且每个元素能够表示数字组件呈现机会的特定特征。例如,基于用户组的值向量能够包括用于地理位置或区域、口语、年龄或年龄范围、web页面或其他电子资源的特定URL、特定产品或服务、数字组件槽是首屏还是首屏以下、数字组件槽的类型、数字组件槽的大小、电子资源上的数字组件槽的数量、一天中的时间、web属性标识符和/或数字组件呈现机会的其他适当特征的元素。在一些实施方式中,例如,在采用神经网络的实施方式中,基于用户组的值向量能够是用户组在某个抽象向量空间中的嵌入。
每个元素的值能够反映基于具有与该元素相对应的特征的当前数字组件呈现机会来增大或减小数字组件的选择值的量。例如,如果DSP150想要将数字组件显示给亚特兰大的用户而不是达拉斯的用户,则用于亚特兰大的元素的值能够是高于值一的正值,并且用于达拉斯的元素的值能够是低于一的正值,例如零或负值。如下面更详细所述,基于用户组的向量的值能够是向量点积计算的一部分,以确定数字组件的选择值。
该请求包含在数字组件选择过程中使用的信息,包括能够是敏感的信息,诸如应用112被映射或以其他方式相关联的用户组的用户组标识符,以及不敏感的信息,诸如来自应用112的关于将在其中呈现和/或显示数字组件的上下文的上下文信号。如下面进一步详细所述,系统110的设计改善了对能够是敏感或机密的用户数据的保护。
触发元件能够是例如检测由应用112访问的互联网位置内的数字组件槽的存在的标签。触发元件能够被放置在例如互联网位置处,并且能够向应用112通知应当为其请求数字组件的数字组件槽的存在。
在级B中,MPC集群130向SSP 170传送基于不敏感的信息(诸如上下文信号)的数字组件请求。该请求被称为“上下文请求”。该上下文请求能够包含由触发对数字组件的请求的互联网位置(例如,内容发布者)直接收集的各种上下文信号和非敏感用户信息。例如,上下文信号能够包括分析数据、语言设置和帮助内容发布者提供良好用户体验的其他数据。然而,提供给SSP 170的上下文请求不包括敏感信息,诸如用户组标识符。
在级C中,SSP 170将上下文请求转发到一个或多个DSP 150。在该具体示例中,为了简单起见,SSP 170将上下文请求转发到单个DSP 150。例如,SSP 170能够将上下文请求转发到DSP 150。在该示例中,DSP 150具有数字组件和映射到数字组件的选择值,或者能够使用上下文信号来确定数字组件的选择值。
在级D中,一个或多个DSP 150响应于上下文请求而返回选择值。例如,DSP 150响应于上下文请求而返回映射到数字组件的一个或多个选择值。DSP 150能够响应于上下文请求而返回任何数量的选择值。在一些实施方式中,DSP 150能够另外基于敏感信息(诸如用户组信息)响应于数字组件请求而返回选择值。这些选择值是“条件选择值”,因为它们以敏感信息为条件,并且因此以MPC集群130接收到包括与选择值以其为条件的敏感信息匹配的敏感信息的请求为条件。对于DSP 150提供的每个选择值,DSP 150包括诸如生存时间(TTL)参数的信息,即MPC集群130可以高速缓存选择值的最大时间跨度。该TTL参数使得MPC集群130能够高速缓存从DSP 150接收到的选择值。在一些实施方式中,在没有TTL参数的情况下,MPC集群130不高速缓存接收到的选择值,而是将在选择过程中(例如,在与在级A、B和C中传送的数字组件请求相对应的选择过程中)已经使用了选择值之后丢弃选择值。
当向量用于确定选择值时,DSP 150能够生成并返回第二值向量。DSP 150能够基于在级B和C中传送的数字组件请求的上下文信号来生成第二值向量。第二向量能够被称为上下文向量。上下文向量能够包括与基于用户组的向量相同的特征相对应的相同元素。然而,DSP 150能够基于数字组件请求的上下文信号来确定用于当前数字组件请求的上下文向量的值。相反,DSP 150的基于用户组的向量的值被存储为MPC集群130,并且例如基于与基于用户组的向量相对应的用户组来提前确定。
对于提供上下文向量的每个DSP 150,MPC集群130能够通过确定基于用户组的向量和由DSP 150提供的上下文向量的点积来确定DSP 150的每个存储的数字组件的选择值。如果DSP 150具有由MPC集群130存储的多个基于用户组的向量,例如,每个用于不同的数字组件,则MPC集群130对于每个基于用户组的向量确定上下文向量和基于用户组的向量的点积。
在一些实施方式中,能够基于对于其提交数字组件请求的用户的用户简档来使用第三向量。该向量能够具有与其他向量相同的维度和特征,但是具有基于用户的用户简档的值。
例如,如果用户在奥斯汀,则用于用户简档向量中的奥斯汀的位置元素的值能够具有正值,或者如果用户不在奥斯汀,则能够具有负值或零值;如果当前向用户示出的发布者内容与奥斯汀高度相关,则用于上下文向量中的相同位置元素的值能够具有正值;如果数字组件与奥斯汀相关,则用于数字组件的基于用户组的向量中的相同位置元素的值为正。为了计算三个向量的点积,计算系统MPC1和MPC2首先在对应元素当中执行逐元素乘法,每一个对应元素来自三个向量中的每一个,然后对结果求和。例如,假设三个向量分别为V1={v1,1...v1,n},V2={v2,1...v2,n}和V3={v3,1...v3,n},三个向量之间的点积将为
在级E中,SSP 170将内容选择规则应用于对应于条件选择值的数字组件。如上所述,这些条件能够基于用户组标识符、频率控制、被阻止(例如,静音的)数字组件、调步和/或k匿名。
SSP 170还应用选择值规则来确定例如选择值如何影响特定内容提供者的发布后值。发布后值能够指示例如提供给发布者140以用于与发布者140的资源或应用内容一起显示数字组件的量。然后,SSP 170执行选择过程以确定最高无条件选择值,即产生最高发布后值的无条件选择值。无条件选择值不以敏感信息为条件,并且因此能够由SSP 170而不是由MPC集群130应用诸如预算和调步规则、广告商和数字组件排除的内容选择规则。然后,SSP 170将作为JIT选择值的以下项转发到MPC集群130:使得能够在MPC集群130中进行高速缓存的所有选择值(具有TTL值的选择值)以及其发布后值不小于最高无条件选择值的发布后值的所有选择值。
在级F中,MPC集群130利用接收到的使得能够高速缓存(具有TTL值)的JIT选择值来更新其高速缓存。另外,MPC集群130应用选择规则,诸如用户组成员资格规则、频率控制、调步规则和防止特定用户微靶向到在级E中接收到的所有选择值以及先前高速缓存的选择值的规则以选择用于选择过程的有效候选。规则能够包括关于数字组件的分发方式或频率的限制和指南以及其他因素。规则包括频率控制、静音、资源耗尽和调步约束。在一些实施方式中,对于当前数字组件选择过程,能够忽略具有由MPC集群130评估的条件的JIT数字组件。例如,对于当前选择过程忽略这些数字组件能够提供性能益处,例如,减少选择和提供数字组件的延时。然后,MPC集群130在所有合格候选中运行最终选择过程,选择获胜选择值,并且然后响应于数字组件请求将映射到获胜选择值的数字组件的数据返回到应用112。
在级G中,映射到获胜选择值的数字组件由应用112渲染。然后,应用112向MPC集群130提供展示通知。该展示通知包括允许MPC集群130更新与更新参数相关的信息的数据,更新参数允许MPC集群130针对例如在级A的后续发生中接收到的未来数字组件请求强制实施选择规则。在一些实施方式中,应用112可以通过背载在未来组件请求A之上将展示通知G发送到MPC集群130,以减少网络通信的数量和移动设备的电池/带宽消耗,以及MPC集群130的处理/计算成本。
图3是用于选择用于分发给客户端设备的数字组件的示例性过程300的泳道图。过程300的操作能够例如由客户端设备110、MPC集群130的计算系统MPC1和MPC2以及DSP 150来实现。过程300的操作还能够被实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置执行指令能够使一个或多个数据处理装置执行过程300的操作。尽管就两个计算系统MPC集群130而言描述了过程300和下面的其他过程,但是具有多于两个计算系统的MPC集群也能够用于执行类似的过程。此外,过程300的操作能够由SSP 170实现。
示例性过程300能够包括变型,诸如层级、提升、第一值选择过程(例如,第一价格拍卖)、第二值选择过程(例如,第二价格拍卖)和下限。参考图3至5描述这些变型中的每一个。
通常,提升是数字组件的选择值被调整的量。例如,当数字组件被选择用于与发布者的资源145或应用内容之一一起显示时,内容发布者能够指示SSP 170给予特定DSP 150指定量“x”的提升。如果DSP 150提交选择值“y”,则在数字组件选择过程中使用的选择值将是x+y。然而,如果选择数字组件,则将仅要求DSP 150在第一或第二选择值过程中提供不大于y的量。在过程300中,MPC集群130能够根据由SSP 170提供的信息将提升应用于选择值。例如,每个SSP 170能够提供将提升映射到DSP 150和发布者140对的信息。也就是说,该信息能够指示,对于选择用于与特定发布者的内容一起显示的数字组件的数字组件选择过程,特定DSP的选择值应该被提升特定量。在一些实施方式中,SSP/发布者能够支持以更细粒度级别的提升。例如,对于每个查找键(例如,对于每个上下文信号集合),SSP/发布者能够指定提升。
SSP 170能够指示安全MPC集群130将DSP 150分成具有不同优先级的多个层级。不是在数字组件选择过程中选择所有候选数字组件当中与最高选择值相对应的数字组件,而是选择最高优先级层级中具有最高选择值的数字组件。为了说明,考虑其中存在两个层级(最高层级和最低层级)的示例。如果在最高层级中存在一个或多个候选数字组件,则即使最低层级中的候选数字组件的选择值高于最高层级中的所有候选数字组件的选择值,也将选择最高层级中具有最高选择值的候选数字组件。
第一值选择过程与第二值选择过程之间的主要差异是所选择的数字组件的清算量。清算量是需要由DSP 150提供给发布者140和/或SSP 170以用于数字组件的显示的量。将使用两个过程来选择相同数字组件。在第一值选择过程中,将需要DSP 150向发布者140和/或SSP 170提供等于由DSP 150提交的选择值的量。在第二值选择过程中,代替地将需要DSP 150提供基于下一最高选择值的量。如果层级与第二选择值过程一起使用,则下一个最高值将是与所选择的数字组件相同的层级中的下一最高值。如果在同一层级中不存在这样的候选数字组件,则下一最高值能够是用于数字组件选择过程的最小值。
选择值下限能够指示发布者140愿意接受以用于数字组件的显示的最小选择值。发布者140能够为各种DSP 150、为每个类别的数字组件(例如,一个下限用于与汽车相关的数字组件,另一个下限用于与园艺相关的数字组件)、为每个数字组件提供者160、为每个品牌、为发布者站点上的每个页面、为每个数字组件槽、为一组数字组件槽和/或为其他类型的数字组件组指定选择值下限。在一些实施方式中,SSP 170能够提前代表发布者140设置下限,或者针对例如级A的每个数字组件请求设置下限。
DSP 150向MPC集群130提供数字组件的选择值和附加信息(例如,诸如条件的选择标准)(302)。在一些实施方式中,DSP 150经由SSP(为简洁起见在图3中未示出)向MPC集群130提供选择值和附加信息。例如,DSP 150能够响应于数字组件请求而提供选择值和附加信息,并且将与选择值相对应的数字组件指定为应当存储在MPC集群130处的存储的数字组件。
MPC集群130能够存储用于从客户端设备110接收到的未来数字组件请求的选择值和选择标准。对于每个数字组件,DSP 150还能够上传数字组件的附加数据,例如元数据。数字组件的附加信息能够包括为了将数字组件包括在数字组件选择过程中而必须满足的一个或多个条件(以及条件的参数)。例如,附加信息能够包括与数字组件相对应的用户组的一个或多个用户组标识符。
数字组件的附加信息能够包括指示对于其而言数字组件合格的上下文的上下文选择信号,例如,客户端设备110的位置、为应用112选择的口语、数字组件能够与其一起呈现的资源的URL和/或数字组件不能与其一起呈现的资源的排除的URL。数字组件的该附加信息还能够例如使用独特标识符、能够从其获得数字组件的域和/或数字组件的其他适当数据来识别数字组件。该附加信息能够被包括作为数字组件的元数据。
在一些实施方式中,MPC集群130高速缓存或以其他方式存储针对数字组件请求而提供给MPC集群130的数字组件的选择值、选择标准和其他信息。在该示例中,数字组件和选择值的上下文信号能够包括数字组件请求中包括的上下文信号。如上所述,选择值和元数据能够被存储在两级LUT中。
在一些实施方式中,DSP 150能够为数字组件提供基于用户组的值向量,而不是为数字组件提供静态选择值。在这样的示例中,能够存储基于用户组的值向量来代替选择值。
客户端设备110接收内容(304)。例如,客户端设备110能够接收用于由web浏览器显示的电子资源(例如,web页面)或用于由本机应用显示的应用内容。该内容能够包括一个或多个数字组件槽,该数字组件槽包括计算机可读代码(例如,脚本),该计算机可读代码在被执行时使得客户端设备110为每个槽请求数字组件。客户端设备110能够在客户端设备110的显示器上渲染内容。
客户端设备110识别用户组标识符集合(306)。用户组标识符集合能够是将用户包括为成员的用户组的用户组标识符。例如,用户组标识符集合能够是用户组列表中的用户组标识符。渲染内容的应用112或可信程序能够例如通过从客户端设备110的安全存储装置访问用户组列表来识别用户组标识符集合。
客户端设备110生成概率数据结构(308)。为了基于敏感信息来安全地且有效地生成数字组件请求,应用112能够使用概率数据结构,诸如布谷过滤器或布隆过滤器。在该示例中,概率数据结构是布谷过滤器。参考图8描述了使用布隆过滤器的示例。通常,布谷过滤器包括桶数组,其中每个桶能够保持b个指纹。项目的指纹是从该项目的散列导出的比特串。布谷过滤器使用n个散列函数,其允许项目被放置在b个位置中的任何一个位置中的n个不同桶中。通常,通过每个桶中的指纹的数量和桶的数量来识别布谷过滤器。例如,(2,4)布谷过滤器具有2个桶,并且布谷数组中的每个桶能够存储多达4个指纹。因此,布谷过滤器的总容量为2×4或8个指纹。
取决于布谷过滤器的配置,能够将项目插入到N个可能位置(例如N=2)中的一个位置中的布谷过滤器中。应用112使用由用户组标识符或来自被阻止标识符集合的标识符以及由应用112生成的两个随机变量中的任一个参数化的N个伪随机函数(PRF)来确定要插入的项目的所有可能位置。例如,假设由应用112生成的两个随机变量是rand_var1a和rand_var1b。在一些实施方式中,应用112和MPC集群130提前就PRF达成一致,其中,PRF(x,y)∈[0,2k-1],其中,k是布谷过滤器的桶中的每个项目中的比特数。
布谷过滤器的每个位置能够被用户组标识符或被阻止标识符占据,或者为空。被阻止标识符是对于其而言应用112正在例如基于频率控制阻止数字组件的标识符或者用户选择阻止用户组的数字组件的标识符。应用112能够生成其元素是PRF(ug_id,rand_var1a),PRF(blocked_uid,rand_var1b)和0的布谷过滤器表,其中,ug_id是通过基于内容提供者的域对用户组的标签应用HMAC而生成的用户组的标识符,blocked_uid是来自被阻止标识符集合的标识符,并且0表示空项。对所有用户组标识符重复该过程。在一些实施方式中,相同的概率数据结构(例如,布谷过滤器或布隆过滤器)能够存储用户组标识符和被阻止标识符两者。在其他实施方式中,用户组标识符和被阻止标识符被存储在专用概率数据结构中。
应用112能够基于针对用户组标识符和/或被阻止标识符生成的布谷过滤器表来生成向量B。向量B中的每个值Bi能够被表示为Bi=(Ai-PRF(rand_var2,i))mod p,其中A是布谷过滤器表,并且i是向量B和布谷过滤器表A的索引。当应用112发起对数字组件槽的数字组件的请求时,应用112将rand_var1a、rand_var1b和rand_var2作为请求的参数传送到计算系统MPC1。应用112还将向量B、rand_var1a和rand_var1b作为请求的参数传送到计算系统MPC2。PRF(rand_var2,i)和Bi是分别由计算系统MPC1和MPC2保持的Zp中的Ai的两个加性秘密份额。因为计算系统MPC1和MPC2都不能访问这两个秘密份额,所以计算系统都不能重新创建布谷过滤器表,从而保护用户隐私。
客户端设备110向MPC集群130传送包括布谷过滤器的参数的数字组件请求(310)。例如,客户端设备110能够向计算系统MPC1传送包括rand_var1a、rand_var1b和rand_var2的数字组件请求。客户端设备110还能够向计算系统MPC2传送包括向量B、rand_var1a和rand_var1b的数字组件请求。两个数字组件请求还能够包括上下文信号,例如,电子资源的URL、资源的数字组件槽的数量、客户端设备110的地理位置和/或能够用于选择数字组件的其他适当的上下文信号,例如,查找键。
MPC集群130向SSP 170传送上下文数字组件请求(312)。该数字组件请求能够包括上下文信号,但不包括敏感用户数据,诸如识别将用户包括为成员的用户组的用户组标识符。在一些实施方式中,上下文数字组件请求由客户端设备110上渲染的发布者页面上的SSP的标签生成。应用112通过背载在操作310中发送的数字组件请求上经由MPC集群130将上下文数字组件请求发送到SSP 170。在一些实施方式中,应用112使用SSP 170的公钥来加密上下文数字组件请求,并且通过背载在操作310中发送的数字组件请求上将加密的上下文数字组件请求发送到SSP 170,使得除了SSP 170之外没有人能够解密上下文数字组件。
SSP 170将上下文数字组件请求传送到一个或多个DSP 150(314)。每个DSP 150能够用数字组件的一个或多个条件选择值和/或数字组件的一个或多个无条件选择值来响应请求。对于每个数字组件,响应能够包括识别数字组件的数据、数字组件的选择值以及数字组件的元数据(或其他附加信息)。例如,响应能够包括每个数字组件的数字组件信息元素dc_information_element。每个DSP 150能够基于上下文信号来选择一个或多个数字组件以用于包括在数字组件选择过程中,并且确定或识别每个所选择的数字组件的选择值。在一些实施方式中,DSP 150能够基于上下文信号为一个或多个数字组件中的每一个生成上下文向量。
每个DSP 150能够将其响应传送到SSP 170(316)。SSP 170能够将响应传送到MPC集群130(318)。在一些实施方式中,SSP 170能够在将响应传送到MPC集群130之前对数字组件选择过程应用一个或多个下限。SSP 170能够基于为其选择数字组件的电子资源的发布者140来应用下限。如上所述,发布者140为DSP 150、数字组件的类别、数字组件提供者160、品牌和/或其他类型的数字组件组指定下限。
SSP 170能够识别由发布者140指定的下限,并将它们应用于从DSP 150接收到的选择值。如果选择值小于对应的下限,则SSP 170能够例如通过不将选择值提供给MPC集群130从数字组件选择过程中移除该选择值。例如,假设发布者140为给定的数字组件提供者160指定了五个单位的下限。如果DSP 150为给定数字组件提供者160的数字组件提供四个单位的选择值,则SSP 170能够从数字组件选择过程中过滤选择值。
如上所述,DSP 150能够为要被存储以用于将来在数字组件过程中使用的所存储的数字组件提供选择值。如果这些选择值不满足对应的下限,则数字组件及其相关联的选择值不被存储在MPC集群130处,因为SSP 170不将它们转发到MPC集群130。
在一些实施方式中,不是SSP 170或者除了SSP 170之外,MPC集群130还强制实施执行下限。当MPC集群130在向量被用于确定选择值时计算向量的点积时,MPC集群130能够对这些选择值强制实施下限。不是SSP 170,而是MPC集群130还能够对静态选择值强制实施下限。
MPC集群130执行安全MPC过程以选择要提供用于在客户端设备110处显示的数字组件(320)。该选择能够包括例如使用查找键(诸如上面参考图1描述的第一级查找键)基于上下文信号来识别有资格用于数字组件选择过程的数字组件集合及其对应的选择值。这还能够包括从数字组件集合中识别作为用于选择的候选的候选数字组件。候选数字组件能够包括DSP 150为其提供选择值的无条件数字组件和对于其而言满足数字组件的每个条件的条件数字组件。条件数字组件仅当满足数字组件的所有条件时被认为是用于数字组件选择过程的候选。
MPC集群130能够基于候选数字组件的选择值响应于数字组件请求而从候选数字组件中选择要提供给客户端设备110的数字组件。对于具有使用向量确定的选择值的数字组件,MPC集群130能够通过确定向量(例如,基于用户组的向量、上下文向量以及可选地用户简档向量)的点积来确定数字组件的选择值。
在选择数字组件时,MPC集群130还能够考虑数字组件的任何层级或提升。如上所述,发布者140能够为DSP 150和/或数字组件提供者160建立层级和/或提升。当正在为其选择数字组件的发布者140已经建立了提升时,MPC集群130(或SSP 170)能够使用由发布者140指定的对应提升来调整DSP 150和/或数字组件提供者160的数字组件的选择值。如果向量被用来确定选择值,则MPC集群130能够在通过计算向量的点积来确定选择值之后调整选择值。
当使用层级时,MPC集群130能够例如从最高优先级层级到最低优先级层级顺序地或并行地对每个层级执行选择过程。MPC集群130能够选择包括至少一个候选数字组件的最高优先级层级中具有最高选择值的数字组件。例如,如果最高优先级层级中的数字组件都不是例如满足其用于包括在数字组件选择过程中的所有条件的候选,则MPC集群130从包括候选的下一最高优先级层级中选择候选。
MPC集群130能够并行地对每个层级执行选择过程,以提高执行选择过程的速度。以这种方式,如果在最高优先级层级中没有候选,则MPC集群130已经开始并且可能已经完成了对每个其他层级的选择过程,使得能够选择最终的数字组件。
MPC集群130能够从最高优先级层级到最低优先级层级顺序地执行选择过程。如果速度不那么关键,则如果较高优先级层级包括候选数字组件,则这能够减少对较低优先级层级执行的浪费计算。用于使用安全MPC过程来选择数字组件的示例性过程在图4中示出并且在下面描述。
MPC集群130将选择结果的秘密份额传送到客户端设备110(322)。在一些实施方式中,MPC集群130还能够向客户端设备110发送用于数字组件选择过程的选择过程标识符。选择过程标识符能够独特地识别为其生成选择结果的数字组件选择过程。例如,计算系统MPC1和MPC2能够各自为每个数字组件请求生成相应的选择过程标识符SPID,计算系统MPC1和MPC2对每个数字组件请求执行选择过程以生成选择结果来提供给客户端设备110。在一些实施方式中,选择过程标识符SPID能够是随机数或不透明的字母数字或数字序列。
MPC集群130还能够存储作为由SPID键控或以其他方式链接到SPID的选择过程的一部分的选择值的数据。例如,计算系统MPC1能够存储包括具有基于由计算系统MPC1为选择过程生成的SPID1的键的选择值的数据的表或其他数据结构。类似地,计算系统MPC2能够存储包括具有基于由计算系统MPC2为选择过程生成的SPID2的键的选择值的数据的表或其他数据结构。这使得MPC集群130能够基于从客户端设备110接收的数据来更新反馈控制器的过程变量。
选择结果能够是字节数组的形式,其包括关于所选择的数字组件的信息。例如,选择结果能够是字节数组,其包括第二LUT中的数字组件的值,例如,数字组件的选择值和数字组件的元数据。计算系统MPC1和MPC2能够使用安全MPC过程来确定选择结果的秘密份额,如下面更详细地所述。计算系统MPC1能够将选择结果的第一秘密份额传送到客户端设备110,并且计算系统MPC2能够将选择结果的第二秘密份额发送到客户端设备110。为了防止计算系统MPC1和MPC2知道所选择的数字组件,能够防止计算系统MPC1和MPC2彼此共享它们的选择结果的秘密份额。
客户端设备110确定与选择结果相对应的数字组件(324)。对于客户端设备110从计算系统MPC1和MPC2接收其两个秘密份额的每个选择结果,客户端设备110能够从两个秘密份额确定选择结果。例如,使用如下面更详细描述的加性秘密份额库,客户端设备110能够将选择结果的两个秘密份额加在一起以获得明文形式的选择结果。这给予客户端设备110对数字组件的选择值和数字组件的元数据(例如,数字组件的身份、客户端设备110能够从其下载数字组件的位置等)的访问。
客户端设备110显示数字组件(326)。例如,应用112能够将数字组件与在步骤304中接收到的内容一起显示。在一些实施方式中,客户端设备110能够显示选择结果的数字组件。
在一些实施方式中,客户端设备110能够基于用户组成员资格从MPC集群130请求数字组件。客户端设备110还能够基于上下文信号从SSP 170请求数字组件。这些上下文信号能够包括上述相同的上下文信号,以及可选地附加的上下文信号,诸如资源的数字组件槽的数量、数字组件槽的类型、能够与资源一起显示的数字组件的类型和/或格式等。SSP170能够基于上下文信号和数字组件的选择值来选择一个或多个数字组件,并且将所选择的数字组件(或识别数字组件的数据)和数字组件的选择值中的一个或多个提供给客户端设备110。然后,客户端设备110能够从包括从MPC集群130接收到的选择结果的数字组件和由SSP 170选择的数字组件的数字组件集合中选择要与资源一起显示的数字组件。如果资源包括多个数字组件槽,则客户端设备110能够从MPC集群130和从SSP 170请求每个槽的相应数字组件。
客户端设备110能够将一个或多个事件通知传送到MPC集群130(328)。例如,假设从MPC集群130接收到的选择结果的数字组件由客户端设备110的应用112显示,则应用112能够响应于显示数字组件而传送数字组件的展示通知。在另一示例中,应用112能够响应于检测到用户交互(例如,对数字组件的选择/点击)而传送用户交互通知。
对于用户交互通知,应用112能够生成点击参数clicked的秘密份额,该点击参数clicked是布尔参数,如果用户与数字组件进行了交互,则该布尔参数能够具有值一,或者如果用户在显示数字组件之后的指定持续时间内没有与数字组件交互,则该布尔参数能够具有值零。因此,在该示例中,任一值指示数字组件被显示,但是值一能够指示用户与数字组件进行了交互。应用112能够向计算机系统MPC1发送包括从计算系统MPC1接收到的SPID1和点击参数的第一秘密份额[clicked1]的第一通知。类似地,应用112能够向计算机系统MPC2发送包括从计算系统MPC2接收到的SPID2和点击参数的第二秘密份额[clicked2]的第二通知。在另一示例中,通知能够例如使用类似于点击参数的秘密份额来单独地指示数字组件是否在客户端设备110处显示。
展示和用户交互通知使得MPC集群130能够更新用于对数字组件的分发进行调步的反馈控制器的过程变量。例如,如果过程变量是展示率,则MPC集群130能够使用展示通知来更新数字组件(或包括数字组件的活动)的展示的计数。如果过程变量是用户交互率,则MPC集群130能够使用点击参数来更新数字组件(或包括数字组件的活动)的用户交互的数量。在具体示例中,计算系统MPC1能够使用SPID1来获得用于选择过程的存储的数据,并且计算系统MPC2能够使用SPID2来获得用于选择过程的存储的数据。然后,MPC集群130能够执行安全MPC过程来更新由应用112显示的数字组件的活动的过程变量(例如,展示率、交互率、转化率和/或资源耗尽率)。类似地,MPC集群130能够使用通知来更新用于确定数字组件是否满足k匿名条件的计数。
图4是用于选择用于分发给客户端设备的数字组件的示例性过程400的泳道图。过程400的操作能够例如由MPC集群130的计算系统MPC1和MPC2实现。过程400的操作还能够被实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置执行指令能够使一个或多个数据处理装置执行过程400的操作。
过程400能够用于第一值选择过程、第二值选择过程和/或包括提升和/或下限的选择过程。下面描述这些变型中的每一个。图5中所示的另一示例性过程500能够用于包括层级的选择过程。过程500还能够支持第一值选择过程、第二值选择过程、提升和/或下限。
计算系统MPC1和MPC2确定和/或识别数字组件的选择值(402)。计算系统MPC1和MPC2能够响应于从客户端设备110接收到的数字组件请求而确定选择值。如参考图3所述,计算系统MPC1能够从客户端设备110接收数字组件请求,该数字组件请求包括上下文信号和概率数据结构的数据,该概率数据结构表示客户端设备110的用户的用户组标识符。概率数据结构的数据能够包括参数rand_var1a、rand_var1b和rand_var2。类似地,计算系统MPC2能够从客户端设备110接收上下文信号和参数向量B、rand_var1a和rand_var1b。上下文信号能够是查找键的形式,例如,参考图1描述的第一级查找键(SHA256(UG_Request_Key))。
选择值能够包括由每个计算系统MPC1和MPC2存储其数据的存储的数字组件的选择值以及从SSP 170接收到的用于数字组件选择过程的JIT选择值。对于使用向量确定选择值的情况,每个计算系统MPC1和MPC2能够通过确定数字组件的向量的点积来确定选择值。计算系统MPC1和MPC2还能够对发布者140或SSP 170已经为其建立提升的数字组件应用任何提升和/或强制实施由发布者140或SSP 170建立的任何下限。
计算系统MPC1识别合格数字组件(404)。计算系统MPC1能够对从客户端设备110接收到的数字组件请求识别合格数字组件,例如,如参考图3所述。合格数字组件是基于数字组件请求的上下文信号有资格用于选择的数字组件。例如,合格数字组件能够是具有与数字组件请求的上下文信号匹配的上下文信号集合的数字组件,例如,具有与请求的查找键匹配的查找键的数字组件。
在使用两级LUT的实施方式中,计算系统MPC1能够使用数字组件请求的第一级查找键来识别合格数字组件。计算系统MPC1能够访问第一级LUT并且使用第一级查找键来识别第二级LUT的包括对于由第一级查找键表示的上下文信号集合有资格要被显示的数字组件(例如已经为其接收到选择值)的信息的行。例如,如上所述,第二级LUT的每行包括数字组件的信息和基于上下文信号集合的第二级查找键。因此,计算系统MPC1能够使用第一级查找键来识别第二级LUT的具有与由在数字组件请求中接收到的第一级查找键定义的上下文信号集合匹配的上下文信号集合的行。这些行包括对于由在数字组件请求中接收到的第一级查找键定义的上下文有资格要被显示或具有合格选择值的数字组件的信息。
计算系统MPC2识别合格数字组件(406)。计算系统MPC2能够识别针对从客户端设备110接收到的数字组件请求的合格数字组件。计算系统MPC2能够以与计算系统MPC1类似的方式识别合格数字组件。在MPC集群130强制实施下限的实施方式中,每个MPC计算系统MPC1和MPC2能够从合格数字组件中过滤具有不满足(例如,不符合或超过)其对应下限的选择值的任何合格数字组件。
对于每个合格数字组件,计算系统MPC1和MPC2确定数字组件及其选择值是否是响应于数字组件请求而被选择用于分发给客户端设备110的候选(408)。候选数字组件是在数字组件是条件数字组件的情况下满足数字组件的所有一个或多个条件的合格数字组件。基于上下文合格的每个无条件数字组件也是候选数字组件。计算系统MPC1和MPC2能够使用安全MPC过程来确定候选数字组件,使得计算系统MPC1或MPC2都不能以明文识别候选数字组件。
对于用户组成员资格条件,计算系统MPC1和MPC2能够为每个合格数字组件“i”计算用户组成员资格条件参数ug_checki的相应秘密份额。由计算系统MPC1维护的用户组成员资格条件参数ug_checki的第一秘密份额能够被表示为[ug_checki,1],并且由计算系统MPC2维护的用户组成员资格条件参数ug_checki的第二秘密份额能够被表示为[ug_checki,2]。括号用于表示参数的秘密份额。
对于布谷过滤器用于表示用户的用户组成员资格的实施方式,计算系统MPC1与计算系统MPC2协作地根据下面的关系式1来计算[ug_checki,1]:
在关系式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与计算系统MPC2协作地根据以下关系式2来计算[ug_checki,2]:
这里,[Mi,2]的值=Bi。
对于以正在为其选择数字组件的用户的用户组成员资格为条件的数字组件,计算系统MPC1和MPC2能够计算用户组成员资格条件参数ug_checki的秘密份额[ug_checki,1]和[ug_checki,2]。两个秘密份额的组合能够是表示用户是否是与数字组件相对应的用户组的成员的布尔值。例如,值一能够表示用户是成员,而值零能够表示用户不是成员。对于不以用户的用户组成员资格为条件的数字组件,计算系统MPC1和MPC2能够使用秘密份额[ug_checki,1]和[ug_checki,2]的默认值,使得组合具有指示用户是与数字组件相对应的用户组的成员的值(例如,一)。
在布隆过滤器用于表示用户的用户组成员资格的实施方式中,计算系统MPC1和MPC2能够查询布隆过滤器,如参考图8所述。结果是计算系统MPC1对于布隆过滤器的每个散列函数具有用户组成员资格条件参数的第一秘密份额[ug_checki,1]。类似地,计算系统MPC2对于布隆过滤器的每个散列函数具有用户组成员资格条件参数的第二秘密份额[ug_checki,2]。对于满足用户组成员资格条件的数字组件,用户组成员资格条件参数(即,ug_checki)对于布隆过滤器的每个散列值将需要具有布尔值真或一。每个散列值的秘密份额能够被包括在数字组件的候选参数的秘密份额的最终计算中。
计算系统MPC1和MPC2还能够协作以计算以频率控制或静音为条件的每个数字组件i的被阻止数字组件参数blocked_checki的相应秘密份额[blocked_checki,1]和[blocked_checki,2]。两个秘密份额的组合能够是布尔值,该布尔值表示,基于频率控制(例如,数字组件在一段持续时间内未被提供给用户超过阈值次数)和/或基于用户是否选择不向用户显示数字组件,数字组件是否满足被阻止数字组件条件。例如,布尔值真或值一能够表示基于这些因素能够向用户显示数字组件,而布尔值假或值零能够表示基于这些因素不能向用户显示数字组件。
为了确定被阻止数字组件参数的秘密份额,计算系统MPC1和MPC2能够使用表示被阻止数字组件的标识符的布隆过滤器的份额(例如,数组)。应用112能够生成表示被阻止数字组件的标识符的布隆过滤器,并且将表示布隆过滤器的数据发送到计算系统MPC1和MPC2,如参考图8所述。然后,计算系统MPC1和MPC2能够使用表示布隆过滤器的数组来查询布隆过滤器,以获得秘密份额[blocked_checki,1]和[blocked_checki,2],如参考图8所述。
计算系统MPC1和MPC2还能够协作以为例如使用反馈控制器调步的每个数字组件i计算调步控制检查参数pacing_checki的相应秘密份额[pacing_checki,1]和[pacing_checki,2]。两个秘密份额的组合能够是布尔值,该布尔值表示,例如,基于反馈控制器的输出,数字组件是否满足调步条件的布尔值。例如,如果数字组件相对于目标展示率被太频繁地提供,则反馈控制器的输出能够指示数字组件没有资格用于该数字组件选择过程。布尔值真或值一能够表示数字组件满足调步条件,例如,未针对该选择过程被节流,而布尔值假或值零能够指示数字组件不满足调步条件,例如,针对该选择过程被节流。
为了强制实施资源耗尽(例如,预算)和调步规则,计算系统MPC1和MPC2能够使用利用反馈控制器确定的概率和资源耗尽条件来随机地阻止数字组件参与数字组件选择过程。如果包括数字组件的活动不具有任何附加资源,则概率被设置为一。否则,如果活动在递送时间表之前,则概率被设置为高(例如,高于零并且接近一),使得计算系统MPC1和MPC2更可能阻止该数字组件进行数字组件选择过程,例如,通过计算秘密份额[pacing_checki,1]和[pacing_checki,2],使得调步控制检查参数pacing_checki的值为零。如果活动在递送时间表后面,则概率较低。
计算系统MPC1和MPC2能够使用反馈控制器定期计算加性秘密份额中的每个活动的调步选择器参数pacing_selector。在概念上,调步选择器参数是按最大范围的因子放大的节流概率。
对于每个数字组件请求和每个数字组件,计算系统MPC1和MPC2计算均匀分布在[0,最大范围]中的秘密数。如果随机数小于或等于调步选择器参数pacing_selector,则计算系统MPC1和MPC2例如通过计算秘密份额[pacing_checki,1]和[pacing_checki,2]来阻止数字组件参与数字组件选择过程,使得调步控制检查参数pacing_checki的值为零。
为了保护数字组件选择过程中的参与者的用户隐私和机密信息,随机数和调步选择器参数两者都在加性秘密份额中。能够使用扰码电路协议来执行两个秘密份额之间的比较。通过将两个秘密份额限制为六个比特或七个比特,比较协议能够在计算系统MPC1和MPC2之间进行一轮或两轮通信。
为了确定活动的调步选择器参数,计算系统能够将用于每个活动的资源量计算为resources_used_campaign=∑(clearing_value×is_dc_the_winner),其中,总和跨包括活动的数字组件的所有数字组件选择过程,参数clearing_value是数字组件选择过程的清算值,并且is_dc_the_winner是数字组件选择过程中的数字组件的获胜者参数。该计算能够在秘密份额中执行,使得每个计算系统MPC1和MPC2保持所使用的资源量的秘密份额。然后,计算系统MP1和MPC2能够通过确定所使用的资源量(即resources_used_campaign)是否大于秘密份额中为活动分配的总资源量来计算该活动的资源耗尽参数resources_exhausted。
计算系统MPC1和MPC2能够将每个活动的调步选择器参数pacing_selector计算为pacing_selector=resources_exhausted×maximum range+(1-resources_exhausted),其中,参数输出是反馈控制器的输出。该计算能够使用计算系统MPC1和MPC2之间的一个RPC来计算秘密份额中的乘法。然而,能够定期离线执行计算以防止任何增加的延时。
计算系统MPC1和MPC2还能够协作以为必须满足k匿名条件的每个数字组件i计算k匿名检查参数kanonymity_checki的相应秘密份额[kanonymity_checki,1]和[kanonymity_checki,2],在一些实施方式中,这能够应用于所有数字组件。两个秘密份额的组合能够是表示数字组件是否满足k匿名条件的布尔值。例如,值一能够表示数字组件满足k匿名,而值零能够表示数字组件不满足k匿名并且应该被阻止进行数字组件选择过程。
计算系统MPC1和MPC2能够定期处理日志(如参考图9所述)以识别其中通过应用112已经示出(或能够已经示出)获胜者数字组件(例如,已经在展示通知中接收到对应选择过程标识符)的数字组件选择过程。在这些选择过程中,计算系统MPC1和MPC2将对由用户的应用112示出(或能够已经示出)的展示的数量计数为impression_showi=∑(is_dc_the_winner_i)。这里,i能够表示数字组件或活动。在秘密份额中执行计算,使得每个计算系统MPC1和MPC2具有展示的数量impression_showi的秘密份额。然后,计算系统MPC1和MPC2能够例如通过在秘密份额上将展示的数量与k进行比较来确定展示的数量是否超过值k。
对于每个条件数字组件(例如,具有至少一个条件的数字组件)的每个条件,每个计算系统MPC1和MPC2能够存储数字组件的每个条件的参数的对应秘密份额。以这种方式,只要至少一个MPC计算系统是诚实的,计算系统MPC1和MPC2就都不知道明文的参数的值。每个数字组件能够以零个或多个条件为条件。对于给定的数字组件选择过程,一些数字组件能够具有与其他数字组件不同的条件和/或不同数量的条件。
尽管上面提供了一些示例性条件,但是也能够使用其他条件。通常,计算系统MPC1和MPC2能够使用安全MPC过程来计算条件参数的秘密份额。用于确定条件参数的标准和技术能够变化。在一些实施方式中,能够从另一计算系统接收条件参数的秘密份额,例如,使得计算系统MPC1和MPC2不计算条件参数。
计算系统MPC1和MPC2能够使用条件参数的秘密份额来确定条件数字组件是否是用于数字组件选择过程的候选。计算系统MPC1和MPC2能够使用条件数字组件的条件参数的秘密份额来计算每个条件数字组件i的候选参数is_dc_a_candidatei的秘密份额。通常,如果条件数字组件以上述每个条件为条件,则能够使用下面的关系式3来计算数字组件i的候选参数:
is_dc_a_candidatei=ug_checki AND blocked_checki AND pacing_checki ANDkanonymity_checki
由于每个条件参数的值在秘密份额中,因此计算系统MPC1和MPC2能够使用往返远程过程调用(RPC)在安全MPC过程中协作,以使用条件参数的秘密份额来确定数字组件i的候选参数的对应秘密份额[is_dc_a_candidatei,1]和[is_dc_a_candidatei,2]。能够使用用于确定逻辑AND运算的任何适当的秘密共享算法来确定数字组件i的候选参数的秘密份额[is_dc_a_candidatei,1]和[is_dc_a_candidatei,2]。计算系统MPC1和MPC2能够仅使用那些条件的条件参数的秘密份额来确定候选参数的秘密份额。在该安全MPC过程结束时,计算系统MPC1保持每个条件数字组件的候选参数的第一秘密份额[is_dc_a_candidatei,1],并且计算系统MPC2保持每个条件数字组件的候选参数的第二秘密份额[is_dc_a_candidatei,2]。
在一些实施方式中,计算系统MPC1和MPC2使用扰码电路协议来评估针对每个数字组件的关系式3。在该示例中,计算系统MPC1或MPC2之一能够构造扰码电路。对于该示例,假设计算系统MPC1构造扰码电路。计算系统MPC1知道其自己的秘密份额,并且还知道计算系统MPC2的秘密份额必须保持的仅一种可能的比特模式,以便数字组件的候选参数变为真或一。利用这种属性,例如,如果在关系式3中存在总共约50个布尔参数,则计算系统MPC1仅需要多达50个门来构造扰码电路。
在关系式3中,仅存在一个用户组成员资格条件参数ug_checki。然而,如果布隆过滤器用于表示用户的用户组成员资格,则关系式3能够包括布隆过滤器的每个散列函数的相应用户组成员资格条件参数ug_checki。类似地,如果使用布隆过滤器来表示被阻止数字组件,则关系式3将包括该布隆过滤器的每个散列函数的相应被阻止数字组件参数blocked_checki。在关系式3中,仅当数字组件的所有者启用调步检查时才存在pacing_checki。
计算系统MPC1基于选择值来确定数字组件的顺序(410)。类似地,计算系统MPC2基于选择值来确定数字组件的顺序(412)。这两个顺序应该完全相同,因为排序过程的输入在两个计算系统MPC1和MPC2上是相同的。每个计算系统MPC1和MPC2能够确定数字组件的顺序。每个顺序能够包括在步骤408中评估候选资格的候选数字组件和其他数字组件。例如,该顺序能够包括可用于数字组件选择过程的所有可用数字组件、(例如,基于上下文信号合格的)用于数字组件选择过程的所有合格数字组件、或者第二级LUT(如果使用的话)中的所有数字组件。该顺序能够是从具有最高选择值的数字组件到具有最低选择值的数字组件。在一些实施方式中,用于顺序的选择值能够是例如在与DSP 150和/或SSP 170的任何共享之后将被提供给将与其一起显示所选择的数字组件的资源的发布者140的值加上任何适用的提升。
由于选择值是明文,因此计算系统MPC1和MPC2不必执行任何往返计算来确定数字组件的顺序。相反,每个计算系统MPC1和MPC2能够独立地对选择值进行排序。如果选择值在每个计算系统MPC1和MPC2处被存储为秘密份额,其中每个计算系统MPC1和MPC2具有每个选择值的相应秘密份额,则计算系统MPC1和MPC2能够使用往返计算来执行安全MPC过程以对选择值进行排序。如果在两个或更多个选择值之间存在联系,则计算系统MPC1和MPC2能够使用与这些选择值相对应的数字组件的其他元数据来确定性地断绝联系。
计算系统MPC1和MPC2确定每个候选数字组件的累加值的秘密份额(414)。在概念上,给定数字组件的累加值表示从该顺序的顶部到给定数字组件的选择值的候选数字组件的总数,即使给定数字组件是候选,也不包括给定数字组件。也就是说,累加值表示比给定数字组件更有资格用于选择的候选数字组件的数量。该概念在下表3中示出。
表3
在一些实施方式中,给定数字组件的累加值表示从顺序的顶部到给定数字组件的候选数字组件的总数,如果给定数字组件是候选,则包括给定数字组件。在该示例中,第四列将表示累加值是否等于一而非零。为简洁起见,剩余的讨论将根据第一示例,其中给定数字组件的累加值表示从顺序的顶部到给定数字组件的候选数字组件的总数,即使给定数字组件是候选,也不包括该给定数字组件。
在概念上,在表3中,对于具有候选参数is_dc_a_candidate等于一的每个数字组件,使累加值(acc)递增,因为其从顺序的顶部前进到顺序的底部。如下所述,在秘密份额中执行对累加值acc的计算。例如,具有最高选择值的数字组件的累加值acc为零,因为最高选择值的候选参数is_dc_a_candidate等于零。第二高数字组件的累加值acc也为零,因为第二高数字组件的候选参数is_dc_a_candidate等于一,但是没有高于第二高数字组件的选择值具有等于一的候选参数is_dc_a_candidate。按顺序向下移动,基于第二高选择值的候选参数is_dc_a_candidate具有值一,使第三高选择数字组件的候选参数is_dc_a_candidate的累加值acc递增值一。由于第三高数字组件的候选参数is_dc_a_candidate为零,所以不使第四数字组件的累加值acc递增,并且像第三高数字组件一样具有零值。
使用表3,计算系统MPC1和MPC2将选择与总候选参数is_dc_a_candidate具有值一并且如表3的第四列中所指示的累加值acc具有值零的选择值相对应的数字组件用于分发给客户端设备110。这表示与候选参数is_dc_a_candidate的值为一的最高排序选择值相对应的数字组件。由于候选参数is_dc_a_candidate处于计算系统MPC1和MPC2的秘密份额中以维护用户隐私并确保用户数据不被泄露,因此计算系统MPC1和MPC2确定每个数字组件的累加值acc的秘密份额,并且使用往返计算来确定哪个数字组件具有等于零的累加值acc和等于一的候选参数is_dc_a_candidate。
在一些实施方式中,计算系统MPC1和MPC2能够取决于秘密份额算法来独立地确定每个数字组件的累加值acc的它们的秘密份额,而无需任何往返计算。例如,计算系统MPC1能够通过按从最高到最低的顺序遍历所有数字组件并沿着该路径对数字组件的候选参数is_dc_a_candidate求和来为每个数字组件i确定累加值acc的第一份额[acci,1],如上参考表3所述。类似地,计算系统MPC2能够通过按从最高到最低的顺序遍历所有数字组件并沿着该路径对数字组件的候选参数is_dc_a_candidate求和来为每个数字组件i确定累加值acc的第二份额[acci,2]。
计算系统MPC1和MPC2为每个数字组件确定指示累加值是否具有指定值的结果的秘密份额(416)。指定值能够是零值,如表3的第3列和第4列所示。如上所述,累加值为零并且总候选参数is_dc_a_candidate为一的数字组件是候选数字组件当中具有最高选择值的数字组件。
计算系统MPC1和MPC2能够参与多轮计算,例如多个RPC,作为安全MPC过程的一部分,以根据每个数字组件i的秘密份额来计算相等性运算acci==0。相等性运算用于确定数字组件i的累加值acci是否具有零值。在该过程结束时,计算系统MPC1对于每个数字组件i具有结果acci==0的一个秘密份额,并且计算系统MPC2对于每个数字组件具有结果acci==0的另一秘密份额。
计算系统MPC1和MPC2确定每个数字组件i的获胜者参数is_dc_the_winneri的秘密份额(418)。计算系统MPC1和MPC2能够基于每个数字组件i的累加值acci==0的秘密份额和候选参数is_dc_a_candidatei的秘密份额来确定每个数字组件i的获胜者参数is_dc_the_winneri。每个数字组件i的获胜者参数is_dc_the_winneri能够是布尔值,该布尔值指示数字组件i是否是选择过程的获胜者,例如,数字组件i是否响应于数字组件请求而被选择用于分发给客户端设备110。
在一些实施方式中,计算系统MPC1和MPC2能够执行秘密份额乘法协议,以根据秘密份额为每个选择值计算获胜者参数is_dc_the_winneri==(is_dc_a_candidatei×(acci==0))。这能够包括计算系统MPC1和MPC2之间的一个RPC以乘以两个秘密份额。在该MPC过程结束时,计算系统MPC1具有被表示为[is_dc_the_winneri,1]=[is_dc_a_candidatei,1]x([acci,1]==1)的结果is_dc_the_winneri的一个秘密份额。类似地,计算系统MPC2具有被表示为[is_dc_the_winneri,2]=[is_dc_a_candidatesv,2]x([acci,2]==0)的结果is_dc_the_winneri的另一秘密份额。注意,对于所有数字组件,至多一个数字组件具有等于一的获胜者参数is_dc_the_winneri,其是被选择用于分发给客户端设备110的数字组件。所有其它都将等于零。
对于第一值选择过程,计算系统MPC1和MPC2能够执行类似的过程来确定每个数字组件i的获胜者参数is_dc_the_winneri。例如,计算系统MPC1和MPC2能够执行秘密份额相等性测试以确定第一选择值参数的秘密份额maybe_first_svi=(acci==0)。数字组件i的第一选择值参数maybe_first_svi能够是表示数字组件的选择值是否可能是候选数字组件当中最高的布尔值。选择值将仅在与选择值相对应的数字组件实际上是候选数字组件的情况下是候选数字组件当中的最高选择值。因此,数字组件i的第一选择值参数maybe_first_svi表示在数字组件实际上是候选数字组件的情况下该数字组件是否将具有最高选择值。在该相等性测试结束时,计算系统MPC1具有数字组件i的第一选择值参数maybe_first_svi的第一秘密份额[maybe_first_svi,1],并且计算系统MPC2具有数字组件i的第一选择值参数maybe_first_svi的第二秘密份额[maybe_first_svi,2]。
然后,计算系统MPC1和MPC2能够使用下面的关系式4根据秘密份额来计算每个数字组件i的获胜者参数is_dc_the_winneri:
is_dc_the_winneri==((is_dc_a_candidatei=TRUE)AND(maybe_first_svi=TRUE))
计算系统MPC1和MPC2确定选择结果(420)。在一些实施方式中,计算系统MPC1和MPC2能够基于数字组件的获胜者参数和数字组件的数字组件信息元素dc_information_element来计算选择结果。如上所述,数字组件的数字组件信息元素dc_information_element能够包括数字组件的选择值和数字组件的其他数据。
在概念上,计算系统MPC1和MPC2能够使用下面的关系式5来计算选择结果参数“result”:
result=∑iis_dc_the_winneri×dc_information_elementi
也就是说,计算系统MPC1和MPC2能够跨所有数字组件确定获胜者参数is_dc_the_winneri和数字组件信息元素dc_information_elementi的乘积的总和。在该示例中,选择结果将在不存在候选数字组件的情况下具有值零,或者将具有等于具有等于一的获胜者参数is_dc_the_winneri的所选择的数字组件的数字组件信息元素dc_information_element的值。在另一示例中,数字组件信息元素dc_information_element能够在关系式5中用数字组件的选择值代替。在该示例中,选择结果将在不存在候选数字组件的情况下具有值零,或者将具有等于具有等于一的获胜者参数is_dc_the_winneri的所选择的数字组件的选择值的值。
为了在秘密份额中执行计算,计算系统MPC1获取所有数字组件,并将能够以明文的数字组件的数字组件信息元素dc_information_elementi乘以数字组件的获胜者参数[is_dc_the_winneri,1]的第一秘密份额。然后,计算系统MPC1能够确定这些乘积的总和,并将总和返回给提交数字组件请求的客户端设备110。也就是说,计算系统MPC1能够使用下面的关系式6将总和确定为结果的第一秘密份额[result1]:
[result1]=∑i([is_dc_the_winneri]×dc_information_elementi)
计算系统MPC2能够使用下面的关系式7执行类似的计算以确定结果的第二秘密份额[result2]:
[result2]=∑i([is_dc_the_winneri]×dc_information_elementi)
计算系统MPC1向客户端设备110发送选择结果的第一份额[result1](422)。类似地,计算系统MPC2向客户端设备110发送选择结果的第二份额[result2](424)。然后,应用112能够使用两个秘密份额[result1]和[result2]例如通过在采用加性秘密份额算法的情况下确定秘密份额的总和来以明文重建选择结果result。如果选择结果具有值零,则MPC集群130不识别用于分发给客户端设备110的数字组件。否则,选择结果具有等于数字组件信息元素dc_information_element的值。应用112能够解析数字组件信息元素dc_information_element以获得数字组件的选择值和元数据。然后,应用112能够显示数字组件或者使用数字组件和从SSP 170接收到的其他数字组件来执行选择过程,如上所述。
在一些实施方式中,使用掩码将所选择的数字组件发送到客户端设备110,以防止计算系统MPC1或MPC2能够以明文访问所选择的数字组件,并减少将数字组件发送到客户端设备110的延时。在该示例中,应用112能够为每个数字组件请求选择随机数,并将随机数与数字组件请求一起发送。应用112能够将随机数发送到计算系统MPC1或MPC2之一。出于示例的目的,假设随机数被发送到计算系统MPC2。
应用112和计算系统MPC2两者都能够独立地计算与利用相同算法和相同输入创作的最大数字组件相同大小的掩码。例如,掩码的第i个比特能够被表示为PRF(随机数,i),其中,PRF表示伪随机函数。应用112和计算系统MPC2两者都能够使随机数和掩码对计算系统MPC1严格保密。
为了将所选择的数字组件发送到应用112,计算系统MPC2能够将[result2]逐比特XOR掩码发送到计算系统MPC1。然后,计算系统MPC1将[result1]逐比特XOR([result2]逐比特XOR掩码)作为选择结果(例如,作为对数字组件请求的响应)发送到应用112。
应用112能够计算[result1]逐比特XOR([result2]逐比特XOR掩码)逐比特XOR掩码作为数字组件的创意。这相当于[result1]逐比特XOR[result2]。这将所需的带宽减少到最大创意的大小,同时保留私有信息检索保证。如上所述,相对于发送选择结果的两个秘密份额,这减少了响应的带宽。以这种方式,相对于如在其他过程中发送数字组件创意,在该隐私保护技术中几乎没有或没有附加的延时或带宽消耗。
对于第二值选择过程,计算系统MPC1和MPC2能够计算每个数字组件的第二选择值参数maybe_second_svi的秘密份额。数字组件i的第二选择值参数能够是表示数字组件的选择值是否可能是候选数字组件当中的第二高选择值的布尔值。选择值将仅在与选择值相对应的数字组件实际上是候选数字组件的情况下是候选数字组件当中的第二高选择值。因此,数字组件i的第二选择值参数maybe_second_svi表示在数字组件实际上是候选数字组件的情况下该数字组件是否将具有第二高选择值。计算系统MPC1和MPC2能够执行秘密份额相等性测试以确定第二选择值参数的秘密份额maybe_second_svi=(acci==1)。
在该相等性测试结束时,计算系统MPC1具有数字组件i的第二选择值参数maybe_second_svi的第一秘密份额[maybe_second_svi,1],并且计算系统MPC2具有数字组件i的第二选择值参数maybe_second_svi的第二秘密份额[maybe_second_svi,2]。
然后,计算系统MPC1和MPC2能够通过为每个数字组件i确定is_dc_a_candidateiAND maybe_second_svi的结果是为真或一的布尔值根据秘密份额来确定具有第二高选择值的候选数字组件。也就是说,计算系统MPC1和MPC2能够确定哪个数字组件是候选数字组件并且具有布尔值为真或一的第二选择值参数maybe_second_svi。
在概念上,计算系统MPC1和MPC2能够使用下面的关系式8来计算候选当中的第二高选择值:
second_selection_value=∑i(selectionvalueix(is_dc_a_candidateiANDmaybe_second_svi))
在关系式8中,参数“selectionvaluei”是数字组件i的选择值(具有任何提升),并且参数“second_selection_value”是候选数字组件当中的第二高选择值的值。使用关系式,第二选择值是作为候选的数字组件的选择值,并且具有布尔值为真的第二选择值参数。该关系式中的布尔值能够被视为一(对于真)或零(对于假)的值。
在秘密份额中,计算系统MPC1和MPC2利用秘密份额计算is_dc_a_candidatei ANDmaybe_second_svi的结果,并且将结果表示为Z2空间中的两个加性秘密份额(例如,加然后模2)。此外,选择值是以明文形式。能够通过用以明文形式的选择值中的每个比特与由每个计算系统MPC1和MPC2保持的is_dc_a_candidatei AND maybe_second_svi的结果的1比特秘密份额之间的逐比特逻辑AND运算代替乘法来简化关系式8。另外,能够用逐比特XOR运算来代替求和。
图5是用于选择用于分发给客户端设备的数字组件的示例性过程500的泳道图。过程500的操作能够例如由MPC集群130的计算系统MPC1和MPC2实现。过程500的操作还能够被实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置执行指令能够使一个或多个数据处理装置执行过程500的操作。如上所述,过程500能够用于包括层级的选择过程。
计算系统MPC1和MPC2确定数字组件的选择值(502)。计算系统MPC1和MPC2能够响应于从客户端设备110接收到数字组件请求而获得或确定选择值。计算系统MPC1识别有资格用于数字组件选择过程的合格数字组件(504)。计算系统MPC2也识别有资格用于数字组件选择过程的合格数字组件(506)。对于每个合格数字组件,计算系统MPC1和MPC2确定数字组件是否是用于数字组件选择过程的候选(508)。步骤502至508能够与图4中所示的过程400的步骤402至408相同或相似。
计算系统MPC1将数字组件分组到层级中(510)。如上所述,发布者能够为DSP 150和/或数字组件提供者160建立层级。发布者的层级能够包括最高优先级层级、最低优先级层级、以及任选地在最高优先级层级与最低优先级层级之间的一个或多个层级。
计算系统MPC1能够基于DSP 150或数字组件提供者160来确定每个数字组件的层级,该DSP 150或数字组件提供者160对应于例如为数字组件提供选择值或值向量的那个。然后,计算系统MPC1能够将数字组件分组到它们的相应层级中。类似地,计算系统MPC2能够将数字组件分组到它们的相应层级中(512)。对于计算系统MPC1和MPC2两者,层级的数字组件的组应该相同。在一些实施方式中,SSP 170明确地确定层级并且然后将层级编码到要被存储(例如,在MPC集群130中高速缓存)的每个选择值的元数据中。
然后,计算系统MPC1和MPC2能够对一个或多个层级中的每一个层级执行单独选择过程,以响应于数字组件请求而选择要提供的数字组件(513)。在一些实施方式中,计算系统MPC1和MPC2对该层级并行地执行选择过程。在一些实施方式中,计算系统MPC1和MPC2依次执行选择过程,从最高优先级层级开始并逐层级向下移动,直到对所有层级执行了选择过程。在一些实施方式中,一旦在层级中找到候选,计算系统MPC1和MPC2就能够停止,但是这能够具有将用户敏感信息泄露给计算系统MPC1和MPC2的风险。对于对其执行单独选择过程的每个层级执行虚线框中的步骤。
计算系统MPC1按选择值对被分组到层级中的数字组件进行排序(514)。选择值能够首先按层级优先级排序,然后按同一层级内的选择值排序。类似地,计算系统MPC2按选择值对被分组到层级中的数字组件进行排序(516)。对于每个层级,这些步骤514和516类似于图4中所示的过程400的步骤410和412。然而,顺序仅包括层级中包括的数字组件。
计算系统MPC1和MPC2协作以确定层级中的每个数字组件的累加值acci的秘密份额(518)。如上所述,给定数字组件的累加值能够表示从顺序的顶部到给定数字组件的选择值的候选数字组件的总数,即使给定数字组件是候选,也不包括给定数字组件。计算系统MPC1和MPC2能够以如上参考图4的过程400的步骤414描述的类似方式确定层级中的数字组件的累加值。
在一些实施方式中,计算系统MPC1和MPC2能够取决于秘密份额算法来独立地确定每个数字组件的累加值acc的它们的秘密份额,而无需任何往返计算。例如,计算系统MPC1能够通过按从最高到最低的顺序遍历层级中的所有数字组件并沿着该路径对数字组件的候选参数is_dc_a_candidate求和来为每个数字组件i确定累加值acc的第一份额[acci,1],如上参考表3所述。类似地,计算系统MPC2能够通过按从最高到最低的顺序遍历层级中的所有数字组件并沿着该路径对数字组件的候选参数is_dc_a_candidate求和来为每个数字组件i确定累加值acc的第二份额[acci,2]。
计算系统MPC1和MPC2为层级中的每个候选数字组件确定指示累加值是否等于指定值的结果的秘密份额(520)。指定值能够是值零,如表3的第3列和第4列所示。在层级内,累加值为零并且总候选参数is_dc_a_candidate具有为真或一的布尔值的数字组件是该层级中的候选数字组件当中具有最高选择值的数字组件(如果有的话)。
计算系统MPC1和MPC2能够参与多轮计算,例如多个RPC,作为安全MPC过程的一部分,以根据每个数字组件i的秘密份额来计算相等性运算acci==0。相等性运算用于确定数字组件i的累加值acci是否具有值零。在该过程结束时,计算系统MPC1对于层级中的每个数字组件i具有结果acci==0的一个秘密份额,并且计算系统MPC2对于层级中的每个数字组件具有结果acci==0的另一秘密份额。
计算系统MPC1和MPC2确定层级中的每个数字组件的获胜参数的秘密份额(522)。计算系统MPC1和MPC2能够基于累加值acci==0的秘密份额和层级中的每个数字组件i的候选参数is_dc_a_candidatei的秘密份额来确定层级中的每个数字组件i的获胜者参数is_dc_the_winneri。每个数字组件i的获胜者参数is_dc_the_winneri能够是布尔值,该布尔值指示数字组件i是否是该层级的选择过程的获胜者,例如,数字组件i是否是候选数字组件并且在层级中的候选数字组件当中具有最高选择值。在一些实施方式中,计算系统MPC1和MPC2能够执行秘密份额乘法协议,以根据秘密份额为每个选择值计算获胜者参数is_dc_the_winneri=(is_dc_a_candidatei×(acci==0))。
计算系统MPC1和MPC2确定选择结果(524)。计算系统MPC1和MPC2能够通过确定包括具有获胜参数is_dc_the_winneri的数字组件的最高层级来确定选择结果,该获胜参数具有指示数字组件是该层级的获胜者的值(例如,布尔真或一)。该数字组件是整个数字组件选择过程的获胜者。计算系统MPC1和MPC2能够使用累加值来确定具有等于真或一的获胜者参数的最高层级。例如,计算系统MPC1和MPC2能够识别该层级中的所有数字组件的累加值不为零的最高层级。
计算系统MPC1向从其接收到数字组件请求的客户端设备110提供选择结果的第一秘密份额(526)。计算系统MPC2向从其接收到数字组件请求的客户端设备110提供选择结果的第二秘密份额(528)。
在包括层级的第二值选择过程中,数字组件的选择值仅在数字组件与所选择的数字组件在同一层级中的情况下有资格为选择过程提供第二选择值。为了确定第二选择值,计算系统MPC1和MPC2能够为每个层级t计算表示该层级t是否包括被选择用于分发给客户端设备110的数字组件的获胜层级参数maybe_winning_tiert。在概念上,计算系统MPC1和MPC2能够使用下面的关系式9来计算每个层级t的获胜层级参数maybe_winning_tiert:
在关式系9中,参数“T”表示具有比层级t更高的优先级的所有层级。因此,层级的获胜层级参数maybe_winning_tiert表示任何更高优先级层级是否包括候选数字组件。如果不是,则如果层级t包括至少一个候选数字组件,该层级为获胜层级。
还能够使用计算系统MPC1和MPC2之间的RPC来计算总和与值零之间的相等性测试。用于各种计算的多个RPC可以被一起分组为较少数量的RPC,以减少计算系统MPC1和MPC2之间的延时和网络带宽消耗。
然后,计算系统MPC1和MPC2能够基于给定数字组件的候选参数is_dc_a_candidatei、数字组件的第二选择值参数maybe_second_svi(其能够如上参考图4所述的被计算)以及包括给定数字组件的层级t的获胜层级参数maybe_winning_tiert的组合来确定第二选择值是否由给定数字组件的选择值设置。例如,当给定数字组件的is_dc_a_candidatei AND maybe_second_svi AND maybe_winning_tiert具有布尔值真或一时,第二选择值由给定数字组件的选择值设置。
然后,计算系统MPC1和MPC2能够使用给定数字组件的选择值来确定第二选择值。例如,第二选择值能够等于给定数字组件的选择值或给定数字组件的选择值加上指定量。
DSP 150和数字组件提供者160通常能够受益于知道数字组件过程的最高的其他选择值,使得它们能够优化或改进它们在类似的选择过程中为数字组件提供的选择值。例如,其数字组件被选择的DSP 150可以受益于知道其选择值比下一最高值高多少。类似地,其数字组件未被选择的DSP 150可以受益于知道选择值将需要再高多少以便使数字组件被选择。当DSP 150和/或数字组件提供者160基于该信息来提供选择值时,DSP 150更可能实现其目标,例如,避免由于过高的选择值而造成的浪费,或者避免由于低选择值而丧失数字组件呈现机会。
对于其数字组件被选择的DSP 150或数字组件提供者160,最高的其他选择值是第二高选择值。对于所有其他选择值,最高的其他选择值是最高选择值。这对于第一值选择过程和第二值选择过程两者都是相同的。
图6是用于在数字组件选择过程中确定数字组件的最高的其他选择值的示例性过程600的图。过程600的操作能够例如由MPC集群130的计算系统MPC1和MPC2实现。过程600的操作还能够被实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置执行指令能够使一个或多个数据处理装置执行过程600的操作。
计算系统MPC1和MPC2执行数字组件选择过程以选择用于分发给客户端设备的数字组件(602)。计算系统MPC1和MPC2能够协作使用安全MPC过程来选择数字组件,如上参考图3至5所述。
计算系统MPC1和MPC2确定用于数字组件选择过程的第一选择值(604)。第一选择值能够是被选择用于分发给客户端设备110的数字组件的选择值。例如,第一选择值能够是候选数字组件的最高选择值。如果使用层级,则第一选择值能够是包括至少一个候选数字组件的最高优先级层级中的候选数字组件的最高选择值。
计算系统MPC1和MPC2能够协作以使用安全MPC过程来确定第一选择值。在概念上,计算系统MPC1和MPC2能够使用下面的关系式10来确定第一选择值:
第一选择值=∑(selection_valueix(is_dc_a_candidatei AND maybe_first_svi))
该总和能够跨数字组件选择过程中包括的所有数字组件。每个数字组件i的选择值(selection_valuei)能够是以明文形式。如上所述,计算系统MPC1和MPC2能够计算候选参数is_dc_a_candidatei和第一选择值参数maybe_first_svi的秘密份额。计算系统MPC1能够为每个数字组件i存储候选参数is_dc_a_candidatei的第一份额[is_dc_a_candidatei,1]和第一选择值参数maybe_first_svi的第一份额[maybe_first_svi,1]。类似地,计算系统MPC2能够为每个数字组件i存储候选参数is_dc_a_candidatei的第二份额[is_dc_a_candidatei,2]和第一选择值参数maybe_first_svi的第二份额[maybe_first_svi,2]。
计算系统MPC1和MPC2确定用于数字组件选择过程的第二选择值(606)。第二选择值能够是被选择用于分发给客户端设备110的数字组件的选择值后面的下一最高选择值。例如,第二选择值能够是候选数字组件的第二高选择值。如果使用层级,则第二选择值能够是包括至少一个候选数字组件的最高优先级层级中的候选数字组件的第二高选择值。
计算系统MPC1和MPC2能够协作以使用安全MPC过程来确定第二选择值。在概念上,计算系统MPC1和MPC2能够使用下面的关系式11来确定第二选择值:
第二选择值=∑(selection_valuei x(is_dc_a_candidatei AND maybe_second_svi))
该总和能够跨数字组件选择过程中包括的所有数字组件。如上所述,计算系统MPC1和MPC2能够计算候选参数is_dc_a_candidatei和第二选择值参数maybe_second_svi的秘密份额。计算系统MPC1能够为每个数字组件i存储第二选择值参数maybe_second_svi的第一份额[maybe_second_svi,1]。类似地,计算系统MPC2能够为每个数字组件i存储第二选择值参数maybe_second_svi的第二份额[maybe_second_svi,2]。
在关系式10和11中,布尔值真和假能够分别被视为一和零。在秘密份额中,计算系统MPC1和MPC2利用秘密份额(例如,使用计算系统之间的RPC)计算关系式10和11两者的AND运算的结果,并且将结果表示为Z2空间中的两个加性秘密份额(例如,加然后模2)。因此,每个计算系统能够存储第一选择值和第二选择值的秘密份额。例如,计算系统MPC1能够存储第一选择值的第一份额和第二选择值的第一份额。类似地,计算系统MPC2能够存储第一选择值的第二份额和第二选择值的第二份额。第一选择值的两个份额的总和(例如,加然后模2)等于第一选择值,并且第二选择值的两个份额的总和(例如,加然后模2)等于第二选择值。
能够通过用选择值(selection_valuei)中的每个选择值与候选参数和由每个计算系统MPC1和MPC2保持的第一选择值参数(或第二选择值参数)之间的AND运算的结果的1比特秘密份额之间的逐比特AND运算代替乘法来简化关系式10和11。此外,关系式10和11的求和能够用逐比特XOR运算代替。
对于每个数字组件,计算系统MPC1和MPC2计算最高的其他选择值(608)。计算系统MPC1和MPC2能够使用秘密份额中的两步过程来计算数字组件的最高的其他选择值。计算系统MPC1和MPC2能够计算数字组件i的获胜者参数is_dc_the_winneri。计算系统MPC1和MPC2能够使用候选参数is_dc_a_candidatei的秘密份额和第一选择值参数maybe_first_svi的秘密份额来计算获胜者参数is_dc_the_winneri,例如,is_dc_the_winneri=is_dc_a_candidatei AND maybe_first_svi。
然后,计算系统MPC1和MPC2能够使用关系式12来计算数字组件i的最高的其他选择值(HOSVi):
HOSVi=(is_dc_the_winneri×第二选择值)+((1-is_dc_the_winneri)×第一选择值)
因为获胜者参数、第一选择值和第二选择值由计算系统MPC1和MPC2保持在秘密份额中,所以计算系统MPC1和MPC2使用两个计算系统MPC1和MPC2之间的RPC协作地确定最高的其他选择值。
在该过程结束时,计算系统MPC1存储数字组件i的最高的其他选择值的第一份额[HOSVi,1],并且计算系统MPC2存储数字组件i的最高的其他选择值的第二份额[HOSVi,2]。
计算系统MPC1将每个数字组件的最高的其他选择值的第一份额发送到例如与数字组件相对应的DSP 150或数字组件160(610)。类似地,计算系统MPC2将每个数字组件的最高的其他选择值的第二份额发送到例如与数字组件相对应的DSP 150或数字组件160(612)。在一些实施方式中,计算系统MPC1和MPC2将份额提供给聚合服务,该聚合服务聚合每个DSP 150和/或每个数字组件提供者160的信息。
两个秘密份额的接收者能够组合份额以在数字组件选择过程中导出数字组件的最高的其他选择值。例如,如果使用加性秘密份额算法,则接收者能够通过将两个份额相加来导出最高的其他选择值。
计算系统MPC1和MPC2能够与最高的其他选择值一起发送附加数据。例如,计算系统MPC1和MPC2能够与其最高的其他选择值的份额一起发送数字组件选择过程的上下文信号,例如查找键。以这种方式,能够使用用于具有相同或相似上下文的数字组件选择过程的最高的其他选择值来计算用于具有相同或相似上下文的数字组件选择过程的选择值的景观。
在一些实施方式中,为了提高性能,计算系统MPC1和MPC2能够在将数字组件选择过程的选择结果提供给客户端设备110之后异步地计算最高的其他选择值。这减少了传送和显示数字组件的延时。在一些实施方式中,当计算系统MPC1和MPC2上的负载低于基线负载时,计算系统MPC1和MPC2能够计算最高的其他选择值。
对于包括选择值的下限的选择过程,能够采取额外的步骤来准确地计算最高的其他选择值。计算系统MPC1和MPC2能够计算最高的其他选择值,如参考图6所述。然后,计算系统MPC1和MPC2能够调整最高的其他选择值以考虑下限,例如,使得没有选择值小于适用的下限。
令H表示所计算的最高的其他选择值,并且F表示适用的下限。最终的最高的其他选择值将是(H>F)×H+(1-H>F,其等效于F+(H>F)×(H-F)。
为了保护用户隐私,H是秘密份额的形式。每个计算系统MPC1和MPC2分别保持秘密份额[H1]和[H2]中的一个。计算系统MPC1能够使用关系式13来计算秘密份额中的最终的最高的其他选择值的第一份额:
[HOSV1]=F+([H1]>F)×([H1]-F)
类似地,计算系统MPC2能够使用关系式14来计算秘密份额中的最终的最高的其他选择值的第二份额:
[HOSV2]=F+([H2]>F)×([H2]-F)
该计算用于包括下限的数字组件过程的最高的其他选择值的过程能够采用三轮或更多轮RPC进行比较测试,并且一轮用于乘法。
当在数字组件选择过程中使用层级和/或提升时,第一选择值(例如,所选择的数字组件的选择值)可以低于候选数字组件当中的最高选择值。例如,如果最高优先级层级中的候选数字组件具有比较低优先级层级中的候选数字组件更低的选择值,则可以选择较高优先级层级中的候选数字组件,尽管其具有较低的选择值。类似地,数字组件可以接收提升,该提升使得在数字组件选择值中使用的选择值高于未提升的(或较低提升的)数字组件,使得发布者接收比其在选择未提升的数字组件的情况下将具有的更少。MPC集群130能够确定两个值之间的差异,使得发布者能够分析与层级和/或提升相关联的机会成本。
图7是用于确定真实数字组件选择过程的第一选择值与反事实数字组件选择过程的第一选择值之间的差异的示例性过程700的流程图。过程700的操作能够例如由MPC集群130的计算系统MPC1和MPC2实现。过程700的操作还能够被实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置执行指令能够使一个或多个数据处理装置执行过程700的操作。
计算系统MPC1和MPC2执行真实数字组件选择过程(702)。计算系统MP1和MPC2能够执行真实数字组件选择过程以响应于数字组件请求而选择要提供给客户端设备110的数字组件。真实数字组件选择过程能够包括数字组件的层级和/或数字组件选择过程中包括的一个或多个数字组件的提升。例如,真实数字组件过程应该与图3至5的过程相同或类似。
计算系统MPC1和MPC2执行反事实数字组件选择过程(704)。反事实数字组件过程的步骤能够类似于真实数字组件选择过程的步骤。然而,在反事实数字组件选择过程中,移除真实数字组件选择过程的层级和/或提升。如果真实数字组件选择过程包括层级(例如,如在图4的过程400中),则反事实数字组件选择过程在一个组中具有所有数字组件(例如,如在图5的过程500中)。如果真实数字组件选择过程包括提升一个或多个数字组件的选择值,则在反事实数字组件选择过程中移除那些提升。也就是说,反事实数字组件选择过程中的选择值能够是接收到的选择值而不是提升的选择值。
计算系统MPC1和MPC2确定用于真实数字组件选择过程的清算值(706)。该清算值能够是基于所选择的数字组件的选择值。例如,清算值能够是将实际提供给发布者以用于显示所选择的数字组件的选择值的量。如果数字组件的选择值被提升,则提升量将仅当在操作414中确定每个候选数字组件的累加值时影响选择值的顺序。
对于第二值选择过程,清算值将是基于所选择的数字组件的选择值之后的下一最高选择值。如果层级与第二选择值过程一起使用,则下一最高值将是与所选择的数字组件相同的层级中的下一最高值。如果在同一层级中不存在这样的候选数字组件,则下一最高值能够是用于数字组件选择过程的最小值。
计算系统MPC1和MPC2确定用于反事实数字组件选择过程的清算值(708)。该清算值能够是基于在反事实数字组件选择过程中选择的数字组件。对于第二值选择过程,清算值将是基于所选择的数字组件的选择值之后的下一最高选择值,类似于用于真实数字组件选择过程的清算值。
计算系统MPC1和MPC2确定两个清算值之间的差异(710)。计算系统MPC1和MPCs通过从真实数字组件选择值的清算值中减去用于反事实数字组件选择过程的清算值来确定该差异。
计算系统MPC1和MPC2向接收者提供该差异(712)。例如,计算系统之一能够向在选择之后与其一起显示数字组件的资源或应用内容的发布者提供该差异。在另一示例中,计算系统之一能够将该差异提供给聚合服务器,该聚合服务器聚合发布者的差异。在任一示例中,计算系统能够与指示差异的数据一起提供用于真实数字组件选择过程的上下文信号(例如,查找键)和识别发布者的数据(如果发送到聚合服务器的话)。
聚合服务器能够聚合为每个发布者报告的差异,并且例如以交互式用户界面的形式提供指示使用层级和/或提升的机会成本的数据。在一些实施方式中,计算系统MPC1或MPC2还能够为每个真实数字组件选择过程向聚合服务器提供选择结果。以这种方式,聚合服务器能够聚合用于每个DSP 150和/或数字组件提供者160的机会成本。
为了减少将真实数字组件选择过程的所选择的数字组件提供给客户端设备110的延时,例如在将选择结果提供给客户端设备110之后能够异步地执行过程700的步骤704至712中的一些或全部。
图8是用于使用利用秘密份额发送的布隆过滤器来确定用户是否是用户组的成员的示例性过程800的流程图。过程800的操作能够例如由在客户端设备110上运行的应用112以及图1的MPC集群130的计算系统MPC1和MPC2来实现。过程800的操作还能够被实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置执行指令能够使一个或多个数据处理装置执行过程800的操作。
使用布隆过滤器发送表示用户的组成员资格的数据能够减少正在发送的数据量并保护用户隐私,因为识别用户的用户组的数据不是以明文发送的。为了防止计算系统MPC1和MPC2能够以明文访问用户的组成员资格,应用112能够向每个计算系统112发送布隆过滤器的相应份额,例如秘密份额,而不是向每个计算系统MPC1和MPC2发送完整的布隆过滤器。然而,这能够需要发送等同于发送两个布隆过滤器的数据,对于每个计算系统MPC1和MPC2各一个。为了防止这种情况并进一步减少从客户端设备110跨网络105发送到计算系统MPC1和MPC2的数据量,应用112能够将使用随机数和由应用112创建的原始布隆过滤器生成的第一数组发送到计算系统之一(例如,计算系统MPC1),并且仅将随机数发送到另一计算系统MPC2。以这种方式,从客户端设备110仅发送一个数组。由于随机数能够很小,例如16个字节,因此这大大减少了从客户端设备110发送的数据量,其减少了客户端设备110的带宽消耗、延时和电池消耗。
尽管根据表示用户组中的用户成员资格的布隆过滤器来描述过程800,但是能够使用类似的过程来生成用于表示被阻止数字组件的布隆过滤器并查询数字组件是否被阻止。在该示例中,布隆过滤器将表示被阻止数字组件的标识符而不是用户组的标识符。
布隆过滤器的配置能够适于由计算系统MPC1和MPC2进行传输和/或处理。布隆过滤器的参数包括能够由布隆过滤器表示的用户组的数量、布隆过滤器的期望误报率、用于生成布隆过滤器并测试元素是否被包括在布隆过滤器中的散列函数的数量以及布隆过滤器的大小。
通过减少散列函数的数量,当查询用户是否是用户组的成员时,减少了计算系统MPC1和MPC2上的计算负担。然而,如果布隆过滤器的大小保持恒定,则这能够增加误报率。如果存在目标误报率,则减少散列函数可能导致更大的布隆过滤器大小,这能够增加所消耗的带宽量。因此,能够使用带宽/电池消耗与计算系统MPC1和MPC2上的计算负担之间的权衡来选择布隆过滤器的参数。
应用112生成布隆过滤器(802)。应用112能够使用将应用112的用户包括为成员的用户组的用户组标识符来生成布隆过滤器。为此,应用112使用布隆过滤器的每个散列函数来将用户组标识符映射到布隆过滤器中的位置之一。应用112能够对用户的每个用户组标识符执行该操作。当为被阻止数字组件构建布隆过滤器时,应用112能够将用于被阻止数字组件的布隆过滤器的每个散列函数应用于每个被阻止数字组件的标识符。布隆过滤器是大小为N的比特数组A,布隆过滤器的每个比特是零或一,即,A[i]∈{0,1}。
应用112以及计算系统MPC1和MPC2能够提前就伪随机函数(PRF)达成一致。PRF能够采用两个参数,并且生成在{0,1}(包括0和1)中的PRF数。
应用112选择随机数(804)。对于每个数字组件请求,应用112能够例如随机地或伪随机地选择要与计算系统MPC1或MPC2中的仅一个共享的随机数。在该示例中,与计算系统MPC2共享随机数。
应用112使用布隆过滤器和随机数来计算第一数组A1(806)。应用112能够使用商定的PRF来计算第一数组A1。例如,应用112能够使用关系式15来计算第一数组A1:
A1[i]=A[i]XOR PRF(随机数,i)
在关系式15中,XOR运算是逐比特XOR运算。
应用112将第一数组发送到计算系统MPC1(808)。应用112还将随机数发送到计算系统MPC2(810)。
计算系统MPC2使用随机数来计算第二数组A2(812)。计算系统MPC2能够使用随机数和PRF来计算第二数组A2。例如,计算系统MPC2能够使用关系式16来计算第二数组A2:
A2[i]=PRF(随机数,i)
计算系统MPC1和MPC2使用第一数组A1和第二数组A2来确定用户是否是一个或多个用户组的成员(814)。通常,能够通过将布隆过滤器的每个散列函数应用于用户组标识符以确定与散列函数和用户组标识符相对应的布隆过滤器的元素来查询布隆过滤器。如果对于用户标识符,每个散列函数的元素的值为一,则这将表示用户是组的成员。当然,由于布隆过滤器的性质,可能存在一些误报。
由于计算系统MPC1和MPC2都不能访问完整的布隆过滤器(相反,每个都仅具有布隆过滤器的秘密份额),因此计算系统MPC1和MPC2能够使用密码协议以通过用户组标识符来确定用户是否是用户组标识符的成员。能够使用的一些示例性密码协议包括扰码电路和Goldreich-Micali-Wigderson(GMW)协议。
在任一算法中,(概念上)算法的输入是布隆过滤器的秘密份额,即,第一数组A1和第二数组A2。输出是布尔消息集合的秘密份额,对于每个数字组件各一个,即用户是否是与对应的数字组件相关联的用户组的成员。
在GMW协议中,MPC计算系统之一(例如,计算系统MPC1)创建真值表,对于由计算系统MPC2拥有的秘密份额,每种可能的比特模式一行。计算系统MPC1例如随机地选择结果的其自己的秘密份额,并且基于结果的其自己的秘密份额以及与行相对应的可能的计算系统MPC2的秘密份额来计算每行的计算系统MPC2的秘密份额。在构建真值表之后,计算系统MPC2使用不经意传输协议,基于其自己的秘密份额从表中提取一行且仅一行。在该协议中,一个计算系统将多条信息中的一条转移到另一个计算系统,但不知道哪条(如果有的话)已经被转移。该不经意传输协议保证该过程不会向任何一方泄露任何信息。
向布隆过滤器查询给定用户组标识符的结果是每个散列函数的用户组成员资格条件参数的秘密份额。能够在数字组件选择过程中使用用户组成员资格条件参数的秘密份额,以确定与用户组相对应的数字组件是否是用于数字组件选择过程的候选。例如,如果使用10个散列函数,则计算系统MPC1对于每个用户组标识符将具有用户组成员资格条件参数的10个第一秘密份额。类似地,计算系统MPC2对于每个用户组标识符将具有用户组成员资格条件参数的10个第二秘密份额。
如果布隆过滤器表示被阻止数字组件的标识符,则计算系统MPC1和MPC2能够重建第二数组并以类似的方式查询布隆过滤器。针对给定数字组件查询该布隆过滤器的结果是每个散列函数的被阻止条件参数。被阻止条件参数的秘密份额能够在数字组件选择过程中使用,以确定数字组件是否是用于数字组件选择过程的候选。
图9是示例性MPC计算系统900的框图。能够使用MPC计算系统900来实现本文档中描述的任何MPC计算系统。可替代地,MPC计算系统能够被实现为一个或多个服务器。然而,MPC计算系统900的架构和配置相对于使用通用服务器布置提供了许多性能改进。
MPC计算系统900包括负载均衡器910、服务池920和日志处理器池940。计算系统900还生成、更新和以其他方式维护日志930和快照950。
在一些实施方式中,MPC计算系统900被部署在各种地理区域中,以减少选择数字组件并向客户端设备110提供数字组件的延时。例如,具有两个或更多个MPC计算系统900的MPC集群能够被部署在区域集合中的每个区域中。如果每个MPC集群包括两个MPC计算系统,例如MPC1和MPC2,则每个区域能够包括由不同方操作的一对MPC计算系统900。跨所有区域的MPC1的每个实例能够由第一方操作,并且跨所有区域的MPC2的每个实例能够由不同于第一方的第二方操作。
区域中的MPC集群能够针对由该区域中的客户端设备110生成的数字组件请求执行数字组件选择过程。例如,被发送到特定区域中的客户端设备110的数字组件槽(例如,标签)的指令能够包括对特定区域中的MPC计算系统900的网络位置的引用。以这种方式,应用112将数字组件请求和通知发送到适当区域中的MPC计算系统900。在另一示例中,域名服务(DNS)或负载均衡器910选择在物理距离上最接近客户端设备110的MPC计算系统900。
区域中的MPC1能够与同一区域中的MPC2协作,以基于接收到的请求来选择数字组件并更新日志。这减少了执行需要MPC计算系统900之间的往返的协作计算的延时和消耗的带宽,因为MPC计算系统900之间的距离减小。这还减少了客户端设备110与MPC计算系统900之间的数据传输(例如,数字组件请求、数字组件响应和展示通知)的延时和消耗的带宽。
在一些实施方式中,日志处理器池940仅在区域的适当子集中被启用,以用于创建快照并将其发布到其他区域中的MPC计算系统900。例如,在由第一方操作的每个区域中能够存在第一MPC计算系统MPC1。这些第一MPC计算系统的子集能够为所有第一MPC计算系统创建快照,并且将快照发布到其他第一MPC计算系统。类似地,在由第二方操作的每个区域中能够存在第二MPC计算系统MPC2。这些第二MPC计算系统的子集能够为所有第二MPC计算系统创建快照,并且将快照发布到其他第二MPC计算系统。重要的是,第一MPC计算系统不与第二MPC计算系统共享日志或快照,反之亦然,以保护用户隐私。然而,第一计算系统和第二计算系统确实执行安全MPC过程以处理日志中的数据,因为数据中的至少一些是敏感的和/或机密的,并且不应当可由任一计算系统以明文访问。为了有效地这样做而不增加延时或带宽消耗,第一MPC计算系统的子集和第二MPC计算系统的子集能够在相同的区域中。
负载均衡器910从在客户端设备110上运行的应用112接收请求。在一些示例中能够以HTTP请求的形式的这些请求能够包括数字组件请求和通知。通知能够包括展示通知,该展示通知向MPC计算系统900通知数字组件在客户端设备110处被显示以及可选地用户是否与数字组件进行了交互。展示通知还能够包括附加信息,诸如识别其中显示所显示的数字组件的数字组件选择过程的选择过程标识符。对于k匿名条件,展示通知还能够包括识别实际数字组件过程的获胜者和反事实选择过程的获胜者的数据,使得MPC计算系统900能够更新每个数字组件的展示计数。
负载平衡器910能够以平衡服务池920中的处理器之间的负载的方式将请求分配给服务池920的处理器。例如,负载平衡器910能够按顺序在处理器之间交替,或者监测每个处理器的负载并基于当前负载来分配请求。
服务池920包括多个处理器,每个处理器能够被实现为例如一个或多个微处理器、一个或多个服务器级计算机和/或一个或多个专用集成电路(ASIC)。服务池的处理器处理传入请求,这些传入请求通常是延时敏感的。例如,服务池920的处理器能够与另一MPC计算系统900的处理器协作地执行数字组件选择过程。服务池920的处理器还能够基于完成的数字组件过程和/或接收到的通知来更新日志930。
服务池920的处理器能够维护所存储的数字组件的当前数据库。该数据库能够包括数字组件的参数和/或条件的当前值。例如,对于每个存储的数字组件,数据库能够包括选择值或向量、至少一些条件(例如,能够离线计算的条件,诸如k匿名和调步、剩余预算、展示的数量(例如,k匿名条件))的参数的秘密份额和/或在本文档中描述的数字组件选择过程中使用的数字组件的其他数据。
在一些实施方式中,服务池的数据库是快照。例如,每个快照能够具有识别快照的版本的版本标识符。两个MPC系统都应该使用相同版本的快照来操作。
日志930能够包括存储与由MPC集群存储的数字组件相关的各种信息的多种类型的日志。例如,日志930能够包括用于存储数字组件及其对应数据(例如,选择值、选择值向量、查找键、对应的用户组标识符、条件和/或其他适当信息)的日志。
日志930能够包括完成的数字组件请求的信息的日志。这样的日志能够包括用于每个数字组件选择过程的选择过程标识符、用于数字组件选择过程的清算值以及用于包括在数字组件选择过程中的每个数字组件的参数。这些参数能够包括例如候选参数的秘密份额、获胜参数、选择值和/或数字组件的累加值。
日志930能够包括用于确定是否满足数字组件的条件的参数的日志。例如,对于每个数字组件,这样的日志能够包括展示的数量、选择的数量、转化的数量、总预算、剩余预算和/或能够已经呈现数字组件的次数(例如,它在用于k匿名的反事实选择过程中被选择的次数)。为了保护用户隐私和敏感用户数据的机密性,在一些实施方式中,日志930包含上述信息的秘密份额。
日志处理器池940能够包括处理日志930并基于日志来生成快照950的处理器(例如,微处理器、服务器或ASIC)。每个快照包括对由服务池920的处理器维护的数据库的更新。例如,如果在客户端设备110处选择并显示数字组件,则快照能够包括数字组件的更新的剩余预算和数字组件的更新的展示的数量。日志处理器池940能够基于日志930中的更新数据来生成快照,并将快照发布到服务池920的处理器。日志处理器池900的处理器还能够将快照发布到由同一方操作的其他MPC计算系统,例如,如果日志处理器池940仅在一些MPC计算系统900处被启用的话。
为了减少响应请求的延时,服务池920的处理器能够在接收到请求之后立即处理这些请求。不那么时间敏感的过程能够由日志处理器池940的处理器处理。例如,服务池920能够在选择数字组件并将其提供给客户端设备110的关键路径上执行任何过程。日志处理器池940能够执行不在关键路径上的任何过程。然而,对数据库的更新应当快速发生,以确保正在使用最新信息来选择数字组件。因此,使用如由图9所示的架构提供的不同的处理器集合使得数字组件选择过程和对数据库的更新两者都能够非常快速地执行。
图10是能够用于执行上述操作的示例计算机系统1000的框图。系统1000包括处理器1010、存储器1020、存储设备1030和输入/输出设备1040。组件1010、1020、1030和1040中的每一个都能够例如使用系统总线1050来互连。处理器1010能够处理用于在系统1000内执行的指令。在一些实施方式中,处理器1010是单线程处理器。在另一实施方式中,处理器1010是多线程处理器。处理器1010能够处理存储在存储器1020或存储设备1030中的指令。
存储器1020存储系统1000内的信息。在一个实施方式中,存储器1020是计算机可读介质。在一些实施方式中,存储器1020是易失性存储器单元。在另一实施方式中,存储器1020是非易失性存储器单元。
存储设备1030能够为系统1000提供大容量存储。在一些实施方式中,存储设备1030是计算机可读介质。在各种不同的实施方式中,存储设备1030能够包括例如硬盘设备、光盘设备、由多个计算设备通过网络共享的存储设备(例如,云存储设备)或一些其他大容量存储设备。
输入/输出设备1040为系统1000提供输入/输出操作。在一些实施方式中,输入/输出设备1040能够包括以下各项中的一项或多项:网络接口设备,例如以太网卡,串行通信设备,例如RS-232端口,和/或无线接口设备,例如802.11卡。在另一实施方式中,输入/输出设备能够包括被配置成接收输入数据并将输出数据发送到外部设备1060(例如,键盘、打印机和显示设备)的驱动设备。然而,也能够使用其他实施方式,诸如移动计算设备、移动通信设备、机顶盒电视客户端设备等。
尽管已经在图10中描述了示例处理系统,但是本说明书中描述的主题和功能操作的实施方式能够在其他类型的数字电子电路中、或者在计算机软件、固件或硬件(包括本说明书中公开的结构及其结构等同物)中、或者在它们中的一个或多个的组合中实现。
本说明书中描述的主题和操作的实施例能够在数字电子电路中、或者在计算机软件、固件或硬件(包括本说明书中公开的结构及其结构等同物)中、或者在它们中的一个或多个的组合中实现。本说明书中描述的主题的实施例能够被实现为一个或多个计算机程序,即,计算机程序指令的一个或多个模块,其被编码在计算机存储介质(或介质)上以用于由数据处理装置执行或控制数据处理装置的操作。替代地或附加地,程序指令能够被编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号,其被生成以编码信息以传输到合适的接收器装置,以用于由数据处理装置执行。计算机存储介质能够是计算机可读存储设备、计算机可读存储基底、随机或串行存取存储器阵列或设备、或者它们中的一个或多个的组合或被包括在计算机可读存储设备、计算机可读存储基底、随机或串行存取存储器阵列或设备、或者它们中的一个或多个的组合中。此外,虽然计算机存储介质不是传播信号,但是计算机存储介质能够是编码在人工生成的传播信号中的计算机程序指令的源或目的地。计算机存储介质也能够是一个或多个单独的物理组件或介质(例如,多个CD、盘或其他存储设备)或被包括在一个或多个单独的物理组件或介质(例如,多个CD、盘或其他存储设备)中。
本说明书中描述的操作能够被实现为由数据处理装置对存储在一个或多个计算机可读存储设备上或从其他源接收到的数据执行的操作。
术语“数据处理装置”包含用于处理数据的所有种类的装置、设备和机器,包括例如可编程处理器、计算机、片上系统或前述的多个或组合。该装置能够包括专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。除了硬件之外,该装置还能够包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机或它们中的一个或多个的组合的代码。该装置和执行环境能够实现各种不同的计算模型基础设施,诸如web服务、分布式计算和网格计算基础设施。
计算机程序(也称为程序、软件、软件应用、脚本或代码)能够用任何形式的编程语言编写,包括编译或解释语言、声明或过程语言,并且它能够以任何形式部署,包括作为独立程序或作为模块、组件、子例程、对象或适合在计算环境中使用的其他单元。计算机程序可以但不需要对应于文件系统中的文件。程序能够被存储在保存其他程序或数据的文件的部分中(例如,存储在标记语言文档中的一个或多个脚本),存储在专用于所讨论的程序的单个文件中,或者存储在多个协作文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。计算机程序能够被部署以在一个计算机上或位于一个站点或跨多个站点分布并通过通信网络互连的多个计算机上执行。
本说明书中描述的过程和逻辑流程能够由执行一个或多个计算机程序的一个或多个可编程处理器来执行,以通过对输入数据进行操作并生成输出来执行动作。过程和逻辑流程也能够由专用逻辑电路来执行,并且装置也能够被实现为专用逻辑电路,例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)。
举例来说,适合于执行计算机程序的处理器包括通用微处理器和专用微处理器两者。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于根据指令来执行动作的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或可操作地耦合到用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘,以从该大容量存储设备接收数据或向其传递数据,或两者。然而,计算机不需要有这样的设备。此外,计算机能够被嵌入在另一个设备中,例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储设备(例如,通用串行总线(USB)闪存驱动器)等等。适合于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器能够由专用逻辑电路来补充或并入专用逻辑电路中。
为了提供与用户的交互,本说明书中描述的主题的实施例能够在计算机上实现,该计算机具有用于向用户显示信息的显示设备,例如CRT(阴极射线管)或LCD(液晶显示器)监视器,以及用户能够通过其向计算机提供输入的键盘和定点设备,例如鼠标或轨迹球。也能够使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈能够是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且能够以任何形式接收来自用户的输入,包括声音、语音或触觉输入。此外,计算机能够通过向由用户使用的设备发送文档和从由用户使用的设备接收文档来与用户交互;例如,通过响应于从web浏览器接收到的请求,向用户的客户端设备上的web浏览器发送web页面。
本说明书中描述的主题的实施例能够在计算系统中实施,该计算系统包括后端组件(例如作为数据服务器)或者包括中间件组件(例如应用服务器)或者包括前端组件(例如具有用户能够通过其与本说明书中描述的主题的实施方式进行交互的图形用户界面或Web浏览器的客户端计算机)或者包括一个或多个这样的后端组件、中间件组件或前端组件的任何组合。该系统的组件能够通过任何形式或介质的数字数据通信(例如通信网络)来互连。通信网络的示例包括局域网(“LAN”)和广域网(“WAN”)、互联网(例如,因特网)和对等网络(例如,自组织对等网络)。
计算系统能够包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系是由于在相应的计算机上运行的计算机程序而产生的,并且与彼此具有客户端-服务器关系。在一些实施例中,服务器将数据(例如,HTML页面)发送到客户端设备(例如,为了向与客户端设备交互的用户显示数据并从用户接收用户输入)。在客户端设备处生成的数据(例如,用户交互的结果)能够在服务器处从客户端设备接收。
虽然本说明书包含许多具体的实现细节,但是这些不应当被解释为对任何发明的范围或可能要求保护的范围的限制,而是对特定于特定发明的特定实施例的特征的描述。本说明书中在单独的实施例的上下文中描述的某些特征也能够在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也能够在多个实施例中单独地或以任何合适的子组合来实现。此外,尽管特征可以在上面被描述为以某些组合起作用,并且甚至最初如此要求保护,但是来自要求保护的组合的一个或多个特征在一些情况下能够从该组合中删除,并且要求保护的组合可以涉及子组合或子组合的变体。
类似地,虽然在附图中以特定的顺序描述了操作,但是这不应当被理解为要求这样的操作以所示的特定顺序或先后顺序执行,或者要求所有示出的操作都被执行,以获得期望的结果。在某些情况下,多任务和并行处理可以是有利的。此外,上述实施例中的各种系统组件的分离不应当被理解为在所有实施例中都需要这样的分离,并且应当理解,所描述的程序组件和系统通常能够一起被集成在单个软件产品中或者打包成多个软件产品。
因此,已经描述了主题的特定实施例。其他实施例处在所附权利要求的范围内。在一些情况下,权利要求中记载的动作能够以不同的顺序执行,并且仍然实现期望的结果。此外,附图中描绘的过程不一定需要所示的特定顺序或先后顺序来实现期望的结果。在某些实施方式中,多任务和并行处理可以是有利的。
Claims (11)
1.一种计算机实现的方法,包括:
由安全多方计算MPC系统的第一服务器从客户端设备接收数字组件请求;
对于数字组件集合中的每个数字组件,识别所述数字组件的选择值和所述数字组件的优先级层级;
对于多个优先级层级中的每一个:
与所述安全MPC系统的一个或多个第二服务器协作地使用安全MPC过程来确定所述优先级层级中的每个数字组件的获胜者参数的第一秘密份额,包括:
对于所述优先级层级中的每个数字组件,确定指示所述数字组件是否是用于选择的候选的候选参数的第一秘密份额;以及
基于(i)所述优先级层级中的每个数字组件的所述候选参数的值的所述第一秘密份额,(ii)所述优先级层级中的每个数字组件的所述候选参数的一个或多个第二秘密份额,
以及所述优先级层级中的每个数字组件的所述选择值,确定所述优先级层级中的每个数字组件的所述获胜者参数的秘密份额;
识别所述多个层级中给定数字组件具有获胜者参数的最高层级,所述获胜者参数指示所述给定数字组件是所述层级的获胜数字组件;以及
向所述客户端设备提供识别所述给定数字组件的选择结果的第一秘密份额。
2.根据权利要求1所述的计算机实现的方法,其中,与所述安全MPC系统的一个或多个第二服务器协作地使用所述安全MPC过程来确定所述优先级层级中的每个数字组件的所述获胜者参数的所述第一秘密份额包括并行地确定每个优先级层级中的每个数字组件的所述获胜者参数的所述第一秘密份额。
3.根据任一前述权利要求所述的计算机实现的方法,其中,与所述安全MPC系统的一个或多个第二服务器协作地使用所述安全MPC过程来确定所述优先级层级中的每个数字组件的所述获胜者参数的所述第一秘密份额包括确定从最高优先级层级到最低优先级层级的序列中的每个优先级层级中的每个数字组件的所述获胜者参数的所述第一秘密份额。
4.根据任一前述权利要求所述的计算机实现的方法,其中,对于所述优先级层级中的每个数字组件,确定指示所述数字组件是否是用于选择的候选的候选参数的第一秘密份额包括:与所述一个或多个第二服务器中的每个第二服务器协作地基于特定数字组件的一个或多个条件的秘密份额来确定所述特定数字组件的所述候选参数的所述第一秘密份额。
5.根据任一前述权利要求所述的计算机实现的方法,其中,对于所述数字组件集合中的每个数字组件,识别所述数字组件的所述选择值包括:
对于给定内容平台,识别由接收到针对其的所述数字组件请求的电子资源的发布者或所述发布者的内容平台建立的提升;以及
使用所述提升来调整所述内容平台的每个数字组件的所述选择值。
6.根据任一前述权利要求所述的计算机实现的方法,进一步包括:
识别由接收到针对其的所述数字组件请求的电子资源的发布者建立的选择值下限;以及
从所述数字组件集合中过滤具有小于所述选择值下限的选择值的一个或多个数字组件。
7.根据任一前述权利要求所述的计算机实现的方法,其中,确定所述优先级层级中的每个数字组件的所述获胜者参数的秘密份额包括:
基于所述优先级层级中的每个数字组件的所述选择值对所述优先级层级中的所述数字组件进行排序;
至少基于所述排序和所述优先级层级中的每个数字组件的所述候选参数的所述第一秘密份额来确定所述层级中的每个数字组件的累加值的第一秘密份额,其中,数字组件的所述累加值指示所述优先级层级中具有比所述数字组件高的选择值的候选数字组件的数量;以及
对于所述优先级层级中的每个数字组件,基于所述数字组件的所述候选参数的所述第一秘密份额、所述数字组件的所述候选参数的所述一个或多个第二秘密份额中的每一个以及所述数字组件的所述累加值来确定所述数字组件的所述获胜者参数的所述第一秘密份额。
8.根据权利要求7所述的计算机实现的方法,进一步包括确定对应于第二值选择过程的第二选择值,包括:
对于每个优先级层级,确定表示所述给定数字组件是否被包括在所述优先级层级中的获胜层级参数的第一秘密份额;
对于所述数字组件集合中的每个数字组件,确定第二选择值参数的第一秘密份额,所述第二选择值参数表示所述数字组件的所述选择值是否可能是候选数字组件集合当中的第二高选择值;以及
将对于其而言以下各项成立的数字组件的选择值识别为所述第二选择值:(i)所述数字组件的所述候选参数指示所述数字组件是用于选择的候选,(ii)所述获胜层级参数指示所述给定数字组件被包括在所述获胜层级中,以及(iii)所述第二选择值参数指示所述数字组件的所述选择值可能是候选数字组件集合当中的第二高选择值。
9.一种系统,包括:
一个或多个处理器;以及
存储指令的一个或多个存储设备,所述指令在由所述一个或多个处理器执行时使所述一个或多个处理器执行根据任一前述权利要求所述的方法。
10.一种承载指令的计算机可读存储介质,所述指令在由一个或多个处理器执行时使所述一个或多个处理器执行根据权利要求1至8中的任一项所述的方法。
11.一种包括指令的计算机程序产品,所述指令在由计算机执行时使所述计算机执行根据权利要求1至8中的任一项所述的方法的步骤。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IL281328 | 2021-03-08 | ||
IL281328A IL281328A (en) | 2021-03-08 | 2021-03-08 | Flexible content selection processes through multi-sided secure calculation |
PCT/US2022/019171 WO2022192148A1 (en) | 2021-03-08 | 2022-03-07 | Flexible content selection processes using secure multi-party computation |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115918029A true CN115918029A (zh) | 2023-04-04 |
Family
ID=80937265
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280004253.9A Pending CN115918029A (zh) | 2021-03-08 | 2022-03-07 | 使用安全多方计算的灵活内容选择过程 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20230171091A1 (zh) |
EP (1) | EP4128652B1 (zh) |
JP (1) | JP7440667B2 (zh) |
KR (1) | KR20230002717A (zh) |
CN (1) | CN115918029A (zh) |
IL (1) | IL281328A (zh) |
WO (1) | WO2022192148A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20230016859A1 (en) * | 2020-07-13 | 2023-01-19 | Inpher, Inc. | Multi-Pivot Partial Quicksort and Oblivious Comparisons of Secret Shared Arithmetic Values in a Multi-Party Computing Setting |
WO2024129214A1 (en) * | 2022-12-16 | 2024-06-20 | Google Llc | Privacy preserving custom embeddings |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8250599B2 (en) | 2004-10-26 | 2012-08-21 | Yahoo! Inc. | System and method for providing time-based content |
JP2010146269A (ja) | 2008-12-18 | 2010-07-01 | Sanyo Electric Co Ltd | 情報処理装置、情報提供システムおよび情報処理方法 |
US8768774B2 (en) | 2011-11-29 | 2014-07-01 | Facebook, Inc. | Advertisements with multiple targeting criteria bids |
EP2688264B1 (en) | 2012-07-16 | 2016-08-24 | Alcatel Lucent | Method and apparatus for privacy protected clustering of user interest profiles |
CN105009505A (zh) | 2013-08-09 | 2015-10-28 | 汤姆逊许可公司 | 基于矩阵因子分解和岭回归的隐私保护推荐的方法和系统 |
US9679314B1 (en) | 2014-01-31 | 2017-06-13 | Google Inc. | Content selection using distribution parameter data |
US9577829B1 (en) * | 2014-09-03 | 2017-02-21 | Amazon Technologies, Inc. | Multi-party computation services |
AU2016219159B2 (en) * | 2015-02-12 | 2021-05-13 | Visa International Service Association | Multi-party encryption cube processing apparatuses, methods and systems |
WO2018135334A1 (ja) | 2017-01-19 | 2018-07-26 | ソニー株式会社 | 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム |
WO2019063503A1 (en) | 2017-09-29 | 2019-04-04 | Robert Bosch Gmbh | METHOD FOR CALCULATING FASTER SECURED MULTIPARTITE INTERNAL PRODUCT USING SPDZ |
US11023595B1 (en) * | 2018-12-07 | 2021-06-01 | Amazon Technologies, Inc. | System and method for processing encrypted search |
US20210406386A1 (en) * | 2018-05-28 | 2021-12-30 | Royal Bank Of Canada | System and method for multiparty secure computing platform |
EP3659049A1 (en) | 2018-10-17 | 2020-06-03 | Alibaba Group Holding Limited | Secret sharing with a trusted initializer |
US10917494B2 (en) | 2019-02-01 | 2021-02-09 | Google Llc | Dynamic application content analysis |
-
2021
- 2021-03-08 IL IL281328A patent/IL281328A/en unknown
-
2022
- 2022-03-07 JP JP2022570376A patent/JP7440667B2/ja active Active
- 2022-03-07 EP EP22712718.0A patent/EP4128652B1/en active Active
- 2022-03-07 CN CN202280004253.9A patent/CN115918029A/zh active Pending
- 2022-03-07 KR KR1020227039722A patent/KR20230002717A/ko unknown
- 2022-03-07 US US17/919,566 patent/US20230171091A1/en active Pending
- 2022-03-07 WO PCT/US2022/019171 patent/WO2022192148A1/en unknown
Also Published As
Publication number | Publication date |
---|---|
EP4128652A1 (en) | 2023-02-08 |
JP7440667B2 (ja) | 2024-02-28 |
EP4128652B1 (en) | 2024-08-21 |
KR20230002717A (ko) | 2023-01-05 |
IL281328A (en) | 2022-10-01 |
JP2023532833A (ja) | 2023-08-01 |
US20230171091A1 (en) | 2023-06-01 |
WO2022192148A1 (en) | 2022-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7544888B2 (ja) | コンテンツ選択プロセスの完全性を改善するためのセキュアマルチパーティ計算の使用 | |
JP7397212B2 (ja) | コンテンツ配信における情報に対するアクセスを保護するためのセキュアなmpcおよびベクトル計算の使用 | |
JP7440667B2 (ja) | セキュアマルチパーティ計算を使用したフレキシブルなコンテンツ選択プロセス | |
JP7471450B2 (ja) | セキュアマルチパーティ計算の性能の向上 | |
JP2023532834A (ja) | 情報に対するアクセスを保護するためのセキュアなマルチパーティ計算および確率的データ構造の使用 | |
JP7471425B2 (ja) | 秘密共有を使用するフィードバックコントローラ | |
US20240195603A1 (en) | Cryptographically secure control using secure multi-party computation | |
JP7425222B2 (ja) | セキュアマルチパーティ計算を使用したプライバシー保持測定 |
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 |