王彥, 李永珍
( 延邊大學(xué)工學(xué)院 計(jì)算機(jī)應(yīng)用技術(shù)學(xué)科網(wǎng)絡(luò)與信息安全研究室, 吉林 延吉 133002 )
RFID是一種通過(guò)無(wú)線(xiàn)廣播進(jìn)行非接觸式雙向通信的自動(dòng)識(shí)別技術(shù),它具有精度高、操作簡(jiǎn)單、感知能力強(qiáng)等優(yōu)點(diǎn)[1],但同時(shí)RFID技術(shù)也面臨著保密、重放攻擊、假冒攻擊、前向可追蹤、系統(tǒng)內(nèi)部攻擊等安全問(wèn)題,因此安全和隱私保護(hù)是RFID應(yīng)用時(shí)首先要解決的關(guān)鍵問(wèn)題之一.現(xiàn)有的協(xié)議大部分建立在閱讀器和后臺(tái)數(shù)據(jù)庫(kù)為安全通信的假設(shè)上,但是在實(shí)際應(yīng)用中無(wú)線(xiàn)閱讀器[2-3]的應(yīng)用越來(lái)越廣泛,而無(wú)線(xiàn)閱讀器和后臺(tái)數(shù)據(jù)庫(kù)之間是通過(guò)不安全的無(wú)線(xiàn)信道進(jìn)行通信,因此需要設(shè)計(jì)一種協(xié)議來(lái)確保通信的安全性.文獻(xiàn)[4]提出了MRPPS-IoT協(xié)議,此協(xié)議綜合運(yùn)用Hash函數(shù)、異或運(yùn)算、對(duì)稱(chēng)加密、身份加密等方法來(lái)實(shí)現(xiàn)標(biāo)簽、無(wú)線(xiàn)閱讀器和后臺(tái)數(shù)據(jù)庫(kù)之間的相互認(rèn)證,但由于這個(gè)協(xié)議采用的對(duì)稱(chēng)加密、身份加密等方法比較復(fù)雜,因此MRPPS-IoT協(xié)議效率不是很高.為了提高認(rèn)證的效率,本文采用輕量級(jí)加密函數(shù)(Hash函數(shù)和異或運(yùn)算)來(lái)加密通信過(guò)程中的信息,并采用自動(dòng)更新標(biāo)簽ID、標(biāo)簽和閱讀器共享密鑰、標(biāo)簽和閱讀器分別與后臺(tái)數(shù)據(jù)庫(kù)共享密鑰[5-6]等方法來(lái)實(shí)現(xiàn)雙向認(rèn)證并確保通信安全.
文獻(xiàn)[7]提出了一種RFID雙向安全認(rèn)證協(xié)議,該安全認(rèn)證協(xié)議中使用的符號(hào)見(jiàn)表1,協(xié)議的認(rèn)證過(guò)程如圖1所示.在圖1中M=H(Ti⊕R),N=H(ML‖R‖IDSi)⊕IDSi+1,keyi+1=keyi⊕(RL‖ML),IDSi+1=Ekey i+1(ID).
表1 文獻(xiàn)[7]中使用的一些符號(hào)
圖1 文獻(xiàn)[7]中協(xié)議的認(rèn)證過(guò)程
文獻(xiàn)[7]的協(xié)議雖然是建立在閱讀器和后臺(tái)數(shù)據(jù)庫(kù)為安全通信的假設(shè)上,大大減少了后臺(tái)數(shù)據(jù)庫(kù)的運(yùn)算量(只需要O(1)的工作量),但是通過(guò)分析可以發(fā)現(xiàn)此協(xié)議存在如下問(wèn)題:
1) 隨著無(wú)線(xiàn)閱讀器越來(lái)越廣泛的應(yīng)用,后臺(tái)數(shù)據(jù)庫(kù)和閱讀器之間的通信不再是安全的,所以文獻(xiàn)[7]提出的協(xié)議具有一定的局限性.
2) Hash函數(shù)是一種公開(kāi)函數(shù),攻擊者可以獲得其算法.如果攻擊者竊聽(tīng)到認(rèn)證過(guò)程的第2步信息:ML,R和H(ML‖R)⊕IDSi, 且已知Hash函數(shù)的計(jì)算方法,那么他就可以通過(guò)計(jì)算H(ML‖R)進(jìn)而獲得IDSi.同理,攻擊者也可以獲得IDSi+1,ID等保密信息,這時(shí)此協(xié)議既無(wú)法滿(mǎn)足保密性也無(wú)法抵抗跟蹤、假冒、重放等攻擊.
3) 在設(shè)計(jì)上未考慮系統(tǒng)內(nèi)部攻擊,因此無(wú)法抵抗內(nèi)部攻擊.
4) 協(xié)議中沒(méi)有對(duì)閱讀器進(jìn)行合法性的驗(yàn)證,任何攻擊者都可以假冒閱讀器讀取標(biāo)簽的信息.
本文在文獻(xiàn)[7]的基礎(chǔ)上提出了一種改進(jìn)的認(rèn)證協(xié)議,協(xié)議中使用的相關(guān)符號(hào)見(jiàn)表2.
表2 新協(xié)議中使用的符號(hào)
首先由后臺(tái)數(shù)據(jù)庫(kù)產(chǎn)生標(biāo)簽和閱讀器的各項(xiàng)信息(如表2),然后將(ID、Ttd、Tt)存入相應(yīng)的標(biāo)簽,將(RID、Rrd、Tr)存入相應(yīng)的閱讀器.同時(shí)在后臺(tái)數(shù)據(jù)庫(kù)建立一個(gè)ID表和一個(gè)RID表,ID表中每一項(xiàng)存儲(chǔ)相應(yīng)標(biāo)簽的(IDold,IDnew,Ttd),RID表中每一項(xiàng)存儲(chǔ)相應(yīng)閱讀器的(RID,Rrd),其中IDold=IDnew=ID,Tr=Tt=0.
協(xié)議的認(rèn)證過(guò)程如圖2所示,具體過(guò)程如下:
1) 閱讀器產(chǎn)生隨機(jī)數(shù)R, 然后令Tr=1, 并發(fā)送R給標(biāo)簽.
2) 標(biāo)簽收到R之后,首先檢驗(yàn)Tt是否為0.若Tt=0, 則令Tt=1, 然后計(jì)算H(R⊕ID⊕Ttd), 保存Hl(R⊕ID⊕Ttd), 將Hr(R⊕ID⊕Ttd)發(fā)送給閱讀器;若Tt!=0, 則停止認(rèn)證.
3) 閱讀器收到標(biāo)簽的響應(yīng)信息后,首先檢驗(yàn)其存儲(chǔ)器中是否存有R, 若沒(méi)有則停止認(rèn)證,若存有則檢驗(yàn)Tr是否為1.若Tr=1, 則計(jì)算H(R⊕RID⊕Rrd), 保存Hl(R⊕RID⊕Rrd), 將Hr(R⊕RID⊕Rrd)、R和收到的Hr(R⊕ID⊕Ttd)發(fā)送給后臺(tái)數(shù)據(jù)庫(kù),然后令Tr=0; 若Tr!=1, 令Tr=0并停止認(rèn)證.
4) 首先驗(yàn)證閱讀器的合法性.遍歷RID表,對(duì)表中的每一項(xiàng)計(jì)算H(R⊕RID⊕Rrd), 并將Hr(R⊕RID⊕Rrd)與收到的信息作比較.若遍歷完所有項(xiàng)仍沒(méi)有相同的,則閱讀器不合法,停止認(rèn)證;若有使兩者相同的項(xiàng)RID′,則閱讀器合法.然后驗(yàn)證標(biāo)簽的合法性.首先在所有的IDnew中進(jìn)行查找,對(duì)每一項(xiàng)計(jì)算H(R⊕IDnew⊕Ttd), 然后將Hr(R⊕IDnew⊕Ttd)與收到的Hr(R⊕ID⊕Ttd)比較.若IDnew中有使兩者相同的項(xiàng)IDnew′, 則標(biāo)簽合法,更新相應(yīng)的IDold′=IDnew′,IDnew′=H(IDold′⊕R); 若IDnew中沒(méi)有相同項(xiàng),則繼續(xù)在所有的IDold中查找,方法與前一步相同.若在IDold中找到相同項(xiàng)IDold′, 則標(biāo)簽也合法,保持IDold′不變,更新相應(yīng)的IDnew′=H(IDold′⊕R).如果IDnew和IDold中都沒(méi)有相同項(xiàng),則標(biāo)簽不合法,認(rèn)證失敗.如果閱讀器和標(biāo)簽都合法,后臺(tái)數(shù)據(jù)庫(kù)將Hl(R⊕RID′⊕Rrd)和Hl(R⊕IDold′⊕Ttd)發(fā)送給閱讀器.
5) 閱讀器將收到的Hl(R⊕RID′⊕Rrd)與先前保存的Hl(R⊕RID⊕Rrd)作比較,若相同,則確定信息合法,然后刪除存儲(chǔ)器中的R, 并將收到的Hl(R⊕IDold′⊕Ttd)發(fā)送給標(biāo)簽;如果不相同,則停止認(rèn)證.
6) 標(biāo)簽收到信息后令Tt=0, 并將收到的Hl(R⊕IDold′⊕Ttd)與保存的Hl(R⊕ID⊕Ttd)作比較,若不同則信息不合法,認(rèn)證失敗;若相同,則確定信息合法,并更新ID=H(ID⊕R)完成整個(gè)認(rèn)證過(guò)程.
圖2 新協(xié)議的認(rèn)證過(guò)程
基于文獻(xiàn)[7],本文提出如下新協(xié)議:
1) 新協(xié)議主要采用Hash函數(shù)做加密運(yùn)算,由于Hash函數(shù)的單向性,攻擊者很難從中得到重要信息,如ID、RID、Ttd、Rrd等.
2) 標(biāo)簽只采用Hash函數(shù)和異或運(yùn)算加密信息,取消了串聯(lián)運(yùn)算,這樣可以降低標(biāo)簽成本.
3) 在新協(xié)議的閱讀器和后臺(tái)數(shù)據(jù)庫(kù)中存儲(chǔ)合法閱讀器的唯一標(biāo)識(shí)RID,后臺(tái)數(shù)據(jù)庫(kù)通過(guò)RID來(lái)驗(yàn)證閱讀器的合法性,以此確保只有合法的閱讀器才能讀取標(biāo)簽的信息.
4) 標(biāo)簽和閱讀器分別與后臺(tái)數(shù)據(jù)庫(kù)共享一個(gè)密鑰值Ttd和Rrd, 這兩個(gè)值是絕對(duì)保密的,用來(lái)防止系統(tǒng)內(nèi)部的攻擊.
5) 標(biāo)簽和閱讀器在傳送信息時(shí),保存計(jì)算值的左半部分,首先只傳送計(jì)算值的右半部分,后臺(tái)數(shù)據(jù)庫(kù)通過(guò)收到的右半部分的值驗(yàn)證標(biāo)簽和閱讀器的合法性,然后后臺(tái)數(shù)據(jù)庫(kù)發(fā)送相應(yīng)值的左半部分,標(biāo)簽和閱讀器通過(guò)比對(duì)收到的值與保存的值是否相同來(lái)確定收到信息的合法性,這樣可以減少標(biāo)簽和閱讀器的計(jì)算量.
6) 在標(biāo)簽和閱讀器中各存儲(chǔ)一個(gè)狀態(tài)值Tt和Tr, 通過(guò)判斷這些值是1還是0,可以更快速有效地防止重放和假冒攻擊.
在通信過(guò)程中,可能由于攻擊者的破壞或其他外來(lái)因素,標(biāo)簽沒(méi)能收到最后一步的信息,使標(biāo)簽的ID無(wú)法更新,致使標(biāo)簽和后臺(tái)數(shù)據(jù)庫(kù)無(wú)法同步更新ID值.在本協(xié)議中,后臺(tái)數(shù)據(jù)庫(kù)同時(shí)存放標(biāo)簽的新舊ID:IDold和IDnew,IDold為標(biāo)簽在上一次通信時(shí)使用的ID,IDnew為上次通信完成后標(biāo)簽更新的ID.這樣即使后臺(tái)數(shù)據(jù)庫(kù)和標(biāo)簽更新未能同步,在下一次通信時(shí)標(biāo)簽依然可以在后臺(tái)數(shù)據(jù)庫(kù)的IDold中找到匹配項(xiàng),不會(huì)影響后臺(tái)數(shù)據(jù)庫(kù)對(duì)標(biāo)簽的合法性驗(yàn)證.
1) 保密性.本文協(xié)議中發(fā)送的消息都是通過(guò)Hash函數(shù)和異或運(yùn)算加密的,由于Hash函數(shù)的單向性,攻擊者很難獲得ID、RID等保密信息,所以本協(xié)議具有很好的保密性.
2) 重放攻擊.首先分析重放閱讀器請(qǐng)求.如果攻擊者在認(rèn)證過(guò)程中重放閱讀器請(qǐng)求,由于標(biāo)簽只在Tt=0的時(shí)候才會(huì)響應(yīng),而Tt在整個(gè)認(rèn)證過(guò)程中始終等于1,所以重放無(wú)效.如果攻擊者重放閱讀器的請(qǐng)求時(shí)標(biāo)簽沒(méi)有進(jìn)行其他的認(rèn)證,在標(biāo)簽響應(yīng)后攻擊者截獲響應(yīng)信息,并假裝已經(jīng)通過(guò)第3、第4步的認(rèn)證,然后向標(biāo)簽發(fā)送偽造的Hl(R⊕ID⊕Ttd), 由于在上一次的通信過(guò)程中標(biāo)簽的ID已經(jīng)更新,所以在最后標(biāo)簽驗(yàn)證時(shí)標(biāo)簽收到的信息與保存的信息不同,認(rèn)證失敗,重放攻擊無(wú)效.
重放標(biāo)簽響應(yīng)的分析.攻擊者如果在本次認(rèn)證過(guò)程中重放標(biāo)簽響應(yīng),由于閱讀器只在Tr=1時(shí)才會(huì)做出回應(yīng),而當(dāng)攻擊者重放標(biāo)簽響應(yīng)的時(shí)候,閱讀器的標(biāo)識(shí)Tr已經(jīng)變成了0,所以閱讀器不會(huì)響應(yīng),重放無(wú)效.如果攻擊者在認(rèn)證過(guò)程中重放上一次認(rèn)證過(guò)程中標(biāo)簽的響應(yīng)信息,由于隨機(jī)數(shù)R與標(biāo)簽ID不同,在后臺(tái)數(shù)據(jù)庫(kù)中認(rèn)證時(shí)會(huì)導(dǎo)致失敗,重放無(wú)效.如果閱讀器已經(jīng)結(jié)束本次認(rèn)證,并且在攻擊者重放標(biāo)簽響應(yīng)時(shí)閱讀器沒(méi)有進(jìn)行其他的認(rèn)證過(guò)程,則由于閱讀器中沒(méi)有存放隨機(jī)數(shù)R而不做出回應(yīng),重放無(wú)效.所以本協(xié)議具有抗重放攻擊的能力.
如果攻擊者截獲標(biāo)簽的響應(yīng)信息,然后假冒標(biāo)簽將截獲的信息發(fā)送給閱讀器,閱讀器按照正常步驟將信息發(fā)送給后臺(tái)數(shù)據(jù)庫(kù),通過(guò)認(rèn)證后,閱讀器發(fā)送信息給標(biāo)簽,攻擊者截獲此信息后假裝認(rèn)證通過(guò).認(rèn)證完成后,閱讀器和后臺(tái)數(shù)據(jù)庫(kù)進(jìn)行通信時(shí),閱讀器讀到的依然是正確標(biāo)簽的信息,所以此攻擊無(wú)效.
4) 前向不可追蹤性.理想情況下,攻擊者可以通過(guò)截獲狀態(tài)信息對(duì)標(biāo)簽進(jìn)行攻擊.由于本協(xié)議中的信息是通過(guò)Hash函數(shù)和異或運(yùn)算進(jìn)行加密后傳遞的,而且每次通信標(biāo)簽的ID都動(dòng)態(tài)更新,這樣,標(biāo)簽每次響應(yīng)的信息都不同,所以攻擊者很難將截獲的信息與某個(gè)特定標(biāo)簽聯(lián)系,無(wú)法跟蹤標(biāo)簽位置.
5) 系統(tǒng)內(nèi)部攻擊.系統(tǒng)內(nèi)部攻擊包括系統(tǒng)內(nèi)合法標(biāo)簽B假冒合法標(biāo)簽A和合法閱讀器B假冒合法閱讀器A.首先分析前者.標(biāo)簽A和B的標(biāo)識(shí)分別為IDa和IDb, A和B與后臺(tái)數(shù)據(jù)庫(kù)分別共享密鑰Ttda和Ttdb.認(rèn)證開(kāi)始后,閱讀器向標(biāo)簽發(fā)送請(qǐng)求和隨機(jī)數(shù)R, 標(biāo)簽B假冒A向閱讀器發(fā)送Hr(R⊕IDa⊕Ttdb), 后臺(tái)數(shù)據(jù)庫(kù)在驗(yàn)證標(biāo)簽的合法性時(shí)只能找到Hr(R⊕IDa⊕Ttda)和Hr(R⊕IDb⊕Ttdb), 這與收到的Hr(R⊕IDa⊕Ttdb)不相同,所以認(rèn)證失敗.失敗的主要原因是Ttda是標(biāo)簽A和后臺(tái)數(shù)據(jù)庫(kù)私有的,而標(biāo)簽B無(wú)法知道,因此標(biāo)簽B無(wú)法計(jì)算出正確的Hr(R⊕IDa⊕Ttda), 從而認(rèn)證失敗.若系統(tǒng)內(nèi)合法閱讀器B假冒合法閱讀器A, 由于RIDa只有閱讀器A與后臺(tái)數(shù)據(jù)庫(kù)知道,而閱讀器B不知道,因此閱讀器B無(wú)法計(jì)算出正確的Hr(R⊕IDa⊕Trda), 認(rèn)證失敗.可見(jiàn)本協(xié)議可以很好地防止系統(tǒng)內(nèi)部攻擊.
將新協(xié)議與文獻(xiàn)[3]、[6]和[7]中的協(xié)議做安全性方面的對(duì)比,結(jié)果如表3所示(×表示不具備此安全性能,○表示具備此安全性能).由表中各項(xiàng)可知新協(xié)議在保留文獻(xiàn)[7]輕量級(jí)加密結(jié)構(gòu)的同時(shí)能抵抗各種攻擊,具有最好的安全性.
表3 RFID認(rèn)證協(xié)議的安全性比較
將新協(xié)議與文獻(xiàn)[3]、[6]和[7]中的協(xié)議做計(jì)算量和存儲(chǔ)量方面的對(duì)比,結(jié)果如表4所示(Hash、Ran、Xor、Ser和Ek分別表示散列函數(shù)、隨機(jī)數(shù)產(chǎn)生、異或運(yùn)算、串聯(lián)運(yùn)算和對(duì)稱(chēng)加密運(yùn)算;N1和N2分別表示閱讀器和標(biāo)簽的數(shù)量,其中N2遠(yuǎn)遠(yuǎn)大于N1).由表4可知:新協(xié)議中標(biāo)簽和閱讀器的計(jì)算量大大減少,很好地滿(mǎn)足了低成本的要求;雖然后臺(tái)數(shù)據(jù)庫(kù)的計(jì)算量增加,但是增加的這部分計(jì)算量提高了協(xié)議的整體保密性和抗攻擊能力.新協(xié)議中標(biāo)簽的存儲(chǔ)量相對(duì)于文獻(xiàn)[3]和[7]雖沒(méi)有變化,但是比文獻(xiàn)[6]減少了很多,并且后臺(tái)數(shù)據(jù)庫(kù)的存儲(chǔ)量相對(duì)于其他協(xié)議也有所減少.可見(jiàn),新協(xié)議在計(jì)算量和存儲(chǔ)量上具有很高的優(yōu)越性.
表4 RFID認(rèn)證協(xié)議的效能比較
本文在文獻(xiàn)[7]的基礎(chǔ)上提出了一種改進(jìn)的RFID雙向認(rèn)證協(xié)議,為確保協(xié)議中閱讀器與標(biāo)簽、閱讀器與后臺(tái)數(shù)據(jù)庫(kù)之間通信的安全性,新協(xié)議采用了Hash函數(shù)、異或運(yùn)算、動(dòng)態(tài)更新標(biāo)簽ID的方法來(lái)防跟蹤、防竊聽(tīng)、防重放和假冒攻擊,而且通過(guò)在閱讀器和后臺(tái)數(shù)據(jù)庫(kù)、標(biāo)簽和后臺(tái)數(shù)據(jù)庫(kù)之間共享密鑰來(lái)防止系統(tǒng)內(nèi)部攻擊,同時(shí)通過(guò)在標(biāo)簽和閱讀器中設(shè)置狀態(tài)值Tt和Tr能夠更快捷有效地防重放攻擊.效能分析表明,本文協(xié)議成本低,而且能抵抗竊聽(tīng)攻擊、重放攻擊、假冒攻擊、系統(tǒng)內(nèi)部攻擊等,具有很好的安全性和實(shí)用性.
參考文獻(xiàn):
[1] 潘濤,左開(kāi)中,郭良敏,等.基于異或運(yùn)算的低成本RFID雙向認(rèn)證協(xié)議[J].計(jì)算機(jī)工程,2012,38(9):278-281.
[2] He Jialiang, Xu Zhiqiang. A mutual RFID security protocol for wireless reader[J]. International Journal of Security and Its Applications, 2013,7(5):43-52.
[3] Sandhya M, Rangaswamy T R. A Practical Approach for Enhancing Security in Mobile RFID Environment[C]//2011 International Conference on Future Information Technology ICFIT 2011. Singapore, 2011.
[4] 朱煒玲,喻建平.物聯(lián)網(wǎng)移動(dòng)RFID系統(tǒng)隱私保護(hù)方案[J].系統(tǒng)工程理論與實(shí)踐,2011,31(S2):119-123.
[5] 郭建慶.RFID系統(tǒng)的安全認(rèn)證協(xié)議的研究[D].南京郵電大學(xué),2012:19-40.
[6] 裴云.RFID安全認(rèn)證協(xié)議研究[D].華中科技大學(xué),2012:10-25.
[7] He Jialiang, Ouyang Dantong, Xu Youjun, et al. An efficient RFID authentication protocol supporting tag ownership transfer[J]. International Journal of Advancements in Computing Technology, 2012,4(4):244-253.