段 艷 萍
(廣州商學院國際學院 廣東 廣州 510006)
射頻識別技術不需要接觸通信實體,即可讀出特定通信實體存放的信息[1-2]。在RFID系統中一般由三部分組成:標簽、讀寫器、后臺數據庫。無線信道因其自身固有的屬性,使得該通信模式被認定為不安全。基于此,在研究RFID系統通信過程中,多數情況下會將讀寫器與后臺服務器看成一個整體[3-6]。
在RFID系統中,相對于讀寫器和后臺服務器而言,標簽這個通信實體很多方面與其不同。無源標簽不具備主動向讀寫器發(fā)送信息的功能,只能依賴于反射讀寫器的能量進行信息的交換[7-8]。在現行推廣的RFID系統中,主要以低成本為主,因此標簽自然會選擇無源標簽[9-10]。
要想保證RFID系統中標簽與讀寫器之間通信消息的安全,為解決此困境,國內外許多專家學者設計出不同類型的雙向認證協議。
文獻[11]中提出一種雙向認證協議,但協議設計之時存在缺陷。具體的,因通信實體產生的隨機數r1和r2未經過加密,而是采用明文的方式直接發(fā)送出去,使得攻擊者監(jiān)聽一個完整的通信過程,即可獲取這兩個通信信息;加密算法Hash函數對外公開,使得協議無法抵抗暴力破解攻擊。在文獻[12]中設計一個改進的雙向認證協議。協議中雖未發(fā)現安全漏洞,但協議采用優(yōu)化之后的Rabin算法進行加密,對協議進行深入研究,該加密算法即為模運算。相對于低成本的標簽來說,該計算量有些超出標簽的計算能力,因此適應性受到制約。在文獻[13]中提出LMAP協議,該協議通過通信實體之間的多次認證來保障信息的安全性。對協議進行深入分析,協議無法抵抗拒絕服務攻擊。在文獻[14]中利用PRF和HASH設計一個雙向認證協議。協議具備一定的安全保障,但對協議進行更為深入的分析,協議無法抵抗DoS攻擊。文獻[15]對文獻[14]中的協議存在的安全性進行了詳細的分析,指出其協議存在的不足。同時文獻[15]利用HASH函數設計了一個協議。攻擊者通過多次監(jiān)聽通信實體發(fā)送消息,能夠定位通信實體的位置,從而實施追蹤攻擊,獲取通信實體的隱私信息或破壞通信實體之間的正常通信,因此協議無法抵抗追蹤攻擊。文獻[16]基于挑戰(zhàn)-響應的模式設計一個認證協議。通信消息加密過程中混入隨機數,從而抵抗攻擊者的追蹤攻擊,但協議無法抵抗攻擊者發(fā)起的去同步化攻擊。文獻[17]基于偽ID設計出一個認證協議,同時用串空間模型對協議的安全性進行了較為全面的證明,但是標簽一端因需要產生隨機數,需要具備隨機數產生器以及認證過程較為復雜,使得協議的推廣受到制約。文獻[18]設計了一個協議,文中聲稱協議可以提供較高的安全性,但對協議進行深入分析,協議存在較多的安全隱患,比如:協議無法提供最基本的假冒攻擊安全,且攻擊者發(fā)起假冒攻擊獲取通信實體隱私信息之后,通信實體卻并未察覺。
1) 協議步驟。
文獻[18]協議的流程圖如圖1所示。
圖1 文獻[18]協議的流程圖
結合圖1,協議的步驟可描述如下:
(1) 讀寫器向標簽發(fā)送ASK。
(2) 標簽收到信息,產生隨機數r,計算Hm(ID,r),將Hm(ID,r)和r發(fā)送給讀寫器。
(3) 讀寫器查找是否存在Hm(ID′,r)與Hm(ID,r)相等。未找到,協議終止。找到,將ACK和Hm(ID′,r)發(fā)送給標簽。
(4) 標簽比較收到的Hm(ID′,r)與自身計算的Hm(ID,r)是否相等。若不相等,協議終止。若相等,向讀寫器發(fā)送ACK。
(5) 讀寫器收到信息,再向標簽發(fā)送READ指令,同時更新密鑰和ID′信息。
(6) 標簽收到READ指令,進行信息讀取,同時進行密鑰和ID′信息更新。
2) 對協議的分析。通過對上述協議步驟的分析,可以得出結論:文獻[18]協議無法抵抗攻擊者的假冒攻擊。具體分析過程如下:
根據協議的描述可以得知:協議正常執(zhí)行時,讀寫器發(fā)送給標簽的信息Hm(ID′,r)其實與標簽發(fā)送給讀寫器的信息Hm(ID,r)是相等的。既然兩者相等,則攻擊者可以按照如下攻擊模型進行假冒攻擊。
步驟1合法讀寫器向合法標簽發(fā)送ASK。
步驟2標簽產生r,計算Hm(ID,r),將
步驟3攻擊者通過監(jiān)聽等手段獲取步驟2通信信息,且阻塞讀寫器與標簽的通信。此時,攻擊者開始假冒成讀寫器與標簽進行通信。
因為文獻[18]協議步驟3中只是驗證Hm(ID,r)與Hm(ID′,r)是否存在相同。存在,就會將Hm(ID,r)發(fā)送給標簽。此時攻擊者截獲的Hm(ID,r)信息如果正確,則Hm(ID,r)與Hm(ID′,r)是相等的。因此,攻擊者發(fā)送Hm(ID,r)也可以通過標簽的驗證。
步驟4標簽驗證讀寫器通過,向讀寫器發(fā)送ACK。
步驟5攻擊者將會接收到ACK,攻擊者無須進行信息的更新操作,只需將READ指令發(fā)送給標簽即可。
步驟6標簽收到攻擊者發(fā)送來的READ指令,無須進行驗證,攻擊者假冒的讀寫器即可開始對標簽存放的信息讀取。
因此,基于上述攻擊模型的分析,文獻[18]協議無法抵抗攻擊者發(fā)起的假冒攻擊,使得設計的協議存在一定的安全隱患,無法提供通信所需的安全要求。針對文獻[18]協議,在分析該協議基礎之上,提出一種改進的協議。
Reader:讀寫器(讀寫器與后臺服務器之間通過有線方式進行信息交換,一般認為安全可靠,這里將兩者看為一個整體,用讀寫器Reader表示)。
Tag:標簽。
K:讀寫器與標簽之間的共享密鑰。
Knew:Reader、Tag間的當前K。
Kold:Reader、Tag間的上一輪K。
ID:標簽的標識符。
x:讀寫器產生的隨機數。
y:標簽產生的隨機數。
&:按位與運算。
⊕:按位“異或”運算。
EaC(X, Y):交換再交叉運算。
為統一文中描述,約定用EaC(X, Y)符號表示交換再交叉運算。交換再交叉運算EaC(X, Y)可以按照如下定義:X、Y是兩個不同的二進制序列,位數均為L位,且滿足L為偶數;取前者二進制序列X的后L/2位,放在新組成的二進制序列Z的前面,同時取后者二進制序列Y的前L/2位,放在新組成的二進制序列Z的后面,從而組成一個新的二進制序列Z;在對二進制序列Z進行遍歷,將Z奇數位上面的數與相鄰的偶數位上面的數進行交叉互換,即可得到交換再交叉運算的結果。
比如:選取L=8,X=1001 0011,Y=1011 0110,則根據上述定義可得Z=0011 1011,EaC(X,Y)=0011 0111。該例子具體示意圖如圖2所示。
圖2 交換再交叉運算示意圖
本文協議流程如圖3所示。
圖3 本文協議流程
結合圖3,本文協議具體認證過程可描述如下:
步驟1讀寫器產生隨機數x,計算M1=x⊕K、M2=EaC(x, ID);將M1、M2以及認證請求命令Query一并發(fā)送給標簽。
步驟2標簽收到信息,驗證信息發(fā)送源的真?zhèn)?,具體驗證方法如下:
用收到的M1、自身存儲的共享密鑰K計算隨機數x′=M1⊕K;然后用計算所得x′、自身儲存的標識符ID計算M2′=EaC(x′,ID)。比較M2′與收到的M2是否等。若M2′≠M2,則協議停止。M2′=M2,表明消息發(fā)送源是真實的,標簽繼續(xù)后續(xù)操作。
標簽產生隨機數y,計算M3=y⊕ID、M4=EaC(x⊕y,y⊕K);最后將M3、M4一并發(fā)送給讀寫器,以作為標簽一方對讀寫器的響應。
步驟3用收到的M3、自身儲放的標識符ID計算隨機數y′=M3⊕ID;然后用計算所得隨機數y′、自身產生隨機數x、自身存儲的當前認證共享密鑰K計算M4′=EaC(x⊕y′,y′⊕K)。比較計算得到的M4′與收到的M4數值是否相等。
若不相等,讀寫器將查找上一輪認證用到的共享密鑰Kold來替換當前認證的共享密鑰Knew再次進行M4″的計算,M4″=EaC(x⊕y′,y′⊕Kold);比較M4″與M4是否等。M4″≠M4,協議結束;M4″=M4,表明y′=y,可進行后續(xù)操作。計算所得y′、自身產生x、自身儲放ID和K計算M5=EaC(x & ID,y & K);接著開始更新信息Kold=Knew、Knew=EaC(x, y),最后將M5發(fā)送給標簽。
若相等,表明消息的發(fā)送方合法性,且表明y′=y,可進行后續(xù)操作。計算所得y′、自身產生x、自身儲放ID和K計算M5=EaC(x & ID,y & K);接著開始更新信息Kold=Knew、Knew=EaC(x,y),最后將M5發(fā)送給標簽。
步驟4標簽收到信息,先對信息的發(fā)送源真?zhèn)芜M行驗證,具體驗證方法如下:
在步驟2中計算所得隨機數x′、自身產生隨機數y、自身儲放ID和K計算M5′=EaC(x′ & ID,y & K);然后比較計算所得M5′與收到的M5是否相等。
M5′≠M5,協議結束。M5′=M5,更新信息:Knew=EaC(x, y)。
(1) 協議形式化描述。為使本文協議便于用GNY形式邏輯語言描述,作如下約定:R表示讀寫器(已包含后臺服務器),T表示標簽;則用GNY形式邏輯語言描述以上協議如下:
Msg1:T<*【M1, M2, Query】;
Msg2:R<*【M3, M4】;
Msg3:T<*【M5】。
(2) 協議初始化假設。文中所提協議基于如下:R、T表示主體,即R表示讀寫器(已包含后臺服務器),T表示標簽。
Sup1:(K、ID、y)∈T。
Sup2:(Knew、Kold、ID、x)∈R。
Sup3:R|≡#(x、y)。
Sup4:T|≡#(x、y)。
(3) 協議證明目標。本文協議的證明目標主要有三個,具體如下:
Goal1:T|≡R|~#(M1, M2);
Goal2:R|≡T|~#(M3, M4);
Goal3:T|≡R|~#(M5)。
(4) 協議證明過程。因Goal2:R|≡T|~#(M3, M4)、Goal3:T|≡R|~#(M5)的證明過程與Goal1:T|≡R|~#(M1,M2)的證明過程相似,因此此處僅以Goal1:T|≡R|~#(M1,M2)為例進行證明,具體證明過程如下[19]。
∴ {M1,M2}∈T
∴ T=#{M1, M2}
∴ {M1, M2}∈T
∴ T|≡#{M1,M2}
∴ T|=R~{M1, M2}
∵ 新鮮性定義以及推導出來的T=#{M1, M2}、T|=R~{M1,M2}
∴ Goal1:T|≡R|~#(M1,M2)得證明。
雙向認證協議中的通信實體有三個:標簽、后臺服務器、讀寫器。本文協議在設計之時已將讀寫器與后臺服務器看作一個整體,該整體具有強大的計算能力、足夠的存儲空間、完備的查詢能力;相對于標簽而言,則并未具備上述資源,標簽一端的計算能力以及存儲空間均受到嚴格的限制。因此本節(jié)將會選擇標簽作為研究對象進行深入分析。本文協議與其他此類協議進行性能分析結果見表1所示。
表1 協議的性能分析
產生隨機數的計算量用R來表示;哈希函數的計算量用H來表示;按位運算(比如:按位與運算等)的計算量用A來表示;M表示模運算的計算量;交換再交叉運算的計算量用EaC來表示。加密參數長度均為l。
在上述各種不同的計算中,各個計算的計算量從大到小排序可以按照如下序列:M、H、R、EaC、A。其中模運算、哈希函數屬于輕量級的計算,其計算量遠遠超于交換再交叉運算和按位運算。
此處以本文協議為例進行詳細分析計算量、存儲量大小計算的由來,其他協議分析方法一致。
本文協議在Step2中,在計算x′時第一次用到按位運算(此處是按位“異或”運算);在計算M2′時第一次用到交換再交叉運算;產生隨機數y,進行一個隨機數產生計算;在計算M3時第二次用到按位運算(此處仍是按位“異或”運算);在計算M4時第二次用到交換再交叉運算。
本文協議在Step4中,在計算M5′時第三次用到交換再交叉運算;在更新信息Knew時第四次用到交換再交叉運算。
本文協議在認證過程中,標簽一端計算量為:產生隨機數計算一次、按位運算用到兩次、交換再交叉運算用到四次。故標簽一端總的計算量等于R+2A+4EaC。
在本文協議中,標簽一端存放如下信息:共享密鑰K、隨機數y、標簽的標識符ID三個參數。每個參數的長度均為l,因此標簽一端的存儲量為3l。
從標簽計算量角度出發(fā),本文協議與其他協議比較,計算量得到較大幅度的減少:本文協議摒棄哈希加密方法,采用按位運算實現信息的加密。同時文獻[18]中統計的計算量并不是最為完善的,因該參考文獻中對于標簽一端的信息更新并未進行詳細的闡述,即不清楚標簽在進行信息更新過程中是否用到哈希函數進行加密。鑒于當前數據,本文協議計算量已少于該文獻中協議的計算量。
綜合上述,本文協議在標簽一端的計算量以及存儲量方面優(yōu)于其他協議;同時本文協議彌補了其他協議中存在的安全隱患問題。
在分析文獻[18]協議存在安全缺陷的基礎之上,設計出一種改進的能夠抵抗假冒攻擊的雙向認證協議。改進的協議對所有信息采用先加密再傳送機制,能夠增加攻擊者的破解難度;為盡可能降低通信實體的計算量,引入按位操作實現的交換再交叉運算對信息進行加密;讀寫器一端存儲前后兩輪認證用到的共享密鑰,以抵抗攻擊者發(fā)起的去同步化攻擊。采用基于GNY邏輯形式化對協議進行分析,推理出協議具備一定安全性,能夠滿足當前用戶的安全需求。對協議進行性能分析,以標簽作為研究對象,表明改進的協議具備計算量低的特征,能夠較好地適用于當前低成本的RFID系統。