范美月,董慶寬,王 蕾,楊 燦
(西安電子科技大學 綜合業務網理論及關鍵技術國家重點實驗室,陜西 西安 710071)
射頻識別(Radio Frequency IDentification,RFID)是物聯網中一種非接觸式的物品自動識別技術,通常由電子標簽、閱讀器和后端數據庫三部分構成。后端數據庫存儲標簽和閱讀器的信息[1],閱讀器讀寫標簽數據[2]。RFID技術可一次識別多個標簽,且成本低,耐久性好,因此在交通、物流、醫療等眾多領域有著廣泛的應用。但其通信所采用的無線鏈路會帶來較為嚴重的安全和隱私問題,限制了RFID在很多場景下的應用[3]。因此,閱讀器和標簽之間的安全認證成為人們關注的熱點問題。
目前,人們研究較多的是單所有者的情況,標簽的惟一所有者使用一個閱讀器來讀寫標簽。該場景下出現了大量的RFID認證方案。這些方案分別考慮了有無后臺數據庫問題、后臺數據庫是否離線問題、是否租用云服務器等問題[4-7],同時也考慮采用不同開銷和成本的密碼技術來實現認證的問題。但在實際應用中,標簽在它的有效期內可能同時擁有多個所有者,而且不同所有者擁有的所有權的權重也可能不同。在這種情況下,針對多所有者的RFID標簽認證協議的研究就有著重要價值,當然多所有者標簽認證協議設計的復雜性也將成倍的增加。近年來,這方面的研究主要集中于多所有者標簽的所有權轉移問題。比如,甘勇等人針對多所有者RFID標簽提出了多種所有權動態轉移協議[8-11],彭勃提出了云環境下帶權重多所有者標簽所有權轉移協議[12],KAPOOR等人針對多個所有者多個標簽的所有權轉移問題給出了一種解決方案[13],SUNDARESAN等人提出了一個多所有者多標簽所有權轉移協議的安全環境[14-15],ZHU等人提出的一種針對多所有者的輕量級匿名群組RFID標簽的所有權轉移協議[16]等。但這些方案不能支持多所有者和標簽之間的獨立認證,僅能支持所有權轉移,且通常需要可信第三方( Trusted Third Party,TTP)參與,同時密鑰更新和抗去同步攻擊等重要問題都沒有解決。
針對以上問題,在解決多所有者RFID認證問題的意義下,筆者提出了一種無可信第三方帶權重的多所有者RFID標簽認證協議。該協議實現了多個閱讀器對同一標簽的相互認證,無TTP參與,協議的設計十分簡潔,便于應用。而且所設計的協議很好地解決了密鑰更新和抗去同步攻擊等問題。并利用BAN邏輯對提出的認證協議進行了安全性分析。
文中設計的協議需要滿足機密性、認證性、不可跟蹤性、前向安全性、抗重放攻擊、抗去同步攻擊和抗拒絕服務攻擊等安全特性。
在文中方案中,RFID系統包含多個閱讀器,每個閱讀器對應一個標簽所有者,且每個閱讀器與標簽,以及每個閱讀器與后端數據庫之間都是開放信道,如圖1所示。

圖1 多所有者RFID認證結構圖
SHAMIR于1979 年提出了基于Lagrange 插值多項式的秘密共享門限方案[17],它可將關鍵數據作為密鑰拆分為份子密鑰,隨后將子密鑰分派給個參與者,至少有個參與者共同參與時才可恢復密鑰。文中用Shamir秘密共享門限方案來管理標簽密鑰,每一個子密鑰對應一份權重,權重為u的所有者則擁有u份子密鑰。假設全部所有者權重總和為w,對于(w,k)門限方案,只有參與恢復標簽密鑰的所有者擁有的子密鑰權重之和等于或大于k才能恢復出所共享的密鑰,即
(1)
其中,p為大素數。在初始化或密鑰更新時,根據式(2)生成w份子密鑰,按權重分發給所有者。具體來說,標簽在有限域GF(p)隨機選取ai∈GF(p),構造k-1次多項式,即
(2)
其中,K為標簽密鑰,即多個所有者要共享的密鑰,然后采用
yj=f(xj)(modp),j=1,2,…,w,
(3)
生成子密鑰,再根據每個所有者的權重分發新子密鑰,其中xj可直接取值為j。
文中涉及的符號定義如表1所示。

表1 符號含義
(1)假設n個所有者同時在線。每個閱讀器與后端數據庫之間有共享密鑰,即每個閱讀器和后端數據庫之間有安全信道。
(2)標簽存儲自身身份TID,標簽密鑰Kcur,標簽舊密鑰Kold(初始化時為K),n個閱讀器的身份信息Ri(i=1,2,…,n)以及相應的子密鑰權重wi。
(3)閱讀器分別存儲自身身份Ri,以及與后端數據庫的共享密鑰Ki。
(4)后端數據庫存儲標簽密鑰Kcur,每個閱讀器與后端數據庫的共享密鑰Ki,還有n個閱讀器的身份信息Ri以及對應的子密鑰sij(1≤j≤wi)。
假設當前有t(1≤t≤n)個所有者發起認證,記為Rl1,…,Rlt,認證步驟如下:
步驟1 t個閱讀器向后端數據庫分別發送認證請求以及自身身份信息,其中第li個閱讀器Rli發送消息requesti‖Rli(i=1,2,…,t)。
步驟2 后端數據庫確認t個閱讀器的身份,利用偽隨機數生成器生成一個隨機數r0,將r0發送給t個閱讀器;t個閱讀器分別計算Xli=r0‖h(Rli‖r0)(i=1,2,…,t),將Xli發送給標簽。

閱讀器Rlx計算U=h(r0‖M‖Klx),將r0‖M‖U發送給后端數據庫。



(3)若沒有匹配的記錄,則認證終止。
若是前兩種情況,則后端數據庫將t個閱讀器的子密鑰通過安全信道發送給Rli(i=1,2,…,t),將后端數據庫成功認證標簽的消息碼Ack發送給閱讀器Rly(1≤y≤t);由于后端數據庫和閱讀器相互信任,Rly又收到消息碼Ack,因此n個閱讀器認證標簽;Rly利用偽隨機數生成器生成一個隨機數r2,計算W=h(r0‖r2),t個閱讀器分別計算Ni=r2‖W⊕sij(i=1,2,…,t,1≤j≤wi),將Ni發送給標簽。



(3)若無匹配,則認證終止。

閱讀器Rlz將Qi發送給后端數據庫。
步驟6 后端數據庫根據收到的r4以及步驟5中的結果(此處假設步驟5之(1)成立,即在上一次會話中標簽和后端數據庫均成功更新密鑰),計算P′=h(Kcur‖r4)。若P′=P,則說明消息無篡改,根據收到的新子密鑰計算出Knew,并將Knew和新子密鑰進行存儲。
圖2是無TTP帶權重的多所有者RFID標簽認證協議圖。

圖2 無TTP帶權重的多所有者RFID標簽認證協議圖
(1) 去同步攻擊:即攻擊者通過干擾協議執行過程來使得后端數據庫和有效標簽密鑰更新不同步。在該協議中,標簽先更新密鑰,之后后端數據庫更新密鑰。若攻擊者阻斷了標簽發送后端數據庫的更新消息,即阻斷了1.5節步驟5發出的消息,則標簽完成了更新,而后端數據庫未更新,破壞了密鑰更新的同步。
但是在文中協議中標簽內同時存儲更新前后的密鑰Kcur和Kold,因此下一次認證仍可根據Kold建立同步。根據以上分析,假設攻擊者阻斷了步驟5,導致標簽密鑰更新成功,而后端數據庫未更新,在下一次認證中,標簽同時使用新舊密鑰向后端數據庫發送查詢消息,即Mcur和Mold,這樣即使后端數據庫上次認證未能成功更新密鑰,也能通過Mold查詢到Kold,從而使用Kold完成與標簽的認證。所以協議可以抵抗去同步攻擊。
(2) 前向安全性:在RFID認證環境下,敵手即使截獲了當前會話中的密鑰,也不能從中得出之前的會話內容。在文中協議中,每次認證后標簽密鑰都要更新,更新時使用隨機數和hash函數,更新規則為Knew=h(r3‖Kcur)。由于r3是秘密的且哈希函數具有單向性,因而從新密鑰來計算原密鑰是不可行的。因此,敵手即使截獲了大量當前的會話消息,也無法恢復出過去的會話內容,即滿足前向安全性。
(3) 不可跟蹤性:即要求敵手不能根據標簽返回的信息,將某個標簽與其他標簽區分開來,對標簽進行位置跟蹤。在本協議中,每個閱讀器和后端數據庫之間的都有共享秘鑰,信道是安全的;每個閱讀器與標簽的通信消息中均包含有一次性隨機數r0、r1、r2或r4,并且每一次認證結束都會進行密鑰更新,保證密鑰在每一次的通信中都不相同。敵手每次截獲的消息都是不同的且沒有關聯,因此無法區分任意兩次認證的協議來自同一個標簽。下面給出具體證明。
證明:考慮標簽和閱讀器之間傳送的消息:
① Msg 1(r0)=r0‖h(Rli‖r0),i=1,2,…,t。
② Msg 2(r1)=r1‖h(r0‖r1‖Kcur)‖h(r0‖r1‖Kold)。
③ Msg 3(r2)=r2‖h(r0‖r2)⊕sij,i=1,2,…,t,1≤j≤Wi。
④ Msg 4(r4)=r4‖h(Kcur‖r4)⊕s'ij,i=1,2,…,n,1≤j≤Wi。
上面4條消息都是根據一次性隨機數與哈希函數來生成的,這樣
本輪會話的消息可表示為:(Msg 1,Msg 2,Msg 3,Msg 4)。
下輪會話的消息可表示為:(Msg 1′,Msg 2′,Msg 3′,Msg 4′)。
r0,r1,r2,r4和r'0,r'1,r'2,r'4都是一次性隨機數,且r0≠r'0,r1≠r'1,r2≠r'2,r4≠r'4,根據哈希函數的性質,包含不同隨機數的哈希值是不相等的,因此,兩次會話之間沒有任何關系,即使攻擊者截獲了每個會話的所有信息,也無法依次來區分兩個會話是否對應同一個標簽,滿足不可跟蹤性。
(4)機密性:即攻擊者通過截獲通信數據來獲取機密信息。在文中協議中,每個閱讀器和后端數據庫之間信道是安全的,且標簽與每個閱讀器之間的信息交互都是基于單向哈希函數生成的密鑰流異或運算后的結果,且協議滿足不可跟蹤性,可保證每次會話的消息毫無關聯。即使攻擊者收集大量通信數據也無法破解,因而攻擊者無法獲取機密信息,協議滿足機密性。
(5)重放攻擊:攻擊者截獲當前的信息在以后的會話中重放,企圖能通過認證。在文中協議中,每輪消息均使用一次性隨機數握手,因此可以抗重放。2.2節關于認證的形式化證明也說明了這個結果。
(6)拒絕服務攻擊:惡意的敵手連續不斷地發出認證請求,使得后端服務器的計算資源或存儲資源大量消耗,進而達到拒絕提供服務的目的。在文中協議中,協議的發起者是閱讀器,步驟1中閱讀器向后端數據庫發送認證請求,后端數據庫只是返回一個隨機數r0,沒有占用后端數據庫的計算資源或存儲資源,因此不會造成服務攻擊。步驟4中后端數據庫可以根據收到的r0和剛發出去的r0進行對比,如果一致,則說明消息可信;否則,就是惡意攻擊。假如攻擊者獲取了r0,后端數據庫可以根據收到的消息M,計算h(r0‖M‖Klx)(第lx個閱讀器),攻擊者不知道共享秘鑰Klx,不能通過驗證,因此攻擊者不能使得后端數據庫發起查詢和搜索運算,而后端數據庫僅需要簡單的一次hash計算即可驗證,因此也不會造成拒絕服務攻擊。
采用BAN邏輯分析證明雙向認證(同時也證明了抗重放攻擊),BAN邏輯是由BURROWS、ABADI和NEEDHAM[18]在1990年提出的一種分析認證協議的常規方法。
2.2.1 BAN邏輯的基本術語
文中用到的BAN邏輯術語表示如下:
P|≡X:P相信X,即主體相信命題X是正確的。
P|~X:P發送過一條包含X的消息。
P?X:P收到了包含X的消息。

{X}K:用K對X加密后的消息。
2.2.2BAN邏輯的邏輯推理規則

2.2.3 協議分析
(1) 協議描述:
①Rli→D:Rli,i=1,2,…,t。
②D→Ri:r0,
Rli→T:r0‖h(Rli‖r0),i=1,2,…,t。
③T→Rlx:M=r1‖h(r0‖r1‖Kcur)‖h(r0‖r1‖Kold),
Rlx→D:r0‖M‖h(r0‖M‖Klx)。
④D→Rli:s11,s12,…,s1w1,…,st1,st2,…,stwt,
Rli→T:r2‖h(r2‖r0)⊕sij,i=1,2,…,t,1≤j≤wi。

(2) 協議理想化:
①M1:D?r0,r1,h(r0,r1,Kcur),h(r0,r1,Kold),h(r1,h(r0,r1,Kcur),h(r0,r1,Kold),Klx)。
②M2:Rli?s11,s12,…,s1w1,…,st1,st2,…,stwt。
③M3:T?r2,sij,h(r2,r0),i=1,2,…,t,1≤j≤wi。
(3) 初始化協議:
(4) 協議目標:
G1:Ri|≡T|~Kcur;G2:T|≡Ri|~s11,s12,…,s1w1,…,st1,st2,…,stwt。
(5) 協議分析:

得
D|≡T|~h(r0,r1,Kcur)。
由拆分消息規則可知D?r0,D?r1,D?K,由哈希函數規則R5:
得
D|≡T|~(r0,r1,Kcur) 。
所以
D|≡T|~Kcur。
由于文中協議后端數據庫與閱讀器之間的信道安全,相互信任,由R6:
得
Ri|≡T|~Kcur。
G1得證。

得
T|≡Ri|~s11,s12,…,s1w1,…,st1,st2,…,stwt。
G2得證。
通過BAN邏輯對該協議的形式化分析,證明該協議能有效地達到安全目標,實現閱讀器與標簽的相互認證,同時也說明了該協議也可以抵抗重放攻擊。
(1) 協議的安全性對比
文中協議與其他協議的安全性對比如表2所示,其中“Y”表示滿足,“N”表示不滿足。

表2 安全性對比
表2將文中提出的協議和其他幾個具有代表性的認證協議進行了性能對比,雖然文獻[7]方案滿足各項安全性,但其方案只是實現了單個閱讀器對單個標簽的認證。因此,文中所提出的針對多所有者的認證協議相較于其他認證協議具有更高的安全性。
(2) 標簽的存儲量
在文中提出的協議中,標簽被多個所有者共享,因此標簽需要存儲每個所有者的身份信息Ri以及相應的子密鑰權重wi,所有者的個數一般不會太多,因此這部分不會消耗太多存儲空間。除此之外,標簽還要存儲自身身份TID,還有新舊密鑰Kcur和Kold。對于普通低成本標簽,這些存儲量相較正常。
(3) 標簽的計算量
文中協議采用(w,k)秘密門限方案管理密鑰,假設p長度為160 bit,令(k-1)lbx≤160,這樣分發子密鑰時其中的模冪運算是小整數運算,且不需要求模。令k和x都取最大值w,代入上式,可知當w最大不超過32時,可以保證模冪運算不超過160 bit,從而不需要求模。根據對k-1次多項式的計算分析表明,生成新子密鑰共需要(k-1)w次部分短參數的模乘運算,密鑰恢復至少需要k-1次;協議中包含3+w次輕量級哈希運算,以及異或、加法等運算,都在低成本標簽的資源消耗范圍內。
標簽所要承擔的主要計算是哈希函數、隨機數的產生以及一些異或、模乘等基本運算,隨機數的產生可以基于哈希函數設計,因此下面主要討論哈希函數以及乘法器的邏輯資源消耗。
根據協議的安全性、輸出比特長度以及標簽所能承受的輕量級要求,文中采用GUO等人提出的Photon函數族[21]中的Photon-160/36/36函數。根據文獻[22]中的分析,該函數可以輸出160 bit長度的哈希值,其所需要的等效邏輯門總數為1 391 GE,相較于其他同等安全性的Hash函數,Photon-160/36/36算法及其結構符合低成本標簽的設計需求。
經2.3節分析,該協議中的權重總和w和k的最大取值均不會超過32,因此這里設計了一個五位乘法器。主要是利用Verilog HDL語言實現了乘法模塊的功能,通過Vivado完成了綜合設計和設計實現,并驗證了模塊的正確性,并綜合出模塊占用的面積和消耗的功耗。

圖3 乘法器輸出波形圖
由圖3顯示的是乘法器的仿真圖,其中a和b代表乘法器的輸入端口,c代表乘法器的輸出,兩個輸入端用的測試數據為14和1c,經過Vivado中仿真后得到的數據是230。經過驗證,結果正確,邏輯正確。

(a)乘法器資源消耗類
圖4(a)和圖4(b)分別展示出了在Vivado中乘法器編譯執行成功后的資源消耗表以及柱狀圖,其中LUT是查找表,IO是輸入輸出3個角??梢钥吹?,LUT為22,IO為20,該乘法器符合低成本標簽協議的要求。
筆者提出了一種無TTP帶權重的多所有者RFID標簽認證協議。該協議實現了真正意義上的多所有者RFID標簽認證技術。實現了n個閱讀器和標簽之間的相互認證,同時也滿足不可追蹤性、前向安全性、去同步攻擊等一些安全特性。文中利用BAN邏輯對協議進行了形式化分析,同時,對抗去同步攻擊、前向安全性以及不可追蹤性也進行了分析。通過對協議的性能分析,文中提出的協議在標簽的存儲量、計算量以及通信量上都體現出良好的性能。不足的是,文中提出的協議不適用于標簽所有者過多或者子密鑰份數過大的場合。下一步將對認證中使用的門限共享方案的計算量進行深度優化。