基于区块链智能合约的数字身份验证方法及系统与流程

文档序号:32990097发布日期:2023-01-17 23:21阅读:159来源:国知局
基于区块链智能合约的数字身份验证方法及系统与流程

1.本技术涉及用户隐私保护技术领域,特别涉及一种基于区块链智能合约的数字身份验证方法及系统。


背景技术:

2.随着区块链技术的发展,其去中心化、公开透明、可追溯、不可篡改等特性受到了各方的关注,许多学者也纷纷将区块链技术应用于数字身份管理系统架构的设计中,并提出了不同的设计方案,具体可归纳为3种主要架构:基于区块链分布式账本进行数字身份信息及其哈希摘要存储的架构、利用区块链可编程智能合约进行数字身份的声明、发布、认证和授权的架构、基于区块链可验证凭证(variable certificate,vc)的数字身份架构。
3.前两种架构存在身份隐私泄露风险,尽管其中部分架构在区块链上存储的只是数字身份的哈希摘要或者加密信息,但是认证授权身份时仍然需要提交身份的明文信息(明文求哈希后与链上哈希进行对比或者解密明文后查看信息是否正确)。虽然,基于区块链的可验证凭证数字身份架构具备诸多优点,但是可验证凭证上通常记录着用户身份的明文信息,因此,在利用可验证凭证进行身份认证与授权时,仍然存在隐私泄露风险。


技术实现要素:

4.本技术实施例提供一种基于区块链智能合约的数字身份验证方法及系统,用以解决上述问题。
5.第一方面,本技术实施例提供一种基于区块链智能合约的数字身份验证方法,该方法包括:身份提供方服务器在获取到第一vc之后,发布托管合约,以及,至少提供零知识证明程序和验证合约,并部署到所述区块链;其中,所述第一vc由监管机构服务器发布以用于验证所述身份提供方的身份合法性;所述零知识证明程序,用于基于用户属性信息来验证用户身份的合法性;客户端在获取到第二vc之后,至少获取所述零知识证明程序;其中,所述第二vc由所述身份提供方服务器发布以用于验证持有所述客户端的用户的身份合法性;所述客户端通过零知识证明程序生成证据,所述证据基于用户属性信息获得;服务提供方服务器基于客户端提交的所述证据和所述第二vc,调用区块链上的所述托管合约和/或所述验证合约对应的验证接口,以获得所述第二vc以及所述证据是否合法的验证结果信息,并基于所述验证结果信息确定是否向所述用户提供目标服务。
6.作为一种可能的实现方式,所述方法还包括:所述监管机构服务器发布监管合约,所述监管合约至少用于提供面向机构的第一注册服务;所述身份提供方服务器调用所述第一注册服务,以获得所述第一vc。
7.作为一种可能的实现方式,所述方法还包括:所述身份提供方服务器发布托管合约,所述托管合约至少用于提供面向客户端的第二注册服务;所述客户端调用所述第二注册服务,以获得所述第二vc。
8.作为一种可能的实现方式,所述至少提供零知识证明程序和验证合约,并部署到所述区块链,具体包括:提供零知识证明程序,生成证明密钥pk、验证密钥vk,以及验证合约,并部署到所述区块链。
9.作为一种可能的实现方式,所述方法还包括:所述监管机构服务器,基于非对称加密算法,生成第一公钥和第一私钥,并发布所述第一公钥对应的第一did信息;所述身份提供方服务器,基于非对称加密算法,生成第二公钥和第二私钥,并发布所述第二公钥对应的第二did信息;所述客户端,基于非对称加密算法,生成第三公钥和第三私钥,并发布所述第三公钥对应的第三did信息。
10.作为一种可能的实现方式,所述至少获取所述零知识证明程序,具体包括:所述客户端获取所述零知识证明程序、所述证明密钥pk、所述第二vc、身份属性字段、所述第一did信息至所述第三did信息;其中,所述身份属性字段表示用户属性信息的名称;所述客户端通过零知识证明程序生成证据,具体包括:所述客户端,基于所述证明密钥pk、明文输入和隐私输入,通过部署于客户端的所述零知识证明程序,生成证据和签名;其中,所述明文输入包括所述第一did信息至所述第三did信息;所述隐私输入包括用户输入的用户属性信息和第三私钥;所述签名,为采用所述第三私钥进行加密而获得的签名。
11.作为一种可能的实现方式,所述客户端提供相应的输入接口,以供用户设置所述合法证据对应的目标服务提供方和验证次数;所述客户端向所述目标服务提供方请求服务时携带所述验证次数信息;通过验证后,重置所述验证次数信息。
12.作为一种可能的实现方式,所述零知识证明程序为采用circom创建的zk-snark电路。
13.第二方面,本技术实施例还提供基于区块链智能合约的数字身份验证系统,所述系统包括:身份提供方服务器,用于执行以下操作:在获取到第一vc之后,发布托管合约,以及,至少提供零知识证明程序和验证合约,并部署到所述区块链;其中,所述第一vc由监管机构服务器发布以用于验证所述身份提供方的身份合法性;所述零知识证明程序,用于基于用户属性信息来验证用户身份的合法性;客户端,用于执行以下操作:在获取到第二vc之后,至少获取所述零知识证明程序;其中,所述第二vc由所述身份提供方服务器发布以用于验证持有所述客户端的用户的身份合法性;所述客户端通过零知识证明程序生成证据,所述证据基于用户属性信息获得;服务提供方服务器,用于执行以下操作:基于客户端提交的所述证据和所述第二vc,调用区块链上的所述托管合约和/或所述验证合约对应的验证接口,以获得所述第二vc以及所述证据是否合法的验证结果信息,并基于所述验证结果信息确定是否向所述客户端提供目标服务。
14.第三方面,本技术实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述电子设备为一台或多台,至少一个所述处理器执行所述程序时实现如上述第一方面任意一项所述的方法。
15.本技术实施例提供的基于区块链智能合约的数字身份验证方法及系统,采用区块链智能合约和零知识证明及非对称加密验签技术,由受监管机构约束的身份提供方,来管理用户认证、授权和验证的全流程合约,可验证凭证上不会记录用户身份的明文信息,而涉
及到用户属性信息的明文仅会在客户端使用,系统中的其他各方例如身份提供方、服务提供方等没有机会接触到用户属性信息的明文,因此,隐私保护的安全性更高,能够进一步降低用户属性信息等隐私数据的泄露风险。该方案提供的交互机制,整体上解决了身份可控隐私、身份授权监管和高效验证的问题,用户隐私数据保护等级更高,更安全。
附图说明
16.图1为本技术实施例提供的基于区块链智能合约的数字身份验证方法的流程示意图;图2为本技术实施例提供的基于区块链智能合约的数字身份验证方法的一个实施例的交互流程图;图3为本技术实施例提供的基于区块链智能合约的数字身份验证方法的流程逻辑示意图;图4为本技术实施例提供的基于区块链智能合约的数字身份验证方法中零知识证明程序的处理流程架构示意图;图5为本技术实施例提供的基于区块链智能合约的数字身份验证系统的架构示意图。
具体实施方式
17.本技术的实施方式部分使用的术语仅用于对本技术的具体实施例进行解释,而非旨在限定本技术。
18.本技术实施例提供的基于区块链智能合约的数字身份验证方法及系统,可以应用于分布式数字身份管理的应用场景中。
19.在应用场景的相关技术中,一方面,用户属性当下采用选择性披露和用服务提供方的公钥非对称加密等方案,导致用户属性对服务提供方的信息泄漏。另一方面,相关技术中,身份服务方(身份提供方)可以不受约束的获取用户身份属性信息,并发放验证凭证。此外,相关的基于区块链智能合约的零知识证明身份管理方案,仅仅把区块链当作存证工具,没有实现多方验证/授权/监管的功能,存在认证过程不透明、认证属性单一、多身份服务商多证明的问题。
20.鉴于此,本技术实施例提出一种基于区块链智能合约的数字身份验证方法,以解决上述问题。
21.本技术实施例提供的方案,一方面,在客户端执行基于零知识证明程序的证据生成,然后由身份提供方部署于区块链上的验证合约进行验证的交互机制,完成用户身份隐私验证;另一方面,相关技术中,身份服务方(身份提供方)可以不受约束的获取用户身份属性信息,并发放验证凭证,本技术实施例采用监管机构基于链上合约授权身份服务方提供身份服务,并在全网公示,保证身份服务提供方的可信可控。此外,本技术实施例提供的方案,采用由身份提供方统一维护的共享托管合约,该托管合约生成用户属性所需的零知识验证程序并发布链上,并提供验证方法(即验证合约),同时对于用户生成的证明(即证据proof)可设置访问白名单和验证次数。
22.为便于理解本技术实施例提供的方案,先对该交互过程中涉及的系统参与方进行
介绍。系统参与方可以包括监管机构服务器、身份提供方服务器、服务提供方服务器、客户端。
23.其中,监管机构服务器,用于发布监管合约,将身份提供方服务器纳入到该监管合约,使其成为授权后的合法身份提供方服务器。
24.身份提供方服务器,基于监管机构服务器的授权,发布关于身份属性的共享托管合约,该共享托管合约接受加密的认证请求,并颁发可验证的vc,托管用户身份属性的零知识证明程序,提供生成证明密钥、验证密钥和验证证明方法(即验证合约);服务提供方服务器,获取客户端提供的零知识证明(proof)和vc凭证,并提交给托管合约验证证明的合法性。在一个实施例中,对于任何验证后的零知识证明,可以均设为作废。
25.客户端,请求获取身份可验证的凭证vc,提供可证明拥有身份属性的零知识证明proof。在一个实施例中,客户端还可以授权服务提供方服务器使用证明的次数。
26.具体地,参阅图1所示,本技术实施例提供的基于区块链智能合约的数字身份验证方法,可以包括如下流程:101,身份提供方服务器在获取到第一vc之后,发布托管合约,以及,至少提供零知识证明程序和验证合约,并部署到所述区块链。
27.第一vc由监管机构发布,以用于验证身份提供方的身份合法性。
28.零知识证明程序,用于基于用户属性信息来验证用户身份的合法性。零知识证明程序由身份提供方提供并部署于区块链。
29.在一部分实施例中,身份提供方服务器负责执行以下操作:提供零知识证明程序、生成证明密钥pk、验证密钥vk、提供验证合约,并将零知识证明程序和验证合约部署到所述区块链,并发布pk和vk。
30.102,客户端在获取到第二vc之后,至少获取零知识证明程序。
31.第二vc由身份提供方发布以用于验证客户端的身份合法性。客户端通过零知识证明程序生成证据,证据基于用户属性信息获得。例如,客户端可以在获取零知识证明程序之后进行安装,然后至少以用户属性信息为输入,生成相应的零知识证明,零知识证明即proof,也可以称之为证据。
32.用户属性信息可以是用户个人身份相关的各种信息,例如用户的身高,年龄,性别,兴趣,爱好等。
33.103,服务提供方服务器基于客户端提交的所述证据和所述第二vc,调用区块链上的所述托管合约和/或所述验证合约对应的验证接口,以获得所述第二vc以及所述证据是否合法的验证结果信息,并基于所述验证结果信息确定是否向所述客户端提供目标服务。
34.下面列举一个具体的实施例,以便于更清楚地理解本技术实施例提供的验证方案。
35.示例性地,参阅图2所示,基于基于区块链智能合约的数字身份验证方法可以包括如下流程:201,监管机构服务器基于非对称加密算法,生成第一公钥和第一私钥。
36.202,发布第一公钥对应的第一did、监管机构did doc;did(decentralized identifier,去中心化身份),第一did,即区块链上第一公钥
的did标识符,可以理解为第一公钥在区块链上去中心化存储的地址信息。监管机构did doc(did document),存储于区块链上,可以did为 key 做索引。
37.203,监管机构服务器发布监管合约。
38.该监管合约,可以提供机构注册、撤销和查询服务,以供授权对象进行注册、撤销和查询等操作。
39.204,身份提供方服务器生成第二公钥和第二私钥。
40.205,身份提供方服务器发布第二公钥对应的第二did、监管机构服务器did doc。
41.206,身份提供方服务器调用监管机构注册服务。
42.调用监管机构服务器的注册服务时,应提交身份提供方的相关信息。
43.207,监管机构服务器发布身份提供方对应的第一vc。
44.第一vc即供身份提供方使用的可验证凭证,由监管机构服务器发布,持有该vc(第一vc),代表该身份提供方已获得监管机构的授权,即,由监管机构授权而提供身份服务。
45.208,身份提供方服务器发布托管合约。
46.该托管合约提供用户注册、撤销和查询等服务,以供用户执行注册、查询和撤销等操作。在该实施例中,并没有实际使用监管合约或托管合约的查询和撤销服务。在其他实施例中,实际上,监管合约和托管合约可以仅提供注册服务,而不提供撤销和查询服务。
47.209,身份提供方服务器提供基于用户属性的零知识证明程序,生成证明密钥pk、验证密钥vk,以及验证合约,并部署到区块链。
48.身份提供者发布提供身份服务托管合约,包括用户注册、撤销和查询等功能,以及为用户属性提供通用属性的身份零知识证明程序。
49.在本技术实施例中,零知识证明程序为非交互零知识证明程序。
50.示例性地,该零知识证明程序,是采用circom创建而得,具体可以是zksnark(zero-knowledge succinct non-interactive argument of knowledge,零知识简明非交互式知识证明)电路。然后,利用circom的编译和构建,生成证明密钥proving key和验证密钥verification key(snarkjs setup)。再利用circom生成零知识证明的验证合约circom-verify-contract,并部署到区块链。
51.210,客户端生成第三公钥和第三私钥。
52.211,客户端发布第三公钥对应的第三did、监管机构的did doc。
53.212,客户端调用身份提供方注册服务。
54.213,身份提供方服务器发布客户端对应的第二vc。
55.用户生成公私钥信息(第三公私钥信息),把然后把第三公钥信息生成的地址信息即did和监管机构的diddocument上链发布,之后调用身份提供方的注册服务,调用时提交用户身份的相关信息,之后由身份提供方服务器发布该用户vc(verify claim),即第二vc,成为被该服务提供方认可的用户。
56.214,客户端获取零知识证明程序、第二vc、身份属性字段、第一至第三did、pk。
57.当用户通过客户端申请访问服务提供方业务时,获取所需证明身份的身份提供方和所需证明的身份属性的字段(比如年龄等),同时也可以获取身份提供方的proving key。
58.身份属性字段,表示身份属性信息的名称,用户看到字段名称,可以输入该名称对应的自身实际的信息,作为待验证的身份属性信息。例如,需要用户输入的属性为年龄,用
户实际年龄为40岁,那么身份属性字段即为“年龄”,用户属性信息即为“40岁”。
59.215,客户端利用零知识证明程序,基于pk+公开输入(第一至第三did)+隐私输入(身份属性信息、第三私钥),获得证据proof+签名。
60.利用身份服务方链上发布的零知识证明程序和provingkey,把用户需要验证的身份属性信息、公钥和私钥作为私钥作为隐私输入,把用户身份did(第三did)、身份提供方did(第二did)、服务提供方did作为明文输入,来生成该用户属性的零知识证明proof + 对应用户的签名。
61.公开输入即明文输入,在一部分实施例中,以第一did、第二did和第三did作为公开输入,以用户的身份属性信息和第三私钥作为隐私输入,通过零知识证明程序,生成证据和签名。也就是pk+公开输入+隐私输入

证据proof+签名。证据proof也可以称为证明。签名可以是使用第三私钥进行加密而获得的数字签名。
62.216,客户端请求访问服务提供方的业务。
63.该访问请求中可以携带第二vc、proof+签名等待验证信息。
64.217,服务提供方服务器请求调用托管合约的验证接口,请求对客户端提交的第二vc进行验证。
65.proof和签名信息会发送到区块链的验证合约做存证,同时也可同步给服务提供方。
66.在一部分实施例中,用户再上传proof信息时,可选择设置该proof使用的服务提供方和验证次数。
67.218,服务提供方服务器在完成vc验证之后,进一步调用区块链上验证合约的验证接口,请求对客户端提交的proof+签名进行验证。
68.对于proof+签名的验证,可以是首先使用第三公钥进行验签,验签通过,再使用零知识证明程序中提供的验证程序对proof进行验证。
69.219,验证通过,使用客户端的用户为白名单用户,则向该客户端提供相应的服务。
70.上述图2所示实施例仅为本技术诸多实施例中的一个示例,依据本技术提供的方案,还可以获得其他多个实施例。例如,基于图3所示的流程逻辑,还可以获得其他多个实施例。
71.参阅图3所示,本技术实施例提出的基于区块链智能合约的数字身份验证方法,可以按照如下流程执行:1,监管机构服务器发布监管合约;2.1,经监管机构服务器授权的身份提供方发布托管合约;2.2,经监管机构服务器授权的身份提供方发布用户属性零知识证明程序;用户属性零知识证明程序,即用于验证用户属性信息的零知识证明程序。
72.3.1,用户通过持有的客户端注册生成did;3.2用户通过持有的客户端申请身份凭证;4.用户通过持有的客户端向服务提供方申请服务(携带身份凭证);5.身份凭证验证通过,服务提供方服务器向客户端发送证明密钥pk,也就是相当于客户端从服务提供方获取到了证明密钥pk。
73.6、客户端基于预先部署的零知识证明程序,基于证明密钥pk、身份凭证和用户属
性信息,生成证明(即证据proof),然后上传至区块链;区块链上部署的验证合约,会对proof进行验证;7、proof的验证结果会同步下发至服务提供方,相当于服务提供方服务器获取到了身份属性证明的验证结果;8、验证通过,则服务提供方服务器向用户持有的客户端提供服务,客户端即获得了相应的服务。
74.示例性地,零知识证明程序的数据处理流程架构参阅图4所示。
75.其中,flattened code表示扁平化代码,witness表示见证,vproof即证据或者证明;setup即设置,proving key即证明密钥,verification key即验证密钥。export-verifier即导出验证程序,该验证程序可以理解为验证合约。pubkey为公钥,privkey为私钥。
76.本技术实施例还提供一种基于区块链智能合约的数字身份验证系统,参阅图5所述,该系统至少包括:身份提供方服务器,用于执行以下操作:在获取到第一vc之后,发布托管合约,以及,至少提供零知识证明程序和验证合约,并部署到区块链;其中,第一vc由监管机构发布以用于验证身份提供方的身份合法性;零知识证明程序,用于基于用户属性信息来验证用户身份的合法性;客户端,用于执行以下操作:在获取到第二vc之后,至少获取零知识证明程序;其中,第二vc由身份提供方发布以用于验证客户端的身份合法性;客户端通过零知识证明程序生成证据,证据基于用户属性信息获得;服务提供方服务器,用于执行以下操作:基于客户端提交的证据和第二vc,调用区块链上的托管合约和/或验证合约对应的验证接口,以获得第二vc以及证据是否合法的验证结果信息,并基于验证结果信息确定是否向客户端提供目标服务。
77.本技术实施例还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,电子设备为一台或多台,至少一个处理器执行所述程序时实现如上述任意一项所述的验证方法。
78.综上,相关技术中,没有给出一个具体的隐私保护的实现架构,更没有共享架构的实现代码。这些架构仍然不同程度存在数字身份的中心化存储和管理、数字身份的自主权特性较差、数字身份的隐私无保障、数字身份的认证过程不公开透明等问题。具体体现为:用户属性信息泄漏、身份服务商不受监管、认证过程不透明、无法全流程可信、认证属性单一、用户无法设置证明信息被谁使用和使用次数、缺少服务于用户/服务方/监管机构的智能设备等。
79.本技术实施例提供的上述验证方法和系统,提供集成零知识证明相关功能区块链轻节点装置,该装置具有生成零知识程序、验证零知识证明、生成证明密钥和验证密钥、以及与链上合约交互的功能。具体地,该验证方法和系统,可以达到如下技术效果:首先监管身份提供方,保证身份提供方的合法性;由身份提供方提供共享合约和验证服务,从而保证合约提供方的可信度;全流程链上注册、授权、验证;用户属性明文不泄漏。
80.此外,进一步地,系统核心服务可以采用rust语言,以获得更高的执行效率;用户管理全流程(注册/授权/验证等)可链上管理;可以提供可信高速硬件装置,加快证明文件的生成;全流程用户数据加密,保证用户信息安全;提供可靠身份验证合约,可多次验证proof,验证效率高。
81.上述计算机中的数据处理器的数量可以为一个或多个,并且可选的,存储器的数量也可以是一个或多个,数据处理器和存储器之间可以通过总线或者其他方式连接。存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态计算机可执行程序以及模块,如本技术实施例中的设备对应的程序指令/模块。处理器通过运行存储在存储器中的非暂态软件程序、指令以及模块,从而执行各种功能应用以及数据处理,即实现上述任意方法实施例中的防破解方法。存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;以及必要数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。
82.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本技术所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如, dvd)、或者半导体介质(例如固态硬盘 solid state disk)等。
83.本技术实施例中,“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示单独存在a、同时存在a和b、单独存在b的情况。其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项”及其类似表达,是指的这些项中的任意组合,包括单项或复数项的任意组合。例如,a,b和c中的至少一项可以表示:a, b, c, a-b, a-c, b-c,或a-b-c,其中a, b, c可以是单个,也可以是多个。
84.以上仅为本技术的优选实施例而已,并不用于限制本技术,对于本领域的技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本技术的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1