CN117857039B - 多方安全计算方法、装置、设备及介质 - Google Patents
多方安全计算方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN117857039B CN117857039B CN202410240190.8A CN202410240190A CN117857039B CN 117857039 B CN117857039 B CN 117857039B CN 202410240190 A CN202410240190 A CN 202410240190A CN 117857039 B CN117857039 B CN 117857039B
- Authority
- CN
- China
- Prior art keywords
- secret
- sharing
- computing
- data
- factor
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 141
- 238000000034 method Methods 0.000 claims abstract description 68
- 230000008569 process Effects 0.000 claims abstract description 25
- 239000011159 matrix material Substances 0.000 claims description 41
- 230000006870 function Effects 0.000 claims description 35
- 239000013598 vector Substances 0.000 claims description 31
- 239000004576 sand Substances 0.000 claims description 14
- 238000012545 processing Methods 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 10
- 239000000047 product Substances 0.000 abstract description 69
- 239000006227 byproduct Substances 0.000 abstract description 5
- 238000005516 engineering process Methods 0.000 description 8
- 238000013461 design Methods 0.000 description 6
- 239000000654 additive Substances 0.000 description 4
- 230000000996 additive effect Effects 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000005215 recombination Methods 0.000 description 4
- 230000006798 recombination Effects 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000012946 outsourcing Methods 0.000 description 2
- 230000008521 reorganization Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000003999 initiator Substances 0.000 description 1
- 238000012886 linear function Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000009877 rendering Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
Landscapes
- Storage Device Security (AREA)
Abstract
本发明涉及信息安全技术领域,公开了一种多方安全计算方法、装置、设备及介质,该方法包括:应用于任一计算节点,多个计算节点基于各自持有的秘密份额共同参与多方安全计算,该方法包括:响应于需求方的指示命令,获取自身与包含自身在内的各计算节点之间的交叉不变量;交叉不变量是两个计算节点之间或计算节点自身在执行计算任务过程中保持不变的常量;根据所持有的秘密份额和交叉不变量,确定截断因子;计算所持有的秘密份额与截断因子之差,得到低阶秘密份额;计算低阶秘密份额之积,得到秘密数据乘积的分享结果。这样可以解决乘积分享所带来的分享多项式次数指数级增长的问题,减少了计算资源占用量,显著提升了多方安全计算的效率。
Description
技术领域
本发明涉及信息安全技术领域,特别是涉及一种多方安全计算方法、装置、设备及介质。
背景技术
移动互联网、云计算和大数据等技术的快速发展,孕育并产生了各种新的服务模式和应用。这些服务和应用会采集用户的相关信息,但是所采集信息中往往含有大量的敏感信息,对这些信息的一些操作会直接或间接地泄露用户隐私。多方安全计算技术(SecureMulti-Party Computation,MPC)为该问题提供了解决方案。MPC是指在无可信第三方的情况下,多个参与方协同计算约定的函数,除计算结果以外,各参与方无法通过计算过程中的交互数据推断出其他参与方的原始数据。
在MPC协议的设计中通常采用秘密分享技术。秘密分享是将秘密数据通过某种方式拆分成若干份,然后将秘密份额交给不同的参与方管理,单个参与方无法恢复秘密数据,只有超过特定数量的人合作才能恢复秘密数据。然而,秘密分享同时支持加法和乘积分享运算,其中乘积分享运算会导致分享多项式的次数指数级增长,运算相对复杂,计算资源占用量大。在相关技术方案中会利用重组向量或随机双分享对分享多项式进行降阶,但是计算开销较大,降低了多方安全计算效率。
发明内容
本发明的目的是提供一种多方安全计算方法、装置、设备及介质,可以减少计算资源占用量,显著提升多方安全计算的效率。
为了解决上述技术问题,本发明提供一种多方安全计算方法,应用于任一计算节点,多个计算节点基于各自持有的秘密份额共同参与多方安全计算,所述方法包括:
响应于需求方的指示命令,获取自身与包含自身在内的各计算节点之间的交叉不变量;所述交叉不变量是两个计算节点之间或计算节点自身在执行计算任务过程中保持不变的常量;
根据所持有的秘密份额和所述交叉不变量,确定截断因子;
计算所持有的秘密份额与所述截断因子之差,得到低阶秘密份额;
计算所述低阶秘密份额之积,得到秘密数据乘积的分享结果。
第一方面,在本发明提供的上述多方安全计算方法中,获取自身与包含自身在内的各计算节点之间的交叉不变量,包括:
接收所述需求方分配的公开标识;所述公开标识为所述需求方从有限域中选取的非零元素;各计算节点分配到的所述公开标识互异;
根据分配的所述公开标识,获取自身与包含自身在内的各计算节点之间的交叉不变量。
另一方面,在本发明提供的上述多方安全计算方法中,在获取自身与包含自身在内的各计算节点之间的交叉不变量之后,还包括:
接收数据方通过沙米尔秘密分享方式分享的秘密数据或秘密数据的若干次幂,以获得自身持有的秘密份额。
另一方面,在本发明提供的上述多方安全计算方法中,所述数据方通过沙米尔秘密分享方式分享秘密数据或秘密数据的若干次幂的过程,包括:
所述数据方接收所述需求方确定的功能函数;所述功能函数对应各数据方的数据所要完成的计算任务;
基于所述功能函数的形式,计算秘密数据的若干次幂;
根据各计算节点的所述公开标识,将秘密数据或秘密数据的若干次幂通过沙米尔秘密分享进行处理,得到秘密数据或秘密数据的若干次幂的多个秘密份额并分发至对应的计算节点。
另一方面,在本发明提供的上述多方安全计算方法中,采用下述公式确定所述功能函数:
;
其中,分别为/>个数据方/>所持有的秘密数据;/>为/>元有限域,/>为素数幂;/>公开,称为数乘因子;/>均为公开数据,/>为自然数集,为秘密数据/>的/>次幂,/>为秘密数据/>的/>次幂,/>为秘密数据/>的/>次幂。
另一方面,在本发明提供的上述多方安全计算方法中,根据分配的所述公开标识,获取自身与包含自身在内的各计算节点之间的交叉不变量,包括:
计算阶数阈值;
根据各计算节点的所述公开标识,生成多阶范德蒙方阵;
计算所述多阶范德蒙方阵的逆矩阵,并根据所述阶数阈值,将所述逆矩阵中设定位置的元素按照设定顺序排列得到目标向量;
根据所述目标向量、所述阶数阈值结合自身分配的所述公开标识,得到自身与包含自身在内的各计算节点之间的交叉不变量。
另一方面,在本发明提供的上述多方安全计算方法中,采用下述公式得到所述交叉不变量:
;
;
;
;
其中,为/>的交叉不变量,/>为第/>个计算节点,/>为第/>个计算节点,,/>,/>为所有计算节点的总个数;/>为所述阶数阈值;/>为/>阶范德蒙方阵,阶范德蒙方阵的逆矩阵/>;/>为所述公开标识;/>为所述逆矩阵/>中第/>行、第/>至第/>列的/>个元素按照设定顺序排列而成的目标向量。
另一方面,在本发明提供的上述多方安全计算方法中,采用下述公式将秘密数据或秘密数据的若干次幂通过沙米尔秘密分享进行处理:
;
;
其中,由所述数据方秘密且随机选取,/>为秘密数据/>或/>的若干次幂的分享向量,/>,/>为数据方的总个数;当/>为/>时,计算/>是对/>进行沙米尔秘密分享,分享的结果为/>的/>个秘密份额/>;当/>为/>的若干次幂时,计算/>是对/>的若干次幂进行沙米尔秘密分享,分享的结果为/>的若干次幂的/>个秘密份额/>;/>为/>的前/>行向量按照既定顺序排列而成的/>阶子矩阵;/>,符号/>表示集合/>,/>表示由有限域/>上全体/>维向量构成的线性空间。
另一方面,在本发明提供的上述多方安全计算方法中,采用下述公式将秘密数据或秘密数据的若干次幂通过沙米尔秘密分享进行处理:
;
其中,为秘密数据/>或/>的若干次幂的分享多项式,由所述数据方秘密且随机选取/>,当/>为/>时,计算是对/>进行沙米尔秘密分享,分享的结果为/>的/>个秘密份额;当/>为/>的若干次幂时,计算/>是对/>的若干次幂进行沙米尔秘密分享,分享的结果为/>的若干次幂的/>个秘密份额/>;/>,符号/>表示集合/>。
另一方面,在本发明提供的上述多方安全计算方法中,根据所持有的秘密份额和所述交叉不变量,确定截断因子,包括:
根据所持有的秘密份额和所述交叉不变量,获取中间截断因子;
根据加法秘密分享拆分所述中间截断因子,得到中间截断因子份额并分享至其它计算节点,以使其它计算节点得到截断因子中间值;
计算所述截断因子中间值之和,确定截断因子。
另一方面,在本发明提供的上述多方安全计算方法中,采用下述方式得到秘密数据乘积的分享结果:
设,/>为形如/>的秘密数据,其中/>,/>,/>为自然数集;
设,/>的分享多项式/>,/>的形式为:
;
;
其中,,/>,/>,/>,/>,/>;
令,称为/>的截断多项式;令/>,称为/>的截断多项式;
令,/>;
计算,得到/>经多项式/>分享的秘密份额:
;
其中,的次数不超过/>,/>是/>经截断多项式/>分享的秘密份额,/>是/>经截断多项式/>分享的秘密份额。
另一方面,在本发明提供的上述多方安全计算方法中,根据所持有的秘密份额和所述交叉不变量,获取中间截断因子,包括:
计算秘密数据经对应的分享多项式分享的秘密份额和所述交叉不变量之积,获取中间截断因子。
另一方面,在本发明提供的上述多方安全计算方法中,采用下述方式得到秘密数据经截断多项式/>分享的秘密份额/>:
;
;
;
;
;
其中,为/>的交叉不变量,/>为计算节点/>的/>经分享多项式/>分享的秘密份额,/>为中间截断因子,/>为中间截断因子份额,/>为计算节点/>计算出的截断因子中间值,/>,/>为计算节点/>计算出的截断因子,/>为计算节点/>的/>经分享多项式分享的秘密份额。
另一方面,在本发明提供的上述多方安全计算方法中,采用下述方式得到秘密数据经截断多项式/>分享的秘密份额/>:
;
;
;
;
;
其中,为/>的交叉不变量,/>为计算节点/>的/>经分享多项式/>分享的秘密份额,/>为中间截断因子,/>为中间截断因子份额,/>为计算节点/>计算出的截断因子中间值,/>为计算节点/>计算出的截断因子,/>为计算节点/>的/>经分享多项式/>分享的秘密份额。
另一方面,在本发明提供的上述多方安全计算方法中,还包括:
计算所持有的秘密份额之和,得到秘密数据和的分享结果;
计算所持有的秘密份额和所述数乘因子之积,得到秘密数据与数乘因子乘积的分享结果。
另一方面,在本发明提供的上述多方安全计算方法中,采用下述方式得到所述秘密数据和的分享结果:
令,/>,其中/>,/>分别为/>,/>的分享多项式,且次数均不超过/>;
计算,得到/>经多项式/>分享的秘密份额:
;
其中,的次数不超过/>。
另一方面,在本发明提供的上述多方安全计算方法中,采用下述方式得到所述秘密数据与数乘因子乘积的分享结果:
对于任意的,令/>,/>,其中/>为/>的分享多项式,且次数不超过/>;
计算,获得/>经多项式/>分享的秘密份额:
;
其中,的次数不超过/>。
另一方面,在本发明提供的上述多方安全计算方法中,还包括:
根据所述秘密数据和的分享结果,所述秘密数据与数乘因子乘积的分享结果,所述秘密数据乘积的分享结果,以及所述功能函数,得到计算任务的最终结果中间值;
利用加法秘密分享的方式将所述最终结果中间值分享给其它计算节点,以使各计算节点求和并发送给所述需求方,所述需求方再求和后得到计算任务的最终结果。
另一方面,在本发明提供的上述多方安全计算方法中,采用下述方式得到计算任务的最终结果:
;
;
;
;
其中,为最终结果,/>为所述最终结果中间值,/>,/>为位于/>阶范德蒙方阵的逆矩阵/>第/>行、第1列的元素,/>为计算节点/>所持有的最终结果的秘密份额。
为了解决上述技术问题,本发明还提供一种多方安全计算装置,应用于任一计算节点,多个计算节点基于各自持有的秘密份额共同参与多方安全计算,所述装置包括:
交叉不变量获取模块,用于响应于需求方的指示命令,获取自身与包含自身在内的各计算节点之间的交叉不变量;所述交叉不变量是两个计算节点之间或计算节点自身在执行计算任务过程中保持不变的常量;
截断因子确定模块,用于根据所持有的秘密份额和所述交叉不变量,确定截断因子;
低阶份额获取模块,用于计算所持有的秘密份额与所述截断因子之差,得到低阶秘密份额;
乘积分享模块,用于计算所述低阶秘密份额之积,得到秘密数据乘积的分享结果。
为了解决上述技术问题,本发明还提供一种多方安全计算设备,应用于任一计算节点,多个计算节点基于各自持有的秘密份额共同参与多方安全计算,所述设备包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现上述的多方安全计算方法的步骤。
为了解决上述技术问题,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述的多方安全计算方法的步骤。
从上述技术方案可以看出,本发明所提供的一种多方安全计算方法,应用于任一计算节点,多个计算节点基于各自持有的秘密份额共同参与多方安全计算,该方法包括:响应于需求方的指示命令,获取自身与包含自身在内的各计算节点之间的交叉不变量;交叉不变量是两个计算节点之间或计算节点自身在执行计算任务过程中保持不变的常量;根据所持有的秘密份额和交叉不变量,确定截断因子;计算所持有的秘密份额与截断因子之差,得到低阶秘密份额;计算低阶秘密份额之积,得到秘密数据乘积的分享结果。
本发明的有益效果在于,本发明提供的上述多方安全计算方法,利用多项式截断的方式对乘积分享中的分享多项式进行降阶的思想,首先获取自身与包含自身在内的各计算节点之间的交叉不变量,然后利用该交叉不变量和所持有的秘密份额,确定截断因子,通过计算所持有的秘密份额与截断因子之差,得到低阶秘密份额,最后利用低阶秘密份额之积来得到秘密数据乘积的分享结果,这样减少了计算资源占用量,可以解决乘积分享所带来的分享多项式次数指数级增长的问题。相对于利用重组向量或随机双分享进行降阶的传统方法,本发明的多方安全计算方式显著减少了乘法运算量,显著提升了多方安全计算的效率。
此外,本发明还针对多方安全计算方法提供了相应的多方安全计算装置、多方安全计算设备及计算机可读存储介质,与上述提到的多方安全计算方法具有相同或相对应的技术特征,效果同上。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的多方安全计算方法的流程图;
图2为本发明实施例提供的多方安全计算装置的结构示意图;
图3为本发明实施例提供的多方安全计算设备的结构示意图。
具体实施方式
在信息安全技术领域中,通常采用多方安全计算技术对采集到的用户敏感信息进行安全保护,防止对这些信息的分享、收集、分布、分析与利用等操作时泄露用户隐私。在多方安全计算协议的设计中一般采用秘密分享技术将秘密数据通过某种方式拆分成若干份,然后将秘密份额交给不同的参与方管理,单个参与方无法恢复秘密数据,只有超过特定数量(门限值)的人合作才能恢复秘密数据。除此之外,秘密分享还具有某种同态性,即可以对秘密份额进行运算。这种同态性使得秘密分享被广泛应用于构造多方安全计算协议。秘密分享同时支持加法和乘积分享运算,其中乘积分享运算会导致分享多项式的次数指数级增长,运算相对复杂,计算资源占用量大。因此,乘法分享需要对分享多项式进行降阶处理。
在相关技术方案中主要有两种高效的降阶方法:一是各参与方(可理解为计算方)将秘密份额的乘积嵌入到独立构造的低阶多项式中,并利用重组向量构造秘密数据乘积的分享多项式,其中重组向量可以由各参与方的公开标识计算得到;二是各参与方协作生成随机双分享和/>,符号/>表示随机数/>经/>次多项式得到的分享;符号/>表示随机数/>经/>次多项式得到的分享,然后将秘密份额的乘积与/>相加,并发送给特定参与方进行重构,再由特定参与方将重构结果(随机数/>与秘密数据乘积的和)分享给各参与方,各参与方减去/>即得到秘密数据乘积的分享。然而,这两种方法计算开销较大,降低了多方安全计算协议的实现效率。例如,完成一次乘法分享第一种方法需要执行/>乘法运算,第二种方法需要执行/>乘法运算,其中/>,/>表示/>的某个线性函数,/>表示参与方数量,/>表示分享多项式的次数。
本发明的核心是提供一种多方安全计算方法、装置、设备及介质,应用于任一计算节点,多个计算节点基于各自持有的秘密份额共同参与多方安全计算,以解决乘积分享所带来的分享多项式次数指数级增长的技术问题,减少计算开销,提高多方安全计算协议的实现效率。
计算节点在多方安全计算方法中代表的是计算方,是分布在分布式系统中,分布式系统中包括多个计算节点,多个计算节点基于各自持有的秘密份额共同参与多方安全计算。需要说明的是,本发明涉及三类参与对象,即需求方、数据方、计算方(即计算节点)。需求方是计算任务的发起方,来完成系统的初始化。数据方是为计算任务提供数据来源,即拥有大量数据的参与方;示例性地,数据方可以是拥有大量医疗数据的医院。计算方是基于数据方的数据输入,完成后续阶段的计算任务,并将最终结果反馈给需求方;示例性地,计算方可以是拥有大量计算资源的各类云计算服务提供商。
需要指出的是,根据应用场景不同,数据方、计算方和需求方等彼此的身份可以重合。例如,数据方可以同时为需求方,也可以同时为计算方和需求方。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
为了使本技术领域的人员更好地理解本发明方案,下面结合附图和具体实施方式对本发明作进一步的详细说明。图1为本发明实施例提供的多方安全计算方法的流程图,该方法应用于任一计算节点,多个计算节点基于各自持有的秘密份额共同参与多方安全计算。如图1所示,该方法包括:
S101、响应于需求方的指示命令,获取自身与包含自身在内的各计算节点之间的交叉不变量。
需要注意的是,交叉不变量是两个计算节点之间或计算节点自身在执行计算任务过程中保持不变的常量。
在实施中,需求方向各计算节点发送指示命令,该指示命令可携带有待处理的计算任务。在执行步骤S101时,任一计算节点响应于需求方的指示命令后,可以获取自身与包含自身在内的各计算节点之间的交叉不变量。
S102、根据所持有的秘密份额和交叉不变量,确定截断因子。
需要补充的是,截断因子是指计算节点当前所持有的秘密份额对应分享多项式的高阶部分的函数值。
在实施中,在执行步骤S102时,各计算节点通过交互并基于所持有的秘密份额和交叉不变量,可以计算出截断因子,进而便于计算后续的低阶秘密份额。也就是说,计算节点当前所持有的秘密份额对应分享多项式的高阶部分可由交叉不变量来确定。
S103、计算所持有的秘密份额与截断因子之差,得到低阶秘密份额。
需要说明的是,低阶秘密份额指的是当前所持有的秘密份额对应分享多项式的低阶部分的份额。也就是说,在执行步骤S103时,计算节点将当前所持有的秘密份额减去对应分享多项式的高阶部分的函数值,就可以得到低阶秘密份额。
S104、计算低阶秘密份额之积,得到秘密数据乘积的分享结果。
在实施中,在执行步骤S104时,各计算节点在本地计算低阶秘密份额之积,可以得到秘密数据乘积的分享。
本发明实施例提供的上述多方安全计算方法中,利用多项式截断的方式对乘积分享中的分享多项式进行降阶的思想,首先获取自身与包含自身在内的各计算节点之间的交叉不变量,然后利用该交叉不变量和所持有的秘密份额,确定截断因子,通过计算所持有的秘密份额与截断因子之差,得到低阶秘密份额,最后利用低阶秘密份额之积来得到秘密数据乘积的分享结果,这样减少了计算资源占用量,可以解决乘积分享所带来的分享多项式次数指数级增长的问题。相对于利用重组向量或随机双分享进行降阶的传统方法,本发明的多方安全计算方式显著减少了乘法运算量,显著提升了多方安全计算的效率。
进一步地,在具体实施时,在本发明实施例提供的上述多方安全计算方法中,步骤S101获取自身与包含自身在内的各计算节点之间的交叉不变量,具体可以包括:首先,接收需求方分配的公开标识;公开标识为需求方从有限域中选取的非零元素;各计算节点分配到的公开标识互异;然后,根据分配的公开标识,获取自身与包含自身在内的各计算节点之间的交叉不变量。
需要说明的是,需求方可以从有限域中选取若干个互异非零元素作为各计算节点的公开标识,为各计算节点分配对应的公开标识(身份标识),这是系统初始化阶段进行的。
在实施中,需求方可以随机从有限域中选取个互异的非零元素/>,/>为/>元有限域,/>为素数幂;并将/>发送给计算节点/>,作为计算节点/>的公开标识,,/>为所有计算节点的总个数。
计算节点基于分配到的公开标识计算自身与包含其自身在内的各计算节点之间的交叉不变量并存储在本地,用于后续各阶段的计算任务,这是系统预计算的过程。该交叉不变量在整个计算任务执行过程中保持不变。
进一步地,在具体实施时,在本发明实施例提供的上述多方安全计算方法中,在执行步骤S101获取自身与包含自身在内的各计算节点之间的交叉不变量之后,还可以包括:接收数据方通过沙米尔秘密分享方式分享的秘密数据或秘密数据的若干次幂,以获得自身持有的秘密份额。
在实施中,数据方将秘密数据或秘密数据若干次幂通过沙米尔秘密分享进行处理,处理结果就是得到秘密数据或秘密数据若干次幂的个秘密份额,然后分享给/>个计算节点,这是系统数据输入阶段进行的。在分享完各计算节点后,数据方的任务完成,此时数据方可退出系统。
在具体实施时,在上述步骤中数据方通过沙米尔秘密分享方式分享秘密数据或秘密数据的若干次幂的过程,具体可以包括:首先,接收需求方确定的功能函数;功能函数对应各数据方的数据所要完成的计算任务;然后,基于功能函数的形式,计算秘密数据的若干次幂;最后,根据各计算节点的公开标识,将秘密数据或秘密数据的若干次幂通过沙米尔秘密分享进行处理,得到秘密数据或秘密数据的若干次幂的多个秘密份额并分发至对应的计算节点。
在实施中,需求方可以根据场景需求确定基于各数据方(即个数据方)的数据所要完成的计算任务,即确定功能函数,并发送至数据方,这是系统初始化阶段进行的。
在具体实施时,上述功能函数可以包括但不限于如下形式的元多项式函数:
;(1)
其中,分别为/>个数据方/>所持有的秘密数据;/>公开,称为数乘因子;/>均为公开数据,/>为自然数集,/>为秘密数据/>的/>次幂,/>为秘密数据/>的/>次幂,/>为秘密数据/>的/>次幂。
在数据输入阶段,数据方基于功能函数的形式,在本地计算秘密数据的若干次幂,并基于计算节点的公开标识,通过沙米尔(Shamir)秘密分享技术将秘密数据及其相应的幂进行处理,得到秘密数据或秘密数据的若干次幂的多个秘密份额并分发至各计算节点。各计算节点基于系统初始化结果和所持有的秘密份额计算交叉不变量,用于后续阶段的计算任务。这种方式可以增强数据的安全性,保护个人隐私信息。
进一步地,在具体实施时,在本发明实施例提供的上述多方安全计算方法中,根据分配的公开标识,获取自身与包含自身在内的各计算节点之间的交叉不变量,具体可以包括:首先,计算阶数阈值;然后,根据各计算节点的公开标识,生成多阶范德蒙方阵;之后,计算多阶范德蒙方阵的逆矩阵,并根据阶数阈值,将逆矩阵中设定位置的元素按照设定顺序排列得到目标向量;最后,根据目标向量、阶数阈值结合自身分配的公开标识,得到自身与包含自身在内的各计算节点之间的交叉不变量。
需要说明的是,由计算节点的公开标识和公开矩阵唯一确定的常量,在整个计算任务执行过程中保持不变。
在具体实施时,首先,可以采用下述公式计算阶数阈值:
;(2)
其中,为阶数阈值,/>为所有计算节点的总个数。
然后,基于个计算节点的公开标识,可以采用下述公式生成/>阶范德蒙方阵:
;(3)
其中,为/>阶范德蒙方阵,/>为公开标识。
之后,计算阶范德蒙方阵的逆矩阵/>,并将逆矩阵/>中第/>行、第/>至第/>列的/>个元素按照设定顺序排列而成的目标向量;该目标向量记为/>。
对于,/>,采用下述公式得到交叉不变量:
;(4)
;(5)
其中,为/>的交叉不变量,/>为第/>个计算节点,/>为第/>个计算节点。
需要指出的是,交叉不变量下角标两个数字是区分顺序的,即与/>不是同一个量。因此,在描述有关计算节点/>,/>的交叉不变量时,用符号/>或/>指明相应顺序。
进一步地,在具体实施时,在本发明实施例提供的上述多方安全计算方法中,对于,/>为数据方的总个数,数据方/>可以采用以下两种实施方式将秘密数据/>或秘密数据/>的若干次幂分享给/>个计算节点。
在第一种实施方式中,可以采用下述公式将秘密数据或秘密数据/>的若干次幂通过沙米尔秘密分享进行处理:
;(6)
;(7)
其中,由数据方秘密且随机地选取/>来构造分享向量/>,/>为秘密数据/>或/>的若干次幂的分享向量。/>为/>的前/>行向量按照既定顺序排列而成的阶子矩阵,/>,符号/>表示集合/>,/>表示由有限域/>上全体维向量构成的线性空间。
需要说明的是,当为/>时,计算/>是对/>进行沙米尔秘密分享,分享的结果为/>的/>个秘密份额,即/>。当/>为/>的若干次幂时,计算/>是对/>的若干次幂进行沙米尔秘密分享,分享的结果为/>的若干次幂的/>个秘密份额,即/>。也即/>是什么,通过/>分享的就是什么。/>表示计算节点/>所持有的秘密数据/>经/>分享的秘密份额。
在第二种实施方式中,可以采用下述公式将秘密数据或秘密数据/>的若干次幂通过沙米尔秘密分享进行处理:
;(8)
其中,为秘密数据/>或/>的若干次幂的分享多项式,由所述数据方秘密且随机选取/>。/>,符号/>表示集合。
需要说明的是,多项式的常数项即为秘密数据/>,也即/>。
当为/>时,计算/>是对/>进行沙米尔秘密分享,分享的结果为/>的/>个秘密份额,即/>;当/>为/>的若干次幂时,计算是对/>的若干次幂进行沙米尔秘密分享,分享的结果为/>的若干次幂的/>个秘密份额,即/>;也即/>是什么,通过多项式/>分享的就是什么。/>表示计算节点/>所持有的秘密数据/>经多项式/>分享的秘密份额。
进一步地,在具体实施时,在本发明实施例提供的上述多方安全计算方法中,还可以包括:计算所持有的秘密份额之和,得到秘密数据和的分享结果。
在实施中,各计算节点在本地计算秘密份额之和,得到秘密数据和的分享,这是系统加法分享阶段进行的。
对于,设计算节点/>获得了秘密数据/>,/>对应的秘密份额/>,/>。需要指出的是,秘密数据/>,/>可以为任意两个数据方的原始秘密数据/>,/>(/>),其中/>表示集合/>。秘密数据/>,/>也可以是任务执行过程中的任意两个中间结果。示例性地,秘密数据/>,/>可以为形如/>的秘密数据,其中,/>,/>,/>为自然数集。
令,/>,其中/>,/>分别为/>,/>的分享多项式,且次数均不超过/>。对于/>,计算节点/>计算/>,即得到/>经多项式/>分享的秘密份额:
;(9)
其中,的次数不超过/>。以上得到了秘密数据和的分享结果。
进一步地,在具体实施时,在本发明实施例提供的上述多方安全计算方法中,还可以包括:计算所持有的秘密份额和数乘因子之积,得到秘密数据与数乘因子乘积的分享结果。
在实施中,各计算节点在本地计算秘密份额与数乘因子之积,得到秘密数据与数乘因子乘积的分享,这是系统数乘分享阶段进行的。
对于,设计算节点/>获得了秘密数据/>对应的秘密份额/>。需要指出的是,秘密数据/>可以为任意数据方的原始秘密数据/>(/>),其中/>表示集合/>。秘密数据/>也可以是任务执行过程中的任意中间结果。
示例性地,秘密数据可以为形如/>的秘密数据,其中,/>,,/>为自然数集。
对于任意的,令/>,/>,其中/>为/>的分享多项式,且次数不超过/>。由于/>是公开的,计算节点/>在本地计算/>,即获得/>经多项式/>分享的秘密份额:
;(10)
其中,的次数不超过/>。以上得到了秘密数据与数乘因子乘积的分享结果。
进一步地,在具体实施时,在本发明实施例提供的上述多方安全计算方法中,步骤S102根据所持有的秘密份额和交叉不变量,确定截断因子,具体可以包括:首先,根据所持有的秘密份额和交叉不变量,获取中间截断因子;然后,根据加法秘密分享拆分中间截断因子,得到中间截断因子份额并分享至其它计算节点,以使其它计算节点得到截断因子中间值;最后,计算截断因子中间值之和,确定截断因子。
需要说明的是,上述步骤中根据所持有的秘密份额和交叉不变量,获取中间截断因子,具体可以包括:根据计算节点经对应的分享多项式分享的秘密份额与计算节点自身关于其他计算节点交叉不变量的乘积,来获取中间截断因子。也就是说,中间截断因子是指计算节点经对应的分享多项式分享的秘密份额与交叉不变量的乘积,功能是用于后续计算截断因子。
在实施中,各计算节点基于秘密份额和交叉不变量计算中间截断因子,并基于加法秘密分享拆分并传递中间截断因子;各计算节点计算中间截断因子之和即得到截断因子,以秘密份额减去截断因子即得到低阶的秘密份额;各计算节点在本地计算低阶秘密份额的乘积即得到秘密数据乘积的分享。
对于,设计算节点/>已经获得秘密数据/>,/>对应的秘密份额/>,/>。需要指出的是,秘密数据/>,/>可以为任意两个数据方的原始秘密数据/>,/>(/>),其中/>表示集合/>。秘密数据/>,/>也可以是任务执行过程中的任意两个中间结果。示例性地,秘密数据/>,/>可以为形如/>的秘密数据,其中,/>,/>,/>为自然数集。
接下来,设,/>的分享多项式/>,/>具有如下的形式:
;(11)
;(12)
其中,,/>,/>,/>,/>,/>;
令,称为/>的截断多项式;令/>,称为/>的截断多项式;/>
需要说明的是,此处对于,/>的形式定义仅是为了方便描述,对于/>或的情形,可以默认/>或/>,且不影响后续各阶段计算任务的执行。
令,/>;
对于,计算节点/>执行以下步骤可以获得/>经多项式/>分享的秘密份额。
步骤一、对于,计算节点/>执行如下步骤可以获得秘密数据/>经截断多项式/>分享的秘密份额/>。
对于,计算节点/>可以采用下述公式计算中间截断因子:
;(13)
其中,为/>的交叉不变量,/>为计算节点/>的/>经分享多项式/>分享的秘密份额,/>为中间截断因子。
接下来,计算节点可以基于下述公式将中间截断因子/>随机拆分,并将拆分后的中间截断因子份额发送给计算节点/>:
;(14)
其中,将中间截断因子随机拆分成/>份,/>为中间截断因子份额,/>,。
在接收到中间截断因子份额之后,对于/>,计算节点/>可以采用下述公式计算截断因子中间值:
;(15)
其中,为计算节点/>计算出的截断因子中间值。
在计算截断因子中间值之后,发送给计算节点/>。计算节点/>可以采用下述公式计算截断因子:
;(16)
其中,为计算节点/>计算出的截断因子。
最后,由计算节点采用下述公式来计算秘密数据/>经截断多项式/>分享的秘密份额/>:
;(17)
其中,为计算节点/>的/>经分享多项式/>分享的秘密份额。
因为;/>
从而;
且。
步骤二、对于,计算节点/>执行如下步骤可以获得秘密数据/>经截断多项式/>分享的秘密份额/>。
对于,计算节点/>可以采用下述公式计算中间截断因子:
;(18)
其中,为/>的交叉不变量,/>为计算节点/>的/>经分享多项式/>分享的秘密份额,/>为中间截断因子。
接下来,计算节点可以基于下述公式将中间截断因子/>随机拆分,并将拆分后的中间截断因子份额发送给计算节点/>:
;(19)
其中,将中间截断因子随机拆分成/>份,/>为中间截断因子份额,/>,。
在接收到中间截断因子份额之后,对于/>,计算节点/>可以采用下述公式计算截断因子中间值:
;(20)
其中,为计算节点/>计算出的截断因子中间值。
在计算截断因子中间值之后,发送给计算节点/>。计算节点/>可以采用下述公式计算截断因子:
;(21)
其中,为计算节点/>计算出的截断因子。
最后,由计算节点采用下述公式来计算秘密数据/>经截断多项式/>分享的秘密份额/>:
;(22)
其中,为计算节点/>的/>经分享多项式/>分享的秘密份额。
因为;/>
从而;
且。
步骤三、计算节点计算/>,即得到/>经多项式/>分享的秘密份额:
;(23)
其中,的次数不超过/>,/>是/>经截断多项式/>分享的秘密份额,/>是/>经截断多项式/>分享的秘密份额。
需要强调的是,本发明提供的上述多方安全计算方法完成一次乘法分享需求执行次乘法运算,而传统方法至少需要执行/>次乘法运算,其中/>。
进一步地,在具体实施时,在本发明实施例提供的上述多方安全计算方法中,还可以包括:首先,根据秘密数据和的分享结果,秘密数据与数乘因子乘积的分享结果,秘密数据乘积的分享结果,以及功能函数,得到计算任务的最终结果中间值;然后,利用加法秘密分享的方式将最终结果中间值分享给其它计算节点,以使各计算节点求和并发送给需求方,需求方再求和后得到计算任务的最终结果。这样在满足最终结果不泄露于计算节点、中间结果不泄露于需求方等要求的前提下,需求方获得最终结果,尤其适用于计算外包以及数据方和需求方不一致的应用场景。
在实施中,各计算节点在经过有限次加法分享和乘法分享后得到最终结果的分享,再通过上述结果解析算法即可得到整个计算任务的最终结果,该结果解析算法具体可以先计算最终结果中间值,该最终结果中间值是指在获取计算任务最终结果过程中的中间值,并不是最终的结果,还需进行后续操作。在后续操作中,将最终结果中间值通过加法秘密分享的方法分享给各计算节点,各计算节点求和后再发送给需求方,需求方再求和即得到最终结果。
在具体实施时,在本发明实施例提供的上述多方安全计算方法中,采用下述方式得到计算任务的最终结果:
;(24)
;(25)
;(26)
;(27)
其中,为最终结果,/>为最终结果中间值,/>,/>为位于/>阶范德蒙方阵的逆矩阵/>第/>行、第1列的元素,/>为计算节点/>所持有的最终结果的秘密份额,/>不公开。
在实施中,设最终结果为,且处于分享的状态,设计算节点/>持有秘密份额/>,。
首先,计算节点计算最终结果中间值/>;/>
然后,计算节点基于公式/>对最终结果中间值/>进行随机拆分,其中,。计算节点/>将/>发送给计算节点/>,/>。
之后,计算节点计算/>,并发送给需求方。
最后,需求方计算,得到计算任务的最终结果。
需要指出的是,为方便描述本发明提供的上述多方安全计算方法,上述描述仅考虑单需求方情形,对于多需求方情形,并行执行本发明提供的上述多方安全计算方法即可。
综上,本发明提供的上述多方安全计算方法,可以包括:基于计算节点的公开标识定义了计算节点自身与包含自身在内的各计算节点之间的交叉不变量;各计算节点基于所持有的秘密份额和交叉不变量计算中间截断因子,并通过加法秘密分享技术在计算节点之间分享中间截断因子;各计算节点计算中间截断因子之和即得到截断因子;各计算节点计算秘密份额与截断因子之差即得到低阶的秘密份额,在本地计算低阶秘密份额之积即得到秘密数据乘积的分享,且分享多项式的次数小于计算节点的数量。
为了使中间结果不泄露给需求方,最终结果不泄露给计算节点,本发明基于分布式计算和加法秘密分享提出结果解析方法,可以包括:各计算节点基于公开数据和秘密份额在本地计算最终结果中间值,并通过加法秘密分享的方法在各计算节点之间进行分享,各计算节点计算最终结果中间值的秘密份额之和再发送给需求方,需求方再求和即得到最终结果。
下面一个实例对本发明提供的上述多方安全计算方法进行说明,具体步骤如下:
第一步:在初始化阶段,需求方根据场景需求确定功能函数,并从有限域中选取若干个互异元素作为各计算节点的公开标识。
第二步:在预计算阶段,各计算节点基于公开标识计算公开参数,进而计算自身与包含其自身在内的其他计算节点之间的交叉不变量,所述公开参数包括阶数阈值以及由公开标识生成的范德蒙方阵。
第三步:在数据输入阶段,各数据方基于功能函数的形式,在本地计算秘密数据的若干次幂,并通过沙米尔秘密分享的方法输入秘密数据及其相应的幂。
第四步:在加法分享中,各计算节点在本地计算秘密份额的和即得到秘密数据和的分享。
第五步:在数乘分享中,各计算节点在本地计算秘密份额与数乘因子的乘积,得到秘密数据与数乘因子乘积的分享。
第六步:在乘法分享中,各计算节点基于所持有的秘密份额和交叉不变量计算中间截断因子,并基于加法秘密分享在计算节点之间分享中间截断因子;各计算节点对中间截断因子的秘密份额求和并发送给目标计算节点,目标计算节点再求和即得到截断因子,将秘密份额减去截断因子即得到低阶的秘密份额;各计算节点在本地计算低阶秘密份额的乘积即得到秘密数据乘积的分享。
第七步:在结果解析算法中,各计算节点基于公开数据及所持有的秘密份额计算最终结果中间值,并利用加法秘密分享的方法在计算节点之间进行分享,各计算节点求和后发送给需求方,需求方再求和即得到最终结果。
另外,在实际应用中,为了减少乘法运算量、降低计算开销,可以按照如下方式对数据输入过程进行优化。对于上述公式(1)中的任意项,数据方/>持有秘密数据/>,/>。根据本发明提供的上述多方安全计算方法的描述,在数据方/>完成数据输入后,各计算节点至少需要执行/>次乘法分享以计算/>,其中,/>表示某个非负整数,/>表示/>的/>次幂。需要注意的是,数据方/>可以在本地独立完成/>的计算,然后将计算结果分享给/>个计算节点,再由各计算节点根据本发明提供的上述多方安全计算方法执行后续计算过程。
在上述实施例中,对于多方安全计算方法进行了详细描述,本发明还提供多方安全计算装置、多方安全计算设备对应的实施例。需要说明的是,本发明从两个角度对装置部分的实施例进行描述,一种是基于功能模块的角度,另一种是基于硬件的角度。
图2为本发明实施例提供的多方安全计算装置的结构示意图。本实施例基于功能模块的角度,该装置应用于任一计算节点,多个计算节点基于各自持有的秘密份额共同参与多方安全计算,如图2所示,该装置包括:
交叉不变量获取模块10,用于响应于需求方的指示命令,获取自身与包含自身在内的各计算节点之间的交叉不变量。
上述交叉不变量是两个计算节点之间或计算节点自身在执行计算任务过程中保持不变的常量。在实施中,需求方向计算节点发送指示命令,交叉不变量获取模块10可以响应于需求方的指示命令,获取自身与包含自身在内的各计算节点之间的交叉不变量。
截断因子确定模块11,用于根据所持有的秘密份额和交叉不变量,确定截断因子。
上述截断因子是指计算节点当前所持有的秘密份额对应分享多项式的高阶部分的函数值。在实施中,截断因子确定模块11可以基于所持有的秘密份额和交叉不变量,计算出截断因子,进而便于计算后续的低阶秘密份额。也就是说,计算节点当前所持有的秘密份额对应分享多项式的高阶部分可由交叉不变量来确定。
低阶份额获取模块12,用于计算所持有的秘密份额与截断因子之差,得到低阶秘密份额。
上述低阶秘密份额指的是当前所持有的秘密份额对应分享多项式的低阶部分的份额。在实施中,低阶份额获取模块12可以将计算节点当前所持有的秘密份额减去对应分享多项式的高阶部分的函数值,就可以得到低阶秘密份额。
乘积分享模块13,用于计算低阶秘密份额之积,得到秘密数据乘积的分享结果。
在实施中,乘积分享模块13在本地计算低阶秘密份额之积,可以得到秘密数据乘积的分享。
在本发明实施例提供的上述多方安全计算装置中,可以通过上述四个模块的相互作用,利用多项式截断的方式对乘积分享中的分享多项式进行降阶的思想,首先获取自身与包含自身在内的各计算节点之间的交叉不变量,然后利用该交叉不变量和所持有的秘密份额,确定截断因子,通过计算所持有的秘密份额与截断因子之差,得到低阶秘密份额,最后利用低阶秘密份额之积来得到秘密数据乘积的分享结果,这样减少了计算资源占用量,可以解决乘积分享所带来的分享多项式次数指数级增长的问题。相对于利用重组向量或随机双分享进行降阶的传统方法,本发明显著减少了乘法运算量,显著提升了多方安全计算的效率。
由于装置部分的实施例与方法部分的实施例相互对应,因此装置部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。并且具有与上述提到的多方安全计算方法相同的有益效果。
进一步地,在具体实施时,在本发明实施例提供的上述多方安全计算装置中,交叉不变量获取模块10,具体可以用于接收需求方分配的公开标识;公开标识为需求方从有限域中选取的非零元素;各计算节点分配到的公开标识互异;根据分配的公开标识,获取自身与包含自身在内的各计算节点之间的交叉不变量。
在实施中,需求方可以随机从有限域中选取个互异的非零元素/>,/>为/>元有限域,/>为素数幂;交叉不变量获取模块10可以接收需求方分配的/>,作为计算节点的公开标识,/>,/>为所有计算节点的总个数。计算节点/>基于分配到的公开标识计算自身与包含其自身在内的各计算节点之间的交叉不变量并存储在本地,用于后续各阶段的计算任务,这是系统预计算的过程。该交叉不变量在整个计算任务执行过程中保持不变。
进一步地,在具体实施时,在本发明实施例提供的上述多方安全计算装置中,还可以包括:
秘密份额获取模块,用于接收数据方通过沙米尔秘密分享方式分享的秘密数据或秘密数据的若干次幂,以获得自身持有的秘密份额。
在实施中,数据方将秘密数据或秘密数据若干次幂通过沙米尔秘密分享进行处理,处理结果就是得到秘密数据或秘密数据若干次幂的个秘密份额。秘密份额获取模块可以接收对应的秘密份额。
其中,数据方将秘密数据或秘密数据若干次幂通过沙米尔秘密分享进行处理,具体可以包括:接收需求方确定的功能函数;功能函数对应各数据方的数据所要完成的计算任务;然后,基于功能函数的形式,计算秘密数据的若干次幂;最后,根据各计算节点的公开标识,将秘密数据或秘密数据的若干次幂通过沙米尔秘密分享进行处理,得到秘密数据或秘密数据的若干次幂的多个秘密份额并分发至对应的计算节点。
在实施中,需求方可以根据场景需求确定基于各数据方的数据所要完成的计算任务,即确定功能函数,并发送至数据方,这是系统初始化阶段进行的。在数据输入阶段,数据方基于功能函数的形式,在本地计算秘密数据的若干次幂,并基于计算节点的公开标识,通过沙米尔秘密分享技术将秘密数据及其相应的幂进行处理,得到秘密数据或秘密数据的若干次幂的多个秘密份额并分发至各计算节点。各计算节点基于系统初始化结果和所持有的秘密份额计算交叉不变量,用于后续阶段的计算任务。这样可以增强数据的安全性,保护个人隐私信息。
进一步地,在具体实施时,在本发明实施例提供的上述多方安全计算装置中,交叉不变量获取模块10,具体还可以用于计算阶数阈值;根据各计算节点的公开标识,生成多阶范德蒙方阵;计算多阶范德蒙方阵的逆矩阵,并根据阶数阈值,将逆矩阵中设定位置的元素按照设定顺序排列得到目标向量;根据目标向量、阶数阈值结合自身分配的公开标识,得到自身与包含自身在内的各计算节点之间的交叉不变量。
在实施中,交叉不变量获取模块10可以采用计算阶数阈值,基于/>个计算节点的公开标识,采用/>阶范德蒙方阵/>,计算/>阶范德蒙方阵的逆矩阵/>,并将逆矩阵中第/>行、第/>至第/>列的/>个元素按照设定顺序排列而成的目标向量/>。最后采用/>来得到/>的交叉不变量/>。需要指出的是,交叉不变量下角标两个数字是区分顺序的,即/>与/>不是同一个量。因此,在描述有关计算节点/>,/>的交叉不变量时,用符号/>或/>指明相应顺序。
进一步地,在具体实施时,在本发明实施例提供的上述多方安全计算装置中,还可以包括:
和分享模块,用于计算所持有的秘密份额之和,得到秘密数据和的分享结果。
在实施中,和分享模块可以在本地计算秘密份额之和,得到秘密数据和的分享,这是系统加法分享阶段进行的。
进一步地,在具体实施时,在本发明实施例提供的上述多方安全计算装置中,还可以包括:
数乘分享模块,用于计算所持有的秘密份额和数乘因子之积,得到秘密数据与数乘因子乘积的分享结果。
在实施中,数乘分享模块可以在本地计算秘密份额与数乘因子之积,得到秘密数据与数乘因子乘积的分享,这是系统数乘分享阶段进行的。
进一步地,在具体实施时,在本发明实施例提供的上述多方安全计算装置中,截断因子确定模块11,具体可以用于根据所持有的秘密份额和交叉不变量,获取中间截断因子;根据加法秘密分享拆分中间截断因子,得到中间截断因子份额并分享至其它计算节点,以使其它计算节点得到截断因子中间值;计算截断因子中间值之和,确定截断因子。
在实施中,根据计算节点经对应的分享多项式分享的秘密份额与计算节点自身关于其他计算节点交叉不变量的乘积,来获取中间截断因子。也就是说,中间截断因子是指计算节点经对应的分享多项式分享的秘密份额与交叉不变量的乘积,功能是用于后续计算截断因子。截断因子确定模块11可以基于秘密份额和交叉不变量计算中间截断因子,并基于加法秘密分享拆分并传递中间截断因子,计算中间截断因子之和即得到截断因子。
进一步地,在具体实施时,在本发明实施例提供的上述多方安全计算装置中,还可以包括:
最终结果获取模块,用于根据秘密数据和的分享结果,秘密数据与数乘因子乘积的分享结果,秘密数据乘积的分享结果,以及功能函数,得到计算任务的最终结果中间值;利用加法秘密分享的方式将最终结果中间值分享给其它计算节点,以使各计算节点求和并发送给需求方,需求方再求和后得到计算任务的最终结果。这样在满足最终结果不泄露于计算节点、中间结果不泄露于需求方等要求的前提下,需求方获得最终结果,尤其适用于计算外包以及数据方和需求方不一致的应用场景。
在实施中,最终结果获取模块可以在经过有限次加法分享和乘法分享后得到最终结果中间值,该最终结果中间值是指在获取计算任务最终结果过程中的中间值,将最终结果中间值通过加法秘密分享的方法分享给各计算节点,各计算节点求和后再发送给需求方,需求方再求和即得到整个计算任务的最终结果。
图3为本发明实施例提供的多方安全计算设备的结构示意图。本实施例基于硬件角度,该设备应用于任一计算节点,多个计算节点基于各自持有的秘密份额共同参与多方安全计算,如图3所示,该设备包括:
存储器20,用于存储计算机程序;
处理器21,用于执行计算机程序时实现如上述实施例中所提到的多方安全计算方法的步骤。
其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用数字信号处理器(Digital Signal Processor,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU;协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以集成有图形处理器(Graphics Processing Unit,GPU),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括人工智能(Artificial Intelligence,AI)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的多方安全计算方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括Windows、Unix、Linux等。数据203可以包括但不限于上述所提到的多方安全计算方法所涉及到的数据等。
在一些实施例中,多方安全计算设备还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
本领域技术人员可以理解,图3中示出的结构并不构成对多方安全计算设备的限定,可以包括比图示更多或更少的组件。
本发明实施例提供的多方安全计算设备,包括存储器和处理器,处理器在执行存储器存储的程序时,能够实现如下方法:多方安全计算方法,效果同上。
最后,本发明还提供一种计算机可读存储介质对应的实施例。计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述方法实施例中记载的步骤。
可以理解的是,如果上述实施例中的方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明提供的计算机可读存储介质包括上述提到的多方安全计算方法,效果同上。
还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本发明所提供的多方安全计算方法、装置、设备及介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明的保护范围内。
Claims (17)
1.一种多方安全计算方法,其特征在于,应用于任一计算节点,多个计算节点基于各自持有的秘密份额共同参与多方安全计算,所述方法包括:
响应于需求方的指示命令,获取自身与包含自身在内的各计算节点之间的交叉不变量;所述交叉不变量是两个计算节点之间或计算节点自身在执行计算任务过程中保持不变的常量;采用下述公式得到所述交叉不变量:
;
;
;
;
其中,为/>的交叉不变量,/>为第/>个计算节点,/>为第/>个计算节点,/>,,/>为所有计算节点的总个数;/>为阶数阈值;/>为/>阶范德蒙方阵,/>阶范德蒙方阵的逆矩阵/>;/>为公开标识;/>为/>元有限域,/>为素数幂;/>为所述逆矩阵/>中第/>行、第/>至第/>列的/>个元素按照设定顺序排列而成的目标向量;所述公开标识由所述需求方来分配,所述公开标识为所述需求方从有限域中选取的非零元素;各计算节点分配到的所述公开标识互异;
根据所持有的秘密份额和所述交叉不变量,获取中间截断因子;根据加法秘密分享拆分所述中间截断因子,得到中间截断因子份额并分享至其它计算节点,以使其它计算节点得到截断因子中间值;计算所述截断因子中间值之和,确定截断因子;所述截断因子是指计算节点当前所持有的秘密份额对应分享多项式的高阶部分的函数值;
计算所持有的秘密份额与所述截断因子之差,得到低阶秘密份额;
计算所述低阶秘密份额之积,采用下述方式得到秘密数据乘积的分享结果:
设,/>为形如/>的秘密数据,其中/>分别为/>个数据方所持有的秘密数据;/>公开,称为数乘因子;/>均为公开数据,/>为自然数集,/>为秘密数据/>的/>次幂,/>为秘密数据/>的/>次幂,/>为秘密数据/>的/>次幂;
设,/>的分享多项式/>,/>的形式为:
;
;
其中,,/>,/>,/>,/>,/>;
令,称为/>的截断多项式;令/>,称为的截断多项式;
令,/>;
计算,得到/>经多项式/>分享的秘密份额:
;
其中,的次数不超过/>,/>是/>经截断多项式/>分享的秘密份额,/>是/>经截断多项式/>分享的秘密份额。
2.根据权利要求1所述的多方安全计算方法,其特征在于,在获取自身与包含自身在内的各计算节点之间的交叉不变量之后,还包括:
接收数据方通过沙米尔秘密分享方式分享的秘密数据或秘密数据的若干次幂,以获得自身持有的秘密份额。
3.根据权利要求2所述的多方安全计算方法,其特征在于,所述数据方通过沙米尔秘密分享方式分享秘密数据或秘密数据的若干次幂的过程,包括:
所述数据方接收所述需求方确定的功能函数;所述功能函数对应各数据方的数据所要完成的计算任务;
基于所述功能函数的形式,计算秘密数据的若干次幂;
根据各计算节点的所述公开标识,将秘密数据或秘密数据的若干次幂通过沙米尔秘密分享进行处理,得到秘密数据或秘密数据的若干次幂的多个秘密份额并分发至对应的计算节点。
4.根据权利要求3所述的多方安全计算方法,其特征在于,采用下述公式确定所述功能函数:
。
5.根据权利要求4所述的多方安全计算方法,其特征在于,采用下述公式将秘密数据或秘密数据的若干次幂通过沙米尔秘密分享进行处理:
;
;
其中,由所述数据方秘密且随机选取,/>为秘密数据/>或/>的若干次幂的分享向量,/>,/>为数据方的总个数;当/>为/>时,计算/>是对/>进行沙米尔秘密分享,分享的结果为/>的/>个秘密份额/>;当/>为/>的若干次幂时,计算/>是对/>的若干次幂进行沙米尔秘密分享,分享的结果为/>的若干次幂的/>个秘密份额/>;/>为/>的前/>行向量按照既定顺序排列而成的阶子矩阵;/>,符号/>表示集合/>,/>表示由有限域/>上全体维向量构成的线性空间。
6.根据权利要求4所述的多方安全计算方法,其特征在于,采用下述公式将秘密数据或秘密数据的若干次幂通过沙米尔秘密分享进行处理:
;
其中,为秘密数据/>或/>的若干次幂的分享多项式,由所述数据方秘密且随机选取/>,当/>为/>时,计算/>是对/>进行沙米尔秘密分享,分享的结果为/>的/>个秘密份额/>;当/>为的若干次幂时,计算/>是对/>的若干次幂进行沙米尔秘密分享,分享的结果为/>的若干次幂的/>个秘密份额/>;/>,符号/>表示集合/>。
7.根据权利要求1所述的多方安全计算方法,其特征在于,根据所持有的秘密份额和所述交叉不变量,获取中间截断因子,包括:
计算秘密数据经对应的分享多项式分享的秘密份额和所述交叉不变量之积,获取中间截断因子。
8.根据权利要求1所述的多方安全计算方法,其特征在于,采用下述方式得到秘密数据经截断多项式/>分享的秘密份额/>:
;
;
;
;
;
其中,为/>的交叉不变量,/>为计算节点/>的/>经分享多项式/>分享的秘密份额,/>为中间截断因子,/>为中间截断因子份额,/>为计算节点/>计算出的截断因子中间值,/>,/>为计算节点/>计算出的截断因子,/>为计算节点/>的/>经分享多项式/>分享的秘密份额。
9.根据权利要求1所述的多方安全计算方法,其特征在于,采用下述方式得到秘密数据经截断多项式/>分享的秘密份额/>:
;
;
;
;
;
其中,为/>的交叉不变量,/>为计算节点/>的/>经分享多项式/>分享的秘密份额,/>为中间截断因子,/>为中间截断因子份额,/>为计算节点/>计算出的截断因子中间值,/>为计算节点/>计算出的截断因子,/>为计算节点/>的/>经分享多项式/>分享的秘密份额。
10.根据权利要求3所述的多方安全计算方法,其特征在于,还包括:
计算所持有的秘密份额之和,得到秘密数据和的分享结果;
计算所持有的秘密份额和所述数乘因子之积,得到秘密数据与数乘因子乘积的分享结果。
11.根据权利要求10所述的多方安全计算方法,其特征在于,采用下述方式得到所述秘密数据和的分享结果:
令,/>,其中/>,/>分别为/>,/>的分享多项式,且次数均不超过/>;
计算,得到/>经多项式/>分享的秘密份额:
;
其中,的次数不超过/>。
12.根据权利要求10所述的多方安全计算方法,其特征在于,采用下述方式得到所述秘密数据与数乘因子乘积的分享结果:
对于任意的,令/>,/>,其中/>为/>的分享多项式,且次数不超过;
计算,获得/>经多项式/>分享的秘密份额:
;
其中,的次数不超过/>。
13.根据权利要求10所述的多方安全计算方法,其特征在于,还包括:
根据所述秘密数据和的分享结果,所述秘密数据与数乘因子乘积的分享结果,所述秘密数据乘积的分享结果,以及所述功能函数,得到计算任务的最终结果中间值;
利用加法秘密分享的方式将所述最终结果中间值分享给其它计算节点,以使各计算节点求和并发送给所述需求方,所述需求方再求和后得到计算任务的最终结果。
14.根据权利要求13所述的多方安全计算方法,其特征在于,采用下述方式得到计算任务的最终结果:
;
;
;
;
其中,为最终结果,/>为所述最终结果中间值,/>,/>为位于/>阶范德蒙方阵的逆矩阵/>第/>行、第1列的元素,/>为计算节点/>所持有的最终结果的秘密份额。
15.一种多方安全计算装置,其特征在于,应用于任一计算节点,多个计算节点基于各自持有的秘密份额共同参与多方安全计算,所述装置包括:
交叉不变量获取模块,用于响应于需求方的指示命令,获取自身与包含自身在内的各计算节点之间的交叉不变量;所述交叉不变量是两个计算节点之间或计算节点自身在执行计算任务过程中保持不变的常量;采用下述公式得到所述交叉不变量:
;
;
;
;
其中,为/>的交叉不变量,/>为第/>个计算节点,/>为第/>个计算节点,/>,,/>为所有计算节点的总个数;/>为阶数阈值;/>为/>阶范德蒙方阵,/>阶范德蒙方阵的逆矩阵/>;/>为公开标识;/>为/>元有限域,/>为素数幂;/>为所述逆矩阵/>中第/>行、第/>至第/>列的/>个元素按照设定顺序排列而成的目标向量;所述公开标识由所述需求方来分配,所述公开标识为所述需求方从有限域中选取的非零元素;各计算节点分配到的所述公开标识互异;
截断因子确定模块,用于根据所持有的秘密份额和所述交叉不变量,获取中间截断因子;根据加法秘密分享拆分所述中间截断因子,得到中间截断因子份额并分享至其它计算节点,以使其它计算节点得到截断因子中间值;计算所述截断因子中间值之和,确定截断因子;所述截断因子是指计算节点当前所持有的秘密份额对应分享多项式的高阶部分的函数值;
低阶份额获取模块,用于计算所持有的秘密份额与所述截断因子之差,得到低阶秘密份额;
乘积分享模块,用于计算所述低阶秘密份额之积,采用下述方式得到秘密数据乘积的分享结果:
设,/>为形如/>的秘密数据,其中/>分别为/>个数据方所持有的秘密数据;/>公开,称为数乘因子;/>均为公开数据,/>为自然数集,/>为秘密数据/>的/>次幂,/>为秘密数据/>的/>次幂,/>为秘密数据/>的/>次幂;
设,/>的分享多项式/>,/>的形式为:
;
;
其中,,/>,/>,/>,/>,/>;
令,称为/>的截断多项式;令/>,称为的截断多项式;
令,/>;
计算,得到/>经多项式/>分享的秘密份额:
;
其中,的次数不超过/>,/>是/>经截断多项式/>分享的秘密份额,/>是/>经截断多项式/>分享的秘密份额。
16.一种多方安全计算设备,其特征在于,应用于任一计算节点,多个计算节点基于各自持有的秘密份额共同参与多方安全计算,所述设备包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至14任一项所述的多方安全计算方法的步骤。
17.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至14任一项所述的多方安全计算方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410240190.8A CN117857039B (zh) | 2024-03-04 | 2024-03-04 | 多方安全计算方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410240190.8A CN117857039B (zh) | 2024-03-04 | 2024-03-04 | 多方安全计算方法、装置、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117857039A CN117857039A (zh) | 2024-04-09 |
CN117857039B true CN117857039B (zh) | 2024-05-28 |
Family
ID=90530562
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410240190.8A Active CN117857039B (zh) | 2024-03-04 | 2024-03-04 | 多方安全计算方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117857039B (zh) |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022132617A1 (en) * | 2020-12-14 | 2022-06-23 | Google Llc | Using secure multi-party computation and probabilistic data structures to protect access to information |
CN115455488A (zh) * | 2022-11-15 | 2022-12-09 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 基于复制秘密共享的密态数据库查询方法及装置 |
CN115766073A (zh) * | 2022-09-29 | 2023-03-07 | 华北电力大学 | 支持安全多方计算隐私保护的储能数据共享方法 |
CN115842627A (zh) * | 2022-12-01 | 2023-03-24 | 青岛大学 | 基于安全多方计算的决策树评估方法、装置、设备及介质 |
CN115964738A (zh) * | 2022-12-07 | 2023-04-14 | 华为技术有限公司 | 一种基于多方安全计算的数据处理方法及装置 |
WO2023094453A1 (en) * | 2021-11-23 | 2023-06-01 | Sedicii Innovations Ltd. | Secure multi-party computations |
CN116248266A (zh) * | 2022-12-16 | 2023-06-09 | 北京海泰方圆科技股份有限公司 | 基于秘密分享的安全多方计算方法及系统 |
CN117155551A (zh) * | 2023-08-01 | 2023-12-01 | 浪潮(北京)电子信息产业有限公司 | 一种秘密信息的共享方法、系统、设备及存储介质 |
CN117355834A (zh) * | 2022-05-03 | 2024-01-05 | 谷歌有限责任公司 | 使用隐私信息检索和安全多方计算的隐私安全批量检索 |
CN117592527A (zh) * | 2024-01-18 | 2024-02-23 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 基于函数秘密共享的隐私保护神经网络训练方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10460234B2 (en) * | 2018-01-19 | 2019-10-29 | Microsoft Technology Licensing, Llc | Private deep neural network training |
US11784803B2 (en) * | 2020-05-26 | 2023-10-10 | Visa International Service Association | Round-efficient fully secure solitary multi-party computation with honest majority |
-
2024
- 2024-03-04 CN CN202410240190.8A patent/CN117857039B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022132617A1 (en) * | 2020-12-14 | 2022-06-23 | Google Llc | Using secure multi-party computation and probabilistic data structures to protect access to information |
CN115605895A (zh) * | 2020-12-14 | 2023-01-13 | 谷歌有限责任公司(Us) | 使用安全多方计算和概率数据结构来保护对信息的访问 |
WO2023094453A1 (en) * | 2021-11-23 | 2023-06-01 | Sedicii Innovations Ltd. | Secure multi-party computations |
CN117355834A (zh) * | 2022-05-03 | 2024-01-05 | 谷歌有限责任公司 | 使用隐私信息检索和安全多方计算的隐私安全批量检索 |
CN115766073A (zh) * | 2022-09-29 | 2023-03-07 | 华北电力大学 | 支持安全多方计算隐私保护的储能数据共享方法 |
CN115455488A (zh) * | 2022-11-15 | 2022-12-09 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 基于复制秘密共享的密态数据库查询方法及装置 |
CN115842627A (zh) * | 2022-12-01 | 2023-03-24 | 青岛大学 | 基于安全多方计算的决策树评估方法、装置、设备及介质 |
CN115964738A (zh) * | 2022-12-07 | 2023-04-14 | 华为技术有限公司 | 一种基于多方安全计算的数据处理方法及装置 |
CN116248266A (zh) * | 2022-12-16 | 2023-06-09 | 北京海泰方圆科技股份有限公司 | 基于秘密分享的安全多方计算方法及系统 |
CN117155551A (zh) * | 2023-08-01 | 2023-12-01 | 浪潮(北京)电子信息产业有限公司 | 一种秘密信息的共享方法、系统、设备及存储介质 |
CN117592527A (zh) * | 2024-01-18 | 2024-02-23 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 基于函数秘密共享的隐私保护神经网络训练方法及装置 |
Non-Patent Citations (2)
Title |
---|
Cross Chain Atomic Swaps in the Absence of Time viaAttribute Verifiable Timed Commitments;Yacov Manevich等;《2022 IEEE 7th European Symposium on Security and Privacy (EuroS&P)》;20221231;第606-625页 * |
基于秘密共享和压缩感知的通信高效联邦学习;陈律君等;《计算机研究与发展》;20221231;第2395-2407页 * |
Also Published As
Publication number | Publication date |
---|---|
CN117857039A (zh) | 2024-04-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2022237450A1 (zh) | 多方安全计算方法、装置、设备及存储介质 | |
US9331984B2 (en) | Secret sharing method and system | |
US20140198911A1 (en) | Sharing a secret via linear interpolation | |
CN110166446B (zh) | 一种基于安全多方计算的地理加权平均中心的实现方法 | |
CN109067538B (zh) | 安全协议方法、计算机设备及存储介质 | |
CN112818374A (zh) | 一种模型的联合训练方法、设备、存储介质及程序产品 | |
CN111984990A (zh) | 基于边缘计算的支持隐私保护的矩阵乘法任务外包方法 | |
CN112737772B (zh) | 私有集合交集数据的安全统计方法、终端设备及系统 | |
CN113158239A (zh) | 保护数据隐私的选择问题处理方法 | |
CN114595835A (zh) | 基于联邦学习的模型训练方法及装置、设备、存储介质 | |
CN113780552A (zh) | 一种双向隐私保护的安全多方计算方法 | |
CN117857039B (zh) | 多方安全计算方法、装置、设备及介质 | |
CN116248266B (zh) | 基于秘密分享的安全多方计算方法及系统 | |
JP7259875B2 (ja) | 情報処理装置、秘密計算方法及びプログラム | |
JP7297131B2 (ja) | 分散型機械学習モデルのトレーニング方法、装置、機器および媒体 | |
CN115719094A (zh) | 基于联邦学习的模型训练方法、装置、设备及存储介质 | |
CN114721623A (zh) | 多方安全除法 | |
CN113849806A (zh) | 多方安全计算中的任务执行方法及装置 | |
Zhang et al. | Secure two-party computation of solid triangle area and tetrahedral volume based on cloud platform | |
CN112527898A (zh) | 安全计算方法、装置、节点及存储介质 | |
CN115345307B (zh) | 一种密文图像上的安全卷积神经网络推理方法及系统 | |
CN114327486B (zh) | 基于领域专用语言实现多方安全计算的方法、装置及介质 | |
CN117009723B (zh) | 一种多方计算方法、装置、设备及存储介质 | |
CN112182593A (zh) | 一种数据处理方法、装置和电子设备 | |
TWI689194B (zh) | 基於無分派者秘密共享的門檻式簽章系統及其方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |