1 引言
XML(Extensible Markup Language)可擴展標記語言由于其良好的擴展性、自描述性以及內容與表現(xiàn)形式的分離, 在互聯(lián)網上的運用日益廣泛,尤其在電子商務領域。各大企業(yè)、銀行、保險公司和財務公司都趨向使用XML進行金融、財務、產品信息等數(shù)據(jù)交換。但隨之而來的安全問題也引起了人們的廣泛注意,非法訪問、非法篡改、假冒偽造、拒絕服務、抵賴等行為時有發(fā)生。因此,保證數(shù)據(jù)安全是電子商務發(fā)展的關鍵所在,安全性研究必將成為一個重要研究領域。
本文就XML相關安全標準和策略進行探討,著重研究通過XML Signature數(shù)字簽名技術,如何確認客戶身份,保持數(shù)據(jù)的完整性以及防止抵賴行為。并給出在電子商務中如何運用XML Signature對客戶訂單簽名的具體實例。
2 數(shù)據(jù)安全
數(shù)據(jù)安全在電子商務領域主要指以下幾個方面:(1)機密性:除收發(fā)雙方之外,任何第三方不能對秘文進行解密,防止第三方竊取和修改數(shù)據(jù)以達到電子欺騙的目的。(2)一致性:接收者能夠核實并確定發(fā)送者,即商家能知道發(fā)來訂單的客戶是誰,反之客戶能通過商家對自己所發(fā)訂單的答復來判別商家的一致性。(3)不可否認性:發(fā)送方事后不能抵賴自己的行為,客戶不能否認自己曾發(fā)送過訂單,商家也不能否認對訂單的答復。
基于以上幾點,W3C和IETF開發(fā)的XML安全標準主要包括XML Encryption、XML Signature 和XKMS 。XML Encryption是XML文檔加密的標準,XML Encryption不僅可以像SSL、TLS一樣給文檔的整體加密,還可以就文檔的某一部分進行加密,讓不包含機密信息的部分以明文的形式存在;XML Signature在電子商務中的應用相當廣泛,運用它可保證客戶訂單完整性、簽名確認和不可否認性;XKMS(XML密鑰管理規(guī)范)是分發(fā)和注冊公鑰的規(guī)范,由XML密鑰信息服務和XML密鑰注冊服務規(guī)范組成。
3 XML Signature
XML Signature是一個與XML語法兼容的數(shù)字簽名語法描述規(guī)范,描述數(shù)字簽名本身和簽名的生成和驗證過程。利用XML Signature可以確保數(shù)據(jù)信息不被篡改和防止客戶或商家的抵賴行為,驗證通信雙方的身份,從而保證通信雙方的利益。
XML Signature的實現(xiàn)是建立在對密鑰的管理基礎上,具體實現(xiàn)時將密鑰算法和消息摘要結合起來。消息摘要是一個唯一對應消息或文本的值,由一個單向Hash加密函數(shù)作用產生。首先消息發(fā)送方用自己的私鑰簽署消息,接收方可以使用發(fā)送方的公鑰驗證數(shù)字簽名,確認消息的真實性。如果已知的發(fā)送方公鑰能夠驗證數(shù)字簽名,就認為消息是來自聲明的發(fā)送方。
4 運用XML Signature對客戶訂單進行數(shù)字簽名
通過互聯(lián)網傳送客戶訂單是目前電子商務中頻繁的業(yè)務活動。以下給出用XML Signature給客戶訂單簽名的實例,說明如何利用XML Signature確保信息的完整性、一致性和不可否認性。以下是一個客戶訂單的XML文檔:
<? xml version=\"1.0\"?>
<! DOCTYPE customer_order SYSTEM \"custord.dtd\">
<customer_order>
<item>
<name>Turnip Twaddle</name>
<quantity>5</quantity>
<price>9.88</price>
</item>
<customer>
<name> John Kerry </name>
<street>1234 Main Street</street>
<city state=\"NC\">Raleigh</city>
<zip>11111</zip>
</customer>
<credit_payment>
<card_issuer>American Express</card issuer>
<card_number>836454678962</card number>
<expiration date month=\"10\" year=\"2004\"/>
</credit_payment>
</customer_order>
訂單包括商品信息(商品名稱、數(shù)量、價格),客戶信息(姓名、城市、郵編等)和信用卡信息(發(fā)行人、卡號、期限)。我們用XML Signature僅對客戶信息進行簽名,從而保證訂單發(fā)送方身份的有效性,也防止客戶的抵賴行為。將以上的客戶訂單XML文檔轉換成相應的DOM 對象,用前面所介紹的方法獲得密鑰,用私鑰對內容進行數(shù)字簽名,將公鑰隨著經過數(shù)字簽名的消息一起發(fā)送給接收方,以便用來驗證其中的數(shù)字簽名。并根據(jù)DOM文檔生成signer對象。指定僅對客戶信息進行簽名,通過增加到Signer對象的引用,來確定簽名元素的XML位置。最后調用 signer 對象中的 sign 方法來完成XML數(shù)字簽名,通過sign方法帶的參數(shù)確定簽名方式,如果不帶參數(shù)生成的就是封外簽名,即被簽名的元素成為了<Signature>元素的子元素。我們對客戶信息的簽名采用的就是封外簽名。
對此訂單,我們采用DSA加密算法與摘要算法SHA相結合的dsa-sha1算法,這個算法沒有特定的參數(shù),是一個160位的字符串,所對應的摘要值采用的是基于64位的編碼方式。
5 總結
XML Signature簽名在Web Services安全中有多種功能。單獨使用時,XML Signature提供數(shù)據(jù)完整性;將XML Signature鏈接到簽名者的身份時,它提供數(shù)據(jù)內容的不可否認性;它還可以用于身份驗證,當發(fā)生SOAP選擇時,XML Signature還可以用于工作流程。因此,為了有效地保證XML文檔的數(shù)據(jù)安全,XML Signature是一項必不可少的保護機制,本文從XML Signature數(shù)字簽名技術在電子商務中的運用這個角度進行論述,通過對客戶訂單的數(shù)字簽名,說明運用XML Signature技術驗證客戶身份的有效性和防止客戶的抵賴行為。
參考文獻
[1] Blake Dournaee. XML安全基礎[M].北京:清華出版社,2003.
[2]胡邦昀,夏薇.XML網絡服務安全的研究[J].計算機時代,2002,12(10):7-8.
[3]張勇,馮玉才.XML數(shù)字簽名技術及其在Java中的具體實現(xiàn)[J].計算機應用,2003,32(09):1511-1514.
[4]郭競樂. XML數(shù)字簽名技術的研究與實現(xiàn)[J].計算機工程與設計,2005,26(5): 1211-1213.
[5]陳金水,李孝安.基于不可否認簽名方案的XML數(shù)字簽名技術研究[J].科學技術與工程,2007,7(6);1208-1212.
[6]曹嵩,張志涌,王曉波.一種基于XML構建數(shù)據(jù)庫的方法[J].計算機應用研究, 2001(10): 107-109.
[7]崔國華,曾致中.更安全的數(shù)字簽名裝置[J].計算機安全,2005(5): 61-62.
[8]王加昌,郭捷.在Mustang下實現(xiàn)XML數(shù)字簽名[J].信息安全與通信保密,2007(2):121-123.