安全计算方法、装置、计算机及存储介质转让专利

申请号 : CN202011398372.6

文献号 : CN112527898B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 邱炜伟李伟汪小益匡立中张帅

申请人 : 杭州趣链科技有限公司

摘要 :

本申请提供了一种安全计算方法、装置、计算机及存储介质,该安全计算方法应用于区块链系统,其中,区块链系统包括相互连接的N个节点,其中,N为大于2的整数,安全计算方法包括:与区块链系统的其他节点进行角色选取,得到M个第一节点和P个第二节点,其中,M为大于1的整数,P为大于0的整数;若自身被选取为第一节点,则与P个第二节点进行秘密共享,以获取P个第二节点的第一秘密共享信息;基于第一秘密共享信息和其他第一节点的第二秘密共享信息与其他第一节点进行安全计算,得到安全计算结果,其中,第二秘密共享信息是其他第一节点与P个第二节点进行秘密共享得到的;在区块链系统中广播安全计算结果。本申请能够提高安全计算的效率。

权利要求 :

1.一种安全计算方法,其特征在于,应用于区块链系统,其中,所述区块链系统包括相互连接的N个节点,其中,N为大于2的整数,所述安全计算方法由所述N个节点中的一个节点执行,所述安全计算方法包括:与所述区块链系统的其他节点进行角色选取,得到M个第一节点和P个第二节点,其中,M为大于1的整数,P为大于0的整数;

若自身被选取为所述第一节点,则与所述P个第二节点进行秘密共享,以获取所述P个第二节点的第一秘密共享信息;

基于所述第一秘密共享信息和其他所述第一节点的第二秘密共享信息与其他所述第一节点进行安全计算,得到安全计算结果,其中,所述第二秘密共享信息是其他所述第一节点与所述P个第二节点进行秘密共享得到的;

在所述区块链系统中广播所述安全计算结果。

2.如权利要求1所述的安全计算方法,其特征在于,M=2,所述基于所述第一秘密共享信息和其他所述第一节点的第二秘密共享信息与其他所述第一节点进行安全计算,得到安全计算结果,包括:基于所述第一秘密共享信息和另一个所述第一节点的第二秘密共享信息与另一个所述第一节点进行安全两方计算,得到安全两方计算结果;

所述在所述区块链系统中广播所述安全计算结果,包括:

在所述区块链系统中广播所述安全两方计算结果。

3.如权利要求2所述的安全计算方法,其特征在于,所述基于所述第一秘密共享信息和另一个所述第一节点的第二秘密共享信息与另一个所述第一节点进行安全两方计算,得到安全两方计算结果,包括:基于所述第一秘密共享信息和自身私有数据生成第一秘密信息;

基于所述第一秘密信息和另一个所述第一节点的第二秘密信息与另一个所述第一节点进行安全两方计算,得到所述安全两方计算结果,其中,所述第二秘密信息是另一个所述第一节点根据第一秘密共享信息和另一个所述第一节点的私有数据得到的。

4.如权利要求3所述的安全计算方法,其特征在于,所述基于所述第一秘密共享信息和自身私有数据生成第一秘密信息,包括:获取所述N个节点构建的第一安全计算函数;

基于所述第一安全计算函数与另一个所述第一节点构建第二安全计算函数和第三安全计算函数,其中,所述第一安全计算函数为所述第二安全计算函数和所述第三安全计算函数的复合函数;

基于所述第二安全计算函数对所述第一秘密共享信息和自身私有数据进行计算,得到所述第一秘密信息。

5.如权利要求4所述的安全计算方法,其特征在于,所述基于所述第一秘密信息和另一个所述第一节点的第二秘密信息与另一个所述第一节点进行安全两方计算,得到所述安全两方计算结果,包括:基于所述第三安全计算函数对所述第一秘密信息和所述第二秘密信息进行安全两方计算,得到所述安全两方计算结果。

6.如权利要求5所述的安全计算方法,其特征在于,所述基于所述第三安全计算函数对所述第一秘密信息和所述第二秘密信息进行安全两方计算,得到所述安全两方计算结果,包括:判断自身是否被选取为电路建立节点;

若自身被选取为电路建立节点,则基于所述第三安全计算函数建立两方计算混淆电路;

将所述两方计算混淆电路和所述第一秘密信息的真值表发送至另一个所述第一节点;

获取另一个所述第一节点基于所述第二秘密信息执行所述两方计算混淆电路后发送的安全两方计算结果。

7.如权利要求1所述的安全计算方法,其特征在于,所述与所述区块链系统的其他节点进行角色选取,得到M个第一节点和P个第二节点,包括:基于预设参数对所述N个节点进行排序,所述预设参数包括节点的私有数据数据量和通信速度中的至少一种;

将排序靠前的M个节点确定为所述第一节点,将所述区块链系统中的其他节点确定为所述第二节点。

8.一种安全计算装置,其特征在于,所述安全计算装置应用于区块链系统中的节点,其中,所述区块链系统包括相互连接的N个节点,其中,N为大于2的整数,所述安全计算装置包括:角色选取单元,用于与所述区块链系统的其他节点进行角色选取,得到M个第一节点和P个第二节点,其中,M为大于1的整数,P为大于0的整数;

秘密共享单元,用于若自身被选取为所述第一节点,则与所述P个第二节点进行秘密共享,以获取所述P个第二节点的第一秘密共享信息;

安全计算单元,用于基于所述第一秘密共享信息和其他所述第一节点的第二秘密共享信息与其他所述第一节点进行安全计算,得到安全计算结果,其中,所述第二秘密共享信息是其他所述第一节点与所述P个第二节点进行秘密共享得到的;

广播单元,用于在所述区块链系统中广播所述安全计算结果。

9.一种计算机,其特征在于,所述计算机包括:

一个或多个处理器;

存储器;以及

一个或多个应用程序,其中所述一个或多个应用程序被存储于所述存储器中,并配置为由所述处理器执行以实现权利要求1至7任一项所述的安全计算方法。

10.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器进行加载,以执行权利要求1至7任一项所述的安全计算方法中的步骤。

说明书 :

安全计算方法、装置、计算机及存储介质

技术领域

[0001] 本申请涉及区块链技术领域,具体涉及一种安全计算方法、装置、计算机及存储介质。

背景技术

[0002] 数据是数据经济时代的关键生产要素,只有流动起来才能产生其价值。不过,大多数拥有敏感数据的企业考虑到数据安全和个人隐私问题,对数据的共享都比较谨慎。安全
多方计算(英文:Secure Multi‑Party Computation)的研究主要是针对无可信第三方的情
况下,如何安全地计算一个约定函数的问题。安全多方计算是电子选举、门限签名以及电子
拍卖等诸多应用得以实施的密码学基础。一个安全多方计算协议,如果对于拥有无限计算
能力攻击者而言是安全的,则称作是信息论安全的或无条件安全的;如果对于拥有多项式
计算能力的攻击者是安全的,则称为是密码学安全的或条件安全的。已有的结果证明了在
无条件安全模型下,当且仅当恶意参与者的人数少于总人数的1/3时,安全的方案才存在。
而在条件安全模型下,当且仅当恶意参与者的人数少于总人数的一半时,安全的方案才存
在。安全多方计算是在保证数据安全的情况下,挖掘数据价值的一种重要方法,实现了数据
可用不可见。
[0003] 目前安全多方计算的通用方法是混淆电路模型,在此基础上将支持两方计算的混淆电路扩展到三方计算,常用步骤如下所示:秘密共享阶段,参与运算的多方将自己的私有
数据采用秘密共享方式对参与运算的多方进行秘密共享,保证每一个参与方都可以获得自
己秘密的分量;电路执行阶段,将接收到的每个秘密分量输入到电路中,本地逐门执行电路
(AND门需要再执行OT协议),重复此过程,直到所有门都执行完成,获得结果的分量。结果广
播再计算每一方将最后的执行结果广播出来,各参与方获得各个参与方结果分量后求取最
终结果。但现有的安全多方计算需要每个节点都参与安全计算,安全计算效率不高。
[0004] 也即,现有技术中安全计算效率不高。

发明内容

[0005] 本申请旨在提供一种安全计算方法、装置、计算机及存储介质,旨在解决现有技术中安全计算效率不高的问题。
[0006] 一方面,本申请提供一种安全计算方法,应用于区块链系统,其中,所述区块链系统包括相互连接的N个节点,其中,N为大于2的整数,所述安全计算方法由所述N个节点中的
一个节点执行,所述安全计算方法包括:
[0007] 与所述区块链系统的其他节点进行角色选取,得到M个第一节点和P个第二节点,其中,M为大于1的整数,P为大于0的整数;
[0008] 若自身被选取为所述第一节点,则与所述P个第二节点进行秘密共享,以获取所述P个第二节点的第一秘密共享信息;
[0009] 基于所述第一秘密共享信息和其他所述第一节点的第二秘密共享信息与其他所述第一节点进行安全计算,得到安全计算结果,其中,所述第二秘密共享信息是其他所述第
一节点与所述P个第二节点进行秘密共享得到的;
[0010] 在所述区块链系统中广播所述安全计算结果。
[0011] 其中,M=2,
[0012] 所述基于所述第一秘密共享信息和其他所述第一节点的第二秘密共享信息与其他所述第一节点进行安全计算,得到安全计算结果,包括:
[0013] 基于所述第一秘密共享信息和另一个所述第一节点的第二秘密共享信息与另一个所述第一节点进行安全两方计算,得到安全两方计算结果;
[0014] 所述在所述区块链系统中广播所述安全计算结果,包括:
[0015] 在所述区块链系统中广播所述安全两方计算结果。
[0016] 其中,所述基于所述第一秘密共享信息和另一个所述第一节点的第二秘密共享信息与另一个所述第一节点进行安全两方计算,得到安全两方计算结果,包括:
[0017] 基于所述第一秘密共享信息和自身私有数据生成第一秘密信息;
[0018] 基于所述第一秘密信息和另一个所述第一节点的第二秘密信息与另一个所述第一节点进行安全两方计算,得到所述安全两方计算结果,其中,所述第二秘密信息是另一个
所述第一节点根据第一秘密共享信息和另一个所述第一节点的私有数据得到的。
[0019] 其中,所述基于所述第一秘密共享信息和自身私有数据生成第一秘密信息,包括:
[0020] 获取所述N个节点构建的第一安全计算函数;
[0021] 基于所述第一安全计算函数与另一个所述第一节点构建第二安全计算函数和第三安全计算函数,其中,所述第一安全计算函数为所述第二安全计算函数和所述第三安全
计算函数的复合函数;
[0022] 基于所述第二安全计算函数对所述第一秘密共享信息和自身私有数据进行计算,得到所述第一秘密信息。
[0023] 其中,所述基于所述第一秘密信息和另一个所述第一节点的第二秘密信息与另一个所述第一节点进行安全两方计算,得到所述安全两方计算结果,包括:
[0024] 基于所述第三安全计算函数对所述第一秘密信息和所述第二秘密信息进行安全两方计算,得到所述安全两方计算结果。
[0025] 其中,所述基于所述第三安全计算函数对所述第一秘密信息和所述第二秘密信息进行安全两方计算,得到所述安全两方计算结果,包括:
[0026] 判断自身是否被选取为电路建立节点;
[0027] 若自身被选取为电路建立节点,则基于所述第三安全计算函数建立两方计算混淆电路;
[0028] 将所述两方计算混淆电路和所述第一秘密信息的真值表发送至另一个所述第一节点;
[0029] 获取另一个所述第一节点基于所述第二秘密信息执行所述两方计算混淆电路后发送的安全两方计算结果。
[0030] 其中,所述与所述区块链系统的其他节点进行角色选取,得到M个第一节点和P个第二节点,包括:
[0031] 基于预设参数对所述N个节点进行排序,所述预设参数包括节点的私有数据数据量和通信速度中的至少一种;
[0032] 将排序靠前的M个节点确定为所述第一节点,将所述区块链系统中的其他节点确定为所述第二节点。
[0033] 一方面,本申请提供一种安全计算装置,所述安全计算装置应用于区块链系统中的节点,其中,所述区块链系统包括相互连接的N个节点,其中,N为大于2的整数,所述安全
计算装置包括:
[0034] 角色选取单元,用于与所述区块链系统的其他节点进行角色选取,得到M个第一节点和P个第二节点,其中,M为大于1的整数,P为大于0的整数;
[0035] 秘密共享单元,用于若自身被选取为所述第一节点,则与所述P个第二节点进行秘密共享,以获取所述P个第二节点的第一秘密共享信息;
[0036] 安全计算单元,用于基于所述第一秘密共享信息和其他所述第一节点的第二秘密共享信息与其他所述第一节点进行安全计算,得到安全计算结果,其中,所述第二秘密共享
信息是其他所述第一节点与所述P个第二节点进行秘密共享得到的;
[0037] 广播单元,用于在所述区块链系统中广播所述安全计算结果。
[0038] 其中,M=2,所述安全计算单元,还用于基于所述第一秘密共享信息和另一个所述第一节点的第二秘密共享信息与另一个所述第一节点进行安全两方计算,得到安全两方计
算结果;
[0039] 所述广播单元,还用于在所述区块链系统中广播所述安全两方计算结果。
[0040] 其中,所述安全计算单元,还用于基于所述第一秘密共享信息和自身私有数据生成第一秘密信息;
[0041] 基于所述第一秘密信息和另一个所述第一节点的第二秘密信息与另一个所述第一节点进行安全两方计算,得到所述安全两方计算结果,其中,所述第二秘密信息是另一个
所述第一节点根据第一秘密共享信息和另一个所述第一节点的私有数据得到的。
[0042] 其中,所述安全计算单元,还用于获取所述N个节点构建的第一安全计算函数;
[0043] 基于所述第一安全计算函数与另一个所述第一节点构建第二安全计算函数和第三安全计算函数,其中,所述第一安全计算函数为所述第二安全计算函数和所述第三安全
计算函数的复合函数;
[0044] 基于所述第二安全计算函数对所述第一秘密共享信息和自身私有数据进行计算,得到所述第一秘密信息。
[0045] 其中,所述安全计算单元,还用于基于所述第三安全计算函数对所述第一秘密信息和所述第二秘密信息进行安全两方计算,得到所述安全两方计算结果。
[0046] 其中,所述安全计算单元,还用于判断自身是否被选取为电路建立节点;
[0047] 若自身被选取为电路建立节点,则基于所述第三安全计算函数建立两方计算混淆电路;
[0048] 将所述两方计算混淆电路和所述第一秘密信息的真值表发送至另一个所述第一节点;
[0049] 获取另一个所述第一节点基于所述第二秘密信息执行所述两方计算混淆电路后发送的安全两方计算结果。
[0050] 其中,所述角色选取单元,还用于基于预设参数对所述N个节点进行排序,所述预设参数包括节点的私有数据数据量和通信速度中的至少一种;
[0051] 将排序靠前的M个节点确定为所述第一节点,将所述区块链系统中的其他节点确定为所述第二节点。
[0052] 一方面,本申请还提供一种计算机,所述计算机包括:
[0053] 一个或多个处理器;
[0054] 存储器;以及
[0055] 一个或多个应用程序,其中所述一个或多个应用程序被存储于所述存储器中,并配置为由所述处理器执行以实现第一方面中任一项所述的安全计算方法。
[0056] 一方面,本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器进行加载,以执行第一方面任一项所述的安全计算方法中的步骤。
[0057] 本申请提供一种安全计算方法,应用于区块链系统,其中,区块链系统包括相互连接的N个节点,其中,N为大于2的整数,安全计算方法由N个节点中的一个节点执行,安全计
算方法包括:与区块链系统的其他节点进行角色选取,得到M个第一节点和P个第二节点,其
中,M为大于1的整数,P为大于0的整数;若自身被选取为第一节点,则与P个第二节点进行秘
密共享,以获取P个第二节点的第一秘密共享信息;基于第一秘密共享信息和其他第一节点
的第二秘密共享信息与其他第一节点进行安全计算,得到安全计算结果,其中,第二秘密共
享信息是其他第一节点与P个第二节点进行秘密共享得到的;在区块链系统中广播安全计
算结果。本申请首先通过角色选取将区块链系统中的节点分为第一节点和第二节点,在自
身被选为第一节点时,与P个第二节点进行秘密共享得到第一秘密共享信息,然后与其他第
一节点进行安全计算,由于第一节点的数量少于区块链系统中的总节点数量,因此,只通过
第一节点进行安全计算,能够减少参与安全计算节点的数量,提高安全计算的效率。

附图说明

[0058] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于
本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附
图。
[0059] 图1是本申请实施例所提供的区块链系统的场景示意图;
[0060] 图2是本申请实施例提供的安全计算方法的一个实施例流程示意图;
[0061] 图3是本申请实施例提供的安全计算方法的一个实施例中N个节点的信息交互示意图;
[0062] 图4是本申请实施例中提供的安全计算装置一个实施例结构示意图;
[0063] 图5是本申请实施例中提供的计算机的一个实施例结构示意图。

具体实施方式

[0064] 下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于
本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施
例,都属于本申请保护的范围。
[0065] 在本申请的描述中,需要理解的是,术语“中心”、“纵向”、“横向”、“长度”、“宽度”、“厚度”、“上”、“下”、“前”、“后”、“左”、“右”、“竖直”、“水平”、“顶”、“底”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本申请和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,
因此不能理解为对本申请的限制。此外,术语“第一”、“第二”仅用于描述目的,而不能理解
为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、
“第二”的特征可以明示或者隐含地包括一个或者更多个所述特征。在本申请的描述中,“多
个”的含义是两个或两个以上,除非另有明确具体的限定。
[0066] 在本申请中,“示例性”一词用来表示“用作例子、例证或说明”。本申请中被描述为“示例性”的任何实施例不一定被解释为比其它实施例更优选或更具优势。为了使本领域任
何技术人员能够实现和使用本申请,给出了以下描述。在以下描述中,为了解释的目的而列
出了细节。应当明白的是,本领域普通技术人员可以认识到,在不使用这些特定细节的情况
下也可以实现本申请。在其它实例中,不会对公知的结构和过程进行详细阐述,以避免不必
要的细节使本申请的描述变得晦涩。因此,本申请并非旨在限于所示的实施例,而是与符合
本申请所公开的原理和特征的最广范围相一致。
[0067] 需要说明的是,本申请实施例方法由于是在节点中执行,各节点的处理对象均以数据或信息的形式存在,例如时间,实质为时间信息,可以理解的是,后续实施例中若提及
尺寸、数量、位置等,均为对应的数据存在,以便节点进行处理,具体此处不作赘述。
[0068] 在对本申请实施例进行详细地解释说明之前,先对本申请实施例涉及到的一些名词进行解释说明。
[0069] 区块链:区块链技术脱胎于比特币技术,是比特币的底层技术,其是去中心化的分布式账本数据库。区块链本身是一串使用密码学算法相关联产生的数据块(即区块),每一
个数据块中包含了多次区块链网络交易有效确认的信息。正是基于此,所以无法通过篡改
区块上的数据来进行作弊,能够确保任何区块上的数据均是公开透明的,确保了数据的安
全性。
[0070] 区块链可以分为公有链、私有链、联盟链。其中,联盟链则介于公有链和私有链之间,由若干组织一起合作维护一条区块链,该区块链的使用必须是有权限的管理,相关信息
会得到保护,典型如金融组织。
[0071] 总结来说,区块链是由节点参与的分布式数据库系统,或者,也可称之为一个基于P2P(点对点)网络的分布式公共账本,其特点是不可更改、不可伪造,还可以将其理解为账
簿系统。
[0072] 区块链的节点:参与构建区块链的节点,可以为随机数生成的执行主体、节点之间交互可以实现交易等业务等。该节点存储有相关区块数据。
[0073] 本申请实施例提供一种安全计算方法、装置、计算机及存储介质,以下分别进行详细说明。
[0074] 请参阅图1,图1是本申请实施例所提供的区块链系统的场景示意图。
[0075] 在本申请实施例中,区块链系统10包括N个节点11(图1中以区块链系统10包括3个节点11为例进行说明),N为大于2的整数(例如N=3)。该N个节点11通过网络连接,连接方式
可以是无线连接或有线连接。具体的,该N个节点11通过对等网络动态组网,形成一个“去中
心化”的系统,该N个节点11互为对等节点11,即每个节点11对于整个区块链系统10来说都
是一样的。也即只需满足区块链系统10包括相互连接的至少3个节点11即可,本申请对此不
作限定。
[0076] 在本申请实施例中,需要说明的是,图1所示的区块链系统的场景示意图仅仅是一个示例,本申请实施例描述的区块链系统10以及场景是为了更加清楚的说明本申请实施例
的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可
知,随着区块链系统10的演变和新业务场景的出现,本申请实施例提供的技术方案对于类
似的技术问题,同样适用。
[0077] 本申请实施例中,该节点11可以是独立的服务器,也可以是服务器组成的服务器网络或服务器集群,例如,本申请实施例中所描述的节点,其包括但不限于计算机、网络主
机、单个网络服务器、多个网络服务器集或多个服务器构成的云服务器。其中,云服务器由
基于云计算(Cloud Computing)的大量计算机或网络服务器构成。节点11中集成有安全计
算装置。
[0078] 首先,本申请实施例中提供一种安全计算方法,该安全计算方法的执行主体为安全计算装置,该安全计算方法包括:
[0079] 与区块链系统的其他节点进行角色选取,得到M个第一节点和P个第二节点,其中,M为大于1的整数,P为大于0的整数;
[0080] 若自身被选取为第一节点,则与P个第二节点进行秘密共享,以获取P个第二节点的第一秘密共享信息;
[0081] 基于第一秘密共享信息和其他第一节点的第二秘密共享信息与其他第一节点进行安全计算,得到安全计算结果,其中,第二秘密共享信息是其他第一节点与P个第二节点
进行秘密共享得到的;
[0082] 在区块链系统中广播安全计算结果。
[0083] 参阅图2,图2是本申请实施例提供的安全计算方法的一个实施例流程示意图。
[0084] 如图2所示,本申请实施例中,该安全计算方法包括:
[0085] S201、与区块链系统的其他节点进行角色选取,得到M个第一节点和P个第二节点,其中,M为大于1的整数,P为大于0的整数。
[0086] 本申请实施例中,N为大于2的整数,M为大于1的整数,P为大于0的整数。具体的,N=M+P。其中,M可以为2、3或者更大的整数,P可以为1、2或者更大的整数。M个第一节点为安
全计算参与方,P个第二节点为秘密共享方。
[0087] 在一个具体的实施例中,与区块链系统的其他节点进行角色选取,得到M个第一节点和P个第二节点,包括:
[0088] (1)基于预设参数对N个节点进行排序,预设参数包括节点的私有数据数据量和通信速度中的至少一种。
[0089] 其中,私有数据数据量指的是节点参与安全计算所要提供的私有数据的数量大小,例如,私有数据数据量为1M。
[0090] 在一个具体的实施例中,预设参数为私有数据数据量,基于私有数据数据量的大小对N个节点由大到小进行排序。
[0091] 在另一个具体的实施例中,预设参数为节点的通信速度。基于通信速度的大小对N个节点由大到小进行排序。
[0092] 在又一个具体的实施例中,预设参数为私有数据数据量和通信速度。对私有数据数据量和通信速度加权后得到私有数据数据量和通信速度的加权值,基于私有数据数据量
和通信速度的加权值的大小对N个节点由大到小进行排序。
[0093] 例如,N=4,N个节点分别为节点Bob、节点Chris、节点Ted以及节点Alice。基于预设参数对N个节点进行排序后,得到排序后的N个节点分别为:节点Alice、节点Bob、节点
Chris以及节点Ted。
[0094] (2)将排序靠前的M个节点确定为第一节点,将区块链系统中的其他节点确定为第二节点。
[0095] 例如,N=4,M=3,P=1。则将排序靠前的3个节点确定为第一节点,将区块链系统中的其他节点确定为第二节点。节点Alice、节点Bob以及节点Chris均为第一节点,节点Ted
为第二节点。由于将排序靠前的M个节点确定为第一节点,而排序是由私有数据数据量和通
信速度决定的,因此,将私有数据数据量和通信速度最优的节点当做第一节点参与后面的
安全计算,一方面减少了数据通信量,另一方面提高了数据通信速度,整体提高了安全计算
效率。
[0096] S202、若自身被选取为第一节点,则与P个第二节点进行秘密共享,以获取P个第二节点的第一秘密共享信息。
[0097] 本申请实施例中,若自身被选取为第一节点,表明自身被选出作为代表参与安全计算,则与P个第二节点进行秘密共享,以获取P个第二节点的第一秘密共享信息。若自身未
被选取为第一节点,则自身作为第二节点只需要参与秘密共享即可,无需参于安全计算,能
够提高安全计算的效率。
[0098] 秘密共享(Secret‑Sharing)是现代密码学领域的一个重要分支,是信息安全和数据保密中的重要手段,也是安全多方计算和联邦学习等领域的一个基础应用技术。实际应
用中,在密钥管理,数字签名,身份认证,安全多方计算,纠错码,银行网络管理以及数据安
全等方面都有重要作用。秘密共享是在一组参与者中共享秘密的技术,它主要用于保护重
要信息,防止信息被丢失、被破坏、被篡改。它源于经典密码理论,最早由Sharmir和Blakley
在1979年提出。简单来说,秘密共享就是指共享的秘密在一个用户群体里进行合理分配,以
达到由所有成员共同掌管秘密的目的。
[0099] 优选地,与P个第二节点以线性秘密共享方式进行秘密共享,以获取P个第二节点的第一秘密共享信息。其中,第一秘密共享信息包括P个第二节点的秘密分量。具体的,线性
秘密共享方式为加法秘密共享方式。
[0100] 其中,线性秘密共享方式可以是可验证秘密分享策略,例如Pedersen‑VSS或者Feldman‑VSS。Pedersen‑VSS是一个由Pedersen提出的在信息论上安全的非交互可验证秘
密分享策略。Pedersen‑VSS是基于拉格朗日多项式插值法得出的,信息速率较高。Feldman‑
VSS是一个由Feldman提出的不需要可信机构参与的非交互可验证秘密分享策略,具有较高
的效率;并且,其安全性是基于计算离散对数的困难性假设的,对被分享的秘密数能够提供
计算上的安全性,能够抵抗包括分发者在内的。通过Pedersen‑VSS或者Feldman‑VSS进行秘
密分享,能够提高私有数据分享的效率以及安全性。
[0101] 参阅图3,图3是本申请实施例提供的安全计算方法的一个实施例中N个节点的信息交互示意图。图3中,N=3,M=2,P=1。
[0102] 如图3所示,N个节点分别为节点Alice、节点Bob以及节点Chris,其中,节点Alice和节点Bob为第一节点,节点Chris为第二节点。节点Alice的私有数据为x,节点Bob的私有
数据为y,节点Chris的私有数据为z。节点Chris对私有数据z进行秘密共享,将秘密分量z1
共享给节点Alice,将秘密分量z2共享给节点Bob。
[0103] 因此,节点Alice与P个第二节点以线性秘密共享方式进行秘密共享,获取到P个第二节点的第一秘密共享信息,即秘密分量z1;同时,节点Bob与P个第二节点以线性秘密共享
方式进行秘密共享,获取到P个第二节点的第二秘密共享信息,即秘密分量z2。需要说明的
是,当第二节点是多个的时候,第一秘密共享信息和第二秘密共享信息均包括多个秘密分
量。
[0104] S203、基于第一秘密共享信息和其他第一节点的第二秘密共享信息与其他第一节点进行安全计算,得到安全计算结果,其中,第二秘密共享信息是其他第一节点与P个第二
节点进行秘密共享得到的。
[0105] 由于,P大于0,M小于N,因此,将N个节点参与的安全多方计算转换成M个节点参与的安全多方计算能够减少参与安全计算的节点数量,提高安全计算的效率。
[0106] 进一步的,在一个优选的实施例中,M=2,此时,仅两个节点参与安全计算,即安全两方计算。安全两方计算是指两个参与方,在保护各自秘密输入的前提下,共同合作完成某
个功能函数的计算任务,并最终得到各自正确的计算结果。安全两方计算是多方计算的一
种特例,其只涉及两个参与方。较之于多方计算,安全两方计算模型相对简单,比如其不存
在多方计算场景的“不诚实的大多数”(dishonest majority)问题。现实世界中仅涉及两个
实体的应用场景很多,比如基因匹配、人脸识别、音乐检索等模式匹配问题,安全两方计算
协议尤适用于这些具体场景的建模分析。安全两方计算是安全计算领域里的核心内容之
一,它既是构造多方协议的基础,也可直接运用于解决现实世界中实际问题。目前,安全两
方计算协议的主流设计框架仍基于姚期智先生最早提出的基于混淆电路的两方计算通用
协议。
[0107] 混淆电路(Garbled Circuit),又称姚氏电路(Yao’s GC)是由姚期智教授于1986年针对百万富翁问题提出的解决方案。它的核心技术是将两方参与的安全计算函数编译成
布尔电路的形式,并将真值表加密打乱,从而实现电路的正常输出而又不泄露参与计算的
双方私有信息。由于任何安全计算函数都可转换成对应布尔电路的形式,相较其他的安全
计算方法,具有较高的通用性,因此引起了业界较高的关注度。姚氏混淆电路是基于半诚实
模型(semi‑honest)的安全两方计算(Two‑Party‑Security‑Computation)。
[0108] 由于安全两方计算可以充分利用姚氏混淆电路的优点。将安全多方计算转化为安全两方计算,能够在进行安全多方计算无需使用安全多方计算的混淆电路,只需使用安全
两方计算的姚氏混淆电路,提高安全多方计算的效率。
[0109] 为了便于说明,以下以N=3,M=2,P=1为例进行说明。
[0110] 本申请实施例中,当M=2时,基于第一秘密共享信息和另一个第一节点的第二秘密共享信息与另一个第一节点进行安全两方计算,得到安全两方计算结果。
[0111] 在一个具体的实施例中,基于第一秘密共享信息和另一个第一节点的第二秘密共享信息与另一个第一节点进行安全两方计算,得到安全两方计算结果,包括:
[0112] (1)基于第一秘密共享信息和自身私有数据生成第一秘密信息。
[0113] 具体的,获取N个节点构建的第一安全计算函数。基于第一安全计算函数与另一个第一节点构建第二安全计算函数和第三安全计算函数,其中,第一安全计算函数为第二安
全计算函数和第三安全计算函数的复合函数;基于第二安全计算函数对第一秘密共享信息
和自身私有数据进行计算,得到第一秘密信息。
[0114] 继续参阅图3,N个节点分别为节点Alice、节点Bob以及节点Chris,其中,节点Alice和节点Bob为第一节点,节点Chris为第二节点。节点Alice的私有数据为x,节点Bob的
私有数据为y,节点Chris的私有数据为z。节点Chris对私有数据z进行秘密共享,将秘密分
量z1共享给节点Alice,将秘密分量z2共享给节点Bob。节点Alice获取节点Alice、节点Bob
以及节点Chris构建的第一安全计算函数f(x,y,z)。节点Alice基于第一安全计算函数f(x,
y,z)与节点Bob构建第二安全计算函数h和第三安全计算函数g,其中,第一安全计算函数f
(x,y,z)为第二安全计算函数h和第三安全计算函数g的复合函数;基于第二安全计算函数h
对秘密分量z1和私有数据x进行计算,得到第一秘密信息h(x,z1)。同样的,节点Bob基于第
二安全计算函数g对秘密分量z2和私有数据y进行计算,得到第二秘密信息h(y,z2)。
[0115] (2)基于第一秘密信息和另一个第一节点的第二秘密信息与另一个第一节点进行安全两方计算,得到安全两方计算结果,其中,第二秘密信息是另一个第一节点根据第一秘
密共享信息和另一个第一节点的私有数据得到的。
[0116] 本申请实施例中,基于第三安全计算函数对第一秘密信息和第二秘密信息进行安全两方计算,得到安全两方计算结果。其中,基于同样的方法,另一个第一节点根据第一秘
密共享信息和另一个第一节点的私有数据得到第二秘密信息。
[0117] 在一个具体的实施例中,判断自身是否被选取为电路建立节点;若自身被选取为电路建立节点,则基于第三安全计算函数g建立两方计算混淆电路;将两方计算混淆电路和
第一秘密信息的真值表发送至另一个第一节点;获取另一个第一节点基于第二秘密信息执
行两方计算混淆电路后发送的安全两方计算结果。两方计算混淆电路为姚氏电路。
[0118] 进一步的,若判断自身未被选取为电路建立节点,则获取另一个第一节点建立的两方计算混淆电路、第二秘密信息的真值表;基于两方计算混淆电路、第二秘密信息的真值
表以及第一秘密信息得到安全两方计算结果并发送给另一个第一节点。
[0119] 具体的,两个第一节点根据预设策略选取电路建立节点。由于节点Alice和节点Bob地位对等,因此均有可能被选取为电路建立节点。假设节点Alice被选取为电路建立节
点,则节点Bob为电路执行节点。节点Alice基于第三安全计算函数g建立两方计算混淆电
路,将两方计算混淆电路和第一秘密信息h(x,z1)的真值表发送至节点Bob;节点Bob根据两
方计算混淆电路、第一秘密信息h(x,z1)的真值表以及第二秘密信息h(y,z2)得到安全两方
计算结果并发送给节点Alice,获取节点Bob执行两方计算混淆电路后发送的安全两方计算
结果。其中,安全两方计算结果为R,R=g(h(x,z1),h(y,z2))。
[0120] S204、在区块链系统中广播安全计算结果。
[0121] 当M=2时,在区块链系统中广播安全两方计算结果R。
[0122] 为了更好实施本申请实施例中安全计算方法,在安全计算方法基础之上,本申请实施例中还提供一种安全计算装置,如图4所示,图4是本申请实施例中提供的安全计算装
置一个实施例结构示意图,该安全计算装置包括:
[0123] 角色选取单元401,用于与区块链系统的其他节点进行角色选取,得到M个第一节点和P个第二节点,其中,M为大于1的整数,P为大于0的整数;
[0124] 秘密共享单元402,用于若自身被选取为第一节点,则与P个第二节点进行秘密共享,以获取P个第二节点的第一秘密共享信息;
[0125] 安全计算单元403,用于基于第一秘密共享信息和其他第一节点的第二秘密共享信息与其他第一节点进行安全计算,得到安全计算结果,其中,第二秘密共享信息是其他第
一节点与P个第二节点进行秘密共享得到的;
[0126] 广播单元404,用于在区块链系统中广播安全计算结果。
[0127] 其中,M=2,安全计算单元403,还用于基于第一秘密共享信息和另一个第一节点的第二秘密共享信息与另一个第一节点进行安全两方计算,得到安全两方计算结果;
[0128] 广播单元404,还用于在区块链系统中广播安全两方计算结果。
[0129] 其中,安全计算单元403,还用于基于第一秘密共享信息和自身私有数据生成第一秘密信息;
[0130] 基于第一秘密信息和另一个第一节点的第二秘密信息与另一个第一节点进行安全两方计算,得到安全两方计算结果,其中,第二秘密信息是另一个第一节点根据第一秘密
共享信息和另一个第一节点的私有数据得到的。
[0131] 其中,安全计算单元403,还用于获取N个节点构建的第一安全计算函数;
[0132] 基于第一安全计算函数与另一个第一节点构建第二安全计算函数和第三安全计算函数,其中,第一安全计算函数为第二安全计算函数和第三安全计算函数的复合函数;
[0133] 基于第二安全计算函数对第一秘密共享信息和自身私有数据进行计算,得到第一秘密信息。
[0134] 其中,安全计算单元403,还用于基于第三安全计算函数对第一秘密信息和第二秘密信息进行安全两方计算,得到安全两方计算结果。
[0135] 其中,安全计算单元403,还用于判断自身是否被选取为电路建立节点;
[0136] 若自身被选取为电路建立节点,则基于第三安全计算函数建立两方计算混淆电路;
[0137] 将两方计算混淆电路和第一秘密信息的真值表发送至另一个第一节点;
[0138] 获取另一个第一节点基于第二秘密信息执行两方计算混淆电路后发送的安全两方计算结果。
[0139] 其中,角色选取单元401,还用于基于预设参数对N个节点进行排序,预设参数包括节点的私有数据数据量和通信速度中的至少一种;
[0140] 将排序靠前的M个节点确定为第一节点,将区块链系统中的其他节点确定为第二节点。
[0141] 本申请实施例还提供一种节点,其集成了本申请实施例所提供的任一种安全计算装置。如图5所示,其示出了本申请实施例所涉及的节点的结构示意图,具体来讲:
[0142] 该节点可以包括一个或者一个以上处理核心的处理器601、一个或一个以上计算机可读存储介质的存储器602、电源603和输入单元604等部件。本领域技术人员可以理解,
图中示出的节点结构并不构成对节点的限定,可以包括比图示更多或更少的部件,或者组
合某些部件,或者不同的部件布置。其中:
[0143] 处理器601是该节点的控制中心,利用各种接口和线路连接整个节点的各个部分,通过运行或执行存储在存储器602内的软件程序和/或模块,以及调用存储在存储器602内
的数据,执行节点的各种功能和处理数据,从而对节点进行整体监控。可选的,处理器601可
包括一个或多个处理核心;优选的,处理器601可集成应用处理器和调制解调处理器,其中,
应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通
信。可以理解的是,上述调制解调处理器也可以不集成到处理器601中。
[0144] 存储器602可用于存储软件程序以及模块,处理器601通过运行存储在存储器602的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器602可主要包括存储程
序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比
如声音播放功能、图像播放功能等)等;存储数据区可存储根据节点的使用所创建的数据
等。此外,存储器602可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少
一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器602还可以包括
存储器控制器,以提供处理器601对存储器602的访问。
[0145] 节点还包括给各个部件供电的电源603,优选的,电源603可以通过电源管理系统与处理器601逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。
电源603还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、
电源转换器或者逆变器、电源状态指示器等任意组件。
[0146] 该节点还可包括输入单元604,该输入单元604可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输
入。
[0147] 尽管未示出,节点还可以包括显示单元等,在此不再赘述。具体在本实施例中,节点中的处理器601会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行
文件加载到存储器602中,并由处理器601来运行存储在存储器602中的应用程序,从而实现
各种功能,如下:
[0148] 与区块链系统的其他节点进行角色选取,得到M个第一节点和P个第二节点,其中,M为大于1的整数,P为大于0的整数;
[0149] 若自身被选取为第一节点,则与P个第二节点进行秘密共享,以获取P个第二节点的第一秘密共享信息;
[0150] 基于第一秘密共享信息和其他第一节点的第二秘密共享信息与其他第一节点进行安全计算,得到安全计算结果,其中,第二秘密共享信息是其他第一节点与P个第二节点
进行秘密共享得到的;
[0151] 在区块链系统中广播安全计算结果。
[0152] 本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存
储介质中,并由处理器进行加载和执行。
[0153] 为此,本申请实施例提供一种计算机可读存储介质,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光
盘等。其上存储有计算机程序,计算机程序被处理器进行加载,以执行本申请实施例所提供
的任一种安全计算方法中的步骤。例如,计算机程序被处理器进行加载可以执行如下步骤:
[0154] 与区块链系统的其他节点进行角色选取,得到M个第一节点和P个第二节点,其中,M为大于1的整数,P为大于0的整数;
[0155] 若自身被选取为第一节点,则与P个第二节点进行秘密共享,以获取P个第二节点的第一秘密共享信息;
[0156] 基于第一秘密共享信息和其他第一节点的第二秘密共享信息与其他第一节点进行安全计算,得到安全计算结果,其中,第二秘密共享信息是其他第一节点与P个第二节点
进行秘密共享得到的;
[0157] 在区块链系统中广播安全计算结果。
[0158] 在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对其他实施例的详细描述,此处不再赘述。
[0159] 具体实施时,以上各个单元或结构可以作为独立的实体来实现,也可以进行任意组合,作为同一或若干个实体来实现,以上各个单元或结构的具体实施可参见前面的方法
实施例,在此不再赘述。
[0160] 以上各个操作的具体实施可参见前面的实施例,在此不再赘述。
[0161] 以上对本申请实施例所提供的一种安全计算方法、装置、计算机及存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例
的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的技术人员,依据
本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上,本说明书内容不应理
解为对本申请的限制。