Key值更新隨機Hash鎖對RFID安全隱私的加強
RFID是20世紀(jì)90年代興起的一項非接觸式的自動識別技術(shù),其無線通信方式和無可視性讀寫的要求,給我們帶來了極大方便,也帶來了很多安全隱私問題。針對RFID 的安全隱私問題, 目前國內(nèi)外開展了很多加強RFID安全隱私保護的研究,并提出了一系列的方法,如Hash鎖、隨機Hash鎖和Hash鏈,但這些方法存在安全性不高或效率低等缺陷。本文針對現(xiàn)有方法的不足,進(jìn)一步對RFID的安全隱私保護展開研究。
1 RFID技術(shù)及其安全隱私分析
RFID系統(tǒng)主要由閱讀器、標(biāo)簽及后端數(shù)據(jù)庫組成,如圖1所示。
目前RFID技術(shù)已經(jīng)吸引了工業(yè)和學(xué)術(shù)界越來越多的關(guān)注,并已廣泛地應(yīng)用于供應(yīng)鏈管理、門禁控制、電子錢包[1]等各種場合。然而RFID技術(shù)屬于非接觸式自動識別技術(shù),其面臨的安全隱私威脅主要有:
(1)非法讀取。商業(yè)競爭者可通過未授權(quán)的閱讀器快速讀取超市的商品標(biāo)簽數(shù)據(jù),獲取重要的商業(yè)信息;
(2)位置跟蹤。通過RFID標(biāo)簽掃描,依據(jù)標(biāo)簽的特定輸出可對消費者位置進(jìn)行跟蹤定位;
(3)竊聽。因RFID系統(tǒng)在前向信道的信號傳輸距離
較遠(yuǎn),竊聽者可輕易竊取閱讀器發(fā)出的信號數(shù)據(jù);
(4)拒絕服務(wù)。人為的信號干擾使得合法閱讀器不能正常閱讀標(biāo)簽數(shù)據(jù);
(5)偽裝哄騙。通過偽裝成合法標(biāo)簽,哄騙閱讀器為其提供錯誤的數(shù)據(jù);
(6)重放。根據(jù)竊聽到的閱讀器和標(biāo)簽問的數(shù)據(jù)通信,重復(fù)之前的通信行為從而獲取數(shù)據(jù)信息。
2 RFID安全隱私保護
RFID的安全隱私問題阻礙了RFID技術(shù)的進(jìn)一步推廣,引起了消費者的高度關(guān)注,加強對RFID 的安全隱私保護有著極其重要的意義。
2.1前提與要求
假定閱讀器與后臺數(shù)據(jù)庫的通信是在一條安全可靠的有連接信道上進(jìn)行,但閱讀器與標(biāo)簽之間的無線通信易被竊聽。要普及RFID技術(shù),必須保證RFID標(biāo)簽的低成本實現(xiàn)。
由于標(biāo)準(zhǔn)的安全機制要求的計算比較復(fù)雜,如SHA一1約需12K個門,這在低成本標(biāo)簽上無法實現(xiàn),因此可采用低成本的單向Hash函數(shù)進(jìn)行加密[2]。
安全的RFID 系統(tǒng)應(yīng)能抵御各種攻擊,且考慮到較壞的情況,即使外人獲得了標(biāo)簽內(nèi)部的秘密數(shù)據(jù),也應(yīng)保證其無法追蹤到跟標(biāo)簽有關(guān)的歷史活動信息,即保證前向安全性。
2,2典型方法
典型的加強RFID安全隱私保護的訪問控制方法主要有Hash鎖、隨機Hash鎖和Hash鏈,它們都是基于單向Hash函數(shù)實現(xiàn)的。
2.2.1 Hash鎖(Hash Lock)[2]
采用Hash鎖方法控制標(biāo)簽的讀取訪問,其工作機制如下:
鎖定標(biāo)簽:對于唯一標(biāo)志號為ID的標(biāo)簽,首先閱讀器隨機產(chǎn)生該標(biāo)簽的Key,計算metaID=Hash(Key),將metaID發(fā)送給標(biāo)簽;標(biāo)簽將metaID存儲下來,進(jìn)入鎖定狀態(tài)。閱讀器將(metaID,Key,ID)存儲到后臺數(shù)據(jù)庫中,并以metaID 為索引。
解鎖標(biāo)簽:閱讀器詢問標(biāo)簽時,標(biāo)簽回答metaID;閱讀器查詢后臺數(shù)據(jù)庫,找到對應(yīng)的(metaID,Key,ID)記錄,然后將該Key值發(fā)送給標(biāo)簽;標(biāo)簽收到Key值后,計算Hash(Key)值,并與自身存儲的metaID值比較,若Hash(Key)=metaID,標(biāo)簽將其ID發(fā)送給閱讀器,這時標(biāo)簽進(jìn)入已解鎖狀態(tài),并為附近的閱讀器開放所有的功能,如圖2所示。
方法的優(yōu)點:解密單向Hash函數(shù)是較困難的,因此該方法可以阻止未授權(quán)的閱讀器讀取標(biāo)簽信息數(shù)據(jù),在一定程度上為標(biāo)簽提供隱私保護;該方法只需在標(biāo)簽上實現(xiàn)一個Hash函數(shù)的計算,以及增加存儲metaID值,因此在低成本的標(biāo)簽上容易實現(xiàn)。
方法的缺陷:由于每次詢問時標(biāo)簽回答的數(shù)據(jù)是特定的,因此其不能防止位置跟蹤攻擊;閱讀器和標(biāo)簽問傳輸?shù)臄?shù)據(jù)未經(jīng)加密,竊聽者可以輕易地獲得標(biāo)簽Key和ID值。
2.2.2隨機Hash鎖(Random Hash Lock)
為了解決Hash鎖中位置跟蹤的問題,將Hash鎖方法加以改進(jìn),采用隨機Hash鎖方法。首先介紹字符串連接符號“ ,如標(biāo)簽ID和隨機數(shù)R的連接即表示為“IDIIR”。該方法中數(shù)據(jù)庫存儲各個標(biāo)簽的ID值,設(shè)為IDl、ID2⋯IDk⋯ID 。
鎖定標(biāo)簽:通過向未鎖定的標(biāo)簽發(fā)送簡單的鎖定指令,即可鎖定該標(biāo)簽。
解鎖標(biāo)簽:閱讀器向標(biāo)簽ID發(fā)出詢問,標(biāo)簽產(chǎn)生一隨機數(shù)R,計算Hash(IDIIR),并將(R,Hash(IDIIR))數(shù)據(jù)對傳送給閱讀器;閱讀器收到數(shù)據(jù)對后,從后臺數(shù)據(jù)庫中取到所有的標(biāo)簽ID值,分別計算各個Hash(IDIIR)值,并與收到的Hash(IDIIR)比較,若Hash(IDk『JR)=Hash(ID『JR),則向標(biāo)簽發(fā)送IDk;若標(biāo)簽接收到的IDk=ID,此時標(biāo)簽即被解鎖,如圖3所示。
在該方法中,標(biāo)簽每次回答是隨機的,因此可以防止依據(jù)特定輸出而進(jìn)行的位置跟蹤攻擊。但是,該方法也有一定的缺陷:(1)閱讀器需要搜索所有標(biāo)簽ID,并為每一個標(biāo)簽計算Hash(IDkIIR),因此標(biāo)簽數(shù)目很多時,系統(tǒng)延時會很長,效率并不高;(2)隨機Hash鎖不具備前向安全性,若敵人獲得了標(biāo)簽ID值,則可根據(jù)R值計算出Hash(IDIIR)值,因此可追蹤到標(biāo)簽歷史位置信息。
2.2.3 Hash鏈(Hash Chain)[4]
NTT實驗室提出了一個Hash鏈方法,其保證了前向安全性,工作機制如下:鎖定標(biāo)簽:對于標(biāo)簽ID,閱讀器隨機選取一個數(shù)Sl發(fā)送給標(biāo)簽,并將(ID,S )存儲到后臺數(shù)據(jù)庫中,標(biāo)簽存儲接收
到Sl后,進(jìn)入鎖定狀態(tài)。
解鎖標(biāo)簽:在第i次事務(wù)交換中,閱讀器向標(biāo)簽發(fā)出詢問消息,標(biāo)簽回答ai=G(S。),并更新Si+l=H(s。),其中G和H為單向Hash函數(shù),如圖4所示。
閱讀器接收到ai后,搜索數(shù)據(jù)庫中所有的(ID,S1)數(shù)據(jù)對,并為每個標(biāo)簽計算
ai =G(H (s1)),比較ai*是否等于ai,若相等,則返回相應(yīng)ID。
方法優(yōu)點:具有不可分辨性,因為G是單向Hash函數(shù),外人獲得a。值不能推算出S。值,當(dāng)外人觀察標(biāo)簽輸出時,G輸出的是隨機數(shù),所以不能將a。和a。+l聯(lián)系起來;具有前向安全性,因為H是單向Hash函數(shù),即使竊取了Si+1值,也無法推算出S 值,所以無法獲得標(biāo)簽歷史活動信息。
方法缺點:需要為每一個標(biāo)簽計算ai*:G(H (s1)),假設(shè)數(shù)據(jù)庫中存儲的標(biāo)簽個數(shù)為N,則需進(jìn)行N個記錄搜索,2N個Hash函數(shù)計算,N次比較,計算和比較量較大,不適合標(biāo)簽數(shù)目較多的情況。
3 Key值更新隨機Hash鎖
鑒于上述幾種安全隱私保護方法存在的缺陷,并結(jié)合幾種方法的思想,本文提出了一種“Key值更新隨機Hash鎖”方法,實現(xiàn)了安全高效的讀取訪問控制。
3.1工作原理
數(shù)據(jù)庫記錄主要包括4列:H(Key),ID,Key,Pointer,主鍵為H(Key)。其中ID為標(biāo)簽唯一標(biāo)志號,Key是閱讀器為每個標(biāo)簽選取的隨機關(guān)鍵字,H(Key)是Key的單向Hash函數(shù)H計算值,Pointer是數(shù)據(jù)記錄關(guān)聯(lián)指針,主要用來保證數(shù)據(jù)的一致性[5]。
下面詳細(xì)闡述該方法的基本工作原理:
(1)鎖定標(biāo)簽
對于標(biāo)簽ID,首先閱讀器隨機選取一個數(shù)作為該標(biāo)簽的Key,將Key值發(fā)送給該標(biāo)簽,并建立標(biāo)簽在數(shù)據(jù)庫中的初始記錄(H(Key),ID,Key,0)),標(biāo)簽將接收到的Key值存儲下來后,進(jìn)入鎖定狀態(tài)。
(2)解鎖標(biāo)簽
1)數(shù)據(jù)庫首先產(chǎn)生一個隨機數(shù)R,傳送給閱讀器,然后閱讀器將詢問消息Query和R都發(fā)送給標(biāo)簽;
2)標(biāo)簽根據(jù)接收到的R和自身Key值,計算H(Key)和H(KeylIR)的值,然后將(H(Key),H(KeylIR))數(shù)據(jù)對發(fā)送給閱讀器,接著自行計算H(IDIIR)和Key =S(key),但此時Key值并不更新。
3)閱讀器查找數(shù)據(jù)庫中的記錄, 若找到記錄i:
(H(Keyi),IDk,Key。,Pointeri),其中H(Key。):H(Key),則數(shù)據(jù)庫計算H(KeyjIIR),并比較H(Key ItR)與接收到的H(KeyIIR)值是否相等。若不相等,則忽略此消息,表明標(biāo)簽是非法標(biāo)簽,在此閱讀器完成對標(biāo)簽的合法性驗證;若相等則繼續(xù)下一步;
4)數(shù)據(jù)庫計算H(IDkIIR)的值,并將IDk和H(IDkIIR)的值都傳送給閱讀器。然后閱讀器將H(IDkIIR)發(fā)送給標(biāo)簽;
5)數(shù)據(jù)庫計算Key*i=S(key。)和H(Key* )的值。若Pointeri:O, 則在數(shù)據(jù)庫中添加新的記錄J:(H(Key*i),IDbKey i,i),并將記錄i修改成(H(Key。),IDbKeyij); 若Pointer !=O, 則找到第Pointer。條記錄, 將其修改成(H(Key i),IDk,Key i,i);
6)在標(biāo)簽接收到H(IDkIIR)后,比較其與標(biāo)簽在第2步中計算的H(IDIIR)是否相等,若相等,則將自身的Key值更新為Key ,標(biāo)簽進(jìn)入解鎖狀態(tài),對閱讀器開放其所有功能;若不相等,表明閱讀器是非法閱讀器,標(biāo)簽保持沉默,在此標(biāo)簽完成對閱讀器的驗證。如圖5所示。
3.2數(shù)值實驗
設(shè)數(shù)據(jù)庫初始時存儲了兩個標(biāo)簽,ID分別為1、2,隨機選擇的Key分別為5、12,數(shù)據(jù)庫初始化如表1所示。
設(shè)閱讀器要詢問ID為1的標(biāo)簽,首先閱讀器向標(biāo)簽發(fā)送詢問消息和隨機數(shù)3,標(biāo)簽向閱讀器回答數(shù)據(jù)(H(5),H(5II3)),接著自行計算自身的H(IDIIR)=H(1Il3)值和Key =s(5);閱讀器根據(jù)H(5)查找后臺數(shù)據(jù)庫,找到記錄1:(H(5),1,5,0),數(shù)據(jù)庫計算H(KeyllR)=H(5lI3),與接收到的H(5113)相等,至此驗證了標(biāo)簽是合法的;接著數(shù)據(jù)庫計算H(IDIIR)=H(1 113),并將(1,H(1113))傳送給閱讀器,由此閱讀器知道了該標(biāo)簽的ID為1,然后閱讀器將H(1113)發(fā)送給標(biāo)簽; 數(shù)據(jù)庫計算Key*I=s(5), 由于PointerI=0,數(shù)據(jù)庫中新建一條記錄3:(H(s(5)),1,s(5),1),并將記錄1修改為(H(5),1,5,3)。標(biāo)簽接收到數(shù)據(jù)H(1 113)后,比較發(fā)現(xiàn)其等于之前計算的H(IDIIR),于是將自身Key值更新為s(5)。此時數(shù)據(jù)庫中的數(shù)據(jù)記錄如表2所示。
下一次再與標(biāo)簽1通信時,數(shù)據(jù)庫根據(jù)標(biāo)簽的H(Key)=H(s(5))查找到第3條記錄,該記錄的Pointer為1,則第2次更新Key值的記錄將會覆蓋第1條記錄。
當(dāng)標(biāo)簽被詢問過一次之后,數(shù)據(jù)庫中始終保持了兩條與該標(biāo)簽有關(guān)的數(shù)據(jù)記錄,這主要
是為了保證數(shù)據(jù)的一致性。假設(shè)在這次通信中閱讀器發(fā)送的數(shù)據(jù)H(ll3)并未成功地被標(biāo)簽接收到,則標(biāo)簽1的Key值將不會更新,此時數(shù)據(jù)庫的第3條記錄是錯誤的。那么在下次與標(biāo)簽1的通信中,查找到的仍是記錄1,數(shù)據(jù)庫根據(jù)記錄1的Pointer值為3,將修改第3條記錄,如此就保證了數(shù)據(jù)的一致性。
3.3性能分析與方法特點
(1)簡單實用。將隨機數(shù)產(chǎn)生器等復(fù)雜的計算移到了后臺數(shù)據(jù)庫中實現(xiàn),降低了標(biāo)簽的復(fù)雜性,標(biāo)簽只需要實現(xiàn)兩個Hash函數(shù)H和s,這在低成本的標(biāo)簽上較易實現(xiàn)。
(2)前向安全。因為標(biāo)簽的Key值在每次事務(wù)交換后被單向Hash函數(shù)s更新,外人即使獲取了當(dāng)前標(biāo)簽Key*值,也無法推算出之前的Key值,所以無法獲得標(biāo)簽相關(guān)的歷史活動信息。
(3)機器運算負(fù)載小,效率高。在每次詢問過程中,設(shè)數(shù)據(jù)庫中存儲的標(biāo)簽個數(shù)為N,本方法中后臺數(shù)據(jù)庫需執(zhí)行2N個記錄搜索(因每個標(biāo)簽存在兩條記錄),進(jìn)行3個Hash函數(shù)H(KeylIR)、S(Key)、H(IDIIR)計算和1次值比較,以及產(chǎn)生1個隨機數(shù)R。相比于Hash鏈方法需計算2N個Hash函數(shù)、N個記錄搜索和N個值比較,因為Hash函數(shù)的計算時延較長,資源消耗大,所以當(dāng)N很大時,本方法系統(tǒng)的負(fù)載將要小得多,速度較快,延時較短,效率較高,但安全性更高。
(4)適應(yīng)標(biāo)簽數(shù)目較多的情況。隨著標(biāo)簽數(shù)目的增加,計算機搜索與計算所需要的時間緩慢增加,可適應(yīng)標(biāo)簽數(shù)目較多的情況。
(5)實現(xiàn)了身份的雙向驗證。通過Hash(KeyllR)的計算比較,閱讀器實現(xiàn)了對標(biāo)簽的驗證;通過Hash(IDIIR)的計算比較,標(biāo)簽實現(xiàn)了對閱讀器的驗證。
(6)有效實現(xiàn)安全隱私保護。
1)防非法讀?。褐挥薪?jīng)過合法認(rèn)證的閱讀器才可讀取標(biāo)簽的數(shù)據(jù)信息;
2)防位置跟蹤:由于隨機數(shù)R和標(biāo)簽的Key值是更新變化的,因此每次回答的數(shù)據(jù)(H(Key),H(KeylIR))值也是不同的,可以防止外人根據(jù)特定輸出而進(jìn)行的跟蹤定位;3)防竊聽:傳輸?shù)腎D值和Key都經(jīng)過了Hash函數(shù)加密,外人很難解密得出ID和Key的值,因此有效地防止了竊聽;
4)防偽裝哄騙:由于外人無法獲知Key值,因此無法模擬合法標(biāo)簽發(fā)送(H(Key),H(KeylIR))數(shù)據(jù),故有效地防止了偽裝哄騙攻擊;
5)防重放:每次產(chǎn)生的R值是隨機的,外人即使竊聽了合法閱讀器前一次發(fā)送的H(ID IIR)數(shù)據(jù),也無法再次模擬出H(ID IIR)值,有效地防止了重放攻擊。
4結(jié)束語
“Key值更新隨機Hash鎖”方法具有成本低、負(fù)載小、效率高、安全性好等特點,且能保證前向安全性,基本上彌補了目前安全保護方法安全性不夠和效率低等缺陷,是一種較為實用的算法。但此方法還存在一些不足,如尚無法防止敵人根據(jù)流量分析(計算標(biāo)簽的個數(shù))而進(jìn)行的定位跟蹤,同時安全性提高也增加了標(biāo)簽部分計算時延,這些尚需進(jìn)一步研究改進(jìn)。
評論