摘 要:在使用易貨系統進行交易的過程中,為了解決交易用戶雙方產生的諸多安全性、合法性等問題,本文從身份認證、法律保證、銀行結算三方面入手,采用PKI/CA、電子簽章以及銀行商戶專線等技術實現了目前易貨系統中的安全性交易,保證了交易用戶的合法利益。
關鍵詞:易貨系統;PKI/CA;電子簽章;銀行虛擬賬戶
中圖分類號:TD672 文獻標識碼:A 文章編號:1006-4117(2011)12-0224-04
引言:談到易貨交易,我們很容易聯想到歷史課本上的“物物交換”的原始社會,人們把自己擁有的物品同他人換取自己所需的,比如一頭羊換一把斧頭,由于當時這種貿易的結算和攜帶不便等局限性使得其漸漸淹沒在不斷發展的經濟歷史長河中。隨著計算機技術的飛速發展以及電子商務技術的日趨成熟,它帶著強大的優勢“卷土重來”。我們可以看到,由于現代易貨為企業提供了諸多益處,易貨交易將會得到近一步的增長和發展,行業內企業的復雜和專業化程度也會相應提高。隨著電子易貨交易的持續增長與發展,使用電子易貨系統的一些實際安全問題也暴露出來,例如買方惡意購買、拒絕收貨以及隨意差評、賣方客戶會擔心商品會不會被調包、交易過程中會不會受到欺詐等等。如何防止上述這些問題的發生以保證交易在正常有序的環境中安全合法地進行,是近年來各大易貨網站關注最多的問題,故我們的研究具有非常重要的實際意義。
一、研究內容
電子易貨系統在交易過程中的安全性問題主要有以下三個方面,包括缺少有效的身份認證,缺少健全的法律保證以及缺少安全的支付系統,這些問題嚴重困擾著易貨系統的使用以及推廣。
(一)缺少有效的身份認證
越來越多的人通過互聯網進行電子商務活動,這種模式打破了地域和時間的限制,客戶并不是面對面交易,從而使得人們對交易過程中對于操作者的身份是否可信而產生懷疑,其中涉及到的大量交易操作和資金操作也就變得非常不安全。若用戶密碼被盜用,盜用者也可能會做出一些有損公司利益的事情。
(二)缺少健全的法律保證
一旦在易貨交易中發生法律糾紛,就缺少法律參考依據,那么就會使一些不發企業鉆法律漏洞,從而損害對方企業的利益和易貨網站的信譽,使得用戶對易貨網站和易貨行業缺乏信心導致易貨發展的嚴重受阻等。今年10月,近5萬多名網友結集YY語音34158頻道,有組織性的,對部分的淘寶商城賣家實施“拍商品、給差評、拒付款”的惡意操作行為。我們先不論事件的起因,但看其中暴露的法律問題也值得人深思,交易的不可否認性沒有得到很好的保證。另外,易貨交易一般涉及到的都是交易額和交易數量都有一定規模的商品,如果存在像淘寶最近出現的惡意網絡暴力操作,那么易貨交易市場將會變得混亂無序,嚴重傷害到賣方的利益。
(三)缺少安全的支付系統
在交易的安全性當中最為重要的是安全在線支付問題。使用電子易貨系統需要繳納的手續費、需要支付給易貨公司的傭金等費用需要以真實貨幣支付。沒有安全的支付系統,那么易貨交易將難以進行。使用網上銀行的局限性在于,不法分子竊取用戶信息主要通過木馬程序來進行,用戶在網上銀行程序里輸入卡號或密碼時計算機就會自動將相關信息的編碼發送給黑客,他們再據此進行反讀取以破譯,錢便被黑走了。
二、解決方案
本文依托學院的科研項目——某易貨交易系統的研發,仔細研究了上述在交易過程中出現的安全問題,并得到了比較好的解決方案。
(一)基于PKI/CA的身份認證體系
在使用電子易貨系統的時候,系統必須要檢驗當前用戶的身份是否擁有相應的操作權限,僅靠一般的用戶名和密碼是遠遠不夠的。用戶很容易被盜用用戶名和密碼,必須使用比較可靠有效的身份認證來把好安全性的第一道關口,所以我們采用了PKI/CA的身份認證體系。
PKI(Public Key Infrastructure)即“公鑰基礎設施”,是用公鑰概念和技術實施的,支持公開密鑰的管理并提供真實性、保密性、完整性以及可追究性安全服務的具有普適性的安全基礎設施,是信息安全的核心,也是電子商務安全的關鍵所在。PKI技術通過第三方的可信機構——認證中心CA(Certificate Authority),把用戶的公鑰和用戶的其他標識信息(如名稱,E-mail,身份證號等)捆綁在一起,在Internet上驗證用戶的身份。CA是證書的簽發機構,它是PKI的核心。目前,通用的辦法是采用建立在PKI基礎之上的數字證書,它在用戶公鑰后附加了用戶信息及CA的簽名。公鑰是密鑰對的一部分,另一部分是私鑰。公鑰公之于眾,誰都可以使用;私鑰只有自己知道。由公鑰加密的信息只能由與之相對應的私鑰解密。為確保只有某個人才能閱讀自己的信件,發送者要用收件人的公鑰加密信件;收件人便可用自己的私鑰解密信件。同樣,為證實發件人的身份,發送者要用自己的私鑰對信件進行簽名;收件人可使用發送者的公鑰對簽名進行驗證,以確認發送者的身份。USB Key(簡稱UKey)與PKI技術結合,開發出了符合PKI標準的安全中間件,利用UKey設備來保存數字證書和用戶私鑰。UKey是一個帶協處理器的半導體芯片,存放有代表企業身份的電子數據文件。
PKI/CA以及數字證書的四個特性:
保密性——只有收件人才能閱讀信息。
認證性——確認信息發送者的身份。
完整性——信息在傳遞過程中不會被篡改。
不可抵賴性——發送者不能否認已發送的信息。
電子易貨系統是個多角色的易貨平臺,操作人員分為很多角色:超級管理員、各級管理員、易貨公司管理員、易貨公司經紀人、交易客戶等。因為各自業務職責不同,所以他們登錄后的操作有非常大的差異,如果單靠用戶名和密碼來進行身份識別的話,用戶密碼遺失或被盜的情況下,可能會造成利益損失或法律糾紛。這就需要在登錄和交易的關鍵操作前對用戶的身份進行驗證。
下面將詳細介紹登錄時用戶身份認證的實現流程,關鍵操作的身份認證原理相同,不在這里詳加講述了。
第一步:用戶在電腦上插上UKey,在登錄頁面上輸入用戶名、密碼以及USB Pin碼(即連接UKey設備的密碼);正確輸入USB Pin碼后即打開Ukey,獲取數字證書,系統自動產生一個隨機數random,對其用客戶端UKey中的私鑰K1進行加密,獲得簽名數據塊Ek1(random),如圖3-1所示。
圖3-1 客戶端登錄信息處理
圖3-2 客戶端發送請求
第二步,如圖3-2所示,客戶端將用戶名、、密碼、隨機數random、CA頒發的證書(含公鑰k2),簽名數據塊Ek1(random)一并發送至服務器端,等待驗證。第三步,服務器接收請求后,做相應的隨機數解密和驗證操作,見圖3-3所示。
圖3-3服務器驗證隨機數加密
UKey就像一個保險箱,只有知道密碼(稱為Pin碼,即個人身份識別碼)的人才能打開,獲取存儲在里面的電子數據。如果黑客想通過蠻力攻擊破譯Pin碼,UKey內部芯片會鎖死并將存儲的數據銷毀。并且,UKey中存放的代表持有人身份的敏感信息(如私鑰)是不可拷貝的。因此,電子身份信息被存儲在UKey中后,只有拿到UKey并掌握Pin碼的人才能使用UKey進行身份識別、信息加密以及電子簽名等操作,其安全性是相當高的。
(二)基于電子簽章的交易文件簽訂
為了保證交易的不可抵賴性,使得交易雙方按照相關的法律合法地進行易貨交易,我們采用了CA的電子簽章技術來實現。電子簽章是電子簽名的一種表現形式,利用圖像處理技術將電子簽名操作轉化為與紙質文件蓋章操作相同的可視效果,同時利用電子簽名技術保障電子信息的真實性和完整性以及簽名人的不可否認性。它可以實現傳統印章的功能,比如可以用于辨別電子文檔簽發者的身份,防止并檢測加蓋了電予印章的電子文檔是否遭到惡意篡改,而且一旦用戶同意了電子文檔中的內容而加蓋了電子印章,那么他對電子文檔的確認也可以通過該電子印章反映出來,用戶不能否認自己的操作。
在對交易合同進行簽章的過程中,需要使用到2個由CA提供的控件。因為CA中心頒發的USB Key設備中的電子簽章只能作用在pdf的文件上,所以我們需要WebOffice控件先將網頁文本內容轉化為Word文件,再使用AIP控件將Word文件再次轉化為Pdf文件。文件格式轉化工作完成后,客戶將USB key的電子圖章簽章后上傳至服務器。具體實現流程如圖3-4所示,圖3-5是實際應用中的電子簽章效果圖。
當客戶確認交易合同條款無誤后,可以使用自己的USB Key中的電子圖章進行簽章,也可以驗證對方的圖章是否合法或者被篡改。先蓋章的一方記為發送方,他將自己的電子印章信息用自己的私鑰加密發送出去,接收方用發送方的公鑰信息進行解密,即可驗證發送方的蓋章是否被修改過;并且發送方使用接收方的公鑰對交易合同進行加密,而接收方則使用自己的私鑰解密,這樣交易合同就可以安全無誤地到達目的地了電子印章并不只是簽字蓋章在電子文檔中的數字圖像化表示,它采用了現代密碼學原理,綜合了數字摘要與數字簽名技術,是一種安全可靠的簽名手段,具有一定的法律公信力[7],證書認證中心(CA)作為權威的、公正的、可信賴的第三方,其作用是至關重要的。這樣就可以避免了像淘寶商城出現的惡意購買的情況,使得易貨交易得到了法律的保護,也讓一切不道德以及不合法的買賣商家無所遁形。
圖3-4電子簽章流程圖
(三)基于銀行商戶專線的在線支付系統
為了保證資金流的安全性,可以采用銀行商戶專線直連的方式來在線支付手續費以及傭金等真實貨幣。該在線支付平臺需要銀行提供安全的銀行商戶專線直連應用接口,目前已經有多家銀行具有該類似的功能接口,所以可實現性較高。
3-6客戶與銀行簽約流程圖
1、合法的銀行簽約
首先做好的準備工作是,客戶必須在電子易貨系統中提交自己公司信息以及商業憑證等信息,為銀行之后的核對工作提供資料。接著,客戶去銀行柜臺辦理了第三方支付簽約,申明自愿加入易貨交易平臺在銀行中開設的商戶,自己在商戶下的虛擬賬戶受商戶的管轄,并且提交相關的公司資料。銀行根據之前從電子易貨系統中提交而來的信息,確認無誤后將會為客戶辦理一個實體賬戶,以及在商戶下開始一個虛擬賬戶,實體和虛擬賬戶具有對應的綁定賬戶。實體賬戶即可以看作一張銀行卡或者存折,客戶可以自由地存取現金。虛擬賬戶中的余額可以看作是客戶為支付費用而預先繳納的,雖然是在易貨交易商戶的名下,但是實際的支配需要客戶的參與。整個銀行簽約的流程請見圖3-6。
我們所要實現技術難點在于將用戶的信息如何安全地傳送至銀行,首先要獲取數字證書,采用DESede加密算法對報文進行加密,并使用BASE64編碼方式進行編碼,并去除換行符號,得到了加密編碼后的報文。下面代碼中的String getEncXmlStr(String xml)函數即為此加密函數。
private String getEncXmlStr(String xml) throws Exception {
CertStore myCertStore = KeyGenerator.getMyCertStore();//獲取證書
BASE64Encoder enc = new BASE64Encoder();//編碼方式為BASE64
byte[] encSourceByte = DESede.encrypt(xml.getBytes(), myCertStore
.getSecretKey()); //獲得密鑰進行DESede加密
String encSourceString = removeDosLine(enc.encode(encSourceByte));
//用BASE64方法編碼并去掉換行標記
return encSourceString;//返回加密后的報文
}
加密報文后,再對其中的報文特征做數字簽名,將簽名和報文都傳給銀行,銀行進行相應處理后,返回一個結果報文,那么我們必須要對該報文進行解碼和數字簽名的驗證才能了解返回結果是否真實有效,下面是關鍵的解碼以及驗證數字簽名的關鍵代碼。
public String sendMessage(String xml) throws Exception {
String returnMessage = 1;
……
// 獲得返回報文
byte[] data = httppost.getResponseBody();
……
// 獲取銀行的數字證書
CertStore bankCertStore = KeyGenerator.getBankCertStore();
//使用銀行私鑰來解密報文
byte[] bXmlText = DESede.decrypt(xmldata, bankCertStore.getSecretKey());
//使用銀行的公鑰來驗證發送方是否是銀行
boolean verifyResult = MD5withRSA.verify(bXmlText, signdata,
bankCertStore.getPublicKey());
……
2、實時和非實時的結算機制
由于實體賬戶是由客戶自由分配,虛擬賬戶是由商戶管轄,為了確保交易的正常進行,在商品發貨前往往需要客戶先繳納交易的傭金和手續費(交易貨款是由非現金結算,不涉及到真實貨幣,故省略不提),所以客戶應該在自己的實體賬戶中存入一定量的現金,并在系統中進行繳納費用的操作,向銀行發出入金指令。入金即為資金從客戶的實體賬戶到其虛擬賬戶的劃轉,它是實時操作。
在交易完成之后,需要對費用進行清算以及支付。大多銀行提供的功能為日終清算,它是非實時的。客戶進行確認交易結束時,其虛擬賬戶中的余額減少,對應的費用收取方(經紀公司等)的虛擬賬戶余額增加,之間的資金流動通過商戶的浮動盈虧虛擬賬戶完成。即付費方客戶虛擬賬戶將費用轉入商戶的浮動盈虧賬戶,再通過浮動盈虧賬戶轉入收費方的虛擬賬戶中。系統將一天所有客戶的虛擬賬戶的增減情況生成一份日終清算文件,上傳給銀行,接著發出清算指令,銀行接收到清算指令后核對之前的清算文件準確無誤后,進行實際商戶下所有虛擬賬戶的變動,如果清算成功,則返回清算結果文件供易貨系統管理員查看;若清算失敗,易貨系統管理員查找失敗原因,解決后重新生成清算文件上傳至銀行。下圖3-7為交易日終清算的詳細流程。
3-7交易日終清算流程
這里有一個問題產生了,既然客戶的虛擬賬戶是在商戶名下,如果經紀公司想實際得到傭金收入的話,那么會如何操作呢?經紀公司的操作者只需在系統中輸入傭金數額,提出一個申請,系統審核確認無誤后,向銀行發出一個出金指令,即實時地把該數量的資金從客戶的虛擬賬戶中劃轉到其實體賬戶中,這樣經紀公司就可以很方便地取出自己的收益了,它是前面入金操作的相反過程,也是一個實時過程。為何客戶的出金需要系統的審核呢?這是因為客戶的實體賬戶是由自己管轄的,但是其在商戶下的虛擬賬戶是由交易所商戶統一管轄的,所以客戶的入金操作現金流是從實體賬戶流入虛擬賬戶,客戶自己控制不受任何限制;出金操作現金流是從虛擬賬戶流入實體賬戶,客戶不能自主操作,需要提出出金申請,得到商戶的同意后,銀行才能做相應的出金操作。這樣就保證了資金劃轉的單項控制,有利于安全地進行銀行操作。
三、總結和展望
本文從電子易貨交易在交易過程中的安全性問題方面入手,研究了客戶身份認證,如何確保交易憑證的不可抵賴性以及銀行結算問題,采用PKI/CA身份認證體系、電子簽章技術和銀行專線直連并給出了實際的解決方案,希望能給易貨行業提供一些意見和借鑒。
除了上述講到實現安全性交易的一些方法外,還有一些其他手段可以保護交易的安全進行:
(1)聯合其他易貨網站,根據交易中出現的法律縫隙向相關部門進行反應,希望促成有關易貨法律體系的形成;有堅實的法律約束力來規范用戶和易貨公司的行為,如加大力度檢查公司營業許可證的檢查等;并且在自己網站內,向會員們提倡守法交易,遵守信息道德,進行合法的商業交易活動。
(2)針求會員們的意見,制定一套完整的交易監督體系;提醒專業的易貨經紀人團隊,對于客戶公司和產品的審核有真實性,不能虛報作假;交易平臺嚴格監督易貨交易的進行,避免發生不必要的法律糾紛。
(3)在網站的會員注冊、審核等方面嚴格進行驗證,以免混入不法商家,避免其做出一些損害客戶利益以及影響網站聲譽的行為;并且聘請專業的網站技術團隊進行開發和維護,并開設相應的熱線服務。
我們不難看出,易貨行業的勢頭銳不可當,正不斷的壯大和發展中,如何提供一個健壯、安全又可擴展的交易平臺是我們現在乃至今后都值得深入研究的課題。
作者單位:東華大學計算機科學與技術學院
作者簡介:夏小玲,女,上海東華大學計算機科學與技術副教授;周炯燕(1987— ),女,江蘇無錫,上海東華大學計算機科學與技術碩士,研究方向:計算機軟件方向。
參考文獻:
[1]郭濤,李之棠,吳世忠,譚運猛.電子商務安全支付系統綜述[J].計算機應用研究,2003(1).
[2]張曉丹.一種基于PKI的安全電子商務框架的設計與分析[J].計算機安全,2009,11.
[3]周化祥.一種基于PKI體系的USBKey認證客戶端的設計研究[J].網絡通訊及安全,2008,4.
[4]郭正榮,周城.基于PKI的電子簽章系統的實現[J].計算機科學,2006Vol.33 No.9.
[5]齊愛民.論電子簽章及其法律效力[J].法治論叢:上海大學法學院上海市政法管理干部學院學報.2004(2).
[6]宋海燕,王小浩.企業應用程序與建設銀行外聯平臺銀企直聯的設計與實現[J].微計算機應用,2009(7).
[7]汪雪芬,徐博藝.信息道德對B2B電子商務系統用戶接受行為影響的研究[J].情報雜志,2008(7).