RFID是一种非接触式自动识别技术。RFID系统主要由RFID标签、RFID阅读器、天线、计算机网络和处理RFID标签携带信息的软件组成。RFID的工作原理为:首先,RFID标签进入RFID阅读器读写范围;其次,RFID标签携带的信息被RFID阅读器读取并传输给RFID中间件;再次,RFID中间件按照协议进行数据解析、ID校验、信息过滤等一系列处理;最后,将数据交付给后台系统,完成整个操作。
由于RFID标签具有容量大、抗污染、耐磨损,以及支持移动识别、多目标识别和非可视识别等优势,因此RFID的应用已遍布人们日常生活的各个方面,包括生产制造、物流运输、批发零售、校园门禁、人员跟踪等。
RFID系统的安全与RFID中间件密切相关,也取决于RFID标签中包含数据的安全性,这些数据可能会遭受SQL注入攻击、DoS攻击等。此外,RFID标签也可能会感染、传播恶意代码。下面从RFID安全威胁、RFID安全测试及RFID安全防护三方面进行阐述。
根据标签的计算能力划分,标签可以分为普通标签、使用对称密钥的标签和使用非对称密钥的标签。根据标签内部有无供电划分,标签可以分为被动式标签、半被动式(也称半主动式)标签和主动式标签。对广泛应用的普通标签来说,其很容易被伪造、克隆、篡改等。下面介绍常见的RFID安全风险和问题。
1.RFID安全风险
RFID安全风险主要有以下几种。
1)数据问题
在数据处理过程中出现网络错误、中间件病毒感染等问题或在数据传输过程中出现信号中断等问题,都会导致统计数据失真。
2)隐私问题
若将RFID标签嵌入个人敏感信息,如身份证、护照等,则可能导致隐私被泄露。
3)防伪问题
如果RFID标签没有访问控制机制,那么攻击者只需要具有相同规格的RFID阅读器就能在RFID标签的可写入范围内任意改写数据,假冒合法标签,或者发起重放攻击等。
4)外部风险
RFID系统在与外部网络连接时有可能遭受网络攻击,这会间接或直接威胁到RFID系统。
2.RFID安全问题
RFID安全问题主要有以下几种。
1)标签嗅探
无须RFID标签许可,RFID阅读器便能够读取RFID标签的信息,甚至能够远程读取数据,这就为RFID标签带来了被恶意嗅探的风险。
2)跟踪
RFID阅读器在特定地点可以记录独特的可视标签识别器,如果与个人身份相关联,那么能实现跟踪的效果。
3)应答攻击
攻击者可以使用应答设备进行拦截、转发RFID查询的数据,发起应答攻击。
4)DoS攻击
DoS攻击通过发送大量请求或数据,使网络超载,进而瘫痪,从而中断射频波与标签之间通信,影响RFID系统的正常工作。
5)插入攻击
攻击者尝试向RFID系统发送一段命令,并将命令插入RFID标签存储的正常数据,便可以实现插入攻击。
6)重放攻击
攻击者截获RFID标签与RFID阅读器之间的通信信息,记录RFID标签向RFID阅读器发送的认证请求的回复信息,并将这些信息重新传送给RFID阅读器。
7)物理攻击
物理攻击指攻击者能实际接触到RFID标签,并篡改RFID标签信息。例如,可以使用微探针或破解攻击设备读取、修改RFID标签信息,使用X射线等破坏RFID标签信息,也可以使用电磁干扰破坏RFID标签与RFID阅读器之间的通信。另外,还可以使用物理方式破坏RFID标签信息,使RFID阅读器无法识别RFID标签。
8)病毒
与其他信息系统一样,RFID系统也会遭受病毒的攻击。在大多数情况下,病毒主要攻击RFID系统的后端数据库。RFID病毒可以破坏或泄露数据中的RFID标签信息,拒绝或干扰RFID阅读器与后端数据库的通信。
IC卡又称智能卡,是一种集成电路卡,具有可读写、容量大、加密等功能。它的数据记录可靠,使用方便,常用于一卡通系统、消费系统等。IC卡又分为加密卡和非加密卡。非加密卡指所有扇区的KEYA和KEYB的数值都是FFFFFFFFFFFF的IC卡。若加密卡中部分KEYA和KEYB的数值不为FFFFFFFFFFFF,则此IC卡被称为半加密卡。所有扇区都加密的IC卡被称为全加密卡。
这里主要从RFID系统的RFID标签方面进行安全测试分析,对IC卡进行破解、克隆和数据篡改的测试。
这里测试破解的IC卡的类型为M1卡。以标准M1卡为例,其容量为1KB,共分为16个扇区,每个扇区又分为4个数据块,每个数据块有16字节。每个扇区中的区块按照0~3编号,第3个区块包含KEYA(密钥A)、控制位、KEYB(密钥B)。每个扇区可以通过它的KEYA或KEYB单独加密。0扇区的0区块用于存放制造商代码,包括芯片序列号UID、ATQA和SAK。
随着IC卡密钥研究的不断深入,大量漏洞陆续被发现,主要有PRNG(伪随机数生成器)攻击、默认密钥扫描攻击、知一密求全密攻击、字典密钥扫描攻击等。
(1)PRNG攻击。Mifare Classic采用的是Crypto-1私有加密算法,该算法采用对称密钥算法,主要由PRNG、48位的LFSR(线性反馈移位寄存器)及非线性函数组成。由于该算法中的Filter函数的设计出现缺陷,因此只要改变线性反馈移位寄存器的后8位数值就可能得到对应的Keystream。这个漏洞类似于802.11b WEP算法,不同的明文有极高的可能性存在相同的Keystream,使得整个加密算法出现漏洞。
(2)默认密钥扫描攻击。IC卡制造商为了方便,将除0扇区之外扇区的所有密钥默认设置为FFFFFFFFFFFF(IC卡的默认密钥)。攻击者利用这一脆弱性,可以通过相关软件进行默认密钥暴力破解。
(3)知一密求全密攻击。它利用嵌套认证漏洞,使用任何一个扇区的已知密钥来获取所有扇区的密钥。
(4)字典密钥扫描攻击。它通过使用自定义的密钥库进行暴力破解。字典密钥扫描攻击的破解方法与默认密钥扫描攻击的破解方法相似。
以上是一些IC卡破解的常见方法,下面介绍对IC卡进行破解、克隆和篡改的测试流程。
1.破解IC卡
1)安装环境
这里可以使用本书附带的Windows 7_anheng虚拟机环境(已安装好ACR122U-A9 NFC阅读器驱动,及实验所需破解软件)进行安装,也可以自行选择安装环境。
2)破解M1卡
(1)连接RFID阅读器,双击打开“C:\tools\0201-ACR122U-A9破解M1卡数据\IC卡解密软件”目录下的“破解软件”应用程序,如图3-1所示。
图3-1 打开“破解软件”应用程序
(2)在“M1卡服务程序”界面中设置“选择读卡器”选项,如图3-2所示。
图3-2 “M1卡服务程序”界面
(3)将非接触式钥匙扣型的M1卡放到RFID阅读器的感应区,“嘀”声响后,RFID阅读器指示灯亮起,如图3-3所示。至此,破解M1卡准备工作完成。
图3-3 RFID阅读器指示灯亮起
(4)单击“M1卡服务程序”界面中的“开始破解”按钮,进行M1卡的破解,如图3-4所示。
图3-4 单击“开始破解”按钮
(5)一般对于不同的加密内容,破解需要的时间也不同。当状态栏中出现如图3-5所示的提示信息时,说明破解完成。
图3-5 破解完成
(6)若在状态栏中出现如图3-6所示的提示信息,则表示卡片可能进行了全扇区加密,因无法破解,导致破解失败。
图3-6 破解失败
(7)在破解完成后,会自动在“C:\tools\0201-ACR122U-A9破解M1卡数据\IC卡解密软件”目录下生成破解后的dump文件
,这里为dumpfile 1f870400(2017-03-16 15_07_20)1K.dump,如图3-7所示。
图3-7 生成dump文件
3)转换M1卡数据格式及查看M1卡数据
(1)由于IC卡破解完成后获得的dump文件无法直接阅读,因此需要将其转换成txt文件。此时应双击打开“C:\tools\0201-ACR122U-A9破解M1卡数据\IC卡解密软件”目录下的“Dump转txt”应用程序,如图3-8所示。
图3-8 打开“Dump转txt”应用程序
(2)在弹出的“MFOC-GUI卡文件转换工具”界面中,单击“导入”按钮,选择需要转换的dump文件,如图3-9所示。
(3)在弹出的“Dump转txt”界面中单击“OK”按钮,成功导出txt文件,如图3-10所示。此时,生成的txt文件会自动存入“C:\tools\0201-ACR122U-A9破解M1卡数据\IC卡解密软件”目录下。
图3-9 导入dump文件
图3-10 成功导出txt文件
(4)在“C:\tools\0201-ACR122U-A9破解M1卡数据\IC卡解密软件”目录下查看已导出的txt文件,可以看到破解的M1卡的数据信息,如图3-11所示。
图3-11 破解的M1卡的数据信息
(5)分析破解的M1卡的数据信息可以看到,M1卡储存结构共分为16个扇区,每个扇区由4个区块(0区块、1区块、2区块、3区块)组成。查阅资料可以发现,0扇区的0区块(绝对地址0区块),用于存放厂商代码,已经固化,不可更改。每个扇区的0区块、1区块、2区块均为数据块,可以用于存储数据。数据块不仅可以作为一般的数据保存,进行读写操作,而且可以作为数据值,进行初始化值、加值、减值、读值等操作。每个扇区的3区块均为控制块,包括密码A(6字节)、存取控制(4字节)、密码B(6字节)等。注意,UID卡作为一种与M1卡兼容的特种卡,在M1卡的基础上突破了M1卡UID区域(0扇区0区块)不可以写入的限制。
2.克隆IC卡
(1)使用上述方法,获取IC卡数据。
(2)克隆目标卡到操作卡中。在“C:\tools\0202-ACR122U-A9克隆M1卡\IC卡解密软件”目录下,双击打开“UID卡克隆软件”应用程序。“UID克隆卡专用软件1.0”界面如图3-12所示。
图3-12 “UID克隆卡专用软件1.0”界面
(3)单击“导入”按钮,在弹出的“打开”界面中选择文件,单击“打开”按钮,将文件导入,如图3-13所示。
图3-13 导入文件
(4)文件导入成功后,在“UID克隆卡专用软件1.0”界面的右上方会显示目标卡的数据信息,如图3-14所示。
(5)将操作卡放在NFC阅读器上,分别单击“连接读卡器”“连接卡片”“写卡”按钮,进行写卡操作,如图3-15所示。
(6)验证是否写卡成功。再次抓取操作卡片的dump文件,会发现dump文件名已与目标文件名一致(修改时间不同),将其转换为txt文件,如图3-16所示。
图3-14 显示目标卡的数据信息
图3-15 进行写卡操作
图3-16 抓取dump文件
(7)打开txt文件,会发现其数据信息与目标卡片的dump文件完全一致,说明其内存信息与目标卡片相同,克隆M1卡成功,如图3-17所示。
图3-17 克隆M1卡成功
3.篡改IC卡
1)安装环境
这里需要安装Microsoft.NET Framework 3.5及以上版本(NFCGUI-Pro所需环境),如图3-18所示。
图3-18 安装Microsoft.NET Framework 3.5
2)篡改NFC卡
(1)在进行IC卡篡改之前,需与前两个实验一样,破解IC卡,获取其数据,并对其进行格式转换。
(2)在“C:\tools\0203-篡改NFC卡\IC卡解密软件”目录下,双击打开“NFCGUI-Pro”应用程序,此时操作卡片依旧放在NFC阅读器的感应区,在NFCGUI-Pro主界面中单击“读取基本信息”按钮,如图3-19所示。
(3)读取基本信息成功后,在NFCGUI-Pro主界面中,可以看到操作卡片的UID信息,如图3-20所示。
图3-19 单击“读取基本信息”按钮
图3-20 查看操作卡片的UID信息
(4)修改操作卡片的数据信息。在NFCGUI-Pro主界面中单击“选择文件”按钮,如图3-21所示。
图3-21 单击“选择文件”按钮
(5)找到破解得到的操作卡片的dump文件,这里为dumpfile cad9dd66(2017-12-15 14_51_39)1K.dump,单击“打开”按钮,打开dump文件,如图3-22所示。
图3-22 打开dump文件
(6)在弹出的如图3-23所示的“非4K文件格式”界面中,单击“否”按钮即可。
图3-23 “非4K文件格式”界面
(7)此时,成功读取dump文件中存储的信息,如图3-24所示。
图3-24 成功读取dump文件中存储的信息
(8)可以直接在图形界面上修改dump文件中的数据。双击需要修改的数据,修改数据并按回车键保存。修改前的数据如图3-25所示。
图3-25 修改前的数据
(9)修改后的数据如图3-26所示。
图3-26 修改后的数据
(10)单击“保存文件”按钮,在弹出的“打开”界面中先输入文件名,在原文件名的基础上修改即可,再单击“打开”按钮,如图3-27所示。
(11)在弹出的界面中单击“确定”按钮,即可成功地将对操作卡片的dump文件做出的修改保存到新的dump文件中,如图3-28和图3-29所示。
3)克隆NFC卡
(1)在“C:\tools\0203-篡改NFC卡\IC卡解密软件”目录下双击打开“UID卡克隆软件”应用程序,此时操作卡片依旧放在NFC阅读器的感应区,如图3-30所示。
图3-27 保存文件
图3-28 保存文件成功
图3-29 新保存的dump文件
图3-30 打开“UID卡克隆软件”应用程序
(2)在“UID克隆卡专用软件1.0”界面中单击“导入”按钮,选择新的dump文件,单击“打开”按钮,导入新的dump文件,如图3-31所示。
图3-31 导入新的dump文件
(3)单击“连接读卡器”→“连接卡片”→“写卡”按钮,进行写卡操作,如图3-32所示。
图3-32 进行写卡操作
(4)移走操作卡片,重新将其放在NFC阅读器的感应区进行连接,“嘀”声响后,连接完成。切换到NFCGUI-Pro主界面,单击“读取基本信息”→“读取UID卡”按钮,重新读取卡片的基本信息,会发现卡片信息修改成功,如图3-33所示。
图3-33 卡片信息修改成功1
(5)设置“新UID”为“ADC9DD66”,如图3-34所示。
(6)单击“修改UID”按钮,将修改后的信息写入卡片,如图3-35所示。
(7)移走操作卡片,重新将其放到NFC阅读器的感应区进行连接,“嘀”声响后,连接完成。再次单击“读取基本信息”按钮,读取卡片的基本信息,会发现卡片信息修改成功,如图3-36所示。
图3-34 修改UID
图3-35 将修改后的信息写入卡片
图3-36 卡片信息修改成功2
RFID标签的安全防护可以从物理机制、安全协议等方面展开。
1.物理机制
1)Kill命令机制
Kill命令机制是标准化组织自动识别中心(Auto-ID Center)提出的。Kill命令机制采用从物理上销毁RFID标签的方法。一旦对RFID标签实施Kill命令机制,RFID标签将永久作废。RFID阅读器将无法对销毁后的RFID标签进行指令的查询和发布,这是一种自杀式地保护用户个人隐私的方法。由于Kill命令机制的密码只有8位,因此攻击者以64位的计算代价就可以获得RFID标签访问权。又由于RFID标签销毁后不再有任何应答,因此很难检测出是否真正对RFID标签成功实施了Kill命令机制。
2)静电屏蔽机制
静电屏蔽机制主要使用法拉第笼来屏蔽RFID标签,容器中的RFID标签将无法接收和发射信号。法拉第笼是由金属网或金属箔片构成的阻隔电磁信号穿透的容器,从技术上来讲,使用法拉第笼虽然是一种理想的隐私保护方法,但会对便利性造成一定的影响。卡套(屏蔽套)如图3-37所示。
图3-37 卡套(屏蔽套)
3)主动干扰机制
主动干扰机制是另一种无线电屏蔽RFID标签的方法。RFID标签用户可以通过一个设备主动广播无线电信号,阻止或破坏附近RFID阅读器的读写操作,但这可能产生非法干扰,附近其他合法设备也将受到干扰,严重情况下会导致其他无线电信号被阻断。
4)阻塞标签机制
阻塞标签机制通过阻止RFID阅读器读取RFID标签来保护用户隐私。当RFID阅读器在进行某种分离操作进而搜索到阻塞标签所保护的范围时,阻塞标签便会发出干扰信号,使得RFID阅读器无法完成分离动作,RFID阅读器无法确定RFID标签的存在,也就无法和RFID标签进行通信。但由于增加了阻塞标签,因此应用成本将会增加。由于阻塞标签可以模拟大量的RFID标签的ID,从而阻止RFID阅读器访问隐私保护区域以外的其他RFID标签,因此阻塞标签的滥用有可能会受到DoS攻击。同时,阻塞标签有一定的有效范围,一旦超过这个范围,RFID标签将无法得到保护。
2.安全协议
可以通过对安全协议进行数据加密来提高信道数据传输安全性。目前,已有多种安全协议被应用于RFID系统中。例如,Hash-Lock协议、随机Hash-Lock协议、Hash-Chain协议、分布式RFID询问—应答安全协议和LCAP等。下面简单介绍两种常见的安全协议。
1)Hash-Lock协议
Hash-Lock协议是由Sarma等人于2003年提出的,主要通过哈希函数设定RFID标签为锁定状态或解除锁定状态。在该协议中,射频标签只对授权的RFID阅读器起作用,RFID阅读器有每个RFID标签的认证密钥k,每个电子标签都存储一个hash函数计算的结果metaID=hash(k),metaID用于替代真实的RFID标签的ID。后台数据库存储每个RFID标签的认证密钥k,并且会对应RFID标签储存的metaID。metaID与k作为判断RFID标签锁定和解除锁定的依据。RFID标签在锁定时RFID阅读器只能读取RFID标签部分资料,合法的RFID阅读器可以通过这部分资料在后台数据库中找出解锁密钥k,当RFID标签验证解锁密钥k正确后,RFID标签的状态会由锁定状态转换为解除锁定状态,此时RFID阅读器就可以读取RFID标签上的所有资料了。Hash-Lock协议过程如图3-38所示。
图3-38 Hash-Lock协议过程
2)LCAP
LCAP(Low Cost Authentication Protocol,低成本鉴别协议),是基于RFID标签的ID动态刷新的询问—应答双向认证协议。
当RFID标签进入RFID阅读器的识别范围时,RFID阅读器会向其发送Query消息及RFID阅读器产生的随机数R,请求认证。RFID标签在收到RFID阅读器发送过来的数据后,会利用hash函数计算出haID=H(ID)及H L (ID||R)(ID表示的是RFID标签的ID,H L 表示的是hash函数映射值的左半部分,即H(ID||R)的左半部分),之后RFID标签将(haID(ID),H L (ID||R))一起发送给RFID阅读器。RFID阅读器收到(haID,H L (ID||R))后添加之前发送给RFID标签的随机数R,整理后将(haID,H L (ID||R),R)发送给后台应用系统。后台应用系统收到阅读器发送过来的数据后,检查数据库存储的haID是否与RFID阅读器发送过来的一致。若一致,则利用hash函数计算随机数R和数据库存储的haID,得到H R (ID||R)(H R 表示的是hash函数映射值的右半部分,即H(ID||R)的右半部分),同时后台应用系统更新haID为H(ID⊕R),ID为ID⊕R,将之前存储的数据中的TD数据域设置为haID=H(ID⊕R),并将H R (ID||R)发送给RFID阅读器。RFID阅读器收到H R (ID||R)后转发给RFID标签。RFID标签收到H R (ID||R)后,验证其有效性。若有效,则认证成功。LCAP过程如图3-39所示。
图3-39 LCAP过程