XML技术的发展越来越受到人们的关注,特别是在电子商务中应用尤其突出,因此,XML的安全性也引起了人们的广泛关注。本文分析了XML安全性的一个方面——XML签名授权。
基于对
安全的迫切要求, 随着XML技术越来越多地被应用到网络信息传输中,XML的安全性也越来越多地受到人们的关注。目前,XML安全性主要的相关开发是XML加密和XML 签名、可扩展访问控制语言(XACL)和相关的安全性断言标记语言(SAML——以前是互为竞争的 AuthML 和 S2ML 的结合)。所有这些都由 OASIS 和XML 密钥管理规范(XKMS)驱动。
世界互联网联盟 (W3C) 和因特网工程任务组 (IETF) 正在制定用于数字签名的 XML 词汇表。东京研究实验室则已开发出 XML 安全组件,该安全组件是 XML 签名规范的原型。XML 安全组件可以从 IBM 的 alphaWorks 获得,包括自动生成 XML 数字签名的工具。
图1是一个典型的电子交易过程。在此购物流程中,客户填写订单,对其中部分信息,如对其所购买商品的数量、价格总额、币种等进行签名,在做到了不可抵赖性的同时也保证了这些敏感性信息的完整性,商家接到客户提交的订单后,除对客户签名后的信息进行签名以表明确实是这家商户的订单外,还可以有选择地对商品名称、规格、价格等进行签名以保证其数据完整性。
XML签名
由IETF和W3C共同组建的XML Signature工作组在2001年8月20日公布了XML数字签名的推荐版本,作为数字签名的规范推出。 W3C将XML数字签名解释为:定义一种与XML语法兼容的数字签名语法描述规范,描述数字签名本身和签名的生成与验证过程。作为一个安全有效的数字签名方案,该规范提供了数字签名的完整性、签名确认性和不可抵赖性。
在目前的规范中规定:消息摘要使用SHA—l算法,消息鉴别编码使用HMAC算法,数字签名使用DSA和PKCS1算法。在安全模式上,可以使用基于对称密钥和基于公开密钥两种体制。XML签名和加密密切相关。在概念上和安全证书签名类似的XML签名是用来确保XML文档内的内容没有发生改变。为了帮助弥补文件系统和剖析器的排版变化,XML签名非常依赖“规范化”的概念。这让签名能够在XML文档所碰到的各种环境中起作用。在和XML加密联合使用的时候,XML签名能够保证所接收的数据就是所发送的数据,而不用向目标接收者的概念妥协。
XML数据加密
XML文档加密的一个特点是可以对文档部分加密,比如我们可以只对公文的正文部分加密,让其他的部分仍为明文形式,这样就可以做到既有保密安全性,又易于检索、归档。
W3C在2002年行将结束时宣布通过了关于XML语言的两项加密规范,从而在Web Service安全建设道路上迈出了一大步。这两项新规范分别是XML Encryption Syntax(XML加密运算规则)和Decryption Transform for XML Signature(XML信息解密规则)。有了它们以后,企业在用XML语言制作Web页面时,可以为在网络节点间交换的某些敏感数据进行加密。
与其他已有的为XML文档加密的方式不同的是,W3C制定的新规范可以对某个文档选定的部分进行加密。这样,XML文档的制作者可以根据需要将最重要的部分选择性地进行加密,而使用者也能对需要保护的部分数据进行加密。例如,在一个电子商务网站上,销售商需要对某些商品的某些内容进行加密(例如在网上下载销售的软件等),而访问该站点的消费者需要加密的则是在一个用XML语言编写的表格中键入的信用卡号和密码等。
新规范的这一特点无疑提高了编程和应用的效率,有望加速基于XML语言的某些Web Service应用的发展,尤其是那些通过创建专门的XML语言来交换特殊类型数据的企业应用。
临时授权模型
图2表示临时授权系统的结构。主要包含两个模块:访问评估模块和执行请求模块。假定有一个对目标XML文档的访问请求,按照相关的策略(用XACL语言写成)执行如下的操作。
第一步:访问者提交访问请求,包括目标元素(目标XML文档中的一个元素)、主体(请求访问者的身份和角色)和行为。当访问者想执行某一任务,由角色分配机构来分配给他合适的角色。
第二步:根据访问控制策略(用XACL写成)和与目标XML文档相关联的状态,对访问请求进行评估。如果必要的话,访问评估模块可以访问控制策略和整个目标XML文档。同时如果有必要的话,检查访问者的组成员资格。访问决定不仅仅给出一位的应答(“允许”或“拒绝”),而且给出应该执行的临时行为。
第三步:访问请求在执行请求模块被执行,请求的行为和在访问决定中指定的临时行为均被执行。当请求的行为是“写”、“创建”或“删除”时,目标XML文档被更新,相关的状态也可能被更新。
第四步:当请求的行为是“读”时,创建访问者请求的视图。