一个可公开验证且前向安全的签密方案喻琇瑛1,2何大可1,2(1.西南交通大学信息安全与国家计算网格实验室,成都610031;2.西南交通大学信息科学与技术学院,成都610031)摘要:签密是实现认证加密的一种新的密码技术,其效率远远高于传统“先签名再加密”认证加密方法。现有的签密方案往往不能像传统方法那样同时提供前向安全性和可公开验证性。本文对一个可公开验证的签密方案进行了改进,提出一个同时具有公开验证性的和前向安全的签密方案。使攻击者不可能通过发送者私钥得到本次及以前通信者的秘密信息,实现了可公开验证性和前向安全性。关键词:签密;前向安全;公开验证;Abstract:Signcryption,asanewcryptographictechnique,itsefficiencyismuchhigherthanthatofthetraditionalmethod“signature-then-encryption”.Butsigncryptionschemesusuallycannotprovidebothforwardsecrecyandpublicverifiabilitysimultaneityasthetraditionalmethoddoes.Ansigncryptionschemesisimprovedandasaresult,apublicverifiablesigncryptionschemeswithforwardsecrecyisproposed.Intheimprovedschemes,theattackswhichobtainthesender’sprivatekeycannotgetanysecretinformationbetweentheseparticipatesbeforethiscommunication.Bythesemethodstheimprovedschemesachievepublicverifiabilityandforwardsecuritysimultaneity.Keywords:signcryption;forwardsecrecy;publicverify;1引言保密性与认证性是密码学中要研究的重要课题,数字签名和加密是密码学的两个基本而重要的功能,其中数字签名具有提供消息完整性、认证性和不可否认性的功能,而加密则可以提供消息的机密性。以往,签名和加密是分开应用的,然而随着信息传输的网络化,网上传输的信息往往同时需要认证和加密。1997年,Y.L.Zheng提出一个新的认证加密方案,称为签密(signcryption),它能在一个逻辑步骤内同时完成数字签名和消息加密,实现保密和认证两项功能,这比传统的“先签名后加密”所需的计算代价与通信代价要小得多,大大减少了计算量与通信量[1,2],非常适合大量数据的认证安全传递。签密的高效性使其得到了广泛的关注,近年来,有许多签密方案提出来。但是,一方面,由于被签密的消息在签名的同时也被加密,不能像一般签名那样被公开验证,另一方面,由于任何得到签密者密钥的人都可以解密本次及以前通信的签密密文恢复出消息,签密方案不具备前向安全性。因此,在文献[3]中指出,设计一个具有公开可验证性和前向安全性的签密方案是公开难题。1998年,文献[4]以Zheng的签密方案为基础,提出了一种签名可公开验证的签密方案-BD签密方案,但该方案依然存在效率和安全问题。为了进一步解决签密的公开验证难题,2000年,文献[6]基于BD方案和文献[5]中的认证加密方案提出了一种可公开验证的签密方案,简称Lee方案。文献[7]对Lee方案进行密码分析研究,发现了其中存在的安全问题,并给出了一个改进方案,简称Zhang方案。本文研究后,将指出该方案不满足前向安全性,因此,在此方案基础上,我们设计了一个具有公开可验证性和前向安全性的签密方案,其他任何人均可验证该签名的有效性。而且,即使签名者的签密私钥丢失,用此私钥签密过的任何消息均不会被指定接收者之外的其他人非法读解,从而保证的方案的前向安全性。本文将首先介绍Lee方案,接着说明文献[7]在此基础上进行改进所得到的Zhang方案,最后在Zhang方案的基础上,给出一个新的可公开验证且满足前向安全的签密方案。2Lee方案方案中系统参数p是一个大素数,q是p-1的一个大的素因子,g*pZ是q阶元素,axqZ和ay=xagmodp是Alice的公钥对,类似地,bx和by是Bob的公钥对,hash是一个单向散列函数,‖表示级联。设Alice要将需要认证加密的消息m*pZ发送给Bob,那么,Alice随机选取整数k*qZ,计算pghashKkmod1,pyhashKkbmod2,c2||||Kmhashm21KKmodp,qcxksamod,并将sc,发送给Bob。Bob接收到sc,后,计算kgmodp=pygqcasmodmod,1Khashpgkmod,pghashKxbkmod2,'m=pKKcmod/21,并验证'm=2||||Kmhashm。当出现纠纷时,Bob将scK,,2给第三方,第三方计算kgmodp=sgqcaymodmodp,1K=hash(kgmodp),'m=/c1K2Kmodp,验证'm=hashm||(||m2K)。3Zhang方案文献[7]对Lee方案进行分析后,指出其不满足不可伪造性,对原方案进行了修改。修改方案中的参数kkDE,是安全的对称加解密算法对,其余参数与Lee方案中的相同。Alice随机选取整数k*qZ,计算pghashKkmod1,2Kpyhashkbmod,mEcK2,pcKhashrmod,1和qrxksamod,并发送src,,给Bob。Bob收到src,,后,计算pygpgraskmodmod,pghashKkmod1,pghashKxbkmod2,恢复消息cDmK2,并验证pcKhashrmod,1。当出现纠纷,Alice否认自己的签密时,Bob将src,,给第三方验证。第三方计算pyghashKrasmod1,验证pcKhashrmod,1即可。4本文方案密钥安全是密码体制安全的关键,而窃取用户的密钥是非法攻击者可能采取的攻击方法之一。在Zhang方案中,如果敌手获取了srcxa,,,,则通过qrxksamod,就可以计算出k,进而由pghashKkmod1,pghashKxbkmod2得到1K和2K,从而解密出前面所有的密文。因此,该方案不具有前向安全性,本文所提出的改进方案如下。方案中未提及的其他参数与Zhang方案相同。Alice的签密过程:随机选取整数k*qZ,计算pghashKkmod1,pyhashKkbmod2,mEcK2,pgRKmod2,pcgKhashrKmod,,21和qpyrxksKbamodmod2。Alice计算传递sRrc,,,给Bob。Bob解签密过程:Bob得到sRrc,,,后,计算BodpgygpgbxRraskmod,pghashKkmod1,pghashKbxkmod2,恢复消息cDmK2,验证pcgKhashrKmod,,21即可。当出现纠纷时,Bob将sRrc,,,发送给第三方验证。第三方计算pRyghashKrasmod1,验证pcRKhashrmod,,1。5方案的安全性分析及性能评价5.1安全性分析(1)机密性关于机密性,要求除了Bob,其他任何人不能从sRrc,,,得到消息。在本方案中,2K是机密性得以保证的关键,因为pyhashKkbmod2pghashbxkmod,由于只有Alice知道k值,Bob知道bx,因此,除了Alice和Bob以外,没有人能算出2K,也就无法获取m(包括在公开验证中)。(2)不可伪造性不可伪造性指任何外部攻击者或内部攻击者都不能伪造一个来自发方的关于某个消息的签密。在文献[7]中,已证明Zhang方案满足机密性、不可伪造性和不可否认性,是一个安全的可公开验证签密方案。其签名用的是Schnorr算法,而Schnorr签名是可证明安全的,即没有人(包括Bob)能伪造消息m的有效签密密文src,,,使得cDmK2,pcKhashrmod,1,其中pyghashKrasmod1,2K=hashpygbxrasmod。不然的话,Schnorr签名就可伪造,这点在文献[7]中给出了证明。在修改方案中也实现了不可伪造性,因为在Zhang方案中,已对其不可伪造性进行了证明,而在本方案中,只增加了一个参数R,R也只出现在1K的计算式中。如果有外部攻击者伪造签名sRrc,,,,由于其没有ax,假设其任选k’,计算pghashKkmod1,2K=pyhashkbmod,在验证时,验证方需要计算pRyghashKrasmod1,要使1K=pggghashKrxsamod2=pghashkmod,在不知道ax的前提下,要想计算一个值1r,使得raryg1相当于解离散对数问题,是不可能的;因此只有Alice可生成有效的签密密文sRrc,,,,这点由公开验证式可证得。(3)不可否认性签密方案的不可否认性是指当发送方Alice否认其曾向接收方Bob发送过消息m的签密时,收方可以在不泄露其私钥的前提下,向第三方提交必要信息进行验证。由于本方案是可公开验证的,任何人都可以验证是否sRrc,,,为Alice生成的有效签密密文,因此只要通过验证,Alice无法否认其签名的消息,从而实现了不可否认性。(4)前向安全性关于前向安全,很多方案提出将r隐藏到指数上,但实际上在进行公开验证时,仍然计算得到了r的值,其方案中只是在验证时将r用另一个符号代替,实际上r同样可以被获取,因此,并没有真正实现前向安全性。在本方案中,攻击者只有获得了1K和2K才能对消息进行解密。设攻击者获取了ax,r,R和s,进行如下攻击:如果想要由2KgR计算出2K相当于解离散对数问题,是不可能的;如果想由式qKrxksamod2,得到k值,由于攻击者仅有ax,r和s,因此攻击者无法计算出k值,也就无法计算出1K和2K来解密前面的消息;且由于解签密需要2K,而签密时pyhashKkbmod2,解签密时pghashKbxkmod2,攻击者不知道k值或xb,因此无法获得2K解密出消息。5.2性能评价关于效率问题,本方案为保证前向安全性,需要多计算一次2KgR,并发送给Bob,但对于计算能力较高的加密方来说,以较小的计算量的增加换取安全性的增加是可以接受的,而对于解密方和验证方来说,由于直接对R进行乘法运算,计算量并没有显著的增加。6结束语签密能在一个合理的逻辑步骤内同时实现保密和认证两项功能,与“先签名后加密”的方法相比效率更高,因而成为实现既保密又认证的传输消息的理想方法之一,得到了广泛的应用,例如电子现金支付、密钥分配等。但是现已公开发表的签密方案大多不同时具有普遍可验证性和前向安全性。本文在一个可公开验证的签密方案基础上,提出一个同时满足公开可验证性和前向安全性的签密方案,它同时满足公开可验证性和前向安全性,解决了文献[3]提出的一个公开问题,从而为签密在电子商务、公平交易、密钥协商等实际中的应用提供了强的理论工具。由于签密的高效性,在现有的许多方案之上,可以进一步研究如何将签密方案与实际应用相结合。参考文献[1]YZheng.Digitalsigncryptionorhowtoachievecost(signature&encryption)cost(signature)+cost(encryption)[C].In:CRYPT