一种基于区块链及SM9算法的签名方法及系统与流程

专利2024-11-09  48


一种基于区块链及sm9算法的签名方法及系统
技术领域
1.本发明涉及信息化软件系统、互联网及区块链技术领域,具体地说是一种基于区块链及sm9算法的签名方法及系统。


背景技术:

2.在电子商务、电子政务等领域,涉及商务合作、部门间协作时,常常需要签订法律文书以便明确合作双方各自的权利与义务。文书需要双方签名盖章后才能产生严格意义上的法律约束力。签名由最初的纸质亲笔签名发展到基于pki证书体系(公钥基础设施)的数字签名。
3.pki证书体系是一种中心化的认证体系,需要中心化的权威机构颁发证书及认证身份。当信息系统分别使用由不同权威机构颁发的证书签名法律文书时,文书很难在不同的信息系统间进行相互的鉴证与自由流动。当法律文书需要跨部门、跨业务、跨层级、跨地域、甚至跨越不同主权系统进行协作时,基于pki证书体系的签名系统实现复杂、效率低下。另外,中心化的系统有可能出现删除数据、篡改数据的现象。


技术实现要素:

4.本发明的技术任务是针对以上不足之处,提供一种基于区块链及sm9算法的签名方法及系统,能够通过标准的密码学算法及数据格式,实现异构系统之间的信任价值传递与相互认证。
5.本发明解决其技术问题所采用的技术方案是:
6.一种基于区块链及sm9算法的签名方法,使用sm9算法生成签名主公钥与签名主私钥,
7.将组织id、所述签名主公钥保存在区块链上;
8.将组织id、个人用户标识保存在区块链上;
9.将所述签名主私钥、个人用户标识作为参数,使用sm9算法生成个人用户签名私钥;
10.将签名主公钥、个人用户签名私钥作为参数,使用sm9签名算法对签名对象进行签名,得到签名值;
11.将个人用户标识、签名对象及签名值保存在区块链上。
12.本方法通过建设基于区块链的签名管理系统,实现身份管理、签名管理及签名验证管理;通过区块链不可篡改、不可删除、不可冒用的可信技术特性,实现签名信息的不可删除、不可篡改、可追溯及不可抵赖性,进而实现跨越不同pki证书体系、不同主权信息系统之间的信任价值传递;通过标准的密码学算法及数据格式,实现异构系统之间的信任价值传递与相互认证。
13.优选的,本方法通过签名客户端和签名智能合约实现,
14.组织用户通过签名客户端使用sm9算法生成签名主公钥与签名主私钥,签名客户
端将组织id、签名主公钥发送至签名智能合约,签名智能合约将组织id、所述签名主公钥保存在区块链上;
15.组织用户通过签名客户端向签名智能合约发送组织id、个人用户标识,签名智能合约将组织id、个人用户标识保存在区块链上;
16.组织用户使用sm9的签名主私钥、个人用户标识作为参数,利用sm9算法生成个人用户签名私钥;签名客户端使用签名主公钥、个人用户签名私钥作为参数,利用sm9算法对签名对象进行签名,得到签名值,签名客户端将签名对象、签名值及个人用户标识发送至签名智能合约;签名智能合约将个人用户标识、签名对象及签名值保存在区块链上。
17.优选的,所述签名智能合约将组织id、签名主公钥保存在区块链上,
18.签名智能合约检查区块链账本中是否存在该组织id,如果区块链账本中不存在该组织id,则签名智能合约将组织id、签名主公钥保存至区块链账本中。
19.优选的,所述签名智能合约将组织id、个人用户标识保存在区块链上,
20.签名智能合约检查区块链账本中是否存在该组织id及个人用户标识,如果区块链账本中不存在该组织id及个人用户标识,则签名智能合约将组织id、个人用户标识保存至区块链账本中。
21.优选的,所述签名智能合约将个人用户标识、签名对象及签名值保存在区块链上,
22.签名智能合约将个人用户标识作为查询条件,从区块链账本中查找个人用户标识对应的组织id;
23.如果能从区块链上找到个人用户标识对应的组织id,则签名智能合约将组织id作为查询条件,从区块链账本中查找组织id对应的签名主公钥;
24.如果能从区块链上找到组织id对应的签名主公钥,则签名智能合约将签名主公钥、个人用户标识及签名对象作为参数,采用sm9验签算法对签名值进行验证;
25.如果签名值验证通过,则签名智能合约将个人用户标识、签名对象及签名值存储至区块链账本中。
26.进一步的,验证者使用个人用户标识、签名对象作为参数,通过签名客户端向签名智能合约查询签名验证结果;
27.签名智能合约将个人用户标识、签名对象作为查询条件,从区块链账本中查询签名验证结果,如果找到相应的签名验证结果,签名智能合约将签名验证结果返回给签名客户端,签名客户端将签名验证结果返回给验证者。
28.本发明还要求保护一种基于区块链及sm9算法的签名系统,该系统实现上述的基于区块链及sm9算法的签名方法。
29.优选的,该系统包括签名客户端和签名智能合约,
30.所述签名客户端包括主公钥注册模块、标识注册模块、签名模块和检查验证模块;
31.所述签名智能合约包括主公钥管理模块、标识库管理模块、签名管理模块和验证管理模块。
32.本方法还要求保护一种基于区块链及sm9算法的签名装置,包括:至少一个存储器和至少一个处理器;
33.所述至少一个存储器,用于存储机器可读程序;
34.所述至少一个处理器,用于调用所述机器可读程序,执行上述的方法。
35.本方法还要求保护一种计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行上述的方法。
36.本发明的一种基于区块链及sm9算法的签名方法及系统与现有技术相比,具有以下有益效果:
37.本方法将sm9的签名主公钥、用户标识、签名对象及签名值,通过智能合约写入区块链账本,使其不可篡改、不可删除;
38.将将验证结果通过智能合约写入区块链账本,使签名行为不可篡改、不可删除,从而达到不可抵赖的可信效果;
39.本方法及系统支持对签名结果随时进行再次验证与审计,用户通过签名客户端依据用户标识、签名对象等条件,查询特定业务的签名,从而完成再次验证、核对及审计的任务。
附图说明
40.图1是本发明实施例提供的基于区块链及sm9算法的签名方法实现架构图。
具体实施方式
41.本发明实施例提供一种基于区块链及sm9算法的签名方法,使用sm9算法生成签名主公钥与签名主私钥,
42.将组织id、所述签名主公钥保存在区块链上;
43.将组织id、个人用户标识保存在区块链上;
44.将所述签名主私钥、个人用户标识作为参数,使用sm9算法生成个人用户签名私钥;
45.将签名主公钥、个人用户签名私钥作为参数,使用sm9签名算法对签名对象进行签名,得到签名值;
46.将个人用户标识、签名对象及签名值保存在区块链上。
47.本方法通过签名客户端和签名智能合约实现,
48.组织用户通过签名客户端使用sm9算法生成签名主公钥与签名主私钥,签名客户端将组织id、签名主公钥发送至签名智能合约,签名智能合约将组织id、所述签名主公钥保存在区块链上;
49.组织用户通过签名客户端向签名智能合约发送组织id、个人用户标识,签名智能合约将组织id、个人用户标识保存在区块链上;
50.组织用户使用sm9的签名主私钥、个人用户标识作为参数,利用sm9算法生成个人用户签名私钥;签名客户端使用签名主公钥、个人用户签名私钥作为参数,利用sm9算法对签名对象进行签名,得到签名值,签名客户端将签名对象、签名值及个人用户标识发送至签名智能合约;签名智能合约将个人用户标识、签名对象及签名值保存在区块链上。
51.其中,所述签名智能合约将组织id、签名主公钥保存在区块链上,
52.签名智能合约检查区块链上是否存在该组织id,如果判定区块链上不存在该组织id,则签名智能合约将组织id、签名主公钥保存在区块链上。
53.所述签名智能合约将组织id、个人用户标识保存在区块链上,
54.签名智能合约检查区块链上是否存在该组织id及个人用户标识,如果判定区块链上不存在该组织id及个人用户标识,则签名智能合约将组织id、个人用户标识保存在区块链上。
55.所述签名智能合约将个人用户标识、签名对象及签名值保存在区块链上,
56.签名智能合约将个人用户标识作为检索条件,从区块链上中查找个人用户标识对应的组织id;
57.如果能从区块链上找到个人用户标识对应的组织id,则签名智能合约将组织id作为检索条件,从区块链上查询组织id对应的签名主公钥;
58.如果能从区块链上找到组织id对应的签名主公钥,则签名智能合约将签名主公钥、个人用户标识及签名对象作为参数,采用sm9验签算法对签名值进行验证;
59.如果签名值验证通过,则签名智能合约将个人用户标识、签名对象及签名值存储至区块链上。
60.验证者使用个人用户标识、签名对象作为参数,通过签名客户端向签名智能合约查询签名验证结果;
61.签名智能合约将个人用户标识、签名对象作为查询条件,从区块链账本中查询签名验证结果,如果找到相应的签名验证结果,签名智能合约将签名验证结果返回给签名客户端,签名客户端将签名验证结果返回给验证者。
62.基于标识的密码算法是一门新兴的且正在不断快速发展中的公钥密码算法分支。它的设计思想最早由以色列的密码学家,rsa算法的发明人之一的adi shamir在1984年提出。其初衷是为了简化传统pki/ca证书体系中复杂的通信过程和繁琐的密钥管理过程。这种密码算法的设计目标是让通信双方在不需要交换公私钥信息、不需要保存密钥的目录服务等基础设施、不需要使用第三方提供认证服务的情况下,保证信息交换的安全性并可以验证相互之间的签名。
63.区块链通过去中心化的共识机制,实现信息的不可篡改、不可抵赖及可信性。区块链,特别是公共区块链上的数据具有公开性及透明性。去中心化的区块链技术为解决跨越不同主权信息系统之间的互信问题提供了全新的解决方案。
64.本方法结合区块链及标识密码算法的技术特性,提出基于区块链及sm9算法的签名方法,通过区块链信息的不可篡改、公开性及透明性保证密钥相关信息的可信性、可证明性,通过国密标识密码算法(sm9)提高数字签名及验证的效率。
65.本发明实施例还提供一种基于区块链及sm9算法的签名系统,该系统实现上述的基于区块链及sm9算法的签名方法。
66.该系统包括签名客户端和签名智能合约,
67.所述签名客户端包括主公钥注册模块、标识注册模块、签名模块和检查验证模块;
68.所述签名智能合约包括主公钥管理模块、标识库管理模块、签名管理模块和验证管理模块。
69.参考图1所示,本系统实现基于区块链及sm9算法的签名方法的过程如下:
70.1)、组织用户通过签名客户端使用sm9算法生成签名主公钥与签名主私钥,签名客户端将组织id、签名主公钥发送至签名智能合约;签名智能合约检查区块链账本中是否存在该组织id,如果区块链账本中不存在该组织id,则签名智能合约将组织id、签名主公钥保
存至区块链账本中;组织用户自行保存sm9的签名主私钥。
71.2)、组织用户通过签名客户端向签名智能合约发送组织id、用户标识;签名智能合约检查区块链账本中是否存在该组织id及用户标识,如果区块链账本中不存在该组织id及用户标识,则签名智能合约将组织id、用户标识保存至区块链账本中。
72.3)、组织用户使用sm9的签名主私钥、个人用户标识作为参数,利用sm9算法生成个人用户签名私钥。
73.4)、签名客户端使用签名主公钥、个人用户签名私钥作为参数,利用sm9算法对签名对象进行签名,得到签名值;签名客户端将签名对象、签名值及用户标识发送至签名智能合约。
74.5)、签名智能合约将用户标识作为查询条件,从区块链账本中查找用户对应的组织id;然后将组织id作为查询条件,从区块链账本中查找组织id对应的签名主公钥;接着签名智能合约将签名主公钥、用户标识及签名对象作为参数,采用sm9验签算法对签名值进行验证,如果验证通过,签名智能合约将用户标识、签名对象及签名值存储至区块链账本中。
75.6)、验证者使用用户标识、签名对象作为参数,通过签名客户端向签名智能合约查询签名验证结果。签名智能合约将用户标识、签名对象作为查询条件,从区块链账本中查询签名验证结果,如果找到相应的签名验证结果,签名智能合约将签名验证结果返回给签名客户端,签名客户端将签名验证结果返回给验证者。
76.本发明实施例还提供一种基于区块链及sm9算法的签名装置,包括:至少一个存储器和至少一个处理器;
77.所述至少一个存储器,用于存储机器可读程序;
78.所述至少一个处理器,用于调用所述机器可读程序,执行上述实施例中所述的基于区块链及sm9算法的签名方法。
79.本发明实施例还提供一种计算机可读介质,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行上述实施例中所述的基于区块链及sm9算法的签名。具体地,可以提供配有存储介质的系统或者装置,在该存储介质上存储着实现上述实施例中任一实施例的功能的软件程序代码,且使该系统或者装置的计算机(或cpu或mpu)读出并执行存储在存储介质中的程序代码。
80.在这种情况下,从存储介质读取的程序代码本身可实现上述实施例中任何一项实施例的功能,因此程序代码和存储程序代码的存储介质构成了本发明的一部分。
81.用于提供程序代码的存储介质实施例包括软盘、硬盘、磁光盘、光盘(如cd-rom、cd-r、cd-rw、dvd-rom、dvd-ram、dvd-rw、dvd+rw)、磁带、非易失性存储卡和rom。可选择地,可以由通信网络从服务器计算机上下载程序代码。
82.此外,应该清楚的是,不仅可以通过执行计算机所读出的程序代码,而且可以通过基于程序代码的指令使计算机上操作的操作系统等来完成部分或者全部的实际操作,从而实现上述实施例中任意一项实施例的功能。
83.此外,可以理解的是,将由存储介质读出的程序代码写到插入计算机内的扩展板中所设置的存储器中或者写到与计算机相连接的扩展单元中设置的存储器中,随后基于程序代码的指令使安装在扩展板或者扩展单元上的cpu等来执行部分和全部实际操作,从而实现上述实施例中任一实施例的功能。
84.上文通过附图和优选实施例对本发明进行了详细展示和说明,然而本发明不限于这些已揭示的实施例,基与上述多个实施例本领域技术人员可以知晓,可以组合上述不同实施例中的代码审核手段得到本发明更多的实施例,这些实施例也在本发明的保护范围之内。

技术特征:
1.一种基于区块链及sm9算法的签名方法,其特征在于使用sm9算法生成签名主公钥与签名主私钥,将组织id、所述签名主公钥保存在区块链上;将组织id、个人用户标识保存在区块链上;将所述签名主私钥、个人用户标识作为参数,使用sm9算法生成个人用户签名私钥;将签名主公钥、个人用户签名私钥作为参数,使用sm9签名算法对签名对象进行签名,得到签名值;将个人用户标识、签名对象及签名值保存在区块链上。2.根据权利要求1所述的一种基于区块链及sm9算法的签名方法,其特征在于,本方法通过签名客户端和签名智能合约实现,组织用户通过签名客户端使用sm9算法生成签名主公钥与签名主私钥,签名客户端将组织id、签名主公钥发送至签名智能合约,签名智能合约将组织id、所述签名主公钥保存在区块链上;组织用户通过签名客户端向签名智能合约发送组织id、个人用户标识,签名智能合约将组织id、个人用户标识保存在区块链上;签名客户端使用签名主公钥、个人用户签名私钥作为参数,利用sm9算法对签名对象进行签名,得到签名值,签名客户端将签名对象、签名值及个人用户标识发送至签名智能合约;签名智能合约将个人用户标识、签名对象及签名值保存在区块链上。3.根据权利要求2所述的一种基于区块链及sm9算法的签名方法,其特征在于,所述签名智能合约将组织id、签名主公钥保存在区块链上,签名智能合约检查区块链账本中是否存在该组织id,如果区块链账本中不存在该组织id,则签名智能合约将组织id、签名主公钥保存至区块链账本中。4.根据权利要求2所述的一种基于区块链及sm9算法的签名方法,其特征在于,所述签名智能合约将组织id、个人用户标识保存在区块链上,签名智能合约检查区块链账本中是否存在该组织id及个人用户标识,如果区块链账本中不存在该组织id及个人用户标识,则签名智能合约将组织id、个人用户标识保存至区块链账本中。5.根据权利要求2或3或4所述的一种基于区块链及sm9算法的签名方法,其特征在于,所述签名智能合约将个人用户标识、签名对象及签名值保存在区块链上,签名智能合约将个人用户标识作为查询条件,从区块链账本中查找个人用户标识对应的组织id;如果能从区块链上找到个人用户标识对应的组织id,则签名智能合约将组织id作为查询条件,从区块链账本中查找组织id对应的签名主公钥;如果能从区块链上找到组织id对应的签名主公钥,则签名智能合约将签名主公钥、个人用户标识及签名对象作为参数,采用sm9验签算法对签名值进行验证;如果签名值验证通过,则签名智能合约将个人用户标识、签名对象及签名值存储至区块链账本中。6.根据权利要求2所述的一种基于区块链及sm9算法的签名方法,其特征在于,验证者使用个人用户标识、签名对象作为参数,通过签名客户端向签名智能合约查询签名验证结
果;签名智能合约将个人用户标识、签名对象作为查询条件,从区块链账本中查询签名验证结果,如果找到相应的签名验证结果,签名智能合约将签名验证结果返回给签名客户端,签名客户端将签名验证结果返回给验证者。7.一种基于区块链及sm9算法的签名系统,其特征在于,该系统实现权利要求1至6任一项所述的基于区块链及sm9算法的签名方法。8.根据权利要求7所述的一种基于区块链及sm9算法的签名系统,其特征在于,包括签名客户端和签名智能合约,所述签名客户端包括主公钥注册模块、标识注册模块、签名模块和检查验证模块;所述签名智能合约包括主公钥管理模块、标识库管理模块、签名管理模块和验证管理模块。9.一种基于区块链及sm9算法的签名装置,其特征在于包括:至少一个存储器和至少一个处理器;所述至少一个存储器,用于存储机器可读程序;所述至少一个处理器,用于调用所述机器可读程序,执行权利要求1至6任一所述的方法。10.计算机可读介质,其特征在于,所述计算机可读介质上存储有计算机指令,所述计算机指令在被处理器执行时,使所述处理器执行权利要求1至6任一所述的方法。

技术总结
本发明公开了一种基于区块链及SM9算法的签名方法及系统,属于信息化软件系统、互联网及区块链技术领域,该方法使用SM9算法生成签名主公钥与签名主私钥,将组织ID、所述签名主公钥保存在区块链上;将组织ID、个人用户标识保存在区块链上;将所述签名主私钥、个人用户标识作为参数,使用SM9算法生成个人用户签名私钥;将签名主公钥、个人用户签名私钥作为参数,使用SM9签名算法对签名对象进行签名,得到签名值;将个人用户标识、签名对象及签名值保存在区块链上。本发明能够通过标准的密码学算法及数据格式,实现异构系统之间的信任价值传递与相互认证。递与相互认证。递与相互认证。


技术研发人员:屈肖军 董广立
受保护的技术使用者:浪潮软件股份有限公司
技术研发日:2022.07.01
技术公布日:2022/11/1
转载请注明原文地址: https://tieba.8miu.com/read-10196.html

最新回复(0)