×
嵌入式 > 嵌入式开发 > 详情

基于智能卡的动态身份认证协议

发布时间:2020-06-20 发布时间:
|

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}给服务器。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
现场总线系统的功能安全评价