趙登攀,高 凱
(陜西理工學院教務處 陜西 漢中 723000)
電子商務從出現以來就以其巨大的能量和動力給整個世界的經濟運行方式和社會生活形態帶來了深刻的變化。它不僅開辟一條新的網上銷售渠道,而且改善企業經營模式、優化交易過程、降低庫存損耗、保持資金全部周轉和降低實際銷售支出,進而降低經營成本,增加企業收入和效率,并幫助企業與客戶、供應商以及合作伙伴建立更為密切的合作關系。可以說誰掌握了電子商務、誰就在未來的商戰中掌握了制勝的商機[1]。可擴展標記語言XML由于其自身的優點迅速成為在電子商務網絡數據表示和信息交換的事實標準。本文正是基于以上背景,提出一種新的XML安全策略來保證電子商務信息的安全。
擴展標記語言XML(Extensible Markup Language)是世界萬維網聯盟W3C制定的一種數據標準。它以其結構化、互操作性、易于交換和可擴展性的特點在很多行業得到了廣泛的應用[2]。由于XML具有良好的數據存儲格式、可擴展性、高度結構化和便于網絡傳輸,非常適合電子商務應用的需要。由于其卓越的性能表現以及為其所制訂的一些與電子商務相關的規范,使XML成為一種廣泛應用的電子商務描述語言,并在電子商務的各種信息交換中發揮重大作用[3-4]。
隨著XML技術在互聯網的廣泛應用和發展,XML數據的安全得到了廣泛關注,XML安全技術包括XML加密標準、XML數字簽名標準、XML公鑰管理規范、XML存取控制標記語言以及XML權利標記語言(XrML)等[5]。
XML加密技術的基礎是XML加密規范,此規范由W3C制定。XML加密的最主要特點是可以對整個XML文檔加密,還可以對XML文檔中的任意元素和元素內容進行加密。XML加密技術用于對網絡數據進行加密,形成加密后的XML格式文件后再安全地發送給接收方,達到了提高文件傳送安全性的目標。
XML加密技術能夠對整個文件加密。但是其最主要的特點是其作為一種結構化數據,能夠控制對不同元素的授權查看[6-7]。
XML加密技術的主要特點有:
1)在數據傳輸過程中的每個節點都能保持數據的安全性;
2)支持包括XML文檔在內的任意內容的加密;
3)以XML形式表現被加密的數據;
4)可以從XML文檔中選出一部分內容進行加密。
XML加密技術實現這種應用的方法是引入了加密顆粒度(Encryption Granularity)的概念,即對每個 XML文件都可以進行如下操作:
1)加密整個XML文檔;
2)加密文檔中的任意元素;
3)加密文件中元素的內容;
4)對加密過的元素或內容進行再加密。
目前已經存在一些Internet加密和安全協議,SSL/TLS則只能是對整個文檔進行加密。XML加密并不能替代這些己有的安全協議,不過它能解決完全不同類型的安全性問題。目前對XML文檔加密的研究都只限于一般加密標準的使用,國外近幾年在新的加密標準上也有所研究,特別是將高級加密標準結合XML文件傳輸在電子商務平臺應用的也較少,為此正是本文研究的意義。
本節首先提出結合XML文檔傳送的電子商務平臺安全框架,并結合使用高級加密標準 (AES)算法,以.NET開發的電子商務平臺中訂單轉化XML文件,并對該訂單進行加密解密處理,最后測試實現了XML文檔加密解密的模塊功能,提高了電子商務交易中的在線支付的安全性。
為了保證購物中訂單信息的安全性,根據網站平臺對XML數據安全的要求,所設計的電子商務平臺XML數據安全框架如圖1所示,首先需要把訂單在發送端轉化為XML文檔,然后進行安全處理并通過網絡傳送。

圖1 XML安全系統框架Fig.1 The XML security system framework
隨著對稱密碼的發展,DES數據加密標準算法由于密鑰長度較小(56位),已經不適應當今分布式開放網絡對數據加密安全性的要求,因此1997年NIST公開征集新的數據加密標準,即AES。經過三輪的篩選,比利時Joan Daeman和Vincent Rijmen提交的Rijndael算法被提議為AES的最終算法。此算法將成為美國新的數據加密標準而被廣泛應用在各個領域中。盡管人們對AES還有不同的看法,但總體來說,AES作為新一代的數據加密標準匯聚了強安全性、高性能、高效率、易用和靈活等優點。AES設計有3個密鑰長度:128,192,256位,相對而言,AES的 128密鑰比 DES的 56密鑰強1 021倍。AES算法主要包括3個方面:輪變化、圈數和密鑰擴展。綜上所訴,AES是指定的標準密碼系統,未來將由政府和銀行業用戶使用。為了進一步提高電子商務應用領域電子訂單加密的安全性,在后面的設計中將采用這種算法。
根據設計分析和前面章節對數據加密算法的分析結果,從加解密速度、系統開銷、密鑰管理和安全性等方面考慮,該電子商務平臺中的重要關鍵信息用到AES加解密算法進行加密。再結合System.Security.Cryptography.Xml命名空間中的類設計數字簽名模塊。首先設計出整個加密解密的系統流程圖如圖2所示。

圖2 XML文檔加密和數字簽名流程圖Fig.2 XML encryption and digital signature flow chart
在后臺登錄管理新添加一個加密設置模塊頁面Manager Security.aspx,管理員通過登錄后臺管理界面,在“加密信息設置”菜單內設置加密和數字簽名的方案,并且可以靈活的設置需要加密的字段。這個管理權限只有管理員可以使用,這樣即使前臺用戶查看已經加密的訂單,也無法獲知本平臺是設置的何種加密方式,保證了訂單在網上傳送的安全性。如圖3電子商務平臺后臺管理界面中的加密信息設置模塊。管理員可以在后臺管理中設置需要加密的字段,如在購物過程中

圖3 后臺管理界面中的加密信息設置模塊Fig.3 Encryption information background management interface settings module
通過上面的分析過程,目前完成Signature.cs、Asymmetric.cs和SymmetricKey.cs這3個類的設計是系統的核心問題,結合高級加密標準 (AES)算法和C#編程的方式,下面具體分析一下其實現的核心算法程序。
1)用對稱密鑰對XML元素進行加密的實現過程
可以使用 System.Security.Cryptography.Xml命名空間中的類對XML文檔中的元素進行對稱加密。此加密使用高級加密標準(AES)算法對XML元素進行加密。主要程序如下:
public class SymmetricKey
{public static RijndaelManaged CryptographyXml(string fileUrl, string targetUrl, string tagName){RijndaelManaged key=null;
try{
key=new RijndaelManaged();
XmlDocument xmlDoc=new XmlDocument();
xmlDoc.PreserveWhitespace=true;
xmlDoc.Load(fileUrl);
Encrypt(xmlDoc, tagName, key);xmlDoc.Save(targetUrl);}
catch (Exception e)
{throw new Exception("出現異常"); }
return key;}
2)對稱密鑰對XML元素解密的方案
當使用對稱算法對XML數據進行加密時,必須考慮使用相同的密鑰對XML數據進行解密。上述的方案不在加密的XML中存儲或加密AES密鑰。
使用System.Security.Cryptography.Xml命名空間中的類對XML文檔中的元素進行非對稱加密。使用了兩個密鑰對一個XML元素進行加密。它生成RSA公鑰/私鑰對,并將密鑰對保存到安全密鑰容器中。然后使用高級加密標準(AES)算法創建一個單獨的會話密鑰XML數據保存到XML文檔中的新
public class Asymmetric
{public static void CryptographyXml (string fileUrl, string targetUrl, string tagName)
{XmlDocument xmlDoc=new XmlDocument();
try{
xmlDoc.PreserveWhitespace=true;
xmlDoc.Load(fileUrl);}
catch
{throw new Exception(“加載文件錯誤”);}
CspParameters cspParams=new CspParameters();
cspParams.KeyContainerName= “XML_ENC_RSA_KEY”;
RSACryptoServiceProvider rsaKey=new
RSACryptoServiceProvider(cspParams);
try
{Encrypt(xmlDoc, tagName, “EncryptedElement1”,rsaKey, “rsaKey”);
xmlDoc.Save(targetUrl);}
catch
{throw new Exception("加密文件失敗");}
finally
{rsaKey.Clear();}}
對XML元素進行非對稱密鑰解密,可從密鑰容器中檢索出 RSA私鑰,用它對密鑰進行解密,然后使用會話密鑰對文檔進行解密。
3)XML數字簽名和驗證的實現過程
可以使用 System.Security.Cryptography.Xml命名空間中的類通過數字簽名對XML文檔或XML文檔的部分進行簽名。數字簽名后還可以驗證簽名數據沒有被更改。下面的程序算法創建一個RSA簽名密鑰,將該密鑰添加到安全密鑰中,然后使用該密鑰對XML文檔進行數字簽名。最后我們可以檢索該密鑰來驗證XML數字簽名。對 XML文檔進行數字簽名的算法實現方案,主要程序如下:
///
public class Signature
{public static void CryptographyXml (string fileUrl,string targetUrl,string tagName)
{XmlDocument xmlDoc=new XmlDocument();
try{xmlDoc.PreserveWhitespace=true;
xmlDoc.Load(fileUrl);}
catch{}
CspParameters cspParams=new CspParameters();
cspParams.KeyContainerName= “XML_DSIG_RSA_KEY”;
RSACryptoServiceProvider rsaKey=new
RSACryptoServiceProvider(cspParams);
try{
SignXml(xmlDoc, rsaKey);
xmlDoc.Save(targetUrl);}
catch{}
finally{rsaKey.Clear();}}
驗證 XML文檔的數字簽名算法實現方案:
①必須使用與簽名時所使用的非對稱密鑰相同的密鑰。
②使用RSACryptoServiceProvider類檢索公鑰。
③通過從磁盤加載XML文件創建的對象。
④創建一個新的 SignedXml對象,并將 XmlDocument對象傳遞給它。
⑤找到
⑥將第一個
⑦使用CheckSignature方法和 RSA公鑰檢查簽名。此方法將返回指示成功或失敗的布爾值。
由于網上交易涉及到買賣雙方和銀行,買賣雙方只需要知道購買的訂單信息和客戶的聯系方式,而不需要知道客戶的信用卡信息。而作為雙方中介的銀行不需要知道客戶的訂單信息,只需要知道客戶的信用卡信息。這樣我們就需要對訂單中需要加密和保護隱私的元素進行選擇加密,然后再把訂單信息通過網絡發送出去,完成網上交易,保證信息的安全性。以加密訂單文件中的最為重要的信用卡信息為例進行測試。
選擇的系統測試環境如下:
1)測試軟件:Microsoft Visual Studio 2008,C# 編程
2)測試環境:Windows XP SP2,NET Framework 3.5,Internet Explorer 7.0,IIS 5.1
3)引用組件:System.Security.dll
4)命名空間:System.Xml、System.Security.Cryptography 和System.Security.Cryptography.Xml。
電子商務網站生成一個名為 “20091218204059.xml”的訂單文件。 且該文件中包含一個“
1)用對稱密鑰對
加密后生成一個20091218204059_3.xml的訂單文件,表示對源XML文件加密已經成功。
2)對稱密鑰解密程序在此省略。用對稱密鑰對
非對稱密鑰對XML元素加密和解密的測試和XML數字簽名和驗證的測試在此省略。
通過對稱密鑰對 XML元素加密和解密測試,在XML文檔編寫符合規范情況下,可以對任意需要加密的XML元素進行加密,這樣就提高了XML文檔在網絡中傳輸的安全性。通過非對稱密鑰對XML元素加密和解密測試,也達到了加密任意XML元素的目的。通過XML元素數字簽名和驗證的測試,達到了XML文檔在網絡傳輸中簽名和驗證的需要,進一步提高了電子商務平臺的安全性。
本文對電子商務的概念及其安全性做了相關的介紹說明,探討了如何利用XML技術加強其安全性,即XML加密和XML數字簽名不但可以保護數據的私有性,還能對整個交易提供數字證明,保證交易的不可抵賴性。同時,基于軟件復用性的思想,將XML簽名與加密技術的實現進行組件化封裝,在保護數據安全的同時也提高了軟件的可重用性。
[1]Gray P Schneider,James T Perry.電子商務[M].成棟,譯.北京:中國機械工業出版社,2000.
[2]傅海英,李輝,王育名.XML及相關安全研究進展[J].計算機應用研究,2004(4):86-88.FU HAI-ying,LI Hiu,WANG Yu-ming.An overview of XML and XML-related security[J].Application Research of Computers,2004(4):86-88.
[3]Mark Birbeck.XML高級編程[M].北京:機械工業出版社,2005.
[4]趙克立.XML1.x編程培訓教程[M].清華大學出版社,2002.
[5]XrML [EB/OL].http://technet.microsoft.com/zh-cn/library/cc747717(WS.10).aspx.
[6]耿建勇.XML安全技術的應用研究[D].北京:中國科學院,2005.
[7]耿建勇,魯士文.基于XML加密規范的安全數據交換的實現[J].計算機應用與軟件,2005(2):99-101.GENG Jian-yong,LU Shi-wen.Safe data exchange based on XML encryption[J].Computer Applications and Software,2005(2):99-101.