控制内容发送和保证信息的完整性的需求导致了很多企业不能够在外部网络上使用它。一些已经发布的标准是针对XML的安全问题的,这些标准还在进一步地发展以便人们能够对XML内容进行颗粒化管理和控制。本文介绍了5种XML安全方面的标准。

  XML加密(Xenc)

  除了在传送XML文件时采用标准进行加密,W3C和IETF还制定了一项标准来对一个XML文档中的数据和部分内容进行加密。这样,如果一个文档只是某些敏感部分需要进行保护,你就可以他们单独进行加密。对于同一个文档中的不同部分用不同的密钥进行加密,你就可以把同一个XML文件发给不同的接受者,而接受者只能看见和他相关的部分。

  一旦采用这个这个方法对一个XML文件进行加密,在加密部分的首尾就会出现两个标记,表示该文件是以W3C公布的标准进行加密的。真实的标识名被""和 ""所替代;数据本身显示为一连串的密码。这个标准使XML数据提供者可以根据用户的不同对内容进行颗粒化的控制。而且,由于数据本身而不是整个文件是加密的,整个文件还是可以被XML处理器识别和处理。

  XML签名(XML-SIG)

  XML签名和XML加密紧密相关。和安全认证签名相似,XML也是用于确保XML文件内容没有被篡改的。为了适应各种文件系统和处理器在版式上的不同,XML签名采用了“标准化(canonicalization)”。这就使得XML签名可以适应XML文件可能遇到的各种环境。

  当对内容进行签名时,canonicalization使用文件里的数据和标识产生一个独一无二的签名,忽略了一些诸如段落结束或者制表符之类的次要信息。收到一个文件后,客户系统就开始进行“XML签名解密转换”,它通过辨认信息是在标识前还是标识后来区分内容和签名:内容在标识后,而签名在标识前。通过比较运算结果和文件中的签名,可以确认数据的完整性。

  XML签名和XML加密结合在一起,可以确保数据发送和接收的一致性。

  XML加密管理规范(XKMS)

  XKMS是W3C制定的一项标准。它定义了分发和注册XML签名规范所使用的公共密钥的方法。XKMS包括了两部分:XML密钥注册服务规范(X-KRSS)和XML密钥信息服务规范(X-KISS)。X-KRSS是用于注册公共密钥的,而X-KISS是用在XML签名提供的密钥方面。

  一些诸如VeriSign的供应商对这个规范非常积极支持,他们开发了一些工具包和应用来促进这个规范的实行。

  这个规范到目前为止还是比较松散,2002年3月18日发布的最新版本还是局限于现在的需求。

  XML访问控制标记语言(XACML)

  XACML是OASIS制定的一个用以整合各方面(比如IBM和米兰大学)努力成果的一个标准。它和SAML(将在下面提到)共同使用,它提供了一种标准化XML文件接入控制决定的工具。XACML是用来决定是否允许一个请求使用一项资源,比如它是否能使用整个文件,多个文件,还是某个文件的一部分。

  XACML收到一个SAML请求后就根据事先制定的规则或策略来判断是否允许请求使用某项资源。和XML加密相反,接入控制信息是物理上独立的,当一个请求生成的时候,该信息被引用。Xpointers和Xpaths是在XML资源中的标识里定义的,它们通知处理器检查XACML策略,以及在哪里可以找到这些策略。

  一旦按照策略完成了评估,就会返回一个是真或者是假的逻辑值表示是否允许接入,这个认证决定声明返回后,就会执行相应的操作。你可以访问OASIS XACML Committee了解关于会议时间,学习案例,和2002年3月10日发布的最新版本的工作草稿。

  安全声明标记语言(SAML)

  SAML也是出自OASIS,和XACML相对,它处理证明/授权的请求/响应的交换。一个SAML请求以HTTP方式通过SOAP被发送到一个有相应处理工具的系统去。

  一个SAML请求包括诸如用户姓名、密码以及其他一些关于提出请求的人的信息。这些信息被发送到一个处理应用程序那里来决定是否允许使用一项XML资源。

  SAML采用了一项由OASIS提出的“声明计划”。有三种声明:认证,授权决定,和属性。这三种声明在一个应用中被用在不同的场合来决定谁是请求者,请求的内容,是否有权提出这项请求。

  这个规范最新的版本是2002年5月31日发布的。你可以访问OASIS的网站了解更多:XML-Based Security Services TC (SSTC) page。 XML安全:一个正在推进的进程

  这些标准和规范没有一个已经被充分实现并广泛采用了。W3C和OASIS都在为XML提供安全标准而努力工作着。早期的一些解决方案现在已经可以应用了,比如Phaos Technology的Phaos XML和IBM 的alphaWorks。随着XML的应用越来越广泛,对于XML安全性的需求也日益强烈。传统的安全手段妨碍了XML的易用性,不过新的标准应该会很快出现。
 
 
更详细的安全标准可参考IBM的《XML安全专题》链接:[url]http://www.ibm.com/developerworks/cn/xml/theme/x-security.html[/url]