一种在区块链中判断数字证书签名数据合法性的方法
技术领域
本发明涉及区块链技术领域,尤其是涉及一种在区块链中判断数字证书签名数据合法性的方法。
背景技术
数字证书是指在互联网通讯中标志通讯各方身份信息的一个数字认证,可以用来保证通信数据的完整性和安全性。数字证书的主要内容包括证书序列号、证书有效期、证书所有者的公钥等。数字证书的所有者需要通过证书上的公钥对应的私钥对通信数据进行数字签名,来保证该通信数据的可靠性和安全性,而接收该通信数据的通信方只需要根据数字证书以及数字签名,便可以检查该通信数据是否合法可信。
数字证书一般由权威的证书签发机构——CA(Certificate Authority)机构发行。CA先用RSA公钥加密算法产生一对公私钥,用以解密和签名;随后,将公钥、证书内容、签发者信息、有效期等内容设为明文,并对明文进行Hash运算得到Hash值;再将此Hash值运用私钥加密。加密后的密文(又称签名)与明文一起,构成一个文件,即数字证书。验证证书时,用户只需用提供的公钥解密签名,再与对明文进行Hash运算所得的结果比较,如结果一致,即可证明该证书没有被篡改或冒用。
在区块链中,多数共识算法都是用“投票”的方式来完成,数字证书的使用保证了节点投票信息的完整性和安全性,是此类共识算法的安全性的基本前提。例如在PBFT共识算法中,每一个节点都预先知道彼此的数字证书,在接收其他节点的投票时,根据该节点的数字证书和该节点提供的数字签名,即可检查该投票信息是否合法。区块链节点数字证书一般情况下由统一可信的第三方机构—CA(Certificates Authority)中心管理,CA中心负责颁发数字证书,并由该机构维护一个黑名单列表,列表通过列举的方式来声明所有被吊销的数字证书。在使用数字证书作为区块链共识数据的背书信任来源时,因区块链具有数据不可篡改的特点,一旦该数据证书被列入黑名单,例如数字证书被吊销,则使用该数据证书签名的历史区块数据也会被认为非法,这可能会导致节点在同步历史区块数据时,因为某个节点的数字证书被列入黑名单而拒绝承认历史区块数据的有效性,从而无法完成数据同步,也无法参与后续的共识,破坏了整个区块链系统的安全性和可用性。
图1为数字证书在区块链中交易的示意性拓扑图,图1中,CA中心为节点颁发或吊销数字证书,节点构建一笔区块链交易,交易中包含该数字证书,经过区块链共识后,交易会被一个区块打包,同时生成该交易所在区块的高度,即区块高度(H)。一个区块会包含多个节点,每个节点有一个数字证书,在区块中就会有很多数字证书和很多数字签名,为避免数字证书吊销时,使用该数据证书签名的历史区块数据全部被认为非法,即部分合法数据也会被误判为非法数据,导致无法参与后续的共识,此时需要对该区块中所有的数字证书和数字签名进行判断,筛选出合法的数据。通常采用的方法为遍历的方法,即将该区块所有的数字证书与签名数据全部列出,逐一筛选,但此种方法比较麻烦且效率低。
发明内容
本申请提供了一种在区块链中判断数字证书签名数据合法性的方法,以解决当数字证书被吊销时,部分合法数字签名数据也会被认为非法,从而无法参与后续共识的问题。
本申请提供一种在区块链中判断数字证书签名数据合法性的方法,包括:
获取任意数字证书的当前区块高度,所述当前区块高度为所述数字证书的签名数据所在对应区块的高度值;
根据所述当前区块高度判断某一区块的数字证书黑名单列表,所述数字证书黑名单列表为针对所述某一区块的无效数字证书;
针对某一区块,如果所述当前区块高度不在数字证书有效高度区间内,所述当前区块高度对应的数字证书在所述数字证书黑名单列表中;
针对某一区块,根据所述数字证书黑名单列表判断所述数字证书的签名数据是否合法;
如果所述数字证书在所述数字证书黑名单列表中,所述数字证书的签名数据针对所述区块不合法;
如果所述数字证书不在所述数字证书黑名单列表中,所述数字证书的签名数据针对所述区块合法。
由以上技术方案可知,本申请提供一种在区块链中判断数字证书签名数据合法性的方法,首先通过该区块高度和区块内数字证书有效高度区间进行对比,判断针对该区块的数字证书黑名单列表;其次,根据数字证书黑名单列表判断针对该区块的数字签名数据是否合法,通过将CA中心颁发和吊销证书的操作作为共识数据提交到区块链上,保证了节点所获取到的黑名单列表的可靠性和安全性,从而保证了参与共识的区块链节点能够正确的识别当前的黑名单列表,通过对数字签名数据合法性的判断,保证了历史区块数据不会受影响,并能够正确同步历史区块数据,另外,整个实现过程可以线上动态进行,不需要停止当前的共识进行,实现数字证书的管理机制的同时,不影响正常的共识。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种数字证书在区块链中交易的示意性拓扑图;
图2为本申请实施例提供的一种数字证书签名数据合法性判断的示意图。
具体实施方式
为使本申请示例性实施例的目的、技术方案和优点更加清楚,下面将结合本申请示例性实施例中的附图,对本申请示例性实施例中的技术方案进行清楚、完整地描述,显然,所描述的示例性实施例仅是本申请一部分实施例,而不是全部的实施例。
为了便于对本申请的理解,首先对本申请提出的应用场景进行介绍。当前,已经有数字证书的签名数据存储在区块链上,但一旦数字证书被吊销,该数字证书对应的所有签名数据都会被认为是非法的,但实际上有一部分签名数据是合法的,即在数字证书的有效期内,所有数字签名数据都是合法的。这里的有效期是指,数字证书在CA中心颁发时刻起至CA中心吊销时刻止,也就是说,数字证书在颁发与吊销这段时间内都是有效的,相应的,数字证书在这段时间内对应的数字证书签名数据也是有效的。一旦数字证书被吊销,那么该区间内的有效数字签名数据也会被认为是非法签名数据,在后续的共识中,一旦签名数据被认为是非法数据,则校验不通过,那么此部分合法签名数据将无法参与后续的共识,所以会影响数据的安全性和可用性,基于这个场景,提出了本申请。
图1为本申请实施例提供的一种数字证书在区块链中交易的示意性拓扑图,在本申请提供的技术方案中,区块链一方面指网络系统中交易产生的记账数据,另一方面指运行区块链技术的网络,即区块链网络,区块链网络中,包括相互建立点对点网络连接的节点。参见图1,CA中心(CA中心又称CA机构,即证书授权中心(Certificate Authority ),或称证书授权机构,是数字证书发行的唯一机构)为某一节点颁发或吊销数字证书,节点构建一笔区块链交易,交易中包含该数字证书,经过区块链共识后,交易会被一个区块打包,同时生成该交易所在区块的高度,多笔具体的交易组成一个区块,多个区块形成一条区块链。此处可以把区块链想象成一条链,将一块块包含交易记录的区块串联起来,每个区块里面都有记录一些交易数据,每个区块的容量就决定了这个区块能装多少笔交易记录,每个区块上面都有记录一个时间戳和区块高度,时间戳就决定了这些串联起来的区块的链接顺序,区块高度就是给每个区块打了个顺序标签。一个区块会包含多个节点,每个节点有一个数字证书,数字证书在节点传输数据过程中会进行数字签名,这样在区块中就会有很多数字证书和很多数字签名,为避免数字证书吊销时,使用该数据证书签名的历史区块数据全部被认为非法,即部分合法数据也会被误判为非法数据,导致无法参与后续的共识,此时需要对该区块中所有的数字证书和数字签名进行判断,筛选出合法的数据。
本申请提供一种在区块链中判断数字证书签名数据合法性的方法,判断某个区块中的数字证书签名数据是否合法,以该区块中的数字证书C为例,判断数字证书C在此区块中的数字签名数据是否合法的步骤,包括:
S1:获取任意数字证书的当前区块高度,当前区块高度为数字证书的签名数据所在对应区块的高度值。
以某一区块中的数字证书C为例,首先获取数字证书C的当前区块高度,数字证书C的当前区块高度是指数字证书C对应的签名数据所在区块的高度值。区块链中,区块高度是可以通过该区块在区块链中的位置识别区块的一种方式,第一个区块,其高度为0,每一个区块连接到上一个区块,形成了区块链,而区块高度就是指生成了多少个区块,区块高度用来丈量某一个区块到第一个区块之间的距离,通过区块高度可以准确地了解到某一区块在链上的位置,相当于给区块定位了一个坐标,区块高度可以用来识别区块在区块链中的位置,并据此找到和这个区块相关的所有基础属性和交易记录。
S2:根据当前区块高度判断某一区块的数字证书黑名单列表,数字证书黑名单列表为针对某一区块的无效数字证书;针对某一区块,如果当前区块高度不在数字证书有效高度区间内,当前区块高度对应的数字证书在数字证书黑名单列表中。
本申请在判断某一区块中的多个数字证书签名数据是否合法时,首先通过该区块高度和区块内数字证书有效高度区间进行对比,判断针对该区块的数字证书黑名单列表;其次,根据数字证书黑名单列表判断针对该区块的数字签名数据是否合法。在整个过程中,判断数字证书黑名单列表的最终目的是判断数字证书签名数据是否合法。
为了便于理解,首先对判断过程中涉及到的词语进行解释。数字证书有效高度区间为,数字证书所在的当前区块高度在颁发区块高度和吊销区块高度之间。CA中心为区块链节点颁发和吊销数字证书,区块链节点将CA中心颁发和吊销数字证书的操作作为共识数据提交到区块链上。CA中心颁发数字证书时,区块链节点会同时记录数字证书的颁发区块高度和吊销区块高度,颁发数字证书时,吊销区块高度初始值为0。对于区块链的节点而言,将CA中心颁发数字证书的操作作为共识数据提交到区块链上,颁发区块高度为数字证书的颁发操作所在对应区块的高度值,从颁发区块高度起,数字证书生效,为有效的数字证书。CA中心吊销数字证书时,对于区块链的节点而言,将CA中心吊销数字证书的操作作为共识数据提交到区块链上,此时吊销区块高度不为0,吊销区块高度为数字证书的吊销操作所在对应区块的高度值,从吊销区块高度起,数字证书失效,数字证书的吊销也表示了数字证书生命的终结。
颁发区块高度的一种获取方式为,当CA中心为一个节点颁发数字证书时,节点获取颁发的数字证书,并将该数字证书的颁发操作提交到区块链上,该数字证书最终被一个区块打包,并生成对应区块的区块高度值,记为颁发区块高度;颁发区块高度的另一种获取方式为,节点获取颁发的数字证书,根据颁发的数字证书构建第一区块链交易,第一区块链交易包含颁发的数字证书,第一区块链交易被一个区块打包,生成第一区块交易包,区块链节点在确认提交第一区块交易包时会生成对应区块的高度值,记为颁发区块高度。本申请不限定颁发区块高度的获取方式,只是示例性列出两种,颁发区块高度在区块链上唯一,表示在颁发区块高度以后,该数字证书生效,所有节点承认此数字证书。
吊销区块高度的一种获取方式为,当CA中心为一个节点吊销数字证书时,节点获取吊销的数字证书,并将该数字证书的吊销操作提交到区块链上,该数字证书最终被一个区块打包,并生成对应区块的区块高度值,记为吊销区块高度;吊销区块高度的另一种获取方式为,节点获取吊销的数字证书,根据吊销的数字证书构建第二区块链交易,第二区块链交易包含吊销的数字证书,第二区块链交易被一个区块打包,生成第二区块交易包,区块链节点在确认提交第二区块交易包时会生成对应区块的高度值,记为吊销区块高度。同样,本申请不限定吊销区块高度的获取方式,只是示例性列出两种,吊销区块高度在区块链上唯一,表示在吊销区块高度以后,该数字证书失效,所有节点不承认此数字证书。
在明确了数字证书有效高度区间和区块高度后,针对该区块的数字证书黑名单列表判断方式为,针对某一区块,如果某一数字证书对应的当前区块高度在数字证书有效高度区间,数字证书相对于区块不在数字证书黑名单列表中;如果数字证书对应的当前区块高度不在数字证书有效高度区间,则数字证书相对于区块在数字证书黑名单列表中。本申请中的数字证书黑名单列表可以视为针对某一区块的无效数字证书的合集,数字证书黑名单列表是动态的、相对的,并不是绝对一成不变的。后文将结合具体实例对如何判断数字证书黑名单列表进行进一步举例说明。
S3:针对某一区块,根据数字证书黑名单列表判断数字证书的签名数据是否合法;如果数字证书在数字证书黑名单列表中,数字证书的签名数据针对区块不合法;如果数字证书不在数字证书黑名单列表中,数字证书的签名数据针对区块合法。
也就是说,针对某个区块,如果这个数字证书相对于该区块在数字证书黑名单列表中,则表明这个数字证书相对于该区块是无效数字证书,相应的,该数字证书的数字签名数据相对于该区块也是不合法的签名数据;如果这个数字证书不在该区块对应的数字证书黑名单列表中,则表明这个数字证书相对于该区块是有效的数字证书,相应的,该数字证书的数字签名数据相对于该区块也是合法的签名数据。
为了对某一区块中的数字证书签名数据合法性判断进行深入理解,下面结合具体实施例进行进一步说明,参见图2,图2为本申请实施例提供的一种数字证书签名数据合法性判断的示意图,各个区块按照时间先后顺序链接在一起。
当CA中心颁发数字证书时,节点(节点在图中未示出)从CA中心处获取到新颁发的数字证书,并构建一笔区块链交易,即为证书颁发交易,交易中包含该数字证书,经过区块链共识后,证书颁发交易会被一个区块打包,记该区块的高度为Hin,如图2所示,证书颁发交易打包到区块i后生成颁发区块高度即为Hin,颁发区块高度Hin即为证书颁发交易所在区块的高度(证书吊销交易所在区块高度此时为默认值0),区块链节点在确认提交该证书颁发交易时,会生成一条关于该证书的存储记录。
当CA中心吊销数字证书时,节点(节点在图中未示出)将需要吊销的数字证书构建到一笔区块链交易中,即为证书吊销交易,经过区块链共识后,证书吊销交易会被一个区块打包,记该区块的高度为Hout,如图2所示,证书吊销交易打包到区块n后生成吊销区块高度即为Hout,吊销区块高度Hout即为证书吊销交易所在区块的高度,区块链节点在确认提交该证书吊销交易时,会更新该证书的存储记录。
结合图2,在判断某个区块中某个数字证书的签名数据是否合法时,判断方法如下,以判断该区块中的某个数字证书C的签名数据是否合法为例,具体为:
首先,获取数字证书C(所在对应区块的)当前区块高度,也就是数字证书C所在对应区块的高度值,记为当前区块高度H,即对应步骤S1。
其次,根据当前区块高度H、颁发区块高度Hin以及吊销区块高度Hout判断该区块的数字证书黑名单列表,即对应步骤S2,可分为三种情况,由图2可知,三种情况分别为H<Hin、H≥Hout以及Hin≤H<Hout,下面对三种情况分别进行详述。
情况一,H<Hin,即根据当前区块高度H和颁发区块高度Hin判断该区块中数字证书C的签名数据是否合法,如果当前区块高度H小于颁发区块高度Hin,即当前区块高度H对应的数字证书记录是数字证书颁发前、还未生效的记录,则数字证书C相对于该区块在数字证书黑名单列表中,相应的,数字证书C的签名数据针对该区块为不合法数据。
情况二,H≥Hout,即根据当前区块高度H和吊销区块高度Hout判断该区块中数字证书C的签名数据是否合法,如果当前区块高度H大于等于吊销区块高度Hout且吊销区块高度不为0(吊销区块高度不为0表示该数字证书实际上确实被吊销了),即当前区块高度H对应的数字证书记录是数字证书吊销之后(包含数字证书被吊销的情况)、失效后的记录,则数字证书C相对于该区块在数字证书黑名单列表中,相应的,数字证书C的签名数据针对该区块为不合法数据。
情况三,Hin≤H<Hout,即根据当前区块高度H、颁发区块高度Hin以及吊销区块高度Hout判断该区块中数字证书C的签名数据是否合法,如果当前区块高度H不小于颁发区块高度Hin且当前区块高度小于吊销区块高度Hout,即当前区块高度H对应的数字证书记录是数字证书颁发后至数字证书吊销前的记录,则当前区块高度H对应的数字证书C相对于该区块不在数字证书黑名单列表中,相应的,数字证书C相对于该区块为有效数字证书,数字证书C的签名数据针对该区块为合法数据。
再次,根据数字证书黑名单列表判断数字证书C的签名数据是否合法,即对应步骤S3,如果数字证书C在数字证书黑名单列表中,数字证书C的签名数据针对该区块为不合法数据;如果数字证书C不在数字证书黑名单列表中,则数字证书C的签名数据针对该区块为合法数据。合法的数字签名数据将会继续参与后续的共识,从而保证了有效数据不会被遗漏,保证了系统的安全性。
本申请提供一种在区块链中判断数字证书签名数据合法性的方法,不同于遍历排查数字证书签名数据的方法,本申请技术方案在判断某一区块中的多个数字证书签名数据是否合法时,首先通过该区块高度和区块内数字证书有效高度区间进行对比,判断针对该区块的数字证书黑名单列表;其次,根据数字证书黑名单列表判断针对该区块的数字签名数据是否合法,在判断过程中,通过将CA中心颁发和吊销证书的操作作为共识数据提交到区块链上,保证了节点所获取到的黑名单列表的可靠性和安全性,从而保证了参与共识的区块链节点能够正确的识别当前的黑名单列表,通过对数字签名数据合法性的判断,保证了历史区块数据不会受影响,并能够正确同步历史区块数据,另外,整个实现过程可以线上动态进行,不需要停止当前的共识进行,有效的保证了区块链系统的可用性,实现数字证书的管理机制的同时,不影响正常的共识。
本申请提供的实施例之间的相似部分相互参见即可,以上提供的具体实施方式只是本申请总的构思下的几个示例,并不构成本申请保护范围的限定。对于本领域的技术人员而言,在不付出创造性劳动的前提下依据本申请方案所扩展出的任何其他实施方式都属于本申请的保护范围。