摘要:SOAP(Simple Object Access Protocol,簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議)是一種基于XML的通信協(xié)議。本文在分析基于SOAP的Web服務(wù)結(jié)構(gòu)以及SOAP消息構(gòu)成后,提出了一種加強(qiáng)Web服務(wù)安全的SOAP數(shù)字簽名技術(shù),確保了Web服務(wù)完整性和安全性.
關(guān)鍵詞:Web服務(wù);簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議;數(shù)字簽名;可擴(kuò)展標(biāo)記語(yǔ)言
中圖分類(lèi)號(hào):TP393文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2008)06-1pppp-0c
Study on SOAP Security Expansion-Based of Web Services
FAN You-lei1,ZHANG Ya-zhen2
(1.A0513 Class,F(xiàn)aculty of Information ScienceTechnology,Jiujiang University,Jiujiang 332005,China;(2.Faculty of Information ScienceTechnology,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服務(wù)是一種通過(guò)統(tǒng)一資源指示符(URI)標(biāo)識(shí)的軟件應(yīng)用,其接口及綁定形式可以通過(guò)XML標(biāo)準(zhǔn)定義、描述和檢索,Web服務(wù)能夠通過(guò)XML消息及Internet協(xié)議完成與其它軟件應(yīng)用的直接交互。Web服務(wù)可以不用改變現(xiàn)有的各種應(yīng)用,也不用關(guān)心它們技術(shù)的不同,利用Web服務(wù)的消息驅(qū)動(dòng)機(jī)制,就可以讓它們協(xié)同工作和交互。Web服務(wù)體系結(jié)構(gòu)中最基礎(chǔ)的支柱是XML消息傳遞。目前XML消息傳遞的行業(yè)標(biāo)準(zhǔn)協(xié)議是SOAP,通常服務(wù)的調(diào)用者通過(guò)在傳輸層協(xié)議之上綁定SOAP消息來(lái)請(qǐng)求服務(wù)。 隨著Web服務(wù)技術(shù)的飛速發(fā)展,其在電子商務(wù)、企業(yè)應(yīng)用集成(EAI),B2B應(yīng)用及電子政務(wù)等多個(gè)領(lǐng)域正發(fā)揮著越來(lái)越重要的作用。同時(shí)在這些領(lǐng)域也面臨著各種各樣的安全威脅,如信息竊取、惡意欺騙、偽裝、非法修改以及各種擾亂破壞等。為保證Web服務(wù)能夠在Internet上得到廣泛應(yīng)用,必須保證Web服務(wù)的安全,而Web服務(wù)通信是利用SOAP消息進(jìn)行的,因此Web服務(wù)安全的核心就是SOAP消息的安全。
2 Web服務(wù)的技術(shù)框架
Web服務(wù)不是一個(gè)孤立的概念或者技術(shù),它是由一系列相關(guān)的協(xié)議來(lái)組成的,這些協(xié)議之間相互依賴(lài)、相互影響。它是計(jì)算機(jī)應(yīng)用中的一個(gè)重要而嶄新的體系,并在此基礎(chǔ)上形成了一個(gè)協(xié)議互操作棧。它從開(kāi)放性著眼,克服了以前電子商務(wù)的封閉性,試圖解決Web服務(wù)界面層的一致性和和集成平臺(tái)的開(kāi)放性。
協(xié)議互操作棧[1]是新一代的協(xié)議互操作技術(shù),它是由一系列的協(xié)議所組成,從而形成了整個(gè)Web服務(wù)的體系。這些協(xié)議包括SOAP、WSDL、UDDI等多種協(xié)議。Web服務(wù)的體系結(jié)構(gòu)是一個(gè)層次結(jié)構(gòu),由網(wǎng)絡(luò)層、接口層、描述層、平臺(tái)服務(wù)層以及Web服務(wù)工作流等組成,而每層都有相應(yīng)的標(biāo)準(zhǔn)協(xié)議,從而形成了一個(gè)Web服務(wù)的標(biāo)準(zhǔn)協(xié)議互操作棧。圖1給出了Web服務(wù)的技術(shù)框架:
圖1 Web服務(wù)的協(xié)議棧
位于協(xié)議棧最底層的為各種現(xiàn)有的網(wǎng)絡(luò)協(xié)議,如 HTTP 協(xié)議,F(xiàn)TP 協(xié)議等,它們是與 Web 服務(wù)通信的基礎(chǔ)。SOAP 為在不同系統(tǒng)之間實(shí)施平臺(tái)無(wú)關(guān)的交互定義了一套基本的元規(guī)則,SOAP 是 Web 服務(wù)體系架構(gòu)中服務(wù)交互的基礎(chǔ)。WSDL 則是描述 Web 服務(wù)界面的基本工具。依靠 WSDL,Web 服務(wù)的交互界面就能被系統(tǒng)自動(dòng)處理。UDDI 則是在動(dòng)態(tài)服務(wù)集成解決方案中的首次嘗試。這組技術(shù)使得底層平臺(tái)對(duì)應(yīng)用交互透明,應(yīng)用的互操作能力得到了前所未有的提升。位于最高層的 WSFL 是Web 服務(wù)工作流協(xié)議,它是 Web 服務(wù)組合運(yùn)行、互操作方面的規(guī)范。安全機(jī)制對(duì)于松散耦合的對(duì)象環(huán)境非常重要,因此需要我們對(duì)諸如授權(quán)認(rèn)證、數(shù)據(jù)完整性(如簽名機(jī)制)、消息源認(rèn)證以及事務(wù)的不可否認(rèn)性等進(jìn)行詳細(xì)研究。
3 Web服務(wù)中SOAP消息安全規(guī)范
3.1 SOAP協(xié)議研究
SOAP即簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議(Simple Object Access Protocol),在最新的SOAP1.2規(guī)范[2]中,其正式的定義如下:SOAP是一種輕量級(jí)協(xié)議,用于在分散型、分布式環(huán)境中交換結(jié)構(gòu)化信息。SOAP利用XML技術(shù)定義一種可擴(kuò)展的消息處理框架,它提供了一種可通過(guò)多種底層協(xié)議進(jìn)行交換的消息結(jié)構(gòu)。這種框架的設(shè)計(jì)思想是獨(dú)立于任何一種特定的編程模型和其他特定實(shí)現(xiàn)的語(yǔ)義。
3.1.1 SOAP消息交換模式
SOAP消息從發(fā)送方到接收方是單向傳送,并經(jīng)常以請(qǐng)求應(yīng)答的方式實(shí)現(xiàn)。SOAP實(shí)現(xiàn)可以通過(guò)開(kāi)發(fā)特定網(wǎng)絡(luò)系統(tǒng)的特性?xún)?yōu)化,例如HTTP綁定使SOAP應(yīng)答消息以HTTP應(yīng)答的方式傳輸,并使用同一個(gè)連接返回請(qǐng)求。而忽略SOAP被綁定到的協(xié)議,SOAP消息采用所謂的“消息路徑”發(fā)送,使得在終節(jié)點(diǎn)之外的中間節(jié)點(diǎn)可以處理消息。一個(gè)接收SOAP消息的應(yīng)用程序必須識(shí)別應(yīng)用程序需要的SOAP消息的所有部分,檢驗(yàn)應(yīng)用程序是否支持前面識(shí)別的其他消息中的必需部分并處理。如果該SOAP應(yīng)用程序不是消息的最終目的地,則在轉(zhuǎn)發(fā)消息之前刪除前面識(shí)別的所有部分。為正確處理一條消息或者消息的一部分,SOAP處理器需要理解使用的交換方式(單向、請(qǐng)求位答和多路發(fā)送等)、接收方的任務(wù)、使用的RPC(如果有的話)、數(shù)據(jù)的表現(xiàn)方法或編碼.以及其它必需的語(yǔ)義。
3.1.2 SOAP消息的構(gòu)成
SOAP消息包含一個(gè)SOAP信封Envelope,該信封是一個(gè)XML文檔。Envelope XML文檔的頂級(jí)元素,它包含了兩個(gè)子元素—SOAP消息頭部Header和SOAP消息體Body。 SOAP:Header元素是這個(gè)對(duì)象模型中的一個(gè)可選項(xiàng),這個(gè)信息是用戶自定義的,用來(lái)承載與應(yīng)用關(guān)系不大而需底層環(huán)境平臺(tái)處理的信息,例如:公共密鑰加密信息、事務(wù)處理順序標(biāo)識(shí)符、參與處理的各方所需的信息、以及遠(yuǎn)程SOAP處理程序在管理遠(yuǎn)程請(qǐng)求時(shí)將會(huì)需要的其它元數(shù)據(jù)。SOAP:Body元素是信封的第二個(gè)子元素。對(duì)于SOAP請(qǐng)求來(lái)講,請(qǐng)求體中包括被調(diào)用方法定義的標(biāo)簽,這些標(biāo)簽中包含方法完成其工作所需要的信息,是SOAP消息的必不可少的部分。對(duì)于SOAP響應(yīng)文檔來(lái)講,SOAP:Body元素包含作為消息結(jié)果的數(shù)據(jù)。信封中的消息體部分總是用于最終接收的消息,而頭部項(xiàng)目可以確定執(zhí)行中間處理的目標(biāo)節(jié)點(diǎn)。附件、二進(jìn)制數(shù)字及其他項(xiàng)目可以附加到消息體上。 如圖2所示:
圖2 SOAP消息的結(jié)構(gòu)
3.2 WS-Security規(guī)范
為了更好地將XML安全技術(shù)適應(yīng)于Web 服務(wù)環(huán)境,提出了WS(Web Services)-Security規(guī)范。WS-Security規(guī)范草案最初由Microsoft公司提出,之后由IBM公司和Microsoft公司共同更新。2002年6月,WS-Security被提交給結(jié)構(gòu)化信息標(biāo)準(zhǔn)促進(jìn)組織(OASIS,Organization for the Advancement of Structured Information Standards),以促進(jìn)WS-Security的標(biāo)準(zhǔn)化工作。微軟和 IBM 在發(fā)布了第一個(gè) Web 服務(wù)安全規(guī)范 WS-Security 后,又發(fā)布了一系列后續(xù)規(guī)范計(jì)劃。這組規(guī)范以 WS-Security 為基礎(chǔ),建立一個(gè)初始規(guī)范,包括:Web 服務(wù)端點(diǎn)策略(WS-Policy)、一個(gè)信任模型(WS-Trust)和一個(gè)隱私權(quán)模型(WS-Privacy)。
在這個(gè)基礎(chǔ)上又建立了后續(xù),包括:安全會(huì)話(WS-SecureConversation) 、聯(lián)合信任 (WS-Federation)、授權(quán)(WS-Authoriza-
tion)。描述如何向SOAP 消息附加簽名和加密報(bào)頭。另外,它還描述如何向消息附加安全性令牌(包括二進(jìn)制安全性令牌,如 X.509 證書(shū)和 Kerberos 票據(jù))。如圖3所示:
圖3 Web-Security層次模型
(1)WS-Policy
描述中介體和端點(diǎn)上的安全性(和其它業(yè)務(wù))策略的能力和限制(例如,所需的安全性令牌、所支持的加密算法和隱私權(quán)規(guī)則)。WS-Policy用于發(fā)布Web服務(wù)的組織為其Web服務(wù)指定安全需要。
(2)WS-Trust
用于建立自接和代理信任關(guān)系(包括第三方和中介體)的模型。模型描述如何通過(guò)創(chuàng)建安全性令牌,保證服務(wù)把現(xiàn)有的自接信任關(guān)系用作代理信任的基礎(chǔ)。
(3)WS-Privacy
創(chuàng)建、管理和使用Web服務(wù)的組織將經(jīng)常需要聲明它們的隱私權(quán)策略,并要求進(jìn)來(lái)的請(qǐng)求聲明發(fā)送者是否遵守這些策略。
(4)WS一SecureConversation
描述Web服務(wù)如何認(rèn)證請(qǐng)求者消息、請(qǐng)求者如何認(rèn)證服務(wù)以及如何互相建立認(rèn)證的安全性上下文,以及描述如何建立會(huì)話密鑰、派生密鑰和消息令牌密鑰。
(5)WS-Federation
這個(gè)規(guī)范定義如何使用WS-Security,WS-Policy,WS-Trust,WS-SecureConversation規(guī)范構(gòu)建聯(lián)合信任案例。例如,它將描述如何把Kerberos和PKI基礎(chǔ)架構(gòu)聯(lián)合起來(lái)。同時(shí)還引入一個(gè)信任策略來(lái)指出并限制和確定被代理的信任類(lèi)型。
(6)WS-Authorization
這個(gè)規(guī)范將描述如何指定和管理Web服務(wù)的訪問(wèn)策略。它將特別描述如何在安全性令牌內(nèi)指定聲明,以及這些聲明在端點(diǎn)處將如何被解釋。
WS-Security規(guī)范本身并沒(méi)有定義新的安全協(xié)議,而是在己存在的安全標(biāo)準(zhǔn)和規(guī)范中強(qiáng)調(diào)安全性。它提供了一個(gè)可擴(kuò)展的框架,用來(lái)在SOAP消息中嵌入安全性機(jī)制包含數(shù)字簽名、消息摘要和數(shù)據(jù)加密等。這些安全性信息都是作為附加的控制信息以消息的形式傳遞的,不依賴(lài)于任何傳輸協(xié)議。因而WS-Security規(guī)范具有傳輸中立性,能保證端到端的安全性。消息級(jí)安全模型相對(duì)于傳統(tǒng)平臺(tái)/傳輸級(jí)(點(diǎn)到點(diǎn))的安全模型而言,更適合用于異構(gòu)環(huán)境中,還能有效地防止消息在經(jīng)過(guò)中間節(jié)點(diǎn)時(shí)遭到第三方的破壞。
4 SOAP消息安全性擴(kuò)展
Web服務(wù)的安全性問(wèn)題涉及的議題雖然相當(dāng)廣泛,但是首先要解決的基本問(wèn)題是Web服務(wù)通信安全問(wèn)題,即基于XML的SOAP消息的安全性問(wèn)題。Web服務(wù)的通信安全首先要保證通信中傳輸?shù)臄?shù)據(jù)的安全,抵抗竊聽(tīng)、篡改、假冒、重放、業(yè)務(wù)否認(rèn)等安全攻擊,確保數(shù)據(jù)的機(jī)密性、完整性、可用性、消息源認(rèn)證性和不可否認(rèn)性。其中,機(jī)密性是指消息接收者能夠識(shí)別消息內(nèi)容,而入侵者無(wú)法識(shí)別消息內(nèi)容;完整性是指消息接收者能夠驗(yàn)證傳輸過(guò)程中消息沒(méi)有被篡改;可用性是指消息接收者能夠正確獲取所需的消息內(nèi)容;消息源認(rèn)證性是指消息接收者能夠確認(rèn)消息的確來(lái)源于消息發(fā)送者,且入侵者不可能偽裝成消息發(fā)送者發(fā)送同樣的消息:不可否認(rèn)性是指消息發(fā)送者無(wú)法否認(rèn)他己經(jīng)發(fā)送過(guò)的消息,消息接收者也無(wú)法否認(rèn)他己經(jīng)接收到的消息。這些安全需求僅依靠SSL的安全機(jī)制不能解決所有的問(wèn)題。SOAP信息封套(Envelope)包括兩個(gè)部分:SOAP信息頭(Header)和SOAP信息體(Body) 。SOAP信息頭主要包含與請(qǐng)求相關(guān)的元數(shù)據(jù),而SOPA信息體封裝了服務(wù)調(diào)用及其相關(guān)的參數(shù)。通常,認(rèn)證信息是作為元數(shù)據(jù)和SOAP消息一起發(fā)送的,而且數(shù)字簽名也可以被容納在SOAP信息頭中.因此,SOAP信息頭在SOAP安全中起著重要的作用。因此必須是通過(guò)對(duì)soap消息頭進(jìn)行安全的擴(kuò)展,而對(duì)于SOAP進(jìn)行安全性擴(kuò)展,數(shù)字簽名(Digital Signature)又是一個(gè)很好的解決方案。
4.1 SOAP消息頭數(shù)字簽名的實(shí)現(xiàn)
數(shù)字簽名技術(shù)是使用加密算法制成的數(shù)字標(biāo)簽,此標(biāo)簽通過(guò)密鑰制成,而且不訪問(wèn)密鑰,就不可能仿制標(biāo)簽。通常使用私鑰簽名文件,并使用同一私鑰打開(kāi)別人發(fā)送來(lái)的加密文件。具體將要滿足如下三個(gè)要求:
(1)接收者能夠核實(shí)發(fā)送者對(duì)消息的簽名;
(2)發(fā)送者事后不能抵賴(lài)對(duì)消息的簽名;
(3)接收者不能偽造對(duì)消息的簽名。
現(xiàn)在對(duì)SOAP進(jìn)行擴(kuò)展,在SOAP的頭元素的擴(kuò)展命名空間中加入數(shù)字簽名。下面是一個(gè)包含數(shù)字簽名的SOAP信息[3]:
< SOAP-ENV: Envelope
xmlns: SOAP-ENV = \" http:// schemas. xmlsoap. org/soap/envelope/ \">
< SOAP-ENV: Header >
< SOAP-SEC: Signature
xmlns: SOAP-SEC = \" http:// 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. w3.org/ TR/ 2000/CR-xml-c14n-20001026> ”
</ds :CanonicalizationMethod >
< ds :SignatureMethod
Algorithm =“http :// www. w3.org/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 = http:// 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頭元素的擴(kuò)展命名空間中加入安全特征,通過(guò)擴(kuò)展,在方案中加入一個(gè)新的元素,這個(gè)元素在Schema中可以不用改變。如果要在SOAP1.1協(xié)議中進(jìn)行加密性擴(kuò)展,可以在命名空間中引入適當(dāng)?shù)臉?biāo)準(zhǔn)實(shí)現(xiàn),如XML加密算法(XML Encryption)等。SOAP頭元素SOAP-SEC使用的XML命名空間[4]如下:http: //schemas.xmlsoap.org/soap/security/2000-12,命名空間的前綴“SOAP-SEC”就指向這里。
5 結(jié)束語(yǔ)
隨著B(niǎo)2B、B2C電子商務(wù)的發(fā)展,企業(yè)要求能夠與它的業(yè)務(wù)伙伴、顧客和供應(yīng)商實(shí)現(xiàn)跨邊界的、快速的、無(wú)縫的整合,而Web服務(wù)的通信是利用SOAP消息進(jìn)行的,SOAP 消息常常跨越 Internet進(jìn)行傳遞,因此消息的完整性顯得尤為重要。作者在基于WS-Security規(guī)范的基礎(chǔ)上,采用數(shù)字簽名方式對(duì)SOAP消息頭進(jìn)行安全擴(kuò)展,確保消息的完整性,但是web服務(wù)安全方面,仍有許多值得探索和研究的地方,相信隨著W3C標(biāo)準(zhǔn)化進(jìn)程的發(fā)展,SOAP的技術(shù)標(biāo)準(zhǔn)也會(huì)不斷得到補(bǔ)充和完善,SOAP應(yīng)用必定會(huì)更加廣闊。
參考文獻(xiàn):
[1]李安渝,等.Web Services技術(shù)與實(shí)現(xiàn).北京:國(guó)防工業(yè)出版社,2003:8-11.
[2]W3C Recommendation Version 1.2 Part0:Primer.[EB/OL].http://www.w3.org/TR/2003/REC-soap12-part0-20030624/.
[3]W3C SOAP Security Extensions: Digital Signature[EB/OL].http://www.w3.org/TR/2001/NOTE-SOAP-dsig-20010206.
[4]XML-Signature Syntax and Processing[EB/OL].http://www.3w.org/TR/2000/CR-xml-dsig-core-20001031,2000-10.
收稿日期:2008-01-08
作者簡(jiǎn)介:樊佑磊(1985-)男,漢族,山東濟(jì)寧人,九江學(xué)院信息科學(xué)與技術(shù)學(xué)院A0513班學(xué)生,計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè),研究方向:信息安全;張亞珍(1982-),女,漢族,江西瑞昌人,九江學(xué)院助教,華中科技大學(xué)工程碩士,研究方向:信息安全技術(shù),中間件技術(shù)。