改进的基于双线性对与随机数的匿名认证方案
2016-02-05曾凡俊
◆曾凡俊
(广东省广播电视节目监听监看中心 广东 510066)
改进的基于双线性对与随机数的匿名认证方案
◆曾凡俊
(广东省广播电视节目监听监看中心 广东 510066)
针对一个基于智能卡口令认证方案进行了安全性分析,指出方案不能抵抗Reflection攻击、智能卡丢失攻击。同时不能对用户身份进行有效保护,除此之外,口令更改阶段存在设计缺陷,登录阶段也不能及时检测口令输入错误。在此基础上,本文给出一个改进的基于双线性对、随机数、哈希函数的身份认证方案。利用双线性构造用户临时身份,采用Nonce代替时间戳,基于离散对数计算困难性和哈希函数的不可逆性实现双向认证。经分析表明:改进方案弥补了原方案的安全缺陷,保持较高的效率,具有更高的安全性。
智能卡;口令认证;Reflection攻击;Nonce;双线性对
0 引言
随着电子商务和网络技术的迅猛发展,越来越多的交易在网络上进行,2013年仅双11一天,淘宝交易额达就到惊人的350亿元。互联网在带来便利的同时,也带来了相应的安全问题。网络不安全的根本原因主要是网络协议的不安全,攻击者大多利用协议漏洞攻击网络,进行欺骗等不法行为。因此,构建安全有效的网络协议是重中之重。
自1981年Lamport第一次提出口令认证方案以来,远程口令认证一直是安全领域学者研究的热点,由于智能卡具有读写和存储和自动处理数据的功能,近年来,基于智能卡的口令认证方案[1-8]更是层出不穷,但一些认证方案存在着一定的安全问题。2010年,Holbl等[1]人提出一种安全的智能卡口令认证方案,随后Xie等[2]人指出该方案不能抵抗智能卡丢失攻击,同时也不具有完美前向安全性。2012年,He等[3]人提出一种安全的智能卡方案,然而,Wang等[4]人在次年指出该方案不能抵抗Reflection攻击,同时不能保证用户的匿名性。2012年,汪等[5]指出于江等人的强口令认证方案不能抵抗DoS攻击,重放攻击,服务器攻击,并给出一个新的认证方案,同年,唐等[8]指出Chen等方案存在内部攻击,丢失智能卡攻击,重放攻击和身份冒充攻击。也提出一种基于椭圆曲线离散对数难题的远程用户认证协议。2013年,Li等[9]指出Lee等[10]人方案没有实现双向认证,同时不能抵抗假冒攻击,提出一种基于智能卡的动态身份认证方案。2011年,Wang[11]提出一个基于智能卡的口令认证方案,该方案具有交互次数少,系统开销小,效率高等特点。但在安全性方面也存在一些问题,方案不能抵御反射攻击和智能卡丢失攻击,没有实现用户匿名性保护,方案采用时间戳抵御重放攻击,引入了时钟同步问题。同时,口令更改阶段也存在设计缺陷。本文对Wang方案进行改进,改进方案克服了原方案以上存在的安全性问题,适用于安全需求较高的场合。
1 预备知识
1.1 双线性对
设G1是椭圆曲线群中阶为素数q的加法循环群,G2是与G1同阶乘法循环群,P是G1的生成元,称e:G1×G1 →G2是一个双线性映射,如果它满足以下性质:
(1)对称性:给定元素P,Q,R∈G1,a,b∈Zq*有:e(aP,bQ)= e(P,Q)ab;
(2)非退化性:存在元素Q,R∈G1,使得e(Q,R)≠1G1,其中,1G1是群G2的单位元;
(3)可计算性:对任意的元素Q,R∈G1,存在一个有效的算法可计算e(Q,R)。
1.2 符号标识
本文所用到的符号标识如下:
Ui用户i;
S 服务器;
SC 智能卡;
IDiPWi分别表示用户i的身份标识和口令;
p,q 大素数;
|| ⊕ 连接运算符和异或运算符。
2 Wang方案及其安全漏洞
2.1 Wang方案简要回顾
(1)注册阶段
U发送{IDu,PWu}给S。S收到{IDu,PWu}后,计算Au= h(mod p),Bu=⊕h(PWu)mod p,将{IDu,Au,Bu,p,h()}储存至SC中。
(2)登录阶段
U将SC插入读卡器,输入IDu和PWu。SC执行下面步骤:
②计算Cu=h(||T||Yu||IDu);T是用户当前的时间戳;
③U向S发送信息{IDu,T,Cu,Yu}。
(3)认证阶段
S收到{IDu,T,Cu,Yu}后,验证IDu和T的有效性,判断IDu是否合法。同时判断|T*-T|≤△T是否成立,T*为S时间戳。当T与T*的间隔大于△T或IDu错误时,认证失败,否则执行以下步骤:
③U收到{IDu,T**,Cs,Zs}后,SC验证IDu和T**的有效性。两者有一不合法,则终止会话。否则验证Cs=h(||T**||Zs||IDu)是否成立,若成立,则判定服务器合法,若不成立,终止会话。
U和S分别计算sk = h(IDu||Yu||Zs||Zsy+1)= h(IDu||Yu||Zs||)。
(4)口令更改阶段
U输入IDu和PWu和新口令P。SC计算h(Imod p)x⊕h(P)⊕h(PWu)mod p,然后替换SC中的Bu。
2.2 Wang方案安全性分析
Wang方案具有系统开销小、允许用户自主选择口令的特点,同时方案可以有效抵御重放攻击、并行会话攻击、修改攻击等攻击。但是仍有以下安全性缺陷:
(1)Reflection攻击。方案中用户和服务器端进行了多次认证,但是用户发送的认证信息和S返回的中间认证信息具有一定的关联相似性,这就可能导致Reflection攻击,攻击步骤如下:
①合法用户通过公开信道向服务器发送登录信息{IDu,T,Cu,Yu}。
②攻击者截获信息{IDu,T,Cu,Yu}。
③攻击者冒充S返回信息{IDu,T**,Cs,Zs},其中IDu=IDu,T**=T,Cs=Cu,Zs=Yu给用户。
④合法用户接收信息{IDu,T**,Cs,Zs},SC计算IDu和时间戳T的有效性。显然IDu和T是有效的,然后验证Cs= h(||T**||Zs||IDu)= h(||T||Yu||IDu)= Cu,显然是成立的,则认为服务器合法。
尽管攻击者可以假冒服务器欺骗合法用户,但是由于不能进一步计算出会话密钥sk,所以不能与合法用户进行有效通信,这种攻击只能进行简单的认证破坏,但原方案实现的这种双向认证显然是不安全的。
(2)智能卡丢失攻击。如果攻击者获得用户丢失的智能卡。则可以从智能卡中获取存储的信息[12],如用户标识IDu,由于智能卡在用户登录阶段没有对用户输入的IDu和PWu进行验证。假设攻击者获取了用户的智能卡,输入IDu和任意PW*,智能卡会进行相关计算,然后向服务器发起认证。根据Wang方案可知,当服务器验证Cu=h(||T||Yu||IDu)失败时,才会终止认证。因为服务器端和智能卡都没有对用户认证次数进行限制,攻击者可以多次尝试不同的PW*,当Cu=h(||T||Yu||IDu)时,说明攻击者尝试的PW*是用户正确的口令,否则,进行下一次尝试,直到找到正确的PW*为止。由于用户选择PW一般是简短且便于记忆的,这就导致用户的口令空间比较小。从而加大了此类攻击成功的可能性。
(3)不能保证用户匿名性。如今,保证用户身份的私密性显得极为重要,特别在一些敏感场合,如电子投票、电子选举等[9]。用户匿名性可以防止其私人信息被攻击者追踪,例如,在电子商务中,一旦用户身份被泄露,攻击者可以据此了解到该用户的敏感私人信息,如个人偏好,社交圈,购物习惯等等,所以,保护用户身份对一个安全的协议来说是极其必要的。然而在Wang的方案中,IDu在公开信道上始终明文传输。用户的身份根本得不到有效的保护。
(4)口令更改阶段缺陷。在口令更改阶段,U输入IDu、旧口令PWu以及新口令P,然后SC计算h(Imod p)x⊕h(P)⊕h(PWu)mod p,最后替换SC中的Bu。假设U在注册后更改口令,那么此时Bu= h(IDuxmod p)x⊕h(PWu*)⊕h(PWu)mod p = Au⊕h(P)⊕h(PWu)mod p,当用户登录时,输入口令PW*后SC计算Bu*=(Bu⊕h(P))mod p=(Au⊕h(PWu))ymod p和Yu=mod p;然后发送验证信息,S计算Bs*=/h(IDuxmod p)xmod p=mod p,验证Cu=h(Bs*||T||Yu||IDu)是否成立,显然不成立,因为Bu*≠Bs*。因此口令更改阶段也存在着一定的设计缺陷。
(5)时钟同步问题。智能卡认证方案运用时钟同步主要是为了保证认证信息的新鲜性,以此来抵御重放攻击,但是,信息的传输延迟在网络中是不可预测的,除此之外,在网络内实现全局时钟同步需要有特定地全局时钟服务器和相应的时钟同步协议,实现起来不但困难,而且昂贵,特别是在无线网络和分布式网络中,显然方案中采用时间戳来抵御重放攻击也是不合适的。
(6)错误口令慢检测。实际生活中,用户登录不同的服务器可能有多个不同的登录密码,在Wang方案的登录阶段,如果用户口令记忆或输入错误、同样可以通过登录阶段,直到认证阶段第一步,S才能检测到认证错误,因为输入口令错误,Bu*≠Bs*,进而Cu=h(Bu*||T||Yu||IDu)≠h(Bs*||T||Yu||IDu),从而终止认证过程。但是这样已经造成系统计算资源、信道资源浪费.影响整个系统的运行效率。
3 改进方案
针对Wang方案以上安全性问题,本文给出的改进方案如下:
(1)初始化阶段
S选择G1,G2,e,p,使其满足双线性对的要求。选择G1的生成元P,秘密值x∈Zp*和单向哈希函数h():{0,1}*->G1。计算Pub= x×P;x作为S私钥秘密保存。公开系统参数{G1,G2,e,p,P,Pub,h()}。
(2)注册阶段
Ui选择口令PWi,通过安全通道发送IDi和h(PWi)给S。S收到{IDi,h(PWi)}后,通过表1检查IDi的惟一性,如果发现已被注册,要求Ui重新选择IDi。否则,计算Ai= h(IDixmod p),Bi=Aix⊕h(PWi)mod p,Qi= h(IDi),Ki=x×Qi/h(PWi),InUi=e(Qi,Pub)然后将参数{Ki,Ai,Bi,p,h(),Pub,P,e}存入分发给用户Ui的SC中。S保存<InUi,IDi>到安全数据库中。
(3)登录阶段
用户将SC插入读卡器,输入IDi*和PWi*。SC执行下面步骤:
Step1:判断e(h(IDi*),Pub)= e(h(PWi*)×Ki,P)是否成立,若成立,执行Step2,否则提示出错信息,当错误信息提示次数达到设定的上限值后,智能卡将锁死。
Step2:随机选取y∈Zp*,计算Bi*=(Bi⊕h(PWi*))ymod p和Yi=Aiy+1mod p,R=y×Pub,T=y×P。
Step3:SC产生随机数N,计算Ui临时身份idi=(h(PWi*)/h(N||T)+y)×Ki,Ci=h(Bi*||IDi)。
Step4:发送信息{idi,N,R,Ci,Yi}至S。
(4)认证阶段
S收到{idi,N,R,Ci,Yi}后,计算T*=x-1×R,InUi=e(idi,h(N||T*)×P+T*),以InUi为索引检查表1,若存在以InUi为索引的Ui,S则取出Ui身份标识IDi,并通过认证。若不存在以InUi为索引的Ui,服务器拒绝登录请求,最后执行下面步骤:
Step1:计算Bs*= Yix/h(IDixmod p)xmod p,验证Ci=h(Bs*||IDi)是否成立,若成立,执行Step2,若不成立,拒绝登录请求。
Step2:产生随机数Nonce N2,随机选取z∈Zp*,计算Zs=h(IDixmod p)z+1mod p,W=Bs*⊕N2,Cs= h(Bs*||IDi||Zs||W),发送信息(idi*,Cs,W,Zs)给Ui。
Step3:Ui收到(idi*,Cs,W,Zs)后,验idi*与idi是否相等。若不相等,则终止会话。否则验证Cs=h(Bi*||IDi*||Zs||W)是否成立,若成立,则判定服务器合法,计算N2*= Bi*⊕W,发送信息h(IDi⊕N⊕N2*)到S。
Step4:S验证h(IDi⊕N⊕N2*)?=h(IDi⊕N⊕N2),若相等,则认为Ui合法。
(5)Ui和S计算会话密钥sk=Zsy+1=Yiz+1。
表1 用户身份映射表
(6)口令更改阶段
Step1:Ui将SC插入读卡器,输入IDi*和PWi*,SC计算e(h(IDi*),Pub)= e(h(PWi*)×Ki,P)是否成立,若不成立,则拒绝更新,否则提示输入新口令PWi**。
Step2:SC计算Bi⊕h(PWi*)⊕h(PWi**),Ki×h(PWi*)×h-1(PWi**),分别替换SC中的Bi和Ki。
4 安全性及效率分析
4.1 完备性证明
(1)登录阶段等式e(h(IDi*),Pub)= e(h(PWi*)×Ki,P)证明如下:
(2)认证阶段等式InUi=e(idi,h(N||T*)×P+T*)证明如下:
4.2 安全性分析
(1)用户匿名性保护。用户在网络中传输的信息不包含IDi的明文,通过引入随机数和双线性对构造用户临时身份idi,用户的每次会话都使用不同的idi,改进方案中,由于e的非退化性,InUi= e(Qi,Pub)唯一确定一个用户IDi,只有知道S密钥x,才能计算出InUi,进而找到用户真实身份IDi。否则,计算出InUi的难度相当于解椭圆曲线上的离散对数难题。攻击者很难计算出用户的真实身份IDi,也就无法根据用户IDi了解更多的私密信息,因此保证了用户的匿名性。
(2)实现双向认证。服务器首先通过计算InUi=e(idi,h(N||T*)×P+T*)找到用户真实IDi实现初步认证,然后验证等式Ci=h(Bs*||IDi)是否成立,只有在知道S私钥x的前提下才能计算出Bs*。可证明服务器是真正的服务器,S发送认证信息{idi*,Cs,W,Zs}给用户,用户则通过验证等式Cs=h(Bi*||IDi*||Zs||W)是否成立来判断服务器的合法性,而只有用户知道PWi才能计算出Bi*。初步判定用户合法,在认证阶段的Step3,S判断用户发送的h(IDi⊕N⊕N2*)的真实性,只有知道用户的IDi和PWi,h(IDi⊕N⊕N2*)才能被服务器正确的验证,因为IDi和PWi只有用户自己知道,所以可证明用户是合法的,由此实现了双向认证。
(3)抗重放攻击。攻击者可能通过重放截获的信息{idi,N,R,Ci,Yi}来发起新的认证。但是在认证阶段Step3,由于无法获得S密钥x和IDi,因此不能构造有效认证信息h(IDi⊕N⊕N2*),S在Step4验证时会拒绝认证请求,改进方案使用随机数Nonce代替时间戳,解决了时钟同步的问题,同时可以有效的抵御重放攻击。
(4)抗Reflection攻击。当用户发送(idi,N,R,Ci,Yi)给服务器时,如果攻击者截获此信息,冒充服务器返回{idi*,Cs,W,Zs},其中idi*=idi,Cs=Ci,Zs=Yi,验证Cs*和Cs是否相等,而Cs=Ci= h(Bi*||IDi)显然是与Cs*=h(Bi*||IDi*|||Zs||W)=h(Bi*||IDi*||Zs||W)不相等,如果攻击者截获服务器发送的认证信息(idi*,Cs,W,Zs)冒充用户发送(idi,N,R,Ci,Yi)给服务器,其中idi= idi*,Ci= Cs,由于idi是动态变化的,且idi的构造与随机数N*相关,攻击者无法获取合法用户初始选择的随机数N*,在服务器验证InUi=e(idi,h(N||T*)×P+T*)时,必然不成立,因此,改进方案可以抵抗Reflection攻击。
(5)抗智能卡丢失攻击。用户在使用智能卡时,需要提交正确的用户标识IDi*和口令PWi*,智能卡验证e(h(IDi*),Pub)是否与e(h(PWi*)×Ki,P)相等,只有验证通过才能发起认证连接。如果攻击者穷举用户IDi和PWi,由于IDi和PWi都是未知的,攻击者成功的可能性极小,同时智能卡对用户口令的登录验证具有记录功能,当口令错误累计次数到达设定的上限值后将自动锁死,从而防止了此类攻击。
(6)前向安全性。方案中的会话密钥sk=Zsy+1=Yiz+1中的y和z都是随机产生,每次各不相同,可知,每次的会话密钥sk必然不相同,即使攻击者截获某一次的会话密钥,也不能根据此次密钥推测出解密出以前密钥加密的数据,同时也不能根据此次密钥解密以后密钥加密的数据。
(7)内部攻击。改进方案中在注册阶段没有向服务器发送口令pw的明文,而是发送了口令的hash值,服务器端不保存用户密码的明文,可以有效地防止服务器端恶意内部人员的攻击。
(8)时钟同步问题。传统方案中用时钟戳技术防止重放攻击,这会引入时钟同步问题,本文方案用随机数取代时间戳,有效的防止重放攻击,避免了时钟同步,节省了网络开销。
表2和表4分别在安全性和效率方面与几个同类型的方案进行了一个对比,从表2中可以看出,改进方案和刘方案优于其它方案(Y:是 N:否)。
表2 方案安全性比较
内部攻击 N N N Y Y时钟同步问题Y Y Y N N
4.3 效率分析
文献[13]和文献[14]分别对身份认证方案的指数操作,双线性对操作,乘除法操作计算时间进行了测试。针对异或运算、Hash运算、加密解密运算的计算时间。本文使用C 语言,基于Microsoft Visual C++ 6.0平台对以上运算时间进行了测试如图2,具体计算机硬件参数为处理器:Intel(R)Pentium(R)4 CPU,主频:2GHz,内存:256G,内存:1G。经过多次测试最后计算并总结各类运算的平均计算时间(见表3)。方案中计算量主要集中在登录和认证阶段。整个过程计算量主要取决于乘/除法运算、Hash运算、加密/解密运算,双线性运算。表4对同类型的方案效率进行比较。
表3 各操作计算平均时间
从表4可以看出,改进方案在和刘方案安全相同的情况下,耗费的计算量更小,比其它略差,但是安全性更高。
表4 效率分析比较
5 结束语
本文给出一个改进的智能卡匿名认证方案,使用双线性对构造用户动态身份,实现了用户匿名性保护、采用Nonce代替时间戳解决传统方案中的时间同步问题,方案的安全性基于离散对数计算复杂性和哈希函数的不可逆性。改进方案与最近提出的几个同类型方案安全性与效率方面做了一个对比,证明可以有效地抵抗Reflection攻击、智能卡丢失、重放攻击等多种攻击,适用于对用户隐私保护要求较高的场合。
[1]Hölbl,M.,Welzer,T.and Brumen,B.Attacks and improvement of an efficient remote mutual authentication and key agreement scheme[J],Cryptologia,2010.
[2]Xie,Qi.Improvement of a security enhanced one-time two-factor authentication and key agreement scheme[J].SCIENTIA IRANICA,2012.
[3]D.He,J.Chen,J.Hu,An id-based client authentication with key agreement protocol for mobile client-server environment on ECC with provable security[J].Information Fusion,2012.
[4]Ding Wang,Chun-guang M.Cryptanalysis of a remote user authentication scheme for mobile client-server environment based on ECC[J].Information Fusion,2013.
[5]汪定,马春光,张启明等.一个强口令认证方案的攻击与改进[J].计算机科学,2012.
[6]郝卓,俞能海.一个具有完美前向安全性的基于口令认证密钥协商方案[J].中国科学技术大学学报,2011.
[7]汪定,薛峰,王立萍等.改进的具有PFS特性的口令认证密钥协商方案[J].山东大学学报(理学版),2012.
[8]唐宏斌,刘心松.增强的基于智能卡的远程用户认证协议[J].计算机工程与应用,2012.
[9]Xiong Li,Jian Ma,Wendong Wang et al.A novel smart card and dynamic ID based remote user authentication scheme for mutil-server environments [J].Mathematical and Computer Modeling,2013.
[10]C.C Lee,T.H.Lin,R.X.Chang,A secure dynamic ID based remote user authentication scheme for multi-server environment using smart cards[J],Expert Systems with Applications,2011.
[11]王亚飞,一种基于智能卡的口令认证方案的研究[J].计算机应用与软件,2011.
[12]Xiong Li,Yongping Xiong,Jian Ma et al.An efficient and security dynamic identity based authentication protocol for multi-server architecture using smart cards[J].Journal of Network and Computer Applications,2012.
[13]刘振鹏,吴凤龙,尚开雨,等.基于TPM的云计算平台双向认证方案[J].通信学报,2012.
[14]Cao,X,Kou,W,Du,X,A pairing-free identity-based authenticated key agreement protocol with minimal message exchanges [J].Information Sciences,2010.
[15]CHEN B L,KUO W C,WUU L C.Robust smart-card-based remote user password authentication scheme[J].International Journal of Systems,2014.
[16]LI X,NIU J W,KHAN M K,et al.An enhanced smart card based emote user password authentication scheme[J].The Journal of Network and Computer Application,2013.
[17]刘莎,朱淑华.基于智能卡的远程用户匿名身份认证和密钥协商方案[J].计算机应用,2014.