更新时间:2024-07-06 21:16
证书吊销列表(Certificate Revocation List,CRL)是在网络中使用公钥结构存取服务器的两种常用方法中的一个。
随着互联网,特别是电子商务和电子政务的迅猛发展,如何有效地保障在开放的网络环境下信息的机密性、完整性、真实性和不可否认性引起了人们的高度关注。公钥基础设施(Public Key Infrastructure,PKI)是公认的解决大型网络环境下信息安全问题行之有效的方案。PKI是一种遵循标准的密钥管理平台,它能够为所有网络应用透明地提供采用加密和数字签名等密码服务所必需的密钥和证书管理,实现和管理不同实体之间的信任关系。证书吊销信息分发是PKI中的一个关键性操作,也是PKI所面临的一大挑战。在由MITRE公司提供的一份报告中指出,证书吊销信息分发是运营大型PKI系统耗费成本最高的部分。此后,相继提出了不少证书吊销信息分发机制。在X.509标准中采纳的是基于证书吊销列表(Certificate Revocation List,CRL)和基于在线证书状态协议(Online Certificate Status Protocol,OCSP)两种。
在Compact CRL方案中,一方面过滤掉在PKI实际运行中不常使用的CRL一些选项;另一方面,对中CRL吊销证书条目字段重新编码,CA签发的每一个数字证书的状态都对应到CRL中吊销证书条目的一个比特位。从而大大减少了CRL的大小,节省了证书吊销信息分发所需要的带宽。
与日常生活中的各种身份证件一样,数字证书可能在过期之前变得无效,原因可能是密钥介质丢失或用户身份变更等。CA需要及时地对此类证书做出吊销的处理,并将吊销证书放入CRL中予以公布,以便用户查询证书的有效性。当用户接收到一个数字证书时,他必须检查这个数字证书是否已经吊销或者挂起。证书吊销信息更新和发布的频率非常重要,如果一个证书已经被撤消而用户仍然继续使用,将会造成极大的安全隐患。两次证书吊销信息发布的时间间隔称为吊销延迟,在证书策略中规定吊销延迟。证书吊销信息分发的方法主要有两种:一种方法是利用周期性发布机制,如CRL、分段和CRLDeltaCRL等;另一种方法不涉及CRL,例如OCSP和链Hash方法。
CRL是一个具有时间戳的列表,在其中列出了所有已经吊销或挂起的数字证书信息。在CRL中包含本次更新日期和下次更新日期两个字段,用户可由这两个日期信息确定当前拥有的CRL是否是最新的,以及管理CRL缓冲区(即在CRL下次更新之前,用户可以一直使用原来的CRL缓冲区)。由于CRL中含有CA的数字签名,因此CRL可以存储于网络上的任何节点。
在CRL方案中,更新的CRL定期被发布到LDAP目录服务器上,以便依赖方可以获悉证书的当前状态,依赖方根据CRL(中是否包含待校验的证书来判断证书的有效性吊销或未吊销)。这一过程分为3个步骤:
在网络的规模不大、证书的吊销率不是很高的情况下,CRL不失为一个简单而行之有效的办法。但是,CRL方法存在如下固有的缺点:
DeltaCRL的基本思想就是不需要每次一个证书吊销就产生一个完整的、潜在会变得越来越大的CRL,而用一个基准CRL(baseCRL)包含某时期(△T)所有已经吊销的证书信息,并以较短的时间间隔(△t)发布一个DeltaCRL,其中仅包括自基准CRL发布以来所增加的吊销证书信息。因此,DeltaCRL的大小要比基准CRL小得多,使得DeltaCRL的发布频率可以比基准CRL高得多,增加证书吊销信息发布的及时性。DeltaCRL方法减小了大CRL小,减少了耗费的平均带宽。但是依赖方要检验某数字证书,必须检查最近时期的基准CRL以及自基准CRL发布以来所有的DeltaCRL。一旦丢失一个DeltaCRL,依赖方需要和服务器重新同步以更新自己CRL缓存。并且DeltaCRL的大小也是随着△t时间内吊销的数字证书数目而变化的,DeltaCRL并不能减少峰值带宽。
为了控制CRL的大小,将CA签发的吊销证书信息分割成若干个CRL段进行分发的方法称为分段CRL方法。分段的策略可以基于不同的因素,如证书序列号的范围,证书吊销的原因,证书的类型等。分段CRL方法通常和数字证书的CRL发行点扩展选项结合。分段CRL方法与CRL方法相比有两个优点:首先,吊销证书信息可以被分成若干个可控的片断以避免庞大CRL的增长;其次由数字证书中的CRL发行点扩展选项可以确定出该数字证书的吊销信息存放位置。但是,分段CRL的大小也是变化的,CRL的峰值请求率不受CRL分段数的影响,并且平均请求率会随着分段数的增加而增大。
在OCSP中,证书吊销信息的认证被委托给OCSP应答器,证书吊销信息的认证不直接由CA的数字签名所担保,而是由CA和(或者)依赖方所信任的OCSP应答器产生的数字签名来保证。CA将CRL(由CA)数字签名发布到OCSP应答器的内部数据库中,当依赖方需要验证证书的状态时,向OCSP应答器提交查询服务请求信息(OCSPRequest),OCSP应答器查询其内部CRL数据库,然后把当前最新的证书状态信息(OCSPResponse)数字签名后发送给依赖方。OCSP方法的缺点在于OCSP应答器必须是可信任的,并且由于OCSP响应必须经由OCSP响应器数字签名来保证完整性,因此会对性能造成一定的影响,甚至造成拒绝服务攻击。
图显示了一个X.509CRLV1的CRL文件结构。CRL文件包括常规部分和证书吊销列表部分。常规部分由编码CRL的版本号、CRL颁发者的甄别名、生效日期、下次更新时间和数字签名算法标识符组成。证书吊销列表部分由吊销的数字证书的序列号和吊销日期构成。在X.509CRLV2中,吊销列表部分还可以包含一些扩展选项,如证书吊销原因代码、挂起指令代码、失效日期和证书发行者。此外,在每个CRL的基础之上还定义了一些CRL扩展,如机构密钥标识符、颁发者别名、CRL号码、DeltaCRL指示器和签发分发点。在CRL中,证书吊销列表所需要的空间和吊销证书数量成正比。随着吊销证书数量的增加,整个CRL文件的大小完全取决于证书吊销列表部分的大小。在X.509CRLV1中,一个吊销证书条目需要30B的空间(其中16B描述证书序列号,14B描述吊销日期)。对于大型PKI系统而言,CRL文件会变得相当大,例如,拥有十万个吊销证书的CRL文件高达24MB。这对于带宽只有33.6kbps的依赖方来说,要下载整个CRL文件至少需要12min。
为了减少CRL的大小,提出新的证书吊销方案Compact CRL。由于依赖方在校验CRL的时候,一般只关心数字证书当前是否被吊销,并不关心数字证书的吊销日期。为此,在Compact CRL中,吊销的数字证书条目只包括吊销的证书的序列号,而不再包含数字证书吊销日期。同时,对吊销的数字证书序列号重新进行编码,不是简单地将要吊销的数字证书的序列号添加到CRL中,而是用一个比特位序列来表示CA所签发的每一个数字证书的吊销状态。该比特序列中的每一比特位代表一个数字证书的吊销状态,若比特位为则1表示相应序列号的数字证书已吊销,若比特位为0,则表示相应序列号的数字证书未被吊销。这样,在X.509CRLV1中需要30B来描述一个吊销的数字证书条目,在Compact CRL1方案中只需要个比特位就能指示一个数字证书的吊销状态,从而大大约化了CRL的大小。