摘要:Web服務(wù)正迅速地應(yīng)用在企業(yè)解決方案中,因此對Web服務(wù)架構(gòu)也提出了更為全面的需求?;ゲ僮餍允且粋€(gè)關(guān)鍵挑戰(zhàn),另外一個(gè)關(guān)鍵挑戰(zhàn)是Web服務(wù)安全性。該文重點(diǎn)研究XML簽名技術(shù)來保證構(gòu)建安全的Web服務(wù)。
關(guān)鍵詞:Web服務(wù);Web服務(wù)安全性;XML簽名
中圖分類號(hào):TP393.08文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2010)05-1083-02
Research Web Services Security Based on XML Signature Technology
LIU Xiang-dong
(Sichuan Vocational and Technical College,Suining 629000,China)
Abstract: Web Services are rapidly applied in Enterprise Solution, so, it is necessary to make more comprehensive demands for Web Services Architecture. one is Interoperability, anther is Web Services Security. This paper focus on building Secure Web Services by using XML Signature Technology.
Key words: Web services; Web services security; XML signature
Web服務(wù)是一種面向服務(wù)的架構(gòu)的技術(shù),通過標(biāo)準(zhǔn)的Web協(xié)議提供服務(wù),目的是保證不同平臺(tái)的應(yīng)用服務(wù)可以互操作。當(dāng)前,世界范圍內(nèi)的企業(yè)正在迅速地應(yīng)用Web服務(wù),因此如何保障Web服務(wù)的安全成為了一個(gè)關(guān)鍵的技術(shù)。
Web服務(wù)安全性涉及到很多技術(shù)層面,其中包括身份驗(yàn)證、授權(quán)、完整性、機(jī)密性和可靠性等技術(shù)。本文重點(diǎn)研究利用XML簽名技術(shù)和數(shù)字證書技術(shù)來保證Web服務(wù)的安全。利用XML簽名來對Web服務(wù)進(jìn)行身份驗(yàn)證,利用數(shù)字證書來構(gòu)建并保護(hù)Web服務(wù)安全地傳輸。
1 XML簽名
XML簽名本身并不是一項(xiàng)Web服務(wù)安全技術(shù),但卻是許多Web服務(wù)安全技術(shù)的基礎(chǔ)構(gòu)件。XML簽名技術(shù)是在XML文檔中加入了用于封裝加密數(shù)據(jù)和加密算法的元素,來實(shí)現(xiàn)XML文檔的安全。
由于XML的可擴(kuò)充性,XML簽名還可以在一個(gè)XML文檔中保存多個(gè)簽名,這樣可以使各方鏈接起來,協(xié)同對同一個(gè)XML文檔進(jìn)行操作。從而完成一個(gè)小的Web服務(wù)。另外,XML簽名是持久性的簽名,即不論文檔是在傳輸還是處于存儲(chǔ)狀態(tài),簽名的結(jié)果都存儲(chǔ)在XML文檔中。
1.1 XML簽名的基本結(jié)構(gòu)和語法
在XML簽名中,用根元素
圖1
在圖1
1.2 使用XML簽名來保證WEB服務(wù)安全性
XML簽名本質(zhì)上是附加于XML文檔的XML片斷。該片斷功能之所以強(qiáng)大的原因在于只能使用原XML文檔的數(shù)據(jù)和只有簽名者才能使用的密鑰來生成片斷。
XML的簽名過程一般包括:
1) 識(shí)別XML文檔中需要簽署的元素。
2) 對于每個(gè)元素,應(yīng)用一列可選的轉(zhuǎn)換。假設(shè)一個(gè)購買訂單的XML樣本文檔。圖2顯示經(jīng)過不同部門(如銷售部門)處理的購買訂單XML文檔:
圖2 樣本購買訂單的XML文檔
在簽名該文檔時(shí),每個(gè)部門都簽署它并把各自的部門ID附加到path元素。最后轉(zhuǎn)換所產(chǎn)生的結(jié)果值被用來計(jì)算摘要值。摘要值是用于驗(yàn)證原始元素內(nèi)容的復(fù)雜的校驗(yàn)和。對元素內(nèi)容的任何改變都將改變摘要值。接收方可以通過重新計(jì)算元素的摘要值并把它和接受到的摘要值進(jìn)行比較來確認(rèn)該元素的完整性。若不匹配就表示內(nèi)容已經(jīng)被修改,因此也不能信任。
3)XML簽名后的摘要表示法
經(jīng)過XML簽名后,樣本購買訂單XML文檔摘要表示法如下:
圖3 購買訂單的XML文檔摘要值表示法
在圖3中,SignedInfo元素封裝了摘要值以及與之相關(guān)的信息。雖然使用摘要值保證了XML文檔的完整性,但不能防止某些人截取、篡改文檔、重新計(jì)算摘要值以及轉(zhuǎn)發(fā)修改了的文檔,為了解決這一問題,將計(jì)算出一個(gè)基于SignedInfo元素的簽名值,并且只有文檔的簽名者能夠生成正確的簽名值。
4)使用簽名算法來加密規(guī)范化過程產(chǎn)生的結(jié)果。包括使用只有簽名者才有權(quán)使用的密鑰。產(chǎn)生的結(jié)果是簽名值。接收方可以使用簽名者的公鑰來解密并驗(yàn)證簽名值。
5)簽名值和SignedInfo元素被一起附加到原始XML文檔。這樣就完成了XML簽名。
6)驗(yàn)證簽名的XML文檔。需要使用發(fā)送方俄公鑰來解密簽名。解密的結(jié)果是作為該XML文檔的校驗(yàn)和摘要代碼。對文檔的任何細(xì)小的改變都將導(dǎo)致摘要代碼錯(cuò)誤。
1.3 XML簽名在WEB服務(wù)安全中的優(yōu)勢
由于Web服務(wù)是基于SOAP和WSDL標(biāo)準(zhǔn)協(xié)議的,它們是以XML格式描述的一種標(biāo)準(zhǔn)的數(shù)據(jù)表示格式和消息格式,因此,對于Web服務(wù)安全的實(shí)現(xiàn)是基于開放的標(biāo)準(zhǔn)協(xié)議,而不是依賴于某些專用格式。所以將XML簽名應(yīng)用于Web服務(wù)安全中,完全是可以的;由于XML簽名支持加密的多重性,使得構(gòu)建多個(gè)Web應(yīng)用并集成地安全應(yīng)用成為可能。
2 結(jié)束語
本文將XML簽名技術(shù)應(yīng)用于Web服務(wù)安全中,提供了一種基于XML標(biāo)準(zhǔn)協(xié)議的簽名來解決Web服務(wù)安全性。
參考文獻(xiàn):
[1] 宗平,鄧賽峰,web服務(wù)安全結(jié)構(gòu)模型研究和設(shè)計(jì)[J].計(jì)算機(jī)與現(xiàn)代化,2004(11).
[2] 張勇,馮玉才.XML數(shù)字簽名技術(shù)及其在JAVA中的具體實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2003.
[3] 胡迎松,彭利文,池楚兵. Web服務(wù)安全問題及其安全技術(shù)[J].計(jì)算機(jī)應(yīng)用研究,2003(10).
[4] 車葵,邢書濤,牛曉太. Research and implementation of digital signature based on XML.計(jì)算機(jī)工程與設(shè)計(jì), 2008(23).
[5] 劉濤, 齊愛玲, 常心坦. Web服務(wù)安全中XML簽名技術(shù)的研究[J],第四屆全國信息獲取與處理學(xué)術(shù)會(huì)議儀器儀表學(xué)報(bào),2006.
[6] 陳建梁,袁南兒.用XML簽名及SOAP信息頭實(shí)現(xiàn)安全Web服務(wù)[J]. 計(jì)算機(jī)工程與設(shè),2004(09).
[7] 王茜,劉啟濱. 基于SPKI的XML Web服務(wù)安全性分析[J].計(jì)算機(jī)工程與設(shè)計(jì),2006(09).
[8] 楊海斌. 基于WS—Security框架的Web服務(wù)安全解決方案[J].電腦編程技巧與維護(hù), 2009(18).