具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本公开保护的范围。
为了使本领域技术人员更容易理解本公开实施例提供的技术方案,下面首先对涉及到的相关技术进行简单介绍。
区块链是由区块链网络中所有节点共同参与维护的去中心化分布式数据库系统,它是由一系列基于密码学方法产生的数据块组成,每个数据块即为区块链中的一个区块。根据产生时间的先后顺序,区块被有序地链接在一起,形成一个数据链条,被形象地称为区块链。区块链由其特别的区块和交易产生、验证协议,具有不可更改,不可伪造、完全可追溯的安全特性。
区块链技术中涉及到的相关概念说明:
区块链节点:区块链网络基于P2P(Peer to Peer,对等网络)网络,每个参与交易和区块存储、验证、转发的P2P网络节点都是一个区块链网络中的节点。
用户身份:区块链中的用户身份使用公钥表示,并且公钥和私钥是成对出现的,其中,私钥由用户掌握而不发布到上述的区块链网络中,公钥通过特定的哈希和编码后成为“地址”,“地址”代表了用户,并且公钥和“地址”可随意发布在区块链网络中。值得一提的是,用户身份和区块链节点不存在一一对应关系,用户可以在任意一个区块链节点上使用自己的私钥。
区块链数据写入:区块链节点通过向区块链网络发布“交易”(Transaction)实现向区块链写入数据。交易中包含用户使用自己私钥对交易的签名,以证明用户的身份。交易被“矿工”(执行区块链共识竞争机制的区块链节点)记录入产生的新区块,然后发布到区块链网络,并被其他区块链节点验证通过和接受后,交易数据即被写入区块链。
图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的账户信息和许可信息等写入区块链中。
可以理解的是,图1所示的实施环境仅用于示意本公开实施例提供的方法,并不构成对本公开实施例的限制。例如,第一管理员13可在区块链网络10中部署一个或多个默认可信节点11以及多个参与节点12,本公开对此不做限定。
如图2所示,基于图1所示的实施环境,本公开一示例性实施例示出的一种获取可信节点的方法,该方法可以应用于待接入区块链网络中的新节点,例如图1所示的新节点20。该方法包括:
在步骤S201中,向目标可信节点发送查询请求,目标可信节点是区块链网络中的管理员预置到区块链网络中的默认可信节点或者是新节点的可信节点列表中的节点。
在步骤S202中,接收目标可信节点发送的查询响应,查询响应包括目标可信节点的签名信息和目标可信节点的对等节点信息。
其中,对等节点信息包括区块链网络中与目标可信节点建立P2P连接的节点信息。
在步骤S203中,对目标可信节点的签名信息进行签名认证,并在签名认证通过后,将对等节点信息添加到新节点的可信节点列表。
在一种可能的实施方式中,目标可信节点可以是区块链网络中的管理员预置到区块链网络中的默认可信节点,例如图1所示的第一管理员13预置到区块链网络中的默认可信节点11。相应地,新节点接收到的默认可信节点返回的连接响应包括默认可信节点的签名信息和默认可信节点的对等节点信息(即区块链网络中与默认可信节点建立P2P连接的节点信息)。其中,默认可信节点的签名信息用于验证该默认可信节点是否合法。新节点中可以预置有默认可信节点的公钥,这样,新节点可以根据该预置的公钥对该签名信息进行签名认证,若签名认证通过,则表明该默认可信节点合法,则可将默认可信节点的对等节点视为新节点的可信节点,因而可将默认可信节点的对等节点信息加入到可信节点列表中。
其中,默认可信节点的对等节点信息至少包括该默认可信节点的对等节点的IP地址、公钥等信息,这样,新节点的可信节点列表中便记录了每一可信节点的IP地址和公钥等信息。
由于默认可信节点是预置到区块链网络中的可信节点,新节点在确认默认可信节点通过身份认证后将默认可信节点的对等节点作为自己的可信节点,可以保证获取到的可信节点是可信任的。
新节点还可以从其可信节点列表中选择任一可信节点进行双向认证以及后续的通信。例如,新节点可根据可信节点列表中各可信节点的IP地址选择距离自己较近的可信节点进行双向认证以及后续的通信。
具体地,新节点可向其可信节点列表中的任一可信节点发送业务请求,并接收该可信节点返回的业务响应,其中,业务响应包括该可信节点的签名信息以及业务数据。接着,新节点根据该可信节点的公钥对该可信节点的签名信息进行签名认证,若签名认证通过,则表明该可信节点合法,因而可接受该可信节点返回的业务数据。
例如,新节点可选择其可信节点列表中的任一可信节点作为目标可信节点,通过向该目标可信节点发送请求该可信节点的对等节点信息的业务请求,获取这些可信节点的对等节点作为更多的可信节点来源。
为了保证与目标可信节点之间安全通信,新节点与目标可信节点进行加密通信。例如,新节点可生成加密密钥,并通过目标可信节点的公钥对加密密钥加密后发送给目标可信节点,由目标可信节点的私钥解密后得到该加密密钥,并接收目标可信节点返回的签名信息以及目标可信节点利用加密密钥加密后的业务数据,且根据目标可信节点的公钥对目标可信节点的签名信息进行签名认证,在签名认证通过后根据生成的加密密钥对加密后的业务数据解密。
采用上述方法,与现有技术中需要依赖第三方可信机构与目标节点进行双向认证相比,本公开实施例提供的获取可信节点的方法,通过对区块链网络中的默认可信节点进行双向认证并在认证通过后通过默认可信节点获取可信节点,由于整个过程无需中心化的第三方机构参与,可以避免区块链非中心化优势被削弱。同时,可以避免数字证书颁发所带来的复杂度。
在本公开中,新节点可以包括但不限于各种终端、区块链轻节点和区块链全节点等等。若新节点为区块链轻节点或区块链全节点,则需要同步区块链数据,因此需要与目标可信节点建立P2P连接。
在一种可能的实施方式中,新节点可通过默认可信节点同步区块链数据,即,新节点在向默认可信节点发送查询请求之前向默认可信节点发送P2P连接请求,接收默认可信节点发送的包括默认可信节点的签名信息的P2P连接响应,并根据预置的默认可信节点的公钥对默认可信节点的签名信息进行签名认证,若签名认证通过,则表明该默认可信节点合法,因此可与该默认可信节点建立P2P连接。在与默认可信节点建立起P2P连接后,新节点便可向默认可信节点发送查询请求以获取默认可信节点的对等节点信息。与此同时,新节点还可通过P2P连接向默认可信节点请求同步区块数据。
为了提高同步效率,减轻默认可信节点的负担,新节点还可通过其他可信节点同步区块数据,即,从其可信节点列表中选择可信节点进行双向认证,在认证通过后向选中的可信节点发起P2P连接请求,也可以响应选中的可信节点的P2P连接请求,并通过与选中的可信节点之间的P2P连接进行同步区块链数据的操作。
在另一种可能的实施方式中,为了减少额外的请求步骤,新节点还可在向默认可信节点发送P2P连接请求的同时,请求获取默认可信节点的对等节点信息,接收默认可信节点发送的包括默认可信节点的对等节点信息的P2P连接响应,并根据P2P连接响应对默认可信节点进行身份认证,且在身份认证通过后将默认可信节点以及对等节点信息加入新节点的可信节点列表中。其中,新节点中预置有默认可信节点的公钥,默认可信节点返回的对等节点信息中包括各对等节点的公钥,因此新节点的可信节点列表中记录有每一可信节点的公钥。
值得说明的是,在基于许可权限的区块链网络中,新节点在没有同步完相关区块链数据之前,是无法验证非默认可信节点的权限以及从非默认可信节点同步数据。采用默认可信节点的对等节点(以及子对等节点)作为可信节点及双向认证的方案,则可解决上述问题:可信节点可作为一种已通过权限验证的节点。
此外,关于新节点还可以根据区块链网络的具体要求灵活地对其可信节点进行维护,比如限制可信节点的数目以及非默认可信节点作为可信节点的时效性等。
本公开实施例还提供另一种获取可信节点的方法,该方法可以应用于区块链网络中的可信节点,如图3所示,该方法包括:
在步骤S301中,接收待接入区块链网络中的新节点发送的查询请求,查询请求包括新节点的签名信息。
其中,可信节点可以是区块链网络中的管理员(如图1所示的第一管理员13)预置到区块链网络中的默认可信节点,或者是新节点的可信节点列表中的节点。
在步骤S302中,对新节点的签名信息进行签名认证,并在签名认证通过后向新节点发送查询响应,查询响应包括可信节点的对等节点信息。
在一种可能的实施方式中,区块链网络中的管理员可将新节点的身份信息(包括新节点的公钥或账户地址等)加入到区块链中。这样,可信节点在接收到新节点发送的包括其签名信息的查询请求时,可从区块链中获取到新节点的身份信息并根据该新节点的身份信息对其签名信息进行签名认证,若签名认证通过,则表明该新节点合法,因而可将其签名信息以及对等节点信息发送给该新节点。其中,对等节点信息包括区块链网络中与该可信节点建立P2P连接的节点信息。
在本公开的各实施例中,新节点可以包括但不限于各种终端、区块链轻节点和区块链全节点等等。若新节点为区块链轻节点或区块链全节点,还需向可信节点发送P2P连接请求,通过与可信节点建立P2P连接同步可信节点的区块链数据。
在一种可能的实施方式中,新节点可向默认可信节点发送P2P连接请求,其中,P2P连接请求包括新节点的签名信息。默认可信节点在接收到P2P连接请求时,可以从区块链中查询新节点的公钥根据该新节点的公钥对新节点的签名信息进行签名认证,若签名认证通过,则表明该新节点合法,因而向新节点发送P2P连接响应。
为了减少额外的请求步骤,默认可信节点在确认新节点通过签名认证后,还可在P2P连接响应中携带其对等节点信息。其中,默认可信节点的对等节点信息至少包括默认可信节点的对等节点的IP地址、公钥等。
此外,在其他实施方式中,默认可信节点在接收到新节点发送的P2P连接请求后以及在对新节点进行身份认证之前,还可认证该新节点在区块链中是否具有接入许可。例如,区块链网络中的管理员(如图1所示的第二管理员14)将允许接入区块链的新节点的身份信息(如新节点的公钥、账户地址等)写入区块链中并配置该身份信息对应的许可信息。新节点发送的P2P连接请求还包括新节点的身份信息(如该新节点的账户地址),默认可信节点可根据接收到的新节点的身份信息查询区块链中存储的属于该新节点账户下的所有信息,进一步可以确定该账户下的所有信息中是否存储与该身份信息对应的许可信息,若查询到该账户下的所有信息中存储有与该身份信息对应的许可信息,则表明该新节点账户在区块链上具有接入许可。
采用上述方法,可信节点对待接入区块链网络中的新节点进行身份认证,在确认该新节点合法后向新节点发送可信节点的对等节点信息,从而保证区块链网络接收合法的新节点。
为了使本公开实施例提供的技术方案更加易于理解,下面再结合本公开实施例各种可能的信令交互方式进行详细说明。
图4是根据本公开的一示例性实施例示出的一种获取可信节点的方法的信令交互示意图,其中,新节点是区块链轻节点或区块链全节点。如图4所示,该方法包括:
在步骤S401中,第一管理员部署区块链网络中的默认可信节点。
在步骤S402中,第一管理员部署区块链网络中的参与节点。
例如,第一管理员可以为如图1所示的第一管理员13。
其中,参与节点包括可参与到区块链网络中的默认可信节点的对等节点及子对等节点。
在步骤S403中,新节点创建自己的账户并预置默认可信节点的公钥。
其中,新节点的账户信息包括新节点的公钥、私钥以及账户地址。
在步骤S404中,新节点将其身份信息发送给第二管理员。
其中,新节点的身份信息可以包括新节点的公钥、账户地址等。
第二管理员可以例如为如图1所示的第二管理员14。
在步骤S405中,第二管理员将新节点的身份信息写入区块链中并配置相应的许可信息。
在步骤S406中,新节点向默认可信节点发送P2P连接请求。
在步骤S407中,默认可信节点检查该新节点是否具有接入许可以及对该新节点进行身份认证。
其中,若新节点通过身份认证,则表明该新节点合法。
在步骤S408中,默认可信节点在确认该新节点具有接入许可且合法后,向该新节点发送P2P连接响应。
在步骤S409中,新节点对默认可信节点进行身份认证并在身份认证通过后与默认可信节点建立P2P连接。
在步骤S410中,新节点向默认可信节点发送区块数据同步请求。
在步骤S411中,默认可信节点向新节点返回数据同步响应,其中,数据同步响应包括区块链中的区块数据。
在步骤S412中,新节点向默认可信节点发送查询请求。
在步骤S413中,默认可信节点向新节点返回其对等节点信息。
其中,对等节点信息可以包括默认可信节点的对等节点的IP地址、公钥等。
在步骤S414中,新节点将默认可信节点的对等节点信息加入新节点的可信节点列表。
在步骤S415中,新节点选择可信节点列表中的任一可信节点进行双向认证和通信。
图5是根据本公开的另一示例性实施例示出的一种获取可信节点的方法的信令交互示意图,其中,新节点是终端。如图5所示,该方法包括:
在步骤S501中,第一管理员部署区块链网络中的默认可信节点。
在步骤S502中,第一管理员部署区块链网络中的参与节点。
例如,第一管理员可以为如图1所示的第一管理员13。
其中,参与节点包括默认可信节点的对等节点及子对等节点。
在步骤S503中,新节点创建自己的账户并预置默认可信节点的公钥。
其中,新节点的账户信息包括新节点的公钥、私钥以及账户地址。
在步骤S504中,新节点将其身份信息发送给第二管理员。
其中,新节点的身份信息可以包括新节点的公钥或账户地址等。
在步骤S505中,第二管理员将新节点的身份信息写入区块链中并配置相应的许可信息。
第二管理员可以例如为如图1所示的第二管理员14。
在步骤S506中,新节点向默认可信节点发送查询请求。
其中,查询请求可以包括新节点的签名信息。
在步骤S507中,默认可信节点检查该新节点是否具有接入许可以及对新节点进行身份认证。
其中,若新节点通过身份认证,则表明该新节点合法。
在步骤S508中,默认可信节点在确认新节点具有接入许可且通过身份认证后向新节点发送查询响应,查询响应包括默认可信节点的对等节点信息。
在步骤S509中,新节点对默认可信节点进行身份认证,并在身份认证通过后将默认可信节点的对等节点信息加入新节点的可信节点列表。
在步骤S510中,新节点将选择可信节点列表中的任一可信节点进行双向认证和通信。
值得说明的是,在上述图4和图5所述的实施例中,新节点与默认可信节点之间的双向认证、新节点同步区块数据的过程以及新节点与其可信节点列表中任一可信节点进行双向认证和通信的过程可以参照图1提供的实施环境以及图2和图3提供的获取可信节点的方法的描述,此处不再赘述。
其次,对于上述方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本公开所必须的。
此外,在本公开的实施例中,以以太坊区块链为例,各个节点之间建立起P2P连接后会各自维护对等节点列表信息。每个对等节点信息包含的信息有:ID、名字、Enode、IP、Port及支持协议等信息。其中,Enode是一个编码的URL,用于其他节点对该节点主动对等添加。而ID信息是一个节点的标识,也是和这个节点进行P2P相关通信的加密密钥。实质上,这个ID是节点身份公钥的衍生数据。一般情况下,此ID公钥对应的账户只是用来标识节点,由节点程序自动生成,其并不参与链上的业务逻辑,所以可考虑以相同的衍生方式为节点信息添加一个TID信息。此TID信息由标识该节点业务身份账户的公钥衍生,P2P发现后一同传递给各节点。此后各节点业务访问可使用该TID恢复公钥,从而进行双向认证以及后续的相关加密通信,例如ECIES。
结合前述描述及综合安全设计的考量,基于许可链(Authchain),根据本公开的一示例性实施例示出了一种访问区块链网络的方法,其中,新节点为终端,默认可信节点为许可链中预置的启动节点(Bootnode),如图6所示,该方法包括:
在步骤S601中,第一管理员部署区块链网络中可信的启动节点。
在步骤S602中,第一管理员部署区块链网络中的参与节点。
其中,参与节点可以包括区块链网络中启动节点的对等节点及子对等节点。
在步骤S603中,终端创建自己的账户并预置启动节点的公钥。
其中,终端账户包括终端的公钥Cpub、私钥Cpri以及账户地址。
在步骤S604中,终端将其身份信息发送给区块链网络中的第二管理员。
其中,终端的身份信息可以包括终端的公钥Cpub和账户地址。
在步骤S605中,第二管理员将终端的身份信息写入区块链并配置相应的权限信息。
在步骤S606中,终端向启动节点发送P2P连接请求,P2P连接请求包括第一随机挑战码。
在步骤S607中,启动节点向终端发送P2P连接响应,P2P连接响应包括第二随机挑战码。
在步骤S608中,终端使用其私钥对第二随机挑战码进行签名,得到第一签名信息。
在步骤S609中,终端生成加密密钥并使用启动节点的公钥对加密密钥加密,得到第一加密信息。
在步骤S610中,终端向启动节点发送第一认证挑战,第一认证挑战包括终端的身份信息、第一签名信息和第一加密信息。
其中,终端的身份信息可以为终端的公钥Cpub或账户地址。
如上所述,终端中预存有启动节点的公钥AB_Pub,终端可根据其私钥Cpri对第二随机挑战码Sranno进行签名,得到第一签名信息CsignData,并根据启动节点的公钥AB_Pub对生成的加密密钥Symkey进行加密,得到第一加密信息Esymkey,且在向启动节点发起第一认证挑战时将其身份信息(Cpub或账户地址)、第一签名信息CsignData以及第一加密信息Esymkey发送给启动节点。与此同时,终端向启动节点发起指示查询对等节点的查询请求,以获取启动节点的对等节点信息。
在步骤S611中,启动节点根据终端的身份信息检查终端合法性以及对第一签名信息进行签名认证。
值得说明的是,许可链已经实现了对区块链节点的权限管理,故在此的合法性检查即为在许可链中对节点的权限检查。
在对第一签名信息进行认证时,启动节点可根据终端的身份信息查询区块链,获取终端的公钥,并根据终端的公钥对第一签名信息进行签名认证,若签名认证通过,则可确定终端为身份信息表示的终端,则执行步骤S611,否则,结束流程。
在步骤S612中,在确认终端合法且第一签名信息认证通过时,启动节点根据其私钥对第一加密信息进行解密,得到加密密钥。
在步骤S613中,启动节点根据加密密钥对其对等节点信息进行加密得到第二加密信息,并根据其私钥对第一随机挑战码进行签名得到第二签名信息。
在步骤S614中,启动节点将包括第二加密信息和第二签名信息的第一认证挑战响应发送给终端。
如上所述,启动节点可根据其私钥AB_Pri对第一加密信息Esymkey进行解密,从而得到加密密钥Symkey。为了保证通信安全,启动节点可利用加密密钥Symkey对其对等节点信息进行加密,得到第二加密信息。同时,为了表明其身份,启动节点根据其私钥AB_Pri对第一随机挑战码Cranno进行签名,得到第二签名信息SsignData,并将第二签名信息SsignData和第二加密信息发送给终端。
在步骤615中,终端对第二签名信息进行签名认证,在签名认证通过后解密第二加密信息得到启动节点的对等节点信息并将对等节点信息加入终端的可信节点列表。
终端可根据其预存的启动节点的公钥AB_Pub对第二签名信息SsignData进行签名认证,若签名认证通过,则表明该启动节点合法,因而可将启动节点的对等节点也视为可信节点。因此,在签名认证通过后,启动节点可根据加密密钥Symkey对第二加密信息进行解密,得到启动节点的对等节点信息,并将对等节点信息加入其可信节点列表,以将启动节点的对等节点作为自己的可信节点。其中,对等节点信息包括启动节点的对等节点的公钥。
在步骤S616中,终端选择可信节点列表中的任一可信节点进行业务请求,业务请求包括第三随机挑战码。
在步骤S617中,可信节点向终端发送业务响应,业务响应包括该可信节点的公钥和第四随机挑战码。
在步骤S618中,终端根据该可信节点的公钥验证该启动节点是否在可信节点列表中。
终端的可信节点列表中存储有各可信节点的公钥,因而在接收到某一可信节点的业务响应后,可查询可信节点列表中是否存储与业务响应中携带的该可信节点的公钥Spub,若可信节点列表中存储有该可信节点的公钥Spub,则表明该可信节点在可信节点列表中。
在步骤S619中,在确认该可信节点在可信节点列表中时,终端使用其私钥对第四随机挑战码进行签名,得到第三签名信息。
在步骤S620中,终端根据可信节点的公钥对加密密钥进行加密,得到第三加密信息。
在步骤S621中,终端向可信节点发起第二认证挑战,第二认证挑战包括终端的身份信息、第三签名信息和第三加密信息。
其中,终端的身份信息可以为终端的公钥Cpub或账户地址。
在步骤S622中,可信节点根据终端的身份信息检查终端合法性以及对第三签名信息进行签名认证。
在步骤S623中,在确认终端合法且第三签名信息认证通过时,可信节点根据其私钥对第三加密信息进行解密,得到加密密钥。
在步骤S624中,可信节点根据加密密钥对业务数据进行加密,并根据其私钥对第三随机挑战码进行签名得到第四签名信息。
在步骤S625中,可信节点将包括加密后的业务数据以及第四签名信息的第二认证挑战响应发送给终端。
在步骤S626中,终端对第四签名信息进行签名认证,在签名认证通过后解密得到业务数据。
值得说明的是,终端与可信节点之间进行双向认证和加密通信的过程可参考前述终端与启动节点之间的双向认证和加密通信过程,在此不再赘述。
其次,终端可以本地维护可信节点的信息及有效期,后续加密通信的加密密钥由终端产生,并在双向认证过程中传递给对方,以此减少交互次数,在其他实施方式中,加密密钥也可以调整为协商产生,如ECIES。
另外,对于上述方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本公开并不受所描述的动作顺序的限制。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本公开所必须的。
图7是根据本公开一示例性实施例示出的一种获取可信节点的装置700的框图,该装置700应用于待接入区块链网络的新节点,其中,新节点可以是终端、区块链轻节点和区块链全节点,所述装置700用于实施上述方法实施例中提供的如图2所示的获取可信节点的方法,如图7所示,该装置700包括:
查询请求模块701,用于向目标可信节点发送查询请求,所述目标可信节点是所述区块链网络中的管理员预置到所述区块链网络中的默认可信节点,或者是所述新节点的可信节点列表中的节点;
查询响应接收模块702,用于接收所述目标可信节点发送的查询响应,所述查询响应包括所述目标可信节点的签名信息和所述目标可信节点的对等节点信息,所述对等节点信息包括所述区块链网络中与所述目标可信节点建立P2P连接的节点信息;
第一签名认证模块703,用于对所述目标可信节点的签名信息进行签名认证,并在签名认证通过后将所述对等节点信息添加到所述新节点的可信节点列表。
可选地,所述目标可信节点为所述默认可信节点,所述新节点预置有所述默认可信节点的公钥,所述装置700还包括:
第一连接请求模块704,用于向所述默认可信节点发送P2P连接请求;
第一连接响应接收模块705,用于接收所述默认可信节点发送的P2P连接响应,所述P2P连接响应包括所述默认可信节点的签名信息;
第二签名认证模块706,用于根据所述默认可信节点的公钥对所述默认可信节点的签名信息进行签名认证,并在签名认证通过后,与所述默认可信节点建立起P2P连接。
可选地,所述装置700还包括:
第一认证及通信模块707,用于从所述新节点的可信节点列表中选择可信节点进行双向认证和双向加密通信。
可选地,所述新节点的可信节点列表中记录有每一可信节点的公钥,所述第一认证及通信模块707包括:
第一业务请求子模块771,用于向所述新节点中的可信节点列表中的任一可信节点发送业务请求;
第一业务响应接收子模块772,用于接收所述任一可信节点发送的业务响应,所述业务响应包括所述任一可信节点的签名信息以及业务数据;
第一签名验证子模块773,用于根据所述任一可信节点的公钥对所述任一可信节点的签名信息进行签名认证,并在签名认证通过后,解密获取所述业务数据。
本领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能单元的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元完成,即将装置的内部结构划分成不同的功能单元,以完成以上描述的全部或者部分功能。上述描述功能单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
相应地,本公开实施例还提供一种非临时性计算机可读存储介质,所述非临时性计算机可读存储介质中包括一个或多个程序,所述一个或多个程序用于执行权上述应用于实施上述方法实施例中提供的如图2所示的获取可信节点的方法。
相应地,本公开实施例还提供一种区块链节点,应用于待接入区块链网络的新节点,包括上述非临时性计算机可读存储介质;以及一个或者多个处理器,用于执行所述非临时性计算机可读存储介质中的程序。
图8是根据本公开另一示例性实施例示出的一种获取可信节点的装置800的框图,该装置800应用于待接入区块链网络的新节点,其中,新节点可以是终端、区块链轻节点和区块链全节点,所述装置800用于实施上述方法实施例中提供的如图2所示的获取可信节点的方法,如图8所示,该装置800包括:
第一连接请求模块801,用于向所述默认可信节点发送P2P连接请求,所述默认可信节点是所述区块链网络中的管理员预置到所述区块链网络中的可信节点;
第一连接响应接收模块802,用于接收所述默认可信节点发送的P2P连接响应,所述P2P连接响应包括所述默认可信节点的对等节点信息,所述对等节点信息包括所述区块链网络中与所述默认可信节点建立P2P连接的节点信息;
身份认证模块803,用于根据所述P2P连接响应对所述默认可信节点进行身份认证,并在身份认证通过后,将所述默认可信节点以及所述对等节点信息加入所述新节点的可信节点列表。
可选地,所述装置800还包括:
第二认证及通信模块804,用于从所述新节点的可信节点列表中选择可信节点进行双向认证和双向加密通信。
可选地,所述新节点的可信节点列表中记录有每一可信节点的公钥,所述第二认证及通信模块804包括:
第二业务请求子模块841,用于向所述新节点中的可信节点列表中的任一可信节点发送业务请求;
第二业务响应接收子模块842,用于接收所述任一可信节点发送的业务响应,所述业务响应包括所述任一可信节点的签名信息以及业务数据;
第二签名验证子模块843,用于根据所述任一可信节点的公钥对所述任一可信节点的签名信息进行签名认证,并在签名认证通过后,解密获取所述业务数据。
本领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能单元的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元完成,即将装置的内部结构划分成不同的功能单元,以完成以上描述的全部或者部分功能。上述描述功能单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
相应地,本公开实施例还提供一种非临时性计算机可读存储介质,所述非临时性计算机可读存储介质中包括一个或多个程序,所述一个或多个程序用于执行权上述应用于实施上述方法实施例中提供的如图2所示的获取可信节点的方法。
相应地,本公开实施例还提供一种区块链节点,应用于待接入区块链网络的新节点,包括上述非临时性计算机可读存储介质;以及一个或者多个处理器,用于执行所述非临时性计算机可读存储介质中的程序。
图9是根据本公开一示例性实施例示出的一种获取可信节点的装置900的框图,该装置900应用于区块链网络中的可信节点,所述装置900用于实施上述方法实施例中提供的如图3所示的获取可信节点的方法,如图9所示,该装置900包括:
查询请求接收模块901,用于接收待接入所述区块链网络中的新节点发送的查询请求,所述查询请求包括所述新节点的签名信息,所述可信节点是所述区块链网络中的管理员预置到所述区块链网络中的默认可信节点,或者是所述新节点的可信节点列表中的节点;
查询响应模块902,用于对所述新节点的签名信息进行签名认证,并在签名认证通过后向所述新节点发送查询响应,所述查询请求包括所述可信节点的对等节点信息,所述对等节点信息包括所述区块链网络中与所述可信节点建立P2P连接的节点信息。
可选地,所述可信节点为所述默认可信节点,所述装置900还包括:
第一连接请求接收模块903,用于接收所述新节点发送的P2P连接请求,所述连接请求包括所述新节点的签名信息;
第一连接响应模块904,用于对所述新节点的签名信息进行签名验证,并在签名认证通过后向所述新节点发送P2P连接响应。
本领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能单元的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元完成,即将装置的内部结构划分成不同的功能单元,以完成以上描述的全部或者部分功能。上述描述功能单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
相应地,本公开实施例还提供一种非临时性计算机可读存储介质,所述非临时性计算机可读存储介质中包括一个或多个程序,所述一个或多个程序用于执行权上述应用于实施上述方法实施例中提供的如图3所示的获取可信节点的方法。
相应地,本公开实施例还提供一种区块链节点,应用于区块链网络中的可信节点,包括上述非临时性计算机可读存储介质;以及一个或者多个处理器,用于执行所述非临时性计算机可读存储介质中的程序。
图10是根据本公开另一示例性实施例示出的一种获取可信节点的装置1000的框图,该装置1000应用于区块链网络中的默认可信节点,所述默认可信节点是所述区块链网络中的管理员预置到所述区块链网络中的可信节点,所述装置1000用于实施上述方法实施例中提供的如图3所示的获取可信节点的方法,如图10所示,该装置1000包括:
第二连接请求接收模块1001,用于接收待接入所述区块链网络的新节点发送的P2P连接请求;
第二连接响应模块1002,用于根据所述P2P连接请求对所述新节点进行身份认证,并在身份认证通过后,向所述新节点发送P2P连接响应,所述P2P连接响应包括所述默认可信节点的对等节点信息,所述对等节点信息包括所述区块链网络中与所述默认可信节点建立P2P连接的节点信息。
本领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能单元的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元完成,即将装置的内部结构划分成不同的功能单元,以完成以上描述的全部或者部分功能。上述描述功能单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
相应地,本公开实施例还提供一种非临时性计算机可读存储介质,所述非临时性计算机可读存储介质中包括一个或多个程序,所述一个或多个程序用于执行权上述应用于实施上述方法实施例中提供的如图3所示的获取可信节点的方法。
相应地,本公开实施例还提供一种区块链节点,应用于区块链网络的默认可信节点,包括上述非临时性计算机可读存储介质;以及一个或者多个处理器,用于执行所述非临时性计算机可读存储介质中的程序。