区块链网络中可信节点的管理方法,节点及存储介质
技术领域
本公开涉及区块链领域,具体地,涉及一种区块链网络中可信节点的管理方法,节点及存储介质。
背景技术
区块链作为一种通过去中心化和去信任化的方式集体维护一个可靠数据库的技术,新节点在准备访问区块链时,不会去对该区块链上的节点进行认证,因而新节点无法获知区块链上的节点是否是可信任的。然而,在一些特定的使用场景中,为了实现节点间的安全互访,需要新节点对区块链上的节点进行认证以确保这些节点是可信任的。而现有的身份认证方式,通常需要双方各自找一个可信任的第三方CA机构为各自颁发一张数字身份证书,双方通过互传各自的数字身份证书来认证对方身份。
也就是说,目前的区块链网络中没有去中心化的对节点可信性进行背书的方式,在需要对节点可信性进行验证时,仍然需要采用现有的身份认证方式,从而削弱了区块链非中心化的优势。
发明内容
本公开的主要目的是提供一种区块链网络中可信节点的管理方法,节点及存储介质,以解决现有区块链网络无法去中心化的对可信节点进行背书的问题。
为了实现上述目的,本公开实施例第一方面提供一种区块链网络中可信节点的管理方法,所述方法包括:
目标节点向所述区块链网络中的可信节点发送背书请求;
接收所述可信节点发送的背书响应,所述背书响应包括对所述目标节点的可信性进行背书的背书信息;
将所述背书信息写入所述区块链网络的背书智能合约中,所述背书智能合约用于所述区块链网络中的任意节点查询所述区块链网络当前的可信节点。
本公开实施例第二方面一种区块链网络中可信节点的管理方法,应用于区块链网络中的可信节点,所述区块链网络的背书智能合约中具有所述可信节点的背书信息,所述方法包括:
接收第一目标节点发送的背书请求;
根据所述背书请求对所述第一目标节点进行背书认证;
在对所述第一目标节点进行的背书认证成功后,生成为所述第一目标节点的可信性进行背书的背书信息,其中,对所述第一目标节点的背书认证成功表明所述第一目标节点具有接入所述区块链网络作为可信节点的权限;
向所述第一目标节点发送背书响应,所述背书响应包括所述背书信息。
本公开实施例第三方面提供一种节点,包括:
发送模块,用于向区块链网络中的可信节点发送背书请求;
接收模块,用于接收所述可信节点发送的背书响应,所述背书响应包括对所述节点的可信性进行背书的背书信息;
合约写入模块,用于将所述背书信息写入所述区块链网络的背书智能合约中,所述背书智能合约用于所述区块链网络中的任意节点查询所述区块链网络当前的可信节点。
本公开实施例第四方面提供另一种节点,所述区块链网络的背书智能合约中具有所述节点作为可信节点的背书信息,所述节点包括:
第一接收模块,用于接收第一目标节点发送的背书请求;
第一背书认证模块,用于根据所述背书请求对所述第一目标节点进行背书认证;
生成模块,用于在所述背书认证模块对所述第一目标节点进行的背书认证成功后,生成为所述第一目标节点的可信性进行背书的背书信息,其中,对所述第一目标节点的背书认证成功表明所述第一目标节点具有接入所述区块链网络作为可信节点的权限;
第一发送模块,用于向所述第一目标节点发送背书响应,所述背书响应包括所述背书信息。
本公开实施例第五方面提供一种非临时性计算机可读存储介质,所述非临时性计算机可读存储介质中包括一个或多个程序,所述一个或多个程序用于执行第一方面所述的方法。
本公开实施例第六方面提供又一种节点,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现第一方面所述方法的步骤。
本公开实施例第七方面提供一种非临时性计算机可读存储介质,所述非临时性计算机可读存储介质中包括一个或多个程序,所述一个或多个程序用于执行第二方面所述的方法。
本公开实施例第八方面提供一种节点,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现第二方面所述方法的步骤。
采用上述技术方案,至少能够达到以下技术效果:
首先,智能合约是写入区块链的自动执行的合约代码,区块链技术的去中心化特性,能够避免中心化因素对合约正常公正执行的影响。采用本公开提供的技术方案,通过区块链网络中已有的可信节点,例如管理员预置的默认可信节点,或者是已经得到默认可信节点的背书的其他可信节点,生成新的可信节点的背书信息,并且,每一可信节点获取到自身的背书信息后,将背书信息写入背书智能合约,通过背书智能合约对每一可信节点的背书信息进行管理,该背书智能合约对区块链网络中的每一节点均是透明的。在后续需要对任一节点进行可信性验证时,相当于是由背书智能合约对区块链网络中的节点的可信性进行背书,避免了在区块链网络中采用一中心化的节点统一对可信节点的背书信息进行管理,解决现有区块链网络无法去中心化的对可信节点进行背书的问题。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本公开一示例性实施例的一种实施环境的示意图;
图2是本公开一示例性实施例示出的一种区块链网络中可信节点的管理方法的流程示意图;
图3是基于图1所示的实施环境实施的一种区块链网络中可信节点的管理方法的流程示意图;
图4是本公开一示例性实施例示出的另一种区块链网络中可信节点的管理方法的流程示意图;
图5是本公开一示例性实施例示出的一种新节点在请求接入区块链网络过程中的可信节点管理方法的流程示意图;
图6是本公开一示例性实施例示出的一种新节点选择默认可信节点请求接入区块链网络的流程示意图;
图7是本公开一示例性实施例示出的一种新节点选择默认可信节点以外的节点请求接入区块链网络的流程示意图;
图8是本公开一示例性实施例示出的一种节点的结构示意图;
图9是本公开一示例性实施例示出的另一种节点的结构示意图;
图10是本公开一示例性实施例示出的又一种节点的结构示意图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1是根据本公开一示例性实施例示出的实施环境示意图。如图1所示,该实施环境可以包括:由若干节点组成的区块链网络10和待接入该区块链网络10的新节点20。其中,默认可信节点11、参与节点12、第一管理员13和第二管理员14分别为区块链网络10中的节点。默认可信节点11是预置到区块链网络10中的可信节点,参与节点22可以包括默认可信节点11的对等节点(即区块链网络10中与默认可信节点11建立P2P连接的节点)以及子对等节点(即对等节点的对等节点)。第一管理员13可以对默认可信节点11和参与节点12进行部署;第二管理员14可对应与参与区块链网络10的某个机构,其可对接入区块链网络10的新节点进行控制,例如将允许接入区块链网络10的新节点20的账户信息和许可信息等写入区块链中,以及在新节点20中预置默认可信节点11的节点信息,以便新节点20向默认可信节点发起用于请求接入区块链网络10的接入请求,或者是向默认可信节点11请求获取区块链网络10中的可信节点信息,以建立自身的可信节点列表。
可以理解的是,图1所示的实施环境仅用于示意本公开实施例提供的方法,并不构成对本公开实施例的限制。例如,第一管理员13可在区块链网络10中部署一个或多个默认可信节点11以及多个参与节点12,本公开对此不做限定。
如图2所示,本公开一示例性实施例示出的一种区块链网络中可信节点的管理方法,该方法可以应用于待接入区块链网络中的新节点,例如图1所示的新节点20,还可以应用于已经接入区块链网络,但是背书信息失效或者即将失效的节点,例如图1所示的参与节点12。该方法包括:
S21、目标节点向区块链网络中的可信节点发送背书请求。
值得说明的是,该目标节点可以是需要作为区块链网络中的可信节点的任一节点,是否作为可信节点具体可以根据区块链网络中为各个节点配置的权限决定。例如,在图1所示的实施场景下,该目标节点可以是待接入区块链网络中作为可信节点的新节点20,也可以是已经接入区块链网络的参与节点12。其中,区块链网络在初始化时,可以预置有多个可信节点,之后新加入节点可以通过申请已有的可信节点的背书,成为新的可信节点,步骤S21中所述的可信节点即可以为管理员预先配置的默认可信节点,也可以是区块链网络初始化后接入区块链网络且已经获得可信性背书的其他可信节点。
应理解的是,并非区块链网络中的所有节点均需要作为可信节点,对于一个待加入区块链网络中的新节点,该新节点可以从默认可信节点获取到区块链网络的可信节点列表,并从可信节点列表选择一可信节点接入区块链网络,但新接入的节点不一定需要进一步获得背书信息作为新的可信节点,具体可以根据实际业务配置,例如区块链网络中非可信节点具有限制权限,可信节点具有全部权限。并且,可信节点的背书信息也可以设定有效期,使得节点在某一业务阶段内具备可信,背书信息有效期到期后,节点可以重新执行本方法步骤获取新的背书信息。
S22、接收可信节点发送的背书响应,该背书响应包括对目标节点的可信性进行背书的背书信息。
在具体实施时,可信节点收到背书请求后,可以先对目标节点的身份进行认证,认证通过后,生成为目标节点可信性进行背书的背书信息。可选地,目标节点和可信节点之间可以进行双向认证,即,背书请求包括目标节点的签名信息,背书响应包括可信节点的签名信息,双方通过签名认证确定对方的身份是否可信。
并且,该背书信息具体可以根据业务需求添加不同的信息,例如,背书有效期,身份权限有效期,该目标节点的IP(Internet Protocol,网络互连协议)地址,该目标节点服务的地域信息,在某些特定的场景下,还可以包括传统的CA(Certificate Authority,认证授权)证书等。
S23、将该背书信息写入区块链网络的背书智能合约中,该背书智能合约用于区块链网络中的任意节点查询该区块链网络当前的可信节点。
具体地,目标节点接收到背书响应时,可以先根据所述背书响应中所述可信节点的签名信息对所述可信节点进行签名认证。在所述签名认证成功后,再将所述背书信息记录至所述目标节点本地,并将所述背书信息写入所述区块链网络的背书智能合约中。
本领域技术人员应该理解,智能合约是写入区块链的自动执行的合约代码,区块链技术的去中心化特性,能够避免中心化因素对合约正常公正执行的影响。本公开实施例采用上述方法,通过区块链网络中已有的可信节点,例如管理员预置的默认可信节点,或者是已经得到默认可信节点的背书的其他可信节点,生成新的可信节点的背书信息,并且,每一可信节点获取到自身的背书信息后,将背书信息写入背书智能合约,通过背书智能合约对每一可信节点的背书信息进行管理,该背书智能合约对区块链网络中的每一节点均是透明的。例如,为节点可信性进行背书的背书信息包括背书有效期,身份权限有效期,则该背书智能合约在背书有效期到期时,可以自动将该节点的可信性失效,在某一权限有效期到期时,可以自动移除该节点具有的该权限,全程公开透明可追溯查询,相当于是由背书智能合约对区块链网络中的节点的可信性进行背书,避免了在区块链网络中采用一中心化的节点统一对可信节点的背书信息进行管理,解决现有区块链网络无法去中心化的对可信节点进行背书的问题。
在本公开实施例的一种可能的实现方式中,目标节点作为待接入区块链网络的新节点,步骤S11可以是,所述目标节点初始在接入所述区块链网络时,向区块链网络中默认可信节点发送所述背书请求。其中,默认可信节点是管理员预置的可信节点,默认可信节点预先配置有允许接入所述区块链网络的至少一个节点的权限信息,目标节点预置有默认可信节点的节点信息,以便目标节点根据该节点信息发起该背书请求。这样,步骤S22中的背书响应即为默认可信节点对目标节点进行背书认证成功后发送给所述目标节点的。
在本公开实施例的另一种可能的实现方式中,该目标节点可以是已经接入区块链网络中的节点,步骤S21可以是,目标节点检测背书智能合约中自身的背书信息是否失效,并在确定背书智能合约中该目标节点自身的背书信息失效或者即将失效(例如,距离背书有效期到期时限不到10分钟)时,向区块链网络中的可信节点发送所述背书请求。在此种情况下,所述区块链网络中的可信节点可以为管理员预置的默认可信节点,也可以是从所述背书智能合约中查询得到的所述区块链网络当前有效的可信节点。
具体地,所述目标节点可以周期性的检测所述背书智能合约中自身的背书信息是否失效;和/或,在接收到新节点发送的请求接入所述区块链网络的接入请求时,检测所述背书智能合约中自身的背书信息是否失效,在此种情况下,若该目标节点在检测到自身的背书信息已经失效时或者即将失效,可以拒绝响应新节点发送的接入请求,或者暂停响应。并向可信节点获取新的背书信息,并利用该新的背书信息在背书智能合约中更新自身的背书信息。
值得说明的是,周期性的背书更新可以提高作为接入节点提供服务的可信节点的性能,比如双向认证挑战时可以直接提供已有背书,而不用临时去其他可信节点申请。
为了使本领域技术人员更加理解本公开实施例提供的技术方案,下面以图1所示的区块链网络10为例,对本公开实施例提供的区块链网络中可信节点的管理方法进行说明。参照图3,包括:
S31、第一管理员13部署区块链网络中的默认可信节点11。
具体地,在默认可信节点11中配置允许哪些节点可以参与当前的区块链网络,并为每一参与节点在区块链上设置相应的接入许可以及相关权限。
S32、第一管理员13部署区块链网络中的参与节点12。
具体地,在参与节点12中预置默认可信节点的节点信息,便于参与节点12向默认可信节点12发起连接请求。
S33、参与节点12向默认可信节点11发送背书请求。
具体地,该背书信息可以根据业务定制。可选地,该背书请求可以包括参与节点12的签名信息,以便进行双向挑战认证,保证节点间的安全访问。
S34、默认可信节点11确定该参与节点12具有接入区块链网络的许可且具有作为可信节点的权限。
具体地,第一管理员13可以在区块链中预先写入参与节点12的接入许可以及相关权限,这样,默认可信节点11在接收到任一节点发送的背书请求后,通过查询区块链,即可确定该节点是否可以具有接入许可以及相关权限。
S35、默认可信节点11生成为该参与节点12可信性进行背书的背书信息。
具体地,根据业务需求,该背书信息可以包括背书有效期,身份权限有效期,该参与节点的IP地址,该参与节点服务的地域信息等。
S36、默认可信节点11向参与节点12发送背书响应,该背书响应包括该背书信息。
S37、参与节点12验证该背书信息的有效性,在验证通过后,将该背书信息记录至本地。
具体地,该背书信息可以是通过默认可信节点11的私钥签名的背书信息,这样,参与节点12即可对该背书信息进行签名验证,验证通过,则表明该背书信息有效。
S38、参与节点12将该背书信息写入背书智能合约。
S39、参与节点12检测背书智能合约中自身的背书信息是否有效。
具体地,该参与节点12可以周期性的检测背书智能合约中自身的背书信息是否有效。另外,该参与节点12作为区块链网络中的可信节点,可能会接收到其他节点发送的用于查询可信节点的查询请求,用于接入区块链网络的接入请求或者用于可信性背书的背书请求,此时也需要验证该参与节点12是否处于背书有效期内,也就是说,该参与节点12接收到查询请求、接入请求或者背书请求时,也可以先检测背书智能合约中自身的背书信息是否有效。
S40、该参与节点12在确定背书信息已经失效或者即将失效时,向默认可信节点11重新发送背书请求。
例如,背书信息中包括背书有效期,参与节点12检测到自身的背书信息的背书有效期已经超期或者即将超期,例如,距离背书有效期到期时限不到10分钟,该时间阈值可以根据需求设定,则可以重新向默认可信节点11发送背书请求,即重复执行上述步骤S33至步骤S38。
在另一种可能的实现方式中,该参与节点12在确定背书信息已经失效或者即将失效时,也可以通过该背书智能合约查询区块链网络当前的可信节点,并且选择除默认可信节点11以外的其他可信节点发送背书请求。另外,参与节点12本地还可以建立有可信节点列表,例如通过向默认可信节点11发送查询请求,请求默认可信节点11返回区块链网络中的可信节点信息,根据该可信节点信息建立一可信节点列表,在此种情况下,该参与节点12在确定背书信息已经失效或者即将失效时,还可以从本地的可信节点列表中选择一可信节点发送背书请求。
以太坊是本公开实施例的一种优选的实施场景,具体地,在以太坊的实施场景下,背书信息的申请以及响应可以基于以太坊的Whisper协议,也就是说,上述方法流程中的背书请求和背书响应中的参数可以包括Whisper协议约定的参数,并且,通过Whisper协议可以实现背书请求以及周期性的背书更新请求。
如图4所示,本公开一示例性实施例示出的一种区块链网络中可信节点的管理方法,应用于区块链网络中的可信节点,所述区块链网络的背书智能合约中具有所述可信节点的背书信息,例如,图1中所示的默认可信节点11,或者,图1中所示的已经接入区块链网络作为可信节点的参与节点12。该方法包括:
S41、区块链网络中的可信节点接收第一目标节点发送的背书请求。
该第一目标节点可以是新接入区块链网络中的节点,也可以是原有的背书信息已失效或者即将失效的节点。第一目标节点通过查询智能背书合约或者本地的可信节点列表,可以选择一可信节点(该可信节点即为本方法流程的执行主体)发送背书请求。
S42、根据该背书请求对该第一目标节点进行背书认证。
S43、在对该第一目标节点进行的背书认证成功后,生成为该第一目标节点的可信性进行背书的背书信息。
其中,对该第一目标节点的背书认证成功表明该第一目标节点具有接入所述区块链网络作为可信节点的权限。
S44、向该第一目标节点发送背书响应,该背书响应包括该背书信息。
该背书信息用于第一目标节点写入区块链网络的背书智能合约,其中,该背书智能合约用于区块链网络中的任意节点查询该区块链网络当前的可信节点。
可选地,上述方法步骤的执行主体是管理员预置到区块链网络中的默认可信节点,则所述方法还包括:对所述背书智能合约中的其他可信节点的背书信息进行移除。也就是说,背书智能合约中的背书信息可以由默认可信节点(例如图1所示的默认可信节点11)的账户维护,做到背书信息可撤销和废弃,提升了可信性背书的灵活性。
采用上述方法,通过区块链网络中已有的可信节点,例如管理员预置的默认可信节点,或者是已经得到默认可信节点的背书的其他可信节点,生成新的可信节点的背书信息,并且,每一可信节点获取到自身的背书信息后,将背书信息写入背书智能合约,通过背书智能合约对每一可信节点的背书信息进行管理,该背书智能合约对区块链网络中的每一节点均是透明的。在后续需要对任一节点进行可信性验证时,相当于是由背书智能合约对区块链网络中的节点的可信性进行背书,避免了在区块链网络中采用一中心化的节点统一对可信节点的背书信息进行管理,解决现有区块链网络无法去中心化的对可信节点进行背书的问题。
下面对区块链网络中可能需要对节点进行可信性验证的场景进行说明。
在一种可能的实现方式中,本公开实施例提供的区块链网络中可信节点的管理方法还包括:接收第二目标节点发送的查询请求,所述查询请求包括所述第二目标节点的签名信息;检测所述背书智能合约中所述可信节点的背书信息是否有效;若确定所述可信节点的背书信息有效且对所述第二目标节点的签名信息签名认证成功,则向所述第二目标节点发送查询响应,所述查询响应包括所述可信节点记录的所述区块链网络中的可信节点集合,以便所述第二目标节点将所述可信节点集合中的节点作为自身的可信节点。
也就是说,第二目标节点基于业务需求,需要获取区块链网络中的可信节点信息,此时,该第二目标节点可以基于已知的可信节点(例如默认可信节点),向该已知的可信节点查询区块链网络中的其他可信节点,在此种情况下,可信节点接收到第二目标节点的查询请求后,需要首先对第二目标节点进行身份认证,以及检测自身的背书信息是否有效,在确定背书信息有效且对第二目标节点的签名信息签名认证成功后,才向第二目标节点返回可信节点信息。
下面仍以图1所示的区块链网络10为例,说明新节点20在请求接入区块链网络过程中的可信节点管理方法,如图5所示,该方法包括:
S51、新节点20创建自己的账户并预置默认可信节点11的公钥。
其中,新节点20的账户信息包括新节点的公钥、私钥以及账户地址。
S52、新节点20将其身份信息发送给第二管理员14。
其中,第二管理员14对应参与当前区块链网络的某个机构,该新节点20即为所属该机构的某一节点。新节点20的身份信息可以包括新节点的公钥或账户地址等。
S53、第二管理员14将新节点20的身份信息写入区块链中并配置相应的许可信息。
S54、新节点20向默认可信节点11发送查询请求。
其中,查询请求可以包括新节点20的签名信息。
S55、默认可信节点11检查该新节点20是否具有接入许可并对新节点进行身份认证。
其中,若新节点20通过身份认证,则表明该新节点合法。
S56、默认可信节点11在确认新节点20具有接入许可且通过身份认证后,向背书智能合约查询可信节点信息。
S57、默认可信节点11向新节点20发送查询响应,查询响应包括该可信节点信息。
S58、新节点20对默认可信节点11进行身份认证。
S59、新节点20在对默认可信节点11进行身份认证成功后,根据该可信节点信息选择任一可信节点进行双向认证和通信,以通过该可信节点接入区块链网络。
在另一种可能的实现方式中,新节点在请求接入区块链网络的过程中,也需要验证请求的节点的可信性,因此,本公开实施例提供的区块链网络中可信节点的管理方法还可以包括:接收第三目标节点发送的用于请求接入所述区块链网络的接入请求;检测所述背书智能合约中所述可信节点的背书信息是否有效;若确定所述可信节点的背书信息有效且对所述第三目标节点的签名信息签名认证成功,则根据所述接入请求与所述第三目标节点建立点对点P2P连接。
结合前述描述及综合安全设计的考量,基于许可链(Authchain),本公开的一示例性实施例示出了一种接入区块链网络的方法,其中,新节点为终端,默认可信节点为许可链中预置的启动节点(Bootnode),如图6所示,该方法包括:
S61、终端向启动节点发送P2P连接请求,P2P连接请求包括第一随机挑战码。
其中,终端预先创建了自己的账户并预置启动节点的公钥。终端账户包括终端的公钥Cpub、私钥Cpri以及账户地址。并将其身份信息发送给区块链网络中的第二管理员,以便第二管理员将终端的身份信息写入区块链并配置相应的权限信息。其中,终端的身份信息可以包括终端的公钥Cpub和账户地址。
S62、启动节点向终端发送P2P连接响应,P2P连接响应包括第二随机挑战码。
S63、终端使用其私钥对第二随机挑战码进行签名,得到第一签名信息。
S64、终端生成加密密钥并使用启动节点的公钥对加密密钥加密,得到第一加密信息。
S65、终端向启动节点发送第一认证挑战,第一认证挑战包括终端的身份信息、第一签名信息和第一加密信息。
其中,终端的身份信息可以为终端的公钥Cpub或账户地址。
如上所述,终端中预存有启动节点的公钥AB_Pub,终端可根据其私钥Cpri对第二随机挑战码Sranno进行签名,得到第一签名信息CsignData,并根据启动节点的公钥AB_Pub对生成的加密密钥Symkey进行加密,得到第一加密信息Esymkey,且在向启动节点发起第一认证挑战时将其身份信息(Cpub或账户地址)、第一签名信息CsignData以及第一加密信息Esymkey发送给启动节点。与此同时,终端向启动节点发起指示查询对等节点的查询请求,以获取启动节点的对等节点信息。
S66、启动节点根据终端的身份信息检查终端合法性以及对第一签名信息进行签名认证。
值得说明的是,许可链已经实现了对区块链节点的权限管理,故在此的合法性检查即为在许可链中对节点的权限检查。
在对第一签名信息进行认证时,启动节点可根据终端的身份信息查询区块链,获取终端的公钥,并根据终端的公钥对第一签名信息进行签名认证,若签名认证通过,则可确定终端为身份信息表示的终端,则执行步骤S67,否则,结束流程。
S67、在确认终端合法且第一签名信息认证通过时,启动节点根据其私钥对第一加密信息进行解密,得到加密密钥。
S68、启动节点根据加密密钥对其对等节点信息进行加密得到第二加密信息,并根据其私钥对第一随机挑战码进行签名得到第二签名信息。
S69、启动节点向区块链网络的背书智能合约中获取可信节点列表信息。
其中,该可信节点列表信息包括背书智能合约记录的区块链网络的当前可信节点的节点信息。
S610、启动节点将包括第二加密信息、第二签名信息以及该可信节点列表信息的第一认证挑战响应发送给终端。
如上所述,启动节点可根据其私钥AB_Pri对第一加密信息Esymkey进行解密,从而得到加密密钥Symkey。为了保证通信安全,启动节点可利用加密密钥Symkey对其对等节点信息进行加密,得到第二加密信息。同时,为了表明其身份,启动节点根据其私钥AB_Pri对第一随机挑战码Cranno进行签名,得到第二签名信息SsignData,并将第二签名信息SsignData和第二加密信息发送给终端。
S611、终端对第二签名信息进行签名认证,在签名认证通过后解密第二加密信息得到可信节点列表信息并建立新节点自身的可信节点列表。
终端可根据其预存的启动节点的公钥AB_Pub对第二签名信息SsignData进行签名认证,若签名认证通过,则表明该启动节点合法,因而可将启动节点的对等节点也视为可信节点。因此,在签名认证通过后,启动节点可根据加密密钥Symkey对第二加密信息进行解密,得到启动节点的可信节点列表信息,并根据启动节点的可信节点建立自己的可信节点列表。
S612、终端从自身的可信节点列表中选择一可信节点进行挑战加密通信。
图6是新节点选择默认可信节点接入区块链网络的方法流程,仍以图6所示的实施环境为例,图7提供了新节点选择区块链中除默认可信节点以外的其他节点接入区块链网络的方法流程。如图7所示,包括:
S71、终端选择可信节点列表中的任一可信节点发送接入请求,该接入请求包括该终端信任的Endorsors列表。
具体地,Endorsors列表包括终端信任的每一可信节点的账户地址。
其中,接入过程中可以进行终端和可信节点之间的双向认证,例如可以是图6所示流程中涉及到的认证挑战的方式,此处不再赘述。
S72、可信节点在对终端的身份合法性认证成功后,判断是否需要向终端提供可信性背书。
S73、若Endorsors列表不为空,且该可信节点不在Endorsors列表中,且该可信节点也没有Endorsors列表中任一节点的有效背书,则该可信节点向Endorsors列表中任一节点发起背书请求,以获取该可信节点的背书信息。
其中,若Endorsors列表为空,或者,该可信节点有Endorsors列表中任一节点的有效背书,则该可信节点无需重新申请背书信息。
另外,该可信节点发起背书请求获取背书信息的过程可以参照图4所示的方法流程,此处不再赘述。
S74、可信节点向终端发送的包括自身的背书信息的接入响应。
S75、终端对可信节点进行签名认证以及背书认证,签名认证和背书认证均通过后,将该可信节点加入自身的可信节点列表,并与该可信节点进行后续的加密通信。
其中,签名认证是指挑战签名认证,背书认证是指验证该可信节点在背书智能合约中的背书信息是否有效可信,两者均通过后,终端才认为对端节点可信。
值得说明的是,终端与可信节点之间进行双向认证和加密通信的过程可参考前述终端与启动节点之间的双向认证和加密通信过程,在此不再赘述。
其次,终端可以本地维护可信节点的信息及有效期,后续加密通信的加密密钥由终端产生,并在双向认证过程中传递给对方,以此减少交互次数,在其他实施方式中,加密密钥也可以调整为协商产生,如ECIES。
值得说明的是,对于上述方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明所必须的。
图8是本公开实施例提供的一种节点的框图,该节点用于实施上述方法实施例中提供的如图2所示的区块链网络中可信节点的管理方法,如图8所示,节点80包括:
发送模块81,用于向区块链网络中的可信节点发送背书请求;
接收模块82,用于接收所述可信节点发送的背书响应,所述背书响应包括对所述节点的可信性进行背书的背书信息;
合约写入模块83,用于将所述背书信息写入所述区块链网络的背书智能合约中,所述背书智能合约用于所述区块链网络中的任意节点查询所述区块链网络当前的可信节点。
可选地,所述发送模块81用于,在所述节点初始在接入所述区块链网络时,向所述区块链网络中默认可信节点发送所述背书请求;
其中,所述默认可信节点是管理员预置的可信节点,所述默认可信节点预先配置有允许接入所述区块链网络的至少一个节点的权限信息;所述背书响应是所述默认可信节点对所述节点进行背书认证成功后发送给所述节点的。
可选地,该节点80还可以包括检测模块,用于检测所述背书智能合约中所述节点自身的背书信息是否失效;
所述发送模块81用于,在所述检测模块确定所述背书智能合约中所述节点自身的背书信息失效时,向所述区块链网络中的可信节点发送所述背书请求;
其中,所述区块链网络中的可信节点为管理员预置的默认可信节点,或者,所述区块链网络中的可信节点为从所述背书智能合约中查询得到的所述区块链网络当前有效的可信节点。
可选地,所述检测模块用于周期性的检测所述背书智能合约中自身的背书信息是否失效;和/或,
所述检测模块用于,在所述节点接收到新节点发送的请求接入所述区块链网络的接入请求时,检测所述背书智能合约中自身的背书信息是否失效。
可选地,该节点80还可以包括:验证模块,用于根据所述背书响应中所述可信节点的签名信息对所述可信节点进行签名认证;
所述合约写入模块83,用于在所述验证模块对所述可信节点进行的签名认证成功后,将所述背书信息记录至所述节点本地,并将所述背书信息写入所述区块链网络的背书智能合约中。
本领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能单元的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元完成,即将装置的内部结构划分成不同的功能单元,以完成以上描述的全部或者部分功能。上述描述功能单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
相应地,本公开实施例还提供一种非临时性计算机可读存储介质,所述非临时性计算机可读存储介质中包括一个或多个程序,所述一个或多个程序用于执行权上述应用于实施上述方法实施例中提供的如图2所示的区块链网络中可信节点的管理方法。
图9是本公开实施例提供的另一种节点的框图,其中,区块链网络的背书智能合约中具有该节点作为可信节点的背书信息,该节点用于实施上述方法实施例中提供的如图4所示的区块链网络中可信节点的管理方法,如图9所示,节点90包括:
第一接收模块91,用于接收第一目标节点发送的背书请求;
第一背书认证模块92,用于根据所述背书请求对所述第一目标节点进行背书认证;
生成模块93,用于在所述背书认证模块对所述第一目标节点进行的背书认证成功后,生成为所述第一目标节点的可信性进行背书的背书信息,其中,对所述第一目标节点的背书认证成功表明所述第一目标节点具有接入所述区块链网络作为可信节点的权限;
第一发送模块94,用于向所述第一目标节点发送背书响应,所述背书响应包括所述背书信息。
可选地,还包括:
第二接收模块,用于接收第二目标节点发送的查询请求,所述查询请求包括所述第二目标节点的签名信息;
第一检测模块,用于检测所述背书智能合约中所述节点的背书信息是否有效;
第二发送模块,用于在确定所述节点的背书信息有效且对所述第二目标节点的签名信息签名认证成功时,则向所述第二目标节点发送查询响应,所述查询响应包括所述节点记录的所述区块链网络中的可信节点集合,以便所述第二目标节点将所述可信节点集合中的节点作为自身的可信节点。
可选地,还包括:
第三接收模块,用于接收第三目标节点发送的用于请求接入所述区块链网络的接入请求;
第二检测模块,用于检测所述背书智能合约中所述节点的背书信息是否有效;
连接建立模块,用于在确定所述节点的背书信息有效且对所述第三目标节点的签名信息签名认证成功时,则根据所述接入请求与所述第三目标节点建立点对点P2P连接。
可选地,所述节点是管理员预置到所述区块链网络中的默认可信节点,所述节点还包括:
合约管理模块,用于对所述背书智能合约中的其他可信节点的背书信息进行移除。
本领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能单元的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元完成,即将装置的内部结构划分成不同的功能单元,以完成以上描述的全部或者部分功能。上述描述功能单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
相应地,本公开实施例还提供一种非临时性计算机可读存储介质,所述非临时性计算机可读存储介质中包括一个或多个程序,所述一个或多个程序用于执行权上述应用于实施上述方法实施例中提供的如图4所示的区块链网络中可信节点的管理方法。
本公开实施例还提供又一种节点,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现上述方法实施例所示的区块链网络中可信节点的管理方法。
示例地,图10是根据一示例性实施例示出的一种节点的框图。该节点可以是用户设备,例如移动电话,计算机,数字广播终端,消息收发设备,游戏控制台等。参照图10,节点100包括处理组件101,其进一步包括一个或多个处理器,以及由存储器102所代表的存储器资源,用于存储可由处理组件101的执行的指令,例如应用程序。存储器102中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件101被配置为执行指令,以执行基站侧的上行反馈方法的步骤。
节点100还可以包括一个电源组件103被配置为执行节点100的电源管理,一个有线或无线网络接口104被配置为将节点100连接到网络,和一个输入输出(I/O)接口105。节点100可以操作基于存储在存储器102的操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM或类似。
本公开还提供一种计算机可读存储介质,其上存储有计算机程序指令,该程序指令被处理器执行时实现本公开实施例上述提供的任一区块链网络中可信节点的管理方法的步骤。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。