对轻量级移动RFID双向认证协议的分析与改进
2023-03-22崔红达
崔红达,徐 森,杨 硕
(沈阳化工大学 计算机科学与技术学院,辽宁 沈阳 110020)
0 引 言
RFID系统因成本低廉,能够适应多变复杂的外界环境,且占用空间小等多方面优点,目前被广泛应用于物联网的大环境之中。从居民二代身份证到物流仓库中的产品追踪定位,再到生产线上的流水管理等,RFID系统都发挥着不可或缺的作用。
在传统的RFID系统中,读写器与后台数据库之间是通过有线方式进行通信的,对于读写器与后台数据库之间的通信,通常认为是安全的[1]。因此在设计双向认证协议时,通常将读写器与后台数据库看作一个通信主体,不需要去考虑读写器与后台数据之间的验证过程。而在移动RFID系统中,读写器与后台数据库之间采用无线方式通信,所以读写器与后台数据库之间不再是传统的安全信道。因此,传统的RFID系统中使用的双向认证协议不能再用于移动RFID系统中去[2]。当下很多学者对这一问题进行了深入的研究,并提出了诸多适用于移动RFID系统的双向认证协议,但都存在各种问题,使得RFID系统的安全性不能得到保障。
针对RFID系统存在的安全问题,国内外的学者提出了诸多解决方案,主要分为重量级协议、轻量级协议、超轻量级协议。重量级协议采用经典密码学算法,例如RSA、椭圆曲线加密算法以及对称加密算法等。但是由于无源标签不支持如此大量的运算和存储,因此不能得到很好的推广使用。超轻量级协议采用异或、位运算等实现加密,虽然加密算法的实现过程简单,但是因为算法的单一性,很容易遭受攻击,安全性不能得到很好的保障。轻量级协议一般采用Hash函数去实现加密,既满足了RFID系统轻量级的要求,也保证了系统的安全性。
本文参考了诸多前人的认证协议[3-10]。文献[3]提出了最初的HashLock协议。该协议采用基于Hash的随机应答机制。但是最后在服务器对标签进行应答时,会将标签ID进行明文发送,使得攻击者可以轻易地追踪标签,因此该协议不能有效地抵御跟踪攻击等,并且该协议不适用于新型移动RFID系统。文献[4]提出了一种新形式的移动RFID双向认证协议。该协议能够应用到移动RFID系统中去,并且在该协议中采用了椭圆曲线算法对信息进行加密,具有很好的安全性。但是因为加密算法中需要大量运算,现有的轻量级移动RFID系统中,计算量已经超出了标签的计算能力。文献[5]提出了一种基于动态ID的移动RFID认证协议,但是在该协议中最后阶段涉及到了ID的更新过程,容易因为物理干扰或者人为破坏,而导致ID更新不同步的情况,因此该协议不能有效地抵御去同步化攻击。文献[6]提出的协议满足了移动RFID系统的要求,在读写器与后台服务器之间加入了验证过程,但是忽略了标签与后台服务器之间的双向认证,因此该协议不能有效地抵御攻击者发起的假冒攻击。文献[7]中设计的协议满足了读写器、阅读器与标签三者之间的认证过程,但是其在信息更新时,一旦出现意外情况,就会导致后台服务器与标签之间的信息不同步。因此该协议不能很好地抵御异步攻击。
基于以往研究,本文提出了一种基于Hash运算的轻量级移动RFID双向认证协议。
1 改进的轻量级移动RFID双向认证协议
1.1 背景消除建模
在对当前存在的传统RFID双向认证协议和移动RFID双向认证协议进行分析研究后,在这些协议的基础上,提出了一个采用动态ID方式的移动RFID双向认证协议,并且该协议能够很好地满足RFID系统中对标签轻量级的要求,使用伪随机数产生器替代随机数产生器,降低标签的运算量。相比较于其他认证协议,该协议能够很好地抵御异步攻击、重放攻击等多种攻击。Hash函数因其单向不可逆的特性,被认为它在协议中是绝对安全的。表1给出了改进后的移动RFID双向认证协议涉及到的符号。
表1 移动RFID双向认证协议符号
1.2 协议的认证过程
本文提出的改进移动RFID双向认证协议如图1所示。
图1 协议执行
(1)阅读器首先向标签发送质询请求并发送一个随机数Nr。
(2)标签接到请求后,产生伪随机数Nt,计算P=Hkt(Nt⊕Nr⊕TID),将计算结果分为左右两部分,将PL以及Nt作为对读写器的应答,并保留PR的值,便于接下来对于读写器身份的验证。
(3)阅读器接收到标签的应答后将自身保存的Nt'与Nt值进行比较,若相等则终止认证,否则计算Q=Hkr(RID⊕Nt⊕Nr),将计算结果分为左右部分,将QL、Nr以及标签传递过来的消息发送给服务器。
(4)服务器接收到消息后,先判断Nr的值是否与自身保存的Nr'相等,若相等,终止认证,否则验证读写器的身份。从数据库中得到curRID和cur_kr的值,计算QL'=Hkr'(RID'⊕Nt⊕Nr)L是否与QL相等,若不相等,从数据库中取出上一轮的preRID和pre_kr再次计算QL'的值是否与QL相等,若不相等则终止认证,否则开始验证标签的身份。从数据库中得到curTID和cur_kt的值,计算PL'=Hkt(Nt⊕Nr⊕TID)L是否与PL相等,若不相等,从数据库中取出上一轮的preTID和pre_kt再次计算PL'的值是否与PL相等,若不相等则终止认证,若相等则开始更新对应信息。更新pre_kr=kr,pre_kt=kt,preRID=RID,preTID=TID,cur_kr=Hkr(kr⊕ RID),cur_kt=Hkt(kt⊕ TID),curRID=Hkr(Nr⊕ RID),curTID=Hkt(Nt⊕ TID),并将PR'与QR'发送给阅读器作为答复。
(5)读写器将自身保存的QR与QR'进行比较,若不相等,则认证失败,否则读写器与后台服务器之间的双向认证完成,读写器开始更新对应的kr和RID,并将PR'发送给标签。
(6)标签接收到消息后,拿出自身保存的PR与PR'进行比较,若不相等,则认证失败,否则更新TID与kt的值。
2 协议安全性分析
本文改进的协议运用了Hash不可逆运算、异或运算,以及伪随机数产生器等多项安全技术,在每轮认证中,信息都是变化的,因此协议具有良好的安全性。
2.1 跟踪攻击
跟踪攻击主要是通过追踪标签时在每轮认证过程中发出的一致消息,但是该协议内消息二中的消息随机数ID和密钥在每轮消息认证过程中都是动态改变的,即使追踪者每次都能拿到对应的消息,但是因为Hash函数具有单向且不可逆的性质,因此攻击者不能追踪到标签的ID值。
2.2 异步攻击
异步攻击是目前大多数采用动态ID机制协议普遍面临的问题。异步攻击发生在服务器端和标签端及读写器端,进行信息更新时,通过外界干扰,使它们之间存储的信息不同步,进而导致下次认证失败。在每次的协议认证过程中,都会对上一次的ID值进行保存,当发现认证不通过时,不会马上终止协议的认证,而是通过对应的ID去寻找上一次认证过程中的preID,看能否完成认证,从而有效地避免了异步攻击的问题。
2.3 重放攻击
重放攻击也是目前大多数协议中普遍存在的问题,攻击者通过截获上一轮认证的消息,在下一轮认证的过程中,冒充通信参与的一方,将上轮解惑的消息无改动地发送,以达到欺骗的目的。该协议中引入动态ID以及密钥的机制,每轮的消息认证都会产生不同的结果;同时该协议还采用了过滤机制,因此攻击者不能在服务器、读写器和标签之间成功地进行重放攻击。
2.4 中间者攻击
在本协议中攻击者想要实施中间者攻击就必须要获得随机数Nt和双方共享的密钥kt或者kr,通过重新构造PL或QL的值替换原本的认证信息,去达到认证的目的。但是由于该协议中的ID值和密钥值每轮都是经过更新随机产生的,且ID和密钥并没有以明文的形式出现过。因此,该协议能够成功地抵御中间者攻击。
2.5 双向认证
本协议通过计算P=Hkt(Nt⊕Nr⊕TID)和Q=Hkr(RID⊕Nt⊕Nr)的对应左右部分,完成了双向认证的要求;并且为了提高效率,及时发现重放攻击,读写器和后台服务器中分别保存了标签以及读写器上一轮产生的随机数,能够很好地完成双向认证过程。表2为该协议与其他协议的比对结果。
表2 移动RFID认证协议安全性对比
3 改进协议的形式化分析与证明
BAN逻辑是最早提出的验证协议安全性的一种形式化分析工具,过程大致分为以下几步:
第一步,将协议形式化描述;
第二步,初始化假设;
第三步,确立验证所需要达到的结果;
第四步,形式化分析与验证。
下面就本文改进的协议进行BAN逻辑分析验证。
下面的形式化描述中D代表后端服务器,T代表标签,R代表读写器,kt和kr分别代表服务器与标签和读写器之间的共享密钥,Nt和Nr表示标签和读写器产生的随机数,RID和TID为读写器与标签的ID标识。
(1)协议的形式化描述
(2)初始化假设
(3)协议目标的形式化描述
3 逻辑推理及验证
3.1 验证目标 1:T|≡ D |≡TID
3.2 验证目标2:R|≡ D |≡RID
同理,结合初始化条件以及BAN逻辑的规则可以完成目标3和4的证明,并且证明方式与目标1和2相同。这里因为篇幅有限,不再进行证明。
4 结 语
本文在研究前人提出的RFID双向认证协议的基础上,针对其中存在的安全问题以及系统成本双方面考虑,提出了改进的轻量级移动RFID双向认证协议。通过对协议的安全性分析以及形式化分析,结果显示该协议能够很好地抵御各种攻击,且满足RFID系统轻量级的要求。