一种基于Hash函数的RFID双向认证协议
扫描二维码
随时随地手机看文章
关 辉
(苏州市职业大学 计算机工程学院,江苏 苏州 215104)
引 言
RFID(Radio Frequency Identification,射频识别)利用射频信号通过空间耦合(交变磁场或电磁场)在阅读器和电子标签之间实现无接触的信息传递,并可通过所传递的信息达到自动识别的目的[1]。随着大规模集成电路技术的不断进步, RFID 产品的成本正不断降低,RFID 技术在各行各业的应用也越来越广泛。但随之而来的各种安全问题也日益严峻,并逐渐成为制约 RFID 进一步推广应用的重要因素。因此,必须开发出一种高效、可靠和具备一定强度的安全技术,来解决RFID 的安全问题。
1 RFID系统面临的安全威胁
基本的RFID 系统主要由读写器(Reader)和标签(Tag) 两部分组成。标签是由IC 芯片和无线通信天线组成的微型电路,每个标签都具有唯一的电子编码 ;读写器负责向标签发射读取信号并接收标签的应答,对标签的对象标识信息进行解码,将对象标识信息和标签上其它相关信息传输到主机以供处理[2]。由于标签和读写器之间的通信是非接触和无线的, 很容易造成一些安全问题。因此,RFID 系统面临的安全威胁主要体现在以下两个方面:
(1)标签信息泄漏
没有安全机制的电子标签会向邻近的读写器泄露标签内容和一些重要信息。由于低成本电子标签资源的有限性,它们普遍缺乏支持点对点加密和PKI 密钥交换的功能。在RFID 系统应用过程中,恶意攻击者能够读取、篡改电子标签上的数据。
(2)恶意跟踪
在 RFID 系统中,电子标签不用保存和传输大量信息, 大量的数据都保存在后台数据库中。通常情况下标签只需要传输简单的标识符,通过该标识符访问数据库即可获得目标对象的相关数据和信息。因此,即使标签进行加密后不知道标签内容仍然可以通过固定的加密信息追踪标签,得出标签的定位信息,从而进一步推断出标签持有者的行踪。
2 现有安全方案
目前,实现 RFID 安全机制所采用的方法主要有两大类:
一类称之为物理方法,另一类称之为逻辑方法[3]。
2.1 物理方法
物理方法主要依靠外加硬件设备或硬件功能从而阻止标签与读写器之间的通信。目前主要的方法有:KILL 标签、法拉第网罩和主动干扰等。KILL 标签是使标签失效,但标签破坏后无法重用;法拉第网罩可以屏蔽无线电波,但需增加硬件设备,提高了成本 ;主动干扰法可以使用户通过主动发送信号来干扰附近读写器的操作,但可能导致非法干扰[4]。
2.2 逻辑方法
逻辑方法是一种基于加密认证技术的安全机制,通过设计读写器与标签之间相互认证的方案,来实现 RFID 系统的信息安全。目前,这种方法被更多地采用。具有代表性的主要有以下几种方案:
(1)Hash锁方案[5]
该方案使用 metaID 来代替标签真实 ID。读写器存储每个标签的访问密钥 K, 标签中存储对应的 metaID, metaID=Hash(K),此时标签处于“加锁”状态。若要“解锁”标签,读写器需要发送 K 值到标签,标签通过Hash 函数计算出Hash(K),若该值与存储的 metaID 匹配则解锁,发送标签真实ID 给读写器。
该方案可以提供访问控制和标签数据隐私保护,但由于其metalID 固定,且访问密钥 K 和标签 ID 以明文形式发送, 易被跟踪、伪造攻击和重传攻击。
(2)随机 Hash锁方案[5]
该方案是Hash 锁方案的扩展。标签包含有 Hash 函数和伪随机数生成器,读写器请求访问标签时,标签用一对数据(r, Hash(IDi|| r))响应读写器的询问,其中 r 是标签产生的一个随机数,Has(h IDi|| r)是第i 个标签的ID 与随机数r 的Hash 值。读写器收到响应后,在后台数据库中遍历所有标签 ID 和 r 的Hash 值,如果找到匹配的则发送其ID“解锁”标签。该方案虽然解决了标签定位隐私问题,但标签的秘密信息一旦被截获,侵犯者可以获得访问控制权并通过信息回溯得到标签历史记录,从而推断出标签持有者的隐私。
(3)Hash 链方案[6]
该方案采用一种链状的Hash 过程来加强安全。标签最初设置一个随机的初始化标识符 S1,并包含两个不同的Hash 函数 G 和 H,当读写器请求标签时,标签返回当前标签标识符 rk=G(Sk)给读写器, 同时自动更新标识符 Sk+1=H(Sk),读写器通过遍历获取匹配的值,完成验证。
该方案的主要优点是标签实现了自主ID 更新,从而提供了前向安全性,但只能对标签身份进行认证,不能阻止重放攻击和假冒攻击。
3 基于Hash函数的双向认证协议
通过对RFID 系统安全技术的分析,发现现有的RFID 安全技术在不同程度上都存在着这样那样的缺陷。本文提出了一种基于 Hash 函数的双向认证协议。
在初始条件下,标签中包含一个伪随机数生成器和一个Hash 函数,并保存有一个密钥 ki ;读写器中也有一个伪随机数生成器和一个相同的Hash 函数 ;后台数据库中保存有每一个标签的密钥集合 K。
具体认证过程如下:
(1)读写器生成一个随机数 rr,发送给标签并向标签发出访问请求。
(2)标签收到请求后, 生成另一随机数 rt, 并计算
m=rt 5 ki,n=Hash(rt || rr),将 m、n 发回给读写器。
(3)读写器将 m、n 和 rr 发送给后台数据库。
(4)遍历后台数据库中每一个密钥 k,计算 r=k 5 m,判断 Hash(r || rr)是否等于 n。若找到某个密钥 kj 满足条件, 则停止计算并将 kj 发给读写器 ;若全部遍历完后所有密钥都无法满足条件则认证失败。
遍历后台数据库中每一个密钥 k,计算 r=k 5 m,判断 Hash(r || rr)是否等于 n。若找到某个密钥 kj 满足条件, 则停止计算并将 kj 发给读写器 ;若全部遍历完后所有密钥都无法满足条件则认证失败。
(5)读写器收到后台数据库发来的密钥 kj 后,计算 Hash(kj || rr || rt)并发给标签。
(6)标签计算 Hash(ki || rr || rt)并与读写器发来的 Hash 值进行比较,若相同则完成认证。如图 1 所示。
4 性能分析
(1)标签资源是 RFID 系统的瓶颈,本协议中标签仅需 要存储密钥 ki、随机数 rt 和读写器发来的随机数 rr,涉及的运 算是两次 Hash 运算和一次异或运算,并生成随机数一次。总 体来说对标签运算能力要求不高,适合实际应用。
(2)防非法读取 :标签和读写器都需经过身份认证后才 能交换数据,可有效防止非法读取。
(3)防窃听 :认证过程中所有传递的有用信息均经过 Hash 函数加密或随机数异或处理,可有效防止窃听。
(4)防位置跟踪 :每次产生的随机数都不相同,因此标 签在每次通信中所传输的消息也都是不同的,可有效防止因固 定输出而引发的位置跟踪问题。
(5)防伪装哄骗和重放:随机数在每次通信时都是不同的, 攻击者即使记录下标签先前发出的信息,也无法模拟出下次标 签发出的信息,可有效防止哄骗和重放攻击。
(6)前向安全性 :两个随机数在每次通信中均不同,即 使攻击者截取了某次标签的输出,也无法根据该值推算出以 前标签的输出。
(7)双向身份认证 :通过计算 r=k 5 m 并判断 Hash(r || rr)是否等于 n,读写器实现了对标签的身份认证 ;通过计算 Hash(ki || rr || rt)并与 Hash(kj || rr || rt)进行匹配,标签实现 了对读写器的身份认证。
5 结 语
本文在分析了 RFID 系统面临的安全威胁和现有的安全方案后,针对一些典型安全方案的不足,提出了一种基于Hash 函数的RFID 双向认证协议。该协议应用成本较低,标签负载较小,实现了读写器和标签之间的双向身份认证,可以保证前向安全性,在一定程度上为RFID 系统提供了更好的安全隐私保护。