1、证书撤销方法研究摘 要 PKI 是网络安全的基础,其安全性和可靠性直接影响到上层的网络安全,证书撤销是 PKI 系统中重要的一个方面。本文详细讨论了现存的证书撤销状态信息发布方法, 并结合时戳服务提出了新的解决方案.该方法在现有时戳协议的基础上, 通过时戳提供证书的状态信息,可以有效降低系 统成本,提高系统的工作效率。 关键词 PKI; 证书撤销列表; 时戳服务0 引 言信息安全是日渐得到社会各方注意的热点问题之一。如何在公共网络上保证信息的完整性、机密性和不可否认性是各国推进电子商务、发展网络事业的最大挑战。公钥体制正迅速地成为解决这一问题的基础技术,但它的广泛应用要求有一个公钥基础设施来发
2、布和管理这些公钥值。公钥基础设施( Public Key Infrastructure, 简称 PKI )作为一个普适性的基础设施,能为多种协议和安全应用提供统一接口和底层支撑。它能在没有安全保障的公共网络中实现认证、密钥管理、数字签名和不可否认等服务,从而最大限度地满足网络安全的需要。在网络安全问题日趋严重的今天,PKI 的应用具有非常重要的意义。当密钥对的公钥以证书的形式公布后,在其整个有效期内都应该是可使用的。但是在某些情况下,比如发现或怀疑私钥被损害、用户名称的改变以及主体和 CA 之间关系的变化(比如终止雇佣关系)等,可能需要在密钥的有效期终止之前停止对该密钥的使用。在这些情况下,客
3、户或 CA 需要撤消证书。用户在验证一个证书是否有效时,通常需要验证该证书是否已被撤消,因此证书撤销在 PKI 系统中的重要性不言而喻。由于 PKI 是网络安全的基础,所以其安全性和可靠性直接影响到上层的网络安全,本文详细讨论了 PKI 技术中有关证书撤销的方式,并提出了新的解决方案。1 现存证书撤销方案证书撤销的方法很多,最常用的方法是周期性的发布机制,比如CA 颁发的证书撤消列表(Certificate Revokation List,简称 CRL) 。另一种方法是在线查询机制如在线证书状态协议。在文献3中对现存的证书撤销方法给予了详细说明,在此本文仅对这些方式给以简单介绍。1.1 周期发
4、布机制CRL 是一些带有时戳的被撤消证书的列表。CRL 可以发布在已知的网址上或从 CA 自己的 X.500 目录条目中定期进行发布。每个被撤消的证书在 CRL 中由其证书序列号来确认。CRL 的完整性和可靠性由它本身的数字签名来保障。大规模网络环境中 PKI 的构成是复杂的,往往用于鉴别密钥的不再是一个单独的证书,而是一个证书链。要确认链中的证书的有效性,验证者需要获取与每一个证书相对应的 CRL 并一一加以验证。当 CA 的数量和层次较多时,下载和维护 CRL 就会成为沉重的负担。CRL 是定期发布的,而撤销请求的到达是随机的,从证书撤销请求到新的 CRL 公布之间的不确定的时间差。在这段
5、时间中,被撤销的证书的状态是不一致的。这种不一致会严重影响到证书服务的质量。所以对PKI 系统来说,CRL 的更新和发布频率非常重要。另外随着用户的增加和系统使用时间延续,CRL 列表有可能变得越来越大,最后可能使用户查询起来极不方便。到目前为止,对这个问题的解决方案有如下几种6,7,8:(1)完全 CRL:即所有撤消证书都列在一个 CRL 表里,这只可能适合于那些用户群很小的 PKI 域。(2)CA 撤消列表(ARL):ARL 不包括用户证书的撤消信息,相当于专项专用,因此在用户验证证书路径时会提高效率。(3)CRL 分布点:这是目前最常采用的机制。系统对整个认证空间分区,并将一个单独的 C
6、RL 与每个区联系。这种机制中的区段称为 CRL 发布点或分配点,所有撤消认证的子集就保留在这些点上。分区可以按照撤消原因、撤消证书是 CA 证书还是终端实体证书、用户的姓名等等来进行。每个发布点由一套名称来标识,这组名称可以有多种形式。一旦发布点定义下来,它们就可以包括在证书中,以至于那些必须检查证书状态的应用程序可以访问在证书中 CRL 发布点而不是主 CRL 中指定的 CRL 发布点,与主 CRL 相比,发布点中的 CRL 要小一些,可以加速证书状态检查的过程。CRL 分配点可以通过使用证书中的 cRLDistributionPoints 扩展与证书联系起来。(4) 间接 CRL:它使得
7、在一个 CRL 中发布来自多个 CA 的撤消信息。间接CRL 的使用可以减小用户在进行证书验证过程中需要检索的总的 CRL 的数目。(5) 证书撤消树:这是基于杂凑树概念的一种撤消列表方式。(6) Delta-CRL 扩展:Delta-CRL 允许用户只记录上次完整 CRL 发布后所发生的改变。用户维护着自己的 CRL 数据库,并利用 Delta-CRL 不断更新它。这样避免了下载整个 CRL,节省了通信带宽和计算时间。每次Delta-CRL 发布的时候,CA 都需要同时发布一个完整的 CRL。事实上,这些扩展并没有完全解决 CRL 撤消证书的延迟性问题。1.2 在线检查周期性撤消列表方法的问
8、题之一就是,证书使用系统不能容忍由于时间间隔而造成的撤消通知的延迟。根据应用环境,许多损害来自密钥受损的当天。在理想的情况下,当用户要使用某受损的证书时,他应该马上知道该证书已经受损。通过实时撤消检查或在线状态检查(OCSP),希望确认证书有效性的证书使用系统可以实现和相应的 CA 服务器之间的在线通讯。该通讯将返回关于该证书状态的一条指示。CA 必须实现高度可用的在线服务,这种服务对所有的潜在用户都是可用的,并且必须在安全的环境中提供这种服务。对证书使用系统来说,该通讯在实时性和来源上必须是安全可靠的。这要求对每一次通讯,CA 都产生数字签名,证书使用系统验证该签名。实时状态检查在一些环境中
9、运转良好,特别是在证书主体和证书使用的封闭环境中。但成本可能成为一个问题,尤其当环境的规模扩大时,考虑到服务器需要为每个询问通讯产生一个数字签名,所要求的加密处理资源也将特别昂贵。安全服务器的运作成本(包括所有安全控制的实施)将会很高。2 结合时间戳的证书撤销方案在电子商务中,时间戳服务是一个必不可少的服务,通过时间戳服务为交易双方提供一个可信的交易时间,来标记交易的准确发生时间。RFC 文档 3161 详细规定了 PKI 服务中提供时间戳服务的协议。作为一项重要的服务,时间戳服务同样必须进行安全防护,才能保证时间戳的安全性。时间服务器作为可信第三方 TTP,客户端发送消息 X 的摘要 H(X
10、)到时间服务器,时间服务器获取当前时间 t,并对(H(X),t)进行签字,把时间 t 和签字 SigTSS(H(X),t)回复给客户端。因为所有签字过程都需要一个可信的时间戳,作为签字时间的一个保证。如果把时间服务器与 CA 的证书状态服务器相关联,在客户请求时间戳时,除了原来的时间戳请求消息外,还要求客户提供将要使用的签字证书的序列号,然后时间服务器根据证书的序列号,查询该证书的状态,如果证书已撤消,则不给予时间戳,在没有时间戳的情况下,使用该证书对应私钥的签字是无效的,从而可防止用户欺骗行为。同时在发给用户的时间戳中包含当前时间和用户的签字证书序列号,其他用户在验证签字时,首先验证该时戳是
11、否可信,然后再检查用户签字证书的序列号与该时戳中的用户签字证书序列号是否一致,若一致,就说明签字时用户的签字证书处于有效状态;若不一致,则可怀疑用户有作弊行为,这样,就可以安全地获得用户证书的状态。该方案只需把原时间戳服务协议略加改造即可。(1)签字者在对消息 X 签字前,首先向时间服务器发送请求,获得时间戳,发送消息为:TimeStampReq := SEQUENCE version INTEGER ,messageImprint MessageImprint,reqPolicy TSAPolicyId OPTIONAL,nonce INTEGER OPTIONAL,certReq BOOL
12、EAN DEFAULT FALSE,extensions 0 IMPLICIT Extensions OPTIONAL MessageImprint := SEQUENCE hashAlgorithm AlgorithmIdentifier,hashedMessage OCTET STRING signCertID INTEGER 该消息与 rfc3161 的协议相比增加了只增加了签字证书的序列号,即消息中的阴影部分的内容。(2)时间服务器接受到请求后,首先检查 signCertID 对应的签字证书的有效性,如果有效则按照通常的时间服务进行处理,生成响应消息,发送给签字者。响应消息的格式为:T
13、imeStampResp := SEQUENCE Status PKIStatusInfo,timeStampToken TimeStampToken OPTIONALTSTInfo := SEQUENCE version INTEGER,policy TSAPolicyId,messageImprint MessageImprint,serialNumber INTEGER,genTime GeneralizedTime,accuracy Accuracy OPTIONAL,ordering BOOLEAN DEFAULT FALSE,nonce INTEGER OPTIONAL,tsa 0
14、 GeneralName OPTIONAL,extensions 1 IMPLICIT Extensions OPTIONAL 在这个消息中格式与原来协议的格式一样,只是 messageImprint 使用请求者发送来的 messageImprint,即包含了请求者的签字证书的序列号。时间戳是对 TSTInfo 的签字,包括当前时间和 messageImprint,因此其他用户不能更改时戳中的签字证书的序列号。(3)签字者按照正常时间戳的使用方式使用时间服务器发送来的时间戳,他在对消息 X 签字时务必使用在时戳请求中包含的签字证书序列号对应的证书。(4)其他用户在验证该签字时,首先验证时戳是否
15、正确,然后在验证签字所使用的证书的序列号和时戳 messageImprint 中包含签字证书序列号是否一致,如果一致则表明该证书在使用时是有效的。在一个安全性要求较高的环境中,时间服务器是必须的,其安全性也是必须要保证的,这样把证书状态响应服务与时间服务相连,可以节省状态响应服务器运行的成本,并且证书的使用者也可以通过验证时戳达到验证了证书状态的目的,从而节省了用户的资源和时间。3 结语本文提出的结合时戳服务,提供证书状态信息,可以有效的解决证书撤销带来的问题,同时节约了用户和系统的资源和时间,并且对当前的时戳服务只需做一些小的改进,容易实现。上述关于证书撤消的各种方法具有不同的及时性,可以应
16、用于各种不同的环境。除了成本方面的考虑,最合适的方法还依赖于风险评估。该领域的研究还在继续,新的撤消方法还会不断出现。参 考 文 献1 Housley.R, Fond.W, Polk.W, et al. Internet X.509 Public Key Infrastructure Certificate and CRL ProfileS. (1999-1), RFC 2459.2 Adams C, Farrell S. Internet X.509 Public Key Infrastructure Certificate Management Protocols S. (1999-03)
17、, RFC, 2510.3 Carlisle Adams, Steve Lloyd 著, 冯登国 等译. 公开密钥基础设施概念、标准和实施M. 人民邮电出版社, 2001.1.4 金融系统电子商务联络与研究小组,电子商务安全认证与网上支付M, 人民出版社.2000.4.5 Cain, P., Pinkas, D., and R. Zuccherato, “Internet X.509 Public Key Infrastructure Time Stamp Protocol“,S, rfc3161.6 薛源, 周永彬, 郭建锋, 倪惜珍. 基于 Huffman 算法的证书撤销树J.通信学报. 2005,26(2):45-50.7 王永静, 谢冬青, 陈华勇. 证书撤销机制的分析与设计J. 计算机应用研究. 2004,21(9):147-149.8 刘爱江, 何大可, 许长枫. 基于排队模型的证书撤销机制分析.计算机应用研究J. 2004 ,21(4):68-70.