摘要
针对基于认证证书的数字签名方案中公钥集中存储、系统易受主动攻击的局限性,本文提出了一种基于公钥自证明的新型认证加密方案。方案允许用户匿名注册,并获取由用户与证书授权中心(CA)共同生成的公钥证明,通过该证明即可推导出用户的公钥。通信双方的公钥认证与消息签名过程被整合在一起,由消息接收者在验证签名并恢复消息时同步完成公钥认证,从而显著降低了存储空间、通信开销与计算复杂度。
关键字:数字签名 公钥证书 认证加密 公钥自证明 信息安全

系统参数生成:CA选择两个大素数p和q,满足p=2p’+1和q=2q’+1,其中p’和q’也为素数;然后计算n=p*q,及其欧拉函数φ(n)=(p-1)(q-1)。接着随机选取整数e,满足1 用户向CA注册时,需要获取公钥证书,但必须确保CA无法获知用户的私钥,因此公钥的分发不能简单由CA单方面完成。同时,出于匿名性要求,即使是CA也不能泄露用户的真实身份,这就需要用户与CA协作协商生成公钥证书。该注册流程我们称之为用户注册协议。 步骤1:用户UA计算hA=h(IDA),其中IDA代表UA的身份标识,并对CA保密;UA以匿名身份hA向CA提交注册申请。 步骤2:CA验证用户hA的身份,若通过,则计算rA=g-d mod n,并将rA发送给UA。 步骤3:UA收到rA后,随机选取一个数值作为私钥,计算vA,然后将vA传送给CA。 步骤4:CA计算cA,并将cA作为CA颁发的公钥证书返回给UA。 步骤5:UA接收到CA发送的cA后,进行计算,并验证等式是否成立。若成立,说明传输过程中参数未被篡改,cA是有效的CA公钥签名;否则签名无效。 该注册过程中,只有CA能够为其颁发公钥证明。因为CA使用自己的私钥对UA在协议交互中产生的特定信息进行了签名,任何不知道CA私钥的攻击者都无法伪造该签名,安全性较高。若攻击者试图获取UA的私钥,则需要解决离散对数难题;若试图伪造CA的公钥证明,则需面对大素数因子分解的挑战。 假设用户UA要对消息M进行数字签名,并传递给指定接收者UB,签名生成过程如下: 步骤1:UA向UB发送签名请求,并将cA、hA传递给UB。 步骤2:UB收到请求后,将cB返回给UA。 步骤3:UA收到UB发送的cB后,进行计算,然后选取一个随机数k,执行数字签名操作。 步骤4:UA将签名结果发送给UB。 UB收到签名后,执行以下操作: 步骤1:(省略) 步骤2:… 步骤3:验证消息等式,若成立,则接受签名。该消息恢复验证过程同时实现了对UA和UB身份的双向认证。如果消息来自UA,UB使用UA的公钥验证签名,并用自身私钥解密恢复消息,从而完成双向身份认证。 消息恢复等式的正确性证明如下:若UB恢复的消息M正确,则消息验证等式自然成立。 (1)攻击者无法伪造CA的公钥签名。CA为用户UA的公钥签名时使用了自身私钥。任何攻击者不知道UA的公钥,就无法伪造CA的签名——因为仅有CA拥有私钥,能够生成有效的公钥证明。而攻击者若要获取CA的私钥,必须攻克大素数因子分解难题。虽然CA自身可以伪造公钥证明,但若一个用户拥有两个合法的公钥证明,则表明CA不可信赖。 (2)攻击者在不知道UA私钥的情况下,不可能伪造合法签名。攻击者必须获得用户的私钥XA,并截获UB的公钥证明cB,才能冒充UA进行签名。然而攻击者无法获取UA的私有密钥xB,也无法根据消息恢复方程求出M。换言之,只有指定的消息接收者UB才能计算出M,他与消息发送者之间的相互确认依赖于用户公钥的自认证协议。 (3)消息密钥K可重复使用。对于不同的消息M和M1,r2和s各不相同,攻击者无法从签名等式中反推出签名者的私钥。 本文提出的基于公钥自证明的认证加密方案,依据Girault的公钥自证明原理,在Tseng Yuh-Min等人的自证明方案基础上设计,并针对文献[7]指出的Tseng方案缺陷进行了改进。 首先,本方案中CA对用户公钥签名时有效引入了CA的私钥,解决了攻击者可冒充CA生成有效公钥认证的问题。在Tseng的认证加密方案中,CA对用户公钥的证明并未使用CA的私钥,攻击者只要知晓CA的签名等式,就能冒充CA进行签名。而本方案的认证过程引入了CA的私钥,攻击者不知私钥则无法生成有效签名,只有CA自身才能用私钥签发有效的公钥证明。 其次,本方案的消息签名修正了Tseng方案中的缺陷。在Tseng的认证加密签名方案中,r1与r2存在线性关系,由此可计算出gk,进而恢复消息M·gk,但无法直接恢复原始消息M。本方案则避免了这一问题。2.2 用户注册阶段
2.3 签名生成阶段
2.4 消息恢复验证阶段
3 安全性分析
4 方案的比较
