《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 基于XKMS的证书验证机制的研究与实现
基于XKMS的证书验证机制的研究与实现
陈 莉1,2,张浩军1,3,庞红玲1,祝跃飞1
1.信息工程大学 网络工程系,河南 郑州450002; 2.河南财经学院 计算中心,河南 郑州450
摘要: 提出了一种基于XKMS的证书验证机制,设计了集成在XKMS服务中的证书验证服务模块,描述了证书路径验证算法,改进了XKMS-OCSP机制,并给出了证书验证的过程。
Abstract:
Key words :

摘   要: 提出了一种基于XKMS证书验证机制,设计了集成在XKMS服务中的证书验证服务模块,描述了证书路径验证算法,改进了XKMS-OCSP机制,并给出了证书验证的过程。
关键词: 公钥基础设施  证书验证  XML密钥管理规范(XKMS)  在线证书状态协议

  公钥基础设施(Public Key Infrastructure,PKI)是一种应用公钥密码技术提供安全服务、具有普适性的安全基础设施。目前已得到成熟定义和广泛应用的PKI技术标准有PKCS系列、ITU/IEO-T X.509、PKIX系列及WPKI标准等,在此统称为传统PKI(Traditional PKI,TPKI)。TPKI基于抽象语法符号ASN.1描述,采用BER/DER进行编码。实践表明TPKI存在部署复杂繁琐、成本高昂、互联互通困难等问题。针对上述问题,W3C推出了XML密钥管理规范[1](XML Key Management Specification,XKMS)。通过实现XKMS与TPKI的无缝连接,可进一步推广PKI技术的应用,而应用的关键问题之一是解决基于XKMS的证书验证。
1  XML密钥管理规范
  XKMS为用户提供新一代的密钥管理服务,降低了客户端应用程序开发和部署的复杂性。它通过与TPKI服务进行接口,为网络应用提供了可以互操作的安全基础设施。XKMS包括2个部分:(1)XML密钥信息服务规范(XML Key Information Service Specification,XKISS),定义了密钥定位和密钥验证2种服务,为XML应用程序提供密钥处理服务,简化了XML应用程序的负担。(2)XML密钥注册服务规范(XML Key Registration Service Specification,XKRSS),为XML应用程序密钥对注册提供了一种机制,并定义了密钥的注册、重新发布、撤销及恢复等服务。
2  基于XKMS的证书验证机制
2.1 基于TPKI的证书验证
  TPKI 安全体系使用数字证书绑定对象(服务、资源、应用)的密钥与身份标识提供认证和授权服务。在使用证书之前,必须使用证书撤销列表(Certificates Revocation Lists,CRL)、在线证书状态协议[2](Online Certificate Status Protocol,OCSP)和简单证书验证协议[3](Simple Certificate Validation Protocol,SCVP)等机制对其进行有效性验证。证书验证包括如下内容:(1)证书中CA数字签名的有效性。(2)证书完整性。(3)证书有效期。(4)证书是否被撤销。(5)证书的使用方式与任何声明的策略/使用限制的一致性。(6)证书的用途是否与创建它的目的相符。
  具体应用时采用的验证策略不尽相同,但大多数策略都被设计成对尽可能多的内容进行验证。
2.2 基于XKMS的证书验证机制设计
  目前XKMS还不可能取代TPKI,通过实施二者的无缝连接可进一步推广PKI技术的应用,而实现这一目标的关键问题之一是解决基于XKMS的证书验证。集成证书验证服务模块(Certification Validation Service Module,CVSM)的XKMS服务系统架构如图1所示。CVSM使用TPKI的OCSP、SCVP等机制响应客户端的证书验证请求。

  CVSM包括了6个子模块(图1虚线框部分)。其中,证书路径验证模块(Certificate Path Validation Module,CPVM)、证书状态检查模块(Certificate Status Check Module,CSCM)和证书路径建立模块(Certificate Path Construction Module,CPCM)用于证书路径验证;证书路径管理模块和证书/CRLs控制器模块用于提高证书验证效率;证书策略管理模块则用于管理证书策略以及策略映射信息。下面具体介绍其中3个重要模块。
2.2.1 证书路径验证模块
  CPVM负责对主体身份、主体公钥和可能在证书路径中提交的主体属性的绑定等项进行验证,从而确定路径中的证书是否已被撤销,证书路径验证流程如图2所示。具体步骤如下:

  (1)客户端产生证书路径验证请求,请求中可以包括客户的信任锚或验证策略。(2)证书路径验证有2种情况:一种是服务器在数据库的证书路径表中检索到客户需要验证的证书路径,服务器返回路径有效的验证结果;另一种情况是服务器检索证书路径失败,此时服务器获取请求中包含的客户信任锚并调用CPCM来建立以客户信任锚为起点的证书路径。若证书路径建立成功,则检查客户请求中是否包含验证策略约束。如果包含,则服务器端使用验证策略约束来验证证书路径,并且调用CSCM检查证书状态;否则,服务器端只需检查证书状态即可。(3)如果上述第二种情况成功执行而且获得了经过验证的证书路径,则将此证书路径保存到证书路径数据库中供以后查询;否则,服务器端处理异常操作,产生一个失败响应,并将失败原因记录到日志文件。
2.2.2 证书状态检查模块
  CSCM进行证书状态检查时,首先连接系统的证书/CRLs库。然后检索客户证书:若检索成功,则查看客户证书的状态标识位,若标识位值为“有效”,调用CPVM对客户证书路径的有效性进行验证,否则将包含“证书无效”的应答消息返回给客户端;若检索失败,则通过TPKI实现证书状态检查。具体做法如下。(1)获取证书:与TPKI 交互获取客户证书。(2)检查证书状态:使用CRL/OCSP对获取的客户证书进行状态检查。(3)将客户证书存入系统的证书/CRLs库。(4)在库中记录客户证书的状态,以便下次进行证书状态检查时使用。
2.2.3 证书路径建立模块
  证书路径的建立在验证过程中完成。服务器调用CPCM按照严格的信任层次建立以客户的信任锚为起点的证书路径。
2.3 XKMS-OCSP机制改进
  Moon[4]提出了一种名为XKMS-OCSP的机制,即采用比基于复杂数学问题的数字签名算法至少快10 000倍的单向散列函数对"预生成"应答进行签名(附散列值)。对该机制研究后发现存在以下不足:(1)没有给出具体的实现方式。(2)根据应答中包含的时间来更新散列值不实用。因此,本文提出改进XKMS-OCSP机制实现快速数字签名的措施。核心思想是:OCSP 服务将“预生成”的“散列链”中的散列值作为其数字签名附加到证书验证应答消息中,确保应答消息的真实性和有效性。详细描述如下:OCSP服务执行单向散列函数式(1)和式(2)生成如式(3)和式(4)所示的“有效散列链”或“无效散列链”,并存入数据库备用。
  

  其中:0≤i≤d,d为自然数。
  这里,散列初值T和F是2个秘密随机数,其值仅为OCSP服务(或代理)所知。每个散列链中包含了d+1个散列值,每个散列值 与OCSP服务所生成的应答消息一一对应。
  如果证书路径验证结果为有效,则OCSP服务从数据库中取出如(3)式所示的有效散列链所含的散列值,构建OCSP服务应答消息,发送给XKMS服务。XKMS服务通过计算最多d 次散列函数验证应答结果,判定证书有效。如果证书路径验证结果为无效,则须从数据库中取出如(4)式所示的无效散列链所含的散列值构建应答消息。
  鉴于单向散列函数执行的高效性,同时为了防止OCSP服务重放攻击,可以制定以下散列链管理策略:散列链中的每个散列值只能使用一次,使用后即被删除,散列链长度随即减1。当散列链长度为0时,OCSP服务产生新的秘密随机数,再生成新的散列链备用。发布散列链的最后散列值作为验证散列链的公钥。
由于单向散列函数具有安全性和计算不可逆性等特点,而且其破译或求解难度是指数级的,所以想从Td推导出T使Td=h(T)是极其困难的,而T通常由OCSP服务加密存储,因此,一个OCSP应答的签名Td是不可伪造的。同理可得,Td-1,Td-2,……T0(即h2(T),h3(T),……hd+1(T))都是不可伪造的,这就保证了OCSP服务签名的有效性。为了提高效率,OCSP服务提供者为每个在其注册的XKMS服务器生成一对散列链。散列公钥的更新发布可以使用传统或特定的签名机制。综上所述,使用XKMS-OCSP机制实现数字签名具有高效、灵活、安全和可靠等优点。
2.4 基于XKMS的证书验证机制实现
  下面通过实例给出证书验证的实现过程。XKMS服务收到用户Bob提交的验证Alice证书的请求后,调用OCSP服务(图1中验证协议模块)进行验证。Bob发送的XML格式的请求描述如下:

  OCSP 服务收到验证请求后,先进行验证处理,再对返回的应答消息签名。在进行验证之前,OCSP服务必须做到:与XKMS服务交叉认证、相互注册;采用改进的XKMS-OCSP机制生成2条散列链。证书验证流程如下:
  (1)接收XKMS服务发送的验证请求,调用CPVM验证证书的有效性。
  (2)根据验证结果生成与验证请求类似的XML格式的验证应答<ValidateResult>,其中包含公钥绑定<KeyBinding>、证书<ds:X509Certificate>、密钥用法<KeyUsage>、证书验证状态<Status>、证书验证理由<Valid-Reason>等元素。
  (3)签名应答消息(即附加散列值)。
  (4)发送应答消息。
3  结束语
  本文在介绍基于TPKI的证书验证的基础上,给出了集成证书验证服务模块的XKMS系统架构,以及对应的证书路径验证流程图和证书验证实现算法,为XKMS客户端与已部署的底层TPKI服务提供者之间进行无缝连接提供了一种新的解决方案,有利于PKI的大规模部署。此外,还提出了改进的XKMS-OCSP机制,具有高效、灵活、安全及可靠的特点,对实际开发有一定的借鉴作用。
参考文献
1   W3C Candidate Recommendation.XML Key Management  Specification(XKMS) Version 2.0[EB/OL].http://www.w3.org/TR/2004/CR-xkms2-20040405.2004-04-05
2   X.509 Internet Public Key Infrastructure Online Certificate  Status Protocol-OCSP.http://www.ietf.org/html.charters/pkix-charter.html,1999
3   Housley H,Ford W,Polk W.Internet X.509 Public Key Infrastructure Certificate and CRL Profile RFC3280. http://www.ietf.org/html.charters/pkix-charter.html,2002
4   Namje Park.Development of XKMS-Based Service Component for Using PKI in XML Web Services Environment.  In:Computational Science and Its Applications- ICCSA 2004 International Conference,Assisi,Italy,2004

此内容为AET网站原创,未经授权禁止转载。