CN113343291A - 一种基于多方计算的秘密分享方法、装置及系统 - Google Patents
一种基于多方计算的秘密分享方法、装置及系统 Download PDFInfo
- Publication number
- CN113343291A CN113343291A CN202110571644.6A CN202110571644A CN113343291A CN 113343291 A CN113343291 A CN 113343291A CN 202110571644 A CN202110571644 A CN 202110571644A CN 113343291 A CN113343291 A CN 113343291A
- Authority
- CN
- China
- Prior art keywords
- party
- computing
- calculation
- nodes
- block chain
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种基于多方计算的秘密分享方法、装置及系统。该方法通过由L个数据提供节点和M个计算节点组成的区块链来实现,其中,数据提供节点的私密值对其他节点不可见,通过特定算法将私密值转换为M个数值,并将M各数值分别发给M个计算节点;M个计算节点在收到数据提供节点所发送的数值后,进行中间计算得到M个中间计算结果,每个计算节点将本地计算得到的中间计算结果发送给其他的计算节点;每个计算节点接收其他的计算节点所发送的中间计算结果得到N个中间结果后,即可根据N个中间结果确定多方计算结果,并将多方计算结果上传至区块链中的公开账本,L为大于1的自然数,M为大于2的自然数,N为小于等于M的自然数。
Description
技术领域
本申请涉及计算机信息处理技术领域,尤其涉及一种基于多方计算的秘密分享方法及装置。
背景技术
安全多方计算(Secure Multi-Party Computation,MPC)是解决在一个互不信任的多用户网络中,两个或多个用户能够在不泄漏各自私有输入信息时,协同合作执行某项计算任务的问题。当前主流的安全多方计算通用计算模型,有基于混淆电路(GarbledCircuit)的计算模型和基于秘密分享(Secret Share)的计算模型,这两种模型在通信阶段都依赖于不经意传输(Oblivious Transfer)协议。
对于依赖于不经意传输协议的计算模型,性能优化成为近年来的研究热点和改进方向。
发明内容
本申请人创造性地提供一种基于多方计算的秘密分享方法、装置及系统。
根据本申请实施例第一方面,提供一种基于多方计算的秘密分享方法,应用于区块链中的数据提供节点,该方法包括:获取私密值并确保私密值对区块链中的其他节点不可见;根据私密值计算得到M个数值,其中,M个数值用于多方计算任务的中间计算以得到M个中间计算结果,M个中间计算结果中的N个中间计算结果用于计算得到多方计算任务的多方计算结果,M为大于2的自然数,N为小于等于M的自然数;将M个数值分别发送给区块链中的M个计算节点。
根据本申请一实施例,私密值存储于数据提供节点的私有数据空间。
根据本申请一实施例,根据私密值进行计算得到M个数值,包括:获取第一随机数,将第一随机数设置为M个数值中的第1个数值;根据第一随机数和私密值,进行第一运算得到第2个数值;根据第X个数值和第X-1数值进行第一运算得到第X+1个数值,直至得到第M个数值,其中,X为大于2且小于等于M的自然数。
根据本申请实施例第二方面,提供一种基于多方计算的秘密分享方法,应用于区块链中的计算节点,该方法包括:获取多方计算任务;接收区块链中的数据提供节点所发送的数值;根据数值和多方计算任务进行中间计算得到第一中间计算结果;将第一中间计算节点发送给参与多方计算任务的M个计算节点中的其他计算节点,M为大于2的自然数;接收M个计算节点中的其他计算节点所发送的N-1个中间计算结果,N为小于等于M的自然数;根据第一中间计算结果和N-1个中间计算结果进行计算得到多方计算任务的多方计算结果;将多方计算结果存储至区块链的公开账本。
根据本申请一实施例,多方计算任务包括模2n的环内数值范围内的算术运算。
根据本申请一实施例,算术运算包括加法和乘法中的至少一项。
根据本申请一实施例,M为3且N为2。
根据本申请实施例第三方面,提供一种基于多方计算的秘密分享装置,应用于区块链中的数据提供节点,该装置包括:私密值获取模块,用于获取私密值并确保私密值对区块链中的其他节点不可见;数值计算模块,用于根据私密值计算得到M个数值,其中,M个数值用于多方计算任务的中间计算以得到M个中间计算结果,M个中间计算结果中的N个中间计算结果用于计算得到多方计算任务的多方计算结果,M为大于2的自然数,N为小于等于M的自然数;数值发送模块,用于将M个数值分别发送给区块链中的M个计算节点。
根据本申请实施例第四方面,提供一种基于多方计算的秘密分享装置,应用于区块链中的计算节点,该装置包括:多方计算任务获取模块,用于获取多方计算任务;数值接收模块,用于接收区块链中的数据提供节点所发送的数值;中间计算模块,用于根据数值和多方计算任务进行中间计算得到第一中间计算结果;中间计算结果发送模块,用于将第一中间计算节点发送给参与多方计算任务的M个计算节点中的其他计算节点,M为大于2的自然数;中间计算结果接收模块,用于接收M个计算节点中的其他计算节点所发送的N-1个中间计算结果,N为小于等于M的自然数;多方计算模块,用于根据第一中间计算结果和N-1个中间计算结果进行计算得到多方计算任务的多方计算结果;多方计算结果存储模块,用于将多方计算结果存储至区块链的公开账本。
根据本申请实施例第五方面,提供一种基于多方计算的秘密分享系统,该系统基于区块链,区块链包括L个数据提供节点和M个计算节点,L为大于1的自然数,M为大于2的自然数,其中:数据提供节点,用于执行上述任一项的基于多方计算的秘密分享方法,生成M个数值分别发送给区块链中的M个计算节点;计算节点,用于执行上述任一项的基于多方计算的秘密分享方法,根据L个数据提供节点发送的数值和多方计算任务计算得到多方计算任务的多方计算结果。
本申请实施例提供一种基于多方计算的秘密分享方法、装置及系统。该方法通过由L个数据提供节点和M个计算节点组成的区块链来实现,其中,数据提供节点的私密值对其他节点不可见,通过特定算法将私密值转换为M个数值,并将M各数值分别发给M个计算节点;M个计算节点在收到数据提供节点所发送的数值后,进行中间计算得到M个中间计算结果,每个计算节点将本地计算得到的中间计算结果发送给其他的计算节点;每个计算节点接收其他的计算节点所发送的中间计算结果得到N个中间结果后,即可根据N个中间结果确定多方计算结果,并将多方计算结果上传至区块链中的公开账本,L为大于1的自然数,M为大于2的自然数,N为小于等于M的自然数。
由于本实施例所提供的秘密分享方法是通过区块链网络实现数据提供节点和计算节点之间的点到点通信渠道,并不依赖于不经意传输协议(Oblivious Transfer),效率更高;且在进行多方计算的过程中,还可通过区块链的各个计算节点的对等性,进行多方计算结果的多方验证,确保多方计算结果的正确性;并通过公共账本确保多方计算的输入、输出和结果不可篡改和可追溯。
需要理解的是,本申请的实施并不需要实现上面所述的全部有益效果,而是特定的技术方案可以实现特定的技术效果,并且本申请的其他实施方式还能够实现上面未提到的有益效果。
附图说明
通过参考附图阅读下文的详细描述,本申请示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本申请的若干实施方式,其中:
在附图中,相同或对应的标号表示相同或对应的部分。
图1为本申请实施例基于多方计算的秘密分享系统结构示意图;
图2为本申请实施例基于多方计算的秘密分享方法在数据提供节点方的实现流程示意图;
图3为本申请实施例基于多方计算的秘密分享方法在计算节点方的实现流程示意图;
图4为本申请实施例基于多方计算的秘密分享装置在数据提供节点的组成结构示意图;
图5为本申请实施例基于多方计算的秘密分享装置在计算节点的组成结构示意图。
具体实施方式
为使本申请的目的、特征、优点能够更加的明显和易懂,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而非全部实施例。基于本申请中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
图1示出了本申请实施例基于多方计算的秘密分享系统的结构示意图。如图1所示,本申请实施例基于多方计算的秘密分享系统是基于区块链实现的,该区块链包括L个数据提供节点(例如,数据提供节点111和数据提供节点112)和M个计算节点(例如,计算节点121、计算节点122和计算节点123),L为大于1的自然数(图3中仅示出了其中2个),M为大于2的自然数(图3中仅示出了其中3个)。
其中,数据提供节点用于提供多方计算中所需要的私密值(例如,私密数据1111中的私密值或私密数据1121中的私密值),该私密值对其他的数据提供节点和计算节点均不可见,数据提供节点通过特定算法将私密值转换为M个数值,并将M各数值分别发给M个计算节点;M个计算节点在收到数据提供节点所发送的数值后,进行中间计算得到M个中间计算结果,每个计算节点将本地计算得到的中间计算结果发送给其他的计算节点,例如,计算节点121把中间结果发送给计算节点122,计算节点122把中间结果发送给计算节点123,计算节点123把中间结果发送给计算节点121;每个计算节点接收其他的计算节点所发送的中间计算结果得到N个中间结果后,即可根据N个中间结果确定多方计算结果,并将多方计算结果上传至区块链中的公开账本(例如,记录多方计算结果的账本131),L为大于1的自然数,M为大于2的自然数,N为小于等于M的自然数。
进一步地,图2示出了本申请实施例基于多方计算的秘密分享方法应用于区块链中的数据提供节点的实现流程。如图2所示,该方法包括:操作210,获取私密值并确保私密值对区块链中的其他节点不可见;操作220,根据私密值计算得到M个数值,其中,M个数值用于多方计算任务的中间计算以得到M个中间计算结果,M个中间计算结果中的N个中间计算结果用于计算得到多方计算任务的多方计算结果,M为大于2的自然数,N为小于等于M的自然数;操作230,将M个数值分别发送给区块链中的M个计算节点。
其中,在操作210中,私密值是要参与多方计算但又不便公开的私密数据的数据值。在区块链中,要实现确保私密值对区块链中的其他节点不可见时,可以将数据提供节点部署在数据提供方的私有网络中,并通过SERO智能合约选择将私密数据仍然保存在数据提供方私有网络中的终端上,只有在链上或链下合约中进行计算处理时,才使用M个数值代替私密值参与计算并进行通信。此外,有些区块链架构已能提供私有数据库给特定节点使用的,该数据库中的数据不会公开或共享,仅对特定节点可见。
在操作220中,本申请基于多方计算的秘密分享方法并不限定根据私密值计算得到M个数值的具体方法,只要该方法使得M个数值可以用于多方计算任务的中间计算以得到M个中间计算结果,并通过M个中间计算结果中的N个中间计算结果计算得到多方计算任务的多方计算结果即可。具体示例,可参照后续示例一、示例二和示例三中所使用的方法。
根据私密值计算得到M个数值,可将M个数值分别发送给多个计算节点。如此,每个计算方都无法获知数据提供节点的私密值,但又可以用这M个数值代替私密值进行多方计算获得私密值参与多方计算的中间结果,从而在确保私密值不泄露的情况下,仍能得到多方计算的结果。
区块链是去中心化的网络,使用的是点到点通信渠道,不存在中心服务器或中央网络,也不存在会参与每一笔交易的第三方机构,且每个节点几乎是对等的。因此,在操作230中,数据提供节点将M个数值分别发送给区块链中的M个计算节点时,可利用区块链所提供的点到点通信渠道实现指定节点之间的私密通信,而无需再使用不经意传输进行多轮通信和多轮计算。因此,大大简化了通信次数和计算复杂度。
在本实施例基于多方计算的秘密分享方法,首先通过操作210,利用区块链所提供的私密数据的保护方法将私密值保护起来,在确保私密值对区块链中的其他节点不可见的前提下,获取私密值;之后再通过操作220根据私密值计算得到M个数值,使用该M个数值替代非私密值参与多方计算;随后通过操作230利用区块链提供的点到点通信渠道,将M个数值分别发送给区块链中的M个计算节点。如此,一方面,通过私密值的保护机制并将私密值转换为M个数值确保私密数据不会被泄露,很好地保护了私密数据的私密值;另一方面,利用区块链提供的点到点通信渠道,安全地将M个数值分别发送给区块链中的M个计算节点,从而大大简化了通信次数和计算复杂度。
需要说明的是图2所示的本实施例仅为本申请基于多方计算的秘密分享方法最基本的一个实施例,实施者还可在其基础上进行进一步细化和扩展。
根据本申请一实施例,私密值存储于数据提供节点的私有数据空间。
现有的一些区块链架构中,例如Hyperledger Fabric,已经实现了私密数据的隔离,并可以为特定的区块链节点配置私有数据空间。在本实施例中,就直接使用这些区块链架构中所提供私有数据空间(例如,私有数据库或私有文件系统的)来存放私有数据的私密值,而无需自行实现SERO智能合约。如此,可大大简化私密数据的保护操作。
根据本申请一实施例,根据私密值进行计算得到M个数值,包括:获取第一随机数,将第一随机数设置为M个数值中的第1个数值;根据第一随机数和私密值,进行第一运算得到第2个数值;根据第X个数值和第X-1数值进行第一运算得到第X+1个数值,直至得到第M个数值,其中,X为大于2且小于等于M的自然数。
在本实施例中,通过第一随机数保证了M个数值的随机性,不会被轻易破解。而第一运算可以是加法、乘法或某个函数。其中,在设计第一运算时,需要确保该运算是可确保M个数值用于多方计算任务的中间计算以得到M个中间计算结果,M个中间计算结果中的N个中间计算结果用于计算得到多方计算任务的多方计算结果的运算。具体示例,可参照后续示例一、示例二和示例三中所使用的运算。
进一步地,图3示出了本申请实施例基于多方计算的秘密分享方法应用于区块链中的计算节点的实现流程。如图3所示,该方法包括:操作310,获取多方计算任务;操作320,接收区块链中的数据提供节点所发送的数值;操作330,根据数值和多方计算任务进行中间计算得到第一中间计算结果;操作340,将第一中间计算节点发送给参与多方计算任务的M个计算节点中的其他计算节点,M为大于2的自然数;操作350,接收M个计算节点中的其他计算节点所发送的N-1个中间计算结果,N为小于等于M的自然数;操作360,根据第一中间计算结果和N-1个中间计算结果进行计算得到多方计算任务的多方计算结果;操作370,将多方计算结果存储至区块链的公开账本。
其中,在操作310中,多方计算任务是此次多方计算要完成的运算或操作,例如,多方求和,多方求积等。该计算任务可以是事先指定的,也可以通过通信与参与计算的数据一同发送给计算节点。
在操作320中,计算节点所接收的数值就是之前数据提供节点所发送的M个数值之一,当有L个数据提供节点提供的数值时,每个计算节点就会接收到L个数值。
在操作330中,中间计算是由多方计算任务决定的,从某种意义上讲,中间计算是多方计算任务的一种分解。结合多个节点所独立完成的中间计算所得到的中间计算结果,最终可确定该多方计算任务的多方计算结果。
在本实施例中,并不对所使用的中间计算进行限定,实施者可采用任何适用的计算方法。具体示例,可参照后续示例一、示例二和示例三中所使用的方法。
由于,每个计算节点所进行的中间计算只是多方计算分解后的一部分计算,还需结合其他节点所得到的中间计算结果才能最终确定多方计算任务的多方计算结果。
因此,需要通过操作340将第一中间计算节点发送给参与多方计算任务的M个计算节点中的其他计算节点。
相应地,每个计算节点还需要通过操作350接收M个计算节点中的其他计算节点所发送的N-1个中间计算结果。
之后,即可通过操作360根据第一中间计算结果和N-1个中间计算结果进行计算得到多方计算任务的多方计算结果。
而这些点对点的通信都可以利用区块链所提供的点到点通信渠道来实现,而无需使用不经意传输进行多轮通信和多轮计算。因此,大大简化了通信次数和计算复杂度。
此外,由于每个计算节点获得N-1个中间计算结果的机会均等,所取得的结果相同。因此,还可以通过投票机制进行相互验证,从而确保多方计算结果的正确性,不会因为某个计算节点的意外故障或事故导致无法获取多方计算或导致多方计算结果错误。
之后,通过操作370,将多方计算结果,甚至可以连同多方计算的输入输出一起,存储至区块链的公开账本。由于,公开账本在所有区块链节点上都会保留一份,因此可确保多方计算结果(还可包括多方计算的输入输出)不会被篡改,并在出现问题时可根据公共账本进行追溯,使多方计算结果更可靠。
如此可见,使用本申请基于多方计算的秘密分享方法具有以下优势:1)利用区块链提供的点到点通信渠道简化多方计算所需的通信次数和计算复杂度;2)通过多个对等的计算节点所确定的多方计算结果对多方计算结果进行验证,确保多方计算结果的正确性;3)通过将多方计算结果上传到区块链的公开账本,可确保多方计算结果的不可篡改性和可追溯性,使多方计算结果更可靠。
需要说明的是图3所示的实施例仅为本申请基于多方计算的秘密分享方法最基本的一个实施例,实施者还可在其基础上进行进一步细化和扩展。
根据本申请一实施例,多方计算任务包括模2n的环内数值范围内的算术运算。
由于本申请基于多方计算的秘密分享方法是由计算机实现的,而计算机对模2n的环内数值范围内的算术运算的效率较高。因此,当多方计算任务为2n的环内数值范围内的算术运算时,几乎是不需要进行任何转换的,复杂度更低,运算效率更高。
根据本申请一实施例,算术运算包括加法和乘法中的至少一项。
在各种算术运算中加法和乘法是较常用的计算,如果实现了加法和乘法,就基本上可以满足大多数多方计算的需求。而加法和乘法的实现相对来说还是比较简单的。因此,使用加法和乘法中的至少一项来实现各种多方计算,复杂度更低,效率更高。
根据本申请一实施例,M为3且N为2。
为了利用中间结果确定多方计算结果时,往往需要多个中间结果进行联合运算。其中,M为较小的自然数时,会影响到安全度,而M为较大的自然数时会使复杂度陡升。经过本申请发明人多次实验发现M为3且N为2时,安全度和复杂度均能保证,可达到较好的效果。
下面结合图1所示的基于多方计算的秘密分享系统和以下具体应用示例,详细描述如何使用上述基于多方计算的秘密分享方法进行各种多方计算。
假设数据提供方为A和B。其中,数据提供方A的私密值存储在图1所示的数据提供节点111的私密数据1111中,而私密数据1111存储在数据提供节点111的私有数据库中;数据提供方B的私密值存储在图1所示的数据提供节点112的私密数据1121中,而私密数据1121存储在数据提供节点112的私有数据库中。
用于多方计算的计算集群设计为拥有3个计算节点的计算集群:P1,P2和P3,分别部署在图1所示的区块链中的计算节点121,计算节点122和计算节点123。各个计算节点在确定多方计算结果后,争取记账权,并在取得记账权之后,将多方计算结果记录在用于记录多方计算结果的账本131中。
示例一:多方求和计算。
假设在本示例中,多方计算为由多个数据提供方提供各自的私密值进行多个数的求和。
其具体的计算过程主要包括初始化、秘密分享和多方计算结果确定阶段。
其中,在初始化阶段,由数据提供方A将本轮需要参与计算的私密值v1,提交到区块链数据提供节点111的私有数据库中,形成私密数据1111;数据提供方B将本轮需要参与计算的私密值v2,提交到区块链数据提供节点112的私有数据库中,形成私密数据1121。
在秘密分享阶段,假设数据提供方A将要参与运算的数据是v1,则执行以下步骤生成x1,x2和x3分别发送给计算方P1,P2和P3:
步骤2010,从私有数据库中读取v1;
步骤2030,计算x2=v1-x1,x3=x1-x2,得到x2和x3。
假设数据提供方B将要参与运算的数据是v2,则由数据提供节点112执行类似上述步骤生成y1,y2和y3分别发送给计算方P1,P2和P3。
计算方P1,在分别收到数据提供A发送的x1和数据提供B发送的y1后计算z1=x1+y1得到中间结果z1;
计算方P2,在分别收到数据提供A发送的x2和数据提供B发送的y2后计算z2=x2+y2得到中间结果z2;
计算方P3,在分别收到数据提供A发送的x3和数据提供B发送的y3后计算z3=x3+y3得到中间结果z3。
在多方计算结果确定阶段,P1将中间结果z1发送给P2;P2将中间结果z2发送给P3;P3将中间结果z3发送给P1。
之后,P2可以根据以下公式计算得到多方计算v1+v2的结果:
z1+z2=x1+y1+x2+y2=v1+v2;
P3可以根据以下公式计算得到多方计算v1+v2的结果:
2z2+z3=2x2+2y2+x1-x2+y1-y2=v1+v2;
P1可以根据以下公式计算得到多方计算v1+v2的结果:
2z1-z3=2x1+2y1-x1+x2-y1+y2=v1+v2;
随后,计算方P1,P2和P3争夺记账权,并由胜利者将多方计算v1+v2的结果记录在用于记录多方计算结果的账本131中。
示例二:多方求积计算。
在本示例中,多方计算为由多个数据提供方提供各自的私密值进行多个数的求积。
其具体的计算过程主要包括初始化、秘密分享和多方计算结果确定阶段。
其中,在初始化阶段,由数据提供方A将本轮需要参与计算的私密值v1,提交到区块链数据提供节点111的私有数据库中,形成私密数据1111;数据提供方B将本轮需要参与计算的私密值v2,提交到区块链数据提供节点112的私有数据库中,形成私密数据1121。
在秘密分享阶段,数据提供方A生成x1,x2和x3分别发送给计算方P1,P2和P3,以及数据提供方B生成y1,y2和y3分别发送给计算方P1,P2和P3所执行的操作与示例1中所描述的秘密分享阶段所执行的操作相同,请参照前述内容,在此不再赘述。
计算方P1,在分别收到数据提供A发送的x1和数据提供B发送的y1后计算z1=2x1y1+r1得到中间结果z1;
计算方P2,在分别收到数据提供A发送的x2和数据提供B发送的y2后计算z2=2x2y2+r2得到中间结果z2;
计算方P3,在分别收到数据提供A发送的x3和数据提供B发送的y3后计算z3=-x3y3+r3得到中间结果z3。
在多方计算结果确定阶段,P1将中间结果z1发送给P2和P3;P2将中间结果z2发送给P3和P1;P3将中间结果z3发送给P1和P3。
之后,计算方P1,P2和P3中的任一方就可以根据以下公式计算得到多方计算v1v2的结果:
z1+z2+z3=2x1y1+2x2y2-(x1-x2)(y1-y2)+r1+r2+r3=x1y1+x2y2+x1y2+x2y1=(x1+x2)(y1+y2)=v1v2;
随后,计算方P1,P2和P3争夺记账权,并由胜利者将多方计算v1v2的结果记录在用于记录多方计算结果的账本131中。
需要说明的是,在多方计算中,求积的乘法性能是分析计算性能的重要指标。以一次乘法为例,应用本申请基于多方计算的秘密分享方法所进行的多方计算,与使用Sharemind协议和AFL16协议的多方计算相比,具有相同的通信轮数(1轮)以及最少的通信量。同时,在本地计算复杂度方面,Sharemind需要3次模乘法和8次模加法,AFL16协议需要2次模乘法和2次模加法,而本申请实施例中的所进行的多方求积的乘法计算仅使用1次模乘法和1次模加法,在理论上超越了现有算法。
示例三:多方线性拟合。
线性拟合是指选择一条线性函数来拟合已知数据并预测未知数据,有着广泛的用途,例如机器学习中的有监督学习。
假设x(i)表示输入变量(自变量),y(i)表示输出变量(因变量)。一对(x(i),y(i))表示一组训练样本。i表示第i个样本,hθ就是要拟合的曲线,hθ(x(i))=θ0+θ1y(i),θ0和θ1代表模型的参数。线性拟合的目标是求最优的θ0和θ1。
其中,在衡量拟合的好坏是通过计算均方误差来实现的。均方误差就是求预测值与真实值之间的差值的平方:
(hθ(x(i))-y(i))2;
对于所有样本的均方误差,采用求平均的方式得到代价函数:
在本示例中,拟合的过程就是找到合适的θ0和θ1使代价函数最小。
具体地,使用梯度下降法求解最小代价函数。代价函数J是关于θ0和θ1的二元函数,因此对J求θ0和θ1的偏导数可以得到一个向最小值移动的方向。用θ减去偏导数就等于θ向最小值的方向移动了一步,这一步的长短由学习率α描述。
梯度下降公式:
多次使用梯度下降公式,每次都将更新后的θ值代入代价函数计算结果,如此反复,直到代价函数收敛。
假设本示例多方线性拟合包含1个拟合方、L个样本方Si和3个计算方P1,P2,P3。每个样本方拥有至少1组样本。
本示例多方线性拟合分为初始化阶段、样本拆分阶段、多方拟合阶段和调优阶段。
其中,在初始化阶段,拟合方设定学习率α和代价函数收敛值γ,将θ0和θ1的初始值设为0;拟合方统计总样本数Z,并将样本标签划分为训练(C个样本)和测试(T个样本)两个集合,且Z=C+T。之后,将标签划分规则发送给所有计算方。
在样本拆分阶段,假设设样本方Si拥有若干组样本,对于每一组样本,将x(i)和y(i)拆分并分发给3个计算方,拆分规则为随机选取数并计算样本方将 分别发送给计算方P1,P2,P3。另一方面,以相同的方法,y(i)拆分为并分别发送给计算方P1,P2,P3。
依次类推,所有样本方都按照此法拆分样本,最终每个计算方Pj得到Z对样本分片(xj,yj),按照初始化阶段拟合方发来的标签划分方式,将其中的C个划分为训练样本分片,其余T个作为测试样本分片。
在多方拟合阶段,各计算方根据以下公式多方求和即可求得θ0:
各计算方根据以下公式多方求和及多方求积即可求得θ1:
各计算方根据以下公式多方求和及多方求积计算J(θ0,θ1)的值,并判断是否小于γ,如果不小于,则回到步骤1。如果小于,则将(θ0,θ1)上传到区块链网络。
各计算方使用测试样本,多方求和及多方求积计算J(θ0,θ1)的值j,将j上传到区块链网络。
在调优阶段,执行:1)拟合方重新划分训练和测试集合,通知样本方和计算方重新执行样本拆分阶段和计算阶段,得到新一轮的j,并查看j的分布情况;2)如果j的分布情况不佳,拟合方调整学习率α和代价函数收敛值γ,并重新执行步骤1)。
通过以上示例不难看出,使用本申请基于多方计算的秘密分享方法进行多方计算,充分利用了区块链的以下特性优化了多方计算的安全处理:1)利用私有数据库对其他节点不可见的特性,存放私密值;2)利用区块链点到点之间的通信渠道进行通信,而无需通过不经意传输协议进行通信,大大简化了多方计算所需步骤;3)利用区块链中多个对等的计算节点的记账权竞争及投票机制,确保多方计算结果的正确性;4)利用公开账本的不可篡改和可追溯性,保证多方计算的结果的可靠性。
需要说明的是,上述具体应用示例仅为本申请基于多方计算的秘密分享方法的示例性说明,而非对本申请基于多方计算的秘密分享方法实施方式和应用场景的限定。实施者可根据具体的实施条件,采用任何适用的实施方式,应用于任何适用的应用场景中。
此外,本申请实施例还提供一种基于多方计算的秘密分享装置,应用于区块链中的数据提供节点,如图4所示,该装置40包括:私密值获取模块401,用于获取私密值并确保私密值对区块链中的其他节点不可见;数值计算模块402,用于根据私密值计算得到M个数值,其中,M个数值用于多方计算任务的中间计算以得到M个中间计算结果,M个中间计算结果中的N个中间计算结果用于计算得到多方计算任务的多方计算结果,M为大于2的自然数,N为小于等于M的自然数;数值发送模块403,用于将M个数值分别发送给区块链中的M个计算节点。
根据本申请一实施例,数值计算模块402包括:第一随机数获取子模块,用于获取第一随机数,将第一随机数设置为M个数值中的第1个数值;第二数值获取子模块,用于根据第一随机数和私密值,进行第一运算得到第2个数值;其他数值获取子模块,用于根据第X个数值和第X-1数值进行第一运算得到第X+1个数值,直至得到第M个数值,其中,X为大于2且小于等于M的自然数。
此外,本申请实施例还提供一种基于多方计算的秘密分享装置,应用于区块链中的计算节点,如图5所示,该装置50包括:多方计算任务获取模块501,用于获取多方计算任务;数值接收模块502,用于接收区块链中的数据提供节点所发送的数值;中间计算模块503,用于根据数值和多方计算任务进行中间计算得到第一中间计算结果;中间计算结果发送模块504,用于将第一中间计算节点发送给参与多方计算任务的M个计算节点中的其他计算节点,M为大于2的自然数;中间计算结果接收模块505,用于接收M个计算节点中的其他计算节点所发送的N-1个中间计算结果,N为小于等于M的自然数;多方计算模块506,用于根据第一中间计算结果和N-1个中间计算结果进行计算得到多方计算任务的多方计算结果;多方计算结果存储模块507,用于将多方计算结果存储至区块链的公开账本。
这里需要指出的是:以上对基于多方计算的秘密分享装置实施例的描述和以上对基于多方计算的秘密分享系统实施例的描述,与前述方法实施例的描述是类似的,具有同前述方法实施例相似的有益效果,因此不做赘述。对于本申请对基于多方计算的秘密分享装置实施例的描述和对基于多方计算的秘密分享系统实施例的描述尚未披露的技术细节,请参照本申请前述方法实施例的描述而理解,为节约篇幅,因此不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个装置,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以利用硬件的形式实现,也可以利用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储介质、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例方法的全部或部分。而前述的存储介质包括:移动存储介质、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种基于多方计算的秘密分享方法,应用于区块链中的数据提供节点,所述方法包括:
获取私密值并确保所述私密值对所述区块链中的其他节点不可见;
根据所述私密值计算得到M个数值,其中,所述M个数值用于多方计算任务的中间计算以得到M个中间计算结果,所述M个中间计算结果中的N个中间计算结果用于计算得到所述多方计算任务的多方计算结果,M为大于2的自然数,N为小于等于M的自然数;
将所述M个数值分别发送给所述区块链中的M个计算节点。
2.根据权利要求1所述的方法,所述私密值存储于所述数据提供节点的私有数据空间。
3.根据权利要求1所述的方法,所述根据所述私密值进行计算得到M个数值,包括:
获取第一随机数,将所述第一随机数设置为M个数值中的第1个数值;
根据所述第一随机数和所述私密值,进行第一运算得到第2个数值;
根据第X个数值和第X-1数值进行第一运算得到第X+1个数值,直至得到第M个数值,其中,X为大于2且小于等于M的自然数。
4.一种基于多方计算的秘密分享方法,应用于区块链中的计算节点,所述方法包括:
获取多方计算任务;
接收所述区块链中的数据提供节点所发送的数值;
根据所述数值和所述多方计算任务进行中间计算得到第一中间计算结果;
将所述第一中间计算节点发送给参与所述多方计算任务的M个计算节点中的其他计算节点,M为大于2的自然数;
接收所述M个计算节点中的其他计算节点所发送的N-1个中间计算结果,N为小于等于M的自然数;
根据所述第一中间计算结果和所述N-1个中间计算结果进行计算得到所述多方计算任务的多方计算结果;
将所述多方计算结果存储至所述区块链的公开账本。
5.根据权利要求4所述的方法,所述多方计算任务包括模2n的环内数值范围内的算术运算。
6.根据权利要求5所述的方法,所述算术运算包括加法和乘法中的至少一项。
7.根据权利要求4所述的方法,M为3且N为2。
8.一种基于多方计算的秘密分享装置,应用于区块链中的数据提供节点,所述装置包括:
私密值获取模块,用于获取私密值并确保所述私密值对所述区块链中的其他节点不可见;
数值计算模块,用于根据所述私密值计算得到M个数值,其中,所述M个数值用于多方计算任务的中间计算以得到M个中间计算结果,所述M个中间计算结果中的N个中间计算结果用于计算得到所述多方计算任务的多方计算结果,M为大于2的自然数,N为小于等于M的自然数;
数值发送模块,用于将所述M个数值分别发送给所述区块链中的M个计算节点。
9.一种基于多方计算的秘密分享装置,应用于区块链中的计算节点,所述装置包括:
多方计算任务获取模块,用于获取多方计算任务;
数值接收模块,用于接收所述区块链中的数据提供节点所发送的数值;
中间计算模块,用于根据所述数值和所述多方计算任务进行中间计算得到第一中间计算结果;
中间计算结果发送模块,用于将所述第一中间计算节点发送给参与所述多方计算任务的M个计算节点中的其他计算节点,M为大于2的自然数;
中间计算结果接收模块,用于接收所述M个计算节点中的其他计算节点所发送的N-1个中间计算结果,N为小于等于M的自然数;
多方计算模块,用于根据所述第一中间计算结果和所述N-1个中间计算结果进行计算得到所述多方计算任务的多方计算结果;
多方计算结果存储模块,用于将所述多方计算结果存储至所述区块链的公开账本。
10.一种基于多方计算的秘密分享系统,所述系统基于区块链,所述区块链包括L个数据提供节点和M个计算节点,L为大于1的自然数,M为大于2的自然数,其中:
所述数据提供节点,用于执行权利要求1-3任一项所述的基于多方计算的秘密分享方法,生成M个数值分别发送给所述区块链中的M个计算节点;
所述计算节点,用于执行权利要求4-7任一项所述的基于多方计算的秘密分享方法,根据所述L个数据提供节点所述发送的数值和多方计算任务计算得到所述多方计算任务的多方计算结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110571644.6A CN113343291A (zh) | 2021-05-25 | 2021-05-25 | 一种基于多方计算的秘密分享方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110571644.6A CN113343291A (zh) | 2021-05-25 | 2021-05-25 | 一种基于多方计算的秘密分享方法、装置及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113343291A true CN113343291A (zh) | 2021-09-03 |
Family
ID=77471319
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110571644.6A Pending CN113343291A (zh) | 2021-05-25 | 2021-05-25 | 一种基于多方计算的秘密分享方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113343291A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116248266A (zh) * | 2022-12-16 | 2023-06-09 | 北京海泰方圆科技股份有限公司 | 基于秘密分享的安全多方计算方法及系统 |
CN116886411A (zh) * | 2023-08-08 | 2023-10-13 | 西南石油大学 | 一种基于匿名认证的安全多方计算方法 |
-
2021
- 2021-05-25 CN CN202110571644.6A patent/CN113343291A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116248266A (zh) * | 2022-12-16 | 2023-06-09 | 北京海泰方圆科技股份有限公司 | 基于秘密分享的安全多方计算方法及系统 |
CN116248266B (zh) * | 2022-12-16 | 2023-11-14 | 北京海泰方圆科技股份有限公司 | 基于秘密分享的安全多方计算方法及系统 |
CN116886411A (zh) * | 2023-08-08 | 2023-10-13 | 西南石油大学 | 一种基于匿名认证的安全多方计算方法 |
CN116886411B (zh) * | 2023-08-08 | 2024-03-15 | 西南石油大学 | 一种基于匿名认证的安全多方计算方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11797984B2 (en) | Computer-implemented system and method for exchange of data | |
Yue et al. | Blockchain based data integrity verification in P2P cloud storage | |
US9515828B2 (en) | Sharing a secret via linear interpolation | |
KR102170820B1 (ko) | 일반 연산 검증용 영지식 증명 서킷 기반 가상머신을 구현하기 위한 시스템 | |
Li et al. | Multi-level multi-secret sharing scheme for decentralized e-voting in cloud computing | |
EP4207024A1 (en) | Computer-implemented system and method for performing transaction mixing on a blockchain | |
EP3566389B1 (en) | Distributed privacy-preserving verifiable computation | |
CN112347500B (zh) | 分布式系统的机器学习方法、装置、系统、设备及存储介质 | |
Mendis et al. | A blockchain-powered decentralized and secure computing paradigm | |
CN113343291A (zh) | 一种基于多方计算的秘密分享方法、装置及系统 | |
CN111008406B (zh) | 基于隐私数据的一致性检测进行业务处理的方法及装置 | |
Shang et al. | Newton-interpolation-based zk-SNARK for Artificial Internet of Things | |
CN112685793A (zh) | 基于区块链的数据处理方法、装置和系统 | |
CN113469371A (zh) | 联邦学习方法和装置 | |
Zheng et al. | SecDR: Enabling secure, efficient, and accurate data recovery for mobile crowdsensing | |
Peters et al. | IT security for measuring instruments: Confidential checking of software functionality | |
Park et al. | Consensus protocol design for discrete‐time networks of multiagent with time‐varying delay via logarithmic quantizer | |
Avdispahić | On the prime geodesic theorem for hyperbolic 3‐manifolds | |
CN116488804A (zh) | 基于区块链分层节点的追溯环签名数据共享方法 | |
Tso | Two-in-one oblivious signatures | |
Liu et al. | ESA-FedGNN: Efficient secure aggregation for federated graph neural networks | |
CN109543451A (zh) | 一种基于模分量同态的隐私保护处理方法 | |
Zhang et al. | Toward Privacy‐Preserving Blockchain‐Based Electricity Auction for V2G Networks in the Smart Grid | |
Pravin et al. | Block chain technology for protecting the banking transaction without using tokens | |
EP4366231A2 (en) | Computer-implemented system and method for controlling processing steps of distributed system |
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 |