基于PBOC智能卡的匿名可分电子货币协议
文章出处:http://www.nexussmartsolutions.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卡应用现有规范的不足,为用户提供更丰富更安全的选择。
(文>上海交通大学计算机科学与技术系, 张向军,陈克非)