林嘉揚++劉東++劉紅霞
摘 要:為提高面向服務架構(gòu)在現(xiàn)代大型信息系統(tǒng)應用的安全性,該文從面向服務架構(gòu)的設計思路、XML的設計目標入手,對XML簽名和XML加密的缺陷進行了分析。
關(guān)鍵詞:面向服務架構(gòu)(SOA) 安全 擴展標記語言(XML)
中圖分類號:TP319 文獻標識碼:A 文章編號:1674-098X(2014)04(a)-0034-01
SOA作為一個全新的網(wǎng)絡架構(gòu)和系統(tǒng)組織方法,和其它所有的新興技術(shù)一樣,在提供便利的同時也面臨許多挑戰(zhàn),最大的挑戰(zhàn)表現(xiàn)在安全領域。一是由于架構(gòu)具有刻意的分散性即無中心,數(shù)據(jù)會實時向各方傳輸,因此需要受到全時域、全空域的保護。二是為了提供隨遇接入的服務,SOA提出單點登錄(Single Sign On,SS0)的概念,這種理想化的設計對基于信息基礎網(wǎng)絡的訪問控制提出了極高的要求。三是在SOA架構(gòu)中,所有安全功能都需要通過底層的XML語言來實現(xiàn),XML并不是一個具備控制與鑒別能力的語言,這就給上層的應用安全帶來諸多問題。因此,深入分析SOA安全問題產(chǎn)生的原因,找到解決脆弱性的辦法,是我們必須解決的關(guān)鍵問題。
1 設計思路分析
當今公眾軟件系統(tǒng)存在的基本問題是許多現(xiàn)行的安全協(xié)議當初并非是出于整體安全和互操作而設計的。這些協(xié)議根據(jù)需要產(chǎn)生,并隨著時間不斷演變。SOA最早也起源于因特網(wǎng),目前代表著互操作性的頂峰,在這一架構(gòu)中網(wǎng)絡資源均作為分離的、松散耦合的、中立的服務供用戶調(diào)用。這些服務對于沒有基礎平臺或應用工具的網(wǎng)絡用戶都是可以獲得的。由于這些服務具有獨立的、標準化的特性,因此在系統(tǒng)各組件之間、甚至是受私有證書保護的產(chǎn)品之間,都具有很強的互操作性。即便服務的功能與實現(xiàn)發(fā)生了顯著變化,但是只要它與用戶之間的服務合約不變,用戶就不會感受到這種變化。從某種意義上來說,SOA可以被看作是由黑匣子組成的網(wǎng)絡,其中的服務能夠為外部應用提供定義良好的接口。
2 安全問題分析
SOA所面臨的安全問題與應用其他任何信息系統(tǒng)時所遇到的安全問題是相似的,即如何確保機密性、完整性和可用性。SOA的體系結(jié)構(gòu)從本質(zhì)上說是一系列由元數(shù)據(jù)和基于XML的標準數(shù)據(jù)協(xié)議生成的應用程序,因此SOA安全問題的核心就是XML安全。
2.1 XML的設計目標
XML是一種非常冗長的語言,每個數(shù)據(jù)項都要求有起始標記和結(jié)束標記,這樣往往造成大量的無效信息。在大型數(shù)據(jù)結(jié)構(gòu)中,當文件包含許多數(shù)據(jù)項時,大部分信息都是標記而并非數(shù)據(jù),這意味著較高的帶寬開銷。在XML的應用中,需要使用被稱為“分析器”的軟件組件來解析帶有XML標記的數(shù)據(jù)。XML文檔包含的數(shù)據(jù)越多,攜帶的標記就越多,編譯文件所需的處理能力和時間也就越多。
萬維網(wǎng)聯(lián)盟(World Wide Web Consortium,W3C)將XML設計為可以衍生出不同專用標記語言或數(shù)據(jù)描述語言的通用框架。簡單來講,XML是描述數(shù)據(jù)的一種方式,無需考慮格式,而且與應用無關(guān)。隨著網(wǎng)絡服務技術(shù)的提升和XML應用的推廣,考慮到日益突出的安全問題,結(jié)構(gòu)化信息標準促進組織開始推出XML簽名和XML加密兩個用來提供XML文件加密的標準。XML簽名是用來將文件的部分或全部進行數(shù)字簽名,以實現(xiàn)數(shù)據(jù)的完整性和發(fā)送人身份的可認證,防止發(fā)送抵賴;XML加密是將文件的部分或全部進行加密,以提供數(shù)據(jù)的加密性,確保文件內(nèi)容在發(fā)送過程中不向未授權(quán)者開放。
2.2 XML安全缺陷
XML的最大優(yōu)勢在于其靈活性和應用無關(guān)性,但是從安全角度來看也是一個明顯的薄弱環(huán)節(jié),下面分別分析XML簽名和XML加密的缺陷。
XML簽名只對XML標記了的數(shù)據(jù)進行處理,而XML解析器的數(shù)據(jù)格式可以自由改變,即簽名的對象不唯一,使得不同的格式數(shù)據(jù)在哈希算法中產(chǎn)生不同的值。如果兩個解析器對同樣的信息進行不同的格式化,很有可能給其它用戶以篡改的機會和方法,從而導致XML簽名認證失敗。針對這一問題,一個推薦的解決方法是產(chǎn)生哈希數(shù)之前,在簽名的生成與驗證中增加一個特別步驟。這一步驟根據(jù)具體要求對數(shù)據(jù)進行重新格式化,以保證同一信息的兩個不同格式化方法產(chǎn)生相同結(jié)果。但是這一額外步驟增加了信息發(fā)送者和接收者的開銷,更為嚴重的是,將使簽名的來源變成源數(shù)據(jù)的格式化版本而非提交給簽名機制的源數(shù)據(jù)本身。一個具備足夠訪問權(quán)限的攻擊者可以通過這一額外的標準化步驟,在生成簽名值之前輸入或更換數(shù)據(jù)。
XML加密由于XML的靈活性而遭受相似的攻擊。具體來說,XML并不要求數(shù)據(jù)塊在一個文件中按照指定的順序排列。加密的XML數(shù)據(jù)不能保證以一種有序的方式來支持數(shù)據(jù)單點訪問進程。如果解密所需的密鑰在加密數(shù)據(jù)負荷后出現(xiàn),整個負荷需要緩沖直至文件全部傳輸完畢。在這種情況下,緩沖信息所需的內(nèi)存可能會超過可用內(nèi)存,或者信息的處理時間變得過長。這些問題恰恰有可能引起拒絕服務攻擊。此外,加密數(shù)據(jù)必須在被XML封裝之前以文本的形式編碼,這使信息容量大約增加了30%,進而帶來加密通信帶寬需求增大,XML變得異常繁瑣等突出問題。
參考文獻
[1] [DoD-8320.2-G] DoD CIO, Guidance for Implementing Net-Centric Data Sharing, 2006.
[2] [NSAWSVA] NSA, Web Services Vulnerability Assessment, 2004.
[3] Laura Lee,Rod Fleischer. Service Oriented Architecture (SOA)– Security Challenges And Mitigation Strategies. IEEE,2007.
[4] Laura Lee ,Rod Fleischer. Service Oriented Architecture (SOA)– Security Challenges And Mitigation Strategies.IEEE,2007.endprint