RFID(Radio Frequency Identif-ication)是一種利用射頻通信實(shí)現(xiàn)非接觸式自動識別的技術(shù),是物聯(lián)網(wǎng)的關(guān)鍵技術(shù)之一。RFID標(biāo)簽本身具有一定存儲和計算能力,采用無線射頻方式進(jìn)行通信,具有體積小、壽命長、可重復(fù)使用等特點(diǎn),從而被廣泛應(yīng)用于生產(chǎn)、物流、交通、運(yùn)輸、醫(yī)療、金融、防偽、跟蹤、設(shè)備和資產(chǎn)管理、校園一卡通等領(lǐng)域。但是隨著RFID應(yīng)用的推廣,其安全性也倍受關(guān)注。RFID的安全威脅主要來自標(biāo)簽和閱讀器內(nèi)部的安全威脅以及通信鏈路上的安全威脅[1]。
針對RFID系統(tǒng)通信鏈路上的安全問題,一些安全協(xié)議被提出,如Hash-Lock協(xié)議、隨機(jī)化Hash-Lock協(xié)議、分布式RFID詢問—應(yīng)答協(xié)議、基于樹型結(jié)構(gòu)的安全協(xié)議等[2,3]。本文在對現(xiàn)有安全協(xié)議分析的基礎(chǔ)上,對分組索引協(xié)議進(jìn)行了改進(jìn),提出了最優(yōu)分組索引的RFID安全協(xié)議,使標(biāo)簽的索引時間復(fù)雜度降低為。同時,通過采用隨機(jī)數(shù)、Hash函數(shù)、標(biāo)簽與后端數(shù)據(jù)庫共享密鑰機(jī)制等,使協(xié)議具有隱私保護(hù),防止跟蹤、欺騙攻擊和妥協(xié)攻擊的能力,可以保證RFID系統(tǒng)的前向安全性和后向安全性。
1.相關(guān)工作
1.1 RFID系統(tǒng)及其安全性分析
RFID系統(tǒng)一般由標(biāo)簽(Tag)、閱讀器(Reader)和后端數(shù)據(jù)庫3個基本部分構(gòu)成,如圖1所示。通常情況下,我們認(rèn)為在閱讀器與后端服務(wù)器之間的是安全信道,即不被攻擊者竊聽或篡改的;而在閱讀器與標(biāo)簽之間的數(shù)據(jù)傳輸是開放的無線通信鏈路,所以為不安全信道,即其間發(fā)送的數(shù)據(jù)易被攻擊者竊聽或篡改。閱讀器向標(biāo)簽發(fā)送信息的信道稱之為前向信道,標(biāo)簽向閱讀器發(fā)送信息的信道稱之為反向信道[2,3]。
從圖1所示的RFID系統(tǒng)模型可以看出,RFID安全威脅首先來自標(biāo)簽和閱讀器本身的安全缺陷。由于成本所限,標(biāo)簽本身很難具備能夠足以保證安全的能力。閱讀器往往只能提供用戶業(yè)務(wù)接口,而不能提供能夠讓用戶自行提升安全性能的接口。
其次,RFID的數(shù)據(jù)通信鏈路是開放的無線通信鏈路,攻擊者可以利用合法或非法的閱讀器,直接與標(biāo)簽進(jìn)行通信,監(jiān)聽標(biāo)簽和讀寫器間的數(shù)據(jù)交互,從而獲取標(biāo)簽數(shù)據(jù),通過其它技術(shù)手段和方法進(jìn)一步獲取合法用戶的隱私信息,對標(biāo)簽實(shí)施破解和復(fù)制、跟蹤、偽造、重傳、拒絕服務(wù)、欺騙等攻擊行為,威脅RFID系統(tǒng)的安全。
1.2 現(xiàn)有RFID安全協(xié)議分析
1.2.1 Hash-Lock協(xié)議
Hash-Lock協(xié)議是由Sarma等人提出的[4-6],后端數(shù)據(jù)庫分配一個隨機(jī)密鑰key給標(biāo)簽,標(biāo)簽進(jìn)行hash函數(shù)運(yùn)算,得到metaID=H(key),并將其存儲在標(biāo)簽中,然后鎖定標(biāo)簽。此時標(biāo)簽只對通過metaID認(rèn)證的閱讀器產(chǎn)生響應(yīng),從而增強(qiáng)了無線通信鏈路和物理接觸信道的安全性。
Hash-Lock協(xié)議流程如下:
(1)閱讀器向標(biāo)簽發(fā)送Query認(rèn)證請求;
(2)標(biāo)簽將metaID發(fā)送給標(biāo)簽閱讀器;
(3)閱讀器將metaID轉(zhuǎn)發(fā)給后端數(shù)據(jù)庫;
(4)后端數(shù)據(jù)庫通過查詢,如果找到與metaID相配的項,則將該項的(key,ID)發(fā)送給閱讀器,其中ID為待認(rèn)證標(biāo)簽的標(biāo)識,否則,認(rèn)證失敗;
(5)閱讀器將接收的后端數(shù)據(jù)庫信息key發(fā)送至標(biāo)簽;
(6)標(biāo)簽驗證metaID=H(key)是否成立,如果成立,則將其ID發(fā)送給閱讀器;
(7)閱讀器比較自標(biāo)簽接收到的ID是否與后端數(shù)據(jù)庫發(fā)送過來的ID一致,如果一致,則認(rèn)證通過;否則,認(rèn)證失敗。
從Hash-Lock協(xié)議的流程可以看出,由于后端數(shù)據(jù)庫與閱讀器之間為安全信道,攻擊者不可能同時獲得(key,ID)。如果攻擊者向標(biāo)簽發(fā)送Query認(rèn)證請求,可以竊取標(biāo)簽的metaID,進(jìn)一步冒充合法標(biāo)簽,只能通過后端數(shù)據(jù)庫獲得key,而不能獲得標(biāo)簽ID,所以不能通過標(biāo)簽認(rèn)證。這樣阻止了攻擊者冒充合法標(biāo)簽與閱讀器的通信,從而增強(qiáng)了無線通信鏈路和物理接觸信道的安全性。但是由于標(biāo)簽的metaID沒有使用動態(tài)更新機(jī)制,故容易被攻擊者通過截獲的metaID進(jìn)行跟蹤定位。同時在合法標(biāo)簽在認(rèn)證的過程中,key和ID是明文傳送的,攻擊者如果全程竊聽其認(rèn)證過程,則有可能同時獲得(key,ID),那么該協(xié)議的安全性將徹底瓦解。
1.2.2 隨機(jī)Hash-Lock協(xié)議
為了克服Hash-Lock協(xié)議容易被攻擊者跟蹤的不足,Weis等人提出了隨機(jī)Hash-Lock協(xié)議[6],每個標(biāo)簽不僅包含自身ID,還有一個隨機(jī)數(shù)產(chǎn)生器。標(biāo)簽將隨機(jī)數(shù)產(chǎn)生器產(chǎn)生的隨機(jī)數(shù)R和ID一起用Hash函數(shù)加密,加密后的值為C=H(ID||R)。標(biāo)簽將C、R一起發(fā)送給閱讀器,閱讀器將獲取的信息發(fā)給后端數(shù)據(jù)處理中心。后端數(shù)據(jù)庫通過查詢數(shù)據(jù)庫中所有ID,看其中有沒有一個IDk(1≤k≤n),使得H(ID||R)=C成立,如果有,則此認(rèn)證通過,并將IDk發(fā)送給標(biāo)簽;標(biāo)簽收到IDk后驗證與標(biāo)簽本身的ID是否相等,如果相等,則認(rèn)證通過。
該協(xié)議通過采用隨機(jī)數(shù),使得每次對閱讀器的應(yīng)答C=H(ID||R)都不相同,從而解決了標(biāo)簽被跟蹤的問題。但是在認(rèn)證過程中仍然以明碼的方式傳遞ID,若被攻擊者截獲,協(xié)議的安全性將不復(fù)存在。
1.2.3 分布式RFID詢問—應(yīng)答協(xié)議
Rhee等人提了一種適用于分布式數(shù)據(jù)庫環(huán)境的RFID認(rèn)證協(xié)議,它是典型的詢問-應(yīng)答型雙向認(rèn)證協(xié)議[7]。該協(xié)議的流程如下:
(1)閱讀器生成一隨機(jī)數(shù)RR,向標(biāo)簽發(fā)送Qu-ery認(rèn)證請求,并將RR發(fā)送給標(biāo)簽;
(2)標(biāo)簽生成一隨機(jī)數(shù)RT,計算H(ID||RR||RT),并將其和RT一起發(fā)送給閱讀器;
(3)閱讀器將(H(ID||RR||RT),RR,RT)發(fā)給后端數(shù)據(jù)庫;
(4)后端數(shù)據(jù)庫檢查是否有某個IDj(1≤j ≤n),使得(H(IDj||RR||RT)=(H(ID||RR||RT)成立,如果有,則認(rèn)證通過,并將H(IDj||RT)發(fā)送給閱讀器;
(5)標(biāo)簽驗證H(IDj||RT)和H(ID||RT)是否相同,如相同,則認(rèn)證通過。
該協(xié)議在雙向認(rèn)證過程中,除了閱讀器生成的隨機(jī)數(shù)RR為明文傳輸,其它均為密文傳輸,故其在安全方面沒有存在明顯的漏洞。但是執(zhí)行一次認(rèn)證過程,標(biāo)簽需要進(jìn)行兩次Hash運(yùn)算,標(biāo)簽電路中需要集成隨機(jī)數(shù)發(fā)生器和Hash函數(shù)模塊,因此不適合于低成本RFID系統(tǒng)。
1.2.4 基于樹型結(jié)構(gòu)的SPA安全協(xié)議
考察前面討論幾種協(xié)議的索引效率,后端數(shù)據(jù)庫為了完成對標(biāo)簽的一次認(rèn)證,最大的索引次數(shù)為n,即索引的時間復(fù)雜度均為O(n),這樣的索引效率在大規(guī)模RFID系統(tǒng)中是難以接受的。針對上述協(xié)議索引效率低下的問題,Molnar和Wagner最先提出了基于樹型結(jié)構(gòu)的RFID安全協(xié)議[8]。該協(xié)議的基本思想是構(gòu)造一顆樹型結(jié)構(gòu)的密碼組來提高其在大規(guī)模數(shù)據(jù)中的索引效率。在樹型結(jié)構(gòu)中,每個樹節(jié)點(diǎn)都有一個密碼值,所有的標(biāo)簽都在葉子節(jié)點(diǎn)上。針對樹上的任何一個節(jié)點(diǎn),從樹根到葉子節(jié)點(diǎn)都有唯一的路徑,且其密碼組就是這個路徑上各個葉子節(jié)點(diǎn)的密碼值組合。如圖2所示,標(biāo)簽T1的密碼組為(k0,k1,1,k2,1,k3,1),標(biāo)簽T2的密碼組為(k0,k1,2,k2,4,k3,8)。
此協(xié)議雖然大大的提高了其搜索效率,使其索引的時間復(fù)雜度降為O(log n),但是其中任意兩個標(biāo)簽至少共享了一個密碼值,因而存在明顯的漏洞。攻擊者只要截獲任意一個標(biāo)簽的密碼值,就可以知道其上層標(biāo)簽的密碼值和相鄰節(jié)點(diǎn)標(biāo)簽的共享密碼值,導(dǎo)致嚴(yán)重的安全問題。
1.2.5 基于分組索引的RFID安全協(xié)議
由于樹型結(jié)構(gòu)的RFID協(xié)議存在嚴(yán)重的安全性問題,而非樹型結(jié)構(gòu)的RFID安全協(xié)議又存在索引效率低下的問題,一些研發(fā)團(tuán)隊開始研究既能夠保證協(xié)議安全,又可以提高索引效率的安全協(xié)議。付小麗提出了分組索引的RFID安全協(xié)議[9],此協(xié)議在開始前要對RFID后端系統(tǒng)和標(biāo)簽進(jìn)行初始化。分組索引就是將后端數(shù)據(jù)庫中儲存的n個標(biāo)簽均分成m組,每個組有n/m個標(biāo)簽,其中同一個組的標(biāo)簽共享一個索引碼IID,而每個標(biāo)簽含有一個自己的安全密碼SID,并且每個SID是不相同的。協(xié)議的主要流程如下:
(1)閱讀器生成一隨機(jī)數(shù)RR,向標(biāo)簽發(fā)送詢問請求,并將RR發(fā)送給標(biāo)簽。
(2)標(biāo)簽接收到詢問請求后,生成一個隨機(jī)數(shù)RT,計算C=h(SID||RR||RT),并將信息C、IID、RT發(fā)送給閱讀器。
(3)閱讀器接收到信息C、IID、RT后,將其轉(zhuǎn)發(fā)送給后端數(shù)據(jù)庫。
(4)后端數(shù)據(jù)庫接收到信息后,查詢出所有索引為IID的標(biāo)簽,然后再在這些標(biāo)簽中搜索是否有一個標(biāo)簽的SIDj使得h(SIDj||RR||RT)=C成立,如果有,則通過認(rèn)證;否則,認(rèn)證失敗。若通過認(rèn)證,則將SIDj更新為h(SIDj),并將h(SIDj||RT)發(fā)送給標(biāo)簽。
(5)標(biāo)簽驗證h(SIDj||RT)=h(SID||RT)是否成立,如果成立,則認(rèn)證通過,且將SID更新為h(SID)。
在該協(xié)議中,所有傳送的信息除了IID外都進(jìn)行了加密處理,而IID不是哪個標(biāo)簽獨(dú)有的,攻擊者僅知道IID無法確定具體是哪個標(biāo)簽;同時,在認(rèn)證過程中所傳遞的密文C=h(SID||RR||RT)和h(SIDj)每次認(rèn)證都是不同的,并采用了SID更新機(jī)制,攻擊者根據(jù)當(dāng)前SIDt很難推導(dǎo)出前面的SIDt-1,所以可以保證其前向安全性。但攻擊者可根據(jù)當(dāng)前SIDt推導(dǎo)出以后的SIDt+1,所以不能保證其后向安全性。
2.最優(yōu)分組索引的RFID安全協(xié)議
在1.2.5描述中基于分組索引的RFID安全協(xié)議,將索引的時間復(fù)雜度減少為O(m+n/m),提高了索引效率。但是該協(xié)議并沒有提到具體如何分組,才能使時間復(fù)雜度降至最低,同時存在后向安全性問題。本文針對這些不足,提出了最優(yōu)分組索引的RFID安全協(xié)議,從而進(jìn)一步提高了索引效率,同時通過標(biāo)簽和后端數(shù)據(jù)庫共享密碼key解決了其后向安全問題。
2.1 最優(yōu)分組索引原理
分組索引的過程是在m個分組中先找到索引碼為IID的標(biāo)簽所在的組,然后在該組中n/m個標(biāo)簽中找到特定的標(biāo)簽SID,故整個過程中后端數(shù)據(jù)索引的次數(shù)為m+n/m,如果使之達(dá)到最小,則其時間復(fù)雜度最低,此時為最優(yōu)分組索引。
m為整數(shù),取整,所以,最優(yōu)分組索引的時間復(fù)雜度為。例如,后端數(shù)據(jù)庫中總共存有10000個標(biāo)簽,我們把這些標(biāo)簽均分成100個組,則每組有100個標(biāo)簽,同時,每組共享一個索引碼IID。在整個索引的過程中,前100次是找到索引碼為IID的那個組,后100次是在同一索引碼IID的標(biāo)簽中找到目標(biāo)標(biāo)簽,最多需要索引200次就可以尋找到目標(biāo)標(biāo)簽。
2.2 最優(yōu)分組索引的安全協(xié)議流程
最優(yōu)分組索引將后端數(shù)據(jù)庫中儲存的n個標(biāo)簽均分成組,每個組有int(n/m)個標(biāo)簽。其中每個組的標(biāo)簽共享一個索引碼IID,且包含一個自己的安全密碼SID和一個與后端數(shù)據(jù)庫的共享密碼key,并且每個SID和key是不相同的。協(xié)議流程如圖3所示。
協(xié)議執(zhí)行過程描述如下:
(1)閱讀器生成一隨機(jī)數(shù)RR,向標(biāo)簽發(fā)送詢問請求,并將RR發(fā)送給標(biāo)簽;
(2)標(biāo)簽接收到詢問請求后,生成一個隨機(jī)數(shù)RT,計算C=h(SID||RR||RT),并將信息C、IID、RT發(fā)送給閱讀器;
(3)閱讀器接收到信息C、IID、RT后,將其與RR轉(zhuǎn)發(fā)送給后端數(shù)據(jù)庫;
(4)后端數(shù)據(jù)庫接收到信息后,查詢出所有索引為IID的標(biāo)簽,然后再在這些標(biāo)簽中搜索是否有一個標(biāo)簽的SIDj使得h(SIDj||RR||RT)=C成立,如果有,則通過認(rèn)證;否則,認(rèn)證失敗。若通過認(rèn)證,則將SIDj更新為h(SIDj||key),并將h(SIDj||RT)發(fā)送給標(biāo)簽。
(5)標(biāo)簽驗證h(SIDj||RT)=h(SID||RT)是否成立,如果成立,則認(rèn)證通過,且將SID更新為h(SID||key)。
3.分析
3.1 安全分析
(1)隱私保護(hù):在本協(xié)議中,所有傳送的信息除了IID、隨機(jī)數(shù)RR和RT以外,都進(jìn)行了加密處理,而IID不是某一個標(biāo)簽獨(dú)有的,所以不會暴露用戶隱私。同時hash函數(shù)是單向的,因此攻擊者很難根據(jù)hash值得出標(biāo)簽的SID。
(2)跟蹤:產(chǎn)生被跟蹤的根本原因是標(biāo)簽發(fā)送給閱讀器的信息含有一些固定的信息,且這些信息對于標(biāo)簽是唯一的,從而使得攻擊者很容易根據(jù)標(biāo)簽發(fā)送的信息跟蹤標(biāo)簽。而在本協(xié)議中,由于RR和RT每次都不相同,故標(biāo)簽每次發(fā)送的加密信息C=h(SID||RR||RT)也是不一樣的,因此跟蹤信息C不可能。而發(fā)送的信息中,雖然IID是明文,但它不是某個標(biāo)簽獨(dú)有的,因此攻擊者根據(jù)IID無法確定某個具體的標(biāo)簽,進(jìn)而不能達(dá)到跟蹤的目的。
(3)欺騙攻擊:在復(fù)制或欺騙攻擊中,攻擊者會先向標(biāo)簽發(fā)送詢問信息并記錄標(biāo)簽返回的信息。然后攻擊者將標(biāo)簽返回的信息發(fā)送給閱讀器以達(dá)到冒充合法標(biāo)簽進(jìn)行欺騙的目的。在本協(xié)議的每次認(rèn)證過程中,標(biāo)簽和閱讀器都產(chǎn)生一個隨機(jī)數(shù),并通過hash函數(shù)形成密文C=h(SID||RR||RT)。攻擊者不可能事先知道當(dāng)前認(rèn)證過程中閱讀器生成的隨機(jī)數(shù)RR,而由他自己詢問標(biāo)簽所產(chǎn)生的C和RR在后端數(shù)據(jù)庫是不能通過認(rèn)證的,因此無法使用欺騙攻擊。
(4)前向安全:如果攻擊者在t時刻攻破了秘密信息C=h(SIDt||RR||RT),就可以獲得當(dāng)前時刻標(biāo)簽的SIDt。本協(xié)議在每次認(rèn)證成功后,都更新了SID,所以攻擊者根據(jù)當(dāng)前SIDt不能推導(dǎo)出前面的SIDt-1,從而保證了前向安全性。
(5)后向安全:如果攻擊者獲得當(dāng)前時刻標(biāo)簽的SIDt,但本協(xié)議在認(rèn)證的過程中,攻擊者無論從明文或者密文中都無法獲得標(biāo)簽與數(shù)據(jù)庫的共享密碼key,所以攻擊者根據(jù)當(dāng)前SIDt不能推導(dǎo)出下一次標(biāo)簽的SIDt+1=h(SIDt||key),從而保證了后向安全性。
(6)妥協(xié)攻擊:在本協(xié)議中,雖然多個標(biāo)簽共享一個IID,但是這個IID本身就是明文發(fā)送的,攻擊者并不能據(jù)此判定具體是哪個標(biāo)簽。同時,如果某個標(biāo)簽的SID泄漏后,攻擊者也不能據(jù)此得到其他標(biāo)簽的SID。因此,本協(xié)議不會發(fā)生妥協(xié)攻擊。
3.2 協(xié)議比較分析
本文安全協(xié)議與其它安全協(xié)議的性能比較見表1。從表1的比較中可以看出,本文協(xié)議除了索引效率僅次于基于樹型的SPA協(xié)議外,各項性能指標(biāo)均優(yōu)于其它安全協(xié)議。
4.結(jié)束語
本文討論了已有的幾種RFID協(xié)議,分析了這些協(xié)議中存在的安全缺陷和漏洞。針對基于分組索引的RFID安全協(xié)議所存在的問題,提出了最優(yōu)分組方案,將標(biāo)簽分成組,利用同組同索引碼的方法,將其時間復(fù)雜度降為,同時,采用隨機(jī)數(shù)、Hash函數(shù)、標(biāo)簽與后端數(shù)據(jù)庫共享密鑰機(jī)制等,解決了RFID中的隱私保護(hù)、跟蹤、欺騙攻擊、前向安全、后向安全、妥協(xié)攻擊等安全性問題。
本協(xié)議的不足之處在于,標(biāo)簽的SID更新必須和后臺數(shù)據(jù)庫同步,需要對數(shù)據(jù)一致性問題展開進(jìn)一步研究。
責(zé)任編輯:ct
評論
查看更多