一種雙層/雙向認(rèn)證的隨機(jī)Hash鎖RFID安全協(xié)議
無(wú)線射頻識(shí)別技術(shù)RFID(Radio Frequency Identification)或稱電子標(biāo)簽技術(shù)是一種利用射頻通信實(shí)現(xiàn)的非接觸式雙向通信技術(shù),以達(dá)到自動(dòng)識(shí)別目標(biāo)對(duì)象并獲取相關(guān)數(shù)據(jù)的目的,具有精度高、適應(yīng)環(huán)境能力強(qiáng)、抗干擾性強(qiáng)、操作快捷等許多優(yōu)點(diǎn)。它已經(jīng)逐漸應(yīng)用于物流、防偽、門禁、電子錢包、高速公路收費(fèi)等領(lǐng)域。RFID 系統(tǒng)一般由RFID標(biāo)簽(Tag)、RFID 標(biāo)簽讀寫器以及RFID應(yīng)用數(shù)據(jù)庫(kù)(DB)三大部分構(gòu)成,如圖1所示。其中,RFID標(biāo)簽與讀寫器之間是射頻無(wú)線通信,而讀寫器與應(yīng)用數(shù)據(jù)庫(kù)之間則是通過互聯(lián)網(wǎng)進(jìn)行的有線(也可以是無(wú)線)通信。
RFID系統(tǒng)要想得到普遍應(yīng)用,特別是在有嚴(yán)格安全要求的防偽領(lǐng)域得到廣泛應(yīng)用,還需要解決RFID的低成本與安全性這一對(duì)矛盾。當(dāng)前RFID的安全機(jī)制主要有物理機(jī)制與密碼機(jī)制兩大類。由于物理安全機(jī)制受到成本或法律因素等極大制約,使密碼安全機(jī)制越來(lái)越受到人們的青睞。在通用安全應(yīng)用中,具有比較成熟和先進(jìn)的加解密算法如DES、 AES、RSA、橢圓曲線密碼等算法,可以較好地抵制非法讀取、位置跟蹤、拒絕服務(wù)、偽裝哄騙、重放攻擊等安全威脅,具有較好的安全可靠性。但實(shí)現(xiàn)AES等算法需要大約20 000個(gè)~30 000個(gè)邏輯門,實(shí)現(xiàn)RSA、橢圓曲線密碼等公鑰密碼算法則需要更多的邏輯門。而電子標(biāo)簽受到低成本(約為0.05美元)限制,通常只能擁有大約5 000個(gè)~10 000個(gè)邏輯門,而且這些邏輯門主要用于實(shí)現(xiàn)一些最基本的標(biāo)簽功能,僅剩少許可用于實(shí)現(xiàn)安全功能。因此,RFID 安全性的難點(diǎn)在于,RFID標(biāo)簽的有限計(jì)算資源難以實(shí)現(xiàn)復(fù)雜的加解密算法。目前關(guān)于RFID的密碼安全方案主要有:(1)基于Hash函數(shù)的Hash-lock協(xié)議[1-2]、隨機(jī)化Hash-lock協(xié)議[3]、Hash鏈協(xié)議[4]、ID變化協(xié)議、數(shù)字圖書館RFID協(xié)議、分布式RFID協(xié)議、LCAP協(xié)議[5];(2)基于TEA算法的的TEA協(xié)議[6]、XXTEA協(xié)議;(3)基于公鑰的再加密方案[5]。其中,基于Hash函數(shù)的方案因其實(shí)現(xiàn)電路簡(jiǎn)單尤其成為研究的熱點(diǎn)。參考文獻(xiàn)[5]對(duì)基于Hash函數(shù)的各類算法比較分析后認(rèn)為:它們或者不能滿足較高的安全要求,或者不能滿足低成本的實(shí)用性要求。參考文獻(xiàn)[7]提出了一種輕量級(jí)RFID安全協(xié)議,并進(jìn)行了改進(jìn)。參考文獻(xiàn)[8]提出了一種Key值更新的隨機(jī)Hash鎖協(xié)議,對(duì)隨機(jī)Hash鎖協(xié)議進(jìn)行了改進(jìn)。參考文獻(xiàn)[9]、[10]也都基于Hash鎖協(xié)議提出了一些新的改進(jìn)。
本文在分析幾種隨機(jī)Hash鎖協(xié)議的基礎(chǔ)上提出了一種將雙重認(rèn)證與雙向認(rèn)證相結(jié)合的隨機(jī)Hash鎖的RFID安全協(xié)議,將原始ID經(jīng)加密后寫入標(biāo)簽中,原始ID的加解密都只在后臺(tái)服務(wù)器中完成,而在RFID標(biāo)簽和閱讀器中出現(xiàn)的ID(稱為認(rèn)證ID),都是經(jīng)過加密后的數(shù)據(jù),即使出現(xiàn)了安全攻擊,也不會(huì)獲得真正的ID,杜絕了產(chǎn)品被假冒的可能。
1 Hash鎖相關(guān)協(xié)議分析
在分析RFID系統(tǒng)的安全性時(shí),通常作如下假定:
(1)標(biāo)簽與讀寫器之間的通信信道是不安全的,而標(biāo)簽讀寫器與后端數(shù)據(jù)庫(kù)之間的通信信道則是安全的。
(2)協(xié)議所使用的密碼構(gòu)造,如偽隨機(jī)生成函數(shù)、加密體制、簽名算法、MAC 機(jī)制以及哈希函數(shù)等,都是安全的。
Hash鎖相關(guān)協(xié)議均采用Hash函數(shù)作為電子標(biāo)簽的訪問鎖,只有通過認(rèn)證的閱讀器才能取得對(duì)標(biāo)簽有效數(shù)據(jù)進(jìn)行訪問(解鎖),否則標(biāo)簽處于鎖定狀態(tài)。使用的Hash函數(shù)H應(yīng)滿足如下要求[10]:
(1)對(duì)于任意長(zhǎng)度的消息M,H返回固定長(zhǎng)度 m 的函數(shù)值h=H(M)。
(2)在資源有限的RFID芯片上,對(duì)給定的M很容易計(jì)算出h。
(3)即使知道H的算法的情況下,從給定的h很難還原出M。
(4)即使知道 H的算法的情況下,對(duì)于特定的M,很難找到另一個(gè)M′,使得H(M)=H(M′)。
1.1 Hash鎖協(xié)議
Hash鎖協(xié)議的主要內(nèi)容如下:
(1)鎖定標(biāo)簽:讀寫器生成一個(gè)隨機(jī)密鑰Key,讀寫器將真實(shí)ID、Key一起寫入標(biāo)簽后,標(biāo)簽進(jìn)入鎖定狀態(tài)。同時(shí)讀寫器計(jì)算meataID=H(Key),并將metaID、Key、ID寫入后臺(tái)數(shù)據(jù)庫(kù)中;
(2)認(rèn)證解鎖:讀寫器在需要讀寫標(biāo)簽中的信息時(shí),先發(fā)送訪問請(qǐng)求,標(biāo)簽計(jì)算meatID=H(Key),然后將metaID經(jīng)讀寫器返回至數(shù)據(jù)庫(kù),并查找與metaID相符的記錄,并將其Key發(fā)送給標(biāo)簽。標(biāo)簽計(jì)算其metaID并比較metaID與H(Key′)是否相符,若相符則解鎖。
該協(xié)議的優(yōu)點(diǎn)是:在認(rèn)證過程中使用對(duì)真實(shí)ID加密后的metaID;缺點(diǎn)是:對(duì)密鑰進(jìn)行明文傳輸,且metaID是固定不變的,不利于防御信息跟蹤威脅。
1.2 隨機(jī)Hash鎖協(xié)議
隨機(jī)Hash鎖協(xié)議的認(rèn)證過程如下:標(biāo)簽在收到讀寫器的讀寫請(qǐng)求后,生成一隨機(jī)數(shù)R,并計(jì)算H(Key||R)其中,||表示將Key和R進(jìn)行連接,并將(R,H(Key||R))數(shù)據(jù)對(duì)送至后臺(tái)數(shù)據(jù)庫(kù)。數(shù)據(jù)庫(kù)查詢滿足H(Key′||R)=H(Key||R)的記錄。若找到則將對(duì)應(yīng)的ID′發(fā)往標(biāo)簽,標(biāo)簽比較ID與ID′是否相同以確定是否解鎖。
該協(xié)議的優(yōu)點(diǎn)是:為認(rèn)證過程中出現(xiàn)的隨機(jī)信息避免了信息跟蹤,但仍出現(xiàn)了ID的明文傳輸,易遭到竊聽威脅。
1.3 Hash鏈協(xié)議
在Hash鏈協(xié)議中,標(biāo)簽在每次認(rèn)證過程中其密鑰Key值是不斷更新的,每次更新后的Key′=H(Key),從而形成1個(gè)Hash鏈。其認(rèn)證過程如下:標(biāo)簽在收到讀寫器的讀寫請(qǐng)求后,利用當(dāng)前密鑰Key計(jì)算下次密鑰Key′=H(Key),在更新當(dāng)前密鑰為Key′后經(jīng)讀寫器返給數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)對(duì)第一條標(biāo)簽記錄,判斷G(Hi(Key0))的結(jié)果是否與Key′相等。若相等則返回相應(yīng)記錄的ID′值至標(biāo)簽,標(biāo)簽再比較ID與ID′是否相同,以確定是否解鎖。
該協(xié)議優(yōu)點(diǎn):具有不可分辨性及前向安全性。但容易受到重傳和假冒攻擊,且計(jì)算量大,不適于標(biāo)簽數(shù)目較多的情況。
前述三種協(xié)議基本上都只具備單向認(rèn)證能力,即只完成了讀寫器(后臺(tái)數(shù)據(jù)庫(kù))對(duì)標(biāo)簽的身份認(rèn)證,尚未實(shí)現(xiàn)標(biāo)簽對(duì)讀寫器的認(rèn)證功能,因此這些協(xié)議都是不完善的。
1.4 Key值更新的隨機(jī)Hash鎖協(xié)議
Key值更新的隨機(jī)Hash鎖協(xié)議提供了讀寫器與標(biāo)簽之間的雙向認(rèn)證功能。其雙向認(rèn)證過程如下:
(1)讀寫器對(duì)標(biāo)簽的認(rèn)證。認(rèn)證時(shí)數(shù)據(jù)庫(kù)生成一隨機(jī)密碼R,經(jīng)讀寫器連同查詢請(qǐng)求一同發(fā)往標(biāo)簽。標(biāo)簽計(jì)算H(Key)及H(Key||R)后將其發(fā)往數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)對(duì)每一記錄判斷H(Key′||R)=H(Key||R)與H(Key′)=H(Key)是否成立。若找到符合條件的記錄,則完成了讀寫器對(duì)標(biāo)簽的認(rèn)證過程,繼續(xù)進(jìn)行標(biāo)簽對(duì)讀寫器的認(rèn)證;否則停止認(rèn)證過程。
(2)標(biāo)簽對(duì)讀寫器的認(rèn)證。數(shù)據(jù)庫(kù)計(jì)算找到記錄的H(ID′||R)與H(ID′),并經(jīng)讀寫器將其發(fā)送給標(biāo)簽。數(shù)據(jù)庫(kù)還計(jì)算S(Key)和H(S(Key)),并將數(shù)據(jù)庫(kù)中的Key值更新為S(Key);標(biāo)簽判斷H(ID||R)=H(ID′||R)與H(ID)=H(ID′)。若兩者均成立,則完成標(biāo)簽對(duì)讀寫器的認(rèn)證過程,將標(biāo)簽中的Key值更新為S(Key)。
該協(xié)議保證了前向安全性,實(shí)現(xiàn)了標(biāo)簽和讀寫器的雙向認(rèn)證,同時(shí)標(biāo)簽上只實(shí)現(xiàn)Hash函數(shù)功能而將隨機(jī)數(shù)發(fā)生器改為在資源豐富的后臺(tái)數(shù)據(jù)庫(kù)中,有利于標(biāo)簽的低成本實(shí)現(xiàn)。但在該協(xié)議中,每次認(rèn)證成功后需要更新標(biāo)簽中的Key值,由于Key是存放在EEPROM中的,更新一次需要較長(zhǎng)的時(shí)間,這在某些移動(dòng)應(yīng)用的場(chǎng)合中如物流、高速公路收費(fèi)站等場(chǎng)合可能會(huì)影響讀取的可靠性。同時(shí),該協(xié)議中最終ID還是會(huì)在讀寫器和標(biāo)簽間明文傳遞,不利于保密性要求較高的場(chǎng)合。
2 雙層/雙向認(rèn)證的隨機(jī)Hash鎖協(xié)議
鑒于前述幾種基于Hash鎖的RFID協(xié)議存在不能滿足RFID應(yīng)用中低成本及安全性要求,結(jié)合幾種方法的主要思想,本文提出了一種雙層/雙向認(rèn)證的隨機(jī)Hash鎖RFID安全協(xié)議,實(shí)現(xiàn)了安全高效、雙向認(rèn)證的讀取訪問控制。
2.1基本思想
將認(rèn)證過程劃分為通信和鑒別兩層。通信層主要提供通信雙方身份的相互認(rèn)證(雙向認(rèn)證) 。鑒別層主要提供對(duì)鑒別產(chǎn)品的身份認(rèn)證。具體而言,對(duì)每個(gè)產(chǎn)品標(biāo)簽分配一個(gè)原始標(biāo)識(shí)ID0,在數(shù)據(jù)庫(kù)系統(tǒng)上采用DES等先進(jìn)算法加密后作為ID寫入標(biāo)簽,然后在讀寫器與標(biāo)簽之間利用隨機(jī)Hash鎖協(xié)議進(jìn)行雙向認(rèn)證。雙向認(rèn)證通過后標(biāo)簽將ID發(fā)送給數(shù)據(jù)庫(kù)服務(wù)器經(jīng)解密后得到ID0′。服務(wù)器再比較ID0與ID0'是否相等以進(jìn)行二次認(rèn)證。
2.2 認(rèn)證過程
雙層/雙向認(rèn)證的隨機(jī)Hash鎖協(xié)議的主要過程如圖2所示。其具體過程如下:
(1)鎖定標(biāo)簽。數(shù)據(jù)庫(kù)生成ID0并利用密鑰K0進(jìn)行加密ID=DK0(ID0),并生成隨機(jī)密鑰K1,將ID、K1經(jīng)讀寫器寫入標(biāo)簽。這里的加密過程是在資源豐富的服務(wù)器上完成的,所以可以采用目前先進(jìn)的復(fù)雜的密碼機(jī)制,如DES、AES、RSA等。
(2)讀寫器對(duì)標(biāo)簽的認(rèn)證:①認(rèn)證開始時(shí),讀寫器生成一隨機(jī)數(shù)R,連同查詢請(qǐng)求Q一同發(fā)給標(biāo)簽;②標(biāo)簽計(jì)算H(K1||R)和H(K1),并將結(jié)果返回給讀寫器;③讀寫器將H(K1||R)、H(K1)及R傳送給服務(wù)器,并在數(shù)據(jù)庫(kù)中查詢每個(gè)標(biāo)簽是否滿足H(Ki||R)=H(K1||R)并且H(Ki)=K(K1)。若未找到則表明是非法標(biāo)簽;若找到則完成了讀寫器對(duì)標(biāo)簽的認(rèn)證,尚需要繼續(xù)對(duì)讀寫器進(jìn)行驗(yàn)證。
(3)標(biāo)簽對(duì)讀寫器的認(rèn)證:①數(shù)據(jù)庫(kù)利用找到的記錄的IDi,計(jì)算H(IDi)及H(IDi||R),并將其送給讀寫器;②讀寫器將H(IDi)及H(Idi||R)送給標(biāo)簽;③標(biāo)簽判斷是否滿足H(IDi)=H(ID)及H(IDi||R)=H(ID||R),若滿足則完成了標(biāo)簽對(duì)讀寫器的驗(yàn)證,同時(shí)完成標(biāo)簽與讀寫器之間的雙向認(rèn)證;否則為非法讀寫器。
(4)雙層認(rèn)證: 標(biāo)簽返回ID給數(shù)據(jù)庫(kù),從數(shù)據(jù)庫(kù)獲得密鑰K0對(duì)ID進(jìn)行解密獲得最終的ID0′,并比較ID0′與ID0是否相符,從而最終確認(rèn)產(chǎn)品的合法性。
2.3 性能分析
(1) 提供了雙向認(rèn)證過程。既有讀寫器對(duì)標(biāo)簽的認(rèn)證,也有標(biāo)簽對(duì)讀寫器的認(rèn)證,保證了只有合法的讀寫器和合法標(biāo)簽才能進(jìn)行有效通信。在雙向認(rèn)證過程中采用隨機(jī)Hash鎖,可以有效防止對(duì)標(biāo)簽和讀寫器信息的非法讀取、位置跟蹤、竊聽、重放等安全風(fēng)險(xiǎn)。
(2) 提供了雙層加密機(jī)制。第1層加密傳輸主要用于通信實(shí)體的身份認(rèn)證,在讀寫器與標(biāo)簽之間通信數(shù)據(jù)是隨機(jī)加密后的數(shù)據(jù),在數(shù)據(jù)庫(kù)與讀寫器之間的加密采用的是假設(shè)安全的,可以采用復(fù)雜的加密方案。第2層加密主要用于鑒別產(chǎn)品的身份認(rèn)證。
(3) 提供了產(chǎn)品身份的最終鑒別。防偽層加/解密過程只在認(rèn)證服務(wù)器里完成,其密鑰K0和產(chǎn)品原始ID0只在服務(wù)器里存儲(chǔ)和運(yùn)算,避免了產(chǎn)品身份信息在網(wǎng)絡(luò)傳輸中的非法竊聽、非法讀取、假冒哄騙、重放等安全風(fēng)險(xiǎn),實(shí)現(xiàn)了產(chǎn)品身份的有效鑒別。
(4) 實(shí)現(xiàn)簡(jiǎn)單高效。該協(xié)議無(wú)需復(fù)雜的隨機(jī)數(shù)發(fā)生器,適合于低成本的RFID應(yīng)用;認(rèn)證過程無(wú)須更新標(biāo)簽和數(shù)據(jù)庫(kù)中的Key值,可以大大縮短認(rèn)證時(shí)間,提高系統(tǒng)的吞吐率。
目前出現(xiàn)了多種RFID安全協(xié)議,但多數(shù)協(xié)議只是針對(duì)安全風(fēng)險(xiǎn)的某些方面,有些協(xié)議由于成本過高、認(rèn)證時(shí)間過長(zhǎng)等原因不實(shí)用。本文提出的雙層/雙向認(rèn)證的隨機(jī)Hash鎖RFID安全協(xié)議,將分層認(rèn)證與雙向認(rèn)證的思想相結(jié)合,具有低成本、運(yùn)算高效、認(rèn)證可靠、安全性高等特點(diǎn),可以有效地應(yīng)用于產(chǎn)品防偽、電子錢包等對(duì)身份認(rèn)證要求較高的RFID應(yīng)用領(lǐng)域。
此外,本協(xié)議所使用的Hash函數(shù)主要在目前資源有限的標(biāo)簽中實(shí)現(xiàn),待標(biāo)簽技術(shù)進(jìn)一步發(fā)展,資源相對(duì)豐富和運(yùn)算能力足夠強(qiáng)時(shí),可以將Hash函數(shù)改成更加可靠的公鑰函數(shù),而協(xié)議的執(zhí)行過程可以不做大的改動(dòng),這將是下一步的研究?jī)?nèi)容。