具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
区块链中继通信网络可以适用于各种类型的区块链网络,包括公有链、私有链和联盟链等。譬如,应用于公有链的区块链中继通信网络主要包括Falcon、Fast BitcoinRelay Network(FBRN)、Fast Internet Bitcoin Relay Engine(FIBRE)等,而应用于联盟链的区块链中继通信网络主要包括BloXRoute、Blockchain Transmission Network(BTN)等。本说明书并不限制所采用的区块链中继通信网络。
当区块链节点之间在基于P2P技术进行端到端直连时,可以使用SSL(SecureSocket Layer,安全套接字层)链路来实现加密通信。例如,当区块链节点Node A需要向区块链节点Node B发送区块链消息时,Node A与Node B之间可以基于SSL协议进行密钥协商,从而基于协商出的传输密钥在该Node A与Node B之间建立起SSL链路。那么,区块链消息在该SSL链路内部传输时都处于密文状态(由上述的传输密钥加密),仅由持有该传输密钥的Node A与Node B能够解密出相应的消息明文。
但是,当区块链节点之间通过区块链中继通信网络进行通信时,情况则有所不同。假定Node A对接区块链中继通信网络中的中继节点a。虽然可以通过在Node A与中继节点a之间建立SSL链路,使得区块链消息在该SSL链路内部传输时均处于密文状态,但是由于传输密钥是在Node A与中继节点a之间协商得到,所以中继节点a能够通过该传输密钥对收到的消息密文进行解密,使得消息明文被暴露给区块链中继通信网络。
因此,为解决该问题,本说明书提出了一种面向区块链中继通信网络的密钥安全分发方案,能够在区块链节点之间实现安全的密钥分发,使得区块链节点之间能够基于分发的密钥实现面向区块链中继通信网络的端到端加密。
图1是一示例性实施例提供的一种面向区块链中继通信网络的密钥安全分发方法的流程图。如图1所示,该方法可以包括:
步骤102,源区块链节点通过区块链中继通信网络向目标区块链节点发送密钥分发消息,所述密钥分发消息中包含由所述目标区块链节点的链上节点身份公钥对待分发的对称密钥进行加密后的密钥密文,以及由所述源区块链节点的链上节点身份私钥为所述密钥密文生成的数字签名。
通过在一物理设备上运行区块链平台代码(即链代码),可以在该物理设备上形成相应的节点实例。如果不考虑该物理设备所实现的其他功能,可以不对物理设备和节点实例加以区分,此时该物理设备或节点实例均可以称为区块链节点。如果考虑到该物理设备所实现的其他功能,比如除了节点实例之外还可以运行其他的业务实例,此时可以将该物理设备称为节点设备、将该节点实例称为区块链节点。总之,区块链节点可以是物理设备层面的概念,也可以是逻辑层面的概念,需要根据实际情况来确定。
在本说明书的技术方案中,与密钥分发相关的功能逻辑可以属于上述的区块链平台代码的一部分,则源区块链节点和目标区块链节点可以为相应的节点实例,也可以为节点实例所处的物理设备。或者,与密钥分发相关的功能逻辑也可以属于一业务实例,该业务实例与节点实例处于同一物理设备上,则源区块链节点和目标区块链节点可以为相应的物理设备。
源区块链节点可以为区块链网络中的任意区块链节点。目标区块链节点可以为区块链网络中除源区块链节点之外的任意区块链节点,且目标区块链节点的数量可以为一个或多个。因此,区块链网络中的每个区块链节点都可以作为本说明书中的源区块链节点,并将除自身之外的其他一个或多个区块链节点作为目标区块链节点,以向该目标区块链节点分发密钥。
源区块链节点和目标区块链节点可以分别维护有区块链节点列表。某一区块链节点所维护的区块链节点列表,通常用于记录该区块链节点所处区块链网络中的所有区块链节点的信息。当然,在一些情况下,譬如涉及到多条区块链网络之间的跨链场景时,区块链节点列表也可以维护其他区块链网络中的区块链节点的信息。因此,源区块链节点与目标区块链节点可以属于同一区块链网络,也可以分别属于不同的区块链网络。区块链节点列表中所维护的区块链节点的信息,譬如可以包括区块链节点的节点标识、链上节点身份公钥、节点IP和端口信息等。链上节点身份是基于非对称加密算法生成的,每个区块链节点的链上节点身份包含链上节点身份公钥和链上节点身份私钥。链上节点身份私钥由每个区块链节点自行维护、避免对外泄露,而链上节点身份公钥则需要公开至其他的区块链节点,以便添加至其他区块链节点维护的区块链节点列表中。由于链上节点身份属于区块链节点之间实现链上交互的信任基础,因此区块链节点之间可以借助于各自的链上节点身份,实现本说明书的安全密钥分发方案,而无需额外引入CA(Certificate Authority,证书授权中心)等中心化的身份认证机构。
若确定由源区块链节点将对称密钥分发至目标区块链节点:可以获取该目标区块链节点的链上节点身份公钥,并基于非对称加密算法将该链上节点身份公钥用于对待分发的对称密钥进行加密,从而生成相应的密钥密文。那么,由于该密钥密文仅能够由目标区块链节点所维护的链上节点身份私钥所解密,因而能够安全地通过区块链中继通信网络进行传输,而不必担心对称密钥在区块链中继通信网络中暴露。其中,对称密钥可以为任意密钥,比如随机生成的对称密钥,且生成过程中可以采用相关技术中的任意密钥生成算法,本说明书并不对此进行限制。
进一步的,可以通过源区块链节点的链上节点身份私钥为上述的密钥密文生成数字签名,目标区块链节点可以根据源区块链节点的链上节点身份公钥对该数字签名进行验证,从而确定密钥密文在传输过程中是否发生了缺失、替换等,防止由于中间人攻击等带来的安全性问题。
密钥分发消息包含上述的密钥密文和针对该密钥密文的数字签名。该密钥分发消息可由源区块链节点生成,或者由其他对象生成后提供至源区块链节点,本说明书并不对此进行限制。如果由其他对象生成密钥分发消息,那么源区块链节点可以将自身的链上节点身份私钥托管至该对象,以便该对象可以据此为密钥密文生成相应的数字签名。
源区块链节点通过区块链中继通信网络发送密钥分发消息时,与相关技术中通过区块链中继通信网络进行消息传输的过程无异。以图2所示的场景为例,如图2所示:假定源区块链节点为Node A、目标区块链节点为Node B,Node A与区块链中继通信网络中的中继节点a相连、Node B与区块链中继通信网络中的中继节点b相连。Node A可以将密钥分发消息发送至中继节点a,由中继节点a将该密钥分发消息路由至中继节点b后,由中继节点b进一步将该密钥分发消息发送至Node B。
在一实施例中,区块链中继通信网络可以对需要传输的消息进行广播,使得所有连接至该区块链中继通信网络的区块链节点均可以接收到消息。例如,中继节点a在收到密钥分发消息后,在区块链中继通信网络中对该密钥分发消息进行广播,并进一步由每个中继节点都将接收到的密钥分发消息转发至自身相连的区块链节点,比如中继节点c会接收到密钥分发消息并转发至区块链节点Node C。当然,由于密钥密文采用目标区块链节点的链上节点身份公钥进行加密,因而只有作为目标区块链节点的Node B可以通过自身的链上节点身份私钥完成解密,其他区块链节点即便收到密钥分发消息也无法解密。
在另一实施例中,密钥分发消息中可以包含接收方节点指示信息,以使区块链中继通信网络将密钥分发消息发送至该接收方节点指示信息对应的区块链节点。此时,区块链中继通信网络对于密钥分发消息的转发将具有针对性,而不会发送至与目标区块链节点无关的中继节点。接收方节点指示信息可以包括目标区块链节点的节点标识。如果存在多个目标区块链节点:一种情况下,每条密钥分发消息中的接收方节点指示信息可以仅为一个目标区块链节点的节点标识,此时需要针对每一目标区块链节点分别发送一条密钥分发消息;另一种情况下,一条密钥分发消息中的接收方节点指示信息可以包括多个目标区块链节点的节点标识,此时仅需要发送一条密钥分发消息。或者,接收方节点指示信息可以包括目标区块链节点所属区块链节点集合的集合标识,尤其是当多个目标区块链节点属于同一个区块链节点集合时,通过该集合标识可以减少接收方节点指示信息的长度。这里的区块链节点集合可以为预先向区块链中继通信网络注册形成,同一区块链节点集合中的区块链节点可以为同一区块链网络中的全部或部分区块链节点,也可以同时包括来自多个区块链网络的区块链节点,可以根据业务需求进行注册,且该区块链节点集合中所含的区块链节点可以根据需求进行增删。
区块链中继通信网络中的各个中继节点可以维护有:各个中继节点之间的连接关系、每个中继节点与区块链节点之间的连接关系。基于所维护的上述信息,中继节点可以生成相应的路由策略,以用于进行消息传输。例如,当中继节点a读取密钥分发消息中的接收方节点指示信息时,确定目标区块链节点为Node B,该中继节点a会确定出自身与连接至该Node B的中继节点b之间的转发路径,并通过该转发路径对密钥分发消息进行转发至中继节点b。如果中继节点a与中继节点b之间存在直接相连的链路,上述转发路径为“中继节点a-中继节点b”,即中继节点a可以将密钥分发消息直接发送至中继节点b,而不会发送至中继节点c。如果中继节点a与中继节点b之间不存在直接相连的链路,或者直接相连的链路出现故障等,上述的转发路径可以为“中继节点a-中继节点c-中继节点b”,则中继节点a可以将密钥分发消息转发至中继节点c;与中继节点a相类似的,中继节点c在确定目标区块链节点为Node B后,也会确定出自身与连接至该Node B的中继节点b之间的转发路径,并通过该转发路径对密钥分发消息进行转发至中继节点b,譬如确定出的转发路径为“中继节点c-中继节点b”,即中继节点c可以将密钥分发消息直接发送至中继节点b。
如果存在上述的区块链节点集合,各个中继节点还可以维护有各个区块链节点集合的信息,包括集合标识、所含的区块链节点等。例如,当中继节点a读取密钥分发消息中的接收方节点指示信息时,确定该接收方节点指示信息为集合标识SID1,且确定出SID1所含的区块链节点为Node B和Node C,那么中继节点a将Node B和Node C分别确定为目标区块链节点,并基于如前所述的方式将密钥分发消息分别路由至Node B相连的中继节点b、NodeC相连的中继节点c,此处不再赘述。
步骤104,所述目标区块链节点接收到所述密钥分发消息后,根据所述源区块链节点的链上节点身份公钥对所述密钥分发消息中的数字签名进行验签,以及用自身的链上节点身份私钥对所述密钥密文进行解密,并在验签成功的情况下将解密得到的对称密钥关联至所述源区块链节点。
目标区块链节点在收到密钥分发消息后,可以分别获取该密钥分发消息所含的密钥密文和数字签名。如前所述,目标区块链节点可以根据源区块链节点的节点标识,从自身维护的区块链节点列表中获取源区块链节点的链上节点身份公钥,以用于对上述的数字签名进行验签。由于在密钥分发消息中,定义了该数字签名是针对密钥密文而生成,因而目标区块链节点会根据密钥密文完成对数字签名的验证。如果验证成功,表明该密钥分发消息确实来自于源区块链节点,且传输过程中没有发生数据缺失,也没有受到中间人攻击。如果验证失败,表明密钥密文和数字签名中的至少之一存在异常,目标区块链节点可以丢弃或返回告警消息。
密钥分发消息中可以包含发送方节点标识信息,该发送方节点标识信息用于记录作为发送方的区块链节点的节点标识。因此,在源区块链节点所发出的密钥分发消息中,发送方节点标识信息的取值为源区块链节点的节点标识。相应的,目标区块链节点可以从发送方节点标识信息中提取源区块链节点的节点标识,并根据提取的节点标识从自身维护的区块链节点列表中获取源区块链节点对应的链上节点身份公钥,进而根据获取的链上节点身份公钥对密钥分发消息中的数字签名进行验签。
当然,密钥分发消息中的发送方节点标识信息只是用于表明发送方节点身份的一种方式,目标区块链节点还可以通过其他方式获得发送方节点身份,本说明书并不对此进行限制。例如,区块链中继通信网络在获得密钥分发消息后,可以将该密钥分发消息封装为中继消息,并在区块链中继通信网络中传输该中继消息。其中,中继消息中可以封装有源区块链节点的节点标识,则源区块链节点的节点标识可由区块链中继通信网络从中继消息中解封后告知目标区块链节点。具体的,以上述的Node A向Node B分发密钥为例:中继节点a收到Node A发送的密钥分发消息后,将该密钥分发消息封装为中继消息,该封装过程中会在该中继消息中添加Node A的节点标识。相应的,中继节点b收到该中继消息后,可以通过解封获取Node A的节点标识,并将该节点标识与密钥分发消息一并发送至Node B,使得Node B获知该密钥分发消息来自Node A。
目标区块链节点可以通过自身的链上节点身份私钥对密钥密文进行解密。如果密钥密文没有在传输过程中发生缺失,目标区块链节点通常可以顺利完成解密。如果发生了中间人攻击,那么攻击者会用目标区块链节点的链上节点身份公钥对该攻击者自己提供的密钥进行加密,目标区块链节点同样可以完成解密。因此,目标区块链节点即便顺利解密,也应当结合对数字签名的验签结果来确定后续操作:只有当验签成功时,目标区块链节点才将解密得到的密钥确定为源区块链节点所分发的对称密钥,否则应当丢弃解密出的密钥。
如前所述,一条密钥分发消息可能同时存在多个目标区块链节点,那么该密钥分发消息中应当包含分别对应于每一目标区块链节点的数据集:每一数据集包括由相应目标区块链节点的链上节点身份公钥生成的密钥密文和相应的数字签名。假定Node A希望将对称密钥分发至Node B和Node C,则密钥分发消息中包括Node B对应的数据集M1、Node C对应的数据集M2,其中:M1包括由Node B的链上节点身份公钥生成的密钥密文enc_key_B和相应的数字签名enc_key_B_sign,M2包括由Node C的链上节点身份公钥生成的密钥密文enc_key_C和相应的数字签名enc_key_C_sign。相应的,每一目标区块链节点在收到密钥分发消息后,需要找到自身对应的数据集,以便实现前文所述的解密和验签。每一数据集可以包含相应的目标区块链节点的节点标识,以便于各个目标区块链节点准确找到自身对应的数据集;或者,数据集可以不包含相应的目标区块链节点的节点标识,每个目标区块链节点需要分别对各个数据集进行尝试,直至找到自身对应的数据集。
在验签成功的情况下,目标区块链节点可以将解密出的对称密钥关联至源区块链节点,即将该对称密钥记录为源区块链节点所分发的密钥。例如,目标区块链节点可以将该对称密钥与源区块链节点的节点标识进行关联存储,以便与其他区块链节点分发的对称密钥进行区分。
源区块链节点在将对称密钥分发至目标区块链节点后,虽然可以在后续一直使用该对称密钥进行交互,但出于安全考虑,可以在一定时长或使用次数后更新该对称密钥,因而涉及到对称密钥的版本更新。
在一实施例中,目标区块链节点可以在每次收到源区块链节点分发的对称密钥后:如果先前尚未存储过源区块链节点分发的对称密钥,就将该对称密钥关联至源区块链节点;如果先前已存储过源区块链节点分发的对称密钥,就将已存储的对称密钥更新为本次收到的对称密钥。
在另一实施例中,密钥分发消息中可以包含当前密钥版本。在一种情况下,如果目标区块链节点仅允许针对源区块链节点维护唯一密钥,并且当前密钥版本高于源区块链节点对应的历史最新密钥版本,则目标区块链节点将本次收到的对称密钥关联至源区块链节点,以替换历史最新密钥版本对应的历史密钥。通过密钥版本的比较,目标区块链节点可以准确识别出源区块链节点希望采用的对称密钥,若攻击者将源区块链节点在历史上发送过的密钥分发消息重发至目标区块链节点,目标区块链节点可以终止密钥更新的操作。在另一种情况下,如果目标区块链节点允许针对源区块链节点维护多个密钥,那么目标区块链节点不需要对密钥版本进行比较,可以直接将本地收到的对称密钥关联至源区块链节点,并通过上述的当前密钥版本标记该对称密钥。此时,即便攻击者将源区块链节点在历史上发送过的密钥分发消息重发至目标区块链节点,也不会影响目标区块链节点所维护的对称密钥。
在将对称密钥关联至源区块链节点后,目标区块链节点可以通过区块链中继通信网络向源区块链节点返回确认消息,该确认消息中包含由目标区块链节点的链上节点身份私钥生成的数字签名。目标区块链节点向源区块链节点返回确认消息的过程,可以参考前述的源区块链节点向目标区块链节点发送密钥分发消息的过程,譬如该确认消息中可以包含接收方节点指示信息,且该接收方节点指示信息的取值为源区块链节点的节点标识,使得区块链中继通信网络可以据此将确认消息发送至源区块链节点,此处不再赘述。源区块链节点在收到确认消息后,可以根据目标区块链节点的链上节点身份公钥对确认消息中的数字签名进行验签,并在验签成功的情况下确定对称密钥已成功分发至目标区块链节点。其中,与密钥分发消息相类似的,确认消息中可以包含发送方节点标识信息,且该发送方节点标识信息可以为目标区块链节点的节点标识;或者,区块链中继通信网络可以对该确认消息进行封装后发送,并在封装得到的中继消息中添加目标区块链节点的节点标识,总之源区块链节点可以确定上述的确认消息来自于目标区块链节点,并从自身维护的区块链节点列表中获取目标区块链节点的链上节点身份公钥,以针对确认消息中的数字签名进行验签,此处不再赘述。
目标区块链节点可以针对确认消息所含的任意内容生成相应的数字签名。例如,确认消息中可以包含目标区块链节点的节点标识,那么目标区块链节点可以针对其自身的节点标识生成数字签名;相应的,源区块链节点一方面可以根据节点标识获取相应的链上节点身份公钥,另一方面可以根据该节点标识和链上节点身份公钥对确认消息中的数字签名进行验签。再例如,确认消息中可以包含源区块链节点的节点标识,那么目标区块链节点可以针对源区块链节点的节点标识生成数字签名,源区块链节点的验签过程此处不再赘述。
在针对确认消息进行验签成功后,源区块链节点可以确定该确认消息确实来自目标区块链节点,因而可以确定前述的对称密钥已经成功分发至目标区块链节点。那么,源区块链节点可以在后续过程中,使用该对称密钥与目标区块链节点进行加密通信。例如,源区块链节点可以通过区块链中继通信网络向目标区块链节点发送加密后区块链消息,该加密后区块链消息由上述的对称密钥进行加密生成。相应的,目标区块链节点根据关联至该源区块链节点的对称密钥对加密后区块链消息进行解密,以获得明文的区块链消息。由于在分发过程中,对称密钥是以加密后的密钥密文的形式在区块链中继通信网络中传输,使得区块链中继通信网络无法获知该对称密钥,所以区块链中继通信网络无法侵入源区块链节点与目标区块链节点的加密通信过程,确保了该加密通信过程的安全性。其中,源区块链节点通过区块链中继通信网络向目标区块链节点发送加密后区块链消息的过程,可以参考前述的密钥分发消息的发送过程,此处不再赘述。
结合前文所述,目标区块链节点可以对源区块链节点所发的密钥分发消息中的数字签名进行验签,源区块链节点可以对目标区块链节点所发的确认消息中的数字签名进行验签。换言之,源区块链节点和目标区块链节点中的任一方区块链节点对另一方区块链节点所发消息中的数字签名进行验签,其过程可以总结为:任一方区块链节点根据另一方区块链节点的节点标识,从自身维护的区块链节点列表中获取该另一方区块链节点对应的链上节点身份公钥;以及,该任一方区块链节点根据获取的链上节点身份公钥对另一方区块链节点所发消息中的数字签名进行验签。
其中,任一方区块链节点可以通过多种方式获得另一方区块链节点的节点标识,本说明书并不对此进行限制。例如前文提供了两种示例性的方式:另一方区块链节点所发消息中可以包含发送方节点标识信息,且另一方区块链节点的节点标识由该任一方区块链节点从该发送方节点标识信息中读取得到;或者,另一方区块链节点所发消息被封装为中继消息后在区块链中继通信网络中进行传输,且中继消息中封装有另一方区块链节点的节点标识;其中,该另一方区块链节点的节点标识由区块链中继通信网络从中继消息中解封后告知任一方区块链节点。
本说明书中的源区块链节点和目标区块链节点只是不同的角色划分,任意一个区块链节点均可以作为源区块链节点或目标区块链节点,或者同时作为源区块链节点和目标区块链节点。例如,对于同一区块链网络中的所有区块链节点而言,每一区块链节点均可以作为源区块链节点来向其他的区块链节点分发对称密钥,且每一区块链节点均可以作为目标区块链节点来接收其他区块链节点所分发的对称密钥,这样每一区块链节点都维护有其他区块链节点所分发的对称密钥。那么,当某一区块链节点需要向其他区块链节点发送区块链消息时,可以通过自身所分发的对称密钥加密该区块链消息,并将加密后区块链消息通过区块链中继通信网络发送至其他区块链节点,且其他的每一区块链节点均可以对收到的加密后区块链消息进行解密。
需要说明的是,区块链中继通信网络中的中继节点,除了可以是物理设备之外,也可以是逻辑设备。对于逻辑设备而言,例如区块链中继通信网络可以是基于云处理平台搭建的骨干通信网络,此时中继节点可以为针对云处理平台上的云处理资源进行虚拟化而创建的虚拟设备。
图3是一示例性实施例提供的一种基于源区块链节点侧的密钥安全分发方法的流程图。
如图3所示,该方法可以包括:
步骤302,获取密钥分发消息,所述密钥分发消息中包含由目标区块链节点的链上节点身份公钥对待分发的对称密钥进行加密后的密钥密文,以及由所述源区块链节点的链上节点身份私钥为所述密钥密文生成的数字签名。
步骤304,通过区块链中继通信网络向所述目标区块链节点发送所述密钥分发消息,使所述目标区块链节点接收到所述密钥分发消息后:根据所述源区块链节点的链上节点身份公钥对所述密钥分发消息中的数字签名进行验签,以及用自身的链上节点身份私钥对所述密钥密文进行解密,并在验签成功的情况下将解密得到的对称密钥关联至所述源区块链节点。
如前所述,源区块链节点可以接收所述目标区块链节点通过所述区块链中继通信网络返回的确认消息,所述确认消息由所述目标区块链节点在将所述对称密钥关联至所述源区块链节点后返回,所述确认消息中包含由所述目标区块链节点的链上节点身份私钥生成的数字签名;以及,源区块链节点可以根据所述目标区块链节点的链上节点身份公钥对所述确认消息中的数字签名进行验签,并在验签成功的情况下确定所述对称密钥已成功分发至所述目标区块链节点。
如前所述,所述源区块链节点和所述目标区块链节点中的任一方区块链节点对另一方区块链节点所发消息中的数字签名进行验签,包括:所述任一方区块链节点根据所述另一方区块链节点的节点标识,从自身维护的区块链节点列表中获取所述另一方区块链节点对应的链上节点身份公钥;所述任一方区块链节点根据获取的链上节点身份公钥对所述另一方区块链节点所发消息中的数字签名进行验签。
如前所述,所述另一方区块链节点所发消息中包含发送方节点标识信息,所述另一方区块链节点的节点标识由所述任一方区块链节点从所述发送方节点标识信息中读取得到;或者,
所述另一方区块链节点所发消息被封装为中继消息后在所述区块链中继通信网络中进行传输,且所述中继消息中封装有所述另一方区块链节点的节点标识;其中,所述另一方区块链节点的节点标识由所述区块链中继通信网络从所述中继消息中解封后告知所述任一方区块链节点。
如前所述,所述密钥分发消息中可以包含接收方节点指示信息,以使所述区块链中继通信网络将所述密钥分发消息发送至所述接收方节点指示信息对应的区块链节点。
如前所述,所述接收方节点指示信息可以包括:
所述目标区块链节点的节点标识;或者,
所述目标区块链节点所属区块链节点集合的集合标识。
如前所述,所述密钥分发消息中可以包含当前密钥版本,以使所述目标区块链节点通过下述方式将解密得到的对称密钥关联至所述源区块链节点:
在仅允许针对所述源区块链节点维护唯一密钥的情况下,若所述当前密钥版本高于所述源区块链节点对应的历史最新密钥版本,则将所述对称密钥关联至所述源区块链节点,以替换所述历史最新密钥版本对应的历史密钥;
在允许针对所述源区块链节点维护多个密钥的情况下,直接将所述对称密钥关联至所述源区块链节点,并通过所述当前密钥版本标记所述对称密钥。
如前所述,源区块链节点可以通过所述区块链中继通信网络向所述目标区块链节点发送加密后区块链消息,所述加密后区块链消息由所述对称密钥进行加密生成,以使所述目标区块链节点根据关联至所述源区块链节点的对称密钥对所述加密后区块链消息进行解密。
在图1所示的实施例中,已经对源区块链节点与目标区块链节点之间的交互过程进行了详细描述,图3所示的实施例在源区块链节点的角度对该交互过程所涉及的内容进行了描述,相关细节与解释均可以参考前述的交互过程,此处不再赘述。
图4是一示例性实施例提供的一种基于目标区块链节点侧的密钥安全分发方法的流程图。如图4所示,该方法可以包括:
步骤402,接收源区块链节点通过区块链中继通信网络发送的密钥分发消息,所述密钥分发消息中包含由所述目标区块链节点的链上节点身份公钥对待分发的对称密钥进行加密后的密钥密文,以及由所述源区块链节点的链上节点身份私钥为所述密钥密文生成的数字签名。
步骤404,根据所述源区块链节点的链上节点身份公钥对所述密钥分发消息中的数字签名进行验签,以及用自身的链上节点身份私钥对所述密钥密文进行解密,并在验签成功的情况下将解密得到的对称密钥关联至所述源区块链节点。
如前所述,目标区块链节点在将所述对称密钥关联至所述源区块链节点后,可以通过所述区块链中继通信网络向所述源区块链节点返回确认消息,所述确认消息中包含由所述目标区块链节点的链上节点身份私钥生成的数字签名,以使所述源区块链节点:根据所述目标区块链节点的链上节点身份公钥对所述确认消息中的数字签名进行验签,并在验签成功的情况下确定所述对称密钥已成功分发至所述目标区块链节点。
如前所述,所述源区块链节点和所述目标区块链节点中的任一方区块链节点对另一方区块链节点所发消息中的数字签名进行验签,包括:所述任一方区块链节点根据所述另一方区块链节点的节点标识,从自身维护的区块链节点列表中获取所述另一方区块链节点对应的链上节点身份公钥;所述任一方区块链节点根据获取的链上节点身份公钥对所述另一方区块链节点所发消息中的数字签名进行验签。
如前所述,所述另一方区块链节点所发消息中包含发送方节点标识信息,所述另一方区块链节点的节点标识由所述任一方区块链节点从所述发送方节点标识信息中读取得到;或者,
所述另一方区块链节点所发消息被封装为中继消息后在所述区块链中继通信网络中进行传输,且所述中继消息中封装有所述另一方区块链节点的节点标识;其中,所述另一方区块链节点的节点标识由所述区块链中继通信网络从所述中继消息中解封后告知所述任一方区块链节点。
如前所述,所述密钥分发消息中可以包含接收方节点指示信息,以使所述区块链中继通信网络将所述密钥分发消息发送至所述接收方节点指示信息对应的区块链节点。
如前所述,所述接收方节点指示信息可以包括:
所述目标区块链节点的节点标识;或者,
所述目标区块链节点所属区块链节点集合的集合标识。
如前所述,所述密钥分发消息中可以包含当前密钥版本;相应地,目标区块链节点可以:
在仅允许针对所述源区块链节点维护唯一密钥的情况下,若所述当前密钥版本高于所述源区块链节点对应的历史最新密钥版本,则将所述对称密钥关联至所述源区块链节点,以替换所述历史最新密钥版本对应的历史密钥;
在允许针对所述源区块链节点维护多个密钥的情况下,直接将所述对称密钥关联至所述源区块链节点,并通过所述当前密钥版本标记所述对称密钥。
如前所述,目标区块链节点可以接收所述源区块链节点通过所述区块链中继通信网络发送的加密后区块链消息,所述加密后区块链消息由所述对称密钥进行加密生成;然后,目标区块链节点可以根据关联至所述源区块链节点的对称密钥对所述加密后区块链消息进行解密。
在图1所示的实施例中,已经对源区块链节点与目标区块链节点之间的交互过程进行了详细描述,图4所示的实施例在目标区块链节点的角度对该交互过程所涉及的内容进行了描述,相关细节与解释均可以参考前述的交互过程,此处不再赘述。
下面以如图2所示的区块链节点Node A、Node B,以及中继节点a、b为例,结合图5对本说明书的密钥分发方案进行说明。图5是一示例性实施例提供的一种密钥安全分发的交互流程图。如图5所示,假定Node A希望通过区块链中继通信网络向Node B分发对称密钥private_key,则区块链节点Node A、Node B和以及中继节点a、b之间的交互过程可以包括以下步骤:
步骤501,Node A生成private_key。
Node A可以通过相关技术中的任意密钥生成算法,生成一对称密钥,以作为上述的private_key。当然,该private_key可以是Node A希望进行密钥分发时临时生成,也可以由Node A在先前已经生成的密钥集合中进行选取,本说明书并不对此进行限制。
步骤502,Node A生成PrivateKeyMsg。
Node A确定向Node B分发上述的private_key后,可以从自身维护的区块链节点列表中获取Node B的链上节点身份公钥Pub_key_B,并通过Pub_key_B对private_key进行非对称加密,得到相应的密钥密文enc_private_key。为了防范中间人攻击,Node A可以通过自身的链上节点身份私钥Pri_key_A对enc_private_key进行签名,生成相应的数字签名enc_private_key_sign。另外,Node A还可以为本次分发的private_key确定相应的版本号private_key_ver,以区分于Node A分发过的其他密钥。
基于上述信息,Node A可以生成密钥分发消息PrivateKeyMsg,该PrivateKeyMsg可以包含下述字段:
其中,node_id_from字段用于填写Node A的节点ID,node_id_to字段用于填写Node B的节点ID。encrypted_symetric_private_key字段用于填写密钥密文,即上述的enc_private_key。enc_private_key_sign字段用于填写针对密钥密文的数字签名。private_key_ver字段用于填写密钥private_key的版本号。
步骤503,Node A将PrivateKeyMsg通过区块链中继通信网络发送至Node B。
Node A首先将PrivateKeyMsg发送至自身所连接的中继节点a,并由中继节点a基于路由策略直接或间接将PrivateKeyMsg发送至中继节点b,进而由中继节点b将PrivateKeyMsg发送至Node B。由于enc_private_key始终处于密文状态,且只有Node B维护有解密密钥(Node B的链上节点身份私钥Pri_key_B),因而中继节点a、中继节点b和区块链中继通信网络中的其他中继节点都无法获知明文的private_key。
步骤504,Node B对PrivateKeyMsg中的enc_private_key_sign进行验签、对enc_private_key进行解密。
Node B在接收到PrivateKeyMsg后,根据node_id_from字段中提取的节点ID,从自身维护的区块链节点列表中获取该节点ID对应的链上节点身份公钥,以用于对enc_private_key_sign进行验签。如果PrivateKeyMsg的传输过程无异常,Node B将从node_id_from字段中提取到Node A的节点ID,并进而获取其链上节点身份公钥Pub_key_A,然后根据该Pub_key_A和PrivateKeyMsg中的enc_private_key对enc_private_key_sign进行验签。
Node B可以在验签的过程中,同时根据自身的链上节点身份私钥Pri_key_B对enc_private_key进行解密。Node B也可以在验签成功的情况下才执行解密操作,本说明书并不对此进行限制。当然,即便是并行实施验签和解密,Node B也仅在验签成功的情况下,才会认可解密得到的private_key。
步骤505a,Node B记录密钥。
Node B在对enc_private_key_sign验签成功的情况下,确定解密获得的private_key为Node A所分发的对称密钥,并将该private_key关联至Node A。例如,Node B可以将该private_key、private_key_ver与Node A的节点ID进行关联存储。
步骤505b,Node B通过区块链中继通信网络向Node A返回PrivateKeyRespMsg消息。
上述的步骤505a与步骤505b之间并不存在必然的先后顺序,两者之间相互独立。
Node B通过向Node A返回确认消息PrivateKeyRespMsg,向Node A表明自己已经成功获得所分发的密钥private_key。其中,PrivateKeyRespMsg可以包含下述字段:
其中,node_id_from字段用于填写Node B的节点ID,node_id_to字段用于填写Node A的节点ID。node_id_from_sign为Node B通过自身的链上节点身份私钥Pri_key_B对node_id_from字段的内容(即Node B的节点ID)进行签名操作而生成的数字签名。private_key_ver字段为Node B所记录的private_key的版本号信息。
Node B首先将PrivateKeyRespMsg发送至自身所连接的中继节点b,并由中继节点b基于路由策略直接或间接将PrivateKeyRespMsg发送至中继节点a,进而由中继节点a将PrivateKeyRespMsg发送至Node A。
步骤506,Node A对PrivateKeyRespMsg中的node_id_from_sign进行验签。
Node A在接收到PrivateKeyRespMsg后,根据node_id_from字段中提取的节点ID,从自身维护的区块链节点列表中获取该节点ID对应的链上节点身份公钥,以用于对node_id_from_sign进行验签。如果PrivateKeyRespMsg的传输过程无异常,Node A将从node_id_from字段中提取到Node B的节点ID,并进而获取其链上节点身份公钥Pub_key_B,然后根据该Pub_key_B和PrivateKeyRespMsg中的node_id_from对node_id_from_sign进行验签。
在验签成功的情况下,Node A可以确定该PrivateKeyRespMsg来自Node B,从而确定private_key已经成功分发至Node B。
步骤507,Node A通过区块链中继通信网络向Node B发送RelayableMsg消息。
由于private_key已经成功分发至Node B,因而Node A在向Node B发送区块链消息时可以采用该private_key进行加密。例如,当Node A希望发送区块链消息raw_data时,可以采用private_key加密生成相应的加密后区块链消息enc_raw_data,然后据此生成RelayableMsg消息。例如,RelayableMsg消息可以包含下述字段:
其中,node_id_from字段用于填写Node B的节点ID,node_id_to字段用于填写Node A的节点ID。encrypted_raw_data字段用于填写加密后区块链消息enc_raw_data。
Node A首先将RelayableMsg发送至自身所连接的中继节点a,并由中继节点a基于路由策略直接或间接将RelayableMsg发送至中继节点b,进而由中继节点b将RelayableMsg发送至Node B。由于enc_raw_data始终处于密文状态,且基于前文可知,中继节点a、中继节点b和区块链中继通信网络中的其他中继节点都无法获得解密密钥private_key,因而无法对enc_raw_data解密得到明文的区块链消息raw_data。
步骤508,Node B对RelayableMsg中的enc_raw_data进行解密。
Node B在接收到RelayableMsg后,根据node_id_from字段中提取的节点ID,确定出自身维护的相关联的对称密钥private_key,进而通过该private_key对enc_raw_data进行解密,以获得明文的区块链消息raw_data。
综上所述,通过本说明书的技术方案,区块链节点之间在通过区块链中继通信网络进行数据传输的情况下,可以安全地实现密钥分发,不必担心区块链中继通信网络获得分发的对称密钥,使得区块链节点可以进而基于该对称密钥安全地实现端到端的加密通信。
图6是一示例性实施例提供的一种面向区块链中继通信网络的密钥安全分发系统的示意图。如图6所示,该系统可以包括:
源区块链节点601,用于通过区块链中继通信网络向目标区块链节点发送密钥分发消息,所述密钥分发消息中包含由所述目标区块链节点的链上节点身份公钥对待分发的对称密钥进行加密后的密钥密文,以及由所述源区块链节点的链上节点身份私钥为所述密钥密文生成的数字签名;
目标区块链节点602,用于在接收到所述密钥分发消息后,根据所述源区块链节点的链上节点身份公钥对所述密钥分发消息中的数字签名进行验签,以及用自身的链上节点身份私钥对所述密钥密文进行解密,并在验签成功的情况下将解密得到的对称密钥关联至所述源区块链节点。
如前所述,所述目标区块链节点602可以在将所述对称密钥关联至所述源区块链节点601后,通过所述区块链中继通信网络向所述源区块链节点601返回确认消息,所述确认消息中包含由所述目标区块链节点602的链上节点身份私钥生成的数字签名;所述源区块链节点601可以根据所述目标区块链节点602的链上节点身份公钥对所述确认消息中的数字签名进行验签,并在验签成功的情况下确定所述对称密钥已成功分发至所述目标区块链节点602。
如前所述,所述源区块链节点601和所述目标区块链节点602中的任一方区块链节点对另一方区块链节点所发消息中的数字签名进行验签,包括:
所述任一方区块链节点根据所述另一方区块链节点的节点标识,从自身维护的区块链节点列表中获取所述另一方区块链节点对应的链上节点身份公钥;
所述任一方区块链节点根据获取的链上节点身份公钥对所述另一方区块链节点所发消息中的数字签名进行验签。
如前所述,所述另一方区块链节点所发消息中包含发送方节点标识信息,所述另一方区块链节点的节点标识由所述任一方区块链节点从所述发送方节点标识信息中读取得到;或者,
所述另一方区块链节点所发消息被封装为中继消息后在所述区块链中继通信网络中进行传输,且所述中继消息中封装有所述另一方区块链节点的节点标识;其中,所述另一方区块链节点的节点标识由所述区块链中继通信网络从所述中继消息中解封后告知所述任一方区块链节点。
如前所述,所述密钥分发消息中可以包含接收方节点指示信息,以使所述区块链中继通信网络将所述密钥分发消息发送至所述接收方节点指示信息对应的区块链节点。
如前所述,所述接收方节点指示信息可以包括:
所述目标区块链节点602的节点标识;或者,
所述目标区块链节点602所属区块链节点集合的集合标识。
如前所述,所述密钥分发消息中可以包含当前密钥版本;所述目标区块链节点602将解密得到的对称密钥关联至所述源区块链节点601,包括:
在仅允许针对所述源区块链节点601维护唯一密钥的情况下,若所述当前密钥版本高于所述源区块链节点601对应的历史最新密钥版本,则将所述对称密钥关联至所述源区块链节点601,以替换所述历史最新密钥版本对应的历史密钥;
在允许针对所述源区块链节点601维护多个密钥的情况下,直接将所述对称密钥关联至所述源区块链节点601,并通过所述当前密钥版本标记所述对称密钥。
如前所述,所述源区块链节点601可以通过所述区块链中继通信网络向所述目标区块链节点602发送加密后区块链消息,所述加密后区块链消息由所述对称密钥进行加密生成;所述目标区块链节点602根据关联至所述源区块链节点601的对称密钥对所述加密后区块链消息进行解密。
图7是一示例性实施例提供的一种设备的示意结构图。请参考图7,在硬件层面,该设备包括处理器702、内部总线704、网络接口706、内存708以及非易失性存储器710,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器702从非易失性存储器710中读取对应的计算机程序到内存708中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图8,面向区块链中继通信网络的密钥安全分发装置可以应用于如图7所示的设备中,譬如该设备可以为源区块链节点,以实现本说明书的技术方案。其中,该面向区块链中继通信网络的密钥安全分发装置可以包括:
消息获取单元801,用于获取密钥分发消息,所述密钥分发消息中包含由目标区块链节点的链上节点身份公钥对待分发的对称密钥进行加密后的密钥密文,以及由所述源区块链节点的链上节点身份私钥为所述密钥密文生成的数字签名;
消息发送单元802,用于通过区块链中继通信网络向所述目标区块链节点发送所述密钥分发消息,使所述目标区块链节点接收到所述密钥分发消息后:根据所述源区块链节点的链上节点身份公钥对所述密钥分发消息中的数字签名进行验签,以及用自身的链上节点身份私钥对所述密钥密文进行解密,并在验签成功的情况下将解密得到的对称密钥关联至所述源区块链节点。
可选的,还包括:
消息接收单元803,接收所述目标区块链节点通过所述区块链中继通信网络返回的确认消息,所述确认消息由所述目标区块链节点在将所述对称密钥关联至所述源区块链节点后返回,所述确认消息中包含由所述目标区块链节点的链上节点身份私钥生成的数字签名;
结果确认单元804,根据所述目标区块链节点的链上节点身份公钥对所述确认消息中的数字签名进行验签,并在验签成功的情况下确定所述对称密钥已成功分发至所述目标区块链节点。
可选的,所述源区块链节点和所述目标区块链节点中的任一方区块链节点对另一方区块链节点所发消息中的数字签名进行验签,包括:
所述任一方区块链节点根据所述另一方区块链节点的节点标识,从自身维护的区块链节点列表中获取所述另一方区块链节点对应的链上节点身份公钥;
所述任一方区块链节点根据获取的链上节点身份公钥对所述另一方区块链节点所发消息中的数字签名进行验签。
可选的,
所述另一方区块链节点所发消息中包含发送方节点标识信息,所述另一方区块链节点的节点标识由所述任一方区块链节点从所述发送方节点标识信息中读取得到;或者,
所述另一方区块链节点所发消息被封装为中继消息后在所述区块链中继通信网络中进行传输,且所述中继消息中封装有所述另一方区块链节点的节点标识;其中,所述另一方区块链节点的节点标识由所述区块链中继通信网络从所述中继消息中解封后告知所述任一方区块链节点。
可选的,所述密钥分发消息中包含接收方节点指示信息,以使所述区块链中继通信网络将所述密钥分发消息发送至所述接收方节点指示信息对应的区块链节点。
可选的,所述接收方节点指示信息包括:
所述目标区块链节点的节点标识;或者,
所述目标区块链节点所属区块链节点集合的集合标识。
可选的,所述密钥分发消息中包含当前密钥版本,以使所述目标区块链节点通过下述方式将解密得到的对称密钥关联至所述源区块链节点:
在仅允许针对所述源区块链节点维护唯一密钥的情况下,若所述当前密钥版本高于所述源区块链节点对应的历史最新密钥版本,则将所述对称密钥关联至所述源区块链节点,以替换所述历史最新密钥版本对应的历史密钥;
在允许针对所述源区块链节点维护多个密钥的情况下,直接将所述对称密钥关联至所述源区块链节点,并通过所述当前密钥版本标记所述对称密钥。
可选的,所述消息发送单元802还用于:
通过所述区块链中继通信网络向所述目标区块链节点发送加密后区块链消息,所述加密后区块链消息由所述对称密钥进行加密生成,以使所述目标区块链节点根据关联至所述源区块链节点的对称密钥对所述加密后区块链消息进行解密。
请参考图9,面向区块链中继通信网络的密钥安全分发装置可以应用于如图7所示的设备中,譬如该设备可以为目标区块链节点,以实现本说明书的技术方案。其中,该面向区块链中继通信网络的密钥安全分发装置可以包括:
消息接收单元901,用于接收源区块链节点通过区块链中继通信网络发送的密钥分发消息,所述密钥分发消息中包含由所述目标区块链节点的链上节点身份公钥对待分发的对称密钥进行加密后的密钥密文,以及由所述源区块链节点的链上节点身份私钥为所述密钥密文生成的数字签名;
消息处理单元902,用于根据所述源区块链节点的链上节点身份公钥对所述密钥分发消息中的数字签名进行验签,以及用自身的链上节点身份私钥对所述密钥密文进行解密,并在验签成功的情况下将解密得到的对称密钥关联至所述源区块链节点。
可选的,还包括:
消息返回单元903,在将所述对称密钥关联至所述源区块链节点后,通过所述区块链中继通信网络向所述源区块链节点返回确认消息,所述确认消息中包含由所述目标区块链节点的链上节点身份私钥生成的数字签名,以使所述源区块链节点:根据所述目标区块链节点的链上节点身份公钥对所述确认消息中的数字签名进行验签,并在验签成功的情况下确定所述对称密钥已成功分发至所述目标区块链节点。
可选的,所述源区块链节点和所述目标区块链节点中的任一方区块链节点对另一方区块链节点所发消息中的数字签名进行验签,包括:
所述任一方区块链节点根据所述另一方区块链节点的节点标识,从自身维护的区块链节点列表中获取所述另一方区块链节点对应的链上节点身份公钥;
所述任一方区块链节点根据获取的链上节点身份公钥对所述另一方区块链节点所发消息中的数字签名进行验签。
可选的,
所述另一方区块链节点所发消息中包含发送方节点标识信息,所述另一方区块链节点的节点标识由所述任一方区块链节点从所述发送方节点标识信息中读取得到;或者,
所述另一方区块链节点所发消息被封装为中继消息后在所述区块链中继通信网络中进行传输,且所述中继消息中封装有所述另一方区块链节点的节点标识;其中,所述另一方区块链节点的节点标识由所述区块链中继通信网络从所述中继消息中解封后告知所述任一方区块链节点。
可选的,所述密钥分发消息中包含接收方节点指示信息,以使所述区块链中继通信网络将所述密钥分发消息发送至所述接收方节点指示信息对应的区块链节点。
可选的,所述接收方节点指示信息包括:
所述目标区块链节点的节点标识;或者,
所述目标区块链节点所属区块链节点集合的集合标识。
可选的,所述密钥分发消息中包含当前密钥版本;所述消息处理单元902具体用于:
在仅允许针对所述源区块链节点维护唯一密钥的情况下,若所述当前密钥版本高于所述源区块链节点对应的历史最新密钥版本,则将所述对称密钥关联至所述源区块链节点,以替换所述历史最新密钥版本对应的历史密钥;
在允许针对所述源区块链节点维护多个密钥的情况下,直接将所述对称密钥关联至所述源区块链节点,并通过所述当前密钥版本标记所述对称密钥。
可选的,
所述消息接收单元901还用于:接收所述源区块链节点通过所述区块链中继通信网络发送的加密后区块链消息,所述加密后区块链消息由所述对称密钥进行加密生成;
所述消息处理单元902还用于:根据关联至所述源区块链节点的对称密钥对所述加密后区块链消息进行解密。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。