SOAP安全性扩展:数字签名

  SOAP安全性扩展:数字签名(SOAP-DSIG)定义了用数字方式签名SOAP消息及确认签名的句法和处理规则。本文讨论了SOAP-DSIG和SSL有着怎样的关系,并描述了这两项技术是如何互补的。

数字签名使初始用户和软件能够可靠地发送信息。可惜的是,简单对象访问协议(Simple Object Access Protocol,SOAP)1.1并不包括签名消息的规定,因此也无此安全性。我和我的同伴们曾建议在SOAP中加入数字签名技术(它随即被万维网联盟收录为SOAP-DSIG附注),来定义用数字方式签名SOAP消息以及确认签名的句法和处理规则。该技术从此被应用到了IBM、Microsoft以及其它公司外发产品中。

然而SOAP-DSIG必须使用安全套接字层(Secure Sockets Layer,SSL),这是一种在Web站点中得到了最广泛运用的安全性技术。因此我们应该提出这样一个问题:SOAP-DSIG和SSL有着怎样的关系?这两项技术的区别又是什么呢?

本文回答了这些问题,并描述了这两项技术是如何在各自的不足之处与对方实现互补的。同样,由于HTTP(也就是HTTP上的SOAP)应用相当广泛,因此本文将主要把HTTP作为传输层进行重点讨论。然而,您应当注意,SOAP和SOAP-DSIG都是独立于传输而存在的,因而能在其它传输协议上使用,如SMTP、FTP以及MQ。在使用其它传输协议时,您需要了解SOAP-DSIG与那个传输层(例如,SMTP中的S/MIME)中相应的安全性有着怎样的关系,这也是我稍后将在本文中说明的内容。

介绍
尽管HTTP最初只是作为一个传输HTML文档的协议开发的,而现在您通过Web站点上的CGI脚本或Java Servlet就能用它来订购产品和服务。在因特网上订购产品时,您可能需要发送信用卡号码等的个人信息。然而,您应该只把该信息以安全的方式发送给值得信任的HTTP服务器,这样就没有敌对的第三方能截获并窃取该信息了。开发SSL就是为了解决这些保密性和服务器身份验证问题的,它现已得到了广泛使用。

与这些企业对客户(B2C)的应用不同,在企业对企业(B2B)的应用中,不是由人用浏览器来显示HTML文档,而是由计算机来处理订单。且比如商品订单等数据可能会用XML而不是HTML格式进行描述,并通过HTTP和SOAP进行交换。

SOAP是一个用来交换任意XML文档的标准消息传递层,也是Web服务的主要构件之一。除了SOAP以外还有其它相关技术,如通用描述、发现和集成(Universal Description,Discovery and Integration,UDDI)以及Web服务描述语言(Web Service Description Language,WSDL),但本文并不想讨论这些技术。(需要关于在本文中提及的技术的链接,请参阅参考资料部分。)

在开发基于SOAP的Web服务和B2B应用时,安全性问题仍然很重要。特别是在企业间的商业交易中,不可抵赖性的安全性要求需要得到满足。SOAP-DSIG就是针对这个目的提出的。本文回答了下列问题:什么是不可抵赖性?SOAP-DSIG和SSL是如何结合起来以实现不可抵赖性的?

消息传送的安全性要求
每一个SOAP消息都有一个SOAP信封和SOAP编码。SOAP信封是一个能用来装载任何XML文档的数据结构。SOAP编码被用于将非XML数据编码为XML文档,这样它就能被装在SOAP信封中进行传输了。通常,这一编码旨在用于类似远程过程调用(RPC)的应用中。由于本文中主要讨论的是SOAP信封,而并不直接涉及SOAP编码,因此它适用于任何一种基于SOAP的应用,包括RPC和B2B应用。

在开始部分,我将概述一下从一台计算机(发送方)到另一台计算机(接收方)的消息传输的一般安全性要求。确切地说,我将谈到消息身份验证、发送方/接收方身份验证以及不可抵赖性。请注意,这里所描述的安全性要求并不是SOAP所专有的,它们能适用于任何种类的消息传输。

第一个要求就是机密性加密。由于机密性要求是通过使用SSL来满足,而不是由SOAP-DSIG解决的,因此本文中将不作讨论。我所关注的安全性要求是身份验证。请考虑一下下面两个问题:

●从发送方的角度来看:在发送消息的时候,目标接收方的身份是如何得到验证的呢?
●从接收方的角度来看:在接收消息时,发送方的身份和消息的内容是如何得到验证的呢?
Copyright© 2023 www.sem.org.cn 站长网 版权所有