论文部分内容阅读
PKI系统作为提供互联网安全的底层架构,其管理的核心就是数字证书。国际上,数字证书采用的密码算法大多是RSA,然而,随着计算机运算的速度越来越快,密码产品中RSA的位数也越来越长,在提供同等安全程度的环境下,使用ECC的密钥位数比RSA短的多;与此同时,在ECC的基础上我国自主设计了一套商用密码算法SM2,随着对信息安全的日益重视,SM2的商用价值会逐步呈现,采用SM2算法生成的证书也将日益流行。因此,对SM2证书的撤销与验证将是PKI系统对证书进行管理的最重要任务。目前获取证书有效性最常用的方式是CRL(Certificate Revocation List,证书撤销列表),但这种方式有着内在的不足,单纯对它的改进仍然无法克服CRL的缺陷。随着网络交易的迅猛发展,CRL已经无法满足实时交易的需求。此时,OCSP(Online Certificate Status Protocol,在线证书状态协议)作为一种可以实时查询证书有效性的协议,能够帮助用户更及时的获取到证书的状态信息。本文在OpenSSL开源库的基础上扩展了支持商密SM2算法的密码卡设备,设计并实现了一套基于OCSP协议的证书状态查询系统,该系统具有易维护、可重用、可扩展和通用性等特点。本文采用了模块化的思想,将系统分成三个相对独立的模块,即Responder响应器、密码运算模块和CRSA(Certificate Revocation Status Administrator,证书撤销状态管理者)模块,提高了代码的可扩展和可重用性。其中,Responder响应器采取的方法是在流行的Apache服务器中设计一个证书状态查询模块,响应器主要实现了以下四个方面:OCSP模块数据结构的设计、服务端配置结构的设计、挂钩(包括内容生成器挂钩)的设计实现以及配置指令的设计。本文中将OCSP响应器内嵌于主流的web服务器中,以支持海量高并发的实时证书有效性查询请求。密码运算模块主要采用支持国家商密SM2算法的密码卡,密码卡中提供了一套满足国家密码设备规范的标准API接口。本文借助OpenSSL开源库的动态引擎机制,在OpenSSL中添加对密码卡的调用,然后通过OpenSSL的统一调用接口来进行调用,从而提高了密码运算模块的独立性。从证书撤销库中获取证书查询结果后,调用通用接口(EVP)即可对查询结果进行签名运算。CRSA模块,完成了对撤销证书的管理。证书撤销管理模块主要实现了以下四个方面:配置文件的读取、LDAP的连接和认证、CRL的获取、时间(lastUpdateTime)条目和证书撤销信息条目的构建和修改。该模块相对于响应器能够透明的运行,降低了服务器的处理负荷。最后,本文讨论了证书状态查询系统的优点和不足之处,并在此基础上展望了该系统可以改进的几个方面,期望该系统能够得到进一步的完善。