何 小 平
(廣東培正學院數(shù)據(jù)科學與計算機學院 廣東 廣州 510800)
無線射頻識別技術在很多方面都有廣泛的應用,該技術在應用過程中無需與實體接觸,即可識別出其中信息,適用于很多近距離通信,最典型的是RFID系統(tǒng)的應用。一般RFID系統(tǒng)包含有三個部分:標簽、讀寫器、后臺服務器[1-2]。在傳統(tǒng)的RFID系統(tǒng)中,讀寫器是固定式的,即讀寫器與后臺服務器之間的通信基于有線傳輸方式進行,一般認為安全可靠。隨著科技的發(fā)展和社會的進步,人類的需求不斷增加,傳統(tǒng)的RFID系統(tǒng)已經(jīng)無法滿足人們的復雜需求,逐漸產(chǎn)生了移動式的RFID系統(tǒng)。在移動式的RFID系統(tǒng)中,讀寫器不再是固定式的,而是移動式的,即讀寫器與后臺服務器之間的通信改為基于無線通信方式。無線通信方式因其自身固有的屬性,使得該通信信道并不安全,容易被攻擊者監(jiān)聽或進行其他類型的攻擊,一般認為安全性較低[3-5]。
為能夠確保移動式RFID系統(tǒng)的推廣應用,必須保障通信過程中信息的安全,適用于傳統(tǒng)RFID系統(tǒng)的雙向認證協(xié)議并不能很好地運用在移動式RFID系統(tǒng)中,因此需要設計出新的能夠適用于移動式RFID系統(tǒng)中的雙向認證協(xié)議[6-8]。
文獻[9]給出一個適用于移動系統(tǒng)的認證協(xié)議,協(xié)議基于共享密鑰機制。對協(xié)議進行分析,其因缺少標簽一端對讀寫器一端的認證,使得攻擊者可以假冒讀寫器給標簽發(fā)送信息,從而實施假冒攻擊。文獻[10]基于交叉位運算提出一個移動雙向認證協(xié)議,協(xié)議采用按位運算實現(xiàn)信息加密,能夠極大程度上降低系統(tǒng)整體的計算量。對協(xié)議進行分析,攻擊者可以通過竊聽手段獲取一個完整會話全部消息,可對獲取的消息進行分析,協(xié)議無法提供后向安全保障,攻擊者可通過獲取消息分析出上一輪通話過程中部分隱私信息。
文獻[11]基于物理不可克隆設計出一種移動雙向認證協(xié)議,因物理不可克隆函數(shù)產(chǎn)生的共享密鑰是無法進行復制的,使得協(xié)議具備較高的安全性。雖然無法對協(xié)議中的重要信息進行復制,但對于截獲的消息進行多次重放,幾輪重放之后,將會導致標簽與后臺數(shù)據(jù)庫之間用到的共享密鑰信息失去一致性,從而協(xié)議無法抵抗攻擊者發(fā)起的去同步化攻擊。
文獻[12]在綜合考慮多種因素之后提出一種雙向認證協(xié)議,適用于移動式RFID系統(tǒng)。協(xié)議雖然增加了移動讀寫器與后臺服務器之間的雙向認證,但忽略了標簽與后臺服務器之間的雙向認證,使得攻擊者可以假冒其中一方進行通信,因此協(xié)議無法抵抗攻擊者發(fā)起的假冒攻擊。
文獻[13]采用位運算進行加密,提出了一種移動雙向認證協(xié)議。協(xié)議為降低系統(tǒng)的計算量,摒棄基于哈希函數(shù)加密的想法,采用位運算進行加密。但協(xié)議在設計過程中,未能考慮到物理入侵方式,使得攻擊者可以通過物理入侵的手段獲取共享密鑰,從而采用反向克隆的技術發(fā)起假冒攻擊,因此協(xié)議無法抵抗假冒攻擊。
文獻[14]基于哈希函數(shù)設計出一種移動雙向認證協(xié)議,但協(xié)議存在多種安全缺陷。
基于上述問題,本文在詳細分析文獻[14]中協(xié)議存在的安全不足基礎之上,提出一種改進的協(xié)議。改進的協(xié)議先進行通信實體之間的識別驗證,若驗證通過,則進行后續(xù)操作,否則,協(xié)議終止。該協(xié)議能夠有效抵抗重放攻擊及假冒攻擊等。
文獻[14]中提出的雙向認證協(xié)議的流程圖如圖1所示。
圖1 文獻[14]中雙向認證協(xié)議流程圖
結合圖1,描述出具體的認證過程如下(有關下面描述中涉及到的符號所表示的含義,可以參考文獻[14]):
(1) 移動讀寫器將
(2) 標簽計算X,并將X分成左右兩部分數(shù)據(jù),即XL、XR。將
(3) 移動讀寫器根據(jù)Nt來確定是否過濾掉標簽發(fā)送來的信息。然后移動讀寫器計算Y,并將Y分成左右兩部分數(shù)據(jù),即YL、YR。將
(4) 后臺服務器根據(jù)Nr來確定是否過濾掉移動讀寫器發(fā)送來的信息。
先驗證移動讀寫器的合法性。后臺服務器計算得到一個YL與移動讀寫器發(fā)送來的YL進行比對。若相等,驗證通過,接著開始驗證標簽的真?zhèn)危蝗舨幌嗟?,驗證移動讀寫器失敗,協(xié)議終止。
待上述操作完成,后臺服務器將
(5) 移動讀寫器將自己計算得到的YR與后臺服務器發(fā)送來的YR進行比對。若相等,驗證后臺服務器通過,并將XR發(fā)送給標簽;若不相等,驗證失敗,協(xié)議終止。
(6) 標簽將自己計算得到的XR與移動讀寫器發(fā)送來的XR進行比對。若相等,驗證后臺服務器和移動讀寫器通過,開始更新信息;若不相等,協(xié)議終止。
對上述協(xié)議進行分析可以發(fā)現(xiàn),協(xié)議無法提供標簽對移動讀寫器的認證,同時協(xié)議無法抵抗攻擊者發(fā)起的假冒攻擊。
協(xié)議無法提供標簽對移動讀寫器的認證具體分析如下:
結合上述協(xié)議過程中的第(5)步和第(6)步,后臺服務器發(fā)送給移動讀寫器的
協(xié)議無法抵抗攻擊者發(fā)起的假冒攻擊具體分析如下:
通過上面的分析已經(jīng)得出:協(xié)議無法提供標簽對移動讀寫器的認證?;诖?,攻擊者可以通過監(jiān)聽的手段,獲取移動讀寫器與后臺服務器之間的第(4)步通信的消息,即攻擊者可以監(jiān)聽得到
針對文獻[14]協(xié)議存在的安全缺陷,本文給出一種改進的能夠抵抗攻擊者假冒攻擊的移動RFID雙向認證協(xié)議。改進的協(xié)議主要從以下方面進行修改:(1) 協(xié)議中用到的所有數(shù)據(jù)采用密文方式進行傳輸,即所有信息加密后再傳輸;(2) 移動讀寫器發(fā)送給標簽的信息,不再是簡單的轉發(fā),而是再次加密后再傳送給標簽,以此應對攻擊者發(fā)起的假冒攻擊和提供標簽對移動讀寫器的認證;(3) 為降低系統(tǒng)整體的計算量,不再采用哈希函數(shù)進行加密,而是采用計算量更少的位運算進行加密。
在現(xiàn)有的移動RFID系統(tǒng)中,后臺服務器和移動讀寫器兩個通信實體,都具備強大的計算能力、充足的存儲空間、強有力的查詢能力。標簽則不具備上述優(yōu)勢,計算能力較為薄弱,無法進行復雜的計算,存儲空間受限,無法存放大量的數(shù)據(jù)[15-16]。
認證協(xié)議在開始之前會存在一個初始化過程,初始化的主要目的是完成協(xié)議開始之前密鑰的分發(fā)以及安全存儲等操作。具體地,在文中設計的協(xié)議中,后臺服務器一端將會產(chǎn)生如下數(shù)據(jù):idsR、idsT、key、keyT、keyR。協(xié)議在未開始之前,賦值idsT_new=idsT_old=idsT。后臺服務器將會通過安全路徑將信息
協(xié)議中出現(xiàn)的符號所表示的含義如表1所示。
表1 協(xié)議中符號的含義
為便于文中后續(xù)描述,約定用Sac(X⊕Y)符號表示自組合交叉位運算。下面給出自組合交叉位運算的定義:X和Y表示二進制序列,長度都為偶數(shù)位,X和Y進行異或運算得到一個新的二進制序列Z,即Z=X⊕Y;Z的最高位和最低位保持不變,從第二位開始至倒數(shù)第二位結束進行遍歷,遍歷過程中,將偶數(shù)位上面的那個數(shù)放在新二進制序列的奇數(shù)位上,將奇數(shù)位上的那個數(shù)放在新二進制序列的偶數(shù)位上[17]。
下面以一個具體的例子對自組合交叉位運算進行詳細描述。X=1001 1100,Y=0011 0010,在這里X和Y兩個二進制序列的長度均為8,滿足偶數(shù)位要求。根據(jù)上述定義,Z=X⊕Y=1010 1110,Sac(X⊕Y)=Sac(Z)=1101 0110。該例子的具體流程圖如圖2所示。
圖2 自組合交叉位運算流程圖
改進的協(xié)議流程圖如圖3所示。
圖3 改進的協(xié)議流程圖
結合圖3,可將改進的協(xié)議具體步驟描述如下:
Step1移動讀寫器產(chǎn)生一個隨機數(shù)rR。用自身產(chǎn)生的隨機數(shù)rR、存放的共享密鑰key的右半部分key_R計算得到m1;用自身產(chǎn)生的隨機數(shù)rR、存放的共享密鑰key的左半部分key_L計算得到m2。然后將{m1、m2、Query}一起發(fā)送給標簽,開始進行認證協(xié)議,Query表示雙向認證請求命令。
m1、m2按照如下規(guī)則進行計算所得到:
m1=rR⊕key_R、m2=rR⊕key_L。
Step2標簽接收到{m1、m2、Query}信息后,先對移動讀寫器進行驗證,只有在驗證通過之后,再進行后續(xù)操作,否則,協(xié)議終止。
標簽利用接收到的m1、存放的共享密鑰key的右半部分key_R計算m1⊕key_R;標簽利用接收到的m2、存放的共享密鑰key的左半部分key_L計算m2⊕key_L。比較m1⊕key_R的值與m2⊕key_L的值是否相等,不相等,則標簽驗證移動讀寫器失敗,協(xié)議終止;反之,表示移動讀寫器通過標簽的驗證,同時可以通過計算得到移動讀寫器產(chǎn)生的隨機數(shù)rR。
標簽產(chǎn)生一個隨機數(shù)rT。用自身產(chǎn)生的隨機數(shù)rT、計算得到的隨機數(shù)rR計算得到m3;用自身產(chǎn)生的隨機數(shù)rT、存放的共享密鑰key計算得到m4;用自身產(chǎn)生的隨機數(shù)rT、存放的共享密鑰keyT、存放的假名idsT計算得到m5,并將m5分成左右位數(shù)相同的兩部分m5_R、m5_L。然后將{m3、m4、m5_R}一起發(fā)送給移動讀寫器,以此作為標簽對移動讀寫器的響應。
rR、m3、m4、m5按照如下規(guī)則進行計算所得到:
rR=m1⊕key_R(或rR=m2⊕key_L)
m3=rR⊕rTm4=Sac(rT⊕key)
m5=Sac(rT⊕keyT⊕idsT)
Step3移動讀寫器接收到{m3、m4、m5_R}信息后,先對標簽進行驗證,只有在驗證通過之后,再進行后續(xù)操作,否則,協(xié)議終止。
接著移動讀寫器再利用自身產(chǎn)生的隨機數(shù)rR、存放的共享密鑰keyR、存放的假名idsR計算得到m6,并將m6分成左右位數(shù)相同的兩部分m6_R、m6_L。最后將{m1、m3、m5_R、m6_R}一起發(fā)送給后臺服務器。
m6=Sac(rR⊕keyR⊕idsR)
Step4后臺服務器接收到{m1、m3、m5_R、m6_R}信息后,先對移動讀寫器進行驗證,只有在驗證通過之后,再對標簽進行驗證。當且僅當移動讀寫器和標簽都通過驗證之后,才會進行后續(xù)操作;否則,協(xié)議終止。
待信息更新完成,后臺服務器取計算得到的m6的左半部分m6_L,取計算得到的m5的左半部分m5_L,最后將{m5_L、m6_L}一起發(fā)送給移動讀寫器。
Step5移動讀寫器接收到{m5_L、m6_L}信息后,先對后臺服務器進行驗證,只有驗證通過之后,才會進行后續(xù)操作,否則,協(xié)議終止。
移動讀寫器將接收到的m6_L與自身之前計算得到的m6_L進行比較,不等,后臺服務器未通過驗證,協(xié)議終止;相等,后臺服務器驗證通過,移動讀寫器利用接收到的m5_L、自身產(chǎn)生的隨機數(shù)rR、計算得到的隨機數(shù)rT計算得到m7。最后將{m7}發(fā)送給標簽。
m7按照如下規(guī)則進行計算所得到:m7=m5_L⊕rR⊕rT。
Step6標簽接收到{m7}信息后,先對移動讀寫器和后臺服務器進行驗證,驗證通過之后,再進行后續(xù)操作;否則,協(xié)議終止。
標簽利用自身之前計算得到的m5_L、自身產(chǎn)生的隨機數(shù)rT、計算得到的隨機數(shù)rR計算得到m7′。然后標簽將接收到的m7與計算得到的m7′進行比較,不等,后臺服務器和移動讀寫器未通過驗證,表明后臺服務器和移動讀寫器兩者之中,至少有一方是偽造的,協(xié)議終止;相等,后臺服務器和移動讀寫器驗證通過,接著標簽一端開始更新信息:keyT=Sac(rT⊕keyT)、idsT_new=Sac(rT⊕idsT_old),待信息更新完成,標簽、移動讀寫器、后臺服務器三個通信實體之間的雙向認證完成。
m7′按照如下規(guī)則進行計算所得到:m7′=m5_L⊕rR⊕rT。
協(xié)議最基本的功能是能夠提供通信實體之間的認證。協(xié)議中通信實體有標簽、后臺服務器、移動讀寫器三方,需提供三者之間的相互認證,本協(xié)議能夠提供該功能。
(1) 標簽與移動讀寫器之間的雙向認證。協(xié)議中,標簽對移動讀寫器的驗證包含兩部分:標簽通過接收到的m1、m2對移動讀寫器進行第一次驗證,具體的驗證方法在Step 2中已詳細闡述;標簽通過接收到的m7對移動讀寫器進行第二次驗證,具體驗證可參見Step 6。移動讀寫器對標簽的驗證是在Step 3中完成,通過接收到的m3、m4對標簽的驗證,具體驗證可參見Step 3。
(2) 標簽與后臺服務器之間的雙向認證。協(xié)議中,標簽對后臺服務器的驗證在Step 6中完成,通過接收到的m7對后臺服務器的驗證。后臺服務器對標簽的驗證是在Step 4中完成,通過接收到的m3、m5_R對標簽的驗證,具體過程可見Step 4。
(3) 移動讀寫器與后臺服務器之間的雙向認證。移動讀寫器對后臺服務器的驗證是在Step 5中完成,通過接收到的m6_L對后臺服務器的驗證,具體過程可見Step 5。后臺服務器對移動讀寫器的驗證是在Step 4中完成,通過接收到的m1、m6_R對移動讀寫器的驗證,具體過程可見Step 4。
重點闡述最后一步驟中,標簽是如何通過m7同時完成對移動讀寫器和后臺服務器的驗證。m7中包含m5_L信息,該信息是后臺服務器計算得到。如果后臺服務器是偽造的,則不可能計算得到正確的m5_L信息,因此標簽通過計算得到的m7與接收到的m7進行比較,即可識別真?zhèn)?。同時m7中還包含有rR、rT信息,該信息是移動讀寫器自身產(chǎn)生和計算所得。如果移動讀寫器是偽造的,則不可能得到rR、rT信息,從而計算得到的m7也是錯的。因此,基于上述,只要標簽一端計算得到的m7與接收到的m7不相等,即可表明移動讀寫器和后臺數(shù)據(jù)庫之間,至少有一方是偽造的。
協(xié)議中所有信息加密過程中均混入隨機數(shù),從而可以確保前后兩次通信信息的互異性。隨機數(shù)的混入也能夠保證通信信息的新鮮性。攻擊者會通過監(jiān)聽的手段獲取一輪的通信信息,準備通過重放該信息以獲取通信實體的隱私信息,但無法成功。雖然攻擊者通過重放監(jiān)聽得到的信息能夠通過一方通信實體的認證,當通信實體回復消息給攻擊者的時候,攻擊者因為缺乏相對應的參數(shù)信息,使得攻擊者無法破解得到隱私信息。因此,攻擊者重放攻擊失敗,協(xié)議可抵抗攻擊者的重放攻擊。
去同步化攻擊是指標簽與后臺服務器之間認證用到的共享密鑰失去一致性。具體地,標簽與后臺服務器兩者之間有一方進行了密鑰更新操作,而另一方?jīng)]有進行密鑰更新操作,從而使得兩者之間再次認證用到的共享密鑰不再一致。文中設計的協(xié)議為了能夠抵抗攻擊者的去同步化攻擊,在后臺服務器一端不僅存放當前一輪通信過程中用到的認證共享密鑰keyT信息、標簽假名idsT_new信息,還存放有上一輪認證過程中用到的認證共享密鑰keyT_old信息、標簽假名idsT_old信息。當后臺服務器用
當前計算機的計算能力非常強大,攻擊者在無法進行其他攻擊手段獲取隱私信息時,可能會用更為直接和暴力的窮舉方式窮盡出隱私信息,因此協(xié)議必須能夠抵抗攻擊者的暴力破解攻擊。協(xié)議設計過程中,所有信息都是加密之后傳送,且加密過程中均混入隨機數(shù),使得攻擊者無法暴力破解任何有用的隱私信息。比如:m1=rR⊕key_R中,攻擊者通過監(jiān)聽等手段可以獲取m1信息,但m1是密文,攻擊者只有破解出該密文才可以獲取隱私信息。對于攻擊者來說無法窮舉出,因m1中有rR和key_R信息是攻擊者無法知曉的,且隨機數(shù)rR信息每次都是隨機產(chǎn)生,無法提前預測,前后兩次的m1信息又是不相同的,因此攻擊者根本無法窮舉出任何隱私信息?;谏鲜觯瑓f(xié)議能夠抵抗攻擊者的暴力破解攻擊。
假冒攻擊是指攻擊者通過其他手段獲取一些通信消息,然后通過重放消息的手段,以達到蒙混過關認證。協(xié)議能否抵抗假冒攻擊的關鍵在于,協(xié)議是否能夠提供通信實體之間的雙向認證。在4.1節(jié)中已經(jīng)詳細分析改進的協(xié)議能夠提供通信實體之間的雙向認證?;诖耍幢闶枪粽咄ㄟ^監(jiān)聽的方式獲取一些通信消息,然后通過重放手段,通過了三個通信實體其中一方的驗證,并且得到該通信實體的響應信息,但攻擊者因缺乏必備的參數(shù)信息,無法從接收到的響應信息中分析出有用的隱私信息,因此,協(xié)議能夠抵抗攻擊者發(fā)起的假冒攻擊。
后向安全是指攻擊者通過一定的手段獲取當前的通信消息,企圖從獲取的通信消息中,推導出下次的通信消息,從而分析出其中隱私信息。本文協(xié)議在設計過程中,所有通信消息都是密文傳送,為保證通信消息的安全性,所有通信消息加密過程中均混入隨機數(shù)。比如:m1=rR⊕key_R中,攻擊者不知道rR和key_R即便是攻擊者通過監(jiān)聽等手段獲取了本輪的m1信息,想去推導出下輪的m1信息,也無法成功。因為隨機數(shù)rR的混入使得攻擊者根本無法推導出。其一,隨機數(shù)每輪都是隨機產(chǎn)生,具備無法預測性;其二,隨機數(shù)每輪隨機產(chǎn)生的時候,均是不同的?;谝陨蟽牲c,攻擊者無法預測下輪加密過程中用到的隨機數(shù)具體數(shù)值,所以不可能推導出下輪m1信息,因此,協(xié)議具備前向安全性。
表2是協(xié)議的安全性比較。
表2 協(xié)議的安全性比較
RFID系統(tǒng)中通信實體雖然有三個,但移動讀寫器及后臺服務器具備強大的計算能力、充足的存放空間,而標簽卻不具備上述優(yōu)勢,因此性能分析僅選擇標簽作為對象,從標簽一端的計算量、標簽一端的存儲量角度進行深入分析各協(xié)議的性能。具體分析見表3。
表3 協(xié)議的性能比較
表3中:H表示哈希函數(shù)的計算量;PR表示產(chǎn)生隨機數(shù)的計算量;PUF表示物理不可克隆函數(shù)的計算量;P表示偽隨機數(shù)函數(shù)的計算量;M表示模運算的計算量;C表示交叉運算的計算量;XOR表示異或運算的計算量;Sac表示自組合交叉位運算的計算量。所有的通信消息長度均用l表示。
上述運算可以分為兩種,一種是輕量級的計算量,另一種是超輕量級的計算量。H、PR、PUF、P、M這幾種運算均屬于輕量級的計算;C、XOR、Sac這幾種運算均屬于超輕量級的計算。根據(jù)不同量級的運算定義,輕量級的計算量一般是超輕量級的計算量的若干倍。由表3可知,除本文協(xié)議之外,其他協(xié)議均存在輕量級的運算,因此在標簽一端的計算量方面,本文協(xié)議具有一定的優(yōu)勢。從標簽的存儲空間角度出發(fā),可以看出本文協(xié)議與其他文獻中所提出的協(xié)議在數(shù)據(jù)的存儲量方面是相當?shù)??;谛阅芊治龊桶踩苑治?,本文協(xié)議在標簽一端的計算量方面有一定的改進和提升,同時也能夠彌補其他協(xié)議存在的安全缺陷問題。
傳統(tǒng)的RFID系統(tǒng)在廣泛運用的同時,逐漸面臨新的困境。移動式的RFID系統(tǒng)的出現(xiàn)能夠很好地彌補傳統(tǒng)RFID系統(tǒng)的不足,但其無法提供通信信息的安全。為了確保通信消息的安全,本文設計了適用于移動式的RFID系統(tǒng)雙向認證協(xié)議。在Wang等所提的協(xié)議基礎上,給出改進的協(xié)議。改進的協(xié)議必須在通信實體之間完成雙向認證之后,才會進行后續(xù)的操作,從而可以避免攻擊者的重放攻擊及假冒攻擊;同時為能夠抵抗攻擊者其他類型的攻擊,通信信息均加密后再傳輸,且加密過程中均混入隨機數(shù),使得攻擊者無法通過當前竊聽的信息推導出上一輪或下次的通信消息。對協(xié)議進行安全性分析,表明協(xié)議能夠滿足移動式的RFID系統(tǒng)的安全需求;對協(xié)議進行性能分析,表明協(xié)議在計算量方面能夠適用于當前的移動式RFID系統(tǒng)中。下一步研究方向:將加載有該協(xié)議的移動式RFID系統(tǒng)原型實現(xiàn)出來,研究一個完整通信所需時間及計算量等具體參數(shù)。