Method and system for realizing secure multi-party computing by using hardware chip

04-04-2023 дата публикации
Номер:
CN115913525A
Автор: ZHOU XING, XU BAOAN
Принадлежит: Shanghai Zixian Technology Co ltd
Контакты:
Номер заявки: 43-10-20227157.5
Дата заявки: 25-04-2022

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

附图说明

[0053]

图1所示为本发明实施例中基于多项式承诺机制的数据库索引的系统框图

[0054]

图2所示为本发明实施例中基于多项式承诺机制的数据库索引的方法流程示意图

技术领域

[0001]

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

具体实施方式

[0055]

下面结合附图1-2,对本发明的具体实施方式作进一步的详细说明。

[0056]

需要说明的是,在本发明的安全多方计算方案中,安全多方计算中的乘法秘密分享(additive secret-sharing)方案基于经典的加法秘密分享(additive secret-sharing)安全多方计算方案,加减乘除等基本运算都是加密计算(cipher-textcomputation)的形式,也即参与计算的各方都不会泄露自己本身的数据,而是只交换一些加密后的数据,但是又能协同完成整体的运算。

[0057]

关键是本发明的乘除等基本运算可以消除双向通信,取而代之的是单向通信,也就是说,通信不处于计算的关键路径上,消除了安全多方计算的性能瓶颈,其通过参与者A和参与者B完全异步的计算,提高了安全多方计算的效率。

[0058]

请参阅图1,图1所示为本发明实施例中基于多项式承诺机制的数据库索引系统的框图。如图1所示,该系统包括N个参与者(0,1,…,N-1)和计算机不可信内存空间。

[0059]

在本发明的实施例中,每一个所述的参与者(0,1,…,N-1)包括一个物理芯片、第一伪随机数发生器、第二伪随机数发生器和乘法运算单元。该物理芯片内部的区域为可信区域,即该区域内的逻辑不可篡改,该区域内部的数据也不可被读取(除该物理芯片的API接口设计可读取的数据外)。

[0060]

每一个所述物理芯片包含有一个外部无法读取的和唯一与相应所述物理芯片对应的私有密钥HK1,但可以用于解密外部输入的加密消息。每一个物理芯片通过各自的所述私有密钥计算得出的相应的非对称加密公钥,每一个所述加密公钥被外部读取作为唯一标识相应所述物理芯片的特征。

[0061]

该私有密钥可以在芯片制造的时候由生产方一次性的写入芯片,也可以利用芯片制造过程中的工艺噪音作为特征来实现,唯一私有密钥的实现方法是业界成熟技术,在此不再赘述。

[0062]

由于物理芯片的设计上确保该私有密钥不可被外部读出,但以该私有密钥作为私钥计算得出的非对称加密公钥可以被外部读取;由此,该公钥也可以唯一标识任一物理芯片。

[0063]

在本发明的实施例中,所述N个参与者(0,1,…,N-1)采用的物理芯片为FPGA。

[0064]

基于以上的特性,持有该物理芯片的安全多方计算参与者可以通过要求对方使用芯片内部密钥签名来确认对方的芯片是否是可信的,即使参与者之间地理距离遥远,也可以通过网络来建立信任。以上为远程认证(Remote Attestation)过程。

[0065]

请参阅图2,图2所示为本发明实施例中基于多项式承诺机制的数据库索引的方法流程示意图。如图2所示,该方法用于乘法秘密分享安全多方计算,包括如下步骤:

[0066]

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

[0067]

具体地,在进行安全多方计算之前,所有参与者(0,1,…,N-1)的物理芯片之间需要协商确定一个共同的种子用于初始化各自的伪随机数发生器,但是该种子不能被泄露。进一步地,参与者的物理芯片内部的真随机数发生器能够生成由芯片物理热噪声生成的真随机数,作为伪随机数发生器的种子的一部分(种子的另一部分由其它参与者提供的加密消息解密得到)。

[0068]

下面以N=2为例进行说明。

[0069]

所述伪随机数发生器种子的产生可以包括如下步骤:

[0070]

首先,所述参与者A用本地物理芯片内部的真随机数发生器生成真随机数SA,并用所述参与者B的芯片的公钥加密成为EncB(SA);

[0071]

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

[0072]

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

[0073]

在本发明的实施例中,安全多方计算参与者(0,1,…,N-1)之间建立了由共同的随机数种子初始化的伪随机数发生器之后,就可以通过乘法运算单元执行乘法操作z=x*y了。

[0074]

请再参阅图1,该乘法运算单元可以包括秘密分享位运算器、随机数寄存器组和秘密分享乘法运算器;所述第一伪随机数发生器和第二伪随机数发生器生成的伪随机数序列,部分或全部缓存在所述随机数寄存器组,以供给所述秘密分享位运算器和秘密分享乘法运算器进行计算,并将得到乘法操作输出到在所述物理芯片外部的计算机不可信内存空间,最后得到x*y的值。

[0075]

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

[0076]

较佳地,所述输出端按秘密分享的方式输出为由重新生成的随机数进行掩码操作(所述重新生成的随机数进行掩码操作包括加分或和按位异或中的一种),以确保输出的数据不会包含超过任意随机数的信息量。

[0077]

具体地,可以通过执行如下步骤实现:

[0078]

步骤S2:在乘法操作z=x*y时,将所述N个参与者(0,1,…,N-1)中的一个参与者选择为执行B的工作,其它剩余的N-1参与者则执行A的工作。每个参与计算的数x会被表示为成N个彼此独立的随机数[x]0,[x]1,…,[x]N-1,第i个参与者仅掌握[x]i,满足[x]0+[x]1+…+[x]N-1=x。

[0079]

N个随机数[x]0,[x]1,…,[x]N-1合在一起被称作原数x的秘密分享,写作[x];计算的参与者i永远不会把自己掌握的那一份秘密分享[x]i告诉任何其它参与者。同理,每个参与计算的数y会被表示为成N个彼此独立的随机数[y]0,[y]1,…,[y]N-1,第i个参与者仅掌握[y]i,满足[y]0+[y]1+…+[y]N-1=y。

[0080]

也就是说,只要有一个参与者不和其它参与者共谋,则无论是哪个参与者都无法知道关于原数据x和y的任何信息。

[0081]

其中,执行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。

[0082]

步骤S3:所述参与者A和参与者B都使用各自所述物理芯片的第一伪随机数发生器生成两个随机数r1和r2,使用各自所述物理芯片的第二伪随机数发生器2生成一个随机数r3。

[0083]

步骤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。

[0084]

步骤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,从而分别得到:

[0085]

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

[0086]

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

[0087]

……

[0088]

[z]N=uN*vN+u*r2+vN*r1-r3=[x]N+[x]0)*([y]N+[y]0)–r1*r2–r3

[0089]

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

[0090]

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

[0091]

[z]B+(N-1)*[z]A=x*y。

[0092]

从上述可以看出,本发明通过特殊设计的芯片硬件,以改进经典的加法秘密分享安全多方计算方案,大大减小乘法操作的通信代价,减小的程度可达几个数量级,从而极大地提供安全多方计算方案在实际应用中的性能。

[0093]

实施例1

[0094]

为便于理解,下面以2个参与方为例对用硬件芯片实现安全多方计算的方法进行详细说明。

[0095]

在安全多方计算参与者(参与者A和参与者B)确认了对方使用的芯片可信之后,参与者之间可以共同决定一个共用的随机数种子,该种子由参与者所持有的芯片的内部的真随机数发生器产生的反应物理硬件随机热噪声的真随机数共同计算得到,且计算的通信过程由物理芯片内部的密钥通过非对称加密保护,计算结果只保留在物理芯片内部,任何一个参与者在物理芯片外部无法读取该随机数种子。

[0096]

所有参与者的物理芯片用这个共用的随机数种子来初始化各自芯片内部的两个独立伪随机数发生器(第一伪随机数发生器和第二伪随机数发生器),当然,也可由随机数种子不同部分分别作为两个伪随机数发生器的初始化种子,以实现两个伪随机数发生器完全独立。

[0097]

较佳地,该伪随机数发生器的随机数生成算法必须是密码学强度的,即在不知道伪随机数发生器初始化种子的情况下,无法由当前的随机数推测出下一个随机数的任何信息。

[0098]

当上述安全多方计算参与者之间建立了由共同的随机数种子初始化的伪随机数发生器之后,就可以进行安全多方计算方案中的乘法操作过程:

[0099]

第一步:参与方A拥有x和y的秘密分享[x]0和[y]0,而参与方B拥有x和y的秘密分享[x]1和[y]1。参与方A和参与方B都使用各自芯片的第一伪随机数发生器生成两个随机数r1和r2,第二伪随机数发生器生成一个随机数r3。参与方A计算d=[x]0-r1,e=[y]0-r2,并且把d和e的值发送(例如,通过网络)给参与方B。

[0100]

第二步:参与方B收到参与方A发送来的d和e,计算u=[x]1+d和v=[y]1+e。需要说明的是,参与方B接收参与方A发送的信息,参与方B并不需要给参与方A发送任何信息,因此是单向通信。

[0101]

第三步:因为A和B的芯片伪随机数发生器使用的是同样的初始化种子,B的芯片内部生成同样的随机数r1、r2和r3。B的芯片内部计算:

[0102]

[z]1=u*v+u*r2+v*r1-r3

[0103]

=([x]1+d)*([y]1+e)+([x]1+d)*r2+([y]1+e)*r1=([x]1+[x]0–r1)*([y]1+[y]0–

[0104]

r2)+([x]1+[x]0–r1)*r2+([y]1+[y]0–r2)*r1–r3=([x]1+[x]0)*([y]1+[y]0)–

[0105]

r1*([y]1+[y]0)–r2*([x]1+[x]0)+r1*r2+([x]1+[x]0)*r2–r1*r2+([y]1+[y]0)*r1–

[0106]

r2*r1–r3=([x]1+[x]0)*([y]1+[y]0)–r1*r2–r3

[0107]

即([x]1+[x]0)*([y]1+[y]0)–r1*r2–r3就是B这边的乘法结果。

[0108]

此时,参与者A则计算[z]0=r1*r2+r3。

[0109]

由此可以很容易验证[z]0+[z]1=([x]0+[x]1)*([y]0+[y]1)=x*y,也就是说参与者A和参与者B各自持有乘法结果的秘密分享。

[0110]

本领域技术人员清楚,上述的例子是针对2个参与者,但是其计算方案可以很容易的扩展到N个参与者:只需要在N个参与者中选择一方执行参与者B的工作,而其它N-1方则执行参与者A的工作,这样N个参与者之间的通信仍然是单向的,N-1个参与者A向执行参与者B的工作的另一方单向发送数据。

[0111]

小结一下,对比上述本发明的计算方案和经典的方案,上述方案的主要优势是改变了参与者的通信模式。与经典方案需要在所有参与者之间双向通信不同,上述方案中的通信是单向的,即只有参与者A向参与者B发送数据,而整个乘法操作过程中参与者B不需要向参与者A发送任何数据。

[0112]

对包含多步骤的乘法操作的复杂运算具有重大意义,单向通信意味着参与者A和参与者B的计算可以是完全异步的,即不必等对方对应的前置步骤完全完成,就可以直接进行后续的计算步骤,因而对于网络通信的延迟不敏感;而如果通信的双向的,参与者A或参与者B必须等待对方对应的步骤完成且通过网络接收到中间结果之后,才能进行后续的计算步骤,这样网络的延迟就会被包含在关键路径上,从而成为整个计算过程的性能瓶颈。

[0113]

实验结果显示,本发明能够将安全多方计算的性能相比传统方案提高100-1000倍,特别是在安全多方计算的参与者处于延续较高的网络环境的条件下。以下是本发明的方案(基于FPGA硬件实现)跟传统方案分别在CPU和GPU的性能对比(网络通信延迟为200毫秒):

[0114]

[0115]

以上所述的仅为本发明的优选实施例,所述实施例并非用以限制本发明的专利保护范围,因此凡是运用本发明的说明书及附图内容所作的等同结构变化,同理均应包含在本发明的保护范围内。

背景技术

[0002]

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

[0003]

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

[0004]

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

[0005]

由于基于单向通讯,安全多方计算中的加法秘密分享(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]。

[0006]

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

[0007]

虽然,参与者并不会透露自己的那一份秘密分享,但是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的秘密分享,很容易验证:

[0008]

[z]0+[z]1+…+[z]N-1=([x]0+[y]0)+([x]1+[y]1)+…+([x]N-1+[y]N-1)

[0009]

=([x]0+[x]1+…+[x]N-1)+([y]0+[y]1+…+[y]N-1)=x+y=z

[0010]

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

[0011]

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

[0012]

①、随机生成一个辅助计算的三元组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个参与者间秘密分享)可通过一些复杂的密码学操作(如同态加密、不经意传输),或者引入一个可信的第三方来实现;然而,上述两种实现方法都必须在参与者之间,或者参与者和可信第三方之间进行一轮或多轮通信。

[0013]

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

[0014]

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

[0015]

d=[d]0+[d]1+…+[d]N-1和e=[e]0+[e]1+…+[e]N-1

[0016]

第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)。

[0017]

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

[0018]

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

[0019]

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

发明内容

[0020]

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

[0021]

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

[0022]

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

[0023]

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

[0024]

步骤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;

[0025]

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

[0026]

步骤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;

[0027]

步骤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,从而分别得到:

[0028]

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

[0029]

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

[0030]

……

[0031]

[z]N=uN*vN+u*r2+vN*r1-r3=[x]N+[x]0)*([y]N+[y]0)–r1*r2–r3

[0032]

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

[0033]

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

[0034]

[z]B+(N-1)*[z]A=x*y。

[0035]

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

[0036]

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

[0037]

首先,所述参与者A用本地物理芯片内部的真随机数发生器生成真随机数SA,并用所述参与者B的芯片的公钥加密成为EncB(SA);

[0038]

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

[0039]

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

[0040]

进一步地,所述N为2。

[0041]

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

[0042]

一种用硬件芯片实现安全多方计算的系统,用于实现乘法秘密分享安全多方计算,其包括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;

[0043]

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

[0044]

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

[0045]

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

[0046]

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

[0047]

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

[0048]

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

[0049]

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

[0050]

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

[0051]

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

[0052]

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



The invention discloses a method and a system for realizing secure multi-party computing by using a hardware chip, and the method comprises the steps: taking a unique physical feature which cannot be read by the outside and is included in a physical chip of each participant as a private key, enabling an asymmetric encryption public key calculated by the private key to be read by the outside, and enabling the public key to uniquely identify any physical chip; before calculation, negotiating among physical chips of all participants to determine a common seed for initializing respective pseudo-random number generators; one party is selected from all the participants to execute the work of the B, the other N-1 parties execute the work of the A, only the A sends data to the B in the whole multiplication operation process, and the B does not need to send any data to the A. Therefore, the method is of great significance to complex operation including multi-step multiplication operation, and one-way communication means that calculation of the participant A and the participant B can be completely asynchronous, so that the method is insensitive to delay of network communication, and the efficiency of secure multi-party calculation is improved.



0001.

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

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

步骤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;

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

步骤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;

步骤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,从而分别得到:

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

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

……

[z]N=uN*vN+u*r2+vN*r1-r3=[x]N+[x]0)*([y]N+[y]0)–r1*r2–r3

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

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

[z]B+(N-1)*[z]A=x*y。

0002.

2.根据权利要求1所述的用硬件芯片实现安全多方计算的方法,其特征在于,所述密钥由所述物理芯片的制造方一次性的写入,或利用芯片所述物理芯片在制造过程中的工艺噪音作为特征来实现。

0003.

3.根据权利要求1所述的用硬件芯片实现安全多方计算的方法,其特征在于,在步骤S1中,所述伪随机数发生器种子的产生包括如下步骤:

首先,所述参与者A用本地物理芯片内部的真随机数发生器生成真随机数SA,并用所述参与者B的芯片的公钥加密成为EncB(SA);

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

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

0004.

4.根据权利要求1所述的用硬件芯片实现安全多方计算的方法,其特征在于,所述N为2。

0005.

5.一种用硬件芯片实现安全多方计算的系统,用于实现乘法秘密分享安全多方计算,其特征在于,包括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;

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

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

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

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

0006.

6.根据权利要求5所述的基于多项式承诺机制的数据库索引的系统,所述乘法运算单元包括秘密分享位运算器、随机数寄存器组和秘密分享乘法运算器;所述第一伪随机数发生器和第二伪随机数发生器生成的伪随机数序列,部分或全部缓存在所述随机数寄存器组,以供给所述秘密分享位运算器和秘密分享乘法运算器进行计算。

0007.

7.根据权利要求6所述的基于多项式承诺机制的数据库索引的系统,其特征在于,所述秘密分享乘法运算器包括输入端和输出端,所述输入端接收所述计算机不可信内存空间的输入操作数的秘密分享,所述输出端用于将输出至所述不可信内存空间的乘法运算结果通过秘密分享的方式输出。

0008.

8.根据权利要求7所述的基于多项式承诺机制的数据库索引的系统,其特征在于,所述输出端按秘密分享的方式输出为由重新生成的随机数进行掩码操作,以确保输出的数据不会包含超过任意随机数的信息量。

0009.

9.根据权利要求5所述的基于多项式承诺机制的数据库索引的系统,其特征在于,所述重新生成的随机数进行掩码操作包括加分或和按位异或中的一种。

0010.

10.根据权利要求5所述的基于多项式承诺机制的数据库索引的系统,其特征在于,所述N个参与者(0,1,…,N-1)采用的物理芯片为FPGA。