以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XML安全 』  (http://bbs.xml.org.cn/list.asp?boardid=27)
----  XML数据交换的安全解决方案  (http://bbs.xml.org.cn/dispbbs.asp?boardid=27&rootid=&id=32211)


--  作者:jerry408
--  发布时间:5/12/2006 5:59:00 PM

--  XML数据交换的安全解决方案
XML数据交换的安全解决方案
金可仲 ,陈庆章
浙江工业大学软件开发环境重点实验室

摘  要:XML技术的发展使得基于网络的数据交互越来越方便,但是互联网开放性所带来的信息安全隐患却是一个日趋严重的问题。本文分析了基于XML的数据交换安全需求,介绍了XML安全服务标准。针对XML数据交换的请求/响应机制,提出了相应的控制措施,以保证 XML数据交换的安全。
关键词:数据交换;XML;加密;数字签名;XKMS;XACML
分类号:TP393
标注:此项目获得江苏省计算机信息处理重点实验室资助
引言
互联网技术的发展,大大提高了信息流通的速度和效率,吸引了越来越多的企业、个人通过网络从事其相关活动,基于网络的数据交换和业务协作越来越频繁。XML作为一种用来描述数据的标记语言,具有对数据进行统一描述的强大功能;同时可扩展性、结构化语义以及平台无关性的特点充分满足了互联网和分布式异构环境的需求,成为网络数据传输和交换的主要载体,有力地推动了电子商务等网络应用的发展。
作为一个开放的平台,由于资源的共享性和互操作性,互联网也面临着各种各样的安全威胁,如信息窃取、恶意欺骗、伪装、非法修改以及各种扰乱破坏等。针对网络的信息安全问题,人们提出了一些安全措施,比如安全套接字(SSL)、IP层安全标准(IPSec)、安全/多功能因特网邮件扩展(S/MIME)等,在一定程度上缓解了网络信息安全的困境。随着XML技术的广泛应用和深入发展, XML语言自身具有的结构化特征,对数据信息安全技术提出了新的要求,如XML加密解密、XML数字签名和确认、XML文档局部数据的安全性要求等,这些是现有的安全技术和协议无法做到的。
1、基于XML数据交换的安全问题
在开放环境下进行XML数据交换,确保信息的安全性是XML应用顺利开展的首要条件。没有可靠的安全控制体系,重要文档和敏感信息的明文存储和传输都是非常危险。
数据交换涉及的安全性内容包括以下几点:
1、身份验证:要求数据交换双方的身份可鉴别,防止第三者假冒。
2、访问控制:对不同的用户,能控制其对数据的访问权限。
3、数据的机密性:防止未授权的用户窃取数据。
4、数据的完整性:确认数据在传输过程中没有被篡改。
5、非否认服务:保证收发双方无法否认已接收或发送数据这一事实。
由于XML文档的结构化和可读性,对来自外部的数据交换请求或访问请求,首先必须有相应的身份认证和访问控制机制;其次, XML数据经常作为公文或流程数据,以合作的形式流转,因此需要有细粒度的加密和签名支持;另外,针对XML应用系统的特性,必须有相关的密钥管理设施为用户提供密钥管理。通过这些问题的解决,建立一个可信任的网络环境,保证基于XML数据交换活动中信息的保密性、完整性、可鉴别性、不可伪造性和抗抵赖性。
2、XML安全标准概述
为了促进上述问题得解决,推动XML应用和安全服务的发展, 国际标准化组织W3C和OASIS提出了一系列新的XML安全服务标准,来为以XML作为数据交换载体的应用提供安全性保障。这些标准包括:XML加密(XML Encryption)、XML数字签名(XML Signature)、XML密钥管理规范(XKMS)、XML访问控制标记语言(XACML)等
2.1 XML加密[3]
XML加密(XML Encryption)可以对XML文档中的全部数据加密,或者对其中部分元素加密,其他部分仍然以明文形式存在。对同一文档的不同部分,可以采用不同的密钥进行加密,同一个XML文件分别发给不同的接收者,接收者只能访问拥有权限的那部分信息。并且该标准支持多重加密。
XML加密语法的核心元素是EncryptedData元素,描述了一个加密数据包含的所有信息。当加密元素或元素内容时,EncryptedData 元素替换 XML 文档加密版本中的该元素或内容。当加密的是任意数据时,EncryptedData 元素可能成为新 XML 文档的根,或者可能成为一个子元素。当加密整个 XML 文档时,EncryptedData 元素可能成为新文档的根。
EncryptedData中包含以下一些子元素:EncryptionMethod子元素使用URI唯一地标识所采用的加密算法,确保通信双方可以在加密算法上保持一致。KeyInfo子元素表达了用于加密数据的密钥信息,是一个可选元素,具有很大的灵活性,可以根据通信双方的约定,记录密钥名称、密钥值、数字证书,甚至是获得密钥的转换方法描述,从而确保密钥的安全性。CipherData子元素标记被加密的数据。EncryptionProperties子元素可以用来描述加密数据和密钥的附加信息,比如时间戳、加密序列号等。
发送者创建符合以上结构的EncryptedData元素发给接收者;接收者根据从EncryptedData元素中得到解密所需的加密算法、参数和密钥信息,正确解密信息。
2.2 XML签名[4]
XML 签名(XML Signature)标准可提供对任何数据类型的完整性、消息认证、签名者认证等服务,无论是在包括该签名的 XML 内部还是在别处。XML签名的主要目的是用于确保XML文件内容没有被篡改,同时对来源的可靠性进行验证。
Signature元素描述的是传输一个数字签名的完整信息。SignedInfo子元素记录了被签署的信息,即原始信息。CanoniclizationMethod子元素使用URI唯一地标识该数字签名采用的XML数据的规范化法则,这是正确解析XML数据签名的前提。因为XML数字签名对SignedInfo元素的字节流进行运算处理,细微的差别都可能造成不一致,采用了canonicalization可以使XML签名适应各种文件系统和处理器在版式上的不同,因而 XML签名可以适应XML文件可能遇到的各种环境。SignatureMethod元素记录的是签名采用的是何种算法。Reference元素代表一个被签署的元素,通过URI定位被签名元素,可以多次出现,所以XML签名能一次签署多条内容。经过运算的SignedInfo元素记录在SignedValue中。KeyInfo元素用来描述密钥信息并用来作签名验证使用。
接收者可以根据Signature元素包含的信息确定数据的完整性和可靠性。

2.3 XML密钥管理规范(XKMS)[1] [2]
XKMS定义了分发和注册XML签名规范所使用的公共密钥的方法。XKMS以已有的XML加密和XML数字签名为基础。其关键的思想是提供Web上的可信服务(trust server),这样XML应用可以不用太多关注PKI细节。XKMS包括了两部分:XML密钥注册服务规范(X-KRSS)和XML密钥信息服务规范(X-KISS)。
X-KISS用于向用户提供密钥和证书服务。分为两类,定位服务和确认服务,前者负责提供密钥和证书,后者负责密钥和证书的合法性检验。
X-KRSS用于向密钥和证书的持有者提供密钥管理服务,提供了密钥(证书)注册、密钥(证书)注销、密钥恢复和密钥更新服务。
2.4 XACML[6]
XACML(XML访问控制标记语言)是OASIS讨论制定的用于XML文档访问控制的一种策略描述语言,用来决定是否允许一个请求使用一项资源,比如它是否能使用整个文件,多个文件,还是某个文件的一部分。主要思想是围绕一个四元组<subject、resource、action、condition>来定义访问控制授权策略。subject为授权访问用户,resource代表访问的资源,action表示对资源的访问操作,condition表示采取特定操作的先决条件。在制定策略时,首先确定资源resource,针对resource,确定对于subject元素所描述的访问者,是否授予其执行action操作的权限。condition元素用于定义特定访问操作的先决条件,这使得策略控制的描述制订可以非常灵活,制定的访问策略可以方便地应用于各种不同的场合。
3、XML数据交换安全解决方案
对于来自外部的数据交换和访问请求,最重要的步骤是验证请求者的身份信息,确认“他”是谁,同时确定访问权限,防止非法访问。目前存在多种访问控制技术,如访问控制列表(ACL)、基于角色的访问控制(RBAC)等,但是由于不同的企业、部门采取不同的访问控制技术、不同的技术实现平台,造成访问控制的安全边界通常局限在企业内部,而给跨边界的互操作带来很大的不便。
XML作为实现跨平台信息交换和提高异构系统之间的互操作性的最佳解决方案的提出,极大地促进了数据交换应用的发展。而基于XML强大的可扩展性而提出的XML安全服务标准,使我们可以在考虑XML数据信息交换的安全控制问题上,完全采用基于XML标准的体系结构,继承XML的灵活性和可扩展性。
一个安全的XML数据交换请求/响应流程可以用如图1表示:

图1:XML数据交换请求/响应流程
    (1)在访问控制层验证请求者的身份信息,根据策略进行访问权限认证,在这一步可以过滤非法用户和越界访问者;
(2)分析访问请求,提取数据,生成原始XML文档;
(3)对该XML文档做安全处理;
(4)形成目标文档,响应请求。
3.1 访问控制
在XACML的基础上,我们可以实现一种基于策略的访问控制模型。这个模型中包含的组件功能如下:
策略集是预先制订的访问控制策略的集合,是策略访问控制的核心部件;
授权用户库包含了授权用户的相关信息,如口令、证书、授权权限等内容;
策略决策点用于评估决策请求,根据策略集所制订的访问控制策略和自身包含的评估原则与异常(exception)处理原则,对访问请求做出评估,并返回一个授权决议;
策略执行点是一个对外的访问控制接口,接受外部访问请求,根据策略决策点返回的授权决议信息,向操作执行点发出执行指令;
策略信息点收集访问主体信息和被访问的资源信息,作为决策评估的属性信息;
上下文处理句柄主要用于将来自策略执行点的请求做规范化处理,而将授权决议、资源信息等从规范化格式转换为响应信息格式,回复策略执行点。
图2 是访问控制管理体系结构图:

图2:访问控制管理体系结构
当一个请求提交到策略执行点时,策略执行点把这个请求转交给上下文处理句柄,要求获得决策信息。上下文处理句柄从资源库获得资源信息,向策略信息点取得访问者信息,做规范化处理后,向策略决策点发送包含这些信息的策略询问请求,从中获得该访问请求的授权决策信息,然后回复策略执行点,由策略执行点执行授权决策。当决策属性为permitted,则由操作执行点执行对资源的操作;如果决策属性为denied,则拒绝请求。当然,对于决策属性的返回值,可以根据实际应用进行相应的扩充。
3.2 安全处理
安全处理模块操作的对象是根据访问请求生成的原始XML文档,因此可以采用XML加密规范和XML签名规范进行安全处理。
首先对其中包含的敏感信息元素采用特定的加密算法加密,或者采用非对称密钥体系的公钥进行加密,算法信息和密钥信息可以放在<EncryptionMethod>和<KeyInfo>子元素中,加密后的信息构成<CipherData>元素,然后建立符合XML加密规范的EncrypedData元素,取代文档中被加密元素位置。
其次是对该文档进行数字签名。首先通过消息摘要运算得到摘要值放在<DigestValue>元素中,再建立<Reference>元素和<SignedInfo>元素;通过对<SignedInfo>元素进行规范化处理产生<SignatureValue>元素,最后生成符合包含<SignedInfo>、<SignatureValue>和可选的<KeyInfo>、<Object>等元素的<Signature>元素,嵌入XML文档内部作为目标文档,或者以外部文档形式随同目标文档发送。
3.3 密钥管理机制
在上述处理步骤中,涉及到密钥的管理问题。PKI是目前广泛应用的一种密钥管理技术,它围绕着数字证书应用,提供信息的真实性、完整性、机密性和不可否认性,并在业务系统中建立有效的信任管理、授权控制和严密的责任机制。但是传统的PKI是一种两层的应用模式,用户必须安装特定PKI提供者的客户端工具集才能获得PKI的密钥和证书服务。如果运用PKI来解决密钥管理问题,会使整个XML应用变得复杂,而XML的初衷始为了解决交换过程中信息和数据表达的复杂性,使交换和处理简单化。
为了保护已有的投资,我们可以在现有的PKI基础上集成XKMS,相当于在PKI的提供者和用户之间增加了一个中间层——信任服务。这样用户不用直接跟PKI交互,而是通过信任服务(XKMS)间接地获得PKI的密钥和证书服务,把原来用户直接面对的问题转移到信任服务层,通过信任服务层向用户提供基于XML的密钥管理服务。XKMS-PKI密钥管理体系组织结构如图3所示:

图3:XKMS-PKI密钥管理体系结构图
XKMS客户端的用户分为密钥拥有者和使用者两类,他们可以根据自己的需要,向信任服务(XKMS)端发出服务请求;信任服务端由两个功能模块组成:X-KRSS(密钥注册服务系统)和X-KISS(密钥信息服务系统),分别向客户端的两类用户提供密钥信息管理服务。XKMS服务端和客户端之间采用XML消息交互通信。而XKMS与PKI提供者之间的交互的具体协议通信,可以在服务端实现,对客户端的应用而言,屏蔽了PKI的底层细节,只提供基于XML的密钥管理服务。
信任服务(XKMS)端实现这样一些功能:
X-KRSS模块以两种方式向用户提供密钥管理,一种方式称为密钥注册,即用户自己拥有密钥对,通过X-KRSS注册其公钥,X-KRSS把公钥和该用户相关信息绑定,保存在PKI提供的数据库。公钥使用者可以通过X-KISS查找并获得该用户的公钥。另一种方式称为密钥申请,即用户直接向X-KRSS注册申请密钥,处理服务器根据用户的注册信息,在验证有效性和真实性后,为用户生成一个密钥对,把公钥和用户信息绑定存入PKI数据库,私钥则通知用户以安全方式提取。两种方式的区别是,第一种方式注册的密钥对无法恢复,第二种方式可以提供密钥恢复服务。
X-KISS模块除了向密钥使用者提供查找定位服务外,也可以提供验证服务。用户可以根据需要,把文档的验证过程交给X-KISS进行。X-KISS进行验证和鉴别后,向用户回复验证结果。
在这种模式下进行的密钥或证书操作时,客户端应用程序只需向信任服务发出XKMS请求,无需考虑具体的PKI提供者的实现细节问题;由信任服务对该请求消息进行解析,将请求内容转换为相应的密钥或证书操作,并与指定的PKI提供者进行交互;然后把结果转换为应答消息返回客户端。工作原理如图4所示

图4:XKMS的消息交互流程图
4、结论
本文针对XML数据交换涉及的安全问题,结合XML的安全标准,提出了一种基于XML标准体系的安全解决方案模型,包括基于策略的访问控制管理、基于XML的加密与签名安全处理、基于XKMS的密钥管理。具有如下特点:(1)完全基于XML标准体系结构;(2)访问控制部分采用策略描述控制,可以根据具体应用和安全需求的不同,灵活制订访问控制策略;(3)通过在现有的 PKI基础上集成XKMS,即保护了已有的投资,又最大限度地满足XML应用的需要。

参考文献
[1] Entrust Technologies.XML Strategy for Authorization,2001-4
[2] VeriSign White Paper.XML Trust Services,2001-11
[3] http://www.w3.org/Encryption/2001/,2002-12-31
[4] http://www.w3.org/Signature/,2002-12-31
[5] Entrust Technologies.Web Services Trust and XML Security Standards,2001-4
[6] cs-xacml-specification.http://www.oasis-open.org/committees/documents.php
[7](美)莫里森.XML揭密[M].清华大学出版社,2001-6


--  作者:fdcims
--  发布时间:5/30/2006 10:03:00 PM

--  
good
--  作者:flyfoxs
--  发布时间:6/1/2006 11:05:00 AM

--  
要是再发一个word,或者PDF附件就更好了。
W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
6,765.625ms