2018基于椭圆曲线盲签名的电子现金系统设计
[摘要] 利用椭圆曲线盲签名算法,可获得比RSA算法更高的的安全性;银行与认证中心CA联合实现电子现金的匿名控制,必要时可对问题现金及非法使用者进行追踪,揭露其身份;方案在设计时同时考虑了SET协议的运作模式,更适合人们的消费习惯和电子商务发展的需要。[关键词] 电子现金 椭圆曲线 盲签名 匿名控制 安全性
一、引言
电子商务的发展离不开先进的支付手段,电子现金作为电子支付的关键技术,自80年代中期以来已取得了很大的研究成果。其安全性和可靠性主要依靠密码技术来实现,如零知识证明、盲数字签名等,早期的电子现金系统主要基于RSA、DLP公钥密码技术,如DigiCash公司的eCashTM ,NIST也于1991年将DSA算法作为数字签名的标准。1985年,N. Koblitz和V. Miller分别独立提出了椭圆曲线密码体制(ECC),利用有限域上椭圆曲线的点构成的群实现了离散对数密码算法,由于其具有计算量小,处理速度快、存储空间占用小、带宽要求低等优点,在电子现金应用领域得到广泛关注,SET协议的制定者已把它作为下一代SET协议中缺省的公钥密码算法。
考虑到SET协议将成为事实上电子商务支付的标准,我们认为电子现金应符合SET模式。由于在SET中只涉及四个对象:用户U、银行Bank、商家Shop和认证中心CA,所以电子现金应该是在线、支持认证中心(CA)并由CA实现匿名性的控制,本文将利用基于椭圆曲线盲签名,设计一安全、实用、匿名可控的电子现金系统。
一、椭圆曲线盲签名算法(ECDSA)
椭圆曲线数字签名一般是将基于离散对数的签名体制如Schnoor、EIGamal、DSA以及导出变种形式移植到椭圆曲线上,在文献中也给出了多种签名方案及盲签名方案。
设p是一个大素数,a,b∈GF(p), 满足4a3+27b2≠0。椭圆曲线E(a,b)(GF(p))可定义为点集(x,y)∈GF(p)*GF(p),满足y2=x3+ax+b,我们定义一个零元,用O表示,这样,这些点构成了一个阿贝尔群。G是E(a,b)(GF(p))中的一个阶为q的元素。d ∈RZn*,是签名私钥,Q=dG是签名验证公钥。Rx(A)表示点A的x坐标值,H是一个单向HASH函数,H:{0,1}*→{0,1}k,我们用来表示两个串的连接。系统的参数为{p,a,b,G,q, Q,d,H}。
椭圆曲线的Schnoor(ECDSA)盲签名体制可描述如下:
发送方随机选择一个整数k∈RZn*,计算kG;
接收方随机选择γ,δ∈RZn*,计算:A=kG+γG+δQ,t= Rx(A)modn,c=H(mt),c’=c-δ,将c’送出。
发送方计算:s’=k-c’d。
接收方计算:s=s’+γ。
由于γ,δ是随机选择的,所以签名者不会知道签名的内容,盲签名的形式为(c,s)。从上过程可看出,kG可预先计算,当c’到来时,仅需一次乘法和一次加法运算就可完成签名,因此计算量小、运算速度快,签名结果也较短,比较适合电子现金系统使用。
二、电子现金系统方案设计
对于CA认证中心,需要使用系统参数建立ECDSA的数字签名。随机选择xca∈GF(q)*作为自己的私钥,然后计算pca=xcaG,将pca作为自己的公开密钥。同样,银行、用户的私钥分别为xb、xu,公钥分别为pb、pu。将pca、pb、pu公开。
1.注册(Registration)
用户提交自己的信息,由CA使用ECDSA进行签名,用于向用户提供包含其身份信息的电子执照。 在取款时必须出示该签名。设ID为用户标识信息,包含姓名、身份证号等。注册过程即用户向认证中心提供个人可信信息,存案备查。即I= ECDSA(xcaH(ID)) ,此时,I 相当于一个简单的数字证书。
2.取款协议(Withdrawal Protocol)
电子现金的核心协议,用户从自己的银行账户上提取电子现金。为了保证用户匿名的前提下获得带有银行签名的合法电子现金,用户将与银行交互执行盲签名协议,同时银行必须确信电子现金上包含必要的用户身份。
设m为用户的取款信息,是个五元组{数量,面值,账号,时间,CA的签名I}。取款信息中的I ,向银行表明自己是一个合法的用户,银行利用CA的公开密钥pca来验证,这就保证了取款时用户必须提供自己的正确信息,从而在构造电子现金时嵌入这些信息,而银行又不知道信息的具体内容,用户的隐私也得到了保护。其后的工作是使用ECDSA盲签名来完成取款过程。描述如下:
(1)用户:任选 z∈RZq*,计算T=ECDSA(xu(m)),,C=zG,c= Rx(C) ∥Ry(C),将(m,T)送银行。
(2)银行:用pb验证签名,Verify(pu(T));任选 k∈RZq*,计算Φ=kG, S=ECDSA(xb(Φ))
(3)用户:收到(Φ,S)后,验证,Verify(pb(Φ));θ,δ∈RZq*,计算A=Φ+θG+δpb,h=Rx(A)≠0mod q,e=H(c∥h),e'=e-δ;将e'送出;
(4)银行:计算s’=k-e’xb;
(5)用户:计算s=s’+θ;验证e=H(c∥(Rx(epb+sG) mod q));验证推导过程略。上式如果成立,(e,s)即为盲签名结果。
此时,银行就可以记录下(I,Φ,(m,T))存入自己的数据库,同时从用户的账户上减去相应的取款数。
由上,得出电子现金的结构:Coin={c,e,s,I}
3.存款协议
存款的过程比较简单,经过一段交易周期后,商家将收到的电子现金到银行处进行存储。商家将在支付中得到的电子现金Coin={c,e,s,I}和自己的账号传递给银行,银行首先对电子现金进行有效期检查,确认是否有效,然后使用核验自己和认证中心的签名{e,s},若无误,则开始搜索电子现金数据库,如搜索失败,表明此电子现金是第一次使用,银行将此{c,e,s,I}和交易日期时间存入数据库,并将此现金的数额存入商家的帐户。
页:
[1]