鄭學(xué)偉
遼寧廣播電視大學(xué) (沈陽(yáng) 110034)
Web服務(wù)作為一種成熟的網(wǎng)絡(luò)通信技術(shù)正日益受到眾多網(wǎng)絡(luò)技術(shù)公司的關(guān)注,是眾所公認(rèn)的通向新的互聯(lián)網(wǎng)商業(yè)模式的大門(mén),也是行業(yè)、企業(yè)、公司和單位之間進(jìn)行通信聯(lián)系的主要途徑。目前大多數(shù)單位在使用Web服務(wù)時(shí)主要還是采取一種比較單調(diào)的配置方式。這主要是由于Web服務(wù)的安全機(jī)制使用起來(lái)比較復(fù)雜,導(dǎo)致Web服務(wù)的安全性比較低。Web服務(wù)復(fù)雜性主要是由于XML消息以明文形式包含一系列壓縮的數(shù)據(jù),這些數(shù)據(jù)很有可能在對(duì)手進(jìn)行網(wǎng)絡(luò)攻擊時(shí)被截獲。所謂SOAP就是具有SOAP格式的XML數(shù)據(jù)。目前Web服務(wù)的數(shù)據(jù)交互格式基本是基于SOAP的,由于XML具有很好的跨平臺(tái)特性,Web服務(wù)在被調(diào)用時(shí),參數(shù)的具體類(lèi)型、參數(shù)都有什么,返回值等都是在調(diào)用Web服務(wù)需要能準(zhǔn)確理解的。SOAP消息集中了許多事務(wù),由于XML特有的簡(jiǎn)潔性,所以數(shù)據(jù)的結(jié)構(gòu)可以視為可讀。在網(wǎng)絡(luò)環(huán)境下這樣的數(shù)據(jù)可以被隨便篡改。
Web服務(wù)安全應(yīng)用研究的3個(gè)領(lǐng)域:身份驗(yàn)證安全、傳輸層安全和應(yīng)用層安全。
(1)身份驗(yàn)證安全。 Web服務(wù)開(kāi)始之前第一步要通過(guò)特定的身份驗(yàn)證模式來(lái)標(biāo)識(shí)用戶(hù)。在標(biāo)識(shí)時(shí)就要先確定用戶(hù)進(jìn)行訪問(wèn)的具體方式。
(2)傳輸層安全。傳輸層安全控制的主要方法包括IPSec、防火墻,以及限制IP,從而在管道的端點(diǎn)實(shí)現(xiàn)傳輸層安全。
(3)應(yīng)用層安全。由于 Web服務(wù)的核心是事務(wù)性的,服務(wù)器在進(jìn)行通信時(shí)需要首先獲得用戶(hù)的標(biāo)識(shí),并在事務(wù)處理的過(guò)程中重新執(zhí)行驗(yàn)證和標(biāo)識(shí)。
所以說(shuō)Web服務(wù)的通信安全主要是保證通信中SOAP消息的安全,確保數(shù)據(jù)的機(jī)密性、完整性、消息源標(biāo)識(shí)和不可更改。
傳統(tǒng)的網(wǎng)絡(luò)通信機(jī)制主要表現(xiàn)在傳輸層和網(wǎng)絡(luò)層,沒(méi)有針對(duì)應(yīng)用層Web服務(wù)的SOAP消息安全機(jī)制,目前社會(huì)上Web服務(wù)應(yīng)用的數(shù)量非常龐大而且正在急劇上升,如果程序開(kāi)發(fā)者安全意識(shí)不足,在安全性的設(shè)計(jì)上有所疏漏。已經(jīng)開(kāi)放完成并交付使用Web應(yīng)用系統(tǒng)很難被更改,必須更改的話(huà)帶來(lái)的代價(jià)非常巨大,成本很高。目前主要的Web服務(wù)安全威脅有兩種,一種是保密信息在傳遞過(guò)程中面臨的安全,一種是服務(wù)器面臨的安全威脅。前一種安全防護(hù)是所有服務(wù)共性的問(wèn)題的,后一種安全防護(hù)則擴(kuò)展應(yīng)用服務(wù)帶來(lái)的。為了保證在公網(wǎng)傳輸中SOAP消息的安全,Web服務(wù)的安全要求有以下三個(gè)方面:
(1)完整性: 保證接受方和發(fā)送方之間的數(shù)據(jù)是安全可監(jiān)控的。完整性要求能夠監(jiān)控到信息發(fā)生變化,被檢測(cè)到的信息變化視為安全。
(2)確定性:確定性要求發(fā)送方不能否認(rèn)已經(jīng)發(fā)生的信息傳送,一種是發(fā)送的身份,一種是發(fā)送的時(shí)間,兩者都不可否認(rèn)。
(3)身份驗(yàn)證與授權(quán):Web應(yīng)用程序認(rèn)定有認(rèn)證身份的人可以訪問(wèn)服務(wù),不能提供身份證明文件不能訪問(wèn)。并根據(jù)身份指定權(quán)限。
當(dāng)客戶(hù)端、組件或Web服務(wù)等作為服務(wù)請(qǐng)求者,在不進(jìn)行安全通信前,信息提供者的具體情況必須被信息請(qǐng)求方了解,了解的內(nèi)容具體包含加密算法、認(rèn)證方法等。在需要了解得信息被認(rèn)證通過(guò)后,背心允許的訪問(wèn)者可以訪問(wèn)資源,進(jìn)行UDDI注冊(cè)登記服務(wù)。注冊(cè)的信息被存儲(chǔ)后,應(yīng)用程序運(yùn)行時(shí)信息請(qǐng)求者首先要請(qǐng)求服務(wù),第一步是向信息提供者發(fā)送SOAP信息請(qǐng)求,信息請(qǐng)求首先通過(guò)SOAP消息服務(wù)器,然后再向公網(wǎng)傳輸,到達(dá)Web服務(wù)器后由相同的SOAP消息安全處理器進(jìn)行反序列化安全處理,破譯出請(qǐng)求者的信息標(biāo)識(shí),然后把響應(yīng)消息發(fā)送給信息請(qǐng)求方,一個(gè)服務(wù)過(guò)程完成,從以上過(guò)程來(lái)看,信息交流的過(guò)程中,SOAP消息的安全是整個(gè)過(guò)程的基礎(chǔ),如果SOAP消息是不安全的,則信息在傳送過(guò)程中就是不安全的,訪問(wèn)權(quán)限的控制也將是不安全的。
在Web服務(wù)過(guò)程中,可以設(shè)計(jì)通過(guò)控制訪問(wèn)用戶(hù)的權(quán)限來(lái)實(shí)現(xiàn)訪問(wèn)用戶(hù)的可見(jiàn)性,保證服務(wù)的可靠性與機(jī)密性。在通信過(guò)程中,服務(wù)器首先為存在的客戶(hù)端生成數(shù)字簽名的密鑰和數(shù)字證書(shū),同時(shí)也包含自身,信息存儲(chǔ)于客戶(hù)端和服務(wù)器上。信息請(qǐng)求方首先提供用戶(hù)信息,一般是用戶(hù)名與密碼或者是X.509證書(shū)等其他認(rèn)證方式,服務(wù)器接收到信息請(qǐng)求后首先驗(yàn)證用戶(hù)信息,正確通過(guò)后,請(qǐng)求著與提供者正常進(jìn)行SOAP消息通信,這就代表著如果要進(jìn)行通信首先要得到密鑰的公鑰。SOAP消息要根據(jù)密鑰的信息生成,信息請(qǐng)求方在提出申請(qǐng)時(shí),首先要向TSA服務(wù)器申請(qǐng)時(shí)間戳,TSA服務(wù)器在整個(gè)過(guò)程中根據(jù)提交的請(qǐng)求進(jìn)行時(shí)間戳的簽發(fā),簽發(fā)時(shí)間戳后,從證書(shū)管理中心取得證書(shū)授權(quán),利用獲取的證書(shū)授權(quán)對(duì)時(shí)間戳進(jìn)行加密,以上操作完成后對(duì)相關(guān)信息進(jìn)行存儲(chǔ),Web服務(wù)響應(yīng)時(shí)SOAP信息在傳送時(shí)要附加以上的時(shí)間戳信息并同時(shí)再附加一個(gè)副本,信息請(qǐng)求方對(duì)SOAP消息進(jìn)行信息簽名并用生成的密鑰對(duì)SOAP消息的正進(jìn)行加密,用的是在服務(wù)器端得到的公鑰進(jìn)行加密,然后再把SOAP消息進(jìn)行傳輸,服務(wù)器在得到SOAP信息后,根據(jù)存儲(chǔ)的數(shù)字證書(shū)對(duì)SOAP信息進(jìn)行反操作,并解密過(guò)程中得到的數(shù)字證書(shū)和時(shí)間戳與在數(shù)據(jù)庫(kù)中已經(jīng)存儲(chǔ)的進(jìn)行對(duì)比,以上的操作就可以保證訪問(wèn)用戶(hù)的可靠性,同時(shí)也就可以在整個(gè)過(guò)程中保證SOAP信息的完整性和確定性,
我們從SOAP安全性要求的3個(gè)方面逐一進(jìn)行分析以上設(shè)計(jì)提供的安全性。
(1)完整性:使用XML進(jìn)行加密來(lái)實(shí)現(xiàn)機(jī)密性。在加密過(guò)程根據(jù)實(shí)際需要有選擇的加密所有或部分內(nèi)容。加密的方式和內(nèi)容都可以比較靈活,可以有效地防止信息被竊取。如果一旦被竊取,因?yàn)橛忻荑€的保護(hù),被加密的信息也不會(huì)被獲取。XML還可以保證非法用戶(hù)不能更改或刪除信息,信息的發(fā)送者可以用自己的私鑰加密消息值,信息的接收者需要使用信息發(fā)送者的公鑰對(duì)消息進(jìn)行解密,重新計(jì)算并進(jìn)行比較。所以SOAP消息的完整性可以得到有效的保護(hù)。
(2)確定性:核實(shí)信息發(fā)送者身份。通過(guò)在信息注冊(cè)中心注冊(cè),信息發(fā)送者的證書(shū)可以有私鑰進(jìn)行確認(rèn),信息接收者可以根據(jù)私鑰來(lái)確認(rèn)信息發(fā)送者的身份,同時(shí)由于有時(shí)間戳可以進(jìn)行雙重確認(rèn)。
(3)身份驗(yàn)證與授權(quán):信息的發(fā)送者需要他的私鑰對(duì)SOAP消息進(jìn)行簽名,如果信息接收者在解密的過(guò)程中利用發(fā)送者的公鑰可以成功的驗(yàn)證數(shù)字簽名,則消息的發(fā)送方的身份就可以確認(rèn),因?yàn)樗借€的提供者身份是唯一的。用戶(hù)通過(guò)身份驗(yàn)證登錄后,系統(tǒng)就可以根據(jù)存儲(chǔ)的身份信息賦予用戶(hù)相應(yīng)的權(quán)限,并根據(jù)權(quán)限規(guī)定相應(yīng)的服務(wù)。
在實(shí)際應(yīng)用中SOAP消息的格式可以根據(jù)XML的規(guī)范進(jìn)行相應(yīng)的轉(zhuǎn)化,SOAP消息安全處理器可以在實(shí)際應(yīng)用中確保傳輸信息的安全性處理,在信息的加密和私鑰的設(shè)定過(guò)程中可以根據(jù)用戶(hù)的實(shí)際需要控制加密的信息量大小。加密信息量的大小是系統(tǒng)反應(yīng)速度的一個(gè)關(guān)鍵影響因子。通過(guò)分析以上3個(gè)方面的安全性,我們可以得出該模型保證SOAP消息在傳送過(guò)程中可以確保信息請(qǐng)求者與發(fā)送者之間數(shù)據(jù)傳輸?shù)陌踩浴?/p>