手机银行数字签名实现方案

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

手机银行数字签名实现方案中国工商银行股份有限公司山东省分行 李顺吉 张昆 刘伟

普通数字签名广泛应用于银行的各类系统中,例如网上银行客户可以用U盾对缴费信息进行数字签名,以确保信息的完整性、保密性、不可否认性。但是手机银行则不同,受硬件环境的约束更加严格:不够强大的CPU、较小的内存,电池功耗受限等特点使其运算能力较低,不同输入设备使用的U盾类硬件设备接口也无法统一。各大银行目前均没有实现支持所有型号手机的数字签名系统,而普通口令卡因为安全性有限从而限制了支付额度。笔者根据手机银行特点,在基于身份的数字签名的基础上,结合门限密钥共享思想,将身份签名体制中的私钥进行拆分,提出无需证书的新型手机银行数字签名方案,使得手机银行客户仅通过口令即可对信息进行数字签名。

一、签名方案背景知识及系统参数介绍

1.基于椭圆曲线的密码系统

首先介绍循环群这一数学概念:一个非空集合G在二元运算乘法下满足结合律(对任意属于G的元素a、b、c都有(a*b)*c=a*(b*c));存在单位元e(任意属于G的元素a都有e*a=a*e=a);任意属于G的元素a均有逆元(存在属于G的元素b,使a*b=e);G中的某个元素g通过与自身的*运算生成了G中的所有元素,g记为生成元,这样的代数系统记为循环群。例如:任取素数q,小于等于q的正整数构成循环群,1为单位元,循环群中任意非单位元x均可作为生成元,对1≤i≤q,xi(mod q)的值恰好就是循环群中的所有元素。

q为素数,方程y2=x3+ax+b(mod q)的所有整数解(x,y)记为椭圆曲线上的点。下面的小写字母全部代表整数,大写字母代表椭圆曲线上的点。对点P及整数m<q,存在另一点Q满足点乘运算为Q=mP,存在另一点R满足点加运算R=P +Q。椭圆曲线模素数的整数解在点加和点乘运算下均构成循环群,点加循环群记为G。简单地说,l为一小正整数,合适的q元素下,y2=x3+ax+b(mod ql)的部分整数解也形成循环群,其点乘循环群记为V,则存在映射e:G×G->V记为双线性映射。双线性映射满足:①双线性性: 对任意G上的P,Q,R有e(P,Q+R) =e(P,Q)*e(P,R),e(P+Q,R)=e(P,R)*e(Q,R),由此可知,对所有G上点P,Q和所有a,b≤q,满足e(aP,bQ)=e(P,Q)ab; ②非退化性: 存在G上点P,Q使得e(P,Q)不等于V的单位元;③可计算性: 对任意G上点P,Q,存在着高效算法来计算e(P,Q)。笔者可以用超奇异椭圆曲线上的weil对或者改造的Tate对构造双线性映射。当q >2160时,上述椭圆曲线系统满足下列密码学性质。

离散对数问题:给定G上点P,Q,找出整数n,使得Q=nP是困难的。

CDH问题:给定三元组(P,aP,bP),对整数a,b,找出abP。

DDH问题:给定四元组(P,aP,bP,cP),整数a,b,c, c=ab(mod q)是否成立。

GDH问题:这是一类CDH问题难解,但是DDH问题易解的问题。

GDH群:CDH难解,DDH易解的群。上述椭圆曲线上的点就是GDH群。

2.基于身份的数字签名方案

1984年,RSA创始人之一、以色列院士Shamir为简化电子邮件的证书管理提出了基于身份的密码体制,不使用证书,用户公钥就是用户的某个不可改变的标识,如电子邮件地址、手机号码等,私钥由管理中心通过用户公钥求出。由于公钥的选取范围大大缩小,使得根据公钥计算出的私钥范围相应减小,这一思想的有效方案在2001年后才相继提出,大都基于椭圆曲线,并采纳为国际标准,下面介绍一个具体的SOK数字签名方案,其签名方法简单,便于理解。

(1)系统初始化模块:设G和V分别是阶为q的椭圆曲线上的加法循环群和乘法循环群,e:G×G->V,P为G的随机生成元。定义Hash函数H:{0,1}->G,选[1..q]上随机数 作为系统主密钥,令Q=sP,系统公钥(G,V,q,e,P,Q,H)。 

(2)用户初始化模块:ID为经过管理中心确认的用户身份信息,管理中心计算 B=H(ID), A=s*B,用户私钥 A,用户公钥即为身份信息 ID。

(3)签名产生模块:消息m为二进制串,选 [1..q]上随机数r,令U=A+rH(m), W=rP(U,W)为签名信息。笔者记此模块为sign(A,r,m)。

(4) 签名验证模块:验证者收到m和签名(U,W),当且仅当该等式成立时接受签名:

e(P,U)=e(Q,H(ID))*e(W,H(m))。

数字签名的安全性证明可以采用归约的方法,笔者此前曾证明如果SOK方案能够被成功伪造,那么上述GDH问题也可以被成功破解,但是GDH问题已被证明难解的,那么可以得出SOK方案是安全的。显然,这一体制和上述算法可以有效地利用到手机银行中,使用客户的手机号作为公钥ID。但是,私钥的存储仍然需要硬件设备,下面笔者介绍门限密钥共享体制。

3.(t,n)门限密钥共享体制

设t,n为正整数且t≤n,(t,n)门限密钥共享体制是一种n个受托人共享一个主密钥s的方法。密钥管理中心设计算法产生n个子密钥并秘密分发给n个受托人管理,其中t个以上受托人可以根据自己的子密钥联合计算出主密钥s。目前大都使用多项式差值方法:(1)管理中心选取n个非零整数xi(1≤i≤n)分配给n个受托人,可以公开。(2)管理中心秘密选取t-1个不公开的整数a1,a2…at-1,令f(x)=s+a1*x1+…+at-1*x(t-1),计算yi=f(xi )其中(1≤i≤n),管理中心秘密将 yi分配给 pi。(3)t个受托人若恢复主密钥s,提供可信中心yis=f(xis ) (1≤j≤t),方程组∑ak xk y 有唯一解(s,a1,a2…at-1),因为f(x)的次数最多为t-1。可信中心通过方程组得到主密钥s。门限数字签名方法不需要计算出主密钥,仅需t个受托人提供各自签名信息即可。

笔者稍作改变,银行方为每位真实客户生成一个虚拟客户,同真实客户共享由真实客户公钥计算出的客户私钥,形成(2,2)门限数字签名体制。真实客户用自己设置的口令作为私钥,管理中心根据真实客户公钥和口令信息计算出虚拟客户私钥并秘密发送给银行,客户对信息做数字签名后,虚拟客户在银行可信中心进行二次签名。目前没有可行的基于身份的门限数字签名方法能够满足上述要求,因为这需要参与者的私钥是主动且是随机生成的。但笔者的方法是只有两个受托人的情况,可以将(2,2)门限数字签名体制退化到另外一种形式:仅需多项式 y1=f(x1 )=s+a1*x1, y2=f(x2 )=s+a1*x2,真实客户的口令信息是主动生成的,设为w=s+a1*x1。令x1=1,x2=-1,w=s+a1。以SOK签名为例,手机银行客户首先运行2.3 签名产生模块中的sign(s+a1 ,r,m),银行端虚拟客户然后运行2.3 签名产生模块中的 sign(s-a1 ,r,m),二次签名所产生的结果等同于运行2.3 签名产生模块中的sign(s,r,m)。根据循环群性质,椭圆曲线所构成群上固定二点的加减法仅能计算出唯一的值,客户手机号是确定的,银行方虚拟客户私钥是确定的,因此客户对自己的私钥所产生的签名不可否认。因为笔者简单的密钥分拆后所做的两次签名与原方案的签名是同构的,如果笔者的方案被攻击,则可以用相同的方法攻击原方案,所以t-1

K-0

is

is

相关文档
最新文档