基于区块链的数字身份认证方法及系统技术方案

技术编号:37359540 阅读:48 留言:0更新日期:2023-04-27 07:08
本申请公开了一种基于区块链的数字身份认证方法及系统,属于区块链技术领域。所述方法包括:认证终端向用户终端发送凭据请求,凭据请求中携带有凭据模板的凭据模板标识,凭据模板由证书发行机构发布在区块链上;用户终端根据凭据模板标识对应的凭据模板获取用户的DID标识,根据DID标识获取m个用户证书,根据m个用户证书和凭据模板生成凭据和凭据证明,将凭据和凭据证明发送给认证终端,用户证书由证书发行机构通过区块链颁发给用户,m≥1;认证终端根据凭据证明对凭据进行验证,在验证通过后,根据凭据认证用户的数字身份。本申请中数字身份的所有信息不会被认证终端看到,从而能够保护用户的隐私,也可以提高数字身份认证的安全性。安全性。安全性。

【技术实现步骤摘要】
基于区块链的数字身份认证方法及系统


[0001]本申请涉及区块链
,特别涉及一种基于区块链的数字身份认证方法及系统。

技术介绍

[0002]传统的数字身份由中心化的权威机构进行管理。以权威机构为CA(Certificate Authority,证书授权)机构为例,CA机构先生成公钥和私钥,将私钥发送给用户进行保存,对公钥进行CA签名并封装成数字证书,CA机构对用户的数字身份进行背书。在很多对安全性要求较高的应用中,例如金融领域或政务领域的应用,目前都采用CA认证的方式管理用户的数字身份。
[0003]当通过中心化的CA机构管理数字证书时,无法防止CA被攻击或者CA作恶,从而导致数字身份的认证存在安全风险。另外,利用数字证书认证用户的数字身份时,数字身份的所有信息都会被认证方看到,从而无法保护用户的隐私。

技术实现思路

[0004]本申请提供了一种基于区块链的数字身份认证方法系及统,用于解决数字身份的认证存在安全风险,且数字身份的所有信息会被泄露,无法保护用户的隐私的问题。所述技术方案如下:一方面,提供了一种基于区块链的数字身份认证方法,所述方法包括:认证终端向用户终端发送凭据请求,所述凭据请求中携带有凭据模板的凭据模板标识,所述凭据模板由证书发行机构发布在区块链上;所述用户终端根据所述凭据模板标识对应的凭据模板获取用户的去中心化数字身份DID标识,根据所述DID标识获取m个用户证书,根据所述m个用户证书和所述凭据模板生成凭据和凭据证明,将所述凭据和所述凭据证明发送给所述认证终端,所述用户证书由所述证书发行机构通过所述区块链颁发给所述用户,m≥1;所述认证终端根据所述凭据证明对所述凭据进行验证,在验证通过后,根据所述凭据认证所述用户的数字身份。
[0005]在一种可能的实现方式中,所述根据所述DID标识获取m个用户证书,包括:所述用户终端根据所述凭据模板和预设的映射关系确定需要获取的m个用户证书,所述映射关系用于表示凭据模板和用户证书之间的对应关系;若所述用户终端中已经存储有所述m个用户证书且所述m个用户证书中均包含所述DID标识,则获取已存储的所述m个用户证书;若所述用户终端中未存储包含所述DID标识的用户证书,或者,所述用户终端中存储有所述m个证书中的部分证书且所述部分证书中均包含所述DID标识,则向所述证书发行机构申请所需的其他用户证书,最终得到所述m个用户证书。
[0006]在一种可能的实现方式中,所述向所述证书发行机构申请所需的其他用户证书,
包括:所述用户终端向所述证书发行机构发送证书请求,所述证书请求中携带有证书模板的证书模板标识和所述DID标识,所述证书模板由所述证书发行机构发布在所述区块链上;所述证书发行机构根据所述DID标识对所述用户进行身份认证,在身份认证通过后,根据所述证书模板标识、所述DID标识和本地数据库生成用户证书和证书证明,将所述用户证书和所述证书证明发送给所述用户终端,其中,所述用户证书中包含所述DID标识;所述用户终端根据所述证书证明对所述用户证书进行验证,在验证通过后,将所述用户证书存储在本地。
[0007]在一种可能的实现方式中,所述根据所述证书模板标识、所述DID标识和本地数据库生成用户证书和证书证明,包括:所述证书发行机构获取所述证书模板标识对应的证书模板,在所述本地数据库中查找与所述证书模板中的属性相匹配的表记录;按照预设的第一电路约束条件,所述证书发行机构将所述表记录中的字段值和所述DID标识映射为所述证书模板中对应的属性值,并生成自定义属性值,得到用户证书;所述证书发行机构根据所述用户证书中的属性值生成默克尔树根哈希,将所述默克尔树根哈希和所述用户证书中的属性值作为公开变量,将所述表记录中的字段值、所述用户证书中通过结构化查询语言SQL语句定义的属性值、所述表记录的用户签名和所述表记录的机构签名作为私有变量,根据所述公开变量和所述私有变量生成证书零知识证明,将所述证书零知识证明确定为证书证明。
[0008]在一种可能的实现方式中,所述第一电路约束条件包括:当所述表记录对应于所述本地数据库中的一张数据表时,将所述表记录中的字段值映射为所述证书模板中对应的属性值;当所述表记录对应于所述本地数据库中的多张数据表时,根据所述表记录中的字段对所述多张数据表进行关联,并将所述表记录中的字段值映射为所述证书模板中对应的属性值;当通过结构化查询语言SQL语句定义所述证书模板中的属性时,若所述SQL语句为选择操作语句,则将所述表记录中的字段值映射为所述证书模板中对应的属性值;若所述SQL语句为运算操作语句,则对所述表记录中满足条件的字段值进行逻辑运算,并将得到的第一运算结果映射为所述证书模板中对应的属性值;分别对所述表记录的哈希信息、所述表记录的用户签名以及所述表记录的机构签名进行验签;对所述自定义属性值进行机构签名。
[0009]在一种可能的实现方式中,所述用户终端根据所述证书证明对所述用户证书进行验证,包括:所述用户终端根据所述证书零知识证明对所述用户证书进行验证;所述用户终端验证所述公开变量与所述证书模板中的属性值是否相匹配;所述用户终端验证所述自定义属性的机构签名。
[0010]在一种可能的实现方式中,所述根据所述m个用户证书和所述凭据模板生成凭据和凭据证明,包括:
按照预设的第二电路约束条件,所述用户终端将所述m个用户证书中的属性值映射为所述凭据模板中对应的属性值,得到凭据;所述用户终端根据所述用户证书中的属性与所述凭据模板中的属性之间的关系生成凭据证明。
[0011]在一种可能的实现方式中,所述第二电路约束条件包括:对所述用户证书的第一零知识证明进行验证;将所述用户证书中的属性值映射为所述凭据模板中对应的属性值;对所述用户证书中的属性值进行逻辑运算,将得到的第二运算结果映射为所述凭据模板中对应的属性值;对所述用户证书中的属性值进行逻辑运算,将得到的第三运算结果是否满足约束条件映射为所述凭据模板中对应的属性值。
[0012]在一种可能的实现方式中,所述用户终端根据所述用户证书中的属性与所述凭据模板中的属性之间的关系生成凭据证明,包括:若所述用户证书中的全部属性均与所述凭据模板中的属性相同,则所述用户终端将所述证书零知识证明确定为凭据证明;若所述用户证书中的部分属性与所述凭据模板中的属性相同,且属性值的映射过程中不存在逻辑运算,则所述用户终端根据所述凭据中的属性值生成默克尔哈希,将所述默克尔哈希和所述证书零知识证明确定为凭据证明;若所述用户证书中的部分属性与所述凭据模板中的属性相同,且属性值的映射过程中存在逻辑运算,或者,若所述凭据模板中的属性值是根据第三运算结果是否满足约束条件生成的,则所述用户终端将所述逻辑运算的规则和所述约束条件作为公开变量,将所述证书零知识证明和所述用户证书中的属性值作为私有变量,根据所述公开变量和所述私有变量生成凭据零知识证明,将所述凭据零知识证明确定为凭据证明。
[0013]在一种可能的实现方式中,所述认证终端根据所述凭据证明对所述凭据进行验证,包括:当所述凭据证明包本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于区块链的数字身份认证方法,其特征在于,所述方法包括:认证终端向用户终端发送凭据请求,所述凭据请求中携带有凭据模板的凭据模板标识,所述凭据模板由证书发行机构发布在区块链上;所述用户终端根据所述凭据模板标识对应的凭据模板获取用户的去中心化数字身份DID标识,根据所述DID标识获取m个用户证书,根据所述m个用户证书和所述凭据模板生成凭据和凭据证明,将所述凭据和所述凭据证明发送给所述认证终端,所述用户证书由所述证书发行机构通过所述区块链颁发给所述用户,m≥1;所述认证终端根据所述凭据证明对所述凭据进行验证,在验证通过后,根据所述凭据认证所述用户的数字身份。2.根据权利要求1所述的基于区块链的数字身份认证方法,其特征在于,所述根据所述DID标识获取m个用户证书,包括:所述用户终端根据所述凭据模板和预设的映射关系确定需要获取的m个用户证书,所述映射关系用于表示凭据模板和用户证书之间的对应关系;若所述用户终端中已经存储有所述m个用户证书且所述m个用户证书中均包含所述DID标识,则获取已存储的所述m个用户证书;若所述用户终端中未存储包含所述DID标识的用户证书,或者,所述用户终端中存储有所述m个证书中的部分证书且所述部分证书中均包含所述DID标识,则向所述证书发行机构申请所需的其他用户证书,最终得到所述m个用户证书。3.根据权利要求2所述的基于区块链的数字身份认证方法,其特征在于,所述向所述证书发行机构申请所需的其他用户证书,包括:所述用户终端向所述证书发行机构发送证书请求,所述证书请求中携带有证书模板的证书模板标识和所述DID标识,所述证书模板由所述证书发行机构发布在所述区块链上;所述证书发行机构根据所述DID标识对所述用户进行身份认证,在身份认证通过后,根据所述证书模板标识、所述DID标识和本地数据库生成用户证书和证书证明,将所述用户证书和所述证书证明发送给所述用户终端,其中,所述用户证书中包含所述DID标识;所述用户终端根据所述证书证明对所述用户证书进行验证,在验证通过后,将所述用户证书存储在本地。4.根据权利要求3所述的基于区块链的数字身份认证方法,其特征在于,所述根据所述证书模板标识、所述DID标识和本地数据库生成用户证书和证书证明,包括:所述证书发行机构获取所述证书模板标识对应的证书模板,在所述本地数据库中查找与所述证书模板中的属性相匹配的表记录;按照预设的第一电路约束条件,所述证书发行机构将所述表记录中的字段值和所述DID标识映射为所述证书模板中对应的属性值,并生成自定义属性值,得到用户证书;所述证书发行机构根据所述用户证书中的属性值生成默克尔树根哈希,将所述默克尔树根哈希和所述用户证书中的属性值作为公开变量,将所述表记录中的字段值、所述用户证书中通过结构化查询语言SQL语句定义的属性值、所述表记录的用户签名和所述表记录的机构签名作为私有变量,根据所述公开变量和所述私有变量生成证书零知识证明,将所述证书零知识证明确定为证书证明。5.根据权利要求4所述的基于区块链的数字身份认证方法,其特征在于,所述第一电路
约束条件包括:当所述表记录对应于所述本地数据库中的一张数据表时,将所述表记录中的字段值映射为所述证书模板中对应的属性值;当所述表记录对应于所述本地数据库中的多张数据表时,根据所述表记录中的字段对所述多张数据表进行关联,并将所述表记录中的字段值映射为所述证书模板中对应的属性值;当通过结构化查询语言SQL语句定义所述证书模板中的属性时,若所述SQL语句为选择操作语句,则将所述表记录中的字段值映射为所述证书模板中对应的属性值;若所述SQL语句为运算操作语句,则对所述表记录中满足条件的字段值进行逻辑运算,并将得到的第一运算结果映射为所述证书模板中对应的属性值;分别对所述表记录的哈希信息、所述表记录的用户签名以及所述表记录的机构签名进行验签;对所述自定义属性值进行机构签名。6.根据权利要求5所述的基于区块链的数字身份认证方法,其特征在于,所述用户终端根据所述证书证明对所述用户证书进行验证,包括:所述用户终端根据所述证书零知识证明对所述用户证书进行验证;所述用户终端验证所述公开变量与所述证书模板中的属性值是否相匹配;所述用户终端验证所述自定义属性的机构签名。7.根据权利要求1所述的基于区块链的数字身份认证方法,其特征在于,所述根据所述m个用户证书和所述凭据模板生成凭据和凭据证明,包括:按照预设的第二电路约束条件,所述用户终端将所述m个用户证书...

【专利技术属性】
技术研发人员:左磊张沈斌
申请(专利权)人:天聚地合苏州科技股份有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1