基于XML的Web服务安全模型研究

2009-10-19 09:07王晓明张浩军
新媒体研究 2009年17期

王晓明 张浩军

[摘要]通过对Web服务存在的安全性问题和现有相关的安全规范和协议,提出一个基于XML的Web服务安全模型,并加以分析和研究。

[关键词]Web服务 安全 XML

中图分类号:TP3文献标识码:A文章编号:1671-7597(2009)0910073-01

一、引言

Web服务具有松散耦合、语言中立、平台无关等特点,适用解决不同架构、不同平台间的数据交换和信息共享,应用日益广泛,同时安全性是Web服务普遍应用的核心问题之一。

目前Web服务常用两种安全技术包括,一是HTTP基本身份认证,是典型的基于口令的认证,将用户名和密码通过Base64编码后进行传输,这种方法安全性较差;二是安全套接层SSL协议,提供高安全性的信息交换保护,但在性能、中间节点和选择性保护等方面存在缺点。

二、Web服务相关的安全技术

Web服务规范定义了基于XML的应用,XML签名和XML加密提供了保护Web服务数据的基本安全规范。

1.XML签名。XML签名将一个密钥与被引用的数据对象相关联,但并不指定密钥如何与实体相关联,也不指定被引用或签名的数据的含义,XML签名的密钥管理一般是由密钥注册库、XKMS应用或其他目录服务处理。

2.XML加密。XML加密语法与处理描述了对数据的加密过程以及加密结果的XML表示,加密数据可以是XML文档、XML元素或XML元素的内容,甚至是任意的数据。

3.密钥管理规范XKMS。XML密钥管理规范XKMS定义了密钥、证书管理标准,包括注册、分发、撤销等操作,允许客户通过Web服务取得密钥信息。配合XML签名和XML加密,实现Web安全服务。

4.安全声明标记语言SAML。安全声明标记语言提供了支持单点登录、交换验证和授权信息的XML框架,定义了对验证、属性和授权信息进行XML编码的语法、语义和传输协议。

三、Web服务安全系统的设计

创建和管理一个安全的Web服务环境涉及到Internet、XML及Web服务安全机制,本文结合省级人口和计划生育管理系统的开发,设计并实现了一个满足需求的Web服务安全系统,如图1所示。

(一)WS3组成

1.服务请求者。即申请提供服务方,可以是Web服务、Web应用程序、客户应用组件等。通过向服务提供者发送SOAP消息来启动服务的执行,它是Web服务的发起者。

2.服务提供者。服务提供者是根据服务请求者做出响应的实体。它收到服务请求者发送的SOAP消息后执行服务,然后将执行结果返回给服务请求者。本模型中服务提供者包含两方面的内容,认证模块以及授权调用资源响应模块。

3.安全模块。该安全模块由两部分组成,保证传输层安全的模块和保证SOAP安全的模块。为了保证数据传输安全,在传输层上采用Internet上最通用的安全措施:HTTP基本身份验证和SSL/TLS。在SOAP层上采用SOAP加密和SOAP数字签名以及SAML。

SOAP加密和SOAP签名保证了存储状态或传输状态下的信息的保密和不可否认性,SAML对服务请求者的用户(而不是请求者本身)发布断言,请求者以SV模式,即发送者担保模式将断言发往服务提供者,表明自己对用户的信任和传递用户的属性、验证、授权信息。

4.XKMS服务器。为Web服务提供基于XML的公用密钥基础结构,用于管理密钥和证书信息,控制密钥注册、恢复和取消。服务请求者和服务提供者通过XKMS服务认证对方,XKMS服务器也提供了一种Web服务。该模块主要使用XKMS间接调用底层PKI数据库,完成对密钥的读取操作。

(二)WS3工作流程

1.服务请求者登录到SAML服务器,进行合法性的认证。

2.如果通过认证,SAML服务器从策略库中取出与登录者相关的访问权限,并生成SAML断言。

3.安全模块中负责传输层安全的模块使用HTTP基本身份认证对服务请求者发送的信息进行认证,由于BASIC-AUTH是基于口令的认证方法,而又是采用明文传输口令,是很不安全的。为了增加安全性,本模块采用使用安全套接层协议建立加密信道后再采用基本身份认证方式进行认证。SOAP层安全主要对SOAP信息以及在第2步中产生的SAML断言用私钥进行加密,并将安全性令牌加入其中。通过这两个模块将SOAP消息及有关信息进行安全封装。

4.发送的信息通过第3步封装处理后到达服务提供者。服务提供者收到信息后根据定位到的安全性令牌,传送给XKMS服务器以验证其有效性。如果令牌有效,XKMS服务器将服务请求者的公钥取出,服务提供者用公钥解密信息。然后根据信息中包含的SAML断言中的权限信息,对服务请求者的身份进行认证,决定其是否有权访问资源及访问哪些资源。当核实服务请求者为授权用户后,服务提供者将请求的资源及自己的安全性令牌装入SOAP消息,并用自身的私钥对消息进行加密处理,响应服务请求者。

5.使用SSL建立加密信道,将第4步安全处理后的响应信息返回给服务请求者。

6.服务请求者收到返回信息后,定位消息中的安全性令牌,向XKMS服务器询问令牌的有效性。当XKMS服务器确定其有效性后,将服务提供者的公钥取出。服务请求者使用取出的公钥对消息进行解密,得到服务响应结果。

四、结论

Web服务作为新一代分布式应用日益受到关注,Web服务的安全技术也在逐步完善阶段,如Microsoft、Verisign和IBM提出的WS-Security等。而在Java EE和.NET平台也都纷纷推出了与Web服务安全相关的开发组件和工具。本文在理论基础上对Web服务安全技术进行了分析,并设计了一个基本的安全模型框架。进一步的具体实现还有待详细研究。

参考文献:

[1]陈莉、张浩军,基于XKMS的安全服务机制应用研究[J].信息工程大学学报,2004,5(3):25-28.

[2]马恒太等,Web服务安全[M].北京:电子工业出版社,2007.

[3]饶元,安全的Web服务集成框架分析与设计[J].计算机工程,2005,31(7):153-155.