文/李郁林
数字签名是社会信息化的必然产物和需要。一般来说,从真实性的角度来比较的话,现实世界要比网络虚拟世界更容易保证,而数字签名技术是实现身份认证的非常重要的一种手段。因此,对数字签名的需求就显得更加迫切,数字签名的前景越来越广阔。目前,数字签名主要采用的是基于PKI的电子签名,一个数字签名的算法主要涉及到签名算法和验证算法两部分,签名用户利用签名算法实现对一个消息签名,同样,所获得的签名也可以借助公开的验证算法得以验证。数字签名包括有证书的数字签名和无证书的数字签名。
在网上对电子文档进行数字签名和数据传输,首先需要通过身份认证,然后进行数字签名,最后对签名进行验证。PKI提供的服务首先是进行身份认证,通信的双方在网上互相认证身份后,便可发送通过签名的电文数据,接收方接收到由发送方发送的数字签名后则按约定算法进行签名验证。
有证书的数字签名具有签名是可信的、不可抵赖、不可伪造、不可重用和不可变更的,这种体制对用户公钥的认证过程如下:用户首先到证书认证机构(CA)处注册并申请公钥,然后,CA将用户的公钥和用户信息捆绑在一起后把公钥证书颁发给用户,最后在服务器端对用户公钥通过证书的形式来实现认证,CA也通过证书对用户信息进行数字签名。但这种基于证书的技术管理也存在比较明显的缺点,那就是证书管理易造成了计算资源的消耗;
为了克服上述问题,Shamir在1984年首次提出基于身份的公钥密码体制(ID-PKC)。这种体制下的用户公钥实际上是借助于用户的身份或与身份相关的信息而产生的,借助于密码系统中的私钥生成器 (PKG),结合用户身份和系统主密钥信息就可以生成用户私钥。用户的身份和公钥之间的关系是非常密切的,不需要通过证书来认证。同样,这种公钥密码体制也存在致命的缺点,由于私钥生成器(PKG)掌握了所有用户的完整私钥,很容易伪造出用户的签名,达不到签名需要的不可否认性,因此,一个新的问题又产生了,那就是如何托管用户密钥是最安全可靠的。
为了解决这个问题,学者们提出可以根据用户提供的某个秘密信息来生成最终的私钥。这种理论得到了大多数人的认同,无证书公钥密码体制也就是在这种形势下形成发展起来的。这种密码体制结合了有证书和身份两种公钥密码体制的优点,一方面无需证书就可以对公钥进行认证,另一方面不存在密钥托管的问题。虽然无证书公钥密码体制优点明显,但在身份认证的过程中还是需要借助于密钥生成中心(KGC)才能实现,但和身份公钥密码体制不同的是,KGC只给用户提供部分私钥,另一部分私钥则是由用户给出的数据信息值来生成,所以完整的私钥只有用户才知道。因此,在不需要密钥托管情况下就可以达到真正的不可否认性。
一般情况下,无证书数字签名体制的算法由七部分组成。而算法所涉及到的成员有:签名者A、验证者B和密钥生成中心KGC三方面。七部分算法功能描述如下:
(1)系统初始化算法实现的功能是:在系统输入端输入参数,在输出端输出主密钥和系统公开参数。
(2)秘密值生成算法实现的功能是:在系统输入端输入参数和用户身份,在输出端输出用户秘密值。
(3)部分私钥生成算法实现的功能是:在系统输入端输入参数、系统主密钥和用户身份,在输出端输出用户部分私钥。
(4)私钥生成算法实现的功能是:在系统输入端输入参数、用户部分私钥和秘密值,在输出端输出用户私钥。
(5)公钥生成算法实现的功能是:在系统输入端输入参数和用户的秘密值,在输出端输出用户的公钥。
(6)签名算法实现的功能是:在系统输入端输入代签名的消息、用户的身份信息和用户的私钥,在输出端输出一个签名。
(7)验证算法实现的功能是:在系统输入端输入消息、签名、系统公开参数、签名人公钥和身份信息,如果签名为真,则在输出端输出A,否则在输出端输出B。
由于用户公钥的认证是通过证书的形式来实现的,证书产生、存储和管理都会产生额外开销,造成了计算资源的过度消耗,这些都是基于证书的公钥密码体制的缺点,特别是在网络带宽受到限制的情况下。
基于身份的体制把用户的身份或相关信息作为生产公钥的依据,由私钥生成器的主密钥和用户身份共同生成用户的私钥。由于PKG掌握了所有用户的完整私钥信息,实现不了真正的不可否认性;存在用户密钥的托管问题,这些都是这种公钥密码体制的缺点。
结合基于证书和基于身份的公钥密码的优点,无证书公钥密码体制既不需要利用证书对公钥进行认证,又不存在密钥托管问题,因此,可以达到真正的不可否认性。
除此之外,无证书公钥密码体制安全性更高,执行效率更快;同时,因为兼容性高,只要是支持双线性对理论算法的签名方案的实体,那么对无证书数字签名方案也是会支持的。正因为如此,这种数字签名体制应用前景非常广阔,也成为当前网络信息安全领域的一个新的研究热点。
伴随着无证书签名体制的形成和不断发展,各式各样的数字签名方案也被研究出来。这些方案也是经历替代演变的过程。
第一阶段:第一个无证书签名方案由A1—Riyami和Paterson共同提出,但这个方案只是提出了数字签名的实现过程,并没有涉及到安全性分析,它不能防范公钥被替换的攻击,所以该方案存在安全缺陷。这一阶段也有很多其它的无证书签名方案被提出来,但同样都没有给出标准化、形式化的安全性分析证明。
第二阶段:由于第一阶段方案存在着致命的缺陷,Huang等人通过深入研究后,按照标准化的形式首次定义了无证书安全签名方案的模型,并同时给出了安全性等级分析的证明。可惜的是该方案中存在大量的Pairing计算,会过度消耗系统资源,使得该方案的效率大大降低。
第三阶段:自从数字签名安全性模型被提出后,部分学者又提出了一些相对高效,或者无需大量Pairing算法的数字签名方案。这些方案中,大部分是无证书短签名方案,这些短签名方案一方面减少Pairing的运算量,另一方面提高运行效率和系统安全性。由于哈希函数的出现,到目前为止,这些数字签名方案都采用哈希函数作为用于证明数字签名安全的方法,但用这种方法生成的数字签名不仅参数很长,并且执行过程中需要较多的对运算,这对大多数的实体来说是不合适的。因此,有必要构建在标准模型下的高效的可证明安全无证书签名方案,这种方案不仅高效的,而且还能抵抗超级攻击者的。
现阶段,普通的无证书数字签名的方案设计己经有了很大进展,然而对于具有特殊性质的无证书数字签名在安全性分析上研究还不够。现有的特殊数字签名,其安全性只是在弱模型下得到有限的证明。
数字签名体制经历了有证书的数字签名的研究、基于身份的数字签名的研究和无证书数字签名的研究三个阶段。目前,无证书数字签名体制的研究的重点放在数字签名方案上面,一方面普通的无证书数字签名的方案研究较多,而特殊数字签名方案研究较少;另一方面数字签名方案在研究效率方面较多,在研究抵御超级攻击安全性方面较少。本人认为,无证书数字签名技术研究应在安全性方面和特殊数字签名方面进一步加强,这对无证书签名体制的应用具有十分重要意义。