基于Hash 函数的RFID 安全认证协议研究
射频识别(RFID)技术是一种利用电磁发射或电磁耦合实现无接触信息传递,进而自动识别和获取目标对象信息数据的技术。作为一种稳定、可靠、快速采集数据并对数据进行加工的新兴技术,RFID得到了广泛应用并突显其强大的实用价值。但RFID技术在安全隐私问题上面临着诸多挑战。为此,本文在已有的RFID协议基础上,通过分析其执行过程及优缺点,提出一种新的基于Hash的RFID双向认证协议,并进行了安全性分析和比较。
RFID简介
1.1RFID系统基本构成
(1)电子标签:由芯片和无线通信天线两个主要部分组成,在电子标签中可以通过存储一些需要被识别的物品相关信息来分类、标识物品。
(2)阅读器:RFID阅读器包含逻辑控制单元、射频接口和无。线通信天线3个部分,主要处理与电子标签之间的通信,实现数据的读写。阅读器既是标签的汇聚部分,也是应用系统的下一级。
(3)应用系统:对读写器转发的所有电子标签信息进行集中统计和分析,并通过安全信道反馈给读写器。RFID系统基本构成如图1所示。
1.2RFID安全性分析
RFID技术在方便人们生活的同时也带来诸多安全隐患,其中,RFID系统对应用的完全开放是造成系统出现安全隐私问题的根本原因。
RFID可能受到的安全威胁有2类:
①物理环境威胁,如设备妨碍、电磁磁扰等;
②人员对系统的攻击,主要有重放攻击、假冒攻击、窃听攻击、位置跟踪等。
主动攻击与被动攻击如图2所示。
RFID相关安全认证协议
2.1 Hash-Lock协议
Hash-Lock协议是Sarma等提出的一种安全协议。标签存储唯一标识ID及metaID,初始状态为锁定状态。后端数据库存储所有的标签密钥key、ID和metaID。
Hash-Lock协议执行过程如下:
① 读写器向标签发出认证请求;
② 标签回答metaID并通过读写器将认证请求响应消息metaID转发给后端数据库;
③ 后端数据库接收消息并检索系统文档,如果阅读器发送过来的metaID与数据库系统中保存的metaID值相同,就返回读写器该匹配项的key和ID;否则,返回给读写器认证失败信息;
④ 读写器接收消息并返回给标签密钥;
⑤ 标签接收密钥信息并利用散列函数验证H(key)与metaID是否相等。如果相等,标签返回给读写器唯一标识;否则,验证失败;
⑥ 读写器判断两份ID数据是否相同。如果相同,则认证成功;否则,认证失败。
2.2随机化Hash-Lock协议
随机化Hash-Lock协议是Weis等提出的一种安全协议。标签保存ID并嵌入随机数产生器,初始状态为锁定状态。后端数据库存储全部标签ID。
随机化Hash-Lock协议认证过程如下:
① 读写器向标签发出认证请求;
② 标签接收认证消息并生成一个R,通过读写器将H(IDk||R)数据值连同R一同转发给后端数据库,其中R是随机数;
③ 后端数据库接收请求信息并检索系统文档,然后返回给读写器全部ID;
④ 读写器检查是否有某个IDj(1≤j≤n),使得H(IDj||R)=H(IDk||R)成立。如果有,则认证通过,并将IDj发送给标签;
⑤ 标签接收数据消息并判断IDj和IDk是否相等。如果相等,则认证通过,否则认证失败。
2.3Hash链协议
在Hash链协议中,标签存有ID和秘密值S,初始状态为锁定状态。系统全部标签数值对(ID,S)保存在后端数据库。
Hash链协议的执行过程如下:
① 读写器向标签发出认证请求;
② 标签接收请求命令并通过散列函数计算G(S),然后标签将计算结果通过读写器响应给后端数据库并使用哈希函数H更替标签的秘密值;
③ 后端数据库接收消息并检索系统文档。计算G(H(S))并和读写器的相应数据比较,如果相等,则认证成功;否则,认证失败。
2.4协议优缺点
Hash锁协议使用标签metaID代替真实的ID,标签对读写器进行认证后再将其ID通过非安全信道发送给读写器。但每次传送的metaID也属于常量值,RFID系统很容易受到非法用户的假冒攻击和重传攻击。随机化Hash-Lock协议和Hash锁协议一样,标签ID仍以明文形式在非安全信道传送,不能应对非法用户的重传攻击。而且每次标签执行认证请求过程中,读写器与后端数据库之间的安全信道需要传送全部标签的ID,具有很大的信息交互量。
Hash链协议中,标签成为一个具有自主更新ID能力的主动式标签。此外,每一次认证过程中,后端数据库都需要针对标签使用2个不同的散列函数G和H进行j次散列运算.随着标签数量规模的扩大,计算负荷也随之加大。
RFID安全认证协议设计
通过分析上述几种安全协议的原理和执行流程,发现这些协议都存在种种安全隐患。本文提出了一种改进的安全协议,实现阅读器-电子标签的双重认证,基本达到认证协议的安全目标。
3.1设计原理
标签存有ID和秘密值S,系统全部标签数值对(ID,S)存储在后端数据库,并且后端数据库和标签都嵌入了随机数产生器.协议流程如图3所示。
3.2安全协议设计
安全协议设计步骤如下:
① 后端数据库产生一个随机数RDB并通过读写器将数值结果连同Query一同发送给标签;
② 标签根据自身ID、读写器认证请求的相关随机数RDB、后端数据库和标签的秘密数值S与散列函数计算出ST,其中ST=H(ID||RDB||S),然后标签产生一个新的随机数RT,通过读写器将新的随机数连同ST一起发送给后端数据库;
③ 后端数据库接收消息并检索系统中的文档数据是否有某个IDj(1≤j≤n),使得H(IDj||RDB||S)=H(ID||RDB||S)成立;如果没有,则认证失败;如果有,则后端数据库根据IDj、标签响应的相关随机数RT、后端数据库和标签的秘密数值S与散列函数计算出SDB,其中SDB=H(IDj||RT||S)。通过读写器将结果数值转发给标签;
④ 标签计算ST=H(ID||RT||S),并比较是否与接收到的H(IDj||RT||S)相同;若相同,则认证通过;若不同,则认证失败;
⑤ 系统分别使用SDB和ST更替后端数据库和标签的秘密数值S。
3.3协议安全性分析
(1) 双向认证。在后端数据库通过散列函数检验H(IDj||RDB||S)和H(ID||RDB||S)是否相等,以及在标签中通过散列函数计算并比较H(ID||RT||S)和H(IDj||RT||S)是否相等,实现RFID系统合法身份的双向认证。
(2) 向前安全。由于随机数R、共享数值S的可变性以及Hash的单向性,即使非法用户获取了H(ID||RDB||S)也查不出标签之前的运作数据。
(3) 防位置跟踪。由于保存在后端数据库中的RDB和数值S是变化的,因此每次读写器请求认证后的反馈消息H(ID||RDB||S)也不相同,有效阻止了攻击者的位置跟踪。
(4) 防重传攻击。由于共享数值S的可变性,非法用户不能再次模拟出读写器响应给标签的数值H(IDj||RT||S),有效防止了重传攻击。
(5) 防窃听。标签ID在非安全信道传播时经过Hash的加密处理,所以非法用户无法窃听标签的真实ID。
(6) 防假冒攻击。假如非法用户将非法标签伪装成合法标签,并使用非法算法返回给读写器认证,由于后端数据库产生的随机数RDB和共享秘密值S是变化的,合法标签响应的H(ID‖RDB‖S)值与伪装标签响应的数值完全不同,因此标签无法通过读写器认证。
(7) 运算负载小,效率高。假设RFID有N个标签。每次认证,在后端数据库中本文协议需要进行N次值对照和N+1个Hash函数,而Hash链方法则需进行N次记录搜索、N次值比较和2N个Hash函数计算,所以当N很大时,本方法运算负载小、效率高。
基于Hash的RFID协议安全性比较如表1所示。表中以“×”表示不符合安全,以“√”表示符合安全。