杜 旋,郭 崇,姜学峰,王正敏,李 威
1.杭州师范大学,杭州 311121
2.浙江中烟工业有限责任公司,杭州 310008
3.辽宁工业大学 管理学院,辽宁 锦州 121001
无线射频技术(Radio Frequency Identification,RFID)完成了信息的传输,实现了信息传输的目的[1-3]。开放环境下的无线通信是一种不安全的通信系统,容易受到黑客攻击以及其他各种安全威胁[4-5]。实际生活应用中,经常变化所有权。例如:零售商品过程中,零售商、批发商是否还有该商品的归属权问题[6-8]。
针对该问题,许多专家学者设计出不同的所有权转移协议:(1)有基于可信第三方的所有权转移协议,比如:文献[9]。该种方法安全性主要依赖于可信第三方,同时也增加了通信实体数,使得该协议的应用受到一定的局限。(2)无可信第三方参与的所有权转移协议,比如:文献[10]、文献[11]。但上述协议存在一定的安全问题。(3)基于二次剩余定理的所有权转移协议,比如:文献[12]、文献[13]、文献[14]。此类协议安全性依赖于二次剩余定理,该定理的安全性基于数学中大数分解难题,使得采用该算法的协议计算量较大。
本文对文献[15]中所提出的协议进行详细分析,发现所提协议无法抵抗攻击者发起的去同步化攻击。对协议进行详细分析的过程在第2章中体现;在文献[15]基础之上,结合第2章的详细分析,第3章设计出能够抵抗去同步化攻击的所有权转移协议。所提协议中引入计数器count,通过计数器的值来解决原协议中存在的去同步化攻击缺陷问题。
文献[15]中提出了一种改进的超轻量级RFID所有权转移协议,协议中声称可以抵抗去同步化攻击。但本文研究发现,文献[15]中的所有权转移协议并不能抵抗去同步化攻击。具体攻击过程如下:
攻击者通过监听手段,可以获得文献[15]中一个完整的通信过程中所有的信息,即:IDS,M,N,P,Q,X,Y。攻击者在获得上述信息之后,立刻阻断前面五步的通信过程,通过不断重放消息Q的手段,可以使得Dj与T之间的共享密钥失去同步。
第一次重放:攻击者伪装成Di给Dj发送截获的Q消息。因为之前认证Q通过,因此重放信息Q也一定可以认证通过。重放消息之前,Di中存放的信息如下:si,ti,X,Y,IDSold=IDS,IDSnew=IDS⊕N T⊕NR 。重放消息之后,Di产生随机数Si+1,并计算ti+1,X1,Y1,同时更新数据 IDSold=IDS,IDSnew=IDS⊕NT⊕NR ,令此处的 IDSnew=IDS1,ui=si,vi=ti,si=si+1,ti=ti+1。 Di更新完之后,将会把 X1、Y1的消息发送给标签,攻击者阻断两者之间的信息传输。
第二次重放:在第一次重放之后,攻击者截获到Di传给标签的X1、Y1。此时攻击者阻止该信息传输给标签,同时攻击者再次重放消息Q。因为Di中存放的有本次以及上次认证过程中用到的共享密钥,因此Q还是可以通过认证。再次重放消息Q以后,Di会进行如下操作:
Di产生随机数 Si+2,并计算 ti+2,X2,Y2;同时更新数据 IDSold=IDSnew=IDS1,IDSnew=IDS1⊕NT⊕NR ,令此处的 IDSnew=IDS2,ui=si+1,vi=ti+1,si=si+2,ti=ti+2。 Di更新完之后,将会把 X2、Y2的消息发送给标签,攻击者阻断两者之间的信息传输。
第三次重放:在第二次重放之后,攻击者截获到Di传给标签的X2、Y2。此时攻击者阻止该信息传输给标签,同时攻击者再次重放消息Q。因为Di中存放的有本次以及上次认证过程中用到的共享密钥,因此Q还是可以通过认证。再次重放消息Q以后,Di会进行如下操作:
Di产生随机数 Si+3,并计算ti+3,X3,Y3;同时更新数据 IDSold=IDSnew=IDS2,IDSnew=IDS2⊕NT⊕NR,令此处的 IDSnew=IDS3,ui=si+2,vi=ti+2,si=si+3,ti=ti+3 。 Di更新完之后,将会把 X3、Y3的消息发送给标签,攻击者阻断两者之间的信息传输。
三次重放攻击完成之后,攻击者将原本截获的消息X、Y传给标签。因为在前面的三次重放攻击过程中,标签端始终没有进行共享密钥的更新,因此X和Y肯定可以通过认证;通过认证之后,标签更新共享密钥,IDS=IDS⊕N T⊕NR,即IDS=IDS1;共享密钥为ti+1。
分析上面标签端与Di端最终存放的共享密钥信息可以发现,两者之间出现不同步。标签端存放的信息为IDS1、ti+1;Di端存放的信息为IDS3、ti+3。到此为止,攻击者成功通过重放攻击使得Di与标签之间的共享密钥不再一样,从而使得后续的认证失败,因此原协议无法抵抗去同步化攻击。
改进的协议中,在S_old端引入消息计数器count,通过计数器count的值来抵抗重放攻击。计数器count用来记录消息Q的重放次数,count的值不存在或为0,说明Q消息是第一次传输过来;count的值不为0时,说明消息Q可能是重放过来的消息。针对两种不同的情况,S_old端进行的操作不同,不仅可以抵抗重放攻击,而且也避免了S_old与标签之间的不同步问题。
设计的协议中各符号的含义:
标签的原所有者用符号S_old表示;
标签的新所有者用符号S_new表示;
标签用符号T表示;
第i个标签用符号Ti表示;
第i个标签的标识符ID的左半部分用符号IDi_L表示;
第i个标签的标识符ID的右半部分用符号IDi_R表示;
标签标识符ID的左半部分用符号ID_L表示;
标签标识符ID的右半部分用符号ID_R表示;
标签最开始保存的数据用符号r_x表示;
标签产生的随机数用符号r1表示;
标签的原所有者生成的随机数用符号r2表示;
梅森数用符号n表示;
密钥的长度用符号L表示;
标签Ti的私钥用符号S_i表示;
标签Ti的公钥用符号K_i表示,其中K_i=S_i2mod n;
标签Ti上一轮的私钥用符号U_i表示;
标签Ti上一轮的公钥用符号V_i表示,其中U_i=V_i2mod n;
标签的新所有者生成的随机数用符号S_i+1表示;
本轮认证的公钥用符号K_i+1表示,其中K_i+1=S_i+12mod n;
标签的新所有者对消息Q的计数器用符号count表示;
M,N,P,Q,X,Y:协议中的通信数据;
MIXBITS(a,b):对(a,b)进行运算得到新的随机数;
异或运算用符号⊕表示;
与运算用符号&表示;
[X]L:取[]运算结果的前L位。
对图1中出现的M,N,P,Q,X,Y符号的说明:
M=K_i⊕r1;
N=r2⊕IDi_R;
P=[(r1⊕r2⊕K_i)2mod n]L,表示取[]运算结果的前L位;
Q=[(r1⊕r2⊕ID_R)2mod n]L,表示取[]运算结果的前L位;
X=S_i+1⊕r1⊕IDi_R ;
Y=K_i+1&r1&IDi_R。
图1 改进的协议
结合图1协议步骤如下:
(1)S_old向T发出请求命令Request。
(2)T 收到信息后,首先计算r1=r_x、M=K_i⊕r1的值,然后将ID_L、M发送给S_old。
(3)S_old收到信息后,第一步是在数据库中验证ID_L的真伪。为假,协议停止;反之,第二步是S_old产生一个随机数r2,然后通过计算得到随机数r1。接着再用r1、r2、与IDi_L相对应的IDi_R以及K_i来计算 N=r2⊕IDi_R和 P=[(r1⊕r2⊕K_i)2mod n]L,最后将N、P发送给T。
(4)T收到信息后,第一步是用自身存放的ID_R来计算N⊕ID_R得到r2,然后标签验证P的正确性,即
若P′与P不相等,说明S_old是伪造的,协议立刻终止;若P′与P相等,说明标签认证S_old通过,然后标签就开始更新数据r_x=MIX BITS(r1,r2)。再接着开始计算Q,最后把Q发送给S_old。
(5)S_old收到信息后,第一步是验证Q的真假,即
为假,协议终止;反之,S_old将Q、r1、ID_L的值通过安全信道一并传给S_new。
(6)S_new收到信息后,第一步是在数据库中查找是否存在Q′与Q相等,若存在,并且相对应的计数器count的值不为0,说明该消息Q之前已传输过来过,为了抵抗攻击者的重放攻击,S_new执行步骤(7);若不存在,S_new执行步骤(8)。
(7)S_new在数据库中验证ID_L的真伪。为假,协议终止;反之,S_new不做任何更新,直接将上次认证过程中计算得到的X和Y的值传给标签。
(8)S_new先将Q的值存放在自己的数据库中,并且分配相对应的计数器,同时令该计数器count的值为1,接着S_new在数据库中验证ID_L的真伪。为假,协议终止;反之,S_new生成一个长度为L位的随机数S_i+1,将该值作为当前认证过程中的新的私钥,并计算K_i+1=S_i+12mod n,计算完成之后,开始更新数据 U_i=S_i、V_i=K_i、S_i=S_i+1、K_i=K_i+1,再接着用自身生成的随机数S_i+1、S_old传输过来的r1、计算得到的K_i+1、与IDi_L相对应的IDi_R来计算 X=S_i+1⊕r1⊕IDi_R、Y=K_i+1&r1&IDi_R,最后把X、Y发送给T。
(9)T收到信息后,第一步是计算得到私钥S_i+1,然后用计算得到的私钥S_i+1、自身生成的随机数r1、自身存放的ID_R来验证Y的正确性,即
若Y′与Y不相等,说明S_new是伪造的,协议立刻终止;若Y′与Y相等,说明标签认证S_new成功,然后标签开始更新数据K_i=Y⊕r2,标签所有权转移成功。
协议的改进策略主要表现在:新所有者S_new端引入对消息Q的计数器count概念。S_new收到Q消息后,第一步是验证Q的值,即:根据计数器count的值,进行不同的操作。count的值为0,表示接收到的Q是第一次传过来;count的值不为0,表示接收到的Q之前已经传过来至少一次,为了抵抗攻击者的重放攻击及去同步化攻击,新所有者S_new采取不更新随机数的做法以此来抵抗攻击者的攻击。协议的改进优势主要表现在:攻击者无法通过重放消息Q使新所有者S_new与标签T之间密钥失去一致性,使得改进的协议能够有效地抵抗攻击者的蓄意的重放攻击以及去同步化攻击,保证了协议通信的安全性及可靠性。
针对文献[15]所提出的协议中标签的新所有者因无法抵抗重放消息而导致的去同步化攻击问题,改进的协议引入对消息Q的计数器count的概念。根据count的值进行不相同的操作,来解决去同步化攻击。当count的值不存在或为0的时候,标签的新所有者才会产生新的随机数;否则不会产生随机数,从而可以避免多次接收到消息Q之后不断产生随机数,使得两者之间的共享密钥不同步的问题。