一种基于零知识证明的可监管匿名认证方法与流程

文档序号:17070388发布日期:2019-03-08 23:16阅读:1428来源:国知局

本发明涉及一种基于零知识证明的可监管匿名认证方法。



背景技术:

传统的身份认证技术主要用于用户在向验证者证明自己是合法用户,可广泛应用于通信、金融、社交等领域。然而,现有认证技术未考虑用户的身份隐私保护的问题,在进行认证时,用户可能过度暴露自己的信息,从而导致信息泄露或遭到窃取。因此,需要采用匿名认证技术来保护用户的身份隐私。

匿名认证技术主要采用密码学的技术手段来保证用户的隐私安全,如ibm提出的identitymixer方案,提供了匿名的认证方法,且用户在认证时可以自主选择出示属性,该类方案虽然克服了传统x.509证书方案全属性暴露的问题,但存在一定的缺陷,即用户的身份无法监管,一旦出现欺诈行为,即使是ca(可信中心)也无法追踪到用户的真实身份。



技术实现要素:

为了克服现有技术的上述缺点,本发明提供了一种基于零知识证明的可监管匿名认证方法,针对传统认证体制中用户身份、属性信息过度暴露的问题,采用匿名认证的技术手段保护用户的身份隐私,同时采用灵活的认证策略,使用户可以选择出示证书中的属性,避免过度暴露信息;针对匿名认证中无法监管的问题,结合群签名的技术手段使ca能够对用户的身份信息进行监管,避免失信行为的发生。

本发明解决其技术问题所采用的技术方案是:一种基于零知识证明的可监管匿名认证方法,包括ca、用户和验证者三类参与方,其中:ca生成发行方密钥对和群密钥,在用户进行注册时ca为其分配一对私钥,同时ca根据用户提交的属性信息为用户颁发相关的证书;在用户出示证书时,验证者指定用户证书上需要出示的属性,用户对证书进行签名,同时隐藏无需出示的属性值;验证者对签名进行验证,若签名通过验证,则用户出示的证书有效,否则,用户出示的证书无效。

与现有技术相比,本发明的积极效果是:

1、匿名性

改进方案在增加强制监管功能的同时还保证了用户的匿名性,相比一般身份监管方案,极大保护了用户的身份隐私。同时,用户在交易时,只需出示相应的属性值,对无需出示的属性值可以在证书中进行隐藏,符合用户的隐私保护需求。

2、可监管性

相比其他匿名认证方案,增加了可监管的功能,ca可以为群内用户分配密钥,并通过追踪密钥追踪用户的身份,改进方案在原来用户出示证书的部分增加了群签名方案中的零知识证明技术,验证者在验证证书的同时也验证了用户匿名身份信息的正确性,如果出现争端,ca可追踪到用户的身份,因此改进的方案具有强制监管的作用。

具体实施方式

本发明结合零知识证明、群签名方案等密码学技术设计出一种基于属性的可监管匿名认证方法,解决了传统认证体制中用户身份隐私保护不足和无法监管的问题。

一、方案概述

方法包括三类参与方,ca(可信中心),用户和验证者。系统建立后,ca产生发行密钥对,追踪密钥以及群公钥。然后用户进行注册,ca为其分配一对私钥,同时ca根据用户提交的属性信息为用户颁发相关的证书。在用户出示证书时,验证者可指定用户证书上需要出示的属性,用户对证书进行签名,同时隐藏无需出示的属性值。验证者可对签名进行验证,若签名通过验证,则用户出示的证书有效,否则,用户出示的证书无效。

一个完整的可监管idmixer方案包含以下过程:

1.生成发行方密钥对(isk,ipk)←(1λ)

输入安全参数1λ,其中λ为某一长度的大整数,输出ca(发行方)的密钥对(isk,ipk),其中isk为ca的私钥,ipk为ca的公钥。发行方密钥对用于生成和验证用户的证书。

2.生成群密钥(tk,gpk)←(1λ)

输入安全参数1λ,输出追踪密钥tk和群公钥gpk。追踪密钥由ca保存,用于从匿名证书中追踪用户的身份,群公钥用于出示和验证证书。

3.用户注册(sk)←(isk)

输入ca的私钥isk,输出用户私钥sk。用户私钥用于出示证书,ca也保存用户的私钥,在身份追踪时会将计算结果与用户的私钥比对进而确定用户身份。

4.证书请求(certqst)←(sk,issuernonce)

输入用户秘密值sk和ca发送给用户的随机数issuernonce,输出证书请求certqst。用户将证书请求和属性值发送给ca,ca先对请求进行验证,若验证通过,则生成证书;否则,拒绝用户的请求。

5.生成证书(cert)←(isk,ipk,certqst,attr)

输入ca的密钥对(isk,ipk),证书请求certqst,用户属性值attr,输出用户的证书cert。ca将证书发送给用户,用户进行验证,若通过验证,则证书有效,用户在本地存储证书;否则,证书无效。

6.出示证书(sig)←(sk,sk,ipk,gpk,attr,cert)

输入用户私钥sk,用户秘密值sk,发行方公钥ipk,群公钥gpk,属性值attr,用户证书cert,输出一个签名sig。在出示证书时,验证者可指定用户需要出示的属性值,签名只暴漏需要出示的属性值,用户可在证书上对无需出示的属性值进行隐藏。然后验证者对签名进行验证,若通过验证,则出示的证书有效,否则出示的证书无效。

7.身份追踪(sk)←(sig,tk)

输入出示的证书sig,ca的追踪密钥tk,输出匿名证书所对应的用户的私钥sk,ca将私钥和群内用户的私钥进行比对,从而追踪到用户的真实身份。

二、方案符号

下表为方案中变量与对应的取值范围和变量在方案中的作用。

三、具体方案

1.发行方密钥对生成:

设g1,g2为阶数为p的椭圆曲线加法循环群,gt为阶数为p的椭圆曲线乘法循环群,zp为阶数为p的整数群,p1为群g1的生成元,p2为群g2的生成元,存在可计算的双线性对e:g1×g2→gt,满足:

(1)双线性。对于任意u1∈g1,u2∈g2,任意整数a,b∈zp,都有e(au1,bu2)=e(abu1,u2)=e(u1,abu2)=e(u1,u2)ab

(2)非退化性。e(p1,p2)≠1。

ca选择随机数r∈zp,属性名attrname=[name1,...namek],其长度为len(attrname)=k,namei为字符串,ca通过属性名列表定义属性结构。

isk=r∈zp,pk=r·p2∈g2,attrname=[name1,...namek],随机选择整数r′1,r′2,...,r′k∈zp,计算一组长度为k的随机数hattr={r′1·p1,..,r′k·p1}∈g1,然后随机选择整数r1,r2,r3∈zp,计算hsk=r1·p1∈g1,hrand=r2·p1∈g1,

然后计算关于发行方私钥isk的零知识证明

zk{isk:

计算为随机整数

计算

计算

}

输出发行方密钥对

isk=r,

验证零知识证明:

计算

计算

计算

判断cr′=cr是否成立。

若公式成立,则发行方密钥正确,否则发行方密钥不正确。

2.生成群密钥

随机选择整数ξ1,ξ2∈z,令h=(ξ1ξ2)·p1∈g1,u=ξ2·p1∈g1,v=∈ξ1·p1∈g1,则有h=ξ1·u=ξ2·v。ca设置群追踪密钥为tk=(ξ1,ξ2),群公钥为gpk=(u,v,h)。

3.用户注册

对于用户i,ca随机选择整数x∈z,计算则用户的私钥为sk=(k,x),同时ca将用户的私钥sk和对应的身份存储到一个表中。

4.证书请求

用户选择一个随机整数sk∈zp作为自己的秘密值,然后随机选择整数r4∈zp,计算假名nym=sk·hsk+r4·hrand,然后计算关于秘密值sk和随机数r4的零知识证明

zk{sk,r4:

计算t=rs·hsk+rd·hrand,其中rs和rd为随机整数。

计算csk=h(t,hsk,nym,issuernonce),

其中issuernonce为ca发送给用户的随机数,

计算s1=rs+csk·sk,

计算s2=rd+csk·r4.

}

输出证书请求certqst={nym,issuernonce,csk,s1,s2}。

ca可验证证书请求是否正确(验证零知识证明):

计算t″=s1·hsk+s2·hrand,

计算t′=t″-csk·nym,

计算csk′=h(t′,hsk,nym,issuernonce),

然后判断csk′=csk是否成立。

若公式成立,则用户证书请求正确,否则用户证书请求不正确。

5.生成证书

ca选择随机整数e,s∈zp,然后计算b1=p1+nym+s·hrand∈g1,设用户提交的属性值为attr=[attr1,...attrk]∈zp,则ca先计算然后计算签名最后得到证书cert={a,b,e,s,attr},证书中包含一个签名,产生签名的随机数以及用户的属性值。

6.验证证书

用户在交易时,需要出示证书,验证者可指定需要出示的属性值,用户对需要隐藏的属性值的下标进行标记,hiddenindices=[i1,...il],其中ii为需要隐藏属性值的下标。用户先随机选择一个整数rn∈zp,计算一个新的假名nymr=sk·hsk+rn·hrand∈g1,然后随机选择整数对证书中的签名随机化,计算用户随机选择整数α,β∈zp,计算两个辅助值δ1=xα,δ2=xβ,然后计算关于用户私钥x,秘密值sk和随机数e,s,α,β,δ1,δ2的零知识证明:

随机选择整数rsk,re,rl1,rl2,rsp,rnr∈zp,

计算t1=re·a′+rl1·hrand,

计算t′2=rsp·hrand+rl2·b′+rsk·hsk,

计算t2=t′2+∑i∈hiddenindicesattri·hattri,

计算t3=rsk·hsk+rnr·hrand,

随机选择整数rα,rβ,rx,rδ1,rδ2∈z,计算

计算t1=α·u,t2=β·v,t3=k+(α+β)·h,

计算r1=rα·u,r2=rβ·v,

计算

计算

设签名的消息为m∈{0,1}*,用户产生一个随机数nonce∈zp,然后

计算

计算c=h(ch,nonce),

计算ssk=rsk+c·sk,

计算se=re-c·e,

计算

计算

计算ssp=rsp+c·sp,

计算snr=rnr+c·rn,

计算sα=rα+c·α,

计算sβ=rβ+c·β,

计算sx=rx+c·x,

计算

计算

为一组随机整数,

对于隐藏的属性值集合i∈hiddenindices,计算

}

最终,用户出示的匿名证书(签名)为

验证者可对签名进行验证,首先计算双线性对e(pk,a′),则签名格式正确,然后验证零知识证明,

计算

计算

计算

计算

需要出示的属性值下标集合记为disclosure=[i1,...ik-l],

计算t′2=t″2+c(p1+∑i∈disclosureattri·hattri),

计算t″3=ssk·hsk+snr·hrand,

计算t′3=t″3-c·nymr,

训算r′1=sα·u-c·t1,r′2=sβ·v-c·t2,

计算

·(e(t3,pk)/e(g1,g2))c

计算

计算

计算c′=h(ch′,nonce),

最后判断c′=c是否成立。

若公式成立,则用户出示的证书有效,否则用户出示的证书无效。

7.身份追踪

若出现争端,验证者可将用户出示的证书sig发送给发行方或ca,请求仲裁。ca利用追踪密钥tk=(ξ1,ξ2)进行解密,

计算k′=t3-(ξ1·t1+ξ2·t2),

然后查找对比用户私钥的列表,最终追踪到用户的身份。

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