曹朝陽 吳慶濤
1(河南省市場監督管理局 河南 鄭州 450008)2(鄭州航空工業管理學院 河南 鄭州 450015)
無線射頻識別(Radio Frequency Identification,RFID)是一種非接觸式、自動識別和采集信息的綜合性技術[1-3]。RFID系統具備成本低、易攜帶、壽命長等優點,已經運用在身份識別等各個領域中[4-6]。
為推動RFID系統更進一步發展及應用,研究人員提出許多方法來解決安全問題,其中標簽與讀寫器之間的雙向認證尤為突出。兩個通信實體在雙向認證過程中,涉及共享密鑰重要參量[7-9]。
現有的雙向認證協議中用到的共享密鑰大多都是在標簽出廠之前設定好的,這種做法有一定的好處,但也存在一定的缺陷:(1) 會帶來密鑰托管問題,負責托管的人員可能會因托管不當而導致密鑰泄露;(2) 密鑰始終只能由廠商設定,無法由用戶自己設定,在一定程度上無法滿足用戶自定義密鑰的需求。基于以上缺陷,專家及學者提出在標簽與讀寫器之間動態地生成共享密鑰,既可以避免因托管人員管理不當而造成的密鑰泄露問題,也可以滿足用戶自定義密鑰的需求。
文獻[10]創新地利用RFID系統信道的前后非對稱性特征,設計出一種動態生成共享密鑰的算法。該算法能夠彌補提前設定密鑰的不足,但仍存在一定缺陷:協議基于后向信道的不可竊聽性,在標簽傳送給讀寫器信息時,采用明文直接傳送。但在實際應用中,后向信道仍存在被攻擊者竊聽的可能性,具有一定的局限性。
文獻[11]在文獻[10]的基礎之上提出一種動態生成共享密鑰的算法,遵行前向信道與后向信道均能被攻擊者竊聽的原則,彌補了文獻[10]算法的不足,但其在設計過程中未全面考慮,導致攻擊者在阻塞讀寫器到標簽的最后一個消息情況下,讀寫器生成密鑰的同時,標簽不能生成密鑰,標簽與讀寫器兩端失去一致性,因此算法無法抵抗去同步化攻擊。
文獻[12]算法采用動態生成密鑰的思想,仍遵行前后向信道均可被攻擊者竊聽原則。算法設計過程中,采用對部分ID加密的機制進行信息的傳輸,能夠增大攻擊者的破解難度,但算法無法抵抗攻擊者發起的重放攻擊。攻擊者在竊聽到上一輪信息后,對消息進行重放,并阻塞標簽與讀寫器之間的通信,破解出相關隱私信息。
文獻[13]基于假名設計出一種密鑰無線生成算法,該算法雖能夠彌補文獻[10]算法的不足,但無法抵抗去同步化攻擊。攻擊者可以截獲通信實體之間傳送的消息C,從而導致合法標簽無法驗證消息C,使得標簽一端無法生成共享密鑰,但讀寫器一端卻已生成共享密鑰,最終導致標簽與讀寫器之間的共享密鑰失去一致性。
綜上,本文設計出一種采用位運算的低計算量的共享密鑰無線生成算法。利用標簽的假名標識符ID_S進行傳輸信息的加密計算,減少其他變量的引入,有助于降低存儲空間;假名標識符的使用,在一定程度上可避免標簽唯一標識符ID的泄露;采用計算量較低的位運算進行加密,可有效減少系統整體計算量;采用標簽一端不生成隨機數機制,降低標簽端的門電路總量,有助于成本的降低。
標簽、讀寫器、后臺數據庫三部分組成一個完整的RFID系統。系統在通信過程中,讀寫器與后臺數據庫之間采用安全的有限信道進行通信,故可將兩者看成一個整體;標簽與讀寫器之間的通信采用不安全的無線信道[14-15]。有關符號的含義如表1所示,其中L取值為偶數值。

表1 符號說明
共享密鑰動態生成開始之前,Tag存有(id,ids);Reader存有(id_i,ids_i)。參考文獻[10]可以得知:密鑰生成算法需要分三種情況討論,具體如下:
1) 單標簽密鑰生成算法。算法流程如圖1所示。

圖1 單標簽密鑰生成算法流程
算法過程簡述如下:
(1) 讀寫器向標簽發出通信請求命令。
(2) 標簽計算消息A;將A傳給讀寫器。其中A=id_r⊕ids_l。
(3) 讀寫器查找存放的(id_i,ids_i)中是否有滿足A的計算結果。如未找到,算法停止。如找到,生成隨機數r;計算消息B和C、共享密鑰k;將B、C傳給標簽。其中B=r⊕ids_r,C=r⊕id_l。
說明:r長度為L位,ids_r、id_l長度為L/2位,在計算過程中將ids_r、id_l的高位部分補L/2個0,從而使得ids_r、id_l、r長度均為L位,便于計算。后面涉及長度不同的地方進行計算時,按照此計算法則進行。
(4) 標簽對B、C進行驗證(B⊕ids_r是否等于C⊕id_l)。如不相等,算法停止;如相等,計算共享密鑰k。其中k= (r⊕id)⊕(r⊕ids)。
2) 多標簽密鑰生成算法。多標簽密鑰生成算法過程與單標簽密鑰生成算法過程主要不同之處在于:每個不同的標簽在接收到讀寫器發送來的消息且通過驗證之后,共享密鑰k的生成過程中需要根據每個標簽的自身信息(id_i,ids_i)來生成屬于自身的個體密鑰。其他思想一樣,故不再闡述。
3) 群組標簽密鑰生成算法。算法流程如圖2所示。

圖2 群組標簽密鑰生成算法流程
算法流程如下:
(1) 讀寫器向標簽組廣播通信請求命令。
(2) 標簽Tagi計算消息Qi;將Qi傳給讀寫器。i=1,2,…,n。其中Qi=id_i_r⊕ids_i_l。
(3) 后臺數據庫中查找已存放的信息并計算是否與Qi信息完全一致。如不完全一致,說明有標簽未響應,第二次發送請求命令。如一致,生成隨機數r;計算唯一的共享密鑰k;同時為標簽Tagi生成唯一的密鑰因子ki;將ki發給所有標簽。其中k=ids_1_r⊕ids_2_r⊕…⊕ids_i_r⊕r,ki=k⊕ids_i_r。
(4) 標簽Tagi將自身的標號與ki中的i值作對比。如不相等,不做任何操作;如相等,計算唯一共享密鑰k。其中k=ki⊕ids_i_r。
算法的安全性分析一般從兩個角度進行闡述:(1) 對算法進行抽象,進而采用邏輯化形式進行分析,文中采用基于BAN的邏輯形式化證明對算法進行邏輯形式化分析,來說明算法的安全性。(2) 從具體的攻擊方式對算法的安全性進行分析。具體的攻擊方式主要分為兩大類:主動攻擊及被動攻擊。最常見的被動攻擊方式為監聽。而主動攻擊的方式較多,比較常見的有:異步攻擊、重放攻擊、追蹤攻擊等。
據了解,本次技能大賽分為初賽、決賽兩部分,60%的參賽人員通過初賽考核,可進入決賽環節。在決賽之前,青島市家庭服務業生態圈統一組織入圍參賽者接受為期1個月的培訓。通過決賽階段綜合筆試和實操兩項成績,最終評選出“首席家庭服務員”8人、“首席嬰幼兒營養烹飪師”“首席母嬰護理師”各10名,共28位首席技師,優勝獎50名,由青島市家庭服務產業生態圈頒發榮譽證書并授予稱號,舉行優勝獲獎者與客戶供需見面會,為島城家庭服務市場輸送優質服務人員。
攻擊者通過監聽、跟蹤等方式獲取通信實體之間的通信消息,該種攻擊方式稱之為被動攻擊。對于通信實體而言,當被動攻擊發生之時,通信實體絕大多數情況下是不知曉的。因此,為確保傳輸信息的安全性,算法必須能夠抵抗攻擊者發起的被動攻擊,即:在通信實體不知被監聽的情況下,攻擊者獲取通信信息,亦無法破解出有用的隱私信息。與被動攻擊有所不同的是,攻擊者在發起主動攻擊之時,通信實體通過實體之間的雙向認證是可以識別出真偽的。較為常見的主動攻擊方式有重放攻擊、追蹤攻擊等。
單標簽密鑰生成算法與多標簽密鑰生成算法大體一致,可將兩種算法放在一塊進行分析討論。采用監聽的方式可以獲取一個通話中所有的消息,但攻擊者仍無法得到所想要的信息。原因如下:(1) 攻擊者不知曉id、ids,因此無法從A、B或C中逆推出共享密鑰;(2)A、B、C在計算過程中,對于攻擊者來說,都至少有兩個變量是不知曉的,因此無法窮舉;(3) 計算過程中,混入隨機數r,使得前后兩次數值并不一樣,增大破解難度;(4)A、B、C加密過程中涉及的參量值,在通信過程中都沒有明文出現過。基于上述分析,攻擊者無法破解出有用的信息。
對群組標簽密鑰生成算法進行被動攻擊及主動攻擊分析。攻擊者通過監聽一個完整的通信過程,可獲取如下信息:Qi、ki。攻擊者通過這些消息仍無法破解出有用的隱私信息,原因如下:(1)Qi加密過程中,有兩個變量,對于攻擊者來說,是事前不知曉的,因此攻擊者無法窮舉;(2)ki僅僅只是計算共享密鑰k的一個密鑰因子,攻擊者即便是可以獲取,但仍無任何用處,因為由ki計算出k需要每個標簽相對應的假名,但攻擊者無法獲取該變量;(3)k在計算過程中,因隨機數r的加入,使得k前后兩次的數值并不一致;(4)k的計算,需要群組標簽里的每個標簽的假名變量,對于攻擊者來說,這些信息是無法獲取的。基于上述原因,攻擊者通過監聽獲取的信息,不足以破解出有用的隱私信息。
本文算法與其他此類密鑰動態生成算法進行安全性分析比較,結果如表2所示。表中,×表示不能抵抗;√表示能夠抵抗。
采用基于BAN邏輯[16]對算法進行形式化分析:R表示讀寫器與后臺數據庫的整體;T表示標簽。選取單標簽密鑰生成算法為例進行證明,其他兩種場合的算法證明分析過程類似。
1) 理想化模型:
消息① R→T:Request;
消息② T→R:A;
消息③ R→T:B,C。
2) 初始假設:
P7:R|≡T|?A;P8:T|≡R|?B;P9:T|≡R|?C。
3) 安全目標:
G1:T|≡B;G2:T|≡C;G3:R|≡A。
4) 分析推理:




G2、G3同理。
性能分析部分選取單標簽密鑰生成算法為例。其他兩種算法可參考表3的分析過程及方法。

表3 性能分析
表3中,符號XOR表示“異或”運算的計算量,符號AND表示“與”運算的計算量,符號R表示移位運算。id、ids長度一致,用L表示。
綜合性能分析的三個方面來看,本文算法的計算量明顯多于文獻[10]算法的計算量,但文獻[10]算法存在應用局限性等缺陷,本文算法能夠彌補該缺陷。與其他算法相比,本文算法在計算量或通信量或存儲空間方面有提升,且能夠解決其他算法中存在的一些安全缺陷問題。
本文研究了RFID系統中標簽與讀寫器雙向認證過程用到的共享密鑰設定問題,提出按位運算的RFID系統密鑰無線生成算法。采用動態無線生成的機制產生共享密鑰,能夠解決密鑰托管問題,且能夠滿足用戶進行自定義共享密鑰的需求。使用按位運算對所要生成的共享密鑰信息進行加密,使算法整體計算量減少。為確保信息傳輸的安全性,信息加密過程中,混入隨機數,使得前后兩輪信息不同,增大攻擊者破解難度。為拓展算法的運用范圍,設計出三種不同場合的共享密鑰生成算法。安全性以及性能分析表明,本文算法能夠適用于當前的RFID系統中。