?

基于NET平臺的安全網上支付系統設計與實現

2011-01-07 08:44陳衛民
懷化學院學報 2011年5期
關鍵詞:網上支付數字簽名報文

陳衛民

(湖南城市學院網絡信息中心,湖南益陽 413000)

0 引言

隨著信息技術的不斷發展和互聯網運用的日益普及,電子商務正在各行各業得到越來越廣泛的應用.受電子商務發展的有力拉動,我國個人網上支付的市場規模發展迅速.《2005年中國網上支付研究報告》數據顯示,2001年中國網上支付的市場規模為9億元,2004年該規模增長為75億元,年均復合增長率(CAGR)為102.7%.

然而,作為電子商務最核心、最關鍵的環節——網上支付卻存在不少問題.在中國互聯網絡信息中心(CNNIC)公布的一份報告中,用戶對“目前網上購物最大的問題”的回答結果是:認為網上支付安全得不到保障的占36.5%,認為產品質量、售后服務及廠商信譽得不到保證的占27.6%,而認為付款不方便和送貨不及時的分別占17.79%和9.39%,這說明,網上支付的安全性是人們最關心的問題.所以,構建安全的網上支付系統,是促進電子商務健康發展的一個重要課題.

1 網上支付及存在的安全問題

網上支付是指以計算機及網絡為手段,將負載有特定信息的電子數據取代傳統的支付工具用于資金流轉,并具有實時支付效力的支付方式.網上支付作為新的網絡交易支付方式,它的應用和發展給傳統支付模式帶來了很大的沖擊和挑戰.目前網上支付主要有兩種基本模式,一種是銀行辦理的支付業務,即網上銀行;另一種是由第三方支付平臺辦理的支付業務,如“支付寶”.[1]

對于網上支付,當前的主流方式是通過銀行卡(包括信用卡、借記卡和支付卡等)這種支付工具,通過瀏覽器輸入必要的支付認證信息,經發卡行認證授權后扣款完成在線支付.現階段網上支付的安全問題主要存在以下方面:

①支付密碼泄漏.目前記錄鍵盤操作功能的木馬比比皆是,通過記錄下用戶輸入的密碼口令,將它們發送給木馬制作者,木馬制作者就可以輕易地冒充持卡人通過互聯網進行消費,給持卡人帶來損失.

②支付數據被篡改.在缺乏必要的安全防范措施情況下,攻擊者可以通過修改互聯網傳輸中的支付數據,譬如,修改付款銀行卡號、修改支付金額、修改收款人賬號等,達到謀利的目的.

③平臺系統安全性.來自互聯網的各類攻擊、病毒及入侵將對網上在線支付系統的可用性帶來巨大威脅和侵害.同時,如何對大量的金融信息資產進行有效的管理,使不同程度的信息資產都能得到不同級別的安全保護,將是金融信息系統安全管理面臨的巨大挑戰.[2-3]

2 安全網上支付系統的設計與實現

2.1 網上支付系統流程

以中國工商銀行為例,其網上支付系統流程如圖1所示:

(1)客戶在商戶網站瀏覽商品信息,簽訂訂單;商戶按照銀行提供的接口要求形成提交數據表單;客戶確認支付后,提交此表單到銀行.

(2)銀行接收此筆訂單,對訂單信息和商戶信息進行檢查,并根據客戶輸入的交易卡號和其它相關信息,校驗后進行支付處理.

(3)銀行將處理結果提交到商戶網站,或者直接顯示交易結果給客戶.

圖1 中國工商銀行網上支付處理流程

2.2 系統開發平臺

目前,WEB開發平臺有很多,如:ASP、ASP.NET、JSP、PHP等,這里我們選用ASP.NET.

ASP.NET是2002年由微軟公司推出的新一代Web應用程序開發平臺,它是一個已編譯的、基于.NET的開發環境,提供了生成企業級應用程序所必需的全部服務,可以使用任何與公共語言運行庫 (CLR)兼容的語言 (包括Visual Basic.NET、C#和JScript.NET)來創建應用程序.目前最高版本是ASP4.0,開發環境是Visual Studio 2010.

與其它的WEB開發技術相比,ASP.NET提供的WEB頁面級狀態管理功能、服務器控件觸發事件的工作模式、代碼和內容分離的編程方式等,在一定程度上改變了以往的WEB應用系統的架構模式.ASP.net的優勢在于:執行效率的大幅提高、世界級的工具支持、強大性和適應性、簡單性和易學性、高效可管理性、多處理器環境的可靠性、自定義性和可擴展性、安全性、開發的效率比較高.[4]

2.3 安全網上支付系統的實現

2.3.1 安全技術策略

(1)數據加密.數據加密通過一定的加密算法,利用密鑰 (Secret keys)來對敏感信息進行加密,然后把加密好的數據和密鑰通過安全方式發送給接收者,接收者可利用同樣的算法和傳遞過來的密鑰對數據進行解密,從而獲取敏感信息并保證網絡數據的機密性.

(2)數字簽名.數字簽名的主要方式是:報文的發送方從報文文本中生成一個散列值 (或報文摘要),發送方用自己的私鑰對這個散列值進行加密來形成發送方的數據簽名.然后,將這個數據簽名作為報文的附件和報文一起發送給報文的接收方.報文的接收方首先從接收到的原始報文中計算出散列值 (或報文摘要),接著再用發送方的公鑰來對報文附加的數字簽名進行解密.如果兩個散列值相同,那么接收方就能確認該數字簽名是發送方的.通過數字簽名能夠實現對原始報文完整性的鑒別和不可抵賴性.

(3)安全協議.比較有代表性的電子支付安全協議有SSL(安全槽層)和SET(安全電子交易規范).其中,SSL協議只有商家對客戶的認證,缺少客戶對商家的認證,客戶資料的安全性容易受到威脅.而SET協議在保留對客戶信用卡認證的前提下,又增加了對商家身份的認證,已成為實際上的工業技術標準.[5-7]

2.3.2 具體實現代碼

(1)提交銀行數據

①原始訂單數據

string src=“〈?xml version=‘1.0’encoding=‘G BK’standalone= ‘no’?〉〈B2CReq〉〈interfaceName〉”+interfaceName+ “〈/interfaceName〉〈interfaceVersion〉”+interfaceVersion+ “〈/interfaceVersion〉”;src=src+“〈orderInfo〉〈orderDate〉” +orderDate+ “〈/orderDate〉〈curType〉”+curType+ “〈/curType〉〈merID〉”+merID+“〈/merID〉 〈subOrderInfoList〉 〈subOrderInfo〉〈orderid〉” +orderid+ “〈/orderid〉〈amount〉” +amount+ “〈/amount〉〈installmentTimes〉1〈/installmentTimes〉〈merAcct〉” +merAcct+ “〈/merAcct〉 〈goodsID〉” +goodsID+“〈/goodsID〉 〈goodsName〉”+goodsName+“〈/goodsName〉 〈goodsNum〉” +goodsNum+“〈/goodsNum〉〈carriageAmt〉〈/carriageAmt〉〈/subOrderInfo〉〈/subOrderInfoList〉〈/orderInfo〉”;

src=src+“〈custom〉 〈verifyJoinFlag〉0〈/verifyJoinFlag〉〈Language〉ZH-CN〈/Language〉”+ “〈/custom〉 〈message〉 〈creditType〉2〈/creditType〉〈notifyType〉HS〈/notifyType〉 〈resultType〉1〈/resultType〉 〈merReference〉www.yy.cn〈/merReference〉〈merCustomIp〉 〈/merCustomIp〉 〈goodsType〉1〈/goodsType〉 〈merCustomID〉 〈/merCustomID〉〈merCustomPhone〉〈/merCustomPhone〉〈goodsAddress〉”+userAddress+ “〈/goodsAddress〉〈merOrderRemark〉〈/merOrderRemark〉〈merHint〉〈/merHint〉〈remark1〉〈/remark1〉 〈remark2〉 〈/remark2〉 〈merURL〉http://www.yy.cn/bank.aspx〈/merURL〉〈merVAR〉〈/merVAR〉〈/message〉〈/B2CReq〉”;

②數字簽名

ICBCEBANKUTILLib.B2CUtilClass ICBC = new ICBCEBANKUTILLib.B2CUtilClass();

int a=ICBC.init(“E:/ebb2cpublic.crt”, “E:/klg0215cs.crt”,“E:/klg0215cs.key”,“12345678”);

string merSignMsg1=ICBC.signC(src,src.Length);

merSignMsg=merSignMsg1;

merCert=ICBC.getCert(1);

③數據加密

byte[]byte1=encoding.GetBytes(src);

tranData = Convert.ToBase64String (byte1, 0,byte1.Length);

④數據傳輸

https://b2c.icbc.com.cn/servlet/ICBCINBSEBusinessServlet

(2)銀行處理結果

①獲取返回數據

merVAR=Request.QueryString[“merVAR”];

notifyData=Request.QueryString[“notifyData”];

signMsg=Request.QueryString[“signMsg”];

②數據解密

byte[]c=Convert.FromBase64String(notifyData);

string str-BaseOut=Encoding.GetEncoding(936).GetString(c);

notifyData=str-BaseOut;

③數據驗簽

ICBCEBANKUTILLib.B2CUtilClass ICBC = new ICBCEBANKUTILLib.B2CUtilClass();int a=ICBC.init(“E:/ebb2cpublic.crt”, “E:/klg0215cs.crt”, “E:/klg0215cs.key”, “12345678”);int b=ICBC.verifySignC( str-BaseOut, str-BaseOut.Length, signMsg,signMsg.Length);

3 結束語

網上支付是電子商務活動中最核心、最復雜的環節,也是電子商務得以進行的基礎條件.本文分析了目前網上支付存在的安全問題,并給出了工商銀行網上支付系統的實現方案,希望能有助于網上支付系統的開發,進而促進電子商務的發展.

[1]李春燕.我國電子商務網上支付的探討 [J].電子商務,2010,(01):50-52.

[2]彭銀香,白貞武.電子商務安全問題及措施研究 [J].大眾科技,2005,(11):162-163.

[3]李峰.電子商務中的安全技術淺析 [J].電子商務,2001,(2).

[4]NET簡介 [EB/OL].http://wenku.baidu.com/view/2aa 595d5b14e852458fb577c.html.

[5]夏露.電子商務在線支付問題研究 [J].學術論壇,2001,(5):55-57.

[6]楊恩寧.第三方電子商務支付平臺的構建 [EB/OL].http://imfo. feno. cn/2007/130204/c000094942. shtml.2007-11-26.

[7]徐敏.我國電子商務網上支付的現狀分析 [J].濰坊高等職業教育,2009,(3):69-73.

猜你喜歡
網上支付數字簽名報文
基于J1939 協議多包報文的時序研究及應用
CTCS-2級報文數據管理需求分析和實現
淺析計算機安全防護中數字簽名技術的應用
第三方網上支付風險控制研究
——以支付寶為例
淺析反駁類報文要點
網上支付使生活更便捷
基于數字簽名的QR碼水印認證系統
網上支付對消費者行為的影響
ATS與列車通信報文分析
數字簽名簡述
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合