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