罗韶杰,张立臣
(广东工业大学计算机学院, 广州 510006)
RFID(Radio Frequency Identification)是一种利用无线射频通信方式实现的非接触式的能够自动识别特定实体的技术。RFID系统包括后台数据库、标签、读写器三种实体组成,因系统中的标签具有耐磨损、成本低、寿命长、易携带等优点,现RFID系统已被广泛应用于物流、交通运输、门禁系统等各行各业中[1]。因读写器与标签之间采用无线方式进行传输信息,使得链路易受到信号干扰、通信消息被攻击者窃听等缺陷,RFID系统的安全性和隐私问题成为其更进一步的推广的限制因素。
RFID系统中的标签会在其生命周期中,标签的所有权会经常发生变化,相对应的标签内部存放的数据信息也在不断更换。因此需确保标签所有权在不断变更过程中具备一定的安全要求:(1)所有权转移协议要能够抵抗较为常见的攻击方式,比如,重放攻击、去同步化攻击等;(2)待标签的所有权发生变化之后,标签的原所有者便失去控制和访问标签隐私信息的权限,从而保证标签新所有者的隐私安全性;(3)标签的新所有者在确定获取标签的所有权之后,新所有者不能根据已有的信息推导出原所有者的隐私信息,用以来保护标签原所有者的隐私安全性[2-3]。
Saito等[4]提出一种所有权转移协议,协议基于可信第三方(TTP),协议虽然很好地解决了标签所有权归属问题,但可信第三方的引入,使得整个系统的成本增加,且通信量也增加。Molnar等[5]给出一种所有权转移协议,协议通过“假名”的方法来确保隐私信息不被泄露,该协议的实现需要引入一个共同的可信中心(TC),可信中心的引入,会导致系统成本的增加,同时可信中心在监管不当的情况下,容易造成隐私信息外泄。Song等人首先在文献[6]中设计出一种所有权转移协议,协议利用对称加密的思想、HASH函数加密的算法对通信消息进行加密,一定程度上优化了协议的计算复杂度。因文献[6]中协议存在一定安全缺陷,Song等又在文献[7]中设计出一种基于文献[6]改进的协议方案,但改进后的方案仍存在无法抵抗攻击者的去同步化攻击缺陷。Kapoor等[8]详细分析了Song等人设计出的方案存在的安全性不足问题,提出一种轻量级别的所有权转移协议,其协议的创新点之处在于:新所有者的密钥是随机产生的。Munilla等[9]对Kapoor等提出的协议进行了严谨的数学推理,得出所提协议不适用于日常生活中的实际场景中,并同时Munilla等人利用噪声标签来替换可信第三方(TTP)的机制,提出一种新的轻量级别的所有权转移协议。Doss.R等[10]提出一种所有权转移协议,所提协议基于二次剩余定理来完成对信息的加密,二次剩余定理背景来源于数学中大数分解问题,具备较高的安全性,使得协议安全性很高;但协议所能适应的范畴仅仅只有无源标签,使得协议的应用受到极大的限制。文献[11]中提出一个所有权转移协议,该协议基于Rabin算法实现对信息的加密,优化之后的Rabin算法具有较低的计算量特征,使得文献[11]中的协议具备轻量级的特征。文献[12]中详细分析了文献[11]中所提方案的不足之处。文献[12]中指出,攻击者通过三次完整的窃听、重放、假冒等手段,最终可使得标签新所有者与标签之间的共享密钥失去同步性,得出文献[11]中所提协议无法抵抗重放攻击和去同步化攻击的结论。并在分析之后,在文献[12]中给出一个改进的协议。
对文献[12]中的协议进行分析发现,该协议仍旧存在一定的不足及可改进之处,仍有改进的空间,本文提出一种基于共享密钥的所有权转移协议。本文所提协议采用简单的位运算对传输消息进行加密,降低通信实体的计算复杂度;协议中,为确保标签所有权归属的唯一性,引入归属权标志位变量,根据变量当前的值,唯一确定标签的所有权归属;为减少通信实体的存储空间,同时也为减少变量的引入,将通信实体之间的共享密钥作为一参数进行计算。通过安全性分析,说明所提协议具备所有权转移所需的安全需求;性能分析,说明所提协议能够减少通信实体计算复杂度。
结合图1,文献[12]协议的步骤可简述如下。
步骤1标签原所有者向标签发出所有权转移协议申请。
步骤2标签计算M,同时将ID_L和M作为响应信息发送给标签原所有者。
步骤3标签原所有者查找ID_L是否存在。若不存在,协议结束。若存在,取出相对应的量,计算M′,然后比对M′与M。若相等,计算N和P,并将N和P发送标签;若不相等,协议结束。
步骤4标签对N和P进行验证。验证结果为真,计算Q,且将Q发送给标签原所有者;验证结果为假,协议结束。
步骤5标签原所有者将Q、r1、IDi_L发送给标签新所有者。
步骤6标签新所有者查找IDi_L是否存在。若不存在,协议结束。若存在,取出相对应的量,并计算出X和Y,同时将X和Y的值发送给标签。
步骤7标签对X和Y进行验证。验证结果为真,开始更新信息,所有权转移协议顺利结束;验证结果为假,协议结束,所有权转移协议失败。
图1 文献[12]的所有权转移协议
文献[12]协议中存在的不足:(1)协议无法确保数据r1的新鲜性。数据r1的更新操作是在协议开始之时利用赋值操作,即:r1=r_x来实现,故通信过程中,当标签在接收到验证消息以后,即便是r_x立即动态刷新,也仍然无法确保r1的及时更新。因为攻击者可在标签动态刷新r_x之后,将r_x赋值给r1之前,阻塞该过程,从而使得协议无法确保数据r1的新鲜性。(2)协议存在安全缺陷。攻击者通过窃听两轮完整的通信过程,便可在第三轮通信过程中假冒标签发起攻击,通过重放消息Q的方式,可截获得到消息X、Y。阻塞合法标签新所有者发送给标签的信息,攻击者将截获的消息X、Y重放的方式发送给标签,标签将会进行反复认证通过,且进行信息更新,两轮操作之后,导致标签与新数据库两端的共享密钥失去同步性,攻击者的去同步化攻击成功。
本文改进协议与文献[12]中的协议对比,不同之处在于:
1) 改进的协议未采用Rabin加密算法对传输信息进行加密,而是采用字合成运算及交叉位运算进行加密;
2) 现有的文献中,对于Rabin加密算法进行优化后,其计算量最多也只能达到轻量级的级别,而字合成运算及交叉位运算的本质属于按位运算,该运算属于超轻量级的级别,因此改进的协议在计算量方面较文献[12]改进较大;
3) 改进的协议引入标签所有权归属权标志位参量,能够唯一确定归属权;
4) 改进的协议能够弥补文献[12]中存在的安全缺陷,具体弥补方式参见文章安全性分析章节。
本文协议与其他此类RFID标签所有权转移协议一样,做出如下假定[13-14]:1)标签与标签原所有者S_old之间通过无线方式通信,该链路不安全,易被攻击者攻击;2)标签与标签新所有者S_new之间通过无线方式通信,该链路不安全,易被攻击者攻击;3)标签原所有者S_old与标签新所有者S_new之间通过有线方式通信,该链路安全,不易被攻击者攻击;4)标签、标签原所有者S_old、标签新所有者S_new中存放的信息是安全的,且攻击者无法获取;5)协议开始之前,标签一端存放以下信息:(K,IDt,IDS,FLAG),标签新所有者S_new一端存放以下信息:(S,IDt,IDS),标签原所有者S_old一端存放以下信息:(K,IDS,IDt)。
设X、Y是两个具有L位的二进制数,X=x1x2x3…xL,Y=y1y2y3…yL。其中,xi、yi取值范围为{0,1},i=1,2,…,L,Syn(X,Y)=YL-M+1YL-M+2…YLX1X2…XL-M。字合成运算Syn(X,Y)是指由X的前L-M位与Y的后M位组合而形成新的L位数组;其中M的设定为:M=Hw(Y),也可以为M=L-Hw(Y),Hw(Y)表示为Y的汉明重量。有关字合成运算更多规定可参考文献[15]。图2给出了一个字合成运算例子。
图2 字合成运算检测
交叉位运算Cro(X,Y)是指由X的奇数位和Y的偶数位相互交叉形成新的L位数组。交叉位运算可在标签中按如下方式实现:定义两个指针p1和p2分别指向X和Y,当p1指向X的奇数位时,把此位置上的值赋予运算结果的偶数位;当p2指向Y的偶数位时,则把此位置上的值赋予运算结果的奇数位。有关交叉位运算更多规定可参考文献[16]。图3给出了一个交叉位运算例子。
图3 交叉位运算
表1给出所有权转移协议符号所表示的含义。
表1 符号说明
所有权转移协议过程如图4所示。
图4 所有权转移协议框图
图4中出现的公式解释如表2所示。
表2 公式解释
结合图4,所有权转移协议步骤描述如下:
步骤1标签原所有者S_old向标签发送所有权转移请求。
步骤2标签在接收到标签原所有者S_old发送来的消息后,标签首先查阅归属权标志位FLAG的值,当前FLAG=0,表示标签原所有者拥有标签的所有权,标签可进行后续操作。标签将IDS发送给标签原所有者S_old。
步骤3标签原所有者S_old在接收到标签发送来的消息后,查找是否存在IDS=IDS_old或IDS=IDS_new,若未找到,协议终止;反之,进行如下操作。
1) 标签原所有者S_old中的线性反馈移位寄存器LFSR通过初始化得到三个随机数,依次记作:x,y,z。其中后续操作中,随机数x、y由MIXBITS函数实时进行刷新。
2) 利用找到的与IDS相对应的IDt、K及1)中生成的随机数x、y、z,计算得到M1、M2、M3、M4。
3) 标签原所有者S_old将M1、M2、M3、M4发送给标签。
其中有关M1、M2、M3、M4的计算公式见表2。
步骤4标签在接收到标签原所有者S_old发送来的消息后,标签按照如下操作来验证标签原所有者S_old的真伪。
1) 用自身存放的标识符IDt,自身存放的共享密钥K,接收到的M1,计算得到随机数x。即:x=Syn(IDt_L,K_R)⊕M1。
2) 用自身存放的标识符IDt,自身存放的共享密钥K,接收到的M2,计算得到随机数y。即:y=Cro(K_L,IDt_R)⊕M2。
3) 用自身存放的标识符IDt,自身存放的共享密钥K,接收到的M3,计算得到随机数z。即:z=Syn(K_L,IDt_R)⊕Cro(IDt_L,K_R)⊕M3。
4) 用1)计算得到的随机数x,用2)计算得到的随机数y,用3)计算得到的随机数z,用自身存放的标识符IDt,自身存放的共享密钥K,计算得到M4′。
5) 比对计算到的的M4′与接收到的M4是否相等。若不想等,表明标签原所有者S_old是伪造的,协议终止;反之,标签原所有者S_old通过标签的验证,并进行第6)步。
6) 标签用1)计算得到的随机数x,用2)计算得到的随机数y,用3)计算得到的随机数z,用自身存放的标识符IDt,自身存放的共享密钥K,计算得到M5。
7) 标签将M5发送给标签原所有者S_old。其中有关M5的计算公式见表2。
步骤5标签原所有者S_old在接收到标签发送来的消息后,标签原所有者S_old进行如下操作。
1) 自身产生的随机数x、y、z,自身存放的IDt、K,计算得到M5′。然后比对计算得到的M5′与接收到的M5是否相等。若不相等,表明标签是伪造的,协议终止;反之,表明标签通过标签原所有者S_old的真伪验证,并进行第2)步。
2) 标签原所有者S_old开始更新随机数x、y,即:x=MIXBITS(x,IDt⊕K)、y=MIXBITS(y,IDt&K)。
3) 标签原所有者S_old开始更新共享密钥,即:K_old=K,K=K_new。
4) 标签原所有者S_old告知标签新所有者S_new开始进行所有权转移操作,且将〈IDS、z〉一并发送给标签新所有者S_new。
步骤6标签新所有者S_new在接收到标签原所有者S_old发送来的消息后,标签新所有者S_new进行如下操作。
1) 标签新所有者S_new产生一个随机数,记作t。
2) 用接收到的随机数z,自身生成的随机数t,计算得到标签与标签新所有者S_new之间的共享密钥S,即S=MIXBITS(t,z)。
3) 用自身存放的IDt,接收到的随机数z,自身生成的随机数t,计算可得到M6。用自身存放的IDt,接收到的随机数z,计算得到的共享密钥S,计算可得到M7。用自身生成的随机数t,计算得到的共享密钥S,计算可得到M8。
4) 更新标签的假名标识符,即:IDS_new=IDS⊕t。
5) 标签新所有者S_new将〈M6、M7、M8〉一并发送给标签。
其中有关M6、M7、M8的计算公式见表2。
步骤7标签在接收到标签新所有者S_new发送来的消息后,标签进行如下操作。
1) 用自身存放的标识符IDt,之前计算得到的随机数z,接收到的M6,计算可以得到随机数t,即:t=M6⊕Syn(IDt,z)。
2) 用自身存放的标识符IDt,之前计算得到的随机数z,接收到的M7,计算可以得到共享密钥S,即:S=M7⊕Cro(IDt,z)。
3) 标签用1)计算得到的随机数t,用2)计算得到的共享密钥S,计算可以得到M8′。然后比对计算得到M8′与接收到的M8是否相等,若不相等,表明标签新所有者S_new是伪造的,协议终止;反之,标签新所有者S_new通过标签的真伪验证,进行第4)步。
4) 标签开始更新自身的标识符假名,更新标签与标签新所有者S_new之间的共享密钥,即:IDS_new=IDS⊕t,K=M7⊕Cro(IDt,z)。
5) 标签将归属权标志位FLAG的值由0置为1,即FLAG=1,表示所有权当前不再归属原所有者,而是归属于标签新所有者S_new所有。到此,所有权转移顺利结束。
改进的所有权转移协议具体流程如图5。
图5 所有权转移协议的流程
去同步化攻击也称作异步攻击,是指攻击者通过某种手段使得通信实体之间相互认证用到的共享密钥失去一致性,从而导致通信实体之间无法完成下次认证及通信。本文协议中,标签原所有者S_old中不仅存放有当前标签的标识符假名IDS信息,同时也存放上一次通信过程中用到的标签的标识符假名IDS_old信息,因此即便是调用当前标签的标识符假名IDS信息比对失败,也可以调用上一次通信过程中用到的标签的标识符假名IDS_old信息再次进行比对,从而抵抗住攻击者的去同步化攻击。
所有权唯一性是指标签的所有权归属者必须唯一确定,不存在任何的不确定性。本文协议中,引入归属权标识位FLAG变量完成该任务。协议开始之前,归属权标识位FLAG变量的值为0,表明当前标签的所有权归属者为标签原所有者S_old拥有,使得标签新所有者S_new无法访问标签。在所有权协议转移结束之时,标签中的归属权标识位FLAG变量的值为设置为1,表示所有权转移完成,且当前标签的所有权归属者为标签新所有者S_new拥有,同时标签原所有者S_old已失去访问标签的权限。整个过程中,标签中的归属权标识位FLAG变量的值要么为0,要么为1,不可能存在其他状态,使得标签的所有权归属清晰且明确。故协议能够确保所有权的唯一性。
重放攻击是指攻击者通过窃听某一轮完整的通信过程在获取通信消息之后,重放某通信信息,以破解隐私信息。本文协议中,在不安全的通信实体链路中均采用密文传输机制,攻击者即便是截获通信消息,获取的也只是密文;其次,传输信息加密过程中均混入随机数,且不同的随机数短时间内不会重复出现,加之随机数的难预测性,使得前后两次通信消息并不一样,攻击者无法通过重放上一轮的信息破解出有用信息。因此协议可以抵抗攻击者的重放攻击。
协议中有三个通信实体,因此攻击者可以假冒其中任一个通信实体。下面将一一进行讨论。
当攻击者假冒标签时,攻击者伪装成标签向标签原所有者S_old发送消息,企图蒙混过关,但攻击者缺少关键隐私信息,比如:缺少标签的标识符IDt,缺少标签与标签原所有者S_old之间共享密钥K,使得攻击者根本无法计算出随机数x、y、z,从而更进一步无法计算出通信消息M5的正确值。在协议第五步骤中,标签原所有者S_old通过简单的计算,便可以识别出标签的真伪,攻击者伪装成标签失败。因此协议可以抵挡攻击者伪装成标签发起的假冒攻击。
当攻击者伪装成标签原所有者S_old时,向标签发送信息,攻击者可以自己随意生成随机数x、y、z,进一步随机选取IDt、K的值进行计算得到M1、M2、M3、M4,并一起发送给标签。攻击者这样进行假冒攻击,无法获取任何有用隐私信息,因为标签在第四步骤中对M1、M2、M3、M4进行验证过程中,会识别出攻击者的伪造的身份。攻击者缺少正确的IDt、K的值,就无法计算出正确的M1、M2、M3、M4的值。当标签一旦识别出攻击者假冒身份之后,协议立刻终止。因此协议可以抵抗攻击者伪装成标签原所有者S_old发起的假冒攻击。
当攻击者伪装成标签新所有者S_new时,向标签发送信息,攻击者因为缺少正确的标签的标识符IDt,使得攻击者无法正确计算出M6、M7、M8的值。当攻击者把错误的M6、M7、M8传输给标签之后,标签在步骤七中,通过简单的计算便可识别出攻击者的真伪。因此协议可以抵抗攻击者伪装成标签新所有者S_new发起的假冒攻击。
攻击者可以通过监听一个完整的通信过程,获取所有的通信信息,企图采用穷举的方式暴力的破解出一些有用的隐私信息。本文协议能够抵抗攻击者这种暴力的破解攻击,原因如下:(1)本文协议中,但凡涉及到不安全的通信链路,在传输数据时,都是传输密文,而非明文传输;(2)通信信息不仅仅只是密文传输,且信息在加密过程中混入随机数,使得前后两次的通信信息值是不完全一致的,更进一步增大攻击者的破解难度;(3)所有传输的通信信息在加密过程中,都至少有两个量,对于攻击者来说,是不可能知晓的,比如:在公式M1=x⊕Syn(IDt_L,K_R)中,攻击者对于公式里面的三个变量都是不知道,无法采用穷举的方式进行破解。因此协议可以抵抗攻击者发起的暴力破解攻击。
本文采用BAN逻辑对文章中所提的认证协议进行形式化证明,证明过程中做出如下规定:标签新所有者S_new与标签原所有者S_old两个通信实体中都含有读写器,将标签原所有者S_old中的读写器用R1符号表示,将标签新所有者S_new中的读写器用R2符号表示,标签用T符号表示,证明过程如下。
消息①R1→T:REQUEST;
消息②T→R1:IDS;
消息③R1→T:M1,M2,M3,M4;
消息④T→R1:M5;
消息⑤R1→R2:IDS,z;
消息⑥R2→T:M6,M7,M8。
P13:R1|≡#(x),标签原所有者S_old中的读写器相信随机数x的新鲜性。
P14:T|≡#(x),标签相信随机数x的新鲜性。
P15:R2|≡#(x),标签新所有者S_new中的读写器相信随机数x的新鲜性。
P16:R1|≡#(y),标签原所有者S_old中的读写器相信随机数y的新鲜性。
P17:T|≡#(y),标签相信随机数y的新鲜性。
P18:R2|≡#(y),标签新所有者S_new中的读写器相信随机数y的新鲜性。
P19:T|≡R1|⟹M1,标签相信标签原所有者S_old中的读写器对消息M1的管辖权。
P20:T|≡R1|⟹M2,标签相信标签原所有者S_old中的读写器对消息M2的管辖权。
P21:T|≡R1|⟹M3,标签相信标签原所有者S_old中的读写器对消息M3的管辖权。
P22:T|≡R1|⟹M4,标签相信标签原所有者S_old中的读写器对消息M4的管辖权。
P23:T|≡R2|⟹M6,标签相信标签新所有者S_new中的读写器对消息M6的管辖权。
P24:T|≡R2|⟹M7,标签相信标签新所有者S_new中的读写器对消息M7的管辖权。
P25:T|≡R2|⟹M8,标签相信标签新所有者S_new中的读写器对消息M8的管辖权。
P26:R1|≡T|⟹M5,标签原所有者S_old中的读写器相信标签对消息M5的管辖权。
G1:T|≡M1,标签相信消息M1。
G2:T|≡M2,标签相信消息M2。
G3:T|≡M3,标签相信消息M3。
G4:T|≡M4,标签相信消息M4。
G5:T|≡M6,标签相信消息M6。
G6:T|≡M7,标签相信消息M7。
G7:T|≡M8,标签相信消息M8。
G8:R1|≡M5,标签原所有者S_old中的读写器相信消息M5。
由假设P14及消息新鲜性法则⊕(如果一个消息的一部分是新鲜的,则整个消息也是新鲜的),得T|≡#(M1)。
由已经推导出来的T|≡R1|~M1、T|≡#(M1)及随机数验证法则⊕,得到T|≡R1|≡M1。
运用上述条件和法则,同理可证得G2至G8。此处不再赘述。
本文协议与其他此类RFID标签所有权转移协议进行性能分析,分析对象为标签,性能分析主要包括标签一端的计算量、标签一端的存储空间大小等。性能分析结果如表3所示。
表3 性能分析结果
对表3中的符号进行具体含义说明,说明如下:ph1表示交叉位运算的计算量;ph2表示字合成运算的计算量;ph3表示HASH函数操作的计算量;ph4表示位运算的计算量(异或运算、与运算均、移位运算属于按位运算,因位运算属于超轻量级的计算,计算量非常小,因此可将异或运算的计算量、与运算的计算量、移位运算的计算量看成是等量的计算量,用一个相同的符号表示);ph5表示MIXBITS函数操作的计算量;ph6表示Rabin加密算法操作的计算量;ph7表示生成随机数操作的计算量。约定共享密钥S(或K)、标签的标识符IDt、标签的标识符假名IDS的长度均为l、归属权标志位FLAG只需要1位就可以。
因本文协议中,标签一端事先需要存放的信息有:共享密钥K、标签的标识符IDt、标签的标识符假名IDS、归属权标志位FLAG,因此标签一端的存储空间大小为(3l+1)即可满足需求。本文协议与其他协议比较,标签一端满足低成本的要求。
在ph1、ph2、ph3、ph4、ph5、ph6、ph7中,计算量由大到小依次排列的顺序是:ph3、ph6、ph5、ph7、ph2、ph1、ph4。其中ph4属于超轻量级的计算,相对于ph6、ph3来说,ph4的计算量要远远少于ph6、ph3的计算量,因此ph4的操作次数多几次,对整体的计算量影响几乎可忽略。ph2、ph1是采用移位的方式进行的计算,计算量也不大,两者的计算量相错不大,且小于ph6、ph3的计算量。
从表3中,本文协议与其他所有权转移协议进行计算量比较,本文协议摒弃计算量较大的哈希函数及Rabin算法加密方法,采用交叉位运算、字合成运算、按位运算进行加密,基于上述分析,本文协议标签端的计算量要少于其他协议的计算量,达到降低标签一端计算量的目标;同时本文协议能够弥补其他协议存在的安全隐患问题。
为进一步解释清楚表中计算量相关数据得来原因,此处选择本协议作为研究对象,进行详细展开讲解;同时考虑到篇幅因素,这里选择对本协议ph2表示字合成运算的计算量的5次数据进行详细讲解。详细过程描述如下:
第2.2节步骤四的1)中,在计算随机数x的时候,第一次用到ph2表示字合成运算。x=Syn(IDt_L,K_R)⊕M1。
第2.2节步骤四的3)中,在计算随机数z的时候,第二次用到ph2表示字合成运算。z=Syn(K_L,IDt_R)⊕Cro(IDt_L,K_R)⊕M3。
第2.2节步骤四的6)中,在计算M5′的时候,第三次用到ph2表示字合成运算。M5′=Syn(x,IDt)&Cro(K,y)&z。
第2.2节步骤七的1)中,在计算随机数t的时候,第四次用到ph2表示字合成运算。t=M6⊕Syn(IDt,z)。
第2.2节步骤七的3)中,在计算M8′的时候,第五次用到ph2表示字合成运算。M8′=Syn(t,S)&Cro(t,S)。
1) 针对现有的所有权转移协议进行分析,指出协议存在的安全缺陷,并在此基础之上设计出一种改进的所有权转移协议。
2) 改进的协议为降低标签端的存储空间,将标签的标识符IDt作为计算中一个参量,从而减少其他参数的引入;改进的协议为确保所有权具备唯一确定性,引入归属权标志位FLAG变量,根据归属权标志位FLAG变量的值唯一确定所有权归属问题;改进的协议中采用字合成运算、交叉位运算对传输信息进行加密,能够有效减少通信实体的计算量。
3) 安全性分析部分表明本文协议具备完整的安全需求,性能分析部分表明本文协议具备低成本、低计算量的要求。