xml数据交换安全解决方案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
互联网技术的发展,大大提高了信息流通的速度和效率,吸引了越来越多的企业、个人通过网络从事其相关活动,基于网络的数据交换和业务协作越来越频繁。
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提供者进行交互;然后把结果转换为应答消息返回客户端。
基于网格安全的XML数据交换技术的原理与实现
1 网格概述
网格是基于计算机技术和网络技术发展起来的,它将地理位置上分散的资源集成起来,从而建立起一种构筑在国际互联网上的新型计算平台。
通过网格,人们可以获得诸如计算机、集群、计算机池、仪器、存储设施、数据、软件等各种资源、功能和服务。
使人们共享计算资源、存储资源及其他资源。
有了这种以现有的国际互联网为基础建立的满足人们对资源更高共享需求的计算机平台,人们就可以实现跨组织、跨管理域的管理资源,并为网格应用提供全面的资源共享接口,实现分布资源的有效集成,提供共享各种资源的手段,从而提高资源的利用率,满足人们对广域范围内各种资源的共享需求。
在网格环境下,人们不仅可以向网格发出请求资源消息,由网格接收请求并做
出响应,而且客户提出的请求能够同时驱动多个资源工作。
多个请求可以向多个服务器请求连接。
客户程序资源可以被其他客户请求作为资源使用。
网格的目的是无论地理位置的远近、设备类型的异同,都可以为用户提供统一且简单的共享网格资源的环境。
为达到网格的目的,需要建立相应的网格体系结构。
最简单的一种就是由分布式资源、网格系统及网格用户组成的三层结构(如图1)。
底层是网格的物理层,它是分布式网格资源的集合,是建立网格的基础。
顶层是网格的应用层,它是应用分布式网格资源的集合,是网格应用的基础。
网格系统在物理层和应用层的中间,将用户和资源联系起来提供透明的使用,以支持全方位的资源共享。
网格系统提供的功能就是应用层的需求,它直接影响着网格所要达到的目的。
网格是一个开放、动态、异构、分布的系统,要想将互联网上分布的各种已经接入网络的设备以及将要接入网络的设备有机地集成,不是简单的连通问题。
网格要为用户和应用提供访问使用资源的统一接口。
它要对不同的物理资源进行不同层次的抽象,使不同的模块协调起来;定义好各模块的关系、模块间进行交互的协议及相应的方法与规则。
网格是以原有的国际互联网为基础构建的,需要已有的一些协议和规范作为支持。
图2所示为支持国际互联网的各网格协议的层次。
H1TP、FTP、SMTP都是网格协议的传输载体,同时也都是网格建设的基础。
无论网格的具体实现细节如何,从用户的角度来看,它的确只是一个网格接口。
通过这个接口,用户向网格发送请求和接收来自网格的信息。
网格接口就是要定义实现数据交换的协汉,采用相同协议的双方要能够相互理解对方的含义。
在协议中还要指明数据表示格式和数据内容的具体含义。
XML就是适合网络上使用的一种数据交换语言,它已经在网格领域得到广泛使用。
2 XML的运用
目前网格上最常用的数据交换表示形式中最重要和最常用的就是XML。
XML是SGML 的一个子集,以结构化的方式描述各种类型的数据。
它允许文档制作人员创建新的标记,以便更准确地描述数据。
XML几乎可以描述所有领域的数据。
它用严格的嵌套标记表示数据信息,特别适合在国际互联网的多点数据交换环境下使用。
XML本身是可扩展的,只规定了标准的语法。
XML是可以创建行业词汇和应用的语言,其文档的基本语法由W3C创建文档定义的XML模式所规定。
在XML文档中所有开始标记都必须有对应的结束标记,并且这种标记有元素和属性两种类型。
元素由起始标记、数据和结束标记三部分组成,如:<data>123</data>就是一个元素。
而属性是修饰成分,由属性名后跟一个等号加属性值的形式构成,用来描述元素的某些性质。
属性必须有一个属性值。
例如:<数据编号=“56789”>我的数据<,数据>就是一个有属性的,其中“编号”是属性,“56789”是属性值。
在网格环境下,由于XML文档的结构化和可读性,XML数据经常作为公文或流程数据,以合作的形式流转,因此还需要用加密和签名来保证基于XML的数据交换活动中信息的安全性。
XML语言的安全是网格上信息交换的基础。
为保障XML数据交换的安全性,国际标准化组织W3C提出了一系列XML安全服务的新标准,为以XML作为数据交换载体的应用提供安全性保障。
这些标准包括:XML加密(XML Encryption)、XML数字签名(XML Sigllature)、XML 密钥管理规范(XKMS)、XML访问控制标记语言(XACML)等。
XML语言的搜索是明确的、无二义性的。
在交换敏感信息时,发信方及收信方必须建立安全的通信机制。
为确保安全性,在使用XML交换数据时,需要在数据上使用加密及签名技术。
2.1 XML加密机制
XML加密(XML Encryption)是对XML文档中的全部数据或其中部分元素进行加密。
对同一文档的不同部分,可采用不同的密钥进行加密,将同一个XML文件分别发给不同的接收者后,接收者只能访问拥有权限的那部分信息。
XML加密语法的核心元素是EncryptedData元素,该元素与EncrypledKey元素一起用来将加密密钥从发送方传送到已知的接收方,它描述了一个加密数据包含的所有信息。
加密时,EncryptedData元素替换XML文档加密版本中的该元素或内容。
当加密的数据是任意数据时,EncryptedData元素可能成为新XML文档的根,或成为一个子元素。
当加密整个XM L文档时,EncryptedData元素则成为新文档的根。
在加密过程中,对于经过加密的数据,只有指定的接收者才可以从中还原出密码本身。
XML加密定义了一些元素:EncryptionMethod子元素使用URI惟一标识中所采用的加密算法,目的是确保通信双方可以在加密算法上保持一致。
KeyInfo子元素表达了加密时所使用的密钥信息,它可以根据通信双方的约定,记录密钥名称、密钥值、数字证书,甚至获得密钥转换方法的描述,从而确保密钥的安全性。
CipherData子元素标记为被加密的数据。
EncryptionProperties子元素可以用来描述加密数据和密钥的附加信息,如时间戳、加密序列号。
发送者创建符合以上结构的EncryptedData元素发给接收者;接收者可以根据从E neryptedData元素中得到的解密所需的加密算法、参数和密钥信息,正确地解密信息。
2.2 XML签名机制
XML签名标准可对任何数据类型提供完整性、消息认证、签名认证等服务。
XML签名的主要目的是确保XML文件内容没有被篡改,对来源的可靠性进行验证。
XML签名是使用XML应用开发工具实现的,而不是使用专用软件。
签名时可直接对XML内容进行处理。
Signature是XML签名的元素,描述传输一个数字签名的完整信息。
SigzaedInfo子元素记录被签署的原始信息。
CanoniclizationMethod子元素使用URI惟一标识。
该数字签名采用XML的数据算法,它是正确解析XML数据签名的前提。
因为XML数字签名对SignedInfo 子元素的字节流进行运算处理时,采用Canoniealization使XML签名适应各种文件系统和处理器在版式上的差异,使XML签名适应XML文件可能遇到的各种环境。
SignatureMethod元素记录的是签名所采用的算法。
Reference子元素指定的是摘要算法和摘要值。
经过运算的Signedlnfo子元素记录在SignedValue中。
Keylnfo子元素是接收者用来得到有效签名的密钥信息。
接收者可以根据Signature元素包含的信息确定数据的完整性和可靠性。
2.3 XML数据交换安全中实现加密、签名的实例
XML作为实现跨平台信息交换和提高异构系统之间互操作性的最佳解决方案而被提出,这极大地促进了数据交换应用的发展。
而基于XML强大的可扩展性而提出的XML安全服务标准,使得可以在考虑XML数据信息交换的安全控制问题上,完全采用基于XML 标准的体系结构,继承XML的灵活性和可扩展性。
图3给出一个安全的XML数据交换请求/响应流程。
在安全处理模块中,操作的对象是根据访问请求生成的原始XML文档,因此可以采用XML加密规范和XML签名规范进行安全处理。
首先,对其中包含的敏感信息元素采用特定的加密算法加密,或者采用非对称密钥体系的公钥进行加密。
加密时,首先将算法信息和密钥信息放在<EncryptionMethod>和<Keylnfo>子元素中,加密后的信息构成<CipherData>元素,然后建立符合XML加密规范的Encryped Data元素,取代文档中被加密元素。
其次,对该文档进行数字签名。
签名时,首先通过消息摘要运算得到摘要值,放在<DigestValue>元素中,再建立<Refe rence>元素和<SignedInfo>元素;然后通过对<Signedlnfo>元素进行规范化处理产生<Signatur eValue>元素;最后生成包含<Signedhffo>、<SignatureValue>和可选的<Keylnfo>、<Object)等元素的<Signature>元素,嵌入XML文档内部作为目标文档发送,或者以外部文档形式随同目标文档发送。
下面给是一个用XML实现加密与签名的例子:。