发明内容
针对现有技术中存在的不足,本发明的目的在于设计出安全有效的无证书盲环签名方法,通过准确分析攻击者的攻击能力以及根据实际需要应达到的安全性目标,提出了一种可证明安全的无证书盲环签名方法。
本发明的技术方案是这样实现的:无证书盲环签名方法,包括如下步骤:
1)系统参数产生算法;
2)部分私钥生成算法;
3)用户公私钥生成算法;
4)盲环签名生成算法;
5)盲环签名验证算法。
上述无证书盲环签名方法,所述的系统参数产生算法的产生过程为:输入安全参数k,系统参数产生算法产生系统公开参数params以及相应的系统主公私钥对(mpk,msk),其中系统主私钥mpk是公开的,而系统公私钥msk则是保密的。
上述无证书盲环签名方法,所述的部分私钥生成算法的产生过程为:输入系统公开参数params、系统主私钥msk和用户的身份ID,密钥生成中心KGC首先计算出用户身份的哈希函数值qID,然后计算用户的部分私钥DID,并将部分私钥DID发送给用户。
上述无证书盲环签名方法,所述的用户公私钥生成算法的产生过程为:用户ID在获取部分私钥DID后,输入系统公开参数params、用户身份ID及用户的部分私钥DID,通过选取随机数并计算得到用户的公私钥对(RID,SID)。
上述无证书盲环签名方法,所述的盲环签名生成算法由以下几个步骤构成:设签名人与用户已协商好的公共信息为c,待签消息为m,给定盲环签名中n个环成员列表为L={ID1,...,IDn},假定环L={ID1,...,IDn}中实际进行签名的签名人身份为IDA(A∈1,...,n),用户和签名人通过如下交互过程产生有效的盲环签名:
1)签名人随机选取参数,计算交互参数并将交互参数发送给用户;
2)盲化:用户随机选取盲化因子,并将通过盲化计算后的交互参数发送给签名人;
3)签名:签名人利用其私钥对接收到的结果进行签名,并将其发送给用户;
4)去盲:用户利用盲化因子并通过计算,产生签名消息m的盲环签名σ。
上述无证书盲环签名方法,所述的盲环签名验证算法的验证过程为:盲环签名验证者在获取无证书盲环签名后,首先利用签名消息m、n个环成员的身份L={ID1,...,IDn}以及盲环签名σ计算出其哈希函数值h′;输入系统公开参数params,环成员身份L={ID1,...,IDn}以及环成员的公钥、公共信息c、消息m和盲环签名σ;然后验证等式是否成立,如果盲环签名σ是一个有效的盲环签名,则输出True;否则,输出False,从而判定盲环签名σ是否为一个有效的无证书盲环签名。
上述无证书盲环签名方法,在系统参数产生算法中,给定安全参数k,KGC执行如下步骤产生系统参数:
1)选取阶为素数q的循环群G、GT,P是群G的生成元,e:G×G→GT是一个双线性映射;
3)选取3个哈希函数
则系统公开参数为params=(G,GT,q,e,g,P,Ppub,H1,H2,H3),系统主公私钥为mpk=ppub、msk=s。
上述无证书盲环签名方法,在部分私钥生成算法中,给定用户身份ID,KGC首先计算qID=H1(ID),然后计算用户的部分私钥DID=(s+qID)-1P,并通过安全信道将其发送给用户。
上述无证书盲环签名方法,在用户公私钥生成算法中,用户在获取其部分私钥D
ID后,随机选取
计算Q
ID=P
pub+H
1(ID)P,R
ID=x
IDQ
ID,y
ID=H
3(R
ID),S
ID=(x
ID+y
ID)
-1D
ID,则用户的公私钥对为(R
ID,S
ID)。
上述无证书盲环签名方法,在盲环签名生成算法中,每假设L={ID1,...,IDn}为盲环签名中n个成员身份的集合,用户想要得到关于环L在消息m上的盲环签名,环L中实际进行签名的签名人身份为IDA(A∈1,...,n),则通过如下交互过程产生有效的盲环签名:
1)签名人随机选取x∈Zq,计算r=gx,U=x(RID+yIDQID),随机选取ai∈Zq,i∈1,...,n,i≠A,计算Vi=aiP, 然后将r,U,u,Vi(i∈1,...,n,i≠A)发送给用户;
2)盲化:用户随机选择α,β∈Zq,计算r′=rαgαβ,U′=αU,h=α-1H2(m,L,r′)+β,然后将h发送给签名人;
4)解盲:用户计算VA=αS,输出最终的盲环签名为σ=(m,u,r′,U′,V1,...,Vn);
在盲环签名验证算法中,给定盲环签名σ=(m,u,r′,U′,V1,...,Vn),验证者先计算h'=H2(m,L,r'),若等式 成立,则盲环签名σ是一个有效的盲环签名。
本发明无证书盲环签名方法的安全性证明包括以下三方面的安全性证明:1)盲性安全性证明;2)匿名性安全性证明;2)存在不可伪造性安全性证明。
所述的系统参数生成算法包含实现本发明方法所用的双线性映射、无碰撞哈希函数、系统公开参数以及系统主公私钥的定义。
所述的方法安全性证明是通过对方法本身的安全性分析以及通过模拟敌手和挑战者之间的攻击过程,采用一定的规约方法利用规约证明从而证明该方法满足相应的安全性目标。
本发明的有益效果是:本发明在无证书公钥密码体制下所设计的盲环签名方法,开辟了构造无证书盲环签名的新途径和新方法,实现了无证书公钥密码体制与具有特殊属性性质的签名技术的有效结合,同时通过对该发明方法的安全性证明,证明本发明所提出的方法确实是安全可靠的。
本发明通过使用双线性映射技术【双线性映射构造于两个同阶且其上离散对数问题是困难问题的循环群G,GT上,同时该映射是满足双线性、非退化性和可计算性的一个映射】,基于k-CAA困难问题和mICDH困难问题,从而提出了一种可证明安全的无证书盲环签名方法,因此,本发明方法不仅证明是安全有效的同时也具有重要的现实意义。
具体实施方式
本发明提出一种可证明安全的无证书盲环签名方法,结合附图其实施详细说明如下:
本发明无证书盲环签名方法的工作流程图如图1所示,具体实施步骤为:
1.系统参数产生算法:给定安全参数k,KGC执行如下步骤产生系统参数:
1)选取阶为素数q的循环群G、GT,P是群G的生成元,e:G×G→GT是一个双线性映射;
3)选取3个哈希函数
则系统公开参数为params=(G,GT,q,e,g,P,Ppub,H1,H2,H3),系统主公私钥为mpk=ppub、msk=s,其中系统主私钥mpk是公开的,而系统公私钥msk则是保密的。
2.部分私钥生成算法:给定用户身份ID,输入系统公开参数params、系统主私钥msk和用户的身份ID,,密钥生成中心KGC首先计算出用户身份的哈希函数值qID=H1(ID),然后计算用户的部分私钥DID=(s+qID)-1P,并通过安全信道将部分私钥DID=(s+qID)-1P发送给用户。
3.用户公私钥生成算法:用户ID在获取部分私钥D
ID后,输入系统公开参数params、用户身份ID及用户的部分私钥D
ID,随机选取
计算Q
ID=P
pub+H
1(ID)P,R
ID=x
IDQ
ID,y
ID=H
3(R
ID),S
ID=(x
ID+y
ID)
-1D
ID,则用户的公私钥对为(R
ID,S
ID)。
4.盲环签名生成算法:设签名人与用户已协商好的公共信息为c,待签消息为m,给定盲环签名中n个环成员列表为L={ID1,...,IDn},即假设L={ID1,...,IDn}为盲环签名中n个成员身份的集合,用户想要得到关于环L在消息m上的盲环签名,环L={ID1,...,IDn}中实际进行签名的签名人身份为IDA(A∈1,...,n),则通过如下交互过程产生有效的盲环签名:
1)签名人随机选取参数x∈Z
q,计算交互参数r=g
x,U=x(R
ID+y
IDQ
ID),随机选取a
i∈Z
q,i∈1,...,n,i≠A,计算交互参数V
i=a
iP,
然后将交互参数r,U,u,V
i(i∈1,...,n,i≠A)发送给用户。
2)盲化:用户随机选择盲化因子α,β∈Zq,计算r′=rαgαβ,U′=αU,h=α-1H2(m,L,r')+β,然后将盲化计算后的交互参数h发送给签名人。
3)签名:签名人利用其私钥对接收到的结果进行签名,计算
并将其发送给用户。
4)去盲:用户利用盲化因子计算VA=αS,输出签名消息m的最终的盲环签名为σ=(m,u,r',U',V1,...,Vn)。
5.盲环签名验证算法:给定盲环签名σ=(m,u,r′,U′,V1,...,Vn),验证者先计算h'=H2(m,L,r'),若等式 成立,则σ是一个有效的盲环签名。
本发明所提出的无证书盲环签名方法在面对恶意用户的攻击下,其存在不可伪造性安全性证明如图2所示,具体实施步骤为:
1.假设攻击者A
I能以不可忽略的优势攻击本方案,则存在算法B,B可以利用A
I解决k-CAA问题。给定B一个k-CAA问题的实例
其目标是利用A
I计算出
其中
为此B模仿A
I的挑战者,具体过程如下:
2.系统初始化:算法B根据系统参数生成算法产生系统公开参数params=(G,G
T,q,e,g,P,P
pub,H
1,H
2,H
3),其中g=e(P,P),P
pub=Q=sP,系统主私钥msk=s对B未知,并将公开参数params发送给A
I。B随机选取ID
*=ID
I,
其中
为进行H
1询问的最大次数。
3.询问阶段:假定AI在对部分私钥询问、用户公钥询问、用户私钥询问和签名询问之前已进行H1询问,在对用户私钥询问和签名询问之前已进行用户公钥询问。算法B维护四个列表L1、L2、L3和L4=(ID,RID,xID,c∈(0,1)),它们在开始时都是空表。当攻击者AI发起一定数量的询问时,算法B进行如下响应:
①H
1询问:在询问H
1(ID
i),
时,如果已询问过,则返回
否则,如果ID
i=ID
*,B随机选取
并返回
相反,B返回
然后B计算
并将
添加到列表L
1中。
②H
2询问:在询问H
2(m,L,r')时,如果列表L
2中存在(m,L,r′,h
i),则返回h
i;否则,B随机选取
返回,并把(m,L,r',h
i)添加到列表L
2中。
③H
3询问:在询问
时,如果列表L
3中存在
则返回
否则,B随机选取
返回,并把
添加到列表L
3中。
④部分私钥询问:当询问ID
i的部分私钥时,如果ID
i=ID
*,那么算法B失败并中止模仿过程;如果ID
i≠ID
*,B返回
⑤用户公钥询问:当询问ID
i的公钥时,如果列表L
4中存在
则返回
否则,B先在列表L
1中查询ID
i所对应的
然后随机选取
并计算
最后把
添加到列表L
4中。
⑥用户私钥询问:当询问ID
i的私钥时,如果ID
i=ID
*,那么算法B失败并中止模仿过程;如果ID
i≠ID
*,B先在列表L
4中查询
若c=1并且列表L
3中含有
则B返回
若c=1并且列表L
3中不含有
则B询问
并返回
若c=0,则B从A
I处得到
然后按照上面相同的方法计算并返回
⑦替换公钥询问:当对ID
i进行替换公钥询问时,B令
且c=0,其中
为替换后的公钥,然后在列表L
4中作出相应的修改。
⑧签名询问:当询问消息为m、环为L={ID
1,...,ID
n}的盲环签名时,B先在列表L
1和列表L
4中查询
和
其中i∈(1,...,n)。如果c=1,B先选取A∈(1,...,n),然后在列表L
3中查询
i∈(1,...,n);若
不存在,则B随机选取
并把
添加到列表L
3中;B随机选取
并计算V
i=a
iP,其中i∈(1,...,n),i≠A;B随机选取V
A,U′∈G,
计算
并定义h
A=H
2(m,L,r′),若在列表L
2中已存在H
2(m,L,r'),那么算法B失败并中止模仿过程,否则,B将σ=(m,u,r',U',V
1,...,V
n)发送给A
I,同时把(m,L,r′,h
A)添加到列表L
2中。如果c=0,则B从A
I处得到
然后按照上面相同的方法计算并返回σ。
4.伪造阶段:攻击者A
I输出在消息m
*、环成员列表
下的伪造盲环签名
这里假设环中含有成员ID
A,其中h
1=H
2(m
*,L
*,r')。根据分叉引理
[18],通过重放A
I,B可以获得另一个不同的伪造
这里h
1≠h
2。由以下等式:
可得 即
从而有 故k-CAA问题的解为
因此,如果存在一个攻击者能以不可忽略的概率伪造一个有效的盲环签名,那么就存在一个有效的算法能够以不可忽略的概率解决k-CAA问题,而这与k-CAA问题是一个困难问题相矛盾,故方案是EUF-CLBRS-CMIA安全的。
本发明所提出的无证书盲环签名方法在面对恶意KGC的攻击下,其存在不可伪造性安全性证明如图3所示,具体实施步骤为:
1.假设攻击者A
II能以不可忽略的优势攻击本方案,则存在算法B,B可以利用A
II解决mICDH问题。给定B一个mICDH问题的实例(P,aP,b),其目标是利用A
II计算出
其中
为此B模仿A
II的挑战者,具体过程如下:
2.系统初始化:算法B根据系统参数生成算法产生系统公开参数params=(G,G
T,q,e,g,P,P
pub,H
1,H
2,H
3),其中g=e(P,P),P
pub=sP,系统主私钥msk=s由B选定,并将公开参数params及系统主私钥s发送给A
II。B随机选取ID
*=ID
I,
其中
为进行H
1询问的最大次数。
3.询问阶段:假定AII在对部分私钥询问、用户公钥询问、用户私钥询问和签名询问之前已进行H1询问,在对用户私钥询问和签名询问之前已进行用户公钥询问。算法B维护四个列表L1、L2、L3和L4=(ID,RID,xID),它们在开始时都是空表。当攻击者AII发起一定数量的询问时,算法B进行如下响应:
①H
1询问:在询问H
1(ID
i),
时,如果已询问过,则返回
否则,B随机选取
并返回。然后B计算
并将
添加到列表L
1中。
②H
2询问:在询问H
2(m,L,r')时,如果列表L
2中存在(m,L,r′,h
i),则返回h
i;否则,B随机选取
并返回,同时把(m,L,r′,h
i)添加到列表L
2中。
③H
3询问:在询问
时,如果列表L
3中存在
则返回
否则,如果
则B返回
否则,B随机选取
并返回。然后,B把
添加到列表L
3中。
④部分私钥询问:因AII知道系统主私钥,所以其可以产生任意用户IDi的部分私钥,故无需进行部分私钥询问。
⑤用户公钥询问:当询问ID
i的公钥时,如果ID
i=ID
*,则B返回
并把
添加到列表L
4中;如果ID
i≠ID
*,则B先在列表L
1中查询ID
i所对应的
然后随机选取
并计算
最后把
添加到列表L
4中。
⑥用户私钥询问:当询问ID
i的私钥时,如果ID
i=ID
*,那么算法B失败并中止模仿过程;如果ID
i≠ID
*,则B先在列表
和
中进行查询,若列表L
3中含有
那么B返回
若列表L
3中不含有
那么B先进行
询问,然后返回
⑦签名询问:当询问消息为m、环为L={ID
1,...,ID
n}的盲环签名时,B先在列表L
1和列表L
4中查询
和
其中i∈(1,...,n)。B先选取A∈(1,...,n),然后在列表L
3中查询
i∈(1,...,n);若
不存在,则B随机选取
并把
添加到列表L
3中;B随机选取
并计算V
i=a
iP,其中i∈(1,...,n),i≠A;B随机选取U′∈G,
计算V
A=x
AP,
并定义h
A=H
2(m,L,r'),若在列表L
2中已存在H
2(m,L,r'),那么算法B失败并中止模仿过程,否则,B将σ=(m,u,r',U',V
1,...,V
n)发送给A
II,同时把(m,L,r′,h
A)添加到列表L
2中。
4.伪造阶段:攻击者A
II输出在消息m
*、环成员列表
下的伪造盲环签名
这里假设环成员中实际的签名人为ID
*=ID
A,其中h
1=H
2(m
*,L
*,r')。根据分叉引理
[18],通过重放A
I,B可以获得另一个不同的伪造
这里h
1≠h
2。由以下等式:
可得 即
从而有 故mICDH问题的解为
因此,如果存在一个攻击者能以不可忽略的概率伪造一个有效的盲环签名,那么就存在一个有效的算法能够以不可忽略的概率解决mICDH问题,而这与mICDH问题是一个困难问题相矛盾,故方案是EUF-CLBRS-CMIA安全的。
本发明所提出的无证书盲环签名方法满足盲签名的盲性属性要求,具体分析过程为:
如果我们能够证明签名人与用户在交互执行签名协议后所得到的签名的概率分布与对任何可能的消息进行签名所得到的概率分布是不可区分的,那么我们的方案满足无条件盲性。在本发明方法中,对于值h=α-1H2(m,L,r′)+β而言,由于β∈Zq是完全随机选取的,故h的分布是随机均匀的,其值与消息m相独立;对于盲环签名σ=(m,u,r',U′,V1,...,Vn)而言,签名中的元素要么与消息m的值无关,要么是与消息m相独立的随机数值。综上所述,本文的盲环签名σ其概率分布是与消息m相独立的,不同消息m所对应的盲环签名的概率分布是不可区分的。
本发明所提出的无证书盲环签名方法满足环签名的匿名性属性要求,具体分析过程为:
在本发明方法中,对于值r=g
x,U=x(R
ID+y
IDQ
ID)而言,因x∈Z
q是完全随机选取的,故r,U的分布是随机的,且它们没有提供实际签名人的任何信息;对于值V
i=a
iP,
而言,因a
i∈Z
q是完全随机选取的,故u,V
i的分布也是随机的,且它们没有提供实际签名人的任何信息;对于值
而言,因x,h是随机产生的,故S的分布也随机的,且没有提供实际签名人的任何信息。综上所述,即使用户拥有无限的计算能力(即用户能够获取环成员列表L中所有成员的私钥),其也无法以不可忽略的优势猜测出实际签名人的身份,故本文方案满足无条件匿名性。
综上所述,依照本发明实现了将无证书公钥密码体制与具有特殊性质的签名相结合从而构造出无证书盲环签名的新途径和新方法,并且通过具体的安全性证明表明了该方法是安全可靠的,该方法的实现不仅具有理论意义,同时也具有现实意义。
上述实施例仅仅是为清楚地说明本发明创造所作的举例,而并非对本发明创造具体实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。而由此所引申出的显而易见的变化或变动仍处于本发明创造权利要求的保护范围之中。