王 雄 胡宏博 滕 源
北京电子科技学院、网络空间安全系,北京市 100070
随着网络通信技术与智能移动设备的飞速发展,移动设备(如笔记本电脑、PDA、智能手机)与资源服务器之间,以及移动设备之间的高速与高质量的信息交换、资源共享成为生活、工作的重要组成部分。 在全球移动网络(Global Mobile Network,GLOMONET)[1]中,当移动用户(Mobile User,MU)在本地或内部网络时,通过移动设备获取内部代理(Home Agent,HA)提供的服务;当移动用户漫游到内部网络之外的区域时,移动用户通过全球漫游技术获得外部代理(Foreign Agent,FA)提供的服务。 无论何种方式,首先需要对MU 进行身份认证,并利用会话密钥实现在MU、FA、HA 之间的安全通信。 但是,移动网络无线通信与广播传输[2]的特点,使得移动网络很容易受到敌手的窃听与攻击,并且移动设备甚至无法感知到攻击。 同时,移动设备有限的计算资源给移动网络身份鉴别方案的设计提出了较高的要求。 如何利用技术简单、成本低的口令认证技术设计一个适用于全球移动网络的身份认证方案成为研究的热点问题[3-5]。
自1997 年Suzuki 等人[6]首次提出了一种用于全球移动网络的认证技术开始,对移动网络环境下身份认证技术的研究不断深入,提出了大量的身份认证协议。 这些身份认证协议大多数基于轻量级密码原语,实现单向或双向身份认证,并完成会话密钥的协商。 但是,随着研究的深入,很多的协议都被证明存在设计缺陷,无法抵抗一些常见攻击。 2018 年Madhusudhan 等[7]人的方案自称可以抵御各种攻击,并可以确保安全的双向认证和用户匿名。 然而,Yu 等人[8]证明了Madhusudhan 的方案不能抵抗假冒攻击和重放攻击,不能实现会话密钥的机密性和双向认证。 2018 年Xu 等人[9]指出Gope 等人[10]的协议容易受到重放攻击和去同步攻击,并且具有很大的存储负担。 Shashidhara 等人[11]指出Xu 等人改进的双向认证协议不能实现用户的不可链接性,容易遭受假冒攻击、拒绝服务攻击和内部特权攻击等,同时还存在时钟同步问题和口令更新阶段的不安全问题。 随后,Rahmani 等人[12]就指出,Shashidhara 等人的协议不能抵抗移动用户假冒攻击和智能卡窃取攻击,也不能实现用户的不可链接性,并提出了一种轻量级改进方案。但是,该方案被Ryu 等人[13]证明不能抵抗智能卡窃取攻击和口令猜测攻击,同时存在会话密钥泄露问题。
此外,还有一些基于不同密码原语设计面向GLOMONET 的认证协议。 Lee 等人[14]仅使用哈希原语与简单运算设计出了一种轻量级的身份认证协议。 Gupta 等人[15]基于二次残差假设的公钥加密提出新的协议。 Madhusudhan 等人[16]结合使用哈希与对称加密构造了一个认证方案。然而,这些方案后来都被证明是不安全的,或者存在不能抵抗口令猜测攻击、假冒攻击、重放攻击,或者不能提供用户匿名性和完美的前向安全。
移动网络环境下身份认证方案就是在专家学者不断推动下持续向前发展。 本文就是以两个公开协议为研究对象,基于Dolev-Yao 安全模型[17]分析协议的安全性。 经过研究发现,Shashidhara[18]协议不能抵抗智能卡窃取攻击,并且存在序列号同步异常的问题;Madhusudhan[19]协议不能实现用户的不可链接性和用户匿名性,也无法实现会话密钥的安全性与口令的安全性;本文针对两个协议的安全问题给出具体的攻击流程,阐明导致安全缺陷的原因,并给出对应的改进思路。
为了规范的界定攻击者在安全协议中的行为能力,Dolev-Yao 安全模型成为了各类安全协议中使用范围最广的攻击者模型。 基于该安全模型,能够验证协议本身在设计层面的安全性和正确性。 在Dolev-Yao 安全模型下的攻击者具有以下能力:
(1)攻击者能够记录所有通过不安全的公开信道传递的消息。
(2)攻击者可以是移动网络中的一个合法用户,能够向任何其他用户发起会话,也有机会接收任何移动网络主体发送的消息。
(3)攻击者能够冒充移动网络中的其他主体向任意主体发送消息。
(4)攻击者可以重新发送、重新修改、插入和删除自己所记录的消息。
(5)攻击者可以通过侧信道攻击从合法用户的智能卡中取出所有已经保存的数据。
同时,在Dolev-Yao 安全模型中的攻击者受以下条件限制:
(1)攻击者不能修改或者捕获从安全的私有信道中传递的消息。
(2)攻击者无法猜测到从足够大的空间中选择的随机值。
(3)攻击者如果没有正确的密钥,则无法根据给定的密文恢复出相应的明文,也不能利用给定的明文构造正确的密文。
(4)攻击者不能计算出与给定的公钥相对应的私钥。
在该安全模型下,攻击者几乎具有控制整个移动网络的能力。 每一个合法用户在移动网络中的通信都有可能是在与攻击者通信,接收到的移动网络中的消息也都有可能来自攻击者。 在本文中,移动网络身份认证协议的安全分析均以Dolev-Yao 模型为基础展开安全分析。
本节首先回顾Shashidhara 等人[18]的协议,并分析该协议的安全性。 分析结果表明该协议无法抵抗智能卡窃取攻击,且存在序列号同步问题。
2021 年,Shashidhara 等人提出了一种移动网络中轻量级的身份认证协议,包括初始化阶段、注册阶段、认证阶段和口令更新阶段,协议使用的符号如表1 所示。 考虑到本文的分析与口令更新阶段无关,故省略该阶段的介绍。
1、初始化阶段
(1)HA 产生大素数m 和n,随机选择私钥SHA=a(a <n) ,选择g,计算公钥PHA=ga mod m,将公钥{PHA} 发送给FA。
(2)FA 随机选择私钥SFA=b(b <n),计算公钥PFA=gb mod m,将公钥{PFA} 发送给HA。
(3)双方通过Diffie-Hellman 密钥交换机制,共同计算出共享密钥KFH=gab mod m。
2、注册阶段
协议注册阶段如图1 所示。
图1 Shashidhara 协议注册阶段
(1)移动终端的用户选取身份标识IDMU和口 令PW, 生 成 随 机 数NM, 计 算R1=(IDMU‖NM), 通 过 安 全 信 道 将 {R1} 发 送给HA。
(2) HA 收 到 {R1} 后, 计 算HS=h(R1‖SHA‖IDHA), 初始化序列值TS=0,将{R1,TS} 存入数据库,通过安全信道将R2={HS,TS} 发送给移动终端。
(3) 移 动 终 端 收 到R2后, 计 算LMU=h(IDMU‖PW‖NM),HM=HS⊕h(PW),在智能卡中存储参数{LMU,HM,TS,NM}。
3、 认证阶段
协议认证阶段如图2 所示。
图2 Shashidhara 协议认证阶段
(1)用户插入智能卡,在移动终端输入身份标识IDMU和 口 令PW, 智 能 卡 计 算L′MU=h(IDMU‖PW‖NM),智能卡判断L′MU与LMU是否相等。 若相等则继续执行,不相等则停止执行。移动终端生成一个随机数RM, 并从智能卡中读取当前序列号T′S,计算HS=HM⊕h(PW),UM=h(HS⊕RM),VM=h(IDMU‖NM‖UM‖T′S)=h(R1‖UM‖T′S),通过公开信道将服务请求消息M1={VM,T′S,RM} 发送给FA。
(2)FA 收到M1后,生成一个随机字符串RF,计算VF=EKFH(M1,RF),通过公开信道将认证请求消息M2={IDFA,VF} 发送给HA。
(3)HA 收到M2后,判断IDFA是否合法。 合法则继续执行,不合法则停止执行。 用KFH解密VF得到{VM,T′S,RM,RF},根据数据库中的{R1,TS} 判断T′S与TS是否相等。 相等则继续执行,不相等则停止执行。 计算H′S=h(R1‖SHA‖IDHA),U*M=h(H′S⊕RM),V*M=h(R1‖U*M‖T′S),判断V*M与VM是否相等。 相等则继续执行,不相等则停止执行。 生成会话密钥SK=h(H′S⊕RM⊕RF),更新TS为(TS+1),用KFH进行加密得到VH=EKFH(SK,RF),通过公开信道将认证回复消息M3={VH} 发送给FA。
(4)FA 收到M3后,用KFH解密VH得到{SK,RF},判断RF是否正确。 正确则继续执行,不正确则停止执行。 计算W=h(SK‖RF),通过公开信道将消息M4= {W,RF} 发送给移动终端。
(5)移动终端收到M4后,计算SK*=h(HS⊕RM⊕RF),W*=h(SK*‖RF),判断W*与W是否相等。 相等则继续执行,不相等则停止执行。将智能卡中的TS更新为(TS+1)。
根据移动网络安全身份认证协议安全性原则,分析协议可以发现:该协议不能抵抗智能卡窃取攻击,在可用性方面也存在缺陷,具体表现如下。
1、智能卡窃取攻击
在移动网络中,智能卡窃取是一种常见的攻击手段,是指攻击者通过某种方式窃取了移动用户的智能卡并进行侧信道攻击,利用智能卡设备的能量消耗特征而非密码算法的数学特性,例如能量消耗、运算时间、电磁辐射等,从而得到智能卡中存储的所有秘密参数的攻击方法。 在Shashidhara 等人的协议方案中,攻击者A 通过窃取移动用户的智能卡并进行口令猜测攻击,便能够获取移动用户的口令PW和会话密钥SK。攻击过程描述如下:
(1)攻击者A 获取移动用户的智能卡,利用侧信道攻击得到智能卡中的秘密参数HM。
(2)攻击者A 通过窃听公开信道获得参数{RM,RF}。 由于HS=HM⊕h(PW),因此移动用户和外部代理之间的会话密钥SK=h(HS⊕RM⊕RF)=h(HM⊕h(PW) ⊕RM⊕RF)。
(3)攻击者A 可以在口令空间内猜测口令PW′,计算相应的SK′。 再根据W=h(SK‖RF)验证SK′是否正确。 若等式成立,则SK′正确,相应的PW′为正确口令。 最终,攻击者A 通过此方法获得了移动用户的口令PW和会话密钥SK。
因此,Shashidhara 等人的协议方案不能抵抗智能卡窃取攻击。
可能的应对措施:该方案由于HM长期固定保存在用户的智能卡里,并不具备会话可变性,一旦攻击者获取HM,便可根据异或运算计算出与HM直接相关的用户口令PW,进而计算出会话密钥SK。 为了解决这一问题,可以使用不公开传输的随机数r1盲化口令PW, 如改进HS的计算方法为HS=h(h(PW)‖r1) ⊕HM,从而利用未知的随机数r1增加口令猜测空间。
2、序列号同步问题
在Shashidhara 等人的协议方案中,国内代理HA 在成功认证国外代理FA 和移动用户MU的身份后,会将序列号TS更新为TS+1,以防止重放攻击。 此后,若MU 成功认证FA,则MU 也会将序列号TS更新为TS+1,从而使MU 与HA存储的序列号保持一致。 由于缺少及时的错误消息反馈机制,HA 与MU 的序列号很容易出现同步异常问题。 假设HA 对另外两方的认证通过,且已经将序列号TS更新为TS+1, 但如果MU 对FA 的认证失败,那么MU 就不会更新TS值,导致MU 与HA 存储的序列号不同步。 当双方存储的序列号不一致时,即使是合法的认证消息也依然无法通过身份认证过程。
可能的应对措施:该方案中的异常会一直持续存在直到MU 和HA 的序列号同步。 因此,为了解决协议方案中序列号同步异常的问题,应该建立序列号的错误消息反馈机制,当一方的认证失败时,应该向其他通信参与方发送认证错误信息“Authentication Failed”,促使另外两个通信实体能够执行(TS- 1) 操作,从而使序列号始终保持一致。 此外,若要从根本上解决序列号同步问题,可以采用时间戳机制,减少错误反馈导致的额外通信开销。
本节首先回顾Madhusudhan 等人[19]提出的协议,并分析该协议的安全性。 分析结果表明该协议无法保持用户的匿名性与不可链接接性,而且无法抵抗会话密钥攻击与口令猜测攻击。
2021 年,Madhusudhan 等人提出了一种移动网络中基于椭圆曲线加密(Elliptic Curve Cryptography,ECC)的身份认证协议,包括初始化阶段、注册阶段、认证阶段和口令更新阶段,协议使用的符号如表2 所示。
1、初始化阶段
(1)HA 产生随机数rh, 计算秘密密钥X=rhP,选择大素数N, 将{rh,P,N} 存储到数据库中。
符号 描述PWMU 移动用户的口令IDMU,IDFA,IDHA MU,FA 和HA 的身份标识X HA 的密钥KFH FA 和HA 的共享密钥NM 随机数EK(X) 用密钥K 对X 进行对称加密q大素数SK 会话密钥‖连接h(·) 哈希函数⊕异或
(2)MU 和HA 在此阶段通过安全信道共享对称加密密钥Ek。
(3)HA 收到IDFA后,通过Diffie-Hellman 密钥交换协议计算SKFA,通过安全信道将SKFA发送给FA。
(4)HA 和FA 选取两个随机数h,f以及乘法群g上的大素数q。 FA 计算公钥PFA=gfmodq,HA 计算公钥PHA=ghmodq。 双方共享公钥并秘密保存好自己的私钥。
2、注册阶段
协议注册阶段如图3 所示。
图3 Madhusudhan 协议注册阶段
(1)MU 选择身份标识IDMU, 口令PWMU以及随机数b,并将{h(IDMU‖b)} 发送给HA。
(2)HA 收到消息后,选取随机数r, 计算X=rP,P是ECC 上的生成元。 HA 设置计数值CtrMU=1,并将{h(IDMU‖b),CtrMU} 存储到数据库中。 HA 计算A=h(h(IDMU‖b)‖X),B=A⊕ghfmod q。 HA 将参数{A,B,CtrMU,Ep}和智能卡发送给MU。
(3 ) MU 收 到 智 能 卡, 计 算C=h(h(IDMU‖b)‖PWMU)。 MU 将 {A,B,C,CtrMU,b,Ep}存储到智能卡中。
4、 认证阶段
协议认证阶段如图4 所示。
图4 Madhusudhan 协议认证阶段
(1)MU 插入智能卡并输入身份标识IDMU和 口 令PWMU。 智 能 卡 计 算C*=h(h(IDMU‖b‖PWMU)) 并判断C*与C是否相等。 若不相等,移动终端拒绝此次登录请求。 若相等,智能卡生成随机数αϵZ*n, 并计算C1=αP,P=Ek(h(IDMU‖b)),D=C⊕CtrMU⊕C1,E=h(h(IDMU‖b)‖D‖CtrMU‖IDHA‖T1)。MU 在T1时刻将服务请求消息M1={P,D,E,C1,T1,CtrMU} 发送给FA。
(2)FA 收到消息M1后,检查时间戳T1。FA 生 成 随 机 数βϵZ*n, 计 算C2=βP,F=h(D‖C1‖E‖|T1|T2) ⊕ghfmodq。 FA 在T2时刻将认证请求消息M2={P,D,E,C1,CtrMU,T1,EKFH(F),C2,T2} 发送给HA。
(3)HA 在T4时刻收到消息M2后,检查时间戳T2。 HA 使用共享密钥KFH解密EKFH(F)得到F, 计算F*=h(D‖C1‖E‖T1‖T2) ⊕ghfmodq,并判断F*与F是否相等。 若不相等,HA 拒绝此次认证请求。 若相等,则HA 成功认证 FA。 HA 解 密Ek(h(IDMU‖b)) 得 到 了h(IDMU‖b),并与数据库中存储的值对比,若二者相等,则HA 认为MU 是合法用户。 HA 计算E*=h(h(IDMU‖b)‖D‖CtrMU‖IDHA‖T1),若E*与E相等,则HA 成功认证MU。 HA 计算G=h(C2‖T3) ⊕ghfmodq,H=h(C1‖CtrMU‖T3)。HA 在T3时刻将认证应答消息M3={H,G,T3}发送给FA。
(4)FA 收到消息M3后,检查时间戳T3。FA 计算G*=h(C2‖T3)⊕ghfmodq,并判断G*与G是否相等。 若不相等,FA 终止此次会话。若相等,则FA 成功认证HA。 FA 计算SK=h(C1‖C2‖βC1),L=SK⊕h(C1‖T4)。 FA 在T5时 刻 将 消 息M4={C2,H,T3,T4,L} 发 送给MU。
(5)MU 在T5时刻收到消息M4后,检查时间戳T4。 MU 计算H*=h(C1‖CtrMU‖T3),并判断H*与H是否相等。 若不相等,MU 终止此次会话。 若相等,则MU 成功认证HA。 MU 计算SK=h(C1‖C2‖αC2),L*=SK⊕h(C1‖T4)。MU 判断L*与L是否相等。 若不相等,MU 终止此次会话。 若相等,则MU 成功认证FA。
4、口令更新阶段
(1)移动用户在终端选择修改口令请求,插入智能卡并输入有效的身份标识IDMU和口令P。
根据移动网络安全身份认证协议安全性原则,分析协议可以发现:该协议没有实现移动用户的匿名性和不可链接性,没有保证会话密钥的安全性和口令的安全性,具体表现如下。
1、用户匿名性攻击
在开放的移动网络中,移动用户通常希望自己能够秘密地访问代理服务器,这就需要移动网络中的身份认证协议具有用户匿名的基本安全属性。 而在Madhusudhan 等人的协议方案中,攻击者可以通过以下离线身份猜测攻击获取移动用户的真实身份标识,从而破坏了移动用户的隐私安全。
(1)攻击者A 在公开信道中监听到MU 发送给FA 的服务请求消息M1={P,D,E,C1,T1,CtrMU},并记录参数{D,E,T1,CtrMU}。
(2)攻击者A 窃取移动用户的智能卡,通过功率分析得到智能卡中存储的参数{A,B,C,CtrMU,b,Ep},并记录参数b的值。
(3)攻击者A 根据记录的参数和公开的IDHA,在字典空间中穷举移动用户的身份标识ID′MU,计算E′=h(h(ID′MU‖b)‖D‖CtrMU‖IDHA‖T1),直至E′与E相等。 攻击者A 记录满足此条件的ID′MU值,此时的ID′MU即为移动用户的真实身份标识。
因此,Madhusudhan 等人的协议方案不能实现移动用户的匿名性。
可能的应对措施:该方案虽然采用了ECC加 密 算 法, 但 是 在E=h(h(IDMU‖b)‖D‖CtrMU‖IDHA‖T1) 中,除了身份标识IDMU,其他参数均可在公开信道和智能卡中获取,这导致身份标识IDMU极易被攻击者字典攻击。 为了解决这一问题,一种方法是引入未公开的随机数r2参与运算,例如改进E的计 算 方 式 为E=h(h(IDMU‖r2‖b)‖D‖CtrMU‖IDHA‖T1)。 另一种方法是采用模运算加密的方式,计算I=IDMU mod q,由ID*MU参与协议中的各项计算,从而隐藏真实的用户身份标识IDMU。
2、用户不可链接性攻击
在移动网络环境中,实现用户的不可链接性至关重要,这意味着攻击者无法根据公开信道中传递的某一个参数值在不同的会话中跟踪到同一移动用户。 而在Madhusudhan 等人的协议方案中并不能实现用户的不可链接性。 攻击者A可通过以下过程跟踪合法移动用户的不同会话。
(1)攻击者A 在公开信道中监听到MU 发送给FA 的服务请求消息M1={P,D,E,C1,T1,CtrMU},并记录参数{D,C1,CtrMU}。
(2)攻击者A 计算C=D⊕CtrMU⊕C1。 由于在Madhusudhan 等人的协议方案中C=h(h(IDMU‖b)‖PWMU), 而IDMU,b和PWMU是恒定参数,所以在用户更改口令之前,每次认证时C的值始终保持不变。
因此,攻击者A 可以通过上述公式计算C的值,且根据认证会话中查找该值并跟踪同一用户。 该协议无法实现用户的不可链接性。
可能的应对措施:攻击者可以通过计算C的值,且根据认证会话查找该值并跟踪同一用户,这对用户的隐私造成了严重的安全威胁。 为了解决此问题,可以使用动态随机数参与运算,例 如 引 入 时 间 戳Tx, 计 算C=h(h(IDMU‖b)‖PWMU‖Tx), 从而保证C的值具有会话可变性。
3、会话密钥攻击
MU 和FA 在成功双向认证后,通过在认证过程中协商出的会话密钥进行后续的通信加密,从而保护通信消息的机密性。 因此,会话密钥的安全性需要得到保护。 然而Madhusudhan 等人的协议方案并不能实现会话密钥的安全性。 攻击者A 可以通过以下过程计算出MU 和FA 的会话密钥SK。
(1)攻击者A 在公开信道中监听到MU 发送给FA 的服务请求消息M1={P,D,E,C1,T1,CtrMU},并记录参数{C1}。
(2)攻击者A 在公开信道中监听到FA 发送给MU 的消息M4={C2,H,T3,T4,L},并记录参数{T4,L} 。
(3)攻击者A 根据记录的参数成功计算出SK=L⊕h(C1‖T4)。
因此,Madhusudhan 等人的协议方案并不能实现会话密钥的安全性。
可能的应对措施:FA 为了让MU 能够验证计算所得的会话密钥SK是否正确,将用于验证会话密钥正确性的参数L通过公开信道发送给MU,这导致攻击者可以利用公开信道中传递的参数直接异或计算出会话密钥SK。 为了解决这一问题,一种方法是采用与随机数r3进行模运算的加密方式,改进L的计算方式为L=SK⊕h(C1‖T4‖r3)mod q。 另一种方法是在计算L时 引 入 哈 希 运 算, 改 进 为L=h(SK⊕h(C1‖T4))mod q, 既能便于FA 和MU 使用L验证会话密钥的正确性,又能够保障会话密钥的安全性。
4、口令猜测攻击
当攻击者获得了移动用户的身份标识之后,如果攻击者能够进一步猜测出移动用户的口令,那么就可以得到移动用户的一切访问权限,能够随心所欲地窃取、破坏甚至篡改移动用户的信息。 因此,破坏口令的安全性和机密性能够对移动用户的信息安全造成巨大的威胁。 在Madhusudhan 等人的协议方案中,攻击者可以通过以下离线口令猜测攻击获取移动用户的口令,从而破坏了移动用户的信息安全。
(1)执行用户匿名性攻击得到移动用户身份标识IDMU。
(2)攻击者A 在口令空间中猜测移动用户的口令PW′MU,计算C′=h(h(IDMU‖b)‖PW′MU),直至C′与C相等。 攻击者A 记录满足此条件的PW′MU值,此时的PW′MU即为移动用户的真正口令。
因此,Madhusudhan 等人的协议方案并不能实现口令安全性。
可能的应对措施:该方案的口令PWMU的安全缺陷是建立在用户身份标识泄露的基础上,为了解决这一问题,可以利用用户匿名性改进措施防止攻击者获取IDMU。 此外,可以引入随机数r4, 改 进C的 计 算 方 式 为C=h(h(IDMU‖b‖r4)‖PWMU), 从而将原有的猜测空间扩大为IDMU空间与随机数r4空间的乘积。 同时,由于计算参数C是为了在移动端验证用户身份,若要防止口令PWMU和IDMU同步泄露,则可以取消本地验证,更改为在HA 处进行身份认证。
移动网络技术的快速发展与移动设备的广泛应用带给移动网络的安全需求日益突出,如何解决移动网络中的安全问题,特别是基于身份认证建立安全传输通道的问题,是当前影响移动网络进一步发展的、需要解决的迫切问题。 本文基于Dolev-Yao 安全模型,分别对Shashidhara 协议和Madhusudhan 协议进行安全分析。 经过分析发现,Shashidhara 协议不能抵抗智能卡窃取攻击, 并且存在序列号同步异常的问题;Madhusudhan 协议不能实现用户的不可链接性和用户匿名性,也无法实现会话密钥的安全性和口令的安全性。 同时,本文详细列出了具体的攻击流程,明确分析协议产生安全缺陷的原因,并提出对应的改进思路,这些研究对分析与设计其他协议都有一定得借鉴意义。