曹朝陽 吳慶濤
1(河南省市場監(jiān)督管理局 河南 鄭州 450008)2(鄭州航空工業(yè)管理學(xué)院 河南 鄭州 450015)
無線射頻識別(Radio Frequency Identification,RFID)是一種非接觸式、自動識別和采集信息的綜合性技術(shù)[1-3]。RFID系統(tǒng)具備成本低、易攜帶、壽命長等優(yōu)點,已經(jīng)運(yùn)用在身份識別等各個領(lǐng)域中[4-6]。
為推動RFID系統(tǒng)更進(jìn)一步發(fā)展及應(yīng)用,研究人員提出許多方法來解決安全問題,其中標(biāo)簽與讀寫器之間的雙向認(rèn)證尤為突出。兩個通信實體在雙向認(rèn)證過程中,涉及共享密鑰重要參量[7-9]。
現(xiàn)有的雙向認(rèn)證協(xié)議中用到的共享密鑰大多都是在標(biāo)簽出廠之前設(shè)定好的,這種做法有一定的好處,但也存在一定的缺陷:(1) 會帶來密鑰托管問題,負(fù)責(zé)托管的人員可能會因托管不當(dāng)而導(dǎo)致密鑰泄露;(2) 密鑰始終只能由廠商設(shè)定,無法由用戶自己設(shè)定,在一定程度上無法滿足用戶自定義密鑰的需求?;谝陨先毕?,專家及學(xué)者提出在標(biāo)簽與讀寫器之間動態(tài)地生成共享密鑰,既可以避免因托管人員管理不當(dāng)而造成的密鑰泄露問題,也可以滿足用戶自定義密鑰的需求。
文獻(xiàn)[10]創(chuàng)新地利用RFID系統(tǒng)信道的前后非對稱性特征,設(shè)計出一種動態(tài)生成共享密鑰的算法。該算法能夠彌補(bǔ)提前設(shè)定密鑰的不足,但仍存在一定缺陷:協(xié)議基于后向信道的不可竊聽性,在標(biāo)簽傳送給讀寫器信息時,采用明文直接傳送。但在實際應(yīng)用中,后向信道仍存在被攻擊者竊聽的可能性,具有一定的局限性。
文獻(xiàn)[11]在文獻(xiàn)[10]的基礎(chǔ)之上提出一種動態(tài)生成共享密鑰的算法,遵行前向信道與后向信道均能被攻擊者竊聽的原則,彌補(bǔ)了文獻(xiàn)[10]算法的不足,但其在設(shè)計過程中未全面考慮,導(dǎo)致攻擊者在阻塞讀寫器到標(biāo)簽的最后一個消息情況下,讀寫器生成密鑰的同時,標(biāo)簽不能生成密鑰,標(biāo)簽與讀寫器兩端失去一致性,因此算法無法抵抗去同步化攻擊。
文獻(xiàn)[12]算法采用動態(tài)生成密鑰的思想,仍遵行前后向信道均可被攻擊者竊聽原則。算法設(shè)計過程中,采用對部分ID加密的機(jī)制進(jìn)行信息的傳輸,能夠增大攻擊者的破解難度,但算法無法抵抗攻擊者發(fā)起的重放攻擊。攻擊者在竊聽到上一輪信息后,對消息進(jìn)行重放,并阻塞標(biāo)簽與讀寫器之間的通信,破解出相關(guān)隱私信息。
文獻(xiàn)[13]基于假名設(shè)計出一種密鑰無線生成算法,該算法雖能夠彌補(bǔ)文獻(xiàn)[10]算法的不足,但無法抵抗去同步化攻擊。攻擊者可以截獲通信實體之間傳送的消息C,從而導(dǎo)致合法標(biāo)簽無法驗證消息C,使得標(biāo)簽一端無法生成共享密鑰,但讀寫器一端卻已生成共享密鑰,最終導(dǎo)致標(biāo)簽與讀寫器之間的共享密鑰失去一致性。
綜上,本文設(shè)計出一種采用位運(yùn)算的低計算量的共享密鑰無線生成算法。利用標(biāo)簽的假名標(biāo)識符ID_S進(jìn)行傳輸信息的加密計算,減少其他變量的引入,有助于降低存儲空間;假名標(biāo)識符的使用,在一定程度上可避免標(biāo)簽唯一標(biāo)識符ID的泄露;采用計算量較低的位運(yùn)算進(jìn)行加密,可有效減少系統(tǒng)整體計算量;采用標(biāo)簽一端不生成隨機(jī)數(shù)機(jī)制,降低標(biāo)簽端的門電路總量,有助于成本的降低。
標(biāo)簽、讀寫器、后臺數(shù)據(jù)庫三部分組成一個完整的RFID系統(tǒng)。系統(tǒng)在通信過程中,讀寫器與后臺數(shù)據(jù)庫之間采用安全的有限信道進(jìn)行通信,故可將兩者看成一個整體;標(biāo)簽與讀寫器之間的通信采用不安全的無線信道[14-15]。有關(guān)符號的含義如表1所示,其中L取值為偶數(shù)值。
表1 符號說明
共享密鑰動態(tài)生成開始之前,Tag存有(id,ids);Reader存有(id_i,ids_i)。參考文獻(xiàn)[10]可以得知:密鑰生成算法需要分三種情況討論,具體如下:
1) 單標(biāo)簽密鑰生成算法。算法流程如圖1所示。
圖1 單標(biāo)簽密鑰生成算法流程
算法過程簡述如下:
(1) 讀寫器向標(biāo)簽發(fā)出通信請求命令。
(2) 標(biāo)簽計算消息A;將A傳給讀寫器。其中A=id_r⊕ids_l。
(3) 讀寫器查找存放的(id_i,ids_i)中是否有滿足A的計算結(jié)果。如未找到,算法停止。如找到,生成隨機(jī)數(shù)r;計算消息B和C、共享密鑰k;將B、C傳給標(biāo)簽。其中B=r⊕ids_r,C=r⊕id_l。
說明:r長度為L位,ids_r、id_l長度為L/2位,在計算過程中將ids_r、id_l的高位部分補(bǔ)L/2個0,從而使得ids_r、id_l、r長度均為L位,便于計算。后面涉及長度不同的地方進(jìn)行計算時,按照此計算法則進(jìn)行。
(4) 標(biāo)簽對B、C進(jìn)行驗證(B⊕ids_r是否等于C⊕id_l)。如不相等,算法停止;如相等,計算共享密鑰k。其中k= (r⊕id)⊕(r⊕ids)。
2) 多標(biāo)簽密鑰生成算法。多標(biāo)簽密鑰生成算法過程與單標(biāo)簽密鑰生成算法過程主要不同之處在于:每個不同的標(biāo)簽在接收到讀寫器發(fā)送來的消息且通過驗證之后,共享密鑰k的生成過程中需要根據(jù)每個標(biāo)簽的自身信息(id_i,ids_i)來生成屬于自身的個體密鑰。其他思想一樣,故不再闡述。
3) 群組標(biāo)簽密鑰生成算法。算法流程如圖2所示。
圖2 群組標(biāo)簽密鑰生成算法流程
算法流程如下:
(1) 讀寫器向標(biāo)簽組廣播通信請求命令。
(2) 標(biāo)簽Tagi計算消息Qi;將Qi傳給讀寫器。i=1,2,…,n。其中Qi=id_i_r⊕ids_i_l。
(3) 后臺數(shù)據(jù)庫中查找已存放的信息并計算是否與Qi信息完全一致。如不完全一致,說明有標(biāo)簽未響應(yīng),第二次發(fā)送請求命令。如一致,生成隨機(jī)數(shù)r;計算唯一的共享密鑰k;同時為標(biāo)簽Tagi生成唯一的密鑰因子ki;將ki發(fā)給所有標(biāo)簽。其中k=ids_1_r⊕ids_2_r⊕…⊕ids_i_r⊕r,ki=k⊕ids_i_r。
(4) 標(biāo)簽Tagi將自身的標(biāo)號與ki中的i值作對比。如不相等,不做任何操作;如相等,計算唯一共享密鑰k。其中k=ki⊕ids_i_r。
算法的安全性分析一般從兩個角度進(jìn)行闡述:(1) 對算法進(jìn)行抽象,進(jìn)而采用邏輯化形式進(jìn)行分析,文中采用基于BAN的邏輯形式化證明對算法進(jìn)行邏輯形式化分析,來說明算法的安全性。(2) 從具體的攻擊方式對算法的安全性進(jìn)行分析。具體的攻擊方式主要分為兩大類:主動攻擊及被動攻擊。最常見的被動攻擊方式為監(jiān)聽。而主動攻擊的方式較多,比較常見的有:異步攻擊、重放攻擊、追蹤攻擊等。
據(jù)了解,本次技能大賽分為初賽、決賽兩部分,60%的參賽人員通過初賽考核,可進(jìn)入決賽環(huán)節(jié)。在決賽之前,青島市家庭服務(wù)業(yè)生態(tài)圈統(tǒng)一組織入圍參賽者接受為期1個月的培訓(xùn)。通過決賽階段綜合筆試和實操兩項成績,最終評選出“首席家庭服務(wù)員”8人、“首席嬰幼兒營養(yǎng)烹飪師”“首席母嬰護(hù)理師”各10名,共28位首席技師,優(yōu)勝獎50名,由青島市家庭服務(wù)產(chǎn)業(yè)生態(tài)圈頒發(fā)榮譽(yù)證書并授予稱號,舉行優(yōu)勝獲獎?wù)吲c客戶供需見面會,為島城家庭服務(wù)市場輸送優(yōu)質(zhì)服務(wù)人員。
攻擊者通過監(jiān)聽、跟蹤等方式獲取通信實體之間的通信消息,該種攻擊方式稱之為被動攻擊。對于通信實體而言,當(dāng)被動攻擊發(fā)生之時,通信實體絕大多數(shù)情況下是不知曉的。因此,為確保傳輸信息的安全性,算法必須能夠抵抗攻擊者發(fā)起的被動攻擊,即:在通信實體不知被監(jiān)聽的情況下,攻擊者獲取通信信息,亦無法破解出有用的隱私信息。與被動攻擊有所不同的是,攻擊者在發(fā)起主動攻擊之時,通信實體通過實體之間的雙向認(rèn)證是可以識別出真?zhèn)蔚?。較為常見的主動攻擊方式有重放攻擊、追蹤攻擊等。
單標(biāo)簽密鑰生成算法與多標(biāo)簽密鑰生成算法大體一致,可將兩種算法放在一塊進(jìn)行分析討論。采用監(jiān)聽的方式可以獲取一個通話中所有的消息,但攻擊者仍無法得到所想要的信息。原因如下:(1) 攻擊者不知曉id、ids,因此無法從A、B或C中逆推出共享密鑰;(2)A、B、C在計算過程中,對于攻擊者來說,都至少有兩個變量是不知曉的,因此無法窮舉;(3) 計算過程中,混入隨機(jī)數(shù)r,使得前后兩次數(shù)值并不一樣,增大破解難度;(4)A、B、C加密過程中涉及的參量值,在通信過程中都沒有明文出現(xiàn)過?;谏鲜龇治觯粽邿o法破解出有用的信息。
對群組標(biāo)簽密鑰生成算法進(jìn)行被動攻擊及主動攻擊分析。攻擊者通過監(jiān)聽一個完整的通信過程,可獲取如下信息:Qi、ki。攻擊者通過這些消息仍無法破解出有用的隱私信息,原因如下:(1)Qi加密過程中,有兩個變量,對于攻擊者來說,是事前不知曉的,因此攻擊者無法窮舉;(2)ki僅僅只是計算共享密鑰k的一個密鑰因子,攻擊者即便是可以獲取,但仍無任何用處,因為由ki計算出k需要每個標(biāo)簽相對應(yīng)的假名,但攻擊者無法獲取該變量;(3)k在計算過程中,因隨機(jī)數(shù)r的加入,使得k前后兩次的數(shù)值并不一致;(4)k的計算,需要群組標(biāo)簽里的每個標(biāo)簽的假名變量,對于攻擊者來說,這些信息是無法獲取的?;谏鲜鲈?,攻擊者通過監(jiān)聽獲取的信息,不足以破解出有用的隱私信息。
本文算法與其他此類密鑰動態(tài)生成算法進(jìn)行安全性分析比較,結(jié)果如表2所示。表中,×表示不能抵抗;√表示能夠抵抗。
采用基于BAN邏輯[16]對算法進(jìn)行形式化分析:R表示讀寫器與后臺數(shù)據(jù)庫的整體;T表示標(biāo)簽。選取單標(biāo)簽密鑰生成算法為例進(jìn)行證明,其他兩種場合的算法證明分析過程類似。
1) 理想化模型:
消息① R→T:Request;
消息② T→R:A;
消息③ R→T:B,C。
2) 初始假設(shè):
P7:R|≡T|?A;P8:T|≡R|?B;P9:T|≡R|?C。
3) 安全目標(biāo):
G1:T|≡B;G2:T|≡C;G3:R|≡A。
4) 分析推理:
G2、G3同理。
性能分析部分選取單標(biāo)簽密鑰生成算法為例。其他兩種算法可參考表3的分析過程及方法。
表3 性能分析
表3中,符號XOR表示“異或”運(yùn)算的計算量,符號AND表示“與”運(yùn)算的計算量,符號R表示移位運(yùn)算。id、ids長度一致,用L表示。
綜合性能分析的三個方面來看,本文算法的計算量明顯多于文獻(xiàn)[10]算法的計算量,但文獻(xiàn)[10]算法存在應(yīng)用局限性等缺陷,本文算法能夠彌補(bǔ)該缺陷。與其他算法相比,本文算法在計算量或通信量或存儲空間方面有提升,且能夠解決其他算法中存在的一些安全缺陷問題。
本文研究了RFID系統(tǒng)中標(biāo)簽與讀寫器雙向認(rèn)證過程用到的共享密鑰設(shè)定問題,提出按位運(yùn)算的RFID系統(tǒng)密鑰無線生成算法。采用動態(tài)無線生成的機(jī)制產(chǎn)生共享密鑰,能夠解決密鑰托管問題,且能夠滿足用戶進(jìn)行自定義共享密鑰的需求。使用按位運(yùn)算對所要生成的共享密鑰信息進(jìn)行加密,使算法整體計算量減少。為確保信息傳輸?shù)陌踩?,信息加密過程中,混入隨機(jī)數(shù),使得前后兩輪信息不同,增大攻擊者破解難度。為拓展算法的運(yùn)用范圍,設(shè)計出三種不同場合的共享密鑰生成算法。安全性以及性能分析表明,本文算法能夠適用于當(dāng)前的RFID系統(tǒng)中。