手机银行数字签名实现方案
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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
具有保密性和完整性。
二、系统构架详解
1. 手机银行客户初始化系统的基本功能
手机银行客户初始化系统的基本功能包括:客户信息初始化、虚拟客户私钥生成和银行端虚拟客户私钥存储。
管理系统初始化模块:生成密钥管理中心的主公/私钥及其他相关信息。
虚拟客户私钥生成模块:密钥管理中心接收客户注册信息,根据客户提供的口令私钥和手机号公钥信息生成虚拟客户私钥并发送给为客户服务的银行。
银行端虚拟客户私钥存储模块:银行接收到虚拟客户私钥信息,进行存储。
这里,客户初次注册和修改注册运行过程相同。
(具体流程见图1、图2)
2. 手机银行客户数字签名系统的基本功能
手机银行客户初始化系统的基本功能包括:客户数字签名、虚拟客户二次数字签名和数字签名验证。
客户数字签名模块:客户录入口令私钥信息,手机银行进行数字签名。
虚拟客户二次数字签名模块:客户数字签名及手机号等信息发送到银行,银行计算中心找出对应的虚拟客户私钥,进行二次数字签名。
签名验证模块:银行计算中心用客户手机号、即公钥对最终数字签名做验证。
三 、系统流程及功能
1.密钥管理中心系统初始化功能
设G和V分别是阶为q的椭圆曲线上的加法循环群和乘法循环群,P为G的随机生成元。
定义Hash函数H:{0,1}-〉G,选[1…q]上的随机数 作为密钥管理中心系统主密钥,令Q=sP,系统公钥(G,V,q,e,P,Q,H)。
2. 手机银行客户初始化流程及功能
具体流程设计如图3所示。
(1)提供注册信息:用户将手机号及其它固定信息经银行确认后作为身份ID。
客户在不少于2~160范围(如11个中文字符,一个中文字符可以确定15位二进制
代码)中随机选择口令,范围可以是键盘字符或中文字符,客户通过安全信道(网上银行等)将身份和口令信息发送到密钥管理中心。
密钥管理中心
管理系统初始化模块
虚拟客户私钥生成模块
手机银行客户
提供注册信息
接收注册回执
银行计算中心
银行安全自助渠道
虚拟客户私钥存储模块
图1 手机银行客户初始化系统的架构
图2 手机银行客户数字签名系统的架构
手机银行客户
客户签名模块
无线通信渠道
银行计算中心
二次数字签名模块
数字签名验证模块
接收回执信息
业务处理
手机银行客户
银 行
密钥管理中心
提供注册信息
接收回执信息
银行安全渠道虚拟私钥保存
生成回执信息
系统总初始化
虚拟私钥生成
图3 手机银行客户初始化处理流程相关功能
(2)虚拟客户私钥生成模块功能:管理中心接收到客户注册信息后,将客户口令信息转换为160位客户私钥w,计算B=H(ID),A=sB,C=A-wP。
管理中心通过安全信道将C发送给银行。
(3) 虚拟客户私钥保存模块功能:银行为真实客户建立一个虚拟客户,将C等必要的虚拟客户信息记录在安全数据库中。
(4) 回执模块:银行将注册结果信息通过安全信道返回给手机银行客户,具体流程见图4。
曲线,椭圆曲线密码体制私钥短,仅需160位就能达到1024位RSA相同的安全强度,大大降低了计算量,特别适用于CPU不够强大、内存较小、电池功耗受限的无线便携设备。
在安全性上,从方案可以看出,客户私钥、签名的结构与SOK方案是相同的,若攻击者从客户方伪造成功,那么他可以使用相同的方法伪造SOK签名方案,确保了签名信息的保密性。
根据签名和验证算法,消息m在传输过程中若有改动,验证中H(M||ID)也会相应变化,无法通过验证算法,从而确保信息完整。
客户的公钥仅能唯一地计算出椭圆曲线上的一个点作为客户主私钥,根据循环群的性质,椭圆曲线上仅有唯一的点等于两个点之差,即wP=A-C,真实客户私钥仅有唯一的虚拟客户私钥与之对应,银行端对虚拟客户私钥做一下记录,客户便不能否认自己所做过的签名。
方案的信息传输均通过网上银行等安全信
道执行,具有较高安全性。
在应用上,基于身份的密码体制(IBC)的国际标准化进程也在进行中,2007年12月,IETF发布了RFC5091,给出了IBC标准,描述了若干算法的实现;2009年1月IETF发布了RFC5408,给出了IBC体系结构和数据结构的支持。
基于身份的签名、加密方案已有许多。
由Boneh等人设计的IBC已在Debian下实现,shamus Software开发了一个开源的密码库叫MIRALC。
爱尔兰National University计算机安全与密码研究组也提供了开源的Java版本IBC系统实现。
但这些方案将口令作为私钥,需要通过适当的方法进行口令保护。
口令私钥与随机私钥不同,可能会和客户的某些个人信息相联系,从而使攻击者缩小目标范围,各类攻击的成功率也将增大。
口令私钥与普通CA中私钥不同,保护难度加大。
所以,必须定期提示客户修改口令或缴费验证信息,进一步提高安全性。
同时,如何缩短160位口令长度又不影响椭圆曲线密码体制的安全性也是今后研究的问题之一。
图4 手机银行客户数字签名处理流程及相关功能
客户数字签名
无线通信渠道
接收回执信息
无线通信渠道
业务处理
接收回执信息
二次数字签名银 行无线通讯渠道手机银行客户3. 手机银行客户数字签名流程及功能
(1)客户数字签名模块功能:用户录入口令密钥w对信息m签名,手机银行控件执行运算:选[1…q]上随机数 r,计算U=wP+rH(m||ID),W=rP,(U,W)作为对消息m的签名信息。
用户通过无线通信渠道将签名和消息m发送给银行。
(2) 银行端虚拟客户二次数字签名模块功能:银行端接收到手机银行客户签名,银行计算中心从数据库中提取对应虚拟客户信息并计算X=U+C。
(3) 签名验证模块功能:
银行检验 e(P,X)=e(Q,H(ID))*e(W,H(m||ID)),等式成立时接受签名。
(4) 业务处理及回执模块:验证通过证明消息m可信,接收m进行相关业务处理并发送客户回执。
四、新方案的优点及设计总结
在效率上,上述方案最大的优点之一就是基于椭圆
FCC。