一类改进的基于证书签名方案
农强, 黄茹芬, 黄振杰    
闽南师范大学 计算机学院, 福建 漳州 363000
摘要

给出杨波等基于证书签名方案的一个伪造攻击, 攻击显示诚实但好奇的认证中心可在不知用户秘密值的情况下, 仅通过选取随机参数便能成功伪造任意用户对任意消息的有效签名.分析发现原方案不安全的原因在于证书生成阶段计算的承诺值R并没有作为签名阶段Hash函数的输入之一, 通过将R增加为Hash函数的输入, 给出了一个改进方案.改进方案在效率上与原方案是同等的, 在离散对数困难性假设下可证明是安全的.

关键词: 基于证书签名     伪造攻击     认证中心     Hash函数     离散对数问题    
中图分类号:TN918 文献标志码:A 文章编号:1007-5321(2014)03-0048-05 DOI:10.13190/j.jbupt.2014.03.010
Improved for Certificate-Based Signature Scheme
NONG Qiang, HUANG Ru-fen, HUANG Zhen-jie    
Department of Computer Science, Minnan Normal University, Fujian Zhangzhou 363000, China
Abstract

A forgery attack on Yang bo et al.'s certificate-based signature scheme was presented. It is found that the "honest-but-curious" certificate authority could forge a valid signature in any message on behalf of any user by choosing random parameters without knowing the secret value of the user. Analysis describes that the reason of insecurity of the original scheme is that the commitment value R computed in the stage of certificate generation is not used as an input of the hash function in the stage of signature generation. An improved scheme was proposed by adding R to the hash function. The improved scheme is as efficient as the original scheme. It is provably secure under the intractability of discrete logarithm problem.

Key words: certificate-based signature     forgery attack     certificate authority     Hash function     discrete logarithm problem    

基于证书的密码体制作为一种新型公钥密码体制,结合了公钥基础设施和基于身份密码体制的优点,克服了其存在问题,从提出开始,就引起了广泛的关注,一系列利用双线性对的基于证书签名方案被相继提出.然而,运行一次双线性对运算所耗费的时间约为椭圆曲线上点乘运算的20倍,是目前较为复杂的密码操作.因此,为了提高效率,无对的基于证书签名对诸如无线传感器网络等能量受限的系统来讲就更具吸引力. 2008年,Liu等[1]首次提出了一个无对的基于证书签名方案,但是Liu等在其方案中附加一个关于私钥的知识证明来防止替换公钥攻击,导致方案的效率降低.随后,在2009年,Zhang[2]指出Liu等提出的方案不能抵抗Ⅰ型敌手A和Ⅱ型敌手A的攻击,并对其进行了改进,然而改进的方案仍然使用了对运算.同年,Yang等[3]也提出了无对的基于证书签名方案,而Li等[4]于2013年也指出Yang等的方案无法抵抗A的攻击,并给出改进的方案.

1 主要工作

杨波等[5]于2012年利用离散对数问题(DLP, discrete logarithm problem)的困难性提出的基于证书签名方案具有很好的特性,比如方案没有使用映射到点特殊的Hash函数,其签名阶段只需要有限域上的2个加法和2个乘法运算,验证阶段也不需要复杂的双线性对运算,计算效率较高.杨波等[5]声称所提方案在最强的敌手模型中是安全的,可以抵抗超级A和超级A的伪造攻击.然而,当A替换用户的公钥后,必须向挑战者C提供被替换公钥所对应的秘密值才能获得可通过验证的消息签名对,否则无法证明C模拟的签名和真实签名不可区分,敌手可以不接受C返回的签名而导致模拟过程失败.另外,该签名方案实际上仍然无法抵抗A的攻击.具体来讲,一个超级敌手A是一个恶意但被动的认证中心(CA, certificate authority),该CA在系统初始化阶段就有预谋地针对预选用户设置含有陷门信息的系统参数,这种特殊的系统参数与正常系统参数是不可区分的,因此,相对于其他敌手,CA就拥有更大的优势来计算用户的私钥,进而伪造用户对任意消息的签名.然而,经分析发现,杨波等[5]的方案甚至不能抵抗一个普通敌手A的攻击,一个诚实但好奇的CA在得不到任何用户秘密值的情况下,仅通过选取随机参数以及多项式时间内的计算,便能以显著的概率成功伪造任意用户对任意消息的有效签名.笔者讨论了出现这种伪造攻击的原因,并针对原方案的缺陷进行了必要的改进,分析结果表明,改进后的方案在保留原方案计算效率高等优点的同时,有效克服了原方案的安全隐患.

2 对文献[5]方案的伪造攻击

限于篇幅,杨波等[5]提出的方案不再赘述,下面给出一个诚实但好奇的CA对签名的伪造攻击过程,可证明该方案是不安全的.

1) CA随机选取u*Zq*,计算U*=gu*(mod p),h2*=H2(ID‖U*PKIDM), h 3*=H3(ID‖U*PKIDM).

2) CA计算R*=YID(-h*3/h2*)h1*=H1(R*YID‖ID),v*=u*+xh1*h2*,最后输出消息M的伪造签名σ*=(U*, v*, R*).

下面证明伪造签名σ*=(U*, v*, R*)是有效的.因为

gv*=U*(R*Xh1*)h2*YIDh3*成立,这说明σ*=(U*, v*, R*)是用户ID在公钥YID下对消息M的有效签名,因此,杨波等[5]的方案无法抵抗普通的Ⅱ型敌手A的伪造攻击.

对原方案而言,在v=u+zIDh2+yIDh3中使用2个不同的Hash函数H2H3是必要的.即使2个Hash函数的输入相同,但两者的输出是不同的,而且输出结果具有一定的随机性.若使用相同的Hash函数H,CA只需要计算U*=gu*Uh*=H(ID‖U*PKIDM),然后计算v*=u*+zID(h*h)+v,就能将σ*=(U*, v*, R)作为伪造的签名输出.很容易验证σ*也是用户ID在公钥YID下对消息M的有效签名.必须注意到,原方案在证书生成阶段计算的R=gr(mod p)并没有作为签名阶段的Hash函数H2H3的输入,这是敌手能计算h2*h3*R*= YID(-h3*/h2*)进而伪造签名成功的原因,因此可以将R值绑定到H2H3中来避免这种攻击.

3 改进方案及效率分析

通过在签名阶段将杨波等[5]的方案在证书生成阶段计算的承诺值R增加为Hash函数的输入之一,提出了一个改进方案,改进方案的系统初始化及密钥生成算法与原方案相同,下面只给出其签名及验证算法.

1) Sign:用户ID随机选取uZq*,计算U=gu(mod p),h2=H2(ID‖YIDURM),h3= H3(ID‖YIDURM),然后计算v=zID+(yIDh2+u)h3,最后将σ=(U, v, R)作为消息M的签名输出.

2) Verify:给定消息签名对(M, σ)、签名者ID的公钥YID,用户计算V=gv(mod p),h1=H1(RYID‖ID),h2=H2(ID‖YIDURM),h3=H3(ID‖YIDURM),最后验证V=RXh1(UYIDh2)h3是否成立.

由改进方案可以看出,若CA计算U*=gu*后将无法再计算h2*h3*,因为此时R*尚未计算,CA也无法先计算R*=YID(-h3*/h2*),因为h2*h3*的值与R*绑定,因此改进方案克服了对原方案的攻击.

将目前已提出的无对的基于证书签名与改进方案进行比较,如表 1所示.其中,|g|表示Zp中元素的长度,|q|表示Zq中元素的长度,ME分别表示Zp的乘法和指数操作.

表 1 方案比较分析

表 1分析发现,改进方案无须花费额外的计算代价,保留了原方案计算复杂度低的优点,在签名长度和计算效率上是高效的基于证书签名方案.

4 安全性证明

参考文献[4]中的证明技巧,下面分别给出改进方案对敌手A和A的不可伪造证明.

定理1  若存在一个Ⅰ型敌手AT时间内,最多执行qHi(i=1, 2, 3) 次Hash询问、qcu次CreateUser询问、qusk次Corruption询问、qrpk次ReplacePublicKey询问、qcert次CertGen询问和qsign次Sign询问后,能以SuccCBSEF(A)的概率攻破所提基于证书签名方案,那么存在另外一个适应性选择消息和身份攻击的算法C,能利用A在期望时间T′≤(qcu+2qcert+4qsign)tex+2T内具优势AdvCBSEF(A)≥(1-1/qH1)qcert+qsignSuccCBSEF(A)/qH1来解决DLP的一个实例,其中texZp上的一次指数运算耗时.

证明  假设C收到了DLP的一个随机实例(g, gμ),其目标是输出μZq*.为了利用A解决DLP,C需要模拟一个挑战者并回答A的所有询问. C首先置系统公钥为X=gμ并将系统参数params={p, q, g, X, H1, H2, H3}发送给A.其次,C随机选取IDk满足(1≤kqH1)作为游戏的挑战身份,其中qH1为可询问H1的最大次数.不失一般性,C需要维护5个初始为空的列表LcuLHi(i=1, 2, 3) 和Lcert.Lcu用来维护CreateUser、ReplacePublicKey和Corruption询问的记录,LHi(i=1, 2, 3) 用来维护Hash询问的记录, Lcert用来维护CertGen询问的记录.下面是C仿真挑战者与A的交互.

1) CreateUser询问:当AC发布对IDi的公钥询问时,C查看Lcu列表,若存在{IDi, yIDi, YIDi},C返回YIDi给A;否则,C随机选取yIDiZq*,计算YIDi=gyIDi并将YIDi返回给A.最后将{IDi, yIDi, YIDi}添加到Lcu列表.

2) Hash询问:当AC进行Hi(i=1, 2, 3) 询问时,C分别随机选取αiβiλiZq*为对应的Hi(i= 1, 2, 3) 值返回给A,并将对应值分别加入到LH1{Ri, YIDi, IDi, αi}、LH2{IDi, YIDi, Ui, Ri, Mi, βi}和LH3{IDi, YIDi, Ui, Ri, Mi, λi}列表.

3) ReplacePublicKey询问:当AC发布对{IDi, YIDi}的询问时,C检查Lcu列表并将{IDi, yIDi, YIDi}改为{IDi, ⊥, YIDi}.

4) CertGen询问:当AC发布对{IDi, zIDi, Ri}的询问时,C响应如下.

① 若ikC随机选取zIDiαiZq*并计算Ri=gzIDiXαi,然后检查LH1列表是否已存在{Ri, YIDi, IDi},若存在则需要重新选取zIDiαi以防止碰撞. C将{Ri, YIDi, IDi, αi}和{IDi, zIDi, Ri, YIDi}分别添加到LH1Lcert列表,最后返回{zIDi, Ri}给A.

② 若i=kC终止.

5) Corruption询问:当AC发布对IDi的秘密值询问时,C查看Lcu列表,若存在{IDi, yIDi, YIDi},C返回yIDi给A;否则,C随机选取yIDiZq*,计算YIDi=gyIDi并将yIDi返回给A.最后将{IDi, yIDi, YIDi}添加到Lcu列表.

6) Sign询问:当AC发布对{IDi, Mi}的签名询问时,C响应如下.

① 若ikLcu列表中存在{IDi, yIDi, YIDi}满足yIDi≠⊥,即公钥未被替换,则C首先查找Lcert列表中是否存在{IDi, zIDi, Ri, YIDi},若不存在则自己对{IDi, YIDi}分别进行CertGen和Corruption询问来产生{zIDi, yIDi},然后直接使用签名算法对消息M进行签名并将结果返回给A.

② 若i=k,或者ik且IDi对应的公钥YIDi被替换过,则A必须向C提供被替换公钥所对应的秘密值. C首先随机选取viαiβiλiZq*,计算Ui= (gviYIDi-βiλi)λi-1Ri=Xαi,然后置H1(RiYIDi‖IDi)=αiH2(IDiYIDiUiRiMi)=βiH3(IDiYIDiUiRiMi)=λi.若Hi(i=1, 2, 3) 列表中已存在对应项,则需要重新选择αiβiλi以防止出现碰撞;否则,C将{Ri, YIDi, IDi, αi}、{IDi, YIDi, Ui, Ri, Mi, βi}和{IDi, YIDi, Ui, Ri, Mi, λi}添加到LHi(i=1, 2, 3) 并将(Ui, vi, Ri)返回给A.

假设C在模拟过程中不失败,A将至少以SuccCBSEF(A)的概率输出目标用户{ID*, YID*}对消息M*的有效伪造签名σ*=(U*, v*, R*),满足

(1)

若ID*≠IDkC将终止;否则,根据分叉引理,C通过输入{R, YID, ID}来重放AH1的询问得到{R, YID, ID, α′}并将其添加到LH1列表.最后,C可在期望时间t=120 686qH1T/SuccCBSEF(A)输出一个新的有效签名σ′=(U*, v′, R*),满足

(2)

这里需要注意的是,H2H3的输出值h2*h3*C重放AH1的询问前后保持不变.根据式(1) 和式(2),C最终输出μ=(v*v′)/(h1*h1)作为DLP一个实例的解.若以下条件同时成立,C具优势AdvCBSEF(A)来求解DLP.

E1C在整个模拟过程中不失败.

E2:A成功输出伪造签名σ*=(U*, v*, R*).

E3:若E2发生,在(ID*, σ*)中有ID*=IDk.

从上述仿真过程易知,C的成功概率AdvCBSEF(A)=Pr[E1E2E3].若A查询用户ID*的证书,由于C不知道μ值,因此C不发生终止的概率Pr[E1]≥(1-1/qH1)qcert+qsignC在A输出一个有效的伪造签名而没有终止的概率Pr[E2|E1]=SuccCBSEF(A);若A不选择ID*作为伪造阶段的签名者,那么C也无法解决DLP,此事件不发生的概率Pr[E3|E1E2]≥1/qh1.下面计算AdvCBSEF(A)的下限.

C的运行时间等于它模拟安全性证明的时间与2倍的A的运行时间之和.在CreateUser、CertGen和Sign询问阶段,分别需要进行qcu、2qcert和4qsignZp上的指数运算,因此C的整个运行时间为T′≤(qcu+2qcert+4qsign)tex+2T,证毕.

定理2  若存在一个Ⅱ型敌手AT时间内,最多执行qHi(i=1, 2, 3) 次Hash询问、qcu次CreateUser询问、qusk次Corruption询问、qrpk次ReplacePublicKey询问和qsign次Sign询问后,能以SuccCBSEF(A)的概率攻破所提基于证书签名方案,那么存在另外一个适应性选择消息和身份攻击的算法C,能利用A在期望时间T′≤(qcu+qusk+4qsign)tex+2T内具优势AdvCBSEF(A)≥(1-1/qH1)qusk+qrpk+qsignSuccCBSEF(A)/qH1来解决DLP的一个实例.

证明  与定理1证明过程类似,C首先随机选取xZq*,然后置系统公钥为X=gx并将系统参数params={p, q, g, X, H1, H2, H3}和x一起发送给A.下面是C仿真挑战者与A的交互.

1) CreateUser询问:当AC发布对IDi的公钥询问时,C查看Lcu列表,若有{IDi, yIDi, YIDi},C返回YIDi给A.否则,若ikC随机选取YIDiZq*,计算YIDi=gYIDi并将YIDi返回给A,同时将{IDi, yIDi, YIDi}添加到Lcu列表;若i=kC直接置YIDi=gμ并将YIDi返回给A,同时将{IDi, ⊥, YIDi}添加到Lcu列表.

2) Hash询问:与定理1中的Hash询问回答类似.

3) Corruption询问:当AC询问IDi的秘密值时,若ik,同定理1;若i=kC终止.

4) ReplacePublicKey询问:当AC发布对{IDi, YIDi}的询问时,若i=kC终止;否则,C检查Lcu列表并将{IDi, yIDi, YIDi}改为{IDi, ⊥, YIDi}.

5) Sign询问:与定理1中的签名询问回答类似.

如果C在证明过程中不退出,A将至少以SuccCBSEF(A)的概率输出{ID*, YID*}对消息M*的有效伪造签名σ*=(U*, v*, R*),满足

(3)

若ID*≠IDkC将终止;否则,C通过输入{ID, YID, U, R, M}来重放AH2的询问得到{ID, YID, U, R, M, β′}并将其添加到LH2列表.最后,C可在期望时间t=120 686qH2T/SuccCBSEF(A)输出一个新的有效签名σ′=(U*, v′, R*),满足

(4)

这里需要注意的是,H1H3的输出值h1*h3*C重放AH2的询问前后保持不变.根据式(3) 和式(4),C最终输出μ=(v*v′)/(h2*h2)h3*作为DLP一个实例的解.同理,C的成功概率为

C的运行时间等于它模拟安全性证明的时间与2倍的A的运行时间之和.在CreateUser、Corruption和Sign询问阶段,分别需要进行qcuqusk和4qsignZp上的指数运算,因此C的整个运行时间为T′≤(qcu+qusk+4qsign)tex+2T,证毕.

5 结束语

首先指出了杨波等[5]所提的基于证书签名方案的安全缺陷,然后给出了一个改进方案,最后证明了改进方案的不可伪造性可归约到求解DLP.效率分析结果表明,改进方案是目前效率最高的基于证书签名方案之一,尤其适合计算能力及带宽受限的环境.如何构造在更强的敌手模型下的基于证书签名方案是一个公开问题,是下一步要努力的方向.

参考文献
[1] Liu J K, Baek J, Susilo W, et al. Certificate-based signature scheme without pairings or random oracles[C]//ISC 2008. Berlin: Springer-Verlag, 2008: 285-297.
[2] Zhang Jianhong. On the security of a certificate-based signature scheme and its improvement with pairings[C]//ISPEC 2009. Berlin: Springer-Verlag, 2009: 47-58.
[3] Yang Ming, Wang Yumin. Efficient certificate-based signature scheme[C]//ISA 2009. Xi'an: IEEE, 2009: 87-90.
[4] Li Jiguo, Wang Zhiwei, Zhang Yichen. Provably secure certificate-based signature scheme without pairings[J].Information Sciences, 2013, 233(6): 313–320.
[5] 杨波, 肖自碧. 基于证书的签名方案[J]. 北京邮电大学学报, 2012, 35(5): 73–76.
Yang Bo, Xiao Zibi. Efficient certificate-based signature scheme[J].Journal of Beijing University of Posts and Telecommunications, 2012, 35(5): 73–76.