CN115428395A - 安全多方计算的增强性能 - Google Patents
安全多方计算的增强性能 Download PDFInfo
- Publication number
- CN115428395A CN115428395A CN202280003612.9A CN202280003612A CN115428395A CN 115428395 A CN115428395 A CN 115428395A CN 202280003612 A CN202280003612 A CN 202280003612A CN 115428395 A CN115428395 A CN 115428395A
- Authority
- CN
- China
- Prior art keywords
- digital component
- digital
- selection
- value
- mpc2
- 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
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)
- Measurement Of The Respiration, Hearing Ability, Form, And Blood Characteristics Of Living Organisms (AREA)
- Complex Calculations (AREA)
- Measuring Pulse, Heart Rate, Blood Pressure Or Blood Flow (AREA)
Abstract
本文档涉及使用安全MPC以保护用户隐私并保护选择过程中涉及的每一方的数据的安全性的方式来选择数字组件。在一个方面,一种方法包括由安全MPC系统的第一计算系统从客户端设备接收数字组件请求和随机数。第一计算系统基于随机数和函数来生成包括布隆过滤器的份额的数组,该份额表示包括客户端设备的用户作为成员的用户组的用户组标识符。对于多个用户组标识符中的每一个,第一计算系统与安全MPC系统的一个或多个第二计算系统协作并使用该数组来计算一个或多个用户组成员资格条件参数的相应的第一秘密份额。
Description
技术领域
本说明书涉及密码学和数据安全性。
背景技术
安全多方计算(MPC)是一系列密码协议,其通过跨多方分布计算来防止对数据的访问,使得任何单独一方都不能访问另一方的数据或中间计算值,而输出仅被发布给指定方。MPC计算系统通常使用秘密份额或其他加密形式的数据来执行计算以及保护各方之间的信息的交换。
发明内容
通常,本说明书中描述的主题的一个创新方面能够体现在包括以下的方法中:由安全多方计算(MPC)系统的第一计算系统从客户端设备接收数字组件请求和随机数;基于所述随机数和函数来生成包括布隆过滤器的份额的数组,所述布隆过滤器的份额表示包括所述客户端设备的用户作为成员的用户组的用户组标识符;针对多个用户组标识符中的每一个用户组标识符,与所述安全MPC系统的一个或多个第二计算系统协作并使用所述数组来计算表示所述客户端设备的所述用户是否是由所述用户组标识符标识的用户组的成员的一个或多个用户组成员资格条件参数的相应的第一秘密份额;对于多个数字组件中的每个数字组件:识别与所述数字组件相对应的给定用户组标识符;以及通过所述第一计算系统与所述一个或多个第二计算系统中的每一个协作,至少基于与由所述给定用户组标识符标识的给定用户组相对应的每个用户组成员资格条件参数的相应的第一秘密份额和与由所述一个或多个第二计算机中的每一个持有的由所述给定用户组标识符标识的给定用户组相对应的所述用户组成员资格条件参数的第二秘密份额,来计算候选参数的第一秘密份额,其中,所述候选参数指示所述数字组件是否是所述数字组件请求的合格候选;基于用于每个数字组件的所述候选参数的所述第一秘密份额和用于每个数字组件的选择值,生成表示所选择的数字组件的选择结果的第一秘密份额;以及向所述客户端设备发送所述选择结果的所述第一秘密份额。该方面的其他实施方式包括被配置为执行在计算机存储设备上编码的方法的方面的对应的装置、系统和计算机程序。
这些和其他实施方式能够各自可选地包括以下特征中的一个或多个。在一些方面,与所述第二MPC系统的所述一个或多个第二计算机协作计算所述用户组成员资格条件参数的所述第一秘密份额包括使用混淆电路协议或Goldreich-Micali-Wigderson(GMW)协议中的一个来计算所述用户组成员资格条件参数的所述第一秘密份额。
在一些方面,与所述一个或多个第二计算机中的每一个协作地计算所述候选参数的所述第一秘密份额包括基于用于一个或多个附加条件的参数的相应秘密份额来计算所述候选参数的所述第一秘密份额。
一些方面包括:接收对表示被阻止的数字组件的集合的附加布隆过滤器的附加随机数;生成表示所述附加布隆过滤器的份额的附加数组;以及对所述多个数字组件中的一个或多个数字组件,与所述一个或多个第二计算系统协作并使用所述附加数组来计算表示所述数字组件在所述客户端设备处是否被阻止的阻止条件参数的第一秘密份额。用于所述数字组件的所述候选参数基于所述阻止条件参数。
在一些方面,所述选择结果的所述第一秘密份额包括通过在所述选择结果的秘密份额与从所述客户端设备接收的第二掩码之间执行按位XOR运算而计算出的结果。在一些方面,所述第一计算系统包括服务池,所述服务池包括处理器集合和在所述处理器集合当中平衡计算负载的负载平衡器。所述第一计算系统能够包括日志处理器池,所述日志处理器池包括附加处理器集合,所述附加处理器集合基于对包括与完成的数字组件选择过程相关的数据的日志的更新来生成快照,并且将所述快照提供给所述服务池。
本说明书中描述的主题能够在特定实施例中实现,以便实现以下优点中的一个或多个。使用由不同方操作的两个或更多个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)格式化的网页的集合,其能够包含文本、图像、多媒体内容和诸如脚本的编程元素。每个网站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或应用页面的数字组件的数字组件槽。如贯穿本文档所使用的,短语“数字组件”是指数字内容或数字信息的离散单元(例如,视频剪辑、音频剪辑、多媒体剪辑、图像、文本或另一个内容单元)。数字组件能够作为单个文件或以文件集合电子地存储在物理存储器设备中,并且数字组件能够采取视频文件、音频文件、多媒体文件、图像文件或文本文件的形式,并且包括广告信息,使得广告是一种类型的数字组件。例如,数字组件可以是旨在补充网页的内容、应用内容(例如,应用页面)或由应用112显示的其他资源的内容。更具体地,数字组件可以包括与资源内容相关的数字内容,例如,数字组件可以涉及与网页内容相同的主题,或者涉及相关主题。因此,数字组件的提供能够补充并且通常增强网页或应用内容。
当应用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创建的一个或多个数字组件的选择值,并且将与数字组件相关的数据(例如,数字组件本身或使得数字组件能够被下载的代码)和选择参数提供给SSP170。选择值能够指示数字组件提供者160愿意提供以与数字组件一起显示或用户与数字组件交互的量。然后,SSP 170能够选择用于在客户端设备110处显示的数字组件,并且向客户端设备110提供使得客户端设备110显示数字组件的数据,例如,通过提供数字组件或使得能够下载数字组件的代码。如下更详细所述,MPC集群130能够选择用于客户端设备110的数字组件以便以保护用户隐私的方式显示。
在一些情况下,接收与用户先前访问和/或交互的网页、应用页面或其他电子资源相关的数字组件对用户是有益的。为了将这样的数字组件分发给用户,用户能够被分配给用户组,例如,对相同或相似主题感兴趣的用户的用户兴趣组、相似用户的群组或涉及相似用户数据的其他组类型。当用户访问特定资源或在资源处执行特定动作(例如,与网页上显示的特定项目交互或将项目添加到虚拟购物车)时,用户能够被分配给用户组。用户组能够由数字组件提供者160生成和更新。也就是说,当用户访问数字组件提供者160的电子资源时,每个数字组件提供者160能够将用户分配给其用户组。用户组也能够由内容平台(例如,由DSP 150和/或SSP 170)创建和/或更新。
为了保护用户隐私,例如,能够通过应用112、客户端设备110的操作系统或另一可信程序中的一个,而不是通过数字组件提供者、内容平台或其他方,在用户的客户端设备110处维护用户的组成员资格。在特定示例中,可信程序(例如,Web浏览器或操作系统)能够维护使用Web浏览器或另一应用的用户(例如,登录到浏览器、应用或客户端设备110的用户)的用户组标识符的列表(“用户组列表”)。用户组列表能够包括用于将用户作为成员包括在内的每个用户组的用户组标识符。创建用户组的数字组件提供者160或内容平台能够为其用户组指定用户组标识符。用户组的用户组标识符能够是组的描述(例如,园艺组)或表示组的代码(例如,非描述性的字母数字序列)。用户的用户组列表能够被存储在客户端设备110处的安全存储装置中和/或能够在被存储时被加密以防止其他人访问该列表。
当应用112显示与数字组件提供者160相关的资源(例如,网页)、应用内容或数字组件时,资源、应用内容或数字组件能够请求应用112向用户组列表添加一个或多个用户组标识符。作为响应,应用112能够将所述一个或多个用户组标识符添加到用户组列表并安全地存储用户组列表。例如,用户选择查看关于特定项目的更多信息的网页能够将用户添加到与特定项目相关的用户组。
在一些实施方式中,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(language,location)),其中,参数URL是数字组件和选择值合格的资源的URL,参数language是数字组件和选择值合格的应用112的指定口语,并且参数location是数字组件和选择值合格的地理位置。如果数字组件请求的上下文信号与这些参数匹配,则映射到查找键的数字组件和选择值对于用于响应于该请求选择数字组件的数字组件选择过程是合格的。除了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能够将数字组件关联——例如,链接或映射——到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的数字摘要。eTLD+1是有效顶级域(eTLD)加上比公共后缀多一个级别。示例性eTLD+1是“example.com”,其中“.com”是顶级域。ug_id能够被截断为16字节或另一适当的数据大小。
继续先前的飞钓示例,包括要显示给男子飞钓组中的用户的数字组件的信息的行的第二级查找键能够是男子飞钓组的用户组请求键UG_Request_Key和用户组标识符ug_id的组合。由于数字组件能够在不同的上下文中呈现,因此第二级查找表能够包括用于与男子飞钓组的用户组标识符ug_id相关联的数字组件的多行,每行具有不同的用户组请求键UG_Request_Key和不同的值。
用于第二级LUT的每一行的值能够是用于数字组件的选择值(或值的向量)和数字组件的其他数据,例如,标识数字组件或能够从其下载数字组件的网络位置的元数据等。在一些实施方式中,该行能够包含准备好由应用112例如以Web包格式呈现的数字组件本身。
该值能够是数字组件信息元素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依赖于安全两方计算(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能够针对数字组件存储能够被用于确定该数字组件的选择值的第一值向量。第一值向量能够特定于一个或多个用户组,例如,当为作为所述一个或多个用户组的成员的用户选择数字组件时,能够被用于确定该数字组件的选择值。因此,第一值向量也能够被称为基于用户组的向量。基于用户组的向量能够包括跨两个或更多个维度的多个元素,并且每个元素能够表示数字组件呈现机会的特定特征。例如,基于用户组的值向量能够包括用于地理位置或区域、口语、年龄或年龄范围、网页或其他电子资源的特定URL、特定产品或服务、数字组件槽是高于还是低于折叠、数字组件槽的类型、数字组件槽的大小、电子资源上的数字组件槽的数量、一天中的时间、Web属性标识符和/或数字组件呈现机会的其他适当特征的元素。在一些实施方式中,例如,采用神经网络的实施方式中,基于用户组的值向量能够是用户组在某个抽象向量空间中的嵌入。
每个元素的值能够反映基于具有与该元素相对应的特征的当前数字组件呈现机会来增加或减少数字组件的选择值的量。例如,如果DSP 150想要将数字组件显示给亚特兰大的用户而不是达拉斯的用户,则用于亚特兰大的元素的值能够是高于值一的正值,而用于达拉斯的元素的值能够是低于一的正值,例如零或负值。如下面更详细所述,基于用户组的向量的值能够是向量点积计算的一部分,以确定数字组件的选择值。
该请求包含在数字组件选择过程中使用的信息,包括可能敏感的信息,诸如应用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给予特定DSP150指定量“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浏览器显示的电子资源(例如,网页)或用于由本机应用显示的应用内容。该内容能够包括一个或多个数字组件槽,该一个或多个数字组件槽包括例如脚本的计算机可读代码,该计算机可读代码在被执行时使得客户端设备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使用N个伪随机函数(PRF)来确定要插入的项目的所有可能位置,所述N个伪随机函数(PRF)由用户组标识符或来自被阻止的标识符的集合的标识符以及由应用112生成的两个随机变量中的任一个参数化。例如,假设由应用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。
在一些实施方式中,MPC集群130而不是SSP 170实施底价,或者除了SSP 170之外还有MPC集群130也实施底价。当MPC集群130在向量被用于确定选择值时计算向量的点积时,MPC集群130能够对这些选择值实施底价。MPC集群130而不是SSP 170还能够例如对静态选择值实施底价。
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)×output,其中,参数输出是反馈控制器的输出。该计算能够使用计算系统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=v(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的秘密份额必须保持的仅一个可能的位模式,以便数字组件的候选参数变为真或为一。利用这样的属性,计算系统MPC1仅需要多达50个门来构造混淆电路,例如,如果在关系式3中存在总共约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中示出。
有序选择值 | is_dc_a_candidate | 累加值(acc) | 累加值等于0? |
最高 | 0 | 0 | 1 |
第二高 | 1 | 0 | 1 |
第三高 | 0 | 1 | 0 |
第四最高 | 1 | 1 | 0 |
… | … | … | … |
表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具有值一并且累加值acc具有值零的选择值相对应的数字组件以分发给客户端设备110,如表3的第四列所示。这表示与候选参数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的秘密份额和对于每个数字组件i的用于候选参数is_dc_a_candidatei的秘密份额来确定获胜者参数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的另一秘密份额。注意,对于所有数字组件,至多一个数字组件具有等于1的获胜者参数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的乘积之和。在该示例中,选择结果在如果不存在候选数字组件的情况下将具有值零,或者选择结果将具有等于所选数字组件的数字组件信息元素dc_information_element的值,该所选数字组件具有等于一的获胜者参数is_dc_the_winneri。在另一示例中,数字组件信息元素dc_information_element能够在关系式5中用数字组件的选择值替换。在该示例中,选择结果在如果不存在候选数字组件的情况下将具有值零,或者选择结果将具有等于所选数字组件的选择值的值,该所选数字组件具有等于一的获胜者参数is_dc_the_winneri。
为了以秘密份额执行计算,计算系统MPC1获取所有数字组件,并将能够以明文的数字组件的数字组件信息元素dc_information_elementi乘以数字组件的获胜者参数[is_dc_the_winneri,1]的第一秘密份额。然后,计算系统MPC1能够确定这些乘积的总和,并将总和返回给提交数字组件请求的客户端设备110。也就是说,计算系统MPCI能够使用下面的关系式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(nonce,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_candidatei AND maybe_second_svi的结果是为真或一的布尔值来确定根据秘密份额具有第二高选择值的候选数字组件。也就是说,计算系统MPC1和MPC2能够确定哪个数字组件是候选数字组件并且具有布尔值为真或1的第二选择值参数maybe_second_svi。
在概念上,计算系统MPC1和MPC2能够使用下面的关系式8来计算候选当中的第二高选择值:
second_selection_value=
∑i(selectionvalueix(is_dc_a_candidateiAND maybe_second_svi))
在关系式8中,参数“selectionvaluei”是用于数字组件i的(具有任何提升的)选择值,并且参数“second_selection_value”是候选数字组件当中的第二高选择值的值。使用关系,第二选择值是作为候选的数字组件的选择值,并且具有布尔值为真的第二选择值参数。该关系式中的布尔值能够被视为一(为真)或零(为假)的值。
在秘密份额中,计算系统MPC1和MPC2计算具有秘密份额的结果is_dc_a_candidateiAND maybe_second_svi,并且将结果表示为Z2空间中的两个加性秘密份额(例如,加然后mod 2)。此外,选择值是明文。能够通过利用以明文表示的选择值中的每个位与由每个计算系统MPC1和MPC2保存的结果的1位秘密份额is_dc_a_candidateiAND maybe_second_svi之间的逐位逻辑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能够基于对于层中的每个数字组件i,累加值acci==0的秘密份额和层中的每个数字组件i的候选参数is_dc_a_candidatei的秘密份额来确定获胜者参数is_dc_the_winneri。用于每个数字组件i的获胜者参数is_dc_the_winneri能够是布尔值,其指示数字组件i是否是用于该层的选择过程的获胜者,例如,数字组件i是否是候选数字组件并且在层中的候选数字组件当中具有最高选择值。在一些实施方式中,计算系统MPC1和MPC2能够执行秘密份额乘法协议,以根据秘密份额针对每个选择值计算获胜者参数is_dc_the_winneri=(is_dc_a_candidatei×(acci==0))。
计算系统MPC1和MPC2确定选择结果(524)。计算系统MPC1和MPC2能够通过确定包括具有获胜参数is_dc_the_winneri的数字组件的最高层来确定选择结果,该获胜参数is_dc_the_winneri具有指示数字组件是该层的获胜者的值(例如,布尔真或1)。该数字组件是整个数字组件选择过程的获胜者。计算系统MPC1和MPC2能够使用累加值来确定具有等于真或一的获胜者参数的最高层。例如,计算系统MPC1和MPC2能够识别该层中的所有数字组件的累加值不为零的最高层。
计算系统MPC1向从其接收到数字组件请求的客户端设备110提供选择结果的第一秘密份额(526)。计算系统MPC2向从其接收到数字组件请求的客户端设备110提供选择结果的第二秘密份额(528)。
在包括层的第二值选择过程中,如果数字组件与所选择的数字组件在同一层中,则用于数字组件的选择值仅有资格为选择过程提供第二选择值。为了确定第二选择值,计算系统MPC1和MPC2能够针对每个层t计算获胜层参数maybe_winning_tiert,该获胜层参数maybe_winning_tiert表示该层t是否包括被选择用于分发给客户端设备110的数字组件。在概念上,计算系统MPC1和MPC2能够使用下面的关系式9计算用于每个层t的获胜层参数maybe_winning_tiert:
在关式系9中,参数“T”表示具有比层t更高的优先级的所有层。因此,用于层的获胜层参数maybe_winning_tiert表示任何较高优先级层是否包括候选数字组件。如果不是,则如果层t包括至少一个候选数字组件,则该层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_candidateiAND maybe_second_sviAND 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来确定第一选择值:
first selection value
=∑(selection_valueix(is_dc_a_candidateiAND 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来确定第二选择值:
second selection value
=∑(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空间中的两个加性秘密份额(例如,加然后mod 2)。因此,每个计算系统能够存储第一选择值和第二选择值的秘密份额。例如,计算系统MPC1可以存储第一选择值的第一份额和第二选择值的第一份额。类似地,计算系统MPC2能够存储第一选择值的第二份额和第二选择值的第二份额。第一选择值的两个份额的总和(例如,加然后mod 2)等于第一选择值,而第二选择值的两个份额的总和(例如,加然后mod 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_candidateiAND maybe_first_svi。
然后,计算系统MPC1和MPC2能够使用关系式12计算用于数字组件i的最高其他选择值(HOSVi):
HOSVi=(is_dc_the_winneri×second selection value)+((1-is_dc_the_winneri)Xfirst selection value)
因为获胜者参数、第一选择值和第二选择值由计算系统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和MPC能够通过从用于真实数字组件选择值的清算值中减去用于反事实数字组件选择过程的清算值来确定差异。
计算系统MPC1和MPC2向接收者提供该差异(712)。例如,计算系统中的一个能够向在选择之后显示数字组件的资源或应用内容的发布者提供差异。在另一示例中,计算系统中的一个能够将差异提供给聚合服务器,该聚合服务器聚合发布者的差异。在任一示例中,计算系统能够提供指示差异的数据、例如查找键的用于真实数字组件选择过程的上下文信号和识别发布者的数据(如果被发送到聚合服务器)。
聚合服务器能够聚合为每个发布者报告的差异,并且例如以交互式用户界面的形式提供指示使用层和/或提升的机会成本的数据。在一些实施方式中,计算系统MPC1或MPC2还能够为每个真实数字组件选择过程向聚合服务器提供选择结果。以该方式,聚合服务器能够聚合用于每个DSP 150和/或数字组件提供者160的机会成本。
为了减少将真实数字组件选择过程的所选择的数字组件提供给客户端设备110的等待时间,能够异步地执行过程700的步骤704至712中的一些或全部,例如,在将选择结果提供给客户端设备110之后。
图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(nonce,i)
在关系式15中,XOR运算是逐位XOR运算。
应用112将第一数组发送到计算系统MPC1(808)。应用112还将随机数发送到计算系统MPC2(810)。
计算系统MPC2使用随机数来计算第二数组A2(812)。计算系统MPC2能够使用随机数和PRF来计算第二数组A2。例如,计算系统MPC2能够使用关系式16来计算第二数组A2:A2[i]=PRF(nonce,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、磁盘、或者其他存储设备)。
能够将本说明书中描述的操作实现为由数据处理装置对存储在一个或多个计算机可读存储设备或者从其他源接收到的数据执行的操作。
术语“数据处理装置”涵盖用于处理数据的所有类型的装置、设备和机器,包括例如,可编程处理器、计算机、片上系统、或者前述中的多个或者组合。该装置能够包括专用逻辑电路,例如,FPGA(现场可编程门阵列)或者ASIC(专用集成电路)。除了硬件之外,该装置还能够包括为所述的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时间环境、虚拟机、或者它们中的一个或多个的组合的代码。该装置和执行环境能够实现各种不同的计算模型架构,诸如Web服务、分布式计算和网格计算架构。
能够以包括编译语言或者解释性语言、声明语言或者过程语言的任何形式的编程语言来编写计算机程序(也称为程序、软件、软件应用、脚本或者代码),并且能够以包括作为独立式程序或者作为模块、组件、子例程、对象、或者适合用在计算环境中的其他单元的任何形式来部署计算机程序。计算机程序可以但不必与文件系统中的文件相对应。能够将程序存储在保持其他程序或者数据(例如,存储在标记语言文档中的一个或多个脚本)的文件的一部分中、存储在专用于所述程序的单个文件中,或者存储在多个协作文件(例如,存储一个或多个模块、子程序、或者部分代码的文件)中。能够将计算机程序部署为在一个计算机上执行或者在位于一个站点处或者跨多个站点分布并且通过通信网络互相连接的多个计算机上执行。
能够通过一个或多个可编程处理器来执行本说明书中描述的过程和逻辑流程,该一个或多个可编程处理器执行一个或多个计算机程序以通过操作输入数据并且生成输出来执行动作。还能够由例如FPGA(现场编程门阵列)或者ASIC(专用集成电路)的专用逻辑电路来执行过程和逻辑流程,并且还能够将装置实现为例如FPGA(现场编程门阵列)或者ASIC(专用集成电路)的专用逻辑电路。
适合用于对计算机程序的执行的处理器包括例如通用和专用微处理器。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于根据指令执行动作的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘,或者被可操作地耦合以从其接收数据或将数据传输到其或两者。然而,计算机不需要具有这样的设备。此外,计算机能够被嵌入在另一设备中,例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储设备(例如,通用串行总线(USB)闪存驱动器),仅举几例。适合用于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器设备,包括例如:半导体存储器设备,例如,EPROM、EEPROM、和闪速存储器设备;磁盘,例如,内部硬盘或者可移动盘;磁光盘;以及CD-ROM和DVD-ROM盘。处理器和存储器能够由专用逻辑电路补充或者被并入专用逻辑电路中。
为了提供与用户的交互,本说明书中描述的主题的实施例能够在具有显示设备的计算机上实现,所述显示设备例如为CRT(阴极射线管)或LCD(液晶显示器)监视器,用于向用户显示信息,以及用户能够通过其向计算机提供输入的键盘和指点设备,例如鼠标或轨迹球。也能够使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈能够是任何形式的感官反馈,例如视觉反馈、听觉反馈或触觉反馈;并且,能够以任何形式接收来自用户的输入,包括声音、语音或触觉输入。另外,计算机能够通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从Web浏览器接收的请求而向用户的客户端设备上的Web浏览器发送网页。
能够将本说明书中描述的主题的实施例实现在例如作为数据服务器的包括后端组件的计算系统、或者例如应用服务器的包括中间件组件的计算系统、或者例如具有用户能够通过其与本说明书中所描述的主题的实施方式进行交互的图形用户界面或者Web浏览器的客户端计算机的包括前端组件的计算系统、或者包括一个或多个这样的后端组件、中间件组件、或者前端组件的任何组合的计算系统中。能够通过例如通信网络的任何形式或者介质的数字数据通信来将系统的组件相互连接。通信网络的示例包括:局域网(“LAN”)和广域网(“WAN”)、网际网(例如,互联网),以及对等网络(例如,自组织对等网络)。
计算系统能够包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系借助于在相应计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。在一些实施例中,服务器将数据(例如,HTML页面)传输到客户端设备(例如,出于向与客户端设备交互的用户显示数据和从与客户端设备交互的用户接收用户输入的目的)。在客户端设备处生成的数据(例如,用户交互的结果)能够在服务器处从客户端设备接收。
虽然本说明书包含许多具体的实施细节,但是这些不应被解释为对任何发明或可能要求保护的范围的限制,而是作为特定发明的特定实施例特有的特征的描述。在本说明书中在单独实施例的上下文中描述的某些特征也能够在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也能够单独地或以任何合适的子组合在多个实施例中实现。此外,尽管特征可以在上面被描述为以某些组合起作用并且甚至最初如此要求保护,但是来自所要求保护的组合的一个或多个特征在一些情况下能够从组合中删除,并且所要求保护的组合可以针对子组合或子组合的变化。
类似地,虽然在附图中以特定次序描绘了操作,但是这不应当被理解为要求以所示的特定次序或以顺序执行这些操作,或者执行所有示出的操作,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统组件的分离不应当被理解为在所有实施例中都需要这种分离,并且应当理解到,所描述的程序组件和系统通常能够被一起集成在单个软件产品中或封装到多个软件产品中。
因此,已经描述了主题的特定实施例。其他实施例在以下权利要求的范围内。在一些情况下,权利要求中记载的动作能够以不同的次序执行,并且仍然实现期望的结果。另外,附图中描绘的过程不一定需要所示的特定次序或相继次序来实现期望的结果。在某些实施方式中,多任务和并行处理可能是有利的。
Claims (10)
1.一种计算机实现的方法,包括:
由安全多方计算MPC系统的第一计算系统从客户端设备接收数字组件请求和随机数;
基于所述随机数和函数来生成包括布隆过滤器的份额的数组,所述布隆过滤器的份额表示包括所述客户端设备的用户作为成员的用户组的用户组标识符;
针对多个用户组标识符中的每一个用户组标识符,与所述安全MPC系统的一个或多个第二计算系统协作并使用所述数组来计算表示所述客户端设备的所述用户是否是由所述用户组标识符标识的用户组的成员的一个或多个用户组成员资格条件参数的相应的第一秘密份额;
对于多个数字组件中的每个数字组件:
识别与所述数字组件相对应的给定用户组标识符;以及
与所述一个或多个第二计算系统中的每一个第二计算系统协作,至少基于与由所述给定用户组标识符标识的给定用户组相对应的每个用户组成员资格条件参数的相应的第一秘密份额和与由所述一个或多个第二计算机中的每一个第二计算机持有的由所述给定用户组标识符标识的给定用户组相对应的所述用户组成员资格条件参数的第二秘密份额来计算候选参数的第一秘密份额,其中,所述候选参数指示所述数字组件是否是所述数字组件请求的合格候选;
基于用于每个数字组件的所述候选参数的所述第一秘密份额和用于每个数字组件的选择值,生成表示所选择的数字组件的选择结果的第一秘密份额;以及
向所述客户端设备发送所述选择结果的所述第一秘密份额。
2.根据权利要求1所述的计算机实现的方法,其中,与所述第二MPC系统的所述一个或多个第二计算机协作计算所述用户组成员资格条件参数的所述第一秘密份额包括使用混淆电路协议或Goldreich-Micali-Wigderson(GMW)协议中的一个来计算所述用户组成员资格条件参数的所述第一秘密份额。
3.根据任一前述权利要求所述的计算机实现的方法,其中,与所述一个或多个第二计算机中的每一个协作计算所述候选参数的所述第一秘密份额包括基于用于一个或多个附加条件的参数的相应秘密份额来计算所述候选参数的所述第一秘密份额。
4.根据任一前述权利要求所述的计算机实现的方法,进一步包括:
接收对表示被阻止的数字组件的集合的附加布隆过滤器的附加随机数;
生成表示所述附加布隆过滤器的份额的附加数组;以及
针对所述多个数字组件中的一个或多个数字组件,与所述一个或多个第二计算系统协作并使用所述附加数组来计算表示所述数字组件在所述客户端设备处是否被阻止的阻止条件参数的第一秘密份额,其中,用于所述数字组件的所述候选参数基于所述阻止条件参数。
5.根据任一前述权利要求所述的计算机实现的方法,其中,所述选择结果的所述第一秘密份额包括通过在所述选择结果的秘密份额与从所述客户端设备接收的第二掩码之间执行按位XOR运算而计算出的结果。
6.根据任一前述权利要求所述的计算机实现的方法,其中,所述第一计算系统包括服务池,所述服务池包括处理器集合和在所述处理器集合当中平衡计算负载的负载平衡器。
7.根据权利要求6所述的计算机实现的方法,其中,所述第一计算系统包括日志处理器池,所述日志处理器池包括附加处理器集合,所述附加处理器集合基于对包括与完成的数字组件选择过程相关的数据的日志的更新来生成快照,并且将所述快照提供给所述服务池。
8.一种系统,包括:
一个或多个处理器;以及
存储指令的一个或多个存储设备,所述指令在由所述一个或多个处理器执行时使所述一个或多个处理器执行根据任一前述权利要求所述的方法。
9.一种承载指令的计算机可读存储介质,所述指令在由一个或多个处理器执行时使所述一个或多个处理器执行根据权利要求1至8中的任一项所述的方法。
10.一种包括指令的计算机程序产品,所述指令在由计算机执行时使所述计算机执行根据权利要求1至7中的任一项所述的方法的步骤。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
IL281330 | 2021-03-08 | ||
IL281330A IL281330A (en) | 2021-03-08 | 2021-03-08 | Improved execution of secure multilateral calculation |
PCT/US2022/019182 WO2022192152A1 (en) | 2021-03-08 | 2022-03-07 | Enhanced performance of secure multi-party computation |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115428395A true CN115428395A (zh) | 2022-12-02 |
Family
ID=80952162
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202280003612.9A Pending CN115428395A (zh) | 2021-03-08 | 2022-03-07 | 安全多方计算的增强性能 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20230155820A1 (zh) |
EP (1) | EP4128653A1 (zh) |
JP (1) | JP7471450B2 (zh) |
KR (1) | KR20220155370A (zh) |
CN (1) | CN115428395A (zh) |
IL (1) | IL281330A (zh) |
WO (1) | WO2022192152A1 (zh) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2984559B1 (fr) | 2011-12-20 | 2015-10-23 | Morpho | Identification d'individus par calcul securise |
JP6493522B2 (ja) | 2015-05-07 | 2019-04-03 | 日本電気株式会社 | 秘密計算データ利用システムと方法と装置並びにプログラム |
US11553335B2 (en) | 2019-05-07 | 2023-01-10 | Qualcomm Incorporated | Secure multiparty computation for Internet of Things communications |
US11222129B2 (en) | 2019-06-24 | 2022-01-11 | International Business Machines Corporation | Entity resolution between multiple private data sources |
-
2021
- 2021-03-08 IL IL281330A patent/IL281330A/en unknown
-
2022
- 2022-03-07 WO PCT/US2022/019182 patent/WO2022192152A1/en unknown
- 2022-03-07 CN CN202280003612.9A patent/CN115428395A/zh active Pending
- 2022-03-07 JP JP2022564428A patent/JP7471450B2/ja active Active
- 2022-03-07 EP EP22713143.0A patent/EP4128653A1/en active Pending
- 2022-03-07 US US17/916,871 patent/US20230155820A1/en active Pending
- 2022-03-07 KR KR1020227036224A patent/KR20220155370A/ko unknown
Also Published As
Publication number | Publication date |
---|---|
IL281330A (en) | 2022-10-01 |
KR20220155370A (ko) | 2022-11-22 |
JP7471450B2 (ja) | 2024-04-19 |
EP4128653A1 (en) | 2023-02-08 |
JP2023529783A (ja) | 2023-07-12 |
WO2022192152A1 (en) | 2022-09-15 |
US20230155820A1 (en) | 2023-05-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4070223B1 (en) | Using secure multi-party computation to improve content selection process integrity | |
JP7440667B2 (ja) | セキュアマルチパーティ計算を使用したフレキシブルなコンテンツ選択プロセス | |
JP7397212B2 (ja) | コンテンツ配信における情報に対するアクセスを保護するためのセキュアなmpcおよびベクトル計算の使用 | |
JP7471425B2 (ja) | 秘密共有を使用するフィードバックコントローラ | |
US20240195603A1 (en) | Cryptographically secure control using secure multi-party computation | |
JP7425222B2 (ja) | セキュアマルチパーティ計算を使用したプライバシー保持測定 | |
JP7471450B2 (ja) | セキュアマルチパーティ計算の性能の向上 | |
US12026287B2 (en) | Using secure multi-party computation to improve content selection process integrity | |
JP7515623B2 (ja) | 情報に対するアクセスを保護するためのセキュアなマルチパーティ計算および確率的データ構造の使用 | |
JP2023532834A (ja) | 情報に対するアクセスを保護するためのセキュアなマルチパーティ計算および確率的データ構造の使用 | |
WO2024030200A1 (en) | Single request architecture for increasing efficiency of secure multi-party computations |
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 |