基于分布式身份标识的零知识证明方法及终端与流程

文档序号:18639069发布日期:2019-09-11 22:44阅读:200来源:国知局
基于分布式身份标识的零知识证明方法及终端与流程

本发明涉及计算机技术领域,尤其涉及一种基于分布式身份标识的零知识证明方法及终端。



背景技术:

随着信息网络技术的飞速发展,如何对网络中对身份信息进行验证,对于信息安全来说是非常重要的。

目前,区块链子项目hyperledgerfabric实现了一套在联盟链中使用的零知识证明,能够通过第三方颁发生成的证书,来证明联盟链节点的某些特定信息。

但是,hyperledgerfabric实现的零知识证明仅适用于hyperledgerfabric本身的系统,无法在系统外使用;而且hyperledgerfabric实现的零知识证明采用的是盲签名的方式,因而第三方颁发证书时无法确定被签名的信息,因而只能验证联盟链上节点本身的固有信息或者链上生成的信息,具有很大的局限性。



技术实现要素:

针对现有技术存在的问题,本发明实施例提供一种基于分布式身份标识的零知识证明方法及终端。

本发明实施例提供一种基于分布式身份标识的零知识证明方法,包括:

验证终端向证明终端发送验证请求;

接收所述证明终端基于所述验证请求返回的可验证声明、证明文件、可验证声明的哈希值与签名,所述可验证声明的哈希值与签名是可信任第三方终端发送给所述证明终端的,所述证明文件是所述证明终端根据所述可信任第三方终端公开的可验证声明和证明密钥而生成的;

根据验证公钥,对所述可验证声明的哈希值与签名进行验证,所述验证公钥是从所述可信任第三方终端获取的;

若对所述可验证声明的哈希值与签名验证通过,则根据验证程序,对所述证明文件进行验证,将验证结果发送给证明终端,所述验证程序是根据从所述可信任第三方终端获取的验证密钥而生成的;

其中,所述验证终端、所述证明终端和所述可信任第三方终端分别具有各自的分布式身份标识。

本发明实施例提供一种基于分布式身份标识的零知识证明方法,包括:

证明终端接收验证终端发送的验证请求;

基于所述验证请求,向所述验证终端发送可验证声明、证明文件、可验证声明的哈希值与签名,以使所述验证终端对所述可验证声明的哈希值与签名以及所述证明文件进行验证,所述可验证声明的哈希值与签名是从所述可信任第三方终端获取的,所述证明文件是根据所述可信任第三方终端公开的可验证声明和证明密钥而生成的;

接收所述验证终端发送的验证结果;

其中,所述验证终端、所述证明终端和所述可信任第三方终端分别具有各自的分布式身份标识。

本发明实施例提供一种验证终端,其特征在于,包括:

第一发送模块,用于向证明终端发送验证请求;

第一接收模块,用于接收所述证明终端基于所述验证请求返回的可验证声明、证明文件、可验证声明的哈希值与签名,所述可验证声明的哈希值与签名是可信任第三方终端发送给所述证明终端的,所述证明文件是所述证明终端根据所述可信任第三方终端公开的可验证声明和证明密钥而生成的;

第一验证模块,用于根据验证公钥,对所述可验证声明的哈希值与签名进行验证,所述验证公钥是从所述可信任第三方终端获取的;

第二验证模块,用于若对所述可验证声明的哈希值与签名验证通过,则根据验证程序,对所述证明文件进行验证,将验证结果发送给证明终端,所述验证程序是根据从所述可信任第三方终端获取的验证密钥而生成的;

其中,所述验证终端、所述证明终端和所述可信任第三方终端分别具有各自的分布式身份标识。

本发明实施例提供一种证明终端,包括:

第二接收模块,用于接收验证终端发送的验证请求;

第二发送模块,用于基于所述验证请求,向所述验证终端发送可验证声明、证明文件、可验证声明的哈希值与签名,以使所述验证终端对所述可验证声明的哈希值与签名以及所述证明文件进行验证,所述可验证声明的哈希值与签名是从所述可信任第三方终端获取的,所述证明文件是根据所述可信任第三方终端公开的可验证声明和证明密钥而生成的;

第三接收模块,用于接收所述验证终端发送的验证结果;

其中,所述验证终端、所述证明终端和所述可信任第三方终端分别具有各自的分布式身份标识。

本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述方法的步骤。

本发明实施例提供的基于分布式身份标识的零知识证明方法及终端,通过验证终端向证明终端发送验证请求,接收证明终端返回的可验证声明、证明文件、可验证声明的哈希值与签名,可验证声明的哈希值与签名是可信任第三方终端发送给证明终端的,证明文件是证明终端根据可信任第三方终端公开的可验证声明和证明密钥而生成的,根据从可信任第三方终端获取的验证公钥对可验证声明的哈希值与签名进行验证,若对可验证声明的哈希值与签名验证通过,则根据从可信任第三方终端获取的验证密钥而生成的验证程序对证明文件进行验证,将验证结果发送给证明终端;其中,验证终端、证明终端和可信任第三方终端分别具有各自的分布式身份标识,由此,可实现利用零知识证明,对分布式身份标识所对应的可验证声明进行信息验证。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明一实施例提供的一种基于分布式身份标识的零知识证明方法的流程示意图;

图2为本发明实施例利用的零知识证明的验证终端、证明终端和可信任第三方终端的三方关系图;

图3为本发明另一实施例提供的一种基于分布式身份标识的零知识证明方法的流程示意图;

图4为本发明一实施例提供的一种验证终端的结构示意图;

图5为本发明一实施例提供的一种证明终端的结构示意图;

图6为本发明一实施例提供的电子设备的实体结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1示出了本发明一实施例提供的一种基于分布式身份标识的零知识证明方法的流程示意图,如图1所示,本实施例的基于分布式身份标识的零知识证明方法,包括:

s1、验证终端向证明终端发送验证请求。

需要说明的是,本实施例所述方法的执行主体为验证终端。

可以理解的是,在本实施例中涉及的终端包括:验证终端、证明终端和可信任第三方终端,所述验证终端、所述证明终端和所述可信任第三方终端分别具有各自的分布式身份标识(distributedidentity,简称did),所述验证终端、所述证明终端和所述可信任第三方终端三者之间进行通信时,发送的信息/请求均携带有各自的分布式身份标识。

可以理解的是,分布式身份标识是一种可验证的数字身份形式,在区块链系统中,did是一组密码学生成的公私钥密钥对衍生出的地址,它映射了一份用户的数字身份文档,文档中包含了用户自定义可见的个人信息以及获得第三方终端认证的可验证声明,整个文档由用户自己签名背书,证明为某个特定did所有,因而可以作为用户的身份标识。

s2、接收所述证明终端基于所述验证请求返回的可验证声明(verifiableclaim,简称vc)、证明文件、可验证声明的哈希值与签名,所述可验证声明的哈希值与签名是可信任第三方终端发送给所述证明终端的,所述证明文件是所述证明终端根据所述可信任第三方终端公开的可验证声明和证明密钥而生成的。

可以理解的是,可参考图2所示本实施例中零知识证明的验证终端、证明终端和可信任第三方终端的三方关系图,在本步骤之前,所述可信任第三方终端生成了证明密钥、可验证声明以及可验证声明的哈希值与签名;所述证明终端从可信任第三方终端获取了证明密钥、可验证声明以及可验证声明的哈希值与签名,并根据所述可验证声明和证明密钥生成证明文件。

可以理解的是,可验证声明是由第三方终端签名背书过的用户信息,通过对用户信息字段进行哈希hash转换,将得到的hash值由第三方终端进行签名背书,日常生活中的许多信息可以转换为此类可验证声明,如公安局背书的身份信息、公司背书的工作经历信息、学校背书的学历信息、银行背书的信用评估信息等等。这些可验证声明可以自行组合成不同的身份文档,用于用户身份的验证和相关信息的检验,其中提到的第三方终端在分布式系统中也是以did的方式来标识。

s3、根据验证公钥,对所述可验证声明的哈希值与签名进行验证,所述验证公钥是从所述可信任第三方终端获取的。

可以理解的是,可参考图2所示本实施例中零知识证明的验证终端、证明终端和可信任第三方终端的三方关系图,在本步骤之前,所述可信任第三方终端公开了验证公钥,验证终端根据从所述可信任第三方终端获取的验证公钥,对所述可验证声明的哈希值与签名进行验证。

s4、若对所述可验证声明的哈希值与签名验证通过,则根据验证程序,对所述证明文件进行验证,将验证结果发送给证明终端,所述验证程序是根据从所述可信任第三方终端获取的验证密钥而生成的。

可以理解的是,可参考图2所示本实施例中零知识证明的验证终端、证明终端和可信任第三方终端的三方关系图,在本步骤之前,所述可信任第三方终端生成了验证密钥;验证终端根据从所述可信任第三方终端获取的验证密钥生成验证程序,在对所述可验证声明的哈希值与签名验证通过时,验证终端根据所述验证程序,对所述证明文件进行验证,将验证结果发送给证明终端,以实现利用零知识证明,对分布式身份标识所对应的可验证声明进行信息验证。

可以理解的是,零知识简洁非交互式知识证明系统zk-snarks的零知识证明协议是目前使用广泛的一套零知识证明系统,它实现了简洁的非交互式零知识证明,理论上能够对所有可转化为数学逻辑验证的问题进行零知识证明。本实施例是在分布式身份标识引入zk-snarks的零知识证明方案,用于身份信息的保护,能够对所有可用数学逻辑表达的问题进行零知识证明,因而本实施例所述方法具有广泛的适用性;使用零知识证明,可以减少第三方终端在验证中的参与,第三方终端只需要做好预先的准备工作,后续的证明过程仅需要证明终端和验证终端来完成,实现分布式身份标识的隐私保护;零知识证明作为分布式身份标识的可验证声明使用,可以在验证信息或者数据的时候,把暴露的信息降低到最小,大大提高了对用户数据和信息的隐私保护。

本实施例提供的基于分布式身份标识的零知识证明方法,通过验证终端向证明终端发送验证请求,接收证明终端返回的可验证声明、证明文件、可验证声明的哈希值与签名,可验证声明的哈希值与签名是可信任第三方终端发送给证明终端的,证明文件是证明终端根据可信任第三方终端公开的可验证声明和证明密钥而生成的,根据从可信任第三方终端获取的验证公钥对可验证声明的哈希值与签名进行验证,若对可验证声明的哈希值与签名验证通过,则根据从可信任第三方终端获取的验证密钥而生成的验证程序对证明文件进行验证,将验证结果发送给证明终端;其中,验证终端、证明终端和可信任第三方终端分别具有各自的分布式身份标识,由此,可实现利用零知识证明,对分布式身份标识所对应的可验证声明进行信息验证,可以在验证信息或者数据的时候,把暴露的信息降低到最小,大大提高了对用户数据和信息的隐私保护。

进一步地,在上述实施例的基础上,所述步骤s4中的“根据验证程序,对所述证明文件进行验证”,可以包括:

根据验证程序,对所述证明文件进行信息隐藏验证;

或者,

根据验证程序,对所述证明文件进行信息条件验证。

具体地,所述根据验证程序,对所述证明文件进行信息隐藏验证,可以包括:

根据验证程序,通过验证第一公式,对所述证明文件进行信息隐藏验证;

其中,所述第一公式为:

hash(x+d)==h;

其中,h为所述可验证声明转化后的二进制数据计算的哈希值,是公开可信信息;d是所述证明终端在所述证明文件中对转化为二进制数据的可验证声明公开的信息,x为所述证明终端在所述证明文件中对转化为二进制数据的可验证声明隐藏的隐私信息。

举例来说,假设a为所述可信任第三方终端,a的分布式身份标识为did_a,b为证明终端,b的布式身份标识为did_b,c为验证终端,c的分布式身份标识为did_c。a给b颁布了一个可验证声明:{"name":"alice","age":"024","sex":"male","id":"123456"},利用本实施例的根据验证程序,通过验证第一公式,对所述证明文件进行信息隐藏验证,可实现如下验证:c验证b的name为alice,而不获得b其他隐私信息。

假设a给b颁布的可验证声明转化后的二进制数据为:10110110100010101011,该二进制数据计算的哈希值为h,进行信息隐藏验证时所述二进制数据各个字段规定的的排列顺序如下表1所示。

表1

表1中,v是转化为二进制数据的可验证声明的完整信息;x为所述证明终端在所述证明文件中对转化为二进制数据的可验证声明隐藏的隐私信息,这里是将name字段置零后的其他隐藏信息;d是所述证明终端在所述证明文件中对转化为二进制数据的可验证声明公开的信息,这里是保留name字段其他字段置零后可验证声明公开的信息。显然v=x+d,因此验证b的name为alice,不暴露除name外的其他信息,可以转化为验证所述第一公式。

可以理解的是,由于h是可以根据哈希值签名进行验证的,为公开可信信息;所述证明文件相当于证明自己已知x且拥有满足所述第一公式的可验证声明(也就是x+d),从而证明了d在所述证明终端发送的可验证声明中,且没有暴露所述可验证声明中隐藏的隐私信息。

这样,本实施例所述方法能够利用零知识证明,实现在验证经过第三方终端签名背书的身份信息时,只暴露需要验证的信息,而不暴露其他隐私信息,并实现信息有效性的证明,可实现身份信息的信息隐藏验证。

具体地,所述根据验证程序,对所述证明文件进行信息隐藏验证,可以包括:

根据验证程序,通过验证第二公式,对所述证明文件进行信息条件验证;

其中,所述第二公式为:

hash(v)==hands

其中,h为所述可验证声明转化后的二进制数据计算的哈希值,是公开可信信息;v是转化为二进制数据的可验证声明的完整信息,为所述证明终端在所述证明文件中隐藏的隐私信息;s是所述证明终端在所述证明文件中从v中抽取的待验证信息x′要验证的满足条件。

举例来说,假设a为所述可信任第三方终端,a的分布式身份标识为did_a,b为证明终端,b的布式身份标识为did_b,c为验证终端,c的分布式身份标识为did_c。a给b颁布了一个可验证声明:{"name":"alice","age":"024","sex":"male","id":"123456"},利用本实施例的根据验证程序,通过验证第二公式,对所述证明文件进行信息条件验证,可实现如下验证:c验证b的age大于18,且不获得b的可验证声明全部信息。

假设a给b颁布的可验证声明转化后的二进制数据为:10110110100010101011,该二进制数据计算的哈希值为h,进行信息条件验证时所述二进制数据各个字段规定的的排列顺序如下表2所示。

表2

表2中,v是转化为二进制数据的可验证声明的完整信息,为所述证明终端在所述证明文件中隐藏的隐私信息;s是所述证明终端在所述证明文件中从v中抽取的待验证信息x′要验证的满足条件,即s表示x′>d′这一条件,其中,x′是所述证明终端在所述证明文件中从v中抽取的待验证信息,这里是从v中抽取的age字段信息,即:"age":"024";d′表示要验证的满足条件信息,即:"age":"018";验证b的age大于18,不暴露age和其他信息,可以转化为验证所述第二公式。

可以理解的是,由于h是可以根据哈希值签名进行验证的,为公开可信信息;所述证明终端在所述证明文件中要隐藏v的信息x′为从v中抽取的age信息,证明终端b生成的证明文件相当于证明自己已知v满足哈希值验证且v中包含x′,且x′满足大于d′,也就证明了b的age大于18,同时没有暴露age和其他信息。

这样,本实施例所述方法能够利用零知识证明,实现在验证经过第三方终端签名背书的身份信息是否满足某一条件时,不暴露可验证声明中的任何信息,实现条件满足的证明,可实现身份信息的信息条件验证。

本实施例提供的基于分布式身份标识的零知识证明方法,能够利用零知识证明,实现对分布式身份标识所对应的可验证声明进行信息验证,可实现身份信息的信息条件验证以及实现身份信息的信息条件验证;能够对所有可用数学逻辑表达的问题进行零知识证明,具有广泛的适用性,可以扩展为字符信息中的信息隐藏方案;使用零知识证明,可以减少第三方终端在验证中的参与,第三方终端只需要做好预先的准备工作,后续的证明过程仅需要证明终端和验证终端来完成,实现分布式身份标识的隐私保护;零知识证明作为分布式身份标识的可验证声明使用,可以在验证信息或者数据的时候,把暴露的信息降低到最小,大大提高了对用户数据和信息的隐私保护。

图3示出了本发明另一实施例提供的一种基于分布式身份标识的零知识证明方法的流程示意图,如图3所示,本实施例的基于分布式身份标识的零知识证明方法,包括:

p1、证明终端接收验证终端发送的验证请求。

需要说明的是,本实施例所述方法的执行主体为证明终端。

可以理解的是,在本实施例中涉及的终端包括:验证终端、证明终端和可信任第三方终端,所述验证终端、所述证明终端和所述可信任第三方终端分别具有各自的分布式身份标识(distributedidentity,简称did),所述验证终端、所述证明终端和所述可信任第三方终端三者之间进行通信时,发送的信息/请求均携带有各自的分布式身份标识。

可以理解的是,分布式身份标识是一种可验证的数字身份形式,在区块链系统中,did是一组密码学生成的公私钥密钥对衍生出的地址,它映射了一份用户的数字身份文档,文档中包含了用户自定义可见的个人信息以及获得第三方终端认证的可验证声明,整个文档由用户自己签名背书,证明为某个特定did所有,因而可以作为用户的身份标识。

p2、基于所述验证请求,向所述验证终端发送可验证声明、证明文件、可验证声明的哈希值与签名,以使所述验证终端对所述可验证声明的哈希值与签名以及所述证明文件进行验证,所述可验证声明的哈希值与签名是从所述可信任第三方终端获取的,所述证明文件是根据所述可信任第三方终端公开的可验证声明和证明密钥而生成的。

可以理解的是,可参考图2所示本实施例中零知识证明的验证终端、证明终端和可信任第三方终端的三方关系图,在本步骤之前,所述可信任第三方终端公开了验证公钥、并生成了验证密钥、证明密钥、可验证声明以及可验证声明的哈希值与签名;所述证明终端从可信任第三方终端获取证明密钥、可验证声明以及可验证声明的哈希值与签名,并根据所述可验证声明和证明密钥生成证明文件,然后将所述可验证声明、证明文件、可验证声明的哈希值与签名发送给所述验证终端,以使所述验证终端对所述可验证声明的哈希值与签名以及所述证明文件进行验证,包括:所述验证终端根据验证公钥,对所述可验证声明的哈希值与签名进行验证,若对所述可验证声明的哈希值与签名验证通过,则根据验证程序,对所述证明文件进行验证。

p3、接收所述验证终端发送的验证结果。

可以理解的是,所述验证终端根据验证公钥,对所述可验证声明的哈希值与签名进行验证,在对所述可验证声明的哈希值与签名验证通过时,根据验证程序对所述证明文件进行验证后,会将验证结果发送给证明终端,以实现利用零知识证明,对分布式身份标识所对应的可验证声明进行信息验证。

可以理解的是,零知识简洁非交互式知识证明系统zk-snarks的零知识证明协议是目前使用广泛的一套零知识证明系统,它实现了简洁的非交互式零知识证明,理论上能够对所有可转化为数学逻辑验证的问题进行零知识证明。本实施例是在分布式身份标识引入zk-snarks的零知识证明方案,用于身份信息的保护,能够对所有可用数学逻辑表达的问题进行零知识证明,因而本实施例所述方法具有广泛的适用性;使用零知识证明,可以减少第三方终端在验证中的参与,第三方终端只需要做好预先的准备工作,后续的证明过程仅需要证明终端和验证终端来完成,实现分布式身份标识的隐私保护;零知识证明作为分布式身份标识的可验证声明使用,可以在验证信息或者数据的时候,把暴露的信息降低到最小,大大提高了对用户数据和信息的隐私保护。

本实施例提供的基于分布式身份标识的零知识证明方法,通过证明终端接收验证终端发送的验证请求,基于所述验证请求,向验证终端发送可验证声明、证明文件、可验证声明的哈希值与签名,以使验证终端对可验证声明的哈希值与签名以及证明文件进行验证,所述可验证声明的哈希值与签名是从所述可信任第三方终端获取的,所述证明文件是根据所述可信任第三方终端公开的可验证声明和证明密钥而生成的,接收验证终端发送的验证结果,由此,可实现利用零知识证明,对分布式身份标识所对应的可验证声明进行信息验证,可以在验证信息或者数据的时候,把暴露的信息降低到最小,大大提高了对用户数据和信息的隐私保护。

图4示出了本发明一实施例提供的一种验证终端的结构示意图,如图4所示,本实施例的验证终端,包括:第一发送模块41、第一接收模块42、第一验证模块43和第二验证模块44;其中:

所述第一发送模块41,用于向证明终端发送验证请求;

所述第一接收模块42,用于接收所述证明终端基于所述验证请求返回的可验证声明、证明文件、可验证声明的哈希值与签名,所述可验证声明的哈希值与签名是可信任第三方终端发送给所述证明终端的,所述证明文件是所述证明终端根据所述可信任第三方终端公开的可验证声明和证明密钥而生成的;

所述第一验证模块43,用于根据验证公钥,对所述可验证声明的哈希值与签名进行验证,所述验证公钥是从所述可信任第三方终端获取的;

所述第二验证模块44,用于若对所述可验证声明的哈希值与签名验证通过,则根据验证程序,对所述证明文件进行验证,将验证结果发送给证明终端,所述验证程序是根据从所述可信任第三方终端获取的验证密钥而生成的;

其中,所述验证终端、所述证明终端和所述可信任第三方终端分别具有各自的分布式身份标识。

具体地,所述第一发送模块41向证明终端发送验证请求;所述第一接收模块42接收所述证明终端基于所述验证请求返回的可验证声明、证明文件、可验证声明的哈希值与签名,所述可验证声明的哈希值与签名是可信任第三方终端发送给所述证明终端的,所述证明文件是所述证明终端根据所述可信任第三方终端公开的可验证声明和证明密钥而生成的;所述第一验证模块43根据验证公钥,对所述可验证声明的哈希值与签名进行验证,所述验证公钥是从所述可信任第三方终端获取的;所述第二验证模块44若对所述可验证声明的哈希值与签名验证通过,则根据验证程序,对所述证明文件进行验证,将验证结果发送给证明终端,所述验证程序是根据从所述可信任第三方终端获取的验证密钥而生成的;其中,所述验证终端、所述证明终端和所述可信任第三方终端分别具有各自的分布式身份标识。

可以理解的是,在本实施例中涉及的终端包括:验证终端、证明终端和可信任第三方终端,所述验证终端、所述证明终端和所述可信任第三方终端分别具有各自的分布式身份标识(distributedidentity,简称did),所述验证终端、所述证明终端和所述可信任第三方终端三者之间进行通信时,发送的信息/请求均携带有各自的分布式身份标识。

可以理解的是,分布式身份标识是一种可验证的数字身份形式,在区块链系统中,did是一组密码学生成的公私钥密钥对衍生出的地址,它映射了一份用户的数字身份文档,文档中包含了用户自定义可见的个人信息以及获得第三方终端认证的可验证声明,整个文档由用户自己签名背书,证明为某个特定did所有,因而可以作为用户的身份标识。

可以理解的是,可参考图2所示本实施例中零知识证明的验证终端、证明终端和可信任第三方终端的三方关系图,在执行所述第一接收模块42之前,所述可信任第三方终端生成了证明密钥、可验证声明以及可验证声明的哈希值与签名;所述证明终端从可信任第三方终端获取了证明密钥、可验证声明以及可验证声明的哈希值与签名,并根据所述可验证声明和证明密钥生成证明文件。

可以理解的是,可验证声明是由第三方终端签名背书过的用户信息,通过对用户信息字段进行哈希hash转换,将得到的hash值由第三方终端进行签名背书,日常生活中的许多信息可以转换为此类可验证声明,如公安局背书的身份信息、公司背书的工作经历信息、学校背书的学历信息、银行背书的信用评估信息等等。这些可验证声明可以自行组合成不同的身份文档,用于用户身份的验证和相关信息的检验,其中提到的第三方终端在分布式系统中也是以did的方式来标识。

可以理解的是,可参考图2所示本实施例中零知识证明的验证终端、证明终端和可信任第三方终端的三方关系图,在执行所述第一验证模块43之前,所述可信任第三方终端公开了验证公钥,验证终端根据从所述可信任第三方终端获取的验证公钥,对所述可验证声明的哈希值与签名进行验证。

可以理解的是,可参考图2所示本实施例中零知识证明的验证终端、证明终端和可信任第三方终端的三方关系图,在执行所述所述第二验证模块44之前,所述可信任第三方终端生成了验证密钥;验证终端根据从所述可信任第三方终端获取的验证密钥生成验证程序,在对所述可验证声明的哈希值与签名验证通过时,验证终端根据所述验证程序,对所述证明文件进行验证,将验证结果发送给证明终端,以实现利用零知识证明,对分布式身份标识所对应的可验证声明进行信息验证。

可以理解的是,零知识简洁非交互式知识证明系统zk-snarks的零知识证明协议是目前使用广泛的一套零知识证明系统,它实现了简洁的非交互式零知识证明,理论上能够对所有可转化为数学逻辑验证的问题进行零知识证明。本实施例是在分布式身份标识引入zk-snarks的零知识证明方案,用于身份信息的保护,能够对所有可用数学逻辑表达的问题进行零知识证明,因而本实施例所述方法具有广泛的适用性;使用零知识证明,可以减少第三方终端在验证中的参与,第三方终端只需要做好预先的准备工作,后续的证明过程仅需要证明终端和验证终端来完成,实现分布式身份标识的隐私保护;零知识证明作为分布式身份标识的可验证声明使用,可以在验证信息或者数据的时候,把暴露的信息降低到最小,大大提高了对用户数据和信息的隐私保护。

本实施例提供的验证终端,可实现利用零知识证明,对分布式身份标识所对应的可验证声明进行信息验证,可以在验证信息或者数据的时候,把暴露的信息降低到最小,大大提高了对用户数据和信息的隐私保护。

进一步地,在上述实施例的基础上,所述第二验证模块44中的“根据验证程序,对所述证明文件进行验证”,可以包括:

根据验证程序,对所述证明文件进行信息隐藏验证;

或者,

根据验证程序,对所述证明文件进行信息条件验证。

具体地,所述根据验证程序,对所述证明文件进行信息隐藏验证,可以包括:

根据验证程序,通过验证第一公式,对所述证明文件进行信息隐藏验证;

其中,所述第一公式为:

hash(x+d)==h;

其中,h为所述可验证声明转化后的二进制数据计算的哈希值,是公开可信信息;d是所述证明终端在所述证明文件中对转化为二进制数据的可验证声明公开的信息,x为所述证明终端在所述证明文件中对转化为二进制数据的可验证声明隐藏的隐私信息。

举例来说,假设a为所述可信任第三方终端,a的分布式身份标识为did_a,b为证明终端,b的布式身份标识为did_b,c为验证终端,c的分布式身份标识为did_c。a给b颁布了一个可验证声明:{"name":"alice","age":"024","sex":"male","id":"123456"},利用本实施例的根据验证程序,通过验证第一公式,对所述证明文件进行信息隐藏验证,可实现如下验证:c验证b的name为alice,而不获得b其他隐私信息。

假设a给b颁布的可验证声明转化后的二进制数据为:10110110100010101011,该二进制数据计算的哈希值为h,进行信息隐藏验证时所述二进制数据各个字段规定的的排列顺序可参见图1所示实施例中的表1。表1中,v是转化为二进制数据的可验证声明的完整信息;x为所述证明终端在所述证明文件中对转化为二进制数据的可验证声明隐藏的隐私信息,这里是将name字段置零后的其他隐藏信息;d是所述证明终端在所述证明文件中对转化为二进制数据的可验证声明公开的信息,这里是保留name字段其他字段置零后可验证声明公开的信息。显然v=x+d,因此验证b的name为alice,不暴露除name外的其他信息,可以转化为验证所述第一公式。

可以理解的是,由于h是可以根据哈希值签名进行验证的,为公开可信信息;所述证明文件相当于证明自己已知x且拥有满足所述第一公式的可验证声明(也就是x+d),从而证明了d在所述证明终端发送的可验证声明中,且没有暴露所述可验证声明中隐藏的隐私信息。

这样,本实施例所述验证终端能够利用零知识证明,实现在验证经过第三方终端签名背书的身份信息时,只暴露需要验证的信息,而不暴露其他隐私信息,并实现信息有效性的证明,可实现身份信息的信息隐藏验证。

具体地,所述根据验证程序,对所述证明文件进行信息隐藏验证,可以包括:

根据验证程序,通过验证第二公式,对所述证明文件进行信息条件验证;

其中,所述第二公式为:

hash(v)==hands

其中,h为所述可验证声明转化后的二进制数据计算的哈希值,是公开可信信息;v是转化为二进制数据的可验证声明的完整信息,为所述证明终端在所述证明文件中隐藏的隐私信息;s是所述证明终端在所述证明文件中从v中抽取的待验证信息x′要验证的满足条件。

举例来说,假设a为所述可信任第三方终端,a的分布式身份标识为did_a,b为证明终端,b的布式身份标识为did_b,c为验证终端,c的分布式身份标识为did_c。a给b颁布了一个可验证声明:{"name":"alice","age":"024","sex":"male","id":"123456"},利用本实施例的根据验证程序,通过验证第二公式,对所述证明文件进行信息条件验证,可实现如下验证:c验证b的age大于18,且不获得b的可验证声明全部信息。

假设a给b颁布的可验证声明转化后的二进制数据为:10110110100010101011,该二进制数据计算的哈希值为h,进行信息条件验证时所述二进制数据各个字段规定的的排列顺序可参见图1所示实施例中的表2。表2中,v是转化为二进制数据的可验证声明的完整信息,为所述证明终端在所述证明文件中隐藏的隐私信息;s是所述证明终端在所述证明文件中从v中抽取的待验证信息x′要验证的满足条件,即s表示x′>d′这一条件,其中,x′是所述证明终端在所述证明文件中从v中抽取的待验证信息,这里是从v中抽取的age字段信息,即:"age":"024";d′表示要验证的满足条件信息,即:"age":"018";验证b的age大于18,不暴露age和其他信息,可以转化为验证所述第二公式。

可以理解的是,由于h是可以根据哈希值签名进行验证的,为公开可信信息;所述证明终端在所述证明文件中要隐藏v的信息x′为从v中抽取的age信息,s表示x′>d′这一条件,证明终端b生成的证明文件相当于证明自己已知v满足哈希值验证且v中包含x′,且x′满足大于d′,也就证明了b的age大于18,同时没有暴露age和其他信息。

这样,本实施例所述验证终端,能够利用零知识证明,实现在验证经过第三方终端签名背书的身份信息是否满足某一条件时,不暴露可验证声明中的任何信息,实现条件满足的证明,可实现身份信息的信息条件验证。

本实施例提供的验证终端,能够利用零知识证明,实现对分布式身份标识所对应的可验证声明进行信息验证,可实现身份信息的信息条件验证以及实现身份信息的信息条件验证;能够对所有可用数学逻辑表达的问题进行零知识证明,具有广泛的适用性,可以扩展为字符信息中的信息隐藏方案;使用零知识证明,可以减少第三方终端在验证中的参与,第三方终端只需要做好预先的准备工作,后续的证明过程仅需要证明终端和验证终端来完成,实现分布式身份标识的隐私保护;零知识证明作为分布式身份标识的可验证声明使用,可以在验证信息或者数据的时候,把暴露的信息降低到最小,大大提高了对用户数据和信息的隐私保护。

本发明实施例提供的验证终端,可以用于执行前述图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

图5示出了本发明一实施例提供的一种证明终端的结构示意图,如图5所示,本实施例的证明终端,包括:第二接收模块51、第二发送模块52和第三接收模块53;其中:

所述第二接收模块51,用于接收验证终端发送的验证请求;

所述第二发送模块52,用于基于所述验证请求,向所述验证终端发送可验证声明、证明文件、可验证声明的哈希值与签名,以使所述验证终端对所述可验证声明的哈希值与签名以及所述证明文件进行验证,所述可验证声明的哈希值与签名是从所述可信任第三方终端获取的,所述证明文件是根据所述可信任第三方终端公开的可验证声明和证明密钥而生成的;

所述第三接收模块53,用于接收所述验证终端发送的验证结果;

其中,所述验证终端、所述证明终端和所述可信任第三方终端分别具有各自的分布式身份标识。

所述第二接收模块51接收验证终端发送的验证请求;所述第二发送模块52基于所述验证请求,向所述验证终端发送可验证声明、证明文件、可验证声明的哈希值与签名,以使所述验证终端对所述可验证声明的哈希值与签名以及所述证明文件进行验证,所述可验证声明的哈希值与签名是从所述可信任第三方终端获取的,所述证明文件是根据所述可信任第三方终端公开的可验证声明和证明密钥而生成的;所述第三接收模块53接收所述验证终端发送的验证结果;其中,所述验证终端、所述证明终端和所述可信任第三方终端分别具有各自的分布式身份标识。

可以理解的是,在本实施例中涉及的终端包括:验证终端、证明终端和可信任第三方终端,所述验证终端、所述证明终端和所述可信任第三方终端分别具有各自的分布式身份标识(distributedidentity,简称did),所述验证终端、所述证明终端和所述可信任第三方终端三者之间进行通信时,发送的信息/请求均携带有各自的分布式身份标识。

可以理解的是,分布式身份标识是一种可验证的数字身份形式,在区块链系统中,did是一组密码学生成的公私钥密钥对衍生出的地址,它映射了一份用户的数字身份文档,文档中包含了用户自定义可见的个人信息以及获得第三方终端认证的可验证声明,整个文档由用户自己签名背书,证明为某个特定did所有,因而可以作为用户的身份标识。

可以理解的是,可参考图2所示本实施例中零知识证明的验证终端、证明终端和可信任第三方终端的三方关系图,在执行所述第二发送模块52之前,所述可信任第三方终端公开了验证公钥、并生成了验证密钥、证明密钥、可验证声明以及可验证声明的哈希值与签名;所述证明终端从可信任第三方终端获取证明密钥、可验证声明以及可验证声明的哈希值与签名,并根据所述可验证声明和证明密钥生成证明文件,然后将所述可验证声明、证明文件、可验证声明的哈希值与签名发送给所述验证终端,以使所述验证终端对所述可验证声明的哈希值与签名以及所述证明文件进行验证,包括:所述验证终端根据验证公钥,对所述可验证声明的哈希值与签名进行验证,若对所述可验证声明的哈希值与签名验证通过,则根据验证程序,对所述证明文件进行验证。

可以理解的是,所述验证终端根据验证公钥,对所述可验证声明的哈希值与签名进行验证,在对所述可验证声明的哈希值与签名验证通过时,根据验证程序对所述证明文件进行验证后,会将验证结果发送给证明终端,以实现利用零知识证明,对分布式身份标识所对应的可验证声明进行信息验证。

可以理解的是,零知识简洁非交互式知识证明系统zk-snarks的零知识证明协议是目前使用广泛的一套零知识证明系统,它实现了简洁的非交互式零知识证明,理论上能够对所有可转化为数学逻辑验证的问题进行零知识证明。本实施例是在分布式身份标识引入zk-snarks的零知识证明方案,用于身份信息的保护,能够对所有可用数学逻辑表达的问题进行零知识证明,因而本实施例所述方法具有广泛的适用性;使用零知识证明,可以减少第三方终端在验证中的参与,第三方终端只需要做好预先的准备工作,后续的证明过程仅需要证明终端和验证终端来完成,实现分布式身份标识的隐私保护;零知识证明作为分布式身份标识的可验证声明使用,可以在验证信息或者数据的时候,把暴露的信息降低到最小,大大提高了对用户数据和信息的隐私保护。

本实施例提供的证明终端,可实现利用零知识证明,对分布式身份标识所对应的可验证声明进行信息验证,可以在验证信息或者数据的时候,把暴露的信息降低到最小,大大提高了对用户数据和信息的隐私保护。

本发明实施例提供的证明终端,可以用于执行前述图3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。

图6示出了本发明一实施例提供的一种电子设备的实体结构示意图,如图6所示,该电子设备可以包括存储器602、处理器601及存储在存储器602上并可在处理器601上运行的计算机程序,所述处理器601执行所述程序时实现上述方法的步骤,例如包括:验证终端向证明终端发送验证请求;接收所述证明终端基于所述验证请求返回的可验证声明、证明文件、可验证声明的哈希值与签名,所述可验证声明的哈希值与签名是可信任第三方终端发送给所述证明终端的,所述证明文件是所述证明终端根据所述可信任第三方终端公开的可验证声明和证明密钥而生成的;根据验证公钥,对所述可验证声明的哈希值与签名进行验证,所述验证公钥是从所述可信任第三方终端获取的;若对所述可验证声明的哈希值与签名验证通过,则根据验证程序,对所述证明文件进行验证,将验证结果发送给证明终端,所述验证程序是根据从所述可信任第三方终端获取的验证密钥而生成的;其中,所述验证终端、所述证明终端和所述可信任第三方终端分别具有各自的分布式身份标识;或者,包括:证明终端接收验证终端发送的验证请求;基于所述验证请求,向所述验证终端发送可验证声明、证明文件、可验证声明的哈希值与签名,以使所述验证终端对所述可验证声明的哈希值与签名以及所述证明文件进行验证,所述可验证声明的哈希值与签名是从所述可信任第三方终端获取的,所述证明文件是根据所述可信任第三方终端公开的可验证声明和证明密钥而生成的;接收所述验证终端发送的验证结果;其中,所述验证终端、所述证明终端和所述可信任第三方终端分别具有各自的分布式身份标识。

本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法的步骤,例如包括:验证终端向证明终端发送验证请求;接收所述证明终端基于所述验证请求返回的可验证声明、证明文件、可验证声明的哈希值与签名,所述可验证声明的哈希值与签名是可信任第三方终端发送给所述证明终端的,所述证明文件是所述证明终端根据所述可信任第三方终端公开的可验证声明和证明密钥而生成的;根据验证公钥,对所述可验证声明的哈希值与签名进行验证,所述验证公钥是从所述可信任第三方终端获取的;若对所述可验证声明的哈希值与签名验证通过,则根据验证程序,对所述证明文件进行验证,将验证结果发送给证明终端,所述验证程序是根据从所述可信任第三方终端获取的验证密钥而生成的;其中,所述验证终端、所述证明终端和所述可信任第三方终端分别具有各自的分布式身份标识;或者,包括:证明终端接收验证终端发送的验证请求;基于所述验证请求,向所述验证终端发送可验证声明、证明文件、可验证声明的哈希值与签名,以使所述验证终端对所述可验证声明的哈希值与签名以及所述证明文件进行验证,所述可验证声明的哈希值与签名是从所述可信任第三方终端获取的,所述证明文件是根据所述可信任第三方终端公开的可验证声明和证明密钥而生成的;接收所述验证终端发送的验证结果;其中,所述验证终端、所述证明终端和所述可信任第三方终端分别具有各自的分布式身份标识。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1