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

使用安全多方计算的隐私保护质心模型的制作方法

2022-07-31 01:10:46 来源:中国专利 TAG:

使用安全多方计算的隐私保护质心模型
1.相关申请的交叉引用
2.本技术要求于2020年10月2日提交的以色列申请第277760号的优先权。前述申请的公开内容通过引用以将其整体并入本文。


背景技术:

3.本说明书涉及使用安全多方计算来训练和使用机器学习模型的隐私保护机器学习平台。
4.一些机器学习模型是基于从多个来源(例如,跨多个网站和/或本地应用)收集到的数据训练的。然而,这种数据可能包括不应被共享或被允许泄露给其他方的隐私或敏感数据。


技术实现要素:

5.通常,本说明书中描述的主题的一个创新方面可以在方法中体现,该方法包括:从客户端设备并且由多个多方计算(mpc)系统中的第一计算系统接收对用户组标识符的第一请求,用户组标识符识别要将用户添加到其中的用户组,第一请求包括质心模型的模型标识符、用户的用户简档的第一用户简档数据、以及阈值距离;识别与模型标识符对应的用户组集合;为用户组集合中的每个用户组识别使用与模型标识符对应的质心模型所确定的用户组的质心;由第一计算系统至少基于第一用户简档数据、用户组集合中的每个用户组的质心以及阈值距离来确定用户组结果,其中用户组结果指示要将用户添加到其中的一个或多个用户组;以及将用户组结果传送至客户端设备。该方面的其他实施方式包括对应的装置、系统以及被编码在计算机存储设备上的被配置为执行所述方法的各方面的计算机程序。
6.这些和其他实施方式每个可以可选地包括以下特征中的一个或多个。在一些方面,第一用户简档数据包括用户简档的第一部分,并且其中每个用户组的质心是使用第一计算系统和多个mpc系统中的一个或多个第二计算系统之间的安全mpc过程所确定的。用户组结果可以包括一个或多个用户组的一个或多个用户组标识符。每个第二计算系统可以向客户端设备传送第二用户组结果,第二用户组结果包括基于用户简档的相应第二部分、用户组集合中每个用户组的相应第二质心、以及阈值距离所确定的要将用户添加到其中的一个或多个第二用户组之一的一个或多个第二用户组标识符。
7.一些方面可以包括生成用户组集合中的每个用户组的质心。该生成可以包括:获得数据结构,该数据结构包括针对每个质心模型和用户组标识符对的表示用户简档集合的第一共享的总和的共享向量的第一总和以及从其接收到用户简档集合的第一共享的客户端设备的数量。该生成还可以包括:针对每个质心模型和用户组标识符对,确定应用的数量是否满足阈值;对于应用的数量满足阈值的每个质心模型和用户组标识符对,将针对质心模型和用户组标识符对的共享向量的第一总和的第一部分传送到多个mpc系统中的一个或多个第二计算系统中的每个第二计算系统;从一个或多个第二计算系统中的每个第二计算
系统接收针对一个或多个质心模型和用户组标识符对的共享向量的相应第二总和的一部分;针对一个或多个质心模型和用户组标识符对中的每个:确定针对质心模型和用户组标识符对的共享向量的相应第二总和的每个部分与针对该质心模型和用户组标识符对的共享向量的第一总和的一部分的总和;以及基于总和确定由用户组标识符识别的用户组的质心。
8.在一些方面,基于总和确定由用户组标识符识别的用户组的质心包括:将该总和除以以下项的总和:(i)针对质心模型和用户组标识符对的客户端设备的数量与(ii)从每个第二计算系统接收的针对质心模型和用户组标识符对的客户端设备的相应数量。
9.在一些方面,用户简档的第一用户简档数据包括用户简档的第一秘密共享。针对每个质心模型和用户组标识符对,基于从客户端设备接收到的随机或伪随机种子,确定具有零或一的值的第一数,并且该第一数表示由客户端设备的应用对是否要将用户添加到由用户组标识符识别的用户组的估计的第一秘密共享。通过利用多个mpc系统中的一个或多个第二计算系统至少使用用户简档的第一秘密共享、第一数、由每个第二计算系统接收的用户简档的相应第二秘密共享、以及由每个第二计算系统接收的相应第二数来执行第一轮安全mpc过程,导出指示应用是否正确地估计了是否将用户添加到用户组的估计标志的第一秘密共享。一些方面可以包括:利用一个或多个第二计算系统执行第二轮安全mpc过程,以基于估计标志的第一秘密共享和由一个或多个第二计算系统中的每个导出的估计标志的相应第二秘密共享来重构估计标志。用户组结果可以包括针对每个质心模型和用户组标识符对的估计标志。一些方面可以包括:接收对与估计标志中的一个或多个对应的一个或多个用户组标识符的第一请求。该请求可以包括每个估计标志的分布点函数。一些方面可以包括:针对每个估计标志,使用与估计标志对应的用户组标识符和估计标志的分布点函数来导出第一用户组标识符结果。客户端设备可以使用第一用户组标识符结果和从多个mpc系统中的每个第二计算系统接收的相应第二用户组标识符结果来确定与估计标志对应的用户组标识符。
10.本说明书中描述的主题可以在特定实施例中实现,以便实现以下优点中的一个或多个。本公开中描述的技术可以识别具有相似兴趣的用户并扩展用户组成员身份,同时保护用户的隐私和数据安全,例如,无需将用户的在线活动数据发送到内容平台或以其他方式向任何计算系统或各方泄露用户的在线活动数据。这保护与此类平台相关的用户隐私,并保护数据的安全性以免在传送过程中或从平台泄露。从历史上看,第三方cookie(即,来自与客户端设备呈现的资源不同的域的cookie)已被用于从因特网上的客户端设备收集数据。然而,一些浏览器会阻止使用第三方cookie,从而防止使用第三方cookie收集数据。当试图利用收集的数据来分割数据、进行推断或以其他方式利用数据以增强在线浏览体验时,这会产生问题。换句话说,如果不使用第三方cookie,以前收集到的大部分数据将不再可用,这会阻止计算系统使用这些数据。因此,有利的是,本文描述的主题允许聚合与不同用户有关的数据,而不损害用户数据安全性或隐私,并且不需要第三方cookie。
11.加密技术(诸如安全多方计算(mpc))可以用于解决无法使用第三方cookie收集数据时出现的问题。例如,加密技术可以在不使用第三方cookie的情况下基于用户简档的相似性来扩展用户组,这保护了用户隐私,而不会对扩展用户组的能力产生负面影响,并且在某些情况下基于更完整的简档提供比使用第三方cookie能实现的更好的用户组扩展。mpc
技术可以确保,只要mpc集群中的计算系统之一不以明文形式暴露其底层数据的部分,任一计算系统或另一方都不能以明文形式获得用户数据。因此,要求保护的方法允许以安全的方式识别、分组和传送用户数据,而不需要使用第三方cookie来确定用户数据之间的任何关系。这是一种与先前已知的通常需要由第三方cookie收集的明文形式的用户简档来确定数据之间的关系的方法不同的方式。通过以这种方式对用户数据进行分组,将数据内容传送到用户设备的效率得到提高,因为不需要传送与特定用户不相关的数据内容。具体地,不需要第三方cookies,从而避免存储第三方cookies,提高存储器使用率。指数衰减技术可以用于在客户端设备处构建用户简档,以减少构建用户简档所需的原始数据的数据大小,从而降低数据存储需求。
12.下面参照附图描述前述主题的各种特征和优点。附加的特征和优点从本文描述的主题和权利要求中是明显的。
附图说明
13.图1是安全mpc集群生成机器学习模型并且机器学习模型被用于扩展用户组的环境的框图。
14.图2是用于生成质心模型并使用质心模型以将用户添加到用户组的示例过程的泳道(swim lane)图。
15.图3是图示用于生成用户简档并将用户简档发送到mpc集群的示例过程的流程图。
16.图4是图示用于生成质心模型的示例过程的流程图。
17.图5是图示用于使用质心模型将用户添加到用户组的示例过程的泳道图。
18.图6是图示用于生成质心模型并使用质心模型以将用户添加到与质心模型对应的用户组的示例过程的泳道图。
19.图7是图示用于基于用户的用户简档数据和质心模型来确定用户组结果的示例过程的流程图。
20.图8是示例计算机系统的框图。
21.各个附图中同样的附图标记和名称表示同样的元素。
具体实施方式
22.通常,本公开描述了用于在保护用户隐私和确保数据安全的同时扩展用户组成员身份的系统和技术,即使在第三方cookie被阻止(例如,被浏览器阻止)和/或由于各种原因无法收集用户简档的情况下。通常,不是在诸如内容平台之类的其他实体的计算系统处创建和维护用户简档,而是在用户的客户端设备处维护用户简档。为了生成可以用于扩展组成员身份的机器学习模型,用户的客户端设备可以将其加密的用户简档(例如,作为用户简档的秘密共享)与其他数据一起可选地经由内容平台发送到安全的多方计算(mpc)集群的多个计算系统。例如,每个客户端设备可以生成用户简档的两个或更多个秘密共享(secret share)并将相应秘密共享发送到每个计算系统。在一些实施方式中,将每个用户简档中的信息的不同子集提供给每个计算系统,使得在被发送到每个计算系统的用户简档数据中没有重叠。
23.mpc集群的计算系统可以使用mpc技术来生成机器学习模型,用来在防止mpc集群
的任何计算系统(或不是用户自身的其他方)以明文获取任何个人用户的简档的情况下,基于用户的简档为用户推荐用户组,从而保护用户隐私。机器学习模型可以是质心模型。在此示例中,用户组的质心模型可以表示用户简档的中心,例如,作为用户组的成员的用户的用户简档的中心(平均值)。
24.在生成了机器学习模型后,机器学习模型可以用于基于每个用户的简档为他们推荐一个或多个用户组。例如,用户的客户端设备可以向mpc集群查询为该用户所推荐的用户组或确定是否应将用户添加到特定的用户组。mpc集群可以使用用户的用户简档来识别具有在该用户的用户简档的阈值距离内的质心的用户组。用户的用户组成员身份可以以保护隐私和安全的方式来使用以向该用户提供内容。
25.用于生成和使用机器学习模型的示例系统
26.图1是安全mpc 130集群生成机器学习模型并且机器学习模型被用于扩展用户组的环境100的框图。示例环境100包括数据通信网络105,诸如局域网(lan)、广域网(wan)、因特网、移动网络或它们的组合。网络105连接客户端设备110、安全mpc集群130、发布者140、网站142和内容平台150。示例环境100可以包括许多不同的客户端设备110、安全mpc集群130、发布者140、网站142和内容平台150。
27.客户端设备110是可以通过网络105进行通信的电子设备。示例客户端设备110包括个人计算机、移动通信设备(例如,智能电话)以及可以通过网络105发送和接收数据的其他设备。客户端设备还可以包括通过麦克风接受音频输入并通过扬声器输出音频输出的数字助理设备。当数字助理检测到激活麦克风以接受音频输入的“热词”或“热短语”时,数字助理可以被置入收听模式(例如,准备好接受音频输入)。数字助理设备还可以包括照相机和/或显示器以捕捉图像并视觉上呈现信息。数字助理可以以不同形式的硬件设备实现,包括可穿戴设备(例如,手表或眼镜)、智能电话、扬声器设备、平板设备或其他硬件设备。客户端设备还可以包括数字媒体设备,例如,插入电视或其他显示器以将视频流式传输到电视的流式传输设备。
28.客户端设备110通常包括应用112,诸如网络浏览器和/或本地应用,以便于通过网络105发送和接收数据。本地应用是为特定平台或特定设备(例如,具有特定操作系统的移动设备)开发的应用。发布者140可以开发并提供(例如,可供下载)本地应用给客户端设备110。例如,响应于客户端设备110的用户在网络浏览器的地址栏中输入资源145的资源地址或选择引用资源地址的链接,网络浏览器可以从托管发布者140的网站142的网络服务器请求资源145。类似地,本地应用可以从发布者的远程服务器请求应用内容。
29.一些资源、应用页面或其他应用内容可以包括用于将数字组件与资源145或应用页面一起呈现的数字组件槽(slot)。如本公开通篇所使用的,短语“数字组件”是指数字内容或数字信息的离散单元(例如,视频剪辑、音频剪辑、多媒体剪辑、图像、文本或其他内容单元)。数字组件可以作为单个文件或文件集合以电子方式存储在物理存储设备中,并且数字组件可以采用视频文件、音频文件、多媒体文件、图像文件或文本文件的形式,并包括广告信息,使得广告是一种数字组件。例如,数字组件可以是旨在补充网页内容或由应用112呈现的其他资源的内容。更具体地,数字组件可以包括与资源内容相关的数字内容(例如,数字组件可以与网页内容相同的主题相关,或与相关主题相关)。因此,提供数字组件可以补充并通常增强网页或应用内容。
30.当应用112加载包括一个或多个数字组件槽的资源(或应用内容)时,应用112可以为每个槽请求数字组件。在一些实施方式中,数字组件槽可以包括使应用112向数字组件分发系统请求数字组件的代码(例如,脚本),该数字组件分发系统选择数字组件并将该数字组件提供给应用112以呈现给客户端设备110的用户。
31.内容平台150可以包括供应侧平台(ssp)和需求侧平台(dsp)。通常,内容平台150代表发布者140和数字组件提供者160管理数字组件的选择和分发。
32.一些发布者140使用ssp来管理为其资源和/或应用的数字组件槽获取数字组件的过程。ssp是在硬件和/或软件中实现的技术平台,使得为资源和/或应用获取数字组件的过程自动化。每个发布者140可以具有对应的ssp,或者在一些罕见的情况下,可以具有对应的多个ssp。一些发布者140可以使用相同的ssp。
33.数字组件提供者160可以创建(或以其他方式发布)在发布者的资源和应用的数字组件槽中呈现的数字组件。数字组件提供者160可以使用dsp来管理其数字组件的供应以在数字组件槽中呈现。dsp是在硬件和/或软件中实现的技术平台,使得分发数字组件以与资源和/或应用一起呈现的过程自动化。dsp可以代表数字组件提供者160与多个供应侧平台ssp交互,以提供数字组件以与多个不同发布者140的资源和/或应用一起呈现。通常,dsp可以接收对数字组件的请求(例如,来自ssp),生成(或选择)由一个或多个数字组件提供者基于该请求创建的一个或多个数字组件的选择参数,并提供与数字组件有关的数据(例如,数字组件本身)和选择参数给ssp。ssp然后可以选择用于在客户端设备110处呈现的数字组件并向客户端设备110提供促使客户端设备110呈现数字组件的数据。
34.在某些情况下,接收与网页、应用页面或用户先前访问的和/或与之交互的其他电子资源相关的数字组件对用户是有益的。为了将这种数字组件分发给用户,当用户访问特定资源或对资源执行特定操作(例如,与网页上呈现的特定项交互或将该项添加到虚拟购物车)时,可以将用户分配给用户组,例如,用户兴趣组、相似用户的群组或涉及相似用户数据的其他组类型。用户组可以由数字组件提供者160生成。也就是说,当用户访问数字组件提供者160的电子资源时,每个数字组件提供者160可以将用户分配给他们的用户组。
35.为了保护用户隐私,可以在用户的客户端设备110处维护用户组成员身份,例如,通过应用112之一或客户端设备110的操作系统,而不是通过数字组件提供者、内容平台或其他方。在特定示例中,信任的程序(例如,网络浏览器或操作系统)可以为使用网络浏览器或另一应用的用户维护用户组标识符的列表(“用户组列表”)。用户组列表可以包括已经将用户添加到其中的每个用户组的组标识符。创建用户组的数字组件提供者160可以为他们的用户组指定用户组标识符。用户组的用户组标识符可以是组的描述性(例如,园艺组)或表示组的代码(例如,非描述性的字母数字序列)。用户的用户组列表可以存储在客户端设备110的安全存储装置中和/或可以在存储时被加密以防止其他人访问该列表。
36.当应用112呈现与数字组件提供者160或网站142上的网页相关的资源或应用内容时,资源可以请求应用112将一个或多个用户组标识符添加到用户组列表。作为响应,应用112可以将一个或多个用户组标识符添加到用户组列表并安全地存储用户组列表。
37.内容平台150可以使用用户的用户组成员身份来选择用户可能感兴趣或可能以某种方式有益于用户/用户设备的数字组件或其他内容。例如,这样的数字组件或其他内容可以包括改善用户体验、改善用户设备的运行或以某种其他方式使用户或用户设备受益的数
据。然而,可以以防止内容平台150将用户组标识符与特定用户相关联的方式来提供用户的用户组列表的用户组标识符,从而在使用用户组成员身份数据来选择数字组件时保护用户隐私和数据安全。
38.应用112可以以防止内容平台150或不是用户自身的任何其他实体获悉用户的用户组成员身份的方式将来自用户组列表的用户组标识符提供给与内容平台150交互的信任的计算系统以便基于用户组成员身份来选择在客户端设备110处呈现的数字组件。
39.在某些情况下,扩展用户组以包括与已经是用户组的成员的用户具有相似兴趣或其他相似数据的用户对用户和对数字组件提供者是有益的。有用的是,这可以在不使用第三方cookie的情况下实现。例如,第一用户可能对滑雪感兴趣并且可能是特定滑雪场的用户组的成员。第二用户可能也对滑雪感兴趣,但不知道这个滑雪场并且不是该滑雪场的成员。如果两个用户具有相似的兴趣或数据(例如,相似的用户简档),则可以将第二用户添加到该滑雪场的用户组,以便第二用户接收与该滑雪场相关的内容(例如,数字组件),并且这对于第二用户或其用户设备可能是感兴趣的或者使其以其他方式受益。换言之,可以扩展用户组以包括具有相似用户数据的其他用户。
40.安全mpc集群130可以生成(例如,训练)机器学习模型,该机器学习模型基于用户的简档向用户(或其应用112)推荐用户组,或可以用于生成用户组的推荐。安全mpc集群130包括两个计算系统mpc1和mpc2,它们执行安全mpc技术以生成机器学习模型。尽管示例mpc集群130包括两个计算系统,但是只要mpc集群130包括多于一个的计算系统,也可以使用更多的计算系统来执行mpc过程。例如,mpc集群130可以包括三个计算系统、四个计算系统或另一适当数量的计算系统。在mpc集群130中使用更多的计算系统可以提供更多的安全性和容错性,但也可能增加mpc过程的复杂性。
41.mpc集群130的计算系统(例如,计算系统mpc1和mpc2)可以由不同的实体操作。以此方式,每个实体可能无法访问明文形式的完整的用户简档。明文是未经计算标记、特殊格式化或以代码或数据(包括二进制文件)写入的文本,这一形式在不需密钥或其他解密设备或者其他解密过程的情况下就可以查看或使用。例如,计算系统mpc1或mpc2之一可以由与用户、发布者140、内容平台150和数字组件提供者160不同的信任方操作。例如,行业团体、政府团体或浏览器开发者可以维护和操作计算系统mpc1和mpc2之一。另一个计算系统可以由这些组中的不同的一个组操作,使得不同的信任方操作每个计算系统mpc1和mpc2。优选地,操作不同计算系统mpc1和mpc2的不同方没有动机合谋来危害用户隐私。在一些实施方式中,计算系统mpc1和mpc2在架构上是分开的并且被监控以便在执行本公开中描述的安全mpc过程之外不进行相互通信。
42.在一些实施方式中,mpc集群130为每个内容平台150(例如,每个dsp和/或每个ssp)和/或为每个数字组件提供者160生成(例如,训练)一个或多个质心模型。例如,内容平台150可以让mpc集群130为内容平台150管理的一个或多个用户组的任何子集或为内容平台至少具有读取访问权的一个或多个用户组的任何子集生成质心模型。例如,每个内容平台150可以为一个或多个数字组件提供者160管理数字组件的分发。内容平台150可以请求mpc集群130为内容平台150为其管理数字组件的分发的数字组件提供者160中的一个或多个生成质心模型。在另一示例中,数字组件提供者160可以让mpc集群130为由该数字组件提供者160创建并由其维护的用户组中的一个或多个生成质心模型。用于生成质心模型的示
例过程在图4和图6中图示出并在下文进行描述。
43.质心模型可以将用户嵌入到n维空间中。简档空间中的用户由n维向量x={x1,x2,

xn}表示。一个用户组r有m个用户:{x1,x2,

xm}。模型中用户组r的质心可以是给定用户x

={x1′
,x2′
,

xn′
},内容平台150或数字组件提供者160可能想要找到所有用户组r,使得|x
′-centroid(model,r)|《d,其中d是表示质心模型的阈值距离的参数,例如,由内容平台150指定。
44.为了便于随后的描述和简洁性,剩余的描述主要是关于为内容平台150(例如,dsp和ssp)生成和使用质心模型。然而,也可以执行这些系统和技术用于为数字组件提供者160或其他实体生成质心模型并代表数字组件提供者160或其他实体查询质心模型。
45.在为内容平台150生成质心模型之后,内容平台150可以查询或让客户端设备110的应用112查询一个或多个质心模型以识别客户端设备110的用户要加入的一个或多个用户组。例如,内容平台150可以请求应用112查询内容平台的质心模型以确定用户是否应该加入内容平台150的用户组中的任一。通常,mpc集群130可以确定用户的用户简档是否在内容平台150的用户组的质心的阈值距离内。如果是,对于用户简档在质心的阈值距离内的,mpc集群130可以请求应用112将用户添加到用户组。如果被用户和/或应用112批准,则应用112可以将用户组的用户组标识符添加到存储在客户端设备110处的用户组列表。
46.在一些实施方式中,应用112可以提供使用户能够管理该用户所分配到的用户组的用户界面。例如,用户界面可以使用户能够移除用户组标识符,防止所有或特定资源145、发布者140、内容平台150、数字组件提供者160和/或mpc集群130将该用户添加到用户组(例如,防止实体将用户组标识符添加到由应用112维护的用户组标识符的列表)。这为用户提供了更好的透明度、选择/同意和控制。
47.除了贯穿本公开的描述之外,可以向用户提供控件(例如,用户可以与之交互的用户界面元素),该控件允许用户就本文描述的系统、程序或特征是否以及何时可以能够收集用户信息(例如,关于用户社交网络、社交行为或活动、职业、用户偏好或者用户当前位置的信息),以及是否从服务器向用户发送内容或通信做出选择。此外,在存储或使用某些数据之前,可以以一种或多种方式对其进行处理,从而移除个人身份信息。例如,用户的身份可以被处理,使得无法确定用户的个人身份信息,或者用户的地理位置可以在获取位置信息的地方被概括(诸如城市、邮政编码或州级),从而无法确定用户的特定位置。因此,用户可以控制收集关于用户的什么信息、如何使用信息以及向用户提供什么信息。
48.用于生成和使用机器学习模型的示例过程
49.图2是用于生成质心模型并使用质心模型将用户添加到用户组的示例过程200的泳道图。过程200的操作可以,例如,由客户端设备110、mpc集群130的计算系统mpc1和mpc2以及内容平台150来实现。过程200的操作也可以被实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置执行指令可以使一个或多个数据处理装置执行过程200的操作。尽管下面的过程200和其他过程是根据两个计算系统mpc集群130来描述的,但是具有多于两个计算系统的mpc集群也可以用于执行类似的过程。
50.内容平台150可以通过请求在客户端设备110上运行的应用112为其各自的用户生成用户简档并将用户简档的秘密共享和/或加密版本上传到mpc集群130来启动对其质心模
型中的一个或多个的生成和/或更新。出于本公开的目的,由于秘密共享不是明文形式的,用户简档的秘密共享可以被视为用户简档的加密版本。在生成时,每个应用112可以存储用户简档的数据并响应于从内容平台150的接收的请求而生成更新的用户简档。由于不同内容平台150的用户简档的内容和机器学习模型不同,因此在用户的客户端设备110上运行的应用112可以维护多个用户简档的数据并生成多个用户简档,每个用户简档专用于特定的内容平台,或专用于特定的质心模型。
51.由于内容平台150(或数字组件提供者160)可以具有多个质心模型,例如,针对一个或多个用户组的每个集合有一个质心模型,内容平台150(或数字组件提供者160)可以请求应用112生成用户简档并例如利用单个请求同时上传多个质心模型和/或多个用户组的用户简档。
52.在客户端设备110上运行的应用112为客户端设备110的用户建立用户简档(202)。用户的用户简档可以包括与由用户发起的事件和/或可能已经由用户针对电子资源(例如,网页或应用内容)发起的事件相关的数据。这些事件可以包括电子资源的视图、数字组件的视图、用户交互,或者缺少与电子资源或数字组件的用户交互(例如,选择)、在与电子资源的用户交互之后发生(或不发生)的转换、和/或与用户和电子资源相关的其他适当事件。由于用户简档可以随时间改变,因此构建的用户简档可以被称为当前用户简档p
current

53.用户的用户简档可以专用于内容平台150,或由内容平台150拥有的选定的质心模型。例如,如下文参照图3更详细描述的,每个内容平台150可以请求应用112生成或更新专用于该内容平台150的用户简档。在另一示例中,内容平台150可以请求应用为内容平台150的每个质心模型生成或更新相应用户简档。
54.用户的用户简档p
current
可以是特征向量的形式。例如,用户简档p
current
可以是n维特征向量。n个维度中的每个都可以对应特定特征,并且每个维度的值可以是用户的特征的值。例如,一个维度可以针对特定数字组件是否被呈现给用户(或与之交互)。在这个示例中,如果数字组件已呈现给用户(或与之交互),该特征的值可以为“1”;如果该数字组件尚未呈现给用户(或与之交互),则该特征的值为“0”。用于生成用户的用户简档的示例过程在图3中图示出并在下文进行描述。
55.应用112生成用户的用户简档p
current
的秘密共享(204)。在该示例中,应用112生成用户简档p
current
的两个秘密共享[p
current,1
]和[p
current,2
],mpc集群130的每个计算系统一个。出于本公开的目的,在被秘密共享的元素(例如,值、向量等)周围使用括号[]来表示秘密共享,例如,[secret share]表示元素“secret share”的秘密共享。例如,应用可以将用户简档p
current
拆分为秘密共享,以保护用户简档p
current
的值免受mpc集群130中的受损计算系统的影响。应注意,每个秘密共享本身可以是其本身不会透露有关用户简档的任何信息的随机值。需要将两个秘密共享组合起来以得到用户简档。如果mpc集群130包括参与机器学习模型的训练的更多个计算系统,则应用112将生成更多个秘密共享,每个计算系统一个。用于构建用户简档和生成用户简档的秘密共享的示例过程在图3中图示出并在下文进行描述。
[0056]
应用112向计算系统mpc1提供用户简档p
current
的第一秘密共享[p
current,1
](206)。应用112还向计算系统mpc2提供用户简档的第二秘密共享[p
current,2
](208)。如下文参照图3所述,有多种方式向mpc集群130提供用户简档p
current
的两个秘密共享[p
current,1
]和
[p
current,2
],从而保护用户隐私和数据安全。
[0057]
计算系统mpc1和mpc2生成质心模型(210)。计算系统mpc1和mpc2可以为请求客户端设备110上传用户简档的内容平台150或数字组件提供者160的多个用户组生成质心模型。每次基于用户简档数据生成新的机器学习模型,可以被称为一个训练环节。计算系统mpc1和mpc2可以基于从多个客户端设备接收的用户简档的秘密共享生成质心模型。例如,计算系统mpc1和mpc2可以使用mpc技术基于用户简档的秘密共享生成质心模型。通常,为用户组生成质心模型包括计算作为用户组的成员的用户的用户简档的质心。用于生成质心模型的示例过程在图4和图6中图示出并在下文进行描述。
[0058]
由mpc集群130生成和维护的每个质心模型可以具有对应的唯一标识符。这使得应用112可以使用模型标识符来查询质心模型。例如,对于生成质心模型的请求可以包括质心模型的模型标识符,该模型标识符可以由所有者(例如,内容平台150或数字组件提供者160)分配。所有者然后可以使用模型标识符来请求应用112查询质心模型以确定是否将用户添加到与质心模型对应的用户组。
[0059]
应用112向mpc集群130提交用户组更新请求(212)。用户组更新请求可以包括用户的当前用户简档p
current
。在一些实施方式中,应用112可以将完整的用户简档p
current
发送到每个计算系统mpc1和mpc2。在其他实施方式中,为了保护用户隐私,应用112可以将用户简档p
current
的相应部分或秘密共享发送到每个计算系统mpc1和mpc2。
[0060]
用户组更新请求还可以包括要查询的一个或多个质心模型中的每个的模型标识符,以确定是否应该将用户添加到与质心模型对应的用户组。在一些实施方式中,应用112针对每个质心模型发送单独的用户组更新请求。在此示例中,每个用户组请求包括针对该一个质心模型的模型标识符。
[0061]
每个用户组更新请求还可以包括用于查询的阈值距离,例如,最大距离。如果用户的用户简档在用户组的质心的阈值距离内,则mpc集群130可以请求应用112将用户添加到相应的用户组。参照图5描述了用于传送用户组更新请求的示例数据格式和技术。
[0062]
mpc集群130确定是否应该将用户添加到一个或多个用户组(214)。通常,这可以包括确定用户的用户简档是否在一个或多个用户组中的每个的质心的阈值距离内。计算系统mpc1和mpc2可以执行安全的mpc过程以确定是否应该将用户添加到一个或多个用户组,使得计算系统mpc1和mpc2都不能访问任何明文形式的用户的简档或者将以明文形式为用户推荐的用户组标识符。用于为用户确定用户组的示例过程在图5和图6中图示出并在下文进行描述。
[0063]
mpc集群130向应用112提供零个或多个用户组标识符(216)。mpc集群130可以提供应该将用户添加到其中的每个用户组的用户组标识符。也就是说,mpc集群130可以提供具有用户的用户简档在其阈值距离内的质心的每个用户组的用户组标识符。为了保护用户隐私,每个计算系统mpc1和mpc2提供用户组标识符的一部分或用户组标识符的秘密共享,如下面参照图5和图6所述。
[0064]
应用112为用户更新用户组列表(218)。例如,应用112可以将用户添加到用户简档在其质心的阈值距离内的每个用户组。也就是说,应用112可以将从mpc集群130接收的每个用户组标识符添加到在用户的客户端设备110处维护的用户组列表。在一些实施方式中,应用112可以提示用户准许将用户添加到每个用户组。
[0065]
应用112传送对内容的请求(220)。例如,应用112可以响应于加载具有数字组件槽的电子资源而向内容平台150传送对数字组件的请求。在一些实施方式中,请求可以包括用户组的一个或多个用户组标识符,这些用户组包括用户作为成员。例如,应用112可以从用户组列表中获得一个或多个用户组标识符,并利用请求提供用户组标识符。在一些实施方式中,可以使用技术来防止内容平台能够将用户组标识符与用户、应用112和/或从其接收到请求的客户端设备112相关联。
[0066]
内容平台150传送内容到应用112(222)。例如,内容平台150可以基于用户组标识符选择数字组件并将该数字组件提供给应用112。在一些实施方式中,内容平台150与应用112或设备操作系统协作,基于用户组标识符选择数字组件,而不会将用户组标识符泄露到应用112或用户设备110以外。
[0067]
应用112显示或以其他方式实现接收的内容(224)。例如,应用112可以在电子资源的数字组件槽中显示接收到的数字组件。
[0068]
用于生成用户简档的示例过程
[0069]
图3是图示用于生成用户简档并将用户简档发送到mpc集群的示例过程300的流程图。过程300的操作可以例如由图1的客户端设备110来实现,例如,由在客户端设备110上运行的应用112或客户端设备110的操作系统来实现。过程300的操作也可以实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置执行指令可以使一个或多个数据处理装置执行过程300的操作。
[0070]
在用户的客户端设备110上执行的应用112接收事件的数据(302)。事件可以是,例如,在客户端设备110处呈现电子资源、在客户端设备110处呈现数字组件、在客户端设备110处与电子资源或数字组件的用户交互,或者数字组件的转换,或者缺少与所呈现的电子资源或数字组件的用户交互或转换。当事件发生时,内容平台150或数字组件提供者160可以将与该事件相关的数据提供给应用112以用于生成用户的用户简档。
[0071]
应用112可以为每个内容平台150或数字组件提供者160生成不同的用户简档。即,用户的用户简档并且对于特定内容平台150可能仅包括从该特定内容平台150接收的事件数据。这通过不与内容平台共享与其他内容平台的事件相关的数据来保护用户隐私。在一些实施方式中,应用112根据内容平台150的请求,可以为内容平台150拥有的每个质心模型生成不同的用户简档。基于设计目标,不同的质心模型可能需要不同的训练数据。例如,可以使用第一模型来确定是否将用户添加到用户组。可以使用第二模型来预测用户是否将与数字组件交互。在该示例中,用于第二模型的用户简档可以包括用于第一模型的用户简档所不具有的附加数据,例如,用户是否与数字组件交互。
[0072]
内容平台150可以以简档更新令牌m
update
的形式发送事件数据。简档更新令牌m
update
具有如下表1所示和描述的以下项。
[0073][0074][0075]
表1
[0076]
模型标识符识别用户简档将用于训练或用于进行用户组推断的质心模型。简档记录是n维特征向量,其包括专用于事件的数据,例如,事件的类型、电子资源或数字组件、事件发生的时间和/或内容平台150(或数字组件提供者160)想要在训练质心模型和进行用户组推断中使用的其他适当事件数据。该操作指示应用112基于简档记录来更新用户简档。使用内容平台150的私钥基于七个项生成数字签名。
[0077]
在一些实施方式中,为了在传送期间保护更新令牌m
update
,内容平台150在将更新令牌m
update
发送到应用112之前对更新令牌m
update
进行加密。例如,内容平台150可以使用应用的公钥,例如,pubkeyenc(m
update
,application_public_key)对更新令牌m
update
进行加密。
[0078]
在一些实施方式中,内容平台150可以将事件数据发送到应用112,而无需以简档更新令牌m
update
的形式对事件数据或更新请求进行编码。例如,源自在应用112内部运行的内容平台150的脚本可以经由脚本api将事件数据和更新请求直接传送到应用112,其中应用112依赖基于万维网联盟(w3c)源的安全模型和/或https(安全超文本传输协议)来保护事件数据和更新请求免受伪造或泄露或中间人攻击。
[0079]
应用112存储事件的数据(304)。如果事件数据被加密,则应用112可以使用其私钥对事件数据进行解密,该私钥与用于对事件数据进行加密的公钥对应。如果事件数据是以更新令牌m
update
的形式发送的,则应用112可以在存储该事件数据之前验证更新令牌m
update
。应用112可以通过如下方式来验证更新令牌m
update
:(i)使用与用于生成数字签名的内容平台150的私钥对应的内容平台150的公钥来验证数字签名以及(ii)确保令牌创建时间戳不
是过时的,例如,由时间戳指示的时间在进行验证的当前时间的阈值时间量内。如果更新令牌m
update
有效,则应用112可以存储事件数据,例如,通过存储n维简档记录。如果任一验证失败,则应用112可以忽略更新请求,例如,通过不存储事件数据。
[0080]
对于每个质心模型,例如,对于每个唯一模型标识符,应用112可以存储用于该模型的事件数据。例如,应用112可以为每个唯一模型标识符维护数据结构,该数据结构包括一组n维特征向量(例如,更新令牌的简档记录),并且为每个特征向量维护到期时间,所述。模型标识符的示例数据结构如下
[0081]
表2所示。
[0082]
特征向量到期n维特征向量到期时间
……
[0083]
表2
[0084]
在接收到有效的更新令牌m
update
时,应用112可以通过将更新令牌m
update
的特征向量和到期时间添加到数据结构来更新包括在更新令牌m
update
中的模型标识符的数据结构。定期地,应用112可以从数据结构中清除到期的特征向量以减小存储大小。表2中的到期时间与表1中所示的更新令牌m
update
中的到期时间相同。
[0085]
应用112确定是否生成用户简档(306)。例如,应用112可以响应来自内容平台150的请求生成用于特定质心模型的用户简档。请求可以是对生成用户简档并将用户简档上传到mpc集群130的请求。为了确保对生成并上传用户简档的请求的安全性,内容平台150可以向应用112发送上传令牌m
upload

[0086]
上传令牌m
upload
可以具有与更新令牌m
update
类似的结构,但具有不同的操作(例如,“更新服务器”而不是“累积用户简档”)。上传令牌m
upload
还可以包括用于操作延迟的附加项。操作延迟可以指示应用112延迟计算和上传用户简档的秘密共享,同时应用112累积更多事件数据,例如,更多特征向量。这使质心模型能够在一些关键事件之前和之后立即捕获用户事件数据,例如,加入用户组。操作延迟可以指定延迟时间段。在这个示例中,可以基于表1中的其他七个项和使用内容平台的私钥的操作延迟来生成数字签名。内容平台150可以使用应用的公钥以与更新令牌m
update
类似的方式对上传令牌m
upload
进行加密,例如,pubkeyenc(m
upload
,application_public_key),以便在传送期间保护上传令牌m
upload

[0087]
应用112可以接收上传令牌m
upload
,如果上传令牌m
upload
被加密,则对其进行解密,并且验证上传令牌m
upload
。这种验证可以与验证更新令牌m
update
的方式类似。应用112可以通过以下方式来验证上传令牌m
upload
:(i)使用与用于生成数字签名的内容平台150的私钥对应的内容平台150的公钥来验证数字签名以及(ii)确保令牌创建时间戳不是过时的,例如,由时间戳指示的时间在进行验证的当前时间的阈值时间量内。如果上传令牌m
upload
有效,则应用112可以生成用户简档。如果任一验证失败,则应用112可以忽略上传请求,例如,通过不生成用户简档而。
[0088]
在一些实施方式中,内容平台150可以请求应用112上传用户简档,而无需以简档上传令牌m
upload
的形式对上传请求进行编码。例如,源自在应用112内部运行的内容平台150的脚本可以经由脚本api将上传请求直接传送到应用112,其中应用112依赖基于w3c源的安全模型和/或https来保护上传请求免受伪造或泄漏或中间人攻击。
[0089]
如果确定不生成用户简档,则过程300可以返回操作302并等待来自内容平台150的另外的事件数据。如果确定生成用户简档,则应用112生成用户简档(308)。
[0090]
应用112可以基于存储的事件数据,例如,存储在表2所示的数据结构中的数据,来生成用户简档。应用112可以基于包括在请求中的模型标识符,例如,上传令牌m
upload
的第1项的内容平台etld 1域和第2项的模型标识符,来访问适当的数据结构。
[0091]
应用112可以通过聚合尚未到期的、在学习期中的数据结构中的n维特征向量来计算用户简档。例如,用户简档可以是尚未到期的、在学习期中的数据结构中的n维特征向量的平均值。结果是表示简档空间中的用户的n维特征向量。可选地,应用112可以将n维特征向量归一化为单位长度,例如,使用l2归一化。内容平台150可以指定可选的学习期。
[0092]
在一些实施方式中,衰减速率可以用于计算用户简档。由于可能有许多内容平台150使用mpc集群130来训练质心模型,并且每个内容平台150可以具有多个质心模型,因此存储用户特征向量数据可能会导致大量的数据存储需求。为了生成用于训练机器学习模型的用户简档,使用衰减技术可以显著减少在每个客户端设备110处存储的数据量。
[0093]
对于给定的质心模型,假设有k个特征向量{f1,f2,
…fk
},每个特征向量是一n维向量及其对应的年龄(record_age_in_secondsi)。应用112可以使用下面的关系式1来计算用户简档:
[0094]
关系式1:
[0095]
在该关系式中,参数record_age_in_secondsi是简档记录已经存储在客户端设备110处的以秒为单位的时间量,并且参数decay_rate_in_seconds是以秒为单位的简档记录的衰减速率(例如,在更新令牌m
update
的第6项中接收到)。通过这种方式,越近的特征向量的权重越大。这也使得应用112能够避免存储特征向量并且仅存储具有恒定存储的简档记录。应用112只需为每个模型标识符存储一n维向量p和一时间戳user_profile_time,而不是为每个模型标识符存储多个单独的特征向量。
[0096]
为了初始化n维向量用户简档p和时间戳,应用可以将向量p设置为n维向量,其中每个维度的值为零,并将user_profile_time设置到纪元(epoch)。为了在任何时间用新的特征向量f
x
更新用户简档p,应用112可以使用下面的关系式2:
[0097]
关系式2:
[0098]
当使用关系式2更新用户简档时,应用112还可以将用户简档时间更新到当前时间(current_time)。注意,如果应用112使用上述衰减速率算法计算用户简档,则省略操作304。
[0099]
应用112生成用户简档的秘密共享(310)。应用112可以使用伪随机函数将用户简档p
current
(例如,n维向量p
current
)拆分为秘密共享。也就是说,应用112可以使用伪随机函数prf(pi)来生成用户简档p
current
的两个秘密共享{[p
current,1
],[p
current,2
]}。精确的拆分可以取决于应用112使用的秘密共享算法和密码库。在一些实施方式中,应用使用shamir秘密共享方案。
[0100]
在一些实施方式中,应用使用加法秘密共享方案,即,应用112生成随机(或伪随机)n维向量nonce。在此示例中,应用可以生成第一秘密共享(也就是p
current
nonce)和第二
秘密共享(也就是p
current-nonce)。应用112然后可以删除n维向量nonce。
[0101]
为了阻止恶意应用112滥用上传api来上传用户简档的秘密共享,mpc集群130可以要求信任令牌颁发者对秘密共享进行签名。对于由用户组标识符li表示的m个用户组中的每个,以及mpc集群130中的计算系统mpc1和mpc2中的每个,应用112可以与信任令牌颁发者启动信任令牌赎回过程以获得签名的赎回记录(srr)。该m个用户组可以是:(i)由发送上传令牌m
upload
的内容平台150(或数字组件提供者160)管理的用户组和(ii)包括用户作为成员的的用户组,例如,在由应用112维护的用户组列表中识别的用户组。
[0102]
在信任令牌赎回过程中,应用112可以基于被视为信任的客户端设备110和/或应用112来赎回先前颁发给应用112的信任令牌。这可以包括将信任令牌和信息(例如,计算系统mpc1或mpc2的etld 1和绑定)发送给信任令牌颁发者,并请求赎回信任令牌。信任令牌颁发者可以通过向应用112提供srr来响应。应用112可以为每个srr赎回信任令牌。srr的示例格式如下
[0103]
表3所示。
[0104][0105]
表3
[0106]
应用112可以计算模型标识符的消息认证码(例如,基于散列的消息认证码(hmac))、为其生成srr的用户简档的秘密共享、用户组li、以及应用112的公钥(application_public_key),作为绑定。例如,绑定可以表示为hmac(model_id,share,li,application_public_key)。对于给定的用户简档和给定的质心模型,应用112可以计算该代码两次,用户简档p
current
的每个秘密共享一次,因此每个计算系统mpc1和mpc2一次。例如,用于计算系统mpc1的srr的参数“share”可以是[p
current,1
],并且用于计算系统mpc2的srr的参数“share”可以是[p
current,2
]。
[0107]
信任令牌颁发者可以生成时间戳和数字签名。信任令牌颁发者可以使用信任令牌颁发者的私钥生成数字签名。这使srr的接收者能够使用与该私钥对应的公钥来验证签名。
[0108]
对于由用户组标识符li表示的m个用户组中的每个,以及mpc集群130中的计算系
统mpc1和mpc2中的每个,应用112然后可以创建用于传送到mpc集群130的用户简档更新令牌m
profileupdate
。用户简档更新令牌m
profileupdate
的示例格式如下表4所示。
[0109][0110]
表4
[0111]
应用112可以生成时间戳和数字签名。应用112可以使用与第4项中的公钥对应的应用112的私钥生成数字签名。这使用户简档更新令牌m
profileupdate
的接收者能够使用与该私钥对应的公钥来验证签名。
[0112]
受损的应用112可以自己启动用户简档更新操作,而不是使用用户简档更新令牌m
profileupdate
按照内容平台150的请求进行操作。为了使mpc集群130能够检测这种情况,应用112可以可选地在用户简档更新令牌m
profileupdate
中包括从内容平台150接收的更新令牌mupdate

[0113]
应用112使用用户的用户简档传送请求以更新用于mpc集群130处的模型的用户简档(312)。每个请求都可以包括用户简档的秘密共享。例如,应用112可以向计算系统mpc1传送具有用户简档p
current
的第一秘密共享[p
current,1
]的用户简档更新令牌m
profileupdate
,并且向计算系统mpc2传送具有用户简档p
current
的第二秘密共享[p
current,2
]的用户简档更新令牌m
profileupdate
。应用112可以针对为其创建用户简档更新令牌的每个模型标识符执行该操作。
[0114]
在该过程中,对于mpc集群130中的两个计算系统mpc1和mpc2中的每个,应用112发送m个对更新用户简档的请求,m个用户组中的每个用户组一个。对于mpc集群130中的受损计算系统,将这m个请求关联起来是可能的。这种攻击可能允许受损计算系统了解应用112(及其用户)可能属于多个用户组以及这些组的标识符。
[0115]
为了减轻这种风险,可以利用mpc集群130。为了将秘密共享上传到计算系统mpc1,应用112可以向计算系统mpc2发送单个请求,其中所有用户简档更新令牌具有利用计算系统mpc1的公钥单独加密的用于计算系统mpc1的用户简档的第一秘密共享[p
current,1
]。该单个请求可以包括形式为pubkeyenc(m
profileupdate_1
,mpc1),pubkeyenc(m
profileupdate_2
,mpc1),

pubkeyenc(m
profileupdate_m
,mpc1)的一组加密结果,其中pubkeyenc表示概率非对称加密算法,并且mpc1表示计算系统mpc1的非对称公钥。
[0116]
pubkeyenc的概率性质提供语义安全。语义安全方案是一种从加密结果中只能提取可忽略的信息的方案。在不与计算系统mpc1共谋的情况下,计算系统mpc2无法从加密令牌的列表中推断出任何信息。计算系统mpc2可以分解令牌的列表并向计算系统mpc1发送m个请求,每个用户简档更新令牌m
profileupdate
一个请求。计算系统mpc2可以在连续请求之间使用随机或伪随机延迟。在另一个示例中,计算系统mpc2可以将来自在多个客户端设备110上运行的多个应用112的多个请求批量上传到计算系统mpc1,以防止将来自同一应用112的请求进行关联。
[0117]
应用112可以使用类似的技术来针对计算系统mpc2上传第二秘密共享。也就是说,应用112可以向计算系统mpc1发送单个请求,其中所有用户简档更新令牌具有利用计算系统mpc2的公钥单独加密的用于计算系统mpc2的用户简档的第二秘密共享[p
current,2
]。该单个请求可以包括形式为pubkeyenc(m
profileupdate_1
,mpc2),pubkeyenc(m
profileupdate_2
,mpc2),

pubkeyenc(m
profileupdate_m
,mpc2)的一组加密结果,其中mpc2表示计算系统mpc2的非对称公钥。计算系统mpc1可以分解令牌的列表并向计算系统mpc2发送m个请求,每个用户简档更新令牌m
profileupdate
一个请求。例如,使用如上所述的延迟或批量上传。鉴于计算系统mpc1和mpc2可能接收到大量的请求,计算系统mpc1或mpc2使用这些技术将令牌与单独的客户端设备110关联起来将是困难的,甚至是不可能的。
[0118]
计算系统mpc1和mpc2可以验证每个接收到的对更新用户简档的请求。在接收到具有加密结果pubkeyenc(m
profileupdate_i
,mpcj)的请求后,其中j是1或2(这取决于计算系统),计算系统mpcj对加密结果进行解密以恢复明文形式的用户简档更新令牌m
profileupdate_i
。计算系统mpcj验证用户简档更新令牌m
profileupdate_i
。为此,计算系统mpcj使用从srr第1.4项中的信任令牌颁发者域取得的公钥来验证srr的第1.5项中的数字签名(参见表3)。计算系统mpcj还可以使用将m
profileupdate_i
发送到mpc集群130的应用112的公钥来验证用户简档更新令牌m
profileupdate_i
(参见表4)的第7项中的数字签名。
[0119]
计算系统mpcj还可以验证srr的第1.3项的签名时间戳是否过时,例如,通过确保时间戳在执行验证的当前时间的阈值持续时间之内。计算系统mpcj还可以验证srr的第1.2项中的发布者来源与当前计算系统mpcj的身份是否匹配。计算系统mpcj还可以验证srr的第1.1项中的绑定值与根据用户简档更新令牌m
profileupdate_i
中的第1-4项计算的hmac(model_id,share,li,application_public_key)是否匹配。计算系统mpc还可以验证用户简档更新令牌m
profileupdate_i
的第5项中的令牌创建时间戳未过时,例如,通过确保令牌创建时间戳在执行验证的当前时间的阈值持续时间之内。计算系统mpcj还可以使用令牌创建时间戳来检测潜在的重放攻击,例如,基于具有相同令牌创建时间戳的多个用户简档更新令牌。如果这些验证中的任何一个失败,则计算系统mpcj可以忽略请求。
[0120]
每个计算系统mpc1和mpc2可以维护包括用于每个质心模型的数据的表(或其他适当的数据结构)。例如,该表可以是以下表5的形式。
[0121]
模型id用户组id所有共享的总和应用的数量model_idlisum_of_sharesnumber_of_applications
…………
[0122]
表5
[0123]
质心模型的行包括模型标识符(model_id)、模型中包含的用户组的用户组标识符(li)、针对质心模型接收到的用户简档的所有共享的总和、以及提交了针对质心模型的用户简档的秘密共享并且其秘密共享被包括在针对质心模型的所有共享的总和中的唯一的应用112的数量(例如,唯一客户端设备的数量)。所有共享的总和是与用户简档的n维向量对应的n维向量。
[0124]
当接收到计算系统mpcj之前从未接收到的模型/用户组对{model_id,li}时,计算系统mpcj可以将针对质心模型的所有共享的总和初始化为零向量并将应用的数量初始化为零。为了处理对为包含特定模型/用户组对的质心模型更新用户简档的有效请求,计算系统mpcj可以在表中找到针对质心模型/用户组对的行并为该质心模型/用户组对更新所有共享的总和以及应用的数量。例如,计算系统mpcj可以将接收到的用户简档的秘密共享添加到针对质心模型/用户组对的所有共享的总和中,并将应用的数量加一。
[0125]
用于生成和使用质心模型的示例过程
[0126]
图4是图示用于生成质心模型的示例过程400的流程图。过程400的操作可以例如由图1的mpc集群130来实现。过程400的操作也可以实现为存储在非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置执行指令可以使一个或多个数据处理装置执行过程400的操作。虽然过程400是根据生成多个质心模型来描述的,但是过程400也可以用于为单个用户组生成单个质心模型。
[0127]
每个计算系统mpc1和mpc2获得用户简档数据的表(402)。例如,该表可以是上述表5的形式。通过模型标识符和用户组id,计算系统mpc1可以获得一个表,该表包括针对每个模型标识符和用户组对的从应用112通过模型标识符和用户组id接收到的针对质心模型标识符中包括的用户组的第一秘密共享[p
current,1
]的总和。类似地,计算系统mpc2可以获得一个表,该表包括针对每个模型标识符和用户组对的从应用112通过模型标识符和用户组id接收到的针对质心模型标识符中包括的用户组的第二秘密共享[p
current,2
]的总和。
[0128]
每个计算系统mpc1和mpc2对每个模型标识符实施用户组大小阈值(404)。例如,每
个计算系统mpc1和mpc2可以对其表的每一行实施大小阈值。为了实施用户组大小阈值,每个计算系统mpc1和mpc2可以针对模型标识符确定应用的数量是否超过预定义的大小阈值。
[0129]
计算系统mpc1和mpc2相互通知满足大小阈值的表的行(例如,针对每个模型标识符/用户组id对的信息)(406)。例如,计算系统mpc1可以向计算系统mpc2发送应用的数量超过大小阈值的每一行的模型标识符、用户组标识符以及应用的数量。此外,计算系统mpc1可以向计算系统mpc2发送这些行中每一行的共享向量的总和(sum_of_shares1)的第二半部分给计算系统mpc2。基于下面讨论的水平分区策略,仅传送sum_of_shares1的第二半部分。
[0130]
类似地,计算系统mpc2可以向计算系统mpc1发送应用的数量超过大小阈值的每一行的模型标识符、用户组标识符以及应用的数量。此外,计算系统mpc2可以向计算系统mpc1发送这些行中每一行的共享向量的总和(sum_of_shares2)的第一半部分给计算系统mpc1。
[0131]
计算系统mpc1将其表中应用的数量超过大小阈值的行与从计算系统mpc2接收到的行进行匹配。例如,计算系统mpc1可以使用行的用户组标识符和/或模型标识符来匹配针对同一模型和用户组的对应行。类似地,计算系统mpc2将其表中应用的数量超过大小阈值的行与从计算系统mpc1接收的行进行匹配。例如,计算系统mpc2可以使用行的用户组标识符和/或模型标识符来匹配针对同一模型和用户组的对应行。在计算系统mpc1处以表格形式的这种大小阈值实施和交叉通知的示例结果如下表6所示。
[0132][0133]
表6
[0134]
类似地,在计算系统mpc2处以表格形式的大小阈值实施和交叉通知的示例结果如下表7所示。
[0135][0136]
表7
[0137]
对于每一行,在理想情况下,如果对于给定的模式标识符,“来自mpc1的应用的数量”和“来自mpc2的应用的数量”都存在,则两者的值应该相同。由于处理中的延迟,这两个值可能略有不同。如果两个值都存在并且两个值显著变化,或者如果值中的一个不超过大小阈值,则提供不超过大小阈值的值的计算系统可能是受损的。对于“来自mpc1的应用的数量”和“来自mpc2的应用的数量”中的值满足接近度阈值(例如,在彼此阈值差内)并且都超过大小阈值的那些行,计算系统可以计算其质心。
[0138]
计算系统mpc1和mpc2计算质心模型的质心(408)。计算系统mpc1可以计算满足接近度(例如,在阈值差内)和大小阈值的行中用户组的质心向量的第一半部分。计算系统mpc1可以使用下面的关系式3计算模型标识符和用户组(例如,一行)的质心。
[0139]
关系式3:
[0140]
类似地,计算系统mpc2可以使用下面的关系式4计算模型标识符和用户组(例如,一行)的质心。
[0141]
关系式4:
[0142]
用户组的质心通常不是隐私敏感的,并且不容易被操纵以允许恶意应用112、内容平台150或mpc集群130的计算系统mpc1和mpc2窃取用户简档。
[0143]
在此过程结束时,计算系统mpc1具有超过列表大小阈值的所有列表的质心的第一半部分。该过程的结果示例在以下面表8中的表格形式示出。计算系统mpc2针对每个模型标识符和用户组标识符的质心向量的第二半部分具有相同的数据。经训练的用户组的质心模型可以包括第一质心模型和第二质心模型,第一质心模型包括这些用户组中的每个的质心的第一半部分,第二质心模型包括每个用户组的质心的第二半部分。
[0144][0145]
表8
[0146]
图5是图示用于使用质心模型将用户添加到用户组的示例过程500的泳道图。过程500的操作可以例如由图1的mpc集群130和客户端设备110来实现,例如,在客户端设备110上运行的应用112。过程500的操作也可以实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置执行指令可以使一个或多个数据处理装置执行过程500的操作。
[0147]
响应于来自内容平台150或数字组件提供者160的请求,在客户端设备110上运行的应用112可以向mpc集群130查询为用户推荐的用户组。例如,请求可以是使用为请求者生成并由其拥有的质心模型来确定是否应将用户添加到由该请求者拥有的用户组。例如,内容平台150可以管理许多用户组,并且mpc集群130可以为用户组训练并使用一个或多个质心模型以确定是否应该将用户添加到那些用户组。
[0148]
为了请求应用查询质心模型,请求者可以向客户端设备110传送下载组令牌m
download
。令牌m
download
可以具有如下表9所示和描述的项。
[0149][0150][0151]
表9
[0152]
在一些实施方式中,内容平台150可以使用应用112的公钥对下载组令牌m
download
进行加密。内容平台150然后可以调用应用的api以经由它自己的或ssp的脚本来取得用户组标识符。应用112可以以与它对用户简档更新令牌m
profileupdate
进行解密和验证相同的方式对下载组令牌m
download
进行解密和验证。
[0153]
对于model_id、用户简档p和阈值距离d的给定元组,应用112应该取得所有用户组标识符li,其中|p-centroid(model_id,li)|《d。在该示例中,函数“centroid(model_id,li)”返回由表8中model_id和li标记的行中的质心列中的值。
[0154]
为了防止计算系统mpc1或mpc2从整体上了解到用户简档p,应用112将用户的用户简档p划分为多个部分(502)。应用112可以将用户简档划分为针对mpc集群130的每个计算系统的相应部分。在该示例中,应用112可以将用户简档拆分为两个部分,针对计算系统mpc1的第一部分和针对计算系统mpc2的第二部分。假设用户简档p是n维向量并且用户简档p={p1,p2,

,pn},则两个半部分p1和p2将是p1={p1,p2,

,p
n/2
}和p2={p
n/2 1
,

,pn}。计算系统mpc1和mpc2可以相应地计算他们的用户组的质心,即centroid(model_id,li)变成centroid1(model_id,li)和centroid2(model_id,li)。
[0155]
在一些实施方式中,应用112还可以添加差分隐私噪声以更好地保护用户隐私。例如,应用112可以例如在将用户简档p拆分为多个部分之前,将一次性用户噪声δp添加到用户简档p。
[0156]
令p’=p δp。应用112应用水平分区以将p’划分为两个半部分,p1’
和p2’
。令d’=d |δp|。应用112将第一半部分p1’
发送到计算系统mpc1(504)。例如,应用112可以将带有两个参数{p1’
,d’}的请求发送到计算系统mpc1。该请求可以取得所有用户组标识符li,其中|
p1’–
centroid1(model_id,li)|《d’。
[0157]
类似地,应用112将第二半部分p2’
发送到计算系统mpc2(506)。例如,应用112可以将带有两个参数{p2’
,d’}的请求发送到计算系统mpc2。该请求可以取得所有用户组标识符li,其中|p2’–
centroid1(model_id,li)|《d’。
[0158]
计算系统mpc1可以确定具有在用户简档p’的第一半部分p1’
的阈值距离d’内的质心的用户组(508)。计算系统mpc1可以为每个用户组确定第一半部分p1’
与用户组的质心之间的距离,即,|p1’–
centroid1(model_id,li)|。应用112然后可以确定哪些用户组具有小于距离d’的距离。这些用户组的用户组标识符可以用u1表示。
[0159]
类似地,计算系统mpc2可以确定具有在用户简档p’的第二半部分p2’
的阈值距离d’内的质心的用户组(510)。计算系统mpc2可以为每个用户组确定第二半部分p2’
与用户组的质心之间的距离,即,|p2’–
centroid1(model_id,li)|。应用112然后可以确定哪些用户组具有小于距离d’的距离。这些用户组的用户组标识符可以用u2表示。
[0160]
计算系统mpc1将用户组标识符集合u1传送到应用110(512)。类似地,计算系统mpc2将用户组标识符集合u2传送到应用110(514)。
[0161]
应用112为用户计算用户组集合(516)。应用112可以使用集合u1和u2计算满足|p

centroid(model_id,li)|《d的所有用户组标识符li的集合u。由于,应用112可以从u1和u2中计算集合u,因为u={li},其中|p-centroid(model_id,li)|《d且li∈u1∪u2。
[0162]
前面的方法假设用户组的质心不是隐私敏感的,并且向mpc1和mpc2泄漏浏览器应该加入的用户组的超集(即,u1和u2)是可接受的。在需要更强的隐私保护的情况下,可以采用以下方法。图6是图示具有更强隐私保护的用于生成质心模型并使用质心模型以将用户添加到与质心模型对应的用户组的示例过程600的泳道图。过程600的操作可以例如由图1的mpc集群130和客户端设备110来实现,例如,在客户端设备110上运行的应用112。过程600的操作也可以实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置执行指令可以使一个或多个数据处理装置执行过程600的操作。
[0163]
mpc集群130可以训练一个或多个用户组的质心模型。在此示例中,使用用户简档的秘密共享来查询质心模型。因此,每个计算系统mpc1和mpc2可以使用训练集的用户简档的秘密共享,例如,由客户端设备110上传的用户简档的秘密共享,来确定用户组的质心的相应秘密共享。
[0164]
对于每个用户组,计算系统mpc1计算用户组的质心的第一秘密共享(602)。由模型标识符model_id识别的质心模型和由用户组标识符li识别的用户组的质心可以表示为sum_of_profile(model_id,li)。作为用户组li的成员的所有用户简档pi的第一秘密共享[sum_of_profile
model_id,i,1
]=σ[p
j,1
]。也就是说,用户组li的质心的第一秘密共享表示用户组li中的用户简档pi的第一秘密共享的总和。
[0165]
对于每个用户组,计算系统mpc2计算用户组的质心的第二秘密共享(604)。由模型标识符model_id识别的质心模型和由用户组标识符li识别的用户组的质心可以表示为sum_of_profile(model_id,li)。作为用户组li的成员的所有用户简档pi的第二秘密共享[sum_of_profile
model_id,i,2
]=σ[p
j,2
]。也就是说,用户组li的质心的第二秘密共享表示用
户组li中的用户简档pi的第二秘密共享的总和。
[0166]
质心模型可以包括每个用户组的质心的第一共享和每个用户组的质心的第二共享。可以在计算系统mpc1上保密地维护每个质心的第一共享,并且可以在计算系统mpc2上保密地维护每个质心的第二共享。
[0167]
在客户端设备110上运行的应用112将用户的用户简档划分为秘密共享(606)。例如,应用112可以计算用于计算系统mpc1的用户简档p的第一秘密共享[p1]和用于计算系统mpc2的用户简档p的第二秘密共享[p2]。精确的拆分可以取决于应用112使用的秘密共享算法和密码库。在一些实施方式中,应用使用shamir秘密共享方案。
[0168]
应用112向计算系统mpc1发送对取得用户的用户组标识符的请求(608)。请求可以包括用户简档p的第一秘密共享[p1]。在一些实施方式中,请求包括查询令牌m
query1
。查询令牌的示例格式如下表9所示。
[0169]
应用112向计算系统mpc2发送对取得用户的用户组标识符的请求(610)。请求可以包括用户简档p的第二秘密共享[p2]。在一些实施方式中,请求包括查询令牌m
query2
。查询令牌的示例格式如下表9所示。
[0170][0171]
[0172]
表9
[0173]
在一些实施方式中,应用112可以发送两个单独的请求,如图6所示。为了节省客户端设备110的带宽和电池消耗,应用112可以将两个请求(例如,两个查询令牌m
query1
和m
query2
)组合成单个请求并将该单个请求发送到计算系统mpc1或mpc2之一。为此,应用112可以对打算发送给其他计算系统mpc1或mpc2的查询令牌进行加密。例如,应用112可以使用计算系统mpc2的加密公钥对查询令牌m
query2
进行加密,例如,使用概率非对称公钥算法。例如,应用112可以使用计算系统mpc2的公钥生成加密结果pubkeyenc(m
query2
,mpc2)。应用112然后可以将查询令牌m
query1
和加密结果pubkeyenc(m
query2
,mpc2)发送到计算系统mpc1。
[0174]
计算系统mpc1可以以与计算系统mpc1验证更新令牌m
profileupdate
类似的方式验证查询令牌m
query1
,如上面参照图3所描述的。计算系统mpc1也可以向计算系统mpc2传送带有加密结果pubkeyenc(m
query2
,mpc2)的请求。计算系统mpc2可以使用与用于对查询令牌m
query2
进行加密的公钥对应的私钥对加密结果进行解密。计算系统mpc2然后可以以与计算系统mpc2验证更新令牌m
profileupdate
类似的方式验证查询令牌m
query2
,如上面参照图3所描述的。
[0175]
在一些实施方式中,每个计算系统mpc1和mpc2可以为与质心模型相关联的多个用户组中的每个确定该用户组的用户组适格性eligible_groupi的相应秘密共享。用户简档和用户组的用户组适格性eligible_groupi指示,基于质心模型,用户的用户简档是否在用户组质心的阈值距离内。
[0176]
在这个示例中,每个计算mpc1和mpc2可以查找与模型标识符model_id关联的所有用户组li,其中1≤i≤n并且n是与模型标识符model_id关联的用户组的数量。对于每个用户组li,计算系统mpc1可以使用下面的关系式5计算欧几里德距离[d
i,1
]平方的第一秘密共享。
[0177]
关系式5:[d
i,1
]=∑([p1]
×
num_apps_group
i-[sum_of_profile_model_id
i,1
])2[0178]
在关系式5中,参数num_apps_groupi表示在用户组中并且用户简档被用于生成用户组li的质心的应用的数量(例如,不同用户的数量)。计算系统mpc1然后可以使用下面的关系式6为用户简档和用户组计算用户组适格性eligible_groupi的第一秘密共享[eligible_group
i,1
]。
[0179]
关系式6:[eligible_group
i,1
]=[d
i,1
]《(num_apps_groupi×
d)2[0180]
也就是说,计算系统mpc1可以计算欧几里得距离的第一秘密共享是否小于阈值距离。计算系统mpc2可以使用下面的关系式7和8以类似方式计算用户简档和用户组的用户组适格性eligible_groupi的第二秘密共享[eligible_group
i,2
]。
[0181]
关系式7:[d
i,2
]=∑([p2]
×
num_apps_group
i-[sum_of_profile_model_id
i,2
])2[0182]
关系式8:[eligible_group
i,2
]=[d
i,2
]《(num_apps_groupi×
d)2[0183]
每个计算系统mpc1和mpc2可以将它们用户组适格性的相应秘密共享传送到应用112。应用112然后可以组合秘密共享以确定是否要将用户添加到用户组。由于响应大小与模型中用户组的数量成正比,对于具有大量与质心模型相关联的用户组的内容平台,响应大小可以很大。但是,这种用于确定是否要将用户添加到用户组的技术可以在用户组数量少或带宽消耗不是问题的情况下使用。过程600的剩余操作提供了对这种技术的改进:当用户组的数量可能很大时可以使用这一技术并且大大减小了响应大小。
[0184]
从概念上讲,对于用户简档和用户组的用户组适格性eligible_groupi,应用112
[0195]
计算系统mpc2计算每个用户组li的估计标志flagi的第二秘密共享[flag
i,2
](620)。计算系统mpc2可以使用下面的关系式10计算每个用户组li的估计标志flagi的第二秘密共享[flag
i,2
]。
[0196]
关系式10:[flag
i,2
]=(1-[eligible_group
i,2
])
×
(1-([hi]-1)2) [eligible_group
i,2
]
×
([hi]-1)2[0197]
计算系统mpc1和mpc2重构每个用户组li的估计标志flagi(622)。计算系统mpc1和mpc2可以使用两个计算系统mpc1和mpc2之间的一个rpc,基于两个秘密共享[flag
i,1
]重构每个用户组li的估计标志flagi。如果用户组li的估计标志flagi的值为1,则应用准确地估计了是否应该将用户添加到用户组li。因为计算系统mpc1和mpc2都不知道应用112实际估计的是什么,所以知道用户组li的估计标志flagi的值不会向计算系统mpc1或mpc2泄漏任何信息。
[0198]
计算系统mpc1将每个用户组li的估计标志flagi传送到应用112(624)。例如,计算系统mpc1可以将用户组的{flag1,flag2,

}传送到应用112。明文flagi的具有为零或一的值,即,表示估计是否正确或不正确。也就是说,值为一意味着应用112正确地估计了是否应该将用户添加到第i组,而如果没有正确地估计,则值为零。因此,每个明文flagi可以用1比特表示。
[0199]
对于与质心模型相关联的每个用户组,计算系统mpc1可以返回单个比特(flagi)。对于具有一百万个用户组的质心模型,响应大小将为128千字节(kb),基于请求的所需延迟和将请求提交到mpc集群130的频率,这是可行的。
[0200]
应用112基于估计标志确定是否将用户添加到用户组(626)。对于每个用户组,应用可以计算flagi==(gi hi==1)。操作“==”表示相等操作,如果两个值相等则返回真。如果计算的结果为真,则应用112应该加入与质心模型相关联的第i个用户组。
[0201]
应用112然后可以从mpc集群130请求应用112应该加入的用户组的用户组标识符。为此,应用112可以利用任何合适的密集隐私信息检索(pir)算法和实施方式启动对计算系统mpc1和mpc2的密集隐私信息检索(pir)。一些实施方式依赖于分布点函数(dpf)。在这样的实施方式中,应用112可以生成dpf(628)。对于应用112应该加入的第i个用户组,应用112可以生成两个dpf,gi和hi,使得如果j=i时,gi(j) hi(j)=1,否则gi(j) hi(j)=0。
[0202]
应用112可以向计算系统mpc1发送第一请求(630)。第一请求可以包括应用112应该加入的每个用户组的点函数gi。
[0203]
应用112可以向计算系统mpc2发送第二请求(632)。第二请求可以包括应用112应该加入的每个用户组的点函数hi。
[0204]
对于每个点函数gi,计算系统mpc1计算用户组标识符结果的第一秘密共享并将其返回给应用112(634)。应用112可以使用下面的关系式11计算用户组标识符结果的第一秘密共享。
[0205]
关系式11:result
i,1
=∑
jgi
(j)
×
group_idj[0206]
对于每个点函数gi,计算系统mpc2计算用户组标识符结果的第二秘密共享并将其返回给应用112(636)。应用112可以使用下面的关系式12计算用户组标识符结果的第二秘密共享。
[0207]
关系式12:result
i,2
=∑
jhi
(j)
×
group_idj[0208]
应用112可以将用户添加到一个或多个用户组(638)。应用112可以使用针对用户组的第一共享result
i,1
和第二共享result
i,2
来重构用户应该加入的每个用户组的用户组标识符。例如,如果两个秘密共享是加法秘密共享,则应用112可以计算两个秘密共享的总和以获得用户组的用户组标识符。应用112然后可以将用户组标识符添加到用户组列表。
[0209]
在图6的这个过程600中,mpc集群130中的计算系统既不知道明文形式的用户组的质心,又不知道应用查询参数(即,用户简档),并且也不知道用户将要加入的用户组,因此保护了用户隐私。
[0210]
在隐私要求宽松的情况下,例如,计算系统mpc1和mpc2可以知道明文形式的查询结果,计算系统mpc1和mpc2可以重构由两个秘密共享产生的用户组适格性eligible_groupi,并且仅在相应eligible_groupi为真的情况下,在查询响应中将用户组标识符li返回给应用112。
[0211]
在一些实施方式中,质心模型的训练和质心模型的查询可以由聚合服务执行。聚合服务可以包括mpc集群130并与内容平台150(例如,而不是客户端设备110)进行通信。在这种情况下,当查询应用112应该加入哪些用户组时,出于隐私原因,应用112不可以将用户的用户简档发送到内容平台150以转发到mpc集群130。一个选项可以是配置内容平台150以将用户组的质心传送到应用112。但是,这可能会消耗大量带宽。
[0212]
另一个选项是内容平台150基于用户的安全移动id(例如,flocid)、从第一方cookie接收的第一方cookie数据、以及数字组件的url来推断用户组以供使用。然而,这可能不如上述技术准确。
[0213]
图7是图示用于基于用户的用户简档数据和质心模型来确定用户组结果(即,应用112是否应该加入一个或多个用户组)的示例过程700的流程图。过程700的操作可以例如由mpc集群130来实现。过程700的操作也可以实现为存储在可以是非暂时性的一个或多个计算机可读介质上的指令,并且由一个或多个数据处理装置执行指令可以使一个或多个数据处理装置执行过程700的操作。
[0214]
接收对用户组标识符的第一请求(702)。mpc集群130的第一计算系统,(例如,mpc1)可以从在客户端设备110上运行的应用112接收第一请求。应用112可以向mpc集群130的每个其他计算系统(例如,mpc2)发送相应第二请求。请求可以是要添加用户的用户组的用户组标识符,例如,用户的用户简档在用户组的质心的阈值距离内的每个用户组。
[0215]
通常,每个请求可以包括用户的用户简档的用户简档数据。第一请求可以包括第一用户简档数据,并且发送到每个第二计算系统的每个第二请求可以包括相应第二用户简档数据。用户简档数据可以基于所使用的加密技术而变化。
[0216]
例如,如果使用mpc过程和水平分区来确定质心,如参照图4所描述的,则每个请求的用户简档数据可以包括用户的用户简档的相应部分。如果mpc集群130的每个计算系统具有质心的一个秘密共享,则每个请求的用户简档数据可以包括用户的用户简档的相应秘密共享。在任一情况下,用户简档数据还可以包括质心模型的模型标识符和阈值距离。
[0217]
识别与模型标识符对应的用户组集合(704)。例如,内容平台150或数字组件提供者160可以让mpc集群130为用户组集合生成质心模型。mpc集群130中的每个计算系统可以存储用于识别与质心模型对应的用户组的用户组标识符的数据,例如,通过将模型标识符与每个用户组标识符链接。第一计算系统可以基于存储的数据识别用户组集合。每个用户
组标识符和模型标识符可以被称为质心模型和用户组标识符对。
[0218]
对于用户组集合中的每个用户组,识别该用户组的质心(706)。当mpc集群130生成质心模型时,mpc集群130可以确定与该质心模型对应的每个用户组的质心。质心的形式可以基于所使用的加密技术而变化。例如,如果使用mpc过程和水平分区来确定质心,如参照图4所描述的,则mpc集群130的每个计算系统可以具有基于用于生成质心的用户简档的秘密共享总和的各部分(例如,半部分)所确定的用户组的质心。如果使用了秘密共享,则mpc集群130的每个计算系统可以具有用户组的质心的秘密共享。
[0219]
确定用户组结果(708)。用户组结果指示要将用户添加到其中的一个或多个用户组。例如,用户组结果可以是指示具有在用户的用户简档的阈值距离内的质心的用户组。
[0220]
发送用户组结果(710)。例如,第一计算系统可以将其用户组结果传送到在客户端设备110上运行的应用112。
[0221]
第一计算系统可以取决于所使用的加密技术以不同的方式确定用户组结果,并且用户组结果可以基于所使用的加密技术而变化。例如,如果使用了水平分区,则第一计算系统可以针对用户组集合中的每个用户组确定第一用户简档数据中包括的用户简档的第一部分是否在由第一计算系统先前确定的用户组的质心的阈值距离内,如参照图5所描述的。在该示例中,用户组结果可以包括质心在用户的用户简档的阈值距离内的用户组的用户组标识符。每个其他计算系统可以使用其质心和接收到的用户简档的部分来执行类似的过程。每个计算系统可以提供用户组结果,该用户组结果包括质心在用户的用户简档的阈值距离内的用户组的用户组标识符。客户端设备的应用然后可以基于从每个计算系统接收的用户组结果来确定要将用户添加到其中的用户组的列表,如参照图5所描述的。
[0222]
如果使用了秘密共享,则用户组结果可以包括用于用户组集合中的每个用户组的估计标志,如参照图6所描述的。用户组的估计标志指示应用是否正确地估计了用户是否要被添加到用户组。应用112可以使用估计标志来确定是否要将用户添加到用户组,例如,基于应用112是否估计了用户应该被添加到用户组以及该估计是否正确。如果是,则应用112可以向mpc集群130查询与估计标志对应的用户组标识符。
[0223]
图8是可以用于执行上述操作的示例计算机系统800的框图。系统800包括处理器810、存储器820、存储设备830和输入/输出设备840。组件810、820、830和840中的每个可以互连,例如,使用系统总线850。处理器810能够处理用于在系统800内执行的指令。在一些实施方式中,处理器810是单线程处理器。在另一实施方式中,处理器810是多线程处理器。处理器810能够处理在存储器820中或在存储设备830上存储的指令。
[0224]
存储器820在系统800内存储信息。在一种实施方式中,存储器820是计算机可读介质。在一些实施方式中,存储器820是易失性存储器单元。在另一实施方式中,存储器820是非易失性存储器单元。
[0225]
存储设备830能够为系统800提供大量存储。在一些实施方式中,存储设备830是计算机可读介质。在各种不同的实施方式中,存储设备830可以包括,例如,硬盘设备、光盘设备、由多个计算设备通过网络共享的存储设备(例如,云存储设备)、或一些其他大容量存储设备。
[0226]
输入/输出设备840为系统800提供输入/输出操作。在一些实施方式中,输入/输出设备840可以包括以下中的一个或多个:网络接口设备(例如,以太网卡)、串行通信设备(例
如,rs-232端口)和/或无线接口设备(例如,802.11卡)。在另一实施方式中,输入/输出设备可以包括被配置为接收输入数据并将输出数据发送到外部设备860的驱动器设备,例如,键盘、打印机和显示设备。然而,也可以使用其他实施方式,诸如移动计算设备、移动通信设备、机顶盒电视客户端设备等。
[0227]
尽管已经在图8中描述了示例处理系统,但是本说明书中描述的主题和功能操作的实施方式可以在其他类型的数字电子电路中实现,或者在计算机软件、固件或硬件中实现,包括在本说明书中公开的结构及其结构等同物,或它们中的一种或多种的组合。
[0228]
本说明书中描述的主题和操作的实施例可以在数字电子电路中实现,或者在计算机软件、固件或硬件中实现,包括在本说明书中公开的结构及其结构等同物,或它们中的一种或多种的组合。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即,编码在计算机存储介质(或媒介)上用于由数据处理装置执行或控制其操作的计算机程序指令的一个或多个模块。可替代地或另外地,程序指令可以被编码在人工生成的传播信号上,例如,机器生成的电、光或电磁信号,生成所述信号用于对传送到合适的接收器装置以便由数据处理装置执行的信息进行编码。计算机存储介质可以是或被包括在计算机可读存储设备、计算机可读存储基板、随机或串行存取存储器阵列或设备、或者它们中的一个或多个的组合中。此外,虽然计算机存储介质不是传播信号,但计算机存储介质可以是被编码在人工生成的传播信号中的计算机程序指令的源或目的地。计算机存储介质也可以是或被包括在一个或多个单独的物理组件或介质(例如,多个cd、盘或其他存储设备)中。
[0229]
本说明书中描述的操作可以实现为由数据处理装置对存储在一个或多个计算机可读存储设备上或从其他源接收到的数据执行的操作。
[0230]
术语“数据处理装置”涵盖用于处理数据的所有种类的装置、设备和机器,包括例如可编程处理器、计算机、片上系统或前述的多个或组合。装置可以包括专用逻辑电路,例如,fpga(现场可编程门阵列)或asic(专用集成电路)。除了硬件之外,装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时间环境、虚拟机或其中一个或多个的组合的代码。装置和执行环境可以实现各种不同的计算模型基础设施,诸如网络服务、分布式计算和网格计算基础设施。
[0231]
计算机程序(也称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言编写,包括编译或解释语言、声明性或过程性语言,并且可以以任何形式部署,包括作为独立程序或者作为模块、组件、子例程、对象或适合在计算环境中使用的其他单元。计算机程序可以但不一定与文件系统中的文件对应。程序可以被存储在包含其他程序或数据的文件的一部分(例如,存储在标记语言文档中的一个或多个脚本)中、专用于所讨论的程序的单个文件中、或在多个协调文件(例如,存储一个或多个模块、子程序或代码的部分的文件)中。可以部署计算机程序以在一台计算机或位于一个站点或分布在多个站点并通过通信网络互连的多台计算机上执行。
[0232]
通过一个或多个可编程处理器执行一个或多个计算机程序以通过对输入数据进行操作并生成输出来执行动作,以执行本说明书中描述的过程和逻辑流。过程和逻辑流也可以由专用逻辑电路执行,并且装置也可以实现为专用逻辑电路,例如,fpga(现场可编程门阵列)或asic(专用集成电路)。
[0233]
适合于执行计算机程序的处理器包括,例如,通用微处理器和专用微处理器。通
常,处理器将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于根据指令执行动作的处理器以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或可操作地耦合以从其中接收数据或向其传送数据或两者兼有的用于存储数据的一个或多个大容量存储设备,例如,磁盘、磁光盘或光盘。然而,计算机不一定具有这样的设备。此外,计算机可以嵌入在另一个设备中,例如,移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制台、全球定位系统(gps)接收器或便携式存储设备(例如,通用串行总线(usb)闪存驱动器),仅举几个示例。适用于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储设备,包括例如半导体存储设备(例如,eprom、eeprom和闪存设备);磁盘(例如,内部硬盘或可移动盘);磁光盘;以及cd-rom和dvd-rom盘。处理器和存储器可以由专用逻辑电路补充或结合到专用逻辑电路中。
[0234]
为了提供与用户的交互,本说明书中描述的主题的实施例可以在计算机上实现,该计算机具有用于将信息显示给用户的显示设备(例如,crt(阴极射线管)或lcd(液晶显示器)监视器)以及用户可以通过其向计算机提供输入的键盘和定点设备(例如,鼠标或轨迹球)。也可以使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感官反馈,例如,视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。此外,计算机可以通过向由用户使用的设备发送文档和从其接收文档来与用户交互;例如,通过将网页发送到用户的客户端设备上的网络浏览器,以响应从网络浏览器接收到的请求。
[0235]
本说明书中描述的主题的实施例可以在计算系统中实现,该计算系统包括后端组件(例如,作为数据服务器)或包括中间件组件(例如,应用服务器)或包括前端组件(例如,具有用户可以通过其与本说明书中描述的主题的实施方式进行交互的图形用户界面或网络浏览器的客户端计算机),或者包括一个或多个这样的后端组件、中间件组件或前端组件的任一组合。系统的组件可以通过任何形式或媒介的数字数据通信(例如,通信网络)进行互连。通信网络的示例包括局域网(“lan”)和广域网(“wan”)、互联网络(例如,因特网)、和对等网络(例如,点对点(ad hoc)对等网络)。
[0236]
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离并且通常通过通信网络进行交互。客户端和服务器的关系是通过在各自的计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生的。在一些实施例中,服务器将数据(例如,html页面)传送到客户端设备(例如,为了向与客户端设备交互的用户显示数据并从其接收用户输入)。可以在服务器处从客户端设备接收在客户端设备处生成的数据(例如,用户交互的结果)。
[0237]
虽然本说明书包含许多具体的实施细节,但这些不应被解释为对任何发明的范围或可能要求保护的内容的限制,而是对特定发明的特定实施例专有的特征的描述。在本说明书中在分开的实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。反之,在单个实施例的上下文中描述的各种特征也可以在多个实施例中分开或以任何合适的子组合来实现。此外,尽管特征可能被描述为在某些组合中起作用,并且甚至最初如此要求保护,但在某些情况下,来自要求保护的组合的一个或多个特征可以从组合中删除,并且要求保护的组合可以自指向子组合或子组合的变型。
[0238]
类似地,虽然在附图中以特定顺序描绘了操作,但这不应被理解为要求以所示的
特定顺序或以相继顺序执行这些操作,或者执行所有所示的操作,以达到期望的结果。在某些情况下,多任务和并行处理可以是有利的。此外,上述实施例中各个系统组件的分离不应被理解为在所有实施例中都要求这样的分离,而应理解的是,所描述的程序组件和系统可以一般地集成在单个软件产品中或封装成多个软件产品。
[0239]
因此,已经描述了本主题的特定实施例。其他实施例在所附权利要求的范围内。在某些情况下,权利要求中所述的动作可以以不同的顺序执行,并且仍能达到期望的结果。此外,附图中描述的过程不一定需要所示的特定顺序或相继顺序来达到期望的结果。在某些实施方式中,多任务和并行处理可以是有利的。
再多了解一些

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

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

相关文献