可左右滑动选省市

生成加密数据结构的方法和系统实用新型专利

更新时间:2024-11-01
生成加密数据结构的方法和系统实用新型专利 专利申请类型:实用新型专利;
源自:美国高价值专利检索信息库;

专利名称:生成加密数据结构的方法和系统

专利类型:实用新型专利

专利申请号:CN202080005459.4

专利申请(专利权)人:谷歌有限责任公司
权利人地址:美国加利福尼亚州

专利发明(设计)人:克雷格·赖特,本杰明·R·克罗伊特尔,詹姆斯·罗伯特·克勒,亚瑟·阿苏西翁,叶夫根尼·斯克沃尔佐夫,劳拉·格蕾丝·布克,马胜,彭嘉钰,黄曦晨

专利摘要:公开了用于生成最小增量计数布隆过滤器以确定联网环境中的设备标识符和属性的计数和频率的系统和方法。该系统可以维护一组数据记录,该数据记录包括与网络中的设备相关联的设备标识符和属性。该系统可以生成包括与计数器寄存器相对应的坐标的向量。该系统可以标识散列函数以更新计数布隆过滤器。系统可以对数据记录进行散列处理,以提取指向一组计数器寄存器的索引值。该系统可以使最小增量计数布隆过滤器中、对应于计数器寄存器的最小值的位置进行递增。该系统可以获得包括公钥的聚合公钥。该系统可以使用聚合共享密钥对计数器寄存器进行加密,以生成加密向量。该系统可以将加密向量传送到联网工作者计算设备。

主权利要求:
1.一种生成表示标识符集合的加密数据结构的方法,所述标识符集合具有满足用于安全且有计算效率的传输的目标标准的属性,所述方法包括:通过包括一个或多个处理器和存储器的数据处理系统,在数据库中维护设备标识符集合,所述设备标识符集合中的每一个都包括设备属性;
通过所述数据处理系统生成向量数据结构,所述向量数据结构包括多个坐标,每个坐标对应于多个计数器寄存器的相应一个;
通过所述数据处理系统使用多个散列函数中的每一个对所述设备标识符集合中的设备标识符进行散列处理,以生成多个散列数据记录值;
通过所述数据处理系统从所述多个散列数据记录值中提取多个寄存器标识符,所述多个寄存器标识符中的每一个对应于所述多个计数器寄存器中的相应的计数器寄存器;
通过所述数据处理系统访问对应于所述多个寄存器标识符的所述多个计数器寄存器中的每一个,以标识满足最小值阈值的计数器寄存器集合;
通过所述数据处理系统使满足所述最小值阈值的所述计数器寄存器集合中的每一个递增;
通过所述数据处理系统,加密所述向量数据结构以创建加密数据结构,使得所述加密数据结构能够与第二加密数据结构组合;以及通过所述数据处理系统,将所述加密数据结构传送到工作者计算设备。
2.根据权利要求1所述的方法,进一步包括:
通过所述数据处理系统接收包括第一设备属性的第一设备标识符;以及通过所述数据处理系统,将包括所述第一设备属性的所述第一设备标识符存储为所述设备标识符集合的成员。
3.根据权利要求1所述的方法,进一步包括通过所述数据处理系统将均匀分布的散列函数标识为所述多个散列函数中的一个,其中,所述均匀分布的散列函数输出均匀分布值。
4.根据权利要求1所述的方法,其中,对所述设备标识符集合中的所述设备标识符进行散列处理进一步包括通过所述数据处理系统,将与所述设备标识符相关联的所述多个散列数据记录值中的每一个存储在所述数据库中。
5.根据权利要求1所述的方法,其中,提取所述多个寄存器标识符进一步包括:使用所述多个计数器寄存器中的若干个,对所述多个散列数据记录值中的每一个执行模数运算。
6.根据权利要求1所述的方法,其中,所述向量数据结构是包括第一向量和第二向量的矩阵数据结构中的所述第一向量,并且其中,生成所述向量数据结构进一步包括:通过所述数据处理系统,使用所述多个散列函数中的散列函数和所述设备标识符集合中的所述设备标识符,选择所选向量,其中,所选向量为所述第一向量或所述第二向量中的一个;以及通过所述数据处理系统使用所述散列函数和所述设备标识符集合中的设备标识符来更新所述矩阵数据结构的所选向量的坐标。
7.根据权利要求6所述的方法,其中,选择所选向量进一步包括:通过所述数据处理系统对所述设备标识符集合中的所述设备标识符进行散列处理,以生成散列设备标识符;
通过所述数据处理系统确定所述散列设备标识符中的满足预先确定位值的最低有效位的数量;以及通过所述数据处理系统基于所述散列设备标识符中的满足所述预先确定位值的最低有效位的数量,将所述第一向量选择为所选向量,或者将所述第二向量选择为所选向量。
8.根据权利要求7所述的方法,其中,更新所述矩阵数据结构的所选向量的坐标进一步包括:通过所述数据处理系统对所述散列设备标识符进行模数运算以计算计数器寄存器索引值;
通过所述数据处理系统使用所述计数器寄存器索引值选择所述坐标;以及通过所述数据处理系统递增使用所述计数器寄存器索引值所选择的坐标。
9.一种用于生成表示标识符集合的加密数据结构的系统,所述标识符集合具有满足用于安全且有计算效率的传输的目标标准的属性,所述系统包括:包括一个或多个处理器和存储器的数据处理系统,所述数据处理系统被配置为:在数据库中维护设备标识符集合,所述设备标识符集合中的每一个都包括设备属性;
生成向量数据结构,所述向量数据结构包括多个坐标,每个坐标对应于多个计数器寄存器的相应一个;
使用多个散列函数中的每一个对所述设备标识符集合中的设备标识符进行散列处理,以生成多个散列数据记录值;
从所述多个散列数据记录值中提取多个寄存器标识符,所述多个寄存器标识符中的每一个对应于所述多个计数器寄存器中的相应的计数器寄存器;
访问对应于所述多个寄存器标识符的所述多个计数器寄存器中的每一个,以标识满足最小值阈值的计数器寄存器集合;
使满足所述最小值阈值的计数器寄存器集合中的每一个递增;
加密所述向量数据结构以创建加密数据结构,使得所述加密数据结构能够与第二加密数据结构组合;以及将所述加密数据结构传送到工作者计算设备。
10.根据权利要求9所述的系统,其中,所述数据处理系统进一步被配置为:接收包括第一设备属性的第一设备标识符;以及
将包括所述第一设备属性的所述第一设备标识符存储为所述设备标识符集合的成员。
11.根据权利要求9所述的系统,其中,所述数据处理系统进一步被配置为将均匀分布的散列函数标识为所述多个散列函数中的一个,其中,所述均匀分布的散列函数输出均匀分布值。
12.根据权利要求9所述的系统,其中,所述数据处理系统进一步被配置为将与所述设备标识符相关联的所述多个散列数据记录值中的每一个存储在所述数据库中。
13.根据权利要求9所述的系统,其中,所述数据处理系统进一步被配置为使用所述多个计数器寄存器中的若干个,对所述多个散列数据记录值中的每一个执行模数运算。
14.根据权利要求9所述的系统,其中,所述向量数据结构是包括第一向量和第二向量的矩阵数据结构中的所述第一向量,并且其中,所述数据处理系统进一步被配置为:使用所述多个散列函数中的散列函数和所述设备标识符集合中的所述设备标识符,选择所选向量,其中,所选向量为所述第一向量或所述第二向量中的一个;以及使用所述散列函数和所述设备标识符集合中的设备标识符来更新所述矩阵数据结构的所选向量的坐标。
15.根据权利要求14所述的系统,其中,所述数据处理系统进一步被配置为:对所述设备标识符集合中的所述设备标识符进行散列处理,以生成散列设备标识符;
确定所述散列设备标识符中的满足预先确定位值的最低有效位的数量;以及基于所述散列设备标识符中的满足所述预先确定位值的最低有效位的数量,将所述第一向量选择为所选向量,或者将所述第二向量选择为所选向量。
16.根据权利要求15所述的系统,其中,所述数据处理系统进一步被配置为:对所述散列设备标识符进行模数运算以计算计数器寄存器索引值;
使用所述计数器寄存器索引值选择所述坐标;以及
递增使用所述计数器寄存器索引值所选择的坐标。 说明书 : 生成加密数据结构的方法和系统[0001] 相关申请的交叉引用[0002] 本申请要求以下的权益和优先权:[0003] 2020年2月14日提交的、名为“SECUREMULTI‑PARTYREACHANDFREQUENCYESTIMATION”的美国临时专利申请No.62/977,141;[0004] 2020年2月26日提交的、名为“CASCADINGLEGIONSCARDINALITYETIMATOR”的美国临时专利申请No.62/981,960;[0005] 2020年3月10日提交的、名为“EFFICIENTMETHODFORDIFFERENTIALLYPRIVATECARDINALITYESTIMATION”的美国临时专利申请No.62/987,645;以及[0006] 2020年3月30日提交的、名为“PRIVACYPRESERVINGSECURECARDINALITYANDFREQUENCYESTIMATION”的美国临时专利申请No.63/002,138,[0007] 它们中的每一个的内容通过引用全部并入本文。背景技术[0008] 在许多情况下,计算和数据分析系统可能会将大型数据集合的交集或并集确定为数据分析或处理的一部分。计算分布在多个源上的大型数据集合的并集、交集或频率通常涉及在多个源之间共享有关大型数据集合的信息。来自每个源的信息可以包括私人或受保护的信息,并且共享这类信息可能会对隐私和安全性产生负面影响。发明内容[0009] 本文讨论的系统和方法可以通过使用加密概率数据结构和同态加密方案来提供数据和数据计数系统的增强的安全性和保密性。在许多实施方式中,可以生成概率数据结构,诸如最小增量计数布隆过滤器、级联军团矩阵、连续军团数据结构等,以确定联网环境中的设备标识符和属性的计数和频率。可以维护包括与网络中的设备相关联的设备标识符和属性的数据记录集合,并且可以生成概率数据结构,包括可以对应于计数器寄存器的坐标、位置或值。可以使用散列函数来更新可被标识的数据结构,并且可以对数据记录进行散列处理以提取概率数据结构中的一个或多个位置的索引值、位置值或其他此类指针或标识符。可以递增、更新、翻转、置换或更改数据结构中的位置。可以获得包括公钥的聚合公钥,并且可以使用聚合共享密钥对数据结构进行加密以生成加密向量,并将该加密向量传送到联网的工作者计算设备。[0010] 这些系统和方法可以将概率数据结构传送到工作者计算设备,该概率数据结构可以比用于生成数据结构的数据记录小几个数量级,否则将被发送到一个或多个工作者计算设备。这可以减少通过网络传送的数据量,以及每个工作者计算设备处理的数据量,这是对其他多集合成员资格比较和计算系统的重大改进。此外,通过使用估算的直方图,该技术方案的各方面可以提供客户端标识符属性数据频率的准确估算,而无需经由网络传送受保护或隐私信息。这不仅防止标识符服务器暴露其关联设备的数量或属性,而且防止客户端设备暴露其保护或隐私信息,这是对联网系统的安全性和隐私性的重大改进。[0011] 本技术方案的至少一个方面针对一种生成加密概率数据结构的方法,该加密概率数据结构表示具有满足用于安全且有计算效率的传输的目标标准的属性的标识符集合。该方法可以由包括一个或多个处理器和存储器的数据处理系统实行、实现或以其他方式执行。该方法可以包括在数据库中维护设备标识符集合。该设备标识符集合中的每一个都可以包括设备属性。该方法可以包括使用该设备标识符集合和散列函数来生成概率数据结构。该方法可以包括加密概率数据结构以创建加密概率数据结构,使得可以将加密概率数据结构与第二加密概率数据结构组合。该方法可以包括将加密概率数据结构传送到工作者计算设备。[0012] 在一些实施方式中,该方法可以包括接收包括第一设备属性的第一设备标识符。在一些实施方式中,该方法可以包括将包括第一设备属性的第一设备标识符存储为设备标识符集合的成员。在一些实施方式中,该方法可以包括将均匀分布的散列函数标识为散列函数,其中,均匀分布的散列函数输出均匀分布值。在一些实施方式中,散列函数可以属于多个散列函数,并且该方法可以包括生成向量数据结构,该向量数据结构包括与相应的多个计数器寄存器相对应的多个坐标。向量数据结构可以是概率数据结构。在一些实施方式中,该方法可以包括对于包括设备属性的设备标识符集合中的每一个,使用多个散列函数来更新向量数据结构的相应的多个计数器寄存器中的计数器寄存器。[0013] 在一些实施方式中,该方法可以包括使用多个散列函数中的每一个来对设备标识符集合中的设备标识符进行散列处理,以生成多个散列数据记录值。在一些实施方式中,该方法可以包括由数据处理系统从多个散列数据记录值中提取多个寄存器标识符。多个寄存器标识符中的每一个可以对应于多个计数器寄存器中的相应的计数器寄存器。在一些实施方式中,该方法可以包括访问与多个寄存器标识符相对应的多个计数器寄存器中的每一个,以标识满足最小值阈值的计数器寄存器集合。在一些实施方式中,该方法可以包括递增满足最小值阈值的计数器寄存器集合中的每一个。[0014] 在一些实施方式中,该方法可以包括将与设备标识符相关联的多个散列数据记录值中的每一个存储在数据库中。在一些实施方式中,该方法可以包括使用多个计数器寄存器中的多个,对多个散列数据记录值中的每一个执行模数运算。在一些实施方式中,概率数据结构是包括第一向量和第二向量的矩阵数据结构,并且该方法可以包括使用散列函数和设备标识符集合中的设备标识符来选择所选向量。所选向量可以是第一向量或第二向量之一。在一些实施方式中,该方法可以包括使用散列函数和设备标识符集合中的设备标识符来更新矩阵数据结构的所选向量的坐标。[0015] 在一些实施方式中,该方法可以包括对设备标识符集合中的设备标识符进行散列处理以生成散列设备标识符。在一些实施方式中,该方法可以包括确定散列设备标识符中的满足预先确定位值的最低有效位的数量。在一些实施方式中,该方法可以包括基于散列设备标识符中的满足预先确定定位值的最低有效位的数量,将第一向量选择为所选向量,或者将第二向量选择为所选向量。在一些实施方式中,该方法可以包括对散列设备标识符执行模数运算以计算计数器寄存器索引值。在一些实施方式中,该方法可以包括使用计数器寄存器索引值来选择坐标。在一些实施方式中,该方法可以包括递增使用计数器寄存器索引值所选择的坐标。[0016] 本公开的至少一个其他方面针对一种用于生成表示标识符集合的加密概率数据结构的系统,该标识符集合具有满足用于安全且有计算效率的传输的目标标准的属性。该系统可以包括数据处理系统,该数据处理系统包括一个或多个处理器和存储器。该系统可以在数据库中维护设备标识符集合,该设备标识符集合中的每一个都包括设备属性。系统可以使用设备标识符集合和散列函数来生成概率数据结构。该系统可以加密概率数据结构以创建加密概率数据结构,使得该加密概率数据结构可以与第二加密概率数据结构组合。该系统可以将加密概率数据结构传送到工作者计算设备。[0017] 在一些实施方式中,系统可以接收包括第一设备属性的第一设备标识符。在一些实施方式中,系统可以将包括第一设备属性的第一设备标识符存储为设备标识符集合的成员。在一些实施方式中,系统可以将均匀分布的散列函数标识为散列函数,其中,均匀分布的散列函数输出均匀分布值。在一些实施方式中,散列函数属于多个散列函数,以及系统可以生成向量数据结构,该向量数据结构包括与相应的多个计数器寄存器相对应的多个坐标。向量数据结构可以是概率数据结构。在一些实施方式中,系统可以使用多个散列函数,对包括设备属性的设备标识符集合中的每个设备标识符更新向量数据结构中的相应的多个计数器寄存器中的计数器寄存器。[0018] 在一些实施方式中,该系统可以使用多个散列函数中的每一个,对设备标识符集合中的设备标识符进行散列,以生成多个散列数据记录值。在一些实施方式中,该系统可以从多个散列数据记录值中提取多个寄存器标识符。多个寄存器标识符中的每一个可以对应于多个计数器寄存器中的相应的计数器寄存器。在一些实施方式中,该系统可以访问与多个寄存器标识符相对应的多个计数器寄存器中的每一个,以标识满足最小值阈值的计数器寄存器集合。在一些实施方式中,该系统可以递增满足最小值阈值的计数器寄存器集合中的每一个。[0019] 在一些实施方式中,该系统可以将与设备标识符相关联的多个散列数据记录值中的每一个存储在数据库中。在一些实施方式中,该系统可以使用多个计数器寄存器中的多个来对多个散列数据记录值中的每一个执行模数运算。在一些实施方式中,概率数据结构是包括第一向量和第二向量的矩阵数据结构,并且该系统可以使用散列函数和设备标识符集合中的设备标识符来选择所选向量,其中,所选向量是第一向量或第二向量中的一个。在一些实施方式中,系统可以使用散列函数和设备标识符集合中的设备标识符来更新矩阵数据结构的所选向量的坐标。[0020] 在一些实施方式中,该系统可以对设备标识符集合中的设备标识符进行散列处理,以生成散列设备标识符。在一些实施方式中,系统可以确定散列设备标识符中的满足预先确定位值的最低有效位的数量。在一些实施方式中,该系统可以基于散列设备标识符中的满足预先确定位值的最低有效位的数量,将第一向量选择为所选向量,或者将第二向量选择为所选向量。在一些实施方式中,系统可以对散列设备标识符执行模数运算以计算计数器寄存器索引值。在一些实施方式中,该系统可以使用计数器寄存器索引值来选择坐标。在一些实施方式中,该系统可以递增使用计数器寄存器索引值所选择的坐标。[0021] 本技术方案的至少另一方面针对一种有效地变换表示标识符集合的加密概率数据结构以用于安全和计算上有效的网络传输的方法。该方法可以包括通过包括一个或多个处理器和存储器的工作者计算设备,在存储器中维护部分地对应于聚合公钥的私有解密密钥。该方法可以包括通过工作者计算设备,从发布者计算设备接收加密概率数据结构。该方法可以包括通过工作者计算设备使用私有解密密钥对加密概率数据结构进行解密,以生成部分解密概率数据结构。该方法可以包括通过工作者计算设备,使用确定性加密方案对部分解密概率数据结构进行加密以生成确定性加密概率数据结构。该方法可以包括通过工作者计算设备对确定性加密概率数据结构的至少两个元素进行置换,以创建混洗确定性加密数据结构。该方法可以包括通过工作者计算设备将混洗确定性加密概率数据结构传送到第二工作者计算设备。[0022] 在一些实施方式中,该方法可以进一步包括通过工作者计算设备生成包括私有解密密钥和第一公共加密密钥的密钥对。在一些实施方式中,该方法可以进一步包括通过工作者计算设备从第二工作者计算设备接收第二公共加密密钥。在一些实施方式中,该方法可以进一步包括由工作者计算设备聚合第一公共加密密钥和第二公共加密密钥以生成聚合公钥。在一些实施方式中,该方法可以进一步包括由工作者计算设备将私有解密密钥和聚合公钥存储在工作者计算设备的存储器中。[0023] 在一些实施方式中,该方法可以进一步包括通过工作者计算设备向发布者计算设备传送聚合公钥。在一些实施方式中,该方法可以进一步包括由工作者计算设备从第一发布者计算设备接收第一加密概率数据结构。在一些实施方式中,该方法可以进一步包括通过工作者计算设备从第二发布者计算设备接收第二加密数据结构。在一些实施方式中,该方法可以进一步包括通过工作者计算设备将第一加密概率数据结构和第二加密概率数据结构进行组合以创建加密概率数据结构。[0024] 在一些实施方式中,混洗确定性加密数据结构包括第一加密计数器寄存器和第二加密计数器寄存器,并且该方法可以进一步包括通过工作者计算设备向第二工作者计算设备在第一消息中将混洗确定性加密数据结构的第一加密计数器寄存器传送到第二工作者计算设备。在一些实施方式中,该方法可以进一步包括通过工作者计算设备向第二工作者计算设备传送在第二消息中将混洗确定性加密数据结构的第二加密计数器寄存器传送到第二工作者计算设备。[0025] 在一些实施方式中,该方法可以进一步包括由工作者计算设备生成随机变量以确定要添加到部分解密概率数据结构的噪声量。在一些实施方式中,该方法可以进一步包括由工作者计算设备基于基线噪声值和最大频率值创建噪声数组,该噪声数组包括多个噪声值。在一些实施方式中,该方法可以进一步包括由工作者计算设备对噪声数组进行置换以生成置换噪声数组。在一些实施方式中,该方法可以进一步包括通过工作者计算设备使用聚合的公钥对置换的噪声数组进行加密以生成加密的噪声数组。在一些实施方式中,该方法可以进一步包括通过工作者计算设备将加密的噪声数组传送到聚合器计算设备。[0026] 在一些实施方式中,该方法可以进一步包括通过工作者计算设备从第二工作者计算设备接收基线噪声值和最大频率值。在一些实施方式中,该方法可以进一步包括通过工作者计算设备使用聚合的公钥来对置换噪声数组的第一噪声值进行加密以生成第一加密噪声值。在一些实施方式中,该方法可以进一步包括通过工作者计算设备使用聚合公钥来对置换噪声数组的第二噪声值进行加密,以生成第二加密噪声值。在一些实施方式中,该方法可以进一步包括通过工作者计算设备聚合第一噪声值和第二噪声值以生成加密噪声数组。[0027] 在一些实施方式中,该方法可以进一步包括通过工作者计算设备生成确定性加密密钥和确定性解密密钥。在一些实施方式中,该方法可以进一步包括通过工作者计算设备将确定性加密密钥和确定性解密密钥存储在工作者计算设备的存储器中。在一些实施方式中,该方法可以进一步包括通过工作者计算设备使用确定性加密密钥对部分解密概率数据结构进行加密以生成确定性加密概率数据结构。在一些实施方式中,该方法可以进一步包括通过工作者计算设备从第三工作者计算设备接收第二混洗确定性加密第二概率数据结构。在一些实施方式中,该方法可以进一步包括通过工作者计算设备使用确定性解密密钥对第二混洗确定性加密概率数据结构进行解密,以生成第二混洗部分解密概率数据结构。在一些实施方式中,该方法可以进一步包括通过工作者计算设备将第二混洗部分解密概率数据结构传送到第二工作者计算设备。[0028] 本技术方案的至少另一方面针对有效地变换表示标识符集合的加密概率数据结构以用于安全和计算上有效的网络传输的系统。该系统可以包括工作者计算设备,该工作者计算设备包括一个或多个处理器和存储器。系统可以在存储器中维护部分地对应于聚合公钥的私有解密密钥。该系统可以从发布者计算设备接收加密概率数据结构。该系统可以使用私有解密密钥对加密概率数据结构进行解密,以生成部分解密概率数据结构。该系统可以使用确定性加密方案对部分解密概率数据结构进行加密以生成确定性加密概率数据结构。该系统可以对确定性加密概率数据结构的至少两个元素进行置换,以创建混洗确定性加密数据结构。该系统可以将混洗确定性加密概率数据结构传送到第二工作者计算设备。[0029] 在一些实施方式中,该系统可以生成包括私有解密密钥和第一公共加密密钥的密钥对。在一些实施方式中,该系统可以从第二工作者计算设备接收第二公共加密密钥。在一些实施方式中,该系统可以聚合第一公共加密密钥和第二公共加密密钥以生成聚合公钥。在一些实施方式中,该系统可以将私有解密密钥和聚合公钥存储在工作者计算设备的存储器中。在一些实施方式中,该系统可以将聚合公钥传送到发布者计算设备。[0030] 在一些实施方式中,该系统可以从第一发布者计算设备接收第一加密概率数据结构。在一些实施方式中,该系统可以从第二发布者计算设备接收第二加密数据结构。在一些实施方式中,该系统可以将第一加密概率数据结构和第二加密概率数据结构进行组合以创建加密概率数据结构。在一些实施方式中,混洗确定性加密数据结构包括第一加密计数器寄存器和第二加密计数器寄存器,并且该系统可以向第二工作者计算设备在第一消息中将混洗确定性加密数据结构的第一加密计数器寄存器传送到第二工作者计算设备。在一些实施方式中,该系统可以向第二工作者计算设备在第二消息中将混洗确定性加密数据结构的第二加密计数器寄存器传送到第二工作者计算设备。[0031] 在一些实施方式中,该系统可以生成随机变量以确定要添加到部分解密概率数据结构的噪声量。在一些实施方式中,该系统可以基于基线噪声值和最大频率值创建噪声数组,该噪声数组包括多个噪声值。在一些实施方式中,该系统可以对噪声数组进行置换以生成置换噪声数组。在一些实施方式中,该系统可以使用聚合公钥对置换噪声数组进行加密以生成加密噪声数组。在一些实施方式中,该方法可以将加密噪声数组传送到聚合器计算设备。[0032] 在一些实施方式中,该系统可以从第二工作者计算设备接收基线噪声值和最大频率值。在一些实施方式中,该系统可以使用聚合公钥来对置换噪声数组的第一噪声值进行加密以生成第一加密噪声值。在一些实施方式中,该系统可以使用聚合公钥来对置换噪声数组的第二噪声值进行加密,以生成第二加密噪声值。在一些实施方式中,该系统可以聚合第一噪声值和第二噪声值以生成加密噪声数组。[0033] 在一些实施方式中,该系统可以生成确定性加密密钥和确定性解密密钥。在一些实施方式中,该系统可以将确定性加密密钥和确定性解密密钥存储在工作者计算设备的存储器中。在一些实施方式中,该系统可以使用确定性加密密钥对部分解密概率数据结构进行加密以生成确定性加密概率数据结构。在一些实施方式中,该系统可以从第三工作者计算设备接收第二混洗确定性加密第二概率数据结构。在一些实施方式中,该系统可以使用确定性解密密钥对第二混洗确定性加密概率数据结构进行解密,以生成第二混洗部分解密概率数据结构。在一些实施方式中,该系统可以将第二混洗部分解密概率数据结构传送到第二工作者计算设备。[0034] 本技术方案的至少另一方面针对一种对多重集中的具有满足目标标准的属性的多个成员的安全且计算上有效的估算的方法。该方法可以例如由包括一个或多个处理器和存储器的聚合器计算设备执行。该方法可以包括通过聚合器计算设备从工作者计算设备接收混洗加密概率数据结构。该方法可以包括通过聚合器计算设备使用混洗加密概率数据结构来构造直方图。该方法可以包括通过聚合器计算设备估算表示与满足目标阈值的属性相关联的设备标识符的数量的频率值。该方法可以包括通过聚合器计算设备向发布者计算设备传送频率值,该频率值表示与满足目标阈值的属性相关联的设备标识符的数量。[0035] 在一些实施方式中,该方法可以包括通过聚合器计算设备将混洗加密概率数据结构传送到第二工作者计算设备。在一些实施方式中,该方法可以包括通过聚合器计算设备从工作者计算设备接收混洗部分解密概率数据结构。在一些实施方式中,该方法可以包括通过聚合器计算设备使用确定性解密密钥对混洗部分解密概率数据结构进行解密,以生成混洗概率数据结构。在一些实施方式中,该方法可以包括通过聚合器计算设备使用混洗概率数据结构来构造直方图。[0036] 在一些实施方式中,该方法可以包括通过聚合器计算设备从相应的多个发布者计算设备接收多个加密概率数据结构。在一些实施方式中,该方法可以包括通过聚合器计算设备将多个加密概率数据结构组合成组合加密概率数据结构。在一些实施方式中,该方法可以包括通过聚合器计算设备将组合加密概率数据结构传送到工作者计算设备。[0037] 在一些实施方式中,该方法可以包括通过聚合器计算设备将多个加密概率数据结构中的第一加密概率数据结构与多个加密概率数据结构中的第二加密概率数据结构相乘以使用同态加法组合多个加密概率数据结构。在一些实施方式中,该方法可以包括通过聚合器计算设备从工作者计算设备接收第一加密噪声数组。在一些实施方式中,该方法可以包括通过聚合器计算设备从第二工作者计算设备接收第二加密噪声数组。在一些实施方式中,该方法可以包括通过聚合器计算设备聚合第一加密噪声数组和第二加密噪声数组以生成聚合噪声数组。在一些实施方式中,该方法可以包括由聚合器计算设备将聚合噪声数组附加到组合加密概率数据结构。[0038] 在一些实施方式中,该方法可以包括由聚合器计算设备确定平均噪声值。在一些实施方式中,该方法可以包括由聚合器计算设备从直方图的至少一个值中减去平均噪声值以从直方图去除噪声。在一些实施方式中,混洗加密概率数据结构是噪声矩阵集合,该噪声矩阵集合中的每一个对应于发布者计算设备集合中的相应一个,并且该方法可以包括通过聚合器计算设备估算用于噪声矩阵集合的每个噪声矩阵的估算基数值。在一些实施方式中,该方法可以包括通过聚合器计算设备基于用于噪声矩阵集合的每个噪声矩阵的估算基数值,对噪声矩阵集合进行排序。在一些实施方式中,该方法可以包括通过聚合器计算设备基于排序来选择噪声矩阵集合的第一子集和噪声矩阵集合的第二子集。在一些实施方式中,该方法可以包括通过聚合器计算设备基于噪声矩阵集合的第一子集和噪声矩阵集合的第二子集构造直方图。[0039] 在一些实施方式中,该方法可以包括通过聚合器计算设备标识噪声矩阵的行,该行包括小于或等于该噪声矩阵的该行中的位置的数量的一半的零的数量,其中,该噪声矩阵的行对应于行索引值。在一些实施方式中,该方法可以包括通过聚合器计算设备使用行索引值来计算噪声矩阵的估算基数值。在一些实施方式中,该方法可以包括通过聚合器计算设备确定该噪声矩阵集合的第一噪声矩阵的估算基数值大于该噪声矩阵集合的第二噪声矩阵的估算基数值。在一些实施方式中,该方法可以包括通过聚合器计算设备将大于第二排名值的第一排名值分配给第一噪声矩阵。在一些实施方式中,该方法可以包括通过聚合器计算设备将第二排名值分配给第二噪声矩阵。[0040] 在一些实施方式中,该方法可以包括通过聚合器计算设备基于对噪声矩阵的第一子集的第一蒙特卡洛采样来生成第一去噪并集向量。在一些实施方式中,该方法可以包括由聚合器计算设备基于噪声矩阵的第二子集的第二蒙特卡洛采样来生成第二去噪并集向量。在一些实施方式中,该方法可以包括通过聚合器计算设备将第一去噪并集向量和第二去噪并集向量组合成组合并集数据结构。在一些实施方式中,该方法可以包括通过聚合器计算设备使用组合并集数据结构来构造直方图。[0041] 本技术方案的至少另一方面涉及一种对多重集中的具有满足目标标准的属性的多个成员的安全且计算上有效的估算的系统。该系统可以包括聚合器计算设备,该聚合器计算设备包括一个或多个处理器和存储器。该系统可以从工作者计算设备接收混洗加密概率数据结构。该系统可以使用混洗加密概率数据结构来构造直方图。该系统可以估算表示与满足目标阈值的属性相关联的设备标识符的数量的频率值。该系统可以向发布者计算设备传送频率值,该频率值表示与满足目标阈值的属性相关联的设备标识符的数量。[0042] 在一些实施方式中,该系统可以将混洗加密概率数据结构传送到第二工作者计算设备。在一些实施方式中,该系统可以从工作者计算设备接收混洗部分解密概率数据结构。在一些实施方式中,该系统可以使用确定性解密密钥对混洗部分解密的概率数据结构进行解密,以生成混洗概率数据结构。在一些实施方式中,该系统可以使用混洗概率数据结构来构造直方图。[0043] 在一些实施方式中,该系统可以从相应的多个发布者计算设备接收多个加密概率数据结构。在一些实施方式中,该系统可以将多个加密概率数据结构组合成组合加密概率数据结构。在一些实施方式中,该系统可以将组合加密概率数据结构传送到工作者计算设备。在一些实施方式中,该系统将多个加密概率数据结构中的第一加密概率数据结构与多个加密概率数据结构中的第二加密概率数据结构相乘以使用同态加法组合多个加密概率数据结构。[0044] 在一些实施方式中,该系统可以从工作者计算设备接收第一加密噪声数组。在一些实施方式中,该系统可以从第二工作者计算设备接收第二加密噪声数组。在一些实施方式中,该系统可以聚合第一加密噪声数组和第二加密噪声数组以生成聚合噪声数组。在一些实施方式中,该系统可以将聚合噪声数组附加到组合加密概率数据结构。在一些实施方式中,该系统可以确定平均噪声值。在一些实施方式中,该系统可以从直方图的至少一个值中减去平均噪声值以从直方图去除噪声。[0045] 在一些实施方式中,混洗加密概率数据结构是噪声矩阵集合,该噪声矩阵集合中的每一个对应于发布者计算设备集合中的相应一个,并且该系统可以估算用于噪声矩阵集合的每个噪声矩阵的估算基数值。在一些实施方式中,该系统可以基于用于噪声矩阵集合的每个噪声矩阵的估算基数值,对噪声矩阵集合进行排序。在一些实施方式中,该系统可以基于排序来选择噪声矩阵集合的第一子集和噪声矩阵集合的第二子集。在一些实施方式中,该系统可以基于噪声矩阵集合的第一子集和噪声矩阵集合的第二子集构造直方图。[0046] 在一些实施方式中,该系统可以标识噪声矩阵的行,该行包括小于或等于该噪声矩阵的该行中的位置的数量的一半的零的数量,其中,该噪声矩阵的行对应于行索引值。在一些实施方式中,该系统可以使用行索引值来计算噪声矩阵的估算基数值。在一些实施方式中,该系统可以确定该噪声矩阵集合的第一噪声矩阵的估算基数值大于该噪声矩阵集合的第二噪声矩阵的估算基数值。在一些实施方式中,该系统可以将大于第二排名值的第一排名值分配给第一噪声矩阵。在一些实施方式中,该系统可以将第二排名值分配给第二噪声矩阵。[0047] 在一些实施方式中,该系统可以基于对噪声矩阵的第一子集的第一蒙特卡洛采样来生成第一去噪并集向量。在一些实施方式中,该系统可以基于噪声矩阵的第二子集的第二蒙特卡洛采样来生成第二去噪并集向量。在一些实施方式中,该系统可以将第一去噪并集向量和第二去噪并集向量组合成组合并集数据结构。在一些实施方式中,该系统可以使用组合并集数据结构来构造直方图。[0048] 参考附图,在考虑下述描述以及附加权利要求后,本技术的这些和其他特征以及特性以及部件的结构相关元件和组合的操作方法和功能以及制造的经济性将变得更显而易见,所有附图构成本说明书的一部分,其中,相同的附图标记在各个附图中指定相应的部件。然而,应当明确地理解到,附图仅出于说明和描述的目的,并且不旨在作为对本发明的限制的定义。如说明书和权利要求书中所使用的,单数形式的“一”、“一个”和“该”包括复数指示物,除非上下文另外明确指出。附图说明[0049] 附图不旨在按比例绘制。各个附图中的相同的附图标记和名称指示相同的元件。为了清楚起见,并非每个组件都可能标记在每个附图中。在结合附图回顾下述描述时,本技术方案的这些和其他方面以及特征对于本领域普通技术人员将变得显而易见。[0050] 图1描绘了图示用于生成计数布隆过滤器以确定设备标识符的计数和频率的系统的示例实施方式的框图;[0051] 图2A描绘了图示将第一数据记录插入到计数布隆过滤器中的示例性系统流程图;[0052] 图2B描绘了图示将第二数据记录插入到标准计数布隆过滤器中的示例性系统流程图;[0053] 图2C描绘了图示将第三数据记录插入到计数布隆过滤器中的示例性系统流程图;[0054] 图3A描绘了图示将第一数据记录插入到最小增量计数布隆过滤器中的示例性系统流程图;[0055] 图3B描绘了图示将第二数据记录插入到最小增量计数布隆过滤器中的示例性系统流程图;[0056] 图3C描绘了图示将第三数据记录插入到最小增量计数布隆过滤器中的示例性系统流程图;[0057] 图4A描绘了用于生成和分发同态加密密钥的示例性系统的框图;[0058] 图4B描绘了用于生成加密向量并将其传送到第一工作者以进行处理的示例性系统的框图;[0059] 图4C描绘了用于由每个工作者处理的组合向量的部分解密和混洗的示例性系统的框图;[0060] 图5描绘了图示生成表示一个或多个数据记录的加密向量的示例性方法的流程图;[0061] 图6描绘了图示由工作者计算设备处理聚合加密向量的示例性方法的流程图;[0062] 图7描绘了图示在工作者计算设备进行处理期间生成和合并噪声的聚合加密向量的示例性方法的流程图;[0063] 图8示出了可以用来实现本文所讨论的任何计算机的说明性计算机系统的总体架构;[0064] 图9A和9B描绘了图示系统的各种实验参数的比较及其对结果计算的影响的示例性数据图;[0065] 图10A和10B描绘了图示系统的各种实验参数的比较及其对结果计算的影响的示例性数据图;[0066] 图11A和11B描绘了图示系统的各种实验参数的比较及其对结果计算的影响的示例性数据图;[0067] 图12描绘了图示如本文所述的FreqLogLog实施方式和计数布隆过滤器实施方式之间的比较的示例性数据图;[0068] 图13A和13B描绘了图示系统的各种实验参数的比较及其对结果计算的影响的示例性数据图;[0069] 图14A和14B描绘了图示系统的各种实验参数的比较及其对结果计算的影响的示例性数据图;[0070] 图15描绘了图示系统的各种实验参数的比较以及它们对包括添加噪声在内的结果计算的影响的示例性数据图;[0071] 图16A和16B描绘了图示系统的各种实验参数的比较及其对包括将噪声值添加到数据的结果计算的影响的示例性数据图;[0072] 图17A和17B描绘了图示如本文所述在替代配置中实现噪声的计数布隆过滤器实施方式的各种标准误差值的示例性数据图;[0073] 图18描绘了使用级联军团基数估算器方法的用户标识符估算的相对误差;[0074] 图19描绘了图示使用级联军团基数估算器方法进行的各种实验的图;[0075] 图20描绘了图示生成表示一个或多个数据记录的加密向量的示例性方法的流程图;以及[0076] 图21描绘了图示估算差分隐私噪声级联军团数据结构的集合的基数的示例性方法的流程图。具体实施方式[0077] 以下是与基于加密的概率数据结构来估算大型多重集的频率的方法、装置和系统有关的各种概念及实施方式的详细描述。可以以多种方式中的任何一种来实现上文介绍的以及下文更详细讨论的各种概念,因为所描述的概念不限于任何特定的实施方式。主要出于说明性目的,提供特定实施方式和应用的示例。[0078] 为了阅读本文描述的各种实施方式和技术的描述的目的,以下对说明书的各章节的简要描述可能是有帮助的。[0079] 章节A描述了实现计数布隆过滤器以差分隐私方式估算多重集的频率和基数的技术。可以利用本文描述的一种或多种实施方式来实现一种或多种这样的技术或其方面。[0080] 章节B描述了实现级联军团数据结构以估算多重集的频率和基数的技术。可以利用本文描述的一种或多种实施方式来实现一种或多种这样的技术或其方面。[0081] 章节C描述了实现差分隐私级联军团数据结构以以差分隐私方式估算多重集的频率和基数的另一种技术。可以利用本文描述的一种或多种实施方式来实现一种或多种这样的技术或其方面。[0082] 章节D描述了结合HyperLogLog草图属性和计数布隆过滤器以使用连续液体军团(liquidlegion)来估算多重集的频率和基数的技术。可以利用本文描述的一种或多种实施方式来实现一种或多种这样的技术或其方面。[0083] 章节E描述了实现指数广义布隆过滤器,以估算多重集的频率和基数的技术。可以利用本文描述的一种或多种实施方式来实现一种或多种这样的技术或其方面。[0084] 如本文中所使用的,术语“替代方式”不必指代排他性替代选项,如果适当的话,可以适当地组合使用被描述为彼此的“替代方式”的多种实施方式、技术、系统、方法或过程。[0085] 如本文所用,术语“草图”应当是指包含如本文所述的一个或多个数据元素、数据记录、变量、计数器寄存器、浮点值、字符串、索引值、存储器指针值或其任意组合的一个或多个数据结构。术语“草图”和“数据结构”有时可以互换使用。[0086] A.系统概述和计数布隆过滤器频率和基数估算[0087] 例如,通过维护与相应客户端设备相关联的客户端标识符,标识符服务器可以与客户端设备集合相关联。每个客户端标识符可以包括描述每个标识符服务器和客户端设备之间的关联的属性信息。属性信息可以包括关于客户端设备与标识符服务器之间的关系的信息(例如,网络浏览历史、交互数据、关联时间、网络分析数据等),并且可以包括从相应客户端设备接收的受保护的或私有的信息。不同的标识符服务器可以维护与相同的相应客户端设备相对应的不同的属性数据和不同的客户端标识符。通常,为了确定每个标识符服务器之间是否存在重复的属性数据,标识符服务器可以将可以包括受保护的信息或私有信息的属性数据共享给集中式服务器,以对任何客户端属性信息进行去重。[0088] 但是,所有客户端属性数据的传输都会给可扩展性带来问题。随着客户端标识符服务器的数量增加,经由网络传送的客户端设备属性数据的数量通常也增加。因为对于每个客户端设备,属性数据可以是详细的并且相对较大,所以大规模地传送这些信息可能会耗尽网络带宽和计算资源。此外,对于系统而言,无需在网络上传送受保护的或私有的属性信息,不仅计算用户标识符的总数,而且计算满足特定属性数据标准(诸如特定属性的频率)的客户端设备的数量都是有利的。[0089] 为了解决前述问题,该技术方案的系统和方法的各方面可以利用计数布隆过滤器来确定大量标识符服务器之间的公共客户端设备的数量。每个标识符服务器都可以生成计数布隆过滤器,该过滤器表示它们关联的一组客户端设备标识符和属性数据。计数布隆过滤器可以是计数器寄存器(有时被称为“存储桶”)的向量,其中,每个存储桶都与计数布隆过滤器中的对应于其位置或索引值的存储桶标识符相关联。每个标识符服务器可以将一个或多个散列函数应用于客户端设备标识符和属性数据,以生成一个或多个散列标识符。系统可以提取从散列标识符指向计数布隆过滤器的一个或多个存储桶的指针,并且递增这些存储桶。该系统可以使用最小增量技术,其中,仅递增布隆过滤器的最小存储桶。通过使用最小计数技术,系统不仅可以估算与每个标识符服务器关联的客户端设备的总数,还可以估算与指示最小属性值的相关联的属性数据的客户端设备的数量。计数布隆过滤器可以进一步是任何数字、整数或值的字符串,这些字符串可以跟踪数据集中的条目数,例如布隆过滤器或其他通用数据结构。估算有关客户端设备属性的频率的信息可能对确定客户端设备和标识符服务器之间的宏观数据趋势有用,例如,做出有关网络带宽路由和计算资源分配的决策。[0090] 为了维持每个标识符服务器的计数布隆过滤器的差分隐私,系统可以构造计数布隆过滤器的存储桶直方图,从而抽象存储桶。为了创建存储桶直方图,每个标识符服务器可以使用仅相应标识符服务器已知的私钥来逐个存储桶加密其计数布隆过滤器,并且将加密的布隆过滤器发送到已知的工作者计算设备(例如,工作者计算设备405、聚合器计算设备410等)。工作者计算设备可以将所有的标识符服务器加密的计数布隆过滤器组合为单个组合的加密数据结构。仍然利用每个标识符服务器的私钥对组合的布隆过滤器进行加密。然后,将组合的布隆过滤器顺序地传递到每个工作者计算设备,其可以使用共享密钥来解密组合的过滤器,然后(例如,确定性地、非确定性地等)加密每个存储桶。然后,工作可以通过添加和/或删除许多附加存储桶来施加噪声,使得当创建存储桶直方图时,将是差分隐私。工作者可以重新排列(例如,置换等)布隆过滤器,并将其发送给下一个工作者。这一直持续到第一工作者再次接收到最终的布隆过滤器为止。然后,工作者可以利用每个工作者的确定性密钥,对从0到最大期望频率的每个值进行加密。第一工作者可以构造存储桶直方图,并且将不能解密的任何值假定为等于最大频率,并且将其添加到该存储桶中。最终直方图被用来估算跨所有标识符服务器的唯一客户端设备的总数,以及所需属性数据的相应频率。[0091] 因此,该技术方案的各方面可以提供客户端设备标识符和数据计数系统的增加的安全性。通过使用加密计数布隆过滤器和同态加密方案,该技术方案的各个方面可以减少通过网络传送的数据量,这是对其他属性数据计数和比较系统的重大改进。此外,通过使用估算的直方图,该技术方案可以提供客户端标识符属性数据频率的准确估算,而无需经由网络传送受保护或私有信息。这不仅防止标识符服务器暴露其关联设备的数量或属性,而且还防止客户端设备暴露其受保护的信息或私有信息,这是对联网系统的安全性的重大改进。[0092] 在一些实施方式中,设备标识符和属性数据可以被用来跨标识符服务器以隐私保护的方式来计算K+值。如本文所述,可以使用计数布隆过滤器来计算K+的值,该值可以反映特定属性在标识符服务器上出现K次或多次的频率。一旦讨论了测量方法,便提出了一种用于以差分隐私方式,聚合跨多方的布隆过滤器的安全的多方通信(MPC)协议。[0093] 该技术方案的系统和方法可以描述行业广泛的努力,以安全和隐私保护的方式测量跨多个标识符服务器(例如,发布者、提供者等)的跨媒体到达率和归因。数百甚至数千个标识符服务器可以参与该系统。下文详述的用于计算K+值、交集、并集和属性频率的算法通过将计数布隆过滤器用于频率估算和将安全的MPC协议用于跨发布者组合布隆过滤器来解决问题的规模及其严格的隐私要求。最后,重要的是,本解决方案的各方面的这些系统和方法可以由不同的实体执行、实行或以其他方式操作,而不必担心任何实体集合会破坏所涉及的其他方的私有信息或受保护信息。[0094] 特定属性集的范围可以被定义为已暴露或以其他方式反映相应属性的客户端设备的数量。频率可以被定义为客户端设备与特定属性相关联的次数。K+值(例如,K+到达率等)可以描述一种度量,该度量通过大于用于给定属性的给定值K的频率来反映客户端设备的数量。换句话说,其是与特定属性K次或更多次相关联的客户端设备的数量。[0095] HyperLogLog(HLL)可以被用作基数估算器。基数估算器可以估算实际上非常大的一些多重集M中的元素的数量。HLL的特征在于低错误率、低方差和低内存使用率。而且,两个HLL的并集可以对计算是微不足道的,这意味着HLL可以在分布式计数应用中实现。称为FreqLogLog(FLL)的HLL的扩展名可以允许估算M中的元素的数量以及它们的频率。[0096] 布隆过滤器可以提供集合的紧凑表示。布隆过滤器可以实现插入和包含方法,但是由于紧凑的表示,存在包含方法小概率返回错误肯定。这意味着当元素可能不在集合中时,认为该元素在集合中。另一方面,排除错误否定,也就是说,如果包含方法返回“假”,则它可能总是正确的。[0097] 空布隆过滤器可以是大小为m的位数组,其所有位都被设置为零。可以通过将元素x传递给k个散列函数模数m,然后将布隆过滤器中的相应位设置为1来插入元素x(参见下文的示例)。包含方法可以以类似的方式工作,并且如果将x个模数为m的所有k个散列设置为1,则返回“真”,否则返回“假”。在下表1中图示了空布隆过滤器的示例。[0098]ID 0 1 2 3 4 5 6 7 8 9 10值 0 0 0 0 0 0 0 0 0 0 0[0099] 表1[0100] “值”行所指示的位串表示空布隆过滤器,其中,(例如,由“ID”行中的数字列所指示的)布隆过滤器中的每个位置被设置为二进制值0。在此,m的值为11,m个位置的标识符从0到10。[0101] 由于其相对较高的内存要求,(例如,相对于HLL),布隆过滤器可能通常不用于基数估算,但是可以通过评估下述公式来确定布隆过滤器的基数:[0102][0103] 在上上述公式中,k可以是布隆过滤器中使用的散列数,m可以是布隆过滤器中的位数,x可以是布隆过滤器中已填充的存储桶的数量,以及n可以是布隆过滤器的基数的估算的数量。[0104] 估算器的方差由下述公式近似。[0105][0106] 该方差可以基于泰勒展开。[0107] 偏置的估算可以通过下述公式提供。[0108][0109] 计数布隆过滤器(CBF)是可以提供删除操作的标准布隆过滤器的扩展。计数布隆过滤器的工作方式类似于标准布隆过滤器。在计数布隆过滤器时,将位数组替换为计数数组。为了完整起见,值得注意的是,使用删除操作可能会导致错误否定的可能性。图2A‑2C中所示的示例指示将三个元素插入其中元素之一(x)被插入两次的CBF。[0110] 最小增量描述了一种可以在许多插入操作过程中最小化CBF计数器值的技术。当使用最小增量将一些元素插入CBF时,应当递增的存储桶是具有最小值的存储桶。最小存储桶值可以表示正被插入的元素先前可能被插入计数布隆过滤器中的最大次数。该技术可以被用来记录计算机网络中的流量,但是代替使CBF的存储桶递增1,流量监控应用可以使存储桶的值递增数据包中的字节数。这样可以避免高估流量。在图3A‑3C中示出了最小增量计数布隆过滤器的示例。[0111] 用计数布隆过滤器估算K+值可以包括迭代应用上述布隆过滤器基数估算公式。对于基本(1+)值,该技术方案可以直接应用公式,而对于K+值,该技术方案可以当用大于或等于K的值填充那些存储桶时计数,然后应用相同公式。例如,可以通过将值0、1或2的所有存储桶都计数为零来确定3+值。一个重要的观察结果是,该方法可以使用CBF存储桶值的直方图,其中,直方图区间范围为[0,1)、[1,2)、[2,3)等。可以通过观察CBF的并集由逐个存储桶求和它们来实现,解决多标识符服务器情形,当然,假设CBF具有相同的配置(即,相同的m、k和散列函数),并且从相同的标识符空间填充。[0112] CBF直方图的安全计算[0113] 该协议的输入可能来自大量的标识符服务器(例如,发布者、提供者等)(数百个或几千个),这使得简单的MPC方法效率太低。相反,将遵循“工作者/客户端”MPC模式,其中,少数工作者(例如3名)可以使用来自大量发布者的数据来参与交互式MPC协议。所提供的安全性是,除非所有工作方均已损坏,否则标识符服务器的数据可以仍然私密。在该方案中,不同的实体可以操作不同的工作者。[0114] 该协议可以向充当工作者的任意许多方开放。在许多实施方式中,在执行协议之前,工作者的数量是固定的,并且其余工作者知道工作者的集合。请注意,协议的初始化可能要求工作者数量为二次方程的通信。[0115] 下文提供了该协议的简要概述。[0116] 每个工作者(W)可以生成加法同态(例如ElGamal)密钥对(SK,PK)。将所有工作者的公钥组合以创建可以分配给每个标识符服务器的超级公钥(UPK)。[0117] 每个发布者(P)可以创建CBF,并且利用UPK对其在逐个存储桶加密,然后将其发送给单个众所周知的(例如,受信任的、随机的等)工作者。[0118] 然后,第一工作者可以通过逐存储桶对发布者CBF进行求和而将发布者CBF组成合最终组合CBF。请注意,仍然利用每个工作者的私钥加密最终的CBF。[0119] 接下来,可以将布隆过滤器传递给每个工作者。[0120] 工作者可以利用其SK解密CBF,并且确定性地加密每个存储桶。[0121] 工作者可以通过添加或删除多个附加存储桶来施加噪声,使得当创建存储桶直方图时,该存储桶直方图将具有差分隐私。[0122] 然后,工作者可以置换布隆过滤器。[0123] 然后,工作者可以将置换的布隆过滤器发送给下一个工作者。[0124] 重复该过程,直到第一工作者获得了在完全确定性加密方案下对其加密的置换的布隆过滤器(例如,环形配置等)。[0125] 接下来,工作者可以利用工作者的确定性密钥的每一个,对从0到最大期望频率的每个值进行加密。[0126] 第一工作者可以构造存储桶直方图。假定无法解密的任何值等于最大频率,并且可以将其添加到该存储桶中。[0127] 最后,直方图被用来估算到达率和和频率直到最大频率,这些估算是协议的最终输出。[0128] ElGamal加密[0129] ElGamal加密是一种简单的公钥加密方案,其可以被修改为支持阈值解密。可以将其视为Diffie‑Hellman密钥交换协议的离线变体,并且可以使用椭圆曲线密码术来实现。对于带有生成器G的椭圆曲线组的基本方案如下。[0130] KeyGen:选择随机整数X对q(椭圆曲线组的阶数)求余数。这是用于解密的私钥;公钥是G^X。[0131] Encrypt(pk,m):选择随机整数R对q求余数。密文是(G^R,mpk^R),即(G^R,mG^(XR))。[0132] Decrypt(sk,m):使用密钥计算G^(XR),然后m=mpk^R/G^(XR)。[0133] 该方案的阈值版本可以规定,使用秘密共享方案(例如,Shamir秘钥共享方案等),将秘钥X分配为共享。各方可以使用其共享密钥的份额来计算“公钥份额”,然后可以通过在指数中组合密钥份额(注意,组合份额是线性运算,其可以使用组运算在指数中完成)来计算“真实”公钥。在阈值为N‑of‑N的情况下,可以通过简单地将所有“公钥份额”相乘来完成。通过使用密钥份额执行解密运算,并以与计算公钥相同的方式组合结果,可以计算出解密份额。[0134] 阈值变量的简单示例如下:两个工作者生成密钥G^X和G^Y。如果这些公钥相乘,得到G^(X+Y),其可以被用作用于加密的公钥;相应的密钥为X+Y。但是请注意,对于解密,可以(按任何顺序)逐个应用原始密钥,因此,单个一方不需要知道联合私钥。[0135] ElGamal加密可以包括附加有用属性:它可以支持乘法同态。给定两个密文(G^R1,M1G^XR1),(G^R2,M2G^XR2),可以计算(G^(R1+R2),M1M2G^X(R1+R2)),其可以解密为两条消息的乘积。注意,这是消息的离散对数的加法同态;换句话说,可以使用它来计算(G^(R1+R2),G^(M1+M2)G^X(R1+R2)),它适用于较小的消息空间(足够小以有效地计算离散对数)。[0136] 在我们的案例中,以指数执行求和可以就足够了。计数布隆过滤器估算可以使用小于阈值K的元素的计数,该计数足够小以使查找表足以进行解码。在此还存在小的安全性益处:聚合器可以了解超过阈值的值的计数,而无需了解这些值是什么。为此,工作者可以使用确定性加密(例如Pohlig‑Hellman密码等),这可能涉及每个工作者选择应用于所有部分解密的存储桶的机密指数;这也可以经由同态来执行(这等效于将生成器G更改为一些随机组元素)。[0137] 使用布隆过滤器的方法,(n‑1)个串通HBC[0138] 在该方法中,工作者可以使用加法同态加密,利用阈值私钥来计算其计数布隆过滤器的总和,然后在将结果显示给聚合器之前仍安全的混洗和确定性加密。可以通过一方使用加法同态性直接计算总和(例如,通过让发布者将其布隆过滤器的加密发送给指定的工作者等)。[0139] 为了有效地置换,该技术方案可以使用加密方案的阈值属性。为了避免信任任何一方来执行置换,该解决方案可以让每一方随机置换过滤器(请注意,两个置换的合成是置换)。接收到加密的布隆过滤器并计算出初始和的第一方可以执行第一置换。然后,该方可以将加密的布隆过滤器重新随机化,然后应用其解密密钥份额对结果进行部分解密,最后应用其确定性方案的密钥份额。然后,可以将混洗/重新随机化的密文发送到下一方,最后发送到聚合器以进行最终解密。[0140] 步骤1:设置ElGamal密钥[0141] 作为第一步,工作者如上所述设置阈值ElGamal密钥,然后使组合的密钥可用于每个发布者。[0142] 步骤2:输入[0143] 该协议可以计算总和。标识符服务器可以利用由工作者提供的复合公钥对其计数布隆过滤器逐个存储桶加密,并且将密文发送到可以任意选择的“第一”方。然后,该方可以使用对密文进行的同态加法运算来计算总和,并且可以通过对在确定性加密下允许聚合器学习的值进行加密来附加解码查找表。该方可以是聚合器本身,但在这种情况下,聚合器在将密文发送给下一方进行置换之前,不应当部分解密密文‑聚合器的解密应当是确保聚合器了解结果的最后一步(置换、确定性加密的布隆过滤器)。[0144] 步骤3:混洗[0145] 接下来,第一方可以部分解密密文,应用其确定性加密密钥,对加密的过滤器(而不是查找表)进行混洗,并且将所有内容转发给第二方。然后,第二方可以被部分解密,在其密钥下应用确定性加密,并且混洗(例如,置换、更改概率数据结构中的位置的顺序或以其他方式交换位置等),并且将所有内容转发给第三方等等,直到仅剩余解密涉及聚合者的密钥为止。[0146] 通过为秘密共享方案设置阈值N,该技术方案可以规定:工作者的任何串通子集都不能侵犯任何其他方的隐私。这种置换对于工作者之间的任意串通也可以保持秘密,因为仅一名工作者需要保持其置换秘密。另一个选择是使用MPC协议计算大于K的值的总和,但是这样做可能会更计算密集。[0147] 分布式差分隐私噪声生成[0148] 噪声的添加以分布式方式发生,使得添加到每个直方图区间的总噪声可以遵循如本文所述的双尾几何分布。具体来说,对于每个直方图区间[0,最大频率],每个工作者可以生成随机变量(例如Polya(负二项式的特殊情况)随机变量等),该随机变量可以确定该工作者可以添加多少噪声到每个区间。因此,因为适当构造的随机变量的总和可以等于双尾几何随机变量,所以每个区间可以接收期望的噪声量。为了实现此目的,对上述协议进行了一些改进。[0149] 在混洗(例如,每个工作者进行置换)开始之前,可能会发生下述情况。[0150] 工作者可以同意噪声基线,该噪声基线可以是整数,该整数很有可能大于由单个工作者所产生的任何负噪声值。将此值称为B。[0151] 每个工作者可以生成max_frequency+1个随机变量(例如Polya随机变量等)[X0,X1,...Xi,...,Xmf]并且创建大小为B‑Xi的数组。将此称为噪声数组。[0152] 然后,对于每个i,可以用i的B–Xi个副本填充噪声数组。[0153] 然后,每个工作者可以混洗其噪声数组,并且利用ElGamal公钥对每个值进行加密。[0154] 然后,每个工作者可以将其噪声数组发送给工作者,以开始混洗。[0155] 然后,在如上协议中所述,将所有CBF求和之前,第一工作者可以将所有噪声数组附加到CBF。[0156] 最终,在构建直方图之后,聚合器可以从每个直方图存储桶中减去B*工作者的数量,从每个区间基本上去除噪声基线,并且只留下了两侧几何噪声。[0157] 对上述协议的至少一种保护将用于标识符服务器保持其自己的阈值,从而除非它们已经包含N个客户端标识符或属性,否则它们将不会将集合用于计算。在混洗步骤期间,将DP噪声添加到布隆过滤器中也将有助于减轻顾虑。[0158] 通过将CBF用于基数/频率估算的基本问题是,保持固定错误率所需的存储桶数量在其大小正被估算的集合的大小方面线性地增长。此外,安全协议要求每个发布者对生成的每个CBF的每个存储桶进行加密。[0159] 问题的规模可以假定每天可以处理约500亿个标识符,以便计算各种属性的到达率值。如果假设布隆过滤器为此增加了3倍的开销,则每个标识符服务器可以执行1500亿个存储桶加密,该加密使用上述文档中的数字意指需要约42个CPU小时。假设64字节的密文,则每天可以提供大约9.6TB的数据传输。这是相当可观的,尤其是当反映出它是适用于所有规模的发布商的常数时。幸运的是,有一些方法可以减轻这种开销。[0160] 首先,可以免除标识符服务器侧的加密,从而避免来自伴随密文扩展的通信开销。在此,对于每个存储桶,标识符服务器可以生成与存储桶的值相加的k个随机数,使得CBF由k个数组表示,当逐个元素求和时,这些数组等于CBF。然后,标识符服务器可以将数组(以下称为CBF份额)发送给不同的MPC工作者,这些MPC工作者可以如上所述在应用ElGamal加密层之前,求和跨发布者的CBF份额。加密后,每个工作者都可以将加密的CBF份额发送给可以对其进行组合的单个工作者,其结果是完全组合的x‑pubCBF。从此处开始,如上所述的协议的解密/混洗步骤可以开始。在该选项中,存储桶份额的大小可以为1字节、2字节或4字节,导致每天450GB、900GB或1800GB的数据传输,而对于1字节的情况(3份额*1字节*500亿)。这可以提供对MPC系统、安全标识符计数系统、频率计数系统和标识符通信系统的实质性改进。[0161] 至少一个其他改进是标识符服务器信任工作者之一并将其CBF以明文方式发送给该工作者。然后,可以在明文中组合用于单个工作者的CBF,并且该工作者可以承担作为部分x‑pubCBF的加密负担。然后,可以将这些部分x‑pubCBF发送给单个工作者,该工作者可以同态地组合它们。并且,如本文所述,解密/混洗步骤可以开始。在这种情况下,假设每个存储桶只有一个字节,那么每天就有150GB的数据传输。这可以提供对MPC系统、安全标识符计数系统、频率计数系统和标识符通信系统的实质性改进。[0162] 有趣的是,本文描述的实施方式可以与上述两个替代方案组合,并且每个标识符服务器(例如,发布者)可以独立地选择如何与系统交互。请注意,通过加法的关联属性,每个工作者都可以容易地将CBF份额和明文CBF组合。然后,可以在所有工作者将其加密的部分x‑pubCBF发送给可以同构组合加密的部分x‑pubCBF以获得完整的x‑pubCBF,然后可以再次开始原始协议的混洗步骤的单个工作者之前,在每个工作者的基础上,加密这些组合并且将其与其他加密的CBF组合。这可以提供对MPC系统、安全标识符计数系统、频率计数系统和标识符通信系统的实质性改进。[0163] 下面描述用于计算差分隐私CBF直方图的密码安全协议。[0164] 差分隐私CBF存储桶[0165] 将整个CBF用作查询的输出,首要任务是确定其敏感性。该操作可以首先对于单个属性的情形完成,然后将其扩展到与单个客户端设备相关联的所有属性。忽略冲突,每次插入递增最多k(散列数)个存储桶。对于最小增量情况,这可能会更小,但是假设最坏的情况不会损害隐私,并且表征最小增量情况似乎很难处理。[0166] 考虑相对于单次印象的查询敏感性的至少一种方法是,将每个散列函数的输出视为L1敏感性为1的不同查询,在这种情况下,整个CBF查询的敏感性为k。另一个极端是声明整个CBF查询的敏感度为1。下面将继续进行该表征,并且即使在这种宽松的假设下,也将显示出在存储桶级的DP是不可行的。[0167] 回想一下,可以将敏感度定义为两个相邻数据库之间的最大距离。然后,如果假设CBF相对于单个印象的敏感度为1,将其扩展到客户端标识符意味着该敏感度可以等于与客户端标识符相关联的属性总数,该客户端标识符与特定属性的关联最多。换句话说,这可以是最大频率,可以由k个最大存储桶的最小值限制,其中,用于其的自变量类似于最小增量有效性的自变量。[0168] 然后,为了使CBF具有差分隐私,足以如所述估算最大频率并且将两侧几何噪声应用于每个存储桶,然后截断噪声,使得将变为负的任何存储桶都被分配为具有零值。下表示出了对于各种ε和灵敏度值的几何分布的参数。[0169]ε/灵敏度 1 2 4 7 8 16 320.1 0.0952 0.0488 0.0247 0.0142 0.0124 0.0062 0.00310.25 0.2212 0.1175 0.0606 0.0351 0.0308 0.0155 0.00780.5 0.3935 0.2212 0.1175 0.0689 0.606 0.0308 0.01551 0.6321 0.3935 0.2212 0.1331 0.1175 0.0606 0.03082 0.8647 0.6321 0.3935 0.2485 0.2212 0.1175 0.06063 0.9502 0.7769 0.5276 0.3486 0.3127 0.1710 0.0895[0170] 一种观察是,即使ε和灵敏度的值适中,分布的尾巴也相当长。例如,假设最大频率的典型值为8,这可能会被大大低估,则用于甚至为1的ε所需的噪声量也开始变得难以维持。但是,请记住,可以将存储桶计数的直方图用于估算,因此存在总的来说,可以去除噪声的可能性。具体地,可以将噪声直方图乘以校正矩阵,基于两侧几何分布的期望,得出去噪的直方图。[0171] 令X为噪声直方图,其可以是在将两侧几何噪声应用于每个存储桶后的CBF存储桶的直方图。令Y为由原始CBF构造的直方图。然后:[0172] E[X]=A*Y[0173] 其中:[0174] A=[a0,a1,a2,…,ai,...an]T[0175] 并且,每个ai是具有n+1个元素的行向量,其中:[0176] a0=[P(Z<=0),…,P(Z<=n)][0177] ai=[P(Z=i‑j)]‑对[0,n]中的j[0178] an=[P(Z>=n),…,P(Z>=0)][0179] 以及Z可以是双侧几何随机变量。基本上,ai*Y可以期望将Y的元素分配给X的特定区间。请注意,A可以是列随机。[0180] 然后 其中 可以是去噪的直方图,然后可以用来估算基数。[0181] 在至少一个其他实施方式中,K+值估算功能可以如下进行。[0182] 对于计数布隆过滤器中的每个条目,如果条目大于K,则将其包括在输出和中,否则忽略。为了在MPC中进行计算,系统可以对集合中的每个元素执行比较、求和和单位乘积:[0183] b←x[i]>=K//b是0或1值[0184] sum←sum+x[i]*b[0185] 计算比较函数可以使用过滤器元素的逐位分解,这可以通过需要更多通信来提高整个协议的计算成本。比较本身将需要“通用”MPC构造,该构造计算算术电路,这可以使用SPDZ协议变体来实现,而不会显著地增加回合数。[0186] 为了使用算术电路执行比较,系统可以评估“纹波借用”减法器,即“教科书”减法算法。直觉是,如果可以在不需要借入X的高阶位的情况下计算X‑Y,则X>=Y。这样做的一种方法是为该函数模拟布尔电路,从而创建“算术电路”。例如,为比较两位数:[0187] [a0,a1]<[b0,b1][0188] 可以使用该布尔公式:[0189] ((!a1)&&((!a0)&&b0))||((!a1)&&b1)||((!a0)&&b0)&&b1)[0190] 现在假设这些是0/1值(在字段中;因此需要逐位分解)。可以使用这些规则来模拟相同的公式:[0191] !x→(1‑x)[0192] x&&y→x*y[0193] x||y→x+y‑x*y[0194] 因此,我们的比较器可以是:[0195] c1=((1‑a1)*((1‑a0)*b0))[0196] c2=((1‑a1)*b1)[0197] c3=((1‑a0)*b0*b1)[0198] out←c1+c2+c3‑c1*c2‑c1*c3‑c2*c3+c1*c2*c3[0199] 可以将其按比例缩放为任意多个位。由于最终输出是0/1值,因此如上所述,可以使用它来有选择地将值包括在总和中。[0200] 在这种情况下,隐私可以来自MPC协议本身的安全性,因为不会透露有关组合布隆过滤器的部分信息。注意,在这种情况下,无需对过滤器执行任何置换,因为在明文中从不会揭示过滤器。在协议的末尾,工作者将拥有总和的份额,然后可以将其发送到累加器或有权获得输出的任何其他工作者。[0201] 在K为2的幂的情况下,可以改进在线协议。回想一下,第一步是计算每一方各自的布隆过滤器上的总和;然后,计算不超过值K的元素。当K为2的幂时,这等于检查是否携带了超出某个位置的任何位,并且可以完全避免比较器且仅在线计算加法电路。[0202] 假设每个乘法门进行一轮广播,如果布隆过滤器元素为4位,则将需要9轮广播(8轮用于加法电路,以及1轮用于加法的进位;最后的和为不需要任何乘法的线性组合)。为了防止任意串通的安全性,在诚实但好奇的环境中使用SPDZ协议,主要的计算成本将是计算Beaver三元组。[0203] 现在参考图1,描绘了用于生成计数布隆过滤器以确定联网环境中的客户端设备标识符的计数和频率的系统100。系统100可以使用分布式同态加密从向量生成数据的估算频率的直方图。系统100可以包括至少一个数据处理系统105A‑N(有时通常称为数据处理系统105)、至少一个网络110、至少一个数据库115和至少一个客户端设备120A‑N(有时通常称为客户端设备120)。数据处理系统105可以包括至少一个向量生成器130、至少一个散列标识符134、至少一个数据记录散列器140、至少一个加密密钥生成器145、至少一个向量加密器150、至少一个加密向量通信器155、至少一个向量组合器160、至少一个直方图构造器165和至少一个基数估算器170。数据库115可以包括至少一个数据记录122A‑N(有时通常称为数据记录122)。每个数据记录122可以包括至少一个客户端标识符125A‑N(有时通常称为客户端标识符125)和至少一个属性127A‑N(有时通常称为属性127)。[0204] 可以使用本文结合图8详述的计算系统800的硬件组件或软件与硬件组件的组合实现系统100的每个组件(例如,数据处理系统105、网络110、数据库115、客户端设备120、向量生成器130、散列标识符135、数据记录散列器140、加密密钥生成器145、向量加密器150、加密向量通信器155、向量组合器160、直方图构造器165、基数估算器170、数据记录122、客户端标识符125和属性127等)。例如,数据处理系统105可以包括服务器或其他计算设备。客户端设备120可以包括服务器或其他计算设备。数据处理系统105的每个组件可以执行本文详述的功能。[0205] 网络110可以包括计算机网络(诸如因特网、局域网、广域网、城域网或其他局域网、内联网、卫星网络、诸如语音或数据移动电话通信网络的其他计算机网络及其组合。系统100的数据处理系统105可以经由网络110与例如至少一个数据库115通信。网络110可以是在数据库115、数据处理系统105和一个或多个内容源(诸如Web服务器)等之间中继信息的任何形式的计算机网络。在一些实施方式中,网络110可以包括互联网和/或其他类型的数据网络,诸如局域网(LAN)、广域网(WAN)、蜂窝网络、卫星网络或其他类型的数据网络。网络110还可以包括被配置为在网络110内接收和/或传送数据的任何数量的计算设备(例如,计算机、服务器、路由器、网络交换机等)。网络110可以进一步包括任意数量的硬连线和/或无线连接。数据库115可以与收发器无线地(例如,经由WiFi、蜂窝、无线电等)通信,该收发器被硬连线(例如,经由光缆、CAT5电缆等)到网络110中的其他计算设备。数据库115还可以经由代理设备(例如,路由器、网络交换机或网关)与网络110的计算设备无线地通信。[0206] 数据处理系统105可以包括至少一个处理器和存储器,即处理电路。存储器存储处理器可执行指令,该处理器可执行指令在由处理器执行时,使处理器执行本文所述的一个或多个操作。处理器可以包括微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等或其组合。存储器可以包括但不限于电子、光学、磁性或能够向处理器提供程序指令的任何其他存储或传输设备。存储器可以进一步包括软盘、CD‑ROM、DVD、磁盘、存储器芯片、ASIC、FPGA、只读存储器(ROM)、随机存取存储器(RAM)、电可擦除可编程ROM(EEPROM)、可擦除可编程ROM(EPROM)、闪存、光学介质或处理器可以从中读取指令的任何其他合适的存储器。指令可以包括来自任何合适的计算机编程语言的代码。数据处理系统105可以包括可以执行各种功能的一个或多个计算设备或服务器,包括例如本文所述的功能或方法。[0207] 数据库115可以是被配置为存储和/或维护本文描述的任何信息的数据库。数据库115可以维护一个或多个数据结构,该数据结构可以包含或索引本文所述的值、复数或阈值中的每一个。可以使用一个或多个存储器地址或索引值来访问数据库115。可以由数据处理系统105的组件或客户端设备120经由网络110访问数据库115。在一些实施方式中,数据库115可以在数据处理系统105的内部。在一些实施方式中,系统100可以包括许多数据库,每个数据库115对应于至少一个数据处理系统105A‑N。例如,每个数据处理系统105A‑N可以包括其自己的数据库或与其通信。在一些实施方式中,数据库115可以存在于数据处理系统105的外部,并且可以经由网络110访问。数据库115可以被分布在许多不同的计算机系统或存储元件上,并且可以经由网络110或合适的计算机总线接口访问。数据处理系统105可以在数据库115中存储在利用适当值索引的一个或多个数据结构中的任何或所有计算、确定、选择、标识、生成、构造或计算的结果,每个结果都可以由数据处理系统105或客户端设备120访问以执行本文所述的任何功能性或功能。[0208] 客户端设备120可以是被配置为经由网络110进行通信以显示数据,诸如由数据处理系统105提供的指示(例如,显示客户端标识符125、属性127、频率值或本文所述的任何其他值等的集合的基数的指示)。客户端设备120可以是台式计算机、膝上型计算机、平板计算机、智能手机、个人数字助理、移动设备、消费者计算设备、服务器、客户端、数字录像机、电视机的机顶盒、视频游戏机,或被配置为经由网络110进行通信的任何其他计算设备等等。客户端设备120可以向数据处理系统传送或接收一个或多个客户端标识符125或一个或多个属性127。客户端设备120可以与至少一个数据库115通信,以存储与相应的客户端设备120相关联的客户端标识符125或属性127。[0209] 客户端设备120可以包括处理器和存储器,即处理电路。存储器存储机器指令,该机器指令在由处理器执行时,使处理器执行本文所述的一个或多个操作。处理器可以包括微处理器、专用集成电路(ASIC)、现场可编程门阵列(FPGA)等或其组合。存储器可以包括但不限于电子、光学、磁性或能够为处理器提供程序指令的任何其他存储或传输设备。存储器可以进一步包括软盘、CD‑ROM、DVD、磁盘、存储器芯片、ASIC、FPGA、只读存储器(ROM)、随机存取存储器(RAM)、电可擦除可编程ROM(EEPROM)、可擦除可编程ROM(EPROM)、闪存、光学介质或处理器可以从中读取指令的任何其他合适的存储器。指令可以包括来自任何合适的计算机编程语言的代码。[0210] 客户端设备120可以包括一个或多个用户接口设备。通常,用户接口设备是指通过生成感官信息(例如,显示器上的可视化、一个或多个声音等),将数据传达给用户和/或将从用户接收的感官信息转换为电子信号的任何电子设备(例如,键盘、鼠标、定点设备、触摸屏显示器、麦克风等)。一个或多个用户接口设备可以在客户端设备120的外壳内部(例如,内置显示器、麦克风等)或在客户端设备120的外壳外部(例如,连接到客户端设备120的监视器、连接到客户端设备120的扬声器等)。在一些实施方式中,客户端设备120可以包括电子显示器,该电子显示器使用由在客户端设备120上执行的操作系统提供的、从数据库115检索的或者由数据处理系统105提供的接口数据来可视地显示界面。[0211] 数据处理系统105可以在数据库115中维护至少一个数据记录122。该数据记录可以包括例如至少一个客户端标识符125和至少一个属性127。客户端标识符125可以对应于客户端设备120的相应一个。该属性可以与数据记录122中的客户端标识符125相关联,并且包括关于相应客户端设备120的属性的信息。该属性可以包括例如客户端设备位置数据、客户端设备元数据、客户端设备参数、设置和其他信息、用户简档数据、客户端设备执行的交互、应用浏览历史、网页浏览历史、活动信息、设备特性、客户端设备已查看内容项还是与之交互、网络利用率信息、电源利用率信息以及设备操作系统版本、设置和其他信息等。数据处理系统可以从每个客户端设备接收设备标识符和属性数据,并且生成与相应客户端设备相对应的各个数据记录并将其维护在数据库115中。尽管在图1中被描绘为所有客户端设备120都与每个数据处理系统105A‑N通信,但是应当理解到,每个数据处理系统仅可以从特定的一组客户端设备120接收客户端设备标识符和信息。同样地,数据处理系统105A‑N可以将它们各自的数据记录保存在自己的数据库115中,而其他数据处理系统105A‑N无法访问它们。根据一些实施方式,不同组的客户端设备120可以由不同的标识符服务器(例如,数据处理系统105)服务,并且每个数据处理系统可以维护对应于其客户端设备120的集合中的相应一个的其自己的数据记录的集合。[0212] 向量生成器130可以生成包括多个坐标的向量。为了生成向量,向量生成器130可以分配数据处理系统105中的存储器的一个或多个区域以容纳至少一个计数器寄存器。所分配的计数器寄存器可以对应于向量的至少一个坐标。通过为一个或多个计数器寄存器生成并分配存储器,向量生成器130可以生成包括计数器寄存器的向量。向量生成器130可以将向量的每个计数器寄存器初始化为初始化值,例如0或1。向量生成器130可以生成向量,其可以对应于最小增量计数布隆过滤器,以具有任何数量的计数器寄存器(有时被称为“存储桶”)。例如,向量生成器130可以接收生成具有n个存储桶的最小增量计数布隆过滤器的指示,或者可以访问由外部计算设备提供的内部配置设置,该内部配置设置按存储桶或计数器寄存器的数量指定最小增量计数布隆的大小。[0213] 散列标识符135可以从散列函数列表中标识一个或多个散列函数,该散列函数可用于更新计数布隆过滤器数据结构。例如,在散列列表中标识的每个散列可以基于输入值提供随机性的正态分布或期望。即,例如,散列函数的类似输入不一定具有散列函数的类似输出。可以将散列函数选择为用于计数布隆过滤器的最佳散列函数。例如,散列标识符135可以选择独立且均匀分布的散列函数。这样的散列函数可以包括例如杂音散列、Fowler‑Noll‑Vo系列散列或Jenkins散列等。散列标识符135可以选择或标识多个散列函数,并且将每个散列函数应用于每个数据记录以生成散列的数据记录集合。[0214] 数据记录散列器140可以对由相应数据处理系统105维护的每个数据记录进行散列处理,以创建相应的散列数据记录的集合。应用散列数据记录可以包括将数据记录用作由散列标识符135标识的散列函数的自变量。数据记录散列器140可以使用由散列标识符135标识的每个散列来对每个数据记录进行散列,从而导致对应于数据记录中的相应一个的多个散列值。这样,数据记录散列器140可以在循环中遍历每个数据记录,并且在每个散列函数所选择时将其应用于每个数据记录。在应用散列函数之后,数据记录散列器140可以将与相应数据记录相关联的每个散列数据记录存储在相应数据处理系统105的存储器中。[0215] 数据记录散列器140可以进一步从与由相应数据处理系统105所维护的每个数据记录相对应的每个散列数据记录中提取寄存器标识符。散列数据记录集中的每个散列数据记录可以对应于由向量生成器130生成的向量的计数器寄存器。为了标识相应的计数器寄存器,数据记录散列器140可以从每个散列数据记录中提取寄存器标识符。数据记录散列器140可以例如通过对每个散列数据标识符和最小增量计数布隆过滤器中的计数器寄存器的数量执行模数运算来提取寄存器标识符。例如,如果散列数据记录之一等于500,并且最小增量计数布隆过滤器中有15个位置,则数据处理系统可以计算500%15=5以确定散列数据记录对应于最小增量计数布隆过滤器中的第五个计数器寄存器。在一些实施方式中,如果最小增量布隆过滤器中的计数器寄存器的数量为2的幂,则数据记录散列器140可以选择等于log2(b)的位数,其中,b等于最小增量计数布隆过滤器中的计数器寄存器的数量。[0216] 向量生成器130可以访问由向量生成器130生成的计数布隆过滤器的每个计数器寄存器,其对应于由数据记录散列器140标识的寄存器标识符,以确定最小寄存器值。在最小增量布隆过滤器实施方式中,向量生成器130可以进一步访问与由数据记录散列器140提取的每个寄存器标识符相关联的计数器寄存器存储桶,以检索存储桶值的集合。为了确定哪个存储桶值递增,向量生成器130可以从计数器寄存器存储桶中确定等于最小值的计数器寄存器存储桶的子集。可以通过比较每个计数器寄存器存储桶并且标识最小(例如,最接近零的值等等)的存储桶值来确定最小值。例如,如果有五个存储桶,其值分别为3、91、30、88和10,则最小存储桶值为3。注意,尽管将仅一个存储桶示为等于最小值,但是可以有等于最小值的任意数量的存储桶。为了说明该概念,考虑第二示例,其中,五个存储桶分别等于5、10、30、5和28。在该示例中,有等于5的两个存储桶。所有存储桶的最小值也是5。然后,向量生成器130可以选择等于最小值的存储桶以包括在计数器寄存器存储桶的子集中。这意味着,在第一示例中,在存储桶分别等于3、91、30、88和10的情况下,向量生成器130可以将等于最小值3的存储桶选择为子集中的计数器寄存器。在第二示例中,在五个存储桶分别等于5、10、30、5和28的情况下,向量生成器130可以选择等于为计数寄存器存储桶的最小值的5的两个存储桶。选择计数器寄存器可以包括将标识相应存储桶的寄存器标识符存储在相应数据处理系统105的存储器的数据结构中。注意,为了精确地确定布隆过滤器的最小值,向量生成器130可以遍历每个数据记录,并且访问从相应标识符的散列值提取的寄存器标识符。[0217] 如上所述,向量生成器130可以递增满足计数器寄存器的最小值阈值的每个计数器寄存器。递增寄存器标识符可以包括使对应于各自寄存器标识符的计数器寄存器加1。在一些实施方式中,添加到计数器寄存器的量可以是不同于1的值。例如,向量生成器130可以将可能对应于本文确定、生成或计算的任何值的其他值添加到每一计数器寄存器。在一些实施方式中,由于本文讨论的各种原因,数据处理系统可以从计数器寄存器中减去。在一些实施方式中,作为减法的替代方案,向量生成器130可以对向量生成器130当前未选择的每个其他计数器寄存器桶添加量(例如,1或一些其他值等)。通过递增计数器寄存器存储桶或坐标,向量生成器130可以基于由各个数据处理系统105维护的数据记录来整体上更新计数布隆过滤器。在系统的上下文中,在下文中,结合图2A‑2C,简要描述更新标准计数布隆过滤器的过程,以及在下文中,结合图3A‑3C,描述更新(如在此结合图1所述的)最小增量计数布隆过滤器的过程。[0218] 现在参考图2A,描绘了流程图200A的示例性说明,其图示了通过至少一个数据处理系统(例如,数据处理系统105中的至少一个等)将数据记录X插入到标准计数布隆过滤器中。在框202,数据处理系统可以指示要插入到计数布隆过滤器中的数据记录。可以例如从数据库(例如,数据库115)中选择所指示的数据记录。数据处理系统可以选择多个散列函数,在此示为h1、h2和h3。尽管仅示出了三个散列函数,但是应当理解到,数据处理系统可以利用任何数量的散列函数来将数据记录插入到标准计数布隆过滤器中。在框204A‑C,数据处理系统可以使用所标识的散列函数中的每一个,复制和散列数据记录X至少一次。散列函数可以是例如本文所述的ElGamal散列,或其他任何类型的散列,诸如SHA‑1、SHA‑2、MD5等。通过使数据记录X复制和散列3次,数据处理系统已经生成了3个散列数据记录,在图2A中示为h1(x)、h2(x)和h3(x)。仍然参考框204A‑C,数据处理系统可以从每个散列数据记录中提取索引值。所提取的索引值可以对应于计数布隆过滤器中的至少一个相应位置。在图2A提供的示例中,每个散列以模数11来计算,该模数是计数布隆过滤器中的寄存器位置的数量。尽管仅11个寄存器位置使用布隆过滤器,但是应该理解到,可以使用任意数量的计数寄存器来实现布隆过滤器。[0219] 在图2A的进一步细节中,h1(x)的模数11等于1,h2(x)的模数11等于3以及h3(x)的模数11等于9。这些值中的每一个可以由数据处理系统用作与计数布隆过滤器中的各个位置(例如,ID值等)相关联的计数器寄存器的指针。例如,等于1的h1(x)的模数11可以指向计数布隆过滤器中的位置“1”,等于3的h2(x)的模数11可以指向计数布隆过滤器中的位置“3”等。这些是为了图示与计数布隆过滤器有关的操作的目的的纯示例值,并且不应当将其解释为限制描述计数布隆过滤器的任何实施方式的范围。数据处理系统可以通过递增由各个散列函数指向的每个计数器寄存器来更新(例如,插入数据记录)计数布隆过滤器,从而导致更新的计数布隆过滤器206。注意,尽管图2A描绘了仅递增1的每个计数器寄存器,但是应当理解到,数据处理系统可以使任何计数器寄存器递增任何数量的值,例如递增字节数、位数,或者相对于本文所述的任何其他值、阈值或估算值。[0220] 现在参考图2B,描绘了流程图200B的示例性说明,其图示了通过至少一个数据处理系统(例如,数据处理系统105中的至少一个等),将数据记录Y插入上文结合图2A所述的更新的计数布隆过滤器206中。在框208处,数据处理系统可以指示要插入到计数布隆过滤器中的数据记录Y。可以例如从数据库(例如,数据库115)中选择所指示的数据记录。数据处理系统可以选择多个散列函数,在此示为h1、h2和h3。尽管仅示出了三个散列函数,但是应当理解到,数据处理系统可以利用任何数量的散列函数来将数据记录插入到标准计数布隆过滤器中。在框210A‑C,数据处理系统可以使用每个标识出的散列函数,复制和散列数据记录Y至少一次。散列函数可以是例如本文所述的ElGamal散列,或其他任何类型的散列,诸如SHA‑1、SHA‑2、MD5等。通过使数据记录Y复制和散列三次(例如,每个散列一次),数据处理系统已经生成了三个散列数据记录,在图2B中示为h1(y)、h2(y)和h3(y)。仍然参考框210A‑C,数据处理系统可以从每个散列数据记录中提取索引值。所提取的索引值可以对应于计数布隆过滤器中的至少一个相应位置。在图2A提供的示例中,每个散列以模数11来计算,该模数是计数布隆过滤器中的寄存器位置的数量。尽管计数布隆过滤器仅使用11个寄存器位置,但是应当理解到,可以使用任意数量的计数寄存器来实现计数布隆过滤器。[0221] 在图2B的进一步详述中,h1(y)的模数11等于1,h2(y)的模数11等于5,h3(y)的模数11等于7。这些值的每一个可以由数据处理系统用作与计数布隆过滤器中的各个位置(例如,ID值等)相关联的计数器寄存器的指针。例如,等于1的h1(y)的模数11可以指向计数布隆过滤器中的位置“1”,等于5的h2(y)的模数11可以指向计数布隆过滤器中的位置“5”等等。这些是为了图示与计数布隆过滤器有关的操作的目的的纯示例值,并且不应当将其解释为限制描述计数布隆过滤器的任何实施方式的范围。数据处理系统可以通过递增由各个散列函数指向的每个计数器寄存器来更新(例如,插入数据记录)计数布隆过滤器,从而导致更新的计数布隆过滤器212。注意,尽管图2B描绘了仅递增1的每个计数器寄存器,但是应当理解到,数据处理系统可以使任何计数器寄存器递增任何数量的值,例如递增字节数、位数,或者相对于本文所述的任何其他值、阈值或估算值。如图2B所示,对应于位置“1”的计数器寄存器具有已经等于1的值,因此,当递增1时,其变为等于2。同样地,对应于位置“5”和“7”的每个计数器寄存器等于零,因此在递增时分别都等于1。因此,更新的计数布隆过滤器212在位置“1”处具有值2、在位置“3”处具有值1、在位置“5”处具有值1、在位置“7”处具有值1,以及在位置“9”处具有值1。[0222] 现在参考图2C,描绘了流程图200C的示例性说明,其图示了通过至少一个数据处理系统(例如,数据处理系统105中的至少一个等),将数据记录X插入上文结合图2C所述的更新的计数布隆过滤器212中。在框214处,数据处理系统可以指示要插入到计数布隆过滤器中的数据记录X。注意,如上结合图2A所述,尽管已经将数据记录X插入到计数布隆过滤器中,但是由于计数布隆过滤器的性质,这不一定排除将相同的数据记录多次插入计数布隆中。这与例如标准布隆过滤器不同,在标准布隆过滤器中,每个位置可以对应于二进制值而不是计数器寄存器。可以例如从数据库(例如,数据库115)中选择所指示的数据记录。数据处理系统可以选择多个散列函数,在此示为h1、h2和h3。尽管仅示出了三个散列函数,但是应当理解到,数据处理系统可以利用任何数量的散列函数来将数据记录插入到标准计数布隆过滤器中。在框216A‑C,数据处理系统可以使用每个标识出的散列函数,复制和散列数据记录X至少一次。散列函数可以是例如本文所述的ElGamal散列,或其他任何类型的散列,诸如SHA‑1、SHA‑2、MD5等。通过使数据记录X复制和散列三次(例如,每个散列一次),数据处理系统已经生成了三个散列数据记录,在图2C中示为h1(x)、h2(x)和h3(x)。仍然参考框214A‑C,数据处理系统可以从每个散列数据记录中提取索引值。所提取的索引值可以对应于计数布隆过滤器中的至少一个相应位置。在图2C提供的示例中,每个散列以模数11来计算,该模数是计数布隆过滤器中的寄存器位置的数量。尽管计数布隆过滤器仅使用11个寄存器位置,但是应当理解到,可以使用任意数量的计数寄存器来实现计数布隆过滤器。[0223] 在图2C的进一步详述中,h1(x)的模数11等于1,h2(x)的模数11等于5以及h3(x)的模数11等于9。注意,这些值中的每一个与图2A中确定的值相同。这是因为数据处理系统正在使用相同的散列函数对相同的数据记录进行散列,因此每个散列的值导致与先前在图2A中计算出的值相同。数据处理系统可以将这些索引值的每一个用作与计数布隆过滤器中的各个位置(例如,ID值等)相关联的计数器寄存器的指针。例如,等于1的h1(x)的模数11可以指向计数布隆过滤器中的位置“1”,等于3的h2(x)的模数11可以指向计数布隆过滤器中的位置“3”等等。这些是为了图示与计数布隆过滤器有关的操作的目的的纯示例值,并且不应当将其解释为限制描述计数布隆过滤器的任何实施方式的范围。数据处理系统可以通过递增由各个散列函数指向的每个计数器寄存器来更新(例如,插入数据记录)计数布隆过滤器,从而导致更新的计数布隆过滤器218。注意,尽管图2C描绘了仅递增1的每个计数器寄存器,但是应当理解到,数据处理系统可以使任何计数器寄存器递增任何数量的值,例如递增字节数、位数,或者相对于本文所述的任何其他值、阈值或估算值。如图2C所示,对应于位置“1”的计数器寄存器具有已经等于2的值,因此,当递增1时,其变为等于3。同样地,对应于位置“3”和“9”的每个计数器寄存器等于1,因此在递增时等于2。因此,更新的计数布隆过滤器218在位置“1”处具有值3、在位置“3”处具有值2、在位置“5”处具有值1、在位置“7”处具有值1,以及在位置“9”处具有值2。[0224] 现在参考图3A,描绘了流程图300A的示例性说明,其图示了通过至少一个数据处理系统(例如,数据处理系统105中的至少一个等)将数据记录X插入到最小增量计数布隆过滤器中。在框302,数据处理系统可以指示要插入到计数布隆过滤器中的数据记录,例如数据记录X。可以例如从数据库(例如,数据库115)中选择所指示的数据记录。数据处理系统可以选择多个散列函数,在此示为h1、h2和h3。尽管仅示出了三个散列函数,但是应当理解到,数据处理系统可以利用任何数量的散列函数来将数据记录插入到标准计数布隆过滤器中。在框304A‑C,数据处理系统可以使用所标识的散列函数中的每一个,复制和散列所选择的数据记录(例如数据记录X)至少一次。散列函数可以是例如本文所述的ElGamal散列,或其他任何类型的散列,诸如SHA‑1、SHA‑2、MD5等。通过使数据记录X复制和散列3次,数据处理系统已经生成了3个散列数据记录,在图3A中示为h1(x)、h2(x)和h3(x)。仍然参考框304A‑C,数据处理系统可以从每个散列数据记录中提取索引值。所提取的索引值可以对应于计数布隆过滤器中的至少一个相应位置。在图3A提供的示例中,每个散列以模数11来计算,该模数是计数布隆过滤器中的寄存器位置的数量。尽管仅11个寄存器位置使用布隆过滤器,但是应该理解到,可以使用任意数量的计数寄存器来实现布隆过滤器。[0225] 在图3A的进一步细节中,h1(x)的模数11等于1,h2(x)的模数11等于3以及h3(x)的模数11等于9。这些值中的每一个可以由数据处理系统用作与计数布隆过滤器中的各个位置(例如,ID值等)相关联的计数器寄存器的指针。例如,等于1的h1(x)的模数11可以指向计数布隆过滤器中的位置“1”,等于3的h2(x)的模数11可以指向计数布隆过滤器中的位置“3”等。这些是为了图示与计数布隆过滤器有关的操作的目的的纯示例值,并且不应当将其解释为限制描述计数布隆过滤器的任何实施方式的范围。为了将数据记录插入到最小增量计数布隆过滤器中,数据处理系统可以使对应于由计算出的索引值所指向的计数器寄存器的最小值的计数器寄存器递增。例如,数据处理系统可以访问由计算出的索引值指向的每个计数器寄存器。如图3A所示,这些是对应于位置“1”、“3”和“9”的计数器寄存器。由于尚未更新最小增量计数布隆过滤器,因此这些位置中的每一个都等于0。[0226] 数据处理系统可以比较这些访问的数据寄存器中的每一个,以确定计数器寄存器中的最小值。例如,最小值可以是所访问的计数器寄存器中的最小计数器寄存器值。注意,一个以上的计数器寄存器可以等于最小值。数据处理系统可以选择具有等于所确定的计数器寄存器的最小值的值的所访问的计数器寄存器的子集。如图3A所示,每个所访问的计数器寄存器等于0,因此每个所访问的计数器寄存器等于最小值(在此为零)。因此,选择每个所访问的计数器寄存器。数据处理系统可以通过递增计数器寄存器的每个所选子集来更新最小增量计数布隆过滤器(例如,插入数据记录),从而导致更新的计数布隆过滤器306。注意,尽管图3A描绘了仅递增1的每个计数器寄存器,但是应当理解到,数据处理系统可以使计数器寄存器的所选子集中的任何一个递增任意数量的任何值,例如递增字节数、位数,或者相对于本文所述的任何其他值、阈值或估算值。[0227] 现在参考图3B,描绘了流程图300B的示例性说明,其图示了通过至少一个数据处理系统(例如,数据处理系统105中的至少一个等)将数据记录Y插入到最小增量计数布隆过滤器中。在框308,数据处理系统可以指示要插入到计数布隆过滤器中的数据记录,例如数据记录Y。可以例如从数据库(例如,数据库115)中选择所指示的数据记录。数据处理系统可以选择多个散列函数,在此示为h1、h2和h3。尽管仅示出了三个散列函数,但是应当理解到,数据处理系统可以利用任何数量的散列函数来将数据记录插入到标准计数布隆过滤器中。在框310A‑C,数据处理系统可以使用所标识的散列函数中的每一个,复制和散列所选择的数据记录(例如数据记录Y)至少一次。散列函数可以是例如本文所述的ElGamal散列,或其他任何类型的散列,诸如SHA‑1、SHA‑2、MD5等。通过使数据记录Y复制和散列3次,数据处理系统已经生成了3个散列数据记录,在图3B中示为h1(y)、h2(y)和h3(y)。仍然参考框310A‑C,数据处理系统可以从每个散列数据记录中提取索引值。所提取的索引值可以对应于计数布隆过滤器中的至少一个相应位置。在图3B提供的示例中,每个散列以模数11来计算,该模数是计数布隆过滤器中的寄存器位置的数量。尽管仅11个寄存器位置使用布隆过滤器,但是应该理解到,可以使用任意数量的计数寄存器来实现布隆过滤器。[0228] 在图3B的进一步细节中,h1(y)的模数11等于1,h2(y)的模数11等于5以及h3(y)的模数11等于7。这些值中的每一个可以由数据处理系统用作与最小增量计数布隆过滤器中的各个位置(例如,ID值等)相关联的计数器寄存器的指针。例如,等于1的h1(y)的模数11可以指向计数布隆过滤器中的位置“1”,等于5的h2(y)的模数11可以指向计数布隆过滤器中的位置“5”等。这些是为了图示与计数布隆过滤器有关的操作的目的的纯示例值,并且不应当将其解释为限制描述计数布隆过滤器的任何实施方式的范围。为了将数据记录插入到最小增量计数布隆过滤器中,数据处理系统可以使对应于由计算出的索引值所指向的计数器寄存器的最小值的计数器寄存器递增。例如,数据处理系统可以访问由计算出的索引值指向的每个计数器寄存器以确定它们在更新操作之前的值。如图3B所示,这些是对应于位置“1”、“5”和“7”的计数器寄存器。在更新之前,对应于位置“1”的值等于1,对应于位置“5”的值等于0,并且对应于位置“7”的值也等于0。[0229] 数据处理系统可以比较这些访问的数据寄存器中的每一个,以确定计数器寄存器中的最小值。例如,最小值可以是所访问的计数器寄存器中的最小计数器寄存器值。注意,一个以上的计数器寄存器可以等于最小值。在这种情况下,最小值在位置“5”和“7”中指示,在更新步骤之前都等于零。数据处理系统可以选择具有等于所确定的计数器寄存器的最小值的值的所访问的计数器寄存器的子集,在这种情况下,是指选择与位置“5”和“7”相对应的计数器寄存器。数据处理系统可以通过递增计数器寄存器的每个所选子集来更新最小增量计数布隆过滤器(例如,插入数据记录),从而导致更新的计数布隆过滤器312。尽管h1(y)指向位置'1',但它不会递增,因为它不等于指向计数器寄存器的最小值。注意,尽管图3B描绘了仅递增1的每个计数器寄存器,但是应当理解到,数据处理系统可以使计数器寄存器的所选子集中的任何一个递增任意数量的任何值,例如递增字节数、位数,或者相对于本文所述的任何其他值、阈值或估算值。[0230] 现在参考图3C,描绘了流程图300C的示例性说明,其图示了通过至少一个数据处理系统(例如,数据处理系统105中的至少一个等)将数据记录X插入到最小增量计数布隆过滤器中。在框314,数据处理系统可以指示要插入到最小递量计数布隆过滤器中的数据记录,例如数据记录X。注意,尽管如上结合图3A所述,数据记录X已经被插入了最小增量布隆过滤器中,这不必排除数据处理系统多次插入数据记录X。可以例如从数据库(例如,数据库115)中选择所指示的数据记录。数据处理系统可以选择多个散列函数,在此示为h1、h2和h3表示。尽管仅示出了三个散列函数,但是应当理解到,数据处理系统可以利用任何数量的散列函数来将数据记录插入到标准计数布隆过滤器中。在框316A‑C,数据处理系统可以使用所标识的散列函数中的每一个,复制和散列所选择的数据记录(例如数据记录X)至少一次。散列函数可以是例如本文所述的ElGamal散列,或其他任何类型的散列,诸如SHA‑1、SHA‑2、MD5等。通过使数据记录X复制和散列3次,数据处理系统已经生成了3个散列数据记录,在图3C中示为h1(y)、h2(y)和h3(y)。仍然参考框316A‑C,数据处理系统可以从每个散列数据记录中提取索引值。所提取的索引值可以对应于计数布隆过滤器中的至少一个相应位置。在图3C提供的示例中,每个散列以模数11来计算,该模数是计数布隆过滤器中的寄存器位置的数量。尽管仅11个寄存器位置使用布隆过滤器,但是应该理解到,可以使用任意数量的计数寄存器来实现布隆过滤器。[0231] 在图3B的进一步细节中,h1(x)的模数11等于1,h2(x)的模数11等于3以及h3(x)的模数11等于9。这些值中的每一个可以由数据处理系统用作与最小增量计数布隆过滤器中的各个位置(例如,ID值等)相关联的计数器寄存器的指针。例如,等于1的h1(x)的模数11可以指向计数布隆过滤器中的位置“1”,等于3的h2(x)的模数11可以指向计数布隆过滤器中的位置“3”等。这些是为了图示与计数布隆过滤器有关的操作的目的的纯示例值,并且不应当将其解释为限制描述计数布隆过滤器的任何实施方式的范围。为了将数据记录插入到最小增量计数布隆过滤器中,数据处理系统可以使对应于由计算出的索引值所指向的计数器寄存器的最小值的计数器寄存器递增。例如,数据处理系统可以访问由计算出的索引值指向的每个计数器寄存器以确定它们在更新操作之前的值。如图3C所示,这些是对应于位置“1”、“3”和“9”的计数器寄存器。在更新之前,对应于位置“1”、“3”和“9”的值分别等于1。[0232] 数据处理系统可以比较这些访问的数据寄存器中的每一个,以确定计数器寄存器中的最小值。例如,最小值可以是所访问的计数器寄存器中的最小计数器寄存器值。注意,一个以上的计数器寄存器可以等于最小值。在这种情况下,最小值由位置“1”、“3”和“9”共享,在更新步骤之前都等于1。数据处理系统可以选择所访问的计数器寄存器的具有等于所确定的计数器寄存器的最小值的值的子集,在这种情况下,是指选择与位置“1”、“3”和“9”相对应的计数器寄存器。数据处理系统可以通过递增计数器寄存器的每个所选子集来更新最小增量计数布隆过滤器(例如,插入数据记录),从而导致更新的计数布隆过滤器318。在更新的最小增量布隆过滤器318中,递增位置“1”、“3”和“9”中的每一个以具有值2,而其他位置保持不变。尽管图3C描绘了使每个计数器寄存器递增1,但应当理解到,数据处理系统可以使计数器寄存器的所选子集中的任何一个递增任意数量的任何值,例如递增字节数、位数,或者相对于本文所述的任何其他值、阈值或估算值。[0233] 现在回到图1,将继续参考工作者计算设备的操作来描述数据处理系统的功能和模块。尽管图示为同一数据处理系统105的一部分,但是可以由包含并实现相同模块和功能的工作者计算设备执行图4A‑4C所示的操作下文详述的每个组件(例如,加密密钥生成器145、向量加密器150、加密向量通信器155、向量组合器160、直方图构造器165和基数估算器170)以及图4A‑4C中的附带的描述。这样,应当理解到,尽管数据处理系统105可以包含这样的模块,但是其他实施方式可以规定在一个或多个工作计算设备上执行、维护和实现这些操作和组件。此外,应当理解到,下述组件的仅子集可以驻留在工作者计算设备,例如,仅包含加密密钥生成器145、加密向量通信器155、向量组合器160、直方图构造器165和基数估算器170的工作者计算设备中。因此,这些工作者计算设备可以例如经由网络110与数据处理系统105通信,并且可以仅交换加密向量或加密密钥以维护系统的整体差分隐私。[0234] 加密密钥生成器145可以生成一个或多个私钥和公钥以加密至少一个向量。加密密钥生成器145可以进一步标识其他工作者计算设备,或者从其他工作者计算设备接收数据,该其他工作者计算设备也已经生成了其自己的公钥和私钥对。加密密钥生成器145可以与其他工作者计算设备通信以接收至少一个其他公钥。加密密钥生成器145可以聚合、级联或以其他方式组合每个接收到的公钥和由加密密钥生成器145生成的公钥,以创建聚合的(例如,组合的)加密密钥。所生成的加密密钥可以是任何种类的同态加密密钥或方案,例如,ElGamal加密密钥等。加密密钥生成器145可以将所生成和聚合加密密钥传达到向量加密器150,以加密由各个数据处理系统105维护的最小增量计数布隆过滤器。加密密钥生成器145可以将每个聚合加密密钥进一步分发到每个数据处理系统105A‑N(例如,每个标识符服务器等)。[0235] 向量加密器150可以使用由加密密钥生成器145接收的聚合加密密钥来加密最小增量计数布隆过滤器的一个或多个计数器寄存器中的每一个,以生成所加密的向量。为了确保最小增量计数布隆过滤器的差分隐私,向量加密器150可以采用一种或多种加密技术来加密由相应的数据处理系统105(例如,相应的标识符服务器)生成和维护的向量。例如,数据处理系统可以使用从使用加密方案(例如,ElGamal加密、支持阈值解密的加密方案、同态加密等)的加密密钥生成器1接收的聚合公钥。在一些实施方式中,向量加密器150可以使用聚合加密密钥分别对与向量的坐标相对应的每个计数器寄存器进行加密。在这样的实施方式中,每个加密的计数器寄存器可以被聚合以创建表示最小增量计数布隆过滤器的加密向量。[0236] 加密向量通信器155可以将加密向量传达到至少一个工作者计算设备。在一些实施方式中,加密向量通信器155可以接收对加密向量的一个或多个请求,这反过来可以触发如本文所述的加密向量的生成或通信。该请求可以例如由至少一个工作者计算设备接收。传送加密向量可以包括经由网络110,将加密向量提供给工作者计算设备。加密向量通信器155可以将工作者计算设备选择为一个或多个工作者计算设备中的第一个来处理加密向量。在一些实施方式中,加密向量通信器155可以逐个存储桶地传送加密向量,即,每个存储桶被单独地传送到工作者计算设备。在一些实施方式中,加密向量通信器155可以在批量交易中传送加密向量,其中,在单个消息中传送大部分或全部加密向量。[0237] 向量组合器160可以从一个或多个标识符服务器(例如,数据处理系统105A‑N)接收一个或多个加密向量。每个接收的加密向量可以包括与加密向量的坐标相对应的至少一个加密计数器寄存器。在一些实施方式中,向量组合器160可以周期性地或在突发事务中接收向量。每个向量可以与反映从其接收向量的标识符服务器的相应标识符相关联。可以使用由加密密钥生成器145生成并且分发给相应标识符服务器(例如,数据处理系统105A‑N)的组合公钥,加密从标识符服务器接收到的每个加密向量。组合的公钥可以允许工作者计算设备对从标识符服务器接收到的加密向量进行部分解密。在下文中,结合图4A‑4C进一步详细地图示这些操作。[0238] 现在参考图4A,描绘了用于由工作者计算设备生成和分发加密密钥的系统流程图400A。系统流程图400A可以包括一个或多个工作者计算设备405A‑C(有时通常被称为多个工作者405或工作者405)。尽管仅三个工作者计算设备,但是应当理解到,可以使用任何数量的工作者计算设备来实现本文所述的功能。工作者405可以是数据处理系统105中的至少一个,或者可以包括数据处理系统105的组件的子集,例如加密密钥生成器145、加密向量通信器155、向量组合器160、直方图构造器165和基数估算器170。[0239] 如图4A所示,工作者405可以生成组合密钥。生成组合密钥可以包括生成至少一个公钥和至少一个私钥。在一些实施方式中,工作者405可以生成可以被实现为ElGamal加密技术的至少一部分的密钥。例如,工作者405可以生成或选择随机(例如,伪随机等)整数X取X模q(例如,椭圆曲线组的阶数)。工作者405可以将整数X用作用于解密的私钥,可以将g 用作公钥,其中g是生成器。生成器可以是例如循环群的成员。例如,可以与一个或多个其他工作者405共享公钥。其他工作者405中的每个工作者都可以生成其自己的公钥和私钥对并将其传送到其他工作者405中的每一个。为了生成组合密钥,每个工作者405可以将从其他工作者405接收到的每个公钥与其自己的公钥进行组合。[0240] 现在参考图4B,描绘了用于由标识符服务器分发加密向量的系统流程图400B。系统流程图400B可以包括至少一个标识符服务器415A‑N和至少一个工作者405A‑N。上文结合图4A,进一步描述了工作者405。标识符服务器415A‑N中的每一个可以是例如上文结合图1所述的一个或多个数据处理系统105。在系统流程图400B中,已经将工作者405A(例如,任意地、经由请求、经由内部配置设置等)选择为第一工作者405。每个标识符服务器可以提供可以包括如上所述的加密寄存器存储桶的相关联的加密向量。[0241] 在由标识符服务器传送用于加密的组合密钥之后,工作者405(例如,第一工作者405A)可以从每个标识符服务器415A‑N接收至少一个加密向量。在一些实施方式中,第一工作者405A可以周期性地或以突发事务来接收向量。每个向量都可以与相应的标识符相关联,该标识符反映从中接收到向量的标识符服务器415A‑N。使用如上结合图1和图4A所述生成的组合公钥,加密从标识符服务器415A‑N接收到的每个加密向量。组合公钥可以允许每个工作者405部分地解密从标识符服务器接收到的加密向量。[0242] 现在参考图4C,描绘了用于对具有噪声的聚合向量进行顺序解密的系统流程图400C。系统流程图400C可以包括至少一个工作者405A‑N。上文结合图4A和4B,进一步描述了工作者405。在系统流程图400C中,第一工作者405A可以如上结合图4B所述,处理从标识符服务器415A‑N接收到的加密向量。为了处理加密向量,第一工作者405A可以执行方法600和方法700的步骤,如下文分别结合图6和7所述。在处理了从标识符服务器415A‑N接收到的向量之后,工作者415可以将处理后的加密向量连同其附加的解码查找表转发到聚合器计算设备410。[0243] 聚合器410计算设备可以包括数据处理系统105A‑N的一个或多个模块或工作者计算设备的一个或多个模块,如上所述。例如,聚合器410可以包括数据处理系统105的所有组件(例如,向量生成器130、散列标识符135、数据记录散列器140、加密密钥生成器145、向量加密器150、加密向量通信器155、向量组合器160、直方图构造器165和基数估算器170等)。在一些实施方式中,聚合器410可以包括数据处理系统105的一些组件(例如,加密密钥生成器145、加密向量通信器155、向量组合器160、直方图构造器165和基数估算器170)。在一些实施方式中,聚合器410可以包括加密向量通信器155、直方图构造器165和基数估算器170。聚合器410可以是数据处理系统105A‑N中的至少一个、工作者405A‑N中的至少一个,或与工作者405A‑N和数据处理系统105A‑N通信的单独的分立计算设备。[0244] 回到图1,并且结合(可以是至少一个数据处理系统105A‑N或至少一个工作者405中的任何一个等的)聚合器410的操作描述下述组件,加密向量通信器155可以从工作者计算设备(例如工作者405等)接收加密置换向量。加密置换向量可以是如由每个工作者计算设备(例如,工作者405)结合下文所述的方法500和方法600处理的聚合向量。加密向量通信器155可以在计算机存储器中以一个或多个数据结构存储加密置换向量。在一些实施方式中,加密向量通信器155可以接收与置换的加密向量相关联的解码查找表。在一些实施方式中,置换的加密向量可以与解码查找表级联或以其他方式附加解码查找表。[0245] 直方图构造器165可以基于加密置换向量的坐标值来构造存储桶直方图。构造直方图可以包括使用附加或级联到加密置换向量的解码查找表来解码加密置换向量。解码查找表可以是例如由工作者405中的至少一个创建的相应解码密钥。直方图构造器165可以使用解码查找表来揭示与标识符服务器相对应的聚合向量的值。一旦被解密,则聚合向量可以包括与目标频率值相对应的解密存储桶值。目标频率值可以通过内部配置设置来提供,在从系统100中的任何计算设备接收的请求中被提供或从工作者405或聚合器410中的一个被提供。目标频率值可以包括大于或等于0的任何种类的数值,并且可以使直方图构造器165使用目标频率值来对仅大于或等于目标频率值的加密向量的存储桶进行解码。例如,如果目标频率值为3,则直方图构造器165可以解码等于3或更大的加密向量的存储桶,并且不能解码小于目标频率值的存储桶的值。[0246] 在一些实施方式中,工作者405可以在生成解码查找表时合并目标频率值。在这样的实施方式中,工作者405可以配置解码查找表来仅对具有大于或等于目标频率值的值的存储桶进行解码。工作者405可以例如在请求或消息中、从系统100的任何计算设备或从内部配置设置获得目标频率值。在这样的实施方式中,解码查找表可以被配置为对具有等于或大于目标频率值的值的存储桶进行解码。每个工作者405在部分解密加密向量的他们的份额时,可以利用他们的确定性加密密钥的他们的份额来更新解码查找表。工作者405可以配置解码查找表来对大于或等于阈值的加密向量的存储桶的他们的份额进行解码,但是不能解码与小于阈值的值相对应的存储桶。这样,当直方图构造器165对加密向量进行解码以创建直方图时,可以使用解码查找表来解码大于或等于目标频率阈值的每个存储桶,而小于目标频率阈值的那些存储桶可以保持加密。如本文所述,当构造存储桶直方图时,可以将保持加密的每个存储桶设置为max_frequency值。直方图构造器165可以例如从请求或消息中、从系统100的任何计算设备中或从内部配置设置中接收max_frequency值。通过对加密向量进行解码,直方图构造器165可以生成包括加密向量的每个解码值的解码向量。[0247] 在使用解码查找表对加密向量进行解码之后,直方图构造器165可以使用解码向量的存储桶或计数器寄存器来生成或创建存储桶直方图。存储桶直方图可以对应于解码向量的每个存储桶值的频率。例如,存储桶直方图中的每个区间可以具有诸如[0,1);[1,2);[2,3);[3,4)等等的范围。为了生成存储桶直方图,直方图构造器165可以访问解码向量的每个坐标以确定其值。在确定其值之后,直方图构造器165可以递增或添加到存储桶直方图中的相应区间。例如,如果直方图构造器165访问等于51的解码向量坐标值,则直方图构造器165可以递增与范围[51,52)相对应的存储桶直方图区间。尽管在这些示例中已经提出直方图区间范围等于单个整数范围,但是应当理解到,存储桶直方图区间可以对应于反映任何类型的数值范围的区间。这样,在一些实施方式中,存储桶直方图区间可以对应于比单个整数值范围更宽或更窄的范围。[0248] 直方图构造器165可以如上所述遍历解码向量的每个值,并且更新直方图。直方图构造器165可以在计算机存储器中以一个或多个数据结构存储直方图。在遍历解码向量的每个坐标存储桶之后,直方图构造器165可以从直方图去除噪声。回想一下,在部分解密和混洗向量之前,由一个或多个工作者405添加了其他存储桶。在将噪声存储桶值附加到加密向量之前,每个工作者405均同意基线噪声值B。这样,偏置如在直方图中呈现的结果,并且可以去除噪声以实现准确的测量。为了去除噪声,直方图构造器165可以遍历每个存储桶直方图区间,并且减去B*w,其中,w是向存储桶添加噪声的工作者405的数量。直方图构造器165可以从一个或多个工作者405接收将噪声添加到加密向量的工作者405的数量以及基线噪声值。在一些实施方式中,直方图构造器165在已经同意基线噪声值B的工作者405上执行。这样,可能需要请求或接收基线噪声值,因为它可能驻留在计算机存储器中。通过从直方图的每个区间中减去噪声,直方图构造器165可以生成过滤的直方图。尽管已经去除了基线,但是应当理解到,过滤的直方图中仍可能存在双尾几何噪声。这可以进一步提高系统的安全性,因为任何噪声都会进一步模糊直方图中的值,而不会显著地影响基数或频率的估算的结果。[0249] 基数估算器170可以基于由直方图生成器165生成的过滤直方图来估算设备标识符和设备属性的集合的基数(例如,多重集的唯一成员的数量等)。为估算多重集的总基数,基数估算器170可以使用下文包括的公式:[0250][0251] 在上述公式中,n是多重集的基数,k是用于填充每个最小增量计数布隆过滤器的散列函数的数量,m是解码向量中的计数器寄存器存储桶的数量,以及x是解码向量中的填充的存储桶的数量。基数估算器170可以通过计数过滤直方图中的大于或等于1的每个区间,确定填充的存储桶的数量。基数估算器170可以从系统100的一个或多个计算设备或工作者405或聚合器410的任何一个接收其他值(例如,散列函数的数量、每个解码向量中的计数器寄存器存储桶的数量等)中的每一个。为了估算多重集的K+频率,基数估算器170可以利用上文利用一个或多个替代方案提供的公式。为了估算K+频率,基数估算器170可以进一步过滤直方图,使得基数估算器170将与小于目标频率值K的范围相对应的过滤的直方图的区间视为空。例如,如果目标频率是3,则基数估算器170可以将小于3的所有范围(例如,[0,1),[1,2),[2,3)等)视为空,并且在基数估算中不包括那些存储桶。这样,上述公式中的x值被视为大于或等于频率阈值的解码向量的存储桶的数量。基数估算器170可以例如从内部配置设置,或者从系统100的一个或多个计算设备,或者从工作者405或聚合器410接收频率阈值。基数估算器170在计算多重集的基数或频率之后,可以在一个或多个消息中,将基数或频率提供(例如传送或以其他方式传达等)给请求计算设备。基数估算器170可以从系统100中的任何计算设备(例如数据处理系统105A‑N、客户端设备120或在系统100中未图示但可以可通信地耦合到网络110并且被配置为将请求传达到基数估算器170并且从基数估算器170接收基数数据的另一外部计算设备)接收对基数的请求。[0252] 现在参考图5,描绘了用于基于设备标识符值和属性数据来生成加密向量的方法500的流程图。方法500可以例如由至少一个数据处理系统(例如,至少一个数据处理系统105等)或本文所述的任何其他计算设备执行。数据处理系统可以维护数据记录(动作502)。数据处理系统可以生成向量(动作504)。数据处理系统可以选择第k个数据记录(动作506)。数据处理系统可以散列所选数据记录(动作508)。数据处理系统可以提取寄存器标识符(动作510)。数据处理系统可以选择第j个寄存器标识符(动作512)。数据处理系统可以递增所选寄存器标识符(动作514)。数据处理系统可以确定计数器寄存器j是否等于寄存器标识符的数量m(动作516)。数据处理系统可以使计数器寄存器j递增(动作518)。数据处理系统可以确定计数器寄存器k是否等于数据记录的数量n(动作520)。数据处理系统可以使计数器寄存器k递增(动作522)。数据处理系统可以获得聚合加密密钥(动作524)。数据处理系统可以对向量计数器寄存器进行加密(动作526)。数据处理系统可以传送加密向量(动作528)。[0253] 数据处理系统可以维护数据记录(动作502)。数据记录(例如,数据记录122A‑N)可以包括例如一个或多个设备标识符(例如,客户端标识符125A‑N)和一个或多个属性(例如,属性127A‑N)。数据记录可以是存储在可通信地耦合到数据处理系统的数据库(例如,数据库115)中的一个或多个数据结构。维护数据记录可以包括将一个或多个数据记录存储在计算机存储器中。在一些实施方式中,数据处理系统可以响应于从至少一个客户端设备(例如,至少一个客户端设备120)接收到一个或多个消息(例如,请求、指示、数据分组等)来维护数据记录。数据处理系统可以从消息中提取至少一个标识符以及存在于消息中的任何属性,并且生成数据记录以包括标识符和属性。然后,数据处理系统可以将数据记录维护(例如,存储、上传或以其他方式记录)在计算机存储器中,例如数据库、一个或多个数据结构或非易失性计算机可读介质中。[0254] 数据处理系统可以生成向量(动作504)。为了生成向量,数据处理系统可以分配存储器的一个或多个区域以容纳至少一个计数器寄存器。所分配的计数器寄存器可以对应于向量的至少一个坐标。通过为一个或多个计数器寄存器生成并分配存储器,数据处理可以生成包含计数器寄存器的向量。数据处理系统可以将向量的每个计数器寄存器初始化为初始化值,例如0或1。数据处理系统可以生成向量,该向量可以对应于最小增量计数布隆过滤器,以具有任意数量的计数器寄存器(有时被称为“存储桶”)。例如,数据处理系统可以接收指示以生成具有n个存储桶的最小增量计数布隆过滤器,或者可以访问由外部计算设备提供的内部配置设置,该设置按存储桶或计数器寄存器的数量,指定最小增量计数布隆过滤器的大小。[0255] 数据处理系统可以选择第k个数据记录(动作506)。为了处理(动作502)中维护的每个数据记录并将其添加到所生成的最小增量计数布隆过滤器,数据处理系统可以遍历由数据处理系统维护的每个数据记录。数据处理系统可以基于计数器寄存器k,迭代循环通过每个数据记录。例如,可以通过索引值(例如,索引0、索引1、索引2等),在数据结构中索引每个数据记录。为了处理数据记录,数据处理系统可以选择包括等于或近似等于计数器寄存器k的索引值或与该索引值相关联的数据记录。如果是循环的第一次迭代,则在选择第k个数据记录之前,可以将计数器寄存器k初始化为初始化值(例如,k=0、k=1等等)。选择数据记录可以包括将与数据记录相关联的数据复制到数据处理系统中的计算机存储器的不同区域,例如存储器的工作区域。选择数据记录可以包括如果数据记录位于数据库中,则从数据库中检索数据记录;以及将与样本相关联的数据复制到数据处理系统中的计算机存储器的不同区域(例如存储器的工作区域)中。[0256] 数据处理系统可以散列所选数据记录(动作508)。数据处理系统可以标识并执行一个或多个散列函数,以填充最小增量计数布隆过滤器。例如,在散列列表中标识的每个散列可以基于输入值提供对随机性的正态分布或预期。即,例如,散列函数的类似输入不一定具有散列函数的类似输出。可以将散列函数选择为用于计数布隆过滤器的最佳散列函数。例如,数据处理系统可以选择独立且均匀分布的散列函数。这样的散列函数可以包括例如杂音散列、Fowler‑Noll‑Vo系列散列或Jenkins散列等。数据处理可以选择或标识多个散列函数,并且将每个散列函数应用于所选数据记录以生成散列的数据记录集合。[0257] 数据处理系统可以提取寄存器标识符(动作510)。散列数据记录集合的每个散列数据记录可以对应于在动作504中生成的向量的计数器寄存器。为了标识相应的计数器寄存器,数据处理系统可以从每个散列数据记录中提取寄存器标识符。数据处理系统可以例如通过利用最小增量计数布隆过滤器中的计数器寄存器的数量,对每个散列数据标识符执行模数运算来提取寄存器标识符。例如,如果散列数据记录之一等于500,并且最小增量计数布隆过滤器中有15个位置,则数据处理系统可以计算500%15=5以确定散列数据记录对应于最小增量计数布隆过滤器中的第五个计数器寄存器。在一些实施方式中,如果最小增量布隆过滤器中的计数器寄存器的数量是2的幂,则数据处理系统可以选择等于log2(b)的位数,其中,b等于最小增量计数布隆过滤器中的计数器寄存器的数量。[0258] 在最小增量布隆过滤器实施方式中,数据处理系统可以进一步访问与在(动作510)中提取的每个寄存器标识符相关联的计数器寄存器存储桶,以检索存储桶值的集合。为了确定哪个存储桶值递增,数据处理系统可以在计数器寄存器存储桶中确定等于最小值的计数器寄存器存储桶的子集。可以通过比较每个计数器寄存器桶并确定最小(例如,最接近零的值)存储桶值来确定最小值。例如,如果有五个存储桶,其值分别为3、91、30、88和10,则最小存储桶值为3。注意,尽管将仅一个存储桶示为等于最小值,但是可以有等于最小值的任意数量的存储桶。为了说明该概念,考虑第二示例,其中,五个存储桶分别等于5、10、30、5和28。在该示例中,有两个存储桶等于5。所有存储桶的最小值也是5。然后,数据处理系统可以选择等于最小值的存储桶,以包含在计数器寄存器存储桶的子集中。这意味着在存储桶分别等于3、91、30、88和10的第一示例中,数据处理系统可以选择等于最小值3的存储桶作为子集中的计数器寄存器。在五个存储桶分别等于5、10、30、5和28的第二示例中,数据处理系统可以选择等于5(计数器寄存器存储桶的最小值)的两个存储桶。选择计数器寄存器可以包括将标识相应存储桶的寄存器标识符存储在数据处理系统的存储器中的数据结构中。然后,数据处理系统可以继续遍历(动作512)及以后的寄存器标识符的子集的列表。[0259] 数据处理系统可以选择第j个寄存器标识符(动作512)。为了处理和更新在(动作510)中提取的每个寄存器标识符,数据处理系统可以遍历每个寄存器标识符。数据处理系统可以基于计数器寄存器j,迭代循环通过每个寄存器标识符。例如,可以通过索引值(例如,索引0、索引1、索引2等),在数据结构中索引每个寄存器标识符。为了处理寄存器标识符及其相关的计数器寄存器存储桶,数据处理系统可以选择包括等于或近似等于计数器寄存器j的索引值或与之相关联的寄存器标识符。如果是循环的第一次迭代,则在选择第j个寄存器标识符之前,可以将计数器寄存器j初始化为初始化值(例如,k=0,k=1等)。选择寄存器标识符可以包括将与寄存器标识符相关联的数据复制到数据处理系统中的计算机存储器的不同区域(例如存储器的工作区域)。[0260] 数据处理系统可以递增所选寄存器标识符(动作514)。递增寄存器标识符可以包括将1添加到对应于寄存器标识符的计数器寄存器。在一些实施方式中,添加到计数器寄存器的数量可以是不同于1的值。例如,数据处理系统可以将其他值添加到每个计数器寄存器,这些其他值可以对应于本文确定、生成或计算出的任何值。在一些实施方式中,由于本文讨论的各种原因,数据处理系统可以从计数器寄存器中减去。在一些实施方案中,作为减法的替代方案,数据处理系统可以向数据处理系统当前未选择的每个其他计数器寄存器存储桶添加数量(例如,1或一些其他值等)。[0261] 数据处理系统可以确定计数器寄存器j是否等于寄存器标识符的数量m(动作516)。为了确定数据处理系统是否已经递增或更新了与所提取的寄存器标识符相对应的每个计数器寄存器存储桶,数据处理系统可以将用于选择每个寄存器标识符的计数器寄存器(例如,j)与所提取寄存器标识符的总数m进行比较。如果计数器寄存器j不等于(例如,小于)所提取的寄存器标识符的总数m,则数据处理系统可以执行(动作518)。如果计数器寄存器j等于(例如,等于或大于)所提取的寄存器标识符的总数m,则数据处理系统可以执行(动作520)。[0262] 数据处理系统可以使计数器寄存器j递增(动作518)。在一些实施方式中,数据处理系统可以将1添加到寄存器j以指示在所提取的寄存器标识符的集合(例如,或者所提取的寄存器标识符的子集等)中的下一个未处理的寄存器标识符。在一些实施方式中,数据处理系统可以将计数器寄存器j设置为下一个未处理的所提取的寄存器标识符的存储器地址值(例如,计算机存储器中的位置)。在一些实施方式中,下一个未处理的所提取的寄存器标识符的存储器地址值可以被包括在当前(例如,所选)寄存器标识符的位置处的数据结构中。在递增计数器寄存器j的值之后,数据处理系统可以执行(动作512)。[0263] 数据处理系统可以确定计数器寄存器k是否等于数据记录的数量n(动作520)。为了确定数据处理系统是否已使用每个数据记录更新了最小增量(例如或者标准)计数布隆过滤器,数据处理系统可以将用于选择每个数据记录的计数器寄存器(例如k)与数据记录的总数n进行比较。如果计数器寄存器k不等于(例如,小于)数据记录的总数n,则数据处理系统可以执行(动作522)。如果计数器寄存器k等于(例如,等于或大于)数据记录的总数n,则数据处理系统可以执行(动作524)。[0264] 数据处理系统可以使计数器寄存器k递增(动作522)。在一些实施方式中,数据处理系统可以将1添加到寄存器k以指示所维护的数据记录的集合(例如,由数据处理系统在动作502中维护的数据记录等)中的下一个未处理的数据记录。在一些实施方式中,数据处理系统可以将计数器寄存器k设置为下一个未处理的数据记录的存储器地址值(例如,计算机存储器中的位置)。在一些实施方式中,下一个未处理的数据记录的存储器地址值可以被包括在当前(例如,所选)数据记录的位置处的数据结构中。在递增计数器寄存器k的值之后,数据处理系统可以执行(动作524)。[0265] 数据处理系统可以获得聚合加密密钥(动作524)。例如,数据处理系统可以接收由一个或多个工作者计算设备生成的聚合公钥。在一些实施方式中,数据处理系统可以从其他计算设备(例如,其他数据处理系统、工作者计算设备等)接收一个或多个公钥,并且将公钥聚合成聚合的公共加密密钥。在一些实施方案中,可以使用聚合密钥来部分或完全加密一个或多个向量(例如,包括更新的计数器寄存器存储桶的计数布隆过滤器向量等)。在一些实施方式中,聚合密钥可以简单地是单个公钥,其被分发给数据处理系统以对由数据处理系统维护的计数布隆过滤器进行加密。在一些实施方式中,聚合加密密钥可以包括一个或多个ElGamal加密密钥,或任何其他类型的同态加密方案。在一些实施方式中,聚合加密密钥可以是支持阈值解密方案的任何种类的公共加密密钥。[0266] 数据处理系统可以对向量计数器寄存器进行加密(动作526)。为了确保最小增量计数布隆过滤器的差分隐私,数据处理系统可以采用一种或多种加密技术来加密由数据处理系统生成和维护的向量。例如,数据处理系统可以使用利用加密方案(例如,ElGamal加密、支持阈值解密的加密方案、同态加密等)在(动作526)中获得的聚合公钥。在一些实施方式中,数据处理系统可以使用聚合加密密钥,分别对与向量的坐标相对应的每个计数器寄存器进行加密。在这样的实施方式中,可以对每个加密的计数器寄存器进行聚合以创建表示最小增量计数布隆过滤器的加密向量。[0267] 数据处理系统可以发送加密向量(动作528)。传送加密向量可以包括将加密向量提供给工作者计算设备。数据处理系统可以将工作者计算设备选择为一个或多个工作者计算设备中的第一个,以处理加密向量。在一些实施方式中,数据处理系统可以逐个存储桶地传送加密向量,即,每个存储桶被单独地传送到工作者计算设备。在一些实施方式中,数据处理系统在其中在单个消息中传送大部分或全部加密向量的批量事务中传送加密向量。[0268] 现在参考图6,描绘了方法600的流程图,该方法600用于生成和聚合加密密钥以由工作者计算设备处理加密向量。方法600可以例如由至少一个数据处理系统(例如,至少一个数据处理系统105等)或本文描述的任何其他计算设备执行。数据处理系统可以生成组合密钥(动作602)。数据处理系统可以将组合密钥传送到标识符服务器(动作604)。数据处理系统可以接收加密向量(动作606)。数据处理系统可以选择第k个加密向量(动作608)。数据处理系统可以利用同态加密来计算总和(动作610)。数据处理系统可以确定计数器寄存器k是否等于加密向量的数量n(动作612)。数据处理系统可以将解码查找表附加到加密向量(动作614)。数据处理系统可以附加解码查找表(动作616)。数据处理系统可以部分解密加密向量(动作618)。数据处理系统可以应用确定性加密(动作620)。数据处理系统可以对加密向量进行混洗(动作622)。数据处理系统可以将已处理的加密向量转发给第二工作者(动作624)。[0269] 数据处理系统可以生成组合密钥(动作602)。生成组合密钥可以包括生成至少一个公钥和至少一个私钥。在一些实施方式中,数据处理系统可以生成密钥,该密钥可以至少被实现为ElGamal加密技术的一部分。例如,数据处理系统可以生成或选择随机(例如,伪随机等)整数X取模q(例如,椭圆曲线组的阶数)。数据处理系统可以将整数X用作用于解密的X私钥,可以将g 用作公钥,其中g是生成器。生成器可以是例如循环群的成员。公钥可以例如与一个或多个其他工作者计算设备共享。每个其他工作者计算设备都可以生成其自己的公钥和私钥对并将其传送到数据处理系统。为了生成组合密钥,数据处理系统可以将从其他工作者计算设备接收到的每个公钥与其自己的公钥组合。[0270] 数据处理系统可以将组合密钥传送到标识符服务器(动作604)。标识符服务器可以是例如负责执行如上结合图5所述的方法500的数据处理系统。标识符服务器可以是上文结合图1描述的数据处理系统105A‑N。在一些实施方式中,数据处理系统可以一次传送一个在动作602中生成的组合密钥的公钥的每一个,其中,每个公钥占用单个消息。在一些实施方式中,数据处理系统可以将单个消息中的组合密钥传送到标识符服务器(例如,单个分组、单个事务或一系列分组等)。[0271] 数据处理系统可以接收加密向量(动作606)。在通过标识符服务器传送用于加密的组合密钥之后,数据处理系统可以从每个标识符服务器接收至少一个加密向量。在一些实施方式中,数据处理系统可以周期性地或以突发事务接收向量。每个向量可以与反映从其接收向量的标识符服务器的相应标识符相关联。可以使用在动作602中生成的组合公钥来加密从标识符服务器接收的每个加密向量。组合公钥可以允许每个工作者部分地解密从标识符服务器接收的加密向量。[0272] 数据处理系统可以选择第k个加密向量(动作608)。为了使用同态加法处理和聚合在动作606中接收到的每个加密向量,数据处理系统可以遍历数据处理系统接收到的每个加密向量。数据处理系统可以基于计数器寄存器k,迭代地循环通过每个加密向量。例如,可以通过索引值(例如,索引0、索引1、索引2等),在数据结构中对每个加密向量进行索引。为了处理加密向量,数据处理系统可以选择加密向量,该加密向量包括等于或近似等于计数器寄存器k的索引值或与该索引值相关联。如果是循环的第一次迭代,则在选择第k个加密向量之前,可以将计数器寄存器k初始化为初始化值(例如,k=0,k=1等)。选择加密向量可以包括将与加密向量相关联的数据复制到数据处理系统中的计算机存储器的不同区域,例如存储器的工作区域。[0273] 数据处理系统可以利用同态加法计算加密向量的总和(动作610)。数据处理系统可以将每个加密向量累积、相加或以其他方式聚合成聚合加密向量。聚合加密向量可以包括例如标识符服务器更新的每个加密计数器寄存器存储桶的聚合总数。回想一下,标识符服务器分别维护和更新最小增量计数布隆过滤器,以表示与相应标识符服务器相关联的设备数量和属性。通过使用同态加密对服务器进行加密,每个标识符服务器可以隐藏与该服务器关联的有关设备数量或属性类型的任何信息或数据。在该步骤中,数据处理系统(例如,工作者计算设备等)可以聚合每个加密向量,以创建表示所有标识符服务器上的设备的总数和属性的聚合向量。通过使用同态加法,数据处理系统无需在聚合之前对加密向量进行解密,从而保护了系统的差分隐私。为了执行同态加法,数据处理系统可以将所选加密向量与累加器向量同态相加。如果是循环的第一次迭代(例如,k等于初始化值等),则数据处理系统可以将所选向量存储为累加器加密向量。如果不是循环的第一次迭代,则数据处理系统可以在所选向量和累加器向量之间执行同态相加,并将同态相加的结果存储为累加器向量。[0274] 数据处理系统可以确定计数器寄存器k是否等于加密向量的数量n(动作612)。为了确定数据处理系统是否已同态地相加每个加密向量,数据处理系统可以将用于选择每个数据记录的计数器寄存器(例如,k)与加密向量的总数n进行比较。如果计数器寄存器k不等于(例如,小于)加密向量的总数n,则数据处理系统可以执行(动作614)。如果计数器寄存器k等于(例如,等于或大于)加密向量的总数n,则数据处理系统可以执行(动作616)。在相加所有加密向量之后,数据处理系统可以将累加器向量复制到计算机存储器的不同区域,从而生成累积的或聚合的加密向量。[0275] 数据处理系统可以将解码查找表附加到加密向量(动作614)。在一些实施方案中,数据处理系统可以将1与寄存器k相加以指示加密向量集合中的下一未处理的加密向量(例如,在动作606中由数据处理系统接收的加密向量等)。在一些实施方式中,数据处理系统可以将计数器寄存器k设置为下一个未处理的加密向量的存储器地址值(例如,计算机存储器中的位置)。在一些实施方式中,下一个未处理的加密向量的存储器地址值可以被包括在当前(例如,所选)加密向量的位置处的数据结构中。在递增计数器寄存器k的值之后,数据处理系统可以执行(动作608)。[0276] 数据处理系统可以部分地解密加密向量存储桶(动作616)。为了确定性地对聚合或累积的加密向量的每个存储桶进行加密,数据处理系统可以部分解密与数据处理系统相对应的值。例如,能够使用由数据处理系统维护的一个或多个密钥来解密聚合加密向量的某些存储桶。例如,一个或多个密钥可以包括在动作602中由数据处理系统生成的安全密钥。例如,在动作602中,数据处理系统生成公钥和私钥,并继续与数据处理系统通信的其他工作者计算设备交换公钥。为了创建组合密钥,数据处理系统可以级联、聚合或以其他方式组合私钥。由于ElGamal或同态加密密钥的性质,数据处理系统可以部分解密使用聚合公钥加密的任何值。通过使用分布式同态加密方案仅允许部分解密,方法600可以保留由标识符服务器生成的向量的差分隐私。[0277] 数据处理系统可以应用确定性加密(动作618)。确定性加密可以应用于例如在动作616中由数据处理系统生成的部分解密值。确定性加密可以通过应用仅对数据处理系统已知的安全密钥来实现。例如,数据处理系统可以将安全指数应用于在动作616中生成的所有部分解密的存储桶。可以经由同态(例如,等同于将生成器g更改为某个随机组元素等)来执行该操作。安全密钥可以是阈值安全密钥,其仅能加密或解密满足某些阈值的值。这样,数据处理系统可以保留系统的整体隐私和安全性。安全密钥还可以与查找表相关联,该查找表可以被用来解码所有工作者计算设备上的确定性加密或聚合的确定性加密的结果。[0278] 数据处理系统可以附加解码查找表(动作620)。可以将解码查找表附加到在动作616中部分解密的确定性加密向量。解码查找表可以被用来例如对所有工作者计算设备上的分布式确定性加密方案的最终输出进行解码。通过使用确定性加密方案和值的部分解密,数据处理系统可以保留系统的差分隐私,并在其最小增量布隆过滤器中保护由标识符服务器指示的任何私有或受保护数据。附加解码查找表可以包括例如将查找表级联到确定性加密和部分解密的向量。因为查找表只能解密工作者对解密的贡献,所以工作者计算设备的子集都无法完全解密数据集。通过考虑使用阈值加密来进一步提高系统的安全性,其中,仅解密满足阈值的值并将其提供给工作者计算设备。在对加密向量存储桶进行混洗之前,数据处理系统可以使用在下文图7中描述的方法700中概述的过程,将噪声值附加到向量。[0279] 数据处理系统可以对加密向量存储桶进行混洗(动作622)。对加密向量存储桶进行混洗可以包括随机地置换向量存储桶。例如,数据处理系统可以访问加密向量的每个存储桶,并以随机(例如伪随机等)的方式改变它们的顺序。数据处理系统可以秘密地对存储桶进行混洗或置换,使得其他计算设备无法知道或确定置换存储桶的置换顺序。对加密向量进行置换或混洗可以包括不对附加到加密向量的查找表的顺序进行混洗。这可以确保可以使用查找表来计算加密向量的值的最终确定。[0280] 数据处理系统可以将处理的加密向量转发给第二工作者(动作624)。为了完全处理和确定性地加密整个向量,加密向量可以由对动作602中生成的组合密钥有所贡献的每个工作者计算设备进行处理。组合密钥值包括由每个工作者计算设备(和包括数据处理系统)生成的每个公钥。由于加密方案是同态的,因此工作者的每个私钥都可以部分地解密使用同态方案组合的聚合加密向量,但是没有任何工作者计算设备可以完全解密该向量。这允许每个工作者计算设备确定性地加密部分解密值,并且转发到下一个工作者设备。在工作者设备基于部分解密已经完成确定性加密向量后,可以聚合结果,并且可以使用附加到加密向量的查找表来计算最终结果。[0281] 现在参考图7,描绘了用于将噪声合并到加密的聚合向量中以在工作者计算设备之间提供差分隐私的方法700的流程图。方法700可以例如由至少一个数据处理系统(例如,至少一个数据处理系统105等)或本文描述的任何其他计算设备执行。数据处理系统可以就噪声基线B达成一致(动作702)。数据处理系统可以生成多个随机变量(动作704)。数据处理系统可以生成噪声数组(动作706)。数据处理系统可以选择第k个噪声数组值(动作708)。数据处理系统可以使用随机变量来填充噪声数组(动作710)。数据处理系统可以确定k是否等于噪声数组值的数量n(动作712)。数据处理系统可以使计数器寄存器k递增(动作714)。数据处理系统可以混洗噪声数组(动作716)。数据处理系统可以加密噪声数组(动作718)。数据处理系统可以在部分解密之前将噪声附加到加密向量(动作720)。[0282] 数据处理系统可以就噪声基线B达成一致(动作702)。噪声基线可以是例如整数,该整数将可能大于由单个工作者计算设备(例如,数据处理系统、其他数据处理系统等)生成的任何负噪声值。例如,数据处理系统可以将特定阈值用于噪声计算,使得任何生成的噪声不会或不能超过阈值。可以配置噪声基线,使得与基线值(例如,整数值等)相加或相减的噪声不会导致负数。为了就基线噪声值达成一致,每个工作者计算设备可以交换生成的基线值,直到每个工作者都满意基线噪声值不会导致负值。如果工作者计算设备与基线噪声值一致,则工作者计算设备可以将同意消息与基线噪声值一起广播到其他计算设备。一旦从每个工作者计算设备接收到同意消息,则设备就基线噪声值达成了一致。[0283] 数据处理系统可以生成多个随机变量(动作704)。随机变量的数量可以是例如系统要测量的最大期望频率(例如,K+频率等)加1。可以将其指定为max_frequency+1。随机变量可以是任何种类的随机变量(例如,Polya随机变量等)。可以将随机变量生成为随机变量的集合。例如,随机变量的集合可以被组织为[X0,X1,X2,…,Xi,…,Xmf],其中Xi表示该集合的索引值(例如,随机变量的集合中的任何Xi),并且Xmf表示系统要测量的最大频率。[0284] 数据处理系统可以生成噪声数组(动作706)。数据处理系统可以分配具有特定大小的噪声数组。对于在动作704中生成的随机变量集合中的每个Xi,噪声数组的大小可以为例如Σ(B–Xi)。例如通过计算每个随机变量和基准噪声值的差,并且累加每个差,数据处理系统可以确定基本减去随机变量的总和。噪声数组的总大小可以等于差的和。生成噪声数组可以包括分配等于噪声数组的大小的存储器区域。[0285] 数据处理系统可以选择第k个噪声数组值(动作708)。为了基于在动作704中生成的每个随机变量来填充噪声数组,数据处理系统可以遍历每个噪声数组值(例如,在动作704中生成的每个随机变量等)。数据处理系统可以基于计数器寄存器k迭代循环通过每个噪声值。例如,可以通过索引值(例如,索引0、索引1、索引2等)在数据结构中索引每个噪声值。为了处理噪声值,数据处理系统可以选择包括等于或近似等于计数器寄存器k的索引值或与该索引值相关联的噪声值。如果是循环的第一次迭代,则在选择第k个噪声值之前,可以将计数器寄存器k初始化为初始化值(例如,k=0、k=1等等)。选择噪声值可以包括将与噪声值相关联的数据复制到数据处理系统中的计算机存储器的不同区域,例如存储器的工作区域。[0286] 数据处理系统可以使用随机变量来填充噪声数组(动作710)。使用选择噪声值(例如,所选随机变量Xk),数据处理系统可以计算基线噪声值和随机变量之间的差。可以使用公式D=B–Xk计算该值,其中,D是各自的差值。然后,数据处理系统可以用k的D个副本填充噪声数组,其中,k的值等于噪声值。这可以包括例如访问噪声数组中的第k个位置,并将k*D添加到噪声数组。这样,可以基于基线值和系统生成的随机变量,用伪随机噪声值填充噪声数组中的每个位置。[0287] 数据处理系统可以确定k是否等于噪声数组值的数量n(动作712)。为了确定数据处理系统是否已经更新了噪声向量的每个位置,数据处理系统可以将用于选择每个噪声值的计数器寄存器(例如,k)与噪声值的总数n进行比较。如果计数器寄存器k不等于(例如,小于)噪声值的总数n,则数据处理系统可以执行(动作714)。如果计数器寄存器k等于(例如,等于或大于)噪声值的总数n,则数据处理系统可以执行(动作716)。[0288] 数据处理系统可以使计数器寄存器k递增(动作714)。在一些实施方式中,数据处理系统可以将1添加到寄存器k以指示所维护的数据记录(例如,由数据处理系统在动作502中维护的数据记录等)的集合中的下一个未处理的数据记录。在一些实施方式中,数据处理系统可以将计数器寄存器k设置为下一个未处理的数据记录的存储器地址值(例如,计算机存储器中的位置)。在一些实施方式中,下一个未处理的数据记录的存储器地址值可以被包括在当前(例如,所选)数据记录的位置处的数据结构中。在递增计数器寄存器k的值之后,数据处理系统可以执行(动作524)。[0289] 数据处理系统可以混洗噪声数组(动作716)。对噪声数组进行混洗可以包括随机地(例如,伪随机等)交换噪声数组中的值的位置,从而生成随机置换噪声数组。因为噪声数组的每个位置的值都随着k的大小增加而规模越大(例如,对于噪声数组的每个位置k,所以噪声的值等于k*D,其中,D等于基线噪声级减去随机变量Xk)。在一个实施例中,对噪声数组进行混洗可以包括选择噪声数组的随机(例如伪随机等)位置,并且将其与噪声数组的另一伪随机位置交换。在另一个实施例中,对噪声数组进行混洗可以包括生成第二噪声数组,该第二噪声数组包括伪随机地分配给第二噪声数组中的位置的噪声数组的值。这可以确保数据处理系统生成相对于数组位置至少伪随机分布的噪声数组。[0290] 数据处理系统可以加密噪声数组(动作718)。数据处理系统可以使用本文如上结合图6所述的、方法600的动作602中生成的组合密钥来加密噪声数组的每个位置。在一些实施方式中,数据处理系统可以在单个步骤中使用组合密钥来加密整个噪声数组,而不是单独地加密噪声数组的每个位置。通过使用被用来加密聚合向量的相同的公钥对噪声数组进行加密,数据处理系统能够在未来步骤中将噪声数组与聚合向量组合,以提高系统的差分隐私。稍后,当数据处理系统对聚合结果进行解码时,数据处理系统可以执行附加计算以从结果中“提取”噪声,而仅留下设备标识符和属性的K+频率的差分计算。[0291] 数据处理系统可以在部分解密之前将噪声附加到加密向量(动作720)。将噪声附加到加密向量可以包括将噪声本身与加密向量值相加,从而在不降低数据的总准确性的情况下,向数据向量引入附加隐私级别。在一些实施方式中,数据处理系统可以在部分解密步骤(例如,动作616)之前,将每个噪声值(例如,噪声数组中的每个位置)附加到加密向量。这可以意味着当最终直方图由累加器计算设备构建时,数据处理系统可以从直方图的每个存储桶中简单地去除B*噪声向量的数量,以从数据中去除噪声。在一些实施方式中,数据处理系统可以从每个工作者计算设备接收噪声向量,并且在部分解密步骤之前将每个噪声值附加到加密向量。以这种方式,数据处理系统可以创建带有许多噪声值的大向量,这些噪声值会随着向量在整个系统中的行进而被置换。因为没有一个工作者设备知道哪个值是噪声值,所以单个工作者无法确定从标识符服务器提供给数据处理系统的原始数据。这是对数据分析系统的安全性的重大改进。[0292] 图8示出了根据一些实施方式,可以用来实现本文论述的任何计算机系统的示例性计算机系统800的总体架构。计算机系统800可以被用来经由网络110提供信息以供显示。图8的计算机系统800包括可通信地耦合到存储器825的一个或多个处理器820、一个或多个通信接口805以及一个或多个输出设备810(例如,一个或多个显示单元)和一个或多个输入设备815。处理器820可以被包括在例如数据处理系统105A‑N或系统100的其他组件(诸如客户端设备120A‑N)中。[0293] 在图8的计算机系统800中,存储器825可以包括任何计算机可读存储介质,并且可以存储诸如用于实现用于各个系统的本文所述的各种功能的处理器可执行指令的计算机指令,以及与之有关、由此生成或经由通信接口或输入设备(如果存在的话)接收的任何数据。再次参考图8的系统800,数据处理系统105A‑N可以包括存储与用户标识符的集合、所生成的向量等有关的信息的存储器825。图8中所示的处理器820可以被用来执行存储器825中的指令,并且在这样做时,还可以从存储器中读取或向存储器写入根据指令的执行而处理或生成的各种信息。[0294] 图8所示的计算机系统800的处理器820可以可通信地耦合到通信接口805或控制通信接口805以根据指令的执行,传送或接收各种信息。例如,通信接口805可以耦合到有线或无线网络、总线或其他通信装置,因此可以允许计算机系统800向其他设备(例如,其他计算机系统)传送信息或从其他设备(例如,其他计算机系统)接收信息。尽管在图8的系统中未明确示出,但是一个或多个通信接口便于系统800的组件之间的信息流动。在一些实施方式中,可以(例如,经由各种硬件组件或软件组件)配置通信接口以将网站提供为计算机系统800的至少一些方面的访问门户。通信接口805的示例包括用户接口(例如,网页),用户可以通过该用户接口与计算机系统800通信。[0295] 可以提供图8中所示的计算机系统800的输出设备810以例如允许结合指令的执行来查看或以其他方式感知各种信息。可以提供输入设备815,以例如在指令执行期间,允许用户进行手动调整、进行选择、输入数据或以各种方式与处理器交互。本文中进一步提供了与可以用于本文所讨论的各种系统的通用计算机系统架构有关的附加信息。[0296] 测量精度[0297] 本章节着重比较各种配置范围内的FreqLogLog(FLL)、CBF和最小增量CBF(MICBF)方法。下表、数据和关于图9A‑17B的描述是示例性的,并且不应当以任何方式解释为限制。每种配置都可以模拟100多个试验,其中,每个试验包括根据特定的频率分布,插入一百万个元素,这可以作为模拟的参数。例如,元素1234取决于模拟频率分布的绘图将被插入1次或多次。这意味着对于均匀分布(如下所述),为8个频率中的每一个插入大约27,500个唯一元素,总共大约220,000个唯一元素。最后,在配置之间使用固定随机种子,以确保正估算其基数和元素频率的集合对于每个配置是相同的。[0298] 考虑下述频率分布,以便证明测量精度不取决于元素频率的分布。为了更明确地说明这一点,在此可以做更多的工作,但是总体而言,该分布似乎没有效果。因此,在一组初始模拟之后,仅使用“UNIFORM1至8”。结合图9A‑17B指示的数据,提供下表2中指示的描述。[0299][0300] 表2[0301] 可以考虑FLL和CBF的几种不同配置。对于FLLS,主要参数是要使用的存储桶的数量,它是2的幂。因此,FLL_2_16表示使用了2^16个存储桶。对于CBF,有三个参数,是否启用最小增量功能、存储桶的数量(m)和散列函数的数量(k)。[0302] 下表示出了模拟的配置集合及其内存使用情况。对于CBF,报告在假设每个存储桶1个字节的情况下的总内存使用情况,但是有可能将其降低到每个存储桶4字节或更少,这取决于想要测量的最大频率。但是,当从MPC协议的角度考虑时,这种减少的实用性并不那么重要,如本文所述,MPC协议可以对存储桶带来等同密文扩展,与明文大小无关。对于FLL,假设每个存储桶3个字节来报告总内存。布隆过滤器可以利用比HLL显著更多的内存,但是它们可以提供更准确的测量结果,并且适用于泄漏很少信息的安全多方协议。[0303][0304] 表3[0305] 图9A–17B中所示的图表示出平均绝对误差的对数(log10(MAE))、平均绝对误差率(MAER)、均方根误差的对数(log10(RMSE))和平均误差(ME))。报告误差的图表示出对直到10的值的k+到达率,而报告速率的图表仅示出直到8的值。这是因为模拟的最大频率总是为8,因此对9+和10+值的任何非零值都是错误。[0306] 图9A‑9B考虑了CBF和FLL_2_14_Uniform的几种配置。为了使CBF具有竞争力,可能需要激活最小增量特征,因此所有将来的结果都可以利用MICBF。尽管FLL的错误率仅约为1%,但最小增量CBF可能明显优于FLL,这已经相当不错了。另一方面,最佳MICBF的误差几乎为零,但这是以大大增加内存为代价的。如ME图所示,所有方法都偏向于过高估算。在频率8,MI_CBF_0_4具有与FLL相当的性能,但内存使用情况约为50倍。但是,MICBF在较低频率下的性能要好得多。[0307] 接下来,在图10A‑10B,测试了多个更高内存的FLL。所图示的是与上述MICBF相同的度量和三个更高内存的FLL。主要观察结果是,即使是使用12.6MB内存的最高内存FLL(FLL_2_22(黄线))也比使用9.6MB内存的CBF_MI_0_01优越。另一个观察结果是,FLL不太准确地估算较高频率,而MICBF在频率上具有更一致误差。最终有趣并且有些令人费解的结果与曲线的形状有关。查看log10(MAE)图,似乎MICBF和FLL误差的一般形状在参数化上是相同的,但是仔细检查后,FLL_2_18的曲线看起来与MICBF曲线系列非常相似,而CBF_MI_0_1看起来与FLL曲线系列类似。这不是错误,已多次确认结果。[0308] 关于测量的基线集的另一个考虑是两种方法相对于不同的频率分布如何操作。在此,相对于上述频率分布,对FLL_2_14和CBF_MI_0_01进行了测试,其结果在图11A‑11B中示出。总体而言,MICBF对频率分布的变化具有弹性,在三个分布中表现出稳定的几乎为零的错误率,而FLL的错误率取决于频率分布而波动高达2.5%。具体而言,在频率分布不太密集的情况下,FLL倾向于高估基数。对于LINEAR_8_1分布,高估了1+到达率(~1.5%),对于LINEAR_1_8分布高估了8+到达率(~4.5%)。据推测,后者表现出更大的误差,因为1+到达率包括所有频率,而8+则没有,这意味着要进行平均的存储桶更少。[0309] 最后,图12考虑了估算器的可变性。在此,省略了对数比例图(仅示出了MAER和ME),并且仅示出了两个估算值,以便防止图表变得过于忙碌。此外,为了进行完全公平的比较,将CBF_MI_0_25_Uniform与FLL_2_14_Uniform进行了比较。很显然,FLL在较高频率下具有增加的可变性,如上所述,可以通过在较高频率,越少存储桶可用于平均的事实来解释。但是,即使在最低频率下,FLL的可变性也比MICBF大,而MICBF在所有频率上的可变性始终很小。[0310] 总体而言,与FLL相比,MICBF在较大的频率分布范围内更准确,并且具有较小的可变性,尽管内存使用情况显著增加。下面将考虑如何将差分隐私应用于MICBF。[0311] 本文提出了使MICBF具有差分隐私的至少两种方法,这两种方法都将双侧几何分布用于噪声。第一种是将差分隐私(DP)应用于各个CBF存储桶,这会导致相当差的测量质量,在下文中,将回顾其详细信息。另一方面,将DP应用于存储桶值的直方图的第二种方法具有可靠的结果。[0312] 假定基数估算可以使用存储桶值的直方图,并且假设可以在不揭示存储桶值的情况下计算直方图(在下一章节中,将显示这是可能的),然后可以将差分隐私应用于存储桶值直方图本身。现在,通常直方图查询的敏感度可以为1,但是由于正在考虑存储桶值的直方图,并且每个客户端设备标识符或属性数据均表示k次,因此敏感度实际上为k,或者只是散列函数的数量。对于CBF_MI_0_01系列,该值为7。[0313] 图13A–B示出了针对ε值0.1、0.5、1和2给出的估算值。这些分别对应于两侧几何分布参数0.0142、0.0689、0.1331和0.2485。将噪声添加到直方图中对适中的ε值相对没有影响,即使ε等于0.1,测量也是合理的。[0314] 最后,图14A‑14B示出了对于为1的ε,MICBF的若干参数化的准确性。在此,即使具有差分隐私,CBF_MI_0_4与FLL一样也以较高频率执行。[0315] 图15示出了没有添加任何噪声(均匀)、添加噪声且未校正(GEO_NOCOR)以及添加噪声而后校正(GEO_COR)下,用于CBF_MI_0_01的MAE的log10。使用为1的ε并将查询的敏感度设置为8,这意味着使用参数0.1175的双面几何分布。作为参考,还示出了FLL_2_14。具有校正之前的几何噪声的CBF无法使用,但是即使去噪,版本也比FLL表现出高出一个数量级的误差。图16A–B显示了全部图表集合,但去除了GEO_NOCOR。检查平均误差图可得出的一个观察结果是,随着频率的变化,估算值会过估算和欠估算之间波动。[0316] 观察结果导致了有关去噪方案下估算方差的另一个问题,该问题是通过采用单个CBF并对其应用100个不同的噪声向量来进行调查的。这是针对具有8个灵敏度和四个不同ε值(0.5、1、2和3)的查询完成的,但是重要的是这些值所暗示的几何分布的参数,这在图17A–B中列出。观察到,对于p=0.06,估算的标准偏差在平均值附近变化约5%。此外,假设查询的敏感性可能远远高于8,则p=0.06可能是期望为噪声分布看到的最大值。[0317] B.级联军团频率和基数估算[0318] 可以由上文章节A中描述的任何计算机系统或本章节中描述的任何计算机系统执行、实行或以其他方式实现本章节中描述的实施方式、技术、系统、方法或过程。[0319] 标识符服务器可以例如通过维护与相应客户端设备相关联的客户端标识符而与客户端设备集合相关联。每个客户端标识符可以包括描述每个标识符服务器和客户端设备之间的关联的属性信息。属性信息可以包括关于客户端设备与标识符服务器之间的关系的信息(例如,网络浏览历史、交互数据、关联时间、网络分析数据等),并且可以包括从相应客户端设备接收的受保护的或私有的信息。不同的标识符服务器可以维护与相同的相应客户端设备相对应的不同的属性数据和不同的客户端标识符。通常,为了确定每个标识符服务器之间是否存在重复的属性数据,标识符服务器可以将可以包括受保护的信息或私有信息的属性数据共享给集中式服务器,以对任何客户端属性信息进行去重。[0320] 但是,所有客户端属性数据的传输都会对可扩展性带来问题。随着客户端标识符服务器的数量增加,经由网络传送的客户端设备属性数据的数量通常也增加。因为对于每个客户端设备,属性数据可以是详细的并且相对较大,所以大规模地传送这些信息可能会耗尽网络带宽和计算资源。此外,对于系统而言,不仅计算用户标识符的总数,而且计算满足特定属性数据标准(诸如特定属性的频率)的客户端设备的数量,而不在网络上传送受保护的或私有的属性信息将是有益的。另外,用于解决这些问题的加密概率数据结构的实施方式遭受不切实际地大(例如,千兆字节数量级)的草图大小。[0321] 为了解决上述问题,本技术方案的系统和方法的各方面可以利用级联军团方案。本文所述的概率数据结构可以基于客户端设备标识符的多重集中的成员的数量,在大小上呈对数增长。发布者计算设备可以将其散列计算为客户端设备及其活动频率(例如,与内容项交互的频率等)的关联集合,以生成散列设备标识符的集合。发布者可以生成级联军团数据结构,该结构包括位值矩阵。矩阵的每一行可以对应于每个散列数据记录中的最低有效零的数量。矩阵的每一列可以对应于每个散列数据记录的模值。[0322] 发布者计算设备可以通过确定数据记录中的最低有效零的数量来填充级联军团矩阵。例如,矩阵中的第一行可以对应于单个最低有效零(例如11111110),矩阵中的第二行可以对应于两个最低有效零(例如11111100)等等。可以使用产生均匀分布的输出的散列函数对每个设备标识符进行散列。因此,与矩阵中的行相对应的任何散列标识符的概率p可以等于2‑k,其中,k是矩阵的索引。例如,任何给定的散列标识符可以具有50%的机会(例如p=0.5)填充第一行,有25%的机会(例如p=0.25)填充矩阵的第二行等等。如果发布者计算设备确定散列标识符对应于矩阵的一行,则发布者可以对散列的数据记录执行模数运算以选择该行的位置,并且将该位置的位设置为1。发布者计算设备可以对与发布者相关联的所有标识符执行该操作。在发布者计算设备用所有标识符填充矩阵之后,发布者计算设备可以以概率p随机地翻转矩阵每一行的位,从而使草图具有差分隐私。[0323] 实现级联军团数据结构的技术可以解决HyperLogLog的挑战。如上相对于计数布隆过滤器所述(例如,在章节A以及全文中等),可以由一个或多个标识符服务器(例如,数据处理系统105A‑N等)生成级联军团数据结构。可以经由安全的多方计算(例如,基于同态加密等)和添加差分隐私噪声的组合,以隐私保护的方式合并草图。[0324] 使用上文中在章节A中所述的基于计数布隆过滤器(CBF)的方法可以在多个发布者之间提供隐私安全到达率和频率去重。这样的解决方案可以实现利用乘法同态的加密方案,这可以提高分布式验证技术的计算性能。在这样的方法中,草图的大小可以存储大小接近互联网总人口或其他各种规模的人口的听众。这样的方法可以允许每个发布者对每个请求上传几GB的数据集或一些形式的反馈环,其中,系统可以从小草图开始,然后如果受众很大,或者基于该方法的其他方面,则请求较大的草图。[0325] 基于HyperLogLog(HLL)的方法可以实现最小/最大操作,该操作可以利用计算量更大的加密。在HLL实施方式中,维护放置在草图中的用户标识符的差分隐私保护似乎也是一项长期挑战。[0326] 实现本文描述的级联军团基数估算器(CLCE)技术的方法可以组合计数布隆过滤器(例如,上文在章节A中所述等)和HyperLogLog的思想,并至少解决前述问题。因此,本文详述的CLCE实施方式呈现了对跨多个数据集的基数确定算法的改进,而没有损害设备标识符的差分隐私。与其他实施方式和技术不同,级联军团草图的大小可以随着与特定标识符服务器(例如,数据处理系统105等)相关联的标识符数量的大小而呈对数增长。无需最小/最大操作以实现这些技术,因此可以将计算上廉价的加密方案用于CLCE。草图的结构类似于上文在章节A中所述的计数布隆过滤器方法,因此(例如,本文在上述章节A中所述的)针对CBF开发的多方计算(MPC)可以应用于CLCE草图以计算设备标识符和目标属性的合集的频率和基数。[0327] 同时,通过CLCE获得的基数估算可以是无偏的,并且并集运算是可交换的,与其他实施方式相比,可以提供高质量结果。CLCE草图可以包括至少两个参数:军团的数量l和军团中的位置的数量n。该草图可以是位的二维n×l数组。在一些实施方式中,草图可以是计数器寄存器的二维n×l数组,或者可以是存储在计算机存储器(例如,数据处理系统的存储器105等)中的一个或多个数据结构中的另一类型的变量或数据类型。可以将空草图初始化为初始化值(例如零)。[0328] 在下文中,在下述伪代码中包括估算器的示例性表示:[0329] classCascadingLegions:[0330] def__init__(self,l,n):[0331] self.l=l#军团的数量[0332] self.n=n#军团中位置的数量[0333] self.legions=newarraylbynfilledwithzeros[0334] defAdd(self,element):[0335] binary_fingerprint=binaryfingerprintofelement[0336] legion=numberofleastsignificantzerosinbinary_fingerprint[0337] #属于最后一个军团外的元素被放入最后一个军团中.[0338] iflegion>=self.l:[0339] legion=self.l‑1[0340] #位置使用在去除结尾0和1后仍然存在的binary_fingerprint的位数.[0341] position=(binary_fingerprint//2**(legion+1))%self.n[0342] self.legions[legion,position]=1[0343] @staticmethod[0344] defExpectedBits(num_elements):[0345] #易于明白下文是用于在添加num_elements元素后激活的预期位数的公式[0346] returnsum([0347] 1‑exp(num_elements/(2**i*self.n))*self.n[0348] foriinrange(1,self.l))+([0349] 1‑exp(num_elements/(2**(self.l‑1)*self.n))*self.n[0350] defEstimateCardinality(self):[0351] b=countbitsinself.legions[0352] returnaveragenum_elementsforwhichint(ExpectedBits)isequaltob[0353] defMerge(self,other_sketch):[0354] self.legions=elementwiseORofself.legions andother_sketch.legions.[0355] 尽管估算器的上述表示可能指示估算器的功能(例如,级联军团草图的构造、向草图添加元素、基于军团确定期望的位数、基于草图估算集合的基数以及其他草图的合并等)作为单个类的一部分在单个计算设备上进行,应当理解到,上述伪代码是以纯粹用于示例性算法表示的这种方式构造的,而不应当解释为描述执行这种技术的任何系统的构造。应当理解到,本文描述的任何计算设备可以执行上述任何功能,并且这样的技术可以分布在一个或多个计算设备(例如,数据处理系统105A‑N、工作者计算设备405A‑N、聚合器计算设备410等)上。上面的伪代码也不应当被解释为对本文所述的系统和方法的任何限制,因为应当理解到,上述表示仅仅是出于示例的目的,并且可以仅描述本文所述的实施方式的一个或多个方面。[0356] 具有参数(l,n)的级联军团草图可以通过等于(例如,等于、近似等于等) 的标准l偏差的相对误差,估算尺寸最大为2的集合的基数。[0357] 现在参考图18中所示的曲线图,描绘了理论上估算的位数,该位数被添加到草图的设备标识符占用,同时进行了10次模拟。使用n=10K,l=7的CLCE参数。图18中表示的数据应当被视为纯粹示例性的数据,并且本文描述的技术的实施方式可以产生不同的结果。因此,应当理解到,该数据纯粹是示例性数据,并且在任何方面都不应当被视为是限制性的。[0358] 图18中的线在视觉上可能无法区分。在图18中,设备标识符估算与军团数量的相对误差保持在2%以下。对于较小的受众群体,误差达到4%,因为为简单起见,丢弃了在最后一个军团之外的用户标识符。在一些实施方式中,不丢弃落在该最后一个军团之外的用户标识符。[0359] 图19描绘了来自具有32个军团和10K位置的草图的示例性数据可以足以准确地测量任意现代设备标识符集合。该草图可以包含320千位,但是可以包括不同数量的位、军团或具有变化参数的军团位置。[0360] 为了执行级联军团基数或频率估算,系统(例如,系统100、系统流程图400A‑C、其任何组合等)可以执行以下过程的任何组合。首先,系统可以包括可以生成草图(例如,如本文所述的级联军团草图、本文所述的其他数据结构或草图等)的大量(例如,大于1、10、100、1000或10000等)发布者计算设备(例如,数据处理系统105A‑N、本文所述的其他计算设备、标识符服务器等)和少量工作者(如,工作者计算设备405A‑N、本文所述的其他计算设备等)来执行用于组合草图的安全协议。使用本章节中描述的级联军团草图,用于组合草图的安全协议可以是本文在上文章节A中描述的MPC协议。接下来,系统可以使用ElGamal密码系统对草图进行加密,并且与上文章节A中所述的CBF设计一样,为了解密众所周知的值,系统可以使用乘法同态(例如,使用ElGamal加密等)以通过观察在相同底数相乘下指数是相加的来实现加法运算。例如2^5*2^5=2^10。第三,回想一下,可以将不同的ElGamal公钥进行组合,并且解密(或部分解密,如果仅使用一些私钥等)可以应用其公钥是组合的一部分的每个私钥。每个工作者可以生成密钥对,并且组合的公钥可以由发布者计算设备(例如,数据处理系统105A‑N、本文所述的其他计算设备、标识符服务器等)使用以加密其草图。[0361] 每个工作者计算设备(例如,工作者计算设备405A‑N、聚合器计算设备410等)可以如本文所述交换和组合公钥,以生成聚合的公钥。一旦生成了聚合公钥(例如,组合的ElGamal或同态加法加密方案密钥等),该协议可按以下步骤进行。每个发布者计算设备都可以对其草图进行加密,并将其提供给至少一个工作者计算设备(例如,工作者计算设备405A、聚合器计算设备410等),有时可以被称为第一工作者计算设备。[0362] 第一工作者计算设备可以逐个位置对每个草图进行求和(例如,逐个存储桶、将每个计数器寄存器、变量或数据条目与相似的索引值或位置或每个相应的军团的每个位置进行组合等)以生成组合草图。组合草图可以与从每个标识符服务器(例如,数据处理系统105A‑N,有时被称为发布者计算设备等)接收的每个草图相同尺寸或被构造成容纳从每个标识符服务器接收的每个草图的尺寸。在一些实施方式中,如果级联军团草图是位矩阵数据结构,则组合草图可以包括在要组合的所有草图上执行逐位或运算。在一些实施方式中,如果级联军团草图是值矩阵数据结构(例如,另一种变量、值或计数器寄存器的矩阵等),则第一工作者可以在要组合的草图上执行另一种组合运算(例如,加法、乘法、同态加法等),如本文所述。[0363] 系统(例如系统405A‑C)的工作者计算设备(例如,工作者计算设备405A‑N、聚合器计算设备410等)可以混洗组合草图,同时应用确定性加密层并移除不确定性加密层,如本文上述参考在章节A中所述的MPC协议所述。例如,第一工作者计算设备可以混洗位置和军团上的位(或矩阵中的其他类型的数据),然后将结果传递给第二工作者计算设备。在对加密和组合的草图进行混洗之前,每个工作者计算设备可以使用私有解密密钥,对草图进行部分解密,该私有解密密钥对应于该工作者对聚合加密密钥(例如,由工作者计算设备创建的聚合ElGamal加密密钥等)的贡献。在使用私有解密密钥对草图进行部分解密之后,当前正在处理草图的工作者计算设备可以将确定性加密方案应用于草图。在应用确定性加密层之后,工作者计算设备可以置换或混洗加密数据结构中的位置。如果数据结构是级联军团数据结构,则工作者计算设备可以置换l个军团的每个军团中的n个位置。在一些实施方式中,工作者计算设备可以置换l个军团的顺序。[0364] 对于每个工作者计算设备405,该过程可以继续。例如,第二工作者计算设备(例如,工作者405B等)可以去除其非确定性加密层,并且添加确定性加密层,并且可选地进行置换。然后,第二工作者可以将处理的草图结果传送到第三工作者计算设备(例如,工作者405C等)。该过程可以继续,直到每个工作者计算设备都去除了非确定性加密层(例如,使用由用于创建聚合加密密钥的公共加密密钥生成的私有解密密钥)并且应用了其确定性加密层,并且可选地,对草图进行置换。[0365] 工作者(例如,工作者405A‑N、聚合器计算设备410等)可以以环形配置来布置。在这样的配置中,第一工作者计算设备(例如,工作者405A或聚合器计算设备410等)可以处理加密的草图并且将输出传送到第二工作者计算设备,第二工作者可以将输出传送到第三工作者计算设备等等。一旦最后一个工作者计算设备(例如,工作者405N,其中N是工作者计算设备的数量等等)已经处理了草图,则可以将输出传送到第一工作者计算设备(例如工作者计算设备405A、聚合器计算设备410等)。然后,第一工作计算设备可以去除其非确定性加密,并添加确定性加密层(如果尚未在该过程的第一步中这样做的话)。在一些实施方式中,在环形配置中,每个工作者计算设备已经处理完草图之后,第一工作者计算设备可以组合每个草图,并将组合的加密草图传送给第二工作者计算设备,并去除其非确定性加密层,并将其确定性加密层应用作为最后一个处理步骤。[0366] 接下来,每个工作者确定性地对值0进行加密,从而显示草图中的零的数量。由此可以计算出基数的估算值。[0367] 在一些实施方式中,可以在不进行确定性加密的情况下计数零的数量。由于消息在指数中,因此系统可以依赖于以下事实:加密0只是该组的标识元素。因此,除了确定性加密外,系统还可以为每个密文选择随机指数(而不是对所有密文使用相同的指数,确定性加密可以做到这一点)。“0”元素可以保留0,其余元素可以随机化。这可以提高系统的整体隐私性,因为它揭示了0的数量,仅此而已。系统可以由总基数确定“参考军团”,然后从金色向上混洗军团。[0368] 请注意,为了进行估算,系统可以显示存储桶值的部分直方图。即,系统可以知道存在的零的计数,并且可以将所有其他值的计数假定为1。接下来,观察对于添加到草图中的任何用户标识符,其对直方图的贡献最多可以使“1”的计数增加至多1,其中,由于散列冲突,任何单个标识符对直方图的贡献实际上可能为零。因此,查询的敏感度可以为1。[0369] 可以通过两种方式中的至少一种来实现增加噪声,该噪声可以从双尾几何分布中得出。一种更简单的实施方式可以包括对工作者屏蔽直方图,然后在计算估算值之前,将正确的噪声量简单地添加到每个直方图存储桶中。这可以导致差分隐私输出计算,但是工作者会了解真实的直方图值。[0370] 一种添加噪声的更复杂但更安全的实施方式可以包括在工作者之间分布其生成。在这样的实施方式中,每个工作者可以绘制两个Polya随机变量(Xi,Yi),它们分别表示由第i个工作者添加到直方图的0的数量和1的数量。注意,可以构造作为负二项式的特例的Polya随机变量,以便求和到双尾几何随机变量。[0371] 首先,工作者可以通过就将要添加到每个存储桶的噪声的任意基线达成一致。将该值称为B。然后,在混洗阶段期间,每个工作者可以将B‑X个0添加到草图,向草图添加B‑Y个1。最后,聚合直方图的工作者可以从每个直方图存储桶中减去值B*W,其中,W是工作者的数量。然后,我们得到了所需的噪声分布。[0372] 频率直方图估算至少有两个选项,包括概率反卷积和频率直方图估算。[0373] 使用级联军团估算多重集的频率的至少一种技术是基于概率解卷积。概率解卷积技术可以基于由工作者计算设备(例如,工作者计算设备405A‑N、聚合器计算设备410等)生成的最终解密、聚合以及可选地混洗的级联军团草图来生成频率直方图。为了估算频率直方图,self.legions(例如,军团数据结构等)可以存储与用户标识符相关联的频率,而不仅仅是一点点存在。在这样的实施方式中,级联军团数据结构不是位值的矩阵,而是被生成为如本文所述被更新的频率值的矩阵。当使用由工作者计算设备405A‑N生成的聚合公钥进行加密时,每个军团中的每个位置的频率值都可以转化为一些素数的幂(例如,使用聚合密钥独立地加密每个军团中的每个位置等)。在一些实施方式中,使用其他加密方案,并且使用聚合公钥独立地加密每个军团。在一些实施方式中,使用聚合公钥而不是逐个位置或逐个军团,加密整个级联军团数据结构一次。[0374] 系统可以(例如,按军团索引的升序或降序等)从左到右解密军团,直到击中参考军团(例如激活少于一半位置的第一军团等)。例如,一旦聚合数据结构已经由每个工作者计算设备(例如,工作者计算设备405、聚合器计算设备410等)处理,则聚合器计算设备可以递增地解密级联军团数据结构中的每个军团。一旦对军团进行解密,聚合器计算设备就可以确定军团中填充的位置的数量。聚合器计算设备可以确定通过迭代遍历解密军团中的每个位置填充的军团中的位置的数量,并且确定位置值是否等于零(或低于阈值或等于另一个预定值,或满足一些其他非人口标准等)。如果填充了该军团中少于一半的位置,则聚合器计算设备可以确定该特定军团为参考军团。如果聚合器计算设备确定军团不是参考军团,则聚合器计算设备可以解密级联军团数据结构中的下一个军团。级联军团数据结构中的下一个军团可以是例如与下一个最大军团索引,或标识下一个军团的一些其他度量(例如,下一个内存地址等)相对应的军团。[0375] 从参考军团开始,可能会发生少量冲突。因此,系统可以将所有军团一起混洗然后解密。这些频率被用作确定产生的频率直方图的样本。可以通过找到在冲突后导致观察到的直方图的最有可能的原始直方图来进行一些调整。该方法可以包括同态加密以过滤掉多个用户对其作用的寄存器(例如位置等),并获得了用户频率的干净样本。[0376] 相同的密钥聚合结构是一对加密的计数器和密钥(E(count),E(key))。级联军团数据结构上的加法可以被定义为:[0377] (E(count1),E(key1))+(E(count2),E(key2))=(E(count1+count2+R*(key1‑key2)),E(key1+R*(key1‑key2))。[0378] 其中,R是随机数。可以同态地计算该加法运算符。[0379] 该结构的行为如下:[0380] 如果key1=key2=key,则[0381] (E(count1),E(key))+(E(count2),E(key))=(E(count1+count2),E(key))。[0382] 使用级联军团估算多重集的频率的至少一种其他技术是基于频率直方图估算。基于频率直方图估算的技术可以通过生成频率直方图估算特定目标标准的频率以进一步估算和处理。对于每个寄存器(例如军团位置等),系统可以添加同一密钥聚合器。发布者计算设备(例如,标识符服务器、数据处理系统105A‑N等)可以使用将寄存器启动为密钥的虚拟id的散列。如果发布者计算设备没有设备标识符,则会添加特殊的空令牌。首先将寄存器布尔值组合,然后可以将非组合印象聚合器与它们混洗。对于非零的寄存器,空令牌将被解密和丢弃。可以组合剩余的印象聚合器。然后解密计数器。[0383] 该系统可以将差分隐私保护应用于每个级联军团数据结构,以混淆或以其他方式保护有助于生成每个级联军团数据结构的设备标识符和属性的隐私。例如,每个发布者计算设备(例如,标识符服务器、数据处理系统105A‑N等)可以通过随机翻转位来保护将差分隐私噪声应用于级联军团草图,类似地,利用在上文章节A中,本文所述的布隆过滤器来完成。在一些实施方式中,如果草图中的每个位置是用于频率估算的计数器寄存器,则可以通过随机添加、更新或以其他方式递增军团中的随机位置来实现差分隐私。例如,可以通过递增预定量(诸如递增1、2等或递增某些阈值内的随机量(例如0和100之间的随机数或任何其他范围等)来增加这些噪声。[0384] 系统可以通过以概率p翻转每个军团x位置(例如,或如上所述添加到计数器寄存器等)位来应用噪声。对于k个草图,并且在具有位b的组合的一些位置,则该组合转换为位(b')与概率p^(k‑a)*(1‑p)^a的组合,其中,a是b_i=b'_i的位置i的数量。当将该基本原理应用于基于计数器寄存器的频率军团时,相同的分析适用于等于或不等于零的位置(例如,对于该分析,等于零的所有位置都可以被视为二进制0,而对该分析,不等于零的所有位置都可以被视为二进制1等)。因此,系统可以计算组合转换的随机矩阵,并且通过反转获得噪声校正矩阵。[0385] 系统可以基于参考军团估算基数或频率。因此,系统可以将组合的级联军团草图(例如,在由工作者计算设备和聚合器计算设备进行处理之后)视为布隆过滤器或者计数布隆过滤器的集合,并且选择噪声最小的一个。系统可以使用启发式方法来选择参考军团:可以将其选择为少于一半位饱和的第一军团(在应用噪声消除之后),或者在计数器寄存器的情况下,可以选择具有填充少于1半位置的第一军团。可以按人口减少概率的顺序分析每个军团。例如,由于基于填充每个军团。[0386] 现在参考图5,描绘了用于基于设备标识符值和属性数据来生成级联军团数据结构的方法2000的流程图。方法2000可以例如由至少一个数据处理系统(例如,至少一个数据处理系统105等)或本文描述的任何其他计算设备执行。数据处理系统可以维护数据记录(动作2002)。数据处理系统可以生成空的级联军团数据结构(动作2004)。数据处理系统可以选择第k个数据记录(动作2006)。数据处理系统可以对所选数据记录进行散列处理(动作2008)。数据处理系统可以选择军团(动作2010)。数据处理系统可以提取位置标识符(动作2012)。数据处理系统可以在所选寄存器军团中定位(动作2014)。数据处理系统可以确定计数器寄存器k是否等于数据记录的数量n(动作2016)。数据处理系统可以递增计数器寄存器k(动作2018)。数据处理系统可以获得聚合加密密钥(动作2020)。数据处理系统可以加密向量计数器寄存器(动作2022)。数据处理系统可以传送加密向量(动作2024)。[0387] 数据处理系统可以维护数据记录(动作2002)。数据记录(例如,数据记录122A‑N)可以包括例如一个或多个设备标识符(例如,客户端标识符125A‑N)和一个或多个属性(例如,属性127A‑N)。数据记录可以是可通信地耦合到数据处理系统的数据库(例如,数据库115)中存储的一个或多个数据结构。维护数据记录可以包括将一个或多个数据记录存储在计算机存储器中。在一些实施方式中,数据处理系统可以响应于从至少一个客户端设备(例如,至少一个客户端设备120)接收一个或多个消息(例如,请求、指示、数据分组等)来维护数据记录。数据处理系统可以从消息中提取至少一个标识符以及消息中存在的任何属性,并且生成数据记录以包括标识符和属性。然后,数据处理系统可以将数据记录维护(例如,存储、加载或以其他方式记录)在计算机存储器(诸如数据库、一个或多个数据结构或非易失性计算机可读介质)中。在一些实施方式中,数据处理系统可以从一个或多个客户端设备(例如,客户端设备120A‑N等)接收一个或多个数据记录。[0388] 数据处理系统可以生成级联军团数据结构(动作2004)。为了生成级联军团数据结构,数据处理系统可以分配一个或多个存储器区域以容纳至少一个位数组、至少一个计数器寄存器数组或至少一个计数器寄存器。所分配的至少一个位数组、至少一个计数器寄存器数组或至少一个计数器寄存器可以对应于级联军团数据结构的至少一个坐标(例如,特定军团中的位置等)。通过对一个或多个计数器寄存器生成并分配存储器,数据处理可以生成包含计数器寄存器的向量。数据处理系统可以生成至少一个军团,该军团可以是位的数组或计数器寄存器的数组。数据处理系统可以为每个生成的军团分配军团ID(例如,上文使用的军团标识符1等),并且可以为每个军团中的每个位置(例如每个位、计数器寄存器等)分配位置标识符。在一些实施方式中,位置标识符可以在军团之间是相同的,但在同一军团中不同。例如,特定军团中的所有位置可以具有不同的位置标识符,但两个不同军团中的相似位置可以具有相同的标识符。数据处理系统可以将级联军团数据结构的每个位置(例如,位值或计数器寄存器等)初始化为初始化值,例如0或1。数据处理系统可以生成级联军团数据结构,该结构可以对应于计数器寄存器或位值的矩阵,其中,矩阵中的每个位置有时被称为“存储桶”或“多个存储桶”。例如,数据处理系统可以接收指示以生成级联军团数据结构,该级联军团数据结构的每个存储桶具有l个军团和n个位置,或跨越l个军团的lxn个存储桶。数据处理系统可以访问由外部计算设备提供的内部配置设置,该内部配置设置通过军团的数量、存储桶、位位置、计数器寄存器或本文所述的任何其他可能的参数来指定级联军团数据结构的大小。[0389] 数据处理系统可以选择第k个数据记录(动作2006)。为了处理在(动作2002)中维护的每个数据记录并将其添加到所生成的级联军团数据结构,数据处理系统可以遍历由数据处理系统维护的每个数据记录。数据处理系统可以基于计数器寄存器k,迭代循环通过每个数据记录。例如,每个数据记录可以通过索引值(例如,索引0、索引1、索引2等)在数据结构中被索引。为了处理数据记录,数据处理系统可以选择包括等于或近似等于计数器寄存器k的索引值或与该索引值相关联的数据记录。如果是循环的第一次迭代,则在选择第k个数据记录之前,可以将计数器寄存器k初始化为初始化值(例如,k=0、k=1等等)。选择数据记录可以包括将与数据记录相关联的数据复制到数据处理系统中的计算机存储器的不同区域,例如存储器的工作区域。选择数据记录可以包括如果数据记录位于数据库中,则从数据库中检索数据记录;以及将与样本相关联的数据复制到数据处理系统中的计算机存储器的不同区域(例如存储器的工作区域)中。[0390] 数据处理系统可以对所选数据记录进行散列处理(动作2008)。数据处理系统可以标识并执行用于填充级联军团数据结构的散列函数。例如,在散列列表中标识的每个散列可以基于输入值提供对随机性的正态分布或预期。即,例如,散列函数的类似输入不一定具有散列函数的类似输出。可以选择散列函数作为用于级联军团数据结构的最佳散列函数。例如,数据处理系统可以选择独立且均匀分布的散列函数。这样的散列函数可以包括例如杂音散列、Fowler‑Noll‑Vo系列散列或Jenkins散列、SHA‑1散列、SHA‑2散列或本领域已知的可以产生均匀分布或基本均匀分布的输出分布的任何其他类型的散列函数等。数据处理可以选择或标识散列函数,并且将散列函数应用于所选数据记录以生成散列数据记录。[0391] 数据处理系统可以选择所生成的级联军团数据结构的军团(动作2010)。可以生成级联军团数据结构,以包括多个军团,每个军团都由相应的索引值索引。随着索引值增加,值更新相应军团中的位置的可能性会降低。例如,考虑具有l个军团的级联军团数据结构。l个军团中的每一个都可以用索引值(例如1,2,3,…,l)编号。在一些实施方式中,每个军团的索引值可以以不同的编号开始和结束(例如,第一军团的索引值为0,而最后一个军团的索引值为l‑1等)。每个散列数据记录可以更新级联军团数据结构中的军团的位置。为了基于散列数据记录确定选择哪个军团进行更新,数据处理系统可以确定散列数据记录的某些位置的零的数量。例如,对于等于值“011010100100”的散列数据记录,数据处理系统可以确定散列数据记录具有两个连续的最低有效零。基于该确定,数据处理系统可以选择第二个(例如,索引值为2的级联军团等)来更新。接下来是三个连续的零(其将被放置在具有索引值为3的军团中),以及四个连续的零(其将被放置在具有索引值为4的军团中)等。相应地,由于散列函数的输出是均匀分布的,因此,任何散列数据记录具有一个最低有效零的机会为50%,任何散列数据记录具有两个连续的最低有效零的机会为25%,任何散列数据记录具有三个连续的最低有效零的机会为12.5%等等,任何给定的散列数据记录填充每个军团的可能性越来越小。在一些实施方式中,只要相同的位位置,则使用另一系列的位来以相似的方式选择军团(例如,连续的最高有效位,或者贯穿每个散列数据记录的一系列连续的或非连续的位等),并且连续值方案被用于每个散列数据记录,每个散列数据记录被用来填充级联军团数据结构。[0392] 数据处理系统可以从散列数据记录中提取位置标识符(动作2012)。散列数据记录可以对应于在动作2010中选择的军团的位置。为了标识所选军团中的相应位置,数据处理系统可以从散列数据记录中提取寄存器标识符。数据处理系统可以例如通过对具有所选军团中的位置的数量的每个散列数据标识符执行模数运算来提取寄存器标识符。在一些实施方式中,数据处理系统可以对不用于选择军团的散列数据记录的位执行模数运算。例如,如果散列数据记录等于“011010100100”,并且通过从最低有效位开始的连续0的数量选择军团,则数据处理系统可以对剩余的散列数据记录执行模数运算,在该示例中,将为“0110101001”。如果连续零的最低有效位的数量为4(例如,散列数据记录等于100100110000'),则数据处理系统可以使用散列数据记录中未用于选择军团的位来选择军团中的位置(例如“10010011”)。如果在除去用于选择军团的位之后剩余的位的数量小于选择位置所需的位的数量,则数据处理系统可以生成随机(例如,伪随机、均匀分布的)位直到选择该军团中的位置所需的编号为止。例如,如果军团中有16个位置,但是在提取其余位置后仅剩下2位,则数据处理系统可以随机(例如,伪随机等)生成2个以上位并且将它们级联到2个剩余位。在该示例中,这将生成由4个均匀分布的位的位串,其可以被用来从军团中的16个位置进行选择。[0393] 数据处理系统可以更新所选军团中的所选位置(动作2014)。更新所选位置可以包括例如将1加到对应于所选军团中的位置标识符的计数器寄存器。在一些实施方式中,数据处理系统可以设置与所选军团中的位置标识符相对应的位。在一些实施方式中,添加到计数器寄存器的数量可以是不同于1的值。例如,数据处理系统可以将其他值添加到每个计数器寄存器,这些其他值可以对应于本文确定、生成或计算出的任何值。在一些实施方式中,由于本文讨论的各种原因,数据处理系统可以从计数器寄存器中减去。在一些实施方案中,作为减法的替代方案,数据处理系统可以向数据处理系统当前未选择的每个其他计数器寄存器存储桶添加数量(例如,1或一些其他值等)。例如,数据处理系统可以将值递增与特定数据记录相关联的某一访问次数。如果与设备标识符相关联的设备访问特定内容项一定次数,则数据处理系统可以使级联军团数据结构(例如,本文所述的任何其他概率数据结构,包括在任何其他章节中,等)中的位置递增与散列数据记录相对应的设备访问特定内容项的次数。在一些实施方式中,访问该特定内容项的次数被存储在相应的数据记录中。[0394] 数据处理系统可以确定计数器寄存器k是否等于数据记录的数量n(动作2016)。为了确定数据处理系统是否已经使用每个数据记录更新了级联军团数据结构,数据处理系统可以将用于选择每个数据记录的计数器寄存器(例如k)与数据记录的总数n进行比较。如果计数器寄存器k不等于(例如,小于)数据记录的总数n,则数据处理系统可以执行(动作2018)。如果计数器寄存器k等于(例如,等于或大于)数据记录的总数n,则数据处理系统可以执行(动作2020)。[0395] 数据处理系统可以使计数器寄存器k递增(动作2018)。在一些实施方式中,数据处理系统可以将1添加到寄存器k以指示所维护的数据记录集合(例如,由数据处理系统在动作2002中的维护的数据记录等)中的下一个未处理的数据记录。在一些实施方式中,数据处理系统可以将计数器寄存器k设置为下一个未处理的数据记录的存储器地址值(例如,计算机存储器中的位置)。在一些实施方式中,下一个未处理的数据记录的存储器地址值可以被包括在当前(例如,所选)数据记录的位置处的数据结构中。在递增计数器寄存器k的值之后,数据处理系统可以执行(动作2006)。[0396] 数据处理系统可以获得聚合加密密钥(动作2020)。例如,数据处理系统可以接收由一个或多个工作者计算设备(例如,工作者计算设备405A‑N、聚合器计算设备410等)生成的聚合公钥。在一些实施方式中,数据处理系统可以从其他计算设备(例如,其他数据处理系统、工作者计算设备等)接收一个或多个公钥,并且将公钥聚合为聚合的公共加密密钥。在一些实施方式中,工作者计算设备可以交换和聚合公钥并生成聚合公钥,并将其传送到已经生成级联军团数据结构的每个数据处理系统。在一些实施方式中,聚合密钥可以被用来部分或全部加密本文所述的一个或多个位置、军团或级联军团数据结构。在一些实施方式中,聚合密钥可以简单的是单个公钥,其被分发到数据处理系统以对由数据处理系统维护的级联军团数据结构进行加密。在一些实施方式中,聚合加密密钥可以包括一个或多个ElGamal加密密钥,或任何其他类型的同态加密方案。在一些实施方式中,聚合加密密钥可以是支持阈值解密方案的任何种类的公共加密密钥。[0397] 数据处理系统可以加密级联数据结构(动作2022)。为了确保级联军团数据结构的差分隐私,数据处理系统可以采用一种或多种加密技术来加密由数据处理系统生成和维护的级联军团数据结构。例如,数据处理系统可以使用在(动作2020)中,使用加密方案(例如,ElGamal加密、支持阈值解密的加密方案、同态加密等)获得的聚合公钥。在一些实施方式中,数据处理系统可以使用聚合加密密钥来加密分别与每个军团的位置相对应的计数器寄存器或位值的每一个以加密级联军团数据结构。在这样的实施方式中,每个加密的计数器寄存器或位值可以被聚合以创建表示级联军团数据结构的加密数据结构。在一些实施方式中,数据处理系统可以逐个军团地加密级联军团数据结构,也就是说,每个军团可以被独立地加密并聚合为表示级联军团数据结构的加密数据结构。[0398] 数据处理系统可以传送加密的级联数军团据结构(动作2024)。传送加密的级联军团数据结构可以包括将加密的级联军团数据结构提供给工作者计算设备(例如,工作者计算设备405A‑N、聚合器计算设备410中的任何一个等)。数据处理系统可以将工作者计算设备选择为一个或多个工作者计算设备中的第一个,以处理加密的级联军团数据结构。在一些实施方式中,数据处理系统可以逐个位置传送加密的级联军团数据结构,即,可以将每个军团的每个位置单独地传送到工作者计算设备。在一些实施方式中,数据处理系统在批量交易中传送加密的级联军团数据结构,其中,在单个消息中传送大部分或全部加密向量。在一些实施方式中,数据处理系统可以逐个军团地传送加密的级联军团数据结构,其中,每个加密的军团在其自己的消息中被传送到工作者计算设备。[0399] C.频率和基数估算的交替级联军团技术[0400] 例如,通过维护与相应客户端设备相关联的客户端标识符,标识符服务器可以与客户端设备集合相关联。每个客户端标识符可以包括描述每个标识符服务器和客户端设备之间的关联的属性信息。属性信息可以包括关于客户端设备与标识符服务器之间的关系的信息(例如,网络浏览历史、交互数据、关联时间、网络分析数据等),并且可以包括从相应的客户端设备接收的受保护的或以其他方式私有的信息。不同的标识符服务器可以维护与相同的相应客户端设备相对应的不同的属性数据和不同的客户端标识符。通常,为了确定在每个标识符服务器之间是否存在重复的属性数据,标识符服务器可以将包括受保护的信息或私有信息的属性数据共享给集中式服务器,以对任何客户端属性信息进行去重。[0401] 但是,所有客户端属性数据的传输都会给可扩展性带来问题。随着客户端标识符服务器的数量增加,经由网络传送的客户端设备属性数据的数量通常也增加。因为对于每个客户端设备,属性数据可以是详细的并且相对较大,所以大规模传送这些信息可能会耗尽网络带宽和计算资源。此外,对于系统而言,不仅计算用户标识符的总数,而且计算满足特定属性数据标准(诸如特定属性的频率)的客户端设备的数量,而不在网络上传送受保护的或私有的属性信息将是有益的。另外,用于解决这些问题的加密概率数据结构的实施方式遭受不切实际地大(例如,千兆字节数量级)的草图大小。[0402] 为了解决前述问题,该技术方法的系统和方法的各方面可以结合如在美国临时专利申请No.62/981,960中所述生成的去噪的级联军团数据结构。回想一下,每个发布者计算设备都可以生成概率矩阵数据结构,该结构表示与该发布者相关联的设备标识符。为了维护差分隐私,每个发布者都可以随机翻转矩阵的每一行中的位。数据处理系统可以从所有发布者计算设备接收噪声矩阵,本文有时被称为草图,并且在所有发布者计算设备上计算标识符的多重集的并集或基数。[0403] 使用来自每个发布者的草图来计算标识符的多重集的并集的至少一种实施方式包括首先计算每个噪声草图的基数(例如,用于生成草图的标识符的估算数量),以及通过降序基数对噪声草图进行排序。数据处理系统可以将噪声草图分组为预定大小的组,并且可以估算去噪的噪声。数据处理系统可以使用蒙特卡洛采样,对每组草图估算去噪的并集草图。一旦生成估算的去噪草图,数据处理系统就可以组合草图并确定表示来自所有发布者计算设备的所有设备标识符的基数或并集。[0404] 本文所述的技术允许发布者计算设备找到一组发布者计算设备的标识符(例如,设备标识符、属性等)的总数,而无需揭示关于在由发布者计算设备(例如,数据处理系统105A‑N)维护的数据记录中的设备标识符或与该设备标识符相关联存储的属性的任何信息。[0405] 从数学上讲,这是普遍问题的实例:找到并集S1,...,Sk的基数,其中,每个集合Si由代理Ai(例如,数据处理系统105I等)维护。如果数据集未揭示有关该数据集的任何单个成员的某些信息(例如,设备标识符、属性数据、任何单个或聚合数据记录等),则被称为差分隐私。期望创建用户集的草图,以使它们具有差分隐私,并且可以高效地确定集合(例如多重集)的并集的基数。在本章节中描述了用于差分隐私和噪声级联军团(例如,在本文中,上文章节B中所述的级联军团等)的高效并集的算法。章节B详述了章节A中概述的系统的实施方式,以提供级联军团方案来确定标识符的多重集的基数和频率。本章节详述了在数据处理级,向每个级联军团数据结构(例如,草图等)添加差分隐私(DP)噪声的技术)(例如,每个数据处理系统105A‑N可以向其各自的级联军团草图添加噪声等),并且使用可以减少或消除DP噪声对最终基数或频率估算的准确性的影响的技术来有效地确定多重集的基数和频率。[0406] 可以在线性时间内对k个DP噪声级联军团草图进行去重。该算法具有较高的计算效率。描述了一种启发式方法,其可被用来对任意数量的草图进行去重。如果满足某些假设,则噪声很小。特别地,如果并集草图的基数由最大草图的基数控制,则噪声很小。使用该章节中所述的技术,可以将(例如,本文在章节A中所述的)用于布隆过滤器的去重算法的复杂度从指数时间提高到线性时间。[0407] 通过以概率p随机翻转每个军团x位置来添加噪声。该概率被认为与差异隐私ε有关:[0408][0409] 例如,可以通过将级联军团数据结构减少为布隆过滤器(例如,或者,如在章节B中所述,如果使用计数器寄存器代替位值则计数布隆过滤器等),可以使该方案高效。级联军团草图可以由l个军团组成,每个军团都有n个位置。可以将条目(例如,包括设备标识符和相关联的属性数据的数据记录等)散列到一个军团的一个位置。散列成第k个军团的条目的‑k概率为2 。给定军团,对于所选军团中的每个位置,任何给定的数据记录填充或更新的任何一个位置的概率都是相同的。[0410] 在安全的多方计算中,由设置为1(例如,或者不是设置为0等)的位置的总数进行基数的估算。在差异隐私的情况下,位置总数的噪声将由空军团和饱和军团主导。因此,可以从处于饱和状态的军团中进行估算。上文在章节B中描述了对处于饱和状态的军团的选择,但包括确定级联军团数据结构中、具有由值填充的少于一半位置的第一军团。就其本身而言,处于饱和状态的军团可以是均匀布隆过滤器(或者如果使用计数器寄存器,则可以是计数布隆过滤器等)。可以将均匀布隆过滤器基数估算的算法应用于级联军团,如下述纯示例性而非限制性伪代码所述:[0411] 输入:CascadingLegion(l,n)sketchess[0],...,s[k‑1]noisedwithprobability[0412] 输出:该并集的基数[0413] forlegioninrange(l):[0414] estimateCtobedenoisednumberofbitssetto1inthe[0415] unionofsketeches[0416] ifC<(n/2):[0417] #位于参考区域[0418] ReturnestimationC*2^legion[0419] 该算法可以对在布隆过滤器的位置中观察到的位组合的体积的向量进行处理。该算法可以如下进行:[0420] 1.对于任何一对位组合b1,b2,都会计算从b1到b2的随机翻转的概率。[0421] 2.在1中计算出的概率被组装转换矩阵M。[0422] 3.可以对转换矩阵M求逆,以计算校正矩阵C。[0423] 4.给出草图的集合:[0424] a.计算位组合的体积的向量。[0425] b.将校正矩阵应用于向量以估算位组合的体积的预噪声向量。[0426] 位组合的体积的预噪声向量正在描述数据记录的完整多重集。为了计算并集,系统可以对除(0,...,0)以外的所有组合求和。可以在至少一种实施方式中实现计算校正矩阵,例如,如下文示例性而非限制性伪代码所述:[0427] defNoiseCorrection(s,p=0.1):[0428] “””噪声校正矩阵.[0429] Args:[0430] s:布隆过滤器的数量[0431] p:DP翻转概率[0432] 返回:[0433] 将被应用于组合计数以在DP噪声前恢复估算的组合计数的矩阵。[0434][0435] 在另一种实施方式中,处理可以在1的数量的向量上进行,而不是在组合向量上进行。可以使用二项式系数来确定用于1的数量的转换概率。可以使用向量的第一行来估算均为零的存储桶的降噪数量。在至少一种实施方式中,可以如下文示例性伪代码所述,在线性时间内实现计算1的数量的空间中的转换概率:[0436][0437][0438] 本文该章节中描述的技术可以包括反转随机矩阵。这种反转的结果对于大尺寸而言可能会变得嘈杂。给定小草图集合(例如,其中5个),就可以获得该并集的去噪草图的样本。下文所示的实施例获得用于2个草图的并集的去噪草图,尽管可以将下文所示的方法概括为任意数量的草图,以及概括为包括整数值(例如,计数等)的位置的草图,而不是单个位。该方法是蒙特卡洛采样启发式方法,并且在下文中,在下述示例性伪代码中示出:[0439][0440][0441] 使用上述技术,系统可以计算大的(例如,10个以上等)噪声草图上的并集,而不会损失准确性。在一些实施方式中,该算法可以包括调整参数k,可以将其设置为大约5。然而,也可以将调整参数k设置为其他值。[0442] 1.使用上述可以估算单个草图的基数的直接估算技术,单独估算每个草图的基数(例如,通过确定特定草图的转换概率,并从该位置中移除该数字,然后确定草图的基数)。[0443] 2.按草图的基数,以降序对草图进行排序(例如,草图列表中的第一草图具有最大基数,列表中的第二草图具有第二最大基数等)。[0444] 3.将草图分组为k个大小的组,同时保持其基数顺序(例如,列表中的前k个草图在第一组中,列表中的后k个草图在第二组中,依此类推等)。这生成g组草图。[0445] 4.对于g组草图中的每一组,使用蒙特卡洛方法来对各个组采样去噪并集。这可以返回g个蒙特卡洛样本的并集草图。[0446] 5.如步骤1所示,直接取g个草图的并集。[0447] 如果提供了要并集的所有集合的超集合,则可以进一步提高蒙特卡洛采样的准确性。在这样的实施方式中,用0填充没有数据映射到它们的所有寄存器。[0448] 现在参考图21,描绘了估算差分隐私噪声级联军团草图的基数的方法2100的示例性流程图。该方法可以由本文在章节A中描述的任何计算设备或本文所述的任何其他计算设备(例如,数据处理系统105A‑N中的一个或多个、客户端设备120A‑N中的一个或多个、工作者计算装置405A‑N中的一个或多个、聚合器计算装置410等),诸如聚合器计算设备(例如聚合器计算设备410等)实行、执行或以其他方式实现。聚合器计算设备可以接收一个或多个差分隐私级联军团草图(动作2102)。聚合器计算设备可以选择第k个草图(动作2104)。聚合器计算设备可以估算所选草图的基数(动作2106)。聚合器计算设备可以确定计数器寄存器k是否等于草图的数量n(判定2108)。聚合计算设备可以递增计数器寄存器k(动作2110)。聚合器计算设备可以按基数排序草图(动作2112)。聚合器计算设备可以对排序的草图进行分组(动作2114)。聚合器计算设备可以选择第g个组(动作2116)。聚合器计算设备可以使用蒙特卡洛采样来估算所选组的并集(动作2118)。聚合器计算设备可以确定计数器寄存器g是否等于组的数量m(判定2120)。聚合器计算设备可以递增计数器寄存器g。聚合器计算设备可以从g组并集值的并集估算基数(动作2124)。[0449] 聚合器计算设备可以接收一个或多个差分隐私级联军团草图(动作2102)。在一些实施方式中,聚合器计算设备可以周期性地或以突发事务方式接收差分隐私(例如,噪声等)级联军团。每个级联军团草图可以与反映由其生成和接收级联军团草图的标识符服务器(例如,数据处理系统105A‑N等)的相应标识符相关联。可以使用聚合加密密钥加密从标识符服务器接收的每个差分隐私级联军团草图。在一些实施方式中,不加密级联军团草图,并且通过各自的标识符服务器添加到级联军团草图的噪声来维护差分隐私。[0450] 聚合器计算设备可以选择第k个草图(动作2104)。为了处理和确定在动作2102中接收的每个级联军团草图的噪声基数,聚合器计算设备可以迭代聚合器计算设备接收的每个草图。聚合器计算设备可以基于计数器寄存器k,迭代循环通过每个级联军团草图。例如,可以通过索引值(例如,索引0、索引1、索引2等),在数据结构中索引每个级联军团草图。为了处理级联军团草图,数据处理系统可以选择包括等于或近似等于计数器寄存器k的索引值或与该索引值相关联的级联军团草图。如果这是循环的第一次迭代,则在选择第k个级联军团草图之前,可以将计数器寄存器k初始化为初始化值(例如,k=0、k=1等)。选择级联军团草图可以包括将与级联军团草图相关联的数据复制到聚合器计算设备中的计算机存储器的不同区域,例如存储器的工作区域。[0451] 聚合器计算设备可以估算所选草图的基数(动作2106)。为了对由聚合器计算设备接收的级联军团草图的列表进行排名,聚合器计算设备可以对所选级联军团草图的基数(例如,噪声基数)进行排名。为此,聚合器计算设备可以迭代草图中的l个军团中的每个军团,从具有最高人口概率的军团(例如,i=1,其中,i是所选军团等等)开始,并且以具有最低人口概率的军团(例如,i=l,其中,i是所选军团等)结束。对于每个所选军团,聚合器计算设备可以将填充位置的数量(例如,等于群体值的位数,诸如1等)与军团中未填充位置的数量进行比较。如果聚合器计算设备对所选军团,确定填充位置的数量大于或等于非填充位置的数量,则聚合器计算设备可以移动到级联军团数据结构中的下一个军团。如果聚合器计算设备确定填充位置的数量小于未填充位置的数量,则聚合器计算设备可以将所选军团存储为与当前军团索引相关联的参考军团(例如,如果聚合器计算设备迭代到级联军团数据结构中的第三军团,并且第一军团的索引为0,参考军团索引可以等于2等)。聚合器计算设备可以通过将参考军团中的填充位置的数量乘以2^(golden_legion_index)来估算所选受噪声军团数据结构的基数。例如,如果参考军团中有10个填充位置,并且参考军团索引等于4,则聚合器计算设备可以将噪声级联军团数据结构的噪声基数估算为10*2^4,或者160。[0452] 聚合器计算设备可以确定计数器寄存器k是否等于草图的数量n(判定2108)。为了确定聚合器计算设备是否已经使用每个噪声级联军团草图估算了噪声基数,聚合器计算设备可以将用于选择每个噪声级联军团草图的计数器寄存器(例如,k)与噪声级联军团草图的总数n进行比较。如果计数器寄存器k不等于(例如,小于)噪声级联军团草图的总数n,则聚合器计算设备可以执行(动作2110)。如果计数器寄存器k等于(例如,等于或大于)噪声级联军团草图的总数n,则聚合器计算设备可以执行(动作2112)。[0453] 聚合器计算设备可以递增计数器寄存器k(动作2110)。在一些实施方式中,聚合器计算设备可以将1添加到寄存器k以指示在所接收的级联军团草图的集合中的下一个未处理的噪声级联军团草图(例如,由聚合器计算设备在动作2102中接收的级联军团草图等)。在一些实施方式中,聚合器计算设备可以将计数器寄存器k设置为下一个未处理的级联军团草图的存储器地址值(例如,计算机存储器中的位置)。在一些实施方式中,下一个未处理的级联军团草图的存储器地址值可以被包括在当前(例如,所选)级联军团草图的位置处的数据结构中。在递增计数器寄存器k的值之后,聚合器计算设备可以执行(动作2104)。[0454] 聚合器计算设备可以按基数对草图进行排序(动作2112)。在估算每个差分隐私级联军团草图的噪声基数之后,聚合器计算设备可以基于其估算的噪声基数值来生成所排序的差分隐私级联军团草图的列表。噪声基数值可能不是有助于相应级联军团草图的集合的基数的准确表示,但是对如在该方法2100中所述排序草图的目的则足够准确。对级联军团草图进行排序可以包括使用有效的排序算法(例如堆排序)或任何其他类型的排序算法,比较草图的每个估算的噪声基数。使用排序算法,聚合器计算设备可以按降序生成排序的级联军团草图的列表。例如,列表中的第一条目可以是与在动作2106中计算的最大噪声基数相关联的级联军团草图,列表中的第二条目可以是与第二最大噪声基数相关联的级联军团草图等等。[0455] 聚合器计算设备可以对排序的草图进行分组(动作2114)。在对级联军团草图进行排序之后,聚合器计算设备可以将每个草图的组分到大小为j的m个组中,其中j是约等于5的参数,但可以等于其他值。可以从聚合器计算设备的存储器中的一个或多个数据结构中检索参数j。例如,聚合器计算设备可以选择列表中的前j个草图,并将其分配给第一组。聚合器计算设备可以选择列表中的下j个未分组的草图,并将其分配给下一组,依此类推,直到聚合器计算设备创建大小为j的m个草图组为止。[0456] 聚合器计算设备可以选择第g个组(动作2116)。为了处理和确定在动作2114中创建的每个组的蒙特卡洛采样基数,聚合器计算设备可以迭代由聚合器计算设备创建的每个组。聚合器计算设备可以基于计数器寄存器g迭代循环通过每个组。例如,可以通过索引值(例如,索引0、索引1、索引2等)在数据结构中对每个组进行索引。为了处理组,数据处理系统可以选择包括等于或近似等于计数器寄存器g的索引值或与该索引值相关联的组。如果是循环的第一次迭代,则在选择第g组之前,可以将计数器寄存器g初始化为初始化值(例如,g=0,g=1等)。选择该组可以包括将与该组相关联的数据复制到聚合器计算设备中的计算机存储器的不同区域,例如存储器的工作区域。[0457] 聚合器计算设备可以使用蒙特卡洛采样来估算所选组的并集(动作2118)。使用蒙特卡洛采样估算基数可以包括确定组中的向量的组合向量,计算在任何特定位置中翻转的位的概率,以及生成估算每个输入草图的去噪并集的去噪估算草图。在下文中,对下述伪代码中的两个草图,示出了该过程,但可以稍作修改将其扩展到两个以上的草图:[0458][0459][0460] 尽管将上面的伪代码示为包括0.1的概率,但是应当理解到,只要对用于乘以组合向量v的反转矩阵进行相应的修改,可以将p的值修改成任何值。此外,尽管在上述伪代码中可以仅组合两个草图,但是应当理解到,可以通过修改组合向量的参数、反转矩阵的大小以及ProbabilityOfOr函数来容纳2个以上向量来扩展该数量。在另一实施方式中,可以使用用于确定两个组的去噪并集的方法(例如,可以将确定组大小的参数j设置为两个等)。[0461] 聚合器计算设备可以确定计数器寄存器g是否等于组的数量m(判定2120)。为了确定聚合器计算设备是否已经使用每组级联军团草图估算并集蒙特卡洛采样值,聚合器计算设备可以将用于选择每个组的计数器寄存器(例如,g)与组的总数m进行比较。如果计数器寄存器g不等于(例如,小于)组的总数m,则聚合器计算设备可以执行(动作2122)。如果计数器寄存器g等于(例如,等于或大于)组的总数m,则聚合器计算设备可以执行(动作2124)。[0462] 聚合器计算设备可以递增计数器寄存器g。在一些实施方式中,聚合器计算设备可以将1添加到寄存器g以指示级联军团草图组的集合中的下一个未处理的级联军团草图组(例如,由聚合器计算设备在动作2114中创建的级联军团草图组等)。在一些实施方式中,聚合器计算设备可以将计数器寄存器g设置为下一个未处理组的存储器地址值(例如,计算机存储器中的位置)。在一些实施方式中,下一个未处理的组的存储器地址值可以被包括在当前(例如,所选)组的位置处的数据结构中。在递增计数器寄存器g的值之后,聚合器计算设备可以执行(动作2116)。[0463] 聚合器计算设备可以从g个组并集值的并集估算基数(动作2124)。如上所述,由蒙特卡洛采样m组级联军团草图中的每一组生成的草图表示每一组的成员的去噪并集。因此,可以通过基本聚合(例如,每个组的逐位或运算等)确定每个蒙特卡洛样本草图的并集,以确定表示在步骤2102中接收的所有级联军团草图的去噪聚合的组合并集草图。聚合器计算设备可以聚合(例如,迭代地逐位“或”、“加”等)每个生成的蒙特卡洛样本草图,以生成组合级联军团草图。聚合器计算设备可以使用组合草图来确定在步骤2102中接收到的草图的并集的去噪基数。[0464] 为此,聚合器计算设备可以迭代组合草图中的l个军团中的每个军团,从具有最高人口概率的军团(例如,i=1,其中,i是所选军团等)开始,然后以最低人口概率的军团(例如,i=l,其中,i是所选军团等)结束。对于每个所选军团,聚合器计算设备可以将填充位置的数量(例如,等于群体值的位数,诸如1等)与军团中未填充位置的数量进行比较。如果聚合器计算设备对所选军团,确定填充位置的数量大于或等于未填充位置的数量,则聚合器计算设备可以移动到组合草图中的下一个军团。如果聚合器计算设备确定填充位置的数量小于未填充位置的数量,则聚合器计算设备可以将所选军团存储为与当前军团索引i相关联的参考军团(例如,如果聚合器计算设备迭代到组合草图中的第三军团,并且第一军团的索引为0,参考军团索引i可以等于2等)。聚合器计算设备可以通过将参考军团中的填充位置的数量乘以2^(golden_legion_index)来估算组合草图的去噪基数。例如,如果参考军团中有10个填充位置,并且参考军团索引等于4,则聚合器计算设备可以将噪声级联军团数据结构的噪声基数估算为10*2^4,或者160。[0465] 聚合器计算设备可以响应于请求而执行方法2100的步骤。例如,外部计算设备可以向聚合器计算设备提供对驻留在标识符服务器上的标识符和属性数据集的去噪基数的请求。然后,聚合器计算设备可以从每个标识符服务器(例如,每个数据处理系统105A‑N等)请求级联军团草图。如在章节B中所述,每个数据处理系统105可以生成级联军团草图,并且通过以概率p翻转草图中的位来施加概率噪声。在生成草图之后,数据处理系统105可以将其草图传送到聚合器计算设备以进行进一步处理。然后,如在方法2100的步骤2102中,聚合器计算设备可以从数据处理系统105接收草图,然后执行该方法的步骤以确定对草图有贡献的标识符的基数。在确定基数之后,聚合器计算设备可以将估算的多重集基数传送到负责该请求的外部计算设备。[0466] 本文描述的技术提供了许多技术优势。代替每个数据处理系统105经由网络传送大量数据从而耗尽网络资源,每个数据处理系统可以使用计算技术来生成小数据结构,该结构(1)表示标识符和属性的整个集合并且(2)为差分隐私。此外,本文描述的用于生成级联军团草图的计算技术在计算复杂度上通过由标识符服务器维护的标识符的数量线性地缩放。由于草图可以比其表示的数据小几个数量级,因此草图的差分隐私分布代替数据本身减轻了网络资源的负担。这是对联网技术的改进。此外,因为草图是差分隐私的,所以由草图表示的数据不需要被分配到任何其他计算设备,从而提高了联网系统和基数估算器系统的安全性。[0467] D.用于频率和基数估算的连续液体军团技术[0468] 介绍了基数和频率估算技术。这些方法可以结合HyperLogLog和布隆过滤器的各个方面,以通过在存储桶之间几何分布条目的分配来构建比布隆过滤器更小型的草图。本文所述的系统和方法可以使用逐个存储桶求和来组合草图,这可以使得能够创建利用同态加密的安全多方计算协议,以跨多个不受信任的各方来组合草图,同时确保协议的各方学习商定的输出的差分隐私估算。[0469] 设备标识符的频率可以是已经访问特定内容项的设备标识符的数量(此后有时可互换地称为设备或标识符)。这样,基数是相关值,因为基数可以是已经访问过内容项的唯一设备标识符的数量,而频率可以是已经访问过内容项超过预定次数的唯一设备标识符的数量。例如,1+频率(例如,已经访问过内容超过一次的唯一设备标识符的数量等)可以是跨不同发布者计算设备的标识符集合的多重集的基数。本文描述的是确定内容频率的至少两种方法:频率直方图和k+到达率。频率直方图可以显示设备具有每个频率的比例,而k+到达率可以表示具有频率大于k的设备集合的基数。利用仅通过一次数据集估算值范围的频率表示了对基数估算计算机系统的改进,因为它减少了执行估算所需的计算资源量。对频率计算的最大值可以基于预定最大频率值,因为内容提供者可以使用该度量来帮助限制内容的暴露。[0470] 该技术方案的系统和方法可以确定内容发布者上的到达率和频率,其中,内容发布者计算设备(例如,数据处理系统105A‑N的任何一个等)被定义为托管和提供内容的实体。但是,由于内容发布者可能彼此不信任,因此可能不会直接共享用于确定基数和频率的草图。本文描述的用于基数和频率测量的系统和方法可以保护构成草图的标识符或设备的隐私,并且可以防止内容发布者计算设备了解彼此的信息,从而提高联网系统的整体安全性。[0471] 将描述以安全和隐私保护的方式来确定一个或多个发布者计算设备上的标识符的基数和频率的各种方法:级联军团(例如,本文上文在章节B和C中所述等),其可以是用于估算基数和频率的几何上分布的布隆过滤器数组;(例如本章节等中所述的)液态军团,其可以是级联军团算法的连续版本;应用差分隐私来估算多发布者到达率的两种机制;以及用于组合任一类型的草图并产生作为差分隐私的频率估算的多方计算协议。[0472] 用于估算基数的一种其他这类技术是HyperLogLog。HyperLogLog(HLL)可以是基数估算器,其特征在于低误差率、低方差和低内存使用率。此外,两个HLL的并集对于计算而言可能是微不足道的,这意味着HLL对分布式计数应用可能是理想的。可以估算基数和频率的HLL扩展被称为FreqLogLog。为实现此,FreqLogLogs(FLL)可以存储每个寄存器的两个附加值、计数和指纹。当更新HLL寄存器值时,该条目的指纹被存储并且使计数器重置为1。然后,当分配给该寄存器的另一个条目具有与前一个项目相同的前导零的数量时,将比较指纹。如果它们相同,则递增计数。否则,如果新指纹大于旧指纹,则存储新指纹并将计数重置为1。否则,旧指纹较大且不进行任何修改。[0473] 另一种这样的技术基于布隆过滤器。像HLL一样,布隆过滤器可以被用来计算基数和频率,并且可能具有相对较高的内存要求。通过评估下述方式来确定布隆过滤器的基数:[0474][0475] 其中,k是用于生成布隆过滤器的散列的数量,m是布隆过滤器中的位的数量,x是布隆过滤器中已填充的存储桶的数量,以及n是布隆过滤器的基数的估算的数量。[0476] 允许k变为1并反转函数,可以使用以下公式来估算给定设置大小的有效位的数量:[0477][0478] 为了在传送到其他计算设备时保持草图的差分隐私,可以使用ElGamal加密(例如,如章节A等中所述)。ElGamal加密可以是简单的公钥加密方案,可以对其进行修改以支持阈值解密。可以将其视为Diffie‑Hellman密钥交换协议的离线变体。对于具有生成器G的组,基本方案如下:[0479] KeyGen:选择随机整数X模q(组的顺序)。这可以是用于解密的私钥。公钥是G^X。[0480] Encrypt(pk,m):选择随机整数R模q。密文可以是(G^R,mpk^R),即(G^R,mG^(XR))。[0481] Decrypt(sk,m):使用安全密钥计算G^(XR),然后m=mpk^R/G^(XR)。[0482] 可以通过将所有公钥相乘来构造该方案的N‑of‑N阈值版本。该阈值变量的示例如下:双方可以生成密钥G^X和G^Y。这些公钥相乘后将计算为G^(X+Y),其可以被用作加密的公钥;相应的安全密钥为X+Y。为了解密,可以(以任何顺序)逐个应用原始安全密钥,因此,任何一方都不需要知道joint私钥。[0483] ElGamal加密可以支持乘法同态。给定两个密文(G^R1,M1G^XR1),(G^R2,M2G^XR2),可以计算值(G^(R1+R2),M1M2G^X(R1+R2))以解密为两个消息的乘积。这可以是消息的离散对数上的加法同态;换句话说,可以计算值(G^(R1+R2),G^(M1+M2)G^X(R1+R2)),该值可以被用于小消息空间(足够小以有效地计算离散对数)。[0484] 用指数执行求和就足够了。例如,可以将具有表示为2^v1和2^v2的两个值v1,v2相乘地组合,从而产生组合密文2^(v1+v2)。此外,由于下述草图可以使用小于最大期望频率的元素计数,因此可以将查找表用于仅对这些公知值进行解码。在此还有一个小安全好处:聚合器可以了解超过阈值的值的计数,无需了解这些值是什么。为此,工作者可以使用加密(例如,Pohlig‑Hellman密码等),这可能涉及每个工作者选择应用于所有部分解密的存储桶的安全指数。这可以经由同态来执行,并且可以等同于将生成器G变更为一些随机组元素。[0485] 可以使用级联军团草图来实现用于估算多重集的基数和频率的另一种技术。布隆过滤器精度的位数可能随需要测量的集合的基数线性地增长。将CascadingLegions(CL)的寄存器(即记录条目存在的位)排列成二维数组(或矩阵)可以减轻位数的线性增长。数组的列被称为军团,行被称为位置。因此,将每个条目映射到军团的(军团,位置)元组,该军团是寄存器。军团上的概率分布是几何的,并且其位置上的概率分布是均匀的,因此每个军团可以是单个散列布隆过滤器。该方案可以考虑估算具有固定的相对误差的基数,并且所需的草图大小可以随需要测量的集合的基数成对数地增长。此外,与布隆过滤器一样,可以经由逐位或运算组合CL草图寄存器,或者当草图包含计数器(这对频率问题是必需的)时,可以通过逐个寄存器求和来组合草图。[0486] 在本文中,下文(并且基于章节B等中提供的公开内容)所述的算法1描述了CL草图的初始化。这可以包括分配寄存器数组(s)和分配相同密钥聚合器数组(b)。当将条目初始地插入到寄存器(r)中时,相同密钥聚合器可以存储该条目的指纹,并且将s[r]设置为1。然后,下次将条目分配到该寄存器时,可以将其指纹与现有的指纹比较。如果指纹相等,则可以递增s[r]。如果新指纹大于现有指纹,则可以替换现有指纹,并且将s[r]重置为1。否则,新指纹较小,并且不进行任何修改。在下文中,将更新相同密钥聚合器的过程描述为算法3的一部分,其描述了如何将条目插入到草图中。[0487] 算法1,草图初始化:[0488] 设置:无[0489] 输入:军团数量l以及位置数量m[0490] 输出:CascadingLegions草图和相同密钥聚合器(s,b)[0491] lets=大小为l*n的整数数组(integerarrayofsizel*n)[0492] letb=相同密钥聚合器结构数组(arrayofSameKeyAggregatorstructures)[0493] 用零初始化s[0494] 在进行插入算法之前,先介绍寄存器分配算法。为将条目分配给寄存器,可以先对其进行散列处理。接下来,可以通过确定散列值中的前导零(例如,最高有效、最低有效等)的数量来分配军团。接下来,剥去第一个非零位,并且剩余位取模位置数量确定军团中的位置。参见下文所述的算法2。可以通过将散列值中的有效位的总和用作确定军团的方式,使用二项式分布将条目分配给军团。[0495] 算法2,寄存器分配:[0496] 设置:军团数量l,位置数量m。[0497] 输入:要分配的条目的指纹(f)。[0498] 输出:CascadingLegions寄存器(i,j)[0499] leti=0[0500] whilef%2==0andi[0501] leti+=1[0502] letf/=2[0503] letf/=2[0504] letj=f%m[0505] return(j,i)[0506] 可以通过将条目分配给寄存器(i,j)来进行插入。下一步是检查如上所述的相同密钥聚合器,并且相应地调整寄存器值。该算法可以假定使用计数器,但是在不期望频率(例如,期望基数等)的实施方式中,每个军团可以由位数组表示。[0507] 算法3,条目插入:[0508] 输入:条目[0509] 输出:修改后的草图(s,b)[0510][0511] 为了估算条目集合的基数,可以导出由某个基数激活的寄存器的预期数量。每个军团可以是统一布隆过滤器,因此,如果tj条目落入军团j中,则:[0512][0513] 可以激活寄存器的一部分。并且当期望军团l被条目的2^‑(j+1)击中时,则激活的寄存器总数可以等于:[0514][0515] 由于F(t)可以是单调的,因此在给定观察到的激活寄存器数量的情况下,可以使用二进制搜索来有效地找到基数t。参见算法4,在下文进行描述。[0516] 算法4,来自级联军团草图的基数估算:[0517] 设置:军团数量l,位置数量m[0518] 输入:级联军团草图s[0519] 输出:存储在s中的集合的估算基数[0520][0521][0522] 对于频率估算,可以从寄存器中提取计数的分布,并且可以从样本中推断出频率分布。[0523] 可以通过引入随机噪声,可以扩展这些草图以使得差分隐私。可以通过随机翻转级联军团草图中存在的位来引入随机噪声。通过利用概率p翻转草图的每一位,可以通过参数∈使草图差分隐私:[0524][0525] 例如,对于ln(3)的DPε,可以以0.25的概率翻转位。在算法4中,给定过滤器列表S,所有这些过滤器的位都以概率p翻转,通过总体去除噪声来估算并集中的0寄存器的数量。该策略可以应用于整个草图,但是由于预期使很多军团完全饱和,或者完全为零,因此这种估算的误差会很大。相反,可以将去噪单独地应用于每个军团,并且可以使用处于饱和状态的军团(例如,少于一半的值被填充的第一军团等)来进行估算。[0526] 算法5,使用噪声级联军团草图的参考军团来估算并集的基数:[0527] 设置:军团数量l,位置数量m,翻转概率p[0528] 输入:级联军团草图的列表S,这些草图的位以概率p翻转[0529] 输出:存储在S中的集合的并集的估算基数[0530][0531][0532] 另一种这样的技术,液体军团,是使用连续分布的级联军团技术的扩展。军团具有以1/2的步长递减的分配概率的判定是任意的。它允许用于军团的预期数量的公式F使用带有1个项的求和。相反,可以使用具有可变衰减因子的几何分布将条目分配给寄存器。考虑有界几何分布:[0533][0534] 为了有效地执行该采样并简化分析,可以使用指数分布:[0535][0536] 截取为段[0,1],以及分辨率m。[0537] 为了将条目分配给寄存器,假设第i个段对应于第i个寄存器,则段[0,1]可以被分为相等长度的m个段。可以从指数分布中采样实值数量,并且可以将条目分配到与实数下降的间隔相对应的寄存器。[0538] 要从实值分布中采样数量,可以均匀地采样来自段[0,1]中的数量,并且可以应用逆累积分布函数(CDF)。上面的截断指数分布的逆CDF可以等于:[0539][0540] 因此,我们得出了用于针对液体军团草图对军团进行采样的算法1L。[0541] 算法1L:液态军团寄存器分配:[0542] 设置:衰减参数a,位置数量m。[0543] 输入:要分配的条目。[0544] 输出:级联军团寄存器(i,j)[0545] letf=fingerprint64bit(item)[0546] letu=f/2^64[0547] letx=1‑log(exp(a)+u*(1‑exp(a)))/a[0548] returnintegerfloorofx*(m+1)[0549] 用于液体军团的草图创建的算法可能与具有适当寄存器分配功能的级联军团相同。对于基数估算,函数可以将基数映射到激活的寄存器的预期数量r。[0550] 可以经由积分,对任意分布P,获得将t=c/m映射到r/m的函数:[0551][0552] 可以通过写入由至少一个条目分配的第i个寄存器的概率并且当m变为无穷大时达到极限,获得该公式:[0553][0554] 在下文中,描述用于基数估算的算法。除了替换基数函数外,可以与级联军团副本相同。[0555] 算法3L附录。来自液体军团草图的逆基数估算函数:[0556] definefunctionF(t):[0557] return1‑(‑expi(‑a*t/(exp(a)‑1))[0558] +expi(‑a*exp(a)*t/(exp(a)‑1)))/a[0559] 除了参考军团可以连续滑动以外,液态军团草图的差分隐私版本可以与级联军团相同,并且为最小估算方差,可以优化其长度。经由差分逆基数估算器并找到导数乘以激活寄存器的数量的增量增加的概率最大的点,可以找到最佳参考军团。结合或替代在本文的上文章节C中所述的任何算法,数据处理系统可以利用任何或所有算法。例如,通过该章节的算法替换用于确定草图的基数的算法,或者通过由级联军团实施方式使用的算法替换填充液体军团草图的算法,以及本文所述的任何其他算法。应当理解到,数据处理系统105A‑N、工作者计算设备405或聚合器计算设备410中的任何一个都可以执行本章节中所述的任何或所有功能。[0560] 可以将用于液体军团草图分析的技术应用于寄存器上的条目的任意分布。此外,可以用活动空间中的DiracMixture近似任意分布。因此,指数概率函数不必是可积分的,并且可以使用DiracMixture的近似值。[0561] 使用加密的相同密钥聚合器,本文的系统可以利用同态加密来过滤掉至少一个设备标识符对其贡献的寄存器,并且确定设备频率的干净样本。密钥聚合结构可以是一对加密计数器和密钥:(E(count),E(key))。[0562] 结构上的加法可以定义为:[0563] (E(count1),E(key1))+(E(count2),E(key2))=[0564] (E(count1+count2+R*(key1‑key2)),E(key1+R*(key1‑key2))[0565] 其中,R是随机数。[0566] 可以同态地计算该加法运算。然后,该结构的行为如下:[0567] 如果key1=key2=key则[0568] (E(count1),E(key))+(E(count2),E(key))=(E(count1+count2),E(key))。[0569] 否则计数器可能会被随机性破坏。[0570] 为了维护负责生成这些草图的发布者计算设备(例如,数据处理系统105A‑N等)之间的差分隐私,系统可以实现安全的多方计算协议,以跨发布者聚合草图并估算多重集的基数和频率。如上所示,可以通过逐个位置求和,将具有相同参数化的草图合并在一起。轻量级的MPC协议可以被用于将ElGamal加密的同态属性用作我们协议的核心操作来计算联合草图。高级方法是首先设置N‑of‑N阈值密钥,然后让每个草图提供者使用公钥加密其输入。然后,每个安全密钥股东可以部分解密联合草图,使用同态属性应用确定性密码,然后将结果转发给下一个股东。一旦使用了所有解密密钥份额,结果将是确定性的加密草图,从中可以计算出所需的统计量。在本文中,下文描述了该协议,包括如何计算差分隐私输出。[0571] 在一些实施方式中,草图提供者的数量可能很大。在一些实施方式中,少数独立操作的工作者运行该协议,并且大多数草图提供者可以将加密的输入发送给至少一个工作者。在工作者中,通信图可以遵循环形拓扑。对于该示例的其余部分,说明本公开是在假设存在三个工作者的情况下进行的,使得工作者1与工作者2通信,工作者2与工作者3通信,工作者3与工作者1通信。然而,应当理解到,可能有任何数量的工作者参与该协议。[0572] 首先,每个工作者可以生成ElGamal密钥对(pki,ski),如上所述或本文章节A中所述。每个工作者可以将其密钥广播给其他每个工作者。每个工作者都可以形成组合公钥,然后草图提供者可以从任何工作者提取密钥。草图提供者可以使用该组合公钥来加密其草图。[0573] 草图提供者(例如,数据处理系统105A‑N)中的每一个可以执行以下操作(例如,如本文结合章节A‑C所述):[0574] 从工作者(例如工作者计算设备405A‑N等)检索组合(例如,聚合)公钥;[0575] 创建包括存储桶指纹的草图(例如,如本文所述等)。[0576] 将草图打包成稀疏表示,其中,每个非零位置被表示为(位置,值,指纹)的三元组。[0577] 利用组合公钥,将ElGamal加密应用于每个三元组。[0578] 将加密的稀疏草图发送给第一工作者(例如工作者计算设备405A等)。[0579] 注意,可以概括为使草图提供者将其草图发送给随机工作者,然后使每个工作者混洗所接收的草图,之后将它们发送到着手进行该协议的单个工作者。在该示例性说明中,假定所有草图提供者都将草图发送给单个工作者。但是,应当理解到,任何数量的草图提供者都可以将草图发送给任何数量的工作者。一旦第一工作者接收到每个发布者的加密稀疏草图,该协议就可以开始。[0580] 1.对于来自所有发布者的所有三元组(以下简称为“三元组”),第一工作者(例如,工作者405A)可以混洗(例如,置换)三元组并将其传递给下一个工作者。[0581] 2.然后,下一个工作者执行以下步骤:[0582] a.使用其ElGamal密钥份额(例如,安全密钥等)来部分地解密(例如,每个三元组的)每个位置ID。[0583] b.使用ElGamal同态,将确定性加密层应用于(例如,每个三元组的)每个位置ID。[0584] c.混洗三元组。[0585] d.将三元组传递给下一个工作者。[0586] 3.该过程可以继续进行,直到第一工作者再次接收到三元组(例如,环形配置等)为止。[0587] 4.然后,第一工作者可以使用其密钥份额来解密三元组,并且在现在确定性加密的位置ID上联合该元组,这对于每个位置都会产生以下结构(Enon_det(position),[(E(value1),E(fingerprint1)),(E(value2),E(fingerprint2)),…])。[0588] 5.然后,第一工作者使用上文所述的相同密钥聚合器方法来组合加密的(值,指纹)元组。对于组合草图中的每个非零位置ID,这可以导致三元组(Enon_det(position_id),E(value),E(fingerprint))。[0589] 6.第一工作者发起第二轮通信。[0590] a.首先从组合的三元组中丢弃加密的密钥(例如E(key)),这将导致对每个非零位置ID的组合的二元组(Enon_det(position_id),(E(count))。[0591] b.然后,将组合的二元组(下文称为“二元组”)传递给下一个工作者。[0592] 7.然后,下一个工作者执行以下步骤:[0593] a.从每个计数中去除其不确定性加密[0594] b.对每个计数应用确定性加密[0595] c.注意,由于在第一轮中已经混洗了元组,因此不需要混洗。[0596] 8.该过程持续直到第一工作者接收到非确定性加密二元组的集合为止。[0597] 9.由此可以获得基数的估算。[0598] 10.接下来,工作者可以协作以确定频率分布:[0599] a.首先,工作者可以使用与上一轮相同的密钥确定性加密整数值[1,max_frequency),这可以导致用于公知值[1,max_frequency)的密文到明文的查找表。[0600] b.然后,查找表可被用于由确定性加密草图构建频率直方图。然后可以使用该直方图来确定草图的频率分布。[0601] c.存在于草图中、未映射到查找表中的值的所有值都被视为等于max_frequency。[0602] 注意,这是本文中,上文结合图4A‑4C和图5‑7描述的MPC协议的扩展。也就是说,本文所述的任何计算设备(例如数据处理系统105A‑N、工作者计算设备405A‑N、聚合器计算设备等)可以执行如本章节中所述的一个或多个功能。此外,应当理解到,可以将章节A‑C中的任何或所有方法、系统或技术应用于本章节中的功能。[0603] 请注意,相同密钥聚合器可以使用简单的相等性测试来确定给定位置的密钥是否相同。通过对每个直方图区间生成双尾几何随机变量并将其添加到该区间,可以将差分隐私直接添加到频率直方图。查询灵敏度为1,这是必须的,因为任何标识符最多只能在频率直方图中表示一次。[0604] 为了增加噪声,工作者可以先就将要添加到每个存储桶的任意基线B达成共识来开始。可以扩展上述协议的步骤1和2,以使每个工作者提取max_frequency随机变量(X1,Xi,Xmax_freq)。这些可以表示要添加到特定工作者的值[1,max_frequency]的计算中的噪声值的数量。为实现此,每个工作者都可以向草图添加值i的B‑Xi元组。然后,在步骤9中,第一工作者可以从每个直方图存储桶中减去值B*W,其中,W是工作者的数量。然后,这提供了所需的噪声分布。这也意味着可以在减去噪声基线之后估算基数。参见下文中描述的算法5,以详细了解每个工作者如何向计算中添加噪声。结合图7,在上文章节A中描述了类似的技术。例如,工作者计算设备405A‑N可以使用下述算法来在频率计算期间生成并附加分布式噪声值。[0605] 算法5,工作者生成分布式噪声:[0606] noise_tuples=[][0607] forvin[0,max_frequency]:[0608] x=drawPolyaRv()[0609] foriinrange(B‑x):[0610] noise_tuples.append((random(),v,random()))[0611] 为了防止泄漏各个草图贡献者的基数,每个草图提供者都可以利用值(sentinel_position,0,0)加密几个三元组,其中,sentinel_value是公知的寄存器值。然后,工作者可以在步骤4结束时,确定性地加密标记位置,并且可以丢弃具有该位置的所有元组。[0612] 在一些实施方式中,可以使用协议的密集版本,其中,所有存储桶都可以由草图提供者加密。但是,稀疏方法可能会比草图小于1/3的一般情况下更节省资源。[0613] 可以进一步概括在本文中上文所述的相同密钥聚合器技术,以收集分布数据。例如,可以基于一个或多个属性(例如,设备信息、设备元数据、关于设备的信息等)来选择标识符的分布。可以将属性存储在相同的密钥聚合器中,而不是为每个属性创建草图,这样可以节省计算资源,并且是对确定计算机系统的基数和频率的改进。折衷方案是已知属性存储桶上的近似分布,而不是近似计数。因此,如果某个属性是多重集的一小部分,则可能无法保证类别或属性的到达率的相对误差。为了存储分布演示,可以如下调整聚合器。可以假定可以将类别(例如属性)一致地分配给对象。[0614] (E(category1),E(key1))+(E(category2),E(key2))=[0615] (E(category1+R*(key1‑key2)),E(key1+R*(key1‑key2))。[0616] 系统可以在逐个元素应用该运算的相同密钥聚合器中存储任意数量的草图和类别类。例如:[0617] (E(count1_a),E(count1_b),E(category1_c),E(E(key1))+[0618] (E(count2_a),E(count2_b),E(category2_c),E(E(key2))=[0619] (E(count1_a+count2_a+R*(key1‑key2)),[0620] E(count1_b+count2_b+R*(key1‑key2)),[0621] E(category1_c+R*(key1‑key2)),[0622] E(key1+R*(key1‑key2))。[0623] 为了描述的目的,该算法可以被称为SameKeyAggregator,并且可以假定它聚合了任意计数和类别分布。经由“+”号表示结构合并的操作,这意味着如上所述计数相加和类别合并。算法的明文版本。[0624] 在一些实施方式中,SameKeyAggregator聚合器可以包括浮点值散列,可以代替加密密钥使用该散列。对于单个计数器,如下所示:[0625] (hash_1,count_1)+(hash_2,count_2)=[0626] ((hash_1,count_1+count_2)[0627] if(hash_1==hash_2)elsemin((hash_1,count_1),(hash_2,count_2)))[0628] 应当理解到,本文所述的系统和方法可以实现本章节中所述的技术以修改或扩展在章节A‑C中提供的实施方式,以及实现在那些在前章节中未描述的其他实施方式。[0629] E.用于频率和基数估算的指数广义布隆过滤器[0630] 该技术方案的这一章节描述了用在计算总体频率和基数时使用的指数和广义的布隆过滤器数据结构,如本文所述。如在本技术方案的其他章节(例如,章节A‑D)中所述,每个发布者计算设备(例如,数据处理系统105A‑N)可以生成其自己的隐私安全草图,其可以表示一个或多个设备标识符或属性。设备标识符或属性可以与设备标识符所采取的一个或多个动作(例如访问特定内容项或网址)相关联。每个发布者计算设备都可以将其草图传送到去重服务(例如,工作计算设备405、聚合器计算设备410等中的任何一个),该服务估算所接收的草图上的去重的唯一设备标识符的数量。草图可以是差分隐私安全。结果,即使在将草图传送到不可信实体时,也可以保持草图的差分隐私,这是对联网系统的安全性的改进。[0631] 此技术方案中描述的技术可以将指数广义布隆过滤器(exp‑GBF)用作草图。本文描述的技术可以允许将exp‑GBF生成为差分隐私安全草图,聚合器计算设备可以使用该差分隐私安全草图来估算由exp‑GBF草图表示的多重集的基数。本文描述的技术提供了在多个发布者之间组合或合并exp‑GBF的系统和方法。[0632] 本文描述的技术可以使用几何广义布隆过滤器(exp‑GBF)。GBF概括了经典的布隆过滤器,以允许位向量中的某个位覆盖散列标识符空间的不同部分。特别地,第i个位覆盖了散列标识符空间的pi。pi可以是任何分数。发布者计算设备(例如,数据处理系统105A‑N)可以exp‑GBF可以将指数函数用于pi,pi=kappa*exp(‑kappa*i/m),m是位向量的长度。kappa是可以确定exp‑GBF草图形状的参数。[0633] 本文描述的计算设备(例如,聚合器计算设备410或工作者计算设备405、数据处理系统105A‑N、任何其他计算设备等)可以使用下述公式,计算给定exp‑GBF的去重基数:[0634][0635] 其中,C是贡献于exp‑GBF的标识符集合的基数,x是在exp‑GBF草图中设置的位数,以及m是草图中的位位置的总数。[0636] 为了维持差分隐私,发布者计算设备(例如,数据处理系统105A‑N)可以以概率p翻转exp‑GBF草图中的每个位。例如,发布者计算设备可以以概率p将“1”位翻转为“0”,并且可以以概率q将“0”位翻转为“1”。该差分隐私exp‑GBF草图可以被称为dp‑exp‑GBF。在翻转expGBF草图中的每个位以使其具有差分隐私之后,发布者计算设备可以将dp‑exp‑GBF草图传送到聚合器计算设备,以计算跨其他发布者计算设备的去重基数。[0637] 为了计算给定的dp‑exp‑GBF草图的唯一计数,聚合器计算设备可以使用下述公式计算dp‑exp‑GBF草图的校正后的1位值:[0638][0639] 其中,CB是用在基数估算中的校正后的1位的数量,q是将0位翻转为1位的概率,p是将1位翻转为0位的概率,x是草图中设置为“1”的位数,以及z是草图中设置为“0”的位数。然后,聚合器计算设备可以使用下述公式,以校正后的1位的数量来计算dp‑exp‑GBF的去重到达率:[0640][0641] 其中,DC是dp‑exp‑GBF的基数,CB是使用上述公式计算出的校正后的1位的数量,以及m是dp‑exp‑GBF中的位位置的数量。[0642] 本章节中描述的草图通常也被称为“任何分布布隆过滤器”(ADBF)。本章节中描述的草图可以包括允许位分布,该位分布可以容纳替代分布函数,而不是均匀分布或指数分布函数。例如,本文描述的技术可以实现线性衰减布隆过滤器(BF)、双曲BF或均匀和指数BF的混合。噪声校正可以由一个或多个聚合器或工作者计算设备(例如,聚合器计算设备410、工作者计算设备405A‑N等)有效地应用。[0643] 此外,与基于参考军团的实施方式不同,可以实现由聚合器计算设备(例如,工作者计算设备405、聚合器计算设备410等)实现的估算技术,以使草图的所有位都可以有助于基数估算,其中,仅使用参考军团的位。代替选择参考军团,聚合器计算设备可以调整草图中的每个位的权重,其中,权重值指示草图中的位对最终基数估算的贡献。基于草图的参数,聚合器计算设备可以得出草图中每个位的最佳权重,以提高基数估算的总体准确性。[0644] 为了描述ADBF实施方式,该技术方案将从描述一些替代方法开始。首先,描述实现概率计数和随机平均(PSCA)的草图。[0645] 基于PSCA的技术可以利用位图数据结构。下面说明了PCSA3x2位图。每个单元格值可以是等于1或0的位。在此,通用名称“行”和“列”被用来描述特定单元格的位置。行也可以被称为寄存器。在PSCA草图中,可以基于单元格位序列,将标识符分配给该单元格。例如,每一行可以捕获全部宇宙标识符的1/nrows(在我们的示例中为1/3)。列可以具有全部宇宙标识符的指数衰减分数。例如,列1可以具有1/2,列2可以具有1/4等等。因此,单元格捕获了宇宙的1/nrows*(1/2)^column_id。在下文中,包括3x2PSCA草图的示例性表示。[0646]列1 列2 行边缘行1 v11 v12 1/3行2 v21 v22 1/3行3 v31 v32 1/3边缘 1/2 1/4[0647] 3x2PSCA草图表示[0648] 如下所示,可以将PCSA位图展平为位向量。向量按列顺序排列单元格。3个单元格的第一段来自第一列。它们分别捕获宇宙id的1/6。3个单元格的第二段来自第二列。它们分别捕获宇宙的1/12。显然,位图和位向量是等效的,并且可以彼此1‑1映射。[0649][0650] 3×2PSCA草图的展平表示[0651] ADBF草图可以是这类草图的通用形式。如下所示,ADBF草图可以采用宇宙的任何概率。[0652][0653] ADBF草图的展平表示[0654] 因为可以将草图中每个位置的概率分布概括为任何值,所以可能会出现本文所述的其他结构。例如,如果所有概率值均等地加权为1/m,则出现经典的布隆过滤器实施方式,其中,m是草图中的位置的数量。同样地,将类似“瀑布”的概率分配给每个片段时,也会出现类似PSCA的草图。此外,当使用指数p值时,使得:[0655][0656] 其中,i是草图中的位置的索引,c是归一化因子,以及m是草图中的位置的数量,出现了液体军团型草图。[0657] 下文中描述的指数布隆过滤器情况具有闭式最大似然解,具有一流统计模型和解释。接下来,描述ADBF和一些理论公式,包括由标识符构造ADBF、添加噪声、计算一个ADBF的唯一计数以及计算许多组合的ADBF的唯一计数。提供了比较布隆过滤器、PCSA/CL和ADBF的模拟结果。[0658] 发布者计算设备(例如,数据处理系统105A‑N)可以构造广义布隆过滤器(ADBF)如下。kappa参数是可调参数,可以将其设置为值1,但可以小于1。数据处理系统可以访问一个或多个数据记录(例如,标识符和属性,或满足某些标准的标识符等),以用于构造ADBF数据结构。例如,数据处理系统可以访问数据库(例如,数据库115等)以访问一个或多个数据记录,以用于插入到构造的ADBF草图中。ADBF草图可以被维护在数据处理系统的存储器中,并且可以初始化为初始化值,如本文中相对于不同草图实施方式进行的章节中所述。例如,构造ADBF草图的过程可以基本上类似于级联军团草图或液态军团草图,并且可以基于存储在数据处理系统的存储器中的或从工作者计算设备405、聚合器计算设备410或客户端设备120接收到的参数。[0659] 构造后,可以使用下述技术,将数据记录映射到ADBF中的位置。可以构造ADBF草图,以包括多个存储桶k和任何概率向量(p1,p2,…,pk),其中,所有pi的和(i的范围从1到k)等于kappa。kappa的值可以等于1,但不必等于1。概率向量使得可以将概率向量中的每个坐标分配给ADBF草图中的单个存储桶或寄存器。可以以概率pi将数据记录(例如,数据库115中维护的数据记录等)的每个标识符插入到ADBF草图的存储桶i中。实际上,令h为由数据处理系统105标识的散列,该散列将标识符空间(例如,数据记录空间等)均匀地映射为(0,2^64)。然后,如果满足表达式 则可以将数据记录x插入存储桶i中。对于一组数据记录(数据记录可以与术语“标识符”互换地使用),如果该集合中的至少一个数据记录被插入到存储桶i中,则其相应的NBF具有元素i=1,否则等于零。注意,本文在章节D中描述的液态军团技术可能是ADBF的情况,使得基于指数分布确定pi。[0660] 本章节中描述的BLIP技术可能具有差分隐私安全。尤其是,通过翻转原始NBF的每个存储桶获得ADBF+BLIP。二进制0可以被翻转为二进制1,并且二进制1可以以相同的概率p被翻转为二进制0。在一些实施方式中,二进制0值可以以概率p翻转为二进制1,以及二进制1值可以以概率q翻转为二进制0。[0661] 可以通过找到在本章节中下文所述的等式(1)或(3)的根来估算ABDF草图的并集的基数。该估算器可以例如由一个或多个聚合器计算设备410或一个或多个工作者计算设备405执行。本章节中描述的估算器技术可以具有用于作为均匀和指数的特殊分布的闭式解(具有近似值),并涵盖了前面各章节中描述的均匀和指数布隆过滤器的现有估算器。对于位的任意概率分布,该估算器可能不具有闭式解,但是可以通过本文所述的计算设备在数值上求解。估算器可以包括或从执行估算器的计算设备(例如,工作者计算设备405、聚合器计算设备410等)的存储器检索一系列调整参数。在下文中导出并描述了用于最小化基数估算器的方差的最优参数。[0662] 由本文所述的一个或多个计算设备实行、执行或以其他方式实现的估算器可以对无噪声ADBF草图(例如,未合并噪声的ADBF草图等)进行去重。当合并无噪声ADBF草图时,观察到并集集合的ADBF,表示为b=[b1,b2,…,bk]。对于1≤i≤k,如果来自并集的至少一个数据记录被映射到该存储桶,则bi=1,否则为零。矩方法可以被用来根据b1,b2,…,bk..估算并集。回想一下,pi被用来表示任何数据记录被映射到存储区i的概率。考虑到u的并集基数,uu u个数据记录中没有一个落入存储桶i的概率等于(1‑pi) 。也就是说,P(bi=0)=(1–pi),因u此E(bi=1|u)=1–(1–pi) 。因此,总数具有期望值因此,通过插入观察到的bi并反向求解下述等式,可以获得u的估算值。[0663] 等式1:[0664][0665] 使用统计术语,这可以被称为“基于统计量 在位概率分布pi(1≤i≤m)下的u的矩估算器”。对于一般分布pi(1≤i≤m),估算器可能没有闭式解。然而,对于某些分布,诸如均匀和指数分布,估算器可以具有精确匹配本文在上述章节中描述的传感器的近似解。[0666] 如本领域中已知的,当x接近无穷大时,表达式 变为e‑1。因此,当每个pi足1/p ‑1 u够小(例如,非常小,但不为零等)时,(1‑pi) i近似为e ,然后(1‑pi) 近似为exp(‑piu)。通过这种近似,等式(1)可以简化为等式(2):[0667][0668] 其中, 是布隆过滤器中的1的数量。[0669] 对于均匀布隆过滤器,每个pi=1/k,则等式(2)的解为[0670][0671] 该等式可以是用于均匀布隆过滤器的并集的估算器。[0672] 对于指数广义布隆过滤器,每个pi=‑cln(i/k),其中c是归一化常数。当k足够大时[0673][0674] 其中,通过partus经由积分求解积分。因此,exp(‑piu)=exp[(1/k)ln(i/k)u]=u/k(i/k) ,然后[0675][0676] 在这种情况下,等式(2)约简为k/(u/k+1)=k–y,即,u/k+1=k/(k‑y),得出u=ky/(k–y)=y/(1–y/k)。这可以是在等式(3)中给出的解。[0677] 对于双曲广义布隆过滤器,每个 其中,a为预定比率,并且c为归一化常数。当k足够大时:[0678][0679] 表示b=cu=[1‑exp(‑a)]u/(ak),然后[0680][0681] 然后[0682][0683] 其中, 是指数积分函数。因此,等式(2)被约简为 并且使用Ei函数的实施方式,可以求解b的根。然后,可以将u的值估算为u=abk/[1–exp(‑a)]。[0684] 总结以上推导,等式(1)提供了对在位分布pi(1≤i≤m)下的并集的估算的概述。可以基于统计 的期望,基于矩方法来获取或导出估算器。估算器至少具有用于均匀和指数ADF的近似形式解,因此获得或导出的近似形式可以是本文在上述章节A‑D中所述的估算器。[0685] 在位的另一分布下的ADBF,pi=c(i/k),其中c是归一化常数。在该分布中,位概率可能会随着位索引i的线性函数而衰减。该ADBF还存在闭式估算器。首先,当k足够大时,归一化常数 随后 以及a=2u/k。因此,如果 等式(2)可以成立。这可以是u的先验函数,并且可能没有闭式解。但是,由于可以通过u的单调函数给出,因此这可以在数值上求解。通常,等式(2)可以由u的单调函数给出,因此可以使用二等分法求解。[0686] 可以通过向每个bi添加权重来进一步扩展由工作者计算设备405或聚合器计算设备410等执行的无噪声ADBF的估算器。如果并集集合的原始布隆过滤器被表示为b=[b1,b2,…,bk],考虑并集的估算。上述估算器利用总位的期望值之间的关系 在这样的实施方式中,从概率最大的位到概率最小的位,可以对每个位均等地加权。对于不均匀的布隆过滤器,这可能不是有效的。在实现非均匀布隆过滤器的技术中,前几个位的概率(pi)可能比所有位的平均值(1/k)高得多,而后几个位的概率可能远低于平均值。因此,当布隆过滤器草图半满时,则前几位可能等于1,而后几位可能等于0。在这些实施方式中,草图的任一端的位可能具有很少信息,而草图中间的图案应该可以作为基数估算的重点(例如,选择参考军团等)。因此,代替直接和 基于加权和 的矩的估算器可以提高基数估算方案的准确性和灵活性,这是对其他基数估算系统的改进。u[0687] 当E(bi)=1‑(1‑pi) 时,基于 的方法的矩可以将u的估算提供为等式(3)的根,在下文中:[0688][0689] 在一些实施方式中,权重wi可以是常数。考虑到权重为常数值,令和 因此,上述等式(3)可以被重写为fw(u)=Bw。注意,Bw可以是随机变量。实际上,在某些假设下,Bw可以是方差为 的变量。在‑1这种情况下,Delta方法表示Bw的分布可以确定fw(u)=Bw的根的分布(例如,u=fw (Bw)等)。[0690] 注意,Bw可以是随机变量,具有 和考虑足够大的‑1k,注意 在此, 可以表示真并集。为简单起见,表示g=fw ,然后通过Delta方法,[0691][0692] 在该分布中,上文描述了θ和σ2的值,并且g′(θ)=1/f′(g(θ))。[0693] 考虑到上述情况,[0694] Var(U)≈wTSw/(aTw)2[0695] 其中,矩阵S可以具有:[0696] 对于任何1≤i≤k,Sii=(1‑pi)u‑(1‑pi)2u[0697] 对于任何i≠j,Sij=(1‑pi‑pj)u‑(1‑pi)u(1‑pj)u。[0698] 以及向量a可以具有每个元素ai=ln(1‑pi)(1‑pi)u。[0699] 最佳权重向量可以是:[0700] w=S‑1a,[0701] 在该权重下,Var(U)=(aTS‑1a)‑1。[0702] 此外,可以根据p=(p1,…,pk),最小化Var(U)=(aTS‑1a)‑1。[0703] 为了维持其草图的差分隐私,每个发布者计算设备(例如,数据处理系统105A‑N等)可以以预定的概率翻转某些位。翻转位以添加噪声的过程在本文中被称为‘尖头(blipping)’,而具有通过概率位翻转引入噪声的草图有时被称为‘尖头(blipped)’。聚合器计算设备(例如,工作者计算设备405、聚合器计算设备410等)实现的估算器可以进一步扩展,以准确地计算由数据处理系统105生成的噪声(例如尖头的)ADBF草图的并集的基数。[0704] 由数据处理系统105生成的ADBF可以是尖头的。因此,可能无法直接应用如上所述的基于原始ADBF的估算器。在这样的实施方式中,聚合器计算设备可以估算并集集合的原始ADBF(例如,最后两个子章节中的b向量等)。假设带噪声的布隆过滤器表示为c1,c2,…,cs和尖头概率(例如,ADBF草图中的任何给定“0”位的概率被翻转为“1”,以及ADBF草图中的任何给定“1”位的概率被翻转为‘0’等)为p,则聚合器计算设备(例如,工作者计算设备405、聚合器计算设备410等)可以估算b向量为:[0705][0706] 可以结合上文所述的等式(1)或等式(3)使用所估算的b向量,以估算带噪声(例如,尖头的)草图的并集大小u。[0707] 噪声可以进一步对估算器增加方差。通过噪声,估算器的方差可以被表示为wTSw/T 2 u(a w) ,其中,向量a可以被表示为ai=ln(1‑pi)(1‑pi) ,以及矩阵S可以被表示为是上面的向量。[0708] 为了获得方差,然后获得最小化方差的最优权重,获得每 就足够了。但是,这种协方差不再仅仅由并集到达率确定。它依赖于不同ADBF之间的相关性,而这种相关性取决于整个维恩图。[0709] 跨每个发布者计算设备(例如,数据处理系统105等)的标识符(例如,数据记录)的多重集的并集上的噪声的方差分析可以基于每个数据处理系统105之间的每个数据记录集合的重叠而变化。为了帮助分析不同数据处理系统的数据记录之间的差异,考虑以下表示法:[0710] nv是从第v个数据处理系统105(例如数据处理系统105V等)获得的ADBF草图的数据记录的基数[0711] bv,i是从第v个数据处理系统获得的无噪声ADBF的第i位。[0712] cv,i是来自第v个数据处理系统的带噪声的ADBF的第i位(例如,通过以固定概率p翻转bv,i等获得cv,i)。[0713] 以下等式和推导可以帮助理解方差如何影响多重集基数的估算。并集的估算的ADBF,可以将其第i个元素定义如下:[0714][0715] 因此,在独立基数方案下,[0716][0717] 其中,[0718][0719] 因此,[0720][0721] 考虑:[0722] 其中,[0723][0724] 因此,[0725][0726] 现在考虑:[0727] P(cv,i=cv,j=1)=q2P(bv,i=bv,j=1)+qpP(bv,i=0,bv,j=1)+qpP(bv,i=1,bv,j=20)+pP(bv,i=0,bv,j=0)其中,对任何数据处理系统v:[0728][0729] 因为:[0730][0731] 考虑:[0732][0733] 还考虑:[0734][0735] 因此:[0736][0737] 合并:[0738][0739] 合并:[0740][0741] 合并:[0742][0743] 其等于:[0744][0745] 这与估算器的无偏性是一致的,合并:[0746][0747] 总的来说,具有:[0748][0749] 从这些公式进行分析:[0750][0751][0752] 考虑宇宙很大:[0753][0754] 其中,u*是基数的真并集,进一步考虑:[0755][0756] 考虑宇宙很大:[0757][0758] 这可以与无噪声情况下的协方差相同。[0759] 以下内容包括可以在数据处理系统105A‑N、辅助计算设备405A‑N、聚合器计算设备410、客户端设备120A‑N或本文所述的任何其他计算设备中的任何一个上实现的算法实施方式和伪代码。此外,数据处理系统105A‑N、系统100、系统流程图400A‑C及其任何组件中的任一组件都可以执行本章节中详述的任何功能。[0760] 假定生成的ADBF草图具有m位。用于均匀(例如正常布隆过滤器)和指数布隆过滤器(例如液体军团等)的、用于从0,1,…,m‑1的i的概率值pi可以是由数据处理系统105生成的预定值,也可以由外部计算设备(例如,本文中所述的任何计算设备等)经由网络110提供并存储在数据处理系统105的存储器中,或者由执行本节中描述的功能的任何其他计算设备提供。对于指数布隆过滤器实施方式,可以简单地使用kappa=1的值,但在一些实施方式中,可以使用其他值。[0761] 在下文中,在下述伪代码中提供用于生成相应的pi值的至少一种示例性实施方式:[0762][0763] 对于任何一组数据记录,可以计算归一化值并将其添加到ADBF位位置,如通过下述示例性伪代码所述:[0764] #将ID映射为归一化值。[0765] values=hash64(ids)/2^64[0766] #位的值边界。[0767] bit_bounds=np.cumsum(p)[0768] #标识值的位索引。[0769] bit_indices=np.searchsorted(bit_bounds,values)[0770] #对每个ID设置各自的位。[0771] ADBF=np.zeros(bit_size)[0772] foriinbit_indices:[0773] ADBF[i]=1[0774] 对于给定的ADBF草图,可以基于草图中的1位的数量来估算添加到草图的唯一数据记录的数量。通过下述示例性伪代码来对此进行描述:[0775] def_UniqueCountFromOnes(ones,bit_size,method):[0776] ifmethod=='exponential':[0777] returnones/(1‑ones/bit_size)[0778] elifmethod=='uniform':[0779] returnnp.log(1‑ones/bit_size)/np.log(1‑1/bit_size)[0780] 可以通过以概率p翻转位来将噪声添加到每个草图。注意,位被翻转的概率p不同于先前描述的概率分配pi。ADBF草图的随机翻转位可以使其具有差分隐私安全。可以通过下述示例性伪代码来描述位翻转过程:[0781] #blip:翻转1‑>0和0‑>1的可能性:[0782][0783] 在一些实施方式中,可以扩展上述实施方式,以允许单独的概率来将“0”位翻转为“1”位,以及将“1”位翻转为“0”位。在下文中,在下述示例性伪代码中示出了这样的实施方式:[0784][0785] 对于给定的ADBF草图,具有通过以概率p翻转的位引入的噪声,可以基于草图中的1位的校正数量来估算添加到草图的唯一数据记录的数量。这通过下述示例性伪代码示出:[0786][0787] 以下技术可以计算切片中的所有零的数量,以在任意数量(例如m个)数据处理系统105上对数据记录集合进行去重。切片可以是m位向量,用于m个发布者上的位位置。如果切片具有m个数据处理系统的所有0位,则没有数据记录对该切片产生影响。目标是在给定噪声观测的情况下估算全0位切片的数量。在下文中,在下述伪代码中演示了这样做的示例性方法:[0788][0789] 然后可以计算用于在许多数据处理系统中生成ADBF草图的数据记录的并集。下文包括的示例性伪代码实现了确定生成草图的至少一种方法,该草图代表了来自许多数据处理系统的“尖头”ADBF草图中的数据记录的并集。[0790][0791] 下文包括对由本文所述的工作者计算设备或聚合器计算设备(例如,工作者计算设备405、聚合器计算设备410等)可用以计算在当前和先前章节中描述的各种概率数据结构的去重频率的各种实施方式和过程的描述。如上所述,诸如聚合器计算设备410的聚合器计算设备或工作者计算设备405可以从各种标识符服务器(例如,数据处理系统105A‑N等)接收一个或多个数据结构。这些数据结构中的每一个都可以表示包括一个或多个属性的标识符。这些属性可以描述例如设备的在线活动或交互,这些设备被分配或与那些交互相关联。数据记录(例如,数据记录122等)可以由相应的数据处理系统105维护。聚合器计算设备410或工作者计算设备405可以基于由从标识符服务器(例如,数据处理系统105)接收到的那些数据结构的构造表示的信息来计算标识符的属性的频率。如本文所述,所计算的一种度量是跨多个标识符服务器维护的标识符的频率属性。例如,可以针对执行与特定内容项的某种类型的在线活动(例如,交互)的特定标识符组来计算频率。在下文中,包括聚合草图的各种方法或顺序(诸如上文所述的那些方法或顺序)。[0792] 至少一种方法假设有助于由数据处理系统105传送到聚合器计算设备410(或视情况而定的工作者计算设备405)的每个数据结构的标识符的到达率基本上独立。这样的方法可以实现从数据处理系统105接收的数据结构的顺序去除,并且可以通过下文的卷积过程来解释,其中,fi是第i个数据处理系统的频率分布。在这样的实施方式中,可以迭代地确定频率,诸如f1_2=(f1*f2)(k),其中,k是期望的频率属性值(例如,与特定内容项k交互的唯一标识符的数量或更多次等)。负责聚合频率分布数据结构的计算设备可以执行例如该过程,使得f1_2_3=(f1_2*f3)(k)等等,直到已经确定来自每个标识符服务器(例如,数据处理系统105)的频率分布为止。[0793] 在这样的实施方式中,由每个数据处理系统105传送的草图可以由聚合器计算设备410或工作者计算设备405如上文所述顺序地组合。为了有助于该方法的简洁描述,结合草图利用下述操作以指示由草图表示的数据记录集合上的各种设置操作。这样的操作可以包括它们的交集(∩)、并集(∪)或集合差(\)。[0794] 考虑两个标识符服务器(例如,两个数据处理系统105)。第一数据处理系统105发送草图{x1,…,xk‑1,xk+},以及第二数据处理系统105发送{y1,…,yk‑1,yk+}。假设每个发布者的所有草图都来自不相交的集合,则很容易获得1+到达率的草图,例如,和[0795] 接下来,聚合器计算设备410或工作者计算设备405可以估算从第一数据处理系统105和第二数据处理系统105接收到的两个草图的并集的到达率频率。[0796] 例如,对于1≤j[0797] 对于intersect(x0,yj)和intersect(xj,y0),x0或y0可能需要进一步分解。例如:[0798] intersect(x0,yj)=difference(yj,intersect(x1+,yj)).[0799] intersect(xj,y0)=difference(xj,intersect(xj,y1+))[0800] 因此,频率=j的基数为:[0801][0802] 对于频率>=k,频率的并集到达率来自下述交集:[0803] intersect(x0,yk+),[0804] intersect(x1,yk‑1),intersect(x1,yk+),[0805] …,[0806] intersect(xk‑2,y2),…,intersect(xk‑2,yk‑1),intersect(xk‑2,yk+),=intersect(xk‑1,y1+\y1).[0807] intersect(xk‑1,y1),…,intersect(xk‑1,yk‑1),intersect(xk‑1,yk+),=intersect(xk‑1,y1+).[0808] 对intersect(x0,yk+),进一步被分解为:[0809] intersect(x0,yk+)=difference(yk+,intersect(x1+,yk+)).[0810] 给定所有分段基数估算,然后可以总和、组合或以其他方式计算k+到达率,扩展到两个以上的发布者可以包括合并草图,然后如上所述,利用第三标识符服务器(例如,数据处理系统105)执行去重。合并运算可以是例如:[0811] 对j=1:k‑1,[0812] 合并两个或以上草图的至少一种其他方法可以基于Chow‑Liu模型。例如,可以通过本文所述的任何计算设备(包括聚合器计算设备410或工作者计算设备405)来实现该方法。如本文所使用的,函数R指示到达率,并且f1,…,fs表示每个数据处理系统105处的每个标识符的频率。这样,我们具有:[0813][0814] 例如:[0815] R(f1+f2+f3=3)[0816] =R(f1=0,f2=0,f3=3)+R(f1=0,f2=3,f3=0)+R(f1=3,f2=0,f3=0)+R(f1=0,f2=1,f3=2)+R(f1=0,f2=2,f3=1)+R(f1=1,f2=0,f3=2)+R(f1=2,f2=0,f3=1)+R(f1=1,f2=2,f3=0)+R(f1=2,f2=1,f3=0)[0817] +R(f1=1,f2=1,f3=1)[0818] 可以使用Chow‑Liu模型(Chow‑Liu模型),估算以R(f1=j1,f2=j2,…,fs=js)形式的每一项:[0819] P(f1=j1,f2=j2,…,fs=js)=P(f1=j1)P(f2=j2|f1=j1)…P(fs=js|fs‑1=js‑1)[0820] =P(f1=j1)[P(f1=j1,f2=j2)/P(f1=j1)]…[P(fs‑1=js‑1,fs=js)/P(fs‑1=js‑1)],[0821] 其暗指:[0822] R(f1=j1,f2=j2,…,fs=js)=R(f1=j1)R(f2=j2|f1=j1)…R(fs=js|fs‑1=js‑1)[0823] =R(f1=j1)[R(f1=j1,f2=j2)/R(f1=j1)]…[R(fs‑1=js‑1,fs=js)/R(fs‑1=js‑1)][0824] 这可以是在标识符服务器s的线性树1→2→…→s下的Chow‑Liu模型。上述等式中包含边际到达率和双向交集。因此,一旦每个标识符服务器1知道具有fl=jl的所有标识符和属性(有时在本文中被称为“id”),则它们可以传送表示这些id的加密或处理的数据结构,然后可以使用上文和下文所述的估算器来获得等式(1)中的所有项。对于任何jl≥1,可以从数据记录122中标识出具有fl=jl的id。但是,每个数据处理系统105可能不知道频率=0的所有id。数据处理系统105可能不共享数据记录的公共列表。甚至不是由数据处理系统105A维护的数据记录122的那些记录也应当在数据处理系统105A处被分配为频率=0,但是数据处理系统105A可能不维护或具有代表那些id的数据。[0825] 通过注意R(f1=0,f2=j)=R(f2=j)‑R(f1≥1,f2=j)可以解决此问题。可以获得表示f1≥1的数据结构,因此只要j≠0,就可以估算R(f1≥1,f2=j)。[0826] 如果在j1,j2,…,js中有多个零,则可以分开零和非零j。假定j1,j2,…,jr=0,而jr+1,jr+2,…,js>0。线性树1→2→…→s的Chow‑Liu模型认为:[0827] P(f1=j1,f2=j2,…,fs=js)=P(f1=…=fr=0)P(fr+1=jr+1|fr=0)P(fr+2=jr+2|fr+1=jr+1)…P(fs=js|fs‑1=js‑1)=P(f1=…=fr=0,fr+1=jr+1)P(fr+2=jr+2|fr+1=jr+1)…P(fs=js|fs‑1=js‑1)=[P(fr+1=jr+1)‑P(f1+…+fr≥1,fr+1=jr+1)]P(fr+2=jr+2|fr+1=jr+1)…P(fs=js|fs‑1=js‑1),[0828] 然后,[0829] R(f1=j1,f2=j2,…,fs=js)=[R(fr+1=jr+1)‑R(f1+…+fr≥1,fr+1=jr+1)]×[R(fr+2=jr+2,fr+1=jr+1)/R(fr+1=jr+1)]×…×[R(fs=js,fs‑1=js‑1)/R(fs‑1=js‑1)][0830] 这样,可以使用表示fr+1=jr+1,…直到fs=js的数据结构,计算涉及jr+1,jr+2,…,js>0的项‑‑‑这些是除了第一项之外的所有项。第一项R(fr+1=jr+1)‑R(f1+…+fr≥1,fr+1=jr+1)]是两个集合A={fr+1=jr+1)和B={f1+…+fr≥1)的去重。对去重这两个集合,由数据处理系统105A传送的数据结构直接来自数据处理系统105r+1。另一方面,可以通过合并表示f1≥1,f2≥1直到fr≥1的数据结构来估算表示集合B的数据结构。这样,可以估算R(f1=j1,f2=j2,…,fs=js)。在下文中,在下述示例性伪代码中,描述该方法的示例性和非限制性实现。[0831][0832] 例如,可以使用上文所述的任何基于差分隐私的方法来引入差分隐私。例如,如上所述,每个数据处理系统105可以将差分隐私噪声添加到由各个数据处理系统105传送的k+1个草图。[0833] 本说明书中描述的主题和操作的实施方式可以在数字电子电路中实现,或者在具体体现在有形介质上的计算机软件、固件或硬件(包括本说明书中所公开的结构及其结构等同物)上实现,或者在它们中的一个或多个的组合中实现。本说明书中描述的主题的实施方式可以被实现为一个或多个计算机程序(即计算机程序指令中的一个或多个组件),其中所述一个或多个计算机程序被编码在计算机存储介质上,用于由数据处理装置执行或控制数据处理装置的操作。程序指令可以被编码在人工生成的传播信号(例如机器生成的电、光或电磁信号)上,其中该人工生成的传播信号被生成以编码用于传输到合适的接收器装置的信息,以用于由数据处理装置执行。计算机存储介质可以是或被包括在计算机可读存储设备、计算机可读存储基底、随机或串行存取存储器阵列或设备、或者其任意组合。此外,尽管计算机存储介质不是传播信号,但是计算机存储介质可以包括编码在人工生成的传播信号中的计算机程序指令的源或目的地。计算机存储介质也可以是或被包括在一个或多个单独的物理组件或介质(例如,多个CD、磁盘、闪存、固态存储器或其他存储设备)中。[0834] 本文所公开的特征可以在膝上型计算机或其他个人计算机、智能手机、其他移动电话、手持计算机、平板PC或其他计算设备上实现。[0835] 本说明书中描述的操作可以实现为由数据处理装置对存储在一个或多个计算机可读存储设备上或从其他源接收到的数据执行的操作。[0836] 术语“数据处理装置”、“数据处理系统”、“用户设备”、“客户端设备”、“工作者设备”、“工作者”、“工作者计算设备”、“发布者”或“计算设备”包括用于处理数据的所有种类的装置、设备和机器,包括例如可编程处理器、计算机、片上系统、或前述的多个装置、设备和机器、或者它们的组合。该装置可以包括专用逻辑电路,例如,现场可编程门阵列(FPGA)或专用集成电路(ASIC)。除了硬件之外,该装置还可以包括为所讨论的计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统、跨平台运行时环境、虚拟机或其任意组合的代码。该装置和执行环境可以实现各种不同的计算模型基础设施,诸如网络服务、分布式计算和网格计算基础设施。[0837] 计算机程序(也被称为程序、软件、软件应用、脚本或代码)可以用任何形式的编程语言编写,包括编译语言或解释语言、声明性语言或功能性语言或过程性语言,并且其可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程、对象或适合在计算环境中使用的其他单元。计算机程序可以但不必须对应于文件系统中的文件。程序可以存储在保存其他程序或数据的文件的部分中(例如,存储在标记语言文档中的一个或多个脚本),存储在专用于所讨论的程序的单个文件中,或者存储在多个协同文件中(例如,存储一个或多个模块、子程序或代码的部分的文件)。计算机程序可以被部署为在一个计算机上或位于一个站点或跨多个站点分布并通过通信网络互连的多个计算机上执行。[0838] 本说明书中描述的过程和逻辑流程可以由一个或多个可编程处理器执行,其中该一个或多个可编程处理器执行一个或多个计算机程序,以通过对输入数据进行操作并生成输出来执行动作。这些过程和逻辑流程也可以由专用逻辑电路(例如,现场可编程门阵列(FPGA)或专用集成电路(ASIC))来执行,并且装置也可以被实现为专用逻辑电路(例如,现场可编程门阵列(FPGA)或专用集成电路(ASIC))。[0839] 适于执行计算机程序的处理器包括,例如,通用和专用微处理器两者、以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将从只读存储器或随机存取存储器或者两者接收指令和数据。计算机的元件包括用于根据指令执行动作的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括或可操作地耦合到用于存储数据的一个或多个大容量存储设备(例如磁盘、磁光盘、闪存、固态驱动器或光盘),以从其接收数据或向其传送数据,或者两者兼有。然而,计算机不必需这样的设备。此外,计算机可以嵌入到另一个设备中,例如,移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏控制台、全球定位系统(GPS)接收器或便携式存储设备(例如,通用串行总线(USB)闪存驱动)。适于存储计算机程序指令和数据的设备包括所有形式的非易失性存储器、介质和存储器设备,包括例如:半导体存储器设备,例如EPROM、EEPROM和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及CD‑ROM和DVD‑ROM盘。处理器和存储器可以由专用逻辑电路来补充或并入专用逻辑电路。[0840] 为了提供与用户的交互,本说明书中描述的主题的实施方式可以在计算机上实现,该计算机具有用于向用户显示信息的显示器设备(例如阴极射线管(CRT)、等离子体或液晶显示器(LCD)监视器)、以及用户可以通过其向该计算机提供输入的键盘和定点设备(例如鼠标或轨迹球)。也可以使用其他类型的设备来提供与用户的交互;例如,提供给用户的反馈可以包括任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。此外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从用户的客户端设备上的网络浏览器接收到的请求,将网页发送到该网络浏览器。[0841] 本说明书中描述的主题的实施方式可以在计算系统中实现,其中该计算系统包括后端组件(例如作为数据服务器),或包括中间件组件(例如应用服务器),或包括前端组件(例如具有图形用户界面或网络浏览器的客户端计算机,其中用户可以通过该图形用户界面或网络浏览器与本说明书中描述的主题的实施方式进行交互),或者包括一个或多个这样的后端、中间件或前端组件的任何组合。系统的组件可以通过任何形式或介质的数字数据通信(例如通信网络)来互连。通信网络的示例包括局域网(LAN)和广域网(WAN)、互连网络(例如互联网)和对等网络(例如自组织对等网络)。[0842] 诸如数据处理系统105的计算系统可以包括客户端和服务器。例如,数据处理系统105可以包括一个或多个数据中心或服务器群中的一个或多个服务器。客户端和服务器通常彼此远离,并且典型地通过通信网络进行交互。客户端和服务器的关系是通过运行在相应计算机上并且彼此具有客户端‑服务器关系的计算机程序产生的。在一些实施方式中,服务器将数据(例如,HTML页面)发送到客户端设备(例如,为了向与客户端设备交互的用户显示数据和从该用户接收用户输入)。可以在服务器处从客户端设备接收在客户端设备处生成的数据(例如,用户交互的结果)。[0843] 尽管本说明书包含多个具体的实现细节,但是细节这些不应被解释为对任何实施方式或可能要求保护的范围的限制,而是对本文所描述的系统和方法的特定实施方式的特征的描述。本说明书中在单独的实施方式的上下文中描述的某些特征也可以在单个实施方式中组合实现。相反,在单个实施方式的上下文中描述的各种特征也可以在多个实施方式中单独实现或者在任何合适的子组合中实现。此外,尽管特征可以在上文中被描述为在某些组合中起作用,并且甚至最初被如此要求保护,但是可以从该组合中删除来自所要求保护的组合的一个或多个特征,并且所要求保护的组合可以针对子组合或子组合的变型。[0844] 类似地,尽管在附图中以特定次序描述了操作,但是这不应该被理解为要求以所示的特定次序或顺序地执行这些操作,或者要求执行所有示出的操作以获得期望的结果。在一些情况下,权利要求中记载的动作可以以不同的顺序执行,并且仍然获得期望的结果。此外,附图中描述的过程不一定需要所示的特定次序或顺序来实现期望的结果。[0845] 在某些情况下,多任务和并行处理可能是有利的。此外,上述实施方式中的各种系统组件的分离不应该被理解为在所有实施方式中都需要这种分离,并且应该理解,所描述的程序组件和系统通常可以一起被集成在单个软件产品中或者封装到多个软件产品中。例如,数据处理系统105可以是单个模块、具有一个或多个处理模块的逻辑设备、一个或多个服务器或者云计算环境的一部分。[0846] 现在已经描述了一些说明性实施方式和实施方式,显然已经以示例的方式给出的前述是说明性的而不是限制性的。特别地,尽管本文所呈现的多个示例涉及方法动作或系统元件的特定组合,但是那些动作和那些元件可以以其他方式被组合以实现相同的目标。仅结合一种实施方式所讨论的动作、元件和特征不旨在被排除在其他实施方式或实施方式中的类似角色之外。[0847] 本文所使用的措辞和术语是为了描述的目的,并且不应被视为限制。本文中“包括”、“具有”、“包含”、“涉及”、“以……为特征”及其变型的使用意味着包含其后所列出的项目、其等同物和附加项目、以及仅由其后所列出的项目构成的替代实施方式。在一种实施方式中,本文所描述的系统和方法由所描述的元件、动作或组件中的一个元件、动作或组件、多于一个元件、动作或组件中的每个组合、或者所有元件、动作或组件构成。[0848] 本文以单数形式提及的系统和方法的实施方式或元件或者动作的任何引用也可以包含包括多个这些元件的实施方式,并且本文以复数形式提及的任何实施方式或元件或者动作也可以包含仅包括单个元件的实施方式。单数或复数形式的引用不旨在将当前公开的系统或方法、它们的组件、动作或元件限制为单数或复数配置。对基于任何信息、动作或元件的任何动作或元件的引用可以包括动作或元件至少部分地基于任何信息、动作或元件的实施方式。[0849] 本文所公开的任何实施方式可以与任何其他实施方式组合,并且对“实施方式”、“一些实施方式”、“替代实施方式”、“各种实施方式”、“一种实施方式”等的引用不一定是互斥的,而是旨在指示结合该实施方式描述的特定特征、结构或特性可以被包括在至少一种实施方式中。本文所使用的这些术语不一定都指同一实施方式。任何实施方式可以以与本文公开的方面和实施方式一致的任何方式包含性地或排他性地与任何其他实施方式组合。[0850] 对“或”的引用可以被解释为包含性的,因此使用“或”描述的任何术语可以表示单个描述的术语、多于一个描述的术语、以及所有描述的术语中的任何一个。[0851] 在附图、具体实施方式或任何权利要求中的技术特征后面带有附图标记的情况下,附图标记被包括在内的唯一目的是增加附图、具体实施方式和权利要求的可理解性。因此,附图标记及其不存在对任何权利要求元素的范围都没有任何限制作用。[0852] 本文所描述的系统和方法可以在不脱离其特征的情况下以其他特定形式实施。尽管本文所提供的示例涉及控制信息资源的内容的显示,但是本文所描述的系统和方法可以包括被应用于其他环境。前述实施方式是说明性的,而不是对所描述的系统和方法的限制。因此,本文所描述的系统和方法的范围由所附权利要求而不是前面的描述来指示,并且落入权利要求的等同物的含义和范围内的变化包含在其中。[0853] 应当理解到,可以将上述系统和方法提供为记录在一个或多个制品,例如计算机可读介质上或中的一个或多个计算机程序的指令。制品可以是软盘、硬盘、CD、闪存卡、PROM、RAM、ROM或磁带。通常,可以用诸如LISP、Perl、Python、C、C++、C#、PROLOG的任何编程语言或以诸如Java的任何字节代码语言实现计算机程序。软件程序可以被存储在一个或多个制品上或一个或多个制品中,作为目标代码。[0854] 已经描述了方法和系统的某些实施例,对于本领域的技术人员现在将变得显而易见的是,可以使用结合了本公开的概念的其他实施例。因此,本公开不应当限于某些实施例,而是应当仅由所附权利要求的精神和范围来限定。

专利地区:美国

专利申请日期:2020-07-28

专利公开日期:2024-09-03

专利公告号:CN113557511B


以上信息来自国家知识产权局,如信息有误请联系我方更正!
电话咨询
读内容
搜本页
回顶部