关键字 数字签名 公钥证书认证加密 公钥自证明
随着计算机网络和通信技术的迅速发展,数字签名在电子商务、身份认证等方面广泛应用。数字签名通常是指签名者使用私钥对给定的消息签名,而验证者使用签名者的公钥验证签名。为了保证签名者所公布公钥的可靠性,一些学者们提出了基于证书的认证加密方案[1,2]。假定有一个可信任的第三方CA为其用户颁发公钥证书,签名者用私钥对消息签名,验证者验证签名要进行两次签名验证:第一,利用签名者公钥证书中的公钥验证对消息的签名,第二,验证CA对签名人公钥证书的签名。由于用户的公钥保存在一个权威认证机构的公开密钥目录中,系统很容易遭到主动攻击和假冒攻击,而且CA的网络处理能力也成为制约系统效率的一个“瓶颈”。
针对这一安全隐患,Shamir[3]于1984年提出了基于标识(ID)的密码体制思想。在该密码体制中,用户的标识用作公钥,因此用户的公钥不需要单独的认证证书。但是,该方案中用户的私钥由系统提供的,系统能够冒充用户。Girault[4]于1991年提出自证明公钥的方案,有效解决了认证中心假冒用户地问题。在此方案中,认证中心使用系统的私钥为用户的标识签名,任何用户都能够从签名中推导出用户的公钥,用户的公钥不需要单独的认证证书。与基于标识的认证加密体制相比,自证明密码体制大大减少系统存储空间和计算量,且用户自己选择密钥,认证中心不知道用户的私钥,无法冒充用户,具有更高的安全性。一些学者[5,6,7]对公钥自证明密码体制进行了大量研究,将公钥自证明方案沿用到了电子选举、电子商务等领域。
本文基于Girault自证明公钥的原理,提出了一种新的基于公钥自证明的认证加密方案。该方案中,接受者不需要保存用户的公钥,传送消息之前不需要进行公钥的自证明,消息接收者在恢复消息、验证签名的过程中实现对签名者的身份认证;签名者者不需要发送原消息,只有特定的接收者才能接收签名并恢复消息。而且,认证中心使用私钥为用户公钥签名,避免攻者冒充认证中心伪造公钥签名。
2 方案描述
2.1 系统初始化阶段
在系统初始化阶段,认证中心(CA)负责生成系统参数。CA首先选择两个大素数p和q,使p=2p’ +1和q=2q’+1,其中p’ 和q’也是素数,然后计算n=p*q,及其欧拉函数 φ(n)=(p-l)(q-1)。然后选择一个随机整数e,l<e< φ(n),gcd(e,φ(n) =1, 并计算 d,使得ed=1 mod φ(n) ,接着CA选择一个整数g,g是n=p*q的基元。还公布一个单向hash函数h( )。
CA的秘密参数:p、q、p’ 、q’、φ(n) 以及d,
CA的公开参数:e、n 、g和h( )。
2.2 用户注册阶段
为了使向CA注册的用户获取的公钥证书,而CA不知道用户的私钥,因此用户公钥的分发不能简单地由CA 产生颁布。同时也为了用户身份的匿名要求,对CA也不能暴露,因此公钥证书的产生要由用户与CA共同协商完成。把这个注册过程称之为用户注册协议。
步骤1:用户UA计算hA=h(IDA),其中IDA代表UA的身份标识,且对CA保密,UA以匿名的身份hA向CA提出注册申请;
步骤2:CA检查核实用户hA的身份,若hA通过身份检查,则CA计算rA = g-d mod n,将 rA 传送给UA;
步骤3:UA 收到rA 后,任选一个随机数
作为私钥,计算
,将vA传送给CA;
作为私钥,计算
,将vA传送给CA; 步骤4:CA计算
,则将CA 作为CA颁发的公钥证书,并将CA传送给UA;
,则将CA 作为CA颁发的公钥证书,并将CA传送给UA; 步骤5:UA 接收到UA 发送的CA后,计算
,同时验证等式
是否成立,若成立,则证明在传输过程中参数未被篡改,CA是CA的有效公钥签名。否则,签名无效。
,同时验证等式
是否成立,若成立,则证明在传输过程中参数未被篡改,CA是CA的有效公钥签名。否则,签名无效。 上述注册过程,只有CA才能颁发UA的公钥的证明。因为在注册过程中,CA使用私钥对UA在协议交互过程中产生的一些特定信息进行签名,任何人若不知道CA私钥,是无法伪造的,其安全性程度高。如果攻击者企图获取UA的私钥。那么他将面临求解离散对数的困难。如果攻击者企图伪造CA的公钥证明。那么他将面临求大素数的因子分解的困难。
2.3 签名生成阶段
假定用户UA 对消息M的签名,并将签名的消息传递给指定的接收者UB。消息M签名生成过程如下:
步骤1:UA 向UB发送要进行签名的请求,并将CA, hA 传送给UB;
步骤2:UB 接收到UA的签名请求,将CB 传送给UA;
步骤3:UA 接收到UB 发送的CB后,计算
,然后选择一个随机数k,进行数字签名:
,然后选择一个随机数k,进行数字签名:
步骤4:UA将对消息M的签名(r1 ,r2 , s)送给UB。