文獻標識碼: A
文章編號: 0258-7998(2013)04-0126-04
射頻識別技術RFID(Radio Frequency Identification)是一種非接觸的自動識別技術,可應用于商品和證件的防偽、供應鏈管理、圖書管理、航空包裹管理和門禁等多個領域。歐美國家在RFID標準的建立、相關軟硬件技術的開發與應用上處于領先地位。相比之下,國內RFID市場尚處于前期宣傳預熱階段,相關產業發展還較為落后,許多安全方面的技術依賴于國外廠商。
RFID的低成本與安全性一直以來是一對矛盾,為了使RFID得到更廣泛的應用,降低成本是唯一的途徑。但成本的降低使得高安全性的措施難以在RFID標簽上實現,安全得不到保證同樣制約著RFID的推廣。此外功耗也是需要嚴格控制的一方面,尤其對于無電源供給、僅僅依靠閱讀器電磁場提供能量的無源標簽更是如此。同時,低功耗的要求也限制了RFID標簽的運算能力。
因此,要在RFID標簽資源受限的環境中設計出安全有效的安全技術解決方案,傳統的高強度加密算法已不再適用。本文采用一種新的流密碼算法結合相互認證技術為RFID系統中標簽與閱讀器的通信過程提供安全保障,并在FPGA上實現了密碼算法。
1 RFID系統簡介
RFID系統由標簽(Tag)、閱讀器(Reader)和后臺服務器(Back-End Server)三部分構成。標簽由耦合元件及芯片組成,用于存放識別信息,通常根據是否有自帶電源分為有源標簽和無源標簽。閱讀器通過無線信道讀取標簽中的信息,有的閱讀器還可以往標簽中寫入數據。后臺服務器保存了標簽和閱讀器的所有信息,通過與閱讀器交互實現對整個RFID系統的管理。
工作時,無源標簽進入閱讀器產生的磁場時憑借感應電流所獲得的能量發送出存儲在芯片中的產品信息;而有源標簽則是主動發送某一頻率的電磁波。閱讀器接收到信號并解碼后,將數據送到后臺服務器進行相關處理。
2 RFID系統的安全方案
RFID利用開放的無線電環境通信,因此容易受到攻擊。通常攻擊的方式分為被動攻擊和主動攻擊。其中截獲信息的攻擊稱為被動攻擊,例如試圖非法獲取標簽中重要數據信息等,對應被動攻擊的主要技術手段是加密。更改、偽造信息和拒絕用戶使用資源的攻擊手段稱為主動攻擊,對應主動攻擊的重要技術是認證[1]。
RFID安全問題的特殊性還在于標簽受限的計算能力,典型標簽的電流只有15 mA,門陣列只有7 500~15 000個,其中可用于安全和隱私保護的門電路數量限制在5 000以內,這使得許多優秀的密碼算法無法在標簽上實現。因此尋找一種適合于RFID系統使用的密碼算法是本文討論的重點之一。
2.1 相互認證技術
認證技術用于解決閱讀器與標簽之間的互相認證問題。即標簽應確認閱讀器的身份,防止存儲數據未經許可被讀出或重寫;而閱讀器也要確認應答器的身份,以防止讀入偽造數據。相互認證過程如圖1所示,具體步驟如下:
(1) 閱讀器發送查詢口令給標簽,標簽產生一個隨機數RB1傳回給閱讀器作為回應。
(2)閱讀器產生一個隨機數RA,使用共享的密鑰K和共同的加密算法EK對RA及RB1加密,即算出數據塊1=EK(RA,RB1),并將數據塊1發送給標簽。
(3) 標簽將數據塊1解密,把獲得的隨機數RB1′與RB1作比較,如果一致,則標簽可以確認通信雙方的密鑰是一致的,即標簽完成了對閱讀器的認證。
(4) 標簽另行產生一個隨機數RB2,并發送另一個加密數據塊2給閱讀器,數據塊2=EK(RB2,RA)。
(5) 閱讀器將數據塊2解密后,檢查原先發送RA的與接收到的RA′是否一致,若一致則閱讀器證明了雙方共有的密鑰是一致的,即完成了閱讀器對標簽的認證。
綜上所述,相互認證技術有如下安全特性:
(1) 閱讀器與標簽之間的通信數據經過加密,在攻擊者不知道密鑰和密碼算法的前提下,即使截獲密文,也無法解密獲取明文內容。
(2) 同時加密兩個隨機數,避免已知明文攻擊。
(3) 閱讀器與標簽之間通信的數據是隨機變化的,攻擊者無法根據歷史數據跟蹤用戶位置,有效地保護了用戶的位置隱私。
(4) 由于每次通信都有隨機數參與,攻擊者無法預料到下一次通信的內容,因此無法通過截獲到的數據進行重放攻擊。
2.2 Grain-128a
2004年,歐洲啟動eSTREAM計劃,目的是尋找能夠廣泛使用的流密碼算法。候選的算法分為軟件組和硬件組,軟件組的算法要求運行速度優于AES(Advanced Encryption Standard)算法,硬件組的算法要求在有限的硬件資源環境(例如RFID)下至少有一方面明顯超越AES算法[2]。Grain-128a的前身Grain v1是硬件組最終獲選的4個算法之一。Grain v1支持長度為80的密鑰,但考慮到在現代計算機的運算能力下,這一密鑰長度的算法不能有效地抵抗窮舉攻擊,故將密鑰長度增加到128,并將改進后的算法命名為Grain-128[3]。Grain-128a是在Grain-128的基礎上發展而來的。與Grain-128相比,Grain-128a能夠抵抗自發表以來各種針對Grain-128的攻擊。值得一提的是,除了最近Itai Dinur和Adi Shamir提出的Dynamic Cube攻擊[4],其他攻擊都沒能對Grain-128造成有效威脅。此外,Grain-128a能夠支持認證機制。
2.2.1 Grain-128a的性能分析
同Grain v1及Grain-128一樣,Grain-128a設計面向資源受限的硬件環境,即要求非常低的資源消耗和功率消耗。參考文獻[4]從eSTREAM第二階段的候選算法中選出8個適于硬件實現的算法(其中含有最終獲選的4個算法)以及AES算法從功耗、吞吐量、速度等方面進行對比分析,分析結果證實了Grain系列算法各方面的優異性能。得益于Grain在功耗、面積上的突出表現,推薦在低端的RFID系統上應用Grain v1及Grain-128。Grain-128a在Grain-128的基礎上僅作了少量更改,保留了Grain-128的優勢并且增強了安全性能,因此本文選擇Grain-128a作為認證過程中的密碼算法。
3 算法測試與仿真
Grain-128a在Xilinx公司的ISE開發平臺上使用VHDL編程實現,器件選用Spartan3E系列的FPGA芯片xc3s500e-4-pq208,使用ISE自帶的綜合器進行綜合。算法大約需要3 000個門陣列,時鐘頻率能夠達到176 MHz,每個時鐘周期輸出2位數據,輸出N位的密鑰流(包含密鑰輸入及初始化過程)僅需要(65+128+N/2)個時鐘周期,如果在125 kHz的RFID系統上使用, 加密或解密1 024位的數據大約需要5 ms,能夠滿足實際需求。
本文利用參考文獻[6]中給出的測試向量集對算法進行測試,仿真結果如圖5、圖6所示。
將仿真結果與測試向量集里的密鑰流進行對比,驗證了算法的正確性。
作為eSTREAM的獲選密碼算法,Grain-128a在安全性上無疑處于高水平,而對硬件資源的低需求則使它即使是在射頻標簽上也能有上佳表現。本文針對RFID系統的特點,提出一種結合Grain-128a密碼算法與相互認證技術的安全方案,設計了一種安全、低成本與低功耗的RFID系統。
參考文獻
[1] 單承贛,單玉峰,姚磊. 射頻識別(RFID)原理與應用[M].北京:電子工業出版社,2008:128-143.
[2] The eSTREAM Portfolio[EB/OL].[2008-04-15].http://www.ecrypt.eu.org/stream/portfolio.pdf.
[3] HELL M, JOHANSSON T, MAXIMOV A,et al. A stream cipher proposal Grain-128[R]. Seattle: IEEE International Symposium on Information Theory, 2006:1614-1618.
[4] DINUR I, SHAMIR A. Breaking Grain-128 with dynamic cube attacks[R]. Lyngby: FSE, 2011.
[5] GOOD T, BENAISSA M. Hardware results for selected stream cipher candidates[R]. Bochum: SASC, 2007.
[6] AGREN M, HELL M, JOHANSSON T, et al. A new version of Grain-128 with Authentication[R]. Lyngby: ECRYPT Workshop on Symmetric Encryption, 2011.