[摘要] 可擴展置標語言(XML,eXtensible Markup Language)正逐漸成為分布式計算的通用語言。隨著XML的廣泛應用,尤其是XML在電子商務中的廣泛應用,XML數據的安全問題己成為關注的重點。詳盡說明了XML Web服務的安全問題,介紹了幾種相關的安全技術。
[關鍵詞] XML安全身份驗證數字簽名加密
一、引言
電子商務是指各行各業的各種業務和管理的信息化,它不僅僅是商務的電子化、網絡化和數字化,而且是一種新的經營、管理和業務模式。XML的全稱是可擴展置標語言(XML,extensibleMarkup Language),它是一種開放型數據描述語言。基于XML技術的Web服務的出現,改變了目前開發模式和應用部署的費用規模。各種Web服務實現了一定的電子商務功能,通過將各種電子商務的Web服務進行組合和集成以創建動態電子商務應用。
由于Internet是公開的網絡,任何人都可能修改網絡上的數據;而XML作為數據載體(只定義了數據格式),沒有實現數據的安全保護。因此XML數據處理的安全問題成為當前電子商務應用的瓶頸之一。同時,也只有解決了XML數據安全問題,XML才能得到更廣泛應用,它在電子商務中的巨大潛在價值才能真正得到體現。XML基礎和核心就是近年來興起的Web服務(Web Services ,WS),一個完整的Web服務體系需要有一系列的協議規范來支撐。其整體架構如圖所示。
具有這種架構的Web服務的優點有兩點:
1.互操作性。Web服務之間可以進行交互,并且允許在不同平臺上、以不同語言編寫的各種程序以基于標準的方式相互通信。
2.使用協約的規范性,Web服務使用標準的協議規范。其中,SOAP用來定義數據描述和遠程訪問的標準;WSDL是發布和請求Web服務的描述語言:UDDI則負責把Web服務與用戶聯系起來,起中介作用。
本文通過分析XML數字簽名標準和XML加密標準,深入研究了標準的可擴展性,并基于Java語言,提出并完成了一個開放、靈活和通用的XML數據安全系統XDSec,并且,利用安全斷言標記語言(Security Assertion Markup Language,SAML)實現XML密鑰管理服務(XML Key Management Services)。
二、XML數字簽名和加密規范
1999年,W3C和IETF提出了XML數字簽名標準,并于2001年4月19日成為W3C候選推薦標準(W3C Candidate Recommendation),而XML加密標準開始于2000年4月,由W3C獨自制定。
XML加密和XML數字簽名是兩個既獨立又緊密相關的技術,XML加密保證數據的機密性,XML數字簽名保證數據的確認性、完整性和不可否認性。兩者結合,共同實現網絡數據安全的共性要求。
1.XML加密。與XML數字簽名類似,本文同樣給出加密語法的非正式表示如下:
其中,元素EncryptedData標識了整個XML加密,其內容模型只允許有3個子元素:加密算法元素(EncryptionMethod)、密鑰信息元素和密文數據元素(CipherData)。
2.XML數字簽名。為便于描述,本文給出XML簽字語法的非正式表示如下:
其中“?”表示出現0次或者1次;“+”表示一個或者多個;“3”代表0個或者更多。元素Signature標識了整個XML數字簽名,它包含了4個關鍵子元素:簽字信息元素(SignedInfo)、簽字值元素(SignatureValue) ,密鑰信息元素(KeyInfo),以及客體元素(Object) 4個關鍵子元素。
三、安全斷言標記語言(SMAL)
在開放的網絡世界里,可能有許多不同的商務實體訪問Web服務,因此,在Web服務器的配置中對每個實體設置密碼和用戶名是不合適的。在這種情況下,為了解決認證的問題,提出了一種叫做安全斷言的思想。
SAML采用XML的格式,定義了三種安全斷言:認證斷言(SAML-AUTH)、屬性斷言(SAML-ATTR)和授權決定斷言(SAML-DEC)。這些斷言由各自不同的機構產生,這些機構可能與Web服務處于同一公司中,而且能夠在Internet上任何地方被尋址和定位。
首先,購物訂單客戶用用戶名和密碼向安全斷言機構發送一個請求,安全斷言機構對其進行認證并且返回一個包含認證斷言和屬性斷言的文檔。然后,購物訂單客戶將安全斷言附在SOAP消息的頭部,向購物訂單服務方發送一個購物訂單,購物訂單服務方依據接收的斷言進行授權決定。
一個安全斷言文檔相當于一種票據。該票據攜帶者的身份不是由接收者認證,而是由專門的機構進行認證。標準的安全斷言會在商業中產生巨大影響,因為它不再需要每個公司去管理與它們有業務往來公司的認證信息。
四、應用分析
XML數據安全系統XDsec適用于基于互聯網、以XML為描述語言的電子商務系統和其他信息處理系統的簽字、加密,本文以典型的電子商務應用為例,說明XDSec的應用模式。
例:商家C收到消費者A發來的訂單,訂單的內容包括消費者的購物信息和消費者的信用卡信息(用戶賬號、密碼等)。商家C從訂單中獲取購物信息,但是出于安全考慮,商家C不應該看到消費者的信用卡信息,而是將信用卡信息轉送給銀行B。
顯然,在這種典型的應用場景中,商家C和銀行B分別需要看到(而且只能看到)訂單的局部內容,因此,需要對XML文檔的部分內容加密和簽字。這種安全需求可以利用XDSec實現,其方法如下:
1.消費者A生成訂單后,首先用A的私密密鑰分別對購物信息和信用卡信息簽字;接著用對稱密鑰K1加密購物信息,再用商家C的公鑰加密對稱密鑰K1,從而保證只有商家C才能解開購物信息。最后用對稱密鑰K2加密信用卡信息,再用銀行B的公鑰加密對稱密鑰K2,從而保證只有銀行B才能解開信用卡信息。
2.商家C收到A的購物訂單,解密購物信息,確認購物信息來自消費者A,驗證購物信息的完整性。根據用戶的購物信息計算購物金額,對轉賬信息簽字和加密,再結合訂單中的信用卡信息一起轉發給銀行B。
3.銀行B分別解密和驗證信用卡信息和轉賬信息。
五、小結
隨著企業應用集成EAI、互操作性需求的日益迫切,不再局限于單一平臺的基于XML的Web服務的應用日益廣泛。Web服務間的通信是通過HTTP,XML,SOAP等標準Internet協議完成,可以適應異種系統。XML數字簽名和加密及安全斷言標記語言SAML可在很大程度上保證電子商務中數據交換的安全。
本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文。