楊茂云
(徐州師范大學 計算機學院,江蘇 徐州 221116)
電子現金[1-5]是一種以數據形式流通的貨幣。它把現金數值轉換成一系列的加密序列數,通過序列數來表示現實中的貨幣。用戶在開展電子現金業務的銀行開設帳戶,在帳戶中存錢,提取電子現金后,就可以在接受電子現金的商家購物。電子現金是現代密碼學的最重要應用之一,按支付方式分為:
① 在線電子現金(on-line):每次支付都需要銀行的參加,它的通信代價很高,主要用來阻止超額消費,一般適用于高額消費;
② 離線電子現金(off-line):在支付過程中無需銀行參加,它的通信代價不高,但離線電子現金有資金濫用問題,一般適用于小額消費。
Brands[1]電子現金方案是目前效率較高的匿名離線不可分電子現金系統,Brands電子現金方案的安全性基于素數階群的表示問題(Brands假設)[1]和Schnorr簽名[6]。在該方案中,電子現金的不可跟蹤性得到無條件的保證,電子現金的不可偽造性和不可重用性在離散對數和一個合理的隨機性假設下用隨機問答器模型可以得到證明。但是Brands電子現金方案為保證電子現金的不可重用性,需要在銀行保存已花費的電子現金的數據,隨著系統規模的擴大,銀行會成為瓶頸。
通過把電子現金的提取日期嵌入到電子現金和銀行對電子現金的簽名中,在不降低安全性的基礎上,可以較好地解決銀行的瓶頸問題。
Gq是 一 個 階 為 素 數 的 群 , k ≥ 2,gi∈ Gq{1},gi≠gj,(i≠ j) , 若 對 任 何h∈Gq存 在ai∈ Zq,1≤i≤ k 使 得是長度為k的生成重,(a1, a2,… ak) 為h關于 (g1, g2,… ,gk)的一個表示。
Brands假設:
如果 Gq是一個階為素數的群,(g1, g2,… ,gk)是它的一個生成重, h ∈ Gq那么求 h關于(g1, g2,… ,gk)的一個表示是一個難解問題。
系統的參與方有三個:銀行、用戶及商家。系統的工作模式如圖1所示。

圖1 系統工作模式
銀行 B隨機產生一個生成重(g , g1,g2)和一個秘密數x ∈,h =gx以及兩個單向免碰撞哈希函數H,H0:

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

這是一個Schnorr型簽名。用 ( A,B,A1, β, si g(A,B))表示一個硬幣。 A , B ,A1在后面解釋。
顧客U向銀行B證明其身份,隨機產生一個數 μ1∈Z*q計算賬號 I =g1μ1,發送給B并秘密保存μ1。B將U的身份信息和賬號I存儲于賬號數據庫中,同時計算發送給用戶U。
用戶U向銀行B證明他的身份后,執行下列協議:
③ B給U一個回答 r = ( cx + w)mo d q,并從U的賬戶上去掉一個硬幣的值。U驗證 gr= a hc,)r= b zc,若驗證成立,U計算 r ′=(rμ + ν)mo d q ,=則B對 (A,B )的簽名 s ig ( A,B )=(z′, a ′,b′,r′) , 只 有 用 戶 U知 道 (A, B ,A1,β1,的表示。
用戶U和商店S執行下列協議:
① U將 ( A,B,A1, β1,sig ( A, B )) 發送給商店S。若硬幣在有效期內,且不在數據庫中則繼續,否則停止;
② 如果A≠1,S計算口令d=H0(A,B,IDS,D/T)發送給U;
③ U計 算 r1= ( dμ1s +x1)mo d q ,r2=(ds + x2)mo d q, 將r1, r2發送給S。S驗證 s ig ( A, B )=(z′, a ′,b′,r′) 是合法的簽名且后接受硬幣,否則不予接受,把支付記錄 ( A,B,A1, β1, sig ( A, B ),r1, r2) 存儲于數據庫中。
商店定時將支付記錄和交易的日期時間發送給B,B驗證硬幣在兩倍有效期內后利用商店的 IDS計算 d,驗證sig ( A,B )=(z′, a ′,b′,r′) 是合法的簽名且后接受該支付記錄。B搜索存儲數據庫會出現以下兩種情況:
① 若A不存在,則把(A, D /T,β1, r1,r2)存儲于存儲數據庫中,同時在S的賬戶中記入一個硬幣的貨幣值;
② 若A存在,此時有兩種可能的偽造:
a. 若新提交的支付記錄、日期/時間與存儲數據庫中的日期/時間完全一致,則表明商店S試圖存儲第二次。
b. 若新提交的支付記錄、日期/時間與存儲數據庫的日期/時間不一致,則表明用戶U重復花費該硬幣。銀行B利用 新 得 到 (r1, r2) 和 存 儲 數 據 庫 中 的 (r1′, r2′) 計 算即銀行 B可以得到重復花費用戶的賬號。(r1- r1′)/(r2- r2′)是重復花費的證據。
顧客可以在有效期到期前把沒有花費的硬幣還給銀行,用戶U和銀行B執行下列協議:
①U將 ( A,B,A1, β1,sig ( A, B )) 發送給銀行B。若硬幣在有效期內則繼續,否則停止;
②如果A≠1,B計算口令d=H0(A,B ,IDB,D/T )發送給U。U計算 r1= ( dμ1s +x1)mo d q ,r2=(ds + x2)mo d q將 r1,r2發送給B。B驗證 s ig ( A, B )=(z′, a ′,b′,r′) 是合法的簽名且后搜索存儲數據庫,若 A不存在,則把(A, D /T,β1, r1,r2)存儲于數據庫中,同時在U的賬戶中記入一個硬幣的貨幣值;若A存在則不接受該硬幣。
② 在支付協議中,商店 S通過驗證簽名就可判定硬幣是否有效,硬幣提取日期是否有效,是否是銀行核發的硬幣;
③在商店存款協議中,銀行B通過驗證簽名就可判定硬幣是否有效?若用戶U重復花費該硬幣,銀行B利用新得到(r1, r2) 和存儲數據庫中的 (r1′, r2′) 計算= Ad′B兩者相除得到因為 s d -sd′=r2-r2′故:即銀行B可以得到重復花費用戶的賬號。
(1)匿名性
在支付協議中由于離散對數的難解性,沒有人知道用戶選擇的秘密隨機數,也就不能求得硬幣的素數階群的表示,用戶的身份已經嵌入到硬幣中。用戶在花費該硬幣時不會泄露他的身份。
(2)不可聯系性
用戶每提取一枚硬幣都要重新選擇隨機數,沒有辦法從用戶花費的不同硬幣中得到有用信息。
(3)不可偽造性
用戶不能重復花費硬幣,商店也不能重復存儲硬幣,沒有銀行的允許用戶和商店也不能制造硬幣。
(4)安全性
方案的實現不依賴任何特殊的硬件。
(5)與Brands方案的比較
① 新方案中的硬幣長度約為Brands方案的1.1倍;
② 新方案與Brands方案相比在提款協議中,用戶U多兩個模指數運算,銀行多一個模指數運算,但這三個運算都可以預先處理。在支付協議中,商店S多一個模指數運算。在存款協議中銀行多一個模指數運算。新方案并沒有增加太多的計算負擔;
③ 新方案比Brands方案大大縮小了銀行存儲數據庫的規模,以有效期30天計,銀行存儲數據庫只需要存儲60天的數據;
④ 新方案比Brands方案大大提高了銀行數據庫的查找效率,以有效期 30天計,依提取硬幣的日期為索引進行查找,只需查找存儲數據庫中數據的六十分之一;
⑤ 新方案比Brands方案增加了一個顧客硬幣更新協議,這增加了用戶使用的不方便性。
雖然新方案比 Brands方案在計算效率上有所降低,但降低的并不多,完全可以用硬件技術的提升來抵消。新方案有效地解決了銀行存儲數據庫的瓶頸問題,更適合大規模的使用。
[1] BRANDS S.Untraceable Off-line Cash in Wallets with Observers[C].USA: Springer-Verlag,1994:302-318.
[2] CHEN Kai,WEI Shimin, XIAO Guozhen.A New Approach to The Divisible E-cash System[C].[s.n.]:Beijing,2000:271-274.
[3] 孟純煜,殷新春,宋春來.基于 XTR體制的電子現金支付方案[J].通信技術,2008,41(10):83-84.
[4] CHAUM D.Blind Signatures for Untraceable Payments[C]. New York:Springer-Verlag,1983:199-203.
[5] CHAUM D,FIAT A,NAOR M.Untraceable Electronic Cash[C].New York:Springer-Verlag,1990:319-327.
[6] SCHNORR C P.Efficient Signature Generation for Smart Cards[J].Journal of Cryptology,1991,4(03):161-174.