两个无证书代理环签名方案的攻击与改进
2019-10-21李慧敏宁华英梁红梅张金辉
李慧敏 宁华英 梁红梅 张金辉
1(莆田学院数学与金融学院 福建 莆田 351100)2(闽南师范大学数学与统计学院 福建 漳州 363000)3(应用数学福建省高校重点实验室 福建 莆田 351100)
0 引 言
随着计算机网络和电子商务的的快速发展,数字签名的应用越来越广泛。例如:代理签名[1-2]让人们能够通过代理人进行一些签名操作,在电子认证方面起着重要的作用;环签名[3]让人们能够在不泄露自己身份的情况下完成签名,它是由Rivest等[3]在研究如何匿名泄秘的现实背景下首次提出的一种新型无条件匿名签名,在电子商务、匿名通信及区块链等方面中都有广泛的应用[4-5]。在某些特定场合,代理签名人更倾向以完全匿名的方式进行代理签名,因为他们认为这种方式能更有效地隐藏自己的身份不让任何人(包括他的原始签名人)得知,从而能更好地保护好原始签名人及代理签名人的隐私,如代理环签名[6]、代理群签名[7]或盲环签名[8]均可实现这个目的。而在代理环签名[6]中,环中任意一个成员都可以代表其他环成员进行代理签名而不被他人得知,而且没有人能判断出谁是真正的签名实施人,这样可以很好地保护代理签名人。因此,代理环签名因既能满足原始签名人的委托签名权力,又能保护代理人的隐私而受到众多学者的青睐。基于身份的代理环签名[9-11]、基于证书的代理环签名[12-13]和无证书的代理环签名方案[13-19]不断被提出,其中无证书公钥密码系统避免了密钥生成中心(Key Generating Center,KGC)失信问题,同时也不需要认证中心颁发、验证、保管证书,可以满足代理环签名的可区分性、不可伪造性等基本性质。文献[19]提出了一种采用短签名方案进行授权的无证书的代理环签名方案,该签名方案是基于文献[20]中所提出的一种无证书环签名方案而设计出来的。遗憾的是,我们分析发现该签名方案是不安全的,原始签名人的私钥可被恢复出来。另外,标准模式下的签名方案与随机预言模型相比不需要完全随机的Hash函数,而是依赖于一些不可逆的单向的或在现实生活中能够实现的Hash函数,它也是基于一些困难问题假设[21]。因此,标准模型下的安全性证明是一种符合现实并让人信任的证明方式。张春生等[22]提出了一个标准模型下的无证书代理环签名方案,该签名方案是基于CDH(Computational Diffie-Hellman)问题假设,只需要两次对运算。然而,我们从该方案的验证式中发现该方案不具备不可否认性,任何人都可以伪造签名。本文指出了文献[19]和文献[22]中两个方案的安全问题,并给出了具体的攻击方法,最后给出了相应问题的改进方法,对构造安全的无证书代理环签名方案具有重要的借鉴意义。
1 预备知识
1.1 双线性对的定义
假设存在两个循环群G1和G2,它们的阶数均为素数q,且G1为加法群,G2为乘法群。设P为G1的生成元。假设映射e:G1×G1→G2是一个双线性对,那么G1、G2满足如下性质:
(1) 非退化性:e(P,P)≠1;
(2) 可计算性:存在一个有效的算法计算e(P,Q),其中P,Q∈G1;
1.2 困难性问题
在数据规模达到一定的情况下,下面两个问题是困难的。
1.3 代理环签名方案的构造及安全性需求
代理环签名方案一般由四个步骤组成,即系统参数设置(产生授权人和代理人密钥对及相关系统参数)、代理密钥产生(生成代理签名密钥对)、签名生成(输入待签名的消息、相关系统参数、身份信息的集合和代理人的代理签名私钥后得到该消息的签名)和签名验证(确定签名是否有效)。安全性需求包括以下四点:
(1) 可验证性 所有人都可以去验证签名方案的正确性。
(2) 无条件匿名性 真正的代理签名人不会被原始签名人和包括KGC在内的第三方得知。
(3) 不可伪造性 只有被授权的代理签名人才可以计算出有效的代理环签名。而没有被授权的任何人(包括原始签名人和KGC)都无法伪造出有效的代理环签名。
(4) 可区分性 代理环签名可以与代理人用自己的私钥产生的环签名区分开来。
2 文献[19]签名方案的分析
2.1 方案回顾
为了达到构造简洁、并提高授权期间的传输效率,文献[19]中的无证书代理环签名方案在授权时使用双线性对构造一种短签名方案。具体方案如下:
设授权人为A,代理人为B,B建立一个包括他自己在其中的环u={U1,U2,…,Un},待签名的消息为m,A对B的授权信息表示为w。
用户密钥生成:
(3)A生成自己的私钥Sa=xaDa=xasQa。
代理密钥生成:
(1)A创立一个只有签名人才可认证许可的信息w,其中信息分别包括A和B的身份信息、说明授权关系以及使用限制等。随后进行计算Sw=H2(w)Sa,然后将(Sw,w)传送给B。
(2)B验证e(Xa,P0)=e(Ya,P)以确认授权人的身份,然后验证e(Sw,P)=e(Qa,Ya)H2(w)是否成立。如果该验证成立,则表示授权步骤已完成。
代理签名:
(1)B选择包括自己本身在内的n个用户来成立一个环u={U1,U2,…,Un},L={P1,P2,…,Pn}为环用户的公钥集,已知B为Ub,1≤b≤n。
(3) 随机选择A∈G1。
(5) 计算hp=H2(u,m,Rb)。
(7) 消息m的签名为:
Sign=(u,m,R1,…RR,hτ,…,hη,σ,H2(w))
签名验证:
(1) 验证下列各式:
e(Xa,P0)=e(Ya,P),e(Xi,P0)=e(Yi,P),hi=H2(u,m,Ri),i=1,2,…,n;
(2) 验证下式:
若上述等式都成立,则接受签名。
2.2 安全性问题
(H2(w))-1Sw=(H2(w))-1H2(w)Sa=Sa
由此可以看出代理签名人B可以通过A传递给B的(Sw,w)恢复出原始签名人A的私钥。所以该签名方案是不安全的,会受到恢复密钥的攻击。因此,要克服该攻击就要重新设计新的代理密钥的产生方式,从而需要重新设计相应的签名方案。但是,这里存在的安全问题在没有注意运算性质的情况下容易被忽视。
3 文献[22]签名方案的分析
3.1 方案回顾
文献[22]所提出的标准模型下的无证书代理环签名方案是由系统参数设置、用户密钥产生、代理密钥生成、代理环签名算法和验证算法构成,具体方案如下:
代理密钥生成:授权人AI将授权信息ω、消息集mω及代理成员集合L={u1,u2,…,un}发送给KGC,其中,ω包含了AI的身份信息以及AI与L的授权管理。
若上式成立,则(t,dAI)是合法有效的授权签名信息,us验证后计算得到自己的代理签名密钥dSAI,且dSAI=dus·dAI。
3.2 攻击方案
经过分析,我们发现张春生等[22]所提出的上述标准模型下的无证书代理环签名方案在面对恶意用户攻击时,将不再满足不可伪造性这一安全特性,下面将给出具体的攻击方法:
e(C′,g))
则该签名有效。至此,恶意用户成功地创建出有关m′的签名σ′。
3.3 安全性分析与改进
(1) 用户的私钥生成方式是有问题的:原方案中把系统主密钥乘以一个用户也可以生成的数据作为用户的部分私钥,这样导致了系统主密钥可被用户恢复出来。因此,要克服这个问题,就得改变用户部分私钥的生成方式,不能直接用相乘的方式来产生。
4 结 语
代理环签名使得原始签名人既可以委托别人代替自己签名,又可以保护自己的匿名性。因此,代理环签名在对用户身份等隐私信息的保护具有较高要求的领域(如电子现金、电子投票、电子选举、匿名通信等)具有广泛的应用价值。标准模型下签名方案的安全性证明更贴近实际并且更具有说服力,近年来逐渐成为关于签名方案研究的热点问题。现有的无证书代理环签名及标准型模型下可证明安全的无证书代理环签名方案的研究文章还不是很多,而且现有的很多方案存在可被伪造等不安全的问题。本文对文献[19]所发表的无证书代理环签名方案以及文献[22]中的标准模型下的无证书代理环签名方案进行安全性分析,发现这两个方案均存在一定的安全性漏洞,容易被恶意用户的攻击,如恶意用户可以恢复出KGC保管的系统主密钥,从而对代理环签名成功进行伪造。最后,本文给出的分析方法对同类代理环签名方案的设计具有借鉴参考意义且具有部分的使用价值。