用Hash鎖方法解決RFID的安全與隱私問題
引言
RFID安全問題集中在對個人用戶的隱私保護、對企業(yè)用戶的商業(yè)秘密保護,防范對RFID系統(tǒng)的攻擊以及利用RFID技術(shù)進行安全防范等多個方面。面臨的挑戰(zhàn)是:
?、?保證用戶對標簽的擁有信息不被未經(jīng)授權(quán)訪問,以保護用戶在消費習慣、個人行蹤等方面的隱私。
?、?避免由于RFID系統(tǒng)讀取速度快,可以迅速對超市中所有商品進行掃描并跟蹤變化,而被利用來竊取用戶商業(yè)機密。
?、?防護對RFID系統(tǒng)的各類攻擊,如重寫標簽以篡改物品信息;使用特制設(shè)備偽造標簽應(yīng)答欺騙讀寫器,以制造物品存在的假相;根據(jù)RFID前后向信道的不對稱性遠距離竊聽標簽信息;通過干擾RFID工作頻率實施拒絕服務(wù)攻擊;通過發(fā)射特定電磁波破壞標簽等。
?、?如何把RFID的唯一標識特性用于門禁安防、支票防偽、產(chǎn)品防偽等。
為了避免RFID標簽給客戶帶來關(guān)于個人隱私的擔憂,同時也為了防止用戶攜帶安裝有標簽的產(chǎn)品進入市場所帶來的混亂,很多商家在商品交付給客戶時都把標簽拆掉。這種方法無疑增加了系統(tǒng)成本,降低了RFID標簽的利用率,并且有些場合標簽不可拆卸。為解決上述安全與隱私問題,人們還從技術(shù)上提出了多種方案,包括Kill標簽、法拉第網(wǎng)罩、主動干擾、智能標簽、阻止標簽和Hash鎖等方法。Hash鎖通過簡單的Hash函數(shù),增加閉鎖和開鎖狀態(tài),對標簽和讀寫器之間的通信進行訪問;但是它無法解決位置隱私和中間人攻擊問題。本文提出一種Hash鎖改進方法,成功解決了這個問題。
1 Hash鎖方法分析
1.1 定讀取控制Hash鎖方法
在定讀取控制Hash鎖方法中,射頻標簽只對授權(quán)的讀寫器起作用,它代表了一種認證過程,認證密匙固定不變。使用該方法的射頻標簽分別有1個只讀(ROM)和1個可讀寫(如RAM)的存儲器,并且每個電子標簽只供有限的用戶使用。這些用戶都共有同一個存儲在讀寫存儲器中的識別碼。每個標簽認證讀寫器的過程如圖1所示。讀寫器對每一個電子標簽都有一個認證密匙k,每個電子標簽都存儲有一Hash方程計算的結(jié)果metaID=Hash(k)。首先讀寫器向射頻標簽發(fā)出ID訪問請求,標簽向讀寫器發(fā)出相應(yīng)的metaID。讀寫器根據(jù)接收到的metaID得出密匙k并發(fā)送給標簽。然后該標簽把接收到的密匙k代入Hash方程,檢驗計算得到的結(jié)果與存儲在標簽中的metaID是否一致。如果一致,標簽就把其ID發(fā)送給讀寫器。
該方案提出了一種低成本解決安全與隱私問題的方法。僅僅需要一個Hash方程和存儲metaID值就足夠。但是它不能防止被跟蹤,因為射頻標簽的反應(yīng)能提前被預(yù)測泄露,并且隨機密匙k和標簽ID能被敵人竊聽到。
圖1 定讀取控制Hash鎖方法
1.2 隨機讀取控制Hash鎖的方法
為了避免被跟蹤,射頻標簽的反應(yīng)不能被預(yù)測到而是隨機的。主要有兩種隨機讀取控制Hash鎖的方法。MIT AutoID中心提出了一種隨機Hash方案。讀寫器向射頻標簽發(fā)出ID訪問請求,標簽向讀寫器發(fā)出的不是固定的metaID,而是變化的。如圖2所示,每個標簽與讀寫器共享一個認證密匙IDk。當讀寫器向射頻標簽發(fā)出ID訪問請求時,射頻標簽產(chǎn)生一個偽隨機數(shù)字R和輸出(R,h(IDk‖R)),其中h(IDk‖R)是輸入R和認證密匙IDk的Hash方程。然后讀寫器獲得所有射頻標簽的認證密匙。讀寫器根據(jù)接收的R和存儲在后臺數(shù)據(jù)庫中所有密匙的ID計算Hash方程。如果Hash方程值與射頻標簽發(fā)送的Hash方程值匹配,讀寫器識別出該射頻標簽的密匙IDk并發(fā)送給射頻標簽。因為每次訪問時,射頻標簽的輸出改變了。該方法避免了被跟蹤的缺點;但是該方法不適合少量射頻標簽的用戶。因為被授權(quán)的讀寫器識別一個射頻標簽,就需要搜索和計算所有標簽的ID,因此該方法不適合大量射頻標簽。
圖2 隨機讀取控制Hash鎖方法
NTT提出了一種Hash鏈方法。在第i次與讀寫器交換時,射頻標簽有其初始值Si,發(fā)送ai=G(Si)給讀寫器,再根據(jù)以前的Si更新密匙Si+1=H(Si)。其中G和H都是Hash函數(shù),如圖3所示。
圖3 射頻標簽發(fā)送ai=G(Si)并更新密匙Si+1=H(Si)
讀寫器把ai傳給后臺數(shù)據(jù)庫,后臺數(shù)據(jù)庫維持一對列表(ID;Si)。其中Si是初始密匙值,對每一個標簽,其值是不同的。后臺數(shù)據(jù)庫從讀寫器處接收標簽,輸出ai,并且對列表中的每個Si計算a0i=G(Hj(Si)),檢查是否ai=a0i。如果ai與a0i匹配,ID就從一對a0i中識別出來了。該方法滿足了不可分辨和向前的安全特性。G是單向方程,因此敵人能獲得標簽輸出ai,但是不能從ai獲得Si。G輸出隨機值,敵人能觀測到標簽輸出,但不能把ai和ai+1聯(lián)系起來。H也是單向方程,敵人能篡改標簽并獲得標簽的密匙值,但不能從Si+1獲得Si。該算法優(yōu)勢很明顯,但是有太多的計算和比較。為了識別一個ID,后臺服務(wù)器不得不計算ID列表中的每1個ID。假設(shè)有N個已知的標簽ID在數(shù)據(jù)庫中,數(shù)據(jù)庫不得不進行N次ID搜索,2N次Hash方程計算和N次比較。計算機處理負載隨著ID列表長度成線性增加,因此,該方法也不適合大量射頻標簽的情況。
2 隨機讀取控制Hash鎖方法的改進
為了避免定讀取控制Hash鎖方法中的人為攻擊和惡意跟蹤的缺陷,并克服隨機讀取控制Hash鎖方法中計算負載過大的不足,在隨機讀取控制Hash鎖的基礎(chǔ)上,提出了一種改進方法。
2.1 必需的RFID系統(tǒng)各部分結(jié)構(gòu)
?。?) 射頻標簽
射頻標簽由兩部分構(gòu)成:一部分是只讀存儲器(ROM)和隨機讀取存儲器(RAM),ROM存儲的是標簽ID的Hash值,RAM存儲的是被鑒別的讀寫器的ID;另一部分是邏輯電路,主要用于一些簡單的計算,如計算Hash方程或產(chǎn)生簡單的偽隨機數(shù)。
(2) 讀寫器
讀寫器與射頻標簽無線通信,每一個讀寫器都有ReaderID,用來識別一批被鑒別的讀寫器。例如,在超市里的所有讀寫器都有一樣的ReaderID,表明它們都來源于該超市。當讀寫器向射頻標簽發(fā)出訪問請求時,標簽通過讀寫器的ReaderID檢驗讀寫器。讀寫器同時與后臺數(shù)據(jù)庫連接并通信,以識別標簽并運行相關(guān)的應(yīng)用。
(3) 數(shù)據(jù)庫
后臺數(shù)據(jù)庫存儲了一對對射頻標簽ID和它的Hash方程值:[TagID,hash(TagID)]。一般地,后臺數(shù)據(jù)庫與讀寫器通過有線和安全通道相連接。
2.2 工作原理
讀寫器要查詢射頻標簽ID,必須首先確定該讀寫器是否被認證。若讀寫器被認證,標簽則響應(yīng)讀寫器并讓讀寫器獲得其ID。
(1) 讀寫器認證
在響應(yīng)讀寫器并讓讀寫器獲得標簽ID信息前,讀寫器和標簽確定了認證體制。因為讀寫器的ReaderID提前存儲在標簽的RAM中,所以標簽通過讀寫器ID識別出有權(quán)限的讀寫器。標簽不響應(yīng)沒有權(quán)限的讀寫器,因此,不可能被敵人跟蹤(因為讀寫器都有權(quán)限)。另外,這種權(quán)限化過程是基于標簽產(chǎn)生的隨機數(shù),因此,還可以防止敵人的哄騙。
認證過程如圖4所示。當射頻標簽接收到讀寫器的請求時,首先射頻標簽產(chǎn)生隨機數(shù)k并發(fā)送給讀寫器,讀寫器接收后傳給后臺數(shù)據(jù)庫,后臺數(shù)據(jù)庫計算a(k)=Hash (ReaderID‖k)并把a(k)傳回給讀寫器,然后讀寫器把a(k)發(fā)送給標簽。同時射頻標簽計算Hash(ReaderID‖k),然后標簽比較讀寫器與標簽計算的a(k)值是否相等。如相等,讀寫器通過了認證并且標簽向它發(fā)送一些與TagID相關(guān)的信息;若不等,該讀寫器沒有通過認證被屏蔽。
圖4讀寫器認證過程
(2) 獲得標簽的TagID
如圖5所示,在讀寫器認證后,射頻標簽響應(yīng)認證的讀寫器Hash(TagID)。當讀寫器接收到Hash(TagID)值時,它會與后臺數(shù)據(jù)庫通信并尋找數(shù)據(jù)對(TagID,Hash(TagID)),讀寫器就會獲得相應(yīng)的TagID。即使Hash(TagID)值被竊聽了,當標簽向外發(fā)送其值時,竊聽者也不會知道Hash的值。因為竊聽者無法確定TagID與Hash(TagID)之間的相互關(guān)系。
圖5獲取射頻標簽的TagID
(3) 在射頻標簽存儲器里更新認證讀寫器的ReaderID
當一個物體從一個倉庫運到另一個倉庫時,被認證的讀寫器將從先前倉庫的讀寫器改變?yōu)楫斍暗淖x寫器。這個過程如圖6所示。讀寫器獲得Hash(TagID)的值并傳給后臺數(shù)據(jù)庫,數(shù)據(jù)庫通知存儲在標簽里的ReaderID更新。相應(yīng)地,數(shù)據(jù)庫尋找出New ReaderID并把它傳給讀寫器。當讀寫器接收到New ReaderID時,讀寫器把該值與Old ReaderID“異或”,并把“異或”值發(fā)送給射頻標簽。標簽?zāi)軌驈摹爱惢颉敝岛蚈ld ReaderID中得出New ReaderID,最后ReaderID被更新。
在ReaderID更新過程中,即使“異或”值被泄露,敵人也不能獲取New ReaderID。因為不能獲取Old ReaderID,因此防止了哄騙。
2.3 改進方法分析
?。?) 防止竊聽
在認證過程中,即使敵人竊聽到讀寫器的輸出a(k),也不能在下一步獲得認證。因為每一認證過程中需要的a(k)值是變化的。前一次認證的a(k)值對于后一次認證來說是無意義的。
認證完后,射頻標簽輸出Hash(TagID)而不是TagID。因為Hash方程很難求其反函數(shù),所以敵人捕獲到輸出Hash(TagID)值,也不能得到TagID的值。
當射頻標簽要更新存儲器的ReaderID時,所更新的ReaderID是經(jīng)過舊的ReaderID加密過的,也防止了竊聽。
總之,上述改進方法即使在讀寫器和射頻標簽之間的通信遭遇到敵人的竊聽時,也是安全的。
?。?) 防止跟蹤
射頻標簽對敵人是屏蔽的,只對被認證的讀寫器響應(yīng)。而且,如上所述,敵人是無法偽造認證讀寫器的。因為沒有標簽輸出,所以敵人不能通過跟蹤標簽來跟蹤客戶剛付費買的是什么。位置隱私及客人攜帶的物品得到了保護。
?。?) 低計算負載
該改進方法運算速度快,成本低。當要從N個已知的射頻標簽中識別出一個時,讀寫器只需要執(zhí)行1次Hash操作和N次ID搜索,而隨機讀取控制Hash鎖方法至少需要N次Hash操作和N次ID搜索。顯然在同一安全級上,所提出的改進方法計算負載顯著降低;而且認證過程是依賴于N個已知的標簽ID和1個Hash鎖方程,因此隨著標簽的數(shù)量增多,計算負載緩慢增大。
?。?) 適用于大量射頻標簽
因為計算負載低,并且隨著射頻標簽的數(shù)量增加而緩慢增加,所以該方法非常適合有大量標簽存在的被保護的RFID系統(tǒng)。
圖6在射頻標簽存儲器里更新認證讀寫器的ReaderID
3 結(jié)論
以上提出的一種Hash鎖改進方法,特別適合于物流管理。該方法需要必要的硬件,如可改寫的存儲器和簡單的邏輯電路。該方法具有高安全性、小負載等優(yōu)點,適用于大量標簽應(yīng)用的場合;解決了位置隱私和中間人攻擊問題,即使敵人竊取了標簽的輸出,也不能獲取標簽的ID。
參考文獻
1 (德)Klaus Finkenzeller.射頻識別(RFID)技術(shù)——無線電感應(yīng)的應(yīng)答器和非接觸IC卡的原理與應(yīng)用.北京:電子工業(yè)出版社,2001
2 Radio Frequency Identification(rfid)Home Page. http://www.aimglobal.org/technologies/rfid
3 Vince Stanford. Pervasive Computing Goes the Lasthundred Feet with RFID Systems. IEEE pervasivecomputing, Volume:2, Issue: 2, Pages:914, AprilJune 2003
4 AutoID Center. 860 MHz960 MHz Class I Radio Frequency Identification Tag Radio Frequency &Logical communication Interface Specification Proposed Recommendation Version 1.0.0. Technical Report MITAUTOIDTR007, Nov. 2002
5 Gao Xingxin, Xiang Zhe, Wang Hao, etal. An Approach to Security and Privacy of RFID System for Supply Chain. Proceedings of the IEEE International Conference on ECommerce Technology for Dynamic EBusiness (CECEast'04)