段 艷 萍
(廣州商學(xué)院國(guó)際學(xué)院 廣東 廣州 510006)
射頻識(shí)別技術(shù)不需要接觸通信實(shí)體,即可讀出特定通信實(shí)體存放的信息[1-2]。在RFID系統(tǒng)中一般由三部分組成:標(biāo)簽、讀寫(xiě)器、后臺(tái)數(shù)據(jù)庫(kù)。無(wú)線信道因其自身固有的屬性,使得該通信模式被認(rèn)定為不安全?;诖耍谘芯縍FID系統(tǒng)通信過(guò)程中,多數(shù)情況下會(huì)將讀寫(xiě)器與后臺(tái)服務(wù)器看成一個(gè)整體[3-6]。
在RFID系統(tǒng)中,相對(duì)于讀寫(xiě)器和后臺(tái)服務(wù)器而言,標(biāo)簽這個(gè)通信實(shí)體很多方面與其不同。無(wú)源標(biāo)簽不具備主動(dòng)向讀寫(xiě)器發(fā)送信息的功能,只能依賴于反射讀寫(xiě)器的能量進(jìn)行信息的交換[7-8]。在現(xiàn)行推廣的RFID系統(tǒng)中,主要以低成本為主,因此標(biāo)簽自然會(huì)選擇無(wú)源標(biāo)簽[9-10]。
要想保證RFID系統(tǒng)中標(biāo)簽與讀寫(xiě)器之間通信消息的安全,為解決此困境,國(guó)內(nèi)外許多專家學(xué)者設(shè)計(jì)出不同類型的雙向認(rèn)證協(xié)議。
文獻(xiàn)[11]中提出一種雙向認(rèn)證協(xié)議,但協(xié)議設(shè)計(jì)之時(shí)存在缺陷。具體的,因通信實(shí)體產(chǎn)生的隨機(jī)數(shù)r1和r2未經(jīng)過(guò)加密,而是采用明文的方式直接發(fā)送出去,使得攻擊者監(jiān)聽(tīng)一個(gè)完整的通信過(guò)程,即可獲取這兩個(gè)通信信息;加密算法Hash函數(shù)對(duì)外公開(kāi),使得協(xié)議無(wú)法抵抗暴力破解攻擊。在文獻(xiàn)[12]中設(shè)計(jì)一個(gè)改進(jìn)的雙向認(rèn)證協(xié)議。協(xié)議中雖未發(fā)現(xiàn)安全漏洞,但協(xié)議采用優(yōu)化之后的Rabin算法進(jìn)行加密,對(duì)協(xié)議進(jìn)行深入研究,該加密算法即為模運(yùn)算。相對(duì)于低成本的標(biāo)簽來(lái)說(shuō),該計(jì)算量有些超出標(biāo)簽的計(jì)算能力,因此適應(yīng)性受到制約。在文獻(xiàn)[13]中提出LMAP協(xié)議,該協(xié)議通過(guò)通信實(shí)體之間的多次認(rèn)證來(lái)保障信息的安全性。對(duì)協(xié)議進(jìn)行深入分析,協(xié)議無(wú)法抵抗拒絕服務(wù)攻擊。在文獻(xiàn)[14]中利用PRF和HASH設(shè)計(jì)一個(gè)雙向認(rèn)證協(xié)議。協(xié)議具備一定的安全保障,但對(duì)協(xié)議進(jìn)行更為深入的分析,協(xié)議無(wú)法抵抗DoS攻擊。文獻(xiàn)[15]對(duì)文獻(xiàn)[14]中的協(xié)議存在的安全性進(jìn)行了詳細(xì)的分析,指出其協(xié)議存在的不足。同時(shí)文獻(xiàn)[15]利用HASH函數(shù)設(shè)計(jì)了一個(gè)協(xié)議。攻擊者通過(guò)多次監(jiān)聽(tīng)通信實(shí)體發(fā)送消息,能夠定位通信實(shí)體的位置,從而實(shí)施追蹤攻擊,獲取通信實(shí)體的隱私信息或破壞通信實(shí)體之間的正常通信,因此協(xié)議無(wú)法抵抗追蹤攻擊。文獻(xiàn)[16]基于挑戰(zhàn)-響應(yīng)的模式設(shè)計(jì)一個(gè)認(rèn)證協(xié)議。通信消息加密過(guò)程中混入隨機(jī)數(shù),從而抵抗攻擊者的追蹤攻擊,但協(xié)議無(wú)法抵抗攻擊者發(fā)起的去同步化攻擊。文獻(xiàn)[17]基于偽ID設(shè)計(jì)出一個(gè)認(rèn)證協(xié)議,同時(shí)用串空間模型對(duì)協(xié)議的安全性進(jìn)行了較為全面的證明,但是標(biāo)簽一端因需要產(chǎn)生隨機(jī)數(shù),需要具備隨機(jī)數(shù)產(chǎn)生器以及認(rèn)證過(guò)程較為復(fù)雜,使得協(xié)議的推廣受到制約。文獻(xiàn)[18]設(shè)計(jì)了一個(gè)協(xié)議,文中聲稱協(xié)議可以提供較高的安全性,但對(duì)協(xié)議進(jìn)行深入分析,協(xié)議存在較多的安全隱患,比如:協(xié)議無(wú)法提供最基本的假冒攻擊安全,且攻擊者發(fā)起假冒攻擊獲取通信實(shí)體隱私信息之后,通信實(shí)體卻并未察覺(jué)。
1) 協(xié)議步驟。
文獻(xiàn)[18]協(xié)議的流程圖如圖1所示。

圖1 文獻(xiàn)[18]協(xié)議的流程圖
結(jié)合圖1,協(xié)議的步驟可描述如下:
(1) 讀寫(xiě)器向標(biāo)簽發(fā)送ASK。
(2) 標(biāo)簽收到信息,產(chǎn)生隨機(jī)數(shù)r,計(jì)算Hm(ID,r),將Hm(ID,r)和r發(fā)送給讀寫(xiě)器。
(3) 讀寫(xiě)器查找是否存在Hm(ID′,r)與Hm(ID,r)相等。未找到,協(xié)議終止。找到,將ACK和Hm(ID′,r)發(fā)送給標(biāo)簽。
(4) 標(biāo)簽比較收到的Hm(ID′,r)與自身計(jì)算的Hm(ID,r)是否相等。若不相等,協(xié)議終止。若相等,向讀寫(xiě)器發(fā)送ACK。
(5) 讀寫(xiě)器收到信息,再向標(biāo)簽發(fā)送READ指令,同時(shí)更新密鑰和ID′信息。
(6) 標(biāo)簽收到READ指令,進(jìn)行信息讀取,同時(shí)進(jìn)行密鑰和ID′信息更新。
2) 對(duì)協(xié)議的分析。通過(guò)對(duì)上述協(xié)議步驟的分析,可以得出結(jié)論:文獻(xiàn)[18]協(xié)議無(wú)法抵抗攻擊者的假冒攻擊。具體分析過(guò)程如下:
根據(jù)協(xié)議的描述可以得知:協(xié)議正常執(zhí)行時(shí),讀寫(xiě)器發(fā)送給標(biāo)簽的信息Hm(ID′,r)其實(shí)與標(biāo)簽發(fā)送給讀寫(xiě)器的信息Hm(ID,r)是相等的。既然兩者相等,則攻擊者可以按照如下攻擊模型進(jìn)行假冒攻擊。
步驟1合法讀寫(xiě)器向合法標(biāo)簽發(fā)送ASK。
步驟2標(biāo)簽產(chǎn)生r,計(jì)算Hm(ID,r),將
步驟3攻擊者通過(guò)監(jiān)聽(tīng)等手段獲取步驟2通信信息,且阻塞讀寫(xiě)器與標(biāo)簽的通信。此時(shí),攻擊者開(kāi)始假冒成讀寫(xiě)器與標(biāo)簽進(jìn)行通信。
因?yàn)槲墨I(xiàn)[18]協(xié)議步驟3中只是驗(yàn)證Hm(ID,r)與Hm(ID′,r)是否存在相同。存在,就會(huì)將Hm(ID,r)發(fā)送給標(biāo)簽。此時(shí)攻擊者截獲的Hm(ID,r)信息如果正確,則Hm(ID,r)與Hm(ID′,r)是相等的。因此,攻擊者發(fā)送Hm(ID,r)也可以通過(guò)標(biāo)簽的驗(yàn)證。
步驟4標(biāo)簽驗(yàn)證讀寫(xiě)器通過(guò),向讀寫(xiě)器發(fā)送ACK。
步驟5攻擊者將會(huì)接收到ACK,攻擊者無(wú)須進(jìn)行信息的更新操作,只需將READ指令發(fā)送給標(biāo)簽即可。
步驟6標(biāo)簽收到攻擊者發(fā)送來(lái)的READ指令,無(wú)須進(jìn)行驗(yàn)證,攻擊者假冒的讀寫(xiě)器即可開(kāi)始對(duì)標(biāo)簽存放的信息讀取。
因此,基于上述攻擊模型的分析,文獻(xiàn)[18]協(xié)議無(wú)法抵抗攻擊者發(fā)起的假冒攻擊,使得設(shè)計(jì)的協(xié)議存在一定的安全隱患,無(wú)法提供通信所需的安全要求。針對(duì)文獻(xiàn)[18]協(xié)議,在分析該協(xié)議基礎(chǔ)之上,提出一種改進(jìn)的協(xié)議。
Reader:讀寫(xiě)器(讀寫(xiě)器與后臺(tái)服務(wù)器之間通過(guò)有線方式進(jìn)行信息交換,一般認(rèn)為安全可靠,這里將兩者看為一個(gè)整體,用讀寫(xiě)器Reader表示)。
Tag:標(biāo)簽。
K:讀寫(xiě)器與標(biāo)簽之間的共享密鑰。
Knew:Reader、Tag間的當(dāng)前K。
Kold:Reader、Tag間的上一輪K。
ID:標(biāo)簽的標(biāo)識(shí)符。
x:讀寫(xiě)器產(chǎn)生的隨機(jī)數(shù)。
y:標(biāo)簽產(chǎn)生的隨機(jī)數(shù)。
&:按位與運(yùn)算。
⊕:按位“異或”運(yùn)算。
EaC(X, Y):交換再交叉運(yùn)算。
為統(tǒng)一文中描述,約定用EaC(X, Y)符號(hào)表示交換再交叉運(yùn)算。交換再交叉運(yùn)算EaC(X, Y)可以按照如下定義:X、Y是兩個(gè)不同的二進(jìn)制序列,位數(shù)均為L(zhǎng)位,且滿足L為偶數(shù);取前者二進(jìn)制序列X的后L/2位,放在新組成的二進(jìn)制序列Z的前面,同時(shí)取后者二進(jìn)制序列Y的前L/2位,放在新組成的二進(jìn)制序列Z的后面,從而組成一個(gè)新的二進(jìn)制序列Z;在對(duì)二進(jìn)制序列Z進(jìn)行遍歷,將Z奇數(shù)位上面的數(shù)與相鄰的偶數(shù)位上面的數(shù)進(jìn)行交叉互換,即可得到交換再交叉運(yùn)算的結(jié)果。
比如:選取L=8,X=1001 0011,Y=1011 0110,則根據(jù)上述定義可得Z=0011 1011,EaC(X,Y)=0011 0111。該例子具體示意圖如圖2所示。

圖2 交換再交叉運(yùn)算示意圖
本文協(xié)議流程如圖3所示。

圖3 本文協(xié)議流程
結(jié)合圖3,本文協(xié)議具體認(rèn)證過(guò)程可描述如下:
步驟1讀寫(xiě)器產(chǎn)生隨機(jī)數(shù)x,計(jì)算M1=x⊕K、M2=EaC(x, ID);將M1、M2以及認(rèn)證請(qǐng)求命令Query一并發(fā)送給標(biāo)簽。
步驟2標(biāo)簽收到信息,驗(yàn)證信息發(fā)送源的真?zhèn)?,具體驗(yàn)證方法如下:
用收到的M1、自身存儲(chǔ)的共享密鑰K計(jì)算隨機(jī)數(shù)x′=M1⊕K;然后用計(jì)算所得x′、自身儲(chǔ)存的標(biāo)識(shí)符ID計(jì)算M2′=EaC(x′,ID)。比較M2′與收到的M2是否等。若M2′≠M(fèi)2,則協(xié)議停止。M2′=M2,表明消息發(fā)送源是真實(shí)的,標(biāo)簽繼續(xù)后續(xù)操作。
標(biāo)簽產(chǎn)生隨機(jī)數(shù)y,計(jì)算M3=y⊕ID、M4=EaC(x⊕y,y⊕K);最后將M3、M4一并發(fā)送給讀寫(xiě)器,以作為標(biāo)簽一方對(duì)讀寫(xiě)器的響應(yīng)。
步驟3用收到的M3、自身儲(chǔ)放的標(biāo)識(shí)符ID計(jì)算隨機(jī)數(shù)y′=M3⊕ID;然后用計(jì)算所得隨機(jī)數(shù)y′、自身產(chǎn)生隨機(jī)數(shù)x、自身存儲(chǔ)的當(dāng)前認(rèn)證共享密鑰K計(jì)算M4′=EaC(x⊕y′,y′⊕K)。比較計(jì)算得到的M4′與收到的M4數(shù)值是否相等。
若不相等,讀寫(xiě)器將查找上一輪認(rèn)證用到的共享密鑰Kold來(lái)替換當(dāng)前認(rèn)證的共享密鑰Knew再次進(jìn)行M4″的計(jì)算,M4″=EaC(x⊕y′,y′⊕Kold);比較M4″與M4是否等。M4″≠M(fèi)4,協(xié)議結(jié)束;M4″=M4,表明y′=y,可進(jìn)行后續(xù)操作。計(jì)算所得y′、自身產(chǎn)生x、自身儲(chǔ)放ID和K計(jì)算M5=EaC(x & ID,y & K);接著開(kāi)始更新信息Kold=Knew、Knew=EaC(x, y),最后將M5發(fā)送給標(biāo)簽。
若相等,表明消息的發(fā)送方合法性,且表明y′=y,可進(jìn)行后續(xù)操作。計(jì)算所得y′、自身產(chǎn)生x、自身儲(chǔ)放ID和K計(jì)算M5=EaC(x & ID,y & K);接著開(kāi)始更新信息Kold=Knew、Knew=EaC(x,y),最后將M5發(fā)送給標(biāo)簽。
步驟4標(biāo)簽收到信息,先對(duì)信息的發(fā)送源真?zhèn)芜M(jìn)行驗(yàn)證,具體驗(yàn)證方法如下:
在步驟2中計(jì)算所得隨機(jī)數(shù)x′、自身產(chǎn)生隨機(jī)數(shù)y、自身儲(chǔ)放ID和K計(jì)算M5′=EaC(x′ & ID,y & K);然后比較計(jì)算所得M5′與收到的M5是否相等。
M5′≠M(fèi)5,協(xié)議結(jié)束。M5′=M5,更新信息:Knew=EaC(x, y)。
(1) 協(xié)議形式化描述。為使本文協(xié)議便于用GNY形式邏輯語(yǔ)言描述,作如下約定:R表示讀寫(xiě)器(已包含后臺(tái)服務(wù)器),T表示標(biāo)簽;則用GNY形式邏輯語(yǔ)言描述以上協(xié)議如下:
Msg1:T<*【M1, M2, Query】;
Msg2:R<*【M3, M4】;
Msg3:T<*【M5】。
(2) 協(xié)議初始化假設(shè)。文中所提協(xié)議基于如下:R、T表示主體,即R表示讀寫(xiě)器(已包含后臺(tái)服務(wù)器),T表示標(biāo)簽。
Sup1:(K、ID、y)∈T。
Sup2:(Knew、Kold、ID、x)∈R。
Sup3:R|≡#(x、y)。
Sup4:T|≡#(x、y)。




(3) 協(xié)議證明目標(biāo)。本文協(xié)議的證明目標(biāo)主要有三個(gè),具體如下:
Goal1:T|≡R|~#(M1, M2);
Goal2:R|≡T|~#(M3, M4);
Goal3:T|≡R|~#(M5)。
(4) 協(xié)議證明過(guò)程。因Goal2:R|≡T|~#(M3, M4)、Goal3:T|≡R|~#(M5)的證明過(guò)程與Goal1:T|≡R|~#(M1,M2)的證明過(guò)程相似,因此此處僅以Goal1:T|≡R|~#(M1,M2)為例進(jìn)行證明,具體證明過(guò)程如下[19]。

∴ {M1,M2}∈T

∴ T=#{M1, M2}

∴ {M1, M2}∈T

∴ T|≡#{M1,M2}

∴ T|=R~{M1, M2}
∵ 新鮮性定義以及推導(dǎo)出來(lái)的T=#{M1, M2}、T|=R~{M1,M2}
∴ Goal1:T|≡R|~#(M1,M2)得證明。
雙向認(rèn)證協(xié)議中的通信實(shí)體有三個(gè):標(biāo)簽、后臺(tái)服務(wù)器、讀寫(xiě)器。本文協(xié)議在設(shè)計(jì)之時(shí)已將讀寫(xiě)器與后臺(tái)服務(wù)器看作一個(gè)整體,該整體具有強(qiáng)大的計(jì)算能力、足夠的存儲(chǔ)空間、完備的查詢能力;相對(duì)于標(biāo)簽而言,則并未具備上述資源,標(biāo)簽一端的計(jì)算能力以及存儲(chǔ)空間均受到嚴(yán)格的限制。因此本節(jié)將會(huì)選擇標(biāo)簽作為研究對(duì)象進(jìn)行深入分析。本文協(xié)議與其他此類協(xié)議進(jìn)行性能分析結(jié)果見(jiàn)表1所示。

表1 協(xié)議的性能分析
產(chǎn)生隨機(jī)數(shù)的計(jì)算量用R來(lái)表示;哈希函數(shù)的計(jì)算量用H來(lái)表示;按位運(yùn)算(比如:按位與運(yùn)算等)的計(jì)算量用A來(lái)表示;M表示模運(yùn)算的計(jì)算量;交換再交叉運(yùn)算的計(jì)算量用EaC來(lái)表示。加密參數(shù)長(zhǎng)度均為l。
在上述各種不同的計(jì)算中,各個(gè)計(jì)算的計(jì)算量從大到小排序可以按照如下序列:M、H、R、EaC、A。其中模運(yùn)算、哈希函數(shù)屬于輕量級(jí)的計(jì)算,其計(jì)算量遠(yuǎn)遠(yuǎn)超于交換再交叉運(yùn)算和按位運(yùn)算。
此處以本文協(xié)議為例進(jìn)行詳細(xì)分析計(jì)算量、存儲(chǔ)量大小計(jì)算的由來(lái),其他協(xié)議分析方法一致。
本文協(xié)議在Step2中,在計(jì)算x′時(shí)第一次用到按位運(yùn)算(此處是按位“異或”運(yùn)算);在計(jì)算M2′時(shí)第一次用到交換再交叉運(yùn)算;產(chǎn)生隨機(jī)數(shù)y,進(jìn)行一個(gè)隨機(jī)數(shù)產(chǎn)生計(jì)算;在計(jì)算M3時(shí)第二次用到按位運(yùn)算(此處仍是按位“異或”運(yùn)算);在計(jì)算M4時(shí)第二次用到交換再交叉運(yùn)算。
本文協(xié)議在Step4中,在計(jì)算M5′時(shí)第三次用到交換再交叉運(yùn)算;在更新信息Knew時(shí)第四次用到交換再交叉運(yùn)算。
本文協(xié)議在認(rèn)證過(guò)程中,標(biāo)簽一端計(jì)算量為:產(chǎn)生隨機(jī)數(shù)計(jì)算一次、按位運(yùn)算用到兩次、交換再交叉運(yùn)算用到四次。故標(biāo)簽一端總的計(jì)算量等于R+2A+4EaC。
在本文協(xié)議中,標(biāo)簽一端存放如下信息:共享密鑰K、隨機(jī)數(shù)y、標(biāo)簽的標(biāo)識(shí)符ID三個(gè)參數(shù)。每個(gè)參數(shù)的長(zhǎng)度均為l,因此標(biāo)簽一端的存儲(chǔ)量為3l。
從標(biāo)簽計(jì)算量角度出發(fā),本文協(xié)議與其他協(xié)議比較,計(jì)算量得到較大幅度的減少:本文協(xié)議摒棄哈希加密方法,采用按位運(yùn)算實(shí)現(xiàn)信息的加密。同時(shí)文獻(xiàn)[18]中統(tǒng)計(jì)的計(jì)算量并不是最為完善的,因該參考文獻(xiàn)中對(duì)于標(biāo)簽一端的信息更新并未進(jìn)行詳細(xì)的闡述,即不清楚標(biāo)簽在進(jìn)行信息更新過(guò)程中是否用到哈希函數(shù)進(jìn)行加密。鑒于當(dāng)前數(shù)據(jù),本文協(xié)議計(jì)算量已少于該文獻(xiàn)中協(xié)議的計(jì)算量。
綜合上述,本文協(xié)議在標(biāo)簽一端的計(jì)算量以及存儲(chǔ)量方面優(yōu)于其他協(xié)議;同時(shí)本文協(xié)議彌補(bǔ)了其他協(xié)議中存在的安全隱患問(wèn)題。
在分析文獻(xiàn)[18]協(xié)議存在安全缺陷的基礎(chǔ)之上,設(shè)計(jì)出一種改進(jìn)的能夠抵抗假冒攻擊的雙向認(rèn)證協(xié)議。改進(jìn)的協(xié)議對(duì)所有信息采用先加密再傳送機(jī)制,能夠增加攻擊者的破解難度;為盡可能降低通信實(shí)體的計(jì)算量,引入按位操作實(shí)現(xiàn)的交換再交叉運(yùn)算對(duì)信息進(jìn)行加密;讀寫(xiě)器一端存儲(chǔ)前后兩輪認(rèn)證用到的共享密鑰,以抵抗攻擊者發(fā)起的去同步化攻擊。采用基于GNY邏輯形式化對(duì)協(xié)議進(jìn)行分析,推理出協(xié)議具備一定安全性,能夠滿足當(dāng)前用戶的安全需求。對(duì)協(xié)議進(jìn)行性能分析,以標(biāo)簽作為研究對(duì)象,表明改進(jìn)的協(xié)議具備計(jì)算量低的特征,能夠較好地適用于當(dāng)前低成本的RFID系統(tǒng)。