RFID是20世纪90年代兴起的一项非接触式的自动识别技术,其无线通信方式和无可视性读写的要求,给我们带来了极大方便,也带来了很多安全隐私问题。针对RFID 的安全隐私问题, 目前国内外开展了很多加强RFID安全隐私保护的研究,并提出了一系列的方法,如Hash锁、随机Hash锁和Hash链,但这些方法存在安全性不高或效率低等缺陷。本文针对现有方法的不足,进一步对RFID的安全隐私保护展开研究。
1 RFID技术及其安全隐私分析
RFID系统主要由阅读器、标签及后端数据库组成,如图1所示。
目前RFID技术已经吸引了工业和学术界越来越多的关注,并已广泛地应用于供应链管理、门禁控制、电子钱包[1]等各种场合。然而RFID技术属于非接触式自动识别技术,其面临的安全隐私威胁主要有:
(1)非法读取。商业竞争者可通过未授权的阅读器快速读取超市的商品标签数据,获取重要的商业信息;
(2)位置跟踪。通过RFID标签扫描,依据标签的特定输出可对消费者位置进行跟踪定位;
(3)窃听。因RFID系统在前向信道的信号传输距离
较远,窃听者可轻易窃取阅读器发出的信号数据;
(4)拒绝服务。人为的信号干扰使得合法阅读器不能正常阅读标签数据;
(5)伪装哄骗。通过伪装成合法标签,哄骗阅读器为其提供错误的数据;
(6)重放。根据窃听到的阅读器和标签问的数据通信,重复之前的通信行为从而获取数据信息。
2 RFID安全隐私保护
RFID的安全隐私问题阻碍了RFID技术的进一步推广,引起了消费者的高度关注,加强对RFID 的安全隐私保护有着极其重要的意义。
2.1前提与要求
假定阅读器与后台数据库的通信是在一条安全可靠的有连接信道上进行,但阅读器与标签之间的无线通信易被窃听。要普及RFID技术,必须保证RFID标签的低成本实现。
由于标准的安全机制要求的计算比较复杂,如SHA一1约需12K个门,这在低成本标签上无法实现,因此可采用低成本的单向Hash函数进行加密[2]。
安全的RFID 系统应能抵御各种攻击,且考虑到较坏的情况,即使外人获得了标签内部的秘密数据,也应保证其无法追踪到跟标签有关的历史活动信息,即保证前向安全性。
2,2典型方法
典型的加强RFID安全隐私保护的访问控制方法主要有Hash锁、随机Hash锁和Hash链,它们都是基于单向Hash函数实现的。
2.2.1 Hash锁(Hash Lock)[2]
采用Hash锁方法控制标签的读取访问,其工作机制如下:
锁定标签:对于唯一标志号为ID的标签,首先阅读器随机产生该标签的Key,计算metaID=Hash(Key),将metaID发送给标签;标签将metaID存储下来,进入锁定状态。阅读器将(metaID,Key,ID)存储到后台数据库中,并以metaID 为索引。
解锁标签:阅读器询问标签时,标签回答metaID;阅读器查询后台数据库,找到对应的(metaID,Key,ID)记录,然后将该Key值发送给标签;标签收到Key值后,计算Hash(Key)值,并与自身存储的metaID值比较,若Hash(Key)=metaID,标签将其ID发送给阅读器,这时标签进入已解锁状态,并为附近的阅读器开放所有的功能,如图2所示。
方法的优点:解密单向Hash函数是较困难的,因此该方法可以阻止未授权的阅读器读取标签信息数据,在一定程度上为标签提供隐私保护;该方法只需在标签上实现一个Hash函数的计算,以及增加存储metaID值,因此在低成本的标签上容易实现。
方法的缺陷:由于每次询问时标签回答的数据是特定的,因此其不能防止位置跟踪攻击;阅读器和标签问传输的数据未经加密,窃听者可以轻易地获得标签Key和ID值。
2.2.2随机Hash锁(Random Hash Lock)
为了解决Hash锁中位置跟踪的问题,将Hash锁方法加以改进,采用随机Hash锁方法。首先介绍字符串连接符号“ ,如标签ID和随机数R的连接即表示为“IDIIR”。该方法中数据库存储各个标签的ID值,设为IDl、ID2⋯IDk⋯ID 。
锁定标签:通过向未锁定的标签发送简单的锁定指令,即可锁定该标签。
解锁标签:阅读器向标签ID发出询问,标签产生一随机数R,计算Hash(IDIIR),并将(R,Hash(IDIIR))数据对传送给阅读器;阅读器收到数据对后,从后台数据库中取到所有的标签ID值,分别计算各个Hash(IDIIR)值,并与收到的Hash(IDIIR)比较,若Hash(IDk『JR)=Hash(ID『JR),则向标签发送IDk;若标签接收到的IDk=ID,此时标签即被解锁,如图3所示。
在该方法中,标签每次回答是随机的,因此可以防止依据特定输出而进行的位置跟踪攻击。但是,该方法也有一定的缺陷:(1)阅读器需要搜索所有标签ID,并为每一个标签计算Hash(IDkIIR),因此标签数目很多时,系统延时会很长,效率并不高;(2)随机Hash锁不具备前向安全性,若敌人获得了标签ID值,则可根据R值计算出Hash(IDIIR)值,因此可追踪到标签历史位置信息。
2.2.3 Hash链(Hash Chain)[4]
NTT实验室提出了一个Hash链方法,其保证了前向安全性,工作机制如下:锁定标签:对于标签ID,阅读器随机选取一个数Sl发送给标签,并将(ID,S )存储到后台数据库中,标签存储接收
到Sl后,进入锁定状态。
解锁标签:在第i次事务交换中,阅读器向标签发出询问消息,标签回答ai=G(S。),并更新Si+l=H(s。),其中G和H为单向Hash函数,如图4所示。
阅读器接收到ai后,搜索数据库中所有的(ID,S1)数据对,并为每个标签计算
ai =G(H (s1)),比较ai*是否等于ai,若相等,则返回相应ID。
方法优点:具有不可分辨性,因为G是单向Hash函数,外人获得a。值不能推算出S。值,当外人观察标签输出时,G输出的是随机数,所以不能将a。和a。+l联系起来;具有前向安全性,因为H是单向Hash函数,即使窃取了Si+1值,也无法推算出S 值,所以无法获得标签历史活动信息。
方法缺点:需要为每一个标签计算ai*:G(H (s1)),假设数据库中存储的标签个数为N,则需进行N个记录搜索,2N个Hash函数计算,N次比较,计算和比较量较大,不适合标签数目较多的情况。
3 Key值更新随机Hash锁
鉴于上述几种安全隐私保护方法存在的缺陷,并结合几种方法的思想,本文提出了一种“Key值更新随机Hash锁”方法,实现了安全高效的读取访问控制。
3.1工作原理
数据库记录主要包括4列:H(Key),ID,Key,Pointer,主键为H(Key)。其中ID为标签唯一标志号,Key是阅读器为每个标签选取的随机关键字,H(Key)是Key的单向Hash函数H计算值,Pointer是数据记录关联指针,主要用来保证数据的一致性[5]。
下面详细阐述该方法的基本工作原理:
(1)锁定标签
对于标签ID,首先阅读器随机选取一个数作为该标签的Key,将Key值发送给该标签,并建立标签在数据库中的初始记录(H(Key),ID,Key,0)),标签将接收到的Key值存储下来后,进入锁定状态。
(2)解锁标签
1)数据库首先产生一个随机数R,传送给阅读器,然后阅读器将询问消息Query和R都发送给标签;
2)标签根据接收到的R和自身Key值,计算H(Key)和H(KeylIR)的值,然后将(H(Key),H(KeylIR))数据对发送给阅读器,接着自行计算H(IDIIR)和Key =S(key),但此时Key值并不更新。
3)阅读器查找数据库中的记录, 若找到记录i:
(H(Keyi),IDk,Key。,Pointeri),其中H(Key。):H(Key),则数据库计算H(KeyjIIR),并比较H(Key ItR)与接收到的H(KeyIIR)值是否相等。若不相等,则忽略此消息,表明标签是非法标签,在此阅读器完成对标签的合法性验证;若相等则继续下一步;
4)数据库计算H(IDkIIR)的值,并将IDk和H(IDkIIR)的值都传送给阅读器。然后阅读器将H(IDkIIR)发送给标签;
5)数据库计算Key*i=S(key。)和H(Key* )的值。若Pointeri:O, 则在数据库中添加新的记录J:(H(Key*i),IDbKey i,i),并将记录i修改成(H(Key。),IDbKeyij); 若Pointer !=O, 则找到第Pointer。条记录, 将其修改成(H(Key i),IDk,Key i,i);
6)在标签接收到H(IDkIIR)后,比较其与标签在第2步中计算的H(IDIIR)是否相等,若相等,则将自身的Key值更新为Key ,标签进入解锁状态,对阅读器开放其所有功能;若不相等,表明阅读器是非法阅读器,标签保持沉默,在此标签完成对阅读器的验证。如图5所示。
3.2数值实验
设数据库初始时存储了两个标签,ID分别为1、2,随机选择的Key分别为5、12,数据库初始化如表1所示。
设阅读器要询问ID为1的标签,首先阅读器向标签发送询问消息和随机数3,标签向阅读器回答数据(H(5),H(5II3)),接着自行计算自身的H(IDIIR)=H(1Il3)值和Key =s(5);阅读器根据H(5)查找后台数据库,找到记录1:(H(5),1,5,0),数据库计算H(KeyllR)=H(5lI3),与接收到的H(5113)相等,至此验证了标签是合法的;接着数据库计算H(IDIIR)=H(1 113),并将(1,H(1113))传送给阅读器,由此阅读器知道了该标签的ID为1,然后阅读器将H(1113)发送给标签; 数据库计算Key*I=s(5), 由于PointerI=0,数据库中新建一条记录3:(H(s(5)),1,s(5),1),并将记录1修改为(H(5),1,5,3)。标签接收到数据H(1 113)后,比较发现其等于之前计算的H(IDIIR),于是将自身Key值更新为s(5)。此时数据库中的数据记录如表2所示。
下一次再与标签1通信时,数据库根据标签的H(Key)=H(s(5))查找到第3条记录,该记录的Pointer为1,则第2次更新Key值的记录将会覆盖第1条记录。
当标签被询问过一次之后,数据库中始终保持了两条与该标签有关的数据记录,这主要
是为了保证数据的一致性。假设在这次通信中阅读器发送的数据H(ll3)并未成功地被标签接收到,则标签1的Key值将不会更新,此时数据库的第3条记录是错误的。那么在下次与标签1的通信中,查找到的仍是记录1,数据库根据记录1的Pointer值为3,将修改第3条记录,如此就保证了数据的一致性。
3.3性能分析与方法特点
(1)简单实用。将随机数产生器等复杂的计算移到了后台数据库中实现,降低了标签的复杂性,标签只需要实现两个Hash函数H和s,这在低成本的标签上较易实现。
(2)前向安全。因为标签的Key值在每次事务交换后被单向Hash函数s更新,外人即使获取了当前标签Key*值,也无法推算出之前的Key值,所以无法获得标签相关的历史活动信息。
(3)机器运算负载小,效率高。在每次询问过程中,设数据库中存储的标签个数为N,本方法中后台数据库需执行2N个记录搜索(因每个标签存在两条记录),进行3个Hash函数H(KeylIR)、S(Key)、H(IDIIR)计算和1次值比较,以及产生1个随机数R。相比于Hash链方法需计算2N个Hash函数、N个记录搜索和N个值比较,因为Hash函数的计算时延较长,资源消耗大,所以当N很大时,本方法系统的负载将要小得多,速度较快,延时较短,效率较高,但安全性更高。
(4)适应标签数目较多的情况。随着标签数目的增加,计算机搜索与计算所需要的时间缓慢增加,可适应标签数目较多的情况。
(5)实现了身份的双向验证。通过Hash(KeyllR)的计算比较,阅读器实现了对标签的验证;通过Hash(IDIIR)的计算比较,标签实现了对阅读器的验证。
(6)有效实现安全隐私保护。
1)防非法读取:只有经过合法认证的阅读器才可读取标签的数据信息;
2)防位置跟踪:由于随机数R和标签的Key值是更新变化的,因此每次回答的数据(H(Key),H(KeylIR))值也是不同的,可以防止外人根据特定输出而进行的跟踪定位;3)防窃听:传输的ID值和Key都经过了Hash函数加密,外人很难解密得出ID和Key的值,因此有效地防止了窃听;
4)防伪装哄骗:由于外人无法获知Key值,因此无法模拟合法标签发送(H(Key),H(KeylIR))数据,故有效地防止了伪装哄骗攻击;
5)防重放:每次产生的R值是随机的,外人即使窃听了合法阅读器前一次发送的H(ID IIR)数据,也无法再次模拟出H(ID IIR)值,有效地防止了重放攻击。
4结束语
“Key值更新随机Hash锁”方法具有成本低、负载小、效率高、安全性好等特点,且能保证前向安全性,基本上弥补了目前安全保护方法安全性不够和效率低等缺陷,是一种较为实用的算法。但此方法还存在一些不足,如尚无法防止敌人根据流量分析(计算标签的个数)而进行的定位跟踪,同时安全性提高也增加了标签部分计算时延,这些尚需进一步研究改进。