CN117997559A - 基于区块链的身份验证方法、装置和计算机设备 - Google Patents

基于区块链的身份验证方法、装置和计算机设备 Download PDF

Info

Publication number
CN117997559A
CN117997559A CN202211354131.0A CN202211354131A CN117997559A CN 117997559 A CN117997559 A CN 117997559A CN 202211354131 A CN202211354131 A CN 202211354131A CN 117997559 A CN117997559 A CN 117997559A
Authority
CN
China
Prior art keywords
console
identity
contract
identity contract
address
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202211354131.0A
Other languages
English (en)
Inventor
庄晓照
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202211354131.0A priority Critical patent/CN117997559A/zh
Publication of CN117997559A publication Critical patent/CN117997559A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)

Abstract

本申请涉及一种基于区块链的身份验证方法、装置、计算机设备、存储介质和计算机程序产品。所述方法包括:在第二控制台生成身份合约地址的情况下,接收第二控制台发送的携带身份合约地址的合约调用请求,身份合约地址基于第一控制台的控制台公钥生成;根据身份合约地址在公有链上进行身份合约查询,从公有链上获取身份合约地址相应的控制台身份合约,从控制台身份合约中获取身份证明;发送身份证明至第二控制台,第二控制台对身份证明进行验证,当验证通过后,第二控制台建立与第一控制台的通信。采用本方法能够提高身份验证安全性。

Description

基于区块链的身份验证方法、装置和计算机设备
技术领域
本申请涉及区块链技术领域,特别是涉及一种基于区块链的身份验证方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
当前区块链包括联盟链与公有链两种主要形态。在联盟链的使用场景中,各个参与组织一般分布在多个地域,现有的中心化的区块链管控平台很难满足联盟链的需求,因此分布式联盟链控制台已经成为未来联盟链控制台的一种发展趋势。不同的联盟链控制台用于管控联盟链中属于不同组织内的区块链节点。为了组建多地域分布的区块链网络,联盟链控制台之间往往需要进行互联。基于网络安全的考虑,互联的联盟链控制台往往需要对控制台双方身份进行验证。
传统技术中,采用的身份验证方式为,互联的联盟链控制台申请权威的域名证书,通过域名证书进行身份验证。然而,传统方法本质为中心化的身份验证模式,存在安全性较差的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高身份验证安全性的基于区块链的身份验证方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种基于区块链的身份验证方法,应用于至少包括第一控制台和第二控制台的区块链管控系统,所述方法包括:
在第二控制台生成身份合约地址的情况下,接收第二控制台发送的携带身份合约地址的合约调用请求,身份合约地址基于第一控制台的控制台公钥生成;
根据身份合约地址在公有链上进行身份合约查询,从公有链上获取身份合约地址相应的控制台身份合约,从控制台身份合约中获取身份证明;
发送身份证明至第二控制台,第二控制台对身份证明进行验证,当验证通过后,第二控制台建立与第一控制台的通信。
第二方面,本申请还提供了一种基于区块链的身份验证装置,应用于至少包括第一控制台和第二控制台的区块链管控系统,所述装置包括:
请求接收模块,用于在第二控制台生成身份合约地址的情况下,接收第二控制台发送的携带身份合约地址的合约调用请求,身份合约地址基于第一控制台的控制台公钥生成;
合约查询模块,用于根据身份合约地址在公有链上进行身份合约查询,从公有链上获取身份合约地址相应的控制台身份合约,从控制台身份合约中获取身份证明;
证明发送模块,用于发送身份证明至第二控制台,第二控制台对身份证明进行验证,当验证通过后,第二控制台建立与第一控制台的通信。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
在第二控制台生成身份合约地址的情况下,接收第二控制台发送的携带身份合约地址的合约调用请求,身份合约地址基于第一控制台的控制台公钥生成;
根据身份合约地址在公有链上进行身份合约查询,从公有链上获取身份合约地址相应的控制台身份合约,从控制台身份合约中获取身份证明;
发送身份证明至第二控制台,第二控制台对身份证明进行验证,当验证通过后,第二控制台建立与第一控制台的通信。
第四方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
在第二控制台生成身份合约地址的情况下,接收第二控制台发送的携带身份合约地址的合约调用请求,身份合约地址基于第一控制台的控制台公钥生成;
根据身份合约地址在公有链上进行身份合约查询,从公有链上获取身份合约地址相应的控制台身份合约,从控制台身份合约中获取身份证明;
发送身份证明至第二控制台,第二控制台对身份证明进行验证,当验证通过后,第二控制台建立与第一控制台的通信。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
在第二控制台生成身份合约地址的情况下,接收第二控制台发送的携带身份合约地址的合约调用请求,身份合约地址基于第一控制台的控制台公钥生成;
根据身份合约地址在公有链上进行身份合约查询,从公有链上获取身份合约地址相应的控制台身份合约,从控制台身份合约中获取身份证明;
发送身份证明至第二控制台,第二控制台对身份证明进行验证,当验证通过后,第二控制台建立与第一控制台的通信。
第六方面,本申请提供了一种基于区块链的身份验证方法,应用于至少包括第一控制台和第二控制台的区块链管控系统,所述方法包括:
获取第一控制台的控制台公钥;
基于控制台公钥生成身份合约地址,发送携带身份合约地址的合约调用请求至公有链中的区块链节点,以使得区块链节点根据身份合约地址在公有链上进行身份合约查询,从公有链上获取身份合约地址相应的控制台身份合约,从控制台身份合约中获取身份证明;
接收区块链节点发送的身份证明,对身份证明进行验证,当验证通过后,建立与第一控制台的通信。
第七方面,本申请还提供了一种基于区块链的身份验证装置,应用于至少包括第一控制台和第二控制台的区块链管控系统,所述装置包括:
公钥获取模块,用于获取第一控制台的控制台公钥;
证明获取模块,用于基于控制台公钥生成身份合约地址,发送携带身份合约地址的合约调用请求至公有链中的区块链节点,以使得区块链节点根据身份合约地址在公有链上进行身份合约查询,从公有链上获取身份合约地址相应的控制台身份合约,从控制台身份合约中获取身份证明;
身份验证模块,用于接收区块链节点发送的身份证明,对身份证明进行验证,当验证通过后,建立与第一控制台的通信。
第八方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取第一控制台的控制台公钥;
基于控制台公钥生成身份合约地址,发送携带身份合约地址的合约调用请求至公有链中的区块链节点,以使得区块链节点根据身份合约地址在公有链上进行身份合约查询,从公有链上获取身份合约地址相应的控制台身份合约,从控制台身份合约中获取身份证明;
接收区块链节点发送的身份证明,对身份证明进行验证,当验证通过后,建立与第一控制台的通信。
第九方面,本申请还提供了一种计算机可读存储介质。所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取第一控制台的控制台公钥;
基于控制台公钥生成身份合约地址,发送携带身份合约地址的合约调用请求至公有链中的区块链节点,以使得区块链节点根据身份合约地址在公有链上进行身份合约查询,从公有链上获取身份合约地址相应的控制台身份合约,从控制台身份合约中获取身份证明;
接收区块链节点发送的身份证明,对身份证明进行验证,当验证通过后,建立与第一控制台的通信。
第十方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
获取第一控制台的控制台公钥;
基于控制台公钥生成身份合约地址,发送携带身份合约地址的合约调用请求至公有链中的区块链节点,以使得区块链节点根据身份合约地址在公有链上进行身份合约查询,从公有链上获取身份合约地址相应的控制台身份合约,从控制台身份合约中获取身份证明;
接收区块链节点发送的身份证明,对身份证明进行验证,当验证通过后,建立与第一控制台的通信。
上述基于区块链的身份验证方法、装置、计算机设备、存储介质和计算机程序产品,在进行身份验证时,需要对第一控制台进行身份验证的第二控制台可以通过第一控制台的控制台公钥生成身份合约地址,以通过身份合约地址向公有链请求身份证明,由于基于控制台公钥生成的身份合约地址作为第一控制台的唯一标识存在,能够保证从公有链上获取到的控制台身份合约以及控制台身份合约中的身份证明的准确性,从而第二控制台可以通过对身份证明进行验证,实现对第一控制台的身份验证,在验证通过后,建立与第一控制台的通信,在身份验证的过程中,以区块链不可篡改特性和身份证明保证了第一控制台的身份的权威性,能够提高身份验证安全性。
附图说明
图1为一个实施例中基于区块链的身份验证方法的应用环境图;
图2为一个实施例中基于区块链的身份验证方法的流程示意图;
图3为一个实施例中控制台的身份证明的示意图;
图4为一个实施例中生成身份合约地址的示意图;
图5为另一个实施例中生成身份合约地址的示意图;
图6为一个实施例中对第一控制台进行注册的示意图;
图7为一个实施例中对控制台进行身份验证的示意图;
图8为另一个实施例中对控制台进行身份验证的示意图;
图9为另一个实施例中基于区块链的身份验证方法的流程示意图;
图10为一个实施例中基于区块链的身份验证装置的结构框图;
图11为一个实施例中基于区块链的身份验证装置的结构框图;
图12为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
在进行具体说明之前,先对本申请涉及的一些术语进行说明。
联盟链:多个联盟节点共同参与的区块链网络。联盟链中每个节点的权限都完全对等,各节点可以在不需要完全信任的情况下就能够实现数据的可信交换。联盟链的各个节点通常有与之对应的实体机构组织,通过授权后才能加入或退出联盟链。在联盟链中,每个组织代表一个联盟成员,联盟成员可以是企业或部门。
控制台:区块链网络的开发系统的前端程序,用于供区块链网络的管理人员执行区块链网络的创建和管控操作,控制台可以向用户提供命令行或者图形化的管理界面,按照不同控制台的管辖范围,可以将区块链网络中的所有区块链节点划分为不同的区块链节点集群。这里的区块链网络具体可以为联盟链,则不同的控制台用于管理联盟链中属于不同组织内的联盟链节点。
智能合约(SmartContract):根据特定条件自动执行的合约程序。智能合约是区块链的重要特征,是利用区块链实现业务逻辑的重要途径。智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
按照区块链中数据的读取和写入权限,区块链可以分为公有链、私有链和联盟链。其中,公有链是指任何人都可读取的、任何人都能发送交易且交易能获得有效确认的、任何人都能参与共识过程的区块链。私有链是指其写入权限仅在一个组织手里的区块链,换言之,私有链中对读取权限或者对外开放,或者被任意程度进行了限制。联盟链的开放程度和去中心化程度是有所限制的,联盟链的参与者是被提前筛选出来或者直接指定的,数据库的读取权限可能是公开的,也可能像写入权限一样只限于系统的参与者。
在以下的描述中,所涉及的术语“第一/第二”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一/第二”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
本申请实施例提供的基于区块链的身份验证方法,可以应用于如图1所示的应用环境中。该应用环境中包含至少包括第一控制台102和第二控制台104的区块链管控系统106以及公有链中的区块链节点108,第一控制台102和第二控制台104通过网络与区块链节点108进行通信。其中,在需要对第一控制台102进行身份验证时,第二控制台104基于第一控制台102的控制台公钥生成身份合约地址,发送携带身份合约地址的合约调用请求至公有链中的区块链节点108,区块链节点108根据身份合约地址在公有链进行身份合约查询,从公有链上获取身份合约地址相应的控制台身份合约,从控制台身份合约中获取身份证明,发送身份证明至第二控制台104,第二控制台104对身份证明进行验证,当验证通过后,第二控制台104建立与第一控制台102的通信。
进一步地,第一控制台102、第二控制台104和区块链节点108均可以通过终端或者服务器实现。其中,终端可以但不限于是各种台式计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种基于区块链的身份验证方法,应用于至少包括第一控制台和第二控制台的区块链管控系统,以该方法应用于图1中的区块链节点108为例进行说明,包括以下步骤:
步骤202,在第二控制台生成身份合约地址的情况下,接收第二控制台发送的携带身份合约地址的合约调用请求,身份合约地址基于第一控制台的控制台公钥生成。
其中,第一控制台是指联盟链中用于管控第一组织内的联盟链节点的控制台,第二控制台是指联盟链中用于管控第二组织内的联盟链节点的控制台,第一组织和第二组织不相同。比如,联盟链可以为与学校关联的区块链网络,则每个学校即为不同的组织,可以使用控制台来管理联盟链中属于自己的区块链节点。再比如,联盟链可以为与公司关联的区块链网络,则每个公司即为不同的组织,可以使用控制台来管理联盟链中属于自己的区块链节点。
其中,第一控制台的控制台公钥是指第一控制台所创建的公钥,第一控制台会自行创建公私钥对,公私钥对中包括控制台公钥和控制台私钥。控制台公钥和控制台私钥是通过一种算法得到的一个密钥对(即一个控制台公钥和一个控制台私钥),其中的一个向外界公开,称为控制台公钥,另一个由第一控制台自行保留,称为控制台私钥。举例说明,第一控制台可以利用OpenSSL(用于应用程序的软件库,该应用程序可保护计算机网络上的通信免遭监测或需要识别另一方的身份,是SSL(Secure Sockets Layer安全套接字协议)和TLS(Transport Layer Security,安全传输层协议)的开源实现)创建包括控制台公钥A1和控制台私钥A2的公私钥对,具体的创建方式为先利用OpenSSL创建控制台私钥A2,再利用OpenSSL基于控制台私钥A2创建控制台公钥A1。通过这种算法得到的密钥对能保证在世界范围内是唯一的。使用这个密钥对的时候,如果用其中一个密钥加密一段数据,必须用另一个密钥解密。如用控制台公钥加密数据就必须用控制台私钥解密,如果用控制台私钥加密也必须用控制台公钥解密,否则解密将不会成功。
其中,身份合约地址是指与公有链上所部署的控制台身份合约相对应的地址,当控制台身份合约部署在公有链上时,会生成相应的身份合约地址,身份合约地址由控制台身份合约相应的控制台账户地址以及控制台账户地址相应的已生成的事务数(nonce)决定。控制台账户地址是指在根据控制台公钥进行账户注册后所生成的地址。事务数是指发出交易的次数,从0开始递增,同一控制台账户地址相应的交易会被依次确认。该身份合约地址在公有链上具备唯一性,因此,使用该身份合约地址作为第一控制台的标识可以保证控制台身份的全局唯一性。合约调用请求是指调用与身份合约地址相应的控制台身份合约,从控制台身份合约中获取身份证明的请求。
具体的,若第二控制台想要与第一控制台建立通信,需要在建立通信之前对第一控制台进行身份验证,以确定是否可以与第一控制台通信。在进行身份验证时,第二控制台会基于第一控制台的控制台公钥生成身份合约地址,再发送携带身份合约地址的合约调用请求至区块链节点。
在一个实施例中,第二控制台对第一控制台进行身份验证,主要是为了验证第一控制台所管控的区块链节点是否与自身所管控的区块链节点归属于同一个区块链网络。在一个实施例中,该同一个区块链网络具体可以为联盟链。举例说明,假设联盟链为与学校关联的区块链网络,第二控制台为一个学校所使用的管理区块链节点的控制台,对第一控制台进行身份验证则是为了验证第一控制台是否为另一个学校所使用的管理区块链节点的控制台。又举例说明,假设联盟链为与公司关联的区块链网络,第二控制台为一个公司所使用的管理区块链节点的控制台,对第一控制台进行身份验证则是为了验证第一控制台是否为另一个公司所使用的管理区块链节点的控制台。
在一个实施例中,第一控制台的控制台公钥是第一控制台自行发送给第二控制台的。在一个实施例中,第一控制台在自行创建公私钥对后,会与第二控制台交换控制台公钥,将自己的控制台公钥发送给第二控制台,同时接收到第二控制台的控制台公钥。在另一个实施例中,第一控制台在自行创建公私钥对后,会单方面将控制台公钥发送给第二控制台,此时并不会接收到第二控制台的控制台公钥,只有在接收到第二控制台在对其身份验证通过后发送的消息时,才会同时收到第二控制台的控制台公钥。进一步的,第一控制台在接收到第二控制台的控制台公钥后,也会对第二控制台进行身份验证,以确认是否也可以与第二控制台通信。
在一个实施例中,第二控制台会先基于第一控制台的控制台公钥,生成第一控制台的控制台账户地址,再基于第一控制台的控制台账户地址,生成第一控制台的身份合约地址,即第二控制台可以由第一控制台的控制台公钥推导出第一控制台的身份合约地址。在一个实施例中,在生成第一控制台的控制台账户地址时,第二控制台会先基于进行账户注册时所采用的特征值计算方式对控制台公钥进行特征值计算,获得控制台公钥相应的目标特征值,再基于账户注册时所采用的所转换进制,对目标特征值进行进制转换,基于所转换进制以及转换后目标特征值,生成第一控制台的控制台账户地址。其中,特征值计算方式和所转换进制可按照实际应用场景进行配置。
在一个实施例中,在生成第一控制台的身份合约地址时,第二控制台会基于第一控制台的控制台账户地址和预配置事务数生成第一控制台的身份合约地址。其中,预配置事务数可按照实际应用场景进行配置。为了保证可以由控制台公钥推导出第一控制台的身份合约地址,通常需要固定事务数(nonce)的值,即保证控制台账户地址的第一个事务为部署控制台身份合约。举例说明,预配置事务数可以为nonce=0。在一个实施例中,第二控制台可以利用RLP(recursive length prefix)算法(以太坊公有链的一个串行化协议),基于第一控制台的控制台账户地址和预配置事务数生成第一控制台的身份合约地址。
步骤204,根据身份合约地址在公有链上进行身份合约查询,从公有链上获取身份合约地址相应的控制台身份合约,从控制台身份合约中获取身份证明。
其中,控制台身份合约是指部署在公有链上的、表征第一控制台身份的智能合约。在控制台身份合约中包括控制台账户地址以及身份证明,其中的控制台账户地址是指在根据控制台公钥进行账户注册后所生成的地址,可以用于标识第一控制台。身份证明是指可以用于证明第一控制台的身份的数据。
具体的,区块链节点在接收到身份合约地址后,会根据身份合约地址在公有链上进行身份合约查询,以从公有链上获取身份合约地址相应的控制台身份合约,从控制台身份合约中获取身份证明。在一个实施例中,区块链节点会以身份合约地址为关键字在公有链上进行身份合约查询,以从公有链上获取身份合约地址相应的控制台身份合约。
步骤206,发送身份证明至第二控制台,第二控制台对身份证明进行验证,当验证通过后,第二控制台建立与第一控制台的通信。
其中,身份证明是指可以用于证明第一控制台的身份的数据,包括身份信息以及证明信息,其中的身份信息用于描述第一控制台的身份,证明信息用于对身份信息进行证明。比如,身份信息具体可以为第一控制台具体归属于联盟中的第一组织,证明信息用于证明第一控制台确实归属于该第一组织。举例说明,身份信息的形式具体可以为可验证数字凭证(VC),该可验证数字凭证的形式具体可以为:组织标识,其中的ID-X为第一控制台的标识,具体可以为第一控制台的身份合约地址,/>表示属于,组织标识用于对不同的组织进行区分,若第一控制台属于组织A,则对应的可验证数字凭证可以为:/> 需要说明的是,一个控制台可以同时归属于多个组织,则针对于该控制台来说,会存在分别与多个组织相应的身份证明,如图3所示,控制台A可以同时归属于组织A、组织B、……组织H等,每个组织都有对应的可验证数字凭证(VC)(图3中给出组织A的可验证数字凭证为/>组织B的可验证数字凭证为/>其中的ID-X是控制台A的标识,具体可以为控制台A的身份合约地址,/>表示属于组织A,/>表示属于组织B),控制台与组织的归属关系都会包含在相应的身份证明内,所有的身份证明都会被写入控制台A的身份合约中,该身份合约在公有链上存储。
其中,证明信息具体可以是指权威CA(证书的签发机构)机构颁发的证书,也可以是需要通信的控制台都认可的相关机构的电子签名。举例说明,这里的相关机构具体可以是指需要通信的控制台都认可的组织的电子签名。进一步举例说明,当控制台为学校时,身份证明具体可以是需要通信的学校都认可的高校组织的电子签名。
需要说明的是,控制台身份合约和控制台公钥主要是在数据层面标识控制台,但是在实际使用中,往往需要显示层面的身份信息,比如全国高校发起一个学分区块链网络,各个高校都使用联盟链控制台来管理学分区块链网络中属于自己的区块链节点,各个高校的联盟链控制台通信时,需要验证彼此的身份是否属于高校,此时就需要第三方的证明将控制台身份合约、控制台公钥以及现实中的高校身份绑定,类似可以证明控制台身份合约、控制台公钥和现实身份的数据就被称为身份证明,即第三方证明,该身份证明会被存储在控制台身份合约中,在控制台彼此验证身份时被查询获取。
本实施例中,同时支持存储多种不同第三方证明,能够实现身份证明方式的自定义,而不完全依赖于向权威CA机构申请,能够实现去中心化。在此基础上,若身份证明为需要通信的控制台都认可的相关机构的电子签名,在对身份证明进行验证时,也不需要内置多个权威CA机构的根证书,能够减少验证限制。身份证明不直接与域名绑定,即使控制台域名更换,身份证明也不会失效,不需要重新申请,也不需要通知互联的多方,更不需要改变连接地址和验证逻辑,能够减少维护成本。
具体的,区块链节点在获取到身份证明后,会发送身份证明至第二控制台,第二控制台在接收到身份证明后,会对身份证明进行验证,当验证通过后,建立与第一控制台的通信。在一个实施例中,第二控制台会基于身份证明中的证明信息对与证明信息相应的身份信息进行验证,以验证身份信息是否可信,若身份信息可信,基于可信的身份信息确定第一控制台是否与自身属于同一组织,若第一控制台与自身属于同一组织,则验证通过,建立与第一控制台的通信。
上述基于区块链的身份验证方法,在进行身份验证时,需要对第一控制台进行身份验证的第二控制台可以通过第一控制台的控制台公钥生成身份合约地址,以通过身份合约地址向公有链请求身份证明,由于基于控制台公钥生成的身份合约地址作为第一控制台的唯一标识存在,能够保证从公有链上获取到的控制台身份合约以及控制台身份合约中的身份证明的准确性,从而第二控制台可以通过对身份证明进行验证,实现对第一控制台的身份验证,在验证通过后,建立与第一控制台的通信,在身份验证的过程中,以区块链不可篡改特性和身份证明保证了第一控制台的身份的权威性,能够提高身份验证安全性。
在一个实施例中,接收第二控制台发送的携带身份合约地址的合约调用请求之前,还包括:
在第一控制台创建控制台公钥的情况下,接收第一控制台发送的携带控制台公钥的控制台注册请求;
基于控制台公钥,为第一控制台部署控制台身份合约,并生成控制台身份合约相应的身份合约地址;
发送身份合约地址至第一控制台,以使得第一控制台基于身份合约地址将身份证明写入控制台身份合约。
其中,控制台注册请求是指在公有链上注册控制台身份的请求。
具体的,第一控制台在自行创建公私钥对后,需要在公有链上注册控制台身份,此时,第一控制台会发送携带控制台公钥的控制台注册请求至区块链节点,区块链节点在接收到第一控制台发送的携带控制台公钥的控制台注册请求后,会先根据控制台公钥进行账户注册,生成控制台账户地址,再部署包括控制台账户地址的控制台身份合约,并生成控制台身份合约相应的身份合约地址,该身份合约地址用于唯一标识在公有链上已部署的控制台身份合约。此时,在控制台身份合约中仅包括控制台账户地址,身份证明还未写入控制台身份合约中。因此,在生成身份合约地址后,区块链节点会将身份合约地址发送至第一控制台,以使得第一控制台基于身份合约地址将身份证明写入控制台身份合约。
在一个实施例中,如图4所示,区块链节点会先根据控制台公钥A进行账户注册,生成控制台账户地址B,再部署包括控制台账户地址B的控制台身份合约,并生成控制台身份合约相应的身份合约地址C,以身份合约地址C作为第一控制台的身份标识。
本实施例中,能够基于控制台公钥实现对第一控制台的控制台身份合约的部署,以身份合约地址作为第一控制台的标识,保证身份合约地址和控制台公钥的唯一绑定关系,实现了控制台身份的去中心化注册,通过发送身份合约地址至第一控制台,能够使得第一控制台基于身份合约地址将身份证明写入控制台身份合约,实现对第一控制台的身份证明的写入。
在一个实施例中,基于控制台公钥,为第一控制台部署控制台身份合约,并生成控制台身份合约相应的身份合约地址包括:
根据控制台公钥进行账户注册,生成控制台账户地址;
部署包括控制台账户地址的控制台身份合约,并基于控制台账户地址和预配置事务数生成控制台身份合约相应的身份合约地址。
其中,控制台账户地址是指在根据控制台公钥进行账户注册后所生成的地址,可以用于标识第一控制台。预配置事务数是指预先配置的事务数,事务数是指发出交易的次数,从0开始递增,同一控制台账户地址相应的交易会被依次确认,预配置事务数可按照实际应用场景进行配置。为了保证可以由控制台公钥推导出第一控制台的身份合约地址,通常需要固定事务数(nonce)的值,即保证控制台账户地址的第一个事务为部署控制台身份合约。举例说明,预配置事务数可以为nonce=0。
具体的,在进行账户注册时,区块链节点会对控制台公钥进行特征值计算,获得控制台公钥相应的目标特征值,再基于目标特征值生成控制台账户地址。在得到控制台账户地址后,区块链节点会使用控制台账户地址创建控制台身份合约,并利用预配置合约地址生成方式,基于控制台账户地址和预配置事务数生成控制台身份合约相应的身份合约地址。
其中,预配置合约地址生成方式可以按照实际应用场景进行配置,本实施例中,在此处不对具体的预配置合约地址生成方式进行限定,举例说明,预配置合约地址生成方式具体可以为利用RLP算法(以太坊公有链的一个串行化协议)以及哈希算法,基于第一控制台的控制台账户地址和预配置事务数生成第一控制台的身份合约地址。区块链节点会先通过RLP算法对控制台账户地址和预配置事务数进行编码,获得编码数据,再利用哈希算法对编码数据进行哈希运算,获得身份合约地址。
在一个实施例中,哈希算法具体可以为Keccak-256算法,预配置事务数具体可以为0,则RLP算法和哈希算法生成身份合约地址可以通过以下公式表示:身份合约地址=Keccak-256(RLP(控制台账户地址,nonce=0)),其中,Keccak-256表示Keccak-256算法,Keccak算法是一种被选定为SHA-3标准的单向散列函数算法,Keccak-256算法所生成的散列值的长度为256,RLP表示RLP算法,nonce=0表示预配置事务数为0。
在一个实施例中,在基于目标特征值生成控制台账户地址时,可以直接将目标特征值作为控制台账户地址,也可以通过对目标特征值进行进一步处理,以得到控制台账户地址。本实施例中在此处不对基于目标特征值生成控制台账户地址的方式进行具体限定,只要能够基于目标特征值生成一个唯一的控制台账户地址即可。
本实施例中,通过先根据控制台公钥生成控制台账户地址,再部署包括控制台账户地址的控制台身份合约,并基于控制台账户地址和预配置事务数生成控制台身份合约相应的身份合约地址,能够基于控制台公钥实现对第一控制台的控制台身份合约的部署,以身份合约地址作为第一控制台的标识,保证身份合约地址和控制台公钥的唯一绑定关系,使得在对第一控制台的标识进行注册时不再需要一个中心化的注册中心,可以实现独立自主的注册,在注册时只需要在公有链上安装部署固定的控制台身份合约,并生成相应的身份合约地址即可,实现了控制台身份的去中心化注册。
在一个实施例中,根据控制台公钥进行账户注册,生成控制台账户地址包括:
对控制台公钥进行特征值计算,获得控制台公钥相应的目标特征值;
对目标特征值进行进制转换,基于所转换进制以及转换后目标特征值,生成控制台账户地址。
其中,进制转换是利用符号来计数的方法。进制转换由一组数码符号和两个基本因素“基数”与“位权”构成。基数是指,进位计数制中所采用的数码(数制中用来表示“量”的符号)的个数。位权是指,进位制中每一固定位置对应的单位值。
具体的,区块链节点会对控制台公钥进行特征值计算,获得控制台公钥相应的目标特征值,再基于预配置进制对目标特征值进行进制转换,获得转换后目标特征值,最后基于所转换进制(即预配置进制)和转换后目标特征值,生成控制台账户地址。其中,预配置进制可按照实际应用场景进行配置,本实施例中在此处不做具体限定。举例说明,预配置进制具体可以为十六进制,则通过对目标特征值进行进制转换,所获得的转换后目标特征值为十六进制字符串。
在一个实施例中,可以采用哈希算法对控制台公钥进行特征值计算,所得到的目标特征值即为控制台公钥的哈希值,也可以采用其他预配置的映射算法对控制台公钥进行特征值计算,所得到的特征值即为控制台公钥的映射值。本实施例中,若采用哈希算法对控制台公钥进行特征值计算,不对所采用的哈希算法进行具体限定,只要能够实现特征值计算即可。在一个实施例中,所采用的哈希算法具体可以为Keccak-256算法。
在一个实施例中,在生成控制台账户地址时,区块链节点会从转换后目标特征值中提取出部分特征值,再拼接所转换进制相应的进制符号以及部分特征值,获得控制台账户地址。其中,进制符号是指用于对不同进制进行区分的标识符。比如,进制符号具体可以是指对不同进制进行区分的前缀标识符。举例说明,若进制符号为前缀标识符,十六进制的进制符号可以为0x,八进制的进制符号可以为0,二进制的进制符号可以为0b。又比如,进制符号具体可以是指对不同进制进行区分的后缀标识符。举例说明,若进制符号为后缀标识符,十六进制的进制符号可以为H,八进制的进制符号可以为O,二进制的进制符号可以为B。
在一个实施例中,在拼接所转换进制相应的进制符号以及部分特征值时,若进制符号为前缀标识符,在拼接时会将进制符号放在前面,即拼接的方式为进制符号+部分特征值,若进制符号为后缀标识符,在拼接时会将进制符号放在后面,即拼接的方式为部分特征值+进制符号。
在一个实施例中,从转换后目标特征值中提取出部分特征值的提取规则可按照实际应用场景进行配置,本实施例中在此处不做具体限定。举例说明,提取规则具体可以为从转换后目标特征值中提取出后N个字母,数量N可按照实际应用场景进行配置。
在一个实施例中,如图5所示,区块链节点在获取到控制台公钥A以后,会采用Keccak-256算法计算控制台公钥A的哈希值,将控制台公钥A的哈希值转化为十六进制字符串,再取该十六进制字符串的后40个字母(图5中以Hex(控制台公钥A的哈希值)[-40:]表示),其中,Hex()哈数用于获取给定数值的哈希值,本实施例中,即获取控制台公钥A的哈希值的十六进制值,[-40:]表示取该十六进制字符串的后40个字母,在开头拼接0x作为控制台账户地址B。在生成控制台账户地址B以后,区块链节点会部署包括控制台账户地址B的控制台身份合约,并利用公式“身份合约地址C=Keccak-256(RLP(控制台账户地址B,nonce=0))”来生成控制台身份合约相应的身份合约地址C,以身份合约地址C作为第一控制台的身份标识。
本实施例中,通过对控制台公钥进行特征值计算,能够获得控制台公钥相应的目标特征值,从而可以通过对目标特征值进行进制转换,基于所转换进制以及转换后目标特征值,生成控制台账户地址,能够实现控制台账户地址与控制台公钥的绑定。
在一个实施例中,发送身份合约地址至第一控制台,以使得第一控制台将身份证明写入控制台身份合约包括:
发送身份合约地址至第一控制台;
在第一控制台获取到身份证明的情况下,接收第一控制台发送的携带身份证明和数字签名的调用身份合约请求;
当基于身份证明和数字签名对第一控制台身份验证通过,将身份证明写入控制台身份合约。
其中,数字签名(又称公钥数字签名)是只有第一控制台才能产生的别人无法伪造的一段数字串,这段数字串同时也是对第一控制台发送信息真实性的一个有效证明。它是一种类似写在纸上的普通的物理签名,但是在使用了公钥加密领域的技术来实现的,用于鉴别数字信息的方法。一套数字签名通常定义两种互补的运算,一个用于签名,另一个用于验证。数字签名是非对称密钥加密技术与数字摘要技术的应用。调用身份合约请求是指调用第一控制台的控制台身份合约的请求。
具体的,区块链节点会发送身份合约地址至第一控制台,第一控制台在接收到身份合约地址后,会从第三方机构获取身份证明,在获取到身份证明的情况下,利用控制台私钥和身份证明生成数字签名,基于身份合约地址发送携带身份证明和数字签名的调用身份合约请求至区块链节点,区块链节点在接收到调用身份合约请求后,会基于身份证明和数字签名对第一控制台进行身份验证,当基于身份证明和数字签名对第一控制台身份验证通过,表示第一控制台有将信息写入控制台身份合约的权限,区块链节点会将身份证明写入控制台身份合约中。其中,第三方机构可以是权威CA机构,也可以是需要通信的控制台都认可的相关机构,本实施例在此处不做具体限定。
在一个实施例中,第一控制台在获取到身份证明后,会对身份证明进行哈希运算,获得身份证明相应的哈希值,再利用控制台私钥对身份证明相应的哈希值进行加密,生成数字签名。区块链节点在对第一控制台进行身份验证时,会基于第一控制台的控制台公钥以及身份证明对数字签名进行验签,验签通过,则表示对第一控制台身份验证通过。其中,本实施例中在此处不对进行哈希运算所采用的哈希算法进行限定,只要能够实现哈希运算即可。
在一个实施例中,将控制台身份合约发布到公有链上后,可以有效的保证控制台身份合约不被数据存储放篡改,但是控制台身份信息(具体可以为身份证明)是需要通过控制台身份合约写到公有链上的,因此还需要通过预配置合约逻辑来控制数据权限,实现控制台身份的自主管理,即在部署控制台身份合约时,会将控制台身份合约的身份合约所有者设置为第一控制台,以使得只有第一控制台有将信息写入控制台身份合约的权限,其他控制台只能够查看控制台身份合约。
本实施例中,通过发送身份合约地址至第一控制台,在第一控制台获取到身份证明的情况下,接收第一控制台发送的携带身份证明和数字签名的调用身份合约请求,当基于身份证明和数字签名对第一控制台身份验证通过,将身份证明写入控制台身份合约,能够实现对身份证明的写入。
在一个实施例中,当基于身份证明和数字签名对第一控制台身份验证通过,将身份证明写入控制台身份合约之前,还包括:
基于第一控制台的控制台公钥对数字签名进行解密,获得解密信息,并对身份证明进行哈希运算,获得摘要信息;
当解密信息和摘要信息一致,确定对第一控制台身份验证通过。
具体的,区块链节点会基于第一控制台的控制台公钥对数字签名进行解密,获得解密信息,并对身份证明进行哈希运算,获得摘要信息,比对解密信息和摘要信息是否一致,当解密信息和摘要信息一致,表示身份证明确实是第一控制台发送过来的,确定对第一控制台身份验证通过。本实施例中,在此处不对进行哈希运算所使用的哈希算法进行限定,只要与第一控制台对身份证明进行哈希运算所使用的哈希算法一致即可。
本实施例中,通过基于第一控制台的控制台公钥对数字签名进行解密,获得解密信息,并对身份证明进行哈希运算,获得摘要信息,能够利用比对解密信息和摘要信息是否一致,实现对第一控制台的身份验证。
在一个实施例中,以本申请的基于区块链的身份验证方法,应用于包括第一控制台和第二控制台的联盟链管控系统为例进行说明。其中,第一控制台和第二控制台为联盟链中分别用于管控归属于不同组织的联盟链节点的控制台。
首先,需要分别对第一控制台和第二控制台进行注册,注册方式即在公有链上安装部署固定的控制台身份合约,下面以对第一控制台进行注册为例进行说明,如图6所示,第一控制台在生成控制台公私钥对后,会发送携带控制台公钥的控制台注册请求至公有链中区块链节点,公有链中区块链节点会对控制台公钥进行特征值计算,获得控制台公钥相应的目标特征值,对目标特征值进行进制转换,基于所转换进制以及转换后目标特征值,生成控制台账户地址,发送控制台账户地址至第一控制台,第一控制台在接收到控制台账户地址后,会发送发布身份合约请求至公有链中区块链节点,以使得公有链中区块链节点初始化发布账户,即部署包括控制台账户地址的控制台身份合约,并基于控制台账户地址和预配置事务数生成控制台身份合约相应的身份合约地址,公有链中区块链节点在生成身份合约地址后,会发送身份合约地址至第一控制台,第一控制台在接收到身份合约地址后,会获取身份信息第三方证明(即身份证明),发送携带身份证明和数字签名的调用身份合约请求至公有链中区块链节点,以使得公有链中区块链节点基于身份证明和数字签名对第一控制台进行身份验证,当身份验证通过,将身份证明写入控制台身份合约。需要说明的是,对第二控制台进行注册的方式与对第一控制台进行注册相似,本实施例在此处不在撰述。
在一个实施例中,如图5所示,区块链节点在获取到控制台公钥A以后,会采用Keccak-256算法计算控制台公钥A的哈希值,将控制台公钥A的哈希值转化为十六进制字符串,再取该十六进制字符串的后40个字母,在开头拼接0x作为控制台账户地址B。在生成控制台账户地址B以后,区块链节点会部署包括控制台账户地址B的控制台身份合约,并利用公式“身份合约地址C=Keccak-256(RLP(控制台账户地址B,nonce=0))”来生成控制台身份合约相应的身份合约地址C,以身份合约地址C作为第一控制台的身份标识。
在完成第一控制台和第二控制台的注册之后,若第二控制台想要与第一控制台通信,在给第一控制台发送消息之前,第二控制台会对第一控制台进行身份验证,以确认是否可以与第一控制台通信。在对第一控制台进行身份验证时,如图7所示,第二控制台会基于第一控制台的控制台公钥生成身份合约地址,发送携带身份合约地址的合约调用请求至公有链中区块链节点,公有链中区块链节点会根据身份合约地址在公有链上进行身份合约查询,从公有链上获取身份合约地址相应的控制台身份合约,从控制台身份合约中获取身份证明,发送身份证明至第二控制台,第二控制台在接收到身份证明后,会对身份证明进行验证,当验证通过后,建立与第一控制台的通信。其中,第一控制台的控制台公钥是由第一控制台自行发送给第二控制台的。
在一个实施例中,当第二控制台对第一控制台进行身份验证通过后,其可以与第一控制台通信,会发送消息给第一控制台,若此时第一控制台也已经对第二控制台进行身份验证通过,双方可以正常通信,若此时第一控制台对第二控制台进行身份验证未通过,第一控制台会发送拒绝接收消息提示第二控制台,若第一控制台尚未对第二控制台进行身份验证,会在接收到第二控制台的消息的时候再对第二控制台进行身份验证,第二控制台在发送消息过来的同时会发送自身的控制台公钥,第一控制台可以根据第二控制台的控制台公钥对第二控制台进行身份验证。需要说明的是,第一控制台根据第二控制台的控制台公钥对第二控制台进行身份验证的方式与第二控制台根据第一控制台的控制台公钥对第一控制台进行身份验证的方式相似,本实施例在此处不再撰述。
在一个实施例中,如图8所示,在进行通信之前,第一控制台(控制台A)和第二控制台(控制台B)会交换控制台公钥(AP,BP),控制台A在接收到BP(第二控制台的控制台公钥)后,会通过BP计算出控制台B的身份合约地址BDDR,发送携带身份合约地址BDDR的合约调用请求至公有链中区块链节点,以使得公有链中区块链节点在公有链上获取到控制台B身份合约后,从控制台B身份合约中获取控制台B身份证明,发送控制台B身份证明至控制台A,控制台A会验证控制台B第三方证明(即身份证明),在验证通过后,可以与控制台B通信。同时,控制台B在接收到AP(第一控制台的控制台公钥)后,会通过AP计算出控制台A的身份合约地址ADDR,发送携带身份合约地址ADDR的合约调用请求至公有链中区块链节点,以使得公有链中区块链节点在公有链上获取到控制台A身份合约后,从控制台A身份合约中获取控制台A证明,发送控制台A身份证明至控制台B,控制台B会验证控制台A第三方证明(即身份证明),在验证通过后,可以与控制台A通信。控制台A和控制台B对对方的身份验证均通过后,双方可以正常通信。
发明人认为,传统的联盟链控制台互联方式在进行身份验证时,通常需要联盟链控制台先向权威CA机构申请域名证书,如果申请的权威CA机构不同,还需要保证互联的联盟链控制台都内置对方所申请的权威CA机构的根证书,这种方式对联盟链控制台的自由互联存在较大限制,且当有一方控制台的域名发生变更时,还需要通知互联的多方,改变连接地址和验证逻辑,极大增加了维护成本。基于此,本申请提供了一种基于区块链的身份验证方法,该身份验证方法实现了分布式的控制台身份注册和认证,使用公有链上的身份合约地址作为控制台唯一标识,保证唯一性,通过区块链不可篡改特性和通过第三方得到的身份证明保证控制台身份的权威性,基于身份合约地址的生成方式,保证控制台唯一标识和控制台公私钥对的唯一绑定关系,实现控制台身份的去中心化注册,基于合约逻辑管理控制台身份的修改权限,实现控制身份合约由控制台自主管理。
在一个实施例中,如图9所示,提供了一种基于区块链的身份验证方法,应用于至少包括第一控制台和第二控制台的区块链管控系统,以该方法应用于图1中的第二控制台104为例进行说明,包括以下步骤:
步骤902,获取第一控制台的控制台公钥;
步骤904,基于控制台公钥生成身份合约地址,发送携带身份合约地址的合约调用请求至公有链中的区块链节点,以使得区块链节点根据身份合约地址在公有链上进行身份合约查询,从公有链上获取身份合约地址相应的控制台身份合约,从控制台身份合约中获取身份证明;
步骤906,接收区块链节点发送的身份证明,对身份证明进行验证,当验证通过后,建立与第一控制台的通信。
具体的,若第二控制台想要与第一控制台通信,在给第一控制台发送消息之前,第二控制台会对第一控制台进行身份验证,以确认是否也可以与第一控制台通信。在对第一控制台进行身份验证时,第二控制台会基于第一控制台的控制台公钥生成身份合约地址,再发送携带身份合约地址的合约调用请求至公有链中的区块链节点。区块链节点在接收到身份合约地址后,会根据身份合约地址在公有链上进行身份合约查询,以从公有链上获取身份合约地址相应的控制台身份合约,从控制台身份合约中获取身份证明。区块链节点在获取到身份证明后,会发送身份证明至第二控制台,第二控制台在接收到身份证明后,基于身份证明中的证明信息对与证明信息相应的身份信息进行验证,以验证身份信息是否可信,若身份信息可信,基于可信的身份信息确定第一控制台是否与自身属于同一组织,若第一控制台与自身属于同一组织,则验证通过,建立与第一控制台的通信。
在一个实施例中,若证明信息为权威CA机构颁发的证书,第二控制台会根据所存储的权威CA机构的根证书对证书进行验证,若证明信息为需要通信的控制台都认可的相关机构的电子签名,第二控制台会根据相关机构的公钥对该电子签名进行验证。其中,相关机构的电子签名是指数据电文中以电子形式所含、所附用于识别相关机构身份并表明相关机构认可其中内容的数据。
在一个实施例中,权威CA机构在对第一控制台的身份进行验证后,会使用自己的私钥对第一控制台的身份信息进行数字签名,生成数字证书,即身份证明,第二控制台可以从所存储的权威CA机构的根证书中获取权威CA机构的公钥,利用权威CA机构的公钥对身份证明中的权威CA机构的数字签名进行验签。
在一个实施例中,相关机构在对第一控制台的身份进行验证后,会使用自己的私钥对第一控制台的身份信息进行电子签名,生成身份证明,第二控制台可以利用相关机构的公钥对该电子签名进行验证。
上述基于区块链的身份验证方法,在进行身份验证时,需要对第一控制台进行身份验证的第二控制台可以通过第一控制台的控制台公钥生成身份合约地址,以通过身份合约地址向公有链请求身份证明,由于基于控制台公钥生成的身份合约地址作为第一控制台的唯一标识存在,能够保证从公有链上获取到的控制台身份合约以及控制台身份合约中的身份证明的准确性,从而第二控制台可以通过对身份证明进行验证,实现对第一控制台的身份验证,在验证通过后,建立与第一控制台的通信,在身份验证的过程中,以区块链不可篡改特性和身份证明保证了第一控制台的身份的权威性,能够提高身份验证安全性。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了用于实现上述所涉及的基于区块链的身份验证方法的基于区块链的身份验证装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个基于区块链的身份验证装置实施例中的具体限定可以参见上文中对于基于区块链的身份验证方法的限定,在此不再赘述。
在一个实施例中,如图10所示,提供了一种基于区块链的身份验证装置,包括:请求接收模块1002、合约查询模块1004和证明发送模块1006,其中:
请求接收模块1002,用于在第二控制台生成身份合约地址的情况下,接收第二控制台发送的携带身份合约地址的合约调用请求,身份合约地址基于第一控制台的控制台公钥生成;
合约查询模块1004,用于根据身份合约地址在公有链上进行身份合约查询,从公有链上获取身份合约地址相应的控制台身份合约,从控制台身份合约中获取身份证明;
证明发送模块1006,用于发送身份证明至第二控制台,第二控制台对身份证明进行验证,当验证通过后,第二控制台建立与第一控制台的通信。
上述基于区块链的身份验证装置,在进行身份验证时,需要对第一控制台进行身份验证的第二控制台可以通过第一控制台的控制台公钥生成身份合约地址,以通过身份合约地址向公有链请求身份证明,由于基于控制台公钥生成的身份合约地址作为第一控制台的唯一标识存在,能够保证从公有链上获取到的控制台身份合约以及控制台身份合约中的身份证明的准确性,从而第二控制台可以通过对身份证明进行验证,实现对第一控制台的身份验证,在验证通过后,建立与第一控制台的通信,在身份验证的过程中,以区块链不可篡改特性和身份证明保证了第一控制台的身份的权威性,能够提高身份验证安全性。
在一个实施例中,基于区块链的身份验证装置还包括合约部署模块,合约部署模块用于在第一控制台创建控制台公钥的情况下,接收第一控制台发送的携带控制台公钥的控制台注册请求,基于控制台公钥,为第一控制台部署控制台身份合约,并生成控制台身份合约相应的身份合约地址,发送身份合约地址至第一控制台,以使得第一控制台基于身份合约地址将身份证明写入控制台身份合约。
在一个实施例中,合约部署模块还用于根据控制台公钥进行账户注册,生成控制台账户地址,部署包括控制台账户地址的控制台身份合约,并基于控制台账户地址和预配置事务数生成控制台身份合约相应的身份合约地址。
在一个实施例中,合约部署模块还用于对控制台公钥进行特征值计算,获得控制台公钥相应的目标特征值,对目标特征值进行进制转换,基于所转换进制以及转换后目标特征值,生成控制台账户地址。
在一个实施例中,合约部署模块还用于发送身份合约地址至第一控制台,在第一控制台获取到身份证明的情况下,接收第一控制台发送的携带身份证明和数字签名的调用身份合约请求,当基于身份证明和数字签名对第一控制台身份验证通过,将身份证明写入控制台身份合约。
在一个实施例中,合约部署模块还用于基于第一控制台的控制台公钥对数字签名进行解密,获得解密信息,并对身份证明进行哈希运算,获得摘要信息,当解密信息和摘要信息一致,确定对第一控制台身份验证通过。
在一个实施例中,如图11所示,提供了一种基于区块链的身份验证装置,包括:公钥获取模块1102、证明获取模块1104和身份验证模块1106,其中:
公钥获取模块1102,用于获取第一控制台的控制台公钥;
证明获取模块1104,用于基于控制台公钥生成身份合约地址,发送携带身份合约地址的合约调用请求至公有链中的区块链节点,以使得区块链节点根据身份合约地址在公有链上进行身份合约查询,从公有链上获取身份合约地址相应的控制台身份合约,从控制台身份合约中获取身份证明;
身份验证模块1106,用于接收区块链节点发送的身份证明,对身份证明进行验证,当验证通过后,建立与第一控制台的通信。
上述基于区块链的身份验证装置,在进行身份验证时,需要对第一控制台进行身份验证的第二控制台可以通过第一控制台的控制台公钥生成身份合约地址,以通过身份合约地址向公有链请求身份证明,由于基于控制台公钥生成的身份合约地址作为第一控制台的唯一标识存在,能够保证从公有链上获取到的控制台身份合约以及控制台身份合约中的身份证明的准确性,从而第二控制台可以通过对身份证明进行验证,实现对第一控制台的身份验证,在验证通过后,建立与第一控制台的通信,在身份验证的过程中,以区块链不可篡改特性和身份证明保证了第一控制台的身份的权威性,能够提高身份验证安全性。
上述基于区块链的身份验证装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图12所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储控制台身份合约等数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于区块链的身份验证方法。
本领域技术人员可以理解,图12中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的数据(包括但不限于用于分析的数据、存储的数据等),均为经用户授权或者经过各方充分授权的数据,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

Claims (11)

1.一种基于区块链的身份验证方法,应用于至少包括第一控制台和第二控制台的区块链管控系统,其特征在于,所述方法包括:
在所述第二控制台生成身份合约地址的情况下,接收所述第二控制台发送的携带所述身份合约地址的合约调用请求,所述身份合约地址基于所述第一控制台的控制台公钥生成;
根据所述身份合约地址在公有链上进行身份合约查询,从所述公有链上获取所述身份合约地址相应的控制台身份合约,从所述控制台身份合约中获取身份证明;
发送所述身份证明至所述第二控制台,所述第二控制台对所述身份证明进行验证,当验证通过后,所述第二控制台建立与所述第一控制台的通信。
2.根据权利要求1所述的方法,其特征在于,所述接收所述第二控制台发送的携带所述身份合约地址的合约调用请求之前,还包括:
在所述第一控制台创建所述控制台公钥的情况下,接收所述第一控制台发送的携带所述控制台公钥的控制台注册请求;
基于所述控制台公钥,为所述第一控制台部署所述控制台身份合约,并生成所述控制台身份合约相应的身份合约地址;
发送所述身份合约地址至所述第一控制台,以使得所述第一控制台基于所述身份合约地址将所述身份证明写入所述控制台身份合约。
3.根据权利要求2所述的方法,其特征在于,所述基于所述控制台公钥,为所述第一控制台部署所述控制台身份合约,并生成所述控制台身份合约相应的身份合约地址包括:
根据所述控制台公钥进行账户注册,生成控制台账户地址;
部署包括所述控制台账户地址的所述控制台身份合约,并基于所述控制台账户地址和预配置事务数生成所述控制台身份合约相应的身份合约地址。
4.根据权利要求3所述的方法,其特征在于,所述根据所述控制台公钥进行账户注册,生成控制台账户地址包括:
对所述控制台公钥进行特征值计算,获得所述控制台公钥相应的目标特征值;
对所述目标特征值进行进制转换,基于所转换进制以及转换后目标特征值,生成控制台账户地址。
5.根据权利要求2所述的方法,其特征在于,所述发送所述身份合约地址至所述第一控制台,以使得所述第一控制台将所述身份证明写入所述控制台身份合约包括:
发送所述身份合约地址至所述第一控制台;
在所述第一控制台获取到身份证明的情况下,接收所述第一控制台发送的携带所述身份证明和数字签名的调用身份合约请求;
当基于所述身份证明和所述数字签名对所述第一控制台身份验证通过,将所述身份证明写入所述控制台身份合约。
6.根据权利要求5所述的方法,其特征在于,所述当基于所述身份证明和所述数字签名对所述第一控制台身份验证通过,将所述身份证明写入所述控制台身份合约之前,还包括:
基于所述第一控制台的所述控制台公钥对所述数字签名进行解密,获得解密信息,并对所述身份证明进行哈希运算,获得摘要信息;
当所述解密信息和所述摘要信息一致,确定对所述第一控制台身份验证通过。
7.一种基于区块链的身份验证方法,应用于至少包括第一控制台和第二控制台的区块链管控系统,其特征在于,所述方法包括:
获取所述第一控制台的控制台公钥;
基于所述控制台公钥生成身份合约地址,发送携带所述身份合约地址的合约调用请求至公有链中的区块链节点,以使得所述区块链节点根据所述身份合约地址在所述公有链上进行身份合约查询,从所述公有链上获取所述身份合约地址相应的控制台身份合约,从所述控制台身份合约中获取身份证明;
接收所述区块链节点发送的所述身份证明,对所述身份证明进行验证,当验证通过后,建立与所述第一控制台的通信。
8.一种基于区块链的身份验证装置,应用于至少包括第一控制台和第二控制台的区块链管控系统,其特征在于,所述装置包括:
请求接收模块,用于在所述第二控制台生成身份合约地址的情况下,接收所述第二控制台发送的携带所述身份合约地址的合约调用请求,所述身份合约地址基于所述第一控制台的控制台公钥生成;
合约查询模块,用于根据所述身份合约地址在公有链上进行身份合约查询,从所述公有链上获取所述身份合约地址相应的控制台身份合约,从所述控制台身份合约中获取身份证明;
证明发送模块,用于发送所述身份证明至所述第二控制台,所述第二控制台对所述身份证明进行验证,当验证通过后,所述第二控制台建立与所述第一控制台的通信。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述的方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
11.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
CN202211354131.0A 2022-11-01 2022-11-01 基于区块链的身份验证方法、装置和计算机设备 Pending CN117997559A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211354131.0A CN117997559A (zh) 2022-11-01 2022-11-01 基于区块链的身份验证方法、装置和计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211354131.0A CN117997559A (zh) 2022-11-01 2022-11-01 基于区块链的身份验证方法、装置和计算机设备

Publications (1)

Publication Number Publication Date
CN117997559A true CN117997559A (zh) 2024-05-07

Family

ID=90891585

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211354131.0A Pending CN117997559A (zh) 2022-11-01 2022-11-01 基于区块链的身份验证方法、装置和计算机设备

Country Status (1)

Country Link
CN (1) CN117997559A (zh)

Similar Documents

Publication Publication Date Title
AU2021206913B2 (en) Systems and methods for distributed data sharing with asynchronous third-party attestation
US11677569B1 (en) Systems and methods for notary agent for public key infrastructure names
CN109377198B (zh) 一种基于联盟链多方共识的签约系统
CN108933667B (zh) 一种基于区块链的公钥证书的管理方法及管理系统
CN112291245B (zh) 一种身份授权方法、装置、存储介质及设备
US20190295069A1 (en) Systems and methods for integrating cryptocurrency wallet identifiers with digital certificates
CN107832632B (zh) 资产证明授权查询方法、系统、电子装置及计算机可读存储介质
CN109450843B (zh) 一种基于区块链的ssl证书管理方法及系统
Abraham et al. Revocable and offline-verifiable self-sovereign identities
CN112804217B (zh) 一种基于区块链技术的存证方法和装置
Chalaemwongwan et al. A practical national digital ID framework on blockchain (NIDBC)
CN109981287A (zh) 一种代码签名方法及其存储介质
US20220020020A1 (en) Methods, systems, and devices for managing digital assets
US20210306135A1 (en) Electronic device within blockchain based pki domain, electronic device within certification authority based pki domain, and cryptographic communication system including these electronic devices
CN112311538A (zh) 一种身份验证的方法、装置、存储介质及设备
US20230206219A1 (en) Identification token, systems and methods for identification and identity verification.
CN114760071B (zh) 基于零知识证明的跨域数字证书管理方法、系统和介质
Gulati et al. Self-sovereign dynamic digital identities based on blockchain technology
CN114944937A (zh) 分布式数字身份验证方法、系统、电子设备及存储介质
CN112950356B (zh) 基于数字身份的个人贷款处理方法及系统、设备、介质
CN114338081B (zh) 多区块链统一身份认证方法、装置、计算机设备
CN116015846A (zh) 身份认证方法、装置、计算机设备和存储介质
Ren et al. Security analysis of delegable and proxy provable data possession in public cloud storage
CN117997559A (zh) 基于区块链的身份验证方法、装置和计算机设备
Sangeetha et al. Development of novel blockchain technology for certificate management system using cognitive image steganography techniques

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication