一种用于联盟区块链的数字证书的配置方法、终端和根证书服务器与流程

文档序号:21275122发布日期:2020-06-26 23:12阅读:686来源:国知局
一种用于联盟区块链的数字证书的配置方法、终端和根证书服务器与流程

本发明涉及区块链技术领域,更具体地,涉及一种用于联盟区块链的数字证书的配置方法、终端和根证书服务器。



背景技术:

区块链(blockchain)是借由密码学串接并保护内容的串连文字记录(又称区块)。每一个区块包含了前一个区块的加密散列、相应时间戳记以及交易数据(通常用默克尔树(merkletree)算法计算的散列值表示),这样的设计使得区块内容具有难以篡改的特性。用区块链技术所串接的分布式账本能让两方有效纪录交易,且可永久查验此交易。

区块链主要分为三类,即公有链、私有链和联盟链。公有链网络是最开放的区块链网络,比较著名的有比特币,任何人只要安装部署了比特币的节点程序就可以加入到比特币网络中,从而成为其中的一员;而私有链和联盟链中存在准入的验证机制,即加入到私有链或者联盟链时需要一定的许可和认证。联盟链允许授权的节点加入网络,往往被用于机构间的区块链,存在准入的验证机制,即加入到联盟链时需要一定的许可和认证。

在区块链中引入数字证书,利用pki(publickeyinfrastructure)公开密钥基础架构,即可解决联盟链中准入机制的验证的问题。数字证书也称公开密钥证书,是指用于电子信息活动中电子文件行为主体的验证和证明,并可实现电子文件保密性和完整性的电子数据。数字证书是一个经证书认证中心(certificationauthority,简称ca)发行的文件。例如,在区块链的交易的加入数字证书信息,利用pki公钥密码加密算法对交易进行校验和审核,交易校验时,首先进行数字证书的校验,只有数字证书的认证通过后,才进行后续的交易校验,这样通过数字证书的认证即实现了联盟链的准入和验证机制。

目前,在引入了数字证书的联盟链中,区块链中每个节点都配置了相同的根证书(rootcertificate),根证书(rootcertificate)是属于根证书颁发机构(ca)的公钥证书,是在公开密钥基础建设中,信任链的起点。根证书的个数可以是一个也可以是多个,这样保证了不同节点对于同一个带数字证书交易验证的一致性。而当联盟链中需要加入新的根证书或对接第三方机构的根证书时,需要关闭原有的区块链网络,在每一个区块链节点中添加新的根证书,然后再重启网络,当联盟链中的节点过多时,配置效率不高,耗时过长。



技术实现要素:

传统的联盟区块链网络配置根证书的方式,即:首先需要将区块链节点关闭,配置新的根证书列表后,然后重新加入区块链网络,节点数量过多时需要每一个节点都重启配置一遍,耗时过长。

针对该问题,本发明提出一种用于联盟区块链的数字证书的配置方法,包括:

s1,根证书服务器生成非对称加密的一对公钥pk和私钥sk,并将公钥pk发送到区块链节点;

s2,区块链节点在自己的配置文件中添加根证书服务器的地址addr以及s1中获取的根证书服务器的公钥pk;

s3,根证书服务器构建根证书列表rootlst;

s4,区块链节点通过s2中配置的所述地址addr向根证书服务器请求根证书列表rootlst;

s5,对于s4中的请求,根证书服务器用私钥sk对s3中构建的根证书列表rootlst进行签名,生成签名数据signature,并将根证书列表rootlst和签名数据signature返回给区块链节点;

s6,区块链节点用所述公钥pk对所述签名数据signature进行验证,如果验证通过,则应用所述根证书列表rootlst。

本发明还提出一种用于联盟区块链的数字证书的终端,所述终端为区块链节点,所述终端包括存储器和处理器,所述处理器能够执行存储器中的计算机程序,所述计算机程序执行时,完成如下步骤:

1)从根证书服务器获得公钥pk,其中所述公钥pk由根证书服务器生成;

2)在配置文件中添加根证书服务器的地址addr以及所述根证书服务器的公钥pk;

3)通过所述地址addr向根证书服务器请求根证书列表信息rootlst;

4)通过所述公钥pk对签名数据signature进行验证,如果验证通过,则应用根证书列表rootlst,所述签名数据signature为根证书服务器用所述私钥sk对所述根证书列表rootlst的签名。

本发明还提出一种用于联盟区块链的数字证书的根证书服务器,所述根证书服务器包括存储器和处理器,所述处理器能够执行存储器中的计算机程序,所述计算机程序执行时,完成如下步骤:

1)生成非对称加密的一对公钥pk和私钥sk;

2)将根证书服务器的地址addr以及所述公钥pk发送到区块链节点;

3)构建根证书列表rootlst并将根证书列表信息rootlst发送到区块链节点;

4)用私钥sk对所述根证书列表rootlst进行签名,生成签名数据signature,并将根证书列表rootlst和签名数据signature返回给区块链节点。

本发明的有益效果包括:

1、安全:根证书列表信息通过从可信的根证书服务器获取,通过配置信任根证书服务器的公钥验证签名的方式来保障根证书列表信息的安全性。

2、快速:区块链新增节点且需要添加新的根证书列表时,只需要在服务器端更新根证书列表,下一次联盟链节点请求根证书列表信息时,即可取得最新的根证书列表,整个过程无需重启区块链网络。

3、可扩展性:可快速对接第三方机构的根证书列表,只需要根证书列表服务器导入第三方的根证书列表,即可实现原有根证书列表的替换或者更新,方便,快捷。

附图说明

为了更容易理解本发明,将通过参照附图中示出的具体实施方式更详细地描述本发明。这些附图只描绘了本发明的典型实施方式,不应认为对本发明保护范围的限制。

图1显示了本发明方法的第一实施方式的流程图。

图2显示了本发明方法的第二实施方式的流程图。

具体实施方式

下面参照附图描述本发明的实施方式,其中相同的部件用相同的附图标记表示。在不冲突的情况下,下述的实施例及实施例中的技术特征可以相互组合。

如图1所示的本发明的方法的一个流程图,本发明的方法包括如下所述的步骤s1-s6,下面进行详细描述。

s1,根证书服务器生成一个用于非对称加密的秘钥对(pk,sk),pk为公钥,sk为私钥,将私钥sk存储在该根证书服务器中,将公钥pk发送到区块链节点。可选地,根证书服务器生成秘钥对的算法可以是rsa或者ecc(椭圆曲线)算法。

其中,根证书服务器可以是一个提供http服务的服务程序,用于存储根证书列表,以及提供接口供区块链节点获取根证书列表。区块链节点指的是组成联盟链的节点。

s2,区块链节点在自己的配置文件中添加根证书服务器的http服务的地址addr以及s1中获取的根证书服务器的公钥pk。

s3,根证书服务器整理收集到的根证书,构建根证书列表rootlst。可选地,需要对接外部机构的根证书时,根证书服务器接收外部机构的根证书列表。外部机构指的是第三方的外部机构,外部机构提供根证书列表信息,用于与联盟链平台进行对接。

s4,区块链节点通过s2中配置的地址addr向根证书服务器请求根证书列表信息。

s5,对于s4中的请求,根证书服务器用私钥sk对s3中构建的根证书列表rootlst进行签名,生成签名数据signature,并将(rootlst,signature)返回给区块链节点。

s6,区块链节点收到s5中返回的(rootlst,signature),用配置文件中的公钥pk,对签名signature进行验证,如果验证通过,则应用根证书列表rootlst,反之则丢弃rootlst。可选地,区块链节点可以通过openssl库提供的验证签名的算法来进行签名的验证。

优选地,区块链节点生成自签名的根证书,并将所述自签名根证书上传到所述根证书服务器。区块链节点可以通过openssl库来生成自签名的根证书。

openssl是一个基于密码学的安全开发包,提供了主要的密码算法、常用的密钥和证书封装管理功能以及ssl协议。

在本发明中,根证书服务器产生一对公私钥,联盟链中的节点配置该公钥,联盟链节点即可用该公钥验证,从根证书服务器获取的签名的正确性。例如联盟链节点从配置的服务器地址获取到根证书列表,以及列表的签名。利用配置的公钥对列表的签名进行验签,如果签名验证成功,则接受根证书列表;如果签名验证失败,则拒绝该根证书列表。

下面参照图2描述本发明的方法的第二实施方式的时序图。

s1,根证书服务器ecertserver通过ecc(椭圆曲线加密)算法生成一个用于非对称加密的秘钥对(pk,sk),pk为公钥,sk为私钥,将公钥pk派送到区块链节点。

s2,区块链节点的配置文件中添加根证书服务器ecertserver的http服务的地址addr,例如http://192.168.29.1:8080/,以及s1中生成的公钥pk。

s3,区块链节点node通过openssl工具生成根证书ecert。

s4,区块链节点node将根证书ecert上传到根证书服务器ecertserver。

s5,需要对接外部机构的根证书时,根证书服务器ecertserver导入第三方外部机构的根证书列表importedecertlist。

s6,根证书服务器ecertserver整理收集到的根证书ecert或者导入的第三方根证书列表importedecertlist(即,根证书和根证书列表的导入可以额是根证书服务器主动发起或者被动接收),构建根证书列表rootlst。

s7,区块链节点通过s2中配置的地址addr向根证书服务器ecertserver请求根证书列表信息。

s8,对于s7中的请求,根证书服务器ecertserver用私钥sk对s6中构建的根证书列表rootlst进行签名,生成签名数据signature,并将(rootlst,signature)返回给区块链节点node。

s9,区块链节点接收s8中返回的(rootlst,signature)。

s10,区块链节点利用配置文件中的公钥pk,对签名signature进行验证,如果验证通过,则应用根证书列表rootlst,反之则丢弃rootlst。

s11,区块链节点可以应用更证书列表rootlst进行各种应用。

s12,步骤s5到步骤s9每隔一段时间(例如5分钟)重复进行。

如果联盟链网络启动后,又有新的区块链节点加入该网络中,且该节点自身生成了根证书newecert。此时只需要该新节点将自身的根证书newecert上传至根证书服务器,然后根证书服务器更新自身的根证书列表rootlst,区块链中的其他节点在下一次请求根证书列表信息时,就能够获取到最新的rootlst,此时的rootlst中就包含了newecert,至此,就实现了在不重启区块链网络的前提下,完成了数字证书的动态更新。

对应的,本发明还提出一种用于联盟区块链的数字证书的终端,和根证书服务器,所述终端可以作为区块链节点,终端和根证书服务器的交互如图1-2的流程所示。

根证书服务器生成非对称加密的一对公钥pk和私钥sk,公钥pk发送给终端。终端在自己的配置文件中添加根证书服务器的地址addr以及所述根证书服务器的公钥pk。

需要时或者定时地,终端通过所述地址addr(例如http服务的地址addr)向根证书服务器请求根证书列表信息rootlst。

需要时或者定时地,根证书服务器构建根证书列表rootlst并将根证书列表信息rootlst发送到区块链节点,根证书列表rootlst可以收集自外部机构。

根证书服务器用私钥sk对所述根证书列表rootlst进行签名,生成签名数据signature,并将根证书列表rootlst和签名数据signature返回给终端。

终端收到根证书列表rootlst和签名数据signature后,用所述公钥pk对签名数据signature进行验证,如果验证通过,则应用根证书列表rootlst,所述签名数据signature为根证书服务器用所述私钥sk对所述根证书列表rootlst的签名。

需要时或者定时地,终端生成自签名的根证书,并将所述自签名根证书上传到所述根证书服务器。

以上所述的实施例,只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1