付 俊 嚴新榮 付 強
(中船重工第七二二研究所 武漢 430205)
RFID(無線射頻識別)系統作為一種自動識別技術,能夠利用射頻信號,在開放的環境中對目標對象進行自動識別。由于RFID的電子標簽具有成本低、體積小等優點,目前RFID系統已經在現實中得到了廣泛的應用[1]。同時,RFID系統的電子標簽計算能力和存儲能力有限,因此在降低成本的同時將面臨更多的安全隱患。
為了保護RFID系統的信息安全,研究者們提出了多種RFID認證協議,希望能夠從標簽和閱讀器雙方身份的合法性以及通信數據安全性兩個方面來確保RFID系統的安全性。
目前的認證協議按照所用的密碼算法體制和運算復雜度基本可以分為四類[9]:1)全面認證協議,使用復雜的密碼算法,如對稱密碼算法、公鑰密碼算法[4];2)簡單認證協議,使用偽隨機數和單向哈希函數[11~13];3)輕量級認證協議,使用循環冗余編碼和偽隨機數;4)超輕量級協議,僅使用簡單的位運算。
對于超輕量級的協議,文獻[3]在UMAP[5~6]相互認證協議族的基礎上,提出了改進的UMA-RFID相互認證協議。而文獻[2]針對UMA-RFID協議的安全性漏洞進行了分析,并提出了相應的改進協議。然而,文獻[2]中改進協議也存在著明顯的安全性漏洞。本文針對于文獻[2]中提出的RFID超輕量級協議,提出了一種簡單有效的攻擊方案。并在該文獻的基礎上,提出了一種改進的超輕量級RFID雙向認證協議。本文提出的改進協議使用簡單的比特位運算,并且對于標簽端的存儲需求低,一定程度上能夠滿足各類標簽資源受限的場景需求。
對于超輕量級認證協議[7]而言,由于僅僅使用了簡單的位運算,如異或、與等,所以可以大大降低所需的存儲空間和計算需求。
為了簡化描述,我們對文獻[2]中所描述的一個RFID超輕量級協議中用到的相關符號和操作說明如下所示:
1)ID:標簽標識符;
2)Rot(x,y):x左循環移位,移動長度為y的漢明重量,可根據實際需要改變;
3)Reader:閱讀器;
4)Tag:標簽。
文獻[2]以UMA-RFID協議的安全漏洞為目標,進行調整后提出了一個改進的超輕量級RFID相互認證協議,如圖1所示。

圖1 文獻[2]中改進的超輕量級相互認證協議
該改進的超輕量級協議主要分為如下三個部分:
1)RFID讀寫器產生隨機數RR,然后與一個認證請求Query一起發送給標簽;
2)標簽生成一個隨機數RT,以此計算,然后將A、B一起發送給讀寫器;
3)后端數據庫通過讀寫器收到的A和B,根據存儲的每個ID去驗證,若能找到存在某個IDj使得A、B符合要求,則認為該標簽合法,并將發送給標簽;若不符合要求,則認為標簽非法,認證失敗;
原文中采用128bit的ID長度,根據原文所述,僅當雙方均知曉合法的ID時,雙方才能相互認證成功。原文認為該協議能有效的達到隱私保護,即即使攻擊者獲取消息A、B也無法得知標簽的唯一標識ID。然而,實際上我們能夠通過選擇隨機數RR,對標簽僅進行少量的非法認證請求,通過分析得到的相應的A和B,輕松地得到標簽的唯一標識ID。
原文中采用128bit的ID長度,雖然ID對于攻擊者是不可知的,但是攻擊者可以通過如下步驟分析得到ID:
1)分別發送兩次認證請求(Query,M)和(Que?ry,N);其中隨機選擇128bit長度的消息M,以及對應的N。其中N的最低位與M相反,其余位與M相同,故M和N漢明重量相差為1;

3)攻擊者根據步驟2)中收到的標簽回應對ID進行分析:

對于ID其余位的值,我們在生成隨機的M后,只需要將N的對應位置反,通過上述步驟也能分析出ID對應位的值。理論上分析,我們可以僅通過發送256條非法認證請求,通過分析標簽的回應消息即可成功分析得到標簽的ID值。
因此,我們可以認為文獻[2]中提出的改進的超輕量級認證協議式不安全。
針對文獻[2]中的超輕量級認證協議的安全漏洞,本文提出了相應的改進協議。一個完整的認證周期由四個階段構成,完整的協議認證周期具體步驟如圖2所示。

圖2 本文提出的改進的超輕量級認證協議
為了簡化描述,對接下來的改進協議中用到的相關符號和操作說明如下所示:
1)ID1:標簽的假名,在認證過程中可以顯式使用;
2)ID2:標簽的真實ID,在認證過程中不可顯式使用;
5)Rot(x,y):x左循環移動(y mod L)位,其中L為ID的長度,可根據實際需要改變;
6)+:mod2L加,其中L為ID的長度,可根據實際需要改變;
7)SUB(x,y):位替換,x所對應的y中為1的位取反;
9)Reader:閱讀器;
10)Tag:標簽。
需要特別注意的是Rot(x,y)的定義和文獻[2]中的左移定義有所不同,原文獻左移量為y的漢明重量。
3.2.1 初始化階段
由數據庫產生成對的ID1和ID2,并將其存入合法的閱讀器Reader和合法標簽Tag中。
3.2.2 標簽識別階段
1)Reader→Tag:閱讀器向標簽發送問詢消息Query,開啟一個新的認證周期;
2)Tag→Reader:標簽收到問詢消息,返回當前周期的ID1給閱讀器作為應答;
3)標簽識別:閱讀器收到標簽的應答消息后,通過后臺數據庫查詢,若有匹配的ID1則進入下一個階段,否則終止當前認證周期。
3.2.3 雙向認證階段
1)Reader→Tag:獲取合法的ID1后,閱讀器通過數據庫找到相對應的ID2,利用偽隨機數發生器產生偽隨機數n1和n2,長度均為L;由此產生A、B、C,將A||B||C發送給標簽用于驗證閱讀器的合法性,其中
2)閱讀器Reader認證:標簽接收到Reader發送來的A||B||C后,利用A和ID2提取出n1,利用B和ID1、ID2提取出n2,用上述的四個量來驗證C是否正確。若正確,則閱讀器Reader合法,繼續下一個階段;否則為不合法,終止當前認證周期。
3)Tag→Reader:當標簽驗證閱讀器 Reader為合法之后,生成D,并將D發送給閱讀器;其中
4)標簽Tag認證:閱讀器收到標簽發送來的D之后,根據ID1、ID2、n1、n2的值來驗證D是否正確。若正確,則標簽Tag合法,繼續下一個階段;否則為不合法,終止當前認證周期。
5)Reader→Tag:當標簽Tag被認證為合法之后,閱讀器產生偽隨機數n3,借此產生E,并將E||F發送給標簽以備更新階段使用,其中利用E||F,Tag可以再次認證Reader,防止偽裝攻擊。
3.2.4 更新階段
當閱讀器Reader和標簽Tag完成雙向認證階段后,將分別更新自身的ID1和ID2,其中閱讀器通過保存本輪認證周期中的來防止非同步攻擊。標簽用同樣的公式更新后,僅保存用為新一輪的ID1和ID2。
整個認證過程對于唯一的隱私消息ID2,均沒有進行顯式表示,即使攻擊者獲取每一輪的認證消息,也無法得知標簽的唯一隱私消息ID2。因此,該協議具有隱私保護的功能。
由于整個認證過程中使用了偽隨機數保證數據的新鮮性,因此即使認證過程中的數據被攻擊者收集,在新的認證過程中進行重放,由于隱私消息進過更新,因此重放過程無法完成正常的認證過程。因此,該協議具有抗重放攻擊的功能。
如果攻擊者試圖通過阻止最后一條消息,使得閱讀器和標簽更新不同步。在這種情況下,由于合法閱讀器在上一輪的認證過程中更新階段存儲了上一輪和當前的ID1和ID2,因此可以利用和來繼續執行協議完成認證過程。因此,該協議具有抗非同步攻擊的能力。
1)偽裝標簽Tag:由于偽裝的非法標簽并不具有ID2的信息,所以無法從A||B||C中提取出n1和n2,因此無法完成后續的認證過程。
2)偽裝閱讀器Reader:由于偽裝的非法閱讀器并不具有ID2的信息,所以無法完成第一步的認證過程。
綜上所述,該協議具有抗偽裝攻擊的功能。
由于RFID認證協議更需要的是降低標簽端的資源需求,因此我們將關注點放在標簽端的性能分析上。
首先,在整個認證過程中,標簽端使用的運算包含模加、左移、異或、位替換,均為低代價的比特位操作。因此,一定程度上是降低了標簽端的計算負擔。
其次,標簽端的存儲需求為2L,對于存儲資源的要求也能滿足需求。
本文針對文獻[2]中提出的超輕量級RFID雙向認證協議,提出了相應的攻擊方法。并且結合低代價RFID標簽資源受限的特點,提出相應的改進方案。新的協議通過使用簡單的比特位運算和較低的存儲需求,保證了消息的隱私性,并且具有抗重放攻擊、抗非同步攻擊、抗偽裝攻擊的能力,能夠滿足資源受限的超輕量級RFID認證系統。