CN116975901A - 基于区块链的身份验证方法、装置、设备、介质及产品 - Google Patents

基于区块链的身份验证方法、装置、设备、介质及产品 Download PDF

Info

Publication number
CN116975901A
CN116975901A CN202310179643.6A CN202310179643A CN116975901A CN 116975901 A CN116975901 A CN 116975901A CN 202310179643 A CN202310179643 A CN 202310179643A CN 116975901 A CN116975901 A CN 116975901A
Authority
CN
China
Prior art keywords
identity
verification
proving
circuit
zero knowledge
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
CN202310179643.6A
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 CN202310179643.6A priority Critical patent/CN116975901A/zh
Publication of CN116975901A publication Critical patent/CN116975901A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6245Protecting personal data, e.g. for financial or medical purposes
    • G06F21/6254Protecting personal data, e.g. for financial or medical purposes by anonymising data, e.g. decorrelating personal data from the owner's identification

Landscapes

  • Engineering & Computer Science (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Databases & Information Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Medical Informatics (AREA)
  • Storage Device Security (AREA)

Abstract

本申请提出一种基于区块链的身份验证方法、装置、设备、介质及产品。该方法包括:获取针对证明对象的身份验证数据,身份验证数据中携带有证明对象的身份证明文件,身份证明文件是基于零知识证明电路对证明对象的身份声明信息进行处理后生成的;对证明对象的身份证明文件进行验证处理;若对身份证明文件的验证处理结果为验证成功,则确定验证对象对证明对象的身份验证通过;其中,验证处理包括:调用与零知识证明电路匹配的用于验证的零知识证明电路对身份证明文件进行验证,或者通过区块链中与零知识证明电路匹配的电路验证合约对身份证明文件进行验证。本申请基于零知识证明处理后的身份证明文件进行验证,可提高身份验证时的数据安全性。

Description

基于区块链的身份验证方法、装置、设备、介质及产品
技术领域
本申请涉及区块链技术领域,尤其涉及一种基于区块链的身份验证方法、一种基于区块链的身份验证装置、一种计算机设备、一种计算机可读存储介质及一种计算机程序产品。
背景技术
随着互联网技术的不断发展,各式各样的社交平台层出不穷,用户在与诸如银行、学校、社交软件等第三方平台进行交互时,为了维护互联网的公共安全,往往涉及到身份验证。在身份验证的场景中,用户(证明对象)向第三方平台进行身份验证时往往是直接将自身的身份声明信息提交给第三方验证对象,这种身份验证方式可能会导致用户个人数据被泄露,无法保证数据安全性。
发明内容
本申请实施例提出了一种基于区块链的身份验证方法、装置、设备、介质及产品,可提高身份验证过程中的数据安全性。
一方面,本申请实施例提供了一种基于区块链的身份验证方法,该方法包括:
获取针对证明对象的身份验证数据,身份验证数据中携带有证明对象的身份证明文件,身份证明文件是基于零知识证明电路对证明对象的身份声明信息进行处理后生成的;
对证明对象的身份证明文件进行验证处理;
若对身份证明文件的验证处理结果为验证成功,则确定验证对象对证明对象的身份验证通过;
其中,验证处理包括:调用与零知识证明电路匹配的用于验证的零知识证明电路对身份证明文件进行验证,或者通过区块链中与零知识证明电路匹配的电路验证合约对身份证明文件进行验证。
一方面,本申请实施例提供了一种基于区块链的身份验证方法,该方法包括:
获取证明对象的身份声明信息,身份声明信息是由身份发行对象为证明对象发行的;
基于零知识证明电路对证明对象的身份声明信息进行处理,得到证明对象的身份证明文件;
响应于证明对象的验证操作,向验证对象发送包括身份证明文件的身份验证数据,身份验证数据用于触发验证对象对证明对象进行身份验证处理。
一方面,本申请实施例提供了一种基于区块链的身份验证装置,该装置包括:
获取单元,用于获取针对证明对象的身份验证数据,身份验证数据中携带有证明对象的身份证明文件,身份证明文件是基于零知识证明电路对证明对象的身份声明信息进行处理后生成的;
处理单元,用于对证明对象的身份证明文件进行验证处理;
确定单元,用于若对身份证明文件的验证处理结果为验证成功,则确定验证对象对证明对象的身份验证通过;
其中,验证处理包括:调用与零知识证明电路匹配的用于验证的零知识证明电路对身份证明文件进行验证,或者通过区块链中与零知识证明电路匹配的电路验证合约对身份证明文件进行验证。
在一种可能的实现方式中,处理单元1002还用于执行以下操作:
获取证明对象所在的客户端提交的身份验证请求,身份验证请求携带有客户端标识;
若根据客户端标识对客户端验证通过,则生成反馈数据;
将反馈数据发送至客户端,反馈数据用于触发客户端生成针对证明对象的身份验证数据。
在一种可能的实现方式中,身份验证数据还包括签名数据,签名数据是由客户端对接收到的反馈数据进行签名处理后得到的;处理单元还用于执行以下操作:
解析身份验证数据得到签名数据,并对签名数据进行验签处理;
若确定对签名数据验签通过,则触发执行对证明对象的身份证明文件进行验证处理的步骤。
在一种可能的实现方式中,处理单元还用于执行以下操作:
获取零知识证明电路的电路约束文件和证明计算文件,电路约束文件和证明计算文件是通过对待编译的零知识证明电路进行编译处理和可信设置处理后生成的;
在零知识证明电路中加载电路约束文件和证明计算文件,并将成功加载后的零知识证明电路作为与零知识证明电路匹配的用于验证的零知识证明电路;
基于成功加载后的零知识证明电路对证明对象的身份证明文件进行验证处理。
在一种可能的实现方式中,处理单元还用于执行以下操作:
获取证明对象的身份声明信息对应的有效期;
若身份声明信息不在所述有效期内,则生成身份验证失败的通知消息;
将通知消息发送至证明对象所在的客户端,通知消息用于触发客户端向身份发行对象请求重新获取证明对象的身份声明信息。
在一种可能的实现方式中,处理单元还用于执行以下操作:
获取零知识证明电路的验证参数,验证参数是对零知识证明电路执行可信设置处理后生成的;
根据电路约束文件、以及验证参数,生成智能合约代码文件;
将智能合约代码文件发送至区块链中,触发在区块链中基于智能合约代码文件生成电路验证合约;
其中,在区块链中允许任一区块链节点调用部署好的电路验证合约对证明对象的身份证明文件进行验证处理。
在一种可能的实现方式中,处理单元还用于执行以下操作:
接收区块链节点发送的验证处理结果,验证处理结果是区块链节点在调用电路验证合约对身份证明文件进行验证处理后生成的;
若验证处理结果为验证成功,则生成针对证明对象的状态更新请求,并将状态更新请求发送至区块链节点;
其中,状态更新请求用于触发在区块链中更新证明对象的身份状态。
一方面,本申请实施例提供了一种基于区块链的身份验证装置,该装置包括:
获取单元,用于获取证明对象的身份声明信息,身份声明信息是由身份发行对象为证明对象发行的;
处理单元,用于基于零知识证明电路对证明对象的身份声明信息进行处理,得到证明对象的身份证明文件;
发送单元,用于响应于证明对象的验证操作,向验证对象发送包括身份证明文件的身份验证数据,身份验证数据用于触发验证对象对证明对象进行身份验证处理。
在一种可能的实现方式中,处理单元基于零知识证明电路对证明对象的身份声明信息进行处理,得到证明对象的身份证明文件,用于执行以下操作:
获取证明对象的身份声明信息相关联的默克尔路径、以及证明对象的目标身份状态;
根据证明对象的默克尔路径、目标身份状态、以及身份声明信息,组装得到零知识证明电路的输入参数;
将输入参数输入至零知识证明电路进行电路验证处理,得到证明对象的身份证明文件。
在一种可能的实现方式中,处理单元将输入参数输入至零知识证明电路进行电路验证处理,得到证明对象的身份证明文件,用于执行以下操作:
对默克尔路径和证明对象的身份声明信息进行哈希运算处理,得到证明对象的参考身份状态;
若参考身份状态与目标身份状态相同,则基于零知识证明电路对证明对象的身份声明信息进行电路验证处理;
若确定对身份声明信息的电路验证通过,则生成证明对象的身份证明文件。
在一种可能的实现方式中,处理单元基于零知识证明电路对证明对象的身份声明信息进行电路验证处理,用于执行以下操作:
获取证明对象的身份声明信息的声明类型;
判断身份声明信息是否满足声明类型对应的验证条件,若满足,则确定对证明对象的身份声明信息的电路验证通过。
在一种可能的实现方式中,处理单元还用于执行以下操作:
获取零知识证明电路的证明参数,证明参数是对零知识证明电路执行可信设置处理后生成的;
运行零知识证明电路的证明计算文件,计算得到零知识证明电路的见证参数;
根据证明参数和零知识证明电路的见证参数,生成证明对象的身份证明文件。
一方面,本申请实施例提供一种计算机设备,该计算机设备包括存储器和处理器,存储器存储有计算机程序,计算机程序被处理器执行时,使得处理器执行上述的基于区块链的身份验证方法。
一方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被计算机设备的处理器读取并执行时,使得计算机设备执行上述的基于区块链的身份验证方法。
一方面,本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述的基于区块链的身份验证方法。
本申请实施例中,在身份验证时,首先验证对象可以获取针对证明对象的身份验证数据,该身份验证数据携带有证明对象的身份证明文件,该身份证明文件是基于零知识证明电路对证明对象的身份声明信息进行处理后生成的;验证对象即可对证明对象的身份证明文件进行验证处理,若对身份证明文件的验证处理结果为验证成功,则可以确定验证对象对证明对象的身份验证通过。其中,此处验证处理可以包括:调用与零知识证明电路匹配的用于验证的零知识证明电路对身份证明文件进行验证,或者通过区块链中与零知识证明电路匹配的电路验证合约对身份证明文件进行验证。由此可见,在当证明对象需向验证对象进行身份验证的场景中,证明对象无需将自身的身份声明信息的原始数据提供给验证对象进行验证,而是基于零知识证明电路的处理方式对身份声明信息进行相应处理后,得到身份证明文件后,将身份证明文件发送至验证对象进行验证处理,通过验证身份证明文件的方式来验证用户身份,并不会暴露身份声明信息的具体数据,提高了身份验证场景中的数据安全性。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术对象来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种基于区块链的身份验证方案的原理示意图;
图2a是本申请实施例提供的一种区块链***的结构示意图;
图2b是本申请实施例提供的一种区块链的结构示意图;
图3a是本申请实施例提供的一种基于区块链的身份验证***的架构示意图;
图3b是本申请实施例提供的一种基于区块链的身份验证场景的示意图;
图4是本申请实施例提供的一种基于区块链的身份验证方法的流程示意图;
图5是本申请实施例提供的一种身份声明信息的存储结构示意图;
图6是本申请实施例提供的一种编译零知识证明电路的流程示意图;
图7a是本申请实施例提供的一种生成目标身份状态的流程示意图;
图7b是本申请实施例提供的另一种生成目标身份状态的流程示意图;
图8a是本申请实施例提供的另一种基于区块链的身份验证方法的流程示意图;
图8b是本申请实施例提供的一种身份验证的服务界面的示意图;
图9是本申请实施例提供的一种基于区块链的身份验证方法的交互流程图;
图10是本申请实施例提供的一种基于区块链的身份验证装置的结构示意图;
图11是本申请实施例提供的另一种基于区块链的身份验证装置的结构示意图;
图12是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
本申请提供了一种基于区块链的身份验证方案,该身份验证方案例如可以适用于诸如:用户向银行开通账户、用户向税务机构缴纳税收、以及用户向征信部门请求获取征信记录等身份验证场景。本申请支持将用户自身的身份声明信息进行零知识证明处理后提交给验证对象进行验证,可提高身份验证时的数据安全性。请参见图1,图1是本申请实施例提供的一种基于区块链的身份验证方案的原理示意图。如图1所示,本申请提供的基于区块链的身份验证方案的完整流程的大致原理如下:
1、在证明对象需向验证对象进行身份验证的场景中,验证对象在接收到用户(证明对象)发起的身份验证请求后,可以向证明对象所在的客户端发起挑战,所谓发起挑战可以理解为向客户端发送一个随机数,该随机数可用于客户端生成针对证明对象的身份验证数据。
2、客户端获取证明对象的身份声明信息claim,具体地,客户端可以从身份发行对象获取该证明对象的身份声明信息claim;然后,客户端本地生成该claim的身份证明文件proof。具体地,身份证明文件proof是客户端基于零知识证明电路对证明对象的身份声明信息claim处理后生成的。
3、客户端向证明对象发送身份验证数据,该身份验证数据包括身份证明文件proof。
4、验证对象对该proof文件进行验证处理。具体地,验证对象可以将proof文件发送至区块链中进行验证处理,若确定在区块链中对身份证明文件的验证处理结果为验证成功,则确定验证对象对证明对象的身份验证通过。可以理解的是,该身份证明文件可以理解为对身份声明信息进行加密处理后得到的数据,那么在身份验证过程中可不直接暴露用户自身的身份声明信息,避免数据泄露。
由此可见,当证明对象需向验证对象进行身份验证的场景中,证明对象无需将自身的身份声明信息的原始数据提供给验证对象进行验证,而是基于零知识证明电路的处理方式对身份声明信息进行相应处理后,得到身份证明文件proof后,将proof文件发送至验证对象进行验证处理,通过验证身份证明文件的方式来验证用户身份,这样并不会暴露身份声明信息的具体数据,提高了身份验证场景中的数据安全性。
本申请提供的身份验证方案是基于区块链技术实现的,因此接下来,结合相关附图对本申请所提供的基于区块链的身份验证方案所涉及到的相关的技术术语(区块链技术和云技术)进行详细介绍:
一、区块链技术:
区块链(Block chain)本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了相关的信息,用于验证其信息的有效性(防伪)和生成下一个区块。具体地,本申请将分别对区块链***、以及区块链的结构等相关术语进行详细介绍。
(1)区块链***:
本申请实施例涉及的区块链***可以是由客户端、多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)通过网络通信的形式连接形成的分布式***。请参见图2a,图2a是本申请实施例提供的一种区块链***的结构示意图。如图2a所示,以分布式***为区块链***为例,该分布式***100应用于区块链***的一个可选的结构示意图,该分布式***100可由多个区块链节点200(后续可简称节点,所谓节点可包括接入网络中的任意形式的计算设备,如服务器、终端设备)和客户端300构成。其中,分布式***100中的各个节点之间可以组成点对点(P2P,Peer To Peer)网络,P2P协议是一个运行在传输控制协议(TCP,Transmission Control Protocol)协议之上的应用层协议,基于该TCP协议来维护该分布式***。在分布式***中,任何计算机设备(例如服务器、终端设备)都可以加入而成为该分布式***中的节点。
在一种可能的实现方式中,通过区块链中与零知识证明电路匹配的电路验证合约对身份证明文件进行的验证处理过程,可以由上述区块链***中的任一区块链节点来执行;或者,通过区块链中与零知识证明电路匹配的电路验证合约对身份证明文件进行的验证处理过程,还可以由上述区块链***中的指定的区块链节点(例如由各个节点基于共识算法选举出来的节点)来执行;又或者,通过区块链中与零知识证明电路匹配的电路验证合约对身份证明文件进行的验证处理过程,还可以由上述区块链***中的与客户端通信质量最好的区块链节点来执行。
接下来,针对图2a示出的区块链***中各节点涉及的功能进行相应介绍:
1)路由功能:节点具有的基本功能,用于支持节点之间的通信。
具体地,为了保证区块链***内的信息互通,区块链***中的每个节点之间可以存在信息连接,节点之间可以通过上述信息连接进行信息传输。其中,上述的信息连接不限定具体的连接方式,例如可以通过有线通信方式进行直接或间接地连接,也可以通过无线通信方式进行直接或间接地连接,还可以通过其他连接方式,本申请在此不做限制。
在一种可能的实现方式中,每个区块链节点在进行正常工作可以接收到输入信息,并基于接收到的输入信息维护该区块链***内的共享数据。例如,当区块链***中的任一区块链节点接收到输入信息(例如接收到验证对象发送的证明对象的身份证明文件),该区块链节点可以通过与零知识证明电路匹配的电路验证合约对身份证明文件进行验证处理。可选的,在确定验证对象对证明对象的身份验证通过,则将可以在区块链中将证明对象的身份状态进行变更。
可选地,区块链节点在对身份证明文件进行验证处理的过程中,可以将身份证明文件广播至区块链***中的其他各个区块链节点,使得区块链***中的各个区块链节点均可以对该身份证明文件进行区块链共识,并在对身份证明文件的区块链共识通过后,更新区块链上存储的该证明对象的身份状态。
2)应用功能:用于部署在区块链中,根据实际业务需求而实现特定业务的功能。例如,区块链节点在接收到验证对象发送的身份证明文件后,可以根据应用功能实现基于该身份证明文件对证明对象进行身份验证的功能。其中,在实现相应业务功能(例如身份验证的业务功能)的过程中,还可以记录实现功能相关的数据以形成记录数据,在记录数据中携带数字签名(例如可以包括基于证明对象的私钥进行签名后得到的签名数据)以表示任务数据的来源。最后,区块链节点还可以将记录数据发送到区块链***中的其他(部分或全部)节点,供其他节点在对记录数据来源、以及完整性均验证成功后,将该记录数据添加到临时区块中。
举例来说,上述提及的应用功能所实现的业务可以包括:
①智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,简单来说,智能合约可以理解为具备某种触发条件的程序代码。也就是说,基于智能合约可以根据实际的业务需求代码来完成自动化的交易,例如电子资源合约可以实现:查询买家所购买商品的物流状态,在买家签收货物后将购买对象的电子资源转移到商品平台的账户地址中,等业务功能。当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约,例如,本申请中可以基于电路验证合约实现对接收到的证明对象的身份证明文件进行验证处理的功能。
②共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据的操作的记录数据发送到区块链***中的其他节点,其他节点验证有效后,作为承认账目数据有效的响应,将记录数据存入临时区块中,还可以向发起操作的节点发送确认消息。本申请实施例中,可以在基于电路验证合约对身份证明文件验证成功后,基于共享账本在链上记录并存储证明对象的最新的身份状态、身份证明文件等数据。
在一种可能的实现方式中,对于区块链***中的每个节点,均具有与其对应的节点标识,而且区块链***中的每个节点均可以存储有区块链***中其他节点的节点标识,以便后续根据其他节点的节点标识,将生成的区块广播至区块链***中的其他节点。具体来说,区块链***中各个节点在进行数据交互过程中,可以携带有各自的节点标识,使得其他节点在进行相应的数据处理之前可以基于对应的节点标识进行节点验证处理,从而提高区块链中数据交互过程的安全性。另外,在验证对象将身份证明文件发送至区块链节点进行验证处理的过程中,可以由验证对象根据指定的节点标识发送给指定的区块链节点执行身份验证文件的链上验证处理。
(2)区块的结构:
参见图2b,图2b是本申请实施例提供的一种区块链的结构示意图。如图2b所示,区块链由多个区块组成,且每个区块链均包含一个创始块,顾名思义,所谓创始块即第一个区块、初始区块。创始块中包括区块头和区块体,区块头中存储有输入信息特征值、版本号、时间戳和难度值,区块体中存储有输入信息(例如证明对象的身份证明文件、身份状态等信息);创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块体,区块头中存储有当前区块的输入信息特征值、父区块的区块头特征值、版本号、时间戳和难度值,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性,可以提高身份验证过程的安全性和可靠性。
在一种可能的实现方式中,本申请中身份发行对象为证明对象发行的一个或多个身份声明信息是基于默克尔树的数据结构进行存储的,然后该默克尔树的树根(merkleroot)被作为对应用户的身份状态存储至区块链中。那么,基于上述示出的区块结构,使得链上维护的证明对象的身份状态不可篡改,提高了身份状态的安全性;另外,基于区块结构来存储用户的身份状态还可以追溯相应用户的身份状态的变更记录,从而可以提供更加完整、可靠的身份验证方案。
二、云技术:
本申请的基于区块链的身份验证方案中,区块链中涉及合约验证服务、以及数据存储服务,在实现上述服务过程中将涉及大量的数据计算以及数据存储服务,因此需要花费大量的计算机运营成本。那么,本申请可以基于云技术中的云存储技术来实现身份验证过程相关的链上处理操作,其中,链上处理操作具体可以包括:调用电路验证合约对验证对象提交的证明对象对应的身份证明文件进行验证处理;在对身份证明文件进行验证通过后,调用状态转移合约将证明对象的身份状态进行变更处理,等等。
所谓云技术(Cloud technology)基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利。其中,云技术可以包括云存储技术,所谓云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储***(以下简称存储***)是指通过集群应用、网格技术以及分布存储文件***等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储***。
特别需要说明的是,在本申请的后续具体实施方式中,涉及到用户信息(例如证明对象的身份声明信息)等相关数据,当本申请以上实施例运用到具体产品或技术中时,需要获得对象许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
结合上述对本申请提供的基于区块链的身份验证方案和所涉及到的相关技术术语的描述,接下来,结合图3a和图3b对本申请实施例提供的基于区块链的身份验证***的架构进行具体介绍。
请参见图3a,图3a是本申请实施例提供的一种基于区块链的身份验证***的架构示意图。该身份验证***的架构图中至少可以包括:客户端301、验证对象302、身份发行对象303、以及至少一个区块链节点304。其中,至少一个区块链节点304共同构成一个区块链***。并且,验证对象302可以与区块链***中的任一区块链节点304、以及客户端301之间分别通过有线或者无线的方式建立通信连接;客户端301可以与身份发行对象303之间建立通信连接。可选的,身份发行对象303也可以与区块链***中的任一区块链节点304建立通信连接;另外,区块链***中的区块链节点的数量仅用于示例,本申请并不对区块链***中的节点数量进行具体限定。
接下来,对上述区块链的身份验证***中的各个计算机设备(客户端301、验证对象302、身份发行对象303、以及区块链节点304)的主要功能进行相应介绍:
①客户端301:用于负责存储证明对象的身份声明信息(claim)。具体地,客户端301可以从身份发行对象303处获取自身的身份声明信息,并对获取到的身份声明信息进行本地存储。可选的,证明对象相关联的各个身份声明信息是以默克尔树的数据结构进行存储的。另外,在身份验证场景中,客户端301可以根据身份声明信息生成证明对象的身份验证数据,然后
②验证对象302:用于接收客户端301提交的针对证明对象的身份验证数据(包括证明对象的身份证明文件),从而负责证明对象的身份验证,此处的身份验证可以包括链下验证和链上验证。其中,链下验证是指验证对象302调用与零知识证明电路匹配的用于验证的零知识证明电路对身份证明文件进行验证;链上验证是指验证对象302将身份证明文件发送至区块链节点303,由区块链节点303在链上基于电路验证合约对身份证明文件进行验证。
③身份发行对象303:用于负责为用户(证明对象)发行对应的身份声明信息,该身份发行对象303可以为较为权威的服务商机构(issuer system)。具体地,身份发行对象303可以接收客户端301发送的身份声明请求,然后为证明对象发行相应的身份声明信息。可选的,身份发行对象303在为证明对象发行相应的身份声明信息后,可以同步向区块链节点304发送状态更新请求,该状态更新请求用于触发区块链节点304在区块链上对证明对象的身份状态进行更新处理。
④区块链节点304:用于负责证明对象的身份证明文件的链上验证、以及存储与管理证明对象的链上身份状态。具体地,区块链节点304接收验证对象302发送的证明对象的身份证明文件,并基于电路验证合约对身份证明文件进行验证;若确定针对身份证明文件的验证处理结果为验证成功,则可以将状态转移合约中存储的证明对象的身份状态进行变更处理。
本申请实施例中涉及到的计算机设备(客户端301、验证对象302、身份发行对象303、以及区块链节点304)可以是包括但不限于:手机、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(MID,mobile internet device)、智能语音交互设备、车载终端、路边设备、飞行器、可穿戴设备、智能家电、或者例如智能手表、智能手环、计步器等具有身份验证功能的可穿戴设备,等等。
本申请实施例中涉及到的计算机设备(客户端301、验证对象302、身份发行对象303、以及区块链节点304)也可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器,等等。
在一种可能的实现方式中,以客户端301、验证对象302、身份发行对象303、以及区块链节点304为例,结合具体的身份验证场景(例如以身份验证场景为用户向银行申请开通账户的目标业务场景为例)对本申请的基于区块链的身份验证方案再次进行阐述。
请参见图3b,图3b是本申请实施例提供的一种基于区块链的身份验证场景的示意图。如图3b所示,当用户(证明对象)需向银行申请开户(开通账户)时,需首先向银行提交相应的身份声明信息(例如声明自己的年龄大于18岁的身份证明),为了不直接暴露自己的年龄信息,则可以将该身份声明信息进行零知识证明处理后生成相应的proof文件提交给银行进行身份验证,上述具体过程如下:
1、用户(证明对象)在需要向验证对象进行身份验证的场景中,可生成身份声明请求,并向身份发行对象(issuer system)发起一笔身份声明请求,该身份声明请求中可以携带有目标业务场景的标识。
2、身份发行对象响应于证明对象的身份声明请求,基于目标业务场景的标识,为该证明对象发行与目标业务场景相匹配的身份声明信息(claim)。例如目标业务场景为开户场景,则与目标业务场景相匹配的身份声明信息可以为年龄声明信息;又如目标业务场景为借贷场景,则与目标业务场景相匹配的身份声明信息可以为信用声明信息;还如目标业务场景为房屋购买场景,则与目标业务场景相匹配的身份声明信息可以为资产声明信息,等等。
可选的,当身份发行对象为该证明对象发行新的claim后,身份发行对象可以调用状态转移合约更新链上的证明对象的身份状态。应当理解的是,区块链是一个基于交易的状态机,一笔交易会驱动区块链中的状态由旧状态向新状态变化。因此,当链下用户的身份状态发生变更(例如为该用户发行新的claim)时,可根据该身份声明信息claim生成一笔交易数据发送至区块链中,当区块链节点接收到该交易数据后,在区块链的计算模型里,可基于交易数据实现针对证明对象的状态转移。具体地,区块链中状态转移的流程是:1)当前状态;2)交易驱动(对区块链节点接收到的交易数据重新计算一遍);3)得出新状态。
3、证明对象获取并本地存储身份声明信息。
具体实现时,证明对象的身份声明信息可以存储至本地客户端中。其中,证明对象相关联的各个身份声明信息可以基于默克尔树的数据结构进行存储,该默克尔树的树根即可用于表示该证明对象的身份状态。
4、生成证明对象的身份证明文件。
具体实现时,当证明对象需要向验证对象进行身份验证时,客户端可以基于零知识证明电路对证明对象的身份声明信息claim进行处理后生成该证明对象的身份证明文件(proof文件)。
5、将证明对象的proof文件发送至验证对象进行验证处理。
具体地,验证处理包括:验证对象调用与零知识证明电路匹配的用于验证的零知识证明电路对proof文件进行验证处理;或者通过区块链中与零知识证明电路匹配的电路验证合约对proof文件进行验证处理。
可以理解的是,本申请实施例描述的基于区块链的身份验证***是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术对象可知,随着***架构的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
基于前述对本申请基于区块链的身份验证方案和基于区块链的身份验证***的相关描述,接下来将结合附图对基于区块链的身份验证方案所涉及的具体实施例进行详细描述。
请参见图4,图4是本申请实施例所提供的一种基于区块链的身份验证方法的流程示意图。该方法应用于图3a所示的基于区块链的身份验证***中的验证对象(可以为终端设备或服务器),为便于阐述,本申请实施例以计算机设备执行为例进行相应说明。其中,该基于区块链的身份验证方法主要包括但不限于如下步骤S401~S403:
S401:获取针对证明对象的身份验证数据,身份验证数据中携带有证明对象的身份证明文件,身份证明文件是基于零知识证明电路对证明对象的身份声明信息进行处理后生成的。
本申请实施例中,证明对象关联有至少一个身份声明信息,所谓身份声明信息(claim)是用于反映用户(证明对象)身份属性的参数,例如用户的年龄、姓名、资产证明等身份属性均可称为该用户关联的身份声明信息,通常来说,身份声明信息是指证明对象所拥有的较为私密的个人数据,当然,身份声明信息的类型可以包括但不限于:文件、字符串、数字、表格等,本申请对此不做具体限定。其中,一个实体(证明对象)可以基于身份声明信息来声明自身拥有某些东西,而其他实体(验证对象)可以对该实体的身份声明信息进行认证,以确认其身份声明信息的真实性,通常认证的目的就是确认身份声明信息的合法性。例如,在开户场景中,用户可以向银行提交年龄声明信息,从而确认开户的用户年龄是否合法(例如大于或等于18岁);又如,在借贷场景中,用户可以向贷款机构提交信用声明信息,从而确认借贷的用户的征信信息是否合法(例如满足特定的征信条件);还如,在房屋购买场景中,用户可以向房屋开发商提交资产声明信息,从而检验该用户是否具备购买房屋的能力。
可以理解的是,一个证明对象可关联有多个身份声明信息claim,claim可以由身份发行对象(issue system)发行,客户端可以从身份发行对象获取证明对象的claim,并将证明对象的claim存储在本地客户端中,由证明对象自主存储并管理自身的claim,从而保证了身份声明信息的安全性。在一种可能的实现方式中,证明对象相关联的至少一个身份声明信息是以默克尔树(merkle tree,又称为哈希二叉树)的数据结构进行存储的。请参见图5,图5是本申请实施例提供的一种身份声明信息的存储结构示意图。如图5所示,该证明对象关联的身份声明信息包括:claim1、claim2、claim3、claim4,可选的,根据claim1、claim2、claim3、claim4构成的默克尔树的树根(root)用于表示证明对象的身份状态;并且,该证明对象的身份状态(root)可以上传至区块链中进行存储。
具体地,身份证明文件是指基于零知识证明电路对证明对象的身份声明信息进行处理后生成的加密文件。应当理解,零知识证明电路的本质是通过严格的密码学+数学方法,对私密数据发起一个承诺,这个承诺通过数学电路的方式进行表达,结合密码学原语(椭圆曲线、多项式、椭圆曲线配对等)进行实现。因此,本申请实施例中基于零知识证明电路对证明对象的身份声明信息进行处理后,可以隐藏身份声明信息的具体内容,从而避免用户身份数据被泄漏,提高了用户信息的安全性。其中,零知识证明可以包括交互式零知识证明和非交互式零知识证明,非交互式零知识证明可以包括但不限于:zksnark、zokrates、circom、libsnark等。本申请具体涉及非交互式零知识证明zksnark(Zero-KnowledgeSuccinct Non-Interactive Argument of Knowledge)。其中,zksnark是一种加密证明,其原理是允许一方(证明对象)向另一方(验证对象)证明其拥有某些信息而***露该信息的具体内容。具体地,零知识证明的参与方包括prover(证明对象)和verifier(验证对象),prover持有秘密信息(例如待变更的身份声明信息claim'),希望在不暴露秘密信息的情况下,向verifier证明自己知道秘密值。其中,非交互式零知识证明zksnark有多种算法实现,常用的算法可以包括但不限于:zk-snarks、zkstart、plonk等。
在一种可能的实现方式中,验证对象可以获取证明对象提交的身份验证请求,该身份验证请求携带有客户端标识;验证对象可以根据客户端标识对客户端进行验证,若对客户端验证通过,则生成反馈数据,并将反馈数据发送至证明对象所在的客户端。其中,该反馈数据用于触发客户端生成针对证明对象的身份验证数据,所谓反馈数据可以理解为一个随机数、或者随机字符串等类型的挑战信息(challenge)。具体实现时,验证对象对客户端进行的验证处理可以包括以下任一种或多种:验证该客户端是否合法且安全、验证该客户端否具备向验证对象发起身份验证的权限等等。通过这种方式可以避免恶意节点的攻击等情况,提高数据安全性。
在一种可能的实现方式中,身份验证数据还可以包括签名数据,该签名数据是客户端在接收到验证对象发送的反馈数据后,基于证明对象的私钥对该反馈数据进行签名后确定的。那么,验证对象在获取到证明对象发送的身份验证数据后,可以解析该身份验证数据得到签名数据,并对签名数据进行验签处理,所谓验签处理是指:基于证明对象的公钥对签名数据进行验签处理;若对签名数据验签通过,则触发执行对证明对象的身份证明文件进行验证处理的步骤。
通过这种方式,在客户端请求进行身份验证的过程中,可由验证对象生成一个随机数发送给该客户端,然后该客户端将基于收到的随机数进行签名后的签名数据发送至验证对象,验证对象可以验签该签名数据后确认该身份验证数据是否来自于接收到随机数的客户端,从而可以验证身份验证数据的来源,降低身份验证过程中数据泄露等风险。
S402:对证明对象的身份证明文件进行验证处理。
具体实现时,验证对象对证明对象的身份证明文件进行验证处理可以包括链下验证处理和链上验证处理。其中,链下验证处理主要包括:验证对象调用与零知识证明电路匹配的用于验证的零知识证明电路对身份证明文件进行验证处理;链上验证处理主要包括:将证明对象的身份证明文件发送至区块链节点,由区块链节点通过区块链中与零知识证明电路匹配的电路验证合约对身份证明文件进行验证处理。可选的,在链上验证处理过程中,验证对象可以将证明对象的身份证明文件发送至区块链网络中的任一区块链节点进行验证;或者,验证对象可以将证明对象的身份证明文件发送至区块链网络中与验证对象通信质量最好的区块链节点;再或者,验证对象可以将证明对象的身份证明文件发送至区块链网络中的指定区块链节点,例如该指定区块链节点可以是由各个区块链节点通过共识算法选举出来的节点。
接下来,分别对链下验证和链上验证所涉及到的具体过程进行详细说明:
(1)链下验证过程。
在一种可能的实现方式中,首先,验证对象可以获取零知识证明电路的电路约束文件和证明计算文件,该电路约束文件和证明计算文件是通过对待编译的零知识证明电路进行编译处理和可信设置处理后生成的;然后,验证对象在零知识证明电路中加载电路约束文件和证明计算文件,并将成功加载后的零知识证明电路作为与零知识证明电路匹配的用于验证的零知识证明电路,其中,在零知识证明电路中加载相关文件(电路约束文件和证明计算文件)可以理解为运行电路约束文件和证明计算文件的文件代码的过程;最后,验证对象基于成功加载后的零知识证明电路对证明对象的身份证明文件进行验证处理。
请参见图6,图6是本申请实施例提供的一种编译零知识证明电路的流程示意图。如图6所示,针对待编译的零知识证明电路执行的编译处理过程和可信设置处理的过程具体包括如下步骤:
①使用DSL语言(Domain Specific Language,领域特定语言)进行电路逻辑约束的代码编写。顾名思义,所谓DSL语言是针对某一特定领域(例如计算机领域、化学领域、通信领域等),具有受限表达性的一种计算机程序设计语言。
②使用编译器将DSL语言编译为电路约束文件(例如R1CS文件)、以及证明计算文件(例如wasm或c文件),所谓证明计算文件包括用于生成witness(见证参数)所需的文件。
③执行可信设置,具体地,可以采用groth16算法(一种属于zk-SNARK的典型算法)执行电路的可信设置。在可信设置过程中,还可以生成证明参数(proof key)和验证参数(verification key)。可选的,若采用zk-snark算法则要求一个零知识证明电路需要设置一次,若采用zkstark算法则对可信设置的次数并无具体要求。其中,证明参数用于生成身份证明文件(proof文件),并且该证明参数不能被公开;验证参数用于生成电路验证合约,且该验证参数允许被公开。
具体实现时,在可信设置的过程中,还可以生成零知识证明电路的证明参数(proof key)和验证参数(verification key),具体地,zk-snarks算法中,是将prove key和verify key编码进了CRS(Common Reference String,公共参考字符串),初始化电路之后,将CRS公开,在不暴露prove key的情况下,证明对象和验证对象分别使用CRS来生成proof key和verification key。其中,proof key用于生成证明对象的身份证明文件,具体地,在证明对象向零知识证明电路输入参数后可生成见证参数(witness),然后基于witness和proof key可用于生成proof文件;另外,verification key可用于生成电路验证合约的合约代码,后续可用于部署在区块链上以供验证对象进行验证。通过步骤①-③,可以对零知识证明电路进行加载和初始化处理,以便于后续基于成功加载后的零知识证明电路对证明对象的身份证明文件进行验证处理。
应当理解的是,零知识证明电路的编译过程可以由身份验证***的后台服务器负责执行,可以将编译好的零知识证明电路包装为对应的应用程序app以供各客户端(证明对象所在的客户端、验证对象所在的客户端)调用。其中,证明对象所在的客户端调用零知识证明电路用于生成对应的身份证明文件;验证对象所在的客户端调用零知识证明电路用于验证身份证明文件。
在一种可能的实现方式中,证明对象在对身份证明文件进行验证处理的过程中,还可以获取证明对象的身份声明信息对应的有效期;若身份声明信息不在有效期内,则生成身份验证失败的通知消息;并将通知消息发送至证明对象所在的客户端,通知消息用于触发客户端向身份发行对象请求重新获取证明对象的身份声明信息。具体实现时,身份发现对象为证明对象发行的身份声明信息具备有效期,允许在claim的有效期内基于claim生成对应的proof文件以进行身份验证,若claim失效,则身份验证失败;当客户端接收到身份验证失败的通知消息时,客户端可以重新向身份发行对象请求获取新的身份声明信息,从而触发再次进行身份验证。
(2)链上验证过程。
在一种可能的实现方式中,可以获取零知识证明电路的验证参数(verificationkey),该验证参数是对零知识证明电路执行可信设置处理后生成的;根据电路约束文件、以及验证参数,生成智能合约代码文件;将智能合约代码文件发送至区块链中,触发在区块链中基于智能合约代码文件生成电路验证合约;其中,在区块链中允许任一区块链节点调用部署好的电路验证合约对证明对象的身份证明文件进行验证处理。具体地,可以基于编译器(例如snarkjs编译器)对电路约束文件(R1CS文件)、验证参数(verification key)进行编译处理后,生成智能合约代码文件。
可选的,在区块链中部署电路验证合约的具体过程可以由区块链网络中的任一区块链节点执行,也可以由区块链网络中指定的区块链节点执行,本申请实施例对此不做具体限定。
具体实现时,验证对象将证明对象的身份证明文件发送至区块链节点,区块链节点在接收到身份证明文件后,可以调用电路验证合约对身份证明文件进行验证处理。
S403:若对身份证明文件的验证处理结果为验证成功,则确定验证对象对证明对象的身份验证通过。
具体实现时,若针对证明对象的身份证明文件的验证处理过程为链下验证,则验证对象在调用零知识证明电路验证身份证明文件后,即可生成验证处理结果;若针对证明对象的身份证明文件的验证处理过程为链上验证,则验证处理结果由区块链节点生成,然后验证对象接收来自区块链节点发送的验证处理结果。其中,若验证处理结果为验证成功,则确定验证对象对证明对象的身份验证通过;若验证处理结果为验证失败,则确定验证对象对证明对象的身份验证不通过。可选的,验证对象在确定对证明对象的身份验证通过后,还可以生成验证通过的反馈消息,并将该反馈消息发送至证明对象所在的客户端。
在一种可能的实现方式中,验证对象还可以接收区块链节点发送的验证处理结果,该验证处理结果是区块链节点在调用电路验证合约对身份证明文件进行验证处理后生成的;若验证处理结果为验证成功,则生成针对证明对象的状态更新请求,并将状态更新请求发送至区块链节点;其中,状态更新请求用于触发在区块链中更新证明对象的身份状态。
具体实现时,状态更新请求中携带有证明对象的目标身份状态、和历史身份状态,目标身份状态是根据证明对象的历史状态数据和待变更的身份声明信息得到的,历史状态数据包括:待变更的身份声明信息相关联的默克尔路径。其中,①待变更的身份声明信息是指用于生成身份证明文件的身份声明信息。②历史身份状态(old state)是根据证明对象相关联的至少一个身份证明信息计算得到的,具体地,old state是指由证明对象相关联的各个身份证明信息构成的默克尔树的树根。③目标身份状态(new state)是指将要进行状态更新的证明对象的最新身份状态。该目标身份状态可以是由:待变更的身份声明信息相关联的默克尔路径,所谓默克尔路径是指某个输入值(claim)到默克尔树根(root)之间所有哈希值的集合、以及待变更的身份声明信息进行哈希运算后得到的。
举例来说,①待变更的身份声明信息(claim')可以是指证明对象已拥有的身份声明信息进行更新处理后的信息,例如claim'是对claim1进行更新后的信息;待变更的身份声明信息(claim')还可以是指身份发行对象为该证明对象新发行的身份声明信息,例如claim'为claim5。②待变更的身份声明信息相关联的默克尔路径是指:验证对象相关联的至少一个身份声明信息构成的默克尔树的路径,若待变更的身份声明信息claim'是对claim1进行更新后的信息,那么默克尔路径即为claim1所在的默克尔树的路径。例如,请参见图7a,图7a是本申请实施例提供的一种生成目标身份状态的流程示意图。如图7a所示,根据默克尔路径和待变更的身份声明信息claim'(对claim1进行更新后的信息),进行哈希运算后得到的新的默克尔树根为目标身份状态。又如,请参见图7b,图7b是本申请实施例提供的另一种生成目标身份状态的流程示意图。如图7b所示,根据默克尔路径和待变更的身份声明信息claim5,进行哈希运算后得到的新的默克尔树根为目标身份状态。
接下来,针对证明对象的身份状态的链上更新过程进行详细介绍:
在一种可能的实现方式中,区块链节点更新证明对象的身份状态的过程可以包括:调用状态转移合约查询与证明对象相匹配的待变更身份状态;若确定证明对象的历史身份状态与待变更身份状态相同,则将状态转移合约中存储的证明对象的身份状态变更为目标身份状态。
具体实现时,状态转移合约中存储有:各证明对象的身份标识(identity,简称id)与相应证明对象的状态数据组之间的映射关系,状态数据组中存储有证明对象相关联的至少一个身份状态。此处的映射关系可以以表格的格式进行存储,即状态转移合约中存储有映射关系表,映射关系表用于反映证明对象身份标识与身份状态之间的映射关系。例如,该映射关系表的格式如下表1所示:
表1.证明对象身份标识与身份状态之间的映射关系
其中,如上述表1所示,身份标识作为一个证明对象的唯一标识,每个证明对象关联有对应的状态数据组,该状态数据组中存储有该证明对象关联的一个或多个身份状态(这些身份状态均是已上链的身份状态),以及每个身份状态对应的上链时间,例如针对证明对象1(身份标识id1),其对应的身份状态数据组中包括:state11、state12、state13,其中,身份状态state11的上链时间为time11,身份状态state12的上链时间为time12,身份状态state13的上链时间为time13。其中,与证明对象相匹配的待变更身份状态是指该证明对象对应的状态数据组中上链时间最晚的身份状态,例如time11>time12>time13,则state11为证明对象1的待变更身份状态,即state11是指证明对象1在链上的当前身份状态。
上述方式中,区块链节点可以将证明对象在链下的历史身份状态(old state)与该证明对象在链上的当前身份状态(待变更身份状态)进行比较,其目的是为了避免待更新的new state(目标身份状态)已经是旧的身份状态了(即new state已过期,或者已被更新),因此将old state与链上最新的state比较,若二者一致,才允许将当前链上的用户身份状态更新为new state。通过这种方式,可以防止状态更新过程中的写重复,提高链上执行状态更新的准确性。
本申请实施例中,在身份验证时,首先验证对象可以获取针对证明对象的身份验证数据,该身份验证数据携带有证明对象的身份证明文件,该身份证明文件是基于零知识证明电路对证明对象的身份声明信息进行处理后生成的;验证对象即可对证明对象的身份证明文件进行验证处理,若对身份证明文件的验证处理结果为验证成功,则可以确定验证对象对证明对象的身份验证通过。其中,此处验证处理可以包括:调用与零知识证明电路匹配的用于验证的零知识证明电路对身份证明文件进行验证,或者通过区块链中与零知识证明电路匹配的电路验证合约对身份证明文件进行验证。由此可见,在当证明对象需向验证对象进行身份验证的场景中,证明对象无需将自身的身份声明信息的原始数据提供给验证对象进行验证,而是基于零知识证明电路的处理方式对身份声明信息进行相应处理后,得到身份证明文件后,将身份证明文件发送至验证对象进行验证处理,通过验证身份证明文件的方式来验证用户身份,并不会暴露身份声明信息的具体数据,提高了身份验证场景中的数据安全性。
请参见图8a,图8a是本申请实施例提供的另一种基于区块链的身份验证方法的流程示意图。该方法应用于图3a所示的基于区块链的身份验证***中的客户端。其中,该基于区块链的身份验证方法主要包括但不限于如下步骤S801~S803:
S801:获取证明对象的身份声明信息,身份声明信息是由身份发行对象为证明对象发行的。
在一种可能的实现方式中,客户端生成身份声明请求,该身份声明请求携带有证明对象的身份信息;将身份声明请求发送至身份发行对象,以使身份发行对象为证明对象发行身份声明信息。具体地,身份发行对象响应于身份声明请求,对证明对象的身份信息进行验证处理,若验证通过,则生成针对证明对象相关联的身份声明信息。其中,对证明对象的身份信息进行验证处理可以包括但不限于:合法性验证、有效性验证、安全性验证中的任一种或多种。后续,证明对象可以在本地客户端种存储自身的身份声明信息,具体地,客户端可以将证明对象的各身份声明信息以默克尔树的数据结构存储在本地(如图5所示)。
S802:基于零知识证明电路对证明对象的身份声明信息进行处理,得到证明对象的身份证明文件。
在一种可能的实现方式中,客户端基于零知识证明电路对证明对象的身份声明信息进行处理,得到证明对象的身份证明文件,可以包括:首先,获取证明对象的身份声明信息相关联的默克尔路径、以及证明对象的目标身份状态;然后,根据证明对象的默克尔路径、目标身份状态、以及身份声明信息,组装得到零知识证明电路的输入参数;最后,将输入参数输入至零知识证明电路进行电路验证处理,得到证明对象的身份证明文件。可选的,客户端在组装零知识证明电路的输入参数时,可以首先将证明对象的默克尔路径、目标身份状态、以及身份声明信息进行组合,得到组合参数;然后对该组合参数进行签名处理,得到输入参数;或者,可以直接将证明对象的默克尔路径、目标身份状态、以及身份声明信息进行打包、压缩处理,生成输入参数。
具体实现时,客户端将输入参数(证明对象的默克尔路径、目标身份状态、以及身份声明信息)输入至零知识证明电路进行电路验证处理,得到证明对象的身份证明文件,具体包括:首先,对默克尔路径和证明对象的身份声明信息进行哈希运算处理,得到证明对象的参考身份状态;然后,若参考身份状态与目标身份状态相同,则基于零知识证明电路对证明对象的身份声明信息进行电路验证处理;若确定对身份声明信息的电路验证通过,则生成证明对象的身份证明文件。也就是说,用户可以将当前的身份状态输入至零知识证明电路中,在零知识证明电路中可以实现identity state(身份状态)的计算过程,即根据默克尔路径和身份声明信息进行哈希运算后得到电路计算后的参考身份状态,若电路计算出来的该参考身份状态与用户输入的目标身份状态一致,则触发执行验证身份声明信息的步骤。
具体实现时,客户端基于零知识证明电路对证明对象的身份声明信息进行电路验证处理,可以包括:获取证明对象的身份声明信息的声明类型;判断身份声明信息是否满足声明类型对应的验证条件,若满足,则确定对证明对象的身份声明信息的电路验证通过。例如,若身份声明信息的声明类型为年龄声明,则可以判断该身份声明信息是否满足“年龄>20岁”的验证条件,若满足,则确定对证明对象的身份声明信息的电路验证通过;若不满足确定对证明对象的身份声明信息的电路验证不通过。又如,若身份声明信息的声明类型为资产声明,则可以判断该资产声明信息中是否包含“金额”、“资产”等关键字段,若包含,则确定对证明对象的身份声明信息的电路验证通过;若该资产声明信息中包含敏感词汇,则确定对证明对象的身份声明信息的电路验证不通过。
可选的,客户端还可以基于零知识证明电路对证明对象的目标身份状态进行校验处理,具体可以包括:(1)校验目标身份状态的有效性,具体可以包括:判断目标身份状态是否等于预设数值0,若目标身份状态为0,则确定该目标身份状态不具备有效性;若目标身份状态不为0,则确定该参考身份状态具备有效性。(2)校验目标身份状态的合法性,具体可以包括:判断该目标身份状态中是否包括敏感词汇,若包括,则确定该目标身份状态不具备合法性。(3)校验目标身份状态的归属权,即校验当前接收到的目标身份状态是否属于证明对象。
在一种可能的实现方式中,客户端在确定对证明对象的身份声明信息和目标身份状态进行验证通过后,即可获取零知识证明电路的证明参数,该证明参数是对零知识证明电路执行可信设置处理后生成的;运行该零知识证明电路的证明计算文件,计算得到零知识证明电路的见证参数;根据证明参数和零知识证明电路的见证参数,生成证明对象的身份证明文件。应当理解,见证参数witness是指零知识证明电路的输入参数、中间参数、以及输出参数的集合,并且该witness文件中包含了零知识证明电路的所有的计算信号,r1cs文件(电路约束文件)用于描述零知识证明电路的约束逻辑。后续,根据proof key(证明参数)+见证参数(witness)=proof文件。
S803:响应于证明对象的验证操作,向验证对象发送包括身份证明文件的身份验证数据,身份验证数据用于触发验证对象对证明对象进行身份验证处理。
在一种可能的实现方式中,证明对象的客户端中可以显示有关于身份验证的服务界面,请参见图8b,图8b是本申请实施例提供的一种身份验证的服务界面的示意图。如图8b所示,该服务界面中设置有验证入口(800),验证入口可以包括但不限于:验证控件、验证设置项。以验证入口为验证控件为例,证明对象可以在该服务界面中发起验证操作,例如当点击(例如单击、双击、长按)该验证控件时,可以产生一次验证操作,然后客户端可以响应于该验证操作,生成身份验证请求。
可选的,客户端将包含有客户端标识的身份验证请求发送至验证对象,并在向验证对象发送身份验证请求后,还可以接收客户端发送的反馈数据,该反馈数据是验证对象在根据客户端标识对客户端验证通过后生成的;然后,客户端可以对反馈数据进行签名处理,得到签名数据;最后,客户端将签名数据和身份证明文件打包成身份验证数据,并将该身份验证数据发送至验证对象。后续,验证对象可基于身份验证处理对证明对象进行验证处理,并且可以将生成的验证处理结果发送至客户端。其中,验证对象对证明对象的身份验证处理过程详细可以参考图4实施例中涉及到的相关步骤,本申请实施例再次不再赘述。
应当理解的是,本申请实施例可应用于诸如:用户向银行开通账户、用户向税务机构缴纳税收、以及用户向征信部门请求获取征信记录等各种类型的身份验证场景中,在上述身份验证场景中,客户端在需进行身份验证时,无需将自身的身份声明信息提供给第三方平台(银行、税务机构、征信部门等),而是基于零知识证明电路的方式将自身的隐私数据加密处理成对应的身份证明文件,然后提供零知识证明处理后的身份证明文件给验证对象进行验证处理,避免了数据泄露,保证了用户隐私数据的安全性。
请参见图9,图9是本申请实施例提供的一种基于区块链的身份验证方法的交互流程图。该方法由图3a所示的基于区块链的身份验证***中的客户端、验证对象、区块链节点、以及身份发行对象共同执行。其中,该基于区块链的身份验证方法的交互流程主要包括但不限于如下步骤S901~S9011:
S901:证明对象所在的客户端向身份发行对象发送身份声明请求。
具体实现时,身份发行对象用于为证明对象颁发相应的身份声明信息,该身份发行对象可以认为是较为权威的声明信息颁发机构,可存储有各证明对象的身份声明信息。因此,证明对象可以向身份发行对象申请获取自身的身份声明信息(claim),即证明对象所在的客户端可以生成身份声明请求,并将该身份声明请求发送至身份发行对象。其中,该身份声明请求中携带有证明对象的身份信息。
S902:身份发行对象验证证明对象的身份信息。
具体实现时,身份发行对象验证证明对象的身份信息可以包括:验证身份信息的合法性、有效性中的任一种或多种。然后,若确定对证明对象的身份信息验证通过,则身份发行对象可以生成该证明对象的身份声明信息。
可选的,身份声明请求中还可以携带客户端标识,身份发行对象可以根据客户端标识对发送身份声明请求的客户端进行校验,所谓校验包括:合法性校验、权限校验、有效性校验中的任一种或多种。例如,校验客户端是否具备向身份发行对象申请身份声明信息的权限;又如,校验发送身份声明请求的客户端是否合法等等。通过这种方式,可以对客户端进行安全性校验,提高数据交互过程中的安全性。
S903:身份发行对象将身份声明信息发送至证明对象。
其中,证明对象可以本地存储并管理自身的身份声明信息。具体地,证明对象相关联的各个身份声明信息可以基于默克尔树的数据结构进行存储,所谓默克尔树是指哈希二叉树,该默克尔树的根节点(又称树根)可以用来表示该证明对象的身份状态。
S904:证明对象所在的客户端基于零知识证明电路对身份声明信息进行处理,得到证明对象的身份证明文件。
具体实现时,客户端基于零知识证明电路对身份声明信息进行处理,得到证明对象的身份证明文件,具体包括:首先,获取证明对象的身份声明信息相关联的默克尔路径、以及证明对象的目标身份状态;然后,根据证明对象的默克尔路径、目标身份状态、以及身份声明信息,组装得到零知识证明电路的输入参数;最后,将输入参数输入至零知识证明电路进行电路验证处理,得到证明对象的身份证明文件。其中,零知识证明电路对身份声明信息执行的处理可以包括:椭圆曲线处理、多项式处理、椭圆曲线配对处理中的任一种或多种。
需要说明的是,生成身份证明文件的过程详细可参考图8a实施例中所涉及的相关步骤,本申请实施例在此不再赘述。
S905:证明对象所在的客户端根据身份证明文件生成身份验证数据。
在一种可能的实现方式中,客户端根据身份证明文件生成身份验证数据,可以包括:首先,客户端可以响应于证明对象的验证操作,生成身份验证请求,然后将该身份验证请求发送至验证对象;然后,接收客户端发送的反馈数据,并对反馈数据进行签名处理得到签名数据,具体地,可以基于证明对象的私钥对反馈数据进行签名处理;最后,将签名数据、身份证明文件打包成身份验证数据。可选的,身份验证数据还可以包括:证明对象的目标身份状态,该目标身份状态是基于证明对象相关联的至少一个身份声明信息确定的。
S906:证明对象所在的客户端将身份验证数据发送至验证对象。
S907:验证对象对身份证明文件进行验证处理。
具体实现时,验证对象在接收到客户端发送的身份验证数据后,可以基于证明对象的公钥对身份验证数据中的签名数据进行验签处理,若确定对签名数据验签通过,则对身份验证数据中的身份证明文件进行验证处理。更为具体地,所谓验证处理可以包括:调用与零知识证明电路匹配的用于验证的零知识证明电路对身份证明文件进行验证,或者通过区块链中与零知识证明电路匹配的电路验证合约对身份证明文件进行验证。需要说明的是,对身份证明文件的验证处理的具体过程详细可参考前述图4实施例步骤S402所对应的相关流程,本申请实施例在此不再赘述。
S908:验证对象接收区块链节点的验证处理结果。
在一种可能的实现方式中,验证对象可以将证明对象的身份证明文件发送至区块链节点进行验证处理,区块链节点在对身份证明文件进行验证处理后可以生成对应的验证处理结果,然后区块链节点可以将验证处理结果发送至验证对象。其中,验证处理结果可以包括:验证成功、或者验证失败。
S909:若对身份证明文件的验证处理结果为验证成功,则确定验证对象对证明对象的身份验证通过。
S9010:验证对象将状态更新请求发送至区块链节点。
具体实现时,在验证对象对证明对象的身份验证通过后,验证对象可以生成状态更新请求,并将该状态更新请求发送至区块链节点。其中,该状态更新请求中携带有:证明对象的参考身份状态、和历史身份状态,参考身份状态是根据证明对象的历史状态数据和待变更的身份声明信息得到的,历史状态数据包括:待变更的身份声明信息相关联的默克尔路径。
S9011:区块链节点更新证明对象的身份状态。
在一种可能的实现方式中,区块链节点更新证明对象的身份状态的过程可以包括:调用状态转移合约查询与证明对象相匹配的待变更身份状态;若确定证明对象的历史身份状态与待变更身份状态相同,则将状态转移合约中存储的证明对象的身份状态变更为参考身份状态。需要说明的是,区块链节点更新链上身份状态的具体过程详细可以参考图4实施例中相关过程,本申请实施例在此不再赘述。
本申请提供了一种用户自主数字身份的方式,即用户(证明对象)可以自主管理各自的身份和个人数据,用户自身的身份数据存储在本地,可在不暴露隐私数据的情况下,在链上进行身份验证和无许可证明,可在链上以保护隐私的方式对用户身份进行验证。具体地,证明对象在需要向诸如银行、税务部门、征信部门等验证对象进行身份验证时,可以基于零知识证明电路对从身份发行对象获取到的身份声明信息claim进行处理后,生成相应的身份证明proof文件;验证对象可以基于客户端生成的该身份证明文件对证明对象进行身份验证处理。在上述身份验证过程中,无需将证明对象的身份声明信息的具体数据发送给验证对象,避免了身份数据的泄露,提高了身份验证过程的可靠性和安全性。
上述详细阐述了本申请实施例的方法,为了便于更好地实施本申请实施例的上述方案,相应地,下面提供了本申请实施例的装置,接下来,结合上述本申请实施例提供的身份验证方案,对本申请实施例的相关装置进行相应介绍。
请参见图10,图10是本申请实施例提供的一种基于区块链的身份验证装置的结构示意图。如图10所示,该身份验证装置1000可应用于前述实施例中所提及的验证对象(例如可以为终端设备或服务器)。具体来说,身份验证装置1000可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该身份验证装置1000为一个应用软件;该身份验证装置1000可以用于执行本申请实施例提供的基于区块链的身份验证方法中的相应步骤。该身份验证装置1000具体可以包括:
获取单元1001,用于获取针对证明对象的身份验证数据,身份验证数据中携带有证明对象的身份证明文件,身份证明文件是基于零知识证明电路对证明对象的身份声明信息进行处理后生成的;
处理单元1002,用于对证明对象的身份证明文件进行验证处理;
确定单元1003,用于若对身份证明文件的验证处理结果为验证成功,则确定验证对象对证明对象的身份验证通过;
其中,验证处理包括:调用与零知识证明电路匹配的用于验证的零知识证明电路对身份证明文件进行验证,或者通过区块链中与零知识证明电路匹配的电路验证合约对身份证明文件进行验证。
在一种可能的实现方式中,处理单元1002还用于执行以下操作:
获取证明对象所在的客户端提交的身份验证请求,身份验证请求携带有客户端标识;
若根据客户端标识对客户端验证通过,则生成反馈数据;
将反馈数据发送至客户端,反馈数据用于触发客户端生成针对证明对象的身份验证数据。
在一种可能的实现方式中,身份验证数据还包括签名数据,签名数据是由客户端对接收到的反馈数据进行签名处理后得到的;处理单元1002还用于执行以下操作:
解析身份验证数据得到签名数据,并对签名数据进行验签处理;
若确定对签名数据验签通过,则触发执行对证明对象的身份证明文件进行验证处理的步骤。
在一种可能的实现方式中,处理单元1002还用于执行以下操作:
获取零知识证明电路的电路约束文件和证明计算文件,电路约束文件和证明计算文件是通过对待编译的零知识证明电路进行编译处理和可信设置处理后生成的;
在零知识证明电路中加载电路约束文件和证明计算文件,并将成功加载后的零知识证明电路作为与零知识证明电路匹配的用于验证的零知识证明电路;
基于成功加载后的零知识证明电路对证明对象的身份证明文件进行验证处理。
在一种可能的实现方式中,处理单元1002还用于执行以下操作:
获取证明对象的身份声明信息对应的有效期;
若身份声明信息不在所述有效期内,则生成身份验证失败的通知消息;
将通知消息发送至证明对象所在的客户端,通知消息用于触发客户端向身份发行对象请求重新获取证明对象的身份声明信息。
在一种可能的实现方式中,处理单元1002还用于执行以下操作:
获取零知识证明电路的验证参数,验证参数是对零知识证明电路执行可信设置处理后生成的;
根据电路约束文件、以及验证参数,生成智能合约代码文件;
将智能合约代码文件发送至区块链中,触发在区块链中基于智能合约代码文件生成电路验证合约;
其中,在区块链中允许任一区块链节点调用部署好的电路验证合约对证明对象的身份证明文件进行验证处理。
在一种可能的实现方式中,处理单元1002还用于执行以下操作:
接收区块链节点发送的验证处理结果,验证处理结果是区块链节点在调用电路验证合约对身份证明文件进行验证处理后生成的;
若验证处理结果为验证成功,则生成针对证明对象的状态更新请求,并将状态更新请求发送至区块链节点;
其中,状态更新请求用于触发在区块链中更新证明对象的身份状态。
本申请实施例中,在身份验证时,首先验证对象可以获取针对证明对象的身份验证数据,该身份验证数据携带有证明对象的身份证明文件,该身份证明文件是基于零知识证明电路对证明对象的身份声明信息进行处理后生成的;验证对象即可对证明对象的身份证明文件进行验证处理,若对身份证明文件的验证处理结果为验证成功,则可以确定验证对象对证明对象的身份验证通过。其中,此处验证处理可以包括:调用与零知识证明电路匹配的用于验证的零知识证明电路对身份证明文件进行验证,或者通过区块链中与零知识证明电路匹配的电路验证合约对身份证明文件进行验证。由此可见,在当证明对象需向验证对象进行身份验证的场景中,证明对象无需将自身的身份声明信息的原始数据提供给验证对象进行验证,而是基于零知识证明电路的处理方式对身份声明信息进行相应处理后,得到身份证明文件后,将身份证明文件发送至验证对象进行验证处理,通过验证身份证明文件的方式来验证用户身份,并不会暴露身份声明信息的具体数据,提高了身份验证场景中的数据安全性。
请参见图11,图11是本申请实施例提供的另一种基于区块链的身份验证装置的结构示意图。如图11所示,该身份验证装置1100可应用于前述实施例中所提及的客户端。具体来说,身份验证装置1100可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该身份验证装置1100为一个应用软件;该身份验证装置1100可以用于执行本申请实施例提供的基于区块链的身份验证方法中的相应步骤。该身份验证装置1100具体可以包括:
获取单元1101,用于获取证明对象的身份声明信息,身份声明信息是由身份发行对象为证明对象发行的;
处理单元1102,用于基于零知识证明电路对证明对象的身份声明信息进行处理,得到证明对象的身份证明文件;
发送单元1103,用于响应于证明对象的验证操作,向验证对象发送包括身份证明文件的身份验证数据,身份验证数据用于触发验证对象对证明对象进行身份验证处理。
在一种可能的实现方式中,处理单元1102基于零知识证明电路对证明对象的身份声明信息进行处理,得到证明对象的身份证明文件,用于执行以下操作:
获取证明对象的身份声明信息相关联的默克尔路径、以及证明对象的目标身份状态;
根据证明对象的默克尔路径、目标身份状态、以及身份声明信息,组装得到零知识证明电路的输入参数;
将输入参数输入至零知识证明电路进行电路验证处理,得到证明对象的身份证明文件。
在一种可能的实现方式中,处理单元1102将输入参数输入至零知识证明电路进行电路验证处理,得到证明对象的身份证明文件,用于执行以下操作:
对默克尔路径和证明对象的身份声明信息进行哈希运算处理,得到证明对象的参考身份状态;
若参考身份状态与目标身份状态相同,则基于零知识证明电路对证明对象的身份声明信息进行电路验证处理;
若确定对身份声明信息的电路验证通过,则生成证明对象的身份证明文件。
在一种可能的实现方式中,处理单元1102基于零知识证明电路对证明对象的身份声明信息进行电路验证处理,用于执行以下操作:
获取证明对象的身份声明信息的声明类型;
判断身份声明信息是否满足声明类型对应的验证条件,若满足,则确定对证明对象的身份声明信息的电路验证通过。
在一种可能的实现方式中,处理单元1102还用于执行以下操作:
获取零知识证明电路的证明参数,证明参数是对零知识证明电路执行可信设置处理后生成的;
运行零知识证明电路的证明计算文件,计算得到零知识证明电路的见证参数;
根据证明参数和零知识证明电路的见证参数,生成证明对象的身份证明文件。
本申请实施例中,客户端在需进行身份验证时,无需将自身的身份声明信息提供给第三方平台(银行、税务机构、征信部门等),而是基于零知识证明电路的方式将自身的隐私数据加密处理成对应的身份证明文件,然后提供零知识证明处理后的身份证明文件给验证对象进行验证处理,避免了数据泄露,保证了用户隐私数据的安全性。
请参见图12,图12是本申请实施例提供的一种计算机设备的结构示意图。该计算机设备1200用于执行前述方法实施例中验证对象、客户端所执行的步骤。该计算机设备1200包括:一个或多个处理器1201;一个或多个输入设备1202,一个或多个输出设备1203和存储器1204。上述处理器1201、输入设备1202、输出设备1203和存储器1204通过总线1205连接。其中,处理器1201(或称CPU(Central Processing Unit,中央处理器))是计算机设备的处理核心,该处理器1201适于实现一条或多条程序指令,具体适于加载并执行一条或多条程序指令从而实现上述的基于区块链的身份验证方法的流程。另外,存储器1204可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器;可选的还可以是至少一个位于远离前述处理器的存储器。存储器1204提供存储空间,该存储空间用于存储内容播放设备的操作***。并且,在该存储空间中还用于存储计算机程序,该计算机程序包括程序指令,且该程序指令适于被处理器调用并执行,以用来执行本申请中基于区块链的身份验证方法的各步骤。
具体地,存储器1204用于存储计算机程序,所述计算机程序包括程序指令,处理器1201用于调用存储器1204存储的程序指令,执行以下操作:
获取针对证明对象的身份验证数据,身份验证数据中携带有证明对象的身份证明文件,身份证明文件是基于零知识证明电路对证明对象的身份声明信息进行处理后生成的;
对证明对象的身份证明文件进行验证处理;
若对身份证明文件的验证处理结果为验证成功,则确定验证对象对证明对象的身份验证通过;
其中,验证处理包括:调用与零知识证明电路匹配的用于验证的零知识证明电路对身份证明文件进行验证,或者通过区块链中与零知识证明电路匹配的电路验证合约对身份证明文件进行验证。
在一种可能的实现方式中,处理器1201还用于执行以下操作:
获取证明对象所在的客户端提交的身份验证请求,身份验证请求携带有客户端标识;
若根据客户端标识对客户端验证通过,则生成反馈数据;
将反馈数据发送至客户端,反馈数据用于触发客户端生成针对证明对象的身份验证数据。
在一种可能的实现方式中,身份验证数据还包括签名数据,签名数据是由客户端对接收到的反馈数据进行签名处理后得到的;处理器1201还用于执行以下操作:
解析身份验证数据得到签名数据,并对签名数据进行验签处理;
若确定对签名数据验签通过,则触发执行对证明对象的身份证明文件进行验证处理的步骤。
在一种可能的实现方式中,处理器1201还用于执行以下操作:
获取零知识证明电路的电路约束文件和证明计算文件,电路约束文件和证明计算文件是通过对待编译的零知识证明电路进行编译处理和可信设置处理后生成的;
在零知识证明电路中加载电路约束文件和证明计算文件,并将成功加载后的零知识证明电路作为与零知识证明电路匹配的用于验证的零知识证明电路;
基于成功加载后的零知识证明电路对证明对象的身份证明文件进行验证处理。
在一种可能的实现方式中,处理器1201还用于执行以下操作:
获取证明对象的身份声明信息对应的有效期;
若身份声明信息不在所述有效期内,则生成身份验证失败的通知消息;
将通知消息发送至证明对象所在的客户端,通知消息用于触发客户端向身份发行对象请求重新获取证明对象的身份声明信息。
在一种可能的实现方式中,处理器1201还用于执行以下操作:
获取零知识证明电路的验证参数,验证参数是对零知识证明电路执行可信设置处理后生成的;
根据电路约束文件、以及验证参数,生成智能合约代码文件;
将智能合约代码文件发送至区块链中,触发在区块链中基于智能合约代码文件生成电路验证合约;
其中,在区块链中允许任一区块链节点调用部署好的电路验证合约对证明对象的身份证明文件进行验证处理。
在一种可能的实现方式中,处理器1201还用于执行以下操作:
接收区块链节点发送的验证处理结果,验证处理结果是区块链节点在调用电路验证合约对身份证明文件进行验证处理后生成的;
若验证处理结果为验证成功,则生成针对证明对象的状态更新请求,并将状态更新请求发送至区块链节点;
其中,状态更新请求用于触发在区块链中更新证明对象的身份状态。
在一种可能的实现方式中,存储器1204用于存储计算机程序,所述计算机程序包括程序指令,处理器1201还用于调用存储器1204存储的程序指令,执行以下操作:
获取证明对象的身份声明信息,身份声明信息是由身份发行对象为证明对象发行的;
基于零知识证明电路对证明对象的身份声明信息进行处理,得到证明对象的身份证明文件;
响应于证明对象的验证操作,向验证对象发送包括身份证明文件的身份验证数据,身份验证数据用于触发验证对象对证明对象进行身份验证处理。
在一种可能的实现方式中,处理器1201基于零知识证明电路对证明对象的身份声明信息进行处理,得到证明对象的身份证明文件,用于执行以下操作:
获取证明对象的身份声明信息相关联的默克尔路径、以及证明对象的目标身份状态;
根据证明对象的默克尔路径、目标身份状态、以及身份声明信息,组装得到零知识证明电路的输入参数;
将输入参数输入至零知识证明电路进行电路验证处理,得到证明对象的身份证明文件。
在一种可能的实现方式中,处理器1201将输入参数输入至零知识证明电路进行电路验证处理,得到证明对象的身份证明文件,用于执行以下操作:
对默克尔路径和证明对象的身份声明信息进行哈希运算处理,得到证明对象的参考身份状态;
若参考身份状态与目标身份状态相同,则基于零知识证明电路对证明对象的身份声明信息进行电路验证处理;
若确定对身份声明信息的电路验证通过,则生成证明对象的身份证明文件。
在一种可能的实现方式中,处理器1201基于零知识证明电路对证明对象的身份声明信息进行电路验证处理,用于执行以下操作:
获取证明对象的身份声明信息的声明类型;
判断身份声明信息是否满足声明类型对应的验证条件,若满足,则确定对证明对象的身份声明信息的电路验证通过。
在一种可能的实现方式中,处理器1201还用于执行以下操作:
获取零知识证明电路的证明参数,证明参数是对零知识证明电路执行可信设置处理后生成的;
运行零知识证明电路的证明计算文件,计算得到零知识证明电路的见证参数;
根据证明参数和零知识证明电路的见证参数,生成证明对象的身份证明文件。
此外,这里需要指出的是:本申请实施例还提供了一种计算机存储介质,且计算机存储介质中存储有计算机程序,且该计算机程序包括程序指令,当处理器执行上述程序指令时,能够执行前文所对应实施例中的方法,因此,这里将不再进行赘述。对于本申请所涉及的计算机存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,程序指令可以被部署在一个计算机设备上,或者在位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备可以执行前文所对应实施例中的方法,因此,这里将不再进行赘述。
本领域普通技术对象可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。

Claims (17)

1.一种基于区块链的身份验证方法,其特征在于,包括:
获取针对证明对象的身份验证数据,所述身份验证数据中携带有所述证明对象的身份证明文件,所述身份证明文件是基于零知识证明电路对所述证明对象的身份声明信息进行处理后生成的;
对所述证明对象的身份证明文件进行验证处理;
若对所述身份证明文件的验证处理结果为验证成功,则确定验证对象对所述证明对象的身份验证通过;
其中,所述验证处理包括:调用与所述零知识证明电路匹配的用于验证的零知识证明电路对所述身份证明文件进行验证,或者通过区块链中与所述零知识证明电路匹配的电路验证合约对所述身份证明文件进行验证。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
获取证明对象所在的客户端提交的身份验证请求,所述身份验证请求携带有客户端标识;
若根据所述客户端标识对所述客户端验证通过,则生成反馈数据;
将所述反馈数据发送至所述客户端,所述反馈数据用于触发所述客户端生成针对所述证明对象的身份验证数据。
3.如权利要求2所述的方法,其特征在于,所述身份验证数据还包括签名数据,所述签名数据是由所述客户端对接收到的所述反馈数据进行签名处理后得到的;所述方法还包括:
解析所述身份验证数据得到签名数据,并对所述签名数据进行验签处理;
若确定对所述签名数据验签通过,则触发执行对所述证明对象的身份证明文件进行验证处理的步骤。
4.如权利要求1所述的方法,其特征在于,所述方法还包括:
获取零知识证明电路的电路约束文件和证明计算文件,所述电路约束文件和证明计算文件是通过对待编译的零知识证明电路进行编译处理和可信设置处理后生成的;
在零知识证明电路中加载所述电路约束文件和证明计算文件,并将成功加载后的零知识证明电路作为与所述零知识证明电路匹配的用于验证的零知识证明电路;
基于成功加载后的所述零知识证明电路对所述证明对象的身份证明文件进行验证处理。
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
获取所述证明对象的身份声明信息对应的有效期;
若所述身份声明信息不在所述有效期内,则生成身份验证失败的通知消息;
将所述通知消息发送至所述证明对象所在的客户端,所述通知消息用于触发所述客户端向身份发行对象请求重新获取所述证明对象的身份声明信息。
6.如权利要求4所述的方法,其特征在于,所述方法还包括:
获取零知识证明电路的验证参数,所述验证参数是对所述零知识证明电路执行可信设置处理后生成的;
根据所述电路约束文件、以及所述验证参数,生成智能合约代码文件;
将所述智能合约代码文件发送至区块链中,触发在所述区块链中基于所述智能合约代码文件生成电路验证合约;
其中,在所述区块链中允许任一区块链节点调用部署好的电路验证合约对所述证明对象的身份证明文件进行验证处理。
7.如权利要求1所述的方法,其特征在于,所述方法还包括:
接收区块链节点发送的验证处理结果,所述验证处理结果是所述区块链节点在调用电路验证合约对所述身份证明文件进行验证处理后生成的;
若所述验证处理结果为验证成功,则生成针对所述证明对象的状态更新请求,并将所述状态更新请求发送至所述区块链节点;
其中,所述状态更新请求用于触发在所述区块链中更新所述证明对象的身份状态。
8.一种基于区块链的身份验证方法,其特征在于,包括:
获取证明对象的身份声明信息,所述身份声明信息是由身份发行对象为所述证明对象发行的;
基于零知识证明电路对所述证明对象的身份声明信息进行处理,得到所述证明对象的身份证明文件;
响应于所述证明对象的验证操作,向验证对象发送包括所述身份证明文件的身份验证数据,所述身份验证数据用于触发验证对象对所述证明对象进行身份验证处理。
9.如权利要求8所述的方法,其特征在于,所述基于零知识证明电路对所述证明对象的身份声明信息进行处理,得到所述证明对象的身份证明文件,包括:
获取所述证明对象的身份声明信息相关联的默克尔路径、以及所述证明对象的目标身份状态;
根据所述证明对象的默克尔路径、目标身份状态、以及身份声明信息,组装得到零知识证明电路的输入参数;
将所述输入参数输入至零知识证明电路进行电路验证处理,得到所述证明对象的身份证明文件。
10.如权利要求9所述的方法,其特征在于,所述将所述输入参数输入至零知识证明电路进行电路验证处理,得到所述证明对象的身份证明文件,包括:
对所述默克尔路径和所述证明对象的身份声明信息进行哈希运算处理,得到所述证明对象的参考身份状态;
若所述参考身份状态与所述目标身份状态相同,则基于零知识证明电路对所述证明对象的身份声明信息进行电路验证处理;
若确定对所述身份声明信息的电路验证通过,则生成所述证明对象的身份证明文件。
11.如权利要求10所述的方法,其特征在于,所述基于零知识证明电路对所述证明对象的身份声明信息进行电路验证处理,包括:
获取所述证明对象的身份声明信息的声明类型;
判断所述身份声明信息是否满足所述声明类型对应的验证条件,若满足,则确定对所述证明对象的身份声明信息的电路验证通过。
12.如权利要求11所述的方法,其特征在于,所述方法还包括:
获取零知识证明电路的证明参数,所述证明参数是对所述零知识证明电路执行可信设置处理后生成的;
运行所述零知识证明电路的证明计算文件,计算得到所述零知识证明电路的见证参数;
根据所述证明参数和所述零知识证明电路的见证参数,生成所述证明对象的身份证明文件。
13.一种基于区块链的身份验证装置,其特征在于,包括:
获取单元,用于获取针对证明对象的身份验证数据,所述身份验证数据中携带有所述证明对象的身份证明文件,所述身份证明文件是基于零知识证明电路对所述证明对象的身份声明信息进行处理后生成的;
处理单元,用于对所述证明对象的身份证明文件进行验证处理;
确定单元,用于若对所述身份证明文件的验证处理结果为验证成功,则确定验证对象对所述证明对象的身份验证通过;
其中,所述验证处理包括:调用与所述零知识证明电路匹配的用于验证的零知识证明电路对所述身份证明文件进行验证,或者通过区块链中与所述零知识证明电路匹配的电路验证合约对所述身份证明文件进行验证。
14.一种基于区块链的身份验证装置,其特征在于,包括:
获取单元,用于获取证明对象的身份声明信息,所述身份声明信息是由身份发行对象为所述证明对象发行的;
处理单元,用于基于零知识证明电路对所述证明对象的身份声明信息进行处理,得到所述证明对象的身份证明文件;
发送单元,用于响应于所述证明对象的验证操作,向验证对象发送包括所述身份证明文件的身份验证数据,所述身份验证数据用于触发验证对象对所述证明对象进行身份验证处理。
15.一种计算机设备,其特征在于,包括:存储装置和处理器;
存储器,所述存储器中存储一条或多条计算机程序;
处理器,用于加载所述一条或多条计算机程序实现如权利要求1-7或8-12中任一项所述的基于区块链的身份验证方法。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于被处理器加载并执行如权利要求1-7或8-12中任一项所述的基于区块链的身份验证方法。
17.一种计算机程序产品,其特征在于,所述计算程序产品包括计算机程序,所述计算机程序适于被处理器加载并执行如权利要求1-7或8-12中任一项所述的基于区块链的身份验证方法。
CN202310179643.6A 2023-02-21 2023-02-21 基于区块链的身份验证方法、装置、设备、介质及产品 Pending CN116975901A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310179643.6A CN116975901A (zh) 2023-02-21 2023-02-21 基于区块链的身份验证方法、装置、设备、介质及产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310179643.6A CN116975901A (zh) 2023-02-21 2023-02-21 基于区块链的身份验证方法、装置、设备、介质及产品

Publications (1)

Publication Number Publication Date
CN116975901A true CN116975901A (zh) 2023-10-31

Family

ID=88471992

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310179643.6A Pending CN116975901A (zh) 2023-02-21 2023-02-21 基于区块链的身份验证方法、装置、设备、介质及产品

Country Status (1)

Country Link
CN (1) CN116975901A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117938548A (zh) * 2024-03-22 2024-04-26 深圳市纽创信安科技开发有限公司 密钥数据同步方法、装置和设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117938548A (zh) * 2024-03-22 2024-04-26 深圳市纽创信安科技开发有限公司 密钥数据同步方法、装置和设备

Similar Documents

Publication Publication Date Title
US11159526B2 (en) System and method for decentralized-identifier authentication
EP3788522B1 (en) System and method for mapping decentralized identifiers to real-world entities
US11277268B2 (en) System and method for verifying verifiable claims
US11165576B2 (en) System and method for creating decentralized identifiers
US11038670B2 (en) System and method for blockchain-based cross-entity authentication
US11025435B2 (en) System and method for blockchain-based cross-entity authentication
CN112214780B (zh) 一种数据处理方法、装置、智能设备及存储介质
CN114760071B (zh) 基于零知识证明的跨域数字证书管理方法、***和介质
CN116975901A (zh) 基于区块链的身份验证方法、装置、设备、介质及产品
CN115632794A (zh) 一种分布式数字身份验证***、方法和相关装置
CN117495559A (zh) 一种交易处理方法、装置、设备及存储介质
CN118101206A (zh) 数据处理方法、装置、设备和计算机可读存储介质
CN116980136A (zh) 智能合约的接口处理方法、装置、设备、存储介质及产品
Alblooshi Blockchain-based Ownership Management for Medical IoT (MIoT) Devices and their Data
CN116015614A (zh) 基于区块链***的密钥处理方法、装置、介质及电子设备
CN116468439A (zh) 数据管理方法、装置、设备、存储介质及计算机程序产品

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication