掌桥专利:专业的专利平台
掌桥专利
首页

基于数据安全的分布式流中频繁项的查询方法、装置

文献发布时间:2024-04-18 20:00:25


基于数据安全的分布式流中频繁项的查询方法、装置

技术领域

本发明涉及数据处理领域,尤其涉及一种基于数据安全的分布式流中频繁项的查询方法、装置。

背景技术

随着移动设备计算、存储能力的提高,越来越多复杂多样的应用被开发并部署到移动设备上,例如线上购物APP、短视频APP等。用户在使用这些应用时会产生大量的使用数据,例如用户在线上购物时,会产生一系列的浏览历史和订单数据流;用户在使用路径导航软件时会产生个人的位置数据流。对这些数据流进行数据分析、挖掘将带来极大的收益。频繁项查询是一种重要且被广泛应用的数据分析任务。例如,在城市道路规划中,找到人流量较多的地点有利于道路设计;在网络管理中,寻找规模超过一定阈值的大象流可用于网络的拥塞控制、异常检测等;在市场营销中,分析销量超过一定阈值的商品可以帮助制定营销策略。然而,用户产生的数据流中包含用户的个人信息,直接对数据流进行分析会导致隐私问题。例如,用户的轨迹数据流会暴露用户敏感的位置信息,如家庭住址等。因此,如何在保护用户隐私的同时高效完成数据流频繁项查询任务十分重要。然而,当前安全的频繁项查询方法还存在一些不足。首先,这些方法大多假设用户拥有的数据为单个数据,而现实世界中用户产生的数据往往是数据流的形式,传统的方法无法应用到实际场景中。其次,这些方法大多基于本地化差分隐私的方法,用户在本地对数据添加噪声后上传给一个可以不受信任的第三方,再由第三方对用户发来的数据进行聚合并查询其中的频繁项。本地化差分隐发明内容虽然能够对用户数据隐私提供严格的理论保证,但是由于每个用户都在数据流中添加噪声,导致最后的查询结果会累计大量噪声、效用降低。最后,这些方法为了抵抗用户上传恶意数据,采用零知识证明的方法对用户发送的数据进行合理性验证,但零知识证明方法会带来额外的计算、通信开销,导致效率降低。

发明内容

由此可见,现有技术没有向用户提供适用于实际场景数据的,具有安全性且高效的频繁项查询方案。

因此,本发明实施例提供一种基于数据安全的分布式流中频繁项的查询方法及装置,旨在解决上述背景技术存在的问题。

为了解决上述技术问题,本发明是这样实现的:

第一方面,本发明实施例提供了一种基于数据安全的分布式流中频繁项的查询方法,包括:

多个用户和多个计算方共同确定编码方案和解码方案;

多个用户对各自的本地数据流进行处理,生成各自的sketch数据结构以及各自的本地分布式噪声,所述sketch数据结构是一个固定大小的,包含多个元素及其计数值的数据结构;

用户根据编码方案将所述sketch数据结构中的计数值进行编码并计算布尔份额,以及,对所述用户本地的分布式噪声和所述用户的sketch数据结构中的元素进行Shamir秘密分享,计算Shamir算数份额;

用户根据秘密分享协议,将所述布尔份额和所述Shamir算数份额发送给对应的计算方;

计算方验证各自持有的布尔份额,得到对应验证通过的用户名单;

计算方基于所述验证通过的用户名单,利用B2A协议将其布尔份额转化为Shamir算数份额,同时计算方基于编码方案和解码方案以及持有的份额,识别并得到多个用户的sketch数据结构,然后合并所述多个用户的sketch数据结构,以及合并多个用户提供的分布式噪声,并对合并后的sketch数据结构中的计数值添加合并后的分布式噪声;

计算方输出合并后的sketch数据结构中计数值大于阈值的元素,将这些元素作为频繁项的查询结果。

可选地,所述编码方案用于用户对计数值进行编码,所述编码方案通过以下步骤确定:

多个用户和多个计算方共同确定数据合理的取值范围;

根据所述取值范围的大小c,选择并存储一个二进制位数t,t的取值应满足2

若c-(2

若c-(2

可选地,用户按照以下步骤对计数值进行编码:

用户将计数值减去偏移量,所述偏移量为所述数据合理的取值范围中的最小值;

用户判断计数值是否在区间[0,

若计数值在区间内,用户将计数值按照t

若计数值不在区间内,用户将t

重复上述步骤直到计数值被完全编码。

可选地,所述解码方案包括以下步骤:

计算方按照用户发送的比特串进行切分别得到t

分别将比特串转化为十进制数字并相加,再加上偏移量,得到解码的原始值。

可选地,所述多个用户对各自的本地数据流进行处理,生成各自的sketch数据结构的步骤包括:

用户采用Misra-Gries算法,定义一个大小固定为k的sketch数据结构;

对所述本地数据流中的每个元素进行如下操作:

判断该元素是否在sketch数据结构中,若在,则将该元素对应的计数值加1;

若该元素不在sketch数据结构中,则将当前sketch数据结构中的元素个数与k进行比较:

当前sketch数据结构中的元素个数小于k时,将该元素放入sketch数据结构中,并将其计数值置1;

当前sketch数据结构中的元素个数等于k时,则将sketch数据结构中所有元素的计数值都减1,此时若元素的计数值为0,则删除该元素。

可选地,所述用户生成本地的分布式噪声的步骤包括:

用户在本地产生两个k维的随机向量,其中的每一个随机变量都服从pOlya分布,分布参数为

将两个向量相减作为用户生成本地的分布式噪声。

可选地,所述用户将所述sketch数据结构中的计数值进行编码并计算布尔份额的步骤包括:

用户选择要编码的计数值;

对于每一个编码计数值c,用户随机选择m-1个相同比特长的随机数r

计算

可选地,用户对所述sketch数据结构中的元素和分布式噪声进行Shamir秘密分享,计算Shamir算数份额的步骤包括:

对于每个要分享的值x,用户随机选择β个域元素

利用拉格朗日插值公式,通过所述β个域元素x1,x2,...,xβ和要分享的值x,生成一个次数为β的多项式f,满足x=f(0);

将1~m分别代入多项式f,得到的结果作为每个计算方的Shamir算数份额。

可选地,计算方验证各自持有的布尔份额,得到对应验证通过的用户名单的步骤包括:

计算方接收用户发送的布尔份额;

计算方观察每一个份额的位数是否符合编码方案制定模块输出的位数,若符合则将该用户标记为诚实用户,若不符合则将该用户的所有份额丢弃,并标记该用户为恶意用户;

计算方将诚实用户的名单作为对应验证通过的用户名单。

可选地,所述合并多个用户的sketch数据结构的步骤包括:

计算方创建一个空的sketch数据结构,大小为2k,作为一个新的sketch数据结构;

计算方针对两个用户的sketch数据结构中的每个元素进行判断:

如果元素在两个sketch数据结构中都存在,则将元素在两个sketch数据结构中的计数值相加,并将结果保存到所述新的sketch数据结构中;

如果元素只在一个sketch数据结构中存在,则将元素及其计数值保存到所述新的sketch数据结构中;

处理完两个用户的sketch数据结构中的所有的元素后,对新的sketch数据结构中的元素按照计数值从大到小进行排序,并保留前k个元素;

重复上述步骤直至完全将多个用户的sketch数据结构两两合并,将最终合并完毕后的sketch数据结构作为多个用户的sketch数据结构的合并结果。

可选地,所述合并多个用户提供的噪声的秘密份额的步骤包括:

计算方将多个用户的噪声的秘密份额相加,得到合并后的噪声向量;

计算方将合并后的噪声向量加入到合并后的sketch数据结构中的计数值中,并丢弃计数值小于阈值的元素。

第二方面,本发明实施例提供了一种基于数据安全的分布式流中频繁项的查询装置,包括:编码方案制定模块,被配置为执行多个用户和多个计算方共同确定编码方案和解码方案;

用户本地计算模块,被配置为执行多个用户对各自的本地数据流进行处理,生成各自的sketch数据结构以及各自的本地分布式噪声,所述sketch数据结构是一个固定大小的,包含多个元素及其计数值的数据结构;用户根据编码方案将所述sketch数据结构中的计数值进行编码并计算布尔份额,以及,对所述用户本地的分布式噪声和所述用户的sketch数据结构中的元素进行Shamir秘密分享,计算Shamir算数份额;用户根据秘密分享协议,将所述布尔份额和所述Shamir算数份额发送给对应的计算方;

计算方验证模块,被配置为执行计算方验证各自持有的布尔份额,得到对应验证通过的用户名单;

计算方计算模块,被配置为执行计算方基于所述验证通过的用户名单,利用B2A协议将其布尔份额转化为Shamir算数份额,同时计算方基于编码方案和解码方案以及持有的份额,识别并得到多个用户的sketch数据结构,然后合并多个用户的sketch数据结构,以及合并多个用户提供的分布式噪声,并对合并后的sketch数据结构中的计数值添加合并后的分布式噪声;计算方输出合并后的sketch数据结构中计数值大于阈值的元素,将这些元素作为频繁项的查询结果。

本公开的实施例提供的技术方案至少带来以下有益效果:

首先,本发明实施例的查询方法适用于真实世界中的分布式数据流场景,该方法通过采用数据流压缩表示算法,将数据流的频繁项信息近似保存在固定大小的sketch数据结构中,避免了计算和通信开销。这使得该方法能够适用于真实世界中的分布式数据流场景,减小了资源消耗。其次,通过用户-计算方模型,用户将数据的秘密份额发送给计算方,计算方基于拥有的份额进行计算。采用中心化差分隐私对查询结果进行保护,仅需添加一次噪声即可。相比本地化差分隐私每个用户都添加噪声的方法,减小了结果中的噪声量,提高了频繁项查询结果的准确性。另外,通过计算方验证用户发送的布尔份额位数,判断用户的原始计数值是否符合范围要求。这样可以在不揭露用户原始值的情况下,实现对用户数据合理性的验证。因此本发明提供的查询方法具有高效、准确、安全的特点,适用于真实世界中的分布式数据流场景,并具有广泛的应用价值。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例中一种基于数据安全的分布式流中频繁项的查询方法整体的流程图;

图2是本发明实施例中编码方案制定模块流程图;

图3是本发明实施例中用户编码流程图;

图4是本发明实施例中计算方解码流程图;

图5是本发明实施例中用户本地计算流程图;

图6是本发明实施例中计算方验证流程图;

图7是本发明实施例中计算方计算流程图;

图8是本发明实施例中一种基于数据安全的分布式流中频繁项的查询装置的框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明实施例提供了一种基于数据安全的分布式流中频繁项的查询方法,该方法适用于应用于设置于请求端与响应端之间的数据防泄漏终端。本发明实施例的应用场景可以是数据分析、市场营销、城市建设、网络监控等领域中的频繁项查询任务。在数据分析领域,频繁项查询是一种重要且被广泛应用的数据分析任务。例如,在城市道路规划中,找到人流量较多的地点有利于道路设计;在网络管理中,寻找规模超过一定阈值的大象流可用于网络的拥塞控制、异常检测等;在市场营销中,分析销量超过一定阈值的商品可以帮助制定营销策略。本发明实施例的方法可以适用于这些实际场景中的频繁项查询任务,通过将用户数据流作为输入,并设定频繁项查询的阈值,方法可以输出对应场景下的频繁项查询结果。在市场营销领域,本发明的方法可以用于分析销量超过一定阈值的商品,帮助制定营销策略。通过对用户发送的数据进行合理性验证,可以排除恶意用户发送的不合理数据,保证查询结果的准确性和可靠性,从而提供准确的销量分析结果,帮助市场营销决策。在城市建设领域,本发明的方法可以用于分析人流量较多的地点,有助于道路规划和城市设计。通过对用户发送的数据进行合理性验证,可以排除恶意用户发送的不合理数据,保证查询结果的准确性和可靠性,从而提供准确的人流分析结果,为城市建设提供科学依据。在网络监控领域,本发明实施例的方法可以用于寻找规模超过一定阈值的大象流,用于网络的拥塞控制、异常检测等。通过对用户发送的数据进行合理性验证,可以排除恶意用户发送的不合理数据,保证查询结果的准确性和可靠性,从而提供准确的大象流分析结果,帮助网络监控和管理。综上所述,本发明实施例的方法适用于各种实际场景中的频繁项查询任务,提供准确、可靠的数据分析结果,具有广泛的应用价值。参见图1,图1示出了本发明实施例一种基于数据安全的分布式流中频繁项的查询方法整体的流程图,所述方法包括:

步骤S101:多个用户和多个计算方共同确定编码方案和解码方案。

在本实施方式中,用户指的是数据流的拥有者,也就是数据的产生者或数据流的来源。用户是不同的个体,例如市场营销场景中的商品消费者。计算方指的是提供计算资源的服务商,可以是第三方服务器等。用户和计算方的数量都可以是多个,其中,多个用户上传各自的本地数据流,在本地运行系统中进行处理,在市场营销的应用场景下,假设有多个用户使用某个电商平台进行在线购物,每个用户在购物过程中会产生一系列的本地的浏览历史和订单数据流,这些数据流可以包含用户的购买偏好、浏览习惯等信息。而多个计算方可以被模拟成一个可信的第三方,从而可以采用中心化差分隐私对查询结果进行保护,此外,多个计算方的合作也可以实现对分布式数据流的处理和查询任务的分担,减小了计算和通信开销,提高了处理效率。

步骤S102:多个用户对各自的本地数据流进行处理,生成各自的sketch数据结构以及各自的本地分布式噪声,所述sketch数据结构是一个固定大小的,包含多个元素及其计数值的数据结构。

在本实施方式中,我们可以将sketch数据结构看作是一个紧凑的摘要,它可以帮助我们了解数据流中的频繁项信息,而不需要存储完整的数据流。通过对数据流进行近似表示,sketch数据结构可以在固定的空间内保存数据流的重要特征,例如频繁出现的元素和它们的计数值。同时,sketch数据结构还支持合并操作,可以将多个用户的sketch数据结构进行合并,进一步减小资源消耗。而分布式噪声是指在分布式数据流的频繁项查询过程中,为了保护用户数据隐私而向查询结果添加的噪声,分布式噪声的添加可以帮助保护用户数据的隐私,使得查询结果不会直接暴露用户的原始数据。通过在查询结果中添加噪声,可以模糊数据的真实值。举例来说,假设有一个分布式数据流频繁项查询任务,涉及多个用户的购物记录。每个用户的购物记录包含了购买的商品和对应的数量。为了保护用户的隐私,用户在本地对购物记录进行处理,并生成一个分布式噪声。这个分布式噪声包含了一些随机的数值,用于模糊购物记录中商品的真实数量,从而保护了用户的隐私。

步骤S103:用户根据编码方案将所述sketch数据结构中的计数值进行编码并计算布尔份额,以及,对所述用户本地的分布式噪声和所述用户的sketch数据结构中的元素进行Shamir秘密分享,计算Shamir算数份额。

在本实施方式中,Shamir秘密分享是一种秘密分享的方法,用户将秘密值通过Shamir秘密分享的方式进行分享。Shamir份额是指在Shamir秘密分享中生成的每个用户的份额。这里的分布式噪声和sketch数据结构中的元素都可以看做一个需要被分享的秘密值,通过Shamir秘密分享可以生成对应的Shamir算数份额。

步骤S104:用户根据秘密分享协议将所述布尔份额和所述Shamir算数份额发送给对应的计算方。

秘密分享协议即使用秘密分享的方式将分散的份额发送给每一个计算方,其中,布尔秘密分享和Shamir秘密分享都属于秘密分享协议的不同规则或方法。布尔秘密分享是一种秘密分享协议,它将秘密信息拆分成布尔值(0或1)的份额,并将这些份额分发给不同的参与方,即本发明实施例中的计算方。只有当满足一定的条件时,这些布尔值份额才能被联合起来恢复出原始的秘密信息。前文已说明过,Shamir秘密分享也是一种秘密分享协议,它将秘密信息拆分成多个多项式的系数份额,并将这些份额分发给不同的计算方。只有当满足一定的条件时这些多项式的系数份额才能被联合起来恢复出原始的秘密信息。在本发明实施例中,布尔份额是指用户对sketch数据结构中的计数值进行布尔秘密分享生成的份额。Shamir份额和布尔份额在本发明实施例中实现不同的应用,Shamir份额用于将秘密值分散成多个份额,而布尔份额是按照编码方案对sketch数据结构中的计数值进行编码后,对编码后的比特串进行布尔分享得到的,计算方可以根据布尔份额判断用户发送的数据是否合理,接下来将详细说明。

步骤S105:计算方验证各自持有的布尔份额,得到对应验证通过的用户名单。

在本实施方式中,诚实用户表示其按照方法规定的协议执行各个步骤,而恶意用户表示该类用户希望通过上传不合理的数据导致频繁项查询结果受其影响,使其获利。例如,统计销量较多的商品时,恶意用户可以修改其sketch数据结构中的某个特定商品的计数值远远超过合理范围,导致最终的频繁项查询结果中包含该商品。本发明提出的方法为了防止这种情况发生,需要对用户发送的数据进行合理性验证。

步骤S106:计算方基于所述验证通过的用户名单,利用B2A协议将其布尔份额转化为Shamir算数份额,同时计算方基于编码方案和解码方案以及持有的份额,识别并得到多个用户的sketch数据结构,然后合并所述多个用户的sketch数据结构,以及合并多个用户提供的分布式噪声,并对合并后的sketch数据结构中的计数值添加合并后的分布式噪声。

前文已经对布尔份额进行了说明,它是一种秘密信息被拆分成布尔值(0或1)的份额,然而,布尔份额的二进制表示形式在后续的合并计算中可能不利于计算方进行操作。为了解决这个问题,采用了B2A协议将布尔份额转化为Shamir算数份额。B2A协议是一种将布尔值转化为算术值的协议。通过B2A协议,布尔份额可以被转化为Shamir算数份额,这样在后续的合并计算中,计算方可以直接对Shamir算数份额进行操作,而不需要再处理布尔份额的二进制表示形式。这样可以简化计算过程,提高计算效率。另外,计算方并不需要主动地去“接收”sketch数据结构,我们以Shamir份额为例,计算方按照编码方案的位数列表,对用户发送的比特串进行切割,分别得到t

步骤S107:计算方输出合并后的sketch数据结构中计数值大于阈值的元素,将这些元素作为频繁项的查询结果。

对于本发明实施例中的阈值的概念,在这里进行详细说明。

第一,我们定义超过一定阈值的元素称为频繁项,通过遍历所有的元素,然后记录他们的计数值,筛选出那些大于阈值的元素作为频繁项结果。假设数据流中总共有100个元素,统计不同元素的出现次数,即计数值,设定阈值为20,则计数值大于20的元素为频繁项。

在本发明应用的差分隐私算法中,算法本身会携带一个阈值。这里设置的阈值目的是防止输出的频繁项结果泄露用户隐私,若不设置阈值,将sketch中的所有元素都作为频繁项输出则可能出现泄露用户分布式数据流中元素的情况。在该步骤中,“阈值”是第二种说明中对应的定义。

图2是本发明实施例中编码方案制定模块流程图,如图2所示:

步骤S201,多个用户和多个计算方共同确定数据合理的取值范围。

步骤S202,根据所述取值范围的大小c,选择并存储一个二进制位数t,t的取值应满足2

步骤S203,若c-(2

若c-(2

涉及步骤S201。

多个用户和多个计算方共同确定数据合理的取值范围。

数据合理的取值范围是指数据取值在一个合理的区间内,符合实际情况和应用需求。对于商品销售的销量而言,假设一般在一个固定的时间段内这个商品最高卖100件,数据合理的取值范围就是0-100。定义数据合理的取值范围的目的是为了确保数据的有效性和可信度,并且能够进行合理性验证。

通过定义数据合理的取值范围,可以排除不符合实际情况或应用需求的数据。只有在合理范围内的数据才能被认为是有效的,能够真实地反映数据的特征和属性。同时,数据合理的取值范围可以帮助过滤掉异常值和错误数据,提高数据的可信度。只有经过合理性验证的数据才能被认为是可信的,可以用于后续的分析和决策。另外,定义数据合理的取值范围可以确保不同数据源或不同用户上传的数据在取值上保持一致。这样可以避免数据的混乱和不一致,提高数据的一致性和可比性。这样的话,也可以防止一些恶意用户上传不合理的数据,从而保护数据的安全性和隐私。只有通过验证的数据才能被认可和使用,确保数据的安全和保密。

涉及步骤S202。

根据所述取值范围的大小c,选择并存储一个二进制位数t,t的取值应满足2

通过2

涉及步骤S203。

若c-(2

若c-(2

假设数据的合理范围为[0,15],c=15,根据上述规则,选择t=4,因为2

图3是本发明实施例中用户编码流程图,如图3所示,基于上述编码方案列表,用户将按照以下步骤对计数值进行编码:

步骤S301,用户将计数值减去偏移量,所述偏移量为所述数据合理的取值范围中的最小值。

步骤S302,用户判断计数值是否在区间[0,

若计数值在区间内,用户将计数值按照t

若计数值不在区间内,用户将t

步骤S303,重复上述步骤直到计数值被完全编码。

涉及步骤S301。

用户将计数值减去偏移量,所述偏移量为所述数据合理的取值范围中的最小值。

偏移量被用来将数据的合理取值范围转化为从0开始的合理范围,使合理范围的计算形式可以转化为[0,b-a]。假设数据的合理取值范围为[10,30],那么偏移量的数值等于10。

涉及步骤S302。

用户判断计数值是否在区间[0,

若计数值在区间内,用户将计数值按照t

若计数值不在区间内,用户将t

我们默认图3中t

图4是本发明实施例中计算方解码流程图,如图4所示,计算方按照以下步骤进行解码:

步骤S401,计算方按照用户发送的比特串进行切分别得到t

步骤S402,分别将这些比特串转化为十进制数字并相加,再加上偏移量,得到解码的原始值。

假设编码方案列表为[4,3,2],用户发送的比特串为101001011,偏移量a为0。根据编码方案列表,计算方将比特串切割为4位、3位和2位比特串,分别为1010,010和11。然后,计算方将这些比特串转化为十进制数字并相加,得到10+2+3=15。最后,计算方加上偏移量a,得到解码的原始值为15。

图5是本发明实施例中用户本地计算流程图,如图5所示,所述多个用户对各自的本地数据流进行处理,生成各自的sketch数据结构的步骤包括:

步骤S501,用户采用Misra-Gries算法,定义一个大小固定为k的sketch数据结构。

步骤S502,对所述本地数据流中的每个元素进行如下操作:

判断该元素是否在sketch数据结构中,若在,则将该元素对应的计数值加1。

若该元素不在sketch数据结构中,则将当前sketch数据结构中的元素个数与k进行比较:

当前sketch数据结构中的元素个数小于k时,将该元素放入sketch数据结构中,并将其计数值置1;

当前sketch数据结构中的元素个数等于k时,则将sketch数据结构中所有元素的计数值都减1,此时若元素的计数值为0,则删除该元素。

涉及步骤S501。

用户采用Misra-Gries算法,定义一个大小固定为k的sketch数据结构。

Misra-Gries算法是一个流式算法,用于估计数据流中的高频元素,它可以在给定的内存限制下估计数据流中每个元素的频次。在本发明实施例中,Misra-Gries算法用于对数据流进行近似压缩表示。该算法将数据流的频繁项信息保存在一个固定大小的sketch中。此外,用户还将从polya分布中采样随机变量,即根据这个分布生成k维的随机向量,我们在步骤S601中详述。

涉及步骤S502。

对所述本地数据流中的每个元素进行如下操作:

判断该元素是否在sketch数据结构中,若在,则将该元素对应的计数值加1。

若该元素不在sketch数据结构中,则将当前sketch数据结构中的元素个数与k进行比较:

当前sketch数据结构中的元素个数小于k时,将该元素放入sketch数据结构中,并将其计数值置1;

当前sketch数据结构中的元素个数等于k时,则将sketch数据结构中所有元素的计数值都减1,此时若元素的计数值为0,则删除该元素。

下面对这个流程规则做详细说明。对于第一种情况,即sketch数据结构中的元素小于k时,假设sketch数据结构的大小k为3,当前sketch中已经有两个元素A和B,它们的计数值分别为2和3。现在有一个新的元素C要加入sketch数据结构中。由于sketch数据结构中的元素个数小于k,所以将元素C放入sketch数据结构中,并将其计数值置为1。最终,sketch数据结构中的元素为A、B和C,它们的计数值分别为2、3和1。

对于第二种情况,即sketch数据结构中的元素等于k时,假设sketch数据结构的大小k为3,当前sketch数据结构中已经有三个元素A、B和C,它们的计数值分别为1、2和3。现在有一个新的元素D要加入sketch数据结构中。由于sketch数据结构中的元素个数为3,等于k,所以将sketch数据结构中所有元素的计数值都减1。经过减1操作后,元素A的计数值变为0,所以将元素A从sketch数据结构中删除,并且不会保留D。最终,sketch数据结构中的元素为B、C,它们的计数值分别为1、2。经过以上过程,完整复杂的数据流被近似表达为一个大小为k的sketch数据结构。

所述用户生成本地的分布式噪声的步骤包括:

步骤S601,用户在本地产生两个k维的随机向量,其中的每一个随机变量都服从polya分布,分布参数为

步骤S602,将两个向量相减作为用户生成本地的分布式噪声。

涉及步骤S601。

用户在本地产生两个k维的随机向量,其中的每一个随机变量都服从polya分布,分布参数为

用户生成的这两个k维的随机向量,这里的k即为前文所述的sketch数据结构的大小,这些向量中的每个元素都是随机生成的,可以看作是一组随机数。每个随机变量都服从polya分布,polya分布是一种离散概率分布,用于描述在一定时间或空间范围内事件发生的次数的概率分布。参数(1/n,α)表示平均每个用户生成的随机数的期望值为1/n,而α是polya分布的参数,用于控制分布的形状。

涉及步骤S602。

将两个向量相减作为用户生成本地的分布式噪声。

假设有用户A,需要生成4维的分布式噪声。用户A生成的两个随机向量为[1,2,4,3]和[2,1,3,1]。然后,用户A将这两个随机向量相减,得到的结果为[-1,1,1,2]。这个结果就是用户A生成的分布式噪声。polya分布具有封闭性,这意味着两个服从polya分布的随机变量相减后,结果仍然服从polya分布,这样每个用户都可以在本地生成自己的噪声向量,而不需要依赖其他用户或第三方的信息。这种方式保证了用户数据的隐私性和安全性。

所述用户将所述sketch数据结构中的计数值进行编码并计算布尔份额的步骤包括:

步骤S701,用户选择要编码的计数值。

步骤S702,对于每一个编码计数值c,用户随机选择m-1个相同比特长的随机数r

步骤S703,计算

如何编码的内容前文已经详细说明,这里不再赘述。布尔份额可以保证用户数据的安全性,用户在本地将sketch中的计数值编码后进行布尔分享,将计数值拆分成多个份额,并将这些份额发送给计算方。那么计算方只能通过收到的布尔份额进行计算,无法获得用户的原始数据。这样可以保护用户的数据隐私。并且布尔份额可以用于验证用户发送的数据的合理性,下文将详细说明这一点。

用户对所述sketch数据结构中的元素和分布式噪声进行Shamir秘密分享,计算Shamir算数份额的步骤包括:

步骤S801,对于每个要分享的值x,用户随机选择β个域元素

步骤S802,利用拉格朗日插值公式,通过所述β个域元素x1,x2,...,xβ和要分享的值x,生成一个次数为β的多项式f,满足x=f(0)。

步骤S803,将1~m分别代入多项式f,得到的结果作为每个计算方的Shamir算数份额。

拉格朗日插值公式是一种用于构造多项式的方法。下面举例来说明上述步骤,在这里为了区分算式中的符号,将域元素和秘密值改用s来表示。假设用户选择的域元素为s1=2,s2=4,需要分享的秘密值s0=10,根据拉格朗日插值公式,得到一个次数为2的多项式f(x),满足s0=f(0):f(x)=s0(x-1)(x-2)/((0-1)(0-2))+s1(x-0)(x-2)/((1-0)(1-2))+4(x-0)(x-1)/((2-0)(2-1)),我们假设有3个计算方,即m=3,将m=3带入到这个二次的多项式,我们得到:

f(3)=10(3-1)(3-2)/((0-1)(0-2))+2(3-0)(3-2)/((1-0)(1-2))+4(3-0)(3-1)/((2-0)(2-1))=16;

由此,我们得到了每个计算方的Shamir算数份额:2,4,16。

图6是本发明实施例中计算方验证流程图,如图6所示,计算方验证各自持有的布尔份额,得到对应验证通过的用户名单的步骤包括:

步骤S901,计算方接收用户发送的布尔份额。

步骤S902,计算方观察每一个份额的位数是否符合编码方案制定模块输出的位数,若符合则将该用户标记为诚实用户,若不符合则将该用户的所有份额丢弃,并标记该用户为恶意用户。

步骤S903,计算方将诚实用户的名单作为对应验证通过的用户名单。

假设我们有3个计算方,每个计算方分别持有以下布尔份额:

计算方1接收的布尔份额:101;

计算方2接收的布尔份额:110;

计算方3接收的布尔份额:0110;

计算方需要观察每个份额的位数是否符合编码方案制定模块输出的位数。假设编码方案制定模块输出的位数为3。

对于计算方1接收的布尔份额101,它的位数为3,符合编码方案制定模块输出的位数,因此该布尔份额通过验证。

对于计算方2接收的布尔份额110,它的位数为3,符合编码方案制定模块输出的位数,因此该布尔份额通过验证。

对于计算方3接收的布尔份额0110,它的位数为4,不符合编码方案制定模块输出的位数,因此该布尔份额未通过验证,将丢弃该布尔份额对应的用户的所有份额,并标记该用户为恶意用户。

恶意用户的行为指的是用户有意地上传不合理的数据,以影响频繁项查询结果,从而获得不当利益。举例来说,在市场营销中,如果一个恶意用户想要推广自己的产品,他可以故意修改自己的数据流中某个商品的计数值,使其远远超过合理范围,从而导致最终的频繁项查询结果中包含该商品,进而提高该商品的曝光度和销量。因此本发明实施例提出了合理性验证的方法,对用户发送的数据进行验证,这样可以确保只有合理的用户数据才会参与到后续的计算过程中,提高了数据的安全性和准确性。

图7是本发明实施例中计算方计算流程图,如图7所示,上述的sketch数据结构可以进行合并操作,所述合并多个用户的sketch数据结构的步骤包括:

步骤S1001,计算方创建一个空的sketch数据结构,大小为2k,作为一个新的sketch数据结构。

步骤S1002,计算方针对两个用户的sketch数据结构中的每个元素进行判断:

如果元素在两个sketch数据结构中都存在,则将元素在两个sketch数据结构中的计数值相加,并将结果保存到所述新的sketch数据结构中;

如果元素只在一个sketch数据结构中存在,则将元素及其计数值保存到所述新的sketch数据结构中;

步骤S1003,处理完两个用户的sketch数据结构中的所有的元素后,对新的sketch数据结构中的元素按照计数值从大到小进行排序,并保留前k个元素;

步骤S1004,重复上述步骤直至完全将多个用户的sketch数据结构两两合并,将最终合并完毕后的sketch数据结构作为多个用户的sketch数据结构的合并结果。

结合本发明实施例的整体技术方案,对多个用户的sketch数据结构进行合并,具有以下意义:

第一,通过合并多个用户的sketch数据结构,可以避免计算和通信开销,而不必处理完整的数据流。

第二,合并多个用户的sketch数据结构可以减小添加的噪声量,从而提高频繁项查询结果的准确性。

第三,通过将多个不信任的计算方模拟成一个可信的第三方,可以采用中心化差分隐私对查询结果进行保护,仅需添加一次噪声即可,减小了结果中的噪声量,同时保护了用户数据的隐私。

如图7所示,由多个用户提供的噪声的秘密份额也可以被合并,所述合并多个用户提供的噪声的秘密份额的步骤包括:

步骤S1101,计算方将多个用户的噪声的秘密份额相加,得到合并后的噪声向量。

步骤S1102,计算方将合并后的噪声向量加入到合并后的sketch数据结构中的计数值中,并丢弃计数值小于阈值的元素。

当计算方合并所有用户的分布式噪声后,噪声会服从参数为α的几何分布。步骤中所述的“阈值”定义已在前文进行了说明,这里不再赘述。假设有两个用户A和B,他们分别生成了噪声的秘密份额na和nb。计算方将na和nb相加,得到合并后的噪声向量nab。然后,计算方利用秘密分享的线性性质,将合并后的噪声向量nab添加到合并后的sketch数据结构中的计数值中。如果某个元素的计数值小于阈值,例如3,那么该元素将被丢弃。最终,计算方会输出保留下来的sketch中的元素作为频繁项查询的结果。

综上,本发明实施例提供的一种基于数据安全的分布式流中频繁项的查询方法,该方法通过采用数据流压缩表示算法,将数据流的频繁项信息近似保存在固定大小的sketch数据结构中,避免了计算和通信开销。这使得该方法能够适用于真实世界中的分布式数据流场景,减小了资源消耗。其次,通过用户-计算方模型,用户将数据的秘密份额发送给计算方,计算方基于拥有的份额进行计算。采用中心化差分隐私对查询结果进行保护,仅需添加一次噪声即可。相比本地化差分隐私每个用户都添加噪声的方法,减小了结果中的噪声量,提高了频繁项查询结果的准确性。另外,通过计算方验证用户发送的布尔份额位数,判断用户的原始计数值是否符合范围要求。这样可以在不揭露用户原始值的情况下,实现对用户数据合理性的验证。因此本发明提供的查询方法具有高效、准确、安全的特点,适用于真实世界中的分布式数据流场景,并具有广泛的应用价值。

基于上述图1所示的分布式流中频繁项的查询方法,本发明实施例还提供一种分布式流中持久性的查询装置,图8是本发明实施例中一种基于数据安全的分布式流中频繁项的查询装置的框图,如图8所示,该装置包括:

编码方案制定模块,被配置为执行多个用户和多个计算方共同确定编码方案和解码方案;

用户本地计算模块,被配置为执行多个用户对各自的本地数据流进行处理,生成各自的sketch数据结构以及各自的本地分布式噪声,所述sketch数据结构是一个固定大小的,包含多个元素及其计数值的数据结构;用户根据编码方案将所述sketch数据结构中的计数值进行编码并计算布尔份额,以及,对所述用户本地的分布式噪声和所述用户的sketch数据结构中的元素进行Shamir秘密分享,计算Shamir算数份额;用户根据秘密分享协议,将所述布尔份额和所述Shamir算数份额发送给对应的计算方;

计算方验证模块,被配置为执行计算方验证各自持有的布尔份额,得到对应验证通过的用户名单;

计算方计算模块,被配置为执行计算方基于所述验证通过的用户名单,利用B2A协议将其布尔份额转化为Shamir算数份额,同时计算方基于编码方案和解码方案以及持有的份额,识别并得到多个用户的sketch数据结构,然后合并多个用户的sketch数据结构,以及合并多个用户提供的分布式噪声,并对合并后的sketch数据结构中的计数值添加合并后的分布式噪声;计算方输出合并后的sketch数据结构中计数值大于阈值的元素,将这些元素作为频繁项的查询结果。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

相关技术
  • 图像传感器的制造方法、图像传感器以及成像装置
  • 半导体装置、半导体装置的制造方法以及半导体封装的制造方法
  • 像素单元及其制造方法、图像传感器以及成像装置
  • 像素单元、图像传感器及其制造方法以及成像装置
  • 目镜式成像光学装置和头戴式成像光学设备及其制造方法和成像方法
  • 图像传感器、成像装置和图像传感器芯片封装件制造方法
  • 传感器封装、其制造方法和成像装置
技术分类

06120116526470