劉立波 鄭巧珍 付 強
(中國船舶重工集團公司第七二二研究所 武漢 430079)
無線射頻識別技術(Radio Frequency Identification,RFID)是一種自動識別技術,能實現(xiàn)對感知物品的精確定位和資源共享,它的信息讀取過程不需要人工干預,還能夠在惡劣環(huán)境下工作[1]。但是在RFID 應用越來越廣泛的同時,RFID 系統(tǒng)的安全問題也越來越嚴峻。為了提高RFID 系統(tǒng)的安全性,研究者們把密鑰方法應用到RFID認證協(xié)議中,但是RFID 標簽其儲存空間和計算能力都有限,無法實現(xiàn)復雜的高安全加密算法。另一方面,Hash函數(shù)因操作簡單、易實現(xiàn),可以被廣泛用于RFID標簽中[1]。因此密鑰方法與Hash 函數(shù)方法相結合的認證協(xié)議也應運而生。
本文針對一種基于非對稱密鑰和Hash 函數(shù)的RFID 雙向認證協(xié)議的不足提出了改進方案,同時用BAN邏輯驗證改進協(xié)議的安全性。
RFID 系統(tǒng)一般分為三個部分:標簽(Tag)、讀寫器(Reader)、數(shù)據(jù)庫(Data Base)。數(shù)據(jù)庫和讀寫器一般都具有足夠的存儲和計算能力,兩者之間可以使用有線信道通信,目前的密碼算法和安全協(xié)議完全可以保護兩者的通信安全,因此RFID 的安全問題主要在讀寫器和標簽之間[1]。
文獻[1]中介紹的RFID 雙向認證協(xié)議。其認證過程和更新過程如圖1所示。
表1 文獻[1]協(xié)議中的標識符
其中,標簽和讀寫器中都引入隨機數(shù)產(chǎn)生模塊和相同的Hash 算法,另外,標簽上存儲有DID 和秘密值——數(shù)字串num;讀寫器上存放非對稱密鑰對{K,K-1}和非對稱加密算法;數(shù)據(jù)庫中存有標簽的標識符ID、加密后的數(shù)字串Dnum和標簽信息DM。
該協(xié)議能讓標簽與讀寫器實現(xiàn)雙向身份認證,在應用方面有不少優(yōu)點。比如標簽中ID 雖然使用非對稱密鑰加密,但是標簽并不需要運行非對稱加密算法,降低了標簽的負載;不同于類似Hash 鏈的RFID 認證協(xié)議,該協(xié)議的后端數(shù)據(jù)庫只用根據(jù)ID查詢信息,而不用計算所有ID 的Hash 值來與之匹配等。
但是該協(xié)議還是仍然存在不足之處。比如標簽易被跟蹤,num 的更新不同步和非對稱加密算法使用不當?shù)葐栴}。以下是具體的分析。
1)標簽容易被跟蹤。在標簽端存儲的DID 沒有進行過更新,每一次標簽都是向讀寫器發(fā)送同樣的信息,雖然攻擊者無法根據(jù)DID得到標簽的真實ID,但是非法攻擊者卻可以將DID 視作ID 的別稱,跟蹤標簽及其攜帶者。
2)非對稱密鑰算法使用過多,造成計算資源的浪費。協(xié)議在執(zhí)行步驟3)時,讀寫器直接將ID 發(fā)送給數(shù)據(jù)庫,由此可以認為該協(xié)議將讀寫器與數(shù)據(jù)庫之間的信道默認是安全的,當讀寫器與數(shù)據(jù)庫之間的通信是安全的時候,讀寫器就不需要再對num和M加解密,可以節(jié)省非對稱密鑰算法的計算開銷。
3)隨機數(shù)產(chǎn)生器依然要求一定的計算能力。標簽端在更新階段需要產(chǎn)生高質量的偽隨機數(shù),而當前應用廣泛、高效的梅森旋轉算法,通過反饋位移寄存器產(chǎn)生隨機數(shù),算法最大周期為219937-1,標簽需進行19937 次位移操作,這將增加標簽的負擔[3]。
圖1 文獻[1]協(xié)議認證與更新過程
4)無法抵抗中繼攻擊。中繼攻擊是中間人攻擊的一種,攻擊者在讀寫器端偽裝成標簽,又在標簽端偽裝成讀寫器,偽標簽與偽讀寫器可以通信,然后通過轉發(fā)真正的讀寫器與標簽之間的消息,使假冒標簽通過讀寫器的認證[4]。這種偽裝攻擊是最難抵抗的一種攻擊。
5)存在更新不同步問題。在更新數(shù)字串num時,新的數(shù)字串Nnum 是由標簽產(chǎn)生的,如果在標簽已經(jīng)進行后,攔截了標簽向讀寫器發(fā)送的更新消息,即步驟12)未執(zhí)行,那么就會造成標簽的數(shù)字串num已更新,而數(shù)據(jù)庫里面的數(shù)字串num還是上一次認證時使用的,從而引起更新不同步問題,使合法標簽認證失敗。
根據(jù)對原協(xié)議的分析,本文提出了以下的改進方案,如圖2所示。
表2 改進協(xié)議中的新引入的標識符
改進方案的具體步驟如下:
1)讀寫器→標簽:讀寫器發(fā)送請求Query,計時模塊開始計時;
2)標簽→讀寫器:標簽返回DID;
3)讀寫器→數(shù)據(jù)庫:讀寫器若在規(guī)定時間T0內(nèi)收到標簽回復(T1 4)數(shù)據(jù)庫→讀寫器:數(shù)據(jù)庫根據(jù)ID 查找相應num和M,返回給讀寫器; 5)讀寫器→標簽:讀寫器產(chǎn)生R1并且發(fā)送給標簽,同時用num與R1計算哈希值H1=H(num‖ R1); 6)標簽→讀寫器:標簽應答時間T1' 7)讀寫器:比較H1和H2,若相等,則標簽為合法標簽,讀寫器完成認證和信息的讀??; 8)讀寫器:產(chǎn)生新的隨機數(shù)R2和R3,然后使用R2更新ID:NID=ID⊕R2,再加密NID,同時還用R2計 算 H3=H(num‖R2) , 最 后P=DNID⊕H(num‖R3); 9)讀寫器→標簽:讀寫器打包發(fā)送{H3,R2,R3,P,更新命令}; 10)標 簽:先 使 用R2與num 計 算 哈 希 值H4=H(num‖R2),比較H3和H4,若相等,則進行標簽更新,DNID=P⊕H(num‖R3),Nnum=num⊕R3,最 后 用 更 新 后 的 Nnum 與 R3計 算H5=H(Nnum‖R3); 11)標簽→讀寫器:標簽發(fā)送H5與更新成功消息; 12)讀寫器→數(shù)據(jù)庫:讀寫器更新數(shù)字串Nnum=num⊕R3,然后計算H6=H(Nnum‖R3)是否與H5相等,相等則表示更新成功,然后發(fā)送更新后的NID和Nnum給數(shù)據(jù)庫; 13)數(shù)據(jù)庫:更新NID和Nnum。 在認證協(xié)議的改進方案中,雙向身份認證過程與原協(xié)議基本一致,只是減少了對num和M的解密計算,增加了讀寫器的計時模塊,但是對更新過程進行了較大的修改。 首先新協(xié)議增加了標簽ID 的更新,來防止攻擊者跟蹤標簽及其攜帶者;其次由于讀寫器與數(shù)據(jù)庫之間使用的是安全信道,改進協(xié)議減去了對num和M的加解密過程;然后新協(xié)議將產(chǎn)生隨機數(shù)的任務都交給讀寫器來完成,減輕了標簽的計算任務;同時讀寫器引入了計時模塊,有效預防了中繼攻擊;最后新協(xié)議也解決了更新不同步的問題。 改進協(xié)議在安全性方面有了很大地提高,具體如下。 1)雙向認證與防竊聽。標簽利用非對稱密鑰認證閱讀器,閱讀器通過Hash 函數(shù)來認證標簽。與此同時,協(xié)議中無論是非對稱密鑰算法,還是Hash函數(shù)都可以保護ID與num的機密性。 2)防重放攻擊。在認證過程和更新過程中引入隨機數(shù),使得每一輪認證信息與以前都不同,可以防止攻擊者利用竊聽到的信息進行重放來偽裝合法的標簽。 3)防篡改攻擊。標簽和讀寫器之間使用了Hash 函數(shù)進行加密,在Hash 函數(shù)中引入數(shù)字串num,由于數(shù)字串num 是秘密信息,所以當攻擊者攻擊協(xié)議時,攻擊者無法計算出正確的Hash 值,有效防止了認證消息被非法篡改。 4)防同步破壞攻擊。在本協(xié)議中,標簽的更新由讀寫器發(fā)起,在標簽完成更新后,還需要使用新的數(shù)字串Nnum 與隨機數(shù)R3進行Hash 運算,由讀寫器確認更新成功來保證同步更新。即使更新過程中,讀寫器和標簽之間的消息被攔截(無論是步驟10),還是步驟12)),數(shù)據(jù)庫也可以通過存儲了上一輪的ID 和num 和當前更新的NID 和Nnum,避免了數(shù)據(jù)庫和標簽中ID 和num 不一致而無法繼續(xù)認證的問題。 5)防位置跟蹤。協(xié)議在運行期間,攻擊者可以通過一些非法手段得到標簽的部分數(shù)據(jù)信息,特別是某些關鍵數(shù)據(jù),對合法標簽進行位置跟蹤[2],但是改進協(xié)議會在每次完成信息認證后,立即更新用戶的ID 信息和數(shù)字串num,動態(tài)信息認證可以防止攻擊者的跟蹤。 圖2 改進協(xié)議的認證與更新過程 6)防中繼攻擊。解決RFID中繼攻擊的方法就是對認證過程的時間進行限制,由于中繼攻擊的偽標簽和偽讀寫器需要一定的通信時間,假冒標簽的認證通常會比正常認證過程耗時更多,設置一個合理的時間限制就可以避免中繼攻擊。因此改進協(xié)議在讀寫器中加入了計時模塊,在步驟3)和步驟8)中,一旦標簽的響應時間超過預先設置的限制,讀寫器就會中斷此次認證。 利用BAN 邏輯分析法驗證改進協(xié)議的安全性,但是由于篇幅原因,只證明認證階段。改進協(xié)議的流程可以用BAN邏輯語言描述為 消息(1):Tag →Reader:{ID}K 消息(2):Reader →DB:{ID}key 消息(3):DB →Reader:{Tag ?numReader,M}key 消息(4):Reader →Tag:R1 消息(5):Tag →Reader:H(Tag ?numReader,R1) 讀寫器與數(shù)據(jù)庫之間的消息和分析論證無關,將其去除,其他消息轉換為BAN 模型可以識別的理想化模型: 消息(1):Reader ?{ID}K 消息(4):Tag ?R1 協(xié)議的初始假設有以下這些: 假設 7:Reader|≡Tag|?{ID}K 假設 8:Reader|≡#{ID}K 假設 9:Reader|≡#(R1) 協(xié)議希望證明的目標是: 目標(1):Reader|≡ID; 首先證明目標1)Reader|≡ID (g)由(e)和(f)中的結論,根據(jù)臨時值驗證規(guī)則 , 可 以 得 到 結 論 Reader|≡Tag|≡ 本文分析了一種基于非對稱密鑰和Hash 函數(shù)的RFID 雙向認證協(xié)議,并且針對其進行了協(xié)議的改進,修補了其中的漏洞。然后本文對改進協(xié)議也進行了性能分析和安全性驗證,相較于原協(xié)議,改進協(xié)議抗攻擊能力更強。但本文并沒有在硬件上對改進協(xié)議進行實驗驗證,因此協(xié)議距離實際應用還有一段距離,必然還需要進一步的完善。4 改進協(xié)議安全性能分析
5 改進協(xié)議安全性驗證
6 結語