本文是为ZDNet翻译的系列文章之一,原文已经发表在ZDNet网站
在一个事务过程中有很多方法可以保护XML文档,其中一个最通常的方法是使用像SSL这样的安全传输层。使用SSL的不利的方面是它不能保护它所保护的网络以外的文档。在大多数的事务中,至少会涉及三个网络:你的、互联网和你的伙伴的。
为了减轻保护XML的问题,W3C已经创建了一些规范用于对XML文档进行数字签名和加密,分别称为XML Signature和XML Encryption,它们帮助保护XML事务。
唯一的问题是找到这样的工具,下面就让我们来看看一些这样的工具并检查一下它们在保护XML文档方面所提供的功能。
Apache security
当考虑XML工具的时候,第一个进入我的脑海的就是Apache Software Foundation。Apache因为它强大的Web服务器而闻名,但是它的XML工具也非常的流行。Xalan和Xerces是那些需要XML解析功能的java应用的基础。
为了延伸XML解析的成功,Apache已经建立项目开发SOAP、XSL格式化对象(Formatting Object)、SVG(Scalable Vector Graphics,可伸缩矢量图形)以及现在的XML安全产品。Apache-XML-Security-J project 提供免费的W3C的XML Encryption规范的Java实现。
IBM XML Security Suite
如果你很熟悉Apache,那么你可能也知道IBM的 alphaWorks。AlphaWorks 本质上是一个具有强大动力的研发团队,他们工作于最新和最边缘的软件技术。alphaWorks团队已经创建了XML Security Suite,它提供三种类型的文档保护:
· 认证(Authentication),它实现W3C的XML Signature规范,这个技术允许你对XML文档进行数字签名并验证数字签名。
· 数据加密(Data encryption),它基于W3C的XML Encryption规范。
· 加密工具,它允许你将XML文档全部或者部分加密为密文,以后可以解密为原始的XML文档。
最后,以IBM典型的虚张声势的风格,alphaWorks团队增加了一个被称为XML访问控制语言(XML Access Control Language)的认证层。这个技术仅仅让人们被允许访问那些文档。
XML Security Library
XMLSec Library是另外一个可以免费得到的可以为你的XML应用增加安全功能的套件。不像Apache和IBM的工具,XMLSec Library是面向C语言程序员的(他们会感激它提供源代码)。XMLSec Library支持W3C的XML Signature和XML Encryption规范,同时也支持Canonical XML和Exclusive Canonical XML规范。
它基于libxml和 libxslt (两个都来自XML C library for Gnome) 以及OpenSSL,支持几种不同的加密算法,包括Triple DES和AES。XMLSec Library Web站点包括和那三个W3C规范可以互用的文档。XMLSec以多种形式发布,包括源代码、CVS、Linux RPM以及Windows的二进制发布。
商业工具
除了那些免费的工具外,还有几种商业产品提供XML保护,就像下面的两个产品:
· KeyTools :由Baltimore Technologies开发,包括一个XML snap-in组件。KeyTools 支持W3C的XML Signature规范并提供一个基于PKI的完整的密钥管理系统。
· Java Crypto and Security Implementation (JCSI) :由Wedgetail Communications开发,使用XMLDSig支持W3C数字签名规范。XMLDSig可以使用HMAC-SHA1、带有SHA1的DSA以及带有SHA1的RSS提供对XML文档的数字签名。就像XMLSec Library一样,XMLDSig包含一个在线互用矩阵说明它和规范的实现兼容性。