CN109978693A - 用于在区块链网络中进行分布式签名的方法、装置及介质 - Google Patents
用于在区块链网络中进行分布式签名的方法、装置及介质 Download PDFInfo
- Publication number
- CN109978693A CN109978693A CN201910247569.0A CN201910247569A CN109978693A CN 109978693 A CN109978693 A CN 109978693A CN 201910247569 A CN201910247569 A CN 201910247569A CN 109978693 A CN109978693 A CN 109978693A
- Authority
- CN
- China
- Prior art keywords
- signature
- user
- block chain
- intelligence contract
- request
- 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
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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Abstract
本发明内容提供了一种在区块链网络中进行分布式签名的方法,所述方法包括:在所述区块链网络的区块链节点处,接收来自第一用户端的签名请求;运行系统智能合约,其中,运行所述系统智能合约包括以下子步骤:获取存储在所述区块链节点内部的签名私钥;至少基于所述签名请求计算摘要值;以及基于所述摘要值和所述签名私钥生成签名;将所述签名发送给至少一个第二用户端。此外,本发明内容还提供了一种用于在用户端侧验证签名的方法、用于在区块链网络中进行分布式签名的装置、用于在用户端侧验证签名的装置以及一种相应的计算机可读存储介质。
Description
技术领域
本发明内容涉及区块链技术,更为具体地涉及一种用于在区块链网络中进行分布式签名的方法、一种用于在区块链网络中进行分布式签名的装置以及一种相应的计算机可读存储介质。
背景技术
区块链(Blockchain)是用分布式数据库识别、传播和记载信息的智能化对等网络,也称为价值互联网。所谓价值互联网,是指使得用户能够通过网络方便、快捷、低成本地传递价值。
而在区块链的解决方案之中,实现平台签名至关重要。在现有技术中,诸如在安全多方计算服务中多采用中心化的签名服务,而该中心化的签名服务要为每个安全多方计算联盟生成一对不同的签名公私钥对,私钥由签名服务拥有并且保密,公钥对安全多方计算联盟的所有成员公开。
发明内容
为了解决多方计算服务中与相互信任以及数据保护有关的技术问题,本发明的实施例提供了一种通过运行系统智能合约来实现签名服务的方法。具体实现过程中,诸如安全多方计算联盟的盟主在区块链云服务平台上创建安全多方计算服务实例以及相应的区块链时,区块链云服务平台会在云上创建出预置了签名服务系统智能合约的区块链节点,其中,该区块链的所有节点都由区块链云服务平台负责管理维护,任何用户都无法直接登录访问,只能通过用户智能合约访问接口调用用户智能合约。签名系统智能合约只提供签名接口给用户智能合约调用,没有其它功能,可以确保用户智能合约运行沙盒(例如Docker容器)的安全性。
为此,在本发明的实施例的第一方面中提供了一种用于在区块链网络中进行分布式签名的方法,所述方法包括:
在所述区块链网络的区块链节点处,接收来自第一用户端的签名请求;
运行系统智能合约生成签名;以及
将所述签名发送给至少一个第二用户端,
其中,运行所述系统智能合约生成签名包括以下子步骤:
获取存储在所述区块链节点内部的签名私钥;
至少基于所述签名请求计算摘要值;以及
基于所述摘要值和所述签名私钥生成签名。
此外,本发明的实施例的第二方面还提供了一种用于在用户端侧验证签名的方法,所述方法包括:
接收第二签名请求和签名;
至少基于所述第二签名请求计算第二摘要值;
基于预先配置的公钥和所述签名确定第一摘要值;以及
基于所述第一摘要值和所述第二摘要值确定所述第二签名请求的真实性。
接下来,本发明的第三方面提供了一种用于在区块链网络中进行分布式签名的装置,所述装置包括:
处理器;以及
存储器,其用于存储指令,当所述指令执行时使得所述处理器执行以下操作:
在所述区块链网络的区块链节点处,接收来自第一用户端的签名请求;
运行系统智能合约生成签名;以及
将所述签名发送给至少一个第二用户端,
其中,运行所述系统智能合约生成签名包括以下子步骤:
获取存储在所述区块链节点内部的签名私钥;
至少基于所述签名请求计算摘要值;以及
基于所述摘要值和所述签名私钥生成签名。
再者,本发明的第四方面提供了一种用于在用户端侧验证签名的装置,所述装置包括:
处理器;以及
存储器,其用于存储指令,当所述指令执行时使得所述处理器执行以下操作:
接收第二签名请求和签名;
至少基于所述第二签名请求计算第二摘要值;
基于预先配置的公钥和所述签名确定第一摘要值;以及
基于所述第一摘要值和所述第二摘要值确定所述第二签名请求的真实性。
最后,本发明的实施例的第五方面提供了一种计算机可读存储介质,其具有存储在其上的计算机可读程序指令,所述计算机可读程序指令用于执行根据本发明实施例的第一方面所述的用于在区块链网络中进行分布式签名的方法或者用于执行根据本发明实施例的第二方面所述的用于在用户端侧验证签名的方法。
在本发明的实施例中,通过运行每个区块链节点上所安装的系统智能合约来获取签名私钥,从而能够避免中心化的签名服务的诸多缺点;再者,通过至少基于所述签名请求确定摘要值并且基于所述摘要值和所述签名私钥生成所述平台签名,从而使得如果签名请求被更改则会使得平台签名改变,进而易于识别,避免了对于签名请求的篡改,从而消除了多方计算参与方对于提供该多方计算服务的提供者的信任的需要,提高了多方计算服务的参与方的参与意愿,进而能够使得多方计算的接受度得以提高。本发明的其他优势将在下文中进一步说明。
附图说明
结合附图并参考以下详细说明,本发明的各实施例的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本发明的若干实施例,在附图中:
图1示出了依据本发明内容所提出的用于在区块链网络中进行分布式签名的方法100的流程图;
图2示出了依据本发明内容所提出的用于在用户端侧验证签名的方法200的流程图;
图3示出了在其中能够实施依据图1所示的用于在区块链网络中进行分布式签名的方法100和/或依据图2所示的用于在用户端侧验证签名的方法200的网络架构的一个实施例300的示意图;
图4示出了在其中能够实施依据图1所示的用于在区块链网络中进行分布式签名的方法100和/或依据图2所示的用于在用户端侧验证签名的方法200的网络架构的另一个实施例400的示意图;
图5示出了在其中能够实施依据图1所示的用于在区块链网络中进行分布式签名的方法100和/或依据图2所示的用于在用户端侧验证签名的方法200的网络架构的另一个实施例500的示意图;
图6示出了依据本发明的一个实施例的用于在区块链网络中进行分布式签名的装置或者用于在用户端侧验证签名的装置600的示意图;以及
图7示出了依据本发明的另一个实施例的用于在区块链网络中进行分布式签名的装置或者用于在用户端侧验证签名的装置700的示意图。
具体实施方式
以下参考附图详细描述本发明的各个示例性实施例。虽然以下所描述的示例性方法、装置包括在其它组件当中的硬件上执行的软件和/或固件,但是应当注意,这些示例仅仅是说明性的,而不应看作是限制性的。例如,考虑在硬件中独占地、在软件中独占地、或在硬件和软件的任何组合中可以实施任何或所有硬件、软件和固件组件。因此,虽然以下已经描述了示例性的方法和装置,但是本领域的技术人员应容易理解,所提供的示例并不用于限制用于实现这些方法和装置的方式。
此外,附图中的流程图和框图示出了根据本发明的各种实施例的方法和系统的可能实现的体系架构、功能和操作。应当注意,方框中所标注的功能也可以按照不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,或者它们有时也可以按照相反的顺序执行,这取决于所涉及的功能。同样应当注意的是,流程图和/或框图中的每个方框、以及流程图和/或框图中的方框的组合,可以使用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以使用专用硬件与计算机指令的组合来实现。
以下将介绍本发明内容中所提出的用于在区块链网络中进行分布式签名的方法。在具体介绍的过程中将主要以安全多方计算为例,但是本领域的技术人员应当了解,此处的“安全多方计算”仅仅是一个示例,而不应当了解为对本发明内容所公开的方法的限制。当然,只要不脱离本发明内容的发明构思,本发明内容所公开的方法也能够应用于其他应用场景。
本发明内容中的术语“安全多方计算”是指在不泄露原始数据以及签名请求的计算请求方和计算实施方的情况下进行的多方计算协作,从而能够实现具体的多方计算服务,具体而言,安全多方计算解决一组互不信任的参与方之间保护隐私的协同计算问题,安全多方计算要确保输入的独立性,计算的正确性,同时不泄露各输入值给参与计算的其他成员。安全多方计算主要是针对无可信第三方的情况下,如何安全地计算一个约定函数的问题。
本发明内容中的术语“同态计算结果”是指利用同态算法运算函数(加法、乘法等)对加密内容根据业务逻辑进行组合计算得到的结果。该结果也是被加密的。
在现有技术中,在多方计算服务中,相互之间的信任和数据保护一直是多方计算服务发展的瓶颈或者说是多方计算服务得到多方参与者拥护的最大障碍。
例如在诸如互联网借贷公司的经济实体参与者之中,在互联网借贷公司D决定给某个贷款申请者授信之前,希望在其它相互合作的互联网借贷公司处先查询一下该贷款申请者是否存在多头借贷情况,如果存在多头借贷,则互联网借贷公司D可能拒绝该贷款申请者的借款请求。
最简单的方案简述如下:即互联网借贷公司D直接向互联网借贷公司A、B、C查询该贷款申请者的借贷情况。但是这种方案在现实中很难执行,因为存在下面的问题:
1、互联网借贷公司A、互联网借贷公司B和互联网借贷公司C一般都不会愿意让互联网借贷公司D直接知道该贷款申请者在自己公司的借款情况;
2、互联网借贷公司D一般不希望互联网借贷公司A、互联网借贷公司B以及互联网借贷公司C知道是自己在查询该贷款申请者的多头借贷情况。
而另外一种方案简述如下,即互联网借贷公司D通过征信公司E的查询服务来进行查询,征信公司E代为向互联网借贷公司A、互联网借贷公司B以及互联网借贷公司C进行查询,然后将各家公司的查询结果汇总,之后再返回给互联网借贷公司D。这种方案可以避免互联网借贷公司D直接知道该贷款申请者在各家公司之间的借款方案。但是该方案也存在下面的问题:
首先,征信公司E可以知道该贷款申请者在互联网借贷公司A、互联网借贷公司B以及互联网借贷公司C的借款情况,这往往也是互联网借贷公司A、互联网借贷公司B以及互联网借贷公司C不希望发生的。
此外,征信公司E知道互联网借贷公司D在查询张三的借贷情况,这一点也是互联网借贷公司D所不希望发生的。
再者,征信公司E有可能发送假的查询结果给查询者互联网借贷公司D,从而误导互联网借贷公司D。
最后,征信公司E也有可能和其中的公司串通,泄露其它公司的信息。
有鉴于此,在现有的解决方案中尚不能打消使用者对于信任的疑虑。
诸如在现有技术中所阐述的那样,如何防止互联网借贷公司D直接向互联网借贷公司A、互联网借贷公司B以及互联网借贷公司C进行数据查询也是一个很重要的待解决的技术问题。
再者,现有的多方计算服务要么不能够保护数据隐私,即会造成数据泄露;要么需要可信的第三方来提供平台,这些条件并不一定能够得到满足,故现有技术中存在诸多技术问题,进而阻碍了多方计算的推广和应用。
而关于签名的技术方案中,中心化签名服务存在着几个缺点:
首先,因为所有安全多方计算联盟的签名请求都发往中心化的签名服务,签名服务的负载压力大,性能要求高。
其次,中心化签名服务一旦发生故障,会影响到所有的安全多方计算联盟。
再者,这样的安全多方计算服务实例会经常根据用户的需求新建、扩充区块链节点或者释放。签名服务需要设计比较复杂的机制来管理动态变化的区块链节点,以确保这些节点有权向它提交签名请求。比如基于证书的节点(签名服务提供HTTPS服务接口,节点是签名服务的HTTPS客户端)认证机制。
本发明提出了一种用于在区块链网络中进行分布式签名的方法来解决上面的问题。在本发明的实施例中,所述方法包括:在所述区块链网络的区块链节点处,接收来自第一用户端的签名请求;运行系统智能合约;以及将所述签名发送给至少一个第二用户端,其中,运行所述系统智能合约包括以下子步骤:获取存储在所述区块链节点内部的签名私钥;至少基于所述签名请求计算摘要值;以及基于所述摘要值和所述签名私钥生成签名。为了防止互联网借贷公司D直接向互联网借贷公司A、互联网借贷公司B以及互联网借贷公司C进行数据查询进而引起的数据泄露的问题,在本发明公开的技术方案中,通过所述签名进而使得数据查询的实施方即此处的互联网借贷公司A、互联网借贷公司B以及互联网借贷公司C能够识别查询请求是从哪接收到的,只有经过平台进行签名的查询才会被执行,而直接从互联网借贷公司D接收到的数据查询请求不会被执行,从而确保了数据的安全。
再者,通过运行每个区块链节点上所安装的系统智能合约来获取签名私钥,从而能够避免中心化的签名服务的诸多缺点;再者,通过至少基于所述签名请求确定摘要值并且基于所述摘要值和所述签名私钥生成所述平台签名,从而使得如果签名请求被更改则会使得平台签名改变,进而易于识别平台是否改变了原有的签名请求,避免了平台对于签名请求的篡改,从而消除了多方计算参与方对于提供该多方计算服务的提供者即此处的平台的信任的需要,提高了多方计算服务的参与方的参与意愿,进而使得多方计算的接受度能够得以提高。
在介绍本发明的具体实施方式之前,将首先介绍本发明的技术方案之中将会使用的同态加密函数,有时亦称作同态加密算法。
本发明以Simple Encrypted Arithmetic Library(SEAL)同态加密算法库为例子来介绍同态加密函数。
假定有一对公钥和私钥对,该对公钥和私钥对中的公钥为key1,相应地私钥为key2。
同态加密函数使用公钥key1做初始化,E=Encryptor.init(key1);
解密函数使用私钥key2做初始化D=Decryptor.init(key2)。
例如有两个整数x1和x2,加密后的结果为:ex1=E.encrypt(x1),ex2=E.encrypt(x2)。除非获得ex1的参与方知道私钥key2,然后用解密函数D.decrypt(ex1)对ex1进行解密从而获知x1的值,否则任何人无法从ex1知道x1的值,即x1=D.decrypt(ex1);同理,除非获得ex2的参与方知道私钥key2,然后用解密函数D.decrypt(ex2)对ex2进行解密从而获知x2的值,否则任何人无法从ex2知道x2的值。
此外,支持加法运算的同态加密算法有下面的特性:
result1=E.add(ex1,ex2)=E.encrypt(x1+x2)
同样除非知道私钥key2,用解密函数D.decrypt(result1)可以知道x1+x2的值,否则任何人无法从result1知道x1+x2的值,即x1+x2=D.decrypt(result1)。
与之相对应地,支持乘法运算的同态加密算法有下面的特性:
result2=E.multiply(ex1,ex2)=E.encrypt(x1*x2),
同样除非知道私钥key2,用解密函数D.decrypt(result2)可以知道x1*x2的值,否则任何人无法从result2知道x1*x2的值,即x1*x2=D.decrypt(result2)。
SEAL同态加密算法库支持加法和乘法的混合运算(注:减法运算可以转换为加法运算,除法运算可以转换为乘法运算),可以用来做较为复杂的运算。
基于以上对同态加密函数的介绍,为了解决上面例子中查询多头借贷遇到的问题,本发明的发明人提出了一种通过区块链和同态加密算法来实现安全多方计算服务的方案。
图1示出了依据本发明内容所提出的用于在区块链网络中进行分布式签名的方法100的流程图。从图中可以看出,该用于在区块链网络中进行分布式签名的方法100至少包括以下三个步骤,即首先在方法步骤110中,在所述区块链网络的区块链节点处,接收来自第一用户端的签名请求;然后,在接下来的方法步骤120中将会运行系统智能合约,其中,运行所述系统智能合约包括以下子步骤:即获取存储在所述区块链节点内部的签名私钥;至少基于所述签名请求计算摘要值;以及基于所述摘要值和所述签名私钥生成签名;以及最后在方法步骤130中将所述签名发送给至少一个第二用户端。
虽然图1中未示出,在依据本发明的一个实施例中,运行系统智能合约生成签名进一步包括:
通过运行与所述签名请求相关联的用户智能合约来调用所述系统智能合约。
也就是说,系统智能合约为用户智能合约提供了相应的用于分布式签名的调用接口。本领域的技术人员应当了解,除了系统智能合约为用户智能合约提供了相应的用于分布式签名的调用接口这一实现形式之外,系统智能合约也能够直接为区块链客户端程序提供外部服务接口,从而满足分布式签名的需求。
在依据本发明的一个实施例中,运行所述系统智能合约生成签名进一步包括:
获取所述用户智能合约的智能合约ID和所述用户智能合约所在账本的账本ID;以及
基于所述智能合约ID、所述账本ID以及所述签名请求确定所述摘要值。
以这样的方式,获取所述用户智能合约的智能合约ID和所述用户智能合约所在账本的账本ID,然后基于所述智能合约ID、所述账本ID以及所述签名请求确定所述摘要值,例如计算以上三个参数的哈希值的方式来获得所述摘要值。此外,除了通过运行系统智能合约来获取签名私钥之外,还通过运行系统智能合约来获取与所述签名请求相关联的用户智能合约的智能合约ID和所述用户智能合约所在账本的账本ID,由此能够进一步提高数据安全,即所述智能合约ID、所述账本ID以及所述签名请求中的任何一个要素被更改的话,则所生成的摘要值都会发生变化,从而为后续的验证签名提供保障以提高数据安全性。
在依据本发明的一个实施例中,所述签名请求还包括环签名,所述环签名与包括至少两个参与方的群组具有对应关系并且不与所述至少两个参与方中的任一个参与方具有对应关系。在此,至少两个参与方例如是以下将会介绍的互联网借贷公司A、互联网借贷公司B、互联网借贷公司C和/或互联网借贷公司D,而相应地所述群组为包括互联网借贷公司A、互联网借贷公司B、互联网借贷公司C以及互联网借贷公司D的群组。以这样的方式,能够在不暴露发起签名请求的具体参与方的前提下实现对于签名请求是否应该被允许进行验证。
在依据本发明的一个实施例中,所述签名请求还包括时间戳信息。由此能够确定签名请求是否被重复发送,进而确保所述区块链服务平台免受重复发送带来的攻击的影响。
在依据本发明的一个实施例中,所述方法还包括:
接收包括至少两个参与方的群组针对安全多方计算的申请请求;
根据所述申请请求为所述群组所包括的所述至少两个参与方配置与所述签名相关联的公钥。
在依据本发明的一个实施例中,至少基于接收到的第二签名请求计算第二摘要值;
基于所述第二摘要值、所述公钥和所述签名确定所述签名请求和所述第二签名请求是否一致。
以这样的方式能够利用系统智能合约来验证签名请求是否被篡改过。
在依据本发明的一个实施例中,所述方法还包括:
接收包括至少两个参与方的群组针对安全多方计算的申请请求;以及
在所述区块链上为所述群组建立独立的区块链;并且
为所述区块链创建区块链账本。
在依据本发明的一个实施例中,所述方法还包括:
接收用户智能合约数据包,所述用户智能合约数据包包括签名信息;
根据所述签名信息判断所述用户智能合约数据包是否为经过所述群组所包括的所述至少两个参与方认可的用户智能合约数据包;以及
在所述用户智能合约数据包是经过所述群组所包括的所述至少两个参与方认可的用户智能合约数据包的情况下,在与所述群组相关联的区块链节点上安装所述用户智能合约数据包所包括的用户智能合约。
以这样的方式能够使得只有经过群组所包括的所述至少两个参与方中的每个参与方均认可的用户智能合约才能够被安装在与所述群组相关联的区块链节点上,从而能够确保用户智能合约的安装需要各方签名,可以让计算逻辑的更新做到公开、透明、一致、不可篡改。
在依据本发明的一个实施例中,所述用户智能合约数据包包括更新后的业务逻辑。以这样的方式能够通过升级用户智能合约来更新安全多方计算的计算逻辑,做到升级用户智能合约需要各方签名,可以让计算逻辑的更新做到公开、透明、一致、不可篡改。
相应地,图2示出了依据本发明内容所提出的用于在用户端侧验证签名的方法200的流程图的流程图。从图中可以看出,该用于在用户端侧验证签名的方法200至少包括以下四个步骤,即首先在方法步骤210中,接收第二签名请求和签名;然后,在接下来的方法步骤220中至少基于所述第二签名请求计算第二摘要值;接下来,在方法步骤230中基于预先配置的公钥和所述签名确定第一摘要值;以及最后在方法步骤240中基于所述第一摘要值和所述第二摘要值确定所述第二签名请求的真实性。以这样的方式,接收到第二签名请求的用户端能够根据所接收到的签名、预先配置的公钥来确定所接收到的第二签名请求的真实性。
在依据本发明的一个实施例中,至少基于所述第二签名请求计算第二摘要值进一步包括:
基于用户智能合约的智能合约ID、所述用户智能合约所在的账本的账本ID以及所述第二签名请求计算所述第二摘要值。
在依据本发明的一个实施例中,所述第二签名请求还包括环签名,所述环签名与包括至少两个参与方的群组具有对应关系并且不与所述至少两个参与方中的任一个参与方具有对应关系。
在依据本发明的一个实施例中,所述第二签名请求还包括时间戳信息。
以下以超级账本区块链为例,对上述用于在区块链网络中进行分布式签名的方法100进行说明。基于区块链的安全多方计算服务主要由包含多个对等节点的区块链、依据本发明内容所公开的签名服务和用户管理控制台组成。对等节点会以智能合约的形式运行用户的安全多方计算逻辑。
需要使用安全多方计算服务的用户(企业)需要注册为区块链云服务平台用户。进行安全多方计算的多个用户(企业)可以在用户控制台上组成一个安全多方计算联盟,并且推选出一个盟主来申请区块链云服务平台的安全多方计算服务,然后再邀请其它用户(企业)加入该计算联盟。
申请成功后,安全多方计算服务会在区块链上为该安全多方计算联盟创建一个对应的群组或者联盟以及对应的区块链账本,安全多方计算联盟中的每个用户(企业)都有一个对应的组织属于该群组或者联盟。用户的安全多方计算业务逻辑需要实现为对应的智能合约,并且被安装在已加入该账本的对等节点上执行,从而可以对该账本进行读写操作。安全多方计算服务可以通过在一个区块链上创建多个群组或者联盟和对应区块链账本,每个安全多方计算联盟都有其独立的群组或者联盟和账本,从而可以同时为多个安全多方计算联盟提供服务。
安全多方计算服务通过区块链的权限控制和隐私保护机制,可以确保:
1)只有经过群组或者联盟中所有成员签名的智能合约才可以安装在账本上或者在账本上进行升级;
2)只有在该群组或者联盟中成员才有权限执行相应的智能合约,从而实现读写账本;
3)不同的安全多方计算联盟具有各自独立的群组或者联盟和区块链账本,可以做到智能合约和区块链账本数据的相互隔离,从而保护各方安全多方计算联盟的数据安全和隐私。
因为区块链能够支持子账本,不同子账本的数据和智能合约可以做到相互隔离。所以有两种方式使用区块链。第一种方式是多个安全多方计算联盟复用一个区块链,但是使用不同的子账本,不同安全多方计算联盟的实现计算逻辑的智能合约安装运行在不同的子账本上,数据也互相隔离。第二种方式是每个安全多方计算联盟使用一个独立的区块链。第一种方式可以降低区块链使用成本,但是因为多个安全多方计算联盟复用相同的区块链节点进行计算,在计算量较大的情况下,有可能相互影响,导致计算性能下降。
图3示出了在其中能够实施依据图1所示的用于在区块链网络中进行分布式签名的方法100和/或依据图2所示的用于在用户端侧验证签名的方法200的网络架构的一个实施例300的示意图。从图3中可以看出,安全多方计算服务使用到的区块链架构如图所示。
通过该安全多方计算服务来实现上面例子中的查询多头借贷业务的流程如下:
愿意共享借贷数据的互联网借贷公司A、互联网借贷公司B、互联网借贷公司C、互联网借贷公司D或者更多的公司达成共享协议组成一个征信信息共享群组或者联盟,群组或者联盟里的任何一家互联网借贷公司都可以向其它互联网借贷公司查询借款人的征信信息(本例子是多头借贷情况)。这些公司提前约定好以下几点内容:
用于加解密查询内容(本例子是借款人张三的姓名、身份证号码)的加解密算法和密钥。确保查询内容只有这些公司能够解密知道,而对其它人包括安全多方计算服务的提供方保密。
采用相同的同态加密函数和参数设置。
用于生成查询环签名的算法,在此例如为token的算法。该用于生成查询环签名的算法必须实现两种目的,其一,必须让收到查询请求的查询实施方能够验证查询发起方是否有权限能够进行查询;其二必须不能暴露查询发起方的具体身份。具体而言,互联网借贷公司A、互联网借贷公司B、互联网借贷公司C可以验证token的有效性,从而知道收到的查询请求是否有权限做查询;但是互联网借贷公司A、互联网借贷公司B、互联网借贷公司C并不能通过token推断出请求是从哪家公司发出的,从而保护了互联网借贷公司D的业务隐私。
该群组或者联盟购买区块链云服务平台的安全多方计算服务。同时获得签名服务的公钥。
该联盟协作实现业务逻辑相关的用户智能合约,在本例子中,该用户智能合约会将查询请求发往联盟中所有的公司,并将查询结果汇总,通过同态加密函数计算各家公司查询结果的总和。联盟中的各家公司都对用户智能合约的代码进行审核,并且用各自的私钥签名,以表示本公司认可该用户智能合约。联盟中所有成员签名后的用户智能合约才能被安装到提供安全多方计算服务的区块链节点上。其中,用户智能合约是由用户开发的、用于实现用户特定业务逻辑的可执行代码。用户智能合约由用户安装在节点上,并且在需要使用的账本上激活运行。如果在节点上有多个账本都需要使用该智能合约,则需要在每个账本上分别激活一次。用户智能合约通过Docker容器运行在节点上,相当于运行在沙盒中,无法直接访问节点主机(Host)的本地资源,比如本地存储。用户智能合约可以通过系统智能合约开放的接口调用节点预置的系统智能合约。
除此之外,本发明内容还提供了系统智能合约,在此,系统智能合约是一种提前编译好的动态链接库,作为节点程序的插件,在节点程序启动的同时,也被加载运行。系统智能合约可以提供内部接口给用户智能合约调用,也可以提供外部服务接口给区块链客户端程序调用。系统智能合约有能力直接访问节点的本地资源,包括本地存储。系统智能合约一般用于提供整个区块链系统的公共服务。
然后假定互联网借贷公司D希望查询借款人张三在联盟中各家公司的借款情况。互联网借贷公司D的查询步骤如下:
对于每次查询,互联网借贷公司D都要生成一对新的约定好同态加密函数所需的公私钥对key1/key2。公钥可以作为查询请求的参数发给其它公司,私钥需要保密,只有互联网借贷公司D知道。
互联网借贷公司D使用加密算法encrypt和密钥passwd对借款人张三的姓名、身份证号进行加密,生成加密后的身份标识eid。eid只有联盟中的各家公司可以解密,因为只有它们知道事先约定好的加密算法encrypt和密钥passwd。
互联网借贷公司D使用事先约定好的token算法(比如环签名算法)计算查询token(签名)。该token可以用于证明公司D有权限进行查询,但是并不会泄露互联网借贷公司D的身份。
互联网借贷公司D通过调用安全多方计算服务中的区块链用户智能合约查询接口发出查询请求。
安全多方计算服务中的区块链收到互联网借贷公司D的查询请求后,会使用区块链自身的身份认证机制确认互联网借贷公司D有权调用该智能合约。如果使用区块链identity mixer MSP或者类似机制来做身份认证,可以做到匿名调用该用户智能合约,即可以确认用户智能合约的调用者有权调用该用户智能合约,但是并知道调用者的具体身份。
被调用的用户智能合约会使用查询请求中的同态加密函数公钥key1对用户智能合约中的同态加密函数做初始化E=Encryptor.init(key1),并且同时使用安全多方计算服务中被实施为系统智能合约的签名服务对请求做签名得到s。用户智能合约将查询请求Query(key1,eid,token)和平台签名s转发到其它公司。在此,系统智能合约的实施过程如下,即:首先通过运行系统智能合约来获取签名私钥;然后至少基于所述签名请求确定摘要值;以及最后基于所述摘要值和所述签名私钥生成所述平台签名s。
概括地说,本发明通过系统智能合约实现了签名服务功能。安全多方计算联盟盟主在区块链云服务平台上创建安全多方计算服务实例以及相应的区块链时,平台会在云上创建出预置了签名服务系统智能合约的区块链节点。该区块链的所有节点都由平台负责管理维护,任何用户都无法直接登录访问,除了通过用户智能合约访问接口调用用户智能合约。签名系统智能合约只提供签名接口给用户智能合约调用,没有其它功能,可以确保用户智能合约运行沙盒(Docker容器)的安全性。同时平台会生成一对该系统智能合约用于签名服务的公/私钥对。平台将私钥放在每个区块链节点的本地文件系统上,只有用于签名服务的系统智能合约可以读取,用户智能合约或者用户区块链客户端无法接触该私钥。签名服务的公钥由平台公开给该安全多方计算联盟中的所有成员,他们可以用该公钥在各自的查询服务上验证来自用户智能合约的查询请求是否被系统智能合约和对应的私钥正确签名。如果签名不正确,说明请求不是从安全多方计算服务节点中的用户智能合约发出的,查询服务将拒绝这样的非法请求。
对于区块链来说,每条区块链上可以创建多个账本,每个账本上也可以安装多个智能合约。但是每条链上的账本标识符(账本ID)具有唯一性,每个账本上的智能合约标识符(智能合约ID)也具有唯一性。为了确保查询请求是合法的指定区块链上的指定账本上的指定智能合约发出的,签名服务计算请求签名时,也需要包含调试签名服务系统智能合约的用户智能合约ID以及该智能合约所在的账本的账本ID。注意用户智能合约ID以及账本ID都是系统智能合约通过系统API获取的,而不是用户智能合约调用系统智能合约时的调用参数,否则有可能作假。另外为了防止重放攻击,查询请求里面也应该设计包含具有唯一性的请求标记和时间戳等信息。
比如,互联网借贷公司D发出的请求为Query(key1,eid,token),用户智能合约ID为ccid,用户智能合约所在的账本为lid,签名公钥为sign_pubkey,签名私钥为sign_privatekey:
签名系统智能合约签名的过程为:
签名系统智能合约计算请求Query(key1,eid,token)、用户智能合约ID、账本ID这三个要素的组合信息的摘要值digest(三个要素任何一个发生变化,摘要值就变化得完全不同)。
签名系统智能合约计算签名:signature=sign(digest,sign_privatekey)。
接下来,互联网借贷公司A收到查询请求Query(key1,eid,token)和平台签名s后,处理步骤如下(注:其它互联网借贷公司B、互联网借贷公司C的处理步骤也一样):
使用签名服务公布的公钥验证平台签名s是否有效,确保查询请求是从安全多方计算服务中的智能合约发送过来的。在此,将预先配置好认可的智能合约ID、账本ID、签名服务公钥sign_pubkey。根据接收到查询请求Query(key1,eid,token)、预先配置好认可的智能合约ID、账本ID生成摘要值digest1,然后比较根据接收到的签名signature和签名服务公钥sign_pubkey计算得到的摘要值digest与所生成的摘要值digest1是否一致,即检验签名的有效性:boolean flag=verify(digest1,signature,sign_pubkey)。如果请求和签名没有被篡改过,并且请求确实是由认可安全多方计算区块链、链上指定的账本、账本上指定的用户智能合约发送过来的,则检验结果flag应该为真。否则只要校验的信息中有任意一个不正确,检验结果flag就会为假。此外,签名系统智能合约签名检验通过后,互联网借贷公司A、B、C提供的查询服务需要进一步通过请求中的UID、timestamp、token等信息进一步验证请求的合法性,以防止重放攻击等其它威胁。
通过以上方式来生成平台签名具有以下优点,即因为每个节点上都有对应的系统智能合约提供签名服务,所以签名的负载分散到了每个节点,不再需要一个高性能的中心化签名服务。另外签名服务充分利用区块链节点实现分布式部署,一旦某个节点出现故障,其它节点的签名服务不受影响,提高了系统的健壮性,降低了系统部署和使用成本。另外方案也非常简洁自然地支持了增加新节点或者释放已有节点,不需要额外的开发来支持。
验证请求中的token的有效性,确保请求是由有查询权限的公司发出的。但是因为token的匿名性,互联网借贷公司A并不知道该请求是由互联网借贷公司D发出的。
使用联盟事先约定好的解密算法和密钥passwd对查询内容eid进行解密,得到借款人张三的信息。公司A对张三在本公司的借款情况进行查询,例如得到借款50元的查询结果。
使用请求中的同态加密函数公钥key1初始化加密函数:E=Encryptor.init(key1),并且对查询结果50进行加密:ex1=E.encrypt(50)
安全多方计算服务中的用户智能合约收集齐各个公司的加密后的查询结果ex1、ex2、ex3后,使用已经完成初始化的同态加密函数对结果进行加法运算:sum=Encryptor.add(ex1,ex2,ex3)。因为只有互联网借贷公司D拥有同态加密函数私钥key2,所以即使安全多方计算服务提供方或者其它公司知道了ex1、ex2、ex3,也无法对它们进行解密,从而知道张三在各家公司的借款情况。
用户智能合约在区块链的账本中记录查询记录,为以后的计费等提供依据(互联网借贷公司A、互联网借贷公司B、互联网借贷公司C可以对提供查询服务收费)。
用户智能合约将各家公司查询结果的汇总值sum返回给互联网借贷公司D。
互联网借贷公司D通过事先生成的同态加密函数的私钥key2对解密函数进行初始化:D=Decryptor.init(key2)。然后对收到的查询结果sum进行解密D.decrypt(sum),得到张三在各家公司的总借款情况为350。
通过上面的流程可知,本文提出的基于区块链的安全多方计算服务具有下面几个优点:
在缺乏互信的环境中,提供信息协作服务(参与安全多方计算)的公司在提供信息的同时,可以保护自己的业务隐私。因为查询信息方只能获取安全多方计算的结果,无法知道安全多方计算的原始输入数据。
提供安全多方计算服务的运营方或任何其它不在安全多方计算联盟的人无法知道安全多方计算中的数据,也无法伪造查询请求。
安全多方计算联盟中的任何一方都没有办法绕过安全多方计算服务,直接向其它公司查询原始信息,可以避免用户数据泄露。
通过在区块链上实现安全多方计算,继承了区块链的优点:
可以复用区块链的权限控制机制来实现安全多方计算的权限控制,避免重复开发;
运行在区块链上、经过多方签名的用户智能合约,可以确保安全多方计算的逻辑公开透明、无法被篡改。通过升级用户智能合约,还可以根据业务需求,非常方便地对安全多方计算业务逻辑进行更新修改;
此外,可以把查询记录(具体信息可以根据业务需求确定)记载到区块链上,无法被篡改。
最后,该方案可以支持多个安全多方计算联盟的并发业务。
图4示出了在其中能够实施依据图1所示的用于在区块链网络中进行分布式签名的方法100和/或依据图2所示的用于在用户端侧验证签名的方法200的网络架构的另一个实施例400的示意图。从图4中可以看出,根据业务类型的不同,进行多头借贷业务的公司1、公司2和公司3组成了一个安全多方计算联盟1,而进行房源信息交换的公司4、公司5和公司6组成了一个安全多方计算联盟2。此外,区块链平台能够为每个联盟或者群组复用共享的区块链,并且为该区块链配置相应的区块链账本,从而能够实现多头借贷业务的区块链账本和房源信息交换的区块链账本的相互隔离,这样既实现了多个安全多方计算联盟或者群组的同时运行,另一方面也实现了区块链平台对于多个安全多方计算联盟或者群组的同时支持,从而提高了区块链平台的多方计算支持效率。
图5示出了在其中能够实施依据图1所示的用于在区块链网络中进行分布式签名的方法100和/或依据图2所示的用于在用户端侧验证签名的方法200的网络架构的另一个实施例500的示意图。从图5中可以看出,根据业务类型的不同,进行多头借贷业务的公司1、公司2和公司3组成了一个安全多方计算联盟1,而进行房源信息交换的公司4、公司5和公司6组成了另外一个安全多方计算联盟2,从而实现了不同业务类型的区块链的隔离。
此外,替代地,上述方法能够通过计算机程序产品,即计算机可读存储介质来实现。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本发明内容的各个方面的计算机可读程序指令。计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是但不限于电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
图6示出了示出了依据本发明的一个实施例的装置600的示意图,该装置能够用于在区块链网络中进行分布式签名或者用于在用户端侧验证签名。从图6中可以看出,该装置600包括处理器610和与处理器610耦接的存储器620。
存储器620存储有指令。指令在由处理器610执行时使得处理器610执行以下动作:
在所述区块链网络的区块链节点处,接收来自第一用户端的签名请求;
运行系统智能合约生成签名;以及
将所述签名发送给至少一个第二用户端,
其中,运行所述系统智能合约生成签名包括以下子步骤:
获取存储在所述区块链节点内部的签名私钥;
至少基于所述签名请求计算摘要值;以及
基于所述摘要值和所述签名私钥生成签名。
在依据本发明的一个实施例中,运行系统智能合约生成签名进一步包括:
通过运行与所述签名请求相关联的用户智能合约来调用所述系统智能合约。
在依据本发明的一个实施例中,运行所述系统智能合约生成签名进一步包括:
获取所述用户智能合约的智能合约ID和所述用户智能合约所在账本的账本ID;以及
基于所述智能合约ID、所述账本ID以及所述签名请求确定所述摘要值。
在依据本发明的一个实施例中,所述签名请求还包括环签名,所述环签名与包括至少两个参与方的群组具有对应关系并且不与所述至少两个参与方中的任一个参与方具有对应关系。
在依据本发明的一个实施例中,所述签名请求还包括时间戳信息。
在依据本发明的一个实施例中,当所述指令执行时还使得所述处理器610执行以下操作:
接收包括至少两个参与方的群组针对安全多方计算的申请请求;
根据所述申请请求为所述群组所包括的所述至少两个参与方配置与所述签名相关联的公钥。
在依据本发明的一个实施例中,当所述指令执行时还使得所述处理器610执行以下操作:
至少基于接收到的第二签名请求计算第二摘要值;
基于所述第二摘要值、所述公钥和所述签名确定所述签名请求和所述第二签名请求是否一致。
在依据本发明的一个实施例中,当所述指令执行时还使得所述处理器610执行以下操作:
接收包括至少两个参与方的群组针对安全多方计算的申请请求;以及
在所述区块链上为所述群组建立独立的区块链;并且
为所述区块链创建区块链账本。
在依据本发明的一个实施例中,当所述指令执行时还使得所述处理器610执行以下操作:
接收用户智能合约数据包,所述用户智能合约数据包包括签名信息;
根据所述签名信息判断所述用户智能合约数据包是否为经过所述群组所包括的所述至少两个参与方认可的用户智能合约数据包;以及
在所述用户智能合约数据包是经过所述群组所包括的所述至少两个参与方认可的用户智能合约数据包的情况下,在与所述群组相关联的区块链节点上安装所述用户智能合约数据包所包括的用户智能合约。
在依据本发明的一个实施例中,所述用户智能合约数据包包括更新后的业务逻辑。
此外,存储器620也能够存储有其他指令。该其他指令在由处理器610执行时使得处理器610执行以下动作:
接收第二签名请求和签名;
至少基于所述第二签名请求计算第二摘要值;
基于预先配置的公钥和所述签名确定第一摘要值;以及
基于所述第一摘要值和所述第二摘要值确定所述第二签名请求的真实性。
在依据本发明的一个实施例中,至少基于所述第二签名请求计算第二摘要值进一步包括:
基于用户智能合约的智能合约ID、所述用户智能合约所在的账本的账本ID以及所述第二签名请求计算所述第二摘要值。
在依据本发明的一个实施例中,所述第二签名请求还包括环签名,所述环签名与包括至少两个参与方的群组具有对应关系并且不与所述至少两个参与方中的任一个参与方具有对应关系。
在依据本发明的一个实施例中,所述第二签名请求还包括时间戳信息。
依据本发明的另一个实施例的用于在区块链网络中进行分布式签名的装置或者用于在用户端侧验证签名的装置700的示意图。应当理解,装置700可以实现实现图1中的用于在区块链网络中进行分布式签名的方法100的功能或者实现为实现图2中的用于在用户端侧验证签名的方法200的功能。从图7中可以看出该装置700包括中央处理单元(CPU)701(例如处理器),其可以根据存储在只读存储器(ROM)702中的计算机程序指令或者从存储单元708加载到随机访问存储器(RAM)703中的计算机程序指令,来执行各种适当的动作和处理。在RAM 703中,还可存储该装置700操作所需的各种程序和数据。CPU 701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
装置700中的多个部件连接至I/O接口705,包括:输入单元706,例如键盘、鼠标等;输出单元707,例如各种类型的显示器、扬声器等;存储单元708,例如磁盘、光盘等;以及通信单元709,例如网卡、调制解调器、无线通信收发机等。通信单元709允许该装置700通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各种方法,例如用于在区块链网络中进行分布式签名的方法100或者用于在用户端侧验证签名的方法200能够由处理单元701执行。例如,在一些实施例中,用于在区块链网络中进行分布式签名的方法100或者用于在用户端侧验证签名的方法200可以实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元708。在一些实施例中,计算机程序的部分或者全部可以经由ROM 702和/或通信单元709而被载入和/或安装到该装置700上。当计算机程序被加载到RAM 703并由CPU 701执行时,可以执行上文描述的用于在区块链网络中进行分布式签名的方法100中的一个或多个动作或步骤。
一般而言,本发明的各种示例实施例可以在硬件或专用电路、软件、固件、逻辑,或其任何组合中实施。某些方面可以在硬件中实施,而其他方面可以在可以由控制器、微处理器或其他计算设备执行的固件或软件中实施。当本发明的实施例的各方面被图示或描述为框图、流程图或使用某些其他图形表示时,将理解此处描述的方框、装置、系统、技术或方法可以作为非限制性的示例在硬件、软件、固件、专用电路或逻辑、通用硬件或控制器或其他计算设备,或其某些组合中实施。
虽然上面描述了本发明的各种示例实施例可以在硬件或专用电路中实现,但是上述用于区块链的数据处理设备既可以以硬件的形式来实现,也可以通过软件的形式来实现,这是因为:在20世纪90年代,一个技术改进能够很容易地对该改进属于硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是属于软件上的改进(例如对于方法流程的改进)。然而,随着技术的持续发展,如今的很多方法流程的改进几乎都能够通过将改进的方法流程编程到硬件电路中来实现,换句话说,通过对于硬件电路编程不同的程序从而得到相应的硬件电路结构,即实现了硬件电路结构的改变,故这样的方法流程的改进也可以被视为硬件电路结构的直接改进。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device:PLD)(例如现场可编程门阵列(Field Programmable Gate Array:FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片可编程逻辑器件上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compi1er)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language:HDL),而HDL也并非仅有—种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware Description Language)、Confluence、CUPL(Cornell UniversityProgramming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(Ruby Hardware Description Language)等,目前最普遍使用的是VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
用于执行本发明内容的各个方面的计算机可读程序指令或者计算机程序产品也能够存储在云端,在需要调用时,用户能够通过移动互联网、固网或者其他网络访问存储在云端上的用于执行本发明内容的一方面的计算机可读程序指令,从而实施依据本发明内容的各个方面所公开的技术方案。
综上所述,通过运行每个区块链节点上所安装的系统智能合约来获取签名私钥,从而能够避免中心化的签名服务的诸多缺点;再者,通过至少基于所述签名请求确定摘要值并且基于所述摘要值和所述签名私钥生成所述平台签名,从而使得如果签名请求被更改则会使得平台签名改变,进而易于识别,避免了对于签名请求的篡改,从而消除了多方计算参与方对于提供该多方计算服务的提供者的信任的需要,提高了多方计算服务的参与方的参与意愿,进而使得多方计算的接受度能够得以提高。
以上所述仅为本发明内容的实施例可选实施例,并不用于限制本发明的实施例,对于本领域的技术人员来说,本发明的实施例可以有各种更改和变化。凡在本发明的实施例的精神和原则之内,所作的任何修改、等效替换、改进等,均应包含在本发明的实施例的保护范围之内。
虽然已经参考若干具体实施例描述了本发明的实施例,但是应当理解,本发明的实施例并不限于所公开的具体实施例。本发明的实施例旨在涵盖在所附权利要求的精神和范围内所包括的各种修改和等同布置。权利要求的范围符合最宽泛的解释,从而包含所有这样的修改及等同结构和功能。
Claims (19)
1.一种用于在区块链网络中进行分布式签名的方法,所述方法包括:
在所述区块链网络的区块链节点处,接收来自第一用户端的签名请求;
运行系统智能合约生成签名;以及
将所述签名发送给至少一个第二用户端,
其中,运行所述系统智能合约生成签名包括以下子步骤:
获取存储在所述区块链节点内部的签名私钥;
至少基于所述签名请求计算摘要值;以及
基于所述摘要值和所述签名私钥生成签名。
2.根据权利要求1所述的方法,其特征在于,运行系统智能合约生成签名进一步包括:
通过运行与所述签名请求相关联的用户智能合约来调用所述系统智能合约。
3.根据权利要求2所述的方法,其特征在于,运行所述系统智能合约生成签名进一步包括:
获取所述用户智能合约的智能合约ID和所述用户智能合约所在账本的账本ID;以及
基于所述智能合约ID、所述账本ID以及所述签名请求确定所述摘要值。
4.根据权利要求1所述的方法,其特征在于,所述签名请求还包括环签名,所述环签名与包括至少两个参与方的群组具有对应关系并且不与所述至少两个参与方中的任一个参与方具有对应关系。
5.根据权利要求1所述的方法,其特征在于,所述签名请求还包括时间戳信息。
6.一种用于在用户端侧验证签名的方法,所述方法包括:
接收第二签名请求和签名;
至少基于所述第二签名请求计算第二摘要值;
基于预先配置的公钥和所述签名确定第一摘要值;以及
基于所述第一摘要值和所述第二摘要值确定所述第二签名请求的真实性。
7.根据权利要求6所述的方法,其特征在于,至少基于所述第二签名请求计算第二摘要值进一步包括:
基于用户智能合约的智能合约ID、所述用户智能合约所在的账本的账本ID以及所述第二签名请求计算所述第二摘要值。
8.根据权利要求6所述的方法,其特征在于,所述第二签名请求还包括环签名,所述环签名与包括至少两个参与方的群组具有对应关系并且不与所述至少两个参与方中的任一个参与方具有对应关系。
9.根据权利要求6所述的方法,其特征在于,所述第二签名请求还包括时间戳信息。
10.一种用于在区块链网络中进行分布式签名的装置,所述装置包括:
处理器;以及
存储器,其用于存储指令,当所述指令执行时使得所述处理器执行以下操作:
在所述区块链网络的区块链节点处,接收来自第一用户端的签名请求;
运行系统智能合约生成签名;以及
将所述签名发送给至少一个第二用户端,
其中,运行所述系统智能合约生成签名包括以下子步骤:
获取存储在所述区块链节点内部的签名私钥;
至少基于所述签名请求计算摘要值;以及
基于所述摘要值和所述签名私钥生成签名。
11.根据权利要求10所述的装置,其特征在于,运行系统智能合约生成签名进一步包括:
通过运行与所述签名请求相关联的用户智能合约来调用所述系统智能合约。
12.根据权利要求11所述的装置,其特征在于,运行所述系统智能合约生成签名进一步包括:
获取所述用户智能合约的智能合约ID和所述用户智能合约所在账本的账本ID;以及
基于所述智能合约ID、所述账本ID以及所述签名请求确定所述摘要值。
13.根据权利要求10所述的装置,其特征在于,所述签名请求还包括环签名,所述环签名与包括至少两个参与方的群组具有对应关系并且不与所述至少两个参与方中的任一个参与方具有对应关系。
14.根据权利要求10所述的装置,其特征在于,所述签名请求还包括时间戳信息。
15.一种用于在用户端侧验证签名的装置,所述装置包括:
处理器;以及
存储器,其用于存储指令,当所述指令执行时使得所述处理器执行以下操作:
接收第二签名请求和签名;
至少基于所述第二签名请求计算第二摘要值;
基于预先配置的公钥和所述签名确定第一摘要值;以及
基于所述第一摘要值和所述第二摘要值确定所述第二签名请求的真实性。
16.根据权利要求15所述的装置,其特征在于,至少基于所述第二签名请求计算第二摘要值进一步包括:
基于用户智能合约的智能合约ID、所述用户智能合约所在的账本的账本ID以及所述第二签名请求计算所述第二摘要值。
17.根据权利要求15所述的装置,其特征在于,所述第二签名请求还包括环签名,所述环签名与包括至少两个参与方的群组具有对应关系并且不与所述至少两个参与方中的任一个参与方具有对应关系。
18.根据权利要求15所述的装置,其特征在于,所述第二签名请求还包括时间戳信息。
19.一种计算机可读存储介质,其具有存储在其上的计算机可读程序指令,所述计算机可读程序指令用于执行根据权利要求1至5中任一项所述的用于在区块链网络中进行分布式签名的方法或者用于执行根据权利要求6至9中任一项所述的用于在用户端侧验证签名的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910247569.0A CN109978693A (zh) | 2019-03-29 | 2019-03-29 | 用于在区块链网络中进行分布式签名的方法、装置及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910247569.0A CN109978693A (zh) | 2019-03-29 | 2019-03-29 | 用于在区块链网络中进行分布式签名的方法、装置及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109978693A true CN109978693A (zh) | 2019-07-05 |
Family
ID=67081502
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910247569.0A Pending CN109978693A (zh) | 2019-03-29 | 2019-03-29 | 用于在区块链网络中进行分布式签名的方法、装置及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109978693A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110598460A (zh) * | 2019-09-27 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 基于区块链的电子签字方法、装置及存储介质 |
CN111092726A (zh) * | 2020-03-18 | 2020-05-01 | 支付宝(杭州)信息技术有限公司 | 生成共享合约密钥的方法及装置 |
CN111277647A (zh) * | 2020-01-19 | 2020-06-12 | 北京百度网讯科技有限公司 | 区块链网络成员管理方法、装置、设备和介质 |
CN111539013A (zh) * | 2020-03-24 | 2020-08-14 | 山东爱城市网信息技术有限公司 | 一种数据使用、智能合约写入、申请方法、设备及介质 |
CN111914027A (zh) * | 2020-08-05 | 2020-11-10 | 北京科技大学 | 一种区块链交易关键字可搜索加密方法及系统 |
CN112307501A (zh) * | 2020-08-20 | 2021-02-02 | 青岛海纳云科技控股有限公司 | 基于区块链技术的大数据系统及存储方法和使用方法 |
US11824987B2 (en) | 2021-12-07 | 2023-11-21 | Micro Focus Llc | Using capstone blocks in a blockchain with a trusted authority |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109118223A (zh) * | 2018-08-21 | 2019-01-01 | 上海点融信息科技有限责任公司 | 用于在区块链中管理电子数据的方法、装置及介质 |
CN109242450A (zh) * | 2018-09-21 | 2019-01-18 | 北京京东尚科信息技术有限公司 | 区块链系统和基于区块链系统实现的交易方法和交易系统 |
CN109344638A (zh) * | 2018-10-26 | 2019-02-15 | 上海点融信息科技有限责任公司 | 用于区块链网络的私钥签名方法和装置 |
-
2019
- 2019-03-29 CN CN201910247569.0A patent/CN109978693A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109118223A (zh) * | 2018-08-21 | 2019-01-01 | 上海点融信息科技有限责任公司 | 用于在区块链中管理电子数据的方法、装置及介质 |
CN109242450A (zh) * | 2018-09-21 | 2019-01-18 | 北京京东尚科信息技术有限公司 | 区块链系统和基于区块链系统实现的交易方法和交易系统 |
CN109344638A (zh) * | 2018-10-26 | 2019-02-15 | 上海点融信息科技有限责任公司 | 用于区块链网络的私钥签名方法和装置 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110598460A (zh) * | 2019-09-27 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 基于区块链的电子签字方法、装置及存储介质 |
CN110598460B (zh) * | 2019-09-27 | 2022-08-05 | 腾讯科技(深圳)有限公司 | 基于区块链的电子签字方法、装置及存储介质 |
CN111277647A (zh) * | 2020-01-19 | 2020-06-12 | 北京百度网讯科技有限公司 | 区块链网络成员管理方法、装置、设备和介质 |
CN111092726A (zh) * | 2020-03-18 | 2020-05-01 | 支付宝(杭州)信息技术有限公司 | 生成共享合约密钥的方法及装置 |
CN111539013A (zh) * | 2020-03-24 | 2020-08-14 | 山东爱城市网信息技术有限公司 | 一种数据使用、智能合约写入、申请方法、设备及介质 |
CN111914027A (zh) * | 2020-08-05 | 2020-11-10 | 北京科技大学 | 一种区块链交易关键字可搜索加密方法及系统 |
CN111914027B (zh) * | 2020-08-05 | 2023-07-28 | 北京科技大学 | 一种区块链交易关键字可搜索加密方法及系统 |
CN112307501A (zh) * | 2020-08-20 | 2021-02-02 | 青岛海纳云科技控股有限公司 | 基于区块链技术的大数据系统及存储方法和使用方法 |
US11824987B2 (en) | 2021-12-07 | 2023-11-21 | Micro Focus Llc | Using capstone blocks in a blockchain with a trusted authority |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109615378A (zh) | 基于区块链的安全多方计算方法、装置及可读存储介质 | |
CN110061829A (zh) | 基于区块链网络的安全多方计算方法、装置及存储介质 | |
CN109978693A (zh) | 用于在区块链网络中进行分布式签名的方法、装置及介质 | |
TWI701933B (zh) | 一種區塊鏈資料處理方法、裝置、處理設備及系統 | |
CN109598616B (zh) | 一种引入仲裁机制的区块链数据隐私保护的方法 | |
CN110580413B (zh) | 基于链下授权的隐私数据查询方法及装置 | |
EP3962020B1 (en) | Information sharing methods and systems | |
CN110580412B (zh) | 基于链代码的权限查询配置方法及装置 | |
CN109617699A (zh) | 一种密钥生成方法、区块链网络服务平台及存储介质 | |
CN110580245B (zh) | 隐私数据的共享方法及装置 | |
CN111475849A (zh) | 基于区块链账户的隐私数据查询方法及装置 | |
CN110580262A (zh) | 基于智能合约的隐私数据查询方法及装置 | |
CN110580411B (zh) | 基于智能合约的权限查询配置方法及装置 | |
EP3962135B1 (en) | Information sharing methods, apparatuses, and devices | |
WO2021239072A1 (zh) | 在联盟链网络中创建节点组、基于节点组的交易方法 | |
CN114584307B (zh) | 一种可信密钥管理方法、装置、电子设备和存储介质 | |
CN109741068A (zh) | 网银跨行签约方法、装置及系统 | |
US11310244B2 (en) | Information sharing methods, apparatuses, and devices | |
CN110580417A (zh) | 基于智能合约的隐私数据查询方法及装置 | |
CN109829013A (zh) | 用于在区块链网络中运行智能合约的方法、存储介质、计算设备 | |
CN110619222A (zh) | 基于区块链的授权处理方法、装置、系统及介质 | |
CN113326541A (zh) | 一种基于智能合约的云边协同多模式隐私数据流转方法 | |
Xu et al. | An efficient blockchain‐based privacy‐preserving scheme with attribute and homomorphic encryption | |
CN110445751B (zh) | 一种基于重加密的分布式信息共享方法及系统 | |
Karthick et al. | Modeling and verifying a resource allocation algorithm for secure service migration for commercial cloud systems |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20190705 |