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