张剑青 刘旭东 怀进鹏:基于XML 的密钥管理的研究与实现
基于 XML 的密钥管理的研究与实现*
张剑青 刘旭东 怀进鹏
(北京航空航天大学计算机科学与工程系 北京 100083)
(arrowzhang@yahoo.com.cn)
摘 要 公钥基础设施 PKI 在应用的难易程度和灵活性方面都有一定的局限性,影响了PKI
技术的实际应用推广。本文提出了一种基于XML 的密钥管理机制,通过基于XML 的 XKMS
消息,把客户端应用程序对密钥和证书的处理委托给信任服务,从而降低 PKI 的应用难度,
提高应用程序获取 PKI 安全服务的灵活性。
关键词 安全 PKI XML XKMS XKeySec
Research and Implementation of an XML-Based Key
Management
ZHANG Jian-Qing LIU Xu-Dong HUAI Jin-Peng
Public Key Infrastructure (PKI) has some limitations in the convenience of
Abstract
implementation and flexibility. These prevent the PKI technology from being spread and used
widely. This article proposes an XML-based key management mechanism. By the XML-based
XKMS messages, it delegates the keys and certificates process to Trust Service, thus the
implementation of PKI application will become easier and the way that the applications obtain the
PKI security service will be more flexible.
Key Words Security PKI XML XKMS XKeySec
1.引言
当前,基于 Web 的分布式应用(如电子商务与电子政务)得到了快速的发展。与此同时,
可扩展标记语言(eXtensible Markup Language,简称 XML)作为一种异构平台之间进行数据交
换和互操作的技术也已经成为 Web 应用的首选基础架构,而安全性则是 Web 应用得以实施
的必要条件,是 Internet 上信息传输的机密性、真实性、完整性和不可否认性的基本保证。
公钥基础设施(Public Key Infrastructure,简称 PKI)是目前保证 Web 应用安全性的主流技
术,满足了 Web 应用的基本安全需求。但是,目前国内外 PKI 产品的互操作性较差、应用
部署难度高、系统维护缺乏足够的灵活性、开销大,国内 PKI 的建设也相对比较滞后。这
些问题制约了 PKI 产品的应用,成为 PKI 得以普遍推广的瓶颈之一。
同时,有关 XML 的安全标准(如 XML 签字[1]和加密[2])将传统密码技术与 XML 技术有
机地结合在一起,解决了 XML 数据存储与传输过程中的安全性问题。XML 安全机制的实
现依赖于 PKI 的部署与应用,同时也为 PKI 技术提供了新的发展方向。
基于这一背景,2000 年 11 月 VeriSign、Microsoft 和 webMethod 共同提出了一种基于
XML 的密钥管理机制: XML 密钥管理规范(XML Key Management Specification ,简称
XKMS)[3],并于 2001 年 3 月提交 W3C 成为候选标准提案。
本文分析了 XKMS 的工作原理和内容,讨论了 XKMS 自身的安全性问题,设计实现了
一个基于 XKMS 的密钥管理系统(XML Key Security,简称 XKeySec),并给出了应用实例。
2. XKMS 密钥管理
2.1 工作原理
本文得到了国家 863 计划(2001AA144150)和国家自然科学基金(60073006)的部分资助。张剑青,男,1976
年生,硕士研究生,主要研究方向为电子商务与网络安全。刘旭东,男,1965 年生,副教授,硕士导师,
主要研究方向计算机应用与系统结构,怀进鹏,男,1962 年生,教授,博士导师,主要研究领域为计算机
PDF created with pdfFactory trial version www.pdffactory.com
*
张剑青 刘旭东 怀进鹏:基于XML 的密钥管理的研究与实现
XKMS 将传统 PKI 的两层应用模式转化为三层(如图 1 所示),在 PKI 用户与 PKI 提供
者之间加入信任服务(Trust Service) 中间层。它利用 XML 语法描述密钥和证书信息,通过
XKMS 消息将客户端对密钥和证书的操作部分或全部地委托给基于 Web 的信任服务,从而
向客户端屏蔽了底层 PKI 实现的复杂性[4]。
XKMS客户端
密钥/证书
持有者
信任服务
PKI
公钥
私钥
信任服务
密钥/证书
使用者
XML
基于ASN.1的协议
证书/CRL库
PKI提供者1
PKI提供者2
PKI提供者N
图 1 XKMS 的工作原理
XKMS 结构上由客户端和信任服务两部分组成。其中客户端向应用程序提供接口,生
成并发送 XKMS 请求,同时接收并解析 XKMS 应答,向应用程序提供请求结果;信任服务
是基于 WSDL 的 Web 服务[5],它根据 XKMS 请求的内容,利用本地数据或者通过与 PKI
提供者进行交互,获得相应的密钥/证书,并将结果以 XKMS 应答的形式返回给客户端;客
户端与信任服务之间的消息按照 SOAP 协议进行传输,而信任服务与 PKI 之间的交互则按
照 PKI 提供者规定的协议标准进行。
2.2 XKMS 规范
XKMS 由密钥信息服务规范 (XML Key Information Service Specification ,简称 X-KISS)
和密钥注册服务规范 (XML Key Registration Service Specification ,简称 X-KRSS) 两大部分
组成,包含 6 种密钥服务,每种服务均由一组请求/应答消息组成。
2.2.1 X-KISS
X-KISS 向公钥和证书使用者提供密钥/证书信息服务,任意 Web 实体都可以获得该项
服务。X-KISS 由定位服务与确认服务组成。
1) 定位服务:获得用户指定的密钥或证书,但不给出有关密钥绑定信息的有效性声明。
2) 确认服务:获得详细说明公钥及其它数据(如名字或一组扩充属性)的状态声明,以
确认该公钥/证书的有效性,并补充部分公钥/证书信息。
2.2.2 X-KRSS
X-KRSS 向公钥/证书持有者提供密钥/证书管理服务,欲获得该项服务的 Web 实体需要
经过信任服务的认证。X-KRSS 的主要内容包括密钥注册 (证书申请) 、密钥吊销 (证书吊
销申请) 、密钥恢复和密钥更新四个部分,这里重点介绍前三种。
1) 密钥注册:分为客户端和服务端两种。a)客户端注册:密钥对由客户端生成;密钥
信息需要进行 XML 签字,并发送证明客户身份的消息鉴别码;信任服务验证 XML
软件与理论、协同工作处理、电子商务及网络安全。
PDF created with pdfFactory trial version www.pdffactory.com
张剑青 刘旭东 怀进鹏:基于XML 的密钥管理的研究与实现
签字,保存客户身份鉴别码,完成密钥注册及证书颁发,返回注册结果。b)服务端
注册:密钥对由信任服务生成;客户端与信任服务的处理基本相同,但在应答中包
括生成的密钥对,并使用预共享密钥加密私钥。
2) 密钥吊销:请求中包括待吊销密钥的信息和客户身份鉴别码。信任服务完成验证后,
吊销该密钥及证书。
3) 密钥恢复:客户端需要事先以带外方式(out-of-band)从信任服务获得恢复授权代码;
请求中包括待恢复密钥信息以及恢复授权代码的消息鉴别码,用于身份认证。信任
服务完成验证后,返回密钥对。
2.3 XKMS 消息的安全性
XKMS 消息涉及到密钥信息的交换,因此必须在 XKMS 客户端与信任服务之间建立安
全信道,以保证双方身份的真实性、应答消息的完整性。另外为了保证 X-KRSS 消息中公
钥信息的完整性和私钥信息的机密性,还需要对消息中的敏感元素进行加密或签字。
2.3.1 安全信道
安全信道主要是为了保证应答消息的真实性、完整性,当前主要有 3 种建立方式:XML
签字、传输层安全(如 SSL、TLS 等)和网络层安全(如 IPSec)[3]。
1) XML 签字:客户端以带外方式获得信任服务证书;信任服务对应答消息进行 XML
签字;客户端则使用该证书进行验证。
2) 传输层与网络层:此时客户端需要具备一定的 PKI 处理能力,这可以由客户端的
下层平台(如 Web 浏览器或者支持 IPSec 的操作系统)来完成,也可以通过默认的
PKI,由客户端与信任服务建立 SSL(或 IPSec)安全信道。对客户端而言,使用 XKMS
客户端软件包,只是安装了一种 PKI 工具集,但却可以通过信任服务与多种不同
的 PKI 进行交互,仍然不失灵活性。另外由于这个过程对应用程序是透明的,因
此降低了应用程序的开发难度。
2.3.2 密钥信息元素的安全性
X-KRSS 的 3 种请求中的密钥信息具有较高的完整性要求,因此 XKMS 定义了专门的
元素对其进行 XML 签字,密钥则采用带外方式获得的预共享密钥。在客户端注册时还需使
用生成的私钥进行签字,以证明客户端确实拥有该密钥对。当进行服务端密钥注册时,信任
服务返回的私钥信息元素需要进行 XML 加密,密钥也是通过带外方式获得的预共享密钥。
另外在注册及吊销请求中,还包括证明客户身份鉴别码。
3 XKeySec 的设计与实现
XKeySec 是我们设计实现的基于 XKMS 的
密钥管理系统,它由客户端和信任服务两部分组
成,总体结构如图 2 所示 [6]。
客户端组件以类库(软件包)方式安装在客
户端平台,信任服务则是 Web 上的一个单独实
体,是一种由 WSDL 描述的 Web Service,体现
了“软件转化为服务”的思想;包括Web Service
访问入口、信任服务功能单元和 PKI 操作单元
三 个 基 本 部 分 ; 客 户端和 信 任服 务 使 用
SOAP/HTTP 协议作为 XKMS 消息的传输协议;
系统安全信道采用 XML 签字,以客户端导入信
任服务证书的方 式保证应答消息的完整性和真
实性。
客户端应用程序
XKeySec客户端
信任服务
Web Service 访问入口
信任服务功能单元
PKI操作单元
其他PKI提供者
图 2 XKeySec 总体结构
PDF created with pdfFactory trial version www.pdffactory.com
张剑青 刘旭东 怀进鹏:基于XML 的密钥管理的研究与实现
设计过程中,强调软件的重用性、可扩展性和开放性,按照功能需求进行模块划分。在
实现上,本着自主开发和已有产品相结合的原则,注重核心模块的设计与实现。
3.1 客户端
3.1.1 功能与结构
XKeySec 客户端的主要功能包括:①XKMS 消息的生成和解析,提供构建和访问消息
的接口;②发送和接收 XKMS 消息;③与指定的信任服务建立安全信道,在本系统主要是
完成对应答消息的验证。根据以上功能分析,我们给出客户端的结构[6](图 3)。
XKeySec客户端
元素对象
数据操作对象
客
户
端
应
用
程
序
密钥信息访问接口
密钥/证书信息
认证信息
消息对象
请求消息
应答消息
密
码
算
法
单
元
编
码
器
X
M
L
解
析
器
封
装
X
M
L
签
字
接
口
X
M
L
签
字
软
件
包
传输对象
HTTP,TCP/IP
图 3 XKeySec 客户端结构
3.1.2 组成
n 消息对象:XKMS 消息的内存映像,分为请求消息对象和应答消息对象两类。
1) 请求消息:描述 XKMS 请求,提供构建、修改请求消息的接口。侧重于“写”操
作,填充请求消息内容。
2) 应答消息:描述 XKMS 应答,解析应答消息,提供对由信任服务返回的密钥/证书
信息的访问接口。与请求实体相反,客户端应答消息侧重于“读”操作。
n 元素对象:构建消息文档的基本单位,描述 XKMS 消息中最重要的密钥信息元素和认
证信息元素,参与消息对象的构建与维护,但比消息对象灵活。
n 数据操作对象:对编码处理和密码运算进行封装,分为以下几种:
1) 密码算法单元:完成对各种密码运算的封装。
2) 编码器:对 XML 文档字符按照统一的字符标准进行编码。
3) XML 解析器封装:封装常见的 XML 解析器,为其他数据对象提供更为简捷的 XML
操作接口。
4) XML 签字接口:XKeySec 本身不实现 XML 签字。XML 签字接口实现对 XDSec[7]
的封装,为其他数据处理单元提供 XML 签字/验证运算。
n 传输对象:按照 SOAP 协议封装、发送和接收 XKMS 消息。
3.2 信任服务
3.2.1 功能与结构
PDF created with pdfFactory trial version www.pdffactory.com
张剑青 刘旭东 怀进鹏:基于XML 的密钥管理的研究与实现
XKeySec 信任服务的主要功能包括:①接收和发送 XKMS 消息;②XKMS 消息的解析
与构造;③本地的密钥/证书及相关信息的管理;④与其他 PKI 提供者的交互。根据功能分
析,我们给出信任服务的结构[6](图 4)。
W
e
b
S
e
r
v
i
c
e
平
台
信
任
服
务
访
问
入
口
XKeySec 信任服务
元 素 对 象
数据操作对象
消 息 对 象
本地密钥/
证书管理
密钥证书管理
策略管理
密钥信息
管理
外部PKI交互工具
X
M
L
签
字
软
件
包
PKI提供者(PKIX)
图 4 XKeySec 信任服务结构
3.2.2 实现方式的选择
通常,信任服务有纯代理和混合型两种实现方式。
纯代理方式:仅作为 PKI 服务的代理,本身并不进行密钥操作,根据请求与 PKI 提供
者进行交互。纯代理方式实现简单;不进行密钥/证书的存储和管理,安全风险比较小。但
由于它只作转发,增加了密钥/证书处理的环节,延长了服务响应时间,从而导致系统整体
运行效率的下降;信任服务的资源也没有得到充分地利用。
混合方式:具备密钥/证书管理功能,是某一类型的 PKI 提供者,可以不与其他 PKI 提
供者进行交互。混合方式实现难度较大,信任服务本身也会成为安全攻击点。但它效率比较
高,能够有效地提供大用户量的访问,并能充分利用网络资源。两种实现方式的比较见表 1。
表 1 纯代理方式和混合方式的比较
密钥/证书的
管理和操作
实现难度
安全风险
整体运行效率
纯代理方式
混合方式
不进行
进行
小
较大
较小
大
较低
较高
考虑到系统的实用性要求,结合对这两种方式的分析,XKeySec 采用混合方式。
3.2.3 组成
n 信任服务访问入口:信任服务与 Web Service 平台的交互接口。Web Service 平台由
Tomcat Web 服务器和 Apache Soap 服务器组成,实现下层网络传输和 SOAP 消息的封
装与传递。访问入口把 SOAP 消息载荷传递给信任服务,并把 XKMS 应答交给 Web 服
务平台。
n 消息/元素/操作对象:与客户端的基本类似,但请求消息对象侧重于“读”操作(解析消
息),应答消息对象侧重于“写”操作(构造消息)。密钥信息元素和认证信息元素的处理
需要密钥/证书管理模块中密钥信息管理单元的参与。
n 密钥/证书管理:信任服务的核心功能模块,由以下三部分组成:
1) 本地密钥/证书管理:按照信任服务策略,存储和维护密钥对和证书。
2) 策略管理:策略是进行密钥/证书管理的依据。策略管理进行密钥/证书管理策略的
定义与维护,提供访问策略内容的接口。
3) 密钥信息管理:维护密钥名称、分配预共享口令和密钥恢复授权代码、保存密钥注
PDF created with pdfFactory trial version www.pdffactory.com
张剑青 刘旭东 怀进鹏:基于XML 的密钥管理的研究与实现
册消息中的用户身份鉴别码等。
4) 外部 PKI 交互工具:实现信任服务与其他 PKI 提供者的数据交互。在 XKeySec 中
主要实现与 PKIX 的交互。
4 XKeySec 的特点及应用实例
4.1 特点
传统的 PKI 应用需要在客户端安装一种或多种 PKI 工具包,通过基于 ASN.1 的协议,
与 PKI 提供者、目录服务等进行交互以获得安全服务,相当一部分 PKI 操作需要在客户端
完成。这种应用模式的灵活性差;开发过程繁琐、难度大;系统的维护开销也比较大。
而使用 XKeySec 时,客户端并不直接与 PKI 提供者进行交互,客户端通过信任服务获
得不同 PKI 体系下的密钥或证书。与传统 PKI 相比,XKeySec 具有以下特点:
n 通用性:信任服务提供了一种透明的服务机制,只需在应用程序一方安装 XKeySec
客户端组件,就可以实现与多种异构 PKI 或者不同的 PKI 产品之间的交互。
n 易用性:应用程序通过 XKeySec 客户端直接得到所需的密钥或证书,降低了客户
端应用程序的开发难度,简化了繁杂的 PKI 操作。
n 轻量级:XKeySec 通过 XML 文本对密钥信息进行描述和传送,客户端与信任服务
之间仅以一种协议进行通信,简化了密钥/证书信息的描述语法,减少了客户端所
需支持的通信协议种类,降低了客户端设备的配置要求。
n 易维护:当 PKI 提供者升级时,只需对信任服务进行集中维护,无需更新客户端。
综上所述,XKeySec 较传统的 PKI 工具集具有明显的优势,弥补了传统 PKI 的很多不
足,在保护已有投资的同时,有利于 PKI 的推广应用。
4.2 应用实例
下面以一个应用实例说明 XKeySec 的工作过程。
假设应用程序得到了一份进行了 XML 签字的文档,需要根据该文档的 KeyInfo 元素,
利用 XKMS 定位请求获得用于验证签字的公钥。应用程序首先利用 XML 安全套件对该文
档进行解析,根据 KeyInfo 元素获得包含 X.509 证书的 URI。
接着,应用程序利用客户端元素对象,构建元素 KeyInfoQuery 和 Respond,前者描述
请求内容,后者描述所需的密钥信息(本例中为密钥名称 KeyName 和密钥值 KeyValue),随
后利用消息对象构建 LocateRequest 消息,最后通过传输对象构建 SOAP 消息,向信任服务
发出请求。请求消息文本如下:
2c5b5d14-c63f-887c-c4819cec1aac256a
KeyName
KeyValue
信任服务接受请求后,对 RetrievalMethod 进行解析,根据 URI 描述,调用 PKI 交互接
口,获得 X509 证书;接着再解析证书,获得密钥名称和密钥值;构造 LocateResult 消息,
并通过数据操作对象对整个消息进行 XML 签字,最后按照 SOAP 协议将应答发送给客户端。
应答消息文本如下:
PDF created with pdfFactory trial version www.pdffactory.com
张剑青 刘旭东 怀进鹏:基于XML 的密钥管理的研究与实现
2c5b5d14-c63f-887c-c4819cec1aac256a
Success
O=XMLTrustCernter.org OU=
”Crypto”
CN=”Alice”
998/T2PUN8HQlnhf9YIKdMHHGM7HkJwA56UD0a1o
Yq7EfdxSXAidruAszNqBoOqfarJIsfcVKLob1hGnQ/l6xw==
< ds:Exponent>AQAB
XKMS 客户端收到应答后,通过消息对象的接口,向应用程序提供其所需要的公钥值。
从应用实例的分析中可以看出,客户端应用程序没有进行任何繁杂的 PKI 底层操作。
客户端 PKI 应用程序的开发难度得到了降低。另外,如果验证签字的公钥是以 PGP 方式分
发的,则客户端只需修改 LocateRequest 消息中的相应元素;信任服务端收到请求时扩充 PKI
交互工具,利用 PGP 接口获得公钥。应用程序所要作的改变非常小,使用很灵活。
5 结束语
本文针对传统 PKI 在实现难度、灵活性等方面给 Web 应用所带来不利影响,介绍并研
究了一种基于 XML 的密钥管理机制 XKMS,并给出了一种实现方案。
XKMS 将对密钥和证书的部分或全部的处理委托给信任服务,并使用 XML 文档进行交
互。这大大降低了应用程序获取 PKI 安全服务的实现难度。由于对各种不同类型的 PKI 体
系的繁杂处理被转移到了信任服务端,并可以通过扩充 PKI 交互接口实现与不同 PKI 产品
的交互,因此它可以在保护已有投资的前提下,为应用程序提供各种类型的 PKI 服务,具
有极大的灵活性。
XKMS 规范尚处在发展阶段,规范本身的很多细节问题还有待于进一步的讨论和研究。
由于尚没有实现多个请求的并发处理,因此文章所提出的实现方案在满足大客户量的请求时
尚有一定的困难。信任服务本身的安全性问题还需进一步的认识与解决。
参 考 文 献
1. Eastlake D, Reagle J, Solo D. XML-Signature Syntax and Processing W3C Recommendation
12 February 2001. http://www.w3.org/TR/xmldsig-core/
2. Eastlake D, Reagle J.
XML Encryption Syntax and Processing W3C Candidate
Recommendation 04 March 2002. http://www.w3.org/TR/xmlenc-core/
3. Hallam-Baker P. XML Key Management Specification (XKMS2.0) W3C Working Draft 18
March 2002. http://www.w3.org/TR/xkms2/
4. Verisign. White Paper: XML Key Management Specification. http://www.xmltrustcenter.org
/xkms/docs/verisign_xkms_wp.pdf
5. Hallam-Baker P. XML Key Management Services.
http://www.w3.org/2001/07/xkms-ws/
positions /VeriSign.htm
6. 张剑青. 基于 XML 的密钥管理系统的研究与实现[硕士论文]. 北京航空航天大学计算机
科学与工程系,北京,2002
(ZHANG Jian-Qing. Research & Implementation of XML-Based Key Management System
[Master dissertation] Department of Computer Science and Engineer, Beijing University Of
Aeronautics & Astronautics, Beijing, 2002)
PDF created with pdfFactory trial version www.pdffactory.com
张剑青 刘旭东 怀进鹏:基于XML 的密钥管理的研究与实现
7. 林学练. XML 数据安全系统的研究与实现[硕士论文]. 北京航空航天大学计算机科学与
工程系,北京,2002
(LIN Xue-Lian. Research & Implementation of XML Data Security System [Master
dissertation] Department of Computer Science and Engineer, Beijing University Of
Aero-nautics & Astronautics, Beijing, 2002)
PDF created with pdfFactory trial version www.pdffactory.com