一种基于区块链的可信数字签名方法及装置

著录项
  • CN202011387841.4
  • 20201202
  • CN112202558A
  • 20210108
  • 江苏通付盾区块链科技有限公司
  • 汪德嘉;张齐齐;宋超
  • H04L9/08
  • H04L9/08 H04L9/30 H04L9/32 G06F16/27

  • 江苏省南京市江北新区江淼路88号腾飞大厦B座23楼
  • 江苏(32)
  • 北京弘权知识产权代理事务所(普通合伙)
  • 郭放;许伟
摘要
本申请公开了一种基于区块链的可信数字签名方法及装置,包括生成数字证书请求;获取数字证书,并将所述数字证书和数字证书申请记录分别存储到区块链和数据库中;计算本地待签名数据的哈希值;根据所述待签名数据的哈希值生成时间戳请求;获取权威时间戳;将时间戳申请记录存储到区块链;根据所述数字证书、待签名数据的哈希值以及权威时间戳生成签名文件;生成签名数据包上传到区块链;获取验证方对所述签名数据包的验证结果。本申请采用区块链技术,将可信时间戳和权威数字证书的申请和颁发记录分别备份到区块链中,保证用户行为的可追溯性和可验证性,从而保证权威CA服务和权威TSA服务的可信性。
权利要求

1.一种基于区块链的可信数字签名方法,应用于签名方,其特征在于,所述方法包括:

生成数字证书请求;所述数字证书请求包括签名方的身份信息、申请时间、公钥以及私钥签名;

获取与所述数字证书请求对应的来自第一认证机构颁发的数字证书;

计算本地待签名数据的哈希值;

根据所述待签名数据的哈希值生成时间戳请求;

获取与所述时间戳请求对应的来自第二认证机构颁发的权威时间戳;

根据所述数字证书、待签名数据的哈希值以及权威时间戳生成签名文件;将所述签名文件、待签名数据的哈希值、权威时间戳以及数字证书序列号生成签名数据包上传到区块链;

验证方获取对所述签名数据包的验证结果。

2.根据权利要求1所述的方法,其特征在于,所述获取与所述数字证书请求对应的来自第一认证机构颁发的数字证书的步骤包括:

发送数字证书请求至数字签名服务方;

数字签名服务方验证所述私钥签名,当验证通过后,生成证书请求文件csr并发送至第一认证机构;

第一认证机构根据证书请求文件csr颁发对应的数字证书并发送至数字签名服务方;

数字签名服务方将所述数字证书和数字证书申请记录分别存储到区块链和数据库中;所述申请记录包括签名方的身份信息、申请时间、证书颁发时间以及私钥签名;

从数字签名服务方获取所述数字证书。

3.根据权利要求1所述的方法,其特征在于,所述获取与所述时间戳请求对应的来自第二认证机构颁发的权威时间戳的步骤包括:

发送时间戳请求至数字签名服务方;

数字签名服务方根据时间戳请求向第二认证机构申请权威时间戳;

第二认证机构根据时间戳请求颁发对应的权威时间戳及时间戳证书并发送至数字签名服务方;

数字签名服务方将时间戳申请记录存储到区块链;所述时间戳申请记录包括所述哈希值、权威时间戳以及时间戳证书;

从数字签名服务方获取所述权威时间戳。

4.根据权利要求1所述的方法,其特征在于,所述根据所述数字证书、待签名数据的哈希值以及权威时间戳生成签名文件的步骤包括:

提取所述数字证书对应的私钥,调用SM2数字签名算法对待签名数据的哈希值以及权威时间戳进行签名,得到签名文件。

5.根据权利要求1所述的方法,其特征在于,所述验证方获取对所述签名数据包的验证方法包括:

调用第二认证机构提供的验证接口,查验所述待签名数据的哈希值和权威时间戳是否正确;

调用第一认证机构提供的验证接口,根据数字证书序列号查验数字证书在生成签名文件时是否有效,这里的有效指的是数字证书是正确的,没有过期的,没有吊销的;

根据待签名数据的哈希值、验证后的权威时间戳以及验证后的数字证书的公钥,调用SM2验签函数验证签名数据包的正确性。

6.根据权利要求1所述的方法,其特征在于,所述时间戳请求中包含对多个不同签名方分别对应的权威时间戳的子请求。

7.根据权利要求1所述的方法,其特征在于,所述签名数据包中还包括所述时间戳申请记录。

8.一种基于区块链的可信数字签名装置,设置于区块链中任意一个与签名方连接的节点,其特征在于,所述装置包括:

请求单元,被配置为生成数字证书请求;所述数字证书请求包括签名方的身份信息、申请时间、公钥以及私钥签名;还被配置为根据待签名数据的哈希值生成时间戳请求;

计算单元,被配置为计算本地待签名数据的哈希值;

获取单元,被配置为获取与所述数字证书请求对应的来自第一认证机构颁发的数字证书,以及获取与所述时间戳请求对应的来自第二认证机构颁发的权威时间戳;还被配置为获取验证方对所述签名数据包的验证结果;

签名单元,被配置为根据所述数字证书、待签名数据的哈希值以及权威时间戳生成签名文件。

9.根据权利要求8所述的装置,其特征在于,所述请求单元还被配置为:

根据所述待签名数据的哈希值生成对多个不同签名方分别对应的权威时间戳的子请求。

10.根据权利要求8所述的装置,其特征在于,所述计算单元还被配置为:

提取所述数字证书对应的私钥,调用SM2数字签名算法对待签名数据的哈希值以及权威时间戳进行签名,得到签名文件。

说明书
技术领域

本发明涉及区块链技术领域,特别涉及一种基于区块链的可信数字签名方法及装置。

数字签名又称公钥数字签名,是一段数字串,这段数字串既保证了他人无法轻易伪造,同时也是对信息的发送者发送信息真实性的有效证明。数字签名不同于普通的物理签名,其是使用了公钥加密领域的技术来实现的用于鉴别数字信息的方法。

在实际应用中,进行数字签名的过程通常是由签名方和配置数字签名服务的提供方来实现,其中,数字签名服务使用了权威的数字证书和时间戳,签名的可信性完全依赖于第三方(权威CA机构和权威TSA机构)的可信性,对签名的验证也完全依赖数字签名服务的提供方。然而,由于第三方和数字签名服务的提供方均不具有去中心化的特点,一旦数据被篡改,将导致数字签名和验证的过程难以追溯,数字证书和时间戳的可信性将大为降低。

本申请提供了一种基于区块链的可信数字签名方法及装置,以解决数字证书和时间戳的权威性、可验证性和可信性完全依赖第三方而用户难以验证的问题。

第一方面,本申请提供了一种基于区块链的可信数字签名方法,包括:

生成数字证书请求;所述数字证书请求包括签名方的身份信息、申请时间、公钥以及私钥签名;

获取与所述数字证书请求对应的来自第一认证机构颁发的数字证书;

计算本地待签名数据的哈希值;

根据所述待签名数据的哈希值生成时间戳请求;

获取与所述时间戳请求对应的来自第二认证机构颁发的权威时间戳;

根据所述数字证书、待签名数据的哈希值以及权威时间戳生成签名文件;将所述签名文件、待签名数据的哈希值、权威时间戳以及数字证书序列号生成签名数据包上传到区块链;

获取验证方对所述签名数据包的验证结果。

在一些实施例中,所述获取与所述数字证书请求对应的来自第一认证机构颁发的数字证书的步骤包括:

发送数字证书请求至数字签名服务方;

数字签名服务方验证所述私钥签名,当验证通过后,生成证书请求文件csr并发送至第一认证机构;

第一认证机构根据证书请求文件csr颁发对应的数字证书并发送至数字签名服务方;

数字签名服务方将所述数字证书和数字证书申请记录分别存储到区块链和数据库中;所述申请记录包括签名方的身份信息、申请时间、证书颁发时间以及私钥签名;

数字签名服务方将所述数字证书发送给签名方。

在一些实施例中,所述获取与所述时间戳请求对应的来自第二认证机构颁发的权威时间戳的步骤包括:

发送时间戳请求至数字签名服务方;

数字签名服务方根据时间戳请求向第二认证机构申请权威时间戳;

第二认证机构根据时间戳请求颁发对应的权威时间戳及时间戳证书并发送至数字签名服务方;

数字签名服务方将时间戳申请记录存储到区块链;所述时间戳申请记录包括所述哈希值、权威时间戳以及时间戳证书;

数字签名服务方将所述权威时间戳发送给签名方。

在一些实施例中,所述根据所述数字证书、待签名数据的哈希值以及权威时间戳生成签名文件的步骤包括:

提取所述数字证书对应的私钥,调用SM2数字签名算法对待签名数据的哈希值以及权威时间戳进行签名,得到签名文件。

在一些实施例中,所述验证方对所述签名数据包的验证方法包括:

调用第二认证机构提供的验证接口,查验所述待签名数据的哈希值和权威时间戳是否正确;

调用第一认证机构提供的验证接口,根据数字证书序列号查验数字证书在生成签名文件时是否有效,这里的有效指的是数字证书是正确的,没有过期的,没有吊销的;

根据待签名数据的哈希值、验证后的权威时间戳以及验证后的数字证书的公钥,调用SM2验签函数验证签名数据包的正确性。

在一些实施例中,所述时间戳请求中包含对多个不同签名方分别对应的权威时间戳的子请求。

在一些实施例中,所述签名数据包中还包括所述时间戳申请记录。

第二方面,本申请还提供了一种对应与第一方面所述方法的装置。

本申请采用区块链技术,将可信时间戳和权威数字证书的申请和颁发记录分别备份到区块链中,保证用户行为的可追溯性和可验证性,从而保证第三方服务(例如权威CA服务和权威TSA服务)的可信性。另外,将数字签名的哈希值以及签名结果保持到区块链中,可以防止数据和签名被篡改和破坏,保证了数据和签名的真实性和可追溯性,增加验签结果的可信性。

为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本申请提供的一种基于区块链的可信数字签名方法流程图。

区块链具有去中心化、可追溯、防篡改、匿名性等特点,通过区块链技术,可以在一定程度上实现数字签名和验签的透明化和可追溯性,进一步保证数字签名和验证的真实性和可信性。本申请实施例是在现有技术提供数字签名服务的基础上,增加了数据上链、验证、密钥对加密解密等技术手段,下面对本申请的方法进行详细说明:

参见图1,为本申请提供的一种基于区块链的可信数字签名方法流程图;

由图1可知,本申请的方法是通过多方之间的数据交互来实现的,以该方案的发起方(签名方)作为执行端,所述方法包括:

S100:生成数字证书请求;所述数字证书请求包括签名方的身份信息、申请时间、公钥以及私钥签名;需要对数据进行签名的签名方在签名之前,需要持有权威机构颁发的有效的数字证书,若签名方本地已经获得了数字证书,则可以直接使用,无需再生成数字证书请求,当在本地没有数字证书或之前获取的数字证书不可用,则需要执行S100步骤提出申请。

S200:获取与所述数字证书请求对应的来自第一认证机构颁发的数字证书;

在本实施例中,第一认证机构是指权威CA机构,所谓CA(Certificate Authority)认证中心,它是采用PKI(Public Key Infrastructure)公开密钥基础架构技术,专门提供网络身份认证服务,CA可以是民间团体,也可以是政府机构。负责签发和管理数字证书,且具有权威性和公正性的第三方信任机构,它的作用就像我们现实生活中颁发证件的公司,如护照办理机构。国内的CA认证中心主要分为区域性CA认证中心和行业性CA认证中心。

第一认证机构在接收到数字证书请求时,需要对该请求进行验证合法性,若合法则可以允许颁发相应的数字证书,但在一些实施例中,对请求进行验证的过程也可通过配置数字签名服务的服务方来完成,因此,上述步骤S200可分解为:

S210:发送数字证书请求至数字签名服务方;

S220:数字签名服务方验证所述私钥签名;

S230:当验证通过后,生成证书请求文件csr并发送至第一认证机构;具体的,数字签名服务方接收到请求和请求中包含的相关参数后,计算包括身份信息、申请时间以及公钥等参数的Hash值。使用参数中的公钥,调用SM2验签算法,验证参数中的私钥签名。签名验证通过后生成证书请求文件csr。

S240:第一认证机构根据证书请求文件csr颁发对应的数字证书并发送至数字签名服务方。第一认证机构会对申请者的身份信息以及csr文件做基本的验证,验证通过后才会颁发对应的数字证书。

S250:数字签名服务方将所述数字证书和数字证书申请记录分别存储到区块链和数据库中;所述申请记录包括签名方的身份信息、申请时间、证书颁发时间以及私钥签名;

S260:从数字签名服务方获取所述数字证书。

S300:计算本地待签名数据的哈希值;签名方本地先将待签名数据转换成字符串,再计算字符串的哈希值,需要说明的是,本实施例中不对具体哈希计算方法进行限制。

S400:根据所述待签名数据的哈希值生成时间戳请求;

S500:获取与所述时间戳请求对应的来自第二认证机构颁发的权威时间戳;在本实施例中,第二认证机构是指权威可信时间戳服务机构(TSA),例如联合信任时间戳服务中心是国家授时中心和联合信任共同创建的我国唯一权威可信时间戳服务机构(TSA)。

在一些实施例中,上述步骤S500同样可通过配置数字签名服务的服务方来完成,因此,上述步骤S500可分解为:

S510:发送时间戳请求至数字签名服务方;

S520:数字签名服务方根据时间戳请求向第二认证机构申请权威时间戳;

S530:第二认证机构根据时间戳请求颁发对应的权威时间戳及时间戳证书并发送至数字签名服务方;

S540:数字签名服务方将时间戳申请记录存储到区块链;所述时间戳申请记录包括所述哈希值、权威时间戳以及时间戳证书;该步骤中,上链的数据是与权威时间戳相关的数据。权威时间戳的申请可以独立完成,既可以用于签名验签的服务,也可以用于其他服务

S550:数字签名服务方将所述权威时间戳发送给签名方。

进一步的,在上述步骤中,由于签名时可以是多个签名方同时对一个待签名数据进行签名,因此对于每一个签名方就需要申请得到与其对应的权威时间戳,即一个签名方有且仅对应一个唯一的权威时间戳;这时,所述时间戳请求中包含对多个不同签名方分别对应的权威时间戳的子请求,每个子请求代表一个签名方。

S600:签名方根据所述数字证书、待签名数据的哈希值以及权威时间戳生成签名文件;将所述签名文件、待签名数据的哈希值、权威时间戳以及数字证书序列号生成签名数据包上传到数字签名服务方。其中,生成签名文件的过程具体可以是:先提取所述数字证书对应的私钥,再调用SM2数字签名算法对待签名数据的哈希值以及权威时间戳进行签名,得到签名文件。

S700:数字签名服务方将接收到的签名数据包上传到区块链。该步骤中,上链的数据是签名结果以及与验证相关的数据。当签名方具有多个时,这里的签名数据包含待签名数据的哈希值以及多个权威时间戳,权威时间戳的数量与签名方个数对应。

进一步的,上述步骤S540和S700中分别进行了两次上链过程,其上链的数据中,待签名数据的哈希值根据不同的算法,可能是相同的,也可能是不同的,当采用相同算法算得的是相同的哈希值时,上述两步骤的上链过程可以合并,即在S540中得到的时间戳申请记录先不上链,而是在步骤S700中将其打包在所述签名数据包中一起上链,可减少操作步骤。

但是,当对于最终签名包含多个签名方的时候,合并上链的方式可能导致权威时间戳容易混乱,不利用对签名结果的验证。因此在这种条件下,还是采用步骤S540和S700分别上链(分离上传)的方式更有利于服务的复用。

S800:验证方获取对所述签名数据包的验证结果。当验证方需要对签名数据包进行验证时,可以通过区块链中任意节点获取签名数据包,并将签名数据包提交至数字签名服务方,由数字签名服务方对签名数据包执行下述验证操作,验证结束后得到验证结果再发送至验证方,验证操作包括:

第一、调用第二认证机构提供的验证接口,查验所述待签名数据的哈希值和权威时间戳是否正确;

第二、调用第一认证机构提供的验证接口,根据数字证书序列号查验数字证书在生成签名文件时是否有效,这里的有效指的是数字证书是正确的,没有过期的,没有吊销的;

第三、根据待签名数据的哈希值、验证后的权威时间戳以及验证后的数字证书的公钥,调用SM2验签函数验证签名数据包的正确性。

上述三种验证方法中,第一、第二种之间的顺序可调换,并且,只有在三种方法均得到正确性的结果时,才向验证方反馈验证可信的信息。

由上述技术方案可知,本申请采用区块链技术,将可信时间戳和权威数字证书的申请和颁发记录分别备份到区块链中,保证用户行为的可追溯性和可验证性,从而保证第三方服务(例如权威CA服务和权威TSA服务)的可信性。另外,将数字签名的哈希值以及签名结果保持到区块链中,可以防止数据和签名被篡改和破坏,保证了数据和签名的真实性和可追溯性,增加验签结果的可信性。

对应于上述方法,本申请还提供了一种应用上述方法的装置,包括:

请求单元,被配置为生成数字证书请求;所述数字证书请求包括签名方的身份信息、申请时间、公钥以及私钥签名;还被配置为根据所述待签名数据的哈希值生成时间戳请求;

计算单元,被配置为计算本地待签名数据的哈希值;

获取单元,被配置为获取与所述数字证书请求对应的来自第一认证机构颁发的数字证书,以及获取与所述时间戳请求对应的来自第二认证机构颁发的权威时间戳;还被配置为获取验证方对所述签名数据包的验证结果;

签名单元,被配置为根据所述数字证书、待签名数据的哈希值以及权威时间戳生成签名文件。

在一些实施例中,所述请求单元还被配置为:

根据所述待签名数据的哈希值生成对多个不同签名方分别对应的权威时间戳的子请求。

在一些实施例中,所述计算单元还被配置为:

提取所述数字证书对应的私钥,调用SM2数字签名算法对待签名数据的哈希值以及权威时间戳进行签名,得到签名文件。

本实施例中的装置在执行上述方法时可参见方法实施例中的描述,在此不再赘述。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由本申请的权利要求指出。

本文发布于:2024-09-25 02:27:32,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/86859.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议