陳紅琳
摘要:伴隨物聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,其在眾多領(lǐng)域得到了廣泛的應(yīng)用,并推動(dòng)了社會(huì)技術(shù)進(jìn)步,然而物聯(lián)網(wǎng)技術(shù)也帶來(lái)一系列較為突出的安全問(wèn)題。本文選擇當(dāng)前物聯(lián)網(wǎng)RFID技術(shù)中的安全問(wèn)題為研究重點(diǎn),通過(guò)研究RFID技術(shù)中的安全認(rèn)證協(xié)議,設(shè)計(jì)了一種基于Hash的Reader與Tag之間的優(yōu)化認(rèn)證協(xié)議,核心重點(diǎn)在于確保Tag的不可跟蹤性。通過(guò)對(duì)認(rèn)證協(xié)議的優(yōu)化實(shí)現(xiàn)了對(duì)跟蹤性的保護(hù),提升了協(xié)議防范主動(dòng)攻擊的能力。
關(guān)鍵詞:物聯(lián)網(wǎng);RFID;優(yōu)化認(rèn)證協(xié)議;隱私保護(hù)
中圖分類(lèi)號(hào):TP311? ? ? ?文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)27-0019-03
為了保障物聯(lián)網(wǎng)技術(shù)的穩(wěn)定健康發(fā)展,必須高度重視物聯(lián)網(wǎng)的安全問(wèn)題,特別是在RFID系統(tǒng)中,在閱讀器(Reader)與標(biāo)簽(Tag)之間存在著較為顯著的隱私數(shù)據(jù)安全問(wèn)題與雙向認(rèn)證問(wèn)題,尤其是用戶(hù)隱私信息的可跟蹤性一直是備受重視的一個(gè)研究領(lǐng)域,要想較好地解決這一問(wèn)題,必須在Reader與Tag之間構(gòu)建一種雙方向認(rèn)證機(jī)制??紤]到傳統(tǒng)RFID Tag通常會(huì)被資源予以限制,本文提出一種優(yōu)化的認(rèn)證協(xié)議方案,即確保Tag的不可追蹤性,旨在提供更加良好的可跟蹤性安全保護(hù),同時(shí)提升系統(tǒng)的通信效率。該優(yōu)化協(xié)議方案屬于一種輕量級(jí)的認(rèn)證協(xié)議,其雙向認(rèn)證的方式主要是通過(guò)“Challenge/Response”(挑戰(zhàn)/應(yīng)答)的方式予以實(shí)現(xiàn)。
為了解決可跟蹤性這一問(wèn)題,則是確保詢(xún)問(wèn)器在各個(gè)詢(xún)問(wèn)過(guò)程中對(duì)同一Tag查詢(xún)避免采用一致的Challenge。Challenge/Response方案的核心內(nèi)容在于:每一次對(duì)身份進(jìn)行認(rèn)證時(shí),認(rèn)證Server端均會(huì)發(fā)送不同的Challenge字符串給Client端,Client端在獲取Challenge后,將進(jìn)行對(duì)應(yīng)的Response,具體路程如下:User向認(rèn)證Server端請(qǐng)求進(jìn)行身份認(rèn)證;在User Database中認(rèn)證Server進(jìn)行用戶(hù)的身份查詢(xún),若查詢(xún)顯示該用戶(hù)身份不合法,則不予以處理,反之則進(jìn)入下一步流程;認(rèn)證Server端產(chǎn)生一個(gè)Random Number,將其傳輸給User;User將User Name與Random Number相互連接,借助單方向Hash Function生成Response字符串;認(rèn)證Server端將該Response字符串與自身的計(jì)算結(jié)果相互對(duì)比,若結(jié)果一致,則完成本次認(rèn)證,反之則不予以認(rèn)證;認(rèn)證Server端發(fā)送信息告知User本次認(rèn)證是否通過(guò),后續(xù)User再次發(fā)起認(rèn)證,在該過(guò)程中就缺少了請(qǐng)求認(rèn)證的操作步驟。由此在兩次認(rèn)證之間的時(shí)間間隔不能設(shè)置過(guò)短,否則將會(huì)給Client端、認(rèn)證Server端與網(wǎng)絡(luò)造成過(guò)大的負(fù)擔(dān)。除此以外時(shí)間間隔也不能過(guò)長(zhǎng),否則存在User的IP Address被盜用的風(fēng)險(xiǎn),最終將兩次認(rèn)證之間的時(shí)間間隔設(shè)置為1-2分鐘較為合適。
1 系統(tǒng)模型
本研究中RFID系統(tǒng)由Reader、Tag以及后端Server共同組成,此處的Tag均采用無(wú)源Tag,由于各個(gè)Tag內(nèi)可以容納的資源大小有限制,僅包含數(shù)百Bit非易失性?xún)?nèi)存與Hash函數(shù)功能。各個(gè)Tag(Ti)中均預(yù)先內(nèi)置有密鑰ki(長(zhǎng)度為l比特),未對(duì)此前使用過(guò)的Random Number予以記錄,該優(yōu)化方案中對(duì)各個(gè)tag留取m比特的內(nèi)存將上述記錄予以存儲(chǔ)。Reader向Tag查詢(xún)獲取其有關(guān)身份數(shù)據(jù)。后端Server則對(duì)Tag的全部必要數(shù)據(jù)信息(如Hash Function、Random Number Generator)予以存儲(chǔ)。
2 攻擊模型
本優(yōu)化協(xié)議方案中,假定后端Server為可信實(shí)體,同時(shí)具有良好的安全性,在Reader與后端Server之間的通信信道不存在安全隱患,則惡意Reader無(wú)法借助Server獲取相應(yīng)的認(rèn)證。若攻擊者可以對(duì)Reader與Tag之間的通信信道予以監(jiān)聽(tīng),并可向通信信道注入任意類(lèi)型的數(shù)據(jù)信息,由此攻擊類(lèi)型既可以是被動(dòng)型,也可以是主動(dòng)型。本文所假設(shè)的攻擊模型可以是一個(gè)惡意Reader、惡意Tag或者監(jiān)聽(tīng)器,同時(shí)在攻擊模型對(duì)攻擊者掃描Tag或欺騙Reader的次數(shù)設(shè)置有一定上限數(shù)量。
3 安全需求
分析RFID系統(tǒng)的安全需求主要包括保密性、不可跟蹤性、歷史安全性和可用性。
4 協(xié)議描述
本文所提出的優(yōu)化協(xié)議是在基于Hash的協(xié)議的基礎(chǔ)上予以?xún)?yōu)化的。后端Server產(chǎn)生Random Number(Nr),各個(gè)Tag均有對(duì)應(yīng)的密鑰ki(長(zhǎng)度為l比特)與長(zhǎng)度為m比特的映射。后端Server負(fù)責(zé)對(duì)Database的維護(hù)管理,該Database為全部密鑰負(fù)責(zé)存儲(chǔ)Random Number(Nr)與Hash值h(ki,N)。
本文研究的優(yōu)化協(xié)議具體流程如下:閱讀器Reader將Random Number(Nr)傳輸給標(biāo)簽Ti;標(biāo)簽Ti在收到Random Number(Nr)后,首先計(jì)算標(biāo)簽在映射中的具體位置j=h(ki,Nr)mod m,接著檢驗(yàn)映射中的比特j(map[j])是否完成設(shè)置。若未對(duì)map[j]完成設(shè)置,則代表Random Number(Nr)此前未被使用,然后標(biāo)簽將h(ki,Nr)作為Response,同時(shí)設(shè)置map[j]=1。相反,則代表Random Number(Nr)存在被使用的可能性,并由標(biāo)簽分配一個(gè)Random Number作為Response;標(biāo)簽發(fā)送Response給Reader;閱讀器Reader得到標(biāo)簽的Response后,借助(Response,Nr)對(duì)后端Server查找,若是后端Server可以在Database中查詢(xún)到一致結(jié)果,那么將計(jì)算h(ki+1,Nr),同時(shí)將相應(yīng)的ki替換為h(ki),將各個(gè)Random Number(Nj)的Hash值替換為Hash(ki,Nj)。若后端Server無(wú)法在Database中查詢(xún)到一致結(jié)果,那么后端Server將會(huì)確認(rèn)Value為Deny,最終后端Server將會(huì)對(duì)Reader返回確認(rèn);Reader最終將確認(rèn)信息發(fā)送給Tag,Tag也會(huì)自檢校驗(yàn),若確認(rèn)值為Deny,則Reader會(huì)向Tag查詢(xún)新的Random Number;Tag會(huì)將h(ki+1,Nr)與確認(rèn)對(duì)比,若二者一致,則Tag將會(huì)更新自身的密鑰為h(ki),同時(shí)將映射對(duì)應(yīng)的所有比特重置為零。
本研究提出的基于Hash的閱讀器與標(biāo)簽之間的優(yōu)化認(rèn)證協(xié)議如下列圖1所示:
m比特映射主要的用途是存儲(chǔ)使用過(guò)的Random Number數(shù)據(jù)信息,同時(shí)可以避免連續(xù)成功查詢(xún)時(shí)間間隔區(qū)間的跟蹤攻擊。從長(zhǎng)期而言,Tag是無(wú)法跟蹤的,攻擊者即使在某一時(shí)間點(diǎn)對(duì)(Nr,Response)予以記錄,在Tag完成若干次成功查詢(xún)后,也無(wú)法將同一Tag的Response與上述記錄予以關(guān)聯(lián),這是由于密鑰Ki在每次查詢(xún)成功后均會(huì)進(jìn)行替換。但是因?yàn)槊荑€在兩次成功的詢(xún)問(wèn)時(shí)間間隔區(qū)間內(nèi)是保持不變的,由此Tag是可跟蹤的。為解決這一難題,本文中的優(yōu)化協(xié)議采用m比特映射對(duì)Random Number予以記錄。這樣可以避免惡意Reader采用相同的Random Number持續(xù)訪問(wèn)同一個(gè)Tag。若在一定的時(shí)間段內(nèi)避免惡意Reader采用同一Random Number,這樣就可以解決此類(lèi)跟蹤型的攻擊。
后端Server生成Random Number(Nr),單一Random Number可以完成對(duì)一組Tag的查詢(xún),這是因?yàn)槠浍@取了全部Tag的密鑰,后端Server可為各個(gè)Tag事先完成h(ki,Nr)的運(yùn)算,同時(shí)將其存儲(chǔ)在Database中。后端Server在每次查詢(xún)完成后,依靠搜索器Database對(duì)Tag發(fā)出的Response予以校驗(yàn)。若采用Hash算法,則搜索的復(fù)雜度為O(1)。由此,即使Tag的數(shù)量過(guò)多,后端Server進(jìn)行計(jì)算時(shí)也不會(huì)占用過(guò)多的資源。
一般而言,系統(tǒng)的效率與安全性是相互矛盾的,需要找到一個(gè)適當(dāng)?shù)木恻c(diǎn)。借助同一個(gè)Random Number可以完成對(duì)多個(gè)Tag的查詢(xún),由此攻擊者可供給獲取上述Random Number,然后借助這個(gè)random number進(jìn)行對(duì)合法Tag的查詢(xún),同時(shí)將獲取的response存儲(chǔ)在一個(gè)偽造的Tag中。當(dāng)進(jìn)行詢(xún)問(wèn)時(shí),偽造Tag可通過(guò)此前獲取的Response假冒原有合法的Tag,這是一種克隆的攻擊方式,本文所設(shè)計(jì)的優(yōu)化協(xié)議,借助限制批處理方式,可以增加此類(lèi)攻擊的難度或避免此類(lèi)攻擊。
若攻擊者未對(duì)Tag進(jìn)行非法查詢(xún),這種狀況下Reader在第一次查詢(xún)時(shí)就可以成功獲取Tag相關(guān)信息;若攻擊者已對(duì)上述Tag進(jìn)行非法查詢(xún),則比特映射的值會(huì)被設(shè)定。由此,本研究中,對(duì)Reader從Tag獲取一個(gè)有效Response之前,需對(duì)多次詢(xún)問(wèn)的情況予以分析說(shuō)明,以確保Reader對(duì)合法Tag完成詢(xún)問(wèn)后,后端Server應(yīng)當(dāng)為Reader發(fā)送多個(gè)Random Number。在設(shè)計(jì)的優(yōu)化協(xié)議中,進(jìn)行系統(tǒng)部署時(shí),后端Server將生成一組Random Number。對(duì)每一個(gè)Random Number與相應(yīng)的Tag,Server端均預(yù)先對(duì)Hash Value予以運(yùn)算,并將運(yùn)算的結(jié)果h(ki,Nr)存儲(chǔ)在Server端。若Reader想要對(duì)一組Tag進(jìn)行查詢(xún),則Reader需要向Server端提供相應(yīng)的Random Number。在完成詢(xún)問(wèn)后,后端Server應(yīng)當(dāng)對(duì)密鑰ki予以更新,同時(shí)對(duì)Random Number(Nr)的Hash值h(ki,Nr)予以更新。除此以外,在Tag被后端Server驗(yàn)證后,Random Number也被更新,這樣可以提升其安全性。
5 協(xié)議參數(shù)與安全強(qiáng)度
因?yàn)閮?nèi)存本身的限制,Tag無(wú)法將Random Number予以存儲(chǔ),在本文設(shè)計(jì)的優(yōu)化協(xié)議中,Tag采用l比特對(duì)Random Number在映射中相應(yīng)的位置予以標(biāo)注,并用以記錄Random Number。要計(jì)算上述位置,必須要先對(duì)h(ki,Nr)mod m予以計(jì)算。對(duì)新生成的各個(gè)Random Number,其在映射內(nèi)的位置是按照0 ~(m-1)的概率均勻分布的,由此若是映射中的若干比特被設(shè)置,將會(huì)產(chǎn)生碰撞。假設(shè)存在n比特完成設(shè)置,則對(duì)于下個(gè)Random Number而言,其碰撞概率為:
Reader如果想從Tag獲取有效的Response,平均嘗試次數(shù)達(dá)到m/n次,假設(shè)n=m,則碰撞概率達(dá)到100%。要確保合法Reader能夠查詢(xún)到Tag,Tag需對(duì)映射內(nèi)的全部或一部分比特位予以清除。攻擊者可以通過(guò)該此前的Random Number實(shí)現(xiàn)對(duì)Tag的跟蹤。由此,攻擊者可借助對(duì)映射內(nèi)所有比特位的設(shè)置,實(shí)現(xiàn)對(duì)Tag的跟蹤,在此基礎(chǔ)上借助原有的Random Number完成對(duì)Tag的詢(xún)問(wèn)。但是攻擊者若想完成對(duì)全部比特位的設(shè)置,其嘗試次數(shù)會(huì)受到碰撞影響,從而達(dá)到一個(gè)非常大的次數(shù),通過(guò)相應(yīng)的概率計(jì)算,可以得出如下計(jì)算式:
一般單一Tag的內(nèi)存大小有數(shù)百比特,通過(guò)上述公式計(jì)算可知攻擊者的嘗試次數(shù)將會(huì)達(dá)到數(shù)千次。若Tag按照某一速度或足夠慢的速度返回Response,攻擊者將會(huì)需要耗費(fèi)數(shù)個(gè)小時(shí)才能完成對(duì)Tag的跟蹤。若是按照該種攻擊方式,對(duì)那些較低成本的RFID而言,攻擊者需要耗費(fèi)較多的時(shí)間成本,從而導(dǎo)致缺少足夠的利益驅(qū)動(dòng)進(jìn)行此類(lèi)攻擊。由此,按照本章節(jié)提出的優(yōu)化協(xié)議實(shí)現(xiàn)了此類(lèi)跟蹤攻擊的保護(hù)。
通過(guò)碰撞的方式,造成攻擊者在進(jìn)行Tag跟蹤時(shí)需要花費(fèi)更久的時(shí)間,但是這樣也會(huì)對(duì)合法Reader詢(xún)問(wèn)Tag造成影響。然而合法Reader所需嘗試的次數(shù)相對(duì)較少,若RFID系統(tǒng)未曾遭受過(guò)主動(dòng)攻擊,這種情況下合法Reader僅需一次嘗試,即可以從Tag獲取有效的Response。考慮極端情況下,即使映射內(nèi)有m-1比特位被攻擊者予以設(shè)置,合法Reader只需嘗試m次就可以獲取有效的Response,相對(duì)攻擊者而言,在數(shù)量上仍然具備絕對(duì)的優(yōu)勢(shì)。除此以外,對(duì)于攻擊者而言,要想主動(dòng)完成對(duì)m-1個(gè)比特位的設(shè)置實(shí)際上是非常艱難的,這是因?yàn)楦鱾€(gè)Random Number在映射中的具體位置實(shí)際上是無(wú)法預(yù)測(cè)的。在一般情況下,若攻擊者完成設(shè)置的比特位數(shù)符合0~(m-1)的均勻分部,攻擊者的嘗試平均次數(shù)如下所示:
相比較而言,從下列圖3中可以看出惡意攻擊者的嘗試次數(shù)遠(yuǎn)遠(yuǎn)超過(guò)合法Reader的嘗試次數(shù),隨著m的比特位數(shù)增加這種差距愈來(lái)愈大。
本文設(shè)計(jì)的優(yōu)化協(xié)議中,Server端將生成t個(gè)random number,若選取適當(dāng)?shù)膖值,使其略微超過(guò)m值,那么Reader在大多數(shù)情形下均可以從Tag處獲取有效的Response,后端Server在每次重新嘗試時(shí)僅僅需要對(duì)執(zhí)行Database予以查詢(xún)搜索,復(fù)雜度為O(l)。
在現(xiàn)有協(xié)議研究的基礎(chǔ)上,針對(duì)抵御主動(dòng)攻擊優(yōu)化分析如下:讀寫(xiě)器和標(biāo)簽分別存儲(chǔ)各自的身份信息、密鑰及與其他參與方共享的秘密。令m為一組標(biāo)簽的總數(shù),n為預(yù)先授權(quán)給讀寫(xiě)器的可執(zhí)行協(xié)議的總輪數(shù)。驗(yàn)證者為讀寫(xiě)器預(yù)計(jì)算執(zhí)行n輪協(xié)議所需的信息,見(jiàn)圖4所示。令[runv]和[runt]表示當(dāng)前正在執(zhí)行的協(xié)議的輪數(shù),即如果當(dāng)前正在執(zhí)行的是第i輪協(xié)議,那么此時(shí)[runv]和[runt]的值是i。為此,我們?cè)谙聢D5中“Generate future timestamp TS”操作后,增加操作“[runv←i]”。同時(shí),讀寫(xiě)器在每輪協(xié)議的預(yù)計(jì)算信息中也需要存儲(chǔ)[runv]值,標(biāo)簽組的每個(gè)標(biāo)簽中存儲(chǔ)[runv]值,且[runv],且[runv]和[runt]的初始值均為1。
上述初始化操作完成后,每個(gè)標(biāo)簽中存儲(chǔ)[{Gid,TGs,Tidj,Tsj,runtj,VTsj,VT'Sj}(1≤j≤m)],其中初始時(shí)[runtj=1] 且[VTsj=VT'Sj] 。此外,標(biāo)簽中還存儲(chǔ)被授權(quán)可訪問(wèn)該標(biāo)簽的每個(gè)Reader的信息[{Rid,RTSj,R-1rj}] 。Reader存儲(chǔ)[{Rid,RVs}] ,并存儲(chǔ)n輪協(xié)議的預(yù)計(jì)算信息,每輪協(xié)議的預(yù)計(jì)算信息為[{runv,Gid,TSri,TSvi,V1i(1..m),V2,μi(1..m),RTSi(1..m),RTnSi(1..m)}(1≤i≤n)]。驗(yàn)證者存儲(chǔ)上述身份信息及預(yù)計(jì)算的n輪協(xié)議執(zhí)行所需的信息。
上述協(xié)議不僅具備Tag/Reader匿名性、Tag/Reader位置隱私、前向安全性、抗重放攻擊等安全屬性。此外,該協(xié)議還可以抵抗異步攻擊和主動(dòng)攻擊。
新協(xié)議中,即使敵手中斷了讀寫(xiě)器與標(biāo)簽之問(wèn)傳送的某些消息,標(biāo)簽和驗(yàn)證者共享的秘密[VTs] 仍可保持同步。在某輪協(xié)議執(zhí)行過(guò)程中,當(dāng)Tag j發(fā)送[Mj,βj,Yj,Rcj] 給Reader后,敵手可能截獲該信息,同時(shí)分別將[Mj] 和[βj] 替換為[M''j] 和[β''j] ,其中[M''j=Mj⊕r,β''j=βj⊕r] (r為敵手選取的隨機(jī)數(shù))。然而,當(dāng)接收信息[M''j,β''j,Yj,Rcj] 后,Reader驗(yàn)證等式[Rid=Rcj⊕PRNG(PRNG(M''j)⊕PRNG(β''j)⊕Yj⊕RTs⊕Rrj)] 時(shí),無(wú)論使用[RTsj] 還是[RTnSj] ,該驗(yàn)證都將會(huì)失敗且協(xié)議終止。因此,協(xié)議經(jīng)過(guò)進(jìn)一步優(yōu)化可以抵抗主動(dòng)攻擊。
本文中設(shè)計(jì)了一種基于Hash的Reader與Tag之間的優(yōu)化認(rèn)證協(xié)議,核心重點(diǎn)在于確保Tag的不可跟蹤性。同時(shí)針對(duì)協(xié)議進(jìn)行了進(jìn)一步的優(yōu)化,提升了協(xié)議防范主動(dòng)攻擊的能力。因受到本人能力有限,本研究仍然存在若干地方需要進(jìn)一步完善和深入研究:如本文設(shè)計(jì)的Reader與Tag間的認(rèn)證協(xié)議,在避免跟蹤攻擊方面有著較為顯著的功效,然而在安全性上的設(shè)計(jì)仍然需要進(jìn)一步深入研究與完善。
參考文獻(xiàn):
[1] 劉道微,凌捷,楊昕.一種改進(jìn)的滿足后向隱私的RFID認(rèn)證協(xié)議[J].計(jì)算機(jī)科學(xué),2016,43(8):128-130.
[2] 趙太飛,鄒波,尹航.基于Hash鏈的RFID認(rèn)證協(xié)議[J].微型機(jī)與應(yīng)用,2016,35(19):60-63.
[3] 位書(shū)敏,張永華,商玉芳.輕量級(jí)移動(dòng)RFID認(rèn)證協(xié)議研究設(shè)計(jì)[J].計(jì)算機(jī)與現(xiàn)代化,2016(11):74-78.
【通聯(lián)編輯:唐一東】