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

数据处理方法和系统与流程

2022-05-11 15:39:11 来源:中国专利 TAG:


1.本公开涉及一种数据处理领域,尤其涉及一种数据处理方法和系统。


背景技术:

2.安全多方计算是一个由多个参与方各自提供输入,共同计算输出的计算协议。该协议的特点是各个参与方仅了解自身的输入和计算的输出,而无法了解其他任何参与方的输入。例如“百万富翁问题”:两个参与方各自输入自己的财富数目,最后计算出谁的财富更多,除此之外不了解任何关于对方财富值的信息。
3.在两方合作的情况下,甲乙双方除了计算结果之外,无法了解对方的数据内容。但是在现有技术中,数据的顺序关系必然会泄露。例如,甲可以知晓在计算过程中用到了乙的第一条数据。在某些场景中,这是不符合用户隐私要求的。
4.为此,需要一种能够隐藏数据顺序的数据处理方案。


技术实现要素:

5.本公开要解决的一个技术问题是提供一种用于安全两方计算的随机重排方法,可以将双方的数据随机重排,同时任何一方都无法将重排后的数据顺序和重排之前建立联系,有效地解决了数据顺序泄露问题。
6.根据本公开的第一个方面,提供了一种数据处理方法,包括:获取合作方对数据x的一部分和数据y的一部分进行加密的加密结果;将获取的加密结果分别与获取的数据x的另一部分和数据y的另一部分进行组合;生成经打乱顺序的组合结果各自与随机数进行运算的运算结果,作为扰动结果;以及将扰动结果发送给合作方,用于合作方对扰动结果的解密。该方法还可以包括:所述随机数进行加密并发送给合作方,用于合作方对数据的二次扰动;以及获取二次扰动的结果并解密。
7.根据本公开的第二个方面,提供了一种数据处理方法,包括:将数据x的一部分和获取的数据y的一部分进行加密;获取合作方针对加密数据的扰动结果,其中,合作方将获取的加密结果分别与获取的数据x的另一部分和数据y的另一部分进行组合,并且生成经打乱顺序的组合结果各自与随机数进行运算的运算结果,作为扰动结果;以及对获取的扰动结果进行解密。类似地,也可以对合作方对所述随机数进行加密后得到的随机数加密结果以及在前的解密结果进行二次扰动。
8.根据本公开的第三个方面,提供了一种数据处理系统,包括分别使用数据x和数据y参与安全两方计算的甲方和乙方,其中,甲方将数据x的一部分和获取的数据y的一部分进行加密;乙方将获取的加密结果分别与获取的数据x的另一部分和数据y的另一部分进行组合;乙方生成经打乱顺序的组合结果各自与随机数进行运算的运算结果,作为扰动结果;甲方对获取的扰动结果进行解密;以及乙方对所述随机数进行加密,用于甲方对数据进行二次扰动。具体地,甲方对数据进行二次扰动包括:甲方将解密结果与获取的随机数加密结果进行逆运算;甲方生成经打乱顺序的逆运算结果与甲方随机数进行运算的运算结果,作为
二次扰动结果,并且乙方对二次扰动结果进行解密。
9.可选地,甲方和乙方各自进行的加密都为同态加密,并且针对数据的分割和运算符合秘密共享分割和运算规则。
10.根据本公开的第四个方面,提供了一种计算设备,包括:处理器;以及存储器,其上存储有可执行代码,当可执行代码被处理器执行时,使处理器执行如上述第一方面所述的方法。
11.根据本公开的第五个方面,提供了一种非暂时性机器可读存储介质,其上存储有可执行代码,当可执行代码被电子设备的处理器执行时,使处理器执行如上述第一方面所述的方法。
12.由此,本发明巧妙利用了秘密共享和同态加密的特性,让甲乙双方分别进行数据随机排序处理时,数据的私钥被另一方持有,由此双方各自处理数据不会影响数据的机密性,并且能够确保最终处理的数据结果以双方都不知晓的顺序随机排序。
附图说明
13.通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
14.图1示出了秘密共享的一个例子。
15.图2示出了根据本发明一个实施例的数据处理系统的组成示意图。
16.图3示出了根据本发明进行随机数据重排的流程图。
17.图4示出了根据本发明进行随机数据重排的一个例子。
18.图5示出了根据本发明一个实施例的数据处理方法的示意性流程图。
19.图6示出了根据本发明的乙方执行数据处理方法的流程例。
20.图7示出了根据本发明一个实施例的数据处理方法的示意性流程图。
21.图8示出了根据本发明的甲方执行数据处理方法的流程例。
22.图9示出了根据本发明一个实施例可用于实现上述数据处理方法的计算设备的结构示意图。
具体实施方式
23.下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
24.在数据爆炸的今天,人们对于隐私保护的需求日益增加。安全计算则能够让人们在保护数据隐私的同时完成计算任务。安全计算,全称为安全多方计算(secure multi-party computation,smc)指的是在保护数据安全的前提下实现多方计算。多方计算则顾名思义,指代多个参与者将各自的数据凑在一起,并在这个大数据集上进行一定的计算,并得到最后的计算结果。
25.想要实现多方计算,最简单的方法是寻找可信第三方,在第三方服务器上会在多
方数据并进行计算。但由于数据是明文放在服务器上的,因此服务器操作方能够知晓每个参与者的确切数据,并且增加了服务器本身遭遇安全攻击的风险。
26.为了解决上述问题,则可利用安全多方计算,在各方都不用把确切数据告诉其他方(即,真实数据从未离开过自己)的情况下,仍然能得到联合计算的结果。比如,在大型模型训练和大规模统计中,由于计算任务需要用到来自多个参与者的数据,但各个参与者往往不想(或不被允许)交换或公开数据,此时就可以利用安全多方计算来实现上述训练或是统计。
27.在现有的安全两方计算中,甲乙双方除了计算结果之外,无法了解对方的数据内容,但数据的顺序关系仍然会被泄露。例如,甲可以知晓在计算过程中用到了乙的第一条数据。在某些场景中,这是不符合用户隐私要求的。
28.为此,本发明提出了了一种用于安全两方计算的随机重排方法,可以将双方的数据随机重排,同时任何一方都无法将重排后的数据顺序和重排之前建立联系,有效的解决了数据顺序泄露问题。
29.具体地,甲乙两方可以将各自的数据经由秘密共享进行拆分,获取对方的部分数据,并基于同态加密性质进行部分数据的加密、包括部分加密数据的完整数据的随机重排来实现对数据顺序的混淆。
30.秘密共享(secretsharing,ss)的基本思路是将每个数字x拆散成多个数x1,x2,

,xn,并将这些数分发到多个参与方s1,s2,

,sn那里。然后每个参与方拿到的都是原始数据的一部分,一个或少数几个参与方无法还原出原始数据,只有大家把各自的数据凑在一起时才能还原真实数据。计算时,各参与方直接用它自己本地的数据进行计算,并且在适当的时候交换一些数据(交换的数据本身看起来也是随机的,不包含关于原始数据的信息),计算结束后的结果仍以秘密共享的方式分散在各参与方那里,并在最终需要得到结果的时候将某些数据合起来。由此,秘密共享保证了计算过程中各个参与方看到的都是一些随机数,但最后仍然算出了想要的结果。
31.图1示出了秘密共享的一个例子。假设甲有一个秘密数字x,他想将其分发到s1,s2,

,sn那里。那么甲首先要生成n-1个随机数r1,r2,

,rn,然后计算第n个数最后甲令x1=r1,x2=r2,

,xn=rn,并将它们发给s1,s2,

,sn。上面这种简单的方法具有如下几条性质:
32.1.各个数字x1,x2,

,xn都是随机分布的,单独一个或若干个并不泄露任何信息;
33.2.当所有x1,x2,

,xn合在一起时,可以还原x,因为
34.3.这种方案具有加法同态的性质,也就是说,各参与方可以在不交换任何数据的情况下直接计算对秘密数据求和。
35.假设还有另一方乙,他也有一个秘密数字y,并和甲一起将数据分发给了s1,s2,

,sn。为了做加法,s1可以计算z1=x1 y1,s2可以计算z2=x2 y2,

,sn可以计算zn=xn yn。每个参与方都只对本地的随机数进行操作,不交换数据。根据秘密共享的性质,可以看到:
也就是说,可以由此得到z=x y的秘密共享,而该求和的结果可以不暴露出来,继续用来做其他事情。如上结合图1描述了一个简单的秘密分析的例子,该例子满足了加法同态,且保证了只有n个参与方全部联合才能把数据解开。
36.同态加密(homomorphic encryption)是一种加密形式,它允许人们对密文进行特定形式的代数运算得到仍然是加密的结果,将其解密所得到的结果与对明文进行同样的运算结果一样。换言之,这项技术令人们可以在加密的数据中进行诸如检索、比较等操作,得出正确的结果,而在整个处理过程中无需对数据进行解密。由此,能够真正从根本上解决将数据及其操作委托给第三方时的保密问题,并且适于在安全多方计算中使用。
37.同态加密可以直接将原文加密,然后在密文上进行各种运算,最终得到结果的密文,形式化的表示为:
38.x1,x2,...,xn→
[x1],[x2],...,[xn]
[0039]
f([x1],[x2],...,[xn])

[f(x1,x2,...,xn)]
[0040]
由此,借助同态加密,直接在密文上操作和在明文上操作然后加密,能够得到相同的效果。一个典型的应用场景是:数据持有者想对其持有的大量数据进行计算,奈何其拥有的计算资源不足,想借助云服务器的算力完成该计算。如果按照常规做法,将数据传输到云服务器,然后运行事先写好的程序进行计算,会在云服务器上暴露敏感数据。同态加密正好可以解决此类问题,数据持有者传输数据前先将数据加密,云服务器在接收到数据后照例计算,由于计算是针对密文进行的,因此在云端不会泄密。待得到结果后再将结果的密文返还给数据持有者,数据持有者解开后即得最终结果。
[0041]
很多众所周知的公钥加密方案其实都具有同态的性质,只是它们都只支持部分同态,也就是说它们只支持在密文上进行加法或乘法操作,但不能既做加法又做乘法。比如rsa加密方案,支持的就是同态乘法。近年来有些加密方案则可以支持(至少是限定条件或是操作下的)全同态加密。
[0042]
在此,当加密函数为e,明文为x,y时,加法同态指的是如果存在有效算法

,e(x y)=e(x)

e(y)或者x y=d(e(x)

e(y))成立,并且不泄漏x和y。乘法同态则指的是如果存在有效算法,e(x
×
y)=e(x)e(y)或者xy=d(e(x)e(y))成立,并且不泄漏x和y。
[0043]
在本发明中,通过巧妙利用秘密共享和同态加密的特性,让甲乙双方分别处理数据时,数据的私钥被另一方持有,由此确保双方各自处理数据不会影响数据的机密性。
[0044]
图2示出了根据本发明一个实施例的数据处理系统200的组成示意图。如图2所示,系统200包括参与安全两方计算中的两方:甲方210和乙方220。其中甲方使用数据x参与安全计算,乙方使用数据y参与安全计算。具体地,甲方可以将加密形式的x和y数据发送给乙方进行扰动(例如,由乙方打乱顺序),随后乙方可以对扰动后的数据进行处理,并发回给甲方进行二次扰动(例如,由甲方在首次打乱顺序的基础上再次打乱顺序)。由此,在使用本发明的数据处理方案之后,甲乙两方可以各自持有符合秘密共享形式要求的部分x和部分y数据,并且都不知晓x和y数据的具体次序。
[0045]
图3示出了根据本发明进行随机数据重排的流程图。在步骤s310,甲方将数据x的一部分和获取的数据y的一部分进行加密。在此,数据y的一部分可以是乙方预先发送给甲方的。同样地,甲方可以将数据x的另一部分发送给乙方。随后,在步骤s320,乙方将获取的
加密结果分别与获取的数据x的另一部分和数据y的另一部分进行组合。组合结果包括部分加密和部分未加密的数据x,以及部分加密和部分未加密的数据y。随后,在步骤s330,生成经打乱顺序的组合结果各自与随机数进行运算的运算结果,作为扰动结果。在此,为了得到扰动结果,可以是乙方扰动组合结果各自与随机数进行运算后的运算结果的顺序,也可以是乙方扰动组合结果的顺序,再将其各自与随机数进行运算。在此,“扰动”可以指代打乱数据的顺序,例如,随机打乱多条数据原本的顺序。
[0046]
随后在步骤s340,甲方对获取的扰动结果进行解密。此时,甲方获取的解密结果为例如各自减去了随机数的数据x和数据y,并且数据x和数据y的真实顺序是甲方不知道的。此时,甲乙双方拥有数据x和数据y的一部分(即,甲拥有例如减取了随机数的数据x和数据y;乙拥有随机数),并且乙方通过扰动,对甲方隐去数据的真实顺序。
[0047]
随后,可以再由甲方对数据进行二次扰动,来对乙方隐去数据的真实顺序。具体地,该流程还可以包括:乙方对所述随机数进行加密,用于甲方对数据进行二次扰动。
[0048]
甲方对数据进行二次扰动可以包括:甲方将解密结果与获取的随机数加密结果进行逆运算;甲方生成经打乱顺序的逆运算结果与甲方随机数进行运算的运算结果,作为二次扰动结果,并且乙方对二次扰动结果进行解密。
[0049]
类似地,在此,为了得到二次扰动结果,可以是甲方扰动逆运算结果各自与甲方随机数(例如,由甲方生成的随机数)进行运算后的运算结果的顺序,也可以是甲方扰动逆运算结果的顺序,再将其各自与甲方随机数进行运算。在此,“二次扰动”可以指代在已被乙方打乱顺序的基础上,再次打乱数据的顺序。
[0050]
在此,甲方和乙方各自进行的加密都为同态加密,并且针对数据的分割和运算符合秘密共享分割和运算规则。由此,甲方和乙方自始至终所掌握的数据都符合秘密共享的合法形态,并且通过两次扰动,使得甲乙双方都不知晓数据x和y的顺序。
[0051]
为了进一步说明本发明的原理,图4示出了根据本发明进行随机数据重排的一个例子,并且示出了图3所示步骤的具体数据操作例。
[0052]
为了确保各自数据的安全性,甲乙两方可以将各自的数据进行分割,以符合秘密共享的所需形式。为此,甲方410可以将数据x秘密共享分割为x1和x2。乙方420则可将数据y秘密共享分割为y1和y2。常用的分割方法有加法秘密共享和乘法秘密共享。如图所示,在采用加法秘密共享时,使得x=x1 x2,y=y1 y2。另外,虽然图中的例子没有示出,但也可采用乘法秘密共享。而在采用乘法秘密共享时,使得x=x1*x2,y=y1*y2。
[0053]
由于计算机计算的性质,并且为了避免在x和y值较小时由其分割数值泄露x和y的取值,通常还会采用x=x1 x2mod q,y=y1 y2mod q,以及x=x1*x2mod q,y=y1*y2mod q形式的加法秘密共享和乘法秘密共享。由此,通过对一个较大的数值进行求余运算(例如,q可以等于一个已知的固定值,一个较大的固定值,例如2的64次方),能够增加x1,x2,y1,y2各自的取值范围,从而提升取值的随机性。为此,虽然图3中为了显示方便没有示出“mod q”的部分,但应该理解出于对随机性的保证以及计算机数据处理的自然属性,可以将图3中的分割理解为x=x1 x2mod q,y=y1 y2mod q的形式,此时q可以等于一个已知的固定值,例如2的64次方。
[0054]
甲方和乙方可以各自数据中分割后的一部分发送给对方进行处理。具体地,乙方可以将生成的y1发送给甲方。甲方可以生成的x2发送给乙方。此时,甲方持有x1和y1,乙方持
有x2和y2,因此两方都持有符合秘密共享要求的数据。
[0055]
甲方在获取y1后,可以对x1和y1进行同态加密得到enc(x1)和enc(y1)。在此,甲方对x1和y1进行的同态加密需要与分割x1和x2以及y1和y2的形式相同。例如,在采用加法秘密共享进行分割时,可以进行相应的加法同态加密。而在采用乘法秘密共享进行分割时,可以进行相应的乘法同态加密。在图3的例子中,可以采用任何已知的或是将来发现的加法同态加密函数来对x1和y1进行同态加密。
[0056]
可以对使用第一私钥对x1和y1进行同态加密,以得到enc(x1)和enc(y1)。通常情况下,需要对x和y采用相同的秘密分享分割方法,此时甲方也对x1和y1进行相同类型的同态加密。例如,可以对x和y采用加法秘密分享分割,于是甲方可以对x1和y1进行的加法同态加密。由于甲方后续需要对经乙方随机排序的包含x和y的数据进行解密,因此针对x1和y1,需要使用相同的加法同态加密方法,并使用相同的密钥来对x1和y1进行加密。由上可知,在此使用“第一私钥”来表示由甲方持有的对x1和y1进行同态加密的同一个密钥。
[0057]
在得到enc(x1)和enc(y1)之后,甲方可以将其发送给乙方。此时,乙方持有enc(x1)和enc(y1)以及x2和y2。由于乙方不知道甲方持有的第一私钥,因此乙方并不知晓数据x和数据y本身。
[0058]
在获取enc(x1)和enc(y1)之后,乙方可以针对enc(x1)和x2以及enc(y1)和y2分别进行同态运算。同样地,此时进行的同态运算需要与分割x1和x2以及y1和y2的形式相同。例如,在采用加法秘密共享进行分割时,可以进行相应的加法同态运算。而在采用乘法秘密共享进行分割时,可以进行相应的乘法同态运算。在图3的示例中,可以将enc(x1)和x2以及enc(y1)和y2各自相加。根据加法同态的定义,可以通过enc(x)=enc(x1) x2以及enc(y)=enc(y1) y2得到enc(x)和enc(y)。
[0059]
随后,乙方可以对enc(x)和enc(y)进行随机排序,并且向甲方发送符合秘密共享要求的enc(x)和enc(y),即向甲方发送被各自与一个甲方不知晓的随机数进行运算的enc(x)和enc(y)。具体地,乙方可以经打乱顺序的enc(x)和enc(y)与随机数r和s进行第一运算的第一运算结果,并将第一运算结果发送给甲方。第一运算仍然需要与最初分割x和y的秘密共享形式相对应。例如,在加法秘密共享时,第一运算为减法;在乘法秘密共享时,第一运算为除法。
[0060]
在具体实现中,乙方可以先打乱enc(x)和enc(y)的顺序,再进行与随机数的第一运算,也可以先进行第一运算,再打乱运算后的enc(x)和enc(y)的顺序。为此,乙方随机打乱enc(x)和enc(y)的顺序,并生成两个随机数r和s;乙方将r和s分别与打乱顺序后的enc(x)和enc(y)进行第一运算,并将生成的第一运算结果发回给甲方,或者乙方生成随机数r和s,并将r和s分别与enc(x)和enc(y)进行第一运算;乙方随机打乱进行第一运算后的enc(x)和enc(y)的顺序。
[0061]
无论哪种情况,乙方都能够得到经打乱顺序的enc(x)和enc(y)与随机数r和s进行第一运算的第一运算结果。此时,乙方知晓打乱后的enc(x)和enc(y)的顺序,并且知道随机数r和s与enc(x)和enc(y)的对应关系。在图3的例子中,例如在随机排序后,仍然是enc(x)在前,enc(y)在后,此时可以将enc(x)-r和enc(y)-s作为第一运算结果发送给甲方。
[0062]
甲方在获取第一运算结果之后,可以使用之前对enc(x1)和enc(y1)加密的第一私钥来对所述第一运算结果进行解密,得到r和s分别与打乱顺序后的x和y进行第一运算的第
二运算结果。例如,甲方获取enc(x)-r和enc(y)-s,根据同态加密的性质,在使用针对enc(x1)和enc(y1)加密的第一私钥进行解密后,可以得到x-r和y-s。此时,甲方持有x-r和y-s,但不知道x-r和y-s的顺序,即,不知道x和y的相关数据哪一个在前,哪一个再后。而乙方则知晓x和y的相关数据哪一个在前,哪一个再后,即,乙方知晓甲方解密得到的是x-r和y-s,同时乙方持有r和s。
[0063]
至此甲持有x-r,y-s,乙持有r和s,双方依然持有x和y的秘密共享形式,区别是在此时,甲已经不知道x和y的顺序(但是乙知道)。
[0064]
另外,应该理解的是,在此虽然使用随机数r和s的形式进行表示,但如上结合秘密共享的定义可知,乙方将enc(x)-r和enc(y)-s发回给甲方,并持有r和s的操作,可以看作是将x和y进行又一次的加法秘密分割。例如,可以令x-r=x3,y-s=y3,r=x4,s=y4,此时x=x3 x4,y=y3 y4。更进一步地,x=x3 x
4 mod q,y=y3 y
4 mod q。
[0065]
随后,只需要再把甲、乙角色互换,重新运行一遍上述步骤,即可得到新的一组x和y的秘密共享形式,同时甲和乙都不知道x和y的顺序。
[0066]
具体地,乙方可以使用第二私钥对r和s进行同态加密得到enc’(r)和enc’(s),并将其发送给甲方。在此,用
“’”
表示不用于甲方使用第一密钥的加密。
[0067]
甲方获取enc’(r)和enc’(s),并针对enc’(r)和enc’(s)和第二运算结果进行所述第一运算的逆运算,得到打乱顺序的enc’(x)和enc’(y)。在此,第一运算为减法,则逆运算为加法;第一运算为除法,则逆运算为乘法。在图3的例子中,可以将enc’(x)和enc’(y)分别与作为第二运算结果的x-r和y-s相加,得到enc’(x)=enc’(r) x-r,enc’(y)=enc’(s) y-s。
[0068]
随后,甲方生成经二次打乱顺序的enc’(x)和enc’(y)与随机数m和n进行第二运算的第三运算结果。与乙方在前的随机排序类似,在具体实现中,甲方可以先打乱enc’(x)和enc’(y)的顺序,再进行与随机数的第二运算,也可以先进行第二运算,再打乱运算后的enc’(x)和enc’(y)的顺序。为此,甲方随机打乱enc’(x)和enc’(y)的顺序,并生成两个随机数m和n;甲方将m和n分别与打乱顺序后的enc’(x)和enc’(y)进行第二运算,并将生成的第三运算结果发回给乙方,或者甲方生成随机数m和n,并将m和n分别与enc’(x)和enc’(y)进行第二运算;甲方随机打乱进行第二运算后的enc’(x)和enc’(y)的顺序。
[0069]
无论哪种情况,甲方都能够得到经二次打乱顺序的enc’(x)和enc’(y)与随机数m和n进行第二运算的第三运算结果。此时,甲方知晓enc’(x)和enc’(y)是如何在己方被二次随机排序的,并且知道随机数m和n与enc’(x)和enc’(y)的对应关系。在图3的例子中,例如在随机排序后,是enc’(y)在前,enc’(x)在后,此时可以将enc’(y)-m和enc’(x)-n作为第三运算结果发送给乙方。
[0070]
乙方使用所述第二私钥对所述第三运算结果进行解密,得到m和n分别与二次打乱顺序后的x和y进行第二运算的第四运算结果。例如,乙方如图所示获取enc’(y)-m和enc’(x)-n,根据同态加密的性质,在使用针对enc’(r)和enc’(s)加密的第二私钥进行解密后,可以得到y-m和x-n。此时,甲方持有m和n,虽然知道二次随机排序中是如何打乱y-m和x-n的顺序的,但不知道在初始乙方随机排序时的x-r和y-s的顺序;乙方持有y-m和x-n,但不知道y-m和x-n的顺序。
[0071]
至此甲持有m和n,乙持有y-m和x-n,双方依然持有x和y的秘密共享形式,并且在此
时甲和乙都已经不知道x和y的顺序(因此各自在对方保有私钥的情况下进行了随机排序)。
[0072]
另外,同样应该理解的是,在此虽然使用随机数m和n的形式进行表示,但如上结合秘密共享的定义可知,甲方将enc’(y)-m和enc’(x)-n发回给乙方,并持有m和n的操作,可以看作是将x和y进行又一次的加法秘密分割。例如,可以令y-m=x5,x-n=y5,m=x6,n=y6,此时x=x5 x6,y=y5 y6更进一步地,x=x5 x6mod q,y=y5 y
6 mod q。
[0073]
由此,本发明巧妙利用了秘密共享和同态加密的特性,让甲乙双方分别处理数据时,数据的私钥被另一方持有,由此双方各自处理数据不会影响数据的机密性。进一步地,通过把数据由甲、乙各随机打乱一次,使得最终顺序是双方随机排序结果的叠加,从而确保双方都不知晓数据的顺序。
[0074]
本方案对具体的秘密共享方案和同态方案不做限制。例如,图4所示的加法同态也可以换成乘法同态。此时,只需将秘密共享方案也对应的换成乘法秘密共享即可,即,x=x1*x2,y=y1*y2,更进一步地,x=x1*x2mod q,y=y1*y2mod q。后续,则可以分别具有x/r、y/s、y/m、x/n等的形式。
[0075]
换句话说,在加法实现中,甲方将数据x秘密共享分割成x1和x2,乙方将数据y秘密共享分割为y1和y2可以包括:甲方将数据x进行加法秘密共享分割:x=x1 x2modq;以及乙方将数据y进行加法秘密共享分割:y=y1 y2modq。甲方获取y1并使用第一私钥对x1和y1进行同态加密得到enc(x1)和enc(y1)可以包括:甲方使用第一密钥对x1进行加法同态加密,得到enc(x1);以及甲方使用第一密钥对y1进行加法同态加密,得到enc(y1)。乙方获取x2及enc(x1)和enc(y1),并针对enc(x1)和x2以及enc(y1)和y2分别进行同态运算,得到enc(x)和enc(y)可以包括:乙方针对enc(x1)和x2进行加法同态运算,得到enc(x);以及乙方针对enc(y1)和y2进行加法同态运算,得到enc(y)。此时,所述第一运算是减法运算,后续针对r和s的同态加密也应该是相应的加法同态加密,所述第一运算的逆运算是对应的加法运算。第二运算与第一运算性质相同,也是减法运算,并且第二运算的逆运算也是对应的加法运算。
[0076]
在乘法实现中,甲方将数据x秘密共享分割成x1和x2,乙方将数据y秘密共享分割为y1和y2可以包括:甲方将数据x进行乘法秘密共享分割:x=x1*x2modq;以及乙方将数据y进行乘法秘密共享分割:y=y1*y2modq。甲方获取y1并使用第一私钥对x1和y1进行同态加密得到enc(x1)和enc(y1)可以包括:甲方使用第一密钥对x1进行乘法同态加密,得到enc(x1);以及甲方使用第一密钥对y1进行乘法同态加密,得到enc(y1)。乙方获取x2及enc(x1)和enc(y1),并针对enc(x1)和x2以及enc(y1)和y2分别进行同态运算,得到enc(x)和enc(y)可以包括:乙方针对enc(x1)和x2进行乘法同态运算,得到enc(x);以及乙方针对enc(y1)和y2进行乘法同态运算,得到enc(y)。所述第一运算是除法运算,后续针对r和s的同态加密也应该是相应的乘法同态加密,所述第一运算的逆运算是对应的乘法运算。第二运算与第一运算性质相同,也是除法运算,并且第二运算的逆运算也是对应的乘法运算。
[0077]
在此,可以使用任意加法同态或是乘法同态函数来实现同态加密。在其他实施例中,也可以使用全同态函数。在使用全同态函数时,由于需要对由对方进行随机数计算的数据进行解密,因此在一次针对数据x和y的完整操作中,通常仅会用到单纯的加法同态,或是单纯的乘法同态,而很少会出现同时使用加法和乘法同态的应用场景。
[0078]
在实际使用中,如果仅仅包括来自甲方的一条数据x和来自乙方的一条数据y,则即使进行了两方扰动,其排序结果也无非两种:x在前y在后,或是y在前x在后。显然,本发明
的随机排序方法在甲方双方都包含多条数据的情况下,能够更加显示出其扰动并隐藏排序的作用。为此,假设甲方提供的用于合作的数据x包括多条数据x,乙方提供的用于合作的数据y包括多条数据y。
[0079]
此时,甲方可以将用于合作的多条数据x各自分割成各自的x1和x2,乙方则可将用于合作的多条数据y各自分割成各自y1和y2。在进行初次扰动时,进一步地,生成经打乱顺序的enc(x)和enc(y)与随机数r和s进行第一运算的第一运算结果包括:针对enc(x)和enc(y)中包含的每一条数据,各自随机生成随机数进行第一运算。生成经二次打乱顺序的enc’(x)和enc’(y)与随机数m和n进行第二运算的第三运算结果包括:针对enc’(x)和enc’(y)中包含的每一条数据,各自随机生成随机数进行第二运算。由此确保每条数据的随机数都单独生成。换句话说,乙方可以随机打乱多条enc(x)和enc(y)的顺序,以使得来自两方的数据被混合随机排序。而在进行二次扰动时,甲方可以使得已被混合随机排序的两方数据被二次随机混合排序,从而向双方隐藏排序数据。
[0080]
例如,甲方用于合作的数据x可以包括a1、a2、a3和a4四条数据,乙方用于合作的数据y可以包括b1、b2、b3和b4四条数据。此时,甲乙双方可以首先将各自的数据a1、a2、a3和a4以及b1、b2、b3和b4进行秘密共享分割,通过甲对部分数据的同态加密,乙对加密数据的随机排序和随机数运算,得到第一运算结果。例如,经过乙方的首次扰动(打乱顺序,例如随机排序)后,数据的顺序从按来源顺序排序a1、a2、a3、a4、b1、b2、b3、b4变化为b2、a4、b4、a2、a1、b1、b3、a3,并且变化后的8条数据各自减去了一个乙方知晓其大小和顺序的随机数(对应于r和s)。随后,通过甲方的二次随机扰动,数据的顺序例如可以从b2、a4、b4、a2、a1、b1、b3、a3变为b1、b2、a3、a2、a1、b3、a4、b4,并且变化后的8条数据各自减去了一个甲方知晓其大小和顺序的随机数(对应于m和n)。
[0081]
对于最终的排序,例如,经过二次随机排序得到的b1、b2、a3、a2、a1、b3、a4、b4,由于乙方仅知晓其第一的随机排序,甲方仅知晓第一次随机排序基础上的第二次随机排序,因此甲乙双方都不知晓最终排序的顺序,从而隐藏了合作数据的顺序。在通常的合作中,甲乙双方投入的数据量通常不是个位数,而是例如数千、上万、甚至更高量级的数据条数,因此此时的随机排序结果就用于更为强大的不可回溯性,从而避免了数据顺序关系的泄露。
[0082]
由此,所述系统可以分别使用由甲方持有的m和n以及乙方持有的第四运算结果,来进行安全两方计算。例如,在甲方持有的云上进行模型训练等。
[0083]
例如,甲拥有数据x,乙拥有数据y,双方计划采用安全多方计算的方式,在数据全集{x,y}上运行一个算法(例如,机器学习训练)。如果不采用随机重排技术,那么双方为了训练出了一个机器学习模型,则不可避免地知道这个模型训练的过程中读了x多少遍,读了y多少遍。例如,在首轮训练中使用了10000条x数据中的前50%,10000条y数据中的前50%,在第二轮训练中使用了10000条y数据中的剩余的50%,10000条y数据中的剩余的50%。这在某些场景中是不符合用户隐私要求的。而利用了本发明的随机重排计算,双方仅知晓首轮训练中使用了10000条数据,第二轮又使用了10000条数据,从而确保了对数据顺序的隐藏。
[0084]
本发明还可以实现为由甲方或是乙方在对方的配合下进行的数据处理方法。图5示出了根据本发明一个实施例的数据处理方法的示意性流程图。该方法可以是由乙方(先扰动方)执行的。在此,己方为如上结合图2-4描述的乙方,合作方为甲方。
[0085]
在步骤s510,获取合作方对数据x的一部分和数据y的一部分进行加密的加密结果。在步骤s520,将获取的加密结果分别与获取的数据x的另一部分和数据y的另一部分进行组合。在步骤s530,生成经打乱顺序的组合结果各自与随机数进行运算的运算结果,作为扰动结果。在步骤s540,将扰动结果发送给合作方,用于合作方对扰动结果的解密。由此,完成由己方实现的第一次随机排序。
[0086]
为了进一步说明乙方的操作,图6示出了根据本发明的乙方执行数据处理方法的流程例,并且示出了图5所示步骤的具体数据操作例。
[0087]
在步骤s610,获取合作方用于合作的数据x的一部分x2,其中,合作方将用于合作的数据x分割成x1和x2。
[0088]
在步骤s620,将用于合作的数据y分割为y1和y2,并将y1发送给合作方。应该理解的是,在其他实施例中,也可以交换步骤s610和s620的执行顺序,例如,甲乙双方同时分割数据,并在随后发送部分数据。
[0089]
在步骤s630,获取合作方使用第一私钥对x1和y1进行同态加密得到enc(x1)和enc(y1)。
[0090]
在步骤s640,针对enc(x1)和x2以及enc(y1)和y2分别进行同态运算,得到enc(x)和enc(y)。
[0091]
在步骤s650,生成经打乱顺序的enc(x)和enc(y)与随机数r和s进行第一运算的第一运算结果。
[0092]
在步骤s660,将由此生成的第一运算结果发回给合作方,所述第一运算结果由合作方使用第一私钥进行解密,得到r和s分别与经打乱顺序的x和y进行第一运算的第二运算结果。
[0093]
图6所示流程可以看作是图5所示流程的细化,并且上述步骤s610-s630可以看作是步骤s510的子步骤1-3,步骤s640-s660则对应于步骤s520-s540。
[0094]
在完成由己方实现的第一次随机排序后,可以进行由合作方实现的二次随机排序。为此,该方法还可以包括:对所述随机数进行加密并发送给合作方,用于合作方对数据的二次扰动;以及获取二次扰动的结果并解密。具体地,合作方对数据的二次扰动包括:将解密结果与获取的随机数加密结果进行逆运算;生成经打乱顺序的逆运算结果与合作方随机数进行运算的运算结果,作为二次扰动结果。
[0095]
在使用符号描述的情况下,二次扰动的步骤可以包括:使用第二私钥对r和s进行同态加密得到enc’(r)和enc’(s);将enc’(r)和enc’(s)发送给合作方,enc’(r)和enc’(s)由合作方进行与第二运算结果的所述第一运算的逆运算;获取第三运算结果,其中,合作方生成经二次打乱顺序的enc’(x)和enc’(y)与随机数m和n进行第二运算的第三运算结果;使用所述第二私钥对所述第三运算结果进行解密,得到m和n分别与经二次打乱顺序的x和y进行第二运算的第四运算结果。经合作方扰动后,双方都也不知道x和y的顺序,且双方仍持有所需的秘密共享形式。
[0096]
图7示出了根据本发明一个实施例的数据处理方法的示意性流程图。该方法可以是由甲方(二次扰动方)执行的。在此,己方为如上结合图2-4描述的甲方,合作方为乙方。
[0097]
在步骤s710,将数据x的一部分和获取的数据y的一部分进行加密。在步骤s720,获取合作方针对加密数据的扰动结果,其中,合作方将获取的加密结果分别与获取的数据x的
另一部分和数据y的另一部分进行组合,并且生成经打乱顺序的组合结果各自与随机数进行运算的运算结果,作为扰动结果。在步骤s730,对获取的扰动结果进行解密。
[0098]
为了进一步说明甲方的操作,图8示出了根据本发明的甲方执行数据处理方法的流程例,并且示出了图7所示步骤的具体数据操作例。
[0099]
在步骤s810,将用于合作的数据x分割成x1和x2,并将x2发送给合作方。在步骤s820,获取合作方用于合作的数据y的一部分y1,其中,合作方将用于合作的数据y分割为y1和y2。
[0100]
在步骤s830,使用第一私钥对x1和y1进行同态加密得到enc(x1)和enc(y1),并将enc(x1)和enc(y1)发送给合作方。在步骤s840,获取第一运算结果,其中,合作方针对enc(x1)和x2以及enc(y1)和y2分别进行同态运算,得到enc(x)和enc(y),生成经打乱顺序的enc(x)和enc(y)与随机数r和s进行第一运算的第一运算结果。在步骤s850,使用第一私钥对所述第一运算结果进行解密,得到r和s分别与经打乱顺序的x和y进行第一运算的第二运算结果。
[0101]
图8所示流程可以看作是图7所示流程的细化,并且上述步骤s810-s830可以看作是步骤s710的子步骤1-3,步骤s840-s850则对应于步骤s720-s730。
[0102]
由此,完成由合作方实现的第一次随机排序。随后,可以进行己方实现的二次随机排序。为此,该方法还可以包括:获取合作方使用第二私钥对r和s进行同态加密得到的enc’(r)和enc’(s);将enc’(r)和enc’(s)进行与第二运算结果的所述第一运算的逆运算,得到经打乱顺序的enc’(x)和enc’(y);生成经二次打乱顺序的enc’(x)和enc’(y)与随机数m和n进行第二运算的第三运算结果;以及将生成的第三运算结果发回给合作方,合作方使用所述第二私钥对所述第三运算结果进行解密,得到m和n分别与二次打乱顺序的x和y进行第二运算的第四运算结果。经合作方扰动后,双方都也不知道x和y的顺序,且双方仍持有所需的秘密共享形式。
[0103]
随后,无论以哪方视角,都可以使用二次随机排序后的结果用于安全两方计算。为此,该方法还包括:使用由两方分别持有的m和n以及第四运算结果,进行安全两方计算。
[0104]
类似地,在进行第一运算和第二运算时,可以先进行与随机数的运算,再进行随机排序,也可以先随机排序,再进行与随机数的运算。
[0105]
为此,生成经打乱顺序的enc(x)和enc(y)与随机数r和s进行第一运算的第一运算结果可以包括:随机打乱enc(x)和enc(y)的顺序,生成随机数r和s,并将r和s分别与经打乱顺序的enc(x)和enc(y)进行第一运算;或者生成随机数r和s,将r和s分别与enc(x)和enc(y)进行第一运算,随机打乱进行第一运算后的enc(x)和enc(y)的顺序。无论哪种方式,都需要记录随机数的排序后的位置,以确保针对每条数据的正确还原。
[0106]
类似地,生成经二次打乱顺序的enc’(x)和enc’(y)与随机数m和n进行第二运算的第三运算结果可以包括:将经打乱顺序的enc’(x)和enc’(y)的顺序进行二次随机打乱,生成随机数m和n,将m和n分别与经二次打乱顺序的enc’(x)和enc’(y)进行第二运算,得到第三运算结果;或者生成随机数m和n,将m和n分别与经打乱顺序的enc’(x)和enc’(y)进行第三运算,二次随机打乱第二运算后的enc’(x)和enc’(y)的顺序,得到第三运算结果。
[0107]
在利用加法同态时,将用于合作的数据x分割成x1和x2,将用于合作的数据y分割为y1和y2包括:将数据x进行加法秘密共享:x=x1 x2modq;以及将数据y进行加法秘密共享:y
=y1 y2modq。获取合作方使用第一私钥对x1和y1进行同态加密得到enc(x1)和enc(y1)包括:使用第一密钥对x1进行加法同态加密,得到enc(x1);以及使用第一密钥对y1进行加法同态加密,得到enc(y1)。针对enc(x1)和x2以及enc(y1)和y2分别进行同态运算,得到enc(x)和enc(y)包括:针对enc(x1)和x2进行加法同态运算,得到enc(x);以及针对enc(y1)和y2进行加法同态运算,得到enc(y)。此时,所述第一运算是减法运算,后续针对r和s的同态加密也应该是相应的加法同态加密,所述第一运算的逆运算是对应的加法运算。第二运算与第一运算性质相同,也是减法运算,并且第二运算的逆运算也是对应的加法运算。
[0108]
在乘法实现中,甲方将数据x秘密共享分割成x1和x2,乙方将数据y秘密共享分割为y1和y2可以包括:甲方将数据x进行乘法秘密共享分割:x=x1*x2modq;以及乙方将数据y进行乘法秘密共享分割:y=y1*y2modq。甲方获取y1并使用第一私钥对x1和y1进行同态加密得到enc(x1)和enc(y1)可以包括:甲方使用第一密钥对x1进行乘法同态加密,得到enc(x1);以及甲方使用第一密钥对y1进行乘法同态加密,得到enc(y1)。乙方获取x2及enc(x1)和enc(y1),并针对enc(x1)和x2以及enc(y1)和y2分别进行同态运算,得到enc(x)和enc(y)可以包括:乙方针对enc(x1)和x2进行乘法同态运算,得到enc(x);以及乙方针对enc(y1)和y2进行乘法同态运算,得到enc(y)。所述第一运算是除法运算,后续针对r和s的同态加密也应该是相应的乘法同态加密,所述第一运算的逆运算是对应的乘法运算。第二运算与第一运算性质相同,也是除法运算,并且第二运算的逆运算也是对应的乘法运算。
[0109]
另外,在实际应用场景中,甲乙双方投入的数据都包括多条数据,因此,扰动涉及多条x和多条y的混合扰动。于是,将用于合作的数据x分割成x1和x2包括:将用于合作的多条数据x各自分割成x1和x2,以及将用于合作的数据y分割为y1和y2包括:将用于合作的多条数据y各自分割成y1和y2。并且,随机打乱enc(x)和enc(y)的顺序包括:随机打乱多条enc(x)和enc(y)的顺序,以使得来自两方的数据被混合随机排序。将打乱顺序后的enc’(x)和enc’(y)的顺序进行二次随机打乱包括:使得已被混合随机排序的两方数据被二次随机混合排序。
[0110]
进一步地,生成经打乱顺序的enc(x)和enc(y)与随机数r和s进行第一运算的第一运算结果包括:针对enc(x)和enc(y)中包含的每一条数据,各自随机生成随机数进行第一运算。生成经二次打乱顺序的enc’(x)和enc’(y)与随机数m和n进行第二运算的第三运算结果包括:针对enc’(x)和enc’(y)中包含的每一条数据,各自随机生成随机数进行第二运算。由此确保每条数据的随机数都单独生成。
[0111]
图9示出了根据本发明一个实施例可用于实现上述数据处理方法的计算设备的结构示意图。
[0112]
参见图9,计算设备900包括存储器910和处理器920。
[0113]
处理器920可以是一个多核的处理器,也可以包含多个处理器。在一些实施例中,处理器920可以包含一个通用的主处理器以及一个或多个特殊的协处理器,例如图形处理器(gpu)、数字信号处理器(dsp)等等。在一些实施例中,处理器920可以使用定制的电路实现,例如特定用途集成电路(asic,application specific integrated circuit)或者现场可编程逻辑门阵列(fpga,field programmable gate arrays)。
[0114]
存储器910可以包括各种类型的存储单元,例如系统内存、只读存储器(rom),和永久存储装置。其中,rom可以存储处理器920或者计算机的其他模块需要的静态数据或者指
令。永久存储装置可以是可读写的存储装置。永久存储装置可以是即使计算机断电后也不会失去存储的指令和数据的非易失性存储设备。在一些实施方式中,永久性存储装置采用大容量存储装置(例如磁或光盘、闪存)作为永久存储装置。另外一些实施方式中,永久性存储装置可以是可移除的存储设备(例如软盘、光驱)。系统内存可以是可读写存储设备或者易失性可读写存储设备,例如动态随机访问内存。系统内存可以存储一些或者所有处理器在运行时需要的指令和数据。此外,存储器910可以包括任意计算机可读存储媒介的组合,包括各种类型的半导体存储芯片(dram,sram,sdram,闪存,可编程只读存储器),磁盘和/或光盘也可以采用。在一些实施方式中,存储器910可以包括可读和/或写的可移除的存储设备,例如激光唱片(cd)、只读数字多功能光盘(例如dvd-rom,双层dvd-rom)、只读蓝光光盘、超密度光盘、闪存卡(例如sd卡、min sd卡、micro-sd卡等等)、磁性软盘等等。计算机可读存储媒介不包含载波和通过无线或有线传输的瞬间电子信号。
[0115]
存储器910上存储有可执行代码,当可执行代码被处理器920处理时,可以使处理器920执行上文述及的数据处理方法。
[0116]
上文中已经参考附图详细描述了根据本发明的数据处理方法和系统。本发明巧妙利用了秘密共享和同态加密的特性,让甲乙双方分别进行数据随机排序处理时,数据的私钥被另一方持有,由此双方各自处理数据不会影响数据的机密性,并且能够确保最终处理的数据结果以双方都不知晓的顺序随机排序。
[0117]
此外,根据本发明的方法还可以实现为一种计算机程序或计算机程序产品,该计算机程序或计算机程序产品包括用于执行本发明的上述方法中限定的上述各步骤的计算机程序代码指令。
[0118]
或者,本发明还可以实施为一种非暂时性机器可读存储介质(或计算机可读存储介质、或机器可读存储介质),其上存储有可执行代码(或计算机程序、或计算机指令代码),当所述可执行代码(或计算机程序、或计算机指令代码)被电子设备(或计算设备、服务器等)的处理器执行时,使所述处理器执行根据本发明的上述方法的各个步骤。
[0119]
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。
[0120]
附图中的流程图和框图显示了根据本发明的多个实施例的系统和方法的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标记的功能也可以以不同于附图中所标记的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
[0121]
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
再多了解一些

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

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

相关文献