在处理事务的过程中保证XML文档安全最常用的方法之一是使用安全传输层,例如SSL。这种方法的主要缺点是不能保护网络传输层以外的文档。大多数的事务处理涉及三个网络:你的、Internet和你同伴的。
为了帮助减轻XML的安全问题,W3C已经制定了数字签名和XML文档加密的规范。这些规范,分别叫做XML签名和XML加密,是保护你XML事务强有力的蓝图。唯一的问题是找到工具来实现它们。现在让我们来看看一些可用的工具和它们所提供的功能。
在想到XML工具的时候,最先想到的一个名字是Apache软件基金会。Apache因其丰富的Web服务器而著称,它的XML工具也非常流行的。Xalan和Xerces这两个项目都是许多需要XML剖析的Java应用程序的XML基础。
除了它在XML剖析器上的成功,Apache有一些项目是专门来开发SOAP、XSL格式化对象、SVG,以及现在XML安全的。Apache-XML-安全-J项目提供了一个执行W3C
XML安全规范的免费Java工具。
如果你熟悉Apache的话,那你也可能知道IBM的alphaWorks,它事实上是一个研究前沿软件技术的强大研发团队。AlphaWorks团队开发了XML安全套件,它提供了三种类型的文档保护:
XMLSec库是另一个为你的XML应用程序加上安全保障的免费工具套件。同Apache和IBM的工具包不一样,XMLSec库是为C程序员准备的,他们会很欣赏这个库还包含有源代码。它支持W3C
XML签名和XML加密的规范,还支持规范XML和专用规范XML。
基于libxml、libxslt(这两者都来自XML用于Gnome的C库)和OpenSSL的XMLSec库,能够支持多种加密算法,包括Triple
DES和AES。XMLSec库的Web网站包括进了所有三个W3C规范互用性的文档。这个工具包以多种格式供使用,包括源代码、CVS、Linux
RPM和Windows可执行程序。
除了这些免费的工具,有些商业产品也提供了XML安全特性。Baltimore技术公司的KeyTools有一个XML嵌入组件,支持W3C的XML签名规范,并提供一套完整的基于PKI的密钥管理系统。Wedgetail通信公司的Java Crypto和安全实现工具(JCSI)使用XMLDSig 来支持W3C的数字签名规范。使用HMAC-SHA1,XMLDSig能够为XML文档提供数字签名。就像XMLSec库一样,XMLDSig包括了一个在线互用性方阵,用以说明符合这些规范工具的兼容性。