徐遠(yuǎn)澤, 張文科
(衛(wèi)士通信息產(chǎn)業(yè)股份有限公司,四川成都610041)
射頻識別技術(shù)(Radio Frequency Identification,RFID)是一種非接觸式的自動識別技術(shù),它基于大規(guī)模集成電路與無線通信技術(shù),利用射頻信號或者空間耦合的傳輸特性來實(shí)現(xiàn)對物體的自動識別。近年來,隨著物聯(lián)網(wǎng)的快速發(fā)展,作為物聯(lián)網(wǎng)四大關(guān)鍵技術(shù)之一的RFID技術(shù)呈現(xiàn)出加速發(fā)展趨勢[1]。目前,RFID技術(shù)已被廣泛應(yīng)用于物流、供應(yīng)鏈、動物和車輛識別、門禁系統(tǒng)、圖書管理、自動收費(fèi)和生產(chǎn)制造等領(lǐng)域,特別是超高頻段(800-900 MHz)的RFID具有廣闊的應(yīng)用市場前景[2-3]。
RFID技術(shù)獲得快速發(fā)展的同時,其安全性問題日益突出,并逐漸受到人們的重視。在美國拉斯維加斯舉行的Black Hat 2004會議上,Lukas Grunwa-ld公開展示了一個名為RF Dump的工具,它可以利用RFID系統(tǒng)的弱點(diǎn)發(fā)動攻擊。任何一個人,只要在自己的筆記本電腦中插上一個讀寫器,就可以使用RF Dump軟件獲得3英尺內(nèi)的被動式RFID標(biāo)簽中的數(shù)據(jù)。美國的密碼學(xué)研究專家Adi Shamir表示,目前的RFID系統(tǒng)毫無安全可言,簡直是暢通無阻。RFID標(biāo)簽因其成本受限、存儲空間有限和計算能力較弱等特點(diǎn),成為了RFID系統(tǒng)被攻擊的主要對象[4]。于是,IBM等公司研究人員想出了裁剪標(biāo)簽天線、標(biāo)簽外套電磁屏蔽罩等物理保護(hù)機(jī)制,然而這些方法均以犧牲標(biāo)簽?zāi)承┕δ軄韺?shí)現(xiàn)安全保護(hù),存在使用不便等問題[5],因此,基于密碼技術(shù)的安全保護(hù)機(jī)制得到國內(nèi)外學(xué)者的廣泛關(guān)注。
在2007年,德國Ruhr大學(xué)的A.Bogdanov提出了一種針對RFID等安全應(yīng)用環(huán)境的輕量級密碼算法—PRESNET算法,因其具有優(yōu)秀的算法安全性及硬件實(shí)現(xiàn)效率,成為輕量級密碼算法的典型代表,并已成為ISO/IEC 29192-2:2012輕量級密碼算法國際標(biāo)準(zhǔn)。在2011年,我國中科院吳文玲、張蕾等人提出了一種輕量級算法—LBlock算法。該算法考慮了實(shí)現(xiàn)代價、實(shí)現(xiàn)效率和算法安全性等多方面因素,是我國輕量級密碼領(lǐng)域研究的成果之一。以下主要針對上述兩種算法的FPGA實(shí)現(xiàn)展開研究。
PRESENT算法[6]基于SP網(wǎng)絡(luò)結(jié)構(gòu),加解密過程需要32輪迭代運(yùn)算,其數(shù)據(jù)分組長度為64比特,密鑰有80比特和128比特兩種長度。于是,根據(jù)密鑰長度的不同,PRESENT算法分為PRESENT-80和PRESENT-128兩種版本。以下主要研究PRESE-NT-128在RFID系統(tǒng)上的應(yīng)用。
圖1 PRESENT算法加密流程
PRESENT-128每輪加密主要由三種運(yùn)算組成:異或、S盒替換、P置換。異或運(yùn)算是每輪數(shù)據(jù)進(jìn)行加密的第一種運(yùn)算,主要是將當(dāng)前狀態(tài)數(shù)據(jù)與輪密鑰進(jìn)行異或處理。S盒替換是非線性運(yùn)算,首先將異或結(jié)果按4比特分組,劃分為16組,分別送入S盒進(jìn)行替換處理,其輸入輸出關(guān)系如表1,表中x代表十進(jìn)制輸入,S(x)代表十進(jìn)制輸出。P置換是將S盒處理的結(jié)果進(jìn)行比特位的重新排序,提高數(shù)據(jù)的擴(kuò)散速度,P置換的輸入輸出關(guān)系如表2所示,表中i代表輸入的比特位,P(i)代表輸出比特位,如輸入的第4比特位經(jīng)過P置換后變成輸出的第1比特位。
表1 PRESENT-128算法的S盒
表2 PRESENT-128算法的P置換
PRESENT-128每輪的密鑰更新過程如下:首先,密鑰存儲在密鑰寄存器K中,其按比特可表示為k127k126…k0。密鑰寄存器循環(huán)左移61位,然后,高8位數(shù)據(jù)經(jīng)過S盒替換,輪計數(shù)值與寄存器的62-66比特位進(jìn)行異或運(yùn)算,經(jīng)過上述變換得到新的密鑰,并將新密鑰的高64位作為輪密鑰輸出。上述過程可表示為以下表達(dá)式:
PRESENT-128的解密過程同加密過程相似,只是解密過程中使用的S盒和P置換是逆S盒和逆P置換,并且子密鑰的使用順序是反向的。
LBlock算法[7]基于Feistel架構(gòu),數(shù)據(jù)分組長度為64比特,密鑰長度為80比特,迭代輪數(shù)32輪。算法的過程如下:
首先,將64比特明文P分成左右兩個32比特X1和X0,即
最后,將輸出X32和X33拼接在一起作為64比特密文輸出
為加快推進(jìn)木圖工程建設(shè)項(xiàng)目審批制度改革,加強(qiáng)從事土木工程活動的勘察設(shè)計企業(yè)和施工圖審查機(jī)構(gòu)的動態(tài)監(jiān)管,提高勘察設(shè)計行業(yè)信息化管理水平,健全全過程電子監(jiān)管,推進(jìn)施工圖審查提速增效和企業(yè)誠信管理,營造誠實(shí)守信的勘察設(shè)計市場環(huán)境??梢越?shù)字化施工圖審查系統(tǒng)平臺、勘察設(shè)計企業(yè)和施工圖審查機(jī)構(gòu)信用評價管理平臺。兩個平臺的同步運(yùn)用,進(jìn)一步完善了勘察設(shè)計行業(yè)的事中事后管理措施,全面提高審批效率,實(shí)現(xiàn)了事半功倍。
其中F函數(shù)包括兩種運(yùn)算:S盒替換和P置換。S盒采用984個不同的4比特輸入4比特輸出S盒,P置換是將8個S盒的輸出進(jìn)行順序交換變化。S盒的輸入輸出關(guān)系如表3,其中x代表十進(jìn)制輸入,S(x)代表十進(jìn)制輸出。P置換的過程如下:
假設(shè)P置換的32位輸入為X,按4比特分組可表示為
經(jīng)過P置換后輸出為
表3 LBlock算法的S盒
LBlock每輪的密鑰更新過程如下:首先,密鑰存儲在密鑰寄存器K中,其按比特可表示為k79k78…k0。密鑰寄存器循環(huán)左移29位,然后,高8位數(shù)據(jù)經(jīng)過S8盒和S9盒替換,輪計數(shù)值與寄存器的46-50比特位進(jìn)行異或運(yùn)算,經(jīng)過上述變換得到新的密鑰,并將新密鑰的高32位作為輪密鑰輸出。上述過程可表示為以下表達(dá)式:
LBlock的解密過程同加密過程相似,只是解密過程中先進(jìn)行S盒和P置換,然后再進(jìn)行循環(huán)移位,循環(huán)移位的方向反向,并且子密鑰的使用順序也是反向的。
在2013年,我國正式發(fā)布了超高頻段RFID協(xié)議——GB/T29768-2013《信息技術(shù) 射頻識別800/900 MHz空中接口協(xié)議》,并于2014年正式進(jìn)入實(shí)施階段。協(xié)議主要針對840MHz-845MHz、920MHz-925MHz頻段范圍內(nèi)的RFID應(yīng)用,并對 RFID安全性進(jìn)行了充分考慮,涵蓋了安全鑒別和安全通信內(nèi)容,對規(guī)范我國超高頻段RFID應(yīng)用具有重要的指導(dǎo)作用。
將算法應(yīng)用到協(xié)議中,設(shè)計了圖2所示的對稱加密雙向鑒別協(xié)議[6]。
圖2 對稱加密雙向鑒別協(xié)議
基于PRESENT-128或者LBlock的對稱加密雙向鑒別協(xié)議過程如下:
首先,讀寫器發(fā)送安全參數(shù)獲取命令?
第二步,標(biāo)簽對安全參數(shù)獲取命令做出響應(yīng),將標(biāo)簽標(biāo)識符TID以及安全模式、安全功能等安全參數(shù)發(fā)送給讀寫器?
第三步,讀寫器用根密鑰RK和標(biāo)簽的TID生成鑒別密鑰AK,發(fā)送請求鑒別命令Req_SAuth給標(biāo)簽?
第四步,標(biāo)簽收到請求鑒別命令后,生成隨機(jī)數(shù)RNt發(fā)送給讀寫器?
第五步,讀寫器生成隨機(jī)數(shù)RNr和會話密鑰SK,使用PRESENT-128算法或者LBlock算法對鑒別密鑰AK、待加密數(shù)據(jù)RNr||RNt||SK 進(jìn)行加密,并得到加密結(jié)果 EAK(RNr||RNt||SK),將加密結(jié)果通過雙向鑒別命令 Mul_SAuth(RNt||EAK(RNr||RNt||SK))發(fā)送給標(biāo)簽?
第六步,標(biāo)簽收到鑒別命令后,首先判斷接收到的RNt是否與自己在第四步中自己產(chǎn)生的RNt相等,若相等,標(biāo)簽通過PRESENT-128算法或者LBlock算法,載入密鑰AK以及加密數(shù)據(jù) EAK(RNr||RNt||SK)),解密得到 RNr′||RNt′||SK。 接著比較RNt′與RNt,若相等,則標(biāo)簽認(rèn)為讀寫器通過鑒別,將RNr′發(fā)送給讀寫器,跳轉(zhuǎn)到開放狀態(tài),并將SK作會話密鑰為安全通信階段使用?如果不相等,則標(biāo)簽認(rèn)為讀寫器未通過鑒別,發(fā)送響應(yīng)數(shù)據(jù)包,跳轉(zhuǎn)到仲裁狀態(tài)?
第七步,讀寫器接收到RNr”后,比較RNr”和RNr是否相等,若相等,則認(rèn)為標(biāo)簽通過鑒別,且將SK作會話密鑰為安全通信階段使用?如果不相等,則讀寫器認(rèn)為標(biāo)簽未通過鑒別。
圖3 PRESENT-128接口圖
設(shè)計的算法模塊接口如圖3所示,PRESENT-128共有6個端口。 其中 CLK、Ready、Data_i、Key_i為 6 個輸入端口,Data_o、Done為2個輸出端口。6個輸入端口中,CLK為時鐘信號?Data_i和Key_i分別為64比特的明文輸入和128比特的初始密鑰輸入?Ready為明文和密鑰輸入信號,當(dāng)Ready=1后的第一個時鐘上升沿,明文和初始密鑰開始從端口Data_i和Key_i輸入。2個輸出信號中,Data_o為加密后的64比特數(shù)據(jù)輸出?Done為輸出有效信號,當(dāng)Done為1時,代表Data_o輸出的數(shù)據(jù)為最終加密的有效數(shù)據(jù)。
如圖4所示,PRESENT-128加密硬件實(shí)現(xiàn)由兩個并行處理的部分組成:數(shù)據(jù)加密處理和密鑰擴(kuò)展處理。電路開始運(yùn)行時,首先將待加密數(shù)據(jù)和初始密鑰分別載入Data和Key兩個個寄存器。Data是64位的寄存器,用于存儲加密數(shù)據(jù)。Key為128位的寄存器,用于存儲密鑰。數(shù)據(jù)加載完成后,開始進(jìn)行數(shù)據(jù)加密處理,同時進(jìn)行密鑰的擴(kuò)展更新,每一輪的加密和密鑰擴(kuò)展均在一個時鐘周期內(nèi)完成。在每一輪加密過程中,Data與相應(yīng)的加密輪密鑰進(jìn)行異或,然后將異或的結(jié)果經(jīng)過16個4比特輸入4比特輸出的S盒進(jìn)行變換,變換后的數(shù)據(jù)又經(jīng)過P_Layer進(jìn)行混淆處理,處理后的結(jié)果更新到Data中。于此同時,密鑰進(jìn)行更新處理,首先進(jìn)行61比特循環(huán)左移,然后將相應(yīng)的比特位進(jìn)行S盒置換以及異或運(yùn)算處理,生成新的密鑰數(shù)據(jù)以更新Key寄存器,并將高32比特數(shù)據(jù)作為輪密鑰送入數(shù)據(jù)加密處理。按上述步驟進(jìn)行32輪加密,最后輸出加密結(jié)果。
圖4 PRESENT-128加密硬件結(jié)構(gòu)
圖5 LBlock接口圖
LBlock算法的硬件接口同PRESENT-128算法相似,同樣有6個端口。 其中 CLK、Ready、Data_i、Key_i為 6個輸入端口,Data_o、Done為2個輸出端口。6個輸入端口中,CLK為時鐘信號?Data_i和Key_i分別為64比特的明文輸入和80比特的初始密鑰輸入?Ready為明文和密鑰輸入信號,當(dāng)Ready=1后的第一個時鐘上升沿,明文和初始密鑰開始從端口Data_i和Key_i輸入。2個輸出信號中,Data_o為加密后的64比特數(shù)據(jù)輸出?Done為輸出有效信號,當(dāng)Done為1時,代表Data_o輸出的數(shù)據(jù)為最終加密的有效數(shù)據(jù)。
圖6 LBlock加密硬件結(jié)構(gòu)
如圖6所示,LBlock加密的硬件實(shí)現(xiàn)也可以分為兩個并行處理的部分:數(shù)據(jù)加密處理和密鑰擴(kuò)展處理。電路開始運(yùn)行時,首先將待加密數(shù)據(jù)和初始密鑰分別載入 Data_L、Data_R和 Key三個寄存器。 Data_L和 Data_R均是 32位的寄存器,用于存儲加密數(shù)據(jù)。Key為128位的寄存器,用于存儲密鑰。數(shù)據(jù)加載完成后,開始進(jìn)行數(shù)據(jù)加密處理,同時進(jìn)行密鑰的擴(kuò)展更新,每一輪的加密和密鑰擴(kuò)展均在一個時鐘周期內(nèi)完成。在每一輪加密過程中,Data_R與相應(yīng)的加密輪密鑰進(jìn)行異或,然后將異或的結(jié)果經(jīng)過8個4比特輸入4比特輸出的S盒進(jìn)行置換,置換后的數(shù)據(jù)又經(jīng)過P_Layer進(jìn)行混淆處理,處理后的結(jié)果與Data_L異或生成新的Data_R,同步將更新前的Data_R數(shù)據(jù)存儲到Data_L中。于此同時,密鑰進(jìn)行更新處理,首先進(jìn)行29比特循環(huán)左移,然后將相應(yīng)的比特位進(jìn)行S盒置換以及異或運(yùn)算處理,生成新的密鑰數(shù)據(jù)以更新Key寄存器,并將最高32比特密鑰數(shù)據(jù)作為輪密鑰送入數(shù)據(jù)加密處理。按上述步驟進(jìn)行31輪加密,第32輪取消Data_L和Data_R的交換作為輸出結(jié)果。
利用Xilinx ISE9.2i軟件,選擇xilinx公司型號為xc5vlx330的FPGA作為平臺庫,對LBlock算法、PRESENT-128的Verilog HDL代碼進(jìn)行綜合分析,評估了算法在FPGA上實(shí)現(xiàn)情況。實(shí)現(xiàn)的結(jié)果見表4,其中還列出了PRESENT-80的實(shí)現(xiàn)結(jié)果。
根據(jù)表4可以看出,LBlock的FPGA實(shí)現(xiàn)占用了資源75 Sclices,比PRESENT-80的資源占用量 79Sclices和 PRESENT-128的資源占用量90Sclices均小。然而,LBlock的最大工作頻率為521MHz,比PRESNT-80和 PRESNT-128的最大工作頻率較低,導(dǎo)致其吞吐量也比PRESENT-80和PRESENT-128稍低。
表4 實(shí)現(xiàn)結(jié)果比較
PRESENT-128因其密鑰長度最長,導(dǎo)致其電路用于存儲密鑰的FFs數(shù)比LBlock和 PRESENT-80的都多,同時 PRESENT-128電路LUTs數(shù)也占用較多,導(dǎo)致其資源占用Sclices數(shù)最多。將其與FPGA的總資源做一個比較,得到表5所示結(jié)果。從表5可知,PRESENT-128各項(xiàng)資源占用量均在0.2%以下,顯然,LBlock和PRESENT-80的資源占用量也是低于0.2%的,因此,再次證明PRESENT算法和LBlock算法是適合于RFID等輕量化的安全應(yīng)用環(huán)境,同時也是適合于FPGA硬件實(shí)現(xiàn)的。
表5 PRESENT-128占用FPGA資源情況
RFID技術(shù)快速發(fā)展的同時,其安全性問題日益突出,基于輕量級密碼算法的RFID安全方案得到廣泛研究。PRESENT算法和LBlock算法因其安全性高、實(shí)現(xiàn)效率高等優(yōu)點(diǎn)得到廣泛研究。通過對這兩種算法的研究,實(shí)現(xiàn)了算法在協(xié)議上的應(yīng)用,同時研究了這兩種算法在FPGA上的實(shí)現(xiàn)結(jié)構(gòu)和實(shí)現(xiàn)性能。通過在統(tǒng)一FPGA平臺下對兩種算法進(jìn)行了評估分析,從結(jié)果中可以看出,這兩種輕量級算法是適合于FPGA硬件實(shí)現(xiàn)的,特別是可以作為RFID系統(tǒng)中標(biāo)簽和讀寫器的安全組成部分。
[1] 李如年.基于RFID技術(shù)的物聯(lián)網(wǎng)研究[J].中國電子科學(xué)研究院學(xué)報, 2009,4(06):594-597.
[2] WEINSTEIN Ron.RFID:A Technical Overview and Its Application to the Enterprise[J].IT professional, 2005,7(3):27-33
[3] OREN Yossef,SHAMIR Adi.Remote Password Extraction from RFID Tags[J].IEEE Transactions on Computers archive,2007,56(9):1292-1296.
[4] 張宏壯,王建民.RFID中的安全隱私問題及策略分析[J].微計算機(jī)信息,2008,24(6-3):47-49.
[5] 彭朋,韓偉力,趙一鳴等.基于RFID的物聯(lián)網(wǎng)安全需求研究[J].計算機(jī)安全,2011(01):75-79.
[6] A.BOGDANOV, L.R.KNUDSEN, G.LEANDER, and et al.PRESENT:An Ultra-Lightweight Block Cipher[C]//The 9th InternationalWorkshop on Cryptographic Hardware and Embedded Systems.Berlin:Springer Berlin Heidelberg, 2007:450-466.
[7] WU Wenling,ZHANG Lei.LBlock:A Lightweight Block Cipher[C]//The 9th International Conference on Applied Cryptography and Network Security.Berlin:Springer Berlin Heidelberg,2011:327-344.
[8] 全國信息技術(shù)標(biāo)準(zhǔn)化技術(shù)委員會.GB/T 29768-2013,信息技術(shù) 射頻識別800-900MHz空中接口協(xié)議[S].北京:中國標(biāo)準(zhǔn)出版社,2014:45-50.