0 导言
1981年Lamport等[1]初度提出根据口令的认证计划,这种计划实用性虽强,但这类计划存在丧命的缺点——离线口令猜想进犯。1993年 Chang等[2]提出结合口令和智能卡来进步认证协议的安全性和有用性,从此产生了一系列的认证计划[3-7]。2012年唐宏斌等[8]提出一种运用椭圆曲线加密机制和时刻戳的认证协议,2013年皮兰等[9]指出在不安全信道中引进时刻戳是存在严峻的时钟同步问题,并提出一种的异步认证协议。本文指出皮兰等计划因不能维护用户的匿名性而缺少实用性,因引进中止协议履行阈值很简单构成一个严峻的安全问题——DoS进犯,并提出一种选用动态身份和三次握手技能的长途用户认证计划。新协议不只可以维护用户的匿名性,并且有用的反抗DoS进犯,充沛确保了协议功能的高效性。
1 皮兰等计划回忆
文中的符号界说如下:U为用户;S为服务器;SC为智能卡;PW为用户的口令;k为服务器的高熵秘钥;h(·)为单项哈希函数;||为字符串衔接操作;?堠为异或运算;?圯为安全信道;→为一般信道。
1.1 皮兰等计划
皮兰等计划由五个阶段组成,本文把登录和认证放在一同,省掉口令修正阶段。
1.1.1 体系设置阶段
服务器选取有限域GF(q)上的椭圆曲线E,由E上点构成一个点加法群Ea,b(GFq),设P是阶为n的生成元。服务器选取私钥k和核算对应的公钥Q=kP。服务器保密k,发布其体系参数{q,a,b,n,P,Q}。
1.1.2 注册阶段
(1)用户选取身份ID、口令PW和新鲜数N,经过安全信道把音讯{ID,y=h(PW||N)}发给服务器。
U?圯S:{ID,y}
(2)收到{ID,y},服务器核算s=h(ID||k),v=s?堠y,经过安全信道把存有v,h(·)和体系参数的智能卡发给用户。
S?圯U:SC
(3)用户收到智能卡后,把N输入智能卡,最终智能卡中含有v,h(·)和体系参数。
1.1.3 登录和认证阶段
(1)用户刺进智能卡并输入ID和PW。智能卡向服务器发送登录恳求{ID}。
SC→S:登录恳求{ID}
(2)服务器收到ID后,验证ID格局有用性,若无效,中止本次协议;不然任选随机数{r1}发给智能卡。
S→SC:{r1}
(3)收到r1后,智能卡核算y=h(PW||N)和s=v?堠y=h(ID||k),然后任选随机数r2,再核算R1=r2P,R2=r2Q以及C1=h(ID,S,s,R2,r1)。最终智能卡发送登录音讯{R1,C1}给服务器。
SC→S:{R1,C1}
(4)服务器收到{R1,C1}后,核算s′=h(ID||k),R’2=kR1以及C’2=h(ID,S,s′,R’2,r1),比较C’2是否等于C1;若二者不等,中止本次协议;不然服务器认证用户成功,核算C2=h(S,ID,s′,R’2)发送给智能卡。
S→U:{C2}
(5)收到C2后,智能卡核算C’2=h(S,ID,s,r1,R2),并比较C’2是否等于C2,若二者不等,服务器中止本次协议;不然用户认证服务器成功。用户在登录和认证阶段中的中止履行协议次数超越某个阈值h将被确定帐号,有必要亲自到认证中心解开。
1.2 皮兰等计划存在的问题
(1)缺少匿名性
在皮兰等计划中,用户登录运用实在的身份ID在不安全信道中传输简单被进犯者截获而走漏用户的个人信息,便于进犯者对特定用户做出一系列进犯,如常见于协议中的拒绝服务(DoS)进犯,假充进犯等。别的,面临网络信息安全的严峻形势,用户也意识到个人信息的重要性,特别是在一些特别的使用中,例如网上匿名投票,保密电子商务等,用户的信息是不方便走漏的。因而,皮兰等计划缺少很大的实用性。
(2)对DoS进犯是软弱的
为阻挠在线口令猜想,皮兰等计划设计用户在登录和认证中中止履行协议次数超越某个阈值h,将确定该帐号,用户有必要亲自到认证中心解开帐号,这种计划极简单构成DoS进犯。由于登录和认证阶段是经过不安全信道通讯,一方面简单遭到各种不确定要素(如环境,其他设备等)的搅扰;另一方面,皮兰等计划缺少匿名性,用户每次登录与服务器通讯频频(四次),进犯者易确定特定用户后恣意假造、篡改、中止通讯音讯{ID},{r1},{R1,C1}或{C2},都能构成中止履行协议构成DoS进犯。假如此状况常产生,或许构成整个体系溃散,皮兰等计划具有严峻的不合理性。
2 新的认证计划
新计划包含体系初始化、注册、登录认证和口令修正等四个阶段,详细如下。
2.1 体系初始化阶段
该阶段与皮兰等计划的体系设置相似,但留意:(1)服务器挑选自己的密钥k,以及用户在登录时挑选的随机数r1,满意k,r1∈[1,n-1],这是确保kP,r1P∈Ea,b[GFq]。(2)椭圆曲线上的离散对数问题(ECDLP):给定P,Q∈Ea,b[GFq],求一个k满意Q=kP是相对困难的[10]。
2.2 注册阶段
(1)用户选取自己的身份ID、口令PW和高熵随机数N,经过安全信道发送音讯{ID,y=h(PW||N)}给服务器。
U?圯S:{ID,y}
(2)收到{ID,y},服务器为用户分配初度动态登录身份TID0,核算s=h(ID||k),v=s?堠y,把{TID0,ID}保存到校验表中,把{TID0,v,h(·)}以及体系参数存入智能卡中,最终服务器经过安全信道把智能卡分发给用户。
S?圯U:SC
(3)用户收到智能卡后把N输入智能卡,最终智能卡中含有TID0,v,h(·)和体系参数{q,a,b,n,P,Q}。
2.3 登录认证阶段
用户先将智能卡刺进读卡器,并输入身份ID和口令PW,然后履行以下操作:
(1)智能卡核算y=h(PW||N)和s=v?堠y,并挑选一个随机数r1∈[1,n-1],核算R1=r1P,R2=r1Q,C1=h(TID0,ID,s,R2)后向服务器发送恳求音讯。
SC→S:登录恳求{TID0,R1,C1}
(2)收到音讯后,服务器用TID0从校验表找对应的ID,若找不到中止本次会话;不然,核算s′ =h(ID||k),R’2=kR1,C’2=h(TID0,ID,s′,R’2),并查验C’2=?C1。若不持平,中止本次会话;不然服务器为用户分配下一次动态登录身份TID1,并核算C2=h(TID1,s′,R’2)后发送音讯{TID1,C2}给用户。
S→SC:{TID1,C2}
(3)收到{TID1,C2}后,用户核算C’2=h(TID1,s,R2)并查验C’2=?C2。若不持平,中止本次会话;不然用户认证服务器成功,把动态身份TID1保存到智能卡,直到下一次成功登录并收到动态身份TID2,再用TID2更新TID0。最终核算 C3=h(TID0,TID1,s,R2),智能卡发送{C3}给服务器。