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

不经意分散排列方法及装置与流程

2022-06-05 02:36:36 来源:中国专利 TAG:


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


背景技术:

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


技术实现要素:

6.本说明书一个或多个实施例描述了一种不经意分散排列方法及装置,通过将不经意分散排列问题低开销地转换为不经意置换问题,然后利用后者的高效实现协议解决该问题,从而有效降低通信轮次和通信数据量。
7.根据第一方面,提供一种不经意分散排列方法,该方法涉及多个数据方和多个计算方,所述多个数据方各自持有多个业务对象的部分属性,形成多个数据表;所述方法应用于任意的第一计算方,包括:从所述多个数据方中任意的第一数据方获取第一表分片,其为所述第一数据方对应的第一数据表的多个秘密分享分片之一;基于所述第一表分片,确定第一位置分片,其为第一位置向量的多个秘密分享分片之一,所述第一位置向量指示所述第一数据表中的t行数据在m行数据总表中的分散排列位置,所述数据总表对应基于所述多个数据表形成的数据连接表;将所述第一表分片从t维扩充为m维,得到第一扩充表分片;将所述第一位置分片从t维扩充为m维,得到第一扩充位置分片;基于所述第一扩充表分片和第一扩充位置分片,执行不经意置换协议,得到第一置换结果分片,作为针对所述第一数据
表的第一排列结果分片。
8.在一个实施例中,所述多个业务对象属于以下中的一类或多类:用户、商品、事件。
9.在一个实施例中,基于所述第一表分片,确定第一位置分片,包括:基于所述第一表分片,与其他计算方共同执行位置分片生成协议,得到所述第一位置分片。
10.在一个实施例中,将所述第一表分片从t维扩充为m维,得到第一扩充表分片,包括:基于所述第一表分片续接m-t行表数据的第一秘密分享分片,得到该第一扩充表分片。
11.在一个实施例中,所述第一扩充位置分片基于所述第一位置分片续接m-t个数值的第一秘密分享分片而得到,并且,所述m-t个数值中的各个数值与所述第一位置向量中的各个向量元素均不相同。
12.在一个实施例中,将所述第一位置分片从t维扩充为m维,得到第一扩充位置分片,包括:获取第一置换分片;所述第一置换分片由m个秘密分享分片组成,其中第i个秘密分享分片为m维随机置换向量中第i维向量元素的多个秘密分享分片之一;基于第一位置分片将所述第一置换分片转换为所述第一扩充位置分片。
13.在一个具体的实施例中,获取第一置换分片,包括:获取第一序列分片,其为m维序列向量的多个秘密分享分片之一,所述m维序列向量的第i维元素的取值为i;通过与其他计算方共同执行随机置换分片生成协议,得到第一随机置换分片,所述第一随机置换分片基于所述m维随机置换向量对应的多个叠加置换向量而生成;基于所述第一随机置换分片和第一序列分片执行乱序协议,得到所述第一置换分片。
14.在一个更具体的实施例中,上述获取第一序列分片,包括:在所述第一计算方为指定计算方的情况下,生成所述m维序列向量的多个秘密分享分片,并将其中之一作为所述第一序列分片;或,在所述第一计算方不是指定计算方的情况下,从该指定计算方接收所述第一序列分片。
15.另一方面,在一个具体的实施例中,基于第一位置分片将所述第一置换分片转换为所述第一扩充位置分片,包括:通过与其他计算方共同执行密钥分片生成协议,得到第一密钥分片,其为随机密钥的多个秘密分享分片之一;基于所述第一密钥分片和第一置换分片,确定m个第一伪随机数分片,用于恢复出m个随机数;基于所述第一密钥分片和第一位置分片,确定t个第一伪随机数分片,用于恢复出t个随机数;获取基于m个随机数和t个随机数的比对结果得到的m维构建置换向量;基于所述构建置换向量和第一置换分片执行乱序协议,得到所述第一扩充位置分片。
16.在一个更具体的实施例中,获取基于m个随机数和t个随机数的比对结果得到的m维构建置换向量,包括:在所述第一计算方为指定计算方的情况下,从其他计算方接收针对所述m个随机数的伪随机数分片,并结合所述m个第一伪随机数分片,恢复出所述m个随机数;以及,从其他计算方接收针对所述t个随机数的伪随机数分片,并结合所述t个第一伪随机数分片,恢复出所述t个随机数;通过比对所述m个随机数和t个随机数,确定所述构建置换向量;或,在所述第一计算方不是指定计算方的情况下,将所述m个第一伪随机数分片和t个第一伪随机数分片发送给所述指定计算方,并从所述指定计算方接收所述构建置换向量。
17.进一步,在一个示例中,通过比对所述m个随机数和t个随机数,确定所述构建置换向量,包括:针对所述t个随机数中任意的第i个随机数,确定所述m个随机数中与之相等的
第j个随机数;建立t 1至m,与所述m个随机数中剩余随机数序号之间的映射关系,从而结合从i到j的映射关系,确定所述构建置换向量。
18.在一个实施例中,上述执行不经意置换协议,包括:对所述第一扩充位置分片进行校验;在所述第一扩充位置分片通过校验的情况下,执行所述不经意置换协议。
19.在一个具体的实施例中,对所述第一扩充位置分片进行校验,包括:与其他计算方执行随机数生成协议,生成t个校验随机数;基于所述t个校验随机数、第一扩充位置分片和第一位置分片,与其他计算方共同执行校验协议,得到校验结果。
20.在一个实施例中,在基于所述第一表分片,确定第一位置分片之前,所述方法还包括:获取根据客户端发起的查询请求而解析出的算子;其中,基于所述第一表分片,确定第一位置分片,包括:在所述算子中包括数据表连接算子的情况下,确定所述第一位置分片;其中,在得到所述第一排列结果分片之后,所述方法还包括:基于所述第一排列结果分片和针对其他数据表的其他排列结果分片,确定所述数据总表的第一总表分片;基于所述第一总表分片,确定第一查询结果分片;将所述第一查询结果分片发送给客户端,以使所述客户端基于所述第一查询结果分片和其他查询结果分片,恢复查询结果。
21.根据第二方面,提高一种不经意分散排列装置,所述不经意分散排列涉及多个数据方和多个计算方,所述多个数据方各自持有多个业务对象的部分属性,形成多个数据表;所述装置集成于任意的第一计算方,包括:表分片获取单元,配置为从所述多个数据方中任意的第一数据方获取第一表分片,其为所述第一数据方对应的第一数据表的多个秘密分享分片之一;位置分片确定单元,配置为基于所述第一表分片,确定第一位置分片,其为第一位置向量的多个秘密分享分片之一,所述第一位置向量指示所述第一数据表中的t行数据在m行数据总表中的分散排列位置,所述数据总表对应基于所述多个数据表形成的数据连接表;表分片扩充单元,配置为将所述第一表分片从t维扩充为m维,得到第一扩充表分片;位置分片扩充单元,配置为将所述第一位置分片从t维扩充为m维,得到第一扩充位置分片;不经意置换单元,配置为基于所述第一扩充表分片和第一扩充位置分片,执行不经意置换协议,得到第一置换结果分片,作为针对所述第一数据表的第一排列结果分片。
22.根据第三方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面的方法。
23.根据第四方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,该处理器执行所述可执行代码时,实现第一方面的方法。
24.采用本说明书实施例披露的上述方法和装置,相较直接使用通用的安全多方计算协议来实现不经意分散排列算子需要o(m log m)的通信量以及o(log m)的通信轮数,本协议只需o(m)的通信量和o(1)的通信轮数,显著降低了通信开销。当应用krastnikov等人的不经意连接算法来实现(3,2)-重复分享数据表的相等连接操作时,本协议可以直接替代其中实现不经意分散排列算子的部分,从而得到通信轮数更优的相等连接算子实现协议。此外,在安全性方面,本方案在多数诚实且半可信模型下可证明安全,即,可以抵抗控制一个计算方遵循协议描述的攻击者。若本方案所调用的实现各个算子的协议都具备多数诚实且恶意模型下的安全性,本方案在进一步增加校验算子后也具备该模型下的可证明安全性。
附图说明
25.为了更清楚地说明本发明实施例的技术方案,下面对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
26.图1示出根据一个实施例的不经意分散排列的实施框架示意图;
27.图2示出根据一个实施例的不经意分散排列的方法流程示意图;
28.图3示出根据一个实施例的不经意分散排列的实施架构示意图;
29.图4示出根据一个实施例的不经意分散排列的装置结构示意图。
具体实施方式
30.下面结合附图,对本说明书提供的方案进行描述。
31.承前所述,mpc技术是在保护数据隐私安全的前提下完成联合分析的有效解法。mpc的一般执行过程包括以下三个步骤:1)各个数据方通过秘密分享(secret sharing)方案将自己的数据分享到所有的计算方,为直观描述,将所有数据方的全体数据记为x;2)各个计算方之间根据需要计算的函数f执行特定的协议,将原始数据x的秘密分享值(以下或称作分享值、秘密分享分片、分片等)转换为计算结果f(x)的秘密分享值;3)根据需要可以从秘密分享值中恢复出f(x),也可以在f(x)的秘密分享值基础上进行后续计算。
32.在数据方持有的数据为数据表(如数据库中的表或excel表格等)的情况下,上述函数f涉及的一个或多个算子中往往包括不经意分散排列算子。典型地,在处理用户针对全体数据x的查询请求的场景下,需要计算的函数f经常涉及对各个数据方持有的数据表的连接操作(join),而不经意分散排列算子则是实现该连接操作的重要组件。
33.然而,目前已有的不经意分散排列算法需要较大的通信量和通信轮次开销。另外,发明人发现,目前已涌现出高效的不经意置换协议,其通信开销较小;简单来说,置换通常作用在数据序列上,作用效果是数据序列被按照该置换指示的位置映射关系重新排列,形成打乱后的数据序列,进一步,不经意置换是指参与置换计算的各方无法获知原序列中各元素在新序列中对应被置换的位置。
34.基于此,本技术发明人提出一种新的不经意分散排列方案,在此方案中,先将不经意分散排列问题转换为不经意置换问题,再通过执行高效的不经意置换协议,实现不经意分散,从而显著降低不经意分散排列的通信开销。
35.为便于直观理解,图1示出根据一个实施例的不经意分散排列的实施框架示意图。如图1所示,任意的计算方ci从n个数据方对应接收n个数据表分片,再分别对其中的各个数据表分片[x]
j_i
(或简记作[x])进行不经意分散排列,数据表分片[x]包括其中各行数据分片[x
p
],图1示意p∈[1,6]。具体,不经意分散排列算子的输入还包括指示数据表分片[x]中各行数据分片[x
p
]的重排位置的位置向量分片[o],以及针对n个数据表的连接表预估的行数m(图1中以m=9为例进行示意),通过执行不经意分散排列算子f
od
([x],m,[o]),可以得到连接表分片[x

]。在本说明书实施例中,先将数据表分片[x]和位置向量分片[o]各自扩充为m维,再基于扩充后的两个m维分片执行不经意置换算子得到连接表分片[x

]。如此,可以实现低通信开销的不经意分散排列。
[0036]
下面,结合具体的实施例,描述上述方案的实施步骤。
[0037]
图2示出根据一个实施例的不经意分散排列的方法流程示意图,所述方法涉及多个数据方和多个计算方,其中多个数据方各自持有多个业务对象的部分属性,形成对应的数据表,从而,多个数据方形成多个数据表。
[0038]
需理解,任意的数据方或计算方均可以实现为具有存储、计算能力的装置、平台或设备集群等;并且,任意的一个数据方还可以同时作为多个计算方之一,示例性地,多个数据方为两个数据方,该两个数据方还作为两个计算方,提供安全计算服务的平台作为另一个计算方,此时,上述方法涉及两个数据方和三个计算方。
[0039]
对于上述多个业务对象,其可以属于以下中的一类或多类:用户、商品、事件、终端设备等;其中事件可以是登录事件、访问事件、投诉事件等,终端设备可以是用户终端或物联网终端等。数据方持有的业务对象属性与其针对业务对象的数据采集渠道相适应。在一个示例中,上述多个数据方包括支付平台、电商平台和银行,上述多个业务对象为多个用户,此时,支付平台可以包括多个用户的注册信息和支付数据(如支付时刻、支付金额等),电商平台可以包括该多个用户的注册信息和购物记录(如商品名称),银行可以包括该多个用户的开户信息和信贷数据;进一步,这三方每方持有的属性数据形成一张数据表,共形成三张数据表。
[0040]
图2中示出的方法可以应用于多个计算方中的任意一个计算方(以下简称第一计算方)。如图2所示,所述方法包括以下步骤:
[0041]
步骤s210,从所述多个数据方中任意的第一数据方获取第一表分片,其为所述第一数据方对应的第一数据表的多个秘密分享分片之一;步骤s220,基于所述第一表分片,确定第一位置分片,其为第一位置向量的多个秘密分享分片之一;所述第一位置向量指示所述第一数据表中的t行数据在m行数据总表中的分散排列位置,所述数据总表对应基于所述多个数据表形成的数据连接表;步骤s230,将所述第一表分片从t维扩充为m维,得到第一扩充表分片;步骤s240,将所述第一位置分片从t维扩充为m维,得到第一扩充位置分片;步骤s250,基于所述第一扩充表分片和第一扩充位置分片,执行不经意置换协议,得到第一置换结果分片,作为针对所述第一数据表的第一排列结果分片。
[0042]
针对以上步骤的展开介绍如下:
[0043]
步骤s210,从多个数据方中任意的第一数据方获取第一表分片,该第一表分片是第一数据方对其第一数据表进行秘密分享处理而得到的多个表分片之一。
[0044]
为方便理解,对秘密分享技术进行简单介绍。(n,k)-秘密分享方案包括如下两个算法:(1)分享算法ss,以明文消息x为输入,输出n个分享值[x]=([x]1,[x]2,

,[x]n);(2)恢复算法rec,以k个分享值为输入,恢复消息x。(n,k)-秘密分享方案需要满足正确性和安全性。正确性是指任意t个分享值均可以恢复出消息x;安全性是指任意k-1个分享值都不会泄漏关于消息x的任何信息。
[0045]
基于此,在本步骤中,第一数据表对应上述明文消息x,n对应多个计算方的总个数,分享值对应第一数据表的秘密分享分片。在一个典型示例中,第一表分片涉及的秘密分享方案是(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)-重复分享方案支持非常高效的乘法运算,被多种高效
的安全三方计算协议采用。
[0046]
另外为直观说明,将本步骤中获取的第一表分片记作[x],[x]=([x1],

,[x
t
]),其中每个x
t
表示第一数据表中的第i行,共t行。
[0047]
如此,第一计算方可以从第一数据方获取到第一表分片[x]。接着,在步骤s220,基于第一表分片[x],确定第一位置分片[o]。
[0048]
上述第一位置分片[o]为第一位置向量o的多个秘密分享分片之一,第一位置向量o指示第一数据表中的t行数据在m行数据总表中的分散排列位置,所述数据总表对应基于多个数据方的多个数据表形成的数据连接表。
[0049]
为方便理解,先对数据表的相等连接(equal join)进行简要介绍。数据表的相等连接是联合数据分析的一个重要算子,根据指定的连接属性,相等连接算子将两张数据表该属性共有键所在行连接在一起形成一张新的表。具体的,假设两张表t1和t2均由多个形如(ji,di)的行组成,其中j为连接属性,d为(一个或多个)数据属性。那么t1和t2根据该连接属性进行相等连接得到的表为{(ji,d
i1
,d
i2
)|(ji,d
i1
)∈t1,(ji,d
i2
)∈t2}。对于两张表内各行j值均不相等的特殊情况,相等连接算子可以通过基于电路的隐私集合求交实现(circuit-based psi)。但是,实际业务往往面临更一般的情况。例如,对于购买记录构成的数据表,同一用户身份非常有可能多次出现,此时circuit-based psi不再适用。
[0050]
不经意分散排列是实现相等连接的重要算子,本说明书实施例披露的方案同时适用于需要连接的表内各行j值均不相等和存在相等的情况,尤其适用于后者,也就是实际业务中面临的更一般的情况。
[0051]
进一步,本步骤的实施可以包括:基于从多个数据方获取的包含所述第一表分片[x]在内的多个表分片,与其他的n-1个计算方共同执行位置分片生成协议,得到对应多个数据表的多个位置分片,其中包括第一位置分片[o]。
[0052]
需说明,位置分片生成协议是指用于生成位置分片的mpc协议,mpc允许一个群组在不披露任一参与方私有输入的条件下实现联合计算,参与方约定一个待计算的函数,随后应用mpc协议,将每个人的秘密输入协议中,联合计算得到函数的输出,同时不泄漏私有输入。对于位置分片生成协议的构造,可以采用已有技术实现,不作赘述。
[0053]
第一位置分片[o]=([o1],

,[o]
t
),其中任意两个oi和oj不相等,且任意oi为m个数值中的一个,并且,此m个数值对应数据总表中的m行位置,即oi∈{1,

,m};另一方面,m的取值可以由位置分片生成协议在执行过程中确定,例如,m的取值确定为上述多个表分片对应的多个分片维数的乘积。在另一个实施例中,m的取值可以由指定计算方(如第一计算方或其他某个计算方)输入位置分片生成协议。
[0054]
如此,可以确定与第一表分片[x]对应的第一位置分片[o]。并且,在执行上述步骤s220之前、同时或之后,可以执行步骤s230,将第一表分片[x]从t维扩充为m维,得到第一扩充表分片
[0055]
具体,基于第一表分片[x]续接m-t行表数据的第一秘密分享分片,得到该第一扩充表分片。需理解,此第一秘密分享分片仅用于占位。在一个实施例中,第一实施例可以填充全零的秘密分享。在另一个实施例中,在第一计算方是指定计算方的情况下,其随机生成m-t行表数据后,对其进行秘密分享生成n个秘密分享分片,并将其中之一作为第一秘密分享分片,以及将其他n-1个对应发送给其他n-1个计算方;或者,在第一计算方不是指定计算
方的情况下,其可以从指定计算方接收第一秘密分享分片。
[0056]
如此,第一计算方可以得到第一扩充表分片
[0057]
另一方面,在执行上述步骤s220之后,执行步骤s240,将所述第一位置分片[o]从t维扩充为m维,得到第一扩充位置分片
[0058]
需说明,对第一位置分片[o]进行扩充的难点在于:包括第一计算方在内的多个计算方并不知道向量o缺失了上述m个数值中的哪些元素。在一种方式中,可以利用相等比较的协议逐一判断,以实现位置分片的扩充。然而,这种做法会引入较大的通信开销。如果能由一方实现明文的对比则可以避免这一开销,但是直接将明文交由某一方,则会丧失安全性。
[0059]
基于此,提出另一种实施方式,引入伪随机函数(pseudorandom function,简称prf),首先分别将第一位置向量分片[o]和一个m阶置换π的第一置换向量分片[π]作为伪随机函数的输入,从而得到两个输出向量;然后,基于伪随机函数的特性,这两个输出向量可以明文交给某方进行相等性对比而不泄漏原始输入的信息;基于明文对比结果可以调整[π]得到使其与[o]相同的元素出现在相同的位置,从而实现对[o]的扩充。
[0060]
简言之,先获取第一置换分片[π];再基于第一位置分片[o],将第一置换分片[π]转换为第一扩充位置分片需说明,阶为m的置换(permutation)是定义域和值域均为{1,

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

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

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

=(x1′
,

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

,m},都成立xj′
=x
π(j)
。基于此,将置换π=(π(1),

,π(m))视为向量,并且,将对其中每个分量π(i)进行秘密分享,例如,采用上述(3,2)-重复分享方案进行秘密分享,而得到的分享结果记为[π],可以理解,[π]=([π(1)],

,[π(m)])。
[0061]
下面结合图3,对上述第一置换分片[π]的获取和扩充进行示例性介绍。图3示出根据一个实施例的不经意分散排列的实施架构示意图,为直观表示,其中以m=9,t=6的情况为例,并对位置向量o等赋予了具体的值。
[0062]
对于第一置换分片[π]的获取,可以采用图3中示意出的步骤s31、s32和s33来实现。
[0063]
首先,一方面,在步骤s31,获取第一序列分片[m],其为m维序列向量m=(1,...,m)的多个秘密分享分片之一。在一个实施例中,在第一计算方为指定计算方的情况下,生成m维序列向量的多个秘密分享分片,并将其中之一作为所述第一序列分片。在另一个具体的实施例中,在第一计算方不是指定计算方的情况下,从该指定计算方接收第一序列分片。示例性地,图3中示出获取到的第一序列分片[m]为([1],[2],...,[9])。
[0064]
另一方面,在步骤s32,通过与其他n-1个计算方共同执行随机置换分片生成协议,得到第一随机置换分片《π》。其中随机置换分片生成协议(或称实现算子f
rand
的协议)是用于生成随机置换分片的mpc协议,本步骤中,第一计算方与其他计算方共同调用实现算子f
rand
的协议,得到随机置换π的秘密分享《π》。
[0065]
需说明,商户随机置换π是在协议的执行过程中随机生成,各计算方均无从获知,并且,在一种协议执行方式中,在生成随机置换向量π后,确定其对应的多个叠加置换向量,从而根据多个叠加置换向量生成多个随机置换分片,对应输出给多个计算方,由此,第一计
算方可以得到协议输出的某一分片《π》。
[0066]
对于上述多个叠加置换向量和多个随机置换分片的生成,具体,可以从阶为m的全体置换中随机选取置换叠加运算后的运算结果等于随机置换π的多个置换,作为多个叠加置换向量,进而从该多个叠加置换向量中选取部分向量进行组合,得到随机置换分片。需说明的是,置换叠加运算的定义和性质包括:阶为m的全体置换构成非交换群,其存在二元运算

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

σ=(π(σ(1)),

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

π-1
=(1,

,m)。示例性地,假定计算方的个数为3,相应,在f
rand
协议执行中,可以随机选取三个置换π1、π2和π3,使得π1◇
π2◇
π3=π,进而得到3个随机置换分片(π1,π2),(π2,π3),(π3,π1),由此,第一计算方可以得到这3个分片之一。
[0067]
在以上得到第一序列分片[m]和第一随机置换分片《π》后,执行步骤s33,基于第一随机置换分片《π》和第一序列分片[m]执行乱序协议,得到第一置换分片[π]。具体,可以将此乱序协议的实现算子表示为f
shuffle
(《π》,[m]),其输出为[π
·
m]。需理解,因为π

m=π,所以[π

m]=[π]。
[0068]
由上,通过采用图3中示意的步骤s31、s32和s33,可以得到第一置换分片[π]。进一步,可以基于第一位置分片[o],将该第一置换分片[π]转换为第一扩充位置分片具体,可以基于图3中示出的步骤s34至步骤s38实现。
[0069]
先在步骤s34,第一计算方通过与其他n-1个计算方共同执行密钥分片生成协议,得到第一密钥分片[k],其为随机密钥的多个秘密分享分片之一。其中,密钥分片生成协议是生成随机密钥的分片的协议,各个协议参与方只能拿到密钥分片,但无从获知原始密钥。具体,第一计算方可以调用实现算子f
keygen
的协议,得到随机密钥k的秘密分享[k]。
[0070]
接着,一方面,在步骤s35,基于第一密钥分片[k]和第一置换分片[π],确定m个第一伪随机数分片,用于恢复出m个随机数。伪随机数分片的生成算子可以记作f
prf
([k],[x]),其输出为([prf(k,x1)],

,[prf(k,xm)]),相应,在本步骤中,调用实现算子f
prf
的协议,以[k]和([π(1)],

,[π(m)])为输入,可以得到([prf(k,π(1))],

,[prf(k,π(m))]),作为m个第一伪随机数分片。在具体的实现中,prf可以使用分组密码实现,比如lowmc。针对分组密码的实现方式,算子f
prf
可以使用针对布尔电路的mpc协议实现,比如姚氏乱码电路协议或者gmw协议。
[0071]
进一步,在一个实施例中,在第一计算方为指定计算方的情况下,从其他计算方接收针对上述m个随机数的伪随机数分片,并结合已确定的m个第一伪随机数分片,恢复出m个随机数,即(prf(k,π(1)),

,prf(k,π(m)))。在另一个实施例中,在第一计算方不是指定计算方的情况下,第一计算方将其m个第一伪随机数分片发送给指定计算方,以使指定计算方进行m个随机数的恢复。需理解,恢复出的随机数不会泄露原始数据的隐私信息。
[0072]
另一方面,在步骤s36,基于第一密钥分片[k]和第一位置分片[o],确定t个第一伪随机数分片,用于恢复出t个随机数。具体,可以调用实现算子f
prf
的协议,以[k]和([o1],

,[o
t
])为输入,可以得到([prf(k,o1)],

,[prf(k,[o
t
])]),作为t个第一伪随机数分片。
[0073]
进一步,在一个实施例中,在第一计算方为指定计算方的情况下,从其他计算方接收针对上述t个随机数的伪随机数分片,并结合已确定的t个第一伪随机数分片,恢复出t个随机数,即(prf(k,o1),

,prf(k,[o
t
]))。在另一个实施例中,在第一计算方不是指定计算
方的情况下,第一计算方将其m个第一伪随机数分片发送给指定计算方,以使指定计算方进行t个随机数的恢复。可以理解,恢复出的t个随机数是上述m个随机数的真子集。
[0074]
之后,在步骤s37,获取基于m个随机数和t个随机数的比对结果得到的m维置换向量ρ。在一个实施例中,在第一计算方为指定计算方的情况下,可以基于其恢复出的m个随机数和t个随机数进行比对,构建出置换向量ρ,为区分描述,或将构建出的置换向量称为构建置换向量。具体,针对t个随机数中任意的第i个随机数,确定m个随机数中与之相等的第j个随机数;进一步,建立t 1至m,与该m个随机数中剩余随机数序号之间的映射关系,从而结合从i到j的映射关系,确定构建置换向量ρ。
[0075]
换言之,第一计算方比对m个随机数形成的明文向量(prf(k,π(1)),

,prf(k,π(m)))和t个随机数形成的明文向量(prf(k,o1),

,prf(k,o
t
)),构造满足如下条件的置换ρ:
[0076]
a)对于1≤i≤t,若prf(k,oi)=prf(k,π(j)),则ρ(i)=j;
[0077]
b)对于t≤i≤m,随机排列剩余(m-l)个没有在a)中取得的j值。
[0078]
如此,第一计算方构造出置换向量ρ。在另一个实施例中,第一计算方不是指定计算方,此时,第一计算方可以从该指定计算方接收构造好的置换向量ρ。
[0079]
基于以上得到的第一置换分片[π]和置换向量ρ,执行步骤s38,基于构建置换向量ρ和第一置换分片[π]执行乱序协议,得到第一扩充位置分片具体,可以将此乱序协议的实现算子表示为f
shuffle2p
(π,[x]),其输出为[π

x],相应,在本步骤中,将ρ作为对应π的输入,将第一置换分片[π]作为对应[x]的输入,可以得到置换分片置换分片即为位置分片[o]的扩充位置分片
[0080]
如此,可以得到第一扩充位置分片其等价于基于第一位置分片[o]续接m-t个数值的第一秘密分享分片而得到,并且,所述m-t个数值中的各个数值与所述第一位置向量中的各个向量元素均不相同,对此,可以参见图3中示出的第一位置分片[o],以及在其后续接秘密分享分片分别为[1]、[5]和[3]而形成的第一扩充位置分片
[0081]
由上,可以通过相等比较或基于prf等的实施方式(后者优选),得到第一位置分片[o]的第一扩充位置分片
[0082]
之后,在步骤s250,基于所述第一扩充表分片和第一扩充位置分片执行不经意置换协议,得到第一置换结果分片[x

],作为针对所述第一数据表的第一排列结果分片。具体,可以将不经意置换协议对应实现的算子记作f
invapply
([π],[x]),其输出为[π-1
·
x],在本步骤中,以和作为输入,输出即为不经意分散排列的结果分片[y]。
[0083]
根据另一方面的实施例,若上述所调用的实现各算子的协议具备多数诚实且恶意模型下的安全性,则上述协议可以通过在步骤s240之后增加一步校验,确保最终协议具备多数诚实且恶意模型的安全性。具体,对上述第一扩充位置分片进行校验,也就是校验分片是否为位置分片[o]的扩充分片;相应,步骤s250可以实施为:在第一扩充位置分片通过校验的情况下,执行上述不经意置换协议。
[0084]
上述校验需要使用如下两个算子,并且,同样使用这两个算子多数诚实且恶意模
型安全的实现协议。a)随机数生成算子f
coin
,得到一个随机数r。b)校验0算子f
checkzero
,输入秘密分享值[x],判断x是否为0;若为0,输出true,否则输出false。相应,所添加的校验步骤如下:首先,第一计算方与其他计算方执行随机数生成协议(对应算子f
coin
),生成t个校验随机数(r1,

,r
t
);然后,基于该t个校验随机数、第一扩充位置分片和第一位置分片[o],与其他计算方共同执行校验协议(对应算子f
checkzero
),得到校验结果。在一个具体的实施例中,第一计算方基于其持有的第一扩充位置分片和第一位置分片[o]的前t维,与其他方共同执行差值元素生成协议,得到其中i∈[1,t];然后,第一计算方基于的计算结果调用f
checkzero
,若输出为0,则判定通过校验,若输出不为0,则判定未通过校验。
[0085]
如此,可以使得本说明书实施例披露的不经意分散排列方案具备多数诚实且恶意模型下的安全性,相较已有技术,安全性得到大幅提高。
[0086]
根据又一方面的实施例,需理解,多个数据方可以将其表分片预先发送给多个计算方,之后,多个计算方再根据多个数据方发送的查询请求所对应的算子,基于表分片调用与该算子对应的协议进行计算,进而使得客户端从多个计算方获取多个查询结果分片后,恢复查询结果。由此,在一个实施例中,在上述步骤s220之前,所述方法还可以包括:获取根据客户端发起的查询请求而解析出的算子;相应,步骤s220可以包括:在解析出的算子中包括数据表连接算子的情况下,确定第一位置分片[o];进一步,在上述步骤s250之后,所述方法还可以包括:第一计算方基于基于第一排列结果分片[y]和针对其他数据表的其他排列结果分片,确定数据总表的第一总表分片;再基于该第一总表分片,确定第一查询结果分片,进而将该第一查询结果分片发送给客户端,以使客户端基于第一查询结果分片和其他查询结果分片,恢复查询结果。在一个具体的实施例中,解析出的算子中还包括除数据表连接算子以外的其他算子,相应,可以基于第一总表分片,执行实现该其他算子的mpc协议,确定第一查询结果分片。
[0087]
综上,采用本说明书实施例披露的不经意分散排列方法,相较直接使用通用的安全多方计算协议来实现该算子需要o(m log m)的通信量以及o(log m)的通信轮数,本方案披露的协议只需o(m)的通信量和o(1)的通信轮数,显著降低了通信开销。
[0088]
当应用krastnikov等人的不经意连接算法来实现(3,2)-重复分享数据表的相等连接操作时,本协议可以直接替代其中实现不经意分散排列算子的部分,从而得到通信轮数更优的相等连接算子实现协议。
[0089]
在安全性方面,本方案在多数诚实且半可信模型下可证明安全,即,可以抵抗控制一个计算方遵循协议描述的攻击者。若本方案所调用的实现各个算子的协议都具备多数诚实且恶意模型下的安全性,本方案在进一步增加校验算子后也具备该模型下的可证明安全性。
[0090]
图4示出根据一个实施例的不经意分散排列的装置结构示意图,所述不经意分散排列涉及多个数据方和多个计算方,所述多个数据方各自持有多个业务对象的部分属性,形成多个数据表;所述装置集成于任意的第一计算方。如图4所示,所述装置400包括:
[0091]
表分片获取单元410,配置为从所述多个数据方中任意的第一数据方获取第一表分片,其为所述第一数据方对应的第一数据表的多个秘密分享分片之一。位置分片确定单
元420,配置为基于所述第一表分片,确定第一位置分片,其为第一位置向量的多个秘密分享分片之一;所述第一位置向量指示所述第一数据表中的t行数据在m行数据总表中的分散排列位置,所述数据总表对应基于所述多个数据表形成的数据连接表。表分片扩充单元430,配置为将所述第一表分片从t维扩充为m维,得到第一扩充表分片。位置分片扩充单元440,配置为将所述第一位置分片从t维扩充为m维,得到第一扩充位置分片。不经意置换单元450,配置为基于所述第一扩充表分片和第一扩充位置分片,执行不经意置换协议,得到第一置换结果分片,作为针对所述第一数据表的第一排列结果分片。
[0092]
在一个实施例中,所述多个业务对象属于以下中的一类或多类:用户、商品、事件。
[0093]
在一个实施例中,位置分片确定单元420具体配置为:基于从所述多个数据方获取的包含所述第一表分片在内的多个表分片,与其他计算方共同执行位置分片生成协议,得到对应所述多个数据表的多个位置分片,其中包括所述第一位置分片。
[0094]
在一个实施例中,表分片扩充单元430具体配置为:基于所述第一表分片续接m-t行表数据的第一秘密分享分片,得到该第一扩充表分片。
[0095]
在一个实施例中,所述第一扩充位置分片基于所述第一位置分片续接m-t个数值的第一秘密分享分片而得到,并且,所述m-t个数值中的各个数值与所述第一位置向量中的各个向量元素均不相同。
[0096]
在一个实施例中,位置分片扩充单元440包括:分片获取子单元,配置为获取第一置换分片;所述第一置换分片由m个秘密分享分片组成,其中第i个秘密分享分片为m维随机置换向量中第i维向量元素的多个秘密分享分片之一;分片扩充子单元,配置为基于第一位置分片将所述第一置换分片转换为所述第一扩充位置分片。
[0097]
在一个具体的实施例中,分片获取子单元具体配置为:获取第一序列分片,其为m维序列向量的多个秘密分享分片之一,所述m维序列向量的第i维元素的取值为i;通过与其他计算方共同执行随机置换分片生成协议,得到第一随机置换分片,所述第一随机置换分片基于所述m维随机置换向量对应的多个叠加置换向量而生成;基于所述第一随机置换分片和第一序列分片执行乱序协议,得到所述第一置换分片。
[0098]
在一个更具体的实施例中,分片获取子单元进一步配置为:在所述第一计算方为指定计算方的情况下,生成所述m维序列向量的多个秘密分享分片,并将其中之一作为所述第一序列分片;或者,在所述第一计算方不是指定计算方的情况下,从该指定计算方接收所述第一序列分片。
[0099]
另一方面,在一个具体的实施例中,分片扩充子单元具体配置为:通过与其他计算方共同执行密钥分片生成协议,得到第一密钥分片,其为随机密钥的多个秘密分享分片之一;基于所述第一密钥分片和第一置换分片,确定m个第一伪随机数分片,用于恢复出m个随机数;基于所述第一密钥分片和第一位置分片,确定t个第一伪随机数分片,用于恢复出t个随机数;获取基于m个随机数和t个随机数的比对结果得到的m维构建置换向量;基于所述构建置换向量和第一置换分片执行乱序协议,得到所述第一扩充位置分片。
[0100]
在一个更具体的实施例中,分片扩充子单元进一步配置为:在所述第一计算方为指定计算方的情况下,从其他计算方接收针对所述m个随机数的伪随机数分片,并结合所述m个第一伪随机数分片,恢复出所述m个随机数;以及,从其他计算方接收针对所述t个随机数的伪随机数分片,并结合所述t个第一伪随机数分片,恢复出所述t个随机数;通过比对所
述m个随机数和t个随机数,确定所述构建置换向量;或,在所述第一计算方不是指定计算方的情况下,将所述m个第一伪随机数分片和t个第一伪随机数分片发送给所述指定计算方,并从所述指定计算方接收所述构建置换向量。
[0101]
在一个示例中,分片扩充子单元更进一步配置为:针对所述t个随机数中任意的第i个随机数,确定所述m个随机数中与之相等的第j个随机数;建立t 1至m,与所述m个随机数中剩余随机数序号之间的映射关系,从而结合从i到j的映射关系,确定所述构建置换向量。
[0102]
在一个实施例中,不经意置换单元450具体配置为:对所述第一扩充位置分片进行校验;在所述第一扩充位置分片通过校验的情况下,执行所述不经意置换协议。
[0103]
在一个具体的实施例中,不经意置换单元450进一步配置为:与其他计算方执行随机数生成协议,生成t个校验随机数;基于所述t个校验随机数、第一扩充位置分片和第一位置分片,与其他计算方共同执行校验协议,得到校验结果。
[0104]
在一个实施例中,所述装置400还包括算子获取单元,配置为获取根据客户端发起的查询请求而解析出的算子;位置分片确定单元420具体配置为:在所述算子中包括数据表连接算子的情况下,确定所述第一位置分片;进一步,所述装置400还包括处理单元,配置为:基于所述第一排列结果分片和针对其他数据表的其他排列结果分片,确定所述数据总表的第一总表分片;基于所述第一总表分片,确定第一查询结果分片;将所述第一查询结果分片发送给客户端,以使所述客户端基于所述第一查询结果分片和其他查询结果分片,恢复查询结果。
[0105]
综上,采用本说明书实施例披露的不经意分散排列装置,相较直接使用通用的安全多方计算协议来实现该算子需要o(m log m)的通信量以及o(log m)的通信轮数,本方案披露的协议只需o(m)的通信量和o(1)的通信轮数,显著降低了通信开销。
[0106]
当应用krastnikov等人的不经意连接算法来实现(3,2)-重复分享数据表的相等连接操作时,本协议可以直接替代其中实现不经意分散排列算子的部分,从而得到通信轮数更优的相等连接算子实现协议。
[0107]
在安全性方面,本方案在多数诚实且半可信模型下可证明安全,即,可以抵抗控制一个计算方遵循协议描述的攻击者。若本方案所调用的实现各个算子的协议都具备多数诚实且恶意模型下的安全性,本方案在进一步增加校验算子后也具备该模型下的可证明安全性。
[0108]
根据另一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行结合图2所描述的方法。
[0109]
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现结合图2所描述的方法。
[0110]
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
[0111]
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
再多了解一些

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

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

相关文献