频 道 直 达 - 新闻 - 培训 - 软件 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 读书 - 博客 - BBS
51CTO.COM_中国最大的网络技术网站
找资料:

5.1.2 XKMS协议

作者: 马恒太等著 出处:电子工业出版社博文视点  2007-12-20 17:17    砖    好    评论   进入论坛
阅读提示:《Web服务安全》第5章详细的介绍了Web服务安全认证和访问控制机制。本文主要介绍的是XKMS协议。

5.1.2  XKMS协议

XKMS协议主要包括两个Web服务和相应的交互协议,一个服务是X-KISS(XML Key Information Service Specification,XML密钥信息服务规范),它主要用来执行公开密钥信任证(Public Key Credential)获取或者有效性验证等操作;另一个服务是X-KRSS(XML Key Registration Service Specification,XML密钥注册服务规范),它主要处理与公开密钥信任证生命周期相关的操作,如公开密钥的注册等。在应用两个服务的过程中,需要一些交互协议来完成,包括同步/异步处理过程、两阶段协议和复合请求等。

1.X-KISS

X-KISS包括两个服务内容,即查询服务(Locate)和有效性验证服务(Validity)。

(1)查询服务

查询服务相当于PKI中的目录服务功能,主要功能就是获取一个密钥及其相关的绑定信息。如获取一个密钥的X.509证书或者PGP证书,但是这些证书的有效性还需要用户自己判断。

【例1】 发送加密邮件。Alice想给Bob发送一封利用S/MIME或者PGP加密的邮件,但是不知道Bob的加密密钥。她可以通过Bob的邮箱地址Bob@example.com调用查询服务,得到Bob的X.509格式的证书。这个例子的基本过程如图5-2所示。

错误!

图5-2 发送加密邮件的基本过程

Aclie发送的请求消息如下:

?xml version="1.0" encoding="utf-8"?
LocateRequest xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
      xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"
      Id="I8fc9f97052a34073312b22a69b3843b6"
      Service="http://www.example.org/XKMS"
      xmlns="http://www.w3.org/2002/03/xkms#"
  http://www.w3.org/2002/03/xkms#KeyName  
  http://www.w3.org/2002/03/xkms#KeyValue
  http://www.w3.org/2002/03/xkms#X509Cert
  http://www.w3.org/2002/03/xkms#X509Chain
  http://www.w3.org/2002/03/xkms#PGPWeb
  http://www.w3.org/2002/03/xkms#PGP
  QueryKeyBinding
    KeyUsage>http://www.w3.org/2002/03/xkms#Encryption

请求消息中包含查询的依据“Identifier=bob@example. com”,同时说明了使用密钥的方式“Application="urn:ietf:rfc:2440"”和“Application="urn:ietf:rfc:2633"”,以及使用PGP(RFC 2440)或者S/MIME(RFC 2633)加密方式。

查询服务的应答消息如下:

?xml version="1.0" encoding="utf-8"?
LocateResult xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
      xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"
      Id="I8ce3809ab23500015cc27704b7eb0912"
      Service="http://www.example.org/XKMS"
      ResultMajor="http://www.w3.org/2002/03/xkms#Success"
      RequestId="I8fc9f97052a34073312b22a69b3843b6"
      xmlns="http://www.w3.org/2002/03/xkms#"
  UnverifiedKeyBinding Id="I809ca03cf85b3cb466859694dbd0627d"
    ds:KeyInfo
      ds:KeyValue
        ds:RSAKeyValue
          ds:Modulus
            3FFtWUsvEajQt2SeSF+RvAxWdPPh5GSlQnp8SDvvqvCwE6PXcRWrIGmV7twNf2T
            UXCxYuztUUClMIy14B0Q+k1ej2nekmYL7+Ic3DDGVFVaYPoxaRY0Y2lV8tOreyn
            WegpFbITXc8V6Y02QfR5O7Pn1/10ElslaF/TF8MQGqYE8=
          /ds:Modulus
          AQAB
        /ds:RSAKeyValue
      /ds:KeyValue
      ds:X509Data
        ds:X509Certificate
          MIICCTCCAXagAwIBAgIQe0Sk4xr1VolGFFNMkCx07TAJBgUrDgMCHQUAMBIxEDA
          OBgNVBAMTB1Rlc3QgQ0EwHhcNMDMwODE1MDcwMDAwWhcNMDUwODE1MDY1OTU5Wj
          AkMSIwIAYDVQQDExlCb2IgQmFrZXIgTz1Cb2IgQ29ycCBDPVVTMIGfMA0GCSqGS
          Ib3DQEBAQUAA4GNADCBiQKBgQDcUW1ZSy8RqNC3ZJ5IX5G8DFZ08+HkZKVCenxI
          O++q8LATo9dxFasgaZXu3A1/ZNRcLFi7O1RQKUwjLXgHRD6TV6Pad6SZgvv4hzc
          MMZUVVpg+jFpFjRjaVXy06t7KdZ6CkVshNdzxXpjTZB9Hk7s+fX/XQSWyVoX9MX
          wxAapgTwIDAQABo1YwVDANBgNVHQoEBjAEAwIGQDBDBgNVHQEEPDA6gBABpU6Rp
          UssqgWYs3fukLy6oRQwEjEQMA4GA1UEAxMHVGVzdCBDQYIQLgyd1ReM8bVNnFUq
          D4e60DAJBgUrDgMCHQUAA4GBAF4jP1gGDbaq3rg/Vo3JY7EDNTp0HmwLiPMLmdn
          B3WTIGFcjS/jZFzRCbvKPeiPTZ6kRkGgydFOuCo5HMAxIks/LtnKFd/0qYT+AOD
          q/rCrwSx+F+Ro2rf9tPpja9o7gANqxs6Pm7f1QSPZO57bT/6afiVm7NdaCfjgMp
          hb+XNyn
        /ds:X509Certificate
        ds:X509Certificate
          MIIB9zCCAWSgAwIBAgIQLgyd1ReM8bVNnFUqD4e60DAJBgUrDgMCHQUAMBIxEDA
          OBgNVBAMTB1Rlc3QgQ0EwHhcNMDMwODE1MDcwMDAwWhcNMTAwODE1MDcwMDAwWj
          ASMRAwDgYDVQQDEwdUZXN0IENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBg
          QCn23HHp+HtXpiyKVSDtdE3dO0r0oLB/H9sxUEkeXB8oMxwbhdcizWH92zrtm1V
          fVtxkfmwF14ZXoyDZHeZXuCOtAfz/mW6s2gmfD45TfFFVGksDGVRNK5XmKXA5sE
          C51RCvaxzGBdGDlCuVPqX7Cq3IcZpRU1IXbi5YzGwV7j6LwIDAQABo1YwVDANBg
          NVHQoEBjAEAwIHgDBDBgNVHQEEPDA6gBABpU6RpUssqgWYs3fukLy6oRQwEjEQM
          A4GA1UEAxMHVGVzdCBDQYIQLgyd1ReM8bVNnFUqD4e60DAJBgUrDgMCHQUAA4GB
          ABDYD4Fwx2dscu+BgYcZ+GoQQtCJkwJEXytb4zlNl7HLFKbXSw4m0blQquIsfsi
          QgFYAQBXSbu7aeUqqmSGHvILu3BGwVOKjxbHfcM4/MefuTtpOpCN40wy3YwwngD
          tHTaIqm8NwS966PE+W9f8kD70q5FNwf+GF/lX9qGc/x435
        /ds:X509Certificate
      /ds:X509Data
    /ds:KeyInfo
    http://www.w3.org/2002/03/xkms#Signature
    http://www.w3.org/2002/03/xkms#Encryption
    http://www.w3.org/2002/03/xkms#Exchange
    UseKeyWith Application="urn:ietf:rfc:2633"
          Identifier="bob@example.com" /
  /UnverifiedKeyBinding
/LocateResult

在返回的查询服务信息中包括了bob@example.com对应的X.509格式证书链,但是查询服务并不负责证书的有效性验证,因此它是一个非验证的绑定“UnverifiedKeyBinding”。

上例说明了如何通过一个交互实体的名字得到相关密钥证书的过程,查询服务的功能远比这个强大,它还可以提供证书格式处理功能。如果一个实体在通信过程中不能够理解一定的证书格式,则可以请求查询服务的帮助。

【例2】 查询服务的证书处理功能。Bob接收到Alice的一个签名邮件。为了验证邮件的真实性,Bob得到了Alice的X.509 v3格式证书。但是他没有处理X.509 v3证书格式的能力,因此无法获取证书中包含的Alice的公钥信息。这时Bob可以请求查询服务的帮助,即将Alice的X.509 v3格式证书发送给查询服务,要求提供其中的公钥信息。

Bob发送的请求消息如下:



      xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"

      Id="I045c66f6c525a9bf3842ecd3466cd422"

      Service="http://www.example.org/XKMS"

      xmlns="http://www.w3.org/2002/03/xkms#">

  http://www.w3.org/2002/03/xkms#KeyValue

 

   

     

       

          MIICEDCCAX2gAwIBAgIQimXeUAxYJbJMady9vV1bLjAJBgUrDgMCHQUAMBIxEDA

          OBgNVBAMTB1Rlc3QgQ0EwHhcNMDMwODE1MDcwMDAwWhcNMDUwODE1MDY1OTU5Wj

          ArMSkwJwYDVQQDEyBBbGljZSBBYXJkdmFyayBPPUFsaWNlIENvcnAgQz1VUzCBn

          zANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0nIsmR+aVW2egl5MIfOKy4HuMKkk

          9AZ/IQuDLVPlhzOfgngjVQCjr8uvmnqtNu8HBupui8LgGthO6U9D0CNT5mbmhIA

          ErRADUMIAFsi7LzBarUvNWTqYNEJmcHsAUZdrdcDrkNnG7SzbuJx+GDNiHKVDQg

          gPBLc1XagW20RMvokCAwEAAaNWMFQwDQYDVR0KBAYwBAMCBkAwQwYDVR0BBDwwO

          oAQAaVOkaVLLKoFmLN37pC8uqEUMBIxEDAOBgNVBAMTB1Rlc3QgQ0GCEC4MndUX

          jPG1TZxVKg+HutAwCQYFKw4DAh0FAAOBgQABU91ka7IlkXCfv4Zh2Ohwgg2yObt

          Y3+6C/BTFGrOEBJDy+DoxJ/NuBF18w3rrrR18xE6jNKYLCQb8zUGk4QOG5Y+HT/

          QTTFvWkiOLXcpTuhnOhXatr42FoYpDkjx2QWK+J5Q2l/Rgjgc/0ZV8U/kD8UuRk

          Xp4AZh7QsiX8AcO0w==

       

     

   

    http://www.w3.org/2002/03/xkms#Signature

 

在请求消息中包含了Alice的证书,同时指出了需要得到密钥的服务功能http://www.w3.org/2002/03/xkms#KeyValue

查询服务的应答消息如下:


      xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"

      Id="I04cd4f17d0656413d744f55488369264"

      Service="http://www.example.org/XKMS"

      ResultMajor="http://www.w3.org/2002/03/xkms#Success"

      RequestId="I045c66f6c525a9bf3842ecd3466cd422"

      xmlns="http://www.w3.org/2002/03/xkms#">

  012f61e1d7b7b9944fe8d954bcb2d946">

   

     

       

         

            0nIsmR+aVW2egl5MIfOKy4HuMKkk9AZ/IQuDLVPlhzOfgngjVQCjr8uvmnqtNu8

            HBupui8LgGthO6U9D0CNT5mbmhIAErRADUMIAFsi7LzBarUvNWTqYNEJmcHsAUZ

            drdcDrkNnG7SzbuJx+GDNiHKVDQggPBLc1XagW20RMvok=

         

          AQAB

       

     

   

    http://www.w3.org/2002/03/xkms#Signature

    http://www.w3.org/2002/03/xkms#Encryption

    http://www.w3.org/2002/03/xkms#Exchange

   

          Identifier="alice@example.com" />

 

在查询服务的应答消息中包含了对应的密钥信息,但是没有对请求证书的有效性进行验证,因此它是一个非验证的绑定“UnverifiedKeyBinding”。


(2)有效性验证服务


有效性验证服务提供了查询服务提供的所有功能,同时,还对返回的各种密钥及绑定信息的有效性负责。如果有效性验证服务在处理客户递交的请求时信息不够,则可以通过底层的PKI服务获取。如果有效性验证服务返回验证有效的结果,表明递交的证书(或者证书链)的颁发者有效。同时证书没有被注销,尚在有效的时间范围内。


【例3】 Bob在接收到Alice的消息后,需要对Alice递交的证书链的有效性进行验证,Bob将该证书链递交给有效性验证服务,有效性验证服务返回结果,验证有效。


Bob发送的有效性验证请求如下:



  http://www.w3.org/2002/03/xkms#X509Cert
  
    
      
        
          MIICEDCCAX2gAwIBAgIQimXeUAxYJbJMady9vV1bLjAJBgUrDgMCHQUAMBIxEDA
          OBgNVBAMTB1Rlc3QgQ0EwHhcNMDMwODE1MDcwMDAwWhcNMDUwODE1MDY1OTU5Wj
          ArMSkwJwYDVQQDEyBBbGljZSBBYXJkdmFyayBPPUFsaWNlIENvcnAgQz1VUzCBn
          zANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0nIsmR+aVW2egl5MIfOKy4HuMKkk
          9AZ/IQuDLVPlhzOfgngjVQCjr8uvmnqtNu8HBupui8LgGthO6U9D0CNT5mbmhIA
          ErRADUMIAFsi7LzBarUvNWTqYNEJmcHsAUZdrdcDrkNnG7SzbuJx+GDNiHKVDQg
          gPBLc1XagW20RMvokCAwEAAaNWMFQwDQYDVR0KBAYwBAMCBkAwQwYDVR0BBDwwO
          oAQAaVOkaVLLKoFmLN37pC8uqEUMBIxEDAOBgNVBAMTB1Rlc3QgQ0GCEC4MndUX
          jPG1TZxVKg+HutAwCQYFKw4DAh0FAAOBgQABU91ka7IlkXCfv4Zh2Ohwgg2yObt
          Y3+6C/BTFGrOEBJDy+DoxJ/NuBF18w3rrrR18xE6jNKYLCQb8zUGk4QOG5Y+HT/
          QTTFvWkiOLXcpTuhnOhXatr42FoYpDkjx2QWK+J5Q2l/Rgjgc/0ZV8U/kD8UuRk
          Xp4AZh7QsiX8AcO0w==
        
        
          MIIB9zCCAWSgAwIBAgIQLgyd1ReM8bVNnFUqD4e60DAJBgUrDgMCHQUAMBIxEDA
          OBgNVBAMTB1Rlc3QgQ0EwHhcNMDMwODE1MDcwMDAwWhcNMTAwODE1MDcwMDAwWj
          ASMRAwDgYDVQQDEwdUZXN0IENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBg
          QCn23HHp+HtXpiyKVSDtdE3dO0r0oLB/H9sxUEkeXB8oMxwbhdcizWH92zrtm1V
          fVtxkfmwF14ZXoyDZHeZXuCOtAfz/mW6s2gmfD45TfFFVGksDGVRNK5XmKXA5sE
          C51RCvaxzGBdGDlCuVPqX7Cq3IcZpRU1IXbi5YzGwV7j6LwIDAQABo1YwVDANBg
          NVHQoEBjAEAwIHgDBDBgNVHQEEPDA6gBABpU6RpUssqgWYs3fukLy6oRQwEjEQM
          A4GA1UEAxMHVGVzdCBDQYIQLgyd1ReM8bVNnFUqD4e60DAJBgUrDgMCHQUAA4GB
          ABDYD4Fwx2dscu+BgYcZ+GoQQtCJkwJEXytb4zlNl7HLFKbXSw4m0blQquIsfsi
          QgFYAQBXSbu7aeUqqmSGHvILu3BGwVOKjxbHfcM4/MefuTtpOpCN40wy3YwwngD
          tHTaIqm8NwS966PE+W9f8kD70q5FNwf+GF/lX9qGc/x435
        
      
    
    http://www.w3.org/2002/03/xkms#Signature
    
  


在该请求消息中,Bob将Alice的证书链发送给有效性验证服务,在证书链中的最后一个证书即Alice的证书。如果验证有效,有效性验证服务会返回Alice的证书。

 

返回的有效性验证服务验证结果如下:



  
    
      
        
          MIICEDCCAX2gAwIBAgIQimXeUAxYJbJMady9vV1bLjAJBgUrDgMCHQUAMBIxEDA
          OBgNVBAMTB1Rlc3QgQ0EwHhcNMDMwODE1MDcwMDAwWhcNMDUwODE1MDY1OTU5Wj
          ArMSkwJwYDVQQDEyBBbGljZSBBYXJkdmFyayBPPUFsaWNlIENvcnAgQz1VUzCBn
          zANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0nIsmR+aVW2egl5MIfOKy4HuMKkk
          9AZ/IQuDLVPlhzOfgngjVQCjr8uvmnqtNu8HBupui8LgGthO6U9D0CNT5mbmhIA
          ErRADUMIAFsi7LzBarUvNWTqYNEJmcHsAUZdrdcDrkNnG7SzbuJx+GDNiHKVDQg
          gPBLc1XagW20RMvokCAwEAAaNWMFQwDQYDVR0KBAYwBAMCBkAwQwYDVR0BBDwwO
          oAQAaVOkaVLLKoFmLN37pC8uqEUMBIxEDAOBgNVBAMTB1Rlc3QgQ0GCEC4MndUX
          jPG1TZxVKg+HutAwCQYFKw4DAh0FAAOBgQABU91ka7IlkXCfv4Zh2Ohwgg2yObt
          Y3+6C/BTFGrOEBJDy+DoxJ/NuBF18w3rrrR18xE6jNKYLCQb8zUGk4QOG5Y+HT/
          QTTFvWkiOLXcpTuhnOhXatr42FoYpDkjx2QWK+J5Q2l/Rgjgc/0ZV8U/kD8UuRk
          Xp4AZh7QsiX8AcO0w==
        
      
    
    http://www.w3.org/2002/03/xkms#Signature
    http://www.w3.org/2002/03/xkms#Encryption
    http://www.w3.org/2002/03/xkms#Exchange
    
    
      http://www.w3.org/2002/03/xkms#Signature
      http://www.w3.org/2002/03/xkms#IssuerTrust
      http://www.w3.org/2002/03/xkms#RevocationStatus 
      http://www.w3.org/2002/03/xkms#ValidityInterval 
    
  


该消息表明证书链的验证有效“ValidateResult”,并且说明证书有效“StatusValue="http://www.w3.org/2002/03/xkms#Valid"”。有效性说明了3个方面的内容,一是证书链上各证书的颁发者有效;二是证书链上的所有证书都没有被注销;三是证书链上的所有证书都没有超过期限限制。


(3)使用X-KISS


X-KISS提供了查询和有效性验证两种服务,一般来说,查询服务负责提供各种密钥以及各种绑定信息,而有效性验证服务负责对各种密钥及其各种绑定信息进行有效性验证。


在使用X-KISS的查询和有效性验证服务时,可以联合使用两种服务。这种情况下有两种不同的配置,一是推荐方式配置(Referral Configuration);二是链方式配置(Chained Configuration)。


在推荐方式配置中,客户首先向查询服务查询有关的密钥和各种绑定信息,然后递交给有效性验证服务进行有效性验证。其基本过程如图5-3所示。
错误!

图5-3 推荐方式配置的基本过程

 

在链方式配置中,有效性验证服务代表客户请求有关的查询服务获取信息,其基本过程如图5-4所示。在链方式中,客户的一些判决由有效性验证服务执行,这样减少了客户的负担,因此它比推荐方式的应用更加广泛。

错误!

图5-4 链方式配置的基本过程

 (4)XKMS服务的查找


如前所述,一个很重要的问题是我们到哪里找到期望的查询服务?一个可能的方法就是使用Web服务目录UDDI。由于在Internet环境下可能有多个UDDI服务,因此到何处查找UDDI服务器仍然是需要解决的问题之一。


通过上面的例子我们可以看出,在查找密钥信息时,要根据对方的一些地址信息,如Bob@example.com。这些地址信息和DNS相关,因此我们可以通过扩展DNS服务来查找需要的查询服务,这个DNS扩展的名字称为“SRV”记录。


【例4】 查找bob@example.com的XKMS服务。首先通过DNS查找bob@example.com的XKMS服务所在的站点pki.example.com,查询bob@example.com的公钥及其相关绑定信息,基本过程如图5-5所示。

错误!

 

图5-5 查找XKMS服务的基本过程

 

一般来说,客户信任有效性验证服务,这样的查找工作可以由有效性验证服务来代替客户执行。


2.X-KRSS


X-KRSS用来管理密钥对的有关信息,包括对密钥生命周期管理的如下操作。
(1)注册:完成密钥对和有关信息之间的绑定。
(2)重签:以前注册过程的密钥及其绑定信息的更新。
(3)注销:注销以前已经注册过的密钥。
(4)恢复:恢复一个密钥绑定。


在X-KRSS中管理的对象是密钥和一些信息的绑定,而不是信任证,这样使得应用程序不需要依赖于特定的底层PKI技术。


(1)注册


密钥绑定信息的第1个步骤就是注册(Registration),注册请求用来声称密钥对和一些信息的绑定。密钥对可以由客户机或者注册服务产生,根据具体的情况而定。如果客户机没有产生密钥的能力,一般由注册服务来产生密钥对;如果客户机用来产生签名密钥对,则可能更加倾向于自身产生。


注册服务在接收请求时,可能需要对请求者进行身份验证。


【例5】 Alice请求为其Alice@example.com注册一个RSA密钥对,假设Alice已经通过了身份验证,验证码是“024837”。


Alice发送的注册消息如下:



  http://www.w3.org/2002/03/xkms#X509Cert
  http://www.w3.org/2002/03/xkms#X509Chain
  
    
      
        
          
            0nIsmR+aVW2egl5MIfOKy4HuMKkk9AZ/IQuDLVPlhzOfgngjVQCjr8uvmnqtNu8
            HBupui8LgGthO6U9D0CNT5mbmhIAErRADUMIAFsi7LzBarUvNWTqYNEJmcHsAUZ
            drdcDrkNnG7SzbuJx+GDNiHKVDQggPBLc1XagW20RMvok=
          
          AQAB
        
      
    
    http://www.w3.org/2002/03/xkms#Signature
    http://www.w3.org/2002/03/xkms#Encryption
    http://www.w3.org/2002/03/xkms#Exchange
    
    
    
    
      5AEAai06hFJEkuqyDyqNh8k/u3M=
    
  
  
    
      
        
          
          
          
            
              
            
            
            WCbpkifxJ1zIJ+V6/knZgxRhR34=
          
        
        iJSKM+98hj5ae+btC2WjwBYP+/k=
      
    
  
  
    
      
        
        
        
          
            
          
          
          WCbpkifxJ1zIJ+V6/knZgxRhR34=
        
      
      
        DcPw742vN120QNrCjCKw0jiCX3pUvbMeRkYjktZkn4nbgo1b7leXU0sJgXM2CY/
        oQugaRsgz18+qUzM0UX+jr1t1wtCMci5fjzVKZB63oZyKZ9+CJLcBCbirsgJAId
        +Pq9w4WiwKDf2AytsdXHlN5V1byQIkpfR1CypvBzQa1b4=
      
    
  
 


在注册请求消息中包含一个注册请求元素“RegisterRequest”和另一个身份验证元素“Authentication”表明Alice身份的真实性,即表明alice@example.com是Alice的邮箱。在该元素中包含了身份验证码“024837”,已经对该身份验证码进行了签名。同时还有一个POP元素“ProofOfPossession”,表明注册请求的发送者拥有与请求绑定的公钥相对应的私钥。

 

注册服务接收到该请求消息后,验证请求者的身份及POP元素。如果通过,则表明请求合法,返回相应的密钥和相关信息的绑定结果。


注册服务返回注册信息如下:

 

<?xml version="1.0" encoding="utf-8"?>
<RegisterResult xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"
Id="I92ed24772e43843b3d23020ad9ec9754"
Service="http://www.example.org/XKMS"
ResultMajor="http://www.w3.org/2002/03/xkms#Success"
RequestId="I1494ac4351b7de5c174d455b7000e18f"
xmlns="http://www.w3.org/2002/03/xkms#">
<KeyBinding Id="Ia26450ebe93f62b3b3ab137fc6a61c36">
<ds:KeyInfo>
<ds:X509Data>
<ds:X509Certificate>
MIICEDCCAX2gAwIBAgIQimXeUAxYJbJMady9vV1bLjAJBgUrDgMCHQUAMBIxEDA
OBgNVBAMTB1Rlc3QgQ0EwHhcNMDMwODE1MDcwMDAwWhcNMDUwODE1MDY1OTU5Wj
ArMSkwJwYDVQQDEyBBbGljZSBBYXJkdmFyayBPPUFsaWNlIENvcnAgQz1VUzCBn
zANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0nIsmR+aVW2egl5MIfOKy4HuMKkk
9AZ/IQuDLVPlhzOfgngjVQCjr8uvmnqtNu8HBupui8LgGthO6U9D0CNT5mbmhIA
ErRADUMIAFsi7LzBarUvNWTqYNEJmcHsAUZdrdcDrkNnG7SzbuJx+GDNiHKVDQg
gPBLc1XagW20RMvokCAwEAAaNWMFQwDQYDVR0KBAYwBAMCBkAwQwYDVR0BBDwwO
oAQAaVOkaVLLKoFmLN37pC8uqEUMBIxEDAOBgNVBAMTB1Rlc3QgQ0GCEC4MndUX
jPG1TZxVKg+HutAwCQYFKw4DAh0FAAOBgQABU91ka7IlkXCfv4Zh2Ohwgg2yObt
Y3+6C/BTFGrOEBJDy+DoxJ/NuBF18w3rrrR18xE6jNKYLCQb8zUGk4QOG5Y+HT/
QTTFvWkiOLXcpTuhnOhXatr42FoYpDkjx2QWK+J5Q2l/Rgjgc/0ZV8U/kD8UuRk
Xp4AZh7QsiX8AcO0w==
</ds:X509Certificate>
<ds:X509Certificate>
MIIB9zCCAWSgAwIBAgIQLgyd1ReM8bVNnFUqD4e60DAJBgUrDgMCHQUAMBIxEDA
OBgNVBAMTB1Rlc3QgQ0EwHhcNMDMwODE1MDcwMDAwWhcNMTAwODE1MDcwMDAwWj
ASMRAwDgYDVQQDEwdUZXN0IENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBg
QCn23HHp+HtXpiyKVSDtdE3dO0r0oLB/H9sxUEkeXB8oMxwbhdcizWH92zrtm1V
fVtxkfmwF14ZXoyDZHeZXuCOtAfz/mW6s2gmfD45TfFFVGksDGVRNK5XmKXA5sE
C51RCvaxzGBdGDlCuVPqX7Cq3IcZpRU1IXbi5YzGwV7j6LwIDAQABo1YwVDANBg
NVHQoEBjAEAwIHgDBDBgNVHQEEPDA6gBABpU6RpUssqgWYs3fukLy6oRQwEjEQM
A4GA1UEAxMHVGVzdCBDQYIQLgyd1ReM8bVNnFUqD4e60DAJBgUrDgMCHQUAA4GB
ABDYD4Fwx2dscu+BgYcZ+GoQQtCJkwJEXytb4zlNl7HLFKbXSw4m0blQquIsfsi
QgFYAQBXSbu7aeUqqmSGHvILu3BGwVOKjxbHfcM4/MefuTtpOpCN40wy3YwwngD
tHTaIqm8NwS966PE+W9f8kD70q5FNwf+GF/lX9qGc/x435
</ds:X509Certificate>
</ds:X509Data>
</ds:KeyInfo>
<KeyUsage>http://www.w3.org/2002/03/xkms#Signature</KeyUsage>
<KeyUsage>http://www.w3.org/2002/03/xkms#Encryption</KeyUsage>
<KeyUsage>http://www.w3.org/2002/03/xkms#Exchange</KeyUsage>
<UseKeyWith Application="urn:ietf:rfc:2459" Identifier='C="US"
O="Alice Corp" CN="Alice Aardvark"' />
<UseKeyWith Application="urn:ietf:rfc:2633"
Identifier="alice@example.com" />
<UseKeyWith Application="http://ca.example.com/cps/20030401/class3"
Identifier="alice@example.com" />
<Status StatusValue="http://www.w3.org/2002/03/xkms#Valid">
<ValidReason>http://www.w3.org/2002/03/xkms#Signature</ValidReason>
<ValidReason>http://www.w3.org/2002/03/xkms#IssuerTrust</ ValidReason> <ValidReason>http://www.w3.org/2002/03/xkms#RevocationStatus </ValidReason> <ValidReason>http://www.w3.org/2002/03/xkms#ValidityInterval </ValidReason>
</Status>
</KeyBinding>
</RegisterResult>

(2)重签
当一个密钥和相关信息绑定后,可能需要不断更新。比如在X.509证书中,绑定信息有一个有效期,当超过有效期后,如果该绑定信息还需要继续使用,则需要通过重签(Reissue)。


重签的请求消息和应答消息与注册过程非常类似,注册服务器接收到重签请求后会产生一个新的信任证。


(3)注销


注销服务允许客户注销特定的密钥和各种信息的绑定,客户向注销服务发送注销请求,在请求包中包括需要注销绑定的信任证信息和一个注销授权证明。有两种方式可以实现注销授权,一是通过一个注销码,客户在当初注册时,可以指定一个特别的注销码ID,然后在注销的时候递交注销码来证明自己的注销授权(通过注销码的单向函数处理即可得到注销码ID);二是通过授权的另一方来参与,如通过系统管理员来注销特定的绑定,这时需要递交系统管理员的签名来证明注销授权。


【例6】 Alice请求注销她的一个公钥的绑定。


Alice请求注销一个公钥绑定的消息如下:



  
    
      
        
          MIICEDCCAX2gAwIBAgIQimXeUAxYJbJMady9vV1bLjAJBgUrDgMCHQUAMBIxEDA
          OBgNVBAMTB1Rlc3QgQ0EwHhcNMDMwODE1MDcwMDAwWhcNMDUwODE1MDY1OTU5Wj
          ArMSkwJwYDVQQDEyBBbGljZSBBYXJkdmFyayBPPUFsaWNlIENvcnAgQz1VUzCBn
          zANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0nIsmR+aVW2egl5MIfOKy4HuMKkk
          9AZ/IQuDLVPlhzOfgngjVQCjr8uvmnqtNu8HBupui8LgGthO6U9D0CNT5mbmhIA
          ErRADUMIAFsi7LzBarUvNWTqYNEJmcHsAUZdrdcDrkNnG7SzbuJx+GDNiHKVDQg
          gPBLc1XagW20RMvokCAwEAAaNWMFQwDQYDVR0KBAYwBAMCBkAwQwYDVR0BBDwwO
          oAQAaVOkaVLLKoFmLN37pC8uqEUMBIxEDAOBgNVBAMTB1Rlc3QgQ0GCEC4MndUX
          jPG1TZxVKg+HutAwCQYFKw4DAh0FAAOBgQABU91ka7IlkXCfv4Zh2Ohwgg2yObt
          Y3+6C/BTFGrOEBJDy+DoxJ/NuBF18w3rrrR18xE6jNKYLCQb8zUGk4QOG5Y+HT/
          QTTFvWkiOLXcpTuhnOhXatr42FoYpDkjx2QWK+J5Q2l/Rgjgc/0ZV8U/kD8UuRk
          Xp4AZh7QsiX8AcO0w==
        
      
    
    
  
  PHx8li2SUhrJv2e1DyeWbGbD6rs=

 

在该请求中,Alice递交了一个需要注销的公钥绑定(即一个X.509证书),其Id="Ie91dfbf1c948d5cf142099676968caf1",同时还包含了Alice的注销授权证明“RevocationCode”。注销服务在验证有关的证明材料后登记相应的注销,并返回注销结果,注销成功。


注销服务返回的结果如下:

?xml version="1.0" encoding="utf-8"?
RevokeResult xmlns:ds="http://www.w3.org/2000/09/xmldsig#"
      xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"
      Id="I252433a097631dca9a2775493f39c7d7"
      Service="http://www.example.org/XKMS"
      ResultMajor="http://www.w3.org/2002/03/xkms#Success"
      RequestId="I2aa2c2f37195c9c4364c55f15df68091"
      xmlns="http://www.w3.org/2002/03/xkms#" /
 

(4)密钥恢复


PKI技术采用密码技术来保护信息,这样可以防止各种破坏信息的活动,保护信息的机密性和完整性等。但是这样也带来了一些问题,即密钥丢失问题,如果使用一个客户的公钥对重要数据加密,但是该客户的私钥丢失,从而存在一个密钥恢复的问题。


在实际的使用过程中,客户使用IC卡或者其他硬件设备来保存自己的私钥。这些设备可能损坏,也可能丢失,因此需要考虑私钥的恢复问题。


私钥的恢复一般通过第三方保存的方式实现,即可在第三方处保留客户私钥的一个副本。这样当客户的私钥丢失后,通过第三方来恢复。当然,这样的方式也可能带来安全隐患。如果保存密钥的第三方被成功攻击,可能导致所有的私钥泄露。应该根据具体的情况而定是否采用密钥恢复,在X-KRSS的规范中支持密钥恢复功能。


一般来说,密钥恢复的过程与由服务器产生密钥对的注册过程非常类似。在申请密钥恢复前,客户通过带外方式(Out of Band)通过身份验证,同时得到一个验证码。验证码有两个作用,一是在密钥恢复请求中证明客户的身份;二是从这个验证码可以导出密钥恢复服务器和客户之间的共享对称密钥(具体实现细节,请参照XML Key Management Specification 2.0),恢复的私钥通过对称密钥加密传输。


【例7】 恢复私钥。Bob忘记了自己的私钥,他首先联系密钥恢复服务的管理员通过身份验证,然后使用一个带外的方式进行身份验证得到一个授权码“A8YUT VUHHU C9H29 8Y43U H9J3I 23”,最后通过XKMS向密钥恢复服务请求密钥恢复。


Bob的密钥恢复请求的消息如下:

?xml version="1.0" encoding="utf-8"?
RecoverRequest xmlns:ds="http://www.w3.org/2000/09/xmldsig#" 
      xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" 
      Id="I66f40510c322d281602ce76b9eb04d7d" 
      Service="http://www.example.org/XKMS" 
      xmlns="http://www.w3.org/2002/03/xkms#"
  RespondWith>http://www.w3.org/2002/03/xkms#PrivateKeyAQAB
        /ds:RSAKeyValue
      /ds:KeyValue
    /ds:KeyInfo
    Status StatusValue="http://www.w3.org/2002/03/xkms#Indeterminate" /
  /RecoverKeyBinding
  Authentication
    KeyBindingAuthentication
      Signature xmlns="http://www.w3.org/2000/09/xmldsig#"
        SignedInfo
          CanonicalizationMethod 
                Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" /
          SignatureMethod 
                Algorithm="http://www.w3.org/2000/09/xmldsig#hmac-sha1" /
          Reference URI="#I29cb8ac8a2ad878f7be44edfe53ea77a"
            Transforms
              Transform 
                    Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"
                ec:InclusiveNamespaces PrefixList="ds xenc #default" 
                      xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#" /
              /Transform
            /Transforms
            DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" /
            GfV3xa/OL6EQAoo5sFL/nHQJCeo=
          /Reference
        /SignedInfo
        TtHM/i5L6ynzQHh2Xym8wnbjQ+w=
      /Signature
    /KeyBindingAuthentication
  /Authentication
/RecoverRequest


在请求过程中,Bob发送其公钥信息“ds:KeyInfo”和授权信息“Authentication”。密钥恢复服务验证Bob的身份后,取出其私钥备份。并通过授权码导出共享密钥,把私钥加密后发送给Bob。


密钥恢复服务的响应如下:

?xml version="1.0" encoding="utf-8"?
RecoverResult xmlns:ds="http://www.w3.org/2000/09/xmldsig#" 
      xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" 
      Id="Iacd24dbd4b3c79660f4d26aca7aaaea2" 
      Service="http://www.example.org/XKMS"
      ResultMajor="http://www.w3.org/2002/03/xkms#Success"
      RequestId="I66f40510c322d281602ce76b9eb04d7d" 
      xmlns="http://www.w3.org/2002/03/xkms#">
  KeyBinding Id="I29cb8ac8a2ad878f7be44edfe53ea77a"
    ds:KeyInfo
      ds:KeyValue
        ds:RSAKeyValue
          ds:Modulus
            3FFtWUsvEajQt2SeSF+RvAxWdPPh5GSlQnp8SDvvqvCwE6PXcRWrIGmV7twNf2T
            UXCxYuztUUClMIy14B0Q+k1ej2nekmYL7+Ic3DDGVFVaYPoxaRY0Y2lV8tOreyn
            WegpFbITXc8V6Y02QfR5O7Pn1/10ElslaF/TF8MQGqYE8=
          /ds:Modulus
          AQAB
        /ds:RSAKeyValue
      /ds:KeyValue
    /ds:KeyInfo
    Status StatusValue="http://www.w3.org/2002/03/xkms#Invalid"
      http://www.w3.org/2002/03/xkms#Signature 
      http://www.w3.org/2002/03/xkms#IssuerTrust 
      http://www.w3.org/2002/03/xkms#RevocationStatus 
      http://www.w3.org/2002/03/xkms#ValidityInterval 
    /Status
  /KeyBinding
  PrivateKey
    xenc:EncryptedData Type="http://www.w3.org/2001/04/xmlenc#Content"
                     MimeType="text/xml"
      xenc:EncryptionMethod 
            Algorithm="http://www.w3.org/2001/04/xmlenc#tripledes-cbc" /
      xenc:CipherData
        xenc:CipherValue
          DDSIEvW/tshnuCwCC+jX6y/srzMpt3qCIQ5zXmk/cHN4o/BItHsi9BJF85a3hnN
          C4/aFfPVJ3WgP6vIZNAUaDY2FbAJckWRgWhGku36p7DZTB14vmt5P5C1bXGU5ps
          CDw5Sbm+s/cFkReyfGk6khJTpbgQABPGIZBy2hiZMdSnu0eRgaVUXk9X5oPAhYU
          BjiQRq56ckHgEhkuwa+RiA+ybDNn/Ttjt5Uu5BjCONkOdeE8eJMlu0ykj99Vn7G
          NKUvt86bJsuwu5ZD1vSmVEwUAvHKV09UfVWfcKEINoj30t8Imj9naJ37oVRNPXl
          EKqZY9cxqzHiYEEhu0wxiTMiLbkEyh1DIcLNW78JXpWHRuRTrU5hgNzGEO1pKo7
          1uRT1/lArojeJGCJKAwQJvCDXU9zZSXVLzU/AqUshR3L0AoY8pJ/p+LbmlTh43E
          4TeT0iXNWkLz0mdgWdmwhhZtj8NcP/4auqfpv7+4NAP5OFVOEYJgE1I60F49K9m
          7FbNygiAczfN1YZwjc5lLoIXo75cXduxOZgTWN8ZnFKwrhG1IMhstrauywur6lr
          lyxZ1JXEj2aohE4Msa7HKx1LSzDi3dejtK3ZFRqnJcJ1bQ/liOA1IgonN0wvUaH
          DM9ibo2xUie2DfoSw3kWCDf0bcZEcV33UFNR3w8kOHgpSAwdHJi0pRyHdgfyd8w
          3NzvfCNy9AlrU2MbTdFF7hBxmgFK3fvaX7aEcgdqY17dqkiK75TAwzkVh5WkVjS
          WZGSiN49C8e4bY9zzq33lZwZabd5ts2Dvy3RuKc0hQj2rnCZcowXC+XJ7tVtMG+
          lNu1ykyeYmvR8VI5Ame5h1DFPjoFLAjkt/tUu2uZlqLYoSKvJU4FWNMAXRUge+f
          L3f35lObqwxPJN/LVJgvgGqoMt5hO+/uwgsb3nbR7rTHavPX2kS5LDAtW5xNcfF
          dJz8l+dDjlYBJMN8cgEKnNtHTcnVJ5NiFPsGIFv/3IGUZsiw7M4dff3GN6quv9A
          601e5rqG1ObMT6/7y7T0Z5IBXwiqs4HcdV+kyRfJwX1QpGat3nQsOZ59PTsIt5n
          oKSH0sB5AZmLJa1zgeOILJ574r+F6kD44R32NoLjqu0QL5IqfQ/0lQJuYhn0uEr
          FeZIn/lvjqzgf+rGPtgI5wtZ9Fv3qKrTPJOGM8atkzPkUtyJ8kR+WRhdAdFH9HM
          0PgyrSGjcCGgFIppsN1KJawrvcXokGRzF81cD/3pVaZC/ZIBtvp4DXM2JSLGoa1
          GpLuaIFUP5T/uxFf6MpW2v07bB/jqEZrcsB/ofmvv6RXD/gXrrw99iIiv0k2lyR
          sHDN5/syXglGGeskPvCUOZZ5oXrZruxER/IXKRnlsD+0wJ3JZCSuPy9wYmQk77F
          pynJ5//7w8UA2qWvkZ0B4rKXOgZYp2pCWaZIDknHJoY+VL7J3sQyAp7qlkQxSBj
          bhTEjSYXpHWA+Vj/TiH1ue7/ULlCKfDNvDaWFuEqGT/9H+xUJ5POfTDBhUh+Row
          rwCcfYe71B+pB/tylQEERKNpqqgu3TbNJZk5G8U9p41+PwJ0kw9EZnv+z8UEyFl
          qAZZxj64rTelurPUsiehBFwVwh2fATuMrW9fhGew11npVlF5k+WxE1Cz+          
        /xenc:CipherValue
      /xenc:CipherData
    /xenc:EncryptedData
  /PrivateKey
/RecoverResult


(5)身份验证
在对客户密钥绑定的生命周期管理过程中,很多处都需要验证客户的身份(如客户的注册请求)。在XKMS中有两种身份验证的方式,即数字签名和一次性短语。


当操作者拥有自己的密钥对时,即可通过签名方式来表明自己的身份或者拥有某一属性。如在客户产生密钥对的注册申请中,客户需要递交POP来表明自己拥有相应的私钥。


一次性短语方式是客户和相关服务之间建立信任的基础,通信的双方通过直接接触的方式获得一次性短语,此即客户的身份证明。如在客户注册自己的密钥绑定时,首先需要通过身份验证获得一次性短语,然后在注册请求时递交相关的一次性短语来表明自己的身份。那么,如何产生和得到相关的一次性短语呢?在XKMS规范中没有对此进行规定。用户可以通过带外(Out of Band)的任何方式实现,如通过查验客户的身份证和驾驶执照等。


3.XKMS交互协议


XKMS交互协议包含一个或者多个请求/应答对,并使用SOAP协议传输数据,保持对传输协议的中立。推荐使用HTTP上的SOAP方式,这样是为了提供更好的互操作性。


XKMS交互协议支持异步处理模式、两阶段请求协议和复合请求(Compound Request)等。


(1)异步处理模式


在XKMS交互协议中同时支持同步模式和异步模式,在同步模式下,服务会在接收请求后立即处理并返回处理结果;在异步模式下,服务并不立即处理请求。


在XKMS中异步处理模式非常必要,如在注册服务过程中正式颁发信任证之前可能需要一个额外的身份验证过程。另一种情况就是,同步处理模式下要求客户等待的时间太长。


异步处理模式包括一系列独立的请求/应答对,客户首先发送一个初始请求并将应答机制设置为“Pending”。服务接收到请求后,立即返回一个应答。在后面的过程中,客户再发送Pending请求来查询初始请求的处理结果,如果处理时间比较长,客户可能需要发送多个Pending请求后才能够得到处理结果;如果服务在客户发送Pending期间处理完毕,服务方也可以主动为客户发送处理完毕的通知(Notification)。基本过程如图5-6所示。
错误!

图5-6 XKMS异步处理过程

 

【例8】 用异步处理模式调用查询服务。查询alice@example.org的密钥及相应绑定信息,最后通过Pending请求的方式得到处理结果。


初始请求如下:

?xml version="1.0" encoding="utf-8"?
LocateRequest Id="I6227979ae4073f2b3b145db7a488ce16"
      Service="http://www.example.org/XKMS"
      xmlns="http://www.w3.org/2002/03/xkms#"
  http://www.w3.org/2002/03/xkms#Pending 
  PendingNotification Mechanism="urn:ietf:rfc:822" 
      Identifier="mailto:alice@example.org"
  QueryKeyBinding /
/LocateRequest

 

在初始请求过程中,处理指定查询的条件“alice@example.org”,并且指定了应答机制“xkms#Pending”。


初始请求的应答如下:

?xml version="1.0" encoding="utf-8"?
LocateResult Id="I98366e407a2a78dff79687dbdb4d974c"
      Service="http://www.example.org/XKMS" 
      ResultMajor="http://www.w3.org/2002/03/xkms#Pending"
      RequestId="I6227979ae4073f2b3b145db7a488ce16"
      xmlns="http://www.w3.org/2002/03/xkms#" /

 

在初始应答消息中指定了结果递交机制“xkms#Pending”,并且指定了结果查询的Id“RequestId="I6227979ae4073f2b3b145db7a488ce16"”,后面的Pending请求将根据此Id来查询结果。


Pending请求如下:

?xml version="1.0" encoding="utf-8"?
PendingRequest Id="I6045ff8b2eb204edb538be1fa22e340a"
      Service="http://www.example.org/XKMS"
      OriginalRequestId="I6227979ae4073f2b3b145db7a488ce16"
      ResponseId="I98366e407a2a78dff79687dbdb4d974c"
      xmlns="http://www.w3.org/2002/03/xkms#" /
Pending请求应答如下:
?xml version="1.0" encoding="utf-8"?
LocateResult Id="I4da52fc78e0391a11257d64926cd184c"
      Service="http://www.example.org/XKMS"
      ResultMajor="http://www.w3.org/2002/03/xkms#Success"
      RequestId="I6045ff8b2eb204edb538be1fa22e340a"
      xmlns="http://www.w3.org/2002/03/xkms#" /

在Pengding请求应答中包含处理结果“xkms#Success”,这时,客户即可通过服务得到相应的查询结果。


注意,Pending请求应答只得到相应处理结果的状态,即“成功”或“失败”。在得到成功状态后,用户即可通过服务得到相应的处理数据。


(2)两阶段请求协议


XKMS使用两阶段协议来防止拒绝服务攻击(Denial of Service)。在拒绝服务攻击过程中,攻击为了躲避追查,往往伪造一个假的源IP地址。然后使用假的IP源地址不断发送服务请求包,从而消耗服务资源形成拒绝服务攻击。


针对这样的拒绝服务攻击,XKMS采用两阶段请求协议来防止攻击效果的产生,其基本思想是接收客户的服务请求后服务并不处理,而是立即返回一个应答。在该应答中只包含一个服务器产生的随机数,客户在接收到这样一个应答后,根据这个随机数请求,服务处理并返回结果。基本过程如图5-7所示。
错误!

图5-7 两阶段协议基本过程


在这个过程中,如果客户是一个拒绝服务攻击程序,并通过伪造的IP发送请求,则其将接收不到服务第1阶段的应答,从而无法进行第2阶段的请求。这也是两阶段请求协议名称的由来。


【例9】 一个两阶段应答。在客户的请求中必须指明支持两阶段协议,应答机制表示为“xkms#Represent”。
客户的第1阶段请求如下:

?xml version="1.0" encoding="utf-8"?
LocateRequest Id="Ia1d6ca7a067fdd545f1a1396d2f26779"
      Service="http://www.example.org/XKMS"
      xmlns="http://www.w3.org/2002/03/xkms#"
  http://www.w3.org/2002/03/xkms#Represent 
  QueryKeyBinding /
/LocateRequest

 

服务接收到请求后,则发送第1阶段相应答。在该应答中包含了一个随机数(Nonce)和一个请求Id(RequestId),用来进行第2阶段时验证客户的IP地址,以防止拒绝服务攻击。


第1阶段的应答如下:

?xml version="1.0" encoding="utf-8"?
LocateResult Id="Idbc77142059a3a51c9eccd2425d77757"
      Service="http://www.example.org/XKMS"
      Nonce="Rj2BoUZM7PisPX2ytSAAWA==" 
      ResultMajor="http://www.w3.org/2002/03/xkms#Represent"
      RequestId="Ia1d6ca7a067fdd545f1a1396d2f26779"
      xmlns="http://www.w3.org/2002/03/xkms#" /
第2阶段的请求如下:
?xml version="1.0" encoding="utf-8"?
LocateRequest Id="I47804adaec32e34afeecdb51f3e0f765"
      Service="http://www.example.org/XKMS"
      Nonce="Rj2BoUZM7PisPX2ytSAAWA=="
      OriginalRequestId="Ia1d6ca7a067fdd545f1a1396d2f26779"
      xmlns="http://www.w3.org/2002/03/xkms#"
  QueryKeyBinding /
/LocateRequest
第2阶段的应答如下:
?xml version="1.0" encoding="utf-8"?
LocateResult Id="I3b0111d2232507a56444c1bc85409a94"
      Service="http://www.example.org/XKMS"
      ResultMajor="http://www.w3.org/2002/03/xkms#Success"
      RequestId="I47804adaec32e34afeecdb51f3e0f765"
      xmlns="http://www.w3.org/2002/03/xkms#" /

经过两阶段协议后,客户即可通过正常的服务请求得到处理数据。


(3)复合请求


复合请求允许客户在一个请求中包含多个XKMS请求。


复合请求中包含一个外部请求(Outer Request)和一个或者多个内部请求(Inner Requests)。从功能上讲,复合请求的功能和分开单独多次发送请求的功能相同。


复合请求的应答即复合应答,其中包括一个外部应答(outer response)和零个或者多个内部应答(inner responses)。


【例10】 复合请求和应答的基本过程。通过复合请求查询一个X.509证书的密钥和bob@example.com的密钥绑定。
复合请求如下:

?xml version="1.0" encoding="utf-8"?
CompoundRequest Id="I264f5da49b1ff367d4e7aef1f7a1df1a"
      Service="http://www.example.org/XKMS"
      xmlns="http://www.w3.org/2002/03/xkms#"
  LocateRequest Id="I8c26be5f1b4dd228b43fb6eaee285faa"
        Service="http://www.example.org/XKMS"
    http://www.w3.org/2002/03/xkms#KeyValue
    QueryKeyBinding
      KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"
        X509Data
          X509Certificate
            MIICEDCCAX2gAwIBAgIQimXeUAxYJbJMady9vV1bLjAJBgUrDgMCHQUAMBIxEDA
            OBgNVBAMTB1Rlc3QgQ0EwHhcNMDMwODE1MDcwMDAwWhcNMDUwODE1MDY1OTU5Wj
            ArMSkwJwYDVQQDEyBBbGljZSBBYXJkdmFyayBPPUFsaWNlIENvcnAgQz1VUzCBn
            zANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0nIsmR+aVW2egl5MIfOKy4HuMKkk
            9AZ/IQuDLVPlhzOfgngjVQCjr8uvmnqtNu8HBupui8LgGthO6U9D0CNT5mbmhIA
            ErRADUMIAFsi7LzBarUvNWTqYNEJmcHsAUZdrdcDrkNnG7SzbuJx+GDNiHKVDQg
            gPBLc1XagW20RMvokCAwEAAaNWMFQwDQYDVR0KBAYwBAMCBkAwQwYDVR0BBDwwO
            oAQAaVOkaVLLKoFmLN37pC8uqEUMBIxEDAOBgNVBAMTB1Rlc3QgQ0GCEC4MndUX
            jPG1TZxVKg+HutAwCQYFKw4DAh0FAAOBgQABU91ka7IlkXCfv4Zh2Ohwgg2yObt
            Y3+6C/BTFGrOEBJDy+DoxJ/NuBF18w3rrrR18xE6jNKYLCQb8zUGk4QOG5Y+HT/
            QTTFvWkiOLXcpTuhnOhXatr42FoYpDkjx2QWK+J5Q2l/Rgjgc/0ZV8U/kD8UuRk
            Xp4AZh7QsiX8AcO0w==
          /X509Certificate
        /X509Data
      /KeyInfo
      http://www.w3.org/2002/03/xkms#Signature
    /QueryKeyBinding
  /LocateRequest
  LocateRequest Id="If8e63d729384ad35498e7b65b3dc785e"
        Service="http://www.example.org/XKMS"
    http://www.w3.org/2002/03/xkms#KeyName
    http://www.w3.org/2002/03/xkms#KeyValue
    http://www.w3.org/2002/03/xkms#X509Cert
    http://www.w3.org/2002/03/xkms#X509Chain
    http://www.w3.org/2002/03/xkms#PGPWeb
    http://www.w3.org/2002/03/xkms#PGP
    QueryKeyBinding
      http://www.w3.org/2002/03/xkms#Encryption
      UseKeyWith Application="urn:ietf:rfc:2440"
            Identifier="bob@example.com" /
      UseKeyWith Application="urn:ietf:rfc:2633"
            Identifier="bob@example.com" /
    /QueryKeyBinding
  /LocateRequest
/CompoundRequest

在请求中包括一个外部请求“CompoundRequest”和两个内部请求,分别为“LocateRequest Id = "I8c26be5f1b4dd228b43fb6eaee285faa"”和“LocateRequest Id ="If8e63d729384ad35498e7b65b3dc785e"”。


复合请求应答如下:

?xml version="1.0" encoding="utf-8"?
CompoundResult Id="If2d286d4a542bd92989aa606d9f1a5ca"
      Service="http://www.example.org/XKMS"
      ResultMajor="http://www.w3.org/2002/03/xkms#Success"
      RequestId="I264f5da49b1ff367d4e7aef1f7a1df1a"
      xmlns="http://www.w3.org/2002/03/xkms#"
  LocateResult Id="I69044d458e0bceef5f78c79c32fa9ddf"
        Service="http://www.example.org/XKMS"
        ResultMajor="http://www.w3.org/2002/03/xkms#Success"
        RequestId="I8c26be5f1b4dd228b43fb6eaee285faa"
    UnverifiedKeyBinding Id="I8f7367375ac134872eab7acf42a8d1bd"
      KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"
        KeyValue
          RSAKeyValue
            Modulus
              0nIsmR+aVW2egl5MIfOKy4HuMKkk9AZ/IQuDLVPlhzOfgngjVQCjr8uvmnqt Nu8HBupui8LgG
              thO6U9D0CNT5mbmhIAErRADUMIAFsi7LzBarUvNWTqYNEJmcHsAUZdrdcDrk NnG7SzbuJx+GD
              NiHKVDQggPBLc1XagW20RMvok=
            /Modulus
            AQAB
          /RSAKeyValue
        /KeyValue
      /KeyInfo
      http://www.w3.org/2002/03/xkms#Signature
      http://www.w3.org/2002/03/xkms#Encryption
      http://www.w3.org/2002/03/xkms#Exchange
      UseKeyWith Application="urn:ietf:rfc:2633"
            Identifier="alice@example.com" /
    /UnverifiedKeyBinding
  /LocateResult
  LocateResult Id="Ic3d02a8b1f63ba694a8fad11a74fb499"
        Service="http://www.example.org/XKMS"
        ResultMajor="http://www.w3.org/2002/03/xkms#Success"
        RequestId="If8e63d729384ad35498e7b65b3dc785e"
    UnverifiedKeyBinding Id="I42604b6f40f46b74b5c30077100fe8e9"
      KeyInfo xmlns="http://www.w3.org/2000/09/xmldsig#"
        KeyValue
          RSAKeyValue
            Modulus
              3FFtWUsvEajQt2SeSF+RvAxWdPPh5GSlQnp8SDvvqvCwE6PXcRWrIGmV7twNf2T
              UXCxYuztUUClMIy14B0Q+k1ej2nekmYL7+Ic3DDGVFVaYPoxaRY0Y2lV8tOreyn
              WegpFbITXc8V6Y02QfR5O7Pn1/10ElslaF/TF8MQGqYE8=
            /Modulus
            AQAB
          /RSAKeyValue
        /KeyValue
        X509Data
          X509Certificate
            MIICCTCCAXagAwIBAgIQe0Sk4xr1VolGFFNMkCx07TAJBgUrDgMCHQUAMBIxEDA
            OBgNVBAMTB1Rlc3QgQ0EwHhcNMDMwODE1MDcwMDAwWhcNMDUwODE1MDY1OTU5Wj
            AkMSIwIAYDVQQDExlCb2IgQmFrZXIgTz1Cb2IgQ29ycCBDPVVTMIGfMA0GCSqGS
            Ib3DQEBAQUAA4GNADCBiQKBgQDcUW1ZSy8RqNC3ZJ5IX5G8DFZ08+HkZKVCenxI
            O++q8LATo9dxFasgaZXu3A1/ZNRcLFi7O1RQKUwjLXgHRD6TV6Pad6SZgvv4hzc
            MMZUVVpg+jFpFjRjaVXy06t7KdZ6CkVshNdzxXpjTZB9Hk7s+fX/XQSWyVoX9MX
            wxAapgTwIDAQABo1YwVDANBgNVHQoEBjAEAwIGQDBDBgNVHQEEPDA6gBABpU6Rp
            UssqgWYs3fukLy6oRQwEjEQMA4GA1UEAxMHVGVzdCBDQYIQLgyd1ReM8bVNnFUq
            D4e60DAJBgUrDgMCHQUAA4GBAF4jP1gGDbaq3rg/Vo3JY7EDNTp0HmwLiPMLmdn
            B3WTIGFcjS/jZFzRCbvKPeiPTZ6kRkGgydFOuCo5HMAxIks/LtnKFd/0qYT+AOD
            q/rCrwSx+F+Ro2rf9tPpja9o7gANqxs6Pm7f1QSPZO57bT/6afiVm7NdaCfjgMp
            hb+XNyn
          /X509Certificate
          X509Certificate
            MIIB9zCCAWSgAwIBAgIQLgyd1ReM8bVNnFUqD4e60DAJBgUrDgMCHQUAMBIxEDA
            OBgNVBAMTB1Rlc3QgQ0EwHhcNMDMwODE1MDcwMDAwWhcNMTAwODE1MDcwMDAwWj
            ASMRAwDgYDVQQDEwdUZXN0IENBMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBg
            QCn23HHp+HtXpiyKVSDtdE3dO0r0oLB/H9sxUEkeXB8oMxwbhdcizWH92zrtm1V
            fVtxkfmwF14ZXoyDZHeZXuCOtAfz/mW6s2gmfD45TfFFVGksDGVRNK5XmKXA5sE
            C51RCvaxzGBdGDlCuVPqX7Cq3IcZpRU1IXbi5YzGwV7j6LwIDAQABo1YwVDANBg
            NVHQoEBjAEAwIHgDBDBgNVHQEEPDA6gBABpU6RpUssqgWYs3fukLy6oRQwEjEQM
            A4GA1UEAxMHVGVzdCBDQYIQLgyd1ReM8bVNnFUqD4e60DAJBgUrDgMCHQUAA4GB
            ABDYD4Fwx2dscu+BgYcZ+GoQQtCJkwJEXytb4zlNl7HLFKbXSw4m0blQquIsfsi
            QgFYAQBXSbu7aeUqqmSGHvILu3BGwVOKjxbHfcM4/MefuTtpOpCN40wy3YwwngD
            tHTaIqm8NwS966PE+W9f8kD70q5FNwf+GF/lX9qGc/x435
          /X509Certificate
        /X509Data
      /KeyInfo
      http://www.w3.org/2002/03/xkms#Signature
      http://www.w3.org/2002/03/xkms#Encryption
      http://www.w3.org/2002/03/xkms#Exchange
      UseKeyWith Application="urn:ietf:rfc:2633"
            Identifier="bob@example.com" /
    /UnverifiedKeyBinding
  /LocateResult
/CompoundResult

在应答中包括一个外部应答“CompoundResult”,两个内部应答分别为“LocateResult Id= "I69044d458e0bceef5f78c79c32fa9ddf"”和“LocateResult Id= "Ic3d02a8b1f63ba694a8fad11a74fb499"”。

 

【责任编辑:董书 TEL:(010)68476606】

 


回书目   上一节   下一节
专题
见证中国网络安全二十年
NAC安全访问控制
微软Forefront企业安全解决方案
Windows Home Server 家用服务器专题
VPN安全技术与应用
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 最 大 的 网 络 技 术 网 站 ·
技 术 成 就 梦 想
订阅技术快讯
电子杂志下载
名称:SQL Server数据库管理精品黄皮书
简介:书中文章经过精挑细选,便于用户能根据自己的实际工作和学习,快速在本书寻找到相关资料。内容涵盖了SQL Server的安装与升级、语句查询、数据备份和恢复、自动化任务、数据同步、数据字典、安全和预防、性能和优化、集群等各方面应用信息,以及DBA管理人员在数据库管理工作中
名称:2007路由技术大全
简介:《2007路由技术大全》由51CTO.com网站特别策划制作,该书包括路由器技术、路由器产品、路由器配置、安全设置、路由器故障处理、路由器密码恢复,以及广大网友在实践使用中的心得经验和技巧文章,内容注重实用性,适用于初学者入门,也适合多年从业者提高,是一本实践和理论完
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
浏览器的战国时代
浏览器的战国时代
ARP攻击防范与解决方案
ARP攻击防范与解决方案
NAC安全访问控制
NAC安全访问控制
· NAC安全访问控制
· 网络布线测试仪器
· Windows Server 2008专..
· Windows远程桌面应用
· 网络故障排除宝典
· 运营商封堵ADSL共享 中..
· 解析35岁技术人的价值..
· 世纪枭雄比尔盖茨的王..
· 主流品牌防火墙配置
· ASP.NET开发教程
· 超级计算机TOP500专题
· Vista SP1对决XP SP3
· SQL Server 2008/2005..
· 程序员如何成长?
· C#技术开发指南
· 虚拟化技术还有点“虚”
ARP攻击防范与解决方案
ARP攻击防范与解决方案
SQL Server 2008/2005全解
SQL Server 2008/2005全解
SOA 面向服务架构
SOA 面向服务架构
· SOA 面向服务架构
· SQL Server 2008/2005..
· Apache技术专题
· 三层交换技术专题
· SQL Server入门到精通
· Windows远程桌面应用
· C#技术开发指南
· Apache技术专题
· Windows集群服务应用
· C#技术开发指南
· 国际文档格式标准开战
· 路由器设置与口令恢复
· Linux 集群技术专题
· PHP开发应用手册
· SOA 面向服务架构
· 企业数据恢复指南
ARP攻击防范与解决方案
ARP攻击防范与解决方案
SQL Server 2008/2005全解
SQL Server 2008/2005全解
SQL Server入门到精通
SQL Server入门到精通
· SQL Server入门到精通
· SQL Server 2008/2005..
· SOA 面向服务架构
· Apache技术专题
· C#技术开发指南
· 三层交换技术专题
· Apache技术专题
· C#技术开发指南
· Windows远程桌面应用
· 企业数据恢复指南
· Windows集群服务应用
· 路由器设置与口令恢复
· Linux 集群技术专题
· SOA 面向服务架构
· 了解统一威胁管理(UTM)..
· 反垃圾邮件技术应用