蔡芸云,郁进明
无线射频识别(RFID),是一种利用射频信号自动识别目标对象并获取相关信息的技术。它利用无线射频信号通过空间耦合(交变磁场或电磁场),实现非接触双向数据通信,并通过所传递的信息达到识别目的。RFID系统包括3个关键部分:标签、阅读器、后端数据库。
每个标签包含一个唯一识别信息TID。阅读器向标签请求 TID的信息,并发给后端数据库。如果标签是有效的,后端数据库将查询产品信息。按照功耗来源分类,射频标签可以分为:有源标签(Active tag)、半有源标签(Semi-passive tag)和无源标签(Passive tag)。
Auto-ID Center的研究人员,根据标签的功能将标签分为5类[1]。其中EPC Class-1 Gen-2协议[2],是EPCglobal标准组织在 2005年初提出的第二代对于超高频 Class-1的RFID标签的标准。其有效阅读范围更大,所以它被广泛认为是RFID系统发展的主流。然而,Gen-2规范的缺点是,TID在传输过程中没有任何保护。
先前的研究中陈述了RFID系统的几个威胁:
窃听:攻击者可以监听整个无线通信过程,从而执行加强的攻击,如重放或者伪造攻击。
信息隐私:这种攻击主要窃听个人习惯,例如最喜欢的书、阅读习惯等。由于标签信息极易被泄漏,很多私人信息都很有可能通过RFID电子标签被泄露。
重放攻击:根据窃听到的阅读器和标签间的数据通信,重复之前的通信行为从而获取数据信息。
克隆:攻击者可以阅读标签然后将获得的数据写入空白标签中。
标签追踪:通过RFID标签扫描,一句标签的特定输出可对消费者位置进行跟踪定位。
信息篡改:随着RFID成为零售业的主流,为了方便起见,标签将会存储一些附加信息,例如:日期、价格、产地等。然而,这样也给攻击者篡改信息带来了方便。攻击者可以修改价格,从中获利。
拒绝服务:人为的信号干扰是的合法阅读器不能正常阅读标签数据。
Gen2标签是一种被动标签,它从阅读器获得能量。成本上和资源上的限制使得G2标签不能进行算法复杂的加密运算,比如公钥加密、对称密钥加密,甚至哈希运算。G2标签只支持片上16位伪随机数生成器、16循环冗余码检验(CRC)、以及一些简单的异或操作。因此,当前许多针对RFID安全问题而提出的解决方案,并不能有效的运用于G2标签。例如,Hash锁、重加密等。EPC C1G2只提供了一种简单的单向的安全认证机制,但这种认证机制,存在很深的安全隐患。
G2协议有一个严重的问题,标签的曝露会泄露用户的隐私。曝露的标签很容易追踪和克隆。我们的目标是在保持简单、低成本的同时,加强G2协议的安全性。
首先,为了更好的说明整个认证过程,本文先对某些符号做出说明,如表1所示:
表1 对相关符号说明
针对EPC C1G2中的安全问题,EPCGlobal提出了一种简单、基本、单向的安全认证协议。
具体的认证过程如下:
(1) 阅读器产生一个请求命令ReqR,向标签发送请求信息;
(2) 标签通过反射回应一个随机数RT1;
(3) 阅读器利用标签所给的RT1异或存取密码的高16位APwdM,将加密的APwdM,即CCPwdM,发送给标签;
(4) 标签利用原来的随机数RT1解密密文CCPwdM,判断是否与APwdM相等;
(5) 阅读器再产生一个请求命令ReqR,再次向标签发送请求信息;
(6) 标签再次通过反射回应一个不同的随机数RT2;
(7) 阅读器利用所得到的标签,回应的RT2异或存取密码的低16位APwdL,并将加密的APwdL,即CCPwdL,发送给标签;
(8) 标签利用原来的随机数RT2解密密文CCPwdL,判断是否与APwdL相等;
(9) 如果(4)和(8)都相等,标签则认为阅读器是真的,继续与之通信;否则,标签则结束与阅读器之间的通信;
由上面的认证过程可以看出,EPCGlobal提出的认证过程是采用的一种单向的认证方法,即只有标签对阅读器的验证过程,并没用阅读器对标签的验证过程,存在很大安全隐患。
存在的缺陷分析[3-5]:
(1) 中间位置攻击和读取密码暴露:由于标签发送两次RTx都是处于开放和未加密的方式,恶意的阅读器、未授权的阅读器很容易窃听到这些 RTx,通过执行RTx⊕CCPwd便可以很容易得到APwd。暴露的APwd很容易使恶意的阅读器非法读取、修改和毁坏标签中的数据。
(2) 伪造标签:暴露的 APwd很容易使竞争对手伪造具有同样APwd的假标签。
Konidala等人利用32为存取密码和杀死密码来设计一种安全认证机制。他们的机制利用两轮PadGen函数来对Pad进行加密。第一轮对存取密码加密,第二轮对杀死密码加密。本文在 Konidala等人以及冷世伟等人所提出的认证机制的基础上,提出了进一步改进的算法:MKAP。其中,MPwd=APwd⊕KPwd。具体的PadGen函数将在后文给出。
PadGen函数用来产生Pads,具体的认证过程,如图1所示:
图1 改进后的相互认证机制
(1) 阅读器产生一个请求命令,发送请求信息到标签;
(2) 标签产生两个随机数 RT1和 RT2,并计算 MPwd=APwd⊕KPwd,暂时存储,同EPC一起反射回应给阅读器;
(3) 阅读器将接受的EPC、RT1和RT2一起,转发给服务器;
(4) 服务器根据EPC到后台数据库读取标签的存取密码APwd和杀死密码 KPwd,同样计算 MPwd=APwd⊕KPwd,并产生四个随机数 RM1,RM2,RM3和RM4,且利用RM1、RM2和RT1、RT2一起作为参数,采用PadGen函数加密存取密码的高16位APwdM和存取密码的低16位APwdL,得到CCPwdM1和 CCPwdL1,同 EPC、RM1,RM2,RM3和 RM4一起发送给阅读器;
(5) 阅读器将得到的信息再次转发给标签;
(6) 标签利用从阅读器获得的RM1,RM2,RM3、RM4,与自己保存的RT1、RT2,利用PadGen函数,对CCPwdM1和 CCPwdL1解密,与自己保留存储区中的存取密码比较,如果一致,则表示阅读器通过验证,否则,停止通信;
(7) 标签产生另外两个随机数RT3和RT4,暂时存储,并同从阅读器接收到的随机数RM3和 RM4一起,作为参数,利用 PadGen函数,对存取密码的高 16位APwdM和低 16位 APwdL加密,得到 CCPwdM2和CCPwdL2,同EPC、RT3和RT4一起反射回应给给阅读器;
(8) 阅读器将所接收到的信息转发给服务器;
(9) 服务器利用所接收到的RT3和RT4,同自己产生保存的RM3和RM4一起,对CCPwdM2和CCPwdL2解密,与利用EPC在后台数据库查找到的存取密码比较,如果一致,则表示标签通过验证,否则停止通信;
PadGen函数是用来生产16位Pads,对两个16位的高、低存取密码(APwdM,APwdL)进行加密。PadGen函数通过对保留存储区中的存取密码和杀死密码随即抽取相关位,连接成16位的Pads。
首先,用下面的方式来表示32位的存取密码和杀死密码(二进制形式),公式(1)
服务器和标签分别产生的 16位随机数RTx和RMx可以表示为(十六进制形式),公式(2)
RTx和RMx的每一位数,即d t1,d t1…,dm1,dm2,都用来表示存取密码Apwd的某一位的位置,将这些位以某种规律连接起来,就可以得到16位的Pads。
针对APwd的第一轮PadGen操作,本文采取与冷世伟等人提出的方式,结合RTx和RMx,第一轮PadGen操作,可以按如下方式进行(十六进制形式),公式(3)
利 用 第 一 轮 PadGen运 算 所 得 到 的dv1dv2dv3dv4对Kpwd进行第二轮PadGen运算。dv1dv2dv3dv4中的每一位数,即dv1、dv2、dv3和dv4,都用来表示杀死密码中某一位的位置,如下所示(16进制形式),公式(4)
针对由APwd和KPwd异或得来的MPwd,本文在此加入第三轮PadGen函数,按如下方式进行(十六进制形式),公式(5)
首先对Konidala等人提出机制的安全性能进行分析:
(1)对存取密码中低位的攻击
攻击过程如下所示:
假设攻击者通过窃听真的阅读器和标签之间的一个验证会话,攻击者可以获取得到一个有效的EPC,将这个标签作为攻击的对象。通过获取得到的EPC,攻击者可以伪装成真的标签对阅读器采取主动攻击。攻击者可以给真的阅读器发送信息:,其中随机数RN满足下列等式:RN=RRRRh,其中R为十六进制,’可以等于也可以不等于。
则攻击者可以通过计算下式来分别获得存取密码高十六位APwdM和低十六位APwdL中的8位,公式(6)
综上所述,攻击者可以分别以2-2的概率获得存取密码高十六位APwdM和低十六位APwdL中的8位。假设等于则在这种情况下,攻击者可以进一步以 2-2的概率获得存取密码中的16位,如公式(8)
(2)对存取密码中高位的攻击
采取如下的攻击过程:
与(1)中分析相似,攻击者可以窃听真的标签所发送的信息,并改变信息中的内容。攻击者将获取的标签信息中的随机数都设置为 RN,然后转发给阅读器。其中,RN须满足如下关系式:RN=RRRRh[十 六进制]。
攻击者成功破解存取密码中 16位的概率可由下式表示:
Prob(成功破解APWDM[0...7]||APWDL[0...7])
通过上面分析可知,为了最大可能的破解存取密码,攻击者可以在{0x00,0x0F,0xF0,0xFF}中选择。
结合对存取密码低位的攻击和对存取密码高位的攻击,攻击者可以将破解存取密码的概率从 1/232降为1/(16*4)=1/26。
为了便于与前面安全机制进行比较,对本文所提安全机制采用相同的攻击形式,经过前面的分析,攻击可以获得16位存取密码,ApwdL[0,1,4,5,8,9,12,13]和ApwdM[0,1,4,5,8,9,12,13]通过计算下式:
通过上式,可以发现,每个 dv1dv2dv3dv4都是由 RTx和RMx共同决定的。在第一轮PadGen函数中,攻击者可以设置RTx和RMx,但是并不能同时设置它们。也就是说,攻击者无法获得dv1dv2dv3dv4之间的任何相关信息。然后,进行第二轮和第三轮PadGen函数,攻击者不能发现存取密码这8位之间的任何关系。
因此,攻击者要想获得这8位存取密码,必须进行如下计算:
通过上式,可以发现,攻击获取这8位存取密码的概率位2-8。
同理, 攻击者要想获得另外8位存取密码,必须进行如下计算:
综上所述,结合上面两式,攻击获得全部存取密码的概率为2-8*2-8=2-16,相比Konidala、冷世伟等人提出的安全机制,安全性能得到了很大的提升,如表2所示:
表2 安全性能的提升数据
从安全角度出发,本文提出的新的认证方案安全性比已有方案有了很大程度提高。各种方案的性能比较,如表3所示:
表1 本文方案与已有方案的安全性能比较
随着RFID的广泛使用,安全问题也越来越受到关注。本文在先前研究的基础上改进并提出了一种基于Gen2规范低成本的认证协议:MKAP,并验证了其安全性能较先前算法有了显著的提升。
[1]Auto-ID Center,“Draft Protocol Specification for a Class 0 Radio Frequency Identification Tag”[M]February 2003.
[2]EPCglobal, Inc., [OL]http://www.epcglobalinc.org/,2005.
[3]Peris-Lopez, P. and Li, T. and Hernandez-Castro, J.C. and Tapiador, J.M.E., “Practical attacks on a mutual authentication scheme under the EPC Class-1 Generation-2 standard,”[G]Computer Communications, 2009
[4]Peris-Lopez, P. and Hernandez-Castro, J. and Tapiador, J.and Li, T. and van der Lubbe, J., “Weaknesses in two recent lightweight RFID authentication protocols,”[G]Information Security and Cryptology, 2011
[5]Sun, H.M. and Ting, W.C. and Wang, K.H., “On the security of Chien's ultralightweight RFID authentication protocol,”[C]IEEE Transactions on Dependable and Secure Computing, 2011