OCSP证书状态查询机制与实现

OCSP证书状态查询机制与实现

2023年6月27日发(作者:)

OCSP证书状态查询机制与实现

吕国忠

【摘 要】证书状态查询是公钥基础设施中最重要的问题之一,OCSP是解决这个问题的一种重要机制.文章分析了CRL协议、OCSP协议、状态缓存、线程池、预签名.设计了一种OCSP服务器的实现方法,详细描述了该设计在具体实现中需要特别注意的几项关键技术,以提高系统的性能和稳定性.

【期刊名称】《电脑与信息技术》

【年(卷),期】2010(018)001

【总页数】3页(P44-45,52)

【关键词】PKI;在线证书状态协议;证书撤销

【作 者】吕国忠

【作者单位】江南计算技术研究所,无锡,214083

【正文语种】中 文

【中图分类】TP393.08

随着电子商务、电子政务的迅猛发展,PKI(Public Key Infrastructure,公钥基础设施)技术的应用越来越广泛。其中数字证书是PKI基础设施中的重要概念,它是用户在网络交易中的电子身份凭证,是一个由权威机构CA(Certificate

Authority)中心发行的。应用系统在使用证书前,必须先验证数字证书的有效性,包括CA对证书的签名值、证书签发者、证书使用策略、证书有效期及证书状态等。其中证书状态是指在证书的生命周期中,由于某些原因(私钥泄露、人员调离等)一些证书会被撤销,被撤销的证书其状态被标识为无效,这就需要一个证书状态查询系统。现有PKI系统所提供的证书状态查询机制主要有两种:基于CRL(Certificate Revoke List,证书撤销列表)的查询机制和基于OCSP(Online

Certificate Status Protocol,在线证书状态协议)的实时查询机制。

CRL是一种最简单、最常用的证书撤销方法。CRL是由颁发证书的CA定期签发的一个由其签名的数据结构,内含该CA撤销的所有证书列表。但CRL在使用过程中有其局限性:

(1)时效性差 由于CRL撤销列表是定时发布的,发布周期往往需要几天或几周,甚至更长,因此在CRL表本次发布后下次发布前撤销的证书,无法准确识别其状态,会给交易带来隐患。

(2)使用效率低 CRL撤销列表是针对CA全生命周期的,每一张撤销的证书会一直在CRL列表中出现,当CA使用时间长,撤销的证书越来越多时,尤其是发生诸如CA密钥泄露或根密钥泄露等严重安全事件时,需要撤销的证书规模很大,CRL表也会变得非常庞大,导致对CRL表的管理及使用需要很大的开销。

(3)维护困难 由于CRL表是离线验证的,应用服务器或应用客户端通过验证CRL表,验证指定证书是否有效。当CRL表失效时,需要应用系统及时更新CRL撤销表,这就对应用系统维护CRL表、CA系统发布CRL表的稳定性提出了更高的要求。

RFC2560“x.509因特网公钥基础设施在线证书状态协议——OCSP”是一个无需证书撤销列表就可以决定一张数字证书当前状态的协议,作为检查定期证书撤销列表的补充,在涉及大量资金的交易或者股票买卖时,必须要获得一些有关证书撤销状态的即时信息,在线证书状态协议(OCSP)使得交易双方可以测定所需要检验证书的(撤销)状态。 下面先对OCSP协议进行分析,然后提出一种证书状态查询系统设计方案。

1 OCSP协议分析

1.1 OCSP协议概述

OCSP是一种相对简单的请求/响应协议,一个OCSP客户端发布一个状态查询请求给一个OCSP服务器,由OCSP服务器返回一个响应给客户端。协议描述了在客户端发布查询证书状态和服务器响应状态之间所需要交换的数据。

·状态请求

一个OCSP请求包含以下数据:

其中证书标识串包含摘要算法标识、签发者公钥、证书序列号等信息。

·状态响应

一个OCSP响应消息的格式如下:

·随机数nonce

状态查询协议通过nonce项来防止重放攻击。随机数nonce很秘密的绑定在请求和响应消息中,请求客户端在状态请求消息的扩展项中设置nonce值,OCSP服务记录每个请求消息的nonce值,并在相应的状态响应消息内也设置该nonce值。OCSP服务器通过对每个nonce值的判别,确定状态请求消息是否为重放攻击消息。

·状态信息签名

OCSP服务器对每个返回客户端的状态响应消息做签名,用来签名证书状态信息的密钥不一定和签名证书的CA密钥相同。CA通过发布一张包含有扩展密钥用途域唯一值的OCSP签名证书,指派OCSP签名权威机构(OCSP服务器),由OCSP服务器对状态信息做签名。 1.2 OCSP服务高可用性及性能要求

(1)OCSP服务器的高可用性 由于OCSP协议采用的是请求/响应实时应答模式,OCSP的高可用性直接影响所有应用系统的正常使用,因此OCSP服务器成为整个信息系统的瓶颈,这对OCSP服务器的不间断运行提出很高的要求。

(2)OCSP服务器的性能 当网络规模变大,用户基数很大时,OCSP服务器的负担会越来越大,对客户端的请求不能及时作出响应会严重影响应用系统的正常使用,因此对OCSP服务器的性能也提出了很高的要求,OCSP服务器响应的性能主要取决于两个方面:从数据库中获取指定证书状态所需时间及对响应消息的签名开销。

2 OCSP服务器的设计

OCSP服务器的性能,主要与OCSP服务获取指定证书的状态及对状态信息签名等开销相关,OCSP服务器的高可用性则对OCSP服务器的持续服务能力提出更高要求。本文提出了一个实现方案,通过多线程、状态缓存、预签名及OCSP服务器的分布部署及网络负载平衡等技术和方法,能够在一定程度上解决OCSP服务器的高可用性和性能要求。

(1)多线程 为了提高OCSP服务器的响应速度,采用多线程技术处理大量的客户端并发请求。为此OCSP服务器需要预先建立一个线程池,每当收到客户端发起的OCSP请求时,就指定空闲线程对其进行处理。通过采用线程池技术,可以大大增加OCSP服务器的并发处理能力,提高系统的响应速度。但在实施时,应充分考虑数据库及签名设备对多线程的支持能力。

(2)状态缓存 是指对访问频度大的证书,在一定时间范围内缓存其状态信息。当客户端发起对该证书状态的又一次查询请求时,直接从缓存中获取该证书状态,而不需要访问数据库,从而提高服务器响应速度。缓存的证书数量可通过配置文件进行配置。但对证书状态的缓存有效时间应该给予限制。

(3)预签名 考虑到OCSP服务器的签名会耗费大量CPU,同时也降低了响应速度,所以可采用将最近签名的消息缓存在内存中的方法,当OCSP服务器收到对同一证书的状态请求时,直接把缓存的签名消息回复客户端,由于不需要给响应消息做签名,可大大提高系统的响应速度。由于对同一证书两次请求的响应消息完全一致,因此响应消息中的响应产生时间,本次更新时间,下次更新时间等也都相同,如果当前时间在下次更新时间之前,该签名消息可以认为是真实的。

预签名不适用大笔资金交易等关键业务系统,也不适用对重放攻击要求相对较严的OCSP服务系统,这些系统要求客户请求中的随机数nonce每次都不同,OCSP服务响应中的nonce也每次不同,否则会被认为是重放攻击消息或假冒的响应消息。

(4)分布式服务 当用户规模较大,部门也比较多时,可采用OCSP服务器分布式部署方式,分散OCSP服务器的压力,如图1所示:

图1 OCSP服务器分布式部署示意图

在CA中心建立OCSP服务系统,它包含CA系统签发的所有证书状态信息;在各部门建立OCSP查询分中心,服务器内只存有本部门用户的证书状态。

·部门内用户状态查询 业务系统查询本部门内用户的证书状态时,直接由部门内的OCSP证书状态查询分中心返回指定证书的状态。

·跨部门用户证书状态查询 业务系统查询本部门以外用户的证书状态时,把状态查询请求发送到本部门的OCSP证书状态查询分中心,由OCSP转发查询请求到CA中心,CA中心返回指定证书状态后,经由本部门的OCSP服务器返回给客户端。

·网络负载平衡 为了提高对OCSP服务器的处理能力及高可用性。可以在每个部门配备两台OCSP服务器,以网络负载平衡群集方式对外提供服务,这样不但可以有效地解决OCSP单服务器的性能限制,而且可以实现故障的快速转移,保证OCSP服务的高可用性以及灵活的扩展性。

3 结束语 OCSP是一种用于查询证书当前状态的在线实时协议。本文在对OCSP协议进行分析的基础上,提出了一个可行的实现方案,按照本方案设计的OCSP证书状态查询系统,能给基于PKI的业务系统提供OCSP服务,同时OCSP服务器在性能及高可用性上也有相应的保障。

参考文献:

[1] 2459:Internet X.509 Public Key Infrastructure Certificate and

CRLProfile

[2] 2560:X.509 Internet Public Key Infrastructure Online

Certificate Status Protocol-OCSP

[3]关振胜.公钥基础设施PKI及其应用[M].北京:电子工业出版社,2009.

发布者:admin,转转请注明出处:http://www.yc00.com/news/1687805088a46549.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信