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