基于ID变化的RFID安全协议
射频识别(RFID)系统是使用无线射频技术在开放系统环境中进行对象识别,通过射频信号自动识别目标对象并获取相关数据。这种识别的优点之一是不需要物理接触或其他任何可见的接触。现在,许多人已将RFID系统看作是一项实现普适计算环境的有效技术。但同时,关键问题是要确保只有授权用户能够识别各个标签,而攻击者无法对这些标签进行任何形式的跟踪。针对这一问题,国内外开展了大量关于RFID隐私安全保密的研究,提出了许多RFID安全协议,如Hash锁协议、随机化Hash锁协议、Hash链协议等,但这些协议存在着安全隐患、效率低下等缺陷。本文针对这些协议的不足,进一步对RFID的安全隐私进行研究。
1 RFID基本原理
1.1 RFID系统基本构成[1]
RFID系统一般由三大部分构成: (1)标签配备有天线的微型电路,但通常没有处理器,仅由数千个逻辑门组成;(2)读写器。一个有天线的无线发射与接收设备,它的处理能力、存储空间都比较大;(3)后台数据库。用户根据系统需求进行选择的数据库系统,存储所有标签的信息,它通过可信的读写器获得标签发送的信息,具有很强的处理能力和存储空间。一般认为读写器到后台数据库的通信信道为安全信道,标签到读写器之间的信道为不安全信道。
1.2 RFID安全隐患与安全需求
RFID读写器与标签之间通过空中接口进行通信,不需要任何物理或可见接触,使得隐私侵犯者可以通过监听,截获双方通信信息,获取标签中隐私的信息。此外,标签中含有唯一的序列号,隐私侵犯者可以通过其序列号追踪、定位标签,从而获得标签所有的信息。
正因为如此,设计安全、高效的RFID安全协议成为了一个具有挑战性的问题。而安全的射频识别系统对单向攻击应该能够予以防范:
(1) 标签信息泄漏问题:避免未授权读写器或者隐私侵犯者获取标签中的敏感数据。
(2) 标签的可追踪性:避免隐私侵犯者通过对标签序列号追踪定位获得标签持有者的隐私信息。
(3) 前向安全性:避免隐私侵犯者根据窃取的敏感信息获取标签历史活动记录和标签持有者隐私信息。
2 RFID安全协议
基于密码学的发展,到目前为止,已经有多种RFID安全协议被提出来,本文将介绍3种典型的RFID安全协议,并分析其优缺点。
2.1 Hash锁[2]协议
Hash锁(Hash Lock)协议是由Sarma等人提出来的。为了避免信息泄漏和被追踪,使用metaID代替真实的标签ID,协议流程如图1所示。
Hash锁协议的执行过程如下:
(1)读写器向标签发送Query认证请求。
(2)标签将metaID发送给读写器。
(3)读写器将metaID转发给后台数据库。
(4)后台数据库查询自己的数据库,如果找到与metaID匹配的项,则将该项的(Key,ID)发送给读写器,其中ID为待认证标签的标识,metaID=H(Key);否则返回给读写器认证失败信息。
(5)读写器将接收后台数据库的部分信息Key发送给标签。
(6)标签验证metaID=H(key)是否成立,如果成立,则将其ID发送给读写器。
(7)读写器比较从标签接收到的ID是否与后台数据库发送过来的ID一致,如果一致,则认证通过;否则,认证失败。
由上述过程可以看出,Hash锁协议中没有ID动态刷新机制,并且metaID也保持不变,ID是以明文的形式通过不安全的信道传送的,因此,Hash锁协议非常容易受到假冒攻击和重传攻击,攻击者也可以很容易地对标签进行追踪。也就是说,Hash锁协议没有达到其安全目标。
2.2 随机化Hash锁协议
为了解决Hash锁中位置跟踪的问题,将Hash锁方法加以改进,采用随机化Hash锁(Random Hash-Lock)协议,此协议由Weis等人提出,采用了基于随机数的询问-应答机制。首先介绍字符串连接符号“||”,如标签ID和随机数R的连接即表示为“ID||R”。该方法中数据库存储各个标签的ID值,设为ID1、ID2 … IDk…IDn。其协议流程如图2所示。
随机化Hash锁协议的执行过程如下:
(1)读写器向标签发送Query认证请求。
(2)标签生成一个随机化数R,计算H(IDk||R),其中IDk为标签的标识,标签将(R,H(IDk||R) )发送给读写器。
(3)读写器向后台数据库提出获得所有标签标识的请求。
(4)后台数据库将自己数据库中的所有标签标识(ID1,ID2…IDn)发送给读写器。
(5)读写器检查是否有某个IDj(1≤j≤n),使得H(IDj||R)=H(IDk||R)成立;如果有,则认证通过,并将IDj发送给标签。
(6)标签验证IDj与IDk是否相同,如果相同,则通过认证。
在随机化Hash锁协议中,认证通过后的标签标识IDk仍以明文的形式通过不安全信道传送,因此攻击者可以对标签进行有效的追踪。同时,一旦获得了标签的标识IDk,攻击者就可以对标签进行假冒,而该协议无法抵抗重传攻击。因此,随机化Hash锁协议也是不安全的。不仅如此,每一次标签验证时,后台数据库都需要将所有标签的标识发送给读写器,二者之间的数据通信量很大,该协议不实用。
2.3 Hash链协议
NTT提出了一种Hash链(Hash-Chain)[3-4]协议。在第i次与读写器交换时,射频标签有初始值Si,发送ai=G(Si)给读写器,再根据以前的Si更新密钥Si+1=H(Si)。其中G和H都是Hash函数,如图3所示。
该方法满足了不可分辨和前向安全的特性。G是单向方程,因此攻击者能获得标签输出ai,但是不能从ai获得si。G输出随机值,攻击者能观测到标签的输出,但不能将ai和ai+1联系起来。H也是单向方程,攻击者能篡改标签并获得标签的密钥值,但不能从si+1中获得si。该算法的优势很明显,但是计算和比较相对复杂。为了识别一个ID,后台服务器不得不计算ID列表中的每个ID。假设有N个一致的标签ID在数据库中,数据库不得不进行N次ID搜索、2N次Hash方程计算以及N次比较。计算机处理负载随着ID列表长度的增加线性也增加,因此,该方法也不适合存在大量射频标签的情况。
{$page$}
3 基于ID变化的RFID安全协议
为了避免Hash锁方法中的人为攻击和恶意跟踪的缺陷,并克服随机数Hash锁方法中计算负载过大的不足,结合以上几种方法的思想,本文提出了一种基于ID变化的RFID安全协议,实现了安全高效的读取访问控制。
3.1 工作原理
在此协议中,后台数据库的记录主要包括3列:H(ID),ID,Pointer,主键为H(ID)。其中ID为电子标签的唯一标识符, H(ID)是对应ID的单向Hash函数的计算值,Pointer是数据记录的关联指针,主要用来保持数据一致性[5]。
3.1.1 标签的锁定
对于每个电子标签,出厂时都有其唯一的ID值,在实际应用中数据库首先建立所有标签在数据库中的初始记录(H(IDi),IDi,Pointeri),标签在未收到激励信号时,处于锁定状态。
3.1.2 标签的解锁
3.2 数据实验分析
设数据库初始化存储了3个标签,ID分别为1、2、3,其初始化如表1所示。
假设阅读器要询问ID为2的标签,首先阅读器问标签发送询问消息和随机数9,标签向阅读器发送数据(H(2),H(2||9)),然后标签计算自身的ID*=S(2) 和H(ID*)=H(S(2));数据库根据H(2)找到记录(H(2),2,0),然后计算H(ID||R)=H(2||9),与收到的H(2||9)相同,证明了标签的合法性;接下来数据库计算ID*=S(2)和H(ID*)=H(S(2)),并将(ID*,H(ID*)发送给阅读器,至此阅读器知道了该标签更新后的ID值ID*,然后阅读器将H(ID*)=H(S(2))发送给标签;由于Pointer2=0,所以数据库中建立一条记录4:(H(S(2),S(2),2),并将记录2改为(H(2),2,4)。标签接收到数据H(S(2))后,比较发现等于之前计算的H(ID*)=H(S(2)),于是将自身的ID值更新为ID*=S(2)。此时数据库记录如表2所示。
下一次再与此标签通信时,数据库根据收到的标签2的H(ID)=H(S(2)),找到第4条记录,该记录的Pointer为2,则第2次更新ID值的记录将会覆盖第2条记录。
当标签被询问过1次之后,数据库始终保持了2条与该标签有关的数据记录,这主要是为了保证数据的一致性。假设在某次通信中阅读器在第5步发送的H(ID*)未成功且被标签收到,则标签2的ID值不会更新,此时数据库的第4条记录是错误的。这样在下次与标签2通信中,查找到的仍是记录2,数据库根据记录2的Pointer值为4,将修改第4条记录,这样就能够保持数据一致性。
3.3 性能分析及方法特点
本协议使用2个单向的Hash函数实现标签ID的自动更新和通信信息加密,能够有效地抵抗各种攻击。
(1)防窃听。标签和标签读写器之间的通信信息都经过了Hash函数H加密。根据Hash函数的性质,隐私侵犯者是无法根据加密后的信息获取加密的信息。
(2)防哄骗。标签的ID在每完成1次通信过程后将使用Hash函数S进行自主更新为ID*,隐私侵犯者无法伪造出H(ID*||R)。
(3)防重传。每次认证前阅读器将产生一个新的随机数R,隐私侵犯者能截获上次的H(ID||R),但无法伪造新一次认证的H(ID||R)。
(4)防追踪。标签中的ID在每次询问后都将更新,并且同一标签在不同认证过程中,阅读器都将产生随机数R。这些都是标签对每次询问的响应结果。
通过上述分析可以看出,基于ID变化的RFID安全协议实现了标签ID的隐藏性、随机性以及访问控制,完全满足RFID系统的安全需求。
本协议的特点主要表现在以下几个方面:
(1)前向安全性。因为标签的ID在每次通信过程后就会执行ID*=S(ID)更新。根据Hash函数的性质,隐私侵犯者即使获取了ID*,也无法获得ID和标签的历史活动记录,从而保证了前向安全性。
(2)实现双向验证。后台数据库通过对H(ID||R)的计算比较,实现了数据库对标签的验证;而标签通过对H(ID*)的计算比较,则实现了对数据库的验证。
(3)数据一致性。根据此协议的后台数据库结构,当标签被询问过1次之后,数据库始终保持了2条与该标签有关的数据记录,这样一来即使标签无法收到阅读器返回的信息,造成标签的ID值不更新,也不会造成数据库与标签的数据同步问题。
{$page$}
本文提出的基于ID变化的RFID安全协议,具有前向安全、双向验证等特点,基本上弥补了目前安全保护方法安全性不够等缺陷,是一种较为实用的算法,但此方法还存在一些不足。一次双向验证过程中,标签仍需要进行3次Hash函数运算,这对低成本的标签是费时的,这些尚需进一步研究改进。