蔡蕓云,郁進(jìn)明
無(wú)線射頻識(shí)別(RFID),是一種利用射頻信號(hào)自動(dòng)識(shí)別目標(biāo)對(duì)象并獲取相關(guān)信息的技術(shù)。它利用無(wú)線射頻信號(hào)通過(guò)空間耦合(交變磁場(chǎng)或電磁場(chǎng)),實(shí)現(xiàn)非接觸雙向數(shù)據(jù)通信,并通過(guò)所傳遞的信息達(dá)到識(shí)別目的。RFID系統(tǒng)包括3個(gè)關(guān)鍵部分:標(biāo)簽、閱讀器、后端數(shù)據(jù)庫(kù)。
每個(gè)標(biāo)簽包含一個(gè)唯一識(shí)別信息TID。閱讀器向標(biāo)簽請(qǐng)求 TID的信息,并發(fā)給后端數(shù)據(jù)庫(kù)。如果標(biāo)簽是有效的,后端數(shù)據(jù)庫(kù)將查詢(xún)產(chǎn)品信息。按照功耗來(lái)源分類(lèi),射頻標(biāo)簽可以分為:有源標(biāo)簽(Active tag)、半有源標(biāo)簽(Semi-passive tag)和無(wú)源標(biāo)簽(Passive tag)。
Auto-ID Center的研究人員,根據(jù)標(biāo)簽的功能將標(biāo)簽分為5類(lèi)[1]。其中EPC Class-1 Gen-2協(xié)議[2],是EPCglobal標(biāo)準(zhǔn)組織在 2005年初提出的第二代對(duì)于超高頻 Class-1的RFID標(biāo)簽的標(biāo)準(zhǔn)。其有效閱讀范圍更大,所以它被廣泛認(rèn)為是RFID系統(tǒng)發(fā)展的主流。然而,Gen-2規(guī)范的缺點(diǎn)是,TID在傳輸過(guò)程中沒(méi)有任何保護(hù)。
先前的研究中陳述了RFID系統(tǒng)的幾個(gè)威脅:
竊聽(tīng):攻擊者可以監(jiān)聽(tīng)整個(gè)無(wú)線通信過(guò)程,從而執(zhí)行加強(qiáng)的攻擊,如重放或者偽造攻擊。
信息隱私:這種攻擊主要竊聽(tīng)個(gè)人習(xí)慣,例如最喜歡的書(shū)、閱讀習(xí)慣等。由于標(biāo)簽信息極易被泄漏,很多私人信息都很有可能通過(guò)RFID電子標(biāo)簽被泄露。
重放攻擊:根據(jù)竊聽(tīng)到的閱讀器和標(biāo)簽間的數(shù)據(jù)通信,重復(fù)之前的通信行為從而獲取數(shù)據(jù)信息。
克?。汗粽呖梢蚤喿x標(biāo)簽然后將獲得的數(shù)據(jù)寫(xiě)入空白標(biāo)簽中。
標(biāo)簽追蹤:通過(guò)RFID標(biāo)簽掃描,一句標(biāo)簽的特定輸出可對(duì)消費(fèi)者位置進(jìn)行跟蹤定位。
信息篡改:隨著RFID成為零售業(yè)的主流,為了方便起見(jiàn),標(biāo)簽將會(huì)存儲(chǔ)一些附加信息,例如:日期、價(jià)格、產(chǎn)地等。然而,這樣也給攻擊者篡改信息帶來(lái)了方便。攻擊者可以修改價(jià)格,從中獲利。
拒絕服務(wù):人為的信號(hào)干擾是的合法閱讀器不能正常閱讀標(biāo)簽數(shù)據(jù)。
Gen2標(biāo)簽是一種被動(dòng)標(biāo)簽,它從閱讀器獲得能量。成本上和資源上的限制使得G2標(biāo)簽不能進(jìn)行算法復(fù)雜的加密運(yùn)算,比如公鑰加密、對(duì)稱(chēng)密鑰加密,甚至哈希運(yùn)算。G2標(biāo)簽只支持片上16位偽隨機(jī)數(shù)生成器、16循環(huán)冗余碼檢驗(yàn)(CRC)、以及一些簡(jiǎn)單的異或操作。因此,當(dāng)前許多針對(duì)RFID安全問(wèn)題而提出的解決方案,并不能有效的運(yùn)用于G2標(biāo)簽。例如,Hash鎖、重加密等。EPC C1G2只提供了一種簡(jiǎn)單的單向的安全認(rèn)證機(jī)制,但這種認(rèn)證機(jī)制,存在很深的安全隱患。
G2協(xié)議有一個(gè)嚴(yán)重的問(wèn)題,標(biāo)簽的曝露會(huì)泄露用戶的隱私。曝露的標(biāo)簽很容易追蹤和克隆。我們的目標(biāo)是在保持簡(jiǎn)單、低成本的同時(shí),加強(qiáng)G2協(xié)議的安全性。
首先,為了更好的說(shuō)明整個(gè)認(rèn)證過(guò)程,本文先對(duì)某些符號(hào)做出說(shuō)明,如表1所示:
表1 對(duì)相關(guān)符號(hào)說(shuō)明
針對(duì)EPC C1G2中的安全問(wèn)題,EPCGlobal提出了一種簡(jiǎn)單、基本、單向的安全認(rèn)證協(xié)議。
具體的認(rèn)證過(guò)程如下:
(1) 閱讀器產(chǎn)生一個(gè)請(qǐng)求命令ReqR,向標(biāo)簽發(fā)送請(qǐng)求信息;
(2) 標(biāo)簽通過(guò)反射回應(yīng)一個(gè)隨機(jī)數(shù)RT1;
(3) 閱讀器利用標(biāo)簽所給的RT1異或存取密碼的高16位APwdM,將加密的APwdM,即CCPwdM,發(fā)送給標(biāo)簽;
(4) 標(biāo)簽利用原來(lái)的隨機(jī)數(shù)RT1解密密文CCPwdM,判斷是否與APwdM相等;
(5) 閱讀器再產(chǎn)生一個(gè)請(qǐng)求命令ReqR,再次向標(biāo)簽發(fā)送請(qǐng)求信息;
(6) 標(biāo)簽再次通過(guò)反射回應(yīng)一個(gè)不同的隨機(jī)數(shù)RT2;
(7) 閱讀器利用所得到的標(biāo)簽,回應(yīng)的RT2異或存取密碼的低16位APwdL,并將加密的APwdL,即CCPwdL,發(fā)送給標(biāo)簽;
(8) 標(biāo)簽利用原來(lái)的隨機(jī)數(shù)RT2解密密文CCPwdL,判斷是否與APwdL相等;
(9) 如果(4)和(8)都相等,標(biāo)簽則認(rèn)為閱讀器是真的,繼續(xù)與之通信;否則,標(biāo)簽則結(jié)束與閱讀器之間的通信;
由上面的認(rèn)證過(guò)程可以看出,EPCGlobal提出的認(rèn)證過(guò)程是采用的一種單向的認(rèn)證方法,即只有標(biāo)簽對(duì)閱讀器的驗(yàn)證過(guò)程,并沒(méi)用閱讀器對(duì)標(biāo)簽的驗(yàn)證過(guò)程,存在很大安全隱患。
存在的缺陷分析[3-5]:
(1) 中間位置攻擊和讀取密碼暴露:由于標(biāo)簽發(fā)送兩次RTx都是處于開(kāi)放和未加密的方式,惡意的閱讀器、未授權(quán)的閱讀器很容易竊聽(tīng)到這些 RTx,通過(guò)執(zhí)行RTx⊕CCPwd便可以很容易得到APwd。暴露的APwd很容易使惡意的閱讀器非法讀取、修改和毀壞標(biāo)簽中的數(shù)據(jù)。
(2) 偽造標(biāo)簽:暴露的 APwd很容易使競(jìng)爭(zhēng)對(duì)手偽造具有同樣APwd的假標(biāo)簽。
Konidala等人利用32為存取密碼和殺死密碼來(lái)設(shè)計(jì)一種安全認(rèn)證機(jī)制。他們的機(jī)制利用兩輪PadGen函數(shù)來(lái)對(duì)Pad進(jìn)行加密。第一輪對(duì)存取密碼加密,第二輪對(duì)殺死密碼加密。本文在 Konidala等人以及冷世偉等人所提出的認(rèn)證機(jī)制的基礎(chǔ)上,提出了進(jìn)一步改進(jìn)的算法:MKAP。其中,MPwd=APwd⊕KPwd。具體的PadGen函數(shù)將在后文給出。
PadGen函數(shù)用來(lái)產(chǎn)生Pads,具體的認(rèn)證過(guò)程,如圖1所示:
圖1 改進(jìn)后的相互認(rèn)證機(jī)制
(1) 閱讀器產(chǎn)生一個(gè)請(qǐng)求命令,發(fā)送請(qǐng)求信息到標(biāo)簽;
(2) 標(biāo)簽產(chǎn)生兩個(gè)隨機(jī)數(shù) RT1和 RT2,并計(jì)算 MPwd=APwd⊕KPwd,暫時(shí)存儲(chǔ),同EPC一起反射回應(yīng)給閱讀器;
(3) 閱讀器將接受的EPC、RT1和RT2一起,轉(zhuǎn)發(fā)給服務(wù)器;
(4) 服務(wù)器根據(jù)EPC到后臺(tái)數(shù)據(jù)庫(kù)讀取標(biāo)簽的存取密碼APwd和殺死密碼 KPwd,同樣計(jì)算 MPwd=APwd⊕KPwd,并產(chǎn)生四個(gè)隨機(jī)數(shù) RM1,RM2,RM3和RM4,且利用RM1、RM2和RT1、RT2一起作為參數(shù),采用PadGen函數(shù)加密存取密碼的高16位APwdM和存取密碼的低16位APwdL,得到CCPwdM1和 CCPwdL1,同 EPC、RM1,RM2,RM3和 RM4一起發(fā)送給閱讀器;
(5) 閱讀器將得到的信息再次轉(zhuǎn)發(fā)給標(biāo)簽;
(6) 標(biāo)簽利用從閱讀器獲得的RM1,RM2,RM3、RM4,與自己保存的RT1、RT2,利用PadGen函數(shù),對(duì)CCPwdM1和 CCPwdL1解密,與自己保留存儲(chǔ)區(qū)中的存取密碼比較,如果一致,則表示閱讀器通過(guò)驗(yàn)證,否則,停止通信;
(7) 標(biāo)簽產(chǎn)生另外兩個(gè)隨機(jī)數(shù)RT3和RT4,暫時(shí)存儲(chǔ),并同從閱讀器接收到的隨機(jī)數(shù)RM3和 RM4一起,作為參數(shù),利用 PadGen函數(shù),對(duì)存取密碼的高 16位APwdM和低 16位 APwdL加密,得到 CCPwdM2和CCPwdL2,同EPC、RT3和RT4一起反射回應(yīng)給給閱讀器;
(8) 閱讀器將所接收到的信息轉(zhuǎn)發(fā)給服務(wù)器;
(9) 服務(wù)器利用所接收到的RT3和RT4,同自己產(chǎn)生保存的RM3和RM4一起,對(duì)CCPwdM2和CCPwdL2解密,與利用EPC在后臺(tái)數(shù)據(jù)庫(kù)查找到的存取密碼比較,如果一致,則表示標(biāo)簽通過(guò)驗(yàn)證,否則停止通信;
PadGen函數(shù)是用來(lái)生產(chǎn)16位Pads,對(duì)兩個(gè)16位的高、低存取密碼(APwdM,APwdL)進(jìn)行加密。PadGen函數(shù)通過(guò)對(duì)保留存儲(chǔ)區(qū)中的存取密碼和殺死密碼隨即抽取相關(guān)位,連接成16位的Pads。
首先,用下面的方式來(lái)表示32位的存取密碼和殺死密碼(二進(jìn)制形式),公式(1)
服務(wù)器和標(biāo)簽分別產(chǎn)生的 16位隨機(jī)數(shù)RTx和RMx可以表示為(十六進(jìn)制形式),公式(2)
RTx和RMx的每一位數(shù),即d t1,d t1…,dm1,dm2,都用來(lái)表示存取密碼Apwd的某一位的位置,將這些位以某種規(guī)律連接起來(lái),就可以得到16位的Pads。
針對(duì)APwd的第一輪PadGen操作,本文采取與冷世偉等人提出的方式,結(jié)合RTx和RMx,第一輪PadGen操作,可以按如下方式進(jìn)行(十六進(jìn)制形式),公式(3)
利 用 第 一 輪 PadGen運(yùn) 算 所 得 到 的dv1dv2dv3dv4對(duì)Kpwd進(jìn)行第二輪PadGen運(yùn)算。dv1dv2dv3dv4中的每一位數(shù),即dv1、dv2、dv3和dv4,都用來(lái)表示殺死密碼中某一位的位置,如下所示(16進(jìn)制形式),公式(4)
針對(duì)由APwd和KPwd異或得來(lái)的MPwd,本文在此加入第三輪PadGen函數(shù),按如下方式進(jìn)行(十六進(jìn)制形式),公式(5)
首先對(duì)Konidala等人提出機(jī)制的安全性能進(jìn)行分析:
(1)對(duì)存取密碼中低位的攻擊
攻擊過(guò)程如下所示:
假設(shè)攻擊者通過(guò)竊聽(tīng)真的閱讀器和標(biāo)簽之間的一個(gè)驗(yàn)證會(huì)話,攻擊者可以獲取得到一個(gè)有效的EPC,將這個(gè)標(biāo)簽作為攻擊的對(duì)象。通過(guò)獲取得到的EPC,攻擊者可以偽裝成真的標(biāo)簽對(duì)閱讀器采取主動(dòng)攻擊。攻擊者可以給真的閱讀器發(fā)送信息:,其中隨機(jī)數(shù)RN滿足下列等式:RN=RRRRh,其中R為十六進(jìn)制,’可以等于也可以不等于。
則攻擊者可以通過(guò)計(jì)算下式來(lái)分別獲得存取密碼高十六位APwdM和低十六位APwdL中的8位,公式(6)
綜上所述,攻擊者可以分別以2-2的概率獲得存取密碼高十六位APwdM和低十六位APwdL中的8位。假設(shè)等于則在這種情況下,攻擊者可以進(jìn)一步以 2-2的概率獲得存取密碼中的16位,如公式(8)
(2)對(duì)存取密碼中高位的攻擊
采取如下的攻擊過(guò)程:
與(1)中分析相似,攻擊者可以竊聽(tīng)真的標(biāo)簽所發(fā)送的信息,并改變信息中的內(nèi)容。攻擊者將獲取的標(biāo)簽信息中的隨機(jī)數(shù)都設(shè)置為 RN,然后轉(zhuǎn)發(fā)給閱讀器。其中,RN須滿足如下關(guān)系式:RN=RRRRh[十 六進(jìn)制]。
攻擊者成功破解存取密碼中 16位的概率可由下式表示:
Prob(成功破解APWDM[0...7]||APWDL[0...7])
通過(guò)上面分析可知,為了最大可能的破解存取密碼,攻擊者可以在{0x00,0x0F,0xF0,0xFF}中選擇。
結(jié)合對(duì)存取密碼低位的攻擊和對(duì)存取密碼高位的攻擊,攻擊者可以將破解存取密碼的概率從 1/232降為1/(16*4)=1/26。
為了便于與前面安全機(jī)制進(jìn)行比較,對(duì)本文所提安全機(jī)制采用相同的攻擊形式,經(jīng)過(guò)前面的分析,攻擊可以獲得16位存取密碼,ApwdL[0,1,4,5,8,9,12,13]和ApwdM[0,1,4,5,8,9,12,13]通過(guò)計(jì)算下式:
通過(guò)上式,可以發(fā)現(xiàn),每個(gè) dv1dv2dv3dv4都是由 RTx和RMx共同決定的。在第一輪PadGen函數(shù)中,攻擊者可以設(shè)置RTx和RMx,但是并不能同時(shí)設(shè)置它們。也就是說(shuō),攻擊者無(wú)法獲得dv1dv2dv3dv4之間的任何相關(guān)信息。然后,進(jìn)行第二輪和第三輪PadGen函數(shù),攻擊者不能發(fā)現(xiàn)存取密碼這8位之間的任何關(guān)系。
因此,攻擊者要想獲得這8位存取密碼,必須進(jìn)行如下計(jì)算:
通過(guò)上式,可以發(fā)現(xiàn),攻擊獲取這8位存取密碼的概率位2-8。
同理, 攻擊者要想獲得另外8位存取密碼,必須進(jìn)行如下計(jì)算:
綜上所述,結(jié)合上面兩式,攻擊獲得全部存取密碼的概率為2-8*2-8=2-16,相比Konidala、冷世偉等人提出的安全機(jī)制,安全性能得到了很大的提升,如表2所示:
表2 安全性能的提升數(shù)據(jù)
從安全角度出發(fā),本文提出的新的認(rèn)證方案安全性比已有方案有了很大程度提高。各種方案的性能比較,如表3所示:
表1 本文方案與已有方案的安全性能比較
隨著RFID的廣泛使用,安全問(wèn)題也越來(lái)越受到關(guān)注。本文在先前研究的基礎(chǔ)上改進(jìn)并提出了一種基于Gen2規(guī)范低成本的認(rèn)證協(xié)議:MKAP,并驗(yàn)證了其安全性能較先前算法有了顯著的提升。
[1]Auto-ID Center,“Draft Protocol Specification for a Class 0 Radio Frequency Identification Tag”[M]February 2003.
[2]EPCglobal, Inc., [OL]http://www.epcglobalinc.org/,2005.
[3]Peris-Lopez, P. and Li, T. and Hernandez-Castro, J.C. and Tapiador, J.M.E., “Practical attacks on a mutual authentication scheme under the EPC Class-1 Generation-2 standard,”[G]Computer Communications, 2009
[4]Peris-Lopez, P. and Hernandez-Castro, J. and Tapiador, J.and Li, T. and van der Lubbe, J., “Weaknesses in two recent lightweight RFID authentication protocols,”[G]Information Security and Cryptology, 2011
[5]Sun, H.M. and Ting, W.C. and Wang, K.H., “On the security of Chien's ultralightweight RFID authentication protocol,”[C]IEEE Transactions on Dependable and Secure Computing, 2011