摘要:針對(duì)Web服務(wù)安全問題中的訪問控制,提出將移動(dòng)agent引入Web服務(wù)的安全訪問控制模型,基于SRP協(xié)議對(duì)Web服務(wù)附加了一個(gè)獨(dú)立的訪問控制代理層,實(shí)現(xiàn)了基于移動(dòng)agent的Web服務(wù)訪問控制模型,并對(duì)控制流程進(jìn)行了描述。
關(guān)鍵詞:Web服務(wù); 訪問控制; SRP協(xié)議; 移動(dòng)代理
中圖分類號(hào):TP309
文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1001-3695(2008)06-1822-03
服務(wù)作為目前網(wǎng)絡(luò)應(yīng)用比較熱門的技術(shù),如果實(shí)現(xiàn)大規(guī)模企業(yè)應(yīng)用,將帶來巨大的經(jīng)濟(jì)效益,但其中的安全問題成為Web服務(wù)普及的主要障礙之一。企業(yè)級(jí)的訪問控制系統(tǒng)不會(huì)孤立存在,它們同后臺(tái)的用戶目錄服務(wù)器和訪問策略服務(wù)器連接。這些服務(wù)器可以提供用戶信用標(biāo)記以及基于訪問策略作出訪問控制決定。典型的訪問控制系統(tǒng)需要處理驗(yàn)證和授權(quán)任務(wù)。基于不同的配置方案,系統(tǒng)可以接受許多種類的信用標(biāo)記。對(duì)于Web服務(wù)訪問控制系統(tǒng),除其他需求外,特別地需要支持不同的基于Web服務(wù)安全的方案。系統(tǒng)需要從輸入的Web服務(wù)信息頭部的WS-Security信息部分提取并使用用戶信用標(biāo)記來驗(yàn)證請(qǐng)求者[1]。因此,企業(yè)Web服務(wù)的開發(fā)者不得不手工編寫代碼來提取信用標(biāo)記并對(duì)輸出信息進(jìn)行適當(dāng)?shù)陌踩幚怼_@需要對(duì)XML進(jìn)行手工解析,或者利用常見的XML簽名加密、SAML或WS-Security等工具包。由于Web服務(wù)安全涉及相當(dāng)廣泛的技術(shù),其實(shí)現(xiàn)必然依賴于許多外部的軟件開發(fā)包。現(xiàn)在可用的軟件開發(fā)包不少,不過彼此之間存在的兼容性很差,利用所有的工具包使其兼容本身就是一大挑戰(zhàn)。不兼容的問題可表現(xiàn)為:支持的算法集合不同、不兼容的證書格式、使用的JDK版本的沖突、依賴的XML解析器的不兼容性等[2]。因此,尋求一種具有通用性的Web服務(wù)訪問控制機(jī)制和模型具有十分重要的現(xiàn)實(shí)意義。
1Web服務(wù)安全代理
Web服務(wù)相對(duì)于過去的CORBA、COM組件技術(shù),提供了耦合度更為松散的分布式模式。Web服務(wù)體系中存在服務(wù)的提供者(service provider)和服務(wù)的調(diào)用者(service invoker),對(duì)于一個(gè)最簡單的Web服務(wù)應(yīng)用,只存在以上兩個(gè)角色,此時(shí)安全性可以通過調(diào)用者和提供者的應(yīng)用完成,沒有增加安全代理的必要。但是,Web服務(wù)的優(yōu)勢決定了在現(xiàn)實(shí)世界中,它面向的是更多企業(yè)之間的復(fù)雜集成。從一個(gè)提供Web服務(wù)的企業(yè)角度來看,它可能存在多個(gè)合作伙伴(partner),每個(gè)partner可能會(huì)訪問多個(gè)服務(wù),每個(gè)服務(wù),可能同時(shí)被多個(gè)partner使用。如果多個(gè)企業(yè)之間形成戰(zhàn)略聯(lián)盟,還可能存在連鎖式的Web服務(wù)調(diào)用。在這條調(diào)用鏈上的企業(yè),作為服務(wù)提供者的同時(shí),還需要作為調(diào)用者訪問partner的服務(wù)。此時(shí)將Web服務(wù)的安全功能從系統(tǒng)中剝離出來形成獨(dú)立的Web服務(wù)安全代理(Web services security proxy,WSSP)就十分必要了[3]。圖1是改進(jìn)后的基于安全代理的服務(wù)機(jī)制體系。
安全服務(wù)代理可以檢查進(jìn)入的SOAP消息,然后只讓那些經(jīng)過授權(quán)的請(qǐng)求方穿過代理。這種體制運(yùn)行過程如下:
a)發(fā)送方構(gòu)造一條SOAP消息并將其發(fā)給Web服務(wù)。發(fā)送方在不在消息中包括簽名都可以。
b)在發(fā)送方通過簽署和加密消息提供了端到端的安全性后,發(fā)送方另添加了一條〈security〉報(bào)頭塊,并把安全代理列為SOAP參與者。請(qǐng)求方在該報(bào)頭塊包含了對(duì)加密的數(shù)據(jù)的簽名。發(fā)送方還將在路由報(bào)頭塊中指定路由信息。
c)通過傳輸協(xié)議將消息發(fā)送到安全代理。安全代理會(huì)確定目標(biāo)是它本身的〈security〉報(bào)頭塊的位置,并抽取安全性令牌和簽名。
d)安全代理驗(yàn)證加密的數(shù)據(jù)的簽名以及所包括的(或被引用的)安全性令牌的有效性。繼而安全代理就是否授權(quán)這條消息穿過安全代理作出決定,很可能要利用外部數(shù)據(jù)。如果消息獲得發(fā)送過安全代理的許可,則安全代理會(huì)刪除指向它本身的〈security〉報(bào)頭塊,并修改路由報(bào)頭塊上的返回路徑信息。
e)安全代理使用單獨(dú)的傳輸把改過的消息路由到最終目的地。
f)服務(wù)將驗(yàn)證到它的〈security〉報(bào)頭塊,并認(rèn)證消息。
g)服務(wù)處理請(qǐng)求并返回一個(gè)答復(fù)。
在得到安全代理的授權(quán)以后,消息被修改(路由報(bào)頭發(fā)生了變化,刪除了第一個(gè)〈security〉報(bào)頭塊)并發(fā)送到最終目的地。安全代理可以選擇在到最終目的地的〈security〉報(bào)頭塊中預(yù)設(shè)新的安全性令牌來添加新的安全性信息。
本文研究的安全代理層的主要功能描述如下:
a)為SOAP通信保證機(jī)密性和完整性。
b)提供對(duì)服務(wù)調(diào)用者的身份認(rèn)證。
c)能夠驗(yàn)證服務(wù)調(diào)用者身份,同時(shí)防止抵賴。
d)能夠防止部分XML安全攻擊。
e)可以選擇加密SOAP消息的部分或全部元素,包括全部實(shí)體。
f)具備容錯(cuò)配置。能夠配置多個(gè)冗余的服務(wù)程序,當(dāng)其中一個(gè)出現(xiàn)問題后自動(dòng)切換到其他服務(wù)程序。
g)企業(yè)實(shí)體可以同時(shí)具備服務(wù)提供者和服務(wù)調(diào)用者雙重身份。
h)在企業(yè)與合作者之間整合PKI。
i)靈活的擴(kuò)展機(jī)制。
在這種模式下,遠(yuǎn)程的應(yīng)用之間可以通過互操作標(biāo)準(zhǔn)來進(jìn)行交互,從而使得Internet既可以提供信息,也具有了提供或獲取分布式計(jì)算的能力。但是Web services的安全模型仍然沒有很好的定義,導(dǎo)致了Web services在很多解決方案還得不到很好的應(yīng)用。安全在Web services體系結(jié)構(gòu)和應(yīng)用環(huán)境中作為一層存在,創(chuàng)建一個(gè)Web services應(yīng)用時(shí),無法鑒證其調(diào)用者,因此,只要該項(xiàng)服務(wù)許可,任何人都可以進(jìn)行調(diào)用[4]。本文利用一個(gè)基于密碼的認(rèn)證協(xié)議SRP(secure remote password)協(xié)議[5],把訪問控制作為Web services的一個(gè)獨(dú)立的層,通過移動(dòng)代理來實(shí)現(xiàn),從而構(gòu)建Web服務(wù)的安全模型。這個(gè)獨(dú)立的附加的層能夠建造在任意的Web services平臺(tái)之上,具有良好的通用性。
2基于移動(dòng)agent的Web服務(wù)訪問控制的設(shè)計(jì)與實(shí)現(xiàn)
SRP是一個(gè)最常使用的基于密碼的認(rèn)證協(xié)議。它能夠提供一種較強(qiáng)的用戶認(rèn)證,避免類似于其他的基于密碼的認(rèn)證體制通常面臨的基于字典的攻擊。該協(xié)議中,密碼既不是以明文的形式保存也不是以密文的形式保存,而是通過一個(gè)驗(yàn)證程序(通過一個(gè)單向的hash函數(shù)獲得)來保存。另一個(gè)重要的特征就是密碼從不通過網(wǎng)絡(luò)進(jìn)行發(fā)送,因此可以避免入侵者對(duì)網(wǎng)絡(luò)進(jìn)行哄騙等手段獲取密碼或其他可能重構(gòu)密碼的信息。在認(rèn)證過程中,臨時(shí)的公鑰將在client與server之間交換,且各個(gè)認(rèn)證會(huì)話的密鑰是不同的。另一個(gè)重要的假設(shè)是用戶可能會(huì)選擇一個(gè)很弱的密碼而不會(huì)影響整個(gè)認(rèn)證體系的強(qiáng)度。為執(zhí)行認(rèn)證,在client與 server之間須完成一系列的握手,客戶機(jī)和服務(wù)器完成相互認(rèn)證,并建立會(huì)話密鑰,保護(hù)后續(xù)的會(huì)話的機(jī)密性。SRP協(xié)議可以為網(wǎng)絡(luò)和分布式系統(tǒng)提供一種有效的基于用戶的密碼鑒別和密鑰交換機(jī)制[6,7]。
在本文的解決方案中,將分布式計(jì)算領(lǐng)域中較為成熟的代理機(jī)制引入基于SRP協(xié)議的訪問控制模型,形成以下認(rèn)證代理模型,如圖2所示。
在這個(gè)解決方案中,假設(shè)在Web service消費(fèi)消息流中,增加了一個(gè)mobile agent,即SRPclientagenter。這個(gè)agent將作為該消費(fèi)者的全局請(qǐng)求鏈中的一部分,即意味著任何時(shí)候該消費(fèi)者請(qǐng)求一個(gè)服務(wù),這個(gè)agent將在請(qǐng)求發(fā)送前被執(zhí)行。一旦被調(diào)用,該agent將在原始的SOAP消息中增加一個(gè)特定的頭塊,用于包含在認(rèn)證中將用到的用戶名和密碼信息。當(dāng)然,一個(gè)重要的假設(shè)前提條件是,這個(gè)SOAP消息是通過一個(gè)安全的傳輸通道傳遞的。在SRPclientagent與SRPagent之間的點(diǎn)對(duì)點(diǎn)通信中這一點(diǎn)很容易通過安全的超文本傳輸協(xié)議(HTTPS)來實(shí)現(xiàn)。目標(biāo)Web服務(wù)的全局代理鏈將通過同樣的方式被附加代理。通過這種方式,當(dāng)服務(wù)器每次收到請(qǐng)求時(shí),代理SRPagent將在SOAP消息請(qǐng)求被處理之前調(diào)用。
下面描述SRPagent與SRPserverservice之間基于SRP協(xié)議的消息交換過程,如圖3所示。
首先,SRPagent接收一個(gè)消息上下文的對(duì)象,該對(duì)象包含被編輯的SOAP消息;然后SRPagent將驗(yàn)證頭數(shù)據(jù)塊是否有效,是否包含認(rèn)證客戶所必須的信息,如果認(rèn)證信息無效,則該代理會(huì)發(fā)出〈soap:fault〉消息,處理被放棄。在獲取數(shù)據(jù)頭有效的情況下,SRPagent將會(huì)開始遵循SRP協(xié)議的會(huì)話來驗(yàn)證訪問有效達(dá)到訪問控制的效果。整個(gè)消息的交換是基于SRP協(xié)議的基礎(chǔ)之上,并且每次會(huì)話在不同的客戶與服務(wù)之間參數(shù)是不同的,即會(huì)話是不可復(fù)制的。如果SRPagent收到的初始信息經(jīng)過驗(yàn)證是有效的,則在會(huì)話的最后一個(gè)操作verify(m2,m2_cli)將驗(yàn)證成功,即通過該代理對(duì)用戶進(jìn)行了認(rèn)證或者說是該用戶通過了代理的認(rèn)證。
假設(shè)該方案被配置到一Web服務(wù)平臺(tái),下面來看代理是否能被正確地附加到Web服務(wù)平臺(tái)并很好地完成上述訪問控制方案。由于是基于SRP協(xié)議,首先創(chuàng)建一對(duì)象數(shù)據(jù)庫,即SRPPasswordDB,其內(nèi)部包含所有對(duì)象基于SRP協(xié)議認(rèn)證所需的信息。這些對(duì)象包含有用戶名(U)、用戶鹽值(s)、密碼驗(yàn)證符(v)等。當(dāng)一個(gè)新用戶添加到系統(tǒng)時(shí),這些相關(guān)信息都將被添加到數(shù)據(jù)庫中。
當(dāng)消息到達(dá)Web服務(wù)時(shí),其代理SRPagent就會(huì)開始一個(gè)基于SRP協(xié)議的握手過程。然后,SRPagent會(huì)向認(rèn)證Web服務(wù)(SRPserverservice)發(fā)送計(jì)算的臨時(shí)密鑰A,再向server要求取回臨時(shí)計(jì)算出的公鑰B。SRPagent取回隨機(jī)參數(shù)u,作為點(diǎn)對(duì)點(diǎn)通信中雙方計(jì)算會(huì)話密鑰S和強(qiáng)會(huì)話密鑰K;然后計(jì)算匹配值M1,并送往認(rèn)證服務(wù)器。在基于SRP協(xié)議的認(rèn)證過程中,SRPagent和SRPserverservice的最終M1值將會(huì)匹配。作為最后一步,SRPagent將會(huì)向SRPserverservice請(qǐng)求第二個(gè)匹配值M2,然后與自身計(jì)算的值進(jìn)行匹配從而完成認(rèn)證。
3結(jié)束語
本文基于代理技術(shù)實(shí)現(xiàn)了Web服務(wù)訪問控制的具體模型。將SOAP消息用于進(jìn)行對(duì)SRP協(xié)議的實(shí)現(xiàn),描述了SRP協(xié)議執(zhí)行過程中的握手和會(huì)話。將移動(dòng)代理引入Web服務(wù)安全的訪問控制模型,通過SRP協(xié)議對(duì)Web服務(wù)附加了一個(gè)獨(dú)立的訪問控制代理層,實(shí)現(xiàn)了基于移動(dòng)代理的Web服務(wù)訪問控制模型,并對(duì)模型進(jìn)行了測試。從實(shí)際的效果看,這種訪問控制模型的安全性是可靠的,由引入附加代理控制層所造成的速度方面的影響可以忽略不計(jì)。未來的工作將進(jìn)一步完善訪問控制模型中代理的安全和移動(dòng)策略問題;將模型進(jìn)一步應(yīng)用到實(shí)際的企業(yè)級(jí)Web服務(wù)應(yīng)用中。
參考文獻(xiàn):
[1]BEMMEL J, WEGDAM M, LAGERBERG K. 3PAC:enforcing access policies for Web services[C] //Proc of IEEE International Conference on Web Services. Washington DC: IEEE Computer Society, 2005:596-603.
[2]岳昆,王曉玲,周傲英. Web服務(wù)核心支撐技術(shù)研究綜述[J]. 軟件學(xué)報(bào), 2004, 15(3):428-442.
[3]DHESIASEELAN A, RAGUNATHAN V. Web services container re-ference architecture (WSCRA)[C] //Proc of IEEE International Conference on Web Services. Washington DC: IEEE Computer Society, 2004:806-807.
[4]Internet 2 Releases. Open source Web access control building block [EB/OL]. [2002-07-24]. http:// www. Webservices. org/categories/enterprise/security.
[5]WU T. The secure remote password protocol[C] //Proc of Internet Society Network and Distributed System Security Symposium. San Diego, CA: [s.n.], 1998:97-111.
[6]SILVA F O,PACHECO A A, ROSA P F. A Web service authentication control system based on SRP and SAML[C] //Proc of IEEE International Conference on Web Services.Washington DC: IEEE Computer Society, 2005:507-514.
[7]SILVA F O,PACHECO A A, ROSA P F. A SRP based handler for Web service access control[C] //Proc of IEEE International Confe-rence on Services Computing. Washington DC: IEEE Computer Society, 2004:57-62.
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請(qǐng)以PDF格式閱讀原文