一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

使用秘密共享的反馈控制器的制作方法

2022-08-28 06:29:57 来源:中国专利 TAG:


1.本说明书涉及密码术和反馈控制器。


背景技术:

2.反馈控制器是监测过程变量并基于过程变量的实际值与设定点之间的差异来生成动作以将过程变量驱动到与设定点相同的值的控制器。一种类型的反馈控制器是比例-积分-微分(pid)控制器。


技术实现要素:

3.一般而言,本说明书中描述的主题的一个创新方面能够被体现在方法中,该方法包括,针对一个或多个活动中的每个活动:由多个多方计算(mpc)系统中的第一计算系统与mpc系统中的一个或多个第二计算系统协作,使用安全mpc过程在秘密份额中初始化用于活动的反馈控制器,其中,反馈控制器包括基于活动的目标速率的设定点;由第一计算系统基于表示设定点与活动的测量速率之间的差异的误差参数来更新反馈控制器的输出的第一秘密份额;以及由第一计算系统至少基于输出的第一秘密份额来确定限定活动是否满足活动的调步合格条件的调步选择器参数的第一秘密份额。该方法包括:由第一计算系统接收数字组件请求;由第一计算系统与一个或多个第二计算系统协作,针对数字组件请求进行给定数字组件选择过程,其中,数字组件选择过程从候选数字组件集合中选择给定数字组件,候选数字组件集合中的每个候选数字组件都满足一个或多个合格条件,一个或多个合格条件包括处于满足调步合格条件的合格活动中;以及由第一计算系统向客户端设备发送识别给定数字组件的选择结果的第一秘密份额。该方面的其他实施方式包括对应的装置、系统和编码在计算机存储设备上的被配置为执行该方法的各方面的计算机程序。
4.这些和其他实施方式能够各自可选地包括以下特征中的一个或多个。在一些方面,活动的目标速率包括活动的目标展示速率、给定活动的目标用户交互速率或给定活动的目标资源消耗速率中的一个。
5.在一些方面,反馈控制器包括比例-积分-微分(pid)控制器。数字组件请求能够包括识别包括客户端设备的用户作为成员的一个或多个第一用户组的数据的秘密份额。由第一计算系统与一个或多个第二计算系统协作针对数字组件请求进行给定数字组件选择过程能够包括:识别多个数字组件,其中,每个数字组件对应于:(i)相应选择值,(ii)数字组件有资格被分发给的相应第二用户组的相应第二用户组标识符,以及(iii)包括数字组件的相应活动;针对每个选择值,确定总体候选参数的第一秘密份额,总体候选参数指示:(i)对应于选择值的第二用户组标识符是否与一个或多个第一用户组中的一个相匹配,以及(ii)相应活动的调步选择器参数是否指示相应活动满足相应活动的调步合格条件;以及基于多个数字组件中的每个数字组件的相应选择值和候选参数来生成选择结果的第一秘密份额,其中,给定数字组件是来自合格数字组件集合的具有最高选择值的特定数字组件。
6.在一些方面,每个合格数字组件是总体候选参数具有指定值的数字组件,其中,指
定值指示:(i)对应于数字组件的第二用户组标识符与一个或多个第一用户组中的一个相匹配,以及(ii)包括数字组件的活动的相应调步选择器参数指示活动满足调步合格条件。
7.生成选择结果的第一秘密份额能够包括:基于每个选择值的量值来生成多个数字组件的顺序;基于数字组件的顺序和每个数字组件的总体候选参数来确定每个选择值的累加值的第一秘密份额;基于(i)选择值的总体候选参数和(ii)指示选择值的累加值是否是特定指定值的相等性测试的结果,针对每个数字组件确定获胜者参数的第一秘密份额;以及针对每个选择值,确定选择值的获胜者参数与选择值的数字组件信息元素的乘积之和的第一秘密份额作为选择结果的第一秘密份额。确定每个选择值的累加值的第一秘密份额能够包括,针对每个单独的选择值,确定在最高选择值与单独的选择值之间包括最高选择值和单独的选择值的具有指示对应于选择值的第二用户组标识符与一个或多个第一用户组标识符中的至少一个相匹配的候选参数的选择值的数量。特定指定值能够为一或逻辑真。
8.一些方面能够包括:利用对给定数字组件选择过程的选择过程标识符的引用来存储获胜者参数的第一秘密份额;从客户端设备接收通知,该通知包括选择过程标识符和数据的第一秘密份额,该数据指示(i)给定数字组件是否在客户端设备处被呈现或者(ii)用户是否与给定数字组件进行了交互中的至少一项;以及使用选择过程标识符和数据的第一秘密份额来更新用于包括给定数字组件的活动的反馈控制器的测量速率的第一秘密份额,该数据指示(i)数字组件是否在客户端设备处被呈现或者(ii)用户是否与给定数字组件进行了交互中的至少一项。一些方面能够包括:与一个或多个第二计算系统协作,基于测量速率的更新后的第一秘密份额和由一个或多个第二计算系统中的每个维护的测量速率的相应第二秘密份额来更新给定活动的相应调步选择器参数的第一秘密份额。更新给定活动的相应调步选择器参数的第一秘密份额能够包括:与一个或多个第二计算系统协作,更新用于给定活动的反馈控制器的输出的第一秘密份额,以及与一个或多个第二计算系统协作,基于用于给定活动的反馈控制器的输出的更新后的第一秘密份额和由一个或多个第二计算系统中的每个维护的用于给定活动的反馈控制器的输出的相应更新后的第二秘密份额来更新给定活动的调步选择器的第一秘密份额。
9.本说明书中描述的主题能够在特定实施例中实现,以便实现以下优点中的一个或多个。使用通过由不同方操作的两个或更多个mpc服务器执行的安全mpc过程以基于用户信息的秘密份额来选择数字组件,确保在mpc服务器之间没有未授权的串通的情况下用户信息不能被mpc服务器或另一方以明文形式访问。
10.在数字组件选择过程中,mpc服务器能够从满足一个或多个合格条件的合格数字组件中进行选择,同时防止各方以明文形式访问用户信息。合格条件能够包括对数字组件的分发的方式或频率的限制和指导,以及其他因素。这些条件能够包括用户组成员资格、频率控制、静音、预算、k-匿名和/或调步约束。
11.用户的客户端设备能够生成概率数据结构,例如布谷鸟过滤器,其表示包括用户作为成员的用户组。客户端设备能够将概率数据结构拆分成两个或更多个秘密份额。替代地,客户端设备能够生成分布式点函数,每个用户组一个分布式点函数,该用户组包括用户作为成员。分布式点函数是加密地表示用户是否是用户组的成员的秘密份额。以这种方式使用概率数据结构和/或分布式点函数通过防止访问用户组成员资格来保护用户隐私,并减少提供给mpc集群的信息的大小。数据大小的这种减少减少传输信息消耗的带宽量,减少
传输信息的等待时间,并且减少依靠电池运行的设备(例如,移动设备)传输信息所需的处理功率量和相关联的电池功率。
12.mpc集群能够传输识别mpc集群使用安全mpc过程选择的选择数字组件的结果的秘密份额。通过仅发送选择数字组件的结果的秘密份额,而不是发送所有数字组件或数字组件的大集合的信息,类似地减少了传输和接收结果中消耗的带宽、时延、处理功率和电池功率。这还通过限制向客户端设备提供信息的数字组件的数量,减少了向mpc集群提交数字组件的选择值的内容平台的保密信息的潜在泄露。
13.能够使用秘密共享来实现反馈控制器,例如pid控制器,以确保数字组件的目标调步,例如,使得活动的数字组件在活动的整个时间段内均匀分布或接近均匀分布。目标调步能够包括在给定时间段内数字组件的均匀分布、与数字组件的均匀用户交互或者由观看数字组件得到的均匀转换。反馈控制器还能够精确地控制数字组件分发资源(例如,预算),同时防止其他人访问用户信息。反馈控制器还提供对调步和资源消耗的实时或接近实时的控制,同时提供目标隐私保护。因此,数字组件分发的反馈控制器能够去除冗余的数字组件分发或否则将过于频繁的分发,这节省了网络资源以及相关联的传输和接收资源。
14.下面参照附图描述前述主题的各种特征和优点。从本文描述的主题和权利要求,附加的特征和优点是显而易见的。
附图说明
15.图1是mpc集群执行安全mpc过程来选择用于分发给客户端设备的数字组件的环境的框图。
16.图2是用于选择用于在客户端设备处显示的数字组件的示例过程的泳道图。
17.图3是用于选择用于分发给客户端设备的数字组件的示例过程的泳道图。
18.图4是示出了使用反馈控制器来确定调步选择器参数的秘密份额的示例过程的泳道图。
19.图5是示出了用于选择用于分发给客户端设备的数字组件的示例过程的流程图。
20.图6是示例计算机系统的框图。
21.不同附图中相同的附图标记和名称指示相同的元件。
具体实施方式
22.总的来说,本文描述了使用利用秘密共享实现的反馈控制器来对数字组件分发进行调步和控制对数字组件分发速率的使用的系统和技术。本文描述的控制技术能够用于信息应当对其保密的其他类型的控制器。服务器计算机的mpc集群能够执行安全mpc过程,以基于用户信息或从用户信息导出的信号来选择数字组件,而mpc服务器不能够在没有未授权串通的情况下以明文形式访问用户信息或导出的信号。能够使用概率数据结构或分布式点函数将用户信息发送到mpc集群,以减少通过网络传输的信息的数据大小,并在传输期间保持信息安全。
23.使用秘密共享实现的反馈控制器(例如pid控制器)能够用于控制活动的一个或多个数字组件何时满足合格条件,使得数字组件有资格分发给客户端设备,例如,假设数字组件满足对数字组件设置的任何其他条件。控制器的变量能够由mpc集群在秘密份额中计算
和维护。该变量能够是基于数字组件的展示的数量、用户与数字组件的交互的数量、或者用于活动的数字组件分发资源的量(例如,预算)。例如,变量能够是展示速率、交互速率、转换速率和/或资源消耗速率。展示速率能够是在给定时间段内活动的数字组件被显示的速率。交互速率能够是在给定时间段内与数字组件交互的速率。转换速率能够是在给定时间段内显示数字组件之后发生转换的速率。资源消耗速率能够是在给定时间段内用于活动的数字组件分发资源被使用的速率。控制器能够基于变量的设定点与实际速率之间的差异,响应于数字组件请求,调整数字组件有资格被选择的概率。
24.图1是其中mpc集群执行安全mpc过程来选择用于分发给客户端设备110的数字组件的环境100的框图。示例环境100包括数据通信网络105,例如局域网(lan)、广域网(wan)、互联网、移动网络或其组合。网络105连接客户端设备110、安全mpc集群130、发布者140、网站142、内容平台,例如供应方平台(ssp)170和需求方平台dsp(150)。示例环境100可以包括许多不同的客户端设备110、安全mpc集群130、发布者140、网站142、dsp 150和ssp 170。
25.客户端设备110是能够通过网络105进行通信的电子设备。示例客户端设备110包括个人计算机、移动通信设备,例如智能电话,以及能够通过网络105发送和接收数据的其他设备。客户端设备还能够包括通过麦克风接受音频输入并通过扬声器输出音频输出的数字助理设备。当数字助理检测到激活麦克风以接受音频输入的“热门词”或“热门短语”时,数字助理能够被置于收听模式(例如,准备好接受音频输入)。数字助理设备还能够包括照相机和/或显示器,以捕获图像并且视觉地呈现信息。数字助理能够在不同形式的硬件设备中实现,包括可穿戴设备(例如,手表或眼镜)、智能电话、扬声器设备、平板设备或另一硬件设备。客户端设备还能够包括数字媒体设备,例如插入电视或其他显示器中以将视频流式传输到电视、游戏系统或虚拟现实系统的流式传输设备。
26.客户端设备110通常包括应用112,诸如web浏览器和/或原生应用,以便于通过网络105发送和接收数据。原生应用是针对特定平台或特定设备(例如,具有特定操作系统的移动设备)开发的应用。发布者140能够开发并向客户端设备110提供(例如,使其可供下载)原生应用。例如,响应于客户端设备110的用户在web浏览器的地址栏中输入资源145的资源地址或者选择引用资源地址的链接,web浏览器能够从托管发布者140的网站142的web服务器请求资源145。类似地,原生应用能够从发布者的远程服务器请求应用内容。
27.一些资源、应用页面或其他应用内容能够包括用于与资源145或应用页面一起显示数字组件的数字组件槽。如贯穿本文所使用的,短语“数字组件”指的是数字内容或数字信息的离散单元(例如,视频剪辑、音频剪辑、多媒体剪辑、图像、文本或另一内容单元)。数字组件能够作为单个文件或以文件集合电子地存储在物理存储器设备中,并且数字组件能够采取视频文件、音频文件、多媒体文件、图像文件或文本文件的形式,并且包括广告信息,使得广告是一种类型的数字组件。例如,数字组件可以是旨在补充由应用112显示的网页或其他资源的内容的内容。更具体地,数字组件可以包括与资源内容相关的数字内容(例如,数字组件可以涉及与网页内容相同的主题,或者相关主题)。因此,数字组件的提供能够补充并且通常增强网页或应用内容。
28.当应用112加载包括一个或多个数字组件槽的资源(或应用内容)时,应用112能够请求每个槽的数字组件。在一些实施方式中,数字组件槽能够包括使得应用112从数字组件分发系统请求数字组件的代码(例如,脚本),该数字组件分发系统选择数字组件并将该数
字组件提供给应用112以用于显示给客户端设备110的用户。如下所述,应用112能够从mpc集群130和/或一个或多个ssp 170请求数字组件。
29.一些发布者140使用ssp 170来管理获得其资源和/或应用的数字组件槽的数字组件的过程。ssp 170是以硬件和/或软件实现的技术平台,该技术平台使获得资源和/或应用的数字组件的过程自动化。每个发布者140能够具有对应的ssp 170或多个ssp 170。一些发布者140可以使用相同的ssp 170。
30.数字组件提供者160能够创建(或者以其他方式发布)在发布者的资源和应用的数字组件槽中显示的数字组件。数字组件提供者160能够使用dsp 150来管理对其数字组件的提供以用于在数字组件槽中显示。dsp 150是以硬件和/或软件实现的技术平台,该技术平台使分发数字组件以用于与资源和/或应用一起显示的过程自动化。dsp 150能够代表数字组件提供者160与多个供应方平台ssp进行交互,以提供数字组件以用于与多个不同发布者140的资源和/或应用一起显示。通常,dsp 150能够(例如,从ssp)接收对数字组件的请求,基于该请求来生成(或选择)由一个或多个数字组件提供者创建的一个或多个数字组件的选择值,并且向ssp提供与数字组件相关的数据(例如,数字组件本身)和选择参数。选择值能够指示数字组件提供者160愿意为显示或用户与数字组件的交互提供的量。然后,ssp能够选择在客户端设备110处显示的数字组件,并向客户端设备110提供使客户端设备110显示该数字组件的数据。
31.在一些情况下,接收与网页、应用页面或用户先前访问和/或交互的其他电子资源相关的数字组件对用户是有益的。为了将这种数字组件分发给用户,当用户访问特定资源或对该资源执行特定动作(例如,与网页上显示的特定项进行交互或将该项添加到虚拟购物车)时,能够将用户指派到用户组,例如,用户兴趣组、相似用户的群组或涉及相似用户数据的其他组类型。用户组能够由数字组件提供者160生成。也就是说,当用户访问数字组件提供者160的电子资源时,每个数字组件提供者160能够将用户指派到他们的用户组。用户组也能够由内容平台创建,例如由dsp 150和/或ssp 170创建。
32.为了保护用户隐私,能够在用户的客户端设备110处维护用户组成员资格,例如,由应用112之一或客户端设备110的操作系统来维护,而不是由数字组件提供者、内容平台或其他方来维护。在特定示例中,可信程序(例如,web浏览器或操作系统能够为使用web浏览器或另一应用的用户(例如,登录到浏览器、应用或客户端设备110的用户)维护用户组标识符列表(“用户组列表”)。用户组列表能够包括用户作为成员的每个用户组的组标识符。创建用户组的数字组件提供者160能够为他们的用户组指定用户组标识符。用户组的用户组标识符能够描述该组(例如,园艺组)或表示该组的代码(例如,非描述性的字母数字序列)。用户的用户组列表能够被存储在客户端设备110处的安全存储中和/或能够在存储时被加密以防止其他人访问该列表。
33.当应用112显示与数字组件提供者160相关的资源或应用内容或网站142上的网页时,该资源能够请求应用112向用户组列表添加一个或多个用户组标识符。作为响应,应用112能够将一个或多个用户组标识符添加到用户组列表,并且安全地存储用户组列表。
34.在一些实施方式中,mpc集群130能够使用用户的用户组成员资格来选择用户可能感兴趣的或者以另一种方式对用户/用户设备有益的数字组件或其他内容。例如,这种数字组件或其他内容可以包括改善用户体验、改善用户设备的运行或者以某种其他方式使用户
或用户设备受益的数据。然而,用户的用户组列表的用户组标识符能够被提供并用于以防止mpc集群130中的计算系统mpc1和mpc2以明文形式访问用户的用户组标识符的方式来选择数字组件,从而在使用用户组成员资格数据来选择数字组件时保护用户隐私。明文是以能够在不需要密钥或其他解密设备或其他解密过程的情况下被查看或使用的形式的没有被计算地标记、特殊格式化或以代码或数据(包括二进制文件)编写的文本。
35.安全mpc集群130包括两个计算系统mpc1和mpc2(例如,服务器计算机),它们执行安全mpc过程,以基于用户组成员资格来选择用于分发给用户的客户端设备的数字组件,但是不以明文形式访问组成员资格或其他用户信息或从这种用户信息导出的信号。尽管示例mpc集群130包括两个计算系统,但是也能够使用更多计算系统,只要mpc集群130包括多于一个计算系统。例如,mpc集群130能够包括三个计算系统、四个计算系统或其他适当数量的计算系统。在mpc集群130中使用更多计算系统能够提供更多安全性,但是也能够增加mpc过程的复杂性。
36.计算系统mpc1和mpc2能够由不同的实体操作。以这种方式,每个实体可能无法以明文形式访问用户组成员资格、或其他用户信息、或从这种用户信息导出的信号。例如,计算系统mpc1或mpc2中的一个能够由与用户、发布者140、dsp 150、ssp 170和数字组件提供者160不同的可信方来操作。例如,产业组、政府组或浏览器开发者可以维护和操作计算系统mpc1和mpc2中的一个。其他计算系统可以由这些组中的不同一个来操作,使得不同可信方操作每个计算系统mpc1和mpc2。优选地,操作不同计算系统mpc1和mpc2的不同方没有动机去串通起来危害用户隐私。在一些实施方式中,计算系统mpc1和mpc2在体系结构上是分离的,并且被监视以在除了执行本文中描述的安全mpc过程之外不与彼此通信。
37.每个计算系统mpc1和mpc2能够存储数字组件的选择值(和其他信息)。例如,作为先前数字组件选择过程的一部分,计算系统mpc1和mpc2能够高速缓存先前从ssp 170和/或dsp 150接收到的选择值。以这种方式,mpc集群130能够响应于从客户端设备110接收到的未来的基于用户组的数字组件请求而使用选择值来选择用于分发给客户端设备110的数字组件。
38.在下面的示例中,每个数字组件具有基于用户组的条件,该基于用户组的条件限定了该数字组件及其选择值仅有资格用于数字组件选择过程,在该数字组件选择过程中,为作为特定组的成员的用户选择数字组件。另外,或者替代地,每个数字组件能够与其他条件相关联,其他条件例如是防止相同用户在一段时间内暴露于相同数字组件超过指定次数的频率控制条件、防止数字组件被显示给已经选择静音的用户的静音条件、k-匿名条件和/或下面更详细描述的调步条件。
39.在一些实施方式中,每个计算系统mpc1和mpc2使用两级查找表(lut)来存储数字组件的选择值。使用两级lut能够提供一些性能优势,但是也能够使用其他适当的数据结构。第一级能够通过用户组请求键(ug_request_key)来键控。ug_request_key能够是基于上下文信号集合的复合消息,例如数字组件请求的上下文信号集合(例如url、位置、语言等)或对于其而言数字组件有资格用于分发的上下文信号集合。也就是说,第一级lut能够基于上下文信号集合来键控。第一级的键能够是ug_request_key的散列,例如使用诸如sha256的散列函数。该键可以被截断为指定数量的比特,例如16比特、32比特或其他适当数量的比特。第一级lut中的每个键ug_request_key的值能够指示包括有资格用于包括ug_request_
key的上下文信号的数字组件请求的数字组件的数据的第二级lut的行。示例第一级lut如下表1所示。
40.键值sha256(ug_request_key)行
……


41.表1
42.第二级lut能够基于第一级lut中的用户组请求键ug_request_key与用户组标识符的组合来键控。第二级lut中的每行能够用于特定数字组件的特定选择值。例如,dsp 150能够针对相同的数字组件提交不同的选择值,其中每个选择值用于不同的上下文信号集合和/或不同的用户组标识符。因此,数字组件的选择值能够基于上下文和其他因素而变化。
43.dsp 150或数字组件提供者160能够将数字组件关联(例如链接或映射)到dsp 150或数字组件提供者想要将数字组件显示给的用户组。例如,dsp 150可能想要将与男子篮球鞋相关的数字组件显示给已经示出对篮球和/或鞋感兴趣的男性。在这个示例中,dsp 150能够向mpc集群130提供指示数字组件对应于包括已经示出对篮球和/或鞋感兴趣的男性的用户组的用户组标识符的数据。
44.在一些实施方式中,第二级lut中的行的键能够是基于用户组请求键ug_request_key和该行的数字组件的用户组标识符的组合生成的散列或代码。例如,键能够是该组合的基于散列的消息认证码(hmac),其能够被表示为hmac
sha256
(ug_request_key,ug_id)。用户组标识符ug_id能够基于用户组的内部用户组标识符与用户组的所有者(例如,拥有用户组的dsp、ssp或数字组件提供者)的域的组合。例如,用户组标识符ug_id能够是所有者域的etld 1和用户组的所有者的内部用户组标识符的数字摘要。etld 1是有效顶级域(etld)加上比公共后缀多一级的域。etld 1的示例是“example.com”,其中“.com”是顶级域。ug_id能够被截断为16字节或其他适当的数据大小。
45.继续前面的男子篮球鞋的示例,包括要显示给男子篮球鞋组中的用户的数字组件的信息的行的第二级查找键能够是用户组请求键ug_request_key与男子篮球鞋组的用户组标识符ug_id的组合。由于数字组件能够在不同的上下文中显示,所以第二级查找表能够包括数字组件(即男子篮球鞋组的用户组标识符ug_id)的多个行,每行具有不同的用户组请求键ug_request_key和不同的值。
46.第二级lut的每行的值能够是数字组件的选择值和数字组件的其他数据,例如,识别数字组件或能够从其下载数字组件的网络位置的元数据等。
47.该值能够是数字组件信息元素dc_information_element,其能够是具有选择值和元数据的字节数组。字节数组能够具有特定格式,客户端设备110的应用112或可信程序以及计算系统mpc1和mpc2能够解析该特定格式以获得选择值和元数据。示例第二级lut如下表2所示。
48.键值hmac(ug_request_key,ug_id){选择值,元数据}
……
49.表2
50.第二级lut将选择值映射到特定数字组件、特定用户组标识符ug_id以及由第一级
查找键ug_request_key限定的特定上下文信号集合。通过这样做,第二级lut指示数字组件的选择值有资格用于的数字组件槽的特定上下文。这允许dsp 150或数字组件提供者160指定用于由上下文信号和用户组成员资格限定的不同上下文的相同数字组件的不同选择值。当接收到指示数字组件将被显示给的用户是由特定用户组标识符ug_ig识别的特定用户组的成员的数字组件请求并且该数字组件将在由第一级查找键的上下文信号限定的特定上下文中被显示时,具有匹配的用户组标识符和匹配的第一级查找键的第二级lut中的任何选择值都是响应于该请求而被选择用于分发的候选。虽然在这个示例中使用了两级lut,但是也能够使用其他适当的数据结构。
51.dsp 150或数字组件提供者160能够为用户组发起一个或多个活动。例如,dsp 150能够为鞋制造商发起用于向特定用户组推销特定品牌的鞋的活动。为了宣传该活动,dsp 150能够提供与特定品牌的鞋相关(例如,上下文相关)的一个或多个数字组件。在这种情形下,每个活动能够用将该活动与dsp 150的其他活动区分开的唯一标识符(称为活动标识符)来识别。作为活动的一部分,能够向作为特定用户组的成员的用户提供数字组件。用户组和活动能够具有m:n关系,使得一个用户组能够与多个活动n相关联,并且一个活动能够针对多个用户组m被递送。dsp 150或数字组件提供者160能够在选择值和对应数字组件的元数据中包括活动的一个或多个活动标识符,对于该活动,该选择值和数字组件有资格由mpc集群130选择。
52.作为活动的一部分的数字组件的每个存储的选择值的元数据能够包括活动的通用活动标识符universal_campaign_id。通用活动标识符universal_campaign_id能够表示数字组件的来源。例如,通用活动标识符universal_campaign_id能够唯一地表示为数字组件提供选择值的实体(例如,dsp 150或数字组件提供者160)和/或触发将数字组件传输到客户端设备110的特定数字组件组(例如,活动)。在一些实施方式中,能够使用由活动标识符(例如,提供选择值的实体的内部活动标识符)和表示为hmac(campaign_identifier,域)的实体的域参数化的hmac来计算数字组件的通用活动标识符universal_campaign_id。在一些实施方式中,能够使用安全散列算法(sha-256)来实现hmac,该安全散列算法是具有256比特的摘要长度的加密散列函数,以生成散列的256比特(32字节)输出。在这样的示例中,hmac(campaign_identifier,域)生成数字组件的256比特唯一标识符作为通用活动标识符。实体的域能够是域的etld 1。使用通用活动标识符而不是内部活动标识符防止恶意方中断其他dsp的调步和数字组件分发资源利用过程。例如,以这种方式使用数字摘要防止恶意方提交合法活动的设定点、选择值等。
53.作为一个或多个用户组的一个或多个活动的一部分的每个选择值和对应数字组件能够与每个活动的用户组标识符-通用活动标识符对相关联。该对能够被表示为{ug_id,universal_campaign_id},其表示用户组的用户组标识符ug_id和活动的通用活动标识符universal_campaign_id。该对能够是存储在上述第二级lut中的选择值的元数据的一部分。
54.mpc集群130能够使用用于活动的反馈控制器来管理活动的数字组件被提供用于在客户端设备110处显示的速率。在一些实施方式中,mpc集群130使用pid控制器来管理数字组件被提供的速率。控制器能够使用秘密共享来实现,以防止计算系统mpc1和mpc2或其他实体以明文形式获得用户信息,例如用户组成员资格信息。例如,如果没有使用秘密共享来
保护,则花费的粒度资源、递送的展示和/或点击/转换数据可以使得计算系统mpc1和mpc2能够推断用户组成员资格数据。
55.如下面更详细描述的,mpc集群130能够从活动所有者(例如,dsp 150或数字组件提供者160)接收活动的调谐参数、设定点和数字组件分发资源(例如..预算)信息。这些数据中的一些或全部能够被接收为秘密份额。mpc集群130能够基于该数据来初始化pid控制器,并且基于例如展示速率、交互速率等的更新后的变量,以反复出现的方式,例如定期地,更新控制器的输出。mpc群集130能够使用该输出以在秘密份额中设置布尔调步选择器参数pacing_selector,该参数限定该活动是否满足该活动的调步合格条件。如果是,则包含在活动中的数字组件也满足调步合格条件。如果数字组件满足关于该数字组件的所有条件,包括调步合格条件,则该数字组件是有资格用于包括在数字组件选择过程中的合格数字组件。
56.通过基于对过程变量的更新来调整该调步选择器参数pacing_selector的值,mpc集群130能够控制活动的数字组件被分发的速率,例如,以确保数字组件在活动时间段期间被均匀分发和/或确保数字组件分发资源不会在活动时间段中过早耗尽。如下文更详细描述的,该调步选择器参数pacing_selector能够与另一参数(is_dc_a_candidate)组合使用,该另一参数基于一个或多个其他条件来限定数字组件及其对应选择值是否合格,该一个或多个其他条件例如是:与选择值相关联的用户组是否与数字组件将被提供给的用户的用户组相匹配;数字组件是否满足防止相同用户在一段时间内暴露于相同数字组件超过指定次数的频率控制条件;数字组件是否满足防止数字组件被显示给已经选择静音的用户的静音条件;和/或数字组件是否满足k-匿名条件。
57.除了贯穿本文的描述之外,可以向用户提供控件(例如,用户能够与之进行交互的用户接口元件),以允许用户选择是否以及何时本文描述的系统、程序或特征可以使得能够收集用户信息(例如,关于用户的社交网络、社交动作或活动、职业、用户的偏好或用户的当前位置的信息),以及是否从服务器向用户发送内容或通信。此外,在存储或使用某些数据之前,可以以一种或多种方式对其进行处置,使得去除个人可识别信息。例如,用户的身份可以被处置,使得不能确定用户的个人可识别信息,或者可以在获得位置信息的情况下使用户的地理位置一般化(例如城市、邮政编码或州级),使得不能确定用户的具体位置。因此,用户可以控制收集关于用户的什么信息、如何使用该信息以及向用户提供什么信息。
58.图2是用于选择用于在客户端设备处显示的数字组件的示例过程200的泳道图。过程200的操作能够例如由客户端设备110、mpc集群130中的计算系统mpc1和mpc2以及dsp 150来实现。过程200的操作也能够被实现为存储在一个或多个计算机可读介质上的指令,该一个或多个计算机可读介质可以是非暂时性的,并且由一个或多个数据处理装置对指令的指令能够使得一个或多个数据处理装置执行过程200的操作。尽管根据两个计算系统mpc集群130描述了过程200和下面的其他过程,但是具有多于两个计算系统的mpc集群也能够用于执行类似的过程。另外,过程200的操作能够由ssp 170来实现。
59.dsp 150向mpc集群130提供数字组件的选择值和选择标准(202)。在一些实施方式中,dsp 150经由ssp(为简洁起见,图2中未示出)向mpc集群130提供选择值和选择标准。如上所述,选择值能够指示数字组件提供者160愿意为显示或用户与数字组件的交互提供的量。mpc集群130能够存储从客户端设备110接收到的未来的数字组件请求的选择值和选择
标准。对于每个数字组件,dsp 150还能够上传该数字组件的附加数据,例如元数据。数字组件的附加数据(或选择标准)能够包括数字组件为了被包括在数字组件选择过程中而必须满足的一个或多个条件。例如,附加数据能够包括对应于数字组件的用户组的用户组标识符和/或包括数字组件的零个或多个活动中的每个活动的活动标识符。例如,dsp 15能够管理其中数字组件被分发给作为用户组的成员的用户的客户端设备110的活动。如上所述,数字组件的元数据能够包括{ug_id,universal_campaign_id}对。
60.数字组件的数据能够包括指示对于其而言数字组件合格的上下文的上下文选择信号,例如客户端设备110的位置、为应用112选择的口头语言、数字组件能够与其一起被显示的资源的统一资源定位符(url)和/或数字组件不能与其一起被显示的资源的排除url。数字组件的该数据还能够例如使用唯一标识符、能够从其获得数字组件的域和/或数字组件的其他适当数据来识别该数字组件。
61.在一些实施方式中,mpc集群130高速缓存或以其他方式存储针对数字组件请求而提供给mpc集群130的数字组件的选择值、选择标准和其他元数据。在该示例中,数字组件和选择值的上下文信号能够包括包含在该数字组件请求中的上下文信号。如上所述,选择值和元数据能够被存储在两级lut中。
62.客户端设备110接收内容(204)。例如,客户端设备110能够接收用于由web浏览器显示的电子资源(例如,网页)或用于由原生应用显示的应用内容。该内容能够包括一个或多个数字组件槽,该一个或多个数字组件槽包括在被执行时使得客户端设备110请求每个槽的数字组件的计算机可读代码,例如脚本。客户端设备110能够在客户端设备110的显示器上渲染内容。
63.客户端设备110识别用户组标识符集合(206)。用户组标识符集合能够是包括用户作为成员的用户组的用户组标识符。例如,用户组标识符集合能够是用户组列表中的用户组标识符。呈现内容或可信程序的应用112能够例如通过从客户端设备110的安全存储访问用户组列表来识别用户组标识符集合。
64.客户端设备110生成概率数据结构(208)。应用112或可信程序能够使用用户组标识符集合来生成概率数据结构。在一些实施方式中,概率数据结构是布谷鸟过滤器。例如,客户端设备110能够使用两个散列函数f1和f2来生成具有表格的布谷鸟过滤器。布谷鸟散列是一种散列法,它使用总共有(1 \ε)n个条目的两个(或更多个)表来存储n个项,例如用户组标识符,使得每个条目将包含最多一个项。另外,每个项,例如用户组标识符,将出现在由两个散列函数f1和f2之一定义的两个条目之一中,其输出是集合[(1 \ε)n]。与键k相关联的项将出现在第一个表中的位置f1(k)或第二个表中的位置f2(k)处。对于相当大的n个项(例如,n≥100),使用\ε=0.1就足够了,这意味着n个项能够使用布谷鸟散列法进行散列,其中组合的表大小为1.1n。在这些表达式中,ε可以被称为加载因子。
[0065]
为了使用布谷鸟过滤器构建稀疏私有信息检索数据结构,能够使用布谷鸟散列法将多达n个用户组标识符散列到两个(或更多)表中,这些表能够具有1.1n的组合大小或另一适当大小。所有空条目都能够用0比特字符串替换。为了查询具有键k的用户组标识符,用户组标识符(如果它存在于数据结构中)将出现在第一个表中的条目f1(k)或第二个表中的f2(k)处。使用表大小c=1.1n将得到1≤f1(ug_id),f2(ug_id)≤c。
[0066]
客户端设备110能够通过使用散列函数f1和f2两者为用户组标识符集合中的每个
用户组标识符计算用户组标识符的两个可能位置来生成布谷鸟过滤器。如果两个可能位置中的至少一个是空的,则客户端设备110能够将元素插入到空位置中,该空位置能够在任一表中,以完成针对该用户组标识符的插入过程。如果两个位置都被占用,则客户端设备110随机挑选一个位置,并将当前在该位置中的项与要插入的项交换。客户端设备110然后能够重新计算两个散列函数f1和f2,并再次尝试插入。重复该过程,直到对于用户组标识符集合中的每个用户组标识符,插入成功或者太多次尝试失败。在构建了布谷鸟过滤器之后,每个用户组标识符ug_id被存储在表的特定索引中。
[0067]
在这个示例中,客户端设备110生成分布式点函数,以将用户组标识符的列表传输到mpc集群130。这能够确保数据安全、用户隐私,并减少传输的数据大小。在其他示例中,布谷鸟过滤器或布谷鸟过滤器的秘密份额能够被提供给mpc集群130,如下所述。
[0068]
客户端设备110生成分布式点函数(210)。应用112或可信程序能够使用点函数来生成分布式点函数,针对包括用户作为成员的每个用户组一个分布式点函数。分布式点函数表示点函数的秘密份额。一般来说,点函数是函数fi:[n]

[n],其中当x!=i并且f(i)=1时,f(x)=0。点函数fi的秘密共享是两个函数gi:[n]

[n]和hi:[n]

[n],使得对于集合[n]中的所有x,fi(x)=gi(x) hi(x)。此外,给定函数hi或gi(但不是两者)的详细说明,不可能恢复原始函数fi。
[0069]
对于每个ug_id,需要点函数g
ug_id
,其能够被拆分成分布式点函数g
ug_id,1
和g
ug_id,2
,使得对于满足下面的关系式1和2。
[0070]
如果i=f1(ug_id),则g
ug_id
(i)=g
ug_id,1
(i) g
ug_id,2
(i)=ug_id,(1)
[0071]
否则g
ug_id
(i)=g
ug_id,1
(i) g
ug_id,2
(i)=0,
ꢀꢀ
(2)
[0072]
类似地,需要点函数h
ug_id
,其能够被分成分布式点函数h
ug_id,1
和h
ug_id,2
,使得对于满足下面的关系式3和4。
[0073]
如果i=f2(ug_id),则h
ug_id
(i)=h
ug_id,1
(i) h
ug_id,2
(i)=ug-id(3)
[0074]
否则h
ug_id
(i)=h
ug_id,1
(i) h
ug_id,2
(i)=0
ꢀꢀ
(4)
[0075]
也就是说,能够在多个可能的点(例如,多个可能的用户组标识符)上评估特定点函数的分布式点函数,但是除了包括用户作为成员并且为其生成分布式点函数的用户组的用户组标识符ug_id之外,结果总是零。分布式点函数具有非常小的数据大小,与发送其他加密形式的用户组标识符相比,该数据大小能够通过网络传输而不使用太多带宽并且具有较低的时延。
[0076]
对于给定用户组标识符ug_id、点函数f1和布谷鸟过滤器的对应第一表,客户端设备110生成用于计算系统mpc1的分布式点函数g
ug_id
,1和用于计算系统mpc2的分布式函数g
ug_id,2
。类似地,对于给定用户组标识符ug_id、点函数f2和布谷鸟过滤器的对应第二表,客户端设备110生成用于计算系统mpc1的分布式点函数h
ug_id,1
和用于计算系统mpc2的分布式点函数h
ug_id,2

[0077]
客户端设备110向mpc集群130传输包括分布式点函数的数字组件请求(212)。客户端设备110能够向计算系统mpc1传输包括每个分布式点函数g
ug_id,1
和每个分布式点函数h
ug_id,1
的数字组件请求。数字组件请求能够包括第一级查找键,例如sha256(ug_request_key)。客户端设备110能够基于数字组件请求的上下文信号来生成第一级查找键。例如,客户端设备110能够通过生成复合消息来生成第一级查找键,该复合消息包括上下文信号,诸
如选择的数字组件将与其一起被显示的资源的url、提交数字组件请求的客户端设备110的位置、将显示选择的数字组件的应用112的口头语言等。客户端设备110然后能够对复合消息应用散列函数,例如sha256函数,以生成第一级查找键。
[0078]
类似地,客户端设备110能够向计算系统mpc2传输包括每个分布式点函数g
ug_id,2
和每个分布式点函数h
ug_id,2
的数字组件请求。该数字组件请求还能够包括第一级查找键,例如sha256(ug_request_key)。由于上下文信号是相同的,所以对于发送到mpc集群130中的两个计算系统mpc1和mpc2的数字组件请求,第一级查找键能够是相同的。
[0079]
计算系统mpc1能够创建加性秘密份额的向量[m1]=[m
1,1
,...m
c,1
],其中对于1≤i≤c,m
i,1
=∑
ug_id g
ug_id,1
(i)。本文中使用括号来表示秘密的秘密份额。类似地,计算系统mpc2能够创建加性秘密份额的向量[m2]=[m
1,2
,...m
c,2
],其中对于1≤i≤c,m
i,2
=∑
ug_idgug_id,2
(i)。在这个示例中,秘密份额[m
i,1
]和[m
i,2
]是g
ug_id
(i)的加性秘密份额,并且[m1]和[m2]是m的两个加性秘密份额,即维数c的向量,其中mi=g
ug_id
(i)。可以使用shamir的秘密共享或另一种适当的秘密共享技术来生成秘密份额。计算系统mpc1和mpc2能够为点函数h
ug_id,1
(i)和h
ug_id,1
(i)生成相似的向量。
[0080]
mpc集群130使用分布式点函数来执行安全mpc过程,以基于包括客户端设备110的用户作为成员的用户组来选择数字组件(214)。这能够包括基于上下文,例如使用第一级查找键,来识别数字组件集合及其对应的有资格用于数字组件选择过程的选择值。这还能够包括基于每个数字组件的一个或多个条件,例如基于(i)数字组件具有与用户的用户组标识符中的一个相匹配的用户组标识符,以及(ii)调步选择器参数pacing_selector具有指定值,例如值一,从数字组件集合中识别作为用于选择的候选的合格数字组件。这还能够包括基于数字组件的选择值从候选数字组件中选择数字组件。这全部能够在计算系统mpc1或mpc2不以明文形式访问用户组标识符的情况下执行。用于使用安全mpc过程来选择数字组件的示例过程在图3中示出并在下面描述。
[0081]
mpc集群130向客户端设备110传输选择过程标识符和选择结果的秘密份额(216)。选择过程标识符能够唯一地识别为其生成了选择结果的数字组件选择过程。例如,计算系统mpc1和mpc2能够各自针对每个数字组件请求生成相应的选择过程标识符spid,计算系统mpc1和mpc2针对该每个数字组件请求执行选择过程以生成提供给客户端设备110的选择结果。如下面更详细描述的,选择过程标识符spid能够是随机数。
[0082]
mpc群集130还能够存储选择值的数据,这些选择值是由spid键控或以其他方式链接到spid的选择过程的一部分。例如,计算系统mpc1能够存储包括选择值的数据以及基于由计算系统mpc1为选择过程生成的spid1的键的表格或其他数据结构。类似地,计算系统mpc2能够存储包括选择值的数据以及基于由计算系统mpc2为选择过程生成的spid2的键的表格或其他数据结构。这使得mpc集群130能够基于从客户端设备110接收到的数据来更新活动的过程变量,如下面更详细描述的。
[0083]
选择结果能够是包括关于选择的数字组件的信息的字节数组的形式。例如,选择结果能够是包括第二lut中的数字组件的值(例如,数字组件的选择值和数字组件的元数据)的字节数组。计算系统mpc1和mpc2能够使用安全mpc过程来确定选择结果的秘密份额,如下面更详细描述的。计算系统mpc1能够向客户端设备110传输选择结果的第一秘密份额,并且计算系统mpc2能够向客户端设备110发送选择结果的第二秘密份额。为了防止计算系统
mpc1和mpc2知道选择的数字组件,能够防止计算系统mpc1和mpc2与彼此共享它们的选择结果的秘密份额。
[0084]
当使用两个表的布谷鸟过滤器时,mpc集群130能够提供两个选择结果的秘密份额,每个表一个。然而,检索两个数字组件的两个用户组列表选择值有助于选择值废弃。为了降低这种风险,mpc集群130能够使用另一种安全mpc技术来返回具有最高选择值的最多一个选择结果,如下所述。
[0085]
客户端设备110确定对应于选择结果的数字组件(218)。对于客户端设备110从计算系统mpc1和mpc2接收两个秘密份额的每个选择结果,客户端设备110能够从这两个秘密份额确定选择结果。例如,使用如下面更详细描述的加性秘密份额库,客户端设备110能够将选择结果的两个秘密份额相加在一起,以获得以明文形式的选择结果。这使得客户端设备110能够访问数字组件的选择值和数字组件的元数据,例如数字组件的身份、客户端设备110能够从其下载数字组件的位置等。
[0086]
客户端设备110能够显示数字组件(220)。例如,应用112能够显示具有在步骤204中接收到的内容的数字组件。在一些实施方式中,客户端设备110能够显示选择结果的数字组件。如果接收到两个选择结果,则客户端设备110(例如,应用112)能够选择具有最高选择值的数字组件,并显示选择的数字组件。
[0087]
在一些实施方式中,客户端设备110能够从mpc集群130基于用户组成员资格来请求数字组件。客户端设备110还能够基于来自ssp 170的上下文信号来请求数字组件。这些上下文信号能够包括与上述相同的上下文信号,以及可选的附加上下文信号,诸如资源的数字组件槽的数量、数字组件槽的类型、能够与资源一起显示的数字组件的类型和/或格式等。ssp 170能够基于上下文信号和数字组件的选择值来选择一个或多个数字组件,并且向客户端设备110提供选择的数字组件中的一个或多个(或识别数字组件的数据)和数字组件的选择值。客户端设备110然后能够从包括从mpc群集130接收到的选择结果的数字组件和由ssp 170选择的数字组件的数字组件集合中选择数字组件,以与资源一起显示。
[0088]
如果资源包括多个数字组件槽,则客户端设备110能够从mpc集群130和从ssp 170请求每个槽的相应数字组件。为了减少消耗的带宽和时延,客户端设备110能够一次为所有数字组件槽传输用户的分布式点函数。
[0089]
客户端设备110能够向mpc集群130传输一个或多个事件通知(222)。例如,假设从mpc集群130接收到的选择结果的数字组件由客户端设备110的应用112显示,应用112能够响应于显示数字组件而传输数字组件的展示通知。在另一个示例中,应用112能够响应于检测到用户交互,例如数字组件的选择/点击,传输用户交互通知。
[0090]
对于用户交互通知,应用112能够生成点击参数clicked的秘密份额,该点击参数是布尔参数,在数字组件被显示之后的指定持续时间内,如果用户与数字组件进行了交互,则该布尔参数能够具有值一,如果用户没有与数字组件进行交互,则该布尔参数能够具有值零。因此,在该示例中,任一值都指示数字组件被显示,但是值一能够指示用户与数字组件进行了交互。应用112能够向计算机系统mpc1发送包括从计算系统mpc1接收到的spid1和点击参数的第一秘密份额[clicked1]的第一通知。类似地,应用112能够向计算机系统mpc2发送包括从计算系统mpc2接收到的spid2和点击参数的第二秘密份额[clicked2]的第一通知。在另一个示例中,该通知能够单独地指示数字组件是否在客户端设备110处被显示,例
如,使用类似于点击参数clicked的秘密份额。
[0091]
mpc集群130更新由mpc集群130选择的数字组件所属的活动的过程变量(224)。例如,计算系统mpc1能够使用spid1来获得用于选择过程的存储数据,并且计算系统mpc2能够使用spid2来获得用于选择过程的存储数据。mpc集群130然后能够执行安全mpc过程,以更新由应用112显示的数字组件的活动的过程变量(例如,展示速率、交互速率、转换速率和/或资源消耗速率),如下面更详细描述的。
[0092]
尽管用于生成布谷鸟过滤器和分布式点函数的步骤在图2中被示为在接收内容之后被执行,但是客户端设备110能够在接收内容之前生成布谷鸟过滤器和分布式点函数。例如,客户端设备110能够定期地或响应于用户的用户组成员资格正在被更新,生成并高速缓存布谷鸟过滤器和分布式点函数。
[0093]
图3是用于选择用于分发给客户端设备的数字组件的示例过程300的泳道图。过程300的操作能够例如由mpc集群130中的计算系统mpc1和mpc2来实现。过程300的操作也能够被实现为存储在一个或多个计算机可读介质上的指令,该一个或多个计算机可读介质可以是非暂时性的,并且由一个或多个数据处理装置对指令的执行能够使得一个或多个数据处理装置执行过程300的操作。
[0094]
计算系统mpc1识别合格数字组件及其对应的选择值(302)。计算系统mpc1能够识别用于从客户端设备110接收到的数字组件请求的合格数字组件,例如,如上面参考图2所述。对于包括客户端设备的用户作为成员的每个用户接口组,数字组件请求能够包括由客户端设备110使用散列函数f1为用户接口组标识符ug_id生成的分布式点函数g
ug_id,1
。如果使用两个表的布谷鸟过滤器,则数字组件请求还能够包括由客户端设备110使用散列函数f2为用户接口组标识符ug_id生成的分布式点函数h
ug_id,1
。数字组件请求还能够包括基于数字组件请求的上下文信号而生成的第一级查找键,例如sha256(ug_request_key)。
[0095]
计算系统mpc1能够使用数字组件请求的第一级查找键来识别合格数字组件。计算系统mpc1能够访问第一级lut,并且使用第一级查找键来识别第二级lut的包括对于由第一级查找键表示的上下文信号集合而言有资格被显示的数字组件的信息(例如,已经接收到该数字组件的选择值)的行。例如,如上所述,第二级lut的每行包括数字组件的信息和基于上下文信号集合的第二级查找键。因此,计算系统mpc1能够使用第一级查找键来识别第二级lut的具有与由在数字组件请求中接收到的第一级查找键定义的上下文信号集合相匹配的上下文信号集合的行。这些行包括对于由在数字组件请求中接收到的第一级查找键定义的上下文而言有资格被显示或具有合格选择值的数字组件的信息。
[0096]
计算系统mpc2识别合格数字组件及其对应的选择值(304)。计算系统mpc2能够识别用于从客户端设备110接收到的数字组件请求的合格数字组件。对于包括客户端设备的用户作为成员的每个用户接口组,该数字组件请求能够包括由客户端设备110使用散列函数f1为用户接口组标识符ug_id生成的分布式点函数g
ug_id,2
。如果使用两个表的布谷鸟过滤器,则数字组件请求还能够包括由客户端设备110使用散列函数f2为用户接口组标识符ug_id生成的分布式点函数h
ug_id,2
。数字组件请求还能够包括基于数字组件请求的上下文信号生成的第一级查找键,例如sha256(ug_request_key)。
[0097]
由计算系统mpc2接收到的数字组件请求的第一级查找键能够与由计算系统mpc1接收到的第一级查找键相同。每个分布式点函数g
ug_id,2
能够基于与由计算系统mpc1接收到的
对应分布式点函数相同的分布式点函数g
ud_id
来生成。也就是说,对于包括用户作为成员的用户组的用户组标识符ud_id,客户端设备110能够使用散列函数f1来生成数字组件请求的分布式函数g
ug_id,1
和g
ug_id,2
。类似地,对于包括用户作为成员的用户组的用户组标识符ud_id,客户端设备110能够使用散列函数f2来生成数字组件请求的分布式函数h
ug_id,1
和h
ug_id,2

[0098]
为简洁起见,过程300的剩余步骤根据响应于根据散列函数f1的分布式点函数的数字组件请求而选择用于分发给客户端设备110的数字组件来描述。然而,能够对散列函数f2的分布式点函数执行相同的步骤。这能够得到两个选择的数字组件,并且mpc集群130能够执行附加操作来选择两个数字组件中的一个,如下所述。
[0099]
计算系统mpc2能够使用数字组件请求的第一级查找键来识别合格选择值。计算系统mpc2能够访问第一级lut,并且使用第一级查找键来识别第二级lut的包括对于由第一级查找键表示的上下文信号集合而言有资格被显示的数字组件的信息(例如,已经接收到该数字组件的选择值)的行。如上所述,每个计算系统mpc1和mpc2能够维护包括相同信息的相应的两级lut。
[0100]
针对每个合格数字组件,计算系统mpc1和mpc2响应于数字组件请求而确定该数字组件及其选择值是否是被选择用于分发给客户端设备110的候选(306)。候选数字组件是满足数字组件的一个或多个条件的合格数字组件。在该示例中,候选数字组件是合格数字组件,其(i)具有与用户的用户组标识符相匹配的用户组标识符,例如包括用户作为成员的用户组的用户组标识符,以及(ii)具有具备指定值(例如值一)的调步选择器参数pacing_selector。如上所述,包括在活动中的每个选择值和对应的数字组件能够被链接到活动的用户组标识符-通用活动标识符对{ug_id,universal_campaign_id}。在其他示例中,用户组成员资格条件能够用另一条件来替换,例如k-匿名条件、静音条件等。
[0101]
对于用户组成员资格合格性,如果作为第二级查找键的一部分的其用户组标识符ug_id和/或与第二级lut中的行的数字组件相关联的元数据与用户的用户组标识符中的一个相匹配,并且调步选择器参数pacing_selector具有指定值,例如值一,则该行的数字组件是用于选择的候选。从概念上讲,为了基于使用两个表的布谷鸟过滤器来表示用户组成员资格的用户的用户组成员资格来确定数字组件是否是候选,计算系统能够确定第二级查找键的用户组标识符ug_id是否与两个布谷鸟过滤器位置之一中的两个标签之一相匹配。
[0102]
计算系统mpc1和mpc2能够使用利用秘密份额的安全mpc技术来识别候选数字组件,使得计算系统mpc1和mpc2都不知道哪些数字组件是候选数字组件或包括用户作为成员的用户组。为此,计算系统mpc1计算每个合格数字组件的基于用户组的候选参数is_dc_a_ug_candidate的第一秘密份额。类似地,计算系统mpc2计算每个合格数字组件的基于用户组的候选参数is_dc_a_ug_candidate的第二秘密份额。候选参数is_dc_a_ug_candidate能够是布尔值(例如,零或一),该布尔值基于数字组件的用户组与包括用户作为成员的用户组的用户组标识符相匹配来指示数字组件是否有资格成为候选。
[0103]
数字组件及其选择值的基于用户组的候选参数is_dc_a_ug_candidate的第一秘密份额能够被表示为[is_dc_a_ug_candidate
sv,1
],并且选择值的基于用户组的候选参数is_dc_a_candidate的第二秘密份额能够被表示为[is_dc_a_candidate
sv,2
]。下标“sv”指示秘密份额对应于给定选择值,该给定选择值对应于给定数字组件。链接到用户组标识符
ug_id的数字组件的基于用户组的候选参数的第一秘密份额是布尔的秘密份额,其等同于ug_id==[g
ug_id,1
(f1(ug_id))]。用户组标识符ug_id的基于用户组的候选参数的第二秘密份额是布尔的秘密份额,其等同于ug_id==[g
ug_id,1
(f1(ug_id))]。符号“==”表示被表示为秘密份额的秘密消息与明文值或被表示为秘密份额的另一个秘密消息之间的相等性测试,如果两个值相等,则其为真(或1),如果值不相等,则其为假(或0)。
[0104]
计算系统mpc1和mpc2能够使用安全mpc技术来计算散列函数f1的秘密份额[is_dc_a_ug_candidate
sv,1
]和[is_dc_a_ug_candidate
sv,2
],其中在计算系统mpc1与mpc2之间进行一次或多次往返,以评估ug_id==[g
ug_ia,1
(f1(ug_id))]和ug_id==[g
ug_id,1
(f1(ug_id))]的相等性表达式。也就是说,计算系统mpc1和mpc2能够基于作为数字组件请求的一部分从客户端设备110接收到的每个用户组标识符的分布式点函数g
ug_id,1
和g
ug_id,2
,来确定对应于数字组件的存储的选择值的每个用户组的秘密份额[is_dc_a_ug_candidate
sv,1
]和[is_dc_a_candidate
sv,2
]。
[0105]
计算系统mpc1和mpc2能够使用支持下面表3中示出的操作的秘密共享技术或秘密共享库。支持这些操作的一个示例秘密共享技术是通过私有信息聚合的安全性(sepia)。
[0106][0107]
表3
[0108]
计算系统mpc1和mpc2还能够基于包括数字组件的活动的基于用户组的候选参数is_dc_a_ug_candidate
sv
的秘密份额和调步选择器参数pacing_selector
sv
的秘密份额,针对每个合格数字组件计算总体候选参数is_dc_overall_candidate
sv
的秘密份额。数字组件的总体候选参数is_dc_overall_candidate
sv
基于与选择的数字组件将被提供给的用户的用户组相匹配的数字组件的用户组标识符及其对应的用户组,以及基于包括数字组件的活动的调步参数pacing_selector
sv
,来限定数字组件及其选择值最终是否有资格被选择。
[0109]
从概念上讲,选择值的总体候选参数is_dc_overall_candidate
sv
能够使用下面的关系式5来计算。
[0110]
is_dc_overall_candidate
sv
=is_dc_a_ug_candidate
sv
×
pacing_selector
sv
ꢀꢀꢀꢀ
(5)
[0111]
在秘密份额中,计算系统mpc1和mpc2能够使用往返远程过程调用(rpc)来计算总体候选参数is_dc_overall_candidate
sv
]的秘密份额[is_dc_overall_candidate
sv,1
]和[is_dc_overall_candidate
sv,2
]。在计算结束时能够由计算系统mpc1持有的第一秘密份额[is_
dc_overall_candidate
sv,1
]能够使用下面的关系式6来计算。类似地,在计算结束时能够由计算系统mpc1持有的第二秘密份额[is_dc_overall_candidate
sv,2
]能够使用下面的关系式7来计算。这两个关系式能够作为使用rpc的相同mpc过程的一部分通过获取关系式右侧的四个值并生成两个秘密份额[is_dc_overall_candidatesv,1]和[is_dc_overall_candidatesv,2]来计算。
[0112]
[is_dc_overall_candidate
sv,1
]=[is_dc_a_ug_candidate
sv,1
]
×
[pacing_selector
sv,1
]
ꢀꢀ
(6)
[0113]
[is_dc_overall_candidate
sv,2
]=[is_dc_a_ug_candidate
sv,2
]
×
[pacing_selector
sv,2
]
ꢀꢀ
(7)
[0114]
这些计算能够将布尔值真和假分别转换为值零和一。这些计算还将布尔and运算转换为乘法运算,因为秘密共享技术能够支持整数运算,但可能不支持布尔运算。
[0115]
计算系统mpc1确定数字组件的选择值的顺序(308)。类似地,计算系统mpc2确定数字组件的选择值的顺序(310)。这两个顺序应当是完全相同的,因为排序过程的输入在两个计算系统mpc1和mpc2上是相同的。每个计算系统mpc1和mpc2能够在其第二级lut中确定选择值的顺序。该顺序能够包括第二级lut中的所有选择值,包括候选选择值和不是候选的选择值。顺序能够是从最高选择值到最低选择值。在一些实施方式中,用于顺序的选择值能够是例如在与dsp 150和/或ssp 170的任何共享之后将被提供给将与选择的数字组件一起显示的资源的发布者的值。由于选择值是以明文形式,所以计算系统mpc1和mpc2不必执行任何往返计算来对选择值进行排序。代替地,每个计算系统mpc1和mpc2能够独立地对其第二级lut的选择值进行排序。如果选择值作为秘密份额被存储在每个计算系统mpc1和mpc2处,其中每个计算系统mpc1和mpc2具有每个选择值的相应秘密份额,则计算系统mpc1和mpc2能够使用往返计算来执行安全mpc过程以对选择值进行排序。如果在两个或更多个选择值之间存在联系,则计算系统mpc1和mpc2能够使用对应于这些选择值的数字组件的其他元数据来确定性地断开该联系。
[0116]
计算系统mpc1和mpc2确定每个候选数字组件的累加值的秘密份额(312)。从概念上讲,给定数字组件的累加值表示从顺序顶部到给定数字组件的选择值的合格候选数字组件的总数,如果给定数字组件是候选,则包括给定数字组件的选择值。该概念被示出在下面的表4中。
[0117]
排序后的选择值is_dc_overall_candidate累加值(acc)累加值是否等于1?最高000第二高111第三高011第四高120
…………
[0118]
表4
[0119]
在一些实施方式中,给定数字组件的累加值表示从顺序顶部到给定数字组件但不包括给定数字组件的候选数字组件的总数。在这个示例中,第四列将表示累加值是否等于零而不是一。在任一情况下,每个数字组件的累加值指示该数字组件在候选数字组件的排序的顺序中的位置,候选数字组件是基于跟与用户的用户组标识符相匹配的用户组标识符
相关联的数字组件的用于选择的候选。
[0120]
从概念上讲,在该表4中,随着从顺序的顶部前进到顺序的底部,对于总体候选参数is_dc_overall_candidate等于一的每个数字组件,累加值(acc)递增。如下所述,累加值acc的计算在秘密份额中执行。例如,具有最高选择值的数字组件的累加值acc为零,因为最高选择值的总体候选参数is_dc_overall_candidate等于零。第二数字组件的累加值acc是一,因为第二数字组件的总体候选参数is_dc_overall_candidate等于一,并且没有一个高于第二高选择值的选择值的总体候选参数is_dc_overall_candidate等于一。向下移动顺序,第三高选择值的总体候选参数is_dc_overall_candidate是零,因此第三数字组件的累加值acc不从第二数字组件的累加值acc递增。由于第四高选择值的总体候选参数is_dc_overall_candidate是一,所以第四数字组件的累加值acc从第三高选择值的累加值acc递增一。因此,第四数字组件的累加值acc等于二,因为有两个数字组件具有从最高选择值到第四高选择值(包括最高选择值和第四高选择值)的总体候选参数is_dc_overall_candidate。
[0121]
使用该表,计算系统mpc1和mpc2将选择对应于选择值的数字组件以用于分发给客户端设备110,对于该选择值,总体候选参数is_dc_overall_candidate的值为一并且累加值acc的值为一,如表4的第四列所示。这表示对应于总体候选参数is_dc_overall_candidate的值为一的最高排序选择值的数字组件。由于总体候选参数is_dc_overall_candidate处在计算系统mpc1和mpc2的秘密份额中,以维护用户隐私并确保用户数据不被泄露,所以计算系统mpc1和mpc2确定每个数字组件的累加值acc的秘密份额,并使用往返计算来确定哪个数字组件具有等于一的累加值acc和等于一的总体候选参数is_dc_overall_candidate。
[0122]
在取决于秘密共享算法的一些实施方式中,计算系统mpc1和mpc2能够独立地确定每个数字组件的累加值acc的它们的秘密份额,而不需要任何往返计算。例如,针对每个数字组件,计算系统mpc1能够通过按照从最高到最低的顺序遍历所有选择值并沿路对选择值的总体候选参数is_dc_overall_candidate进行求和来确定累加值acc的第一份额[acc
ug_id,1
],如上面参考表4所述。类似地,针对每个数字组件,计算系统mpc2能够通过按照从最高到最低的顺序遍历所有选择值并沿路对选择值的总体候选参数is_dc_overall_candidate进行求和来确定累加值acc的第二份额[acc
ug_id,2
]。
[0123]
计算系统mpc1和mpc2针对每个数字组件确定指示累加值是否具有指定值的结果的秘密份额(314)。指定值能够是值一,如表4的第3列和第4列所示。如上所述,累加值为一并且总体候选参数is_dc_overall_candidate为一的数字组件是候选数字组件的选择值当中的最高选择值。
[0124]
计算系统mpc1和mpc2能够参与多轮计算,例如,多个rpc,作为安全mpc过程的一部分,以根据每个数字组件的秘密份额来计算相等性运算acc
sv
==1。在这个过程结束时,对于每个数字组件,计算系统mpc1具有结果acc
sv
==1的一个秘密份额,而对于每个数字组件,计算系统mpc2具有结果acc
sv
==1的另一个秘密份额。
[0125]
计算系统mpc1和mpc2针对每个数字组件确定获胜者参数is_dc_the_winner
sv
的秘密份额(316)。计算系统mpc1和mpc2能够基于每个数字组件的累加值acc
sv
==1的秘密份额和每个数字组件的总体候选参数is_dc_overall_candidate
sv
的秘密份额来确定获胜者参
数is_dc_the_winner
sv
。每个数字组件的获胜者参数is_dc_the_winner
sv
能够是布尔值,其指示该数字组件是否是选择过程的获胜者,例如,该数字组件是否响应于该数字组件请求而被选择用于分发给客户端设备110。
[0126]
在一些实施方式中,计算系统mpc1和mpc2能够执行秘密份额乘法协议,以针对每个选择值计算秘密份额方面的获胜者参数is_dc_the_winner
sv
==(is_dc_a_candidate
sv
×
(acc
sv
==1))。这需要计算系统mpc1与mpc2之间的一个rpc以将两个秘密份额进行相乘。在该mpc过程结束时,计算系统mpc1具有结果is_dc_the_winner
sv
的一个秘密份额,其被表示为[is_dc_the_winner
sv,1
]=[is_dc_overall_candidate
sv,1
]x([acc
sv,1
]==1)。类似地,计算系统mpc2具有结果is_dc_the_winner
sv
的另一个秘密份额,其被表示为[is_dc_the_winner
sv,2
]=[is_dc_overall_candidate
sv,2
]x([acc
sv,2
]==1)。注意,对于所有数字组件,至多一个数字组件具有等于一的获胜者参数is_dc_the_winner
sv
,其是被选择用于分发给客户端设备110的数字组件。所有其他的都等于零。
[0127]
计算系统mpc1生成选择过程标识符spid1(318)。选择过程标识符spid1唯一地识别用于响应于接收到的数字组件请求而选择数字组件的当前选择过程。选择过程标识符spid1能够是随机数。
[0128]
计算系统mpc2生成选择过程标识符spid2(320)。选择过程标识符spid2唯一地识别用于响应于接收到的数字组件请求而选择数字组件的当前选择过程。选择过程标识符spid2能够是随机数。
[0129]
计算系统mpc1存储由选择过程标识符spid1键控的获胜参数的第一秘密份额(322)。例如,计算系统mpc1能够利用选择过程标识符spid1的键或其他引用将获胜参数的第一秘密份额存储在表或其他数据结构中。计算系统mpc1还能够为获胜参数的每个第一秘密份额存储对获胜参数的第一秘密份额所对应的数字组件和对应选择值的引用。
[0130]
计算系统mpc2存储由选择过程标识符spid2键控的获胜参数的第二秘密份额(324)。例如,计算系统mpc2能够利用选择过程标识符spid2的键或其他引用将获胜参数的第二秘密份额存储在表或其他数据结构中。计算系统mpc2还能够为获胜参数的每个第二秘密份额存储对获胜参数的第二秘密份额所对应的数字组件和对应选择值的引用。计算系统mpc1和mpc2能够使用选择过程标识符spid1和spid2以及获胜参数的秘密份额,并更新测量的过程变量,如参考图4更详细描述的。
[0131]
在一些实施方式中,计算系统mpc1和mpc2分别用对mpc1和mpc2保密的秘密密钥来加密获胜参数的秘密份额。计算系统mpc1和mpc2然后能够将加密结果存储在返回给应用112的响应中。应用112在展示通知中将加密结果发送回mpc集群130。这种替代实施方式应当确保获胜参数的加密秘密份额足够小,以避免浪费大量带宽。
[0132]
计算系统mpc1和mpc2计算选择结果(326)。计算系统mpc1和mpc2能够基于选择值的获胜者参数和选择值的数字组件信息元素dc_information_element或选择值本身来计算选择结果。如上所述,数字组件的数字组件信息元素dc_information_element能够包括数字组件的选择值和数字组件的其他数据。
[0133]
从概念上讲,计算系统mpc1和mpc2能够使用下面的关系式8来计算选择结果result
f1

[0134]
[0135]
也就是说,计算系统mpc1和mpc2能够跨所有数字组件确定获胜者参数isdc_the_winner
sv
和数字组件信息元素dc_information_element
sv
的乘积之和。在这个示例中,如果对于具有与用户的用户组标识符相匹配的用户组标识符或者将具有等于is_dc_the_winner
sv
等于一的选择的数字组件的数字组件信息元素dc_information_element的值的数字组件没有高速缓存的选择值,则选择结果result
f1
将具有值零。在另一个示例中,数字组件信息元素dc_information_element能够在关系式8中用数字组件的选择值来替换。在这个示例中,如果对于具有与用户的用户组标识符相匹配的用户组标识符或者将具有等于is_dc_the_winner
sv
等于一的选择的数字组件的选择值的值的数字组件没有高速缓存的选择值,则选择结果result
f1
将具有值零。
[0136]
为了在秘密份额中执行计算,计算系统mpc1获取所有高速缓存的选择值,并将选择值的数字组件信息元素dc_information_element
sv
乘以获胜者参数的第一秘密份额[is_dc_the_winner
sv,1
],该选择值能够是以明文形式。计算系统mpc1然后能够确定这些乘积之和,并将和返回给提交数字组件请求的客户端设备110。也就是说,计算系统mpc1能够使用下面的关系式9来确定和作为结果的第一份额
[0137][0138]
计算系统mpc2能够执行类似的计算以使用下面的关系式10来确定结果的第二份额
[0139][0140]
计算系统mpc1向客户端设备110发送选择结果的第一份额和选择过程标识符spid1(328)。类似地,计算系统mpc2向客户端设备110发送选择结果的第二份额和选择过程标识符spid2(330)。应用112然后能够使用两个秘密份额和例如在采用了加性秘密共享算法的情况下通过确定秘密份额的和,来重构以明文形式的选择结果result
f1
。如果选择结果result
f1
具有值零,则mpc群集130没有识别出包括用户作为成员的用户组的数字组件。否则,选择结果result
f1
具有等于数字组件信息元素dc_information_element的值,应用112能够解析数字组件信息元素dc_information_element以获得数字组件的选择值和元数据。如上所述,应用112然后能够显示该数字组件,或者使用该数字组件和从ssp 170接收到的其他数字组件来执行选择过程。
[0141]
在两个表的布谷鸟过滤器实施方式中,应用112能够接收两个选择结果,针对每个散列函数f1和f2一个。在这个示例中,应用112能够从包括这些数字组件和从ssp 170接收到的任何数字组件两者的数字组件集合中选择数字组件。
[0142]
在一些实施方式中,应用112能够执行由mpc集群130选择的数字组件的用户组与包括用户作为成员的用户组相匹配的最终验证。例如,每个数字组件的数字组件信息元素dc_information_element能够包括该数字组件的用户组标识符。应用112能够将数字组件信息元素dc_information_element的用户组标识符与用户的用户组列表进行比较。如果不存在匹配,则应用112能够从选择过程中排除数字组件。如果存在匹配,则应用112能够在选择过程中包括数字组件。
[0143]
如上所述,从mpc集群130接收两个选择结果能够便于选择值废弃。为了降低这种
风险,mpc集群130能够执行仅返回一个选择结果的过程。
[0144]
在一个表的布谷鸟过滤器实施方式中,每个用户组标识符ug_id能够出现在两个地方中,它们的索引是f1(ug_id)和f2(ug_id)。设m表示一个表的布谷鸟过滤器,并且mi表示表中的第i个元素的值。如果或者则具有用户组标识符ug_id的数字组件的候选参数is_dc_a_ug_candidate
sv
为真。该mpc群集130能够使用下面的关系式11或12来计算数字组件的候选参数is_dc_a_candidate
sv

[0145][0146][0147]
关系式11能够包括两个能够被并行执行的相等性测试。关系式12能够需要一个相等性测试和一个乘法。当使用安全mpc过程来在秘密份额上执行这些运算时,乘法需要较少的计算和一次往返,但是在概率解决方案中,相等性测试能够需要更多的计算和四次往返。因此,关系式11能够比关系式12少需要一次往返,但是需要更多的计算。
[0148]
计算系统mpc1能够基于关系式11,使用下面的关系式13来在秘密份额上计算数字组件的候选参数is_dc_a_candidate
sv
的第一秘密份额。
[0149]
[is_dc_a_candidate
sv,1
]=(ug_id==[g
ug_id,1
(f1(ug_id))]) (ug_id==[g
ug_id,1
(f2(ug_id))])
ꢀꢀ
(13)
[0150]
类似地,计算系统mpc2能够基于关系式12,使用下面的关系式14来在秘密份额上计算数字组件的候选参数is_dc_a_candidate
sv
的第二秘密份额。
[0151]
[is_dc_a_candidate
sv,2
]=(ug_id==[g
ug_id,2
(f1(ug_id))]) (ug_id==[g
ug_id,2
(f2(ug_id))])
ꢀꢀ
(14)
[0152]
替代地,计算系统mpc1能够基于关系式12,使用下面的关系式15来在秘密份额上计算数字组件的候选参数is_dc_a_candidate
sv
的第一秘密份额。
[0153]
[is_dc_a_candidate
sv,1
]=(ug_id-[g
ug_id,1
(f1(ug_id))])
×
(ug_id-[g
ug_id,1
(f2(ug_id))])==0
ꢀꢀ
(15)
[0154]
计算系统mpc2能够基于关系式13,使用下面的关系式16来在秘密份额上计算数字组件的候选参数is_dc_a_candidate
sv
的第二秘密份额。
[0155]
[is_dc_a_candidate
sv,2
]=(ug_id-[g
ug_ia,2
(f1(ug_id))])
×
(ug_id-[g
ug_id,2
(f2(ug_id))])==0
ꢀꢀ
(16)
[0156]
mpc群集130然后能够使用与图3的过程300类似的过程来计算选择结果result的秘密份额。特别地,计算系统mpc1和mpc2能够基于数字组件的顺序和数字组件的候选参数针对每个数字组件分别计算累加值acc的秘密份额[acc
sv,1
]和[acc
sv,2
]。
[0157]
计算系统mpc1和mpc2能够基于数字组件的总体候选参数和数字组件的累加值是否等于一(或零,取决于实施方式)针对每个数字组件分别计算获胜者参数is_dc_the_winner的秘密份额[is_dc_the_winner
sv,1
]和[is_dc_the_winner
sv,2
]。
[0158]
计算系统mpc1和mpc2能够使用下面的关系式17和18来计算选择结果result的秘密份额[result1]和[result2]。
[0159]
[result1]=∑
sv
([is_dc_the_winner
sv,1
]
×
dc_information_element
sv
)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(17)
[0160]
[result2]=∑
sv
([is_dc_the_winner
sv,2
]
×
dc_information_element
sv
)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(18)
[0161]
计算系统mpc1能够将选择结果的第一份额[result1]返回给应用112,并且计算系统mpc2能够将选择结果的第二份额[result2]返回给应用112。如上所述,应用112然后能够使用这两个秘密份额来重构选择结果result。
[0162]
以上描述将值为0或1的秘密整数的秘密份额之间的乘法与计算机逻辑and相关。以上描述还将1减去值为0或1的秘密整数的秘密份额与计算机逻辑not相关。在一些实施方式中,能够采用替代解决方案来评估关于秘密份额的逻辑表达式。例如,为了计算值为0或1的秘密整数的若干加性秘密份额的逻辑and,mpc服务器能够将那些加性秘密份额的和与秘密份额的数量进行比较。又例如,为了计算以秘密份额作为输入的任意逻辑表达式,mpc服务器能够采用真值表方法,即,计算系统mpc1能够构建包含由mpc2持有的输入秘密份额的每个可能组合的一行的真值表。计算系统mpc1随机地选择结果的秘密份额,其被表示为[result1]。对于每一行,计算系统mpc1能够将其输入秘密份额与由mpc2持有的推测输入秘密份额进行组合,从而以明文形式重构逻辑表达式的输入,然后评估逻辑表达式的结果。对于每一行,计算系统mpc1将结果拆分成两个秘密份额,其中一个是[result1],另一个是[result2]。计算系统mpc1然后将[result2]写入到真值表中的行。在计算系统mpc1完成对真值表的构建之后,计算系统mpc2能够启动不经意传输扩展(ote)来撷取真值表中对应于由mpc2持有的输入秘密份额的行。撷取结果是[result2]。在上述过程结束时,计算系统mpc1和mpc2分别持有[result1]和[result2],它们是逻辑表达式结果的秘密份额。计算系统mpc1不知道[result2]的值,并且计算系统mpc2不知道[result1]的值。在一些实施方式中,计算系统mpc1和mpc2能够通过构建乱码电路来评估逻辑表达式以确定is_dc_a_candidate
sv,1
和is_dc_a_candidate
sv,2

[0163]
图4是示出了使用反馈控制器来确定调步选择器参数的秘密份额的示例过程400的泳道图。过程400的操作能够例如由mpc集群130中的计算系统mpc1和mpc2来实现。过程400的操作也能够被实现为存储在一个或多个计算机可读介质上的指令,该一个或多个计算机可读介质可以是非暂时性的,并且由一个或多个数据处理装置对指令的执行能够使得一个或多个数据处理装置执行过程400的操作。在这个示例中,反馈控制器是pid控制器。
[0164]
一般来说,pid控制器是使用误差值来确定将测量变量驱动向设定点的输出的反馈控制器,该误差值是目标设定点与测量变量之间的差异。在对数字组件到客户端设备的分发进行调步的上下文中,活动的设定点能够是展示速率、交互速率、转换速率和/或资源消耗速率(例如,预算花费速率)。类似地,测量变量能够是活动的在给定时间段内的展示速率、交互速率、转换速率和/或资源消耗速率。给定时间段能够是从活动开始的开始时间直到当前时间。
[0165]
pid控制器使用调谐参数来确定如何基于随时间测量的过程变量来调整输出。这些调谐参数包括比例项、积分项和微分项,分别用p、i和d表示。比例参数、积分参数和微分参数能够分别被显示为k
p
、ki和kd。
[0166]
能够使用重复循环来实现pid控制器,其中针对每个时间变化dt来计算以下参数:
[0167]
误差=设定点-测量变量
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(19)
[0168]
积分=积分 误差
×
dt
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(20)
[0169][0170]
输出=(k
p
×
误差) (ki×
积分) (kd×
微分)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(22)
[0171]
先前误差=误差
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(23)
[0172]
为了保护用户隐私并防止访问用户组成员资格信息,mpc集群130能够使用安全mpc过程和秘密共享针对每个活动实现pid控制器。
[0173]
计算系统mpc1接收pid控制器的调谐参数以用于控制活动的数字组件的调步(402)。类似地,计算系统mpc2接收pid控制器的调谐参数(404)。活动的所有者,例如数字组件提供者的dsp,能够向计算系统mpc1和mpc2提供调谐参数k
p
、ki和kd。在另一个示例中,例如,如果没有提供定制的调谐参数,则mpc集群130能够使用默认的调谐参数。如果调谐参数是敏感的,使得它们不应当被披露给计算系统mpc1和mpc2或者维护计算系统mpc1和mpc2的实体,则所有者能够向每个计算系统mpc1和mpc2发送每个调谐参数的相应秘密份额。
[0174]
计算系统mpc1接收活动的设定点数据(406)。类似地,计算系统mpc2接收活动的设定点数据(408)。设定点数据能够包括:设定点参数setpoint,其能够是展示速率,例如,sp
impression
=r
impression
(t),交互速率,例如,sp
interaction
=r
interaction
(t),或资源消耗速率,例如,sp
resource
=r
resource
(t),以及时间单位,例如,n秒。例如,展示速率设定点能够是每天(或其他时间段)10次(或另一数量)的活动的数字组件的展示。如上所述,每个活动能够具有通用活动标识符campaign_uuid。
[0175]
在一些实施方式中,针对该活动,设定点数据能够包括数字组件分发资源的总量、该活动的数字组件的展示的目标数量、和/或该活动的用户与数字组件的交互的目标数量。设定点数据还能够包括活动的指定时间范围。在这个示例中,mpc集群130能够确定设定点速率(例如,展示速率)。
[0176]
在一些实施方式中,为了防止恶意方破坏活动,活动的所有者能够对设定点数据和/或调谐参数k
p
、ki和kd进行数字签名。在该示例中,计算系统mpc1和mpc2能够在使用pid控制器的设定点数据和/或调谐参数之前验证数字签名。
[0177]
为简洁起见,过程400的剩余部分根据展示速率设定点和测量变量来描述。因此,设定点参数setpoint能够是sp
resource
=r
resource
(t)。通过替换设定点和测量变量,能够将类似的过程用于交互速率和资源消耗速率。
[0178]
计算系统mpc1和mpc2初始化用于活动的pid控制器(410)。为了初始化pid控制器,计算系统mpc1能够将活动的先前误差参数的第一秘密份额[previous_error
campaign,impression,1
]初始化为零[01]。计算系统mpc1还能够将活动的积分参数的第一秘密份额[integral
campaign,impression,1
]初始化为零[01]。
[0179]
类似地,计算系统mpc2能够将活动的先前误差参数的第一秘密份额[previous_error
campaign,impression,2
]初始化为零[02]。计算系统mpc2还能够将活动的积分参数的第一秘密份额[integral
campaign,impression,2
]初始化为零[02]。
[0180]
计算系统mpc1更新测量的过程变量(412)。类似地,计算系统mpc2更新测量的过程变量(414)。由于用于更新过程变量的过程对于不同的过程变量能够不同,所以提供了针对展示速率、交互速率和资源消耗速率的更新过程。展示、用户交互和资源消耗的过程变量能够分别被表示为pv
universal_campaign_id,impression
、pv
universal_campaign_id,interaction

pv
universal_ampaign_id,resource

[0181]
如以上参考图2所述,在数字组件已经在客户端设备110上被显示之后,客户端设备110能够向mpc集群130提供通知。对于数字组件,计算系统mpc1能够接收通知,该通知包括指示用户是否与数字组件进行了交互的点击参数的第一秘密份额[clicked1]以及从计算系统mpc1接收到的用于选择数字组件的选择过程的选择过程标识符spid1。类似地,计算系统mpc2能够接收通知,该通知包括指示用户是否与数字组件进行了交互的点击参数的第二秘密份额[clicked2]以及从计算系统mpc2接收到的用于选择数字组件的选择过程的选择过程标识符spid2。计算系统mpc1和mpc2能够在每次接收到通知时更新活动的过程变量。
[0182]
计算系统mpc1和mpc2能够使用它们相应的选择过程标识符来获得给定选择过程的获胜参数的存储的秘密份额。如果通知的过程标识符与获胜参数的任何秘密份额的过程标识符都不匹配,则通知能够被认为是欺诈性的。
[0183]
如果过程变量是资源消耗速率,则计算系统mpc1能够将每个活动的其资源消耗过程变量的第一秘密份额[pv
campaign_uuid,resource,1
]递增∑
sv
[is_dc_the_winner
sv,1
]
×
[pre_shared_sv_amount
sv,1
],其中对应于选择值sv的数字组件与通用活动标识符universal_campaign_identifier相关联。在这种关系中,在发布者、ssp和dsp之间的任何共享之前,该参数[pre_shared_sv_amount
sv,1
]是选择值的第一秘密份额,例如,它是数字组件提供者将为数字组件的这种显示提供的量。将该选择值拆分成秘密份额保护了数字组件提供者和dsp的商业保密信息。
[0184]
类似地,计算系统mpc2能够将每个活动的其资源消耗过程变量的第二秘密份额[pvuniversal
_campaign_id,resource,2
]递增∑
sv
[is_dc_the_winner
sv,2
]
×
[pre_shared_sv_amount
sv,2
],其中对应于选择值sv的数字组件与通用活动标识符universal_campaign_id相关联。在这种关系中,在发布者、ssp和dsp之间的任何共享之前,该参数[pre_shared_sv_amount
sv,2
]是选择值的第二秘密份额,例如,它是数字组件提供者将为数字组件的这种显示提供的量。
[0185]
使用该过程,计算系统mpc1和mpc2将为获胜数字组件的活动花费的资源量增加数字组件提供者将为其数字组件的显示提供的量。由于非获胜选择值的获胜者参数将为零,所以为那些活动花费的资源量将不会被递增。
[0186]
如果过程变量是展示速率,则计算系统mpc1能够将每个活动的其展示速率过程变量的第一秘密份额[pv
universal_campaign_id,impression,1
]更新∑
sv
[is_dc_the_winner
sv,1
],其中对应于选择值sv的数字组件与通用活动标识符universal_campaign_id相关联。以这种方式,计算系统mpc1将获胜选择值的活动的展示的数量递增一。
[0187]
类似地,计算系统mpc2能够将每个活动的其展示速率过程变量的第一秘密份额[pv
universal_campaign_id,impression,2
]更新∑
sv
[is_dc_the_winner
sv,2
],其中对应于选择值sv的数字组件与通用活动标识符universal_campaign_id.相关联。以这种方式,计算系统mpc2将获胜选择值的活动的展示的数量递增一。
[0188]
如果过程变量是交互速率,则计算系统mpc1能够将每个活动的其交互速率过程变量的第一秘密份额[pv
universal_campaign_uuid,interaction,1
],更新∑
sv
[is_dc_the_winner
sv,1
]
×
[clicked1],其中对应于选择值sv的数字组件与通用活动标识符universal_campaign_id相关联。以这种方式,如果点击参数指示数字组件接收到用户交互,则计算系统mpc1将获胜
选择值的活动的交互的数量递增一。
[0189]
类似地,计算系统mpc2能够将每个活动的其交互速率过程变量的第二秘密份额[pv
universal_campaign_id,interaction,2
]更新∑
sv
[is_dc_the_winner
sv,2
]
×
[clicked2],其中对应于选择值sv的数字组件与通用活动标识符universal_campaign_id相关联。以这种方式,如果点击参数指示数字组件接收到用户交互,则计算系统mpc1将获胜选择值的活动的交互的数量递增1。
[0190]
对过程变量的每次更新都需要秘密份额之间的乘法。乘法能够由计算系统mpc1和mpc2使用安全mpc过程来执行,其中在两个计算系统mpc1与mpc2之间有一个rpc。
[0191]
计算机系统mpc1和mpc2确定活动的控制器参数的秘密份额(416)。计算机系统mpc1和mpc2能够使用安全mpc过程来确定控制器参数。控制器参数能够包括误差(error)、积分参数(integral)、微分参数(derivative)、临时参数(tmp)、输出(output)和先前误差参数(previous_error)。计算系统mpc1能够使用mpc过程以使用下面的关系式24至29来计算这些参数的第一秘密份额。
[0192]
[error1]=setpoint-[pv
universal_campaign_id,impression,1
]
ꢀꢀꢀꢀ
(24)
[0193]
[integral
universal_campaign_id,impression,1
]=[integral
universal_campaign_id,impression,1
] [error1]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(25)
[0194]
[derivative1]=error1]-[previous_error
universal_campaign_id,1
]
ꢀꢀꢀꢀꢀ
(26)
[0195]
[tmp1]=(k
p
×
[error1]) (ki×
[integral
universal_campaign_id,impression,1
]) (kd×
[derivative1])
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(27)
[0196]
[output
universal_campaign_id,impression,1
]=[tmp1]
ꢀꢀꢀꢀ
(28)
[0197]
[previous_error
universal_campaign_id,1
]=[error1]
ꢀꢀꢀꢀꢀꢀꢀꢀ
(29)
[0198]
类似地,计算系统mpc2能够使用mpc过程以使用下面的关系式30至35来计算这些参数的第一秘密份额。
[0199]
[error2]=setpoint-[pv
univerrsal_campaign_id,impression,2
]
ꢀꢀꢀꢀ
(30)
[0200]
[integral
universal_campaign_id,impression,2
]=[integral
universal_campaign_id,impression,2
] [error2]
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(31)
[0201]
[derivative2]=error2]-[previous_error
universal_campaign_id,2
]
ꢀꢀꢀꢀꢀꢀ
(32)
[0202]
[tmp2]=(k
p
×
[error2]) (ki×
[integral
universal_campaign_id,impression,2
]) (kd×
[derivative2])
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(33)
[0203]
[output
universal_campaign_id,impression,2
]=[tmp2]
[0204]
(34)
[0205]
[previous_error
universal_campaign_id,2
]=[error2]
[0206]
(35)
[0207]
输出参数表示基于设定点与测量变量之间的差异的概率。该概率能够用于确定该活动是否满足该活动的调步合格条件。例如,对于活动的数字组件否则是合格的下一个数字组件分发过程,该概率能够是数字组件将被包括在选择过程中的概率。如果满足调步合格条件,则活动中的数字组件也满足调步合格条件,并且将有资格用于数字组件选择过程,例如,如果满足数字组件的所有其他条件。例如,如果活动的数字组件以比设定点更高的速率被显示,则输出将具有较低值,表示数字组件将被选择以包括在后续选择过程中的概率
较低,即使数字组件否则可能是合格的。这种较低的概率将测量的展示速率驱动向设定点降低。
[0208]
计算系统mpc1和mpc2能够重复地计算活动的控制器参数,例如基于指定时间段定期地计算。在另一示例中,计算系统mpc1和mpc2能够在每次基于接收到的通知更新测量变量时更新活动的控制器参数。通过以主动方式而不是响应数字组件请求而更新控制器参数,能够大大减少在数字组件选择过程中使用控制器的输出中的时延。
[0209]
在一些情况下,活动的控制器的调谐参数能够是敏感信息。在这样的示例中,活动的所有者能够向每个计算系统mpc1和mpc2提供每个调谐参数的相应秘密份额。例如,所有者能够向计算系统mpc1分别提供比例、积分和微分参数的第一秘密份额[k
p,1
]、[k
i,1
]和[k
d,1
]。类似地,所有者能够向计算系统mpc2分别提供比例、积分和微分参数的第二秘密份额[k
p,1
]、[k
i,2
]和[k
d,2
]。
[0210]
当计算临时参数时,计算系统mpc1和mpc2能够使用关系式36和37来代替关系式27和33。
[0211]
[tmp1]=([k
p,1
]
×
[error1]) ([k
i,1
]
×
[integral
campaign_uuid,impression,1
]) ([k
d,1
]
×
[derivative1])
ꢀꢀ
(36)
[0212]
[tmp2]=([k
p,2
]
×
[error2]) ([k
i,2
]
×
[integral
campaign_uuid,impression,2
]) ([k
d,2
]
×
[derivative2])
ꢀꢀ
(37)
[0213]
计算系统mpc1和mpc2确定活动的调步选择器参数的秘密份额(418)。计算系统mpc1和mpc2能够以明文形式协作地生成在[output
min
,output
max
]的范围内的均匀分布的随机数r。例如,计算系统mpc1和mpc2能够使用diffie-hellman密钥交换(dhke)技术来确定随机数。
[0214]
计算系统mpc1和mpc2能够使用pid控制器的输出的秘密份额和随机数的秘密份额,以使用安全mpc过程来计算调步选择器参数的秘密份额。使用随机数使得计算系统mpc1和mpc2能够使用由输出表示的概率来设置调步选择器参数的布尔值。计算系统mpc1能够使用下面的关系式38来计算调步选择器参数pacing_selector的第一秘密份额。
[0215]
[pacing_selector
campaign_uuid,1
]=([output
campaign_uuid,1
]>r)
×
([pv
campaign_uuid,resource,1
]<total_resources
campaign_uuid,1
])
ꢀꢀ
(38)
[0216]
类似地,计算系统mpc2能够使用下面的关系式39来计算调步选择器参数pacing_selector的第一秘密份额。
[0217]
[pacing_selector
campaign_uuid,2
]=([output
campaign_uuid,2
]>r)
×
([pv
campaign_uuid,resource,2
]<total_resources
campaign_uuid,2
])
ꢀꢀ
(39)
[0218]
在关系式38和39中,与活动的资源的总量的比较确保了活动具有用于分发数字组件的剩余资源,例如预算。活动的调步选择器的秘密份额能够在过程200中用于活动中的每个数字组件。例如,对于活动中的每个数字组件,秘密份额[pacing_selector
campiang_uuid,1
]和[pacing_selector
campiang_uuid,2
]能够替代关系式6和7中的[pacing_selector
sv,1
]和[pacing_selector
sv,2
]。
[0219]
图5是示出了用于选择用于分发给客户端设备的数字组件的示例过程500的流程图。过程500的操作能够例如由mpc集群130中的计算系统mpc1或计算系统mpc2来实现。过程500的操作也能够被实现为存储在一个或多个计算机可读介质上的指令,该一个或多个计算机可读介质可以是非暂时性的,并且由一个或多个数据处理装置对指令的执行能够使得
一个或多个数据处理装置执行过程500的操作。为简洁起见,过程500被描述为由计算系统mpc1执行。
[0220]
计算系统mpc1与mpc系统中的一个或多个第二计算系统(例如,计算系统mpc2)协作,使用安全mpc过程在秘密份额中初始化用于一个或多个活动中的每个活动的反馈控制器(502)。反馈控制器能够是具有基于给定活动的目标速率的设定点的pid控制器。例如,设定点能够是展示速率、交互速率或资源消耗速率。计算系统mpc1和mpc2能够使用安全mpc过程来初始化控制器的参数的秘密份额,如以上参考图4所述。
[0221]
计算系统mpc1基于反馈控制器的误差参数来更新每个反馈控制器的输出的第一秘密份额。误差参数能够表示设定点与给定活动的测量速率之间的差异(504)。该输出表示能够用于确定活动是否满足活动的调步合格条件的概率。计算系统mpc1和mpc2能够基于更新后的测量过程变量和设定点来更新控制器的输出,如以上参考图4所述。
[0222]
计算系统mpc1基于输出的第一秘密份额来确定限定活动是否满足活动的调步合格条件的给定调步选择器参数的第一秘密份额(506)。如以上参考图4所述,计算系统mpc1和mpc2能够协作地针对每个数字组件请求生成随机数,并将该随机数与输出进行比较,以确定调步选择器参数。
[0223]
计算系统mpc1从客户端设备110接收数字组件请求(508)。数字组件请求能够包括识别包括客户端设备110的用户作为成员的一个或多个第一用户组的布谷鸟过滤器或数据的秘密份额。例如,数字组件请求能够包括一个或多个分布式点函数。每个分布式点函数能够表示指示客户端设备的用户是否是由相应第一用户组标识符识别的相应第一用户组的成员的点函数的秘密份额。例如,由计算系统mpc1接收到的数字组件请求能够包括针对包括客户端设备110的用户作为成员的每个用户组的分布式点数函数g
ug_id,1

[0224]
该计算系统与计算系统mpc2协作以针对数字组件请求进行给定数字组件选择过程(510)。例如,计算系统mpc1和mpc2能够执行图3的过程300,以生成识别选择的数字组件的选择结果。
[0225]
计算系统mpc1向客户端设备110提供识别给定数字组件的选择结果的第一秘密份额(512)。如上所述,选择结果能够识别选择的数字组件和数字组件的选择值。客户端设备110还能够从一个或多个附加mpc系统(例如,计算系统mpc2)中的每个接收选择结果的相应秘密份额。如上所述,客户端设备110能够使用秘密份额来重构选择结果。
[0226]
在一些实施方式中,不是使用分布式点函数,而是布谷鸟过滤器本身能够被发送到mpc集群130。在该示例中,应用112能够使用由用户组标识符或来自被阻止的标识符的集合以及由应用112生成的两个随机变量中的任一个参数化的伪随机函数(prf)。例如,假设由应用112生成的三个随机变量是rand_var1a、rand_var1b和rand_var2。还假设桶中的每个项都是k比特整数。在一些实施方式中,应用112和mpc集群130预先就prf达成一致,其中k是布谷鸟过滤器的桶中的每个项的比特数。布谷鸟过滤器的桶中的每个项都能够被用户组标识符或被阻止的标识符占用,或者为空。例如,应用112能够生成布谷鸟过滤器表,其项是prf(ug_id,rand_var1a)、prf(blocked_id,rand_var1b)或0,其中ug_id是通过基于内容提供者的域对用户组的标签(例如,用户组标识符)应用hmac而生成的用户组的标识符,并且0表示空项。对所有用户组标识符和被阻止的标识符重复该过程。
[0227]
应用112能够基于针对用户组标识符和被阻止的标识符生成的布谷鸟过滤器表来
生成向量b。向量b中的每个值bi能够被表示为bi=(ai_prf(rand_var2,i))modp,其中a是布谷鸟过滤器表,i是向量b和布谷鸟过滤器表a的索引。当应用112发起对数字组件槽的数字组件的请求时,应用将rand_var1a、rand_var1b和rand_var2作为请求的参数传输到计算系统mpc1。应用112还将向量b、rand_var1a和rand_var1b作为请求的参数传输到计算系统mpc2。prf(rand_var2,i)和bi是z
p
中的ai的两个加性秘密份额,分别由计算系统mpc1和mpc2持有。因为计算系统mpc1和mpc2都不能访问这两个秘密份额,所以这两个计算系统都不能再现布谷鸟过滤器表,从而保护了用户隐私。
[0228]
计算系统mpc1确定每个候选选择值是否与请求中指定的用户组相关联。计算系统mpc1接收布谷鸟过滤器表m的秘密份额的数组的等同物,由[m1]表示。m中存在的每个用户组标识符将处于n个可能位置中的一个中。
[0229]
计算系统mpc1根据下面的关系式40来计算基于用户组的候选参数[is_dc_a_candidate
x,1
]:
[0230][0231]
其中π表示多个项的乘法。这里,ug_id(x)是用于检索与选择值x相关联的用户组标识符ug_id的函数,{f1,...fn}是用于计算布谷鸟过滤器表a内的项的可能索引的散列函数集合,并且rand_valla是在数字组件请求中接收到的随机值。[m
x,1
]是数组[m1]中的第x个元素。==是明文整数与秘密整数的秘密份额之间的相等性测试。==的结果是0(不相等)或1(相等)的秘密整数的秘密份额。这里,[m
i,1
]的值=[prf(rand_val2a,i)1]。
[0232]
类似地,计算系统mpc2根据下面的关系式41来计算基于用户组的候选参数[is_dc_a_candidate
x,2
]:
[0233][0234][0235]
这里,[m
i,2
]的值=bi。
[0236]
图6是能够用于执行上述操作的示例计算机系统600的框图。系统600包括处理器610、存储器620、存储设备630和输入/输出设备640。组件610、620、630和640中的每个都能够例如使用系统总线650来互连。处理器610能够处理用于在系统600内执行的指令。在一些实施方式中,处理器610是单线程处理器。在另一实施方式中,处理器610是多线程处理器。处理器610能够处理存储在存储器620中或存储设备630上的指令。
[0237]
存储器620存储系统600内的信息。在一种实施方式中,存储器620是计算机可读介质。在一些实施方式中,存储器620是易失性存储器单元。在另一实施方式中,存储器620是非易失性存储器单元。
[0238]
存储设备630能够为系统600提供大容量存储。在一些实施方式中,存储设备630是计算机可读介质。在各种不同的实施方式中,存储设备630能够包括例如硬盘设备、光盘设备、由多个计算设备通过网络共享的存储设备(例如,云存储设备)、或一些其他大容量存储设备。
[0239]
输入/输出设备640为系统600提供输入/输出操作。在一些实施方式中,输入/输出设备640能够包括以下各项中的一项或多项:网络接口设备,例如以太网卡;串行通信设备,
例如rs-232端口;和/或无线接口设备,例如802.11卡。在另一实施方式中,输入/输出设备能够包括被配置成接收输入数据并将输出数据发送到外部设备660(例如,键盘、打印机和显示设备)的驱动设备。然而,也能够使用其他实施方式,诸如移动计算设备、移动通信设备、机顶盒电视客户端设备等。
[0240]
尽管已经在图6中描述了示例处理系统,但是本说明书中描述的主题和功能操作的实施方式能够在其他类型的数字电子电路中实现,或者在计算机软件、固件或硬件中实现,包括本说明书中公开的结构及其结构等同物,或者在它们中的一个或多个的组合中实现。
[0241]
本说明书中描述的主题和操作的实施例能够在数字电子电路中实现,或者在计算机软件、固件或硬件中实现,包括本说明书中公开的结构及其结构等同物,或者在它们中的一个或多个的组合中实现。本说明书中描述的主题的实施例能够被实现为一个或多个计算机程序,即计算机程序指令的一个或多个模块,其被编码在计算机存储介质(或介质)上,用于由数据处理装置执行或控制数据处理装置的操作。替代地或附加地,程序指令能够被编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号,其被生成以编码信息以用于传输到合适的接收器装置来由数据处理装置执行。计算机存储介质能够是计算机可读存储设备、计算机可读存储基底、随机或串行存取存储器阵列或设备、或者它们中的一个或多个的组合或被包括在计算机可读存储设备、计算机可读存储基底、随机或串行存取存储器阵列或设备、或者它们中的一个或多个的组合中。此外,虽然计算机存储介质不是传播信号,但是计算机存储介质能够是编码在人工生成的传播信号中的计算机程序指令的源或目的地。计算机存储介质也能够是一个或多个单独的物理组件或介质(例如,多个cd、盘或其他存储设备)或被包括在一个或多个单独的物理组件或介质(例如,多个cd、盘或其他存储设备)中。
[0242]
本说明书中描述的操作能够被实现为由数据处理装置对存储在一个或多个计算机可读存储设备上或从其他源接收到的数据执行的操作。
[0243]
术语“数据处理装置”包含用于处理数据的所有种类的装置、设备和机器,包括例如可编程处理器、计算机、片上系统或前述的多个或组合。该装置能够包括专用逻辑电路,例如fpga(现场可编程门阵列)或asic(专用集成电路)。除了硬件之外,该装置还能够包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机或它们中的一个或多个的组合的代码。该装置和执行环境能够实现各种不同的计算模型基础设施,诸如网络服务、分布式计算和网格计算基础设施。
[0244]
计算机程序(也称为程序、软件、软件应用、脚本或代码)能够用任何形式的编程语言编写,包括编译或解释语言、声明或过程语言,并且它能够以任何形式部署,包括作为独立程序或作为模块、组件、子例程、对象或适合于在计算环境中使用的其他单元。计算机程序可以但不需要对应于文件系统中的文件。程序能够被存储在保存其他程序或数据的文件的一部分(例如,存储在标记语言文档中的一个或多个脚本)中,存储在专用于所讨论的程序的单个文件中,或者存储在多个协作文件中(例如,存储一个或多个模块、子程序或代码部分的文件)。计算机程序能够被部署为在一台计算机或位于一个站点或跨多个站点分布并通过通信网络互连的多台计算机上执行。
[0245]
本说明书中描述的过程和逻辑流程能够由执行一个或多个计算机程序的一个或多个可编程处理器来执行,以通过对输入数据进行操作并生成输出来执行动作。过程和逻辑流程也能够由专用逻辑电路来执行,并且装置也能够被实现为专用逻辑电路,专用逻辑电路例如fpga(现场可编程门阵列)或asic(专用集成电路)。
[0246]
举例来说,适合于执行计算机程序的处理器包括通用微处理器和专用微处理器两者。通常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于根据指令来执行动作的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或可操作地耦合到一个或多个用于存储数据的大容量存储设备,例如磁盘、磁光盘或光盘,以从其接收数据或向其传送数据,或两者兼有。然而,计算机不需要具有这样的设备。此外,计算机能够被嵌入另一个设备中,例如移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制台、全球定位系统(gps)接收器或便携式存储设备(例如,通用串行总线(usb)闪存驱动器)等等。适合于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如eprom、eeprom和闪存设备;磁盘,例如内部硬盘或可移除磁盘;磁光盘;以及cd-rom和dvd-rom盘。处理器和存储器能够由专用逻辑电路来补充或并入专用逻辑电路中。
[0247]
为了提供与用户的交互,本说明书中描述的主题的实施例能够在计算机上实现,该计算机具有用于向用户显示信息的显示设备,例如crt(阴极射线管)或lcd(液晶显示器)监视器,以及用户能够通过其向计算机提供输入的键盘和定点设备,例如鼠标或轨迹球。也能够使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈能够是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且能够以任何形式接收来自用户的输入,包括声音、语音或触觉输入。此外,计算机能够通过向由用户使用的设备发送文档和从由用户使用的设备接收文档来与用户进行交互;例如,通过响应于从web浏览器接收到的请求,向用户的客户端设备上的web浏览器发送网页。
[0248]
本说明书中描述的主题的实施例能够在计算系统中实现,该计算系统包括后端组件,例如作为数据服务器,或者包括中间件组件,例如应用服务器,或者包括前端组件,例如具有图形用户界面或web浏览器的客户端计算机,用户能够通过该图形用户界面或web浏览器与本说明书中描述的主题的实施方式进行交互,或者包括一个或多个这样的后端组件、中间件组件或前端组件的任何组合。该系统的组件能够通过任何形式或介质的数字数据通信(例如通信网络)来互连。通信网络的示例包括局域网(“lan”)和广域网(“wan”)、互联网(例如,因特网)和对等网络(例如,自组织对等网络)。
[0249]
计算系统能够包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系由于在相应的计算机上运行的计算机程序而产生,并且与彼此具有客户端-服务器关系。在一些实施例中,服务器将数据(例如,html页面)传输到客户端设备(例如,为了向与客户端设备交互的用户显示数据并从与客户端设备交互的用户接收用户输入)。在客户端设备处生成的数据(例如,用户交互的结果)能够在服务器处从客户端设备接收。
[0250]
除了上述实施例之外,以下实施例也是创新的:
[0251]
实施例1是一种方法,包括:针对一个或多个活动中的每个活动:由多个多方计算(mpc)系统中的第一计算系统与所述mpc系统中的一个或多个第二计算系统协作,使用安全
mpc过程在秘密份额中初始化用于所述活动的反馈控制器,其中,所述反馈控制器包括基于所述活动的目标速率的设定点;由所述第一计算系统基于表示所述设定点与所述活动的测量速率之间的差异的误差参数来更新所述反馈控制器的输出的第一秘密份额;以及由所述第一计算系统至少基于所述输出的所述第一秘密份额来确定限定所述活动是否满足所述活动的调步合格条件的调步选择器参数的第一秘密份额;由所述第一计算系统接收数字组件请求;由所述第一计算系统与所述一个或多个第二计算系统协作,针对所述数字组件请求进行给定数字组件选择过程,其中,所述数字组件选择过程从候选数字组件集合中选择给定数字组件,所述候选数字组件集合中的每个候选数字组件都满足一个或多个合格条件,所述一个或多个合格条件包括处于满足所述调步合格条件的合格活动中;以及由所述第一计算系统向所述客户端设备发送识别所述给定数字组件的选择结果的第一秘密份额。
[0252]
实施例2是实施例1的方法,其中,所述活动的所述目标速率包括所述活动的目标展示速率、所述给定活动的目标用户交互速率或所述给定活动的目标资源消耗速率中的一个。
[0253]
实施例3是实施例1或2的方法,其中,所述反馈控制器包括比例-积分-微分(pid)控制器。
[0254]
实施例4是实施例1至3中的任一项的方法,其中,所述数字组件请求包括识别包括所述客户端设备的用户作为成员的一个或多个第一用户组的数据的秘密份额。
[0255]
实施例5是实施例4的方法,其中,由所述第一计算系统与所述一个或多个第二计算系统协作针对所述数字组件请求进行所述给定数字组件选择过程包括:识别多个数字组件,其中,每个数字组件对应于:(i)相应选择值,(ii)所述数字组件有资格被分发给的相应第二用户组的相应第二用户组标识符,以及(iii)包括所述数字组件的相应活动;针对所述多个选择值中的每个选择值,确定总体候选参数的第一秘密份额,所述总体候选参数指示:(i)对应于所述选择值的所述第二用户组标识符是否与所述一个或多个第一用户组中的一个相匹配,以及(ii)所述相应活动的所述调步选择器参数是否指示所述相应活动满足所述相应活动的所述调步合格条件;以及基于所述多个数字组件中的每个数字组件的所述相应选择值和所述候选参数来生成所述选择结果的所述第一秘密份额,其中,所述给定数字组件是来自合格数字组件集合的具有最高选择值的特定数字组件。
[0256]
实施例6是实施例5的方法,其中,每个合格数字组件是所述总体候选参数具有指定值的数字组件,其中,所述指定值指示:(i)对应于所述数字组件的所述第二用户组标识符与所述一个或多个第一用户组中的一个相匹配,以及(ii)包括所述数字组件的所述活动的相应调步选择器参数指示所述活动满足所述调步合格条件。
[0257]
实施例7是实施例1至6中的任一项的方法,其中,生成所述选择结果的所述第一秘密份额包括:基于每个选择值的量值来生成所述多个数字组件的顺序;基于所述数字组件的所述顺序和每个数字组件的所述总体候选参数来确定每个选择值的累加值的第一秘密份额;基于(i)所述选择值的所述总体候选参数和(ii)指示所述选择值的所述累加值是否是特定指定值的相等性测试的结果,针对每个数字组件确定获胜者参数的第一秘密份额;以及针对每个选择值,确定所述选择值的所述获胜者参数与所述选择值的数字组件信息元素的乘积之和的第一秘密份额作为所述选择结果的所述第一秘密份额。
[0258]
实施例8是实施例7的方法,其中,确定每个选择值的所述累加值的所述第一秘密
份额包括:针对每个单独的选择值,确定在最高选择值与所述单独的选择值之间包括所述最高选择值和所述单独的选择值的具有指示对应于所述选择值的所述第二用户组标识符与所述一个或多个第一用户组标识符中的至少一个相匹配的候选参数的选择值的数量。
[0259]
实施例9是实施例7或8的方法,其中,所述特定指定值为一或逻辑真。
[0260]
实施例10是实施例7至9中的任一实施例的方法,还包括:利用对所述给定数字组件选择过程的选择过程标识符的引用来存储所述获胜者参数的所述第一秘密份额;从所述客户端设备接收通知,所述通知包括所述选择过程标识符和数据的第一秘密份额,所述数据指示(i)所述给定数字组件是否在所述客户端设备处被显示或者(ii)用户是否与所述给定数字组件进行了交互中的至少一项;以及使用所述选择过程标识符和所述数据的所述第一秘密份额来更新用于包括所述给定数字组件的活动的所述反馈控制器的所述测量速率的第一秘密份额,所述数据指示(i)所述数字组件是否在所述客户端设备处被显示或者(ii)所述用户是否与所述给定数字组件进行了交互中的至少一项。
[0261]
实施例11是实施例10的方法,还包括:与所述一个或多个第二计算系统协作,基于所述测量速率的更新后的第一秘密份额和由所述一个或多个第二计算系统中的每个维护的所述测量速率的相应第二秘密份额来更新所述给定活动的所述相应调步选择器参数的所述第一秘密份额。
[0262]
实施例12是实施例11的方法,其中,更新所述给定活动的所述相应调步选择器参数的所述第一秘密份额包括:与所述一个或多个第二计算系统协作,更新用于所述给定活动的所述反馈控制器的所述输出的所述第一秘密份额;以及与所述一个或多个第二计算系统协作,基于用于所述给定活动的所述反馈控制器的所述输出的更新后的第一秘密份额和由所述一个或多个第二计算系统中的每个维护的用于所述给定活动的所述反馈控制器的所述输出的相应更新后的第二秘密份额来更新所述给定活动的所述调步选择器的所述第一秘密份额。
[0263]
实施例13是一种系统,包括:一个或多个处理器;以及一个或多个存储指令的存储设备,所述指令当由所述一个或多个处理器执行时,使得所述一个或多个处理器执行实施例1至12中的任一项的方法。
[0264]
实施例14是一种承载指令的计算机可读存储介质,所述指令当由一个或多个处理器执行时,使得所述一个或多个处理器执行实施例1至12中的任一项的方法。
[0265]
实施例15是一种包括指令的计算机程序产品,所述指令当由计算机执行时,使得所述计算机执行实施例1至12中的任一项的方法的步骤。
[0266]
虽然本说明书包含许多具体实现细节,但是这些不应当被解释为对任何发明的范围或可能要求保护的范围的限制,而是对特定发明的特定实施例特定的特征的描述。本说明书中在分离的实施例的上下文中描述的某些特征也能够在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也能够在多个实施例中分离地或以任何合适的子组合来实现。此外,尽管特征可以在上面被描述为以某些组合起作用,并且甚至最初如此要求保护,但是来自要求保护的组合的一个或多个特征在一些情况下能够从该组合中删除,并且要求保护的组合可以涉及子组合或子组合的变体。
[0267]
类似地,虽然在附图中以特定的顺序描述了操作,但是这不应当被理解为要求这些操作以所示的特定顺序或先后顺序执行,或者要求所有示出的操作都被执行,以获得期
望的结果。在某些情况下,多任务和并行处理可以是有利的。此外,上述实施例中的各种系统组件的分离不应当被理解为在所有实施例中都需要这样的分离,并且应当理解,所描述的程序组件和系统通常能够一起集成在单个软件产品中或者打包到多个软件产品中。
[0268]
因此,已经描述了主题的特定实施例。其他实施例处在随附权利要求的范围内。在一些情况下,权利要求中记载的动作能够以不同的顺序执行,并且仍然实现期望的结果。此外,附图中描绘的过程不一定需要所示的特定顺序或先后顺序来实现期望的结果。在某些实施方式中,多任务和并行处理可以是有利的。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献