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

数据处理方法及装置与流程

2022-06-08 08:31:17 来源:中国专利 TAG:


1.本说明书一个或多个实施例涉及数据处理技术领域,尤其涉及一种数据处理方法及装置。


背景技术:

2.随着大数据时代的到来,多个数据方持有相同业务对象的不同特征数据成为一种典型的数据分布情况。例如,商家、银行、支付平台各自通过提供用户服务,分别持有大批量相同用户的购物订单、信贷数据和支付数据。将各个数据方持有的特征数据聚合到一起进行联合分析,从而得到更全面更准确的统计信息,是实现数据价值的有效挖掘,以及充分提高业务质量和用户满意度的重要途径。
3.然而,出于对数据隐私安全的考量,各个数据方往往不能将所持有的数据直接交由其他参与方进行联合分析。如何完成多方数据的联合分析,并确保各方无法获得除分析结果外的其他信息,成为关键问题。尽管适用于任意电路计算的通用安全多方计算(secure multiparty computation,简称mpc)技术提供了该问题的通用解法,但其通信和计算开销往往成为在实际业务中应用该计算的阻碍。针对特定计算任务或算子设计特定的mpc协议,是解决实际问题的主流思路。
4.在数据库查询等场景下,联合分析涉及的重要算子包括基于主键进行相等连接(equal join with primary keys)的算子,简称主键连接(primary-key join)算子。主键连接算子可以将两张表中具有相同主键的行提取出来,生成一张新表,其包含共同业务对象的所有属性值。
5.因此,需要设计一种针对主键连接算子的mpc协议,可以有效降低其通信和计算开销,从而降低联合数据分析的通信计算消耗。


技术实现要素:

6.本说明书一个或多个实施例描述了一种数据处理方法及装置,通过安全地将未排序的秘密分享的表分片按照同种规则进行排序,可以避免后续调用完整的不经意排序算子而产生高通信消耗,从而有效降低通信量和计算量。
7.根据第一方面,提供一种数据处理方法,由多方中任意的目标方执行,包括:获取与两个数据表对应的两个表分片,所述两个数据表中任意的目标表对应的目标表分片是该目标表的多个秘密分享分片之一。针对所述目标表分片,基于其包含的主键列子分片以及对应生成的密钥分片,确定伪随机数组分片,用于恢复伪随机数组;对该目标表分片进行基于所述伪随机数组实现的置换处理,得到对应的排序后表分片。基于与所述两个表分片对应的两个排序后表分片,确定连接表分片,其为所述两个数据表所对应主键连接表的多个秘密分享分片之一。
8.在一个实施例中,获取与两个数据表对应的两个表分片,包括:从所述目标方之外的两个数据方分别获取所述两个表分片,所述两个数据方各自持有多个业务对象的部分属
性,形成所述两个数据表。
9.在一个实施例中,在基于其包含的主键列子分片以及对应生成的密钥分片,确定伪随机数组分片之前,所述方法还包括:通过与所述多方中的其他方共同执行密钥分片生成协议,得到所述密钥分片。
10.在一个实施例中,对该目标表分片进行基于所述伪随机数组实现的置换处理,包括:获取置换向量,其基于排序前后的伪随机数组而确定;利用所述置换向量对所述目标表分片进行所述置换处理。
11.在一个具体的实施例中,所述目标表具有指定处理方;其中,获取置换向量,包括:在所述目标方为所述指定处理方的情况下,基于生成的伪随机数组分片,以及从其他方接收的其他伪随机数组分片,恢复所述伪随机数组;对所述伪随机数组进行排序,并基于排序前后的伪随机数组位置映射关系,确定所述置换向量。
12.在一个更具体的实施例中,其中,确定所述置换向量,包括:判断所述伪随机数组中任意的两个伪随机数是否均不相同;在判断出是的情况下,确定所述置换向量。
13.在一个更具体的实施例中,其中,获取置换向量,还包括:在所述目标方不为所述指定处理方的情况下,将生成的伪随机数组分片发送给所述指定处理方,使其恢复伪随机数组,并基于排序前后的伪随机数组位置映射关系,确定所述置换向量;从所述指定处理方接收所述置换向量。
14.在一个更具体的实施例中,所述两个数据表具有不同的指定处理方。
15.在一个实施例中,在确定连接表分片之前,所述方法还包括:基于两个排序后的伪随机数组分片以及所述两个排序后表分片,与其他方共同执行针对表分片排序的校验协议;其中,确定连接表分片,包括:在所述校验协议的输出结果指示校验通过的情况下,确定所述连接表分片。
16.在一个实施例中,基于与所述两个表分片对应的两个排序后表分片,确定连接表分片,包括:基于所述两个排序后表分片进行纵向拼接,得到拼接表分片;根据所述拼接表分片中各行所对应的伪随机数分片,对该拼接表分片进行不经意排序,所述伪随机数分片属于两个伪随机数组分片的并集;基于所述不经意排序的结果,确定所述连接表分片。
17.在一个实施例中,在确定伪随机数组分片之前,所述方法还包括:获取根据客户端发起的查询请求而解析出的算子;其中,确定伪随机数组分片,包括:在所述算子中包括主键连接算子的情况下,确定所述伪随机数组分片;其中,在确定连接表分片之后,所述方法还包括:根据所述连接表分片,确定查询结果分片;将所述查询结果分片发送给客户端,以使所述客户端基于所述查询结果分片和其他查询结果分片,恢复查询结果。
18.根据第二方面,提供一种数据处理方法,由云端执行,包括:获取与两个数据表对应的两个表分片,该两个数据表中任意的目标表对应的目标表分片是该目标表的多个秘密分享分片之一;针对所述目标表分片,基于其包含的主键列子分片以及对应生成的密钥分片,确定伪随机数组分片,用于恢复伪随机数组;对该目标表分片进行基于所述伪随机数组实现的置换处理,得到对应的排序后表分片;基于与所述两个表分片对应的两个排序后表分片,确定连接表分片,其为所述两个数据表所对应主键连接表的多个秘密分享分片之一。
19.根据第三方面,提供一种数据处理的装置,所述装置集成于所述多方中任意的目标方,所述装置包括:表分片获取单元,配置为获取与两个数据表对应的两个表分片,所述
两个数据表中任意的目标表对应的目标表分片是该目标表的多个秘密分享分片之一;随机数分片确定单元,配置为针对所述目标表分片,基于其包含的主键列子分片以及对应生成的密钥分片,确定伪随机数组分片,用于恢复伪随机数组;置换处理单元,配置为对该目标表分片进行基于所述伪随机数组实现的置换处理,得到对应的排序后表分片;连接表分片确定单元,配置为基于与所述两个表分片对应的两个排序后表分片,确定连接表分片,其为所述两个数据表所对应主键连接表的多个秘密分享分片之一。
20.在一个实施例中,表分片获取单元具体配置为:从所述目标方之外的两个数据方分别获取所述两个表分片,所述两个数据方各自持有多个业务对象的部分属性,形成所述两个数据表。
21.在一个实施例中,所述装置还包括密钥分片生成单元,配置为通过与所述多方中的其他方共同执行密钥分片生成协议,得到所述密钥分片。
22.在一个实施例中,所述装置还包括置换向量获取单元,配置为获取置换向量,其基于排序前后的伪随机数组而确定;所述置换处理单元具体配置为:利用所述置换向量对所述目标表分片进行所述置换处理。
23.在一个具体的实施例中,所述目标表具有指定处理方;其中,置换向量获取单元具体配置为:在所述目标方为所述指定处理方的情况下,基于生成的伪随机数组分片,以及从其他方接收的其他伪随机数组分片,恢复所述伪随机数组;对所述伪随机数组进行排序,并基于排序前后的伪随机数组位置映射关系,确定所述置换向量。
24.在一个更具体的实施例中,置换向量获取单元进一步配置为:判断所述伪随机数组中任意的两个伪随机数是否均不相同;在判断出是的情况下,确定所述置换向量。
25.另一方面,在一个更具体的实施例中,置换向量获取单元具体配置为:在所述目标方不为所述指定处理方的情况下,将生成的伪随机数组分片发送给所述指定处理方,使其恢复伪随机数组,并基于排序前后的伪随机数组位置映射关系,确定所述置换向量;从所述指定处理方接收所述置换向量。
26.在一个更具体的实施例中,所述两个数据表具有不同的指定处理方。
27.在一个实施例中,所述装置还包括校验单元,配置为基于两个排序后的伪随机数组分片以及所述两个排序后表分片,与其他方共同执行针对表分片排序的校验协议;其中,连接表分片确定单元具体配置为:在所述校验协议的输出结果指示校验通过的情况下,确定所述连接表分片。
28.在一个实施例中,连接表分片确定单元具体配置为:基于所述两个排序后表分片进行纵向拼接,得到拼接表分片;根据所述拼接表分片中各行所对应的伪随机数分片,对该拼接表分片进行不经意排序,所述伪随机数分片属于两个伪随机数组分片的并集;基于所述不经意排序的结果,确定所述连接表分片。
29.在一个实施例中,所述装置还包括算子获取单元,配置为获取根据客户端发起的查询请求而解析出的算子;其中,随机数分片确定单元具体配置为:在所述算子中包括主键连接算子的情况下,确定所述伪随机数组分片;所述装置还包括查询处理确定单元,配置为根据所述连接表分片,确定查询结果分片;将所述查询结果分片发送给客户端,以使所述客户端基于所述查询结果分片和其他查询结果分片,恢复查询结果。
30.根据第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述
计算机程序在计算机中执行时,令计算机执行第一方面或第二方面的方法。
31.根据第五方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,该处理器执行所述可执行代码时,实现第一方面或第二方面的方法。
32.采用本说明书实施例披露的上述方法和装置,通过安全地将未排序的秘密分享的表分片按照同种规则进行排序,可以避免后续调用完整的不经意排序算子而产生高通信消耗,从而有效降低通信量和计算量。在安全性方面,本方案在多数诚实且半可信模型下可证明安全,即可以抵抗控制一个参与方且遵循协议描述的攻击者。
附图说明
33.为了更清楚地说明本发明实施例的技术方案,下面对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
34.图1示出主键连接算子的使用示例图;
35.图2示出本说明书实施例披露的主键连接协议的执行数据流示意图;
36.图3示出本说明书实施例披露的数据处理方法流程示意图;
37.图4示出本说明书实施例披露的数据处理实施架构示意图;
38.图5示出本说明书实施例披露的数据处理在电商场景下的应用架构图;
39.图6示出本说明书实施例披露的数据处理装置结构示意图。
具体实施方式
40.下面结合附图,对本说明书提供的方案进行描述。
41.承前所述,mpc技术是在保护数据隐私安全的前提下完成联合分析的有效解法。mpc的一般执行过程包括以下三个步骤:1)各个数据方通过秘密分享(secret sharing)方案将自己的数据分享到所有的计算方,为直观描述,将所有数据方的全体数据记为x;2)各个计算方之间根据需要计算的函数f执行特定的协议,将原始数据x的秘密分享值(以下或称作分享值、秘密分享分片、分片等)转换为计算结果f(x)的秘密分享值;3)根据需要可以从秘密分享值中恢复出f(x),也可以在f(x)的秘密分享值基础上进行后续计算。
42.在数据方持有的数据为数据表(如数据库中的表或excel表格等)的情况下,上述函数f涉及的一个或多个算子中往往包括主键连接算子,很多联合分析任务需要针对连接成的新表展开。需说明,主键是表中的一个或多个字段(或称属性),主键值用于唯一标识表中的某一条记录,也就是说,表中不同的行不会具有相同的主键值。
43.为方便理解,先对主键连接算子的基本输入输出进行介绍。主键连接算子的输入包括两个数据表l和r的秘密分享分片[l]和[r],其中,包括两个数据表l和r的秘密分享分片[l]和[r],其中,表示数据表l中第i行的主键值,是第i行的其他属性;
[0044]
算子输出为数据连接表j的秘密分享分片[j],[j]=([k1,d1,d1′
,f1],

,[k
t
,d
t
,d

t
,f
t
])。由于需要隐藏连接结果的大小,j的行数需要设置为最大的可能值,即t=m n。此时j包含无效行,即不在真实连接结果中的行。使用属性f来区分有效行(f=1)和无效行(f
=0)。具体地,数据连接表j满足如下条件:对于任意一组(j∈[n],l∈[m])使得那么一定存在且仅存在一个i∈[t],使得fi=1,且对于fi=0的行,因其数据无效而不做要求。
[0045]
直观地,图1示出主键连接算子的使用示例图。如图1所示,表分片[l]和[r]的行数均示意为3,即,n=m=3;连接成的数据表分片中包括两个有效行。
[0046]
以上对主键连接算子的基本概念进行介绍。对于已有的实现主键连接算子的安全协议,发明人观察发现,当秘密分享的数据表没有预先排序时,在协议执行中需要对不经意排序算子进行完整调用,而造成大量的通信计算开销,具体,对于n行的表分片[t]进行不经意排序的通信计算开销为o(n log
2 n)。进一步,发明人分析发现,调用不经意算子的真实作用是将表分片[t]中拥有相同主键的各行放置于相邻位置,以便后续操作,而不是真的需要按照主键明文的字母序排列。
[0047]
由此,发明人提出一种方案,先安全、低开销地将未排序的秘密分享数据表[l]和[r]分别按照同一规则进行排序,再进行其他处理,从而完成主键连接。对此,可参见图2,其示出本说明书实施例披露的主键连接协议的执行数据流。
[0048]
具体地,在本方案中,利用伪随机函数(pseudorandom function,简称prf),将对秘密分享表分片的排序转换为对伪随机数值的排序,再结合高效的置换协议完成对表分片[l]和[r]的排序,如此,可以避免后续使用不经意排序的完整算子而产生的大量开销。
[0049]
下面结合具体的实施例,对上述方案的实现步骤进行描述。
[0050]
图3示出本说明书实施例披露的数据处理方法流程示意图,该方法涉及参与计算的多个计算方(computing parties),多个计算方(以下或简称多方)基于从多个数据方(data owners)接收的多个数据表分片执行主键连接协议。需理解,主键连接操作的最小数据表数量为2,为清楚描述,以下主要以两张数据表为例对主键连接协议的执行进行说明,对于更多数量的情况可以依此类推。
[0051]
任意的数据方或计算方均可以实现为具有存储、计算能力的装置、平台或设备集群等;并且,任意的一个数据方还可以同时作为多个计算方之一。示例性地,多个数据方为两个数据方,该两个数据方还作为两个计算方,提供安全计算服务的平台作为另一个计算方,此时,上述方法涉及两个数据方和三个计算方。另一方面,多个计算方中任意数量的计算方可以基于云端实现。在一种实施情况中,多个计算方中的某个计算方实现为云端。在另一实施情况中,多个计算方实现为云端中的多个计算节点,比如,具体可以实现为云资源池中的多台计算设备(如多个服务器或多个服务器集群)。
[0052]
图3中示出的方法可以应用于上述多个计算方中的任意一个计算方(以下或简称目标方)。如图3所示,所述方法包括以下步骤:
[0053]
步骤s310,获取与两个数据表对应的两个表分片,所述两个数据表中任意的目标表对应的目标表分片是该目标表的多个秘密分享分片之一。步骤s320,针对所述目标表分片,确定其对应的排序后表分片,具体包括步骤s321,基于目标表分片包含的主键列子分片以及对应生成的密钥分片,确定伪随机数组分片,用于恢复伪随机数组;步骤s322,获取置换向量,其基于排序前后的伪随机数组而确定;步骤s323,利用所述置换向量对该目标表分片进行置换处理,得到对应的排序后表分片。步骤s330,基于与所述两个表分片对应的两个
排序后表分片,确定连接表分片,其为所述两个数据表所对应主键连接表的多个秘密分享分片之一。
[0054]
对以上步骤的展开介绍如下:
[0055]
步骤s310,获取与两个数据表对应的两个表分片。
[0056]
上述两个数据表各自包括多个业务对象的部分属性,由两个数据方对应持有。在一个实施例中,其中多个业务对象属于以下中的一类或多类:用户、商品、事件、终端设备等。在一个具体的实施例中,事件可以是登录事件、访问事件、投诉事件等。在一个具体的实施例中,终端设备可以是用户终端(如智能手机、可穿戴设备)或物联网终端(如自助收银台)等。
[0057]
每个数据表中都包括主键和主键以外的其他属性,两个数据表中主键对应的字段名(或称属性名)是相同的,例如,均为业务对象id。可以理解,两个数据表的区别主要在于其他属性。在一个实施例中,两个数据方分别为支付平台和电商平台,上述多个业务对象为多个用户,此时,支付平台采集的支付时刻、支付金额等支付数据形成用户的支付属性,电商平台采集的订单商品名称、订单商品金额等购物记录形成用户的购物属性。
[0058]
对于目标方和两个数据方之间的关系,在一种可能的情况中,目标方集成于其中某个数据方;在另一个可能的情况中,目标方独立于两个数据方之外。
[0059]
另一方面,上述两个数据表中任意一个数据表(以下或简称目标表)对应的目标表分片,是目标数据方对该目标表进行秘密分享处理而得到的多个表分片之一。
[0060]
为方便理解,对秘密分享技术进行简单介绍。(n,t)-秘密分享方案包括如下两个算法:(1)分享算法ss,以明文消息x为输入,输出n个分享值[x]=([x]1,[x]2,

,[x]n);(2)恢复算法rec,以t个分享值为输入,恢复消息x。(n,t)-秘密分享方案需要满足正确性和安全性。正确性是指任意t个分享值均可以恢复出消息x;安全性是指任意t-1个分享值都不会泄漏关于消息x的任何信息。
[0061]
在本步骤中,目标表对应上述明文消息x,多个计算方的总个数对应分享值的数量n,目标表的秘密分享分片对应上述分享值。在一个典型示例中,(n,t)-秘密分享方案可以实例化为(3,2)-重复分享(replicated sharing)方案,其实现方式如下:(1)ss(x),随机生成(x1,x2,x3)使得x1 x2 x3=x,输出[x]1=(x1,x2),[x]2=(x2,x3)和[x]3=(x3,x1);(2)rec([x]i,[x]j),输出x=x1 x2 x3。(3,2)-重复分享方案支持非常高效的乘法运算,被多种高效的安全三方计算协议采用。
[0062]
为直观描述,以下将获取的两个表分片记作[l]和[r],并且,将目标表分片记作[q],可以理解,q=l或r。
[0063]
由上,目标方可以从两个数据方分别获取到两个表分片[l]和[r]。然后,在步骤s320,针对其中任意的目标表分片[q],确定其对应的排序后表分片[q

]。具体包括执行子步骤s321、s322和s323。
[0064]
下面结合图4,对本步骤中各子步骤的实施进行介绍。图4示出本说明书实施例披露的数据处理实施架构示意图,为直观示意,其中以[l]和[r]的行数均为3的情况为例,并对主键和其他属性赋予了具体的值,例如,图4中示出表分片[l]中主键列k
l
首行的分片值为[f]。
[0065]
在步骤s321,基于目标表分片[q]包含的主键列子分片[kq],以及对应生成的密钥
分片[k],确定伪随机数组分片[sq],用于恢复伪随机数组sq。
[0066]
在一个实施例中,在本步骤之前,所述方法还包括:目标方通过与多方中的其他方共同执行密钥分片生成协议,得到上述密钥分片[k],其为随机密钥k的多个秘密分享分片之一。需说明,密钥分片生成协议是指用于生成随机密钥的分片的mpc协议,mpc允许一个群组在不披露任一参与方私有输入的条件下实现联合计算,参与方约定一个待计算的函数,随后应用mpc协议,将每个人的秘密输入协议中,联合计算得到函数的输出,同时不泄漏私有输入。对于密钥分片生成协议的构造,可以采用已有技术实现,不作赘述。具体,目标方可以调用实现算子f
keygen
的协议,得到随机密钥k的秘密分享[k]。
[0067]
需说明,目标表中包括主键列和其他属性列,相应,目标表分片[t]中包括主键列子分片[kq]和其他属性列子分片。示例性地,图4中示出主键列子分片[k
l
]=([f],[e],[a]),以及[kr]=([b],[a],[f])。
[0068]
伪随机数分片的生成算子f
prf
([k],[x]),其输出为([prf(k,x1)],

,[prf(k,xn)]),相应,在本步骤中,调用实现算子f
prf
的协议,以密钥分片[k]和主键列子分片[kq]为输入,计算出形成伪随机数组分片[sq],其中l等于[kq]的行数。在具体的实现中,prf可以使用分组密码实现,比如lowmc。针对分组密码的实现方式,算子f
prf
可以使用针对布尔电路的mpc协议实现,比如姚氏乱码电路协议或gmw协议。
[0069]
在本步骤中,基于主键列子分片[kq]和密钥分片[k],确定伪随机数组分片[sq]。
[0070]
示例性地,如图4所示,在步骤s41,应用不经意伪随机函数算子f
prf
,将表分片[l]和[r]中的属性[k
l
]和[kr]作为输入,计算出对应的伪随机函数输出,作为新的属性[s
l
]和[sr],也即,f
prf
([k],[k
l
])

[s
l
]以及f
prf
([k],[kr])

[sr]。
[0071]
由上,可以得到目标表分片[q]对应的伪随机数组分片[sq]。
[0072]
然后,在步骤s322,获取置换向量πq,其基于排序前后的伪随机数组sq而确定。
[0073]
需要说明的是,目标表q具有指定处理方,可以理解,指定处理方为上述多方之一。
[0074]
在一个实施例中,本步骤可以包括:在目标方为指定处理方的情况下,先基于其生成的伪随机数组分片[sq],以及从其他方接收的针对目标表q的其他伪随机数组分片,恢复伪随机数组sq;再对恢复出的伪随机数组sq进行排序,并基于排序前后的伪随机数组位置映射关系,确定置换向量πq。在一个具体的实施例中,假定伪随机数组分片[sq]对应(3,2)-重复分享方案,此时,目标方可以基于其生成的伪随机数组分片和从其他任一方接收的对应目标表的其他伪随机数组分片,恢复出随机数组明文sq。在一个具体的实施例中,对恢复出的伪随机数组sq进行符合预设规则(如按字母升序或降序)的排序。
[0075]
在一个具体的实施例中,根据排序前的伪随机数组sq中的各个随机数,在排序后的伪随机数组sq′
中的位置,确定置换向量π
t
。需说明,阶为m的置换(permutation)是定义域和值域均为{1,

,m}的一一映射;置换π可以由m维数组(π(1),

,π(m))刻画,将该置换π作用到m维序列x=(x1,

,xm),得到新序列π
·
x=x

=(x1′
,

,xm′
),那么对于任意的i∈{1,

,m},都成立x
′j=x
π(j)
。示例性地,如图4所示,在步骤s42中,排序前的伪随机数组依次包括cs、xs、ns,其中cs在伪随机数组排序后仍排在第1,xs排到了第3,ns排到了第2,由此可以得到置换向量(1,3,2)。
[0076]
另外,考虑到伪随机数组对应主键列,且主键列中各个主键值互不相同,相应,伪随机数组中的伪随机数也应该互不相同。由此,为防止其他方作恶,可以在确定置换向量πqcompare-shuffle,简称scs)协议,在执行此协议的过程中,将原本调用不经意排序算子时包括的先按照主键k进行排序,替换为,按照数据表各行对应的伪随机数s进行排序。于是,通过执行scs协议,调用实现不经意排序的部分算子而非完整算子,可以低通信、低计算开销地得到连接表分片[j]。需说明,其中scs协议由huang等人在论文private set intersection:are garbled circuits better than custom protocols中提出。
[0087]
为便于理解,下面对基于两个排序后表分片[l

]和[r

]确定连接表分片[j]的完整过程进行示例性说明。
[0088]
(1)在表分片[l

]和[r

]中均增加一项属性[s],对应上述伪随机数分片。
[0089]
(2)在表分片[l

]和[r

]中再增加一项属性[gb]。表分片[r

]中各行的该属性值为1,表分片[l

]中各行的该属性值为0。
[0090]
(3)将表分片[l

]和[r

]纵向拼接为表分片[t];再应用不经意排序算子对表分片[t]进行排序:实现先按照属性s的降序排列表,然后按照属性gb的升序排列。
[0091]
(4)按照如下方式为每一行[ti]添加属性fb:
[0092]
[ti[fb]]=[ti[gb]]

([t
i-1
[s]]=

[ti[s]])
[0093]
其中,ti[fb]、ti[gb]和ti[s]表示ti行中的属性值fb、gb和s,t
i-1
[s]表示t
i-1
行中的属性值s;

表示逻辑与运算,=?判断左右的值是否相等,若相等则运算结果取1,否则取0。
[0094]
(5)按照如下方式为每行[t]添加属性d


[0095]
[ti[d

]]=[ti[fb]]
·
[t
i-1
[d]]
[0096]
(6)将表[t]各行顺序置乱:
[0097]
先调用算子f
rand
,得到一个随机置换π的秘密分享《π》。在f
rand
协议执行中,可以从阶为m(取值为表[t]的行数)的全体置换中,随机选取置换叠加运算后的运算结果等于随机置换π的多个置换,作为多个叠加置换向量,进而从该多个叠加置换向量中多次选取部分向量进行组合,得到随机置换分片《π》。需说明,置换叠加运算的定义和性质包括:阶为m的全体置换构成非交换群,其存在二元运算

,其中任意两个置换π和σ的运算结果π

σ=(π(σ(1)),

,π(σ(m))),并且,任意的置换π都有逆置换π-1
,使得π

π-1
=(1,

,m)。
[0098]
示例性地,假定计算方的个数为3,相应,在f
rand
协议的执行中,可以随机选取三个置换π1、π2和π3,使得π1◇
π2◇
π3=π,进而得到3个随机置换分片(π1,π2),(π2,π3),(π3,π1),由此,目标方可以得到这3个分片之一。
[0099]
然后,应用算子f
shuffle
(《π》,[t]),将表[t]按照随机置换《π》进行置换,得到[π
·
t],作为连接表分片[j],从而完成置乱。
[0100]
由上,可以确定出与两个数据表分片[l]和[r]对应的连接表分片[j]。
[0101]
根据另一方面的实施例,考虑到在数据库查询场景下,上述多个计算方可以预先获取两个数据表的表分片,之后,多个计算方再根据客户端发送的查询请求所对应的算子,基于表分片调用与该算子对应的mpc协议进行计算,进而使得客户端从多个计算方获取多个查询结果分片后,恢复查询结果。
[0102]
由此,在一个实施例中,在上述步骤s320之前,所述方法还包括:获取根据客户端发起的查询请求而解析出的算子;相应,步骤s320可以包括:在解析出的算子包括主键连接算子的情况下,确定与目标表分片[q]对应的排序后表分片[q

];在步骤s330之后,所述方
法还包括:根据所述连接表分片[j],确定查询结果分片;将该查询结果分片发送给客户端,以使客户端基于该查询结果分片和从其他方接收的其他查询结果分片,恢复查询结果。
[0103]
综上,采用本说明书实施例披露的数据处理方法,通过安全地将未排序的秘密分享的表分片按照同种规则进行排序,可以避免后续调用不经意排序的完整算子而产生高通信消耗,从而有效降低通信量和计算量。
[0104]
具体而言,在本方案中,(1)将需要排序的主键值[k
l
]和[kr]转换为对应的伪随机函数值[s
l
]和[sr];(2)由两个参与方p1和p2对明文属性s
l
和sr进行排序,根据排序结果定义置换π
l
和πr;(3)再应用置换协议使得表[l]和[r]完成根据[s
l
]和[sr]的排序。其中步骤(1)的计算和通信开销为o(n);步骤(2)由p1和p2本地完成,不存在通信开销,同时由于仅需要对明文进行操作,计算开销也较低;步骤(3)的通信和计算开销为o(n)。最后,使用针对已经排序好的[l]和[r]的主键连接协议,产生o(n log n)的通信和计算开销。由此,本方案实现针对未排序的[l]和[r],仅需o(n log n)的通信和计算开销。此外,上述实现恶意安全性的两个额外校验操作也仅带来了o(n)的开销。
[0105]
在安全性方面,本方案在多数诚实且半可信模型下可证明安全,即可以抵抗控制一个参与方且遵循协议描述的攻击者。若本方案所调用的实现各个算子的协议都具备多数诚实且恶意模型下的安全性,本方案在增加上述两个额外校验操作后也具备该模型下的可证明安全性。
[0106]
下面结合电商场景,对本方案的应用进行介绍。图5示出本说明书实施例披露的数据处理在电商场景下的应用架构图。在该应用架构中,涉及包括商家、品牌商和电商平台在内的多个数据方,各自持有多个用户和/或多个商品的部分属性。示例性地,商家数据表中包括商家客服记录、商品采购价、用户id等,品牌商的数据表中包括商品成本、商品产地、商家id、批发量、用户id等,电商平台的数据表中包括用户id、用户性别、年龄、邮寄地址、浏览记录、商品类目、订单号等。各个数据方均以用户id作为数据表主键。另外,该场景中的任一数据方可以同时作为多个计算方之一。
[0107]
如图5所示,每个计算方pi从多个数据方分别接收对应的表分片;之后,基于从其中两个数据方(如商家和品牌商)接收的两个表分片,与其他所有计算方共同执行主键连接协议,得到连接表分片。协议执行过程包括:针对两个表分片中的每个表分片,基于其包含的主键列子分片以及对应生成的密钥分片,确定伪随机数组分片,用于恢复伪随机数组;接着,获取置换向量,其基于排序前后的伪随机数组而确定;利用置换向量对该表分片进行置换处理,得到对应的排序后表分片;从而,基于与两个表分片对应的两个排序后表分片,确定连接表分片,其为两个数据表所对应主键连接表的多个秘密分享分片之一。
[0108]
进一步,在上述多个数据方的数量大于2的情况下,计算方pi在得到上述连接表分片之后,再基于此连接表分片与从某个其他数据方(如电商平台)接收的表分片,与其他所有计算方共同执行主键连接协议,得到另一连接表分片,依次类推,直到完成对所有表分片的主键连接。进而,计算方pi可以基于最后一次执行主键连接协议得到的连接表分片进行后续的分析处理,例如,计算针对主键连接总表的查询结果分片等。
[0109]
由上,可以在电商场景下,实现商家、品牌商和电商平台等数据方的多方安全计算,从而实现对各方持有的用户、商品等数据的隐私保护。
[0110]
与上述主键连接方法相对应地,本说明书实施例还披露主键连接装置。图6示出本
说明书实施例披露的数据处理装置结构示意图,所述装置600集成于所述多方中任意的目标方,所述装置600包括:
[0111]
表分片获取单元610,配置为获取与两个数据表对应的两个表分片,所述两个数据表中任意的目标表对应的目标表分片是该目标表的多个秘密分享分片之一;随机数分片确定单元620,配置为针对所述目标表分片,基于其包含的主键列子分片以及对应生成的密钥分片,确定伪随机数组分片,用于恢复伪随机数组;置换处理单元630,配置为对该目标表分片进行基于所述伪随机数组实现的置换处理,得到对应的排序后表分片;连接表分片确定单元640,配置为基于与所述两个表分片对应的两个排序后表分片确定连接表分片,其为所述两个数据表所对应主键连接表的多个秘密分享分片之一。
[0112]
在一个实施例中,表分片获取单元610具体配置为:从所述目标方之外的两个数据方分别获取所述两个表分片,所述两个数据方各自持有多个业务对象的部分属性,形成所述两个数据表。
[0113]
在一个实施例中,所述装置600还包括密钥分片生成单元650,配置为通过与所述多方中的其他方共同执行密钥分片生成协议,得到所述密钥分片。
[0114]
在一个实施例中,所述装置600还包括置换向量获取单元660,配置为获取置换向量,其基于排序前后的伪随机数组而确定;所述置换处理单元630具体配置为利用所述置换向量对所述目标表分片进行所述置换处理。
[0115]
在一个具体的实施例中,所述目标表具有指定处理方;其中,置换向量获取单元660具体配置为:在所述目标方为所述指定处理方的情况下,基于生成的伪随机数组分片,以及从其他方接收的其他伪随机数组分片,恢复所述伪随机数组;对所述伪随机数组进行排序,并基于排序前后的伪随机数组位置映射关系,确定所述置换向量。
[0116]
在一个更具体的实施例中,置换向量获取单元660进一步配置为:判断所述伪随机数组中任意的两个伪随机数是否均不相同;在判断出是的情况下,确定所述置换向量。
[0117]
另一方面,在一个更具体的实施例中,置换向量获取单元660具体配置为:在所述目标方不为所述指定处理方的情况下,将生成的伪随机数组分片发送给所述指定处理方,使其恢复伪随机数组,并基于排序前后的伪随机数组位置映射关系,确定所述置换向量;从所述指定处理方接收所述置换向量。
[0118]
在一个更具体的实施例中,所述两个数据表具有不同的指定处理方。
[0119]
在一个实施例中,所述装置还包括校验单元670,配置为基于两个排序后的伪随机数组分片以及所述两个排序后表分片,与其他方共同执行针对表分片排序的校验协议;其中,连接表分片确定单元具体配置为:在所述校验协议的输出结果指示校验通过的情况下,确定所述连接表分片。
[0120]
在一个实施例中,连接表分片确定单元640具体配置为:基于所述两个排序后表分片进行纵向拼接,得到拼接表分片;根据所述拼接表分片中各行所对应的伪随机数分片,对该拼接表分片进行不经意排序,所述伪随机数分片属于两个伪随机数组分片的并集;基于所述不经意排序的结果,确定所述连接表分片。
[0121]
在一个实施例中,所述装置还包括算子获取单元680,配置为获取根据客户端发起的查询请求而解析出的算子;其中,随机数分片确定单元具体配置为:在所述算子中包括主键连接算子的情况下,确定所述伪随机数组分片;所述装置还包括查询处理确定单元690,
配置为根据所述连接表分片,确定查询结果分片;将所述查询结果分片发送给客户端,以使所述客户端基于所述查询结果分片和其他查询结果分片,恢复查询结果。
[0122]
综上,采用本说明书实施例披露的数据处理装置,通过安全地将未排序的秘密分享的表分片按照同种规则进行排序,可以避免后续调用不经意排序的完整算子而产生高通信消耗,从而有效降低通信量和计算量。
[0123]
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图3所描述的方法。
[0124]
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图3所描述的方法。
[0125]
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
[0126]
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
再多了解一些

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

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

相关文献