首页 > 代码库 > 物联网RFID安全研究

物联网RFID安全研究

最经学习了一些物联网RFID的相关安全方案,下面对相关的知识做一个总结。

 

目录:

0x00 RFID是啥?

0x01 RFID面临的问题

0x02 围观各类RFID安全方案

0x03 最新的研究成果和方向

0x04 参考文献

 

0x00 RFID是啥?

RFID即无线射频识别,是一种广泛用于我们生活当中的通信技术。

怎么个广泛应用法呢?举个例子,门禁系统常见吧?我们知道,门禁系统里通常有两个显而易见的东西,一个是通行卡片,一个是门上的读卡器。只要我们将在卡片在读卡器上刷一下,我们就能合法的通过门禁系统。这个过程中其实就完成了,读卡器和卡片之间的RFID通信。

除了这个,还有很多比如说校园卡系统啊、银行卡系统啊等等用到卡片作为身份认证的系统都是用到了RFID进行通信的。

这些卡片当中都存在一个芯片,当和读卡器接触的时候就会通电,然后发出无线电磁信号和读卡器进行通信。

别看芯片这么小,里面可以含有很多计算单元和一个小型存储器的呢。

还有哦,其实除了身份卡片和读卡器之外,还有一个东西是我们看不到的哦。

当当当当,那就是后台的数据库服务器。

读卡器仅仅只是读取数据,真正分析数据,验证身份的就是交给后台的数据库服务器啦。

以上就是RFID中的三个角色啦:卡片(学名标签)、读卡器(学名阅读器)、数据库服务器(学名就是服务器啦)。

那么RFID现在到底面临什么安全问题呢?请听我细细道来。

0x01 RFID面临的问题

下面是这个结构的基本拓扑图:

image

那么啊,这个结构里面,有哪些需要考虑的问题呢?

  • 标签方面:标签也就是我们平常使用的卡片啦。按照前面的介绍,标签里面是有很多计算单元和一个小型存储器的哦。但是出于成本考虑,当然是越少计算单元越好啦。因为这种标签里面的计算资源相对那些“庞大的”加密算法来说,可是相当的拮据啊。如果加多计算单元,可是会让成本骤增的呀。
  • 读卡器方面:由于读卡器相对标签的数量来说,算是比较少的了,所以可以拥有普通PC的计算能力。
  • 服务器方面:数据服务器,其计算资源可是很强大的哦,尤其是现在的云计算,更是让服务器计算能力几近“无限”
  • 通信安全方面:真正的通信安全问题出现在标签和读卡器的双向认证方面。读卡器和服务器的连接通路,认为是安全的,暂不需要考虑其安全问题。

由于数据通路是无线的,所以啊,标签是可以伪造的,读卡器也是可以伪造的。标签伪造很好理解,就是黑阔想进行未授权的访问啊。读卡器伪造呢,就是黑阔们想拿到标签的数据进而伪造标签啦。

以上就是RFID中面临的各种安全问题啦。下面我们围观一下已有的各类安全方案吧。

0x02 围观各类RFID安全方案(图多慎入)

实现RFID安全机制所采用的方法主要有两类:物理安全方案和基于密码技术的软件安全方案 。

(1)物理安全方案

① Kill命令机制

Kill命令机制采用从物理上销毁RFID标签的方法,一旦对标签实施了销毁(Kill)命令,标签将不再可用。

② 静电屏蔽机制

静电屏蔽的工作原理是使用Faraday Cage来屏蔽标签,使之不能接受来自任何读写器的信号,以此来保护消费者个人隐私。

③ 主动干扰

主动干扰的基本原理是使用一个设备持续不断地发送干扰信号,以干扰任何靠近标签的读写器所发出的信号。

④ Blocker Tag阻塞标签法

Blocker Tag是一种特殊的标签,与一般用来识别物品的标签不同,Blocker Tag是一种被动式的干扰器。

(2)基于密码技术的软件安全机制

由于啊,RFID中所采用的物理安全机制存在种种缺点,人们先后提出了许多基于密码技术的安全机制。

① Hash-Lock协议

Hash-Lock协议是由Sarma等人提出,使用metalID来代替真实的标签ID以避免信息的泄漏和被追踪,每个标签拥有自己的访问密钥key,且metalID=Hash(key),简写为metalID=H(key) 。

协议的通信过程如下图所示。

image

协议的本质是让标签回传metalID来代替ID,避免将ID直接通过不安全信道传送给标签读写器。

该协议能够提供访问控制和标签数据隐私保护。但是由于ID没有使用动态刷新机制,metalID保持不变,标签易被跟踪定位。(key,ID)以明文形式发送,容易被窃听者获取。

也就是说,这个协议无法抗拒中间人攻击。

② 随机Hash-Lock协议

由于Hash-Lock协议使用metalID可能被隐私侵犯者追踪定位,为了解决该协议中的标签跟踪性的问题,Weis等人提出了随机Hash-Lock协议。

该协议中,对于标签读写器的不同询问,标签将回传随机数形态的回传值给读写器以避免追踪。

协议的通信过程如下所示。

image

该协议中,对于读写器的访问请求,标签是随机响应的,解决了依据相同响应对标签进行跟踪定位的问题。

但由于IDk仍然以明文方式传输,获取了该信息就可以对标签进行假冒。

此外每次标签的认证,后台数据库都要将所有标签的标识发送给标签读写器,两者之间的通信量很大,同时也难以快速处理突发的信息,该协议不实用。

③ Hash-Chain协议(中期)

NTT实验室提出了一种Hash-Chain协议,本质上,此协议是基于共享秘密的询问-应答协议,但对两个使用不同Hash函数的标签发起认证时,标签总是发送不同的应答。

image

在Hash-Chain协议中,标签是个具有自主ID更新能力的主动式标签,避免了标签定位隐私信息的泄漏。又由于单向的Hash函数,不可能从St,j+1获得St,j,具有前向安全性。

但为了尽量降低标签的制作成本,该协议降低了标签的存储空间和计算能力,只是单向的认证协议,标签在协议的最后没有实现对读写器的认证,标签未确认读写器的合法性。

同时,Hash-Chain协议非常容易受到重传和假冒攻击。只要隐私侵犯者截获了at,j,它就可以进行重传攻击,伪装标签通过认证。

④ 分布式RFID询问-应答安全协议

Rhee等人提了一种适用于分布式数据库环境的RFID认证协议,它是典型的询问-应答型双向认证协议 。

image

到目前为止,还没有发现该协议有明显的安全漏洞或缺陷。

但是,在本方案中,执行一次认证协议需要标签进行两次Hash运算。标签电路中自然也需要集成随机数发生器和散列函数模块,因此它也不适合用于低成本RFID系统。

⑤ LCAP协议

LCAP协议也是询问-应答协议,但是与前面的同类其他协议不同,它每次执行之后都要动态刷新标签的ID。LCAP协议的后台数据库保存两类信息:更新前的信息Prev和更新后的信息。

image

⑥ 再次加密机制

由于RFID标签的计算资源和存储资源都十分有限,因此极少有人设计使用公钥密码体制的RFID安全机制。

到目前为止,公开发表的基于公钥密码机制的RFID安全方案只有两个:Juels等人提出的用于欧元钞票上Tag标识的建议方案;Golle等人提出的可用于实现RFID标签匿名功能的方案。

0x03 最新的研究成果和方向

经过十几年的研究和发展,RFID在安全方案这一块已经做的很成熟了。

但是啊,其实还是有东西可以搞的哦。比如说,降低标签的芯片成本这一块,就有很大的空间。

我们知道,标签的芯片里面,含有许多运算单元。当在固定大小的芯片里面,想要加入更多的运算单元的话,成本自然就更高。

大概怎么个比例呢?举个例子,低级的磁卡成本只需几毛钱甚至几分钱,但是带芯片的卡片,成本可是要几元钱的哦。这种情况下, 哪怕只是节省了1毛钱的成本啊,乘以基数都是非常恐怖的数字。

最新的研究RFID安全方案的话,有两个方案。

①基于PUF的高效低成本RFID认证协议

PUF,即物理不可克隆(Physical Unclonable Function,PUF)。是一种硬件技术,它有一组微型延迟电路,当收到一个随机的二进制输入口令之后,会生成一个唯一的、随机的二进制序列作为响应,而这个响应是利用芯片制造过程中的光刻、掺杂等环节所产生的差异来生成的。由于芯片制造过程中产生的差异本身具有不可模仿和复制的特性,所以每个芯片中的 PUF 电路可以生成无限多个、唯一的、不可复制的口令/响应序列。即使是芯片的制造厂商也不可能从另外一个芯片上复制出一套一模一样的口令/响应序列。

同时,PUF 电路所需的硬件开销很小,一个 64 位的 PUF 电路大概需要 545 个门电路。而根据标签特点而简化设计的Hash运算和高级加密标准(Advanced Encryption Standard,AES)运算分别需要1700和3400个门电路。

协议的具体认证过程如下图所示:

image

这里用到了LSRF(线性反馈移位寄存器,Linear Feedback Shift Register),LFSR 是用来生成二进制序列的一种机制,如果 LFSR 的种子保持机密,LFSR 就可作为伪随机数产生器。同时,对于相同的密钥种子,两个相同结构的 LFSR 会产生相同的伪随机数,这个特点也用来对阅读器和标签的共享密钥进行同步更新。

②基于超轻量级的加密算法的RFID认证

既然降低成本的关键在于芯片,芯片的关键又在于加密算法,那么降低加密算法的复杂度不就可以了吗?

没错,这就是最简单直接的做法,虽然想做到这个并不简单。

现在超轻量级的加密算法的研究非常火热,但是其设计难度也大大增加了。原因在于,大型加密算法重复的循环操作比较多所以造成速度慢,如果要做超轻量级的加密算法的话,需要对加密的每一步都做出合适合理的设计才行,这是典型的增加脑力劳动来减少体力劳动啊。

下面将给出一个应用于RFID的超轻量级加密算法的例子:

image

其中,Rot(A, B)表示 A 向左旋转 n bit(就是移位啦),且n 是 B 中 1 的个数。

例如,Rot(111000,1110)=000111。

0x04 参考文献

RFID认证协议的安全性分析_王明辉

安全的RFID认证协议研究设计_杜治国

基于PUF的高效低成本RFID认证协议_贺章擎

一个超轻量级的RFID认证协议_马巧梅