基于SOAP安全扩展的Web服务研究

时间:2022-08-13 10:42:25

基于SOAP安全扩展的Web服务研究

摘要:SOAP(Simple Object Access Protocol,简单对象访问协议)是一种基于XML的通信协议。本文在分析基于SOAP的Web服务结构以及SOAP消息构成后,提出了一种加强Web服务安全的SOAP数字签名技术,确保了Web服务完整性和安全性.

关键词:Web服务;简单对象访问协议;数字签名;可扩展标记语言

中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)06-1pppp-0c

Study on SOAP Security Expansion-Based of Web Services

FAN You-lei1,ZHANG Ya-zhen2

(1.A0513 Class,Faculty of Information Science&Technology,Jiujiang University,Jiujiang 332005,China;(2.Faculty of Information Science&Technology,Jiujiang University,Jiujiang 332005,China)

Abstract: SOAP is a XML-based communication protocol.In this article,we discuss Web Services architecture of SOAP-based and SOAP message construct,a way to solve safety of Web Service is provided through SOAP based Digital Signature that ensures the integrity and security of Web Services.

Key words: Web Services;SOAP;Digital Signature;XML

1 引言

Web服务是一种通过统一资源指示符(URI)标识的软件应用,其接口及绑定形式可以通过XML标准定义、描述和检索,Web服务能够通过XML消息及Internet协议完成与其它软件应用的直接交互。Web服务可以不用改变现有的各种应用,也不用关心它们技术的不同,利用Web服务的消息驱动机制,就可以让它们协同工作和交互。Web服务体系结构中最基础的支柱是XML消息传递。目前XML消息传递的行业标准协议是SOAP,通常服务的调用者通过在传输层协议之上绑定SOAP消息来请求服务。 随着Web服务技术的飞速发展,其在电子商务、企业应用集成(EAI),B2B应用及电子政务等多个领域正发挥着越来越重要的作用。同时在这些领域也面临着各种各样的安全威胁,如信息窃取、恶意欺骗、伪装、非法修改以及各种扰乱破坏等。为保证Web服务能够在Internet上得到广泛应用,必须保证Web服务的安全,而Web服务通信是利用SOAP消息进行的,因此Web服务安全的核心就是SOAP消息的安全。

2 Web服务的技术框架

Web服务不是一个孤立的概念或者技术,它是由一系列相关的协议来组成的,这些协议之间相互依赖、相互影响。它是计算机应用中的一个重要而崭新的体系,并在此基础上形成了一个协议互操作栈。它从开放性着眼,克服了以前电子商务的封闭性,试图解决Web服务界面层的一致性和和集成平台的开放性。

协议互操作栈[1]是新一代的协议互操作技术,它是由一系列的协议所组成,从而形成了整个Web服务的体系。这些协议包括SOAP、WSDL、UDDI等多种协议。Web服务的体系结构是一个层次结构,由网络层、接口层、描述层、平台服务层以及Web服务工作流等组成,而每层都有相应的标准协议,从而形成了一个Web服务的标准协议互操作栈。图1给出了Web服务的技术框架:

图1 Web服务的协议栈

位于协议栈最底层的为各种现有的网络协议,如 HTTP 协议,FTP 协议等,它们是与 Web 服务通信的基础。SOAP 为在不同系统之间实施平台无关的交互定义了一套基本的元规则,SOAP 是 Web 服务体系架构中服务交互的基础。WSDL 则是描述 Web 服务界面的基本工具。依靠 WSDL,Web 服务的交互界面就能被系统自动处理。UDDI 则是在动态服务集成解决方案中的首次尝试。这组技术使得底层平台对应用交互透明,应用的互操作能力得到了前所未有的提升。位于最高层的 WSFL 是Web 服务工作流协议,它是 Web 服务组合运行、互操作方面的规范。安全机制对于松散耦合的对象环境非常重要,因此需要我们对诸如授权认证、数据完整性(如签名机制)、消息源认证以及事务的不可否认性等进行详细研究。

3 Web服务中SOAP消息安全规范

3.1 SOAP协议研究

SOAP即简单对象访问协议(Simple Object Access Protocol),在最新的SOAP1.2规范[2]中,其正式的定义如下:SOAP是一种轻量级协议,用于在分散型、分布式环境中交换结构化信息。SOAP利用XML技术定义一种可扩展的消息处理框架,它提供了一种可通过多种底层协议进行交换的消息结构。这种框架的设计思想是独立于任何一种特定的编程模型和其他特定实现的语义。

3.1.1 SOAP消息交换模式

SOAP消息从发送方到接收方是单向传送,并经常以请求应答的方式实现。SOAP实现可以通过开发特定网络系统的特性优化,例如HTTP绑定使SOAP应答消息以HTTP应答的方式传输,并使用同一个连接返回请求。而忽略SOAP被绑定到的协议,SOAP消息采用所谓的“消息路径”发送,使得在终节点之外的中间节点可以处理消息。一个接收SOAP消息的应用程序必须识别应用程序需要的SOAP消息的所有部分,检验应用程序是否支持前面识别的其他消息中的必需部分并处理。如果该SOAP应用程序不是消息的最终目的地,则在转发消息之前删除前面识别的所有部分。为正确处理一条消息或者消息的一部分,SOAP处理器需要理解使用的交换方式(单向、请求位答和多路发送等)、接收方的任务、使用的RPC(如果有的话)、数据的表现方法或编码.以及其它必需的语义。

3.1.2 SOAP消息的构成

SOAP消息包含一个SOAP信封Envelope,该信封是一个XML文档。Envelope XML文档的顶级元素,它包含了两个子元素―SOAP消息头部Header和SOAP消息体Body。 SOAP:Header元素是这个对象模型中的一个可选项,这个信息是用户自定义的,用来承载与应用关系不大而需底层环境平台处理的信息,例如:公共密钥加密信息、事务处理顺序标识符、参与处理的各方所需的信息、以及远程SOAP处理程序在管理远程请求时将会需要的其它元数据。SOAP:Body元素是信封的第二个子元素。对于SOAP请求来讲,请求体中包括被调用方法定义的标签,这些标签中包含方法完成其工作所需要的信息,是SOAP消息的必不可少的部分。对于SOAP响应文档来讲,SOAP:Body元素包含作为消息结果的数据。信封中的消息体部分总是用于最终接收的消息,而头部项目可以确定执行中间处理的目标节点。附件、二进制数字及其他项目可以附加到消息体上。 如图2所示:

图2 SOAP消息的结构

3.2 WS-Security规范

为了更好地将XML安全技术适应于Web 服务环境,提出了WS(Web Services)-Security规范。WS-Security规范草案最初由Microsoft公司提出,之后由IBM公司和Microsoft公司共同更新。2002年6月,WS-Security被提交给结构化信息标准促进组织(OASIS,Organization for the Advancement of Structured Information Standards),以促进WS-Security的标准化工作。微软和 IBM 在了第一个 Web 服务安全规范 WS-Security 后,又了一系列后续规范计划。这组规范以 WS-Security 为基础,建立一个初始规范,包括:Web 服务端点策略(WS-Policy)、一个信任模型(WS-Trust)和一个隐私权模型(WS-Privacy)。

在这个基础上又建立了后续,包括:安全会话(WS-SecureConversation) 、联合信任 (WS-Federation)、授权(WS-Authoriza-

tion)。描述如何向SOAP 消息附加签名和加密报头。另外,它还描述如何向消息附加安全性令牌(包括二进制安全性令牌,如 X.509 证书和 Kerberos 票据)。如图3所示:

图3 Web-Security层次模型

(1)WS-Policy

描述中介体和端点上的安全性(和其它业务)策略的能力和限制(例如,所需的安全性令牌、所支持的加密算法和隐私权规则)。WS-Policy用于Web服务的组织为其Web服务指定安全需要。

(2)WS-Trust

用于建立自接和信任关系(包括第三方和中介体)的模型。模型描述如何通过创建安全性令牌,保证服务把现有的自接信任关系用作信任的基础。

(3)WS-Privacy

创建、管理和使用Web服务的组织将经常需要声明它们的隐私权策略,并要求进来的请求声明发送者是否遵守这些策略。

(4)WS一SecureConversation

描述Web服务如何认证请求者消息、请求者如何认证服务以及如何互相建立认证的安全性上下文,以及描述如何建立会话密钥、派生密钥和消息令牌密钥。

(5)WS-Federation

这个规范定义如何使用WS-Security,WS-Policy,WS-Trust,WS-SecureConversation规范构建联合信任案例。例如,它将描述如何把Kerberos和PKI基础架构联合起来。同时还引入一个信任策略来指出并限制和确定被的信任类型。

(6)WS-Authorization

这个规范将描述如何指定和管理Web服务的访问策略。它将特别描述如何在安全性令牌内指定声明,以及这些声明在端点处将如何被解释。

WS-Security规范本身并没有定义新的安全协议,而是在己存在的安全标准和规范中强调安全性。它提供了一个可扩展的框架,用来在SOAP消息中嵌入安全性机制包含数字签名、消息摘要和数据加密等。这些安全性信息都是作为附加的控制信息以消息的形式传递的,不依赖于任何传输协议。因而WS-Security规范具有传输中立性,能保证端到端的安全性。消息级安全模型相对于传统平台/传输级(点到点)的安全模型而言,更适合用于异构环境中,还能有效地防止消息在经过中间节点时遭到第三方的破坏。

4 SOAP消息安全性扩展

Web服务的安全性问题涉及的议题虽然相当广泛,但是首先要解决的基本问题是Web服务通信安全问题,即基于XML的SOAP消息的安全性问题。Web服务的通信安全首先要保证通信中传输的数据的安全,抵抗窃听、篡改、假冒、重放、业务否认等安全攻击,确保数据的机密性、完整性、可用性、消息源认证性和不可否认性。其中,机密性是指消息接收者能够识别消息内容,而入侵者无法识别消息内容;完整性是指消息接收者能够验证传输过程中消息没有被篡改;可用性是指消息接收者能够正确获取所需的消息内容;消息源认证性是指消息接收者能够确认消息的确来源于消息发送者,且入侵者不可能伪装成消息发送者发送同样的消息:不可否认性是指消息发送者无法否认他己经发送过的消息,消息接收者也无法否认他己经接收到的消息。这些安全需求仅依靠SSL的安全机制不能解决所有的问题。SOAP信息封套(Envelope)包括两个部分:SOAP信息头(Header)和SOAP信息体(Body) 。SOAP信息头主要包含与请求相关的元数据,而SOPA信息体封装了服务调用及其相关的参数。通常,认证信息是作为元数据和SOAP消息一起发送的,而且数字签名也可以被容纳在SOAP信息头中.因此,SOAP信息头在SOAP安全中起着重要的作用。因此必须是通过对soap消息头进行安全的扩展,而对于SOAP进行安全性扩展,数字签名(Digital Signature)又是一个很好的解决方案。

4.1 SOAP消息头数字签名的实现

数字签名技术是使用加密算法制成的数字标签,此标签通过密钥制成,而且不访问密钥,就不可能仿制标签。通常使用私钥签名文件,并使用同一私钥打开别人发送来的加密文件。具体将要满足如下三个要求:

(1)接收者能够核实发送者对消息的签名;

(2)发送者事后不能抵赖对消息的签名;

(3)接收者不能伪造对消息的签名。

现在对SOAP进行扩展,在SOAP的头元素的扩展命名空间中加入数字签名。下面是一个包含数字签名的SOAP信息[3]:

< SOAP-ENV: Envelope

xmlns: SOAP-ENV = " schemas. xmlsoap. org/soap/envelope/ ">

< SOAP-ENV: Header >

< SOAP-SEC: Signature

xmlns: SOAP-SEC = " schemas. xmlsoap. org/ soap / security/2000-12">

< ds: Signature xmlns: ds = " http: //www. w3. org/2000 /09 /xmldsig#">

< ds :SignedInfo >

< ds :CanonicalizationMethod

Algorithm =“http :// www. / TR/ 2000/CR-xml-c14n-20001026> ”

</ds :CanonicalizationMethod >

< ds :SignatureMethod

Algorithm =“http :// www. /2000/9/ xmldsig # dsa =“sha1“/ >

< ds: Reference UR I= "#Body"/>

< ds : SignatureValue > iPUoju1hu4o7UTYJKL

< /ds : SignatureValue>

</ds :SignedInfo >

……

< ds : SignatureValue > ioikUERii47yukjkdk

< /ds : SignatureValue>

</ds: Signature>

</SOAP-SEC: Signature >

</SOAP-ENV: Header>

< SOAP-ENV: Body

xmlns: SOAP-SEC = schemas. xmlsoap. org/ soap / security/2000-12

SOAP-SEC: id = "Body">

<m: GetFirstStudent xmlns:m = “some-URI“>

<m:symbol > BeiJing University</m:symbol>

</m: GetFirstStudent >

</SOAP-ENV: Body >

</SOAP-ENV: Envelope >

SOAP头元素的扩展命名空间中加入安全特征,通过扩展,在方案中加入一个新的元素,这个元素在Schema中可以不用改变。如果要在SOAP1.1协议中进行加密性扩展,可以在命名空间中引入适当的标准实现,如XML加密算法(XML Encryption)等。SOAP头元素SOAP-SEC使用的XML命名空间[4]如下:http: ///soap/security/2000-12,命名空间的前缀“SOAP-SEC”就指向这里。

5 结束语

随着B2B、B2C电子商务的发展,企业要求能够与它的业务伙伴、顾客和供应商实现跨边界的、快速的、无缝的整合,而Web服务的通信是利用SOAP消息进行的,SOAP 消息常常跨越 Internet进行传递,因此消息的完整性显得尤为重要。作者在基于WS-Security规范的基础上,采用数字签名方式对SOAP消息头进行安全扩展,确保消息的完整性,但是web服务安全方面,仍有许多值得探索和研究的地方,相信随着W3C标准化进程的发展,SOAP的技术标准也会不断得到补充和完善,SOAP应用必定会更加广阔。

参考文献:

[1]李安渝,等.Web Services技术与实现.北京:国防工业出版社,2003:8-11.

[2]W3C Recommendation Version 1.2 Part0:Primer.[EB/OL]./TR/2003/REC-soap12-part0-20030624/.

[3]W3C SOAP Security Extensions: Digital Signature[EB/OL]./TR/2001/NOTE-SOAP-dsig-20010206.

[4]XML-Signature Syntax and Processing[EB/OL]./TR/2000/CR-xml-dsig-core-20001031,2000-10.

收稿日期:2008-01-08

作者简介:樊佑磊(1985-)男,汉族,山东济宁人,九江学院信息科学与技术学院A0513班学生,计算机科学与技术专业,研究方向:信息安全;张亚珍(1982-),女,汉族,江西瑞昌人,九江学院助教,华中科技大学工程硕士,研究方向:信息安全技术,中间件技术。

上一篇:高职院校操作系统课程教学改革的探索 下一篇:浅析短波、超短波通信的发展趋势