基于XML加密的Web服務(wù)安全在電子商務(wù)中的實(shí)現(xiàn)
在電子商務(wù)活動(dòng)中,Web服務(wù)的安全問(wèn)題已經(jīng)成為制約電子商務(wù)活動(dòng)安全性的一個(gè)重要因素,而Web服務(wù)使用基于XML的消息機(jī)制作為服務(wù)的創(chuàng)建和訪問(wèn)機(jī)制,為了有效保證在使用XML作為信息交換媒介情況下的安全性,尤其是其描述的敏感的商務(wù)信息的安全,我們可以采用加密技術(shù)來(lái)處理。
一、傳統(tǒng)的Web服務(wù)安全技術(shù)
目前,業(yè)界已經(jīng)有一套現(xiàn)成的而且廣泛接受的傳輸層安全機(jī)制SSL,但是只依靠SSL并不能在Web服務(wù)模型內(nèi)提供足夠的安全性的情況:
(1)SSL的安全機(jī)制并不一定適用于Web服務(wù)在未來(lái)的實(shí)現(xiàn)中引入的其他傳輸方式,如SMTP、TCP、FTP、消息隊(duì)列等;
(2)SSL只能對(duì)全部的信息進(jìn)行加密,而不能有選擇地對(duì)部分信息進(jìn)行加密;
(3)SSL只能確保點(diǎn)對(duì)點(diǎn)的安全,而無(wú)法保障端到端的安全。
綜上所述,當(dāng)前的安全傳輸機(jī)制并不能適應(yīng)安全的Web服務(wù)要求,需要制定新的安全規(guī)范。在安全服務(wù)的邏輯組件中,提高可用性更多的是從物理層和網(wǎng)絡(luò)層進(jìn)行考慮,所以新的安全規(guī)范更多地集中在機(jī)密性、完整性、不可否認(rèn)、鑒別和授權(quán)方面進(jìn)行考慮。
XML加密是由W3C和IETF開(kāi)發(fā)的,該技術(shù)在XML文檔中加入了一些元素用于封裝加密數(shù)據(jù)和加密方法等,實(shí)現(xiàn)了XML文件的機(jī)密性、鑒別、完整性、不可否認(rèn)性等,是許多Web服務(wù)安全技術(shù)的基礎(chǔ)構(gòu)件。
二、XML加密
XML加密允許對(duì)文檔中特定的部分進(jìn)行加密,也可以對(duì)同一文檔的不同部分進(jìn)行多重加密,加密后的文檔在傳輸和存儲(chǔ)狀態(tài)都是安全的。在XML加密中,加密后的數(shù)據(jù)以XML格式表示,并且由一個(gè)<EncryptedData>元素或<EncryptedKey>元素來(lái)標(biāo)識(shí),<EncryptedData>元素用來(lái)表示除加密密鑰以外所有的加密內(nèi)容,而<EncryptedKey>元素用來(lái)表示加密后的數(shù)據(jù)是一個(gè)加密密鑰,除了表示加密內(nèi)容外,XML加密還表示了其他的加密信息,如所使用的加密算法和加密密鑰等,這樣使應(yīng)用程序的工作得以簡(jiǎn)化。另外,XML加密在對(duì)XML文檔加密時(shí)并沒(méi)有定義任何新的加密算法,而是構(gòu)建于現(xiàn)有的算法之上,從而使互操作成為可能。
1、XML加密與傳統(tǒng)加密的對(duì)比
當(dāng)前,傳輸層安全性TLS是Internet上安全通信的事實(shí)標(biāo)準(zhǔn),TLS是繼安全套接字層(SSL)之后的端到端安全性協(xié)議,是一個(gè)非常安全和可靠的協(xié)議。它提供了通信雙方之間端到端的安全性會(huì)話,在傳統(tǒng)加密方式中,通常都是假定用單個(gè)密鑰對(duì)整個(gè)明文文件加密。
XML加密并非替換或取代SSL/TLS,相反,它提供了用于SSL未涵蓋的安全性需求的機(jī)制,XML加密過(guò)程允許使用多個(gè)對(duì)稱(chēng)密鑰或多個(gè)非對(duì)稱(chēng)密鑰來(lái)實(shí)現(xiàn)元素級(jí)的加密。
在傳統(tǒng)的SSL/TLS中有兩個(gè)領(lǐng)域未涉及:加密交換數(shù)據(jù)的一部分;多方的安全性會(huì)話。而XML加密規(guī)范可以對(duì)文檔選定的某個(gè)部分進(jìn)行加密,使用者可以只對(duì)需要保護(hù)的重要部分進(jìn)行加密,并且XML加密為需要結(jié)構(gòu)化數(shù)據(jù)安全交換的應(yīng)用程序提供了一種端到端的安全性。
2、XML加密步驟
XML加密定義了一個(gè)對(duì)明文加密產(chǎn)生密文以及對(duì)密文解密恢復(fù)明文數(shù)據(jù)的過(guò)程:
(1)選擇加密算法
XML加密算法中有對(duì)稱(chēng)加密和非對(duì)稱(chēng)加密,由于不對(duì)稱(chēng)加密和對(duì)稱(chēng)加密算法都有各自的缺點(diǎn),在實(shí)際應(yīng)用中可把二者結(jié)合起來(lái)使用,可以先用不對(duì)稱(chēng)加密交換對(duì)稱(chēng)密鑰,再用對(duì)稱(chēng)加密交換XML數(shù)據(jù)。
(2)選擇密鑰傳輸方法
解密必須使用密鑰,可以傳輸解密的密鑰的方法:不傳輸密鑰、使用密鑰名稱(chēng)或其他相關(guān)信息、傳輸加密后的密鑰。
(3)加密原始數(shù)據(jù)
加密原始數(shù)據(jù),生成加密的XML文檔,<EncryptedData>元素是XML加密句法中最基礎(chǔ)的元素。包括了待加密數(shù)據(jù)源的位置、加密算法等。
3、XML加密的粒度
XML加密的基本粒度單位是元素,加密的粒度可以應(yīng)用于三種情況:
(1)XML元素的加密;
(2)XML元素內(nèi)容的加密;
(3)任意數(shù)據(jù)的加密。
如圖,<EncryptedData>元素替換了文檔中的<Cardld>,文檔其他部分不變。加密后其他元素內(nèi)容可以為任何人知曉,而<Cardld>元素的內(nèi)容則只有擁有對(duì)應(yīng)解密密鑰的人才可獲得。
三、基于XML加密的Web服務(wù)安全
作為一個(gè)典型的應(yīng)用,程序?qū)崿F(xiàn)了完整的XML文檔的加密和解密。
1、XML文檔加密過(guò)程
(1)創(chuàng)建一個(gè)Xml Document對(duì)象,利用它的load方法裝人要加密的XML文件(本例以encrypting.xml為例);
(2)創(chuàng)建一個(gè)Encrypted Xml對(duì)象,把上一步中創(chuàng)建的對(duì)象作為參數(shù)傳遞給它:Encrypted Xml exml= new Encrypted Xml(xdoc);
(3)用函數(shù)GetNumbering _Key()取得密鑰,用Encrypted Xml對(duì)象的Add Key Mapping方法把將要使用的密鑰映射到它們的相應(yīng)名稱(chēng)。
RSA Numbering _Key=GetNumbering _Key();exml_AddKeyName Mapping(“id”,Numbering _Key);
(4)取得要加密的節(jié)點(diǎn)元素Xml Node List xnode=xdoc.GetElements ByTagName(‘cardid’);Xml Element _xelement=Xml Element(xnode[0]);
(5)調(diào)用Encrypt方法來(lái)進(jìn)行加密,生成加密數(shù)據(jù)Encrypted Data encrypted NeedEncrypt=exml.Encrypt(xelement,"id");
(6)將原始XML文檔的未加密部分換為新的加密數(shù)據(jù)exml.Replace lement(xelement,encryptedNeedEncrypt,true);
2、XML文檔解密過(guò)程
(1)裝入已加密的XML文件(本例為Encrypted .Xml);
(2)設(shè)置密鑰一名稱(chēng)映射:RSA Numbering _Key=GetNumbering _Key();exml_AddKeyName Mapping(“Numbering ”,Numbering _Key);
(3)調(diào)用Encrypted Xml的DecryptDocument方法解密數(shù)據(jù):DecryptDocument()。
Web服務(wù)在電子商務(wù)等領(lǐng)域有著廣泛的應(yīng)用,它是基于SOAP和WADL等之類(lèi)的標(biāo)準(zhǔn)協(xié)議,以XML格式描述一種標(biāo)準(zhǔn)的數(shù)據(jù)表示格式和消息格式,對(duì)于Web服務(wù)安全的實(shí)現(xiàn)最好是基于開(kāi)放的標(biāo)準(zhǔn)協(xié)議,而不是依賴(lài)于某些專(zhuān)用格式,XML加密規(guī)范將安全集成到XML環(huán)境中,完全可以作為電子商務(wù)中Web服務(wù)安全的基礎(chǔ),有著廣闊的發(fā)展空間。
小知識(shí)之IETF
IETF又叫互聯(lián)網(wǎng)工程任務(wù)組,成立于1985年底,是全球互聯(lián)網(wǎng)最具權(quán)威的技術(shù)標(biāo)準(zhǔn)化組織,主要任務(wù)是負(fù)責(zé)互聯(lián)網(wǎng)相關(guān)技術(shù)規(guī)范的研發(fā)和制定,當(dāng)前絕大多數(shù)國(guó)際互聯(lián)網(wǎng)技術(shù)標(biāo)準(zhǔn)出自IETF。









