楊茂云, 任世錦
(徐州師范大學 計算機學院,江蘇 徐州 221116)
目前,信用卡、網上銀行的電子支付手段得到了廣泛的使用,然而由于其安全缺陷,每年都會發生許多針對信用卡和網上銀行的金融犯罪,對用戶造成了巨大損失,迫切需要安全高效的電子支付技術保護用戶的資金安全。基于 SET的電子支付適用于大額支付,小額支付及微支付成本較高,基于 Hash鏈技術的電子支付適合于在線微支付[1],電子現金通過把現金數值、銀行等信息轉換成一串經過加密處理的比特串來代替紙制貨幣,特別適合離線小額支付。用戶在開展電子現金業務的銀行開設電子現金帳戶、存錢并提取電子現金后就可以在接受電子現金的商家購物。與其他支付方式相比,易復制是電子現金主要的缺點,并且在電子現金的流通過程中,各方對電子現金有特殊的要求,用戶要求電子現金靈活方便安全,能夠保護個人隱私;商家和銀行要求能夠鑒別偽造的電子現金和重復使用的電子現金,金融監管部門要求能夠追蹤電子現金的流動,便于打擊金融犯罪。為了滿足各方的要求一個實用的電子現金系統一般如圖 1所示。
基于現代密碼學技術已經提出各種電子現金方案,在這些方案中,主要采用數字簽名技術防止客戶偽造電子現金,采用查詢存儲在銀行的已花費的電子現金的數據來識別重復使用電子現金的用戶。基于素數階群的表示[2]以及Schnorr型簽名[3]設計的 Brands方案[1]、Chan方案[4]和陳方案[5]是目前效率較高的電子現金方案。為了防止重復花費,這三個方案要求在銀行永久保存電子現金的信息,隨著用戶規模的擴大,銀行需要保存的數據將是海量的,查詢銀行數據庫驗證重復花費用戶的效率會很低。Brands方案和Chan方案不能對電子現金進行監管,不能防止洗錢等金融犯罪,陳方案能夠對電子現金進行監管。楊方案[6]給電子現金規定一個有效期,用戶只能使用有效期內的電子現金。為防止重復花費銀行只需要存儲有效期內的電子現金數據,可以有效地減少數據存儲量。為防止偽造,用戶不能更改電子現金的有效期只能到銀行更新過期的電子現金,把提取時間嵌入到電子現金以及銀行對電子現金的簽名中可以防止用戶更改有效期。基于素數階群的表示、Schnorr型簽名以及圖 1的模型,設計了一個可追蹤離線電子現金系統,該系統有效地解決了銀行的瓶頸問題,適合大規模應用。

圖1 電子現金系統模型
銀行 B隨機產生一個生成重(g,g1,g2,g3)和一個秘密數以及兩個單向抗碰撞哈希函數 H,H0:

IDs表示商店的識別號,D/T表示商品交易的日期/時間。生成重,哈希函數及h,h1,h2,h3公開。銀行B建立兩個數據庫:賬號數據庫(存儲用戶和商店的賬號)、存儲數據庫(存儲已花掉的硬幣,存儲周期為硬幣有效期的兩倍)。
β表示電子硬幣的提取時間(用從某一時刻開始的天數表示,以下簡稱為硬幣)。銀行 B對(A,B)的簽名Sig(A,B)是一個四重組(z,a,b,r)滿足:

這是一個 Schnorr型簽名。用 A,B,A1,Sig(A,B)表示一個硬幣,A,B,A1在后面解釋。
用戶 U向銀行B證明他的身份,執行下列協議:
用戶U和商店 S執行下列協議:
①U消費時將硬幣(A,B,A1,β,Sig(A,B)發送給商店 S。若硬幣在有效期內且不在商家的數據庫中則繼續,否則停止;
②如果 A≠1,S計算口令 d=H0(A,B,IDS,D/T)發送給U;
③U計算 r1=(dus+x1)modq,r2=(ds+x2)modq,將 r1,r2發送給 S。 S驗證 Sig(A,B)=(z′,a′,b′,r′)是合法的簽名且證實銀行簽名和硬幣提取時間的真實性后接受硬幣否則不予接受,并把支付記錄(A,B,A1,β,Sig(A,B),r1,r2)(和交易日期時間存儲于數據庫中)。
商店定時將支付記錄和交易日期時間發送給 B,B驗證硬幣在兩倍有效期內后利用商店的IDS計算d,驗證Sig(A,是合法的簽名且證實銀行簽名和交易日期時間的真實性后接受該支付記錄,然后B搜索存儲數據庫,可能出現以下兩種情況:
①若 A不存在,則把(A,D/T,β,r1,r2)存儲于數據庫中,同時在S的賬戶中記入一個硬幣的貨幣值;
②若A存在,此時有兩種可能的偽造:若新提交的支付記錄、日期/時間與存儲數據庫中的日期/時間完全一致,則表明商店S試圖存儲第二次。若新提交的支付記錄、日期/時間與存儲數據庫的日期/時間不一致,則表明用戶 U重復花費該硬幣。銀行B利用新得到(r1,r2)和存儲數據庫中的計算銀行 B可以得到重復花費用戶的賬號。是重復花費的證據。
顧客可以在有效期到期前把沒有花費的硬幣還給銀行,用戶U和銀行B執行下列協議:
①U將硬幣(A,B,A1,β,Sig(A,B))發送給銀行 B,若硬幣在有效期內則繼續否則停止,如果A≠1,B計算口令 d=H0(A,B,IDB,D/T)發送給 U;
①委托人與銀行合作,在用戶支付某一硬幣時能夠識別該硬幣。具體過程如下:銀行向委托人提供 A′2,委托人計算銀行獲得 A1計算以 此證 明A1是正確的,銀行通過硬幣中的A1識別出該枚硬幣。此類跟蹤用于監視敲詐、勒索等犯罪行為;
②委托人與銀行合作,能夠在商店存儲某一硬幣時,追蹤該硬幣的所有者。具體過程如下:銀行向委托人提供A1,委托人計算:′銀行 驗證以此證明 A′2是正確的,通過 A′2可以追蹤用戶的識別號 I,此類跟蹤用于監視洗黑錢等犯罪行為。
②在支付協議中,商店S通過驗證簽名就可判定硬幣是否有效,硬幣提取日期是否有效,是否是銀行核發的硬幣;
③在商店存款協議中,銀行 B通過驗證簽名就可判定硬幣是否有效,若用戶 U重復花費該硬幣,銀行 B可以得到重復花費用戶的賬號。
在安全性方面和陳方案一樣具有:①匿名性;②不可聯系性;③不可偽造性;④不依賴安全硬件;⑤可追蹤性。
在運行效率方面與陳方案相比,硬幣長度減少 20%;在提款協議中用戶U多兩個模指數運算,銀行B多一個模指數運算,但這三個運算都可以預先處理;在支付協議中商店 S多一個模指數運算,在存款協議中銀行B多一個模指數運算,新方案并沒有增加太多的計算負擔。
在數據存儲和查詢效率方面與陳方案相比,如果以有效期 30天計,銀行數據庫只需要存儲 60天的電子現金數據,如果按提取現金的日期為索引進行查詢,只需查詢存儲數據庫中的六十分之一數據,有效減少了銀行存儲數據庫的規模,提高了銀行數據庫的查詢效率。
在使用方面與陳方案相比,增加了一個顧客硬幣更新協議,在一定程度上增加了用戶使用的不方便性。
[1]YANG M Y.Virtual Debit-Based Micro-Payment System NPAY[C].[s.l]:Communication Faculty,2009:317-321
[2]BRANDS S.Untraceable Off-Line Cash in Wallets with Observers[C].USA:Springer-Verlag,1993:302-318.
[3]SCHNORR C P.Efficient Signature Generation for Smart Cards[J].Journal of Cryptology,1991,4(03):161-174.
[4]CHAN A.FRANKEL Y,TSIOUNIS Y.Easy Come-Easy Go Divisible Cash[C].USA:Springer-Verlag,1998:561-575.
[5]陳愷.電子現金系統與公鑰基礎設施研究[D].西安:西安電子科技大學,2001.
[6]楊茂云.Brands電子現金系統的改進[J].通信技術 2010,43(07):112-117.