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