第1页共7页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第1页共7页一个可公开验证且前向安全的签密方案喻琇瑛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],非常适合大量数据的认证安全传递。签密的高效性使其得到了广泛的关注,近年来,有许多签密方案提出来。但是,一方面,由于被签密的消息在签名的同时也被加密,不能像一般签名那样被公开验证,另一方面,由于任何得到签密者密钥的人都可以解密本次及以前通信的签密密文恢复出消息,签密方案不具备前向安全性。因此,在文献第2页共7页第1页共7页编号:时间:2021年x月x日书山有路勤为径,学海无涯苦作舟页码:第2页共7页[3]中指出,设计一个具有公开可验证性和前向安全性的签密方案是公开难题。1998年,文献[4]以Zheng的签密方案为基础,提出了一种签名可公开验证的签密方案-BD签密方案,但该方案依然存在效率和安全问题。为了进一步解决签密的公开验证难题,2000年,文献[6]基于BD方案和文献[5]中的认证加密方案提出了一种可公开验证的签密方案,简称Lee方案。文献[7]对Lee方案进行密码分析研究,发现了其中存在的安全问题,并给出了一个改进方案,简称Zhang方案。本文研究后,将指出该方案不满足前向安全性,因此,在此方案基础上,我们设计了一个具有公开可验证性和前向安全性的签密方案,其他任何人均可验证该签名的有效性。而且,即使签名者的签密私钥丢失,用此私钥签密过的任何消息均不会被指定接收者之外的其他人非法读解,从而保证的方案的前向安全性。本文将首先介绍Lee方案,接着说明文献[7]在此基础上进行改进所得到的Zhang方案,最后在Zhang方案的基础上,给出一个新的可公开验证且满足前向安全的签密方案。2Lee方案方案中系统参数p是一个大素数,q是p-1的一个大的素因子,g∈Zp¿是q阶元素,xa∈Zq和ya=gxamodp是Alice的公钥对,类似地,xb和yb是Bob的公钥对,hash是一个单向散列函数,‖表示级联。设Alice要将需要认证加密的消息m∈Zp¿发送给Bob,那么,Alice随机选取整数k∈Zq¿,计算K1=hash(gkmodp),K2=hash(ybkmodp),c=(m||hash(m||K2))K1K2modp,s=(k−xac)mod...