首页> 中国专利> 一种联盟链密码算法切换方法、装置及联盟链系统

一种联盟链密码算法切换方法、装置及联盟链系统

摘要

本发明提供的一种联盟链密码算法切换方法、装置及联盟链系统,联盟链中的节点在接收到密码算法切换提案的情况下,对密码算法切换提案进行共识验证,在共识验证通过的情况下对密码算法切换提案进行投票,在投票通过且达到执行时间的情况下,暂停接收新交易自动将当前密码算法切换为目标密码算法,在密码算法切换完成后再继续接收新交易。整个密码算法切换过程中不需要人工参与全部自动化执行,解决了目前联盟链密码算法切换时,需要多机构线下协调、服务启停和人工操作容易导致的系统无法正常运行的问题,提高了联盟链密码算法切换效率。

著录项

  • 公开/公告号CN114978553A

    专利类型发明专利

  • 公开/公告日2022-08-30

    原文格式PDF

  • 申请/专利权人 中国光大银行股份有限公司;

    申请/专利号CN202210761996.2

  • 申请日2022-06-30

  • 分类号H04L9/32(2006.01);H04L9/08(2006.01);H04L9/40(2022.01);H04L67/12(2022.01);G06Q20/38(2012.01);

  • 代理机构北京集佳知识产权代理有限公司 11227;

  • 代理人张静

  • 地址 100033 北京市西城区太平桥大街25号、甲25号中国光大中心

  • 入库时间 2023-06-19 16:34:57

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-09-16

    实质审查的生效 IPC(主分类):H04L 9/32 专利申请号:2022107619962 申请日:20220630

    实质审查的生效

说明书

技术领域

本发明涉及区块链技术领域,更具体的,涉及一种联盟链密码算法切换方法、装置及联盟链系统。

背景技术

联盟链是由多个机构共同参与管理的区块链,联盟链中的节点通常由不同的机构维护,不同节点运行在不同机构子网中,通过网关来打通不同机构节点之间的网络,实现节点互联。底层节点与业务系统之间通常会架设一个中间层服务。

以图1所示的联盟链为例,机构A~机构C共同搭建了联盟链,每个机构运行一个节点,中间层服务分别在机构A、机构B和机构C的子网中各部署一套,分别向各机构的业务系统提供服务。在联盟链投入运行后,若对将联盟链的密码算法进行切换,需要多机构线下协调,商讨一个切换时间点,多机构分别进行人工操作和服务启停,很容易出现问题,若在密码算法切换期间任何一个环节出现问题都可能导致切换失败,从而对整个联盟链系统的正常运行产生较大影响。

发明内容

有鉴于此,本发明提供了一种联盟链密码算法切换方法、装置及联盟链系统,以解决目前联盟链密码算法切换时,需要多机构线下协调、服务启停和人工操作容易导致的系统无法正常运行的问题。

为了实现上述发明目的,本发明提供的具体技术方案如下:

第一方面,本发明实施例公开的一种联盟链密码算法切换方法,应用于联盟链中的节点,所述方法包括:

在接收到所关联的中间层服务或联盟链中其他节点发送的密码算法切换提案的情况下,与联盟链中的其他节点对所述密码算法切换提案进行共识验证;

在共识验证通过的情况下,接收所关联的中间层服务发送的投票信息,与联盟链中的其他节点对所述密码算法切换提案进行投票;

在投票通过且当前时间达到所述密码算法切换提案中的执行时间时,暂停接收新交易,将当前密码算法切换为目标密码算法,在密码算法切换完成后继续接收新交易。

在一些实施例中,所述与联盟链中的其他节点对所述密码算法切换提案进行共识验证,包括:

与联盟链中的其他节点对所述密码算法切换提案的签名进行共识验证;

在对所述密码算法切换提案的签名共识验证通过的情况下,对所述密码算法切换提案进行校验;

在对所述密码算法切换提案校验通过的情况下将本地的所述密码算法切换提案的状态设置为已验证待投票,并将本地的所述密码算法切换提案的状态广播给联盟链中其他节点;

接收联盟链中其他节点发送的所述密码算法切换提案的状态,在接收到的所述密码算法切换提案的状态与本地的所述密码算法切换提案的状态都为已验证待投票的情况下,确定对所述密码算法切换提案的共识验证通过。

在一些实施例中,所述与联盟链中的其他节点对所述密码算法切换提案的签名进行共识验证,包括:

对所述密码算法切换提案的签名进行验证;

在验证通过的情况下,将所述密码算法切换提案存储在本地,并将本地的所述密码算法切换提案的状态设置为待验证;

利用所述当前密码算法的私钥对所述密码算法切换提案进行签名,并将签名后的所述密码算法切换提案广播给联盟链中其他节点;

接收所关联的中间层服务或联盟链中其他节点发送的更新提案,对本地所述密码算法切换提案中的签名进行更新,在检测到本地所述密码算法切换提案中的签名数量与联盟链中所有节点数量与中间层服务数量之和一致的情况下,确定对所述密码算法切换提案的签名共识验证通过,所述更新提案为联盟链中非发起方中间层服务在查询到所述密码算法切换提案的状态为待验证的情况下,将其所述当前密码算法的私钥签名追加到所述密码算法切换提案中得到的。

在一些实施例中,对所述密码算法切换提案进行校验,包括:

校验本地配置文件中节点标识列表中的节点标识与中间层服务标识列表中的中间层服务标识与本地所述当前密码算法的证书文件的文件名是否一一对应;

若一一对应,校验本地存储的所述当前密码算法的私钥和证书文件的格式是否满足所述当前密码算法的要求;

若满足,使用本地所述当前密码算法的证书文件依次校验所述密码算法切换提案中的签名;

若校验通过,确定对所述密码算法切换提案校验通过。

在一些实施例中,所述与联盟链中的其他节点对所述密码算法切换提案进行投票,包括:

在接收到所关联的中间层服务发送的投票信息后,在本地将同意执行提案的数量加1,并将所述投票信息中的同意标记广播给联盟链中的其他节点;

接收联盟链中的其他节点发送的所述投票信息,对所有已接收的所述投票信息中的同意标记进行去重处理,根据去重结果更新本地同意执行提案的数量;

在本地同意执行提案的数量与联盟链中间层服务的数量一致的情况下,确定投票通过;

将本地所述密码算法切换提案的状态设置为投票已通过。

在一些实施例中,所述将当前密码算法切换为目标密码算法,包括:

将本地配置文件中的密码算法配置为所述目标密码算法,并对应更新内存中密码算法的配置值;

将本地配置文件中的私钥名修改为所述目标密码算法的私钥名,并对应更新内存中私钥的目录路径;

将本地配置文件中每个节点以及中间层服务的验证证书路径,并对应更新内存中验证证书的目录路径;

将本地所述密码算法切换提案的状态设置为已执行。

第二方面,本发明实施例公开了一种联盟链密码算法切换方法,应用于联盟链中的中间层服务,所述方法包括:

响应于密码算法切换请求,校验本地存储的目标密码算法的密钥文件格式是否满足目标密码算法的要求;

在校验通过的情况下,生成密码算法切换提案,利用当前密码算法的私钥对所述密码算法切换提案进行签名,并将签名后的所述密码算法切换提案发送到已关联节点,使该节点与联盟链中的其他节点对所述密码算法切换提案进行共识验证;

在查询到所述密码算法切换提案共识验证通过的情况下,生成投票信息,并将所述投票信息发送到已关联节点,使该节点与联盟链中的其他节点对所述密码算法切换提案进行投票;

在查询到所述密码算法切换提案投票通过且当前时间达到所述密码切换提案中的执行时间时,暂停接收新交易,并在查询到联盟链中节点对密码算法切换完成后将所述当前密码算法切换为目标密码算法,在密码算法切换完成后继续接收新交易。

在一些实施例中,所述生成密码算法切换提案,包括:

响应于所述密码算法切换请求,生成包括提案唯一哈希、签名列表字段、同意票数量字段、提案状态字段以及计划执行时间的所述密码算法切换提案;

所述签名列表字段包括签名人字段、私钥签名字段、签名是否验证通过字段以及证书文件名字段。

在一些实施例中,所述方法还包括:

在将签名后的所述密码算法切换提案发送到已关联节点之后,循环查询已关联节点中所述密码算法切换提案的状态,在所述密码算法切换提案的状态为已验证待投票时,确定所述密码算法切换提案共识验证通过;

在将所述投票信息发送到已关联节点之后,循环查询已关联节点中所述密码算法切换提案的状态,在所述密码算法切换提案的状态为投票已通过时,确定所述密码算法切换提案投票通过;

循环查询已关联节点中所述密码算法切换提案的状态,在所述密码算法切换提案的状态为已执行时,确定节点对密码算法切换完成。

在一些实施例中,所述将所述当前密码算法切换为目标密码算法,包括:

将本地配置文件的密码算法配置为所述目标密码算法,并对应更新内存中密码算法的配置值;

将本地配置文件中的私钥名修改为所述目标密码算法的私钥名,并对应更新内存中私钥的目录路径。

第三方面,本发明实施例公开了一种联盟链密码算法切换装置,应用于联盟链中的节点,所述装置包括:

提案验证单元,用于在接收到所关联的中间层服务或联盟链中其他节点发送的密码算法切换提案的情况下,与联盟链中的其他节点对所述密码算法切换提案进行共识验证;

提案投票单元,用于在共识验证通过的情况下,接收所关联的中间层服务发送的投票信息,与联盟链中的其他节点对所述密码算法切换提案进行投票;

密码算法切换单元,用于在投票通过且当前时间达到所述密码算法切换提案中的执行时间时,暂停接收新交易,将当前密码算法切换为目标密码算法,在密码算法切换完成后继续接收新交易。

在一些实施例中,所述提案验证单元,包括:

签名验证子单元,用于与联盟链中的其他节点对所述密码算法切换提案的签名进行共识验证;

提案校验子单元,用于在对所述密码算法切换提案的签名共识验证通过的情况下,对所述密码算法切换提案进行校验;

提案状态设置子单元,用于在对所述密码算法切换提案校验通过的情况下将本地的所述密码算法切换提案的状态设置为已验证待投票,并将本地的所述密码算法切换提案的状态广播给联盟链中其他节点;

验证通过确定子单元,用于接收联盟链中其他节点发送的所述密码算法切换提案的状态,在接收到的所述密码算法切换提案的状态与本地的所述密码算法切换提案的状态都为已验证待投票的情况下,确定对所述密码算法切换提案的共识验证通过。

在一些实施例中,所述签名验证子单元,具体用于:

对所述密码算法切换提案的签名进行验证;

在验证通过的情况下,将所述密码算法切换提案存储在本地,并将本地的所述密码算法切换提案的状态设置为待验证;

利用所述当前密码算法的私钥对所述密码算法切换提案进行签名,并将签名后的所述密码算法切换提案广播给联盟链中其他节点;

接收所关联的中间层服务或联盟链中其他节点发送的更新提案,对本地所述密码算法切换提案中的签名进行更新,在检测到本地所述密码算法切换提案中的签名数量与联盟链中所有节点数量与中间层服务数量之和一致的情况下,确定对所述密码算法切换提案的签名共识验证通过,所述更新提案为联盟链中非发起方中间层服务在查询到所述密码算法切换提案的状态为待验证的情况下,将其所述当前密码算法的私钥签名追加到所述密码算法切换提案中得到的。

在一些实施例中,所述提案校验子单元,具体用于:

校验本地配置文件中节点标识列表中的节点标识与中间层服务标识列表中的中间层服务标识与本地所述当前密码算法的证书文件的文件名是否一一对应;

若一一对应,校验本地存储的所述当前密码算法的私钥和证书文件的格式是否满足所述当前密码算法的要求;

若满足,使用本地所述当前密码算法的证书文件依次校验所述密码算法切换提案中的签名;

若校验通过,确定对所述密码算法切换提案校验通过。

在一些实施例中,所述提案投票单元,具体用于:

在接收到所关联的中间层服务发送的投票信息后,在本地将同意执行提案的数量加1,并将所述投票信息中的同意标记广播给联盟链中的其他节点;

接收联盟链中的其他节点发送的所述投票信息,对所有已接收的所述投票信息中的同意标记进行去重处理,根据去重结果更新本地同意执行提案的数量;

在本地同意执行提案的数量与联盟链中间层服务的数量一致的情况下,确定投票通过;

将本地所述密码算法切换提案的状态设置为投票已通过。

在一些实施例中,所述密码算法切换单元,具体用于:

将本地配置文件中的密码算法配置为所述目标密码算法,并对应更新内存中密码算法的配置值;

将本地配置文件中的私钥名修改为所述目标密码算法的私钥名,并对应更新内存中私钥的目录路径;

将本地配置文件中每个节点以及中间层服务的验证证书路径,并对应更新内存中验证证书的目录路径;

将本地所述密码算法切换提案的状态设置为已执行。

第四方面,本发明实施例公开了一种联盟链密码算法切换装置,应用于联盟链中的中间层服务,所述装置包括:

密钥校验单元,用于响应于密码算法切换请求,校验本地存储的密钥文件格式是否满足目标密码算法的要求;

提案生成单元,用于在校验通过的情况下,生成密码算法切换提案,利用当前密码算法的私钥对所述密码算法切换提案进行签名,并将签名后的所述密码算法切换提案发送到已关联节点,使该节点与联盟链中的其他节点对所述密码算法切换提案进行共识验证;

投票生成单元,用于在查询到所述密码算法切换提案共识验证通过的情况下,生成投票信息,并将所述投票信息发送到已关联节点,使该节点与联盟链中的其他节点对所述密码算法切换提案进行投票;

密码算法切换单元,用于在查询到所述密码算法切换提案投票通过且当前时间达到所述密码切换提案中的执行时间时,暂停接收新交易,并在查询到联盟链中节点对密码算法切换完成后将所述当前密码算法切换为目标密码算法,在密码算法切换完成后继续接收新交易。

在一些实施例中,所述提案生成单元,具体用于:

响应于所述密码算法切换请求,生成包括提案唯一哈希、签名列表字段、同意票数量字段、提案状态字段以及计划执行时间的所述密码算法切换提案;

所述签名列表字段包括签名人字段、私钥签名字段、签名是否验证通过字段以及证书文件名字段。

在一些实施例中,所述装置还包括提案状态查询单元,具体用于:

在将签名后的所述密码算法切换提案发送到已关联节点之后,循环查询已关联节点中所述密码算法切换提案的状态,在所述密码算法切换提案的状态为已验证待投票时,确定所述密码算法切换提案共识验证通过。

在将所述投票信息发送到已关联节点之后,循环查询已关联节点中所述密码算法切换提案的状态,在所述密码算法切换提案的状态为投票已通过时,确定所述密码算法切换提案投票通过;

循环查询已关联节点中所述密码算法切换提案的状态,在所述密码算法切换提案的状态为已执行时,确定节点对密码算法切换完成。

在一些实施例中,所述密码算法切换单元,具体用于:

将本地配置文件的密码算法配置为所述目标密码算法,并对应更新内存中密码算法的配置值;

将本地配置文件中的私钥名修改为所述目标密码算法的私钥名,并对应更新内存中私钥的目录路径。

第五方面,本发明实施例公开了一种联盟链系统,包括:多个中间层服务,每个所述中间层服务关联至少一个节点;

所述节点,用于执行如第一方面中任一实现方式描述的联盟链密码算法切换方法;

所述中间层服务,用于执行如第二方面中任一实现方式描述的联盟链密码算法切换方法。

相对于现有技术,本发明的有益效果如下:

本发明公开的一种联盟链密码算法切换方法、装置及联盟链系统,联盟链中的节点在接收到密码算法切换提案的情况下,对密码算法切换提案进行共识验证,在共识验证通过的情况下对密码算法切换提案进行投票,在投票通过且达到执行时间的情况下,暂停接收新交易自动将当前密码算法切换为目标密码算法,在密码算法切换完成后再继续接收新交易。整个密码算法切换过程中不需要人工参与全部自动化执行,解决了目前联盟链密码算法切换时,需要多机构线下协调、服务启停和人工操作容易导致的系统无法正常运行的问题,提高了联盟链密码算法切换效率。

附图说明

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

图1为本发明实施例公开的一种联盟链结构示意图;

图2为本发明实施例公开的一种应用于联盟链中节点的联盟链密码算法切换方法的流程示意图;

图3为本发明实施例公开的一种应用于联盟链中节点的联盟链密码算法切换方法的部分方法流程示意图;

图4为本发明实施例公开的一种应用于联盟链中中间层服务的联盟链密码算法切换方法的流程示意图;

图5为本发明实施例公开的一种应用于联盟链中节点的联盟链密码算法切换装置的结构示意图;

图6本发明实施例公开的一种应用于联盟链中中间层服务的联盟链密码算法切换装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明提供了一种联盟链密码算法切换方法、装置及联盟链系统,联盟链系统包括由各个联盟链成员在底层区块链节点与业务系统之间架设的中间层服务,每个联盟链成员分别对应一个中间层服务,每个中间层服务关联至少一个节点。联盟链系统会在以下2个环节使用密码算法:

(1)区块链交易(transaction)发送过程:中间层服务向区块链节点发送交易时,需要使用私钥对交易签名,相应的,节点使用公钥证书验证签名。

(2)对交易共识确认的过程:联盟链中的节点使用各自私钥进行签名后发送给其他节点,其他节点需要使用对应公钥证书进行签名验证。

因此,每个中间层服务以及每个节点分别准备一个私钥及其对应的公钥证书,私钥和公钥证书可借助自建证书授权机构(Certificate Authority,CA)或第三方CA服务生成,本发明不做具体限定。

以联盟链系统包括中间层服务A~C以及节点A~C为例,全套密钥和证书文件如下表:

以上文件需分别存放至中间层服务和节点的安装目录中,存放关系如下:

若需要切换密码算法,如将国际算法切换为国密算法,则需要将上述国际算法全套密钥和证书文件切换为国密算法全套密钥和证书文件。

本发明联盟链中的节点在接收到密码算法切换提案的情况下,对密码算法切换提案进行共识验证,在共识验证通过的情况下对密码算法切换提案进行投票,在投票通过且达到执行时间的情况下,暂停接收新交易自动将当前密码算法切换为目标密码算法,在密码算法切换完成后再继续接收新交易。整个密码算法切换过程中不需要人工参与全部自动化执行,解决了目前联盟链密码算法切换时,需要多机构线下协调、服务启停和人工操作容易导致的系统无法正常运行的问题,提高了联盟链密码算法切换效率。

本实施例公开的一种联盟链密码算法切换方法,应用于联盟链中的节点,请参阅图2,该方法包括:

S101:在接收到所关联的中间层服务或联盟链中其他节点发送的密码算法切换提案的情况下,与联盟链中的其他节点对密码算法切换提案进行共识验证;

需要说明的是,在联盟链的任一联盟成员通过其中间层服务发起密码算法切换请求之后,该中间层服务校验本地存储的密钥文件格式是否满足目标密码算法,在校验通过的情况下,该中间层服务生成密码算法切换提案,并对其签名后发送到任意一个已关联节点。

也就是说,若本实施例的执行主体为接收到上述中间层服务所发送的密码算法切换提案的节点,则在接收到该密码算法切换提案后,与联盟链中的其他节点对当前密码算法切换提案进行共识验证;若本实施例的执行主体不是接收到上述中间层服务所发送的密码算法切换提案的节点,则在接收到联盟链中其他节点发送的密码算法切换提案后,与联盟链中的其他节点对当前密码算法切换提案进行共识验证。

密码算法切换提案包括:提案唯一哈希、签名列表字段、同意票数量字段、提案状态字段以及计划执行时间。

请参阅图3,S101中与联盟链中的其他节点对密码算法切换填进行共识验证,包括:

S201:与联盟链中的其他节点对密码算法切换提案的签名进行共识验证;

首先,对密码算法切换提案的签名进行验证,具体的,若密码算法切换提案是由中间层服务发送的,则密码算法切换提案中签名列表尾部的签名为该中间层服务的签名,则利用预先存储的该中间层服务的公钥证书对该签名进行验证;若密码算法切换提案是由联盟链中其他节点发送的,则密码算法切换提案中签名列表尾部的签名为该节点的签名,则利用预先存储的该节点的公钥证书对该签名进行验证。

然后,在验证通过的情况下,将密码算法切换提案存储在本地,将本地的密码算法切换提案的状态设置为待验证。利用当前密码算法的私钥对密码算法切换提案进行签名,并将签名后的密码算法切换提案广播给联盟链中的其他节点。

联盟链中其他节点与本实施例执行主体的操作一致,则每个节点分别都在本地存储了密码算法切换提案,密码算法切换提案中的签名列表中记录了发送密码算法切换提案的中间层服务的签名以及每个节点的签名,密码算法切换提案的状态都为待验证。

除发送密码算法切换提案的中间层服务之外,其他中间层服务会循环查询所关联节点本地的密码算法切换提案的状态,在密码算法切换提案的状态为待验证的情况下,中间层服务会对该密码算法切换提案进行签名,实现对密码算法切换提案更新,并通过更新提案接口,将更新提案发送到所关联节点。接收到更新提案的节点广播给联盟链中的其他节点,因此,联盟中的每个节点都会接收到所关联的中间层服务或联盟链中其他节点发送的更新提案,在本地的密码算法切换提案中增加更新提案中的追加签名,在检测到本地的密码算法切换提案中的签名数量与联盟链中所有节点数量与中间层服务数量之和一致的情况下,确定对密码算法切换提案的签名共识验证通过。

S202:在对密码算法切换提案的签名共识验证通过的情况下,对密码算法切换提案进行校验;

具体的,对密码算法切换提案进行校验的流程如下:

校验本地配置文件中节点标识列表中的节点标识与中间层服务标识列表中的中间层服务标识与本地当前密码算法的证书文件的文件名是否一一对应;

若一一对应,校验本地存储的当前密码算法的私钥和证书文件的格式是否满足当前密码算法的要求;

若满足,使用本地当前密码算法的证书文件依次校验密码算法切换提案中的签名;

若校验通过,确定对密码算法切换提案校验通过。

其中,配置文件和证书文件存放在节点本地,即节点部署在哪里,配置文件和证书文件就存放在哪里。通过以上校验,保证参与密码算法切换的联盟链节点的身份都是经过认证的。

另外,随着每次密码算法切换,配置文件中节点标识列表和中间层服务标识列表中的数据是动态变化的。

可以理解的是,若对配置文件校验未通过或对本地存储的目标密码算法的私钥和证书文件校验未通过或对密码算法切换提案中的签名校验未通过的情况下,对密码算法切换提案校验失败,将本地的密码算法切换提案的状态设置为验证未通过。

S203:在对密码算法切换提案校验通过的情况下将本地的密码算法切换提案的状态设置为已验证待投票,并将本地的密码算法切换提案的状态广播给联盟链中其他节点;

S204:接收联盟链中其他节点发送的密码算法切换提案的状态,在接收到的密码算法切换提案的状态与本地的密码算法切换提案的状态都为已验证待投票的情况下,确定对密码算法切换提案的共识验证通过。

可以理解的是,在接收到的密码算法切换提案的状态与本地的密码算法切换提案的状态都为已验证待投票的情况下,确定本节点以及其他节点都已经对密码算法切换提案验证通过,则确定对密码算法切换提案的共识验证通过。

S102:在共识验证通过的情况下,接收所关联的中间层服务发送的投票信息,与联盟链中的其他节点对密码算法切换提案进行投票;

需要说明的是,每个中间层服务循环查询所关联节点的本地密码算法切换提案的状态,在密码算法切换提案的状态为已验证待投票时,生成投票信息,并将投票信息发送到所关联节点,投票信息的结构如下:

节点在接收到所关联的中间层服务发送的投票信息后,在本地将同意执行提案confirmCount的数量加1,并将投票信息中的同意标记(即confirm=1)广播给联盟链中的其他节点,同时接收联盟链中的其他节点发送的投票信息,由于一个中间层服务可以关联一个或一个以上节点,因此,为了避免重复记录同一个中间层服务对应的同意标记,对所有已接收到投票信息中的同意标记进行去重处理,根据去重结果更新本地同意执行提案的数量confirmCount。

在本地同意执行提案的数量confirmCount与联盟链中间层服务的数量一致的情况下,表示所有联盟链成员均同意提案,确定投票通过,将本地密码算法切换提案的状态设置为投票已通过。

若本地同意执行提案的数量confirmCount与联盟链中间层服务的数量不一致的情况下,表示并不是所有联盟链成员均同意提案,确定投票未通过,将本地密码算法切换提案的状态设置为投票未通过。

S103:在投票通过且当前时间达到密码算法切换提案中的执行时间时,暂停接收新交易,将当前密码算法切换为目标密码算法,在密码算法切换完成后继续接收新交易。

密码算法切换提案中规定了执行时间,在投票通过且当前时间达到密码算法切换提案中的执行时间时,所有节点同时暂停接收新交易,执行密码算法切换。

具体的,将本地配置文件中的密码算法配置为目标密码算法,并对应更新内存中密码算法的配置值,将本地配置文件中的私钥名修改为目标密码算法的私钥名,并对应更新内存中私钥的目录路径,将本地配置文件中每个节点以及中间层服务的验证证书路径,并对应更新内存中验证证书的目录路径,将本地密码算法切换提案的状态设置为已执行。若在切换过程中检测出异常,则将本地密码算法切换提案的状态设置为执行异常。

需要说明的是,目标密码算法的全套密钥和证书文件可以在发起密码算法切换之前由各个联盟链成员将其上传到各自的中间层服务以及节点的服务器中,也可以在联盟链系统的初始化阶段由各个联盟链成员将其上传到各自的中间层服务以及节点的服务器中,本发明不做具体限定。

基于上述实施例公开的一种应用于联盟链中的节点的联盟链密码算法切换方法,本实施例对应公开了一种应用于联盟链中的中间层服务的联盟链密码算法切换方法,请参阅图4,该方法包括:

S301:响应于密码算法切换请求,校验本地存储的目标密码算法的密钥文件格式是否满足目标密码算法的要求;

具体的,密码算法切换请求是有中间层服务对应的联盟链成员业务系统发送的,密码算法切换请求包括目标密码算法和执行时间,即需要由当前密码算法切换到目标密码算法。

在校验未通过的情况下,则向联盟链成员业务系统反馈校验失败信息。

本地存储的目标密码算法的密钥文件可以在发起密码算法切换之前由各个联盟链成员将其上传到各自的中间层服务以及节点的服务器中,也可以在联盟链系统的初始化阶段由各个联盟链成员将其上传到各自的中间层服务以及节点的服务器中,本发明不做具体限定。

S302:在校验通过的情况下,生成密码算法切换提案,利用当前密码算法的私钥对密码算法切换提案进行签名,并将签名后的密码算法切换提案发送到已关联节点,使该节点与联盟链中的其他节点对密码算法切换提案进行共识验证;

在校验通过的情况下,根据上述密码算法切换请求生成密码算法切换提案,密码算法切换提案一种可选的字段结构如下:

其中,通过设计提案状态,便于中间层业务随时查询节点对密码算法切换提案的处理进度和状态。

节点与联盟链中的其他节点对密码算法切换提案进行共识验证的过程,请参阅上述实施例中S101对应的描述,这里不再赘述。

S303:在查询到密码算法切换提案共识验证通过的情况下,生成投票信息,并将投票信息发送到已关联节点,使该节点与联盟链中的其他节点对密码算法切换提案进行投票;

具体的,在将签名后的密码算法切换提案发送到已关联节点之后,循环查询已关联节点中密码算法切换提案的状态,在密码算法切换提案的状态为已验证待投票时,确定密码算法切换提案共识验证通过。

节点与联盟链中的其他节点对密码算法切换提案进行投票的过程,请参阅上述实施例中S102对应的描述,这里不再赘述。

S304:在查询到密码算法切换提案投票通过且当前时间达到密码切换提案中的执行时间时,暂停接收新交易,并在查询到联盟链中节点对密码算法切换完成后将当前密码算法切换为目标密码算法,在密码算法切换完成后继续接收新交易。

具体的,在将投票信息发送到已关联节点之后,循环查询已关联节点中密码算法切换提案的状态,在密码算法切换提案的状态为投票已通过时,确定密码算法切换提案投票通过。

循环查询已关联节点中密码算法切换提案的状态,在密码算法切换提案的状态为已执行时,确定节点对密码算法切换完成。从而将当前密码算法切换为目标密码算法,包括:

将本地配置文件的密码算法配置为目标密码算法,并对应更新内存中密码算法的配置值;

将本地配置文件中的私钥名修改为目标密码算法的私钥名,并对应更新内存中私钥的目录路径。

可见,本实施例提供的一种联盟链密码算法切换方法,联盟链中的节点在接收到密码算法切换提案的情况下,对密码算法切换提案进行共识验证,在共识验证通过的情况下对密码算法切换提案进行投票,在投票通过且达到执行时间的情况下,暂停接收新交易自动将当前密码算法切换为目标密码算法,在密码算法切换完成后再继续接收新交易。整个密码算法切换过程中不需要人工参与全部自动化执行,解决了目前联盟链密码算法切换时,需要多机构线下协调、服务启停和人工操作容易导致的系统无法正常运行的问题,提高了联盟链密码算法切换效率。

基于上述实施例公开了一种应用于联盟链中节点的联盟链密码算法切换方法,本实施例对应公开了一种联盟链密码算法切换装置,应用于联盟链中的节点,请参阅图5,该装置包括:

提案验证单元501,用于在接收到所关联的中间层服务或联盟链中其他节点发送的密码算法切换提案的情况下,与联盟链中的其他节点对所述密码算法切换提案进行共识验证;

提案投票单元502,用于在共识验证通过的情况下,接收所关联的中间层服务发送的投票信息,与联盟链中的其他节点对所述密码算法切换提案进行投票;

密码算法切换单元503,用于在投票通过且当前时间达到所述密码算法切换提案中的执行时间时,暂停接收新交易,将当前密码算法切换为目标密码算法,在密码算法切换完成后继续接收新交易。

在一些实施例中,所述提案验证单元501,包括:

签名验证子单元,用于与联盟链中的其他节点对所述密码算法切换提案的签名进行共识验证;

提案校验子单元,用于在对所述密码算法切换提案的签名共识验证通过的情况下,对所述密码算法切换提案进行校验;

提案状态设置子单元,用于在对所述密码算法切换提案校验通过的情况下将本地的所述密码算法切换提案的状态设置为已验证待投票,并将本地的所述密码算法切换提案的状态广播给联盟链中其他节点;

验证通过确定子单元,用于接收联盟链中其他节点发送的所述密码算法切换提案的状态,在接收到的所述密码算法切换提案的状态与本地的所述密码算法切换提案的状态都为已验证待投票的情况下,确定对所述密码算法切换提案的共识验证通过。

在一些实施例中,所述签名验证子单元,具体用于:

对所述密码算法切换提案的签名进行验证;

在验证通过的情况下,将所述密码算法切换提案存储在本地,并将本地的所述密码算法切换提案的状态设置为待验证;

利用所述当前密码算法的私钥对所述密码算法切换提案进行签名,并将签名后的所述密码算法切换提案广播给联盟链中其他节点;

接收所关联的中间层服务或联盟链中其他节点发送的更新提案,对本地所述密码算法切换提案中的签名进行更新,在检测到本地所述密码算法切换提案中的签名数量与联盟链中所有节点数量与中间层服务数量之和一致的情况下,确定对所述密码算法切换提案的签名共识验证通过,所述更新提案为联盟链中非发起方中间层服务在查询到所述密码算法切换提案的状态为待验证的情况下,将其所述当前密码算法的私钥签名追加到所述密码算法切换提案中得到的。

在一些实施例中,所述提案校验子单元,具体用于:

校验本地配置文件中节点标识列表中的节点标识与中间层服务标识列表中的中间层服务标识与本地所述当前密码算法的证书文件的文件名是否一一对应;

若一一对应,校验本地存储的所述当前密码算法的私钥和证书文件的格式是否满足所述当前密码算法的要求;

若满足,使用本地所述当前密码算法的证书文件依次校验所述密码算法切换提案中的签名;

若校验通过,确定对所述密码算法切换提案校验通过。

在一些实施例中,所述提案投票单元502,具体用于:

在接收到所关联的中间层服务发送的投票信息后,在本地将同意执行提案的数量加1,并将所述投票信息中的同意标记广播给联盟链中的其他节点;

接收联盟链中的其他节点发送的所述投票信息,对所有已接收的所述投票信息中的同意标记进行去重处理,根据去重结果更新本地同意执行提案的数量;

在本地同意执行提案的数量与联盟链中间层服务的数量一致的情况下,确定投票通过;

将本地所述密码算法切换提案的状态设置为投票已通过。

在一些实施例中,所述密码算法切换单元503,具体用于:

将本地配置文件中的密码算法配置为所述目标密码算法,并对应更新内存中密码算法的配置值;

将本地配置文件中的私钥名修改为所述目标密码算法的私钥名,并对应更新内存中私钥的目录路径;

将本地配置文件中每个节点以及中间层服务的验证证书路径,并对应更新内存中验证证书的目录路径;

将本地所述密码算法切换提案的状态设置为已执行。

基于上述实施例公开了一种应用于联盟链中的中间层服务的联盟链密码算法切换方法,本实施例对应公开了一种联盟链密码算法切换装置,应用于联盟链中的中间层服务,请参阅图6,该装置包括:

密钥校验单元601,用于响应于密码算法切换请求,校验本地存储的密钥文件格式是否满足目标密码算法的要求;

提案生成单元602,用于在校验通过的情况下,生成密码算法切换提案,利用当前密码算法的私钥对所述密码算法切换提案进行签名,并将签名后的所述密码算法切换提案发送到已关联节点,使该节点与联盟链中的其他节点对所述密码算法切换提案进行共识验证;

投票生成单元603,用于在查询到所述密码算法切换提案共识验证通过的情况下,生成投票信息,并将所述投票信息发送到已关联节点,使该节点与联盟链中的其他节点对所述密码算法切换提案进行投票;

密码算法切换单元604,用于在查询到所述密码算法切换提案投票通过且当前时间达到所述密码切换提案中的执行时间时,暂停接收新交易,并在查询到联盟链中节点对密码算法切换完成后将所述当前密码算法切换为目标密码算法,在密码算法切换完成后继续接收新交易。

在一些实施例中,所述提案生成单元602,具体用于:

响应于所述密码算法切换请求,生成包括提案唯一哈希、签名列表字段、同意票数量字段、提案状态字段以及计划执行时间的所述密码算法切换提案;

所述签名列表字段包括签名人字段、私钥签名字段、签名是否验证通过字段以及证书文件名字段。

在一些实施例中,所述装置还包括提案状态查询单元,具体用于:

在将签名后的所述密码算法切换提案发送到已关联节点之后,循环查询已关联节点中所述密码算法切换提案的状态,在所述密码算法切换提案的状态为已验证待投票时,确定所述密码算法切换提案共识验证通过。

在将所述投票信息发送到已关联节点之后,循环查询已关联节点中所述密码算法切换提案的状态,在所述密码算法切换提案的状态为投票已通过时,确定所述密码算法切换提案投票通过;

循环查询已关联节点中所述密码算法切换提案的状态,在所述密码算法切换提案的状态为已执行时,确定节点对密码算法切换完成。

在一些实施例中,所述密码算法切换单元604,具体用于:

将本地配置文件的密码算法配置为所述目标密码算法,并对应更新内存中密码算法的配置值;

将本地配置文件中的私钥名修改为所述目标密码算法的私钥名,并对应更新内存中私钥的目录路径。

本实施例还公开了一种联盟链系统,包括:多个中间层服务,每个中间层服务关联至少一个节点。

其中,节点用于执行如下联盟链密码算法切换方法:

在接收到所关联的中间层服务或联盟链中其他节点发送的密码算法切换提案的情况下,与联盟链中的其他节点对所述密码算法切换提案进行共识验证;

在共识验证通过的情况下,接收所关联的中间层服务发送的投票信息,与联盟链中的其他节点对所述密码算法切换提案进行投票;

在投票通过且当前时间达到所述密码算法切换提案中的执行时间时,暂停接收新交易,将当前密码算法切换为目标密码算法,在密码算法切换完成后继续接收新交易。

进一步,所述与联盟链中的其他节点对所述密码算法切换提案进行共识验证,包括:

与联盟链中的其他节点对所述密码算法切换提案的签名进行共识验证;

在对所述密码算法切换提案的签名共识验证通过的情况下,对所述密码算法切换提案进行校验;

在对所述密码算法切换提案校验通过的情况下将本地的所述密码算法切换提案的状态设置为已验证待投票,并将本地的所述密码算法切换提案的状态广播给联盟链中其他节点;

接收联盟链中其他节点发送的所述密码算法切换提案的状态,在接收到的所述密码算法切换提案的状态与本地的所述密码算法切换提案的状态都为已验证待投票的情况下,确定对所述密码算法切换提案的共识验证通过。

进一步,所述与联盟链中的其他节点对所述密码算法切换提案的签名进行共识验证,包括:

对所述密码算法切换提案的签名进行验证;

在验证通过的情况下,将所述密码算法切换提案存储在本地,并将本地的所述密码算法切换提案的状态设置为待验证;

利用所述当前密码算法的私钥对所述密码算法切换提案进行签名,并将签名后的所述密码算法切换提案广播给联盟链中其他节点;

接收所关联的中间层服务或联盟链中其他节点发送的更新提案,对本地所述密码算法切换提案中的签名进行更新,在检测到本地所述密码算法切换提案中的签名数量与联盟链中所有节点数量与中间层服务数量之和一致的情况下,确定对所述密码算法切换提案的签名共识验证通过,所述更新提案为联盟链中非发起方中间层服务在查询到所述密码算法切换提案的状态为待验证的情况下,将其所述当前密码算法的私钥签名追加到所述密码算法切换提案中得到的。

进一步,对所述密码算法切换提案进行校验,包括:

校验本地配置文件中节点标识列表中的节点标识与中间层服务标识列表中的中间层服务标识与本地所述当前密码算法的证书文件的文件名是否一一对应;

若一一对应,校验本地存储的所述当前密码算法的私钥和证书文件的格式是否满足所述当前密码算法的要求;

若满足,使用本地所述当前密码算法的证书文件依次校验所述密码算法切换提案中的签名;

若校验通过,确定对所述密码算法切换提案校验通过。

进一步,所述与联盟链中的其他节点对所述密码算法切换提案进行投票,包括:

在接收到所关联的中间层服务发送的投票信息后,在本地将同意执行提案的数量加1,并将所述投票信息中的同意标记广播给联盟链中的其他节点;

接收联盟链中的其他节点发送的所述投票信息,对所有已接收的所述投票信息中的同意标记进行去重处理,根据去重结果更新本地同意执行提案的数量;

在本地同意执行提案的数量与联盟链中间层服务的数量一致的情况下,确定投票通过;

将本地所述密码算法切换提案的状态设置为投票已通过。

进一步,所述将当前密码算法切换为目标密码算法,包括:

将本地配置文件中的密码算法配置为所述目标密码算法,并对应更新内存中密码算法的配置值;

将本地配置文件中的私钥名修改为所述目标密码算法的私钥名,并对应更新内存中私钥的目录路径;

将本地配置文件中每个节点以及中间层服务的验证证书路径,并对应更新内存中验证证书的目录路径;

将本地所述密码算法切换提案的状态设置为已执行。

中间层服务用于执行如下联盟链密码算法切换方法:

响应于密码算法切换请求,校验本地存储的目标密码算法的密钥文件格式是否满足目标密码算法的要求;

在校验通过的情况下,生成密码算法切换提案,利用当前密码算法的私钥对所述密码算法切换提案进行签名,并将签名后的所述密码算法切换提案发送到已关联节点,使该节点与联盟链中的其他节点对所述密码算法切换提案进行共识验证;

在查询到所述密码算法切换提案共识验证通过的情况下,生成投票信息,并将所述投票信息发送到已关联节点,使该节点与联盟链中的其他节点对所述密码算法切换提案进行投票;

在查询到所述密码算法切换提案投票通过且当前时间达到所述密码切换提案中的执行时间时,暂停接收新交易,并在查询到联盟链中节点对密码算法切换完成后将所述当前密码算法切换为目标密码算法,在密码算法切换完成后继续接收新交易。

进一步,所述生成密码算法切换提案,包括:

响应于所述密码算法切换请求,生成包括提案唯一哈希、签名列表字段、同意票数量字段、提案状态字段以及计划执行时间的所述密码算法切换提案;

所述签名列表字段包括签名人字段、私钥签名字段、签名是否验证通过字段以及证书文件名字段。

进一步,所述方法还包括:

在将签名后的所述密码算法切换提案发送到已关联节点之后,循环查询已关联节点中所述密码算法切换提案的状态,在所述密码算法切换提案的状态为已验证待投票时,确定所述密码算法切换提案共识验证通过。

在将所述投票信息发送到已关联节点之后,循环查询已关联节点中所述密码算法切换提案的状态,在所述密码算法切换提案的状态为投票已通过时,确定所述密码算法切换提案投票通过;

循环查询已关联节点中所述密码算法切换提案的状态,在所述密码算法切换提案的状态为已执行时,确定节点对密码算法切换完成。

进一步,所述将所述当前密码算法切换为目标密码算法,包括:

将本地配置文件的密码算法配置为所述目标密码算法,并对应更新内存中密码算法的配置值;

将本地配置文件中的私钥名修改为所述目标密码算法的私钥名,并对应更新内存中私钥的目录路径。

本实施例公开的一种联盟链系统,联盟链中的节点在接收到密码算法切换提案的情况下,对密码算法切换提案进行共识验证,在共识验证通过的情况下对密码算法切换提案进行投票,在投票通过且达到执行时间的情况下,暂停接收新交易自动将当前密码算法切换为目标密码算法,在密码算法切换完成后再继续接收新交易。整个密码算法切换过程中不需要人工参与全部自动化执行,解决了目前联盟链密码算法切换时,需要多机构线下协调、服务启停和人工操作容易导致的系统无法正常运行的问题,提高了联盟链密码算法切换效率。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。

上述各个实施例之间可任意组合,对所公开的实施例的上述说明,本说明书中各实施例中记载的特征可以相互替换或者组合,使本领域专业技术人员能够实现或使用本申请。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般当前理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的当前理和新颖特点相一致的最宽的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号