一种用硬件芯片实现安全多方计算的方法及系统与流程

文档序号:33736784发布日期:2023-04-06 08:08阅读:59来源:国知局
一种用硬件芯片实现安全多方计算的方法及系统与流程

本发明涉及本发明属于隐私计算领域中的安全多方计算子领域,更具体地,涉及一种用硬件芯片实现安全多方计算的方法及系统。


背景技术:

1、隐私计算(privacy-preserving computing,也称为privacy computing),旨在不暴露原始数据的情况下,使用原始数据进行计算得出结果。如果不使用隐私计算,由于信息的可复制性,将数据交由他方进行计算(使用)意味着数据的暴露,造成数据的使用权和所有权不可分离,由此限制了包含敏感信息或者隐私信息的数据的跨域流动。而隐私计算技术能够将数据的所有权和使用权分离,即做到数据可用不可见,从而实现数据安全合规的跨域流通,创造多方协作挖掘数据价值的机会。

2、安全多方计算(secure multi-party computation,mpc)是隐私计算技术的一个重要分支。安全多方计算的思想是参与计算的多方各持有一部分数据,在不暴露各自数据的前提下,通过一定的通信协议来完成计算。

3、安全多方计算是实现隐私计算(privacy-preserving computing,简称ppc)的重要技术,安全多方计算技术的安全性有数学上的保证。安全多方计算中,加减乘除等基本运算都是加密计算(cipher-text computation)的形式,也即参与计算的各方都不会泄露自己本身的数据,而是只交换一些加密后的数据,但是又能协同完成整体的运算。安全多方计算技术包括秘密分享(secret sharing)和混淆电路(garbled circuit)等技术。

4、由于基于单向通讯,安全多方计算中的加法秘密分享(additive secret-sharing)方案具有优势。假设有n个参与者(编号为0,1,…,n-1),则每一个参与计算的数x会被表示为成n个彼此独立的随机数[x]0,[x]1,…,[x]n-1,其中,第i个参与者仅仅掌握[x]i,且满足[x]0+[x]1+…+[x]n-1=x。这n个随机数[x]0,[x]2,…,[x]n合在一起被称作原数x的秘密分享,写作[x]。

5、计算的参与者i永远不会把自己掌握的那一份秘密分享[x]i告诉任何其它参与者,也就是说,只要有一个参与者不和其它参与者共谋,则无论是哪个参与者都无法知道关于原数据x的任何信息。

6、虽然,参与者并不会透露自己的那一份秘密分享,但是n个参与者依然可以共同完成一些运算。例如,如果数x的秘密分享是[x]0,[x]1,…,[x]n-1,数y的秘密分享是[y]0,[y]1,…,[y]n-1,则多个参与者可在不泄露信息的情况下,计算出数z=x+y的秘密分享。也就是说,参与者i只需要在其本地计算[z]i=[x]i+[y]i,那么由此得出的n个随机数[z]0,[z]1,…,[z]n-1自然称为数z的秘密分享,很容易验证:

7、[z]0+[z]1+…+[z]n-1=([x]0+[y]0)+([x]1+[y]1)+…+([x]n-1+[y]n-1)

8、=([x]0+[x]1+…+[x]n-1)+([y]0+[y]1+…+[y]n-1)=x+y=z

9、也就是说:基于秘密分享的安全多方计算中,计算数之间的加法操作是不需要通信的,各个参与者可以各自本地计算。类似地,操作数之间的减法也是这样,不需要通信。

10、然而,在秘密分享安全多方计算方案中,乘法秘密分享一般会有较大的通信代价,在经典的乘法操作秘密分享安全多方计算方案,乘法操作z=x*y需要分为三步进行。

11、①、随机生成一个辅助计算的三元组a,b,c,使得a*b=c,并且在n个参与者间秘密分享,即第i个参与者得到一个三元组[a]i,[b]i和[c]i,而且,有[a]0+[a]1+…+[a]n-1=a,[b]0+[b]1+…+[b]n-1=b,[c]0+[c]1+…+[c]n-1=c。在现有的方案中,该步骤(创建三元组并安全地在n个参与者间秘密分享)可通过一些复杂的密码学操作(如同态加密、不经意传输),或者引入一个可信的第三方来实现;然而,上述两种实现方法都必须在参与者之间,或者参与者和可信第三方之间进行一轮或多轮通信。

12、②、第i个参与者计算[d]i=[x]i-[a]i,[e]i=[y]i-[b]i,并且把[d]i和[e]i发送给其它所有的n-1个参与者。此步骤在n个参与者之间也引入了一轮多对多的通信。

13、③、每一个参与者都收到了d和e的所有秘密分享,因此可以计算出:

14、d=[d]0+[d]1+…+[d]n-1和e=[e]0+[e]1+…+[e]n-1。

15、第i个参与者计算[z]i=[c]i+e*[x]i+d*[y]i,(特别地,当i=0时第0个参与者计算[z]0=[c]0+e*[x]0+d*[y]0–e*d)。

16、上述容易验算z=[z]0+[z]1+…+[z]n-1=x*y,所以[z]i是乘积z=x*y的秘密分享,而整个计算过程中,没有任何有用的数据暴露。

17、在以上步骤中,第二步和第三步都包含通信过程,更重要的是,通信过程均在完成计算操作的关键路径上,也就是在总计算时间中,本地计算时间会叠加通信的延迟。

18、从上述步骤可以看出,每个乘法基本运算就需要一轮双向通信,那么至少占用一个网络延迟的时间(根据网络状况不同,通常在几毫秒至几百毫秒之间),大大慢于明文计算(plain-text computation)的计算时间。如果在实际应用中,例如,深度学习模型,包含有上百亿个乘法操作,而参与计算的多方常常位于距离遥远的地理位置,通过带宽有限的网络进行通信,即频繁大量地双向通信,直接导致了它的性能较低,乘法秘密分享的安全多方计算通常会比不安全的明文计算慢百倍、几千甚至上万倍不等。


技术实现思路

1、本发明的目的在于提供一种用硬件芯片实现安全多方计算的方法,可在保护各方隐私的前提下,高性能地执行共同运算,来达成跨组织机构间的数据共享和协作,且其可以确保索引的不可篡改性,以及查询数据的准确性。

2、为实现上述目的,本发明的技术方案如下:

3、一种基于用硬件芯片实现安全多方计算的方法,用于乘法秘密分享安全多方计算,其特征在于,包括n个参与者(0,1,…,n-1),每一个所述的参与者(0,1,…,n-1)包括一个物理芯片,每一个所述物理芯片包含有一个外部无法读取的和唯一与相应所述物理芯片对应的私有密钥;每一个物理芯片通过各自的所述私有密钥计算得出的相应的非对称加密公钥,每一个所述加密公钥被外部读取作为唯一标识相应所述物理芯片的特征;其中,所述方法包括如下步骤:

4、步骤s1:在进行乘法秘密分享安全多方计算之前,所有参与者(0,1,…,n-1)的所述物理芯片之间协商确定一个共同的伪随机数发生器种子,用于初始化各自的第一伪随机数发生器和第二伪随机数发生器,其中,n大于等于2;

5、步骤s2:在乘法操作z=x*y时,将所述n个参与者(0,1,…,n-1)中的一个参与者选择为执行b的工作,其它剩余的n-1参与者则执行a的工作;其中,执行b工作的所述参与者拥有x和y的秘密分享([x]0和[y]0),剩余执行a工作的所述n-1个参与者(1,2,…,n-1)分别拥有x和y的秘密分享([x]1+[y]1),([x]2+[y]2)…,([x]n-1+[y]n-1),满足[x]0+[x]1+…+[x]n-1=x,[y]0+[y]1+…+[y]n-1=y;

6、步骤s3:所述参与者a和参与者b都使用各自所述物理芯片的第一伪随机数发生器生成两个随机数r1和r2,使用各自所述物理芯片的第二伪随机数发生器2生成一个随机数r3;

7、步骤s4:执行a工作的所述n-1个参与者(1,…,n-1)分别计算d1=[x]1-r1,e1=[y]1-r2,…,dn=[x]n-r1,en=[y]n-r2,并且把d1,d2…,dn和e1,e2…,dn的值通过所述物理芯片外部的计算机不可信内存空间发送给所述参与者b;

8、步骤s5:所述参与者b接收来自所述参与者a的d1,d2…dn和e1,e2…dn,分别计算u1=[x]1+d1和v1=[y]1+e1,…,un=[x]n+dn和vn=[y]n+en,从而分别得到:

9、[z]1=u1*v1+u*r2+v1*r1-r3=[x]1+[x]0)*([y]1+[y]0)–r1*r2–r3;

10、[z]2=u2*v2+u*r2+v2*r1-r3=[x2+[x]0)*([y]2+[y]0)–r1*r2–r3;

11、……

12、[z]n=un*vn+u*r2+vn*r1-r3=[x]n+[x]0)*([y]n+[y]0)–r1*r2–r3;

13、并将[z]1,[z]2,…[z]n输出到所述物理芯片外部的计算机不可信内存空间,并得到:[z]b=[z]1+[z]2+…+[z]n;

14、步骤s6:在执行a工作的所述n-1个参与者(1,…,n-1)内部分别计算得到[z]a=r1*r2+r3,输出到所述物理芯片外部的计算机不可信内存空间就可得到:

15、[z]b+(n-1)*[z]a=x*y。

16、进一步地,所述密钥由所述物理芯片的制造方一次性的写入,或利用芯片所述物理芯片在制造过程中的工艺噪音作为特征来实现。

17、进一步地,在步骤s1中,所述伪随机数发生器种子的产生包括:

18、首先,所述参与者a用本地物理芯片内部的真随机数发生器生成真随机数sa,并用所述参与者b的芯片的公钥加密成为encb(sa);

19、第二,所述参与者a将encb(sa)发送给所述参与者b;所述参与者b的物理芯片收到encb(sa)之后,用本地所述物理芯片内部的真随机数发生器生成一个真随机数sb,并将encb(sa)用本地的所述私有密钥解密得到sa,用sa和sb拼接成为伪随机数发生器的伪随机数发生器种子,并且,所述参与者b也将sb用所述参与者a的物理芯片的公钥加密成为enca(sb)后,将enca(sb)发送给a;

20、第三,所述参与者a将enca(sb)用本地的私钥解密得到sb,并用sa和sb拼接成为同样的伪随机数发生器种子,以让安全多方计算所有参与者的所述物理芯片之间确定同一个伪随机数发生器种子。

21、进一步地,所述n为2。

22、为实现上述目的,本发明又一技术方案如下:

23、一种用硬件芯片实现安全多方计算的系统,用于实现乘法秘密分享安全多方计算,其包括n个参与者(0,1,…,n-1)和计算机不可信内存空间:其中,所述n个参与者(0,1,…,n-1)被划分成参与者a和参与者b,并且,所述n个参与者(0,1,…,n-1)中的一个参与者选择为执行b的工作,而其它剩余的n-1参与者则执行a的工作;执行b工作的所述参与者拥有x和y的秘密分享([x]0和[y]0),剩余执行a工作的所述n-1个参与者(1,2,…,n-1)分别拥有x和y的秘密分享([x]1+[y]1),([x]2+[y]2)…,([x]n-1+[y]n-1);且满足[x]0+[x]1+…+[x]n-1=x,[y]0+[y]1+…+[y]n-1=y;

24、每一个所述的参与者(0,1,…,n-1)包括:

25、一个物理芯片,每一个所述物理芯片包含有一个外部无法读取的和唯一与相应所述物理芯片对应的私有密钥;每一个物理芯片通过各自的所述私有密钥计算得出的相应的非对称加密公钥,每一个所述加密公钥被外部读取作为唯一标识相应所述物理芯片的特征;

26、第一伪随机数发生器和第二伪随机数发生器,用于产生所有所述参与者(0,1,…,n-1)的所述物理芯片之间协商确定的一个共同的伪随机数发生器种子;所述参与者a和参与者b都使用各自所述物理芯片的第一伪随机数发生器生成两个随机数r1和r2,使用各自所述物理芯片的第二伪随机数发生器2生成一个随机数r3;

27、乘法运算单元,通过执行权利要求1中的步骤s3-步骤s6,在所述物理芯片外部的计算机不可信内存空间得到乘法操作x*y的值z。

28、进一步地,所述乘法运算单元包括秘密分享位运算器、随机数寄存器组和秘密分享乘法运算器;所述第一伪随机数发生器和第二伪随机数发生器生成的伪随机数序列,部分或全部缓存在所述随机数寄存器组,以供给所述秘密分享位运算器和秘密分享乘法运算器进行计算。

29、进一步地,所述秘密分享乘法运算器包括输入端和输出端,所述输入端接收所述计算机不可信内存空间的输入操作数的秘密分享,所述输出端用于将输出至所述不可信内存空间的乘法运算结果通过秘密分享的方式输出。

30、进一步地,所述输出端按秘密分享的方式输出为由重新生成的随机数进行掩码操作,以确保输出的数据不会包含超过任意随机数的信息量。

31、进一步地,所述重新生成的随机数进行掩码操作包括加分或和按位异或中的一种。

32、进一步地,所述n个参与者(0,1,…,n-1)采用的物理芯片为fpga。

33、从上述技术方案可以看出,本发明提出的用硬件芯片实现安全多方计算的方法是通过改变参与者的通信模式,与经典方案需要在所有参与者之间双向通信不同本发明实施例中的通信是单项的。即只有参与者a向参与者b发送数据,而整个乘法操作过程中参与者b不需要向参与者a发送任何数据。也就是说,上述乘法秘密分享的安全多方计算对包含多步骤的乘法操作的复杂运算具有重大意义,单向通信意味着参与者a和参与者b的计算可以是完全异步的,即不必等对方对应的前置步骤完全完成,就可以直接进行后续的计算步骤,因而获得对于网络通信的延迟不敏感,提高了安全多方计算的效率。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1