基于服务器私人密钥轻量级的身份验证协议
2018-11-17李祉岐
李祉岐,孙 磊,闻 凯
(1.北京国电通网络技术有限公司,北京 100070;2.南京航空航天大学 自动化学院,江苏 南京 210016)
0 引 言
随着信息技术的快速发展,各种高效网络服务机制为人们提供方便,也带来了一些安全问题,如云存储免除了远程用户对存储空间的担忧,但要求较高的网络安全性和资源保护性,而身份验证协议可对远程用户进行身份验证,防御试图破坏网络安全的恶意攻击[1,2]。由于身份验证协议的紧迫性和重要性,其研究具有重要的商业价值和社会意义。
迄今为止,研究人员已经提出了很多身份验证协议。常见的有“单因子”身份验证协议[3],即服务器将用户密码的散列数值存储在数据库中,在用户登录时验证身份信息。该方法简单高效,但易于受校验值丢失攻击。为抵御校验值丢失攻击,研究人员通过智能卡,删除服务器上的用户表,使用密码和智能卡的“双因子”身份验证协议[4,5]。该类协议一定程度上提高了网络安全性,但在面对冒名攻击时并不安全。Wang等[6]证明了上述协议不能抵御口令猜测攻击、已知密钥攻击等。Cui等[7]和Rong等[8]也对协议进行了改进,但存在可追踪性,因为用户ID在所有登陆请求消息中不变。Shi等[9]提出了一种基于动态身份的验证协议,以解决之前的问题,并提供不可追踪性。近期,Kaul等[10]对易受冒名、拒绝服务攻击,且没有提供密钥协商和不可追踪性的协议问题进行改进,提出了一个身份验证协议。本文对该协议进行分析,证明其存在的安全性问题;同时,为克服这些缺陷,提出一种高效安全的轻量级身份验证协议。本文的主要工作总结如下:①对已有协议进行分析,证明其不能抵御离线密码猜测攻击,且没有提供用户匿名性;②提出一种轻量级身份验证协议,提高协议安全性和执行效率。
1 协议漏洞分析
本小节主要对文献[10]协议的缺陷进行分析。该协议包括4个阶段:注册、登录、身份验证和密码更改。由于篇幅较大,具体步骤详见文献[10]。
本文所使用的符号说明见表1。
表1 符号说明
1.1 离线密码猜测攻击漏洞
在Kaul等[10]提出的协议中,如果攻击者窃取了用户的智能卡,则其能够以离线的方式猜测该智能卡的密码。在得到智能卡及其密码后,攻击者可以冒充合法用户窃取相关服务。假定攻击者已经窃取用户的智能卡,猜测该智能卡密码的步骤如下。
步骤1 攻击者从智能卡的内存中对Ai、Mi、Yi、Di、Ei和h(·)进行检索[11,12]。
1.2 用户匿名性漏洞
在Kaul等[10]提出的协议中,每个合法用户都可以通过窃听通信信道,并对其他用户的登录请求消息进行分析,得到其他用户的真实身份标识,并不能提供用户匿名性。用户Ui可以通过下列步骤,得到用户Uj的真实身份标识。
2 提出的协议
针对目前协议存在的问题,本文提出一种安全身份验证协议,该协议包括3个阶段:注册、登录和身份验证、密码更改。
2.1 注册阶段
在注册阶段中,根据如下步骤向用户Ui分配智能卡。如图1所示。
图1 协议注册阶段
步骤3 当用户端接收到智能卡时,其将步骤1中随机选择的数值r存储到该智能卡中。
2.2 登录和身份验证阶段
该阶段中,用户端和服务器相互认证,就会话密钥达成一致。在身份验证后,用户和服务器能够使用商定的会话密钥对消息进行加密和认证。其主要流程如图2所示。下面介绍具体步骤。
图2 登录和身份验证阶段
2.3 密码更改阶段
该阶段中,用户可以进行密码更改。将智能卡插入读卡器,并输入身份标识和当前密码。之后,智能卡进行如下步骤。
步骤1 该步骤与2.2节中步骤1相同。
步骤2 该步骤与2.2节中步骤2相同。
3 性能分析与比较
本节首先证明协议的正确性;然后分析提出协议在抵御已知攻击时的性能表现;接着分析其时间复杂度,并与其它安全协议进行比较。
3.1 协议正确性的证明
本节将使用BAN逻辑[14]证明提出协议的正确性。BAN逻辑是对身份验证协议进行分析的一种形式化方法。该逻辑存在一些规则,定义如下。BAN逻辑分析中使用的符号见表2。
表2 BAN逻辑分析中使用的符号
根据BAN逻辑的程序,提出的协议必须实现以下目标:
(1)目标1:Ui|≡(Ui↔SKS)。
(2)目标2:S|≡(Ui↔SKS)。
为使用BAN逻辑,提出的协议被转换为如下的理想化形式。
(1)Message 1:Ui→S:({IDi,N}x,{IDi,RNi,Ti,{IDi,N}x}Ai)。
为了对提出的协议进行分析,本文做出以下关于提出的协议的初始状态的假设:
(1)A1:Ui|≡(Ui↔AiS);
(2)A2:S|≡↔AiUi;
(3)A3:Ui|≡#(RNi);
(4)A4:S|≡#(RNS);
(5)A5:Ui|≡S⟹(Ui↔SKS);
(6)A6:S|≡Ui⟹(Ui↔SKS);
基于BAN逻辑规则和假设,本文对提出的协议的理想化形式进行了分析。
根据Message 1,可以得到:R1)S◁({IDi,N}x,{IDi,RNi,Ti,{IDi,N}x}Ai)。
基于假设A7,在将消息含义规则应用到R1后,可以得到:R2)S|≡Ui|~(IDi,RNi,Ti,{IDi,N}x)。
基于假设A5,在将管辖权规则应用到R6后,可以实现第一个目标:R7)Ui|≡(Ui↔SKS)(目标1)。
基于假设A7,在将消息含义规则引用到R8后,可以得出:R9)S|≡Ui|~(RNS,RNi)。
基于假设A4,在将临时值验证规则引用到R9后,可以得出:R10)S|≡Ui|≡(RNS,RNi)。
根据假设A6,在将管辖权规则应用到R11后,可以实现最后一个目标:R12)S|≡(Ui↔SKS)(目标2)。
3.2 协议安全性分析
3.2.1 重放攻击
3.2.2 离线密码猜测攻击
3.2.3 用户冒名攻击
3.2.4 服务器冒名攻击
3.2.5 提供用户匿名性
3.2.6 会话密钥的安全性
3.3 时间复杂度
本节对本文协议的时间复杂度和执行时间进行分析。操作系统为32位Ubuntu操作系统,2.2 GHz CPU、2.0 GB RAM。为了更方便地对协议复杂度进行分析,定义不同操作的标识符:fEN/DE表示进行一次对称加密/解密操作;fHash表示进行一次散列操作;fXOR表示进行一次异或操作。
本文提出协议的注册阶段需要进行1次对称加密操作、2次散列化操作和1次异或操作。因此,提出的协议在注册阶段的时间复杂度为fEN/DE+2fHash+fXOR。在身份验证和密钥协商阶段,需要进行6次加密/解密操作,6次散列化操作和1次异或操作。因此,身份验证阶段的时间复杂度为6fEN/DE+6fHash+fXOR。时间复杂度总计为7fEN/DE+8fHash+2fXOR,执行时间为49.8 μs。
3.4 与其它协议的比较
为了说明本文提出协议的良好性能,将其安全性功能和时间复杂度与其它3种协议进行比较。
表3给出本文协议与其它协议之间的安全性比较。表4给出不同协议的时间复杂度和具体执行时间。可以看出本文协议能够抵御各种攻击,且提供用户匿名性。文献[8]协议的执行时间最短,但不能抵御离线密码猜测攻击,且未提供用户匿名性和会话密钥安全性。文献[10]协议不能抵御离线密码猜测攻击,且没有提供用户匿名性。文献[9]协议提供了用户匿名性,但执行时间要高于本文和其它协议,且不能抵御离线密码猜测攻击。可以看出,本文提出的协议能够抵御各种安全性攻击,提供会话密钥的安全性和用户匿名性,且执行时间适中,因此更适用于真实应用。
表3 各协议的安全性
表4 各协议的时间复杂度和执行时间
4 结束语
本文对已有的身份验证协议不能抵御离线密码猜测攻击,且没有提供用户匿名性的问题进行分析。针对存在的缺陷,提出一种改进的身份验证协议。所有发送信息中均不包含密码,且设置服务器私人密钥,抵御离线密码猜测攻击。同时提出的协议中,用户身份标识在每个会话中存在差异,攻击者无法对用户的行为进行跟踪。通过与其它协议比较,本文协议能够抵御已知的安全性攻击,且提供了用户匿名性。同时执行时间适中,是一种轻量级身份验证和密钥协商协议,适用于资源受限环境。