(12)发明专利申请
(10)申请公布号 CN 112202809 A(43)申请公布日 2021.01.08
(21)申请号 202011114212.4(22)申请日 2020.02.04(62)分案原申请数据
202010080133.X 2020.02.04
(71)申请人 广州知弘科技有限公司地址 510000 广东省广州市黄埔区开创大
道1940号萝岗奥园广场H5栋1011房(72)发明人 不公告发明人 (51)Int.Cl.
H04L 29/06(2006.01)H04L 9/32(2006.01)
权利要求书2页 说明书6页 附图1页
(54)发明名称
区块链节点校验方法
(57)摘要
本发明提供了一种区块链节点校验方法,该方法包括:由区块链系统中所有已登录的终端节点投票生成认证成员组,所述认证成员组包括多个认证节点;通过所述认证成员组对待认证的终端节点身份进行校验,当终端用户登录区块链账户,仅对账户信息进行读取时,采用第一安全等级对应的方式进行身份校验;当终端用户登录区块链账户,并发起交易或记账时,采用第二安全等级对应的方式进行身份校验。本发明提出了一种区块链节点校验方法,在区块链节点中随机投票选择认证成员组对当前终端节点进行认证,根据业务的安全等级,选择不同的认证因素,提供不同安全级别的认证,兼顾了便利性和安全性。
CN 112202809 ACN 112202809 A
权 利 要 求 书
1/2页
1.区块链节点校验方法,其特征在于,包括:
由区块链系统中所有已登录的终端节点投票生成认证成员组,所述认证成员组包括多个认证节点;
通过所述认证成员组对待认证的终端节点身份进行校验,包括:当终端用户登录区块链账户,仅对账户信息进行读取时,采用第一安全等级对应的方式进行身份校验;
当终端用户登录区块链账户,并发起交易或记账时,采用第二安全等级对应的方式进行身份校验;所述第二安全等级对应的方式进行身份校验进一步包含:当用户发起交易或记账时,则采用记账验证的方式即增加身份特征biop和临时认证序列AUS作为身份验证的因素以验证用户,提供强认证。
2.根据权利要求1所述的方法,其特征在于,所述临时认证序列AUS包括多个子序列,每个子序列由认证成员组中的一个节点来生成;当认证成员组中的当前节点生成当前子序列时,将当前子序列广播至认证成员组中的其他节点,以使每个认证节点均获得完整的临时认证序列。
3.根据权利要求1所述的方法,其特征在于,该方法还包括,预先初始化所述多个节点之间的公共P2P信道和用于记账的公共记账链表;当用户发起上述交易或记账时,所述认证成员组通过IBFT2共识算法生成并添加含有记账数据和签名的区块到当前终端用户所对应的公共记账链表。
4.根据权利要求1所述的方法,其特征在于,所述待认证的终端节点包含身份特征模块和认证前端。
5.根据权利要求2所述的方法,其特征在于,所述身份特征模块为可信执行环境。6.根据权利要求1所述的方法,其特征在于,所述方法还包括:公共记账链表中的区块的增加量大于更新阈值后,认证节点相互进行认证,当某一认证节点不能通过全体认证节点的总数2/3的认证时,将该认证节点删除,不再作为认证节点。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:公共记账链表中的区块的增加量大于更新阈值后,当新增的节点通过全体认证节点的总数2/3的认证时,新增的节点被选择为新的认证节点。
8.根据权利要求1所述的方法,其特征在于,还包括:添加所述待认证节点与一个或多个认证节点之间含有记账数据和签名的认证区块到私有记账链表;通过节点之间的不同于公共P2P信道的私有信道,增量更新所述私有记账链表到所述两个或多个节点;其中,任意多个节点之间可通过所述私有信道传输数据。
9.根据权利要求1所述的方法,其特征在于,还包括:在节点向区块链注册阶段,终端节点将节点设备名n_u、密码pw以及用户标识un发送至认证协调者,认证协调者转发至认证成员组,认证成员组将登录信息{n_u,pw,un}进行存储,并以节点设备名为索引;终端节点用户将身份特征录入至身份特征模块,将节点身份特征信息的散列值hbiop保存在可信执行环境中;
终端和认证协调者都维护自身的认证密钥对,并且预先获得对方的公钥;终端的密钥对为{PKu,SKu},认证协调者的密钥对{PKCC,SKCC};在注册阶段建立二者间的会话,会话密钥为K;
2
CN 112202809 A
权 利 要 求 书
2/2页
然后,终端首先用二者间的会话密钥K对要发送的数据进行对称加密,并用终端的私钥对要发送的数据进行签名,最后用认证协调者的公钥对会话密钥K进行加密;
认证协调者接收到数据后,先用终端的公钥验证签名,若验证未通过,则认证失败,否则验证通过;
接下来用认证协调者的私钥解密会话密钥,并用会话密钥解密终端发送的数据;认证成员组维护有自己的认证密钥对,在认证协调者和认证成员组进行通信时,认证协调者和认证成员组也预先获得对方的公钥;
认证协调者用认证成员组的公钥加密要发送的数据,并用认证协调者的私钥对数据进行签名;认证成员组接收到数据后,先用认证协调者的公钥验证签名,若验证未通过,则认证失败,否则验证通过;接下来用自己的私钥解密认证协调者发送的数据。
3
CN 112202809 A
说 明 书区块链节点校验方法
1/6页
技术领域
[0001]本发明涉及区块链,特别涉及一种区块链节点校验方法。
背景技术
[0002]中心化系统基于服务器来存储和验证终端身份,一旦服务器被攻破,那么其中存储的所有终端身份验证信息都将被攻击者窃取,严重威胁用户数据的安全性。区块链技术的核心优势是去中心化,数据的验证、记账、存储和传输等过程均是基于对等系统结构,从而为解决中心化机构普遍存在的高成本、低效率等问题提供了解决方案。对等系统中所有节点均需要相互信任,并参与数据区块的验证过程。然而,安全性也是区块链迄今为止所面临的最重要的问题,区块链系统内各节点并非完全匿名,每次交易时发送方都需要对记账数据进行签名,接收方收到记账数据后需要进行验签,这些安全业务都需要用到一个或多个相关身份认证,进而身份的分发或生成需要一个可靠的身份管理机制。现有的区块链节点身份认证仍为单向认证,不仅效率低,且易遭到伪装攻击。发明内容
[0003]为解决上述现有技术所存在的问题,本发明提出了一种区块链去中心式节点防仿冒方法,包括:
从区块链系统中已登录的节点中随机生成认证协调者,所述认证协调者与待认证的终端节点之间进行通信,以及对认证数据进行转发;
由区块链系统中所有已登录的终端节点投票生成认证成员组,所述认证成员组包括多个认证节点;
通过所述认证成员组对待认证的终端节点身份进行校验。[0004]优选地,所述待认证的终端节点包含身份特征模块和认证前端。[0005]优选地,所述身份特征模块为可信执行环境。[0006]优选地,所述认证成员组在对待认证的终端节点身份进行校验之后,进一步包括,将用户信息保存在共识数据库中。[0007]优选地,在节点向区块链注册阶段,终端节点将节点设备名n_u、密码pw以及用户标识un发送至认证协调者,认证协调者转发至认证成员组,认证成员组将登录信息{u,pw,un}进行存储,并以节点设备名为索引;终端节点用户将身份特征录入至身份特征模块,将节点身份特征信息的散列值hbiop保存在可信执行环境中;
终端和认证协调者都维护自身的认证密钥对,并且预先获得对方的公钥;终端的密钥对为{PKu,SKu},认证协调者的密钥对{PKCC,SKCC};在注册阶段建立二者间的会话,会话密钥为K;
然后,终端首先用二者间的会话密钥K对要发送的数据进行对称加密,并用终端的私钥对要发送的数据进行签名,最后用认证协调者的公钥对会话密钥K进行加密;
认证协调者接收到数据后,先用终端的公钥验证签名,若验证未通过,则认证失败,否
4
CN 112202809 A
说 明 书
2/6页
则验证通过;
接下来用认证协调者的私钥解密会话密钥,并用会话密钥解密终端发送的数据;认证成员组维护有自己的认证密钥对,在认证协调者和认证成员组进行通信时,认证协调者和认证成员组也预先获得对方的公钥;
认证协调者用认证成员组的公钥加密要发送的数据,并用认证协调者的私钥对数据进行签名;认证成员组接收到数据后,先用认证协调者的公钥验证签名,若验证未通过,则认证失败,否则验证通过;接下来用自己的私钥解密认证协调者发送的数据。[0008]优选地,所述对待认证的终端节点身份进行校验,进一步包括:
当终端用户登录区块链账户,仅对账户信息进行读取时,采用第一安全等级对应的方式进行身份校验;
当终端用户登录区块链账户,并发起交易或记账时,采用第二安全等级对应的方式进行身份校验。
[0009]本发明相比现有技术,具有以下优点:
本发明提出了一种区块链去中心式节点防仿冒方法,在区块链节点中随机投票选择认证成员组对当前终端节点进行认证,认证成员组端不保存当前终端节点的身份存根信息,避免了身份的泄露和仿冒,提高了认证的强度,同时根据业务的安全等级,选择不同的认证因素,提供不同安全级别的认证,兼顾了便利性和安全性。附图说明
[0010]图1是根据本发明实施例的区块链去中心式节点防仿冒方法的流程图。
具体实施方式
[0011]下文与图示本发明原理的附图一起提供对本发明一个或者多个实施例的详细描述。结合这样的实施例描述本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求书限定,并且本发明涵盖诸多替代、修改和等同物。在下文描述中阐述诸多具体细节以便提供对本发明的透彻理解。出于示例的目的而提供这些细节,并且无这些具体细节中的一些或者所有细节也可以根据权利要求书实现本发明。
[0012]本发明的一方面提供了一种区块链去中心式节点防仿冒方法。图1是根据本发明实施例的区块链去中心式节点防仿冒方法流程图。
[0013]本发明的区块链去中心式节点防仿冒方法基于区块链系统,在区块链系统中部署认证协调者和认证成员组。待认证的终端节点包含身份特征模块和认证前端,身份特征模块由可信执行环境、安全芯片等来实现,用于对身份特征进行安全存储。认证协调者是从区块链中已登录的所有节点中随机生成,用于与认证前端之间的通信以及对认证数据的转发,认证成员组包括多个认证节点,由区块链系统中所有节点投票生成,认证节点同样来自区块链系统中已登录的终端节点,负责对节点身份进行校验,并将处理后的用户信息保存在共识数据库中。
[0014]在节点向区块链注册阶段,终端节点将节点设备名n_u、密码pw以及用户标识un发送至认证协调者,认证协调者转发至认证成员组,认证成员组将登录信息{u,pw,un}进行存储,并以节点设备名为索引;终端节点用户将身份特征录入至身份特征模块,将节点身份特
5
CN 112202809 A
说 明 书
3/6页
征信息的散列值hbiop保存在可信执行环境中。
[0015]终端和认证协调者都维护自身的认证密钥对,并且预先获得对方的公钥。终端的密钥对为{PKu,SKu},认证协调者的密钥对{PKCC,SKCC}。在注册阶段建立二者间的会话,会话密钥为K。
[0016]然后终端首先用二者间的会话密钥K对要发送的数据进行对称加密,并用终端的私钥对要发送的数据进行签名,最后用认证协调者的公钥对会话密钥K进行加密。认证协调者接收到数据后,先用终端的公钥验证签名,若验证未通过,则认证失败,否则验证通过。接下来用认证协调者的私钥解密会话密钥,并用会话密钥解密终端发送的数据。[0017]认证成员组也维护有自己的认证密钥对,在认证协调者和认证成员组进行通信时,认证协调者和认证成员组也预先获得对方的公钥。
[0018]认证协调者用认证成员组的公钥加密要发送的数据,并用认证协调者的私钥对数据进行签名。认证成员组接收到数据后,先用认证协调者的公钥验证签名,若验证未通过,则认证失败,否则验证通过。接下来用自己的私钥解密认证协调者发送的数据。[0019]当终端用户登录区块链账户,仅对账户信息进行读取时,采用节点设备名和密码的安全等级,详细过程如下:
接收终端的认证前端输入的节点设备名n_u,密码pw;终端将认证等级AuthGR置为Low并生成随机数ru,rw,并将节点设备名n_u,密码pw,认证协调者标识符CC、认证等级AuthGR和随机数ru,rw发送给认证协调者。[0020]认证协调者接收到数据后,生成并追加随机数na后转发给认证成员组。认证成员组接收到数据后,以节点设备名n_u为索引从共识数据库中取出存储的密码的散列值hpw,计算接收到的密码pw的散列值h(pw),比较h(pw)和hpw是否相等,若相等则将验证结果RSt置为通过,否则置为未通过,然后认证成员组中的任一认证节点将验证结果RSt和随机数ru,rw发送给认证协调者。
[0021]认证协调者首先校验随机数na,校验通过后转发给终端。终端接收到数据后,首先校验随机数ru,比较收到的随机数和存储的随机数是否相同,若不同则说明数据已超期,认证失败,否则读取验证结果。若验证结果RSt为通过,则成功登录区块链,否则验证失败。[0022]当用户发起交易或记账时,则采用记账验证的方式,即增加身份特征biop和临时认证序列AUS作为身份验证的因素以验证用户,提供强认证。[0023]具体地,所述临时认证序列AUS包括多个子序列,每个子序列由认证成员组中的一个节点来生成。当认证成员组中的当前节点生成当前子序列时,将当前子序列广播至认证成员组中的其他节点,以使每个认证节点均获得完整的临时认证序列AUS。所述记账验证阶段流程如下:
终端将认证等级AuthGR置为High,并生成随机数ru1,rw1,同时启动本地校验,即认证前端向终端的身份特征模块发送身份特征验证请求,身份特征模块接收到数据后,接收用户输入的身份特征,获取到节点身份特征信息biop*,身份特征模块从可信执行环境中取出存储的身份特征信息的散列值biop,比较h(biop*)和hbiop是否相等,若相等则将本地校验结果LocRSt置为通过,否则置为未通过,若本地校验结果为未通过,则重复进行本地校验过程。若通过,则终端将节点设备名n_u,认证等级AuthGR,本地校验结果LocRSt和随机数ru1,rw1发送给认证协调者。
6
CN 112202809 A[0024]
说 明 书
4/6页
认证协调者接收到数据后,生成并追加随机数na1后转发给认证成员组。认证成员
组接收到数据后,以节点设备名n_u为索引从共识数据库中取出存储的密码pw和用户标识un,并生成临时认证序列AUS,以节点设备名为索引存储在认证成员组的共识数据库中,然后将临时认证序列和随机数ru1通过带外传输的方式发送到拥有该用户标识的终端节点上。
[0025]终端接收到数据后,终端的认证前端读取随机数ru1,比较收到的随机数和存储的随机数是否相同,若不同则说明数据已超期,认证失败,否则生成随机数ru2,rw2,允许用户在终端的认证前端上填写接收到的临时认证序列AUS*,然后终端将临时认证序列AUS*和随机数ru2,rw2,发送给认证协调者。[0026]认证协调者接收到数据后,追加随机数na2后转发给认证成员组。认证成员组接收到数据后,首先以节点设备名为索引找到存储的AUS,比较AUS*和AUS是否相等,若相等,则将记账验证结果TranRSt置为通过,否则置为未通过,然后认证成员组将记账验证结果TranRSt和随机数ru2,rw2发送给认证协调者。[0027]认证协调者接收到数据后,首先校验随机数na2,校验通过后转发给终端,向用户反馈记账验证结果。终端接收到数据后,首先校验随机数ru2,rw2,比较收到的随机数和存储的随机数是否相同,若不同则说明数据已超期,认证失败,否则读取验证结果。若记账验证结果TranRSt为通过,则当前终端节点成功加入区块链并获取记账权限,否则记账验证失败。
[0028]优选地,当终端用户登录区块链账户时,对终端用户采用密码和令牌的双因素认证,实现了终端节点和区块链系统之间的双向认证。具体地,终端首先获取身份特征模块中存储的节点设备名n_u、密码pw、认证前端ID,并提交相关数据到认证协调者进行认证,认证协调者收到节点设备名和加密的密码后,对比认证成员组的共识数据库中存储的节点设备名和加密的密码,如果节点设备名和加密的密码相同则进入证书签名认证阶段,如果不同则终止登录;如果证书签名认证通过,根据授予终端用户登录区块链的权限。[0029]所述证书签名阶段具体流程如下:
1)待认证终端节点首先将节点设备名和自己的公钥通过认证协调者发送到认证节点组请求认证,认证节点组收到终端节点的请求后将各个认证节点的公钥发送到终端节点;
2) 待认证终端节点和认证节点组通过ECDH算法分别产生数字令牌S1和S2;3)终端节点和认证节点组计算出数字令牌后,认证节点组产生一个随机数r,然后认证节点组用自己的私钥对随机数r进行签名生成Q,最后对签名结果Q和数字令牌S2用终端节点的公钥加密生成密文C,并将其发送到终端节点;
4)终端节点收到密文数据C后,首先利用自己的私钥进行解密得到签名结果Q和数字令牌S2;其次,终端节点对比分析数字令牌S1和S2的值,如果数值不同,则认证失败,结束认证流程;如果数值相同,则终端节点利用认证节点组的公钥对签名结果Q进行解密得到随机数r;
5)终端节点对节点设备名和随机数r进行散列计算,得到散列值A,然后用自己的私钥对散列值A签名得到Q,最后利用认证节点组的公钥加密签名结果Q,得到密文G并将其发送到区块链系统中的所有节点;
6)区块链系统中所有节点收到密文数据G后,用自己的私钥进行解密得到签名Q1:然后
7
CN 112202809 A
说 明 书
5/6页
利用终端节点的公钥解密签名得到散列值A,最后查询散列表判断该散列值是否存在,如果存在则结束认证;
7)当判断当前散列值A不存在时,查询本地存储的节点设备名和随机数r,进行二次散列运算得到散列值h1。对比散列值h1和h的值,如果相同则认证成功,允许用户登录并记录当前散列值到散列表中,如果不同则认证失败,禁止用户登录区块链。[0030]优选地,该方法还包括:预先初始化所述多个节点之间的公共P2P信道和用于记账的公共记账链表。当用户发起上述交易或记账时,所述认证节点组通过IBFT2共识算法生成并添加含有记账数据和签名的区块到当前终端用户所对应的公共记账链表。
[0031]所述IBFT2共识算法利用由被选中且经过实际身份认证的认证节点所作出的权益证明作为各参与方的信用评价。每个认证节点可以是随机选择,并在随后的多次验证过程中动态变化。每当有新的终端节点需要被验证时,全体认证节点中的一个被随机选取为认证协调者,该认证协调者根据新的记账请求生成相应的区块,并交给全体认证节点进行验证。认证组节点为每次记账请求进行认证,确定当前终端节点生成的区块能否被授权添加到公共记账链表;在新的区块通过认证而被添加到所述公共记账链表,或者不能通过认证而被丢弃后,可继续从全体认证节点中随机选取一个或继续使用同一认证协调者,重复上述流程以对下一个记账请求进行认证。当区块不能通过认证时,认证协调者会被更换,随机选取新的认证协调者。在其他实施例中,每个节点也可以在本地存储公共记账链表的副本,并在区块通过认证后,将其增量更新到本地的公共记账链表的副本中,从而实现公共记账链表的去中心化存储,为确保每次只有一个区块添加到记录链表,当区块得到多数认证节点共识时,但该区块还未添加到记录链表,中止选取新的区块。[0032]为了进一步应对一定时间段内爆发式增长的交易量,在本申请的又一实施例中,当所述认证节点的个数是3H+1时,上述初始化所述多个节点之间的公共P2P信道和用于记账的公共记账链表步骤还包括以下子步骤,其中,H为该区块链网络可容许恶意节点的个数:
收集至少2H+1个认证节点返回的认证结果;统计所收集的认证结果,并当所述区块通过认证节点的数量大于或等于H+1时,将所述区块记录到所述公共记账链表。[0033]为了及时发现并剔除IBFT2共识算法所假设的、当前用户为怀有恶意的认证节点,在本申请又一实施例中,公共记账链表中的区块的增加量大于更新阈值后,认证节点相互进行认证,当某一认证节点不能通过全体认证节点的总数2/3的认证时,将该认证节点删除,不再作为认证节点。为补充被删除的认证节点,公共记账链表中的区块的增加量大于更新阈值后,当新增的节点通过全体认证节点的总数2/3的认证时,新增的节点被选择为新的认证节点。上述对认证节点自身的认证也可以是基于该认证节点在上述时间段内就所述公共记账链表中区块的判断的正确率。如判断正确率是后1/3的认证节点将被剔除。当某个节点对被认证节点并未作出验证,其表示维持该被认证节点。[0034]作为进一步方面,本发明的方法还包括,添加所述待认证节点与一个或多个认证节点之间含有记账数据和签名的认证区块到私有记账链表;通过节点之间的不同于公共P2P信道的私有信道,增量更新所述私有记账链表到所述两个或多个节点;其中,任意多个节点之间可通过所述私有信道传输数据。公共记账链表和私有信道被相互隔离。通过私有信道发送记账数据不向整个网络广播。
8
CN 112202809 A[0035]
说 明 书
6/6页
通过私有信道进行交易的各方对彼此都有更高的信任,因此这些节点之间采用与
公共记账链表不同的方式完成交易的验证,每个认证节点上都会有针对当前Raft网络的计时器。在某一个认证节点计时结束后,节点的状态变成候选状态并提起投票,向其他几个节点发送投票请求。若至少一半以上的其它认证节点都返回成功,则当前认证节点的状态就会由候选变成主节点,并在每段预设时间后,就给所有的候选状态的认证节点发送一个心跳信息以保持所有认证节点的当前状态。候选认证节点在收到主认证节点的心跳信息后重设其自身的计时器。当待认证的终端节点发送记账请求给主认证节点时,记账数据被主认证节点写在本地数据库。然后,主认证节点向其它跟随的节点发送请求更新其本地数据库。当这些数据被其它跟随的节点写到本地数据库时,跟随的节点向主认证节点返回成功信息。只要主认证节点收到过半数的成功信息,本次记账数据在主认证节点上的本地数据库中设置为确认状态。此时,领导状态的节点再向其它跟随的节点发送确认信息,使得跟随的节点在本地数据库内的相应数据设置也改为已确认状态,从而完成完整的数据库共识过程。
[0036]综上所述,本发明提出了一种区块链去中心式节点防仿冒方法,在区块链节点中随机投票选择认证成员组对当前终端节点进行认证,认证成员组端不保存当前终端节点的身份存根信息,避免了身份的泄露和仿冒,提高了认证的强度,同时根据业务的安全等级,选择不同的认证因素,提供不同安全级别的认证,兼顾了便利性和安全性。[0037]显然,本领域的技术人员应该理解,上述的本发明的各模块或各步骤可以用通用的计算系统来实现,它们可以集中在单个的计算系统上,或者分布在多个计算系统所组成的网络上,可选地,它们可以用计算系统可执行的程序代码来实现,从而,可以将它们存储在存储系统中由计算系统来执行。这样,本发明不于任何特定的硬件和软件结合。[0038]应当理解的是,本发明的上述具体实施方式仅仅用于示例性说明或解释本发明的原理,而不构成对本发明的。因此,在不偏离本发明的精神和范围的情况下所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。此外,本发明所附权利要求旨在涵盖落入所附权利要求范围和边界、或者这种范围和边界的等同形式内的全部变化和修改例。
9
CN 112202809 A
说 明 书 附 图
1/1页
图1
10
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务