基于PBOC智能卡的匿名可分电子货币协议 - 中国一卡通网
用户名密码 [免费注册] [找回密码] 推广技巧 发布求购 建商铺  发产品  会员体制比较  
 

基于PBOC智能卡的匿名可分电子货币协议

来源:中国一卡通网  作者:张向军 ,陈克非  发布时间:2009-12-01 10:19:30  字体:[ ]

关键字:匿名性  可分电子货币  离线交易  PBOC2.  0  智能卡  

摘   要:利用PBOC2. 0金融IC卡的物理安全特性,提出了一个改良的匿名可分电子货币协议,以支持离线支付应用。该协议同其他基于半盲签名或基于知识证明的树状节点的可分电子货币协议相比,具有更高的效率。协议中还给出了完整的货币购买、使用、挂失、退还管理机制,以消除多个货币间的关联,最大限度地保证合法用户的隐私。最后,从密码学安全角度和金融安全规范两个角度分析了协议的安全性,保证协议在金融IC卡上移植的可行性和兼容性。此协议适用于网络交易、离线交易和P2P交易,其设计目的是作为PBOC IC卡应用的有益补充。

    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 ′来找到用户的真实身份。

    当然,我们可以简单地使用多个不足额的电子货币组合进行支付,可以避免入账的麻烦,但是这也将一系列电子货币的所有者进行了隐性关联,不利于匿名性的保护,本文不建议采用。 

更多

新闻投稿合作邮箱:yktchina-admin@163.com    字体[ ] [收藏] [进入论坛]

推荐文章

论坛热帖