您好, 访客   登录/注册

无双线性对的无证书广义签密方案安全性分析

来源:用户上传      作者:

  摘 要:为避免双线性对运算较耗时的缺陷,提高(广义)签密方案效率,学界提出了无双线性对运算的无证书签密方案和无双线性对运算的无证书广义签密方案。在随机预言机模型下证明该方案满足机密性和不可伪造性。通过具体的攻击方法证明了前一个方案存在伪造性攻击而后一个方案存在机密性攻击,分析了原方案不安全的原因。通过将公钥进行hash运算对前一个方案进行了改进,通过把签名部分分成两部分对后一个方案也进行了改进。对改进方案效率进行分析,结果表明改进方案安全高效。
  关键词:无证书签密;无证书广义签密;双线性对;公钥替换攻击;秘钥托管
  DOI:10. 11907/rjdk. 182473
  中图分类号:TP309
  文献标识码:A 文章编号:1672-7800(2019)006-0184-04
  Abstract:To avoid the time consuming bilinear pairing operations and improve the efficiency of (generalized) signcryption schemes, we proposed a certificateless signcryption scheme and a certificateless generalized signcryption scheme without bilinear pairing, respectively. The confidentiality and unforgeability of the schemes in the random oracle model were proved. By giving concrete attacks, the former scheme was proved to be vulnerable to forgery attack and the latter one to confidentiality attack. The reason why the original schemes were insecure was analyzed. An improved scheme was given to the former one by hashing the public key and an improved scheme was given to the latter one by dividing the signature part into two parts. At last, the efficiency of the improved schemes was analyzed, which showed they were high efficient.
  Key Words:certificateless signcryption; certificateless generalized signcryption; bilinear pairing; public key replacement attack; key escrow
  0 引言
  传统公钥密码体制需要一个公钥证书证明某个公钥是某个人的,但是公钥证书管理费非常昂贵。为了降低公钥的管理费用,基于身份的密码体制[1]被提出。但是基于身份的密码体制又产生了新的密钥托管问题,即可信第三方PKG(Private Key Generator)知道所有用户的私钥。所以基于身份的密码体制使用只适用于对PKG绝对信任的场合。
  为解决基于身份的密码体制存在的密钥托管问题,同时又降低公钥的管理费用,提出了无证书密码体制[2]。
  加密可以实现信息的保密性,签名可以实现信息的认证性。为了同时实现认证性和保密性,人们提出了签密[3]概念。签密能够在一个逻辑步骤内同时实现保密性和认证性,且计算代价和通信成本比传统的“先签名再加密”要低得多。
  广义签密[4]是签密概念的进一步推广。广义签密能用一个算法和一对密钥实现加密、签名和签密3项功能,因而可节省系统存储空间,降低密钥管理成本。
  无证书签密[5]和无证书广义签密[6]方案常常基于双线性对[7]实现。双线性对是一个非常号的密码学工具,但其计算代价较大,一个双线性对的计算量可达到椭圆曲线上的点乘运算量的20倍[8]。因此,业界出现了设计无双线性对运算的无证书(广义)签密方案。
  2009年,Selvi等[9]首次提出了一个无双线性对运算的无证书签密方案,但没有给出方案的安全性证明。2010年和2011年,朱辉等[10]、刘文浩等[11]和Jing[12]各提出一个无双线性对运算的无证书签密方案。2013年,何德彪[13]给出了方案[11]的公钥替换攻击,周才学等 [14]给出了方案[11]的一种伪造性攻击和三种保密性攻击并提出一个改进方案。由于方案[10]与方案[11]结构类似,所以以上攻击同样适合于方案[10]。2014年,Shi等[15]指出方案[12]不能抵抗公钥替换攻击并给出一个改进。2016年,邹昌芝[16]进一步指出方案[14]也存在公钥替换攻击并提出一个改进方案。同年,周彦伟等 [17]指出方案[10]存在公钥替换攻击并给出一个改进方案。
  据笔者所知,目前仅有周彦伟等[18]提出了无双线性对运算的无证書广义签密方案。
  方案[17]和[18]均不能达到作者所声称的安全性。无证书密码体制存在两类攻击[6]:①攻击者[AI]不知道系统主私钥,但可任意替换用户的公钥,模拟一般用户的攻击;②攻击者[AII]拥有系统主私钥,但不能替换用户的公钥,模拟的是恶意的KGC (Key Generation Center)攻击。本文通过给出具体的攻击方法,显示方案[17]存在[AII]攻击者的伪造性攻击,而方案[18]存在保密性攻击,由此给出了一种可能的改进并分析了改进方案的效率,分析结果表明改进方案是高效的。   1 方案及安全性分析
  1.1 原方案
  (1) 系统初始化。给定安全参数[k],KGC输出满足条件[p|q-1]的两个大素数[p]和[q]。 设[g]为群[Z*p]中的生成元,其阶为[q]。KGC选取4个安全Hash函数:[H1:{0,1}L1×][Z*p×Z*p→Z*q],[H2:{0,1}L1×{0,1}L2×Z*p→Z*q],[H3:Z*p→][{0,1}L2+|Z*q|],[H4:{0,1}L1×{0,1}L2×Z*p×Z*p→][Z*q] ,其中[L1]为用户身份ID的比特长度,[L2]为明文的比特长度,[Z*q]为[Z*q]中元素的比特长度。KGC随机选取主密钥[s∈Z*q],计算[PPub=gs],则系统公开数为[Params={p,q,g,Ppub,H1,H2,][H3,H4}],KGC保密主密钥[s]。
  (2) 用户密钥生成。①用户[IDi]随机选取[xi∈Z*q]作为秘密值,计算[Xi=gxi]。用户发送[IDi]和[Xi]给KGC;②KGC随机选取[ri∈Z*q],计算[Yi=gri],[yi=ri+s?H1(IDi,Xi,Yi)]。KGC将[yi]通过安全信道发送给[IDi],则[IDi]的公钥为[PKi=(Xi,Yi)],私钥为[SKi=(xi,yi)];③[IDi]可以通过验证等式[gyi=Yi?PH1(IDi,Xi,Yi)pub]确定部分私钥和部分公钥的正确性。
  (3)签密。设发送者[IDa],接受者[IDb],[m∈{0,1}L2]。[IDa]隨机选取[a∈Z*q],计算[R=ga],[h1b=H1(IDb,Xb,Yb)],[h4=H4(IDa,m,Xa,R)],[h'4=H4(IDa,m,Ya,R)],[V=(Xb?Yb?][Ph1bpub)a],[U=h4?(xa+ya)+a?h'4],[C=(m||U)♁H3(V)],[h2=H2][(IDa,R,C)],[S=a?(xa+ya+h2)-1]。最后,签密密文为[σ=(h2,S,C)]。
  (4)解签密。接收者[IDb]计算[h1a=H1(IDa,Xa,Ya)],[R=(Xa?Ya?Ph1apub?gh2)S],[V=R(xb+yb)],恢复消息[m||U=C♁][H3(V)]。然后计算[h4=H4(IDa,m,Xa,R)],[h'4=H4(IDa,m,][Ya,R)],验证等式[gU=(Xa?Ya?Ph1apub)h4?Rh'4] 和[h2=H2(IDa,R,][C)]是否成立。成立则接受[m],否则拒绝。
  1.2 对原方案的伪造性攻击
  设计一个[AII]攻击者的伪造性攻击。设发送者为[IDa],接收者为[IDb],[AII]随机选取[r'a∈Z*q],计算[Y'a=][gr'a(Xa)-1]。对任意消息[m'∈{0,1}L2],[AII]随机选取[a∈Z*q],计算[R=ga],[h1b=H1(IDb,Xb,Yb)],[h4=H4(IDa,m',Xa,R)],[h'4=H4(IDa,m',Y'a,R)],[V=(Xb?Yb?Ph1bpub)a],[U=h4?(r'a+s?][H1(IDa,Xa,Y'a))+a?h'4],[C=(m'||U)♁H3(V)],[h2=H2(IDa,][R,C)],[S=a?(r'a+s?H1(IDa,Xa,Y'a)+h2)-1]。最后,伪造的签密文为[σ=(h2,S,C)]。
  接收者[IDb]收到[σ=(h2,S,C)]后,计算[h1a=H1(IDa,][Xa,Y'a)],[R=(Xa?Y'a?Ph1apub?gh2)S][=(Xa?gr'a(Xa)-1?Ph1apub?gh2)S][=(gr'a?Ph1apub?gh2)S],[=(gr'a+s?H1(IDa,Xa,Y'a)+h2)S=ga],[V=R(xb+yb)],由此[IDb]可以正确地恢复消息[m'||U=C♁H3(V)]。然后计算[h4=H4(IDa,m',Xa,R)],[h'4=H4(IDa,m',Y'a,R)],[(Xa?Y'a?][Ph1apub)h4?Rh'4=(Xa?gr'a(Xa)-1?Ph1apub)h4?Rh'4][=(gr'a?Ph1apub)h4?Rh'4=][gh4?(r'a+s?H1(IDa,Xa,Y'a))+a?h'4=gU],从而验证等式[gY=(Xa?Y'a?][Ph1apub)h4?Rh'4]成立。显然另外一个验证等式[h2=H2(IDa,R,][C)]也是成立的,从而伪造的[σ=(h2,S,C)]合法。
  1.3 改进方法
  用户[IDa]的公钥由两部分组成,一部分是用户自己计算的部分公钥[Xa],另一部分是KGC计算的部分公钥[Ya]。这两部分公钥都没有证书,于是KGC通过替换[Ya]为[Y'a]实施攻击。这样,对于KGC并不需要知道用户的秘密值就可伪造用户签密,从而像基于身份的密码系统一样存在密钥托管问题,没有达到无证书密码目的。这种攻击成功的原因是因为在签密算法中[xa]和[ya]存在简单的线性关系。
  当然这种伪造性攻击可以被[IDa]否定。[IDa]出示部分私钥[Ya]和[ya],通过验证[gya=Ya?PH1(IDa,Xa,Ya)pub]等式可以确定[Ya]和[ya]的正确性,从而说明[Y'a]不正确,这样一来[IDa]的密钥也就暴露了。另外,对于接收者只要签名就能通过验证等式,其不会去与签名者确认[Y'a]是否正确,而对于接收者在自动执行程序时这种攻击更有效。
  一种可能的改进方法是在[ya]前加上另外一个Hash值,比如[h4=H4(IDa,m,Xa,Ya,R)],即在签密阶段把原方案的[U=h4?(xa+ya)+a?h'4]改成[U=h4?xa+h4?ya+a?h'4]。这种改进没有改变方案所基于的困难问题,所以采用与原方案类似的证明方法,改进方案具有安全性。   改进方案比原方案多了一次hash计算,而hash计算时间与指数运算相比可忽略不计[19],因此改进方案是高效的。
  2 无双线性签密方案
  2.1 原方案
  (1)系统初始化。给定安全参数[k],KGC生成一个阶为素数[q?(q>2k)]的循环群[G]。设[P]是[G]的一个生成元,KGC随机选取[s∈Z*q]作为主密钥,计算[Ppub=s?P]。KGC选取3个安全Hash函数:[H0:{0,1}L1×G×G→Z*q],[H1:{0,1}L1×][G×G→{0,1}L2],[H2:{0,1}L1×{0,1}L2×G×G][→Z*q] 。其中,[L1]為身份[ID]的比特长度,[L2]为明文消息[m]的比特长度。KGC定义一个特殊函数[Fun(A,ID)=0,?ID=?A,?其它],其中[A]为非0的任意值,[ID]为身份标识,[?]表示空。则系统公开参数为[Params={q,G,P,Ppub,][Fun(),H0,H2,H2}],KGC保密主密钥[s]。
  (2) 用户密钥生成。①用户[IDi]随机选取[xi∈Z*q]作为秘密值,计算[Xi=xi?P]。用户发送[IDi]和[Xi]传给KGC;②KGC随机选取[ri∈Z*q],计算[Yi=ri?P],[yi=s+ri?H0(IDi,][Xi,Yi)]。KGC将[yi]通过安全信道发送给[IDi],则[IDi]的公钥为[PKi=(Xi,Yi)],私钥为[SKi=(xi,yi)]。[IDi]通过验证等式[yi?P=Ppub+Yi?H0(IDi,][Xi,Yi)]确定部分私钥和部分公钥的正确性。
  (3) 广义签密。设发送者为[IDa],接收者为[IDb],[m∈{0,1}L2]。[IDa]随机选取[a∈Z*q],计算[R=a?P],[V=a?][(Xb+Yb?H0(IDb,Xb,Yb)+Ppub)] , [h=Fun(H1(IDb,R,V),IDb)],[c=m♁h],[h2=H2(IDa,c,Xa,R)],[h'2=H2(IDa,][c,Ya,R)] ,[sig=Fun(ya+h2?xa+h'2?a,IDa)]。最后,签密文为[σ=][(R,sig,c)]。①假如[IDa=?]且[IDb≠?],则[sig=0]。[σ=(R,][sig=0,c)]是一个加密;②假如[IDa≠?]且[IDb=?],则[h=0]。[c=m♁h=m♁0=m]。[σ=(R,sig,c=m)]是一个签名;③假如[IDa≠?]且[IDb≠?],则[σ=(R,sig,c)]是一个签密。
  (4)解广义签密。①如果[sig=0],则[σ=(R,sig=0,c)]是一个加密。接收者[IDb]计算[V=(xb+yb)?R],[h=H1(IDb,][R,V)],恢复消息[m=c♁h];②如果[c=m],则[σ=(R,sig,][c=m)]是一个签名。接收者计算[h2=H2(IDa,][c,Xa,R)],[h'2=H2(IDa,c,Ya,R)],验证等式[sig?P=Ppub+][Ya?H0(IDa,][Xa,Ya)+h2?Xa+h'2?R] 是否成立。成立则接受签名,否则拒绝;③[σ=(R,S,C)]是一个签密。接收者[IDb]计算[h2=H2(IDa,c,Xa,R)],[h'2=H2(IDa,c,Ya,R)],验证等式[sig?P=Ppub+Ya?H0(IDa,Xa,Ya)+h2?Xa+h'2?R]是否成立。如果等式不成立,则[IDb]拒绝该签密;否则计算[V=(xb+yb)?R],[h=H1(IDb,R,V)],恢复消息[m=c♁h]。
  2.2 对原方案的机密性攻击
  这里显示方案在加密模式下不具有作者所称的机密性。根据原文安全模型,攻击者取[IDa=?]且[IDb≠?]。攻击者选择两个等长的消息[(m*0,m*1)]发送给挑战者。 挑战者选择一个随机比特[η∈{0,1}],计算[m*η]的挑战密文[σ*=(R*,sig*=0,c*)]返回给攻击者,于是有[c*=m*η♁h*]。攻击者任取一个[m∈{0,1}L2],计算[c'=m♁c*]。则攻击者生成一个与挑战密文不同的新密文[σ'=(R*,sig*=0,c')]。攻击者要求挑战者解密。显然挑战者返回的解密结果是[m♁m*η]。由于知道[m],攻击者就可计算出[m*η],从而正确猜测出[η]值。
  2.3 讨论与改进
  广义签密算法可应用于加密、签名和签密3种模式,在讨论安全性时要分别讨论加密的安全性、签名的安全性和签密的安全性。在加密模式下没有把一个IND-CPA(indistinguishability-chosen plaintext attack)安全方案转化为IND-CCA2(indistinguishability-chosen ciphertext attack)的一般方法,比如增加Mac(message authentication code)或增加一次性签名等,因而通过本文给出的攻击显示方案达不到IND-CCA2安全。一种改进是把[sig=Fun(ya+h2?xa+][h'2?a,IDa)]改成[sig=Fun(ya+h2?xa,][IDa)+h'2?a]。这样在加密模式下[sig≠0],从而在解密算法中就有个约束条件,要验证等式[sig?P=h'2?R]是否成立。由于改进方案不改变算法所基于的困难问题,所以采用与原方案类似的证明方法,改进方案安全性得以证明。
  由于改进方案与原方案相比没有增加任何其它计算量,因此改进方案与原方案一样是高效的。
  3 结语
  本文分析了一个无双线性对的无证书签密方案和一个无双线性对的无证书广义签密方案,指出前一个方案存在伪造性攻击而后一个方案存在机密性攻击。分析了原方案不安全的原因并给出了一种可能的改进。分析了改进方案的效率,结果表明改进方案是高效的。下一步的工作是研究标准模型下的高效方案。   参考文献:
  [1] ZHOU C X. Identity based generalized proxy signcryption scheme[J]. Information Technology and Control, 2016, 45(1): 13-26.
  [2] CHEN Y C, TSO R. A survey on security of certificateless signature schemes[J]. IETE Technical Review, 2016, 33(2): 115-121.
  [3] LI F G, HAN Y N, JIN C H. Practical signcryption for secure communication of wireless sensor networks[J]. Wireless Personal Communications, 2016, 89(4): 1391-1412.
  [4] WEI G Y, SHAO J, XIANG Y. Obtain confidentiality or/and authenticity in big data by id-based generalized signcryption[J]. Information Sciences, 2015(318): 111-122.
  [5] DU H Z. Efficient certificateless signcryption from bilinear pairings[J]. International Journal of Security and its Applications, 2016, 10(4): 303-316.
  [6] ZHOU C X, ZHOU W, DONG X W. Provable certificateless generalized signcryption scheme[J]. Designs, Codes and Cryptography, 2014, 71(2): 331-346.
  [7] 李發根,吴威峰. 基于配对的密码学[M]. 北京:科学出版社,2014.
  [8] CHEN L, CHENG Z, SMART N P. Identity-based key agreement protocols from pairings[J]. International Journal Information Security, 2007,6(4): 213-241.
  [9] SELVI S S D, VIVEK S S, RANGAN C P. Cryptanalysis of certificateless signcryptionn scheme and an efficient construction without pairing[C]. 5th International Conference on Information Security and Cryptology (Inscrypt). Beijing: Springer-Verlag, 2009: 75-92.
  [10] 朱辉, 李晖,  王育民. 不使用双线性对的无证书签密方案[J]. 计算机研究与发展, 2010, 47(9): 1587-1594.
  [11] 刘文浩, 许春香. 无双线性配对的无证书签密方案[J]. 软件学报, 2011, 22(8): 1918-1926.
  [12] JING X. Provably secure certificateless signcryption scheme without pairing[C].2011 International Conference on Electronic & Mechanical Engineering and Information Technology. Harbin: IEEE, 2011: 4753-4756.
  [13] 何德彪. 无证书签密机制的安全性分析[J]. 软件学报, 2013, 24(3): 618-622.
  [14] 周才学, 王飞鹏. 改进的无双线性对的无证书签密方案[J]. 计算机科学, 2013, 40(10): 139-143.
  [15] SHI W B, KUMAR N, GONG P, et al. Cryptanalysis and improvement of a certificateless signcryption scheme without bilinear pairing[J]. Frontiers of Computer Science, 2014, 8(4): 656-666.
  [16] 邹昌芝. 可证安全的无证书签密方案[J]. 计算机应用与软件, 2016, 33(3): 327-333.
  [17] 周彦伟, 杨波, 张文政. 不使用双线性映射的无证书签密方案的安全性分析及改进[J]. 计算机学报, 2016, 39(6): 1257-1266.
  [18] 周彦伟, 杨波, 张文政. 可证安全的高效无证书广义签密方案[J]. 计算机学报, 2016, 39(3): 543-551.
  [19] HE D B, CHEN J H, HU J. An ID-based proxy signature schemes without bilinear pairings [J]. Annals of Telecommunications, 2011, 66(11-12): 657-662.
  (责任编辑:杜能钢)
转载注明来源:https://www.xzbu.com/8/view-14904362.htm