CN114186248B - 基于区块链智能合约的零知识证明可验证凭证数字身份管理系统及方法 - Google Patents
基于区块链智能合约的零知识证明可验证凭证数字身份管理系统及方法 Download PDFInfo
- Publication number
- CN114186248B CN114186248B CN202111343581.5A CN202111343581A CN114186248B CN 114186248 B CN114186248 B CN 114186248B CN 202111343581 A CN202111343581 A CN 202111343581A CN 114186248 B CN114186248 B CN 114186248B
- Authority
- CN
- China
- Prior art keywords
- zero
- user
- knowledge
- identity
- verifiable
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/31—User authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/44—Program or device authentication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting 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/6245—Protecting personal data, e.g. for financial or medical purposes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于区块链智能合约的零知识证明可验证凭证数字身份管理系统及方法,该系统包括零知识智能合约和凭证客户端;零知识智能合约包括凭证状态智能合约、零知识证据使用状态智能合约、零知识证据有效性验证智能合约和可验证凭证有效性验证智能合约;凭证客户端设有三个角色:身份提供商、用户、服务提供商。本发明中证明零知识问题的描述程序由服务提供商根据服务的身份属性需求构造,用户要获得服务,仅需要根据服务提供商构造的零知识问题程序,利用用户的属性凭证生成零知识证据,并向服务提供商提交证据,证明证据中的属性满足服务的身份属性需求,同时证明用户是生成证据的的持有者,从而实现了隐私性和安全性的双重保障。
Description
技术领域
本发明属于区块链技术,具体涉及一种基于区块链智能合约的零知识证明可验证凭证数字身份管理系统及方法。
背景技术
互联网技术的发展方便了人们的工作、学习和生活,使得人们可以便捷地利用各种数字身份在不同的应用服务商获得服务、交换数据和信息等。然而,人们在享受各种互联网应用带来的便利的同时,人们的数字身份所关联的各种特征信息、行为信息也被暴露和存储到了各种应用服务商的数字身份管理系统中,并由此引发诸如数据非法使用和泄露、身份伪造、敲诈和勒索等网路安全问题。
近年来,随着区块链技术的发展,其去中心化、公开透明、可追溯、不可篡改等特性受到了各方的关注,许多学者也纷纷将区块链技术应用于数字身份管理系统架构的设计中,并提出了不同的设计方案,具体可归纳为3种主要架构:
首先是基于区块链分布式账本进行数字身份信息及其哈希摘要存储的架构。由于区块链分布式账本具备公开透明、不可篡改、多边维护的特性,可以克服诸如公钥基础设施PKI的CA数字证书等架构中的恶意证书颁发、证书撤销列表管理不方便、异构CA证书跨域认证困难等问题,因此,学者们提出利用分布式账本来存储和管理CA数字证书、数字证书和身份信息的哈希摘要,并基于这些存储信息进行可信身份认证和授权服务等。
其次是利用区块链可编程智能合约进行数字身份的声明、发布、认证和授权的架构。由于智能合约具有可编程、不可篡改、状态同步、公开透明的特性,用户与身份提供商之间很容易构建起分布式身份声明与身份链上核验与发布的数字身份体系,而且由于智能合约的不可篡改特性,合约地址可以很方便地用来作为统一数字身份标识符,便于数字身份的管理,因此,学者们构建了多种基于区块链的智能合约数字身份系统。
最后是基于区块链可验证凭证(variable certificate,VC)的数字身份架构。由于区块链分布式账本和智能合约的公开透明特性,前两种架构存在身份隐私泄露风险,尽管其中部分架构在区块链上存储的只是数字身份的哈希摘要或者加密信息,但是认证授权身份时仍然需要提交身份的明文信息(明文求哈希后与链上哈希进行对比或者解密明文后查看信息是否正确)。此外,由于分布式账本和智能合约存储的数据不可篡改,即只能增加数据,无法删除数据,因此,随着用户量的增加,系统的存储容量和经济投入是需要考虑的问题。因此,一些学者提出将数字身份以可验证凭证的形式颁发给用户,让用户自主管理身份数据,同时不利用区块链直接存储数字身份相关信息,仅仅利用其锚定数字身份标识符与真实身份的映射关系,存储身份的撤销信息、公开验证身份的有效性等,从而增加身份的自主控制权,并且在不损失身份可信性的同时,提高区块链的效率和可伸缩性。
虽然,基于区块链的可验证凭证数字身份架构具备诸多优点,但是可验证凭证上通常记录着用户身份的明文信息,因此,在利用可验证凭证进行身份认证与授权时,仍然存在隐私泄露风险,即使部分研究提出可以利用选择性披露来减小隐私泄露的程度,或者使用零知识证明来隐藏身份属性,但是这些研究并没有给出一个具体的隐私保护的实现架构,更没有共享架构的实现代码。这些架构仍然不同程度存在数字身份的中心化存储和管理、数字身份的自主权特性较差、数字身份的隐私无保障、数字身份的认证过程不公开透明等上述问题。
因此,一种基于区块链智能合约的零知识证明可验证凭证数字身份管理系统及方法亟待提出。
发明内容
为解决现有技术存在的缺陷,本发明提供一种基于区块链智能合约的零知识证明可验证凭证数字身份管理方法。本发明将区块链智能合约技术、非交互式零知识证明技术、可验证凭证数字身份等结合,提出了一个基于区块链智能合约的零知识证明可验证凭证数字身份管理方法,并设计了该架构的原型系统,同时基于该原型系统,对架构的有效性和安全性等进行了评估和比较,结果表明,基于该架构的数字身份管理系统能够较好的实现去中心化、隐私安全、认证公开透明等特点。
为了解决上述技术问题,本发明提供了如下的技术方案:
本发明提供一种基于区块链智能合约的零知识证明可验证凭证数字身份管理系统,包括零知识智能合约和凭证客户端;
所述零知识智能合约包括凭证状态智能合约Cert_Status_SC、零知识证据使用状态智能合约Cert_isused_SC、零知识证据有效性验证智能合约 Cert_ZK_Proof_SC和可验证凭证有效性验证智能合约VerifySignature;
所述凭证客户端包括用户接口模块、web3.js接口模块、零知识证明模块、通信模块、数据库模块;
所述凭证客户端设有三个角色:身份提供商IDP、用户、服务提供商SP;
所述身份提供商IDP是可验证凭证VC的颁发者,其在核验用户真实身份后,为用户颁发包含用户属性、用户身份标识符User DID、身份提供商标身份识符 IDPDID和数字签名的可验证凭证IDP Signature;其中,用户身份标识符User DID 是用户的公钥经过Kecack256哈希算法得到的结果,身份提供商标身份识符IDP DID是身份提供商的以太坊账号,数字签名的可验证凭证IDP Signature是身份提供商的以太坊账号私钥对可验证凭证的哈希值Sign_H的签名;
所述用户是可验证凭证VC的拥有者,其把可验证凭证VC提交给服务提供商SP,并在证明其是凭证中的身份标识符的拥有者后获得服务;
所述服务提供商SP是服务提供者,其在验证凭证中的身份提供商IDP的数字签名后为用户提供服务。
作为本发明的一种优选技术方案,所述凭证状态智能合约由身份提供商管理,以在颁发凭证后激活凭证状态或在需要撤销凭证时撤销凭证;
所述零知识证据使用状态智能合约用于防止已经使用过的零知识证据被非法获取后,并利用其从服务提供商非法获取服务,因此,零知识证据每次使用后都要重新生成,而使用过的零知识证据都将利用该合约进行记录,以防止重放攻击;
所述零知识证据有效性验证智能合约是服务提供商基于其所构建的零知识证明程序利用ZoKrates生成的,用户提交零知识证据后,服务提供商将零知识证据作为参数提交给该合约,如果证据满足条件的,则该合约返回真值,否则返回假值;
所述可验证凭证有效性验证智能合约用于验证可验证凭证中的身份提供商的数字签名,以保证生成零知识证明证据的可验证凭证是由身份提供商所颁发。
作为本发明的一种优选技术方案,所述用户接口模块用于根据输入的参数调用凭证客户端中的其他模块,或者接收来自其他模块传递的信息;
所述web3.js接口模块是凭证客户端和零知识智能合约交互的接口,用户发送调用零知识智能合约中的命令,以及接收零知识智能合约中命令的触发;
所述零知识证明模块用于接收用户接口模块的参数,生成创建操作类型或验证操作类型的信息;
所述通信模块用于接收来自用户接口模块的参数,使用基于椭圆曲线算法加密数字签名算法的非对称秘钥技术;
所述数据库模块用于存储身份提供商颁发的属性值、以及存储用于接收到的属性值。
作为本发明的一种优选技术方案,本发明还提供一种基于区块链智能合约的零知识证明可验证凭证数字身份管理方法,应用上述管理系统实现以下步骤:
S1、用户使用ZoKrates支持的EdDSA椭圆曲线算法生成私钥SKuser和公钥PKuser,然后将公钥PKuser和用户身份标识符User DID提交给身份提供商 IDP,而私钥SKuser自持以保证安全,身份提供商IDP完成身份核验后为用户颁发可验证凭证VC;
S2、服务提供商SP利用ZoKrates的DLS语言描述零知识证明程序Z,并利用ZoKrates的编译和构建生成证明密钥proving key和验证密钥verification key;再利用ZoKrates生成零知识证据验证智能合约Cert_ZK_Proof,并部署到以太坊区块链中;
S3、用户向相应的服务提供商SP获取零知识证明程序Z和证明密钥Proving key,并利用ZoKrates生成可验证凭证的零知识证据zk_proof,最后,用户向服务提供商提交零知识证据zk_proof和可验证凭证VC中的身份提供商的数字签名,以请求零知识身份认证和获取服务。
作为本发明的一种优选技术方案,步骤S1中身份提供商IDP利用哈希算法keccak256求取用户公钥PKuser的哈希值,并将结果作为可验证凭证VC的用户身份标识符User DID;身份提供商IDP利用其以太坊账号地址作为身份提供商身份标识符IDP_DID;身份提供商IDP利用其以太坊账号私钥对用户申请的身份属性信息进行签名,同时生成基于身份属性的可验证凭证VC;身份提供商IDP 以Sign_H为参数,调用凭证状态智能合约Cert_Status_SC,将可验证凭证VC 激活,以说明可验证凭证VC可用。
作为本发明的一种优选技术方案,步骤S2中用户将可验证凭证VC中的用户的属性值Attribute,其私钥SKuser和公钥PKuser作为Z的隐私输入Private_in,将可验证凭证VC中的用户身份标识符User DID、身份提供商身份标识符IDP DID、以及求取的Sign_H作为零知识证明程序Z的公共输入Public_in,与证明密钥proving key一起,利用ZoKrates生成凭证的零知识证明证据zk_proof;用户保存零知识证据zk_proof到其智能移动终端。
作为本发明的一种优选技术方案,步骤S3中请求零知识身份认证和获取服务具体包括以下步骤:
S31、用户向服务提供商请求相应的服务,并将服务所需的零知识证据提交给服务提供商,同时提交可验证凭证中的数字签名;
S32、服务提供商SP从零知识证据zk_proof中提取用户的公共输入 Public_in,其中,公共输入Public_in包括用户身份标识符User DID、身份提供商标身份识符IDP DID、可验证凭证VC的相关信息的哈希值Sign_H;
S33、服务提供商SP以Sign_H为输入参数,调用凭证状态智能合约 Cert_Status_SC,以判断凭证是否处于激活状态;
S34、如果凭证是激活的,服务提供商SP求取零知识证据zk_proof的哈希值Hash_P,并以该哈希值为参数,调用零知识证据使用状态智能合约 cert_isused_sc,以判断凭证的零知识证据zk_proof是否已经被使用过,以防止零知识证据zk_proof和用户的可验证凭证VC相关信息被非法截获后,从服务提供商SP非法获取服务;
S35、如果零知识证据zk_proof没有被使用过,服务提供商SP以零知识证据zk_proof为输入参数,调用零知识证据有效性验证智能合约 Cert_ZK_Proof_SC,以验证用户属性满足服务授权要求,验证用户是可验证凭证 VC的持有者,验证用户的属性值确实包含在可验证凭证VC中;
S36、如果零知识证据zk_proof验证通过,服务提供商SP以Hash_P为输入参数,调用零知识证据使用状态智能合约cert_isused_sc,以设置零知识证据 zk_proof已经被使用,此时,如果用户要想再次服务提供商SP的服务,需要重新利用ZoKrates生成新的零知识证据zk_proof,由于ZoKrates每次所生成的零知识证据zk_proof中,除了用户的公共输入public_in不变外,其余数据具有随机特性,因此,通过智能合约判断零知识证据zk_proof是否使用过可以有效的防止重放攻击;
S37、服务提供商SP以零知识证据zk_proof中的公共输入Public_in中的 Sign_H和用户提交的可验证凭证VC中的数字签名Sign_H为输入参数,调用可验证凭证有效性验证智能合约VerifySignature,其中,该合约中的签名验证算法函数使用的以太坊内置的椭圆曲线数字签名算法ECDSA,其函数为 ecrecover(Sign_H,Sign(Sign_H)),对于该函数,当哈希值Sign_H与哈希的签名结果Sign_H配对时,可以返回签名者的以太坊账户地址Sign_Eth_address,此时,将签名者的以太坊账户地址Sign_Eth_address与零知识证据zk_proof中的公共输入Public_in中的身份提供商标身份识符IDP DID比较,如果相等,则说明生成零知识证据zk_proof的可验证凭证VC的数字签名确实是服务提供商IDP所签署,可验证凭证VC是合法的;
S38、服务提供商授权用户相应服务。
本发明相较于现有技术,具有以下有益效果:
第一,利用非交互式零知识证明(zero-knowledge succint non-interactivearguments ofknowledge,zkSNARKs)改善了基于区块链的可验证凭证数字身份架构的身份隐私特性,本发明中证明零知识问题的描述程序由服务提供商(service provider,SP)根据服务的身份属性需求构造,用户要获得服务,仅需要根据服务提供商构造的零知识问题程序,利用用户的属性凭证生成零知识证据,并向服务提供商提交证据,证明证据中的属性满足服务的身份属性需求,同时证明用户是生成证据的的持有者,从而实现了隐私性和安全性的双重保障。
第二,本发明在证明证据有效性以及是可验证凭证持有者的同时,也验证了身份提供商的有效性,而这些证明都是通过链上代码智能合约实现的,即零知识证据的有效性验证、凭证中的身份提供商的验证、凭证的状态管理等都将全部由公开透明、安全可信的区块链智能合约实现,保证了认证的可信。
第三,本发明中身份属性可验证凭证为仅包含单一身份属性的格式,以保障隐私最小化披露。
附图说明
图1是本发明一种基于区块链智能合约的零知识证明可验证凭证数字身份管理系统的结构示意图。
图2是本发明中可验证凭证的零知识证据智能合约验证的流程图。
图3是本发明中身份属性的可验证凭证颁发的流程图。
图4是本发明中零知识身份证明的智能合约验证与服务的授权的流程图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
为了达到本发明的目的,如图1所示,在本发明的其中一种实施方式中提供一种基于区块链智能合约的零知识证明可验证凭证数字身份管理系统,包括零知识智能合约和凭证客户端;
所述零知识智能合约包括凭证状态智能合约Cert_Status_SC、零知识证据使用状态智能合约Cert_isused_SC、零知识证据有效性验证智能合约 Cert_ZK_Proof_SC和可验证凭证有效性验证智能合约VerifySignature;
所述凭证客户端包括用户接口模块、web3.js接口模块、零知识证明模块、通信模块、数据库模块;用户接口模块用于根据输入的参数调用凭证客户端中的其他模块,或者接收来自其他模块传递的信息;web3.js接口模块是凭证客户端和零知识智能合约交互的接口,用户发送调用零知识智能合约中的命令,以及接收零知识智能合约中命令的触发;零知识证明模块用于接收用户接口模块的参数,生成创建操作类型或验证操作类型的信息;通信模块用于接收来自用户接口模块的参数,使用基于椭圆曲线算法加密数字签名算法的非对称秘钥技术;
所述数据库模块用于存储身份提供商颁发的属性值、以及存储用于接收到的属性值。
所述凭证客户端设有三个角色:身份提供商IDP、用户、服务提供商SP;
所述身份提供商IDP是可验证凭证VC的颁发者,其在核验用户真实身份后,为用户颁发包含用户属性、用户身份标识符User DID、身份提供商标身份识符 IDPDID和数字签名的可验证凭证IDP Signature;其中,用户身份标识符User DID 是用户的公钥经过Kecack256哈希算法得到的结果,身份提供商标身份识符IDP DID是身份提供商的以太坊账号,数字签名的可验证凭证IDP Signature是身份提供商的以太坊账号私钥对可验证凭证的哈希值Sign_H的签名;
所述用户是可验证凭证VC的拥有者,其把可验证凭证VC提交给服务提供商SP,并在证明其是凭证中的身份标识符的拥有者后获得服务;
所述服务提供商SP是服务提供者,其在验证凭证中的身份提供商IDP的数字签名后为用户提供服务。
具体的,所述凭证状态智能合约由身份提供商管理,以在颁发凭证后激活凭证状态或在需要撤销凭证时撤销凭证;
所述零知识证据使用状态智能合约用于防止已经使用过的零知识证据被非法获取后,并利用其从服务提供商非法获取服务,因此,零知识证据每次使用后都要重新生成,而使用过的零知识证据都将利用该合约进行记录,以防止重放攻击;
所述零知识证据有效性验证智能合约是服务提供商基于其所构建的零知识证明程序利用ZoKrates生成的,用户提交零知识证据后,服务提供商将零知识证据作为参数提交给该合约,如果证据满足条件的,则该合约返回真值,否则返回假值;
所述可验证凭证有效性验证智能合约用于验证可验证凭证中的身份提供商的数字签名,以保证生成零知识证明证据的可验证凭证是由身份提供商所颁发。
本实施例还提供一种基于区块链智能合约的零知识证明可验证凭证数字身份管理方法,应用上述管理系统实现以下步骤:
S1、如图2所示,用户使用ZoKrates支持的EdDSA椭圆曲线算法生成私钥 SKuser和公钥PKuser,然后将公钥PKuser和用户身份标识符User DID提交给身份提供商IDP,而私钥SKuser自持以保证安全,身份提供商IDP完成身份核验后为用户颁发可验证凭证VC;其中,身份提供商IDP利用哈希算法keccak256 求取用户公钥PKuser的哈希值,并将结果作为可验证凭证VC的用户身份标识符User DID;身份提供商IDP利用其以太坊账号地址作为身份提供商身份标识符IDP_DID;身份提供商IDP利用其以太坊账号私钥对用户申请的身份属性信息进行签名,同时生成基于身份属性的可验证凭证VC;身份提供商IDP以Sign_H 为参数,调用凭证状态智能合约Cert_Status_SC,将可验证凭证VC激活,以说明可验证凭证VC可用。
S2、如图3所示,服务提供商SP利用ZoKrates的DLS语言描述零知识证明程序Z,并利用ZoKrates的编译和构建生成证明密钥proving key和验证密钥 verification key;再利用ZoKrates生成零知识证据验证智能合约Cert_ZK_Proof,并部署到以太坊区块链中;其中,用户将可验证凭证VC中的用户的属性值Attribute,其私钥SKuser和公钥PKuser作为Z的隐私输入Private_in,将可验证凭证VC中的用户身份标识符User DID、身份提供商身份标识符IDP DID、以及求取的Sign_H作为零知识证明程序Z的公共输入Public_in,与证明密钥 proving key一起,利用ZoKrates生成凭证的零知识证明证据zk_proof;用户保存零知识证据zk_proof到其智能移动终端。
S3、用户向相应的服务提供商SP获取零知识证明程序Z和证明密钥Proving key,并利用ZoKrates生成可验证凭证的零知识证据zk_proof,最后,用户向服务提供商提交零知识证据zk_proof和可验证凭证VC中的身份提供商的数字签名,以请求零知识身份认证和获取服务;其中,请求零知识身份认证和获取服务具体包括如图4所示的以下步骤:
S31、用户向服务提供商请求相应的服务,并将服务所需的零知识证据提交给服务提供商,同时提交可验证凭证中的数字签名;
S32、服务提供商SP从零知识证据zk_proof中提取用户的公共输入 Public_in,其中,公共输入Public_in包括用户身份标识符User DID、身份提供商标身份识符IDP DID、可验证凭证VC的相关信息的哈希值Sign_H;
S33、服务提供商SP以Sign_H为输入参数,调用凭证状态智能合约 Cert_Status_SC,以判断凭证是否处于激活状态;
S34、如果凭证是激活的,服务提供商SP求取零知识证据zk_proof的哈希值Hash_P,并以该哈希值为参数,调用零知识证据使用状态智能合约 cert_isused_sc,以判断凭证的零知识证据zk_proof是否已经被使用过,以防止零知识证据zk_proof和用户的可验证凭证VC相关信息被非法截获后,从服务提供商SP非法获取服务;
S35、如果零知识证据zk_proof没有被使用过,服务提供商SP以零知识证据zk_proof为输入参数,调用零知识证据有效性验证智能合约 Cert_ZK_Proof_SC,以验证用户属性满足服务授权要求,验证用户是可验证凭证 VC的持有者,验证用户的属性值确实包含在可验证凭证VC中;
S36、如果零知识证据zk_proof验证通过,服务提供商SP以Hash_P为输入参数,调用零知识证据使用状态智能合约cert_isused_sc,以设置零知识证据zk_proof已经被使用,此时,如果用户要想再次服务提供商SP的服务,需要重新利用ZoKrates生成新的零知识证据zk_proof,由于ZoKrates每次所生成的零知识证据zk_proof中,除了用户的公共输入public_in不变外,其余数据具有随机特性,因此,通过智能合约判断零知识证据zk_proof是否使用过可以有效的防止重放攻击;
S37、服务提供商SP以零知识证据zk_proof中的公共输入Public_in中的 Sign_H和用户提交的可验证凭证VC中的数字签名Sign_H为输入参数,调用可验证凭证有效性验证智能合约VerifySignature,其中,该合约中的签名验证算法函数使用的以太坊内置的椭圆曲线数字签名算法ECDSA,其函数为 ecrecover(Sign_H,Sign(Sign_H)),对于该函数,当哈希值Sign_H与哈希的签名结果Sign_H配对时,可以返回签名者的以太坊账户地址Sign_Eth_address,此时,将签名者的以太坊账户地址Sign_Eth_address与零知识证据zk_proof中的公共输入Public_in中的身份提供商标身份识符IDP DID比较,如果相等,则说明生成零知识证据zk_proof的可验证凭证VC的数字签名确实是服务提供商IDP所签署,可验证凭证VC是合法的。
S38、服务提供商授权用户相应服务。
以下为本实施例中区块链底层的安全说明:
1)系统框架的安全:本发明的系统框架基于属性凭证的框架,该框架的属性凭证和私钥由用户自主持有,区块链中并不存储任何与属性凭证明文信息相关的内容,而仅仅使用属性凭证中的哈希值Sign_H查看凭证是否激活,以及使用零知识证据的哈希值Hash_P查看零知识证据是否被使用过。
2)零知识证明的安全:本发明的零知识证明的智能合约和相关参数的生成是基于ZoKrates工具集的,而该工具集是基于非交互式零知识证明中的groth17 算法的,该算法的安全性已经被证明;
3)凭证的零知识证明验证过程和结果的安全:本发明的所有验证过程都在区块链上利用智能合约完成,而智能合约在部署后是不能随意更改的,合约的执行代码是公开透明的,而且智能合约的调用和执行过程都将产生交易记录,方便审计和追溯。此外,本发明的零知识验证不仅验证了用户的身份属性是否满足要求、而且验证了用户是否是凭证的持有者,同时验证了凭证的签名是否合法。
一下为本实施例中应用层的安全说明:
1)凭证属性信息最小化:本发明的系统框架中的可验证凭证仅包含一种属性信息,用户的多种属性信息可由多个来自不同的身份提供商签发的属性凭证证明,保证属性信息的最小披露;
2)可防止重放攻击:尽管零知识证据可能会因为用户与服务提供商通信过程中泄露,或者是被不诚实的服务提供商透露给其他人,但是由于每一个零知识证据仅可以使用一次,用户要再次访问服务提供商可以生成新的零知识证据。
3)零知识规则由服务提供商制定:零知识证明验证规则由根据服务的属性需求制定,且验证智能合约也由其部署,保证服务授权自主和安全。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (2)
1.一种基于区块链智能合约的零知识证明可验证凭证数字身份管理系统,包括零知识智能合约和凭证客户端;所述零知识智能合约包括凭证状态智能合约、零知识证据使用状态智能合约、零知识证据有效性验证智能合约和可验证凭证有效性验证智能合约;所述凭证客户端包括用户接口模块、web3.js接口模块、零知识证明模块、通信模块、数据库模块;所述凭证客户端设有三个角色:身份提供商、用户、服务提供商;所述身份提供商是可验证凭证的颁发者,其在核验用户真实身份后,为用户颁发包含用户属性、用户身份标识符、身份提供商标身份识符和数字签名的可验证凭证;其中,用户身份标识符是用户的公钥经过Kecack256哈希算法得到的结果,身份提供商标身份识符是身份提供商的以太坊账号,数字签名的可验证凭证是身份提供商的以太坊账号私钥对可验证凭证的哈希值的签名;所述用户是可验证凭证的拥有者,其把可验证凭证提交给服务提供商,并在证明其是凭证中的身份标识符的拥有者后获得服务;所述服务提供商是服务提供者,其在验证凭证中的身份提供商的数字签名后为用户提供服务;所述凭证状态智能合约由身份提供商管理,以在颁发凭证后激活凭证状态或在需要撤销凭证时撤销凭证;所述零知识证据使用状态智能合约用于防止已经使用过的零知识证据被非法获取后,并利用其从服务提供商非法获取服务,因此,零知识证据每次使用后都要重新生成,而使用过的零知识证据都将利用该合约进行记录,以防止重放攻击;所述零知识证据有效性验证智能合约是服务提供商基于其所构建的零知识证明程序利用ZoKrates生成的,用户提交零知识证据后,服务提供商将零知识证据作为参数提交给该合约,如果证据满足条件的,则该合约返回真值,否则返回假值;所述可验证凭证有效性验证智能合约用于验证可验证凭证中的身份提供商的数字签名,以保证生成零知识证明证据的可验证凭证是由身份提供商所颁发;所述用户接口模块用于根据输入的参数调用凭证客户端中的其他模块,或者接收来自其他模块传递的信息;所述web3.js接口模块是凭证客户端和零知识智能合约交互的接口,用户发送调用零知识智能合约中的命令,以及接收零知识智能合约中命令的触发;所述零知识证明模块用于接收用户接口模块的参数,生成创建操作类型或验证操作类型的信息;所述通信模块用于接收来自用户接口模块的参数,使用基于椭圆曲线算法加密数字签名算法的非对称秘钥技术;所述数据库模块用于存储身份提供商颁发的属性值、以及存储用于接收到的属性值,其特征在于,所述管理系统实现的方法包括以下步骤:
S1、用户使用ZoKrates支持的EdDSA椭圆曲线算法生成私钥和公钥,然后将公钥和用户身份标识符提交给身份提供商,而私钥自持以保证安全,身份提供商完成身份核验后为用户颁发可验证凭证;
身份提供商利用哈希算法keccak256求取用户公钥的哈希值Sign_H,并将结果作为可验证凭证的用户身份标识符;身份提供商利用其以太坊账号地址作为身份提供商身份标识符;身份提供商IDP利用其以太坊账号私钥对用户申请的身份属性信息进行签名,同时生成基于身份属性的可验证凭证;身份提供商以Sign_H为参数,调用凭证状态智能合约,将可验证凭证激活,以说明可验证凭证可用;
S2、服务提供商利用ZoKrates的DLS语言描述零知识证明程序Z,并利用ZoKrates的编译和构建生成证明密钥和验证密钥;再利用ZoKrates生成零知识证据验证智能合约,并部署到以太坊区块链中;
用户将可验证凭证中的用户的属性值、私钥和公钥r作为Z的隐私输入,将可验证凭证中的用户身份标识符、身份提供商身份标识符、以及求取的Sign_H作为零知识证明程序Z的公共输入,与证明密钥一起,利用ZoKrates生成凭证的零知识证明证据;用户保存零知识证据到其智能移动终端;
S3、用户向相应的服务提供商获取零知识证明程序Z和证明密钥,并利用ZoKrates生成可验证凭证的零知识证据,最后,用户向服务提供商提交零知识证据和可验证凭证中的身份提供商的数字签名,以请求零知识身份认证和获取服务。
2.根据权利要求1所述的基于区块链智能合约的零知识证明可验证凭证数字身份管理系统 ,其特征在于,步骤S3中请求零知识身份认证和获取服务具体包括以下步骤:
S31、用户向服务提供商请求相应的服务,并将服务所需的零知识证据提交给服务提供商,同时提交可验证凭证中的数字签名;
S32、服务提供商从零知识证据中提取用户的公共输入,其中,公共输入包括用户身份标识符、身份提供商标身份识符、可验证凭证的相关信息的哈希值Sign_H;
S33、服务提供商以Sign_H为输入参数,调用凭证状态智能合约,以判断凭证是否处于激活状态;
S34、如果凭证是激活的,服务提供商求取零知识证据的哈希值Hash_P,并以该哈希值为参数,调用零知识证据使用状态智能合约,以判断凭证的零知识证据是否已经被使用过,以防止零知识证据和用户的可验证凭证相关信息被非法截获后,从服务提供商非法获取服务;
S35、如果零知识证据没有被使用过,服务提供商以零知识证据为输入参数,调用零知识证据有效性验证智能合约,以验证用户属性满足服务授权要求,验证用户是可验证凭证的持有者,验证用户的属性值确实包含在可验证凭证中;
S36、如果零知识证据验证通过,服务提供商SP以Hash_P为输入参数,调用零知识证据使用状态智能合约,以设置零知识证据已经被使用,此时,如果用户要想再次服务提供商SP的服务,需要重新利用ZoKrates生成新的零知识证据,由于ZoKrates每次所生成的零知识证据中,除了用户的公共输入不变外,其余数据具有随机特性,因此,通过智能合约判断零知识证据是否使用过可以有效的防止重放攻击;
S37、服务提供商以零知识证据中的公共输入中的Sign_H和用户提交的可验证凭证VC中的数字签名Sign_H为输入参数,调用可验证凭证有效性验证智能合约,其中,该合约中的签名验证算法函数使用的以太坊内置的椭圆曲线数字签名算法ECDSA,其函数为ecrecover(Sign_H,Sign(Sign_H)),对于该函数,当哈希值Sign_H与哈希的签名结果Sign_H配对时,可以返回签名者的以太坊账户地址,此时,将签名者的以太坊账户地址与零知识证据中的公共输入中的身份提供商标身份识符比较,如果相等,则说明生成零知识证据的可验证凭证的数字签名确实是服务提供商所签署,可验证凭证是合法的;
S38、服务提供商授权用户相应服务。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111343581.5A CN114186248B (zh) | 2021-11-13 | 2021-11-13 | 基于区块链智能合约的零知识证明可验证凭证数字身份管理系统及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111343581.5A CN114186248B (zh) | 2021-11-13 | 2021-11-13 | 基于区块链智能合约的零知识证明可验证凭证数字身份管理系统及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114186248A CN114186248A (zh) | 2022-03-15 |
CN114186248B true CN114186248B (zh) | 2022-08-05 |
Family
ID=80601560
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111343581.5A Active CN114186248B (zh) | 2021-11-13 | 2021-11-13 | 基于区块链智能合约的零知识证明可验证凭证数字身份管理系统及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114186248B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114760067B (zh) * | 2022-03-30 | 2023-09-12 | 西安电子科技大学 | 一种用零知识证明的区块链群智感知系统隐私安全保护方法 |
CN114826618B (zh) * | 2022-05-06 | 2023-07-21 | 珠海复旦创新研究院 | 一种证书分发与访问控制一体化系统 |
CN114938280A (zh) * | 2022-05-24 | 2022-08-23 | 中国科学技术大学 | 一种基于非交互零知识证明与智能合约的认证方法及系统 |
CN114760071B (zh) * | 2022-06-13 | 2022-10-28 | 深圳市永达电子信息股份有限公司 | 基于零知识证明的跨域数字证书管理方法、系统和介质 |
CN114900321B (zh) * | 2022-07-14 | 2022-10-14 | 云上人和物联科技有限公司 | 一种自主实名电子身份凭证生成系统及方法 |
CN115186286B (zh) * | 2022-09-09 | 2022-11-18 | 北京数牍科技有限公司 | 模型处理方法、装置、设备、可读存储介质及程序产品 |
CN115499247B (zh) * | 2022-11-16 | 2023-03-28 | 哈尔滨工业大学(深圳)(哈尔滨工业大学深圳科技创新研究院) | 基于零知识证明的属性凭证的验证方法及装置 |
CN115622812A (zh) * | 2022-12-16 | 2023-01-17 | 金网络(北京)电子商务有限公司 | 基于区块链智能合约的数字身份验证方法及系统 |
CN115913772B (zh) * | 2022-12-20 | 2024-06-04 | 四川启睿克科技有限公司 | 一种基于零信任的智慧家庭设备安全防护系统及方法 |
CN116915415B (zh) * | 2023-09-13 | 2023-12-19 | 哈尔滨工程大学三亚南海创新发展基地 | 一种基于数字凭证的数据验证方法及系统 |
CN117176361B (zh) * | 2023-09-26 | 2024-05-07 | 云南财经大学 | 一种区块链数字身份认证控制系统及方法 |
CN117975543A (zh) * | 2024-04-01 | 2024-05-03 | 武汉烽火信息集成技术有限公司 | 一种基于光流表情的区块链零知识身份认证凭证交互方法 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108769020A (zh) * | 2018-05-29 | 2018-11-06 | 东北大学 | 一种隐私保护的身份属性证明系统及方法 |
CN111159694A (zh) * | 2019-12-17 | 2020-05-15 | 上海七印信息科技有限公司 | 基于零知识证明的区块链数字资产的私密使用授权方法 |
CN111213147A (zh) * | 2019-07-02 | 2020-05-29 | 阿里巴巴集团控股有限公司 | 用于基于区块链的交叉实体认证的系统和方法 |
CN111447073A (zh) * | 2020-03-31 | 2020-07-24 | 河北大学 | 基于区块链与零知识证明的身份管理与认证系统及方法 |
CN112118253A (zh) * | 2020-09-16 | 2020-12-22 | 北方工业大学 | 一种基于区块链的云服务日志匿名系统及匿名方法 |
CN112580102A (zh) * | 2020-12-29 | 2021-03-30 | 郑州大学 | 基于区块链的多维度数字身份鉴别系统 |
CN112950220A (zh) * | 2021-03-10 | 2021-06-11 | 湖南大学 | 一种基于区块链的企业数字身份管理系统及方法 |
CN113176739A (zh) * | 2020-01-09 | 2021-07-27 | 丰田自动车株式会社 | 车辆用控制装置、车辆控制方法以及存储车辆用控制程序的非瞬时性的计算机可读介质 |
CN113221089A (zh) * | 2021-03-15 | 2021-08-06 | 东北大学 | 基于可验证声明的隐私保护属性认证系统及方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019204670A2 (en) * | 2018-04-18 | 2019-10-24 | 2Key New Economics Ltd. | Decentralized protocol for maintaining cryptographically proven multi-step referral networks |
CN109614820A (zh) * | 2018-12-06 | 2019-04-12 | 山东大学 | 基于零知识证明的智能合约认证数据隐私保护方法 |
US11514439B2 (en) * | 2020-02-26 | 2022-11-29 | Nice Ltd. | System and method using zero knowledge proofs for alert sharing |
CN113098838B (zh) * | 2021-02-21 | 2022-08-26 | 西安电子科技大学 | 一种可信分布式身份认证方法、系统、存储介质及应用 |
-
2021
- 2021-11-13 CN CN202111343581.5A patent/CN114186248B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108769020A (zh) * | 2018-05-29 | 2018-11-06 | 东北大学 | 一种隐私保护的身份属性证明系统及方法 |
CN111213147A (zh) * | 2019-07-02 | 2020-05-29 | 阿里巴巴集团控股有限公司 | 用于基于区块链的交叉实体认证的系统和方法 |
CN111159694A (zh) * | 2019-12-17 | 2020-05-15 | 上海七印信息科技有限公司 | 基于零知识证明的区块链数字资产的私密使用授权方法 |
CN113176739A (zh) * | 2020-01-09 | 2021-07-27 | 丰田自动车株式会社 | 车辆用控制装置、车辆控制方法以及存储车辆用控制程序的非瞬时性的计算机可读介质 |
CN111447073A (zh) * | 2020-03-31 | 2020-07-24 | 河北大学 | 基于区块链与零知识证明的身份管理与认证系统及方法 |
CN112118253A (zh) * | 2020-09-16 | 2020-12-22 | 北方工业大学 | 一种基于区块链的云服务日志匿名系统及匿名方法 |
CN112580102A (zh) * | 2020-12-29 | 2021-03-30 | 郑州大学 | 基于区块链的多维度数字身份鉴别系统 |
CN112950220A (zh) * | 2021-03-10 | 2021-06-11 | 湖南大学 | 一种基于区块链的企业数字身份管理系统及方法 |
CN113221089A (zh) * | 2021-03-15 | 2021-08-06 | 东北大学 | 基于可验证声明的隐私保护属性认证系统及方法 |
Non-Patent Citations (9)
Title |
---|
《Privacy-Preserving Blockchain-Based Systems for Car Sharing Leveraging Zero-Knowledge Protocols》;Ivan Gudymenko等;《 2020 IEEE International Conference on Decentralized Applications and Infrastructures (DAPPS)》;20200708;第114-119页 * |
《ZoKrates - Scalable Privacy-Preserving Off-Chain Computations》;Jacob Eberhardt等;《2018 IEEE International Conference on Internet of Things (iThings) and IEEE Green Computing and Communications (GreenCom) and IEEE Cyber, Physical and Social Computing (CPSCom) and IEEE Smart Data (SmartData)》;20190603;第 1084-1091页 * |
《可验证凭证–数字身份的核心》;暗涧幽火;《https://blog.csdn.net/wangxi06/article/details/114968282》;20210318;全文 * |
《基于CL匿名凭证系统的属性证明协议的研究与实现》;王佳;《中国优秀硕士学位论文全文数据库》;20160831;信息科技辑I136-198 * |
《基于区块链的分布式认证和访问控制研究》;马仲岳;《中国优秀硕士学位论文全文数据库》;20210228;信息科技辑I138-95 * |
《基于区块链的异构身份联盟与监管体系架构和关键机制》;董贵山等;《通信技术》;20200228;第53卷(第2期);第401-413页 * |
《基于属性基加密的区块链数据共享模型》;张晓东等;《计算机应用研究》;20210831;第38卷(第8期);第2278-2283页 * |
《零知识证明-深入理解》;ZoKratesStarLi;《https://blog.csdn.net/StarLi2020/article/details/107576706》;20200725;全文 * |
《面向电子政务的区块链身份认证模型研究》;宋智明等;《电子政务》;20210630(第6期);第100-112页 * |
Also Published As
Publication number | Publication date |
---|---|
CN114186248A (zh) | 2022-03-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN114186248B (zh) | 基于区块链智能合约的零知识证明可验证凭证数字身份管理系统及方法 | |
CN112153608B (zh) | 一种基于侧链技术信任模型的车联网跨域认证方法 | |
CN108768988B (zh) | 区块链访问控制方法、设备及计算机可读存储介质 | |
CN113256290B (zh) | 去中心化加密通讯与交易系统 | |
CN108599954B (zh) | 基于分布式账本的身份验证方法 | |
CN111654363B (zh) | 一种基于群签名和同态加密的联盟链隐私保护方法 | |
CN109687976A (zh) | 基于区块链与pki认证机制的车队组建及管理方法及系统 | |
CN109922077A (zh) | 一种基于区块链的身份认证方法及其系统 | |
CN112818368A (zh) | 一种基于区块链智能合约的数字证书认证方法 | |
CN113507458B (zh) | 一种基于区块链的跨域身份认证方法 | |
CN113301022B (zh) | 基于区块链和雾计算的物联网设备身份安全认证方法 | |
CN114244527B (zh) | 基于区块链的电力物联网设备身份认证方法及系统 | |
CN109962890A (zh) | 一种区块链的认证服务装置及节点准入、用户认证方法 | |
CN105187405A (zh) | 基于信誉的云计算身份管理方法 | |
CN112565294B (zh) | 一种基于区块链电子签名的身份认证方法 | |
CN114760065A (zh) | 一种在线学习平台教学资源共享的访问控制方法及装置 | |
CN115102695A (zh) | 基于区块链的车联网证书认证方法 | |
CN114938280A (zh) | 一种基于非交互零知识证明与智能合约的认证方法及系统 | |
Riad et al. | A blockchain‐based key‐revocation access control for open banking | |
CN114091009A (zh) | 利用分布式身份标识建立安全链接的方法 | |
CN113259350A (zh) | 一种基于密钥生成算法的密码学用户授权认证系统 | |
CN115883102B (zh) | 基于身份可信度的跨域身份认证方法、系统及电子设备 | |
CN114944953B (zh) | 一种车联网环境下用于路况监测的无证书匿名认证方法 | |
CN107395364B (zh) | 一种基于标识的组合密钥跨域认证方法 | |
Chen et al. | CallChain: Identity authentication based on blockchain for telephony networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |