基于椭圆曲线盲签名的电子现金系统设计

[摘要] 利用椭圆曲线签名算法,可获得比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以及导出变种形式移植到椭圆曲线上,在文献[4]中也给出了多种签名方案及盲签名方案。

设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}和交易日期时间存入数据库,并将此现金的数额存入商家的帐户。

0 次访问