基于PBOC智能卡的匿名可分電子貨幣協議
文章出處:http://5052h112.com 作者:張向軍 ,陳克非 人氣: 發表時間:2011年09月30日
0 引言
隨著全球化的EMV[ 1 ]遷移工作的深入展開,具有高安全性和復雜數據處理能力的IC卡作為新支付應用的載體開始進入用戶視野, IC卡具有的高物理安全性在一定程度上改進了原磁卡技術存在的缺陷。但因為標準的PBOC規范定義的電子錢包機制采用對稱密鑰機制,決定了IC卡支付依賴于專用金融機具和銀行網絡,不能支持P2P交易和離線交易,且匿名性完全無法保證。而基于密碼學的電子貨幣協議雖然在P2P交易、匿名性保護和離線交易方面有先天優勢,但也存在貨幣找零協議、匿名控制協議設計復雜的問題,功能越完備的協議效率越低。
PBOC規范中給出了卡片規范和標準金融應用規范的定義,并允許在卡片定義基礎上開發新的應用,所以可以在卡片規范基礎上調整應用規范以建立符合要求的新IC卡支付協議。本文在符合PBOC2. 0[ 2 ]規范的防篡改智能卡(后面部分簡稱IC卡)中借用電子錢包應用,提出了一種以IC卡為載體的匿名可分電子貨幣支付方案。在滿足安全機構對用戶的必要監控前提下,實現了為IC卡提供匿名離線支付能力、貨幣可分機制和匿名性撤銷機制,可以滿足P2P、離線交易等新應用的需要,而且要保證協議在支付過程具有較高效率。同時,協議還提供了必要的公平性維護機制,保證了協議的功能完整性和實用性。
1 協議實現方式
基于PBOC2. 0規范的IC卡具有計算能力較強,防篡改能力高的特點,其固化的片內操作系統(COS)具有極強的安全管理策略,可以制止非法交易和不安全操作的執行。目前產品化的IC卡已經可以支持公鑰加解密等各種加密算法,如中興32位Zi1221智能卡芯片的協處理器每秒可以完成1 024位RSA加密運算23次,或192位ECC簽名18次,或3DES加密3. 5Mb,而華大16位CIU96S128UFB芯片由于使用專用的RSA 協處理器,其1 024位RSA加密速度達168次/秒。但是考慮到大量處理能力較弱的低端IC卡的存在以及同支付系統互聯和數據傳輸的瓶頸問題,需要盡量降低支付過程的協議復雜度,通過離線方式完成交易。因此協議實現的關鍵就是高效率實現匿名性控制和電子貨幣的分割。
本文利用金融IC卡的特有物理安全屬性,通過改進文獻[ 3 ]的協議來實現匿名性控制機制, 并使系統的效率保持常數級別O (C) , 保留基于被動第三方信任( Trusted Third Party,TTP)的匿名性撤銷機制。協議引入覆蓋貨幣全生命周期的管理機制確保匿名性的完整,結合PBOC規范的電子錢包機制實現基于IC卡物理性能信任的公平性維護機制。匿名電子貨幣可分性的效率一直是一個阻礙匿名可分電子貨幣實用化的問題,第一個可分貨幣系統效率極為低下,文獻[ 5 - 6 ]對它進行了改進,改進后的系統運行效率為O ( ln N ) , N 表示貨幣的分割精度, 此后更多的改進系統被提出。文獻[ 7 ]提出的系統提高了文獻[ 6 ]中系統的效率。文獻[ 8 ]提出的系統通過零知識證明保證了貨幣的每次支付都是不能被相互關聯的, 但是它的運行效率降到了O ( ( lnN ) 2 ) , 在文獻[ 9 ~ 11 ]中,貨幣提取子協議的效率被提高,但是它依然運行在O ( ln N ) 。上述所有算法都基于二叉樹表示法,它們都遵循節電路徑規則和同節點規則。這種模型限制了系統效率的進一步提高,也限制了一個貨幣的最大幣值。近階段出現一些基于半盲簽名零知識證明的匿名可分電子貨幣機制使貨幣分割代價降到了常量級,但是前者沒有提供對匿名性的管理,無法對可疑交易進行跟蹤,也不便于貨幣掛失管理,不符合金融領域的使用慣例;后者的協議對于用戶方(即IC卡)來說在支付過程中計算成本過高,不利于在IC卡平臺上的使用,在強調公平性的同時忽視了對用戶隱私的保護,還存在匿名性泄漏的可能。
采用半盲簽名的貨幣分割的原理是將幣值和必要信息放入簽名的非盲部分,然后由收單行管理此匿名貨幣的余額,具有常數級代價。但是必須看到,一個半盲簽名的簽署和驗證計算的通信代價依然較高,而且對于不同電子貨幣協議無法做到普遍兼容。其原因在于這些設計方案中要求加入的信息必須是由用戶提供的數值,由發幣行簽名前必須證明其數據的有效性,并保證去盲化后保持可驗證,這往往要求在銀行簽名前進行零知識證明,增加了協議實現的難度。為了解決這一問題,文獻[ 14 ]雖然未能完整地提出可撤銷匿名性的可分貨幣的協議,但是詳細分析了可以直接明文添加到簽名中的信息,證明了隨機選擇的數據泄露用戶的匿名身份的問題,提出并論證了受限公共信息RCD的概念。由于RCD信息非隨機選擇并被所有用戶共用,可以當作公開信息使用,因此可以不作盲化處理(由用戶或銀行)直接添加到銀行簽名(包括使用不同的簽名密鑰來映射) ,可以大大簡化以往由半盲簽名實現的協議。以此為出發點,本文建立了一個具有較高可用性的匿名可分電子貨幣支付系統,較好地彌補了原有金融IC卡應用中存在的不足。
1. 1 新的可分貨幣模型
采用同PBOC規范中電子錢包應用類似的方法,在貨幣提取協議中由IC卡的防篡改單元維護一個貨幣余額的實時值并由發幣行數據庫維護一個非實時值,根據交易額進行減值。當發現超額消費后則在事后通過匿名性撤銷機制來揭示非法用戶的身份并進行追查,關于匿名性控制的協議設計可以參考文獻[ 3, 15~17 ]。基于事后處理的可分貨幣協議如圖1所示。
圖1 基于事后處理的可分貨幣協議
此協議按照如下步驟工作:
1)用戶同TTP申請一個憑證,這個憑證是今后用來作為匿名控制的參數,在有些協議中,此步驟不需要TTP的參與。
2)用戶用此憑據向銀行提取一個有效的電子貨幣,銀行在簽名過程中注入了不可修改的可見貨幣信息,幣值可以在銀行規定的選項中任意選取。銀行建立一個此貨幣的賬戶。由于采用了盲簽名算法,銀行無法知道此貨幣的所有者信息。
3)在支付過程中,用戶出示貨幣和使用資格證明,并在其中載入交易信息(如交易金額、商品類型、商家ID等) ,商家驗證支付信息的有效性,進而完成交易。此處用戶通過特殊算法來證明自己是貨幣的合法使用者,其他人不能冒充,交易的安全策略由IC卡的固化COS來管理,此部分策略同PBOC2. 0規范電子錢包[ 2 ]應用一致,此處不再重復。
4)在入賬階段,商家向銀行出示交易信息,銀行檢驗此信息的有效性,在相應的貨幣賬戶中減除相應的金額。
5)當銀行發現一個貨幣花費超過其余額的金額時或可能進行非法交易時,銀行或相關部門向TTP出示其同貨幣綁定的證明。TTP利用此證明中的數據撤銷此貨幣的匿名性,找出非法用戶。
6)在一個貨幣進行若干次正常消費使用殆盡時,還需要執行專門的回款協議,這可以保證各個貨幣之間不存在關聯。主協議部分(上述1、2、3步)采用Frankel提出的可控匿名性電子貨幣協議[ 3 ] ,因為它具有除了可分性和公平性以外的所有必要性能,而且具有較高的支付效率和協議擴展性。
此協議本質上是基于Schnorr的零知識證明算法實現的,分為3個部分:
1) 在開戶協議中由用戶U向銀行B 證明個人身份標志和TTP密鑰間的有效關聯;
2) 在提款協議中由銀行B向用戶U證明銀行提供的簽名有效;
3) 在支付協議中由用戶U向賣方S 證明其貨幣的有效
性。
上述步驟都是基于Schnorr零知識證明算法實現的,其中步驟3作了一定調整,以獲得對重復花費的追查,這里需要對步驟2和步驟3做必要的改進,加入受限公共信息RCD以實現設計目標,下面分別對各部分的具體實現進行詳述。
2 協議描述
2. 1 系統建立
在我們的系統中,建立步驟同文獻[ 3 ]相似。銀行選擇兩個大素數p和q,此處p - 1 = rq, R是一個相對小的整數。Gq是以q為階的Z
3p 的乘法子群, g, g1 , g2是Gp 的生成元, XB ∈R
Zq 是銀行的密鑰。H0 , H1是random oracle型的hash函數。銀行公布p, g, g1 , g2 , (H0 , H1 ) 和它的公鑰h = gXB , h1 =gXB1 , h2 = gXB2 。TTP也公布它的公鑰f1 = g1 xT。此處xT是TTP的私鑰(更詳細定義請參考文獻[ 3 ] ) 。
2. 2 賬戶建立階段
用戶向銀行證明其知道s的值, 且知道如何通過f2 表示A2 ′,然后用戶向銀行證明其知道如何用g2 來表示A1 以及兩個表達式使用相同的冪值s, 銀行記錄必要的用戶的信息和A’2 作為進行賬戶控制的信息, s可以看作是用戶的私鑰。賬戶建立階段的協議實現如下。
2. 3 提款協議
銀行使用類似的算法將自己的密鑰加入給出貨幣的簽名,將s綁定在貨幣中,這是撤銷匿名性時的依據。然后用戶和銀行利用A2 ′來產生貨幣。如果協議執行正確,用戶將得到形式為coin = (S, A, z, a, b, T, r) 的貨幣。在這里T 是用戶(銀行) 添加的受限公共信息RCD, 需要符合文獻[ 14 ] 中的規定。它具有T = (有效期,幣值, 銀行ID) 的形式(也可以根據實際應用添加其他公共信息) 。由于取消了重復花費的控制,所以不再需要原協議中對B進行盲簽名的信息,只要保留原簽名協議中能夠證明用戶支付過程中提交的A1 確實是gs1 的形式就可以了。需要強調的是, 我們不建議使用同一個賬戶提取過多的貨幣,因為這會在多個貨幣間產生關聯,增加泄漏用戶身份的概率。提款協議具體實現如下。
此部分協議的執行可以遵循PBOC規范中圈存交易的Initialize for Load和Debit for Load流程來實現,僅需要在新應用中調整加密數據域的長度以適應從對稱密鑰系統向公鑰系統轉換的差異。由于篇幅所限,規范所涉及的交易流程請參考文獻[ 2 ]中相應部分。
2. 4 支付協議:
為了保證支付的效率, 支付過程只由用戶和商家參與執行。因為s為用戶的私鑰, 只有用戶能夠使用此貨幣。商家檢查貨幣的簽名,貨幣的有效期T, 以及對交易的應答d。在支付階段,商家記錄A1 , A2 , r1 , inf trade和coin = (S, A, z, a, b,T, r) 。V t是交易金額,只能夠由用戶來加入, inf trade 是此次交易信息,它包括商家ID、交易時間、交易數額、商品描述等,用戶和商家在交易過程中都認同這些信息。協議的執行步驟如下。
第三步中原協議使用了用戶私鑰u1 來實現對重復花費的追蹤。但是我們的可分性是通過對同一個貨幣多次使用來實現的,所以這里我們修改原協議取消這一機制。
同樣,此部分協議的執行可以遵循PBOC規范中消費交易的Initialize for Purchase和Debit for Purchase流程來實現,僅需要在新應用中調整加密數據域的長度以適應從對稱密鑰系統向公鑰系統轉換的差異。
2. 5 入賬協議
在此模型中,電子貨幣就像一個錢夾,在用戶使用完貨幣之中的所有幣值之前,用戶可以開始任意新交易。銀行可以檢查貨幣是否已空,商家則要把交易信息提交給銀行來判斷交易是否可以成立。同時,銀行利用PBOC規范中關于交易記錄管理機制保留一個貨幣所進行過的所有交易記錄,直到此貨幣失效或使用完其余額。
2. 6 回款協議
當貨幣中的余額太少不足以支付一次交易時,或者當貨幣的使用期已到時,就需要重新生成一個貨幣來取回其中的余額。考慮到以上兩種情況,此處采用的回款協議也分兩種:1)如果貨幣將要用完余額,用戶要重新將這些余額存入賬戶。為了保證用戶的匿名,用戶不能直接將貨幣余額直接保存到自己的實名賬戶。他需要用這個貨幣的余額來換取一個臨時貨幣,這個臨時貨幣由無條件匿名協議來產生,只能用來回款而不能用來支付。如果貨幣余額足夠小,比如小于100分,而同一時期內的回款貨幣數量很大時,銀行將無法得到貨幣和用戶實名賬戶的聯系[ 14 ]。
2)如果貨幣到了使用有效期限,貨幣余額還較大,使用上面的換款協議將可能暴露用戶的身份。因為用戶數量可能不足以掩蓋如此特殊的回款幣值。所以,用戶需要重新生成此貨幣,依舊是重新運行一次提款協議,唯一的不同是此時用戶不需要提供自己的賬戶信息, 而將A1 ′同新生成的貨幣綁定。新貨幣的幣值為舊貨幣的余額,這樣用戶在得到新貨幣時還能夠保持自身的匿名性。當進行匿名性撤銷活動時,銀行需要通過舊的A1 ′來找到用戶的真實身份。
當然,我們可以簡單地使用多個不足額的電子貨幣組合進行支付,可以避免入賬的麻煩,但是這也將一系列電子貨幣的所有者進行了隱性關聯,不利于匿名性的保護,本文不建議采用。
2. 7 使用中的一些注意事項
1)在要求較高匿名性的支付協議中,當貨幣值使用殆盡時,需要進行前面提到的專門操作進行貨幣回款。
2)由于本文提出的匿名電子貨幣不建議使用金額再注入問題,所以對于匿名電子貨幣支付應用來說,不存在圈存操作。另外,對于匿名支付操作來說,還必須禁止任何參與方查詢智能卡的相關身份信息,以保護匿名性不受破壞。這同以往的使用信用卡/借記卡進行消費的活動是不同的,必須通過專門的COS安全機制無條件保證。由于卡內應用可以通過密碼進行隔離,所以也可以對匿名賬戶設定單獨密碼來防止讀取。
3)由于開戶過程計算量較大,我們建議使用讀卡器和輔助電子錢包系統來進行開戶計算,通過建立安全通道連接銀行服務器,執行上述流程得到賬戶信息后,再將獲得的數據寫入IC卡。
4)在目前階段,由于PBOC2. 0規范沒有專門支持電子貨幣的應用,所以我們需要通過規范中電子錢包應用的GETDATA / PUT DATA指令集進行擴展,來打包數據及指令,同時通過設定P1、P2來表示所傳輸數據的新的類型,并以此為依據開發新的指令響應在COS系統中進行相關處理,這樣我們就可以在原電子錢包規范中加入支持新協議的開戶、提取貨幣以及回款等應用。實現此協議包括應用的調整和COS的調整,還要對收單系統進行改進,本文集中于協議的設計,對具體實現不做進一步描述。
2. 8 追蹤機制
此模型提供文獻[ 3 ]中協議提到的兩種追蹤機制。所有者追蹤: 如果產生了非法交易,執法部門可以要求銀行進行所有者追蹤。銀行向TTP發送一個執法部門的授權和相應的支付信息,然后TTP計算:
再把它返回給銀行。此時銀行以此為依據,在有效貨幣列表中查找用戶的真實身份。
貨幣追蹤: 當一個用戶被懷疑進行了違法交易或發生了綁票案件時,執法部門可以要求銀行進行貨幣追蹤。銀行向TTP提供授權和用戶身份證明, TTP計算:
通過以上數據,銀行可以標注出以該用戶名義申請的貨幣。對于非法交易,可以搜索相應的貨幣的交易記錄,進而找出其購買的商品是否合法。對于綁票案件,可以標記該貨幣為非法,從而在犯罪分子使用此貨幣時進行跟蹤抓捕。
2. 9 公平交易
這里借用電子錢包應用中的交易記錄機制, 在記錄中加入交易信息inftrade , 就能夠利用IC卡保存記錄的公正不可篡改性來實現簡單實用的公平性判定機制。此交易信息可以根據不同收單系統的慣例而調整,但須保留必要的信息以進行公平性鑒別,這部分的信息選擇可以參照PBOC2. 0電子錢包和電子存折規范,此處不再詳述。
3 性能分析
3. 1 運行效率
以防篡改金融IC卡的電子錢包應用為基礎平臺,采用以上協議,可以實現常數代價的可分匿名電子貨幣支付系統。用戶可以執行一次取款協議,取得與待兌現貨幣錢數相等的貨幣,同二叉樹表示方法的協議相比, 效率從lg n提高到常數C。
在提款協議中,同改進前的協議相比我們的協議由于取消了對重復花費的檢測,比原協議計算量降低近一半。在支付過程中,用戶只需進行固定的兩次指數運算, 而商家可以不必進行r2 的驗證, 計算量降低約25%。另外,從3. 4節支付協議中可以看到, 如果利用讀卡設備幫助進行預計算Ap和B,那么每次支付的計算只有一次加法運算和一個乘法運算。
3. 2 安全性證明
結論1 用戶無法修改受限公共信息T來偽造貨幣。證明 用戶想偽造貨幣就必須要得到一組合法的T和T′,使得:
由于哈希函數是防碰撞的,所以用戶不能通過第一個途徑偽造貨幣。如果用戶能夠得到式(2) , 則利用已知的c′, T,r′, r″,用戶可以構建一個算法,破解形如r = cx + w mod q的簽名,而以目前的技術而言是不可能實現的。所以, 用戶無法偽造貨幣,結論成立。
結論2 一個正確執行的流程能夠提供可撤銷的匿名性,即用戶破壞匿名性跟蹤和銀行或商戶非法揭示用戶身份的可能性可以忽略。
證明 如果沒有可信第三方TTP的配合, 非授權恢復用戶U的ID的唯一方法是解離散對數問題。可以認為,任何參與方都不能和TTP合謀破壞用戶匿名性。
另一方面,在取款階段, 用戶U 可能試圖改變在A, b, z中的s值,但用戶計算出一個有效的b的概率為
也就是說, 對s做的任何改變都會在貨幣驗證時被發現。用戶無法向TTP提供偽造的ID。
這樣,在保證匿名性控制信息只能保存在TTP處后,在需要時, TTP可以進行如下操作:
通過式(1)和(2) , TTP可以給出相應A和A ′的聯系, 供銀行找出有問題的交易者或交易內容。此部分的協議證明詳見文獻[ 3 ]。
我們認為,當可信第三方TTP 保密時,匿名性的有效撤銷管理是可以得到保證的。結論成立。
結論3 如果不知道w和XB , 不存在偽造一個合法貨幣的可能性。
證明 商家M 和其他參與者偽造一個貨幣的成功概率為:
由此可知, M 也不能偽造貨幣。因為M 所擁有的有關B的知識不會比用戶U多,唯一可能偽造出用戶U 的貨幣的方法就是從該用戶的公鑰計算出其私鑰, 這等于破解離散對數問題。
結論4 如果正確執行贖回協議,且沒有可信第三方TTP的協作, 銀行B 不能跟蹤用戶U的ID。
證明 因為TTP的私鑰在任何條件下都是保密的,除了TTP以外沒有人能把支付信息和用戶的賬戶鏈接起來。在贖回階段,通過新生成的臨時貨幣,用戶可以執行一次取款協議,取得與待兌現貨幣錢數相等的貨幣。
在文獻[ 14 ]中我們得出, 當n 》m,且p ij, p k j不可忽略時( c的值域有限時) :
也就是說銀行發現用戶身份信息的幾率趨向于零,不能從眾多的相似用戶群中跟蹤某一個銀行感興趣的用戶的交易活動,保證了用戶的隱私權。
由于商戶能夠獲得的信息知識是銀行能獲得的信息的子集,所以商戶也不能得到用戶的私人信息。
結論5 引入的受限公共信息RCD能夠保證有效信息的安全引入。
證明 在文獻[ 14 ]中分析了RCD限制貨幣列表增長問題的可行性, 由于我們給出的T值是在一組有限的數值中選擇的, 添加過程中不必再進行零知識證明。利用結論1的證明,由于發幣行在簽名中加入了此數值,用戶無法偽造。因此RCD的引入具有足夠的安全性并保證貨幣的匿名性,結論成立。
結論6 此協議的實現方式符合金融行業的應用規定。證明 金融行業對金融IC卡應用的安全性和使用規則制定了詳盡的規范限制[ 2, 18 - 19 ]。這里我們需要加密算法不低于128 bits的3DES加密強度,以使其能夠符合PBOC規范的要求。
協議參照電子錢包應用流程,使用同樣的IC卡硬件平臺,可以方便地移植。軟件實現采用公鑰算法和簽名認證協議,前面已經證明協議流程的安全性,可以認為此協議的安全性是符合金融行業的要求的。
3. 3 其他性能
防止超額花費: 方案阻止超額花費的責任在于可信第三方TTP和銀行,銀行的任務是找出是否有貨幣已經被超額花費,銀行維護有每一個貨幣剩余值的計數。當發現一個貨幣的使用記錄之和已經超過了它本身的數量,則是超額花費,這時可信第三方TTP的責任就是撤銷貨幣所有者的匿名性,不誠實的用戶會受到懲罰。我們的系統采用防篡改硬件,可以提供給予硬件的事前預防機制。
阻止完美犯罪: 完美犯罪是因為電子貨幣系統的無條件匿名性引起的。在我們的方案中,匿名性是可以撤銷的,所以如果出現勒索或者非法交易,通過撤銷匿名性可以幫助相關機構追查違法者。
離線交易和網絡交易:由于協議中使用公鑰算法,不必依賴專用的支付設備(ATM,金融POS終端, PSAM卡等)就可以進行支付,交易的安全性不依賴于交易設備的安全性,可以方便地實現離線交易和網絡交易。
兼容性:協議是利用PBOC規范中給出的IC卡操作指令集擴展的,可以在任何支持PBOC規范的IC卡上移植,具有良好的兼容性。
由上述證明可以得知,本文提出的協議具有足夠的安全性、效率和實用性,能夠保證支付的安全可靠執行。
4 結語
本文通過在Frankel的基于TTP的匿名性控制電子貨幣協議,在文獻[ 14 ]中協議的基礎上引入了可重復花費的性能。改進后的協議利用金融IC卡防篡改平臺實現了一個匿名性可控的可分電子貨幣支付協議,具有比同類協議更高的效率,在支付過程中通過預計算可以將計算量降低到一次模乘及一次模加,非常適于在IC卡平臺上的應用。同時,通過受限盲簽名RCD的直接引入,可以保證協議在不降低的安全性的前提下大大減少了提款過程的計算量,可以有效消除發幣行的系統瓶頸。協議是在PBOC電子錢包應用基礎上修改的,通過滿足必要的密鑰實用規則,可以保證協議既滿足計算安全要求也滿足金融行業的安全規定,可以在PBOC規范的開放性構架中作為拓展應用而得到應用,具有較好的實用性和可行性。
協議主要用于中小額離線支付應用,支持離線交易和網絡交易。可以有效填補金融IC卡應用現有規范的不足,為用戶提供更豐富更安全的選擇。
(文>上海交通大學計算機科學與技術系, 張向軍,陳克非)