崔紅達,徐 森,楊 碩
(沈陽化工大學 計算機科學與技術學院,遼寧 沈陽 110020)
RFID系統因成本低廉,能夠適應多變復雜的外界環境,且占用空間小等多方面優點,目前被廣泛應用于物聯網的大環境之中。從居民二代身份證到物流倉庫中的產品追蹤定位,再到生產線上的流水管理等,RFID系統都發揮著不可或缺的作用。
在傳統的RFID系統中,讀寫器與后臺數據庫之間是通過有線方式進行通信的,對于讀寫器與后臺數據庫之間的通信,通常認為是安全的[1]。因此在設計雙向認證協議時,通常將讀寫器與后臺數據庫看作一個通信主體,不需要去考慮讀寫器與后臺數據之間的驗證過程。而在移動RFID系統中,讀寫器與后臺數據庫之間采用無線方式通信,所以讀寫器與后臺數據庫之間不再是傳統的安全信道。因此,傳統的RFID系統中使用的雙向認證協議不能再用于移動RFID系統中去[2]。當下很多學者對這一問題進行了深入的研究,并提出了諸多適用于移動RFID系統的雙向認證協議,但都存在各種問題,使得RFID系統的安全性不能得到保障。
針對RFID系統存在的安全問題,國內外的學者提出了諸多解決方案,主要分為重量級協議、輕量級協議、超輕量級協議。重量級協議采用經典密碼學算法,例如RSA、橢圓曲線加密算法以及對稱加密算法等。但是由于無源標簽不支持如此大量的運算和存儲,因此不能得到很好的推廣使用。超輕量級協議采用異或、位運算等實現加密,雖然加密算法的實現過程簡單,但是因為算法的單一性,很容易遭受攻擊,安全性不能得到很好的保障。輕量級協議一般采用Hash函數去實現加密,既滿足了RFID系統輕量級的要求,也保證了系統的安全性。
本文參考了諸多前人的認證協議[3-10]。文獻[3]提出了最初的HashLock協議。該協議采用基于Hash的隨機應答機制。但是最后在服務器對標簽進行應答時,會將標簽ID進行明文發送,使得攻擊者可以輕易地追蹤標簽,因此該協議不能有效地抵御跟蹤攻擊等,并且該協議不適用于新型移動RFID系統。文獻[4]提出了一種新形式的移動RFID雙向認證協議。該協議能夠應用到移動RFID系統中去,并且在該協議中采用了橢圓曲線算法對信息進行加密,具有很好的安全性。但是因為加密算法中需要大量運算,現有的輕量級移動RFID系統中,計算量已經超出了標簽的計算能力。文獻[5]提出了一種基于動態ID的移動RFID認證協議,但是在該協議中最后階段涉及到了ID的更新過程,容易因為物理干擾或者人為破壞,而導致ID更新不同步的情況,因此該協議不能有效地抵御去同步化攻擊。文獻[6]提出的協議滿足了移動RFID系統的要求,在讀寫器與后臺服務器之間加入了驗證過程,但是忽略了標簽與后臺服務器之間的雙向認證,因此該協議不能有效地抵御攻擊者發起的假冒攻擊。文獻[7]中設計的協議滿足了讀寫器、閱讀器與標簽三者之間的認證過程,但是其在信息更新時,一旦出現意外情況,就會導致后臺服務器與標簽之間的信息不同步。因此該協議不能很好地抵御異步攻擊。
基于以往研究,本文提出了一種基于Hash運算的輕量級移動RFID雙向認證協議。
在對當前存在的傳統RFID雙向認證協議和移動RFID雙向認證協議進行分析研究后,在這些協議的基礎上,提出了一個采用動態ID方式的移動RFID雙向認證協議,并且該協議能夠很好地滿足RFID系統中對標簽輕量級的要求,使用偽隨機數產生器替代隨機數產生器,降低標簽的運算量。相比較于其他認證協議,該協議能夠很好地抵御異步攻擊、重放攻擊等多種攻擊。Hash函數因其單向不可逆的特性,被認為它在協議中是絕對安全的。表1給出了改進后的移動RFID雙向認證協議涉及到的符號。

表1 移動RFID雙向認證協議符號
本文提出的改進移動RFID雙向認證協議如圖1所示。

圖1 協議執行
(1)閱讀器首先向標簽發送質詢請求并發送一個隨機數Nr。
(2)標簽接到請求后,產生偽隨機數Nt,計算P=Hkt(Nt⊕Nr⊕TID),將計算結果分為左右兩部分,將PL以及Nt作為對讀寫器的應答,并保留PR的值,便于接下來對于讀寫器身份的驗證。
(3)閱讀器接收到標簽的應答后將自身保存的Nt'與Nt值進行比較,若相等則終止認證,否則計算Q=Hkr(RID⊕Nt⊕Nr),將計算結果分為左右部分,將QL、Nr以及標簽傳遞過來的消息發送給服務器。
(4)服務器接收到消息后,先判斷Nr的值是否與自身保存的Nr'相等,若相等,終止認證,否則驗證讀寫器的身份。從數據庫中得到curRID和cur_kr的值,計算QL'=Hkr'(RID'⊕Nt⊕Nr)L是否與QL相等,若不相等,從數據庫中取出上一輪的preRID和pre_kr再次計算QL'的值是否與QL相等,若不相等則終止認證,否則開始驗證標簽的身份。從數據庫中得到curTID和cur_kt的值,計算PL'=Hkt(Nt⊕Nr⊕TID)L是否與PL相等,若不相等,從數據庫中取出上一輪的preTID和pre_kt再次計算PL'的值是否與PL相等,若不相等則終止認證,若相等則開始更新對應信息。更新pre_kr=kr,pre_kt=kt,preRID=RID,preTID=TID,cur_kr=Hkr(kr⊕ RID),cur_kt=Hkt(kt⊕ TID),curRID=Hkr(Nr⊕ RID),curTID=Hkt(Nt⊕ TID),并將PR'與QR'發送給閱讀器作為答復。
(5)讀寫器將自身保存的QR與QR'進行比較,若不相等,則認證失敗,否則讀寫器與后臺服務器之間的雙向認證完成,讀寫器開始更新對應的kr和RID,并將PR'發送給標簽。
(6)標簽接收到消息后,拿出自身保存的PR與PR'進行比較,若不相等,則認證失敗,否則更新TID與kt的值。
本文改進的協議運用了Hash不可逆運算、異或運算,以及偽隨機數產生器等多項安全技術,在每輪認證中,信息都是變化的,因此協議具有良好的安全性。
跟蹤攻擊主要是通過追蹤標簽時在每輪認證過程中發出的一致消息,但是該協議內消息二中的消息隨機數ID和密鑰在每輪消息認證過程中都是動態改變的,即使追蹤者每次都能拿到對應的消息,但是因為Hash函數具有單向且不可逆的性質,因此攻擊者不能追蹤到標簽的ID值。
異步攻擊是目前大多數采用動態ID機制協議普遍面臨的問題。異步攻擊發生在服務器端和標簽端及讀寫器端,進行信息更新時,通過外界干擾,使它們之間存儲的信息不同步,進而導致下次認證失敗。在每次的協議認證過程中,都會對上一次的ID值進行保存,當發現認證不通過時,不會馬上終止協議的認證,而是通過對應的ID去尋找上一次認證過程中的preID,看能否完成認證,從而有效地避免了異步攻擊的問題。
重放攻擊也是目前大多數協議中普遍存在的問題,攻擊者通過截獲上一輪認證的消息,在下一輪認證的過程中,冒充通信參與的一方,將上輪解惑的消息無改動地發送,以達到欺騙的目的。該協議中引入動態ID以及密鑰的機制,每輪的消息認證都會產生不同的結果;同時該協議還采用了過濾機制,因此攻擊者不能在服務器、讀寫器和標簽之間成功地進行重放攻擊。
在本協議中攻擊者想要實施中間者攻擊就必須要獲得隨機數Nt和雙方共享的密鑰kt或者kr,通過重新構造PL或QL的值替換原本的認證信息,去達到認證的目的。但是由于該協議中的ID值和密鑰值每輪都是經過更新隨機產生的,且ID和密鑰并沒有以明文的形式出現過。因此,該協議能夠成功地抵御中間者攻擊。
本協議通過計算P=Hkt(Nt⊕Nr⊕TID)和Q=Hkr(RID⊕Nt⊕Nr)的對應左右部分,完成了雙向認證的要求;并且為了提高效率,及時發現重放攻擊,讀寫器和后臺服務器中分別保存了標簽以及讀寫器上一輪產生的隨機數,能夠很好地完成雙向認證過程。表2為該協議與其他協議的比對結果。

表2 移動RFID認證協議安全性對比
BAN邏輯是最早提出的驗證協議安全性的一種形式化分析工具,過程大致分為以下幾步:
第一步,將協議形式化描述;
第二步,初始化假設;
第三步,確立驗證所需要達到的結果;
第四步,形式化分析與驗證。
下面就本文改進的協議進行BAN邏輯分析驗證。
下面的形式化描述中D代表后端服務器,T代表標簽,R代表讀寫器,kt和kr分別代表服務器與標簽和讀寫器之間的共享密鑰,Nt和Nr表示標簽和讀寫器產生的隨機數,RID和TID為讀寫器與標簽的ID標識。
(1)協議的形式化描述

(2)初始化假設

(3)協議目標的形式化描述



同理,結合初始化條件以及BAN邏輯的規則可以完成目標3和4的證明,并且證明方式與目標1和2相同。這里因為篇幅有限,不再進行證明。
本文在研究前人提出的RFID雙向認證協議的基礎上,針對其中存在的安全問題以及系統成本雙方面考慮,提出了改進的輕量級移動RFID雙向認證協議。通過對協議的安全性分析以及形式化分析,結果顯示該協議能夠很好地抵御各種攻擊,且滿足RFID系統輕量級的要求。