SOAP协议安全性的研究与应用
- 格式:pdf
- 大小:1.06 MB
- 文档页数:3
—142— SOAP 协议安全性的研究与应用刘志都1,贾松浩1,詹仕华2(1. 南阳师范学院计算机与信息技术学院,南阳 473061;2. 福建农林大学计算机与信息学院,福州 350002)摘 要:针对Web services 发展过程中面临的安全性问题,剖析比较了SSL 和XML 的安全性作用机制,结合目前所使用的基于SOAP 的安全技术,融合加密、数字签名和授权3种方法,给出一个解决安全问题的方案。
采用XML 安全协议保证端到端的安全,通过实例证明该综合方法是可行的。
关健词:Web services 服务;SOAP 协议;XML 语言;SSL 协议;XML 加密Research and Application of SOAP SecurityLIU Zhi-du 1, JIA Song-hao 1, ZHAN Shi-hua 2(1. College of Computer & Information Technology, Nanyang Normal University, Nanyang 473061; 2. College of Computer & Information, Fujian Agriculture and Forestry University, Fuzhou 350002)【Abstract 】Aiming at security problems faced in the development of Web services, three methods of encryption, digital signature and authorization are put forward. Analyzing and comparing the security functional mechanism of SSL and XML, fusing the security technologies based on SOAP, it presents a solution scheme on security problems. It adopts XML security protocol to guarantee the security of end to end, proves it is feasible to solve some security problems.【Key words 】Web services; SOAP; XML; SSL; XML encryption计 算 机 工 程Computer Engineering 第34卷 第5期Vol.34 No.5 2008年3月March 2008·安全技术·文章编号:1000—3428(2008)05—0142—03文献标识码:A中图分类号:TP3931 概述SOAP 作为Web services 的重要部分,其机密性、认证和授权等安全机制一直受到人们的广泛关注[1]。
但SOAP 标准在制定规范时并没有过多考虑其安全性要求,它尽可能地利用已有的标准和协议来实现相应的功能,而不是重新定义一个新协议[1]。
SOAP 采用2个已被广泛使用的协议:HTTP 和XML ,它们都有较成熟的安全技术,如SSL, HTTPS 和XML 数字签名技术等。
W3C 工作组制订了SOAP 安全性扩展,使用XML 数字签名和XML 加密这2项技术来保证SOAP 的安全性。
为了确保信息的安全,信息交换应具有机密性、完整性、不可否认性、身份验证和授权[2]。
SOAP 作为未来企业应用之间信息交互的重要手段,同样需要达到这5点安全性要求。
普遍使用的点到点安全技术只能保证Web 服务在传输层上数据的完整性和保密性,其在运用中产生了一系列问题[3]。
要解决Web 服务安全问题就需要一种端到端安全的机制。
本文采用Web 服务中的主要数据通信格式XML 来保证端到端的安全性。
2 SOAP 安全性模型SOAP 安全性模型结合了传输层安全性和XML 安全性来达到安全性要求,如图1所示[2]。
请求者利用SSL 或者结合SSL 的HTTP 基本身份验证来完成发送方的验证,并使用SSL 协商确定的会话密钥向接收方发送加密过的消息,这样就在发送方和接收方之间建立起了安全的连接。
而XML 数字签名和XML 加密则在传输层的安全性上工作,提供更高一层的数据机密性和数据完整性。
并通过结合SSL 的发送方身份验证来提供消息的不可否认性。
授权在这个体系中是一个独立的部分,实现的技术也比较多,通常由防火墙及企业Web 应用程序来完成。
请求者的身份验证完成之后就必须对其进行授权。
防火墙的授权通过防火墙的基于策略的规则来实现,这对于分离同一Web 服务上的不同功能相当有效。
而由Web 应用程序处理的授权是基于程序代码的授权,Web 应用获得请求方身份并根据其身份图1 SOAP 安全性模型SOAP-DSIG 和SSL 满足的安全性要求如表1所示[4]。
表1 2种技术的安全性要求技术 满足的安全性条件SSL 机密性、发送方/接收方身份验证以及用MAC 进行的消息身份验证 SOAP-DSIG用MAC 和数字签名实现的消息身份验证其中,SSL 提供了机密性和发送方/接收方身份验证。
SSL 还有将MAC 添加到被传输的消息中去的功能。
而SOAP-DSIG基金项目:福建省自然科学基金资助项目(2006J0402);福建省教育厅基金资助项目(JBD6119)作者简介:刘志都(1957-),男,副教授,主研方向:计算机应用与软件工程;贾松浩,硕士;詹仕华,副教授收稿日期:2007-10-30 E-mail :nyliuzd@不仅能在被传输的消息中加入MAC,还能加入数字签名,但这对于发送方/接收方的身份验证来说仍是不够的,因为它还是容易受到攻击。
尽管SOAP-DSIG和SSL提供不相同的功能,他们还是为彼此的不足之处提供了互补。
PKI是整个Web服务安全体系的基础。
它是一种利用公钥加密技术为电子商务的开展提供一套安全基础平台的技术和规范。
它具有权威认证机构CA,并对证书的产生、管理、分发和作废进行管理。
无论是SSL协议的身份验证、会话密钥的协商还是XML数字签名/验证等都须通过PKI来完成。
可以说没有PKI就无法保证Web服务的安全性。
3 安全性的研究与应用本文把Web服务的安全模型建立在3个层次上:传输层以下的点对点安全,应用服务级的安全,策略和端对端的安全。
Web服务安全模型达到目的的过程如下:(1)服务方可以要求请求者的消息证明一组声明,这组声明和相关的信息就是端点策略。
(2)请求方可以通过把安全令牌与消息关联起来发送。
这样,消息既可以要求特定的操作又证明了发送者具有要求该操作的声明。
(3)如果请求者无法给出必需的声明,则请求者或其代表可通过与其他Web服务联系设法获得声明。
这些其他的 Web 服务,称为安全性令牌服务,可以要求它们自己的一组声明。
安全性令牌服务通过签发安全性令牌代理不同信任域之间的图2 Web服务的安全令牌模型为了更好地说明这些技术,本文定义3种标记符<Encryption>, <Signature>和<Authorization>来增加SOAP相关信息的安全数据,其中的加密信息都隐藏在代码<SOAP- ENV:Header>里面。
3.1 XML加密XML加密技术在SSL的基础上提供了应用层所需的端到端的安全性,保证了数据在各个通信节点上的安全。
XML 加密的例子如下,其中,<xenc:EncryptedData>元素使用XML 密文加密;<SOAP-SEC:Encryption>元素有一个子元素:<xenc: DecryptionInfo>包含一个共享的密钥。
<SOAP-SEC:Encryption xmlns:SOAP-SEC="http://schemas. /soap/security/"><xenc:DecryptionInfo Id="decInfo1" xmlns:xenc="http://www. /2000/10/xmlenc"><xenc:Method Algorithm="/2000/10/xmlenc# des-cbc-pkcs5padding"/><xenc:ReferenceList><xenc:Reference URI="#encData1"/></xenc:ReferenceList><ds:KeyInfo xmlns:ds="/2000/09/ xmldsig#"><ds:KeyName>The Shared Secret Key</ds: KeyName></ds:KeyInfo></xenc:DecryptionInfo></SOAP-SEC:Encryption><SOAP-ENV:Body><m:GetLastTradePrice xmlns:m="some-URI"><xenc:EncryptedDataxmlns:xenc="/ 2000/10/xmlenc"Id="encData1"DecryptionInfoURI="#decInfo1" IV="x40tN1mAZSY=">0rqGM/nMhGNHY0U6ZhbkuPDEpYaqD/nwqtt0iw361RLeVGvJgn37 GeNkdaVY+JizNWsqR//TDeOG= </xenc:EncryptedData></m:GetLastTradePrice></SOAP-ENV:Body>3.2 XML数字签名数字签名是确保文档安全的一种方法,XML签名(SOAP-DSIG)是W3C为了对敏感的数字通过会话密钥或公/私密钥进行加密而定义的数字签名进程和XML文档结构的规则。
下面的例子说明了如何使用MAC或数字签名来加密SOAP信息。
SOAP-DSIG的最初动机是在SOAP消息中附加数字签名。
它定义了SOAP消息中附加XML签名的数据格式。