用Hash鎖方法解決RFID的安全與隱私問題
引言
RFID安全問題集中在對(duì)個(gè)人用戶的隱私保護(hù)、對(duì)企業(yè)用戶的商業(yè)秘密保護(hù),防范對(duì)RFID系統(tǒng)的攻擊以及利用RFID技術(shù)進(jìn)行安全防范等多個(gè)方面。面臨的挑戰(zhàn)是:
?、?保證用戶對(duì)標(biāo)簽的擁有信息不被未經(jīng)授權(quán)訪問,以保護(hù)用戶在消費(fèi)習(xí)慣、個(gè)人行蹤等方面的隱私。
?、?避免由于RFID系統(tǒng)讀取速度快,可以迅速對(duì)超市中所有商品進(jìn)行掃描并跟蹤變化,而被利用來(lái)竊取用戶商業(yè)機(jī)密。
?、?防護(hù)對(duì)RFID系統(tǒng)的各類攻擊,如重寫標(biāo)簽以篡改物品信息;使用特制設(shè)備偽造標(biāo)簽應(yīng)答欺騙讀寫器,以制造物品存在的假相;根據(jù)RFID前后向信道的不對(duì)稱性遠(yuǎn)距離竊聽標(biāo)簽信息;通過干擾RFID工作頻率實(shí)施拒絕服務(wù)攻擊;通過發(fā)射特定電磁波破壞標(biāo)簽等。
?、?如何把RFID的唯一標(biāo)識(shí)特性用于門禁安防、支票防偽、產(chǎn)品防偽等。
為了避免RFID標(biāo)簽給客戶帶來(lái)關(guān)于個(gè)人隱私的擔(dān)憂,同時(shí)也為了防止用戶攜帶安裝有標(biāo)簽的產(chǎn)品進(jìn)入市場(chǎng)所帶來(lái)的混亂,很多商家在商品交付給客戶時(shí)都把標(biāo)簽拆掉。這種方法無(wú)疑增加了系統(tǒng)成本,降低了RFID標(biāo)簽的利用率,并且有些場(chǎng)合標(biāo)簽不可拆卸。為解決上述安全與隱私問題,人們還從技術(shù)上提出了多種方案,包括Kill標(biāo)簽、法拉第網(wǎng)罩、主動(dòng)干擾、智能標(biāo)簽、阻止標(biāo)簽和Hash鎖等方法。Hash鎖通過簡(jiǎn)單的Hash函數(shù),增加閉鎖和開鎖狀態(tài),對(duì)標(biāo)簽和讀寫器之間的通信進(jìn)行訪問;但是它無(wú)法解決位置隱私和中間人攻擊問題。本文提出一種Hash鎖改進(jìn)方法,成功解決了這個(gè)問題。
1 Hash鎖方法分析
1.1 定讀取控制Hash鎖方法
在定讀取控制Hash鎖方法中,射頻標(biāo)簽只對(duì)授權(quán)的讀寫器起作用,它代表了一種認(rèn)證過程,認(rèn)證密匙固定不變。使用該方法的射頻標(biāo)簽分別有1個(gè)只讀(ROM)和1個(gè)可讀寫(如RAM)的存儲(chǔ)器,并且每個(gè)電子標(biāo)簽只供有限的用戶使用。這些用戶都共有同一個(gè)存儲(chǔ)在讀寫存儲(chǔ)器中的識(shí)別碼。每個(gè)標(biāo)簽認(rèn)證讀寫器的過程如圖1所示。讀寫器對(duì)每一個(gè)電子標(biāo)簽都有一個(gè)認(rèn)證密匙k,每個(gè)電子標(biāo)簽都存儲(chǔ)有一Hash方程計(jì)算的結(jié)果metaID=Hash(k)。首先讀寫器向射頻標(biāo)簽發(fā)出ID訪問請(qǐng)求,標(biāo)簽向讀寫器發(fā)出相應(yīng)的metaID。讀寫器根據(jù)接收到的metaID得出密匙k并發(fā)送給標(biāo)簽。然后該標(biāo)簽把接收到的密匙k代入Hash方程,檢驗(yàn)計(jì)算得到的結(jié)果與存儲(chǔ)在標(biāo)簽中的metaID是否一致。如果一致,標(biāo)簽就把其ID發(fā)送給讀寫器。
該方案提出了一種低成本解決安全與隱私問題的方法。僅僅需要一個(gè)Hash方程和存儲(chǔ)metaID值就足夠。但是它不能防止被跟蹤,因?yàn)樯漕l標(biāo)簽的反應(yīng)能提前被預(yù)測(cè)泄露,并且隨機(jī)密匙k和標(biāo)簽ID能被敵人竊聽到。
圖1 定讀取控制Hash鎖方法
1.2 隨機(jī)讀取控制Hash鎖的方法
為了避免被跟蹤,射頻標(biāo)簽的反應(yīng)不能被預(yù)測(cè)到而是隨機(jī)的。主要有兩種隨機(jī)讀取控制Hash鎖的方法。MIT AutoID中心提出了一種隨機(jī)Hash方案。讀寫器向射頻標(biāo)簽發(fā)出ID訪問請(qǐng)求,標(biāo)簽向讀寫器發(fā)出的不是固定的metaID,而是變化的。如圖2所示,每個(gè)標(biāo)簽與讀寫器共享一個(gè)認(rèn)證密匙IDk。當(dāng)讀寫器向射頻標(biāo)簽發(fā)出ID訪問請(qǐng)求時(shí),射頻標(biāo)簽產(chǎn)生一個(gè)偽隨機(jī)數(shù)字R和輸出(R,h(IDk‖R)),其中h(IDk‖R)是輸入R和認(rèn)證密匙IDk的Hash方程。然后讀寫器獲得所有射頻標(biāo)簽的認(rèn)證密匙。讀寫器根據(jù)接收的R和存儲(chǔ)在后臺(tái)數(shù)據(jù)庫(kù)中所有密匙的ID計(jì)算Hash方程。如果Hash方程值與射頻標(biāo)簽發(fā)送的Hash方程值匹配,讀寫器識(shí)別出該射頻標(biāo)簽的密匙IDk并發(fā)送給射頻標(biāo)簽。因?yàn)槊看卧L問時(shí),射頻標(biāo)簽的輸出改變了。該方法避免了被跟蹤的缺點(diǎn);但是該方法不適合少量射頻標(biāo)簽的用戶。因?yàn)楸皇跈?quán)的讀寫器識(shí)別一個(gè)射頻標(biāo)簽,就需要搜索和計(jì)算所有標(biāo)簽的ID,因此該方法不適合大量射頻標(biāo)簽。
圖2 隨機(jī)讀取控制Hash鎖方法
NTT提出了一種Hash鏈方法。在第i次與讀寫器交換時(shí),射頻標(biāo)簽有其初始值Si,發(fā)送ai=G(Si)給讀寫器,再根據(jù)以前的Si更新密匙Si+1=H(Si)。其中G和H都是Hash函數(shù),如圖3所示。
圖3 射頻標(biāo)簽發(fā)送ai=G(Si)并更新密匙Si+1=H(Si)
讀寫器把a(bǔ)i傳給后臺(tái)數(shù)據(jù)庫(kù),后臺(tái)數(shù)據(jù)庫(kù)維持一對(duì)列表(ID;Si)。其中Si是初始密匙值,對(duì)每一個(gè)標(biāo)簽,其值是不同的。后臺(tái)數(shù)據(jù)庫(kù)從讀寫器處接收標(biāo)簽,輸出ai,并且對(duì)列表中的每個(gè)Si計(jì)算a0i=G(Hj(Si)),檢查是否ai=a0i。如果ai與a0i匹配,ID就從一對(duì)a0i中識(shí)別出來(lái)了。該方法滿足了不可分辨和向前的安全特性。G是單向方程,因此敵人能獲得標(biāo)簽輸出ai,但是不能從ai獲得Si。G輸出隨機(jī)值,敵人能觀測(cè)到標(biāo)簽輸出,但不能把a(bǔ)i和ai+1聯(lián)系起來(lái)。H也是單向方程,敵人能篡改標(biāo)簽并獲得標(biāo)簽的密匙值,但不能從Si+1獲得Si。該算法優(yōu)勢(shì)很明顯,但是有太多的計(jì)算和比較。為了識(shí)別一個(gè)ID,后臺(tái)服務(wù)器不得不計(jì)算ID列表中的每1個(gè)ID。假設(shè)有N個(gè)已知的標(biāo)簽ID在數(shù)據(jù)庫(kù)中,數(shù)據(jù)庫(kù)不得不進(jìn)行N次ID搜索,2N次Hash方程計(jì)算和N次比較。計(jì)算機(jī)處理負(fù)載隨著ID列表長(zhǎng)度成線性增加,因此,該方法也不適合大量射頻標(biāo)簽的情況。
2 隨機(jī)讀取控制Hash鎖方法的改進(jìn)
為了避免定讀取控制Hash鎖方法中的人為攻擊和惡意跟蹤的缺陷,并克服隨機(jī)讀取控制Hash鎖方法中計(jì)算負(fù)載過大的不足,在隨機(jī)讀取控制Hash鎖的基礎(chǔ)上,提出了一種改進(jìn)方法。
2.1 必需的RFID系統(tǒng)各部分結(jié)構(gòu)
?。?) 射頻標(biāo)簽
射頻標(biāo)簽由兩部分構(gòu)成:一部分是只讀存儲(chǔ)器(ROM)和隨機(jī)讀取存儲(chǔ)器(RAM),ROM存儲(chǔ)的是標(biāo)簽ID的Hash值,RAM存儲(chǔ)的是被鑒別的讀寫器的ID;另一部分是邏輯電路,主要用于一些簡(jiǎn)單的計(jì)算,如計(jì)算Hash方程或產(chǎn)生簡(jiǎn)單的偽隨機(jī)數(shù)。
(2) 讀寫器
讀寫器與射頻標(biāo)簽無(wú)線通信,每一個(gè)讀寫器都有ReaderID,用來(lái)識(shí)別一批被鑒別的讀寫器。例如,在超市里的所有讀寫器都有一樣的ReaderID,表明它們都來(lái)源于該超市。當(dāng)讀寫器向射頻標(biāo)簽發(fā)出訪問請(qǐng)求時(shí),標(biāo)簽通過讀寫器的ReaderID檢驗(yàn)讀寫器。讀寫器同時(shí)與后臺(tái)數(shù)據(jù)庫(kù)連接并通信,以識(shí)別標(biāo)簽并運(yùn)行相關(guān)的應(yīng)用。
?。?) 數(shù)據(jù)庫(kù)
后臺(tái)數(shù)據(jù)庫(kù)存儲(chǔ)了一對(duì)對(duì)射頻標(biāo)簽ID和它的Hash方程值:[TagID,hash(TagID)]。一般地,后臺(tái)數(shù)據(jù)庫(kù)與讀寫器通過有線和安全通道相連接。
2.2 工作原理
讀寫器要查詢射頻標(biāo)簽ID,必須首先確定該讀寫器是否被認(rèn)證。若讀寫器被認(rèn)證,標(biāo)簽則響應(yīng)讀寫器并讓讀寫器獲得其ID。
?。?) 讀寫器認(rèn)證
在響應(yīng)讀寫器并讓讀寫器獲得標(biāo)簽ID信息前,讀寫器和標(biāo)簽確定了認(rèn)證體制。因?yàn)樽x寫器的ReaderID提前存儲(chǔ)在標(biāo)簽的RAM中,所以標(biāo)簽通過讀寫器ID識(shí)別出有權(quán)限的讀寫器。標(biāo)簽不響應(yīng)沒有權(quán)限的讀寫器,因此,不可能被敵人跟蹤(因?yàn)樽x寫器都有權(quán)限)。另外,這種權(quán)限化過程是基于標(biāo)簽產(chǎn)生的隨機(jī)數(shù),因此,還可以防止敵人的哄騙。
認(rèn)證過程如圖4所示。當(dāng)射頻標(biāo)簽接收到讀寫器的請(qǐng)求時(shí),首先射頻標(biāo)簽產(chǎn)生隨機(jī)數(shù)k并發(fā)送給讀寫器,讀寫器接收后傳給后臺(tái)數(shù)據(jù)庫(kù),后臺(tái)數(shù)據(jù)庫(kù)計(jì)算a(k)=Hash (ReaderID‖k)并把a(bǔ)(k)傳回給讀寫器,然后讀寫器把a(bǔ)(k)發(fā)送給標(biāo)簽。同時(shí)射頻標(biāo)簽計(jì)算Hash(ReaderID‖k),然后標(biāo)簽比較讀寫器與標(biāo)簽計(jì)算的a(k)值是否相等。如相等,讀寫器通過了認(rèn)證并且標(biāo)簽向它發(fā)送一些與TagID相關(guān)的信息;若不等,該讀寫器沒有通過認(rèn)證被屏蔽。
圖4讀寫器認(rèn)證過程
?。?) 獲得標(biāo)簽的TagID
如圖5所示,在讀寫器認(rèn)證后,射頻標(biāo)簽響應(yīng)認(rèn)證的讀寫器Hash(TagID)。當(dāng)讀寫器接收到Hash(TagID)值時(shí),它會(huì)與后臺(tái)數(shù)據(jù)庫(kù)通信并尋找數(shù)據(jù)對(duì)(TagID,Hash(TagID)),讀寫器就會(huì)獲得相應(yīng)的TagID。即使Hash(TagID)值被竊聽了,當(dāng)標(biāo)簽向外發(fā)送其值時(shí),竊聽者也不會(huì)知道Hash的值。因?yàn)楦`聽者無(wú)法確定TagID與Hash(TagID)之間的相互關(guān)系。
圖5獲取射頻標(biāo)簽的TagID
(3) 在射頻標(biāo)簽存儲(chǔ)器里更新認(rèn)證讀寫器的ReaderID
當(dāng)一個(gè)物體從一個(gè)倉(cāng)庫(kù)運(yùn)到另一個(gè)倉(cāng)庫(kù)時(shí),被認(rèn)證的讀寫器將從先前倉(cāng)庫(kù)的讀寫器改變?yōu)楫?dāng)前的讀寫器。這個(gè)過程如圖6所示。讀寫器獲得Hash(TagID)的值并傳給后臺(tái)數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)通知存儲(chǔ)在標(biāo)簽里的ReaderID更新。相應(yīng)地,數(shù)據(jù)庫(kù)尋找出New ReaderID并把它傳給讀寫器。當(dāng)讀寫器接收到New ReaderID時(shí),讀寫器把該值與Old ReaderID“異或”,并把“異或”值發(fā)送給射頻標(biāo)簽。標(biāo)簽?zāi)軌驈摹爱惢颉敝岛蚈ld ReaderID中得出New ReaderID,最后ReaderID被更新。
在ReaderID更新過程中,即使“異或”值被泄露,敵人也不能獲取New ReaderID。因?yàn)椴荒塬@取Old ReaderID,因此防止了哄騙。
2.3 改進(jìn)方法分析
?。?) 防止竊聽
在認(rèn)證過程中,即使敵人竊聽到讀寫器的輸出a(k),也不能在下一步獲得認(rèn)證。因?yàn)槊恳徽J(rèn)證過程中需要的a(k)值是變化的。前一次認(rèn)證的a(k)值對(duì)于后一次認(rèn)證來(lái)說是無(wú)意義的。
認(rèn)證完后,射頻標(biāo)簽輸出Hash(TagID)而不是TagID。因?yàn)镠ash方程很難求其反函數(shù),所以敵人捕獲到輸出Hash(TagID)值,也不能得到TagID的值。
當(dāng)射頻標(biāo)簽要更新存儲(chǔ)器的ReaderID時(shí),所更新的ReaderID是經(jīng)過舊的ReaderID加密過的,也防止了竊聽。
總之,上述改進(jìn)方法即使在讀寫器和射頻標(biāo)簽之間的通信遭遇到敵人的竊聽時(shí),也是安全的。
?。?) 防止跟蹤
射頻標(biāo)簽對(duì)敵人是屏蔽的,只對(duì)被認(rèn)證的讀寫器響應(yīng)。而且,如上所述,敵人是無(wú)法偽造認(rèn)證讀寫器的。因?yàn)闆]有標(biāo)簽輸出,所以敵人不能通過跟蹤標(biāo)簽來(lái)跟蹤客戶剛付費(fèi)買的是什么。位置隱私及客人攜帶的物品得到了保護(hù)。
?。?) 低計(jì)算負(fù)載
該改進(jìn)方法運(yùn)算速度快,成本低。當(dāng)要從N個(gè)已知的射頻標(biāo)簽中識(shí)別出一個(gè)時(shí),讀寫器只需要執(zhí)行1次Hash操作和N次ID搜索,而隨機(jī)讀取控制Hash鎖方法至少需要N次Hash操作和N次ID搜索。顯然在同一安全級(jí)上,所提出的改進(jìn)方法計(jì)算負(fù)載顯著降低;而且認(rèn)證過程是依賴于N個(gè)已知的標(biāo)簽ID和1個(gè)Hash鎖方程,因此隨著標(biāo)簽的數(shù)量增多,計(jì)算負(fù)載緩慢增大。
?。?) 適用于大量射頻標(biāo)簽
因?yàn)橛?jì)算負(fù)載低,并且隨著射頻標(biāo)簽的數(shù)量增加而緩慢增加,所以該方法非常適合有大量標(biāo)簽存在的被保護(hù)的RFID系統(tǒng)。
圖6在射頻標(biāo)簽存儲(chǔ)器里更新認(rèn)證讀寫器的ReaderID
3 結(jié)論
以上提出的一種Hash鎖改進(jìn)方法,特別適合于物流管理。該方法需要必要的硬件,如可改寫的存儲(chǔ)器和簡(jiǎn)單的邏輯電路。該方法具有高安全性、小負(fù)載等優(yōu)點(diǎn),適用于大量標(biāo)簽應(yīng)用的場(chǎng)合;解決了位置隱私和中間人攻擊問題,即使敵人竊取了標(biāo)簽的輸出,也不能獲取標(biāo)簽的ID。
參考文獻(xiàn)
1 (德)Klaus Finkenzeller.射頻識(shí)別(RFID)技術(shù)——無(wú)線電感應(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)