身份验证方法、区块链***的节点装置和区块链***
技术领域
本公开涉及网络技术领域,特别涉及一种身份验证方法、区块链***的节点装置、区块链***和计算机可读存储介质。
背景技术
CA(Certificate Authority,证书授权)中心,或称证书授权机构是数字证书发行的唯一机构。CA(Certificate Authority,证书授权)中心作为多方交互中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。
CA中心可以为每个使用公开密钥的用户发放一个数字证书。数字证书的作用是证明证书中列出的用户合法拥有证书中列出的公开密钥。CA中心负责产生、分配并管理所有参与个体所需的数字证书,是网络安全的核心环节。
在相关技术中,CA中心以数据库为存储载体,由企业进行部署。
发明内容
本公开的发明人发现上述相关技术中存在如下问题:证书易被篡改,导致身份验证的安全性低。
鉴于此,本公开提出了一种身份验证技术方案,能够提高身份验证的安全性。
根据本公开的一些实施例,提供了一种身份验证方法,包括:区块链***的第一节点接收用户发来的证书发放请求,证书发放请求中包含区块链***的各第二节点根据证书发放请求的相应链码生成的链码签名和相应链码的链码证书ID;第一节点根据各链码证书ID,对各链码签名进行验签;在各链码签名通过了验签的情况下,第一节点为用户生成用户身份证书,以便区块链的第三节点根据用户身份证书生成相应的区块。
在一些实施例中,链码证书ID及其相应的链码证书被调用相应链码的第二节点在启动时存储在区块链***上。
在一些实施例中,所述对各链码签名进行验签包括:第一节点根据各链码证书ID,从区块链***中获取相应的链码证书;第一节点利用相应的链码证书,对相应的链码签名进行验签。
在一些实施例中,相应的链码证书的查询接口只对第一节点和各第二节点开放查询权限。
在一些实施例中,区块链***的第一节点接收用户发来的证书发放请求包括:在各第二节点的身份签名通过了用户验签的情况下,第一节点接收用户发来的证书发放请求,身份签名为第二节点响应于用户发起证书发放请求,根据该第二节点的身份证书的私钥生成。
在一些实施例中,第一节点为用户生成用户身份证书包括:第一节点根据自身的私钥,对证书发放请求进行签名,生成用户身份证书。
在一些实施例中,该方法还包括:第一节点将用户身份证书发送给用户,以便用户将用户身份证书发送给第三节点生成区块。
在一些实施例中,第一节点、各第二节点和第三节点通过各自安装的链码容器进行各种操作。
根据本公开的另一些实施例,提供一种区块链***的节点装置,包括:接收单元,用于接收用户发来的证书发放请求,证书发放请求中包含区块链***的各背书节点根据证书发放请求的相应链码生成的链码签名和相应链码的链码证书ID;验签单元,用于根据各链码证书ID,对各链码签名进行验签;生成单元,用于在各链码签名通过了验签的情况下,为用户生成用户身份证书,以便区块链的共识节点根据用户身份证书生成相应的区块。
在一些实施例中,链码证书ID及其相应的链码证书被调用相应链码的第二节点在启动时存储在区块链***上。
在一些实施例中,验签单元根据各链码证书ID,从区块链***中获取相应的链码证书;利用相应的链码证书,对相应的链码签名进行验签。
在一些实施例中,相应的链码证书的查询接口只对该节点装置和各背书节点开放查询权限。
在一些实施例中,在各背书节点的身份签名通过了用户验签的情况下,接收单元接收用户发来的证书发放请求,身份签名为背书节点响应于用户发起证书发放请求,根据该背书节点的身份证书的私钥生成。
在一些实施例中,生成单元根据自身的私钥,对证书发放请求进行签名,生成用户身份证书。
在一些实施例中,该节点装置还包括发送单元,用于将用户身份证书发送给用户,以便用户将用户身份证书发送给共识节点生成区块。
在一些实施例中,该节点装置、各背书节点和共识节点通过各自安装的链码容器进行各种操作。
根据本公开的又一些实施例,提供一种区块链***的节点装置,包括:存储器;和耦接至存储器的处理器,处理器被配置为基于存储在存储器装置中的指令,执行上述任一个实施例中的身份验证方法。
根据本公开的再一些实施例,提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一个实施例中的身份验证方法。
根据本公开的再一些实施例,提供一种区块链***,包括:第一节点装置,用于执行上述任一个实施例中的身份验证方法;多个第二节点装置,用于根据用户的证书发放请求的相应链码生成链码签名;第三节点装置,用于根据第一节点装置生成的用户身份证书生成相应的区块。
在上述实施例中,通过区块链中的链码对证书发放请求进行链码签名和验签,保证了发放的证书不能够被篡改,从而提高了身份验证的安全性。
附图说明
构成说明书的一部分的附图描述了本公开的实施例,并且连同说明书一起用于解释本公开的原理。
参照附图,根据下面的详细描述,可以更加清楚地理解本公开:
图1示出本公开的身份验证方法的一些实施例的流程图;
图2示出本公开的证书发放请求的一些实施例的示意图;
图3示出步骤120的一些实施例的流程图;
图4示出本公开的身份验证方法的一些实施例的示意图;
图5示出本公开的区块链***的节点装置的一些实施例的框图;
图6示出本公开的区块链***的节点装置的另一些实施例的框图;
图7示出本公开的区块链***的节点装置的又一些实施例的框图;
图8示出本公开的区块链***的一些实施例的框图。
具体实施方式
现在将参照附图来详细描述本公开的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,技术、方法和设备应当被视为授权说明书的一部分。
在这里示出和讨论的所有示例中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它示例可以具有不同的值。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
图1示出本公开的身份验证方法的一些实施例的流程图。
如图1所示,该方法包括:步骤110,接收证书发放请求;步骤120,对链码签名进行验签;和步骤130,生成用户身份证书。
在步骤110中,区块链***的第一节点接收用户发来的证书发放请求。证书发放请求中包含区块链***的各第二节点根据证书发放请求的相应链码生成的链码签名和相应链码的链码证书ID。
在一些实施例中,区块链***采用Fabric框架;该框架下的第一节点、第二节点可以为Peer节点;该框架下的第三节点为Orderer(排序)节点;该框架下的用户可以为通过调用SDK(Software Development Kit,软件开发工具包)或APP(Application)发起各种交易调用方。
例如,该框架下的第一节点(如CA中心)可以为负责颁发证书的证书发放节点(Peer-master节点);该框架下的第二节点可以为负责进行背书相关操作(模拟执行链码、背书签名等)的背书节点(Peer-endorsing节点);该框架下的第三节点为负责进行共识相关操作(广播区块、生成区块等)的共识节点。
在一些实施例中,第一节点、各第二节点和第三节点通过各自安装的链码容器进行各种操作。例如,CA服务可以在安装链码后,被Peer节点拉起的一个容器启动。也就是说,CA服务不是以一个应用程序的方式启动,而是在各节点启动后作为一个容器启动。这样,CA中心的证书发放过程依赖于区块链***,难以被篡改,从而提高了安全性。
在一些实施例中,在各第二节点的身份签名通过了用户验签的情况下,第一节点接收用户发来的证书发放请求,身份签名为第二节点响应于用户发起证书发放请求,根据该第二节点的身份证书的私钥生成。
例如,响应于用户在区块链***中发起了证书发放请求,背书节点模拟执行区块链中与该请求相应的链码得到模拟结果;在根据设定的背书逻辑判断可以支持该请求的情况下,根据自己的身份证书的私钥生成身份签名;背书节点还可以在模拟执行链码的过程中,根据调用链码的链码证书的私钥生成链码签名;背书节点将身份签名、链码签名、链码证书ID返回用户。
用户根据接收到的身份签名对各背书节点进行验签;在通过了所有背书节点的身份验签的情况下,向证书发放节点发送证书发放请求(例如,接收到的背书节点的身份签名数量大于阈值的情况下才可以发起证书发放请求)。例如,用户发来的证书发放请求的数据结构可以如图2所示。
图2示出本公开的证书发放请求的一些实施例的示意图。
如图2所示,用户在区块链***中发起了证书发放请求后,共接收到了N(N为大于1的整数)个背书节点返回的背书操作结果。背书操作结果中包含背书节点的链码签名和该背书节点调用的链码的链码证书ID。用户通过了N个背书节点的验签后,将接收到的N链码签名以及相应的链码证书ID放入证书发放请求中。例如,证书发放请求中除了包括证书发放请求源数据(请求本身),还包括链码签名1-N和证书ID1-IDN。
第一节点在接收了证书发放请求后,可以通过图1中的其余步骤继续进行身份验证。
在步骤120中,第一节点根据各链码证书ID,对各链码签名进行验签。
在一些实施例中,可以通过图3中的实施例执行步骤120。
图3示出步骤120的一些实施例的流程图。
如图3所示,步骤120包括:步骤1210,获取链码证书;和步骤1220,对链码签名进行验签。
在步骤1210中,第一节点根据各链码证书ID,从区块链***中获取各链码证书。例如,链码证书ID及其相应的链码证书被调用相应链码的第二节点在启动时存储在区块链***上。
在一些实施例中,各第二节点调用的链码证书的查询接口只对第一节点和各第二节点开放查询权限。
在步骤1220中,第一节点利用相应的链码证书,对相应的链码签名进行验签。例如,可以利用相应的链码证书的私钥,对相应的链码签名进行验签。
第一节点在验签之后,可以通过图1中的其余步骤继续进行身份验证。
在步骤130中,在各链码签名通过了验签的情况下,第一节点为用户生成用户身份证书,以便区块链的第三节点根据用户身份证书生成相应的区块。
在一些实施例中,第一节点根据自身的私钥,对证书发放请求进行签名,生成用户身份证书。
在一些实施例中,第一节点将用户身份证书发送给用户,以便用户将用户身份证书发送给第三节点生成区块。
图4示出本公开的身份验证方法的一些实施例的示意图。
如图4所示,在Fabric框架下的区块链***可以包括Peer-master节点、多个背书节点(Peer-endorsing1节点、Peer-endorsing2节点)、Orderer节点。用户作为调用方,通过调用SDK或APP发起各种请求(区块链交易)。
在一些实施例中,在区块链***启动时,各节点都需要加载本身需要的各种证书,如管理员证书、节点自身的身份证书和私钥、根证书等。例如,发放的证书可以是与各节点本身共用的同一个证书和私钥,也可以为了颁发证书重启生成一套新的证书。
在事件405中,作为证书发放节点的Peer-master在启动时加载两套证书:身份证书(区块链***网络必须加载的证书),可以称之为peer-cert;CA容器启动时所加载的根证书,可以称之为cc-cert(chaincode-certificate,链码证书)。例如,peer-master在安装链码时,该链码可以是一个CA发放服务,具有CA发放证书的所有功能。
在事件407中,在作为背书节点的Peer-endorsing1节点和Peer-endorsing2节点启动时,可以为它们指定私钥以及相应的身份证书。例如,可以是背书节点的相应企业为其指定私钥和身份证书。背书节点启动时的链码不包含CA发放功能,但是拥有签名和验签的功能。事件405和事件407没有执行顺序。
在一些实施例中,链码证书写入到区块链***中,链码证书的查询接口不对外暴露,只有Peer-master和各个背书节点才能够访问。
在一些实施例中,背书节点在启动时将需要调用的各链码的链码证书、相应的链码证书ID存储在所述区块链***上。例如,可以采用Key-Value的形式存储链码证书ID(作为Key)和相应的链码证书(作为Value)。
在事件410中,在用户作为调用方发起证书发放请求操作时,将该请求发往各背书节点。
在事件415中,各背书节点对接收到的请求进行签名。例如,对相应链码进行模拟执行,根据执行结果确定是否使用peer-cert对应的私钥进行身份签;在模拟执行过程中,调用相应链码对该请求进行链码签名。该签名操作对应于区块链***的查询操作(即在该签名过程中,没有进行写块操作)。
在事件420中,各背书节点将链码签名、链码证书ID作为数据体返回给调用方;将身份签名作为背书结果返回给调用方。
在事件425中,调用方在收集到背书结果后,校验各背书节点的身份签名。在校验身份签名的过程中,不进行链码签名的校验。
在事件430中,调用方将搜集到的链码签名、链码证书ID以及证书发放请求源数据合并为一个证书发放请求发给Peer-master节点,以发起申请证书操作。
在事件435中,Peer-master节点接收证书发放请求;根据链码证书ID查询相应链码证书;使用链码证书对相应的链码签名进行验签;在所有的链码签名都通过验签的情况下,使用Peer-master节点的私钥对证书发放请求进行签名以生成调用方的身份证书。
在事件440中,Peer-master节点将返回调用方的身份证书给调用方。
在事件445中,调用方接收自己的身份证书,并发送给Orderer节点进行共识。
在事件450中,Orderer节点广播区块,使得各节点同步生成的区块,从而使得调用方的身份证书就落入区块中。
在上述实施例中,用户的身份证书的生成需要各背书节点的身份签名和链码签名,因此,即使私钥被黑客拿到,也不会有私自生成证书进而造成损失的风险;在使用了区块链***的基础上,是否证书不会被单独CA中心抵赖;区块链***作为一个分布式账本,查询操作可以分散在各个节点上,不会有单点故障的风险。
在上述实施例中,通过区块链中的链码对证书发放请求进行链码签名和验签,保证了发放的证书不能够被篡改,从而提高了身份验证的安全性。
图5示出本公开的区块链***的节点装置的一些实施例的框图。
如图5所示,区块链***的节点装置5包括接收单元51、验签单元52、生成单元53。
接收单元51接收用户发来的证书发放请求,证书发放请求中包含区块链***的各背书节点根据证书发放请求的相应链码生成的链码签名和相应链码的链码证书ID
在一些实施例中,在各背书节点的身份签名通过了用户验签的情况下,接收单元51接收用户发来的证书发放请求,身份签名为背书节点响应于用户发起证书发放请求,根据该背书节点的身份证书的私钥生成。
验签单元52根据各链码证书ID,对各链码签名进行验签。
在一些实施例中,链码证书ID及其相应的链码证书被调用相应链码的第二节点在启动时存储在区块链***上。验签单元52根据各链码证书ID,从区块链***中获取相应的链码证书;利用相应的链码证书,对相应的链码签名进行验签。
在一些实施例中,相应的链码证书的查询接口只对该节点装置和各背书节点开放查询权限。
生成单元53在各链码签名通过了验签的情况下,为用户生成用户身份证书,以便区块链的共识节点根据用户身份证书生成相应的区块。
在一些实施例中,生成单元53根据自身的私钥,对证书发放请求进行签名,生成用户身份证书。
在一些实施例中,节点装置5还包括发送单元54,用于将用户身份证书发送给用户,以便用户将用户身份证书发送给共识节点生成区块。
在一些实施例中,节点装置5、各背书节点和共识节点通过各自安装的链码容器进行各种操作。
在上述实施例中,通过区块链中的链码对证书发放请求进行链码签名和验签,保证了发放的证书不能够被篡改,从而提高了身份验证的安全性。
图6示出本公开的区块链***的节点装置的另一些实施例的框图。
如图6所示,该实施例的区块链***的节点装置6包括:存储器61以及耦接至该存储器61的处理器62,处理器62被配置为基于存储在存储器61中的指令,执行本公开中任意一个实施例中的身份验证方法。
其中,存储器61例如可以包括***存储器、固定非易失性存储介质等。***存储器例如存储有操作***、应用程序、引导装载程序、数据库以及其他程序等。
图7示出本公开的区块链***的节点装置的又一些实施例的框图。
如图7所示,该实施例的区块链***的节点装置7包括:存储器710以及耦接至该存储器710的处理器720,处理器720被配置为基于存储在存储器710中的指令,执行前述任意一个实施例中的身份验证方法。
存储器710例如可以包括***存储器、固定非易失性存储介质等。***存储器例如存储有操作***、应用程序、引导装载程序以及其他程序等。
区块链***的节点装置7还可以包括输入输出接口730、网络接口740、存储接口750等。这些接口730、740、750以及存储器710和处理器720之间例如可以通过总线760连接。其中,输入输出接口730为显示器、鼠标、键盘、触摸屏等输入输出设备提供连接接口。网络接口640为各种联网设备提供连接接口。存储接口750为SD卡、U盘等外置存储设备提供连接接口。
图8示出本公开的区块链***的一些实施例的框图。
如图8所示,区块链***8包括:第一节点装置81用于执行上述任一个实施例中的身份验证方法;多个第二节点装置82用于根据用户的证书发放请求的相应链码生成链码签名;第三节点装置83用于根据第一节点装置81生成的用户身份证书生成相应的区块。
本领域内的技术人员应当明白,本公开的实施例可提供为方法、***、或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用非瞬时性存储介质上实施的计算机程序产品的形式。
至此,已经详细描述了根据本公开的身份验证方法、区块链***的节点装置、区块链***和计算机可读存储介质。为了避免遮蔽本公开的构思,没有描述本领域所公知的一些细节。本领域技术人员根据上面的描述,完全可以明白如何实施这里公开的技术方案。
可能以许多方式来实现本公开的方法和***。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和***。用于方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
虽然已经通过示例对本公开的一些特定实施例进行了详细说明,但是本领域的技术人员应该理解,以上示例仅是为了进行说明,而不是为了限制本公开的范围。本领域的技术人员应该理解,可在不脱离本公开的范围和精神的情况下,对以上实施例进行修改。本公开的范围由所附权利要求来限定。