付 俊 嚴(yán)新榮 付 強
(中船重工第七二二研究所 武漢 430205)
RFID(無線射頻識別)系統(tǒng)作為一種自動識別技術(shù),能夠利用射頻信號,在開放的環(huán)境中對目標(biāo)對象進行自動識別。由于RFID的電子標(biāo)簽具有成本低、體積小等優(yōu)點,目前RFID系統(tǒng)已經(jīng)在現(xiàn)實中得到了廣泛的應(yīng)用[1]。同時,RFID系統(tǒng)的電子標(biāo)簽計算能力和存儲能力有限,因此在降低成本的同時將面臨更多的安全隱患。
為了保護RFID系統(tǒng)的信息安全,研究者們提出了多種RFID認(rèn)證協(xié)議,希望能夠從標(biāo)簽和閱讀器雙方身份的合法性以及通信數(shù)據(jù)安全性兩個方面來確保RFID系統(tǒng)的安全性。
目前的認(rèn)證協(xié)議按照所用的密碼算法體制和運算復(fù)雜度基本可以分為四類[9]:1)全面認(rèn)證協(xié)議,使用復(fù)雜的密碼算法,如對稱密碼算法、公鑰密碼算法[4];2)簡單認(rèn)證協(xié)議,使用偽隨機數(shù)和單向哈希函數(shù)[11~13];3)輕量級認(rèn)證協(xié)議,使用循環(huán)冗余編碼和偽隨機數(shù);4)超輕量級協(xié)議,僅使用簡單的位運算。
對于超輕量級的協(xié)議,文獻[3]在UMAP[5~6]相互認(rèn)證協(xié)議族的基礎(chǔ)上,提出了改進的UMA-RFID相互認(rèn)證協(xié)議。而文獻[2]針對UMA-RFID協(xié)議的安全性漏洞進行了分析,并提出了相應(yīng)的改進協(xié)議。然而,文獻[2]中改進協(xié)議也存在著明顯的安全性漏洞。本文針對于文獻[2]中提出的RFID超輕量級協(xié)議,提出了一種簡單有效的攻擊方案。并在該文獻的基礎(chǔ)上,提出了一種改進的超輕量級RFID雙向認(rèn)證協(xié)議。本文提出的改進協(xié)議使用簡單的比特位運算,并且對于標(biāo)簽端的存儲需求低,一定程度上能夠滿足各類標(biāo)簽資源受限的場景需求。
對于超輕量級認(rèn)證協(xié)議[7]而言,由于僅僅使用了簡單的位運算,如異或、與等,所以可以大大降低所需的存儲空間和計算需求。
為了簡化描述,我們對文獻[2]中所描述的一個RFID超輕量級協(xié)議中用到的相關(guān)符號和操作說明如下所示:
1)ID:標(biāo)簽標(biāo)識符;
2)Rot(x,y):x左循環(huán)移位,移動長度為y的漢明重量,可根據(jù)實際需要改變;
3)Reader:閱讀器;
4)Tag:標(biāo)簽。
文獻[2]以UMA-RFID協(xié)議的安全漏洞為目標(biāo),進行調(diào)整后提出了一個改進的超輕量級RFID相互認(rèn)證協(xié)議,如圖1所示。
圖1 文獻[2]中改進的超輕量級相互認(rèn)證協(xié)議
該改進的超輕量級協(xié)議主要分為如下三個部分:
1)RFID讀寫器產(chǎn)生隨機數(shù)RR,然后與一個認(rèn)證請求Query一起發(fā)送給標(biāo)簽;
2)標(biāo)簽生成一個隨機數(shù)RT,以此計算,然后將A、B一起發(fā)送給讀寫器;
3)后端數(shù)據(jù)庫通過讀寫器收到的A和B,根據(jù)存儲的每個ID去驗證,若能找到存在某個IDj使得A、B符合要求,則認(rèn)為該標(biāo)簽合法,并將發(fā)送給標(biāo)簽;若不符合要求,則認(rèn)為標(biāo)簽非法,認(rèn)證失??;
原文中采用128bit的ID長度,根據(jù)原文所述,僅當(dāng)雙方均知曉合法的ID時,雙方才能相互認(rèn)證成功。原文認(rèn)為該協(xié)議能有效的達(dá)到隱私保護,即即使攻擊者獲取消息A、B也無法得知標(biāo)簽的唯一標(biāo)識ID。然而,實際上我們能夠通過選擇隨機數(shù)RR,對標(biāo)簽僅進行少量的非法認(rèn)證請求,通過分析得到的相應(yīng)的A和B,輕松地得到標(biāo)簽的唯一標(biāo)識ID。
原文中采用128bit的ID長度,雖然ID對于攻擊者是不可知的,但是攻擊者可以通過如下步驟分析得到ID:
1)分別發(fā)送兩次認(rèn)證請求(Query,M)和(Que?ry,N);其中隨機選擇128bit長度的消息M,以及對應(yīng)的N。其中N的最低位與M相反,其余位與M相同,故M和N漢明重量相差為1;
3)攻擊者根據(jù)步驟2)中收到的標(biāo)簽回應(yīng)對ID進行分析:
對于ID其余位的值,我們在生成隨機的M后,只需要將N的對應(yīng)位置反,通過上述步驟也能分析出ID對應(yīng)位的值。理論上分析,我們可以僅通過發(fā)送256條非法認(rèn)證請求,通過分析標(biāo)簽的回應(yīng)消息即可成功分析得到標(biāo)簽的ID值。
因此,我們可以認(rèn)為文獻[2]中提出的改進的超輕量級認(rèn)證協(xié)議式不安全。
針對文獻[2]中的超輕量級認(rèn)證協(xié)議的安全漏洞,本文提出了相應(yīng)的改進協(xié)議。一個完整的認(rèn)證周期由四個階段構(gòu)成,完整的協(xié)議認(rèn)證周期具體步驟如圖2所示。
圖2 本文提出的改進的超輕量級認(rèn)證協(xié)議
為了簡化描述,對接下來的改進協(xié)議中用到的相關(guān)符號和操作說明如下所示:
1)ID1:標(biāo)簽的假名,在認(rèn)證過程中可以顯式使用;
2)ID2:標(biāo)簽的真實ID,在認(rèn)證過程中不可顯式使用;
5)Rot(x,y):x左循環(huán)移動(y mod L)位,其中L為ID的長度,可根據(jù)實際需要改變;
6)+:mod2L加,其中L為ID的長度,可根據(jù)實際需要改變;
7)SUB(x,y):位替換,x所對應(yīng)的y中為1的位取反;
9)Reader:閱讀器;
10)Tag:標(biāo)簽。
需要特別注意的是Rot(x,y)的定義和文獻[2]中的左移定義有所不同,原文獻左移量為y的漢明重量。
3.2.1 初始化階段
由數(shù)據(jù)庫產(chǎn)生成對的ID1和ID2,并將其存入合法的閱讀器Reader和合法標(biāo)簽Tag中。
3.2.2 標(biāo)簽識別階段
1)Reader→Tag:閱讀器向標(biāo)簽發(fā)送問詢消息Query,開啟一個新的認(rèn)證周期;
2)Tag→Reader:標(biāo)簽收到問詢消息,返回當(dāng)前周期的ID1給閱讀器作為應(yīng)答;
3)標(biāo)簽識別:閱讀器收到標(biāo)簽的應(yīng)答消息后,通過后臺數(shù)據(jù)庫查詢,若有匹配的ID1則進入下一個階段,否則終止當(dāng)前認(rèn)證周期。
3.2.3 雙向認(rèn)證階段
1)Reader→Tag:獲取合法的ID1后,閱讀器通過數(shù)據(jù)庫找到相對應(yīng)的ID2,利用偽隨機數(shù)發(fā)生器產(chǎn)生偽隨機數(shù)n1和n2,長度均為L;由此產(chǎn)生A、B、C,將A||B||C發(fā)送給標(biāo)簽用于驗證閱讀器的合法性,其中
2)閱讀器Reader認(rèn)證:標(biāo)簽接收到Reader發(fā)送來的A||B||C后,利用A和ID2提取出n1,利用B和ID1、ID2提取出n2,用上述的四個量來驗證C是否正確。若正確,則閱讀器Reader合法,繼續(xù)下一個階段;否則為不合法,終止當(dāng)前認(rèn)證周期。
3)Tag→Reader:當(dāng)標(biāo)簽驗證閱讀器 Reader為合法之后,生成D,并將D發(fā)送給閱讀器;其中
4)標(biāo)簽Tag認(rèn)證:閱讀器收到標(biāo)簽發(fā)送來的D之后,根據(jù)ID1、ID2、n1、n2的值來驗證D是否正確。若正確,則標(biāo)簽Tag合法,繼續(xù)下一個階段;否則為不合法,終止當(dāng)前認(rèn)證周期。
5)Reader→Tag:當(dāng)標(biāo)簽Tag被認(rèn)證為合法之后,閱讀器產(chǎn)生偽隨機數(shù)n3,借此產(chǎn)生E,并將E||F發(fā)送給標(biāo)簽以備更新階段使用,其中利用E||F,Tag可以再次認(rèn)證Reader,防止偽裝攻擊。
3.2.4 更新階段
當(dāng)閱讀器Reader和標(biāo)簽Tag完成雙向認(rèn)證階段后,將分別更新自身的ID1和ID2,其中閱讀器通過保存本輪認(rèn)證周期中的來防止非同步攻擊。標(biāo)簽用同樣的公式更新后,僅保存用為新一輪的ID1和ID2。
整個認(rèn)證過程對于唯一的隱私消息ID2,均沒有進行顯式表示,即使攻擊者獲取每一輪的認(rèn)證消息,也無法得知標(biāo)簽的唯一隱私消息ID2。因此,該協(xié)議具有隱私保護的功能。
由于整個認(rèn)證過程中使用了偽隨機數(shù)保證數(shù)據(jù)的新鮮性,因此即使認(rèn)證過程中的數(shù)據(jù)被攻擊者收集,在新的認(rèn)證過程中進行重放,由于隱私消息進過更新,因此重放過程無法完成正常的認(rèn)證過程。因此,該協(xié)議具有抗重放攻擊的功能。
如果攻擊者試圖通過阻止最后一條消息,使得閱讀器和標(biāo)簽更新不同步。在這種情況下,由于合法閱讀器在上一輪的認(rèn)證過程中更新階段存儲了上一輪和當(dāng)前的ID1和ID2,因此可以利用和來繼續(xù)執(zhí)行協(xié)議完成認(rèn)證過程。因此,該協(xié)議具有抗非同步攻擊的能力。
1)偽裝標(biāo)簽Tag:由于偽裝的非法標(biāo)簽并不具有ID2的信息,所以無法從A||B||C中提取出n1和n2,因此無法完成后續(xù)的認(rèn)證過程。
2)偽裝閱讀器Reader:由于偽裝的非法閱讀器并不具有ID2的信息,所以無法完成第一步的認(rèn)證過程。
綜上所述,該協(xié)議具有抗偽裝攻擊的功能。
由于RFID認(rèn)證協(xié)議更需要的是降低標(biāo)簽端的資源需求,因此我們將關(guān)注點放在標(biāo)簽端的性能分析上。
首先,在整個認(rèn)證過程中,標(biāo)簽端使用的運算包含模加、左移、異或、位替換,均為低代價的比特位操作。因此,一定程度上是降低了標(biāo)簽端的計算負(fù)擔(dān)。
其次,標(biāo)簽端的存儲需求為2L,對于存儲資源的要求也能滿足需求。
本文針對文獻[2]中提出的超輕量級RFID雙向認(rèn)證協(xié)議,提出了相應(yīng)的攻擊方法。并且結(jié)合低代價RFID標(biāo)簽資源受限的特點,提出相應(yīng)的改進方案。新的協(xié)議通過使用簡單的比特位運算和較低的存儲需求,保證了消息的隱私性,并且具有抗重放攻擊、抗非同步攻擊、抗偽裝攻擊的能力,能夠滿足資源受限的超輕量級RFID認(rèn)證系統(tǒng)。