基于時間的RFID加密傳輸算法的研究
盛魁
(亳州職業(yè)技術(shù)學院信息工程系,安徽 亳州 236800)
摘要:無線射頻識別系統(tǒng)由于其便捷、價廉的特點,發(fā)展十分迅速,在社會生活中起到越來越重要的作用,其信息安全問題受到越來越多的關(guān)注。針對傳輸過程中標簽信息安全問題,提出一種基于時間的RFID加密傳輸算法,有效解決RFID標簽信息的安全問題。理論分析和仿真結(jié)果表明該算法具有良好的穩(wěn)定性、安全性和較高的傳輸效率及易于實現(xiàn)等優(yōu)點。
關(guān)鍵詞:RFID;傳輸協(xié)議;加密;安全
中圖分類號:TP 305
作者簡介:周芳(1985-),女,山西代縣人,忻州師范學院計算機系教師。
Encrypted Transmission Algorithm of RFID Based on Time
SHENG Kui
(Department of Information Engineering,Bozhou Vocational and Technical College,Bozhou,Anhui 236800,China)
Abstract:Radio frequency identification(RFID)system is developing rapidly due to its characteristics of convenience and cheapness,playing a more and more important role in social life.The problem of its information security has attracted great attention.On the problem of security of tag information in the process of transmission,this paper presents an algorithm based on the RFID encryption transmission time,effectively solving the security problem of the RFID tag information.Theoretical analysis and simulation results show that the algorithm has good stability and security,high transmission efficiency and being easy to realize.
Key words:RFID;transfer protocol;encryption;security
1前言
射頻識別(radio frequency identification,RFID)技術(shù)是一種利用無線電波來識別人或者物體的非接觸式自動識別技術(shù)。與傳統(tǒng)條碼相比,RFID具有長距離讀取、可程式化、可存放大量資料、可重復讀寫資料及在范圍內(nèi)可以同時讀取大量標簽等優(yōu)勢,已經(jīng)廣泛應用于工業(yè)生產(chǎn)和日常生活的各個方面,如,在物聯(lián)網(wǎng)、商品追蹤、供應鏈、物流等領(lǐng)域中有著廣泛的應用[1,2]。由于RFID系統(tǒng)的通信數(shù)據(jù)處于開放的無線狀態(tài),外界容易對系統(tǒng)進行各種信息干擾及信息盜取,因此RFID系統(tǒng)的安全問題,成為當前IT行業(yè)研究的熱點之一。
本文研究RFID系統(tǒng)中安全和隱私保護方法的基礎上,提出一種基于時間的RFID加密傳輸算法。首先在標簽(Tag)和閱讀器(Reader)中建立一個特定公式產(chǎn)生的編碼表,當傳輸發(fā)生時,先利用經(jīng)過MD5演算法編碼過的Unix Time來查詢編碼表,再送到Tag進行驗證。Tag收到資料后會驗證資料是否正確,當驗證通過后Tag會與傳輸資料交互運算,最后送出加密后的信息。由于時間只會不斷改變,所以可以確保每次參與運算的Unix Time變數(shù)都是唯一的,攻擊者就沒有辦法通過分析傳輸封包的方式來監(jiān)視傳輸內(nèi)容,不能復制Tag,提高了RFID系統(tǒng)的安全性。
2相關(guān)技術(shù)研究
RFID系統(tǒng)主要包括電子標簽(Tag)、閱讀器((Reader)和后端數(shù)據(jù)庫(Database)3部分[3,4],它的運行依賴于閱讀器(Reader)與標簽(Tag)之間的通信合作。標簽具有唯一的識別碼(Identification code,ID),被貼附到待識別的物體上;閱讀器是讀取電子標簽內(nèi)部信息和向電子標簽內(nèi)部寫入信息的設備,可外接天線,用于發(fā)送和接收射頻信號;后端數(shù)據(jù)庫包括信息處理系統(tǒng)、中間件、數(shù)據(jù)庫等,用以對閱讀器讀取的標簽信息進行處理,其功能涉及到具體的系統(tǒng)應用,如實現(xiàn)信息加密或安全認證等。
RFID系統(tǒng)的工作原理是由內(nèi)建天線的Reader發(fā)送特定頻率的射頻信號給Tag,當Tag收到射頻信號之后就會驅(qū)動內(nèi)建的硬體電路,將Tag內(nèi)部的資料傳回Reader,而Reader在收到資料之后再將資料傳回Database做進一步處理與管理。
在RFID系統(tǒng)工作過程中,閱讀器與標簽通信方式為多路存取,并使用同一無線信道。當多個標簽同時向閱讀器發(fā)送數(shù)據(jù)信號時,由于標簽彼此之間的信號相互干擾,導致閱讀器不能正確識別標簽,即產(chǎn)生數(shù)據(jù)碰撞,消耗了系統(tǒng)的時間和能量。解決數(shù)據(jù)碰撞的方法有頻分多址(FDMA)、時分多址(TDMA)、碼分多址(CDMA)和空分多址(SDMA)4種。
目前,時分多址(TDMA)算法是RFID系統(tǒng)防碰撞問題的常用方法[6-7],在實際應用中TDMA防碰撞算法又可以分為兩大類:一類是基于ALOHA的不確定型算法,包括純ALOHA、時隙ALOHA、幀時隙ALOHA和動態(tài)幀時隙ALOHA算法等;另一類是基于樹型的確定型算法包括純分裂樹算法、二進制樹算法、二叉搜索樹算法和查詢樹算法等。
3基于時間的RFID加密傳輸算法的分析
為了解決RFID系統(tǒng)的安全問題,需要為RFID系統(tǒng)構(gòu)造一個可靠的安全機制,為了Reader與Tag間的傳輸數(shù)據(jù)和相互認證,所有的安全機制都需要建立在一個加密算法的基礎之上。
MD5算法是在1992年由Ronald L.Rivest設計出來的一種加密算法,針對現(xiàn)有的MD2、MD3、MD4算法加強復雜度及不可逆性。任意長度的資料經(jīng)過MD5算法處理后會輸出一個128 bits的資料。采用MD5算法作為Unix Time時間編碼的原因在于任何一個字節(jié)的變動都會讓MD5算法輸出的結(jié)果產(chǎn)生相當大的差別,舉例而言,1293840000經(jīng)過MD5算法編碼過后會得到0x2289C5B863D8A731EDE6BBA454FB400A的結(jié)果,而只要稍稍改動一個字節(jié),將前一個的Unix Time加上1 S,就會與剛剛的結(jié)果截然不同,變成了0xD68422765723F56B5E3B0B5A8F49999B。因為MD5算法有如此特性,所以采用MD5算法輸出的結(jié)果直接當做字節(jié)來作為Unix Time的編碼值。
在編碼表的部分,首先在Reader與Tag內(nèi)部必須預先記錄同樣的一組Base Code(B,B0~15)的組成字節(jié)為亂數(shù)排序,16進位0-F,從第1個字節(jié)到第16個字節(jié)均對應到編碼表bit位置的0-F,在Reader與Tag中各自保存一份相同的Base Code。另外還要根據(jù)16進位的Tag ID長度k來決定一組相同長度的Cipher C,而C0~k-1的組成字節(jié)一樣也是16進位0-F,同樣采亂數(shù)產(chǎn)生并且儲存于Reader及Tag之中。有了Base Code與Cipher,可以利用XOR運算來計算此編碼表中任意位置的任意值。編碼表產(chǎn)生方式的Pseudo Code如下所示:
Encoding Table=Arry[k,16];
for(i=0;i for(j=0;j<16;j++){ Encoding Table=Arry[i,j]=Cipher.XOR BaseCode; } } 當傳輸開始時,Reader會先取得目前的Unix Time,然后通過MD5算法加密成一串32字節(jié)16進位的字符串。接著將Tag ID以16進位表示,得到Tag ID的字節(jié)長度為k,例如1byte的16進位Tag ID 0x3F,字節(jié)長度k就是2;回到剛剛產(chǎn)生的MD5字符串,從第一個字節(jié)開始攫取2 k個字節(jié)得到P0~2k-1。取得了P以后,將P從中間分成一半,前半段為P0P1……Pk-1,后半段為PkPk+1……P2k-1,然后先將前半段Pi的值逐字直接對應到編碼表Ci⊕BPi的值,后半段Pi一樣重復相同的步驟,經(jīng)過編碼表轉(zhuǎn)換過后的值X0~k-1,然后Tag發(fā)送P0P1……Pk-1PkPk+1……P2k-1X0X1……Xk-1。 Tag在收到Reader傳來的加密信息后,會對資料作驗證以確保信息發(fā)送來源可信任,若驗證通過[10],Tag會利用此加密信息的資料,進一步加入要傳回的信息一并傳送回Reader;若是驗證失敗,Tag會停止發(fā)送信息一段時間,避免攻擊者采用窮舉法惡意破解。 Tag會將收到的字符串平均分為3部分,第一部分為P0~k-1,第二部分為Pk~2k-1,第三部分X0~k-1。先將P0~k-1逐字直接對應到編碼表Ci⊕BPi得到Q0Q1……Qk-1,再將Pk~2k-1逐字直接多余到編碼表Ci⊕BPi得到QkQk+1……Q2k-1,最后將P0~k-1與Pk~2k-1做XOR運算得到X'0X'1……X'k-1,如果X0~k-1與X'0~k-1相等,則驗證通過,否則驗證失敗。 驗證成功后,Tag需要將自身ID0~k-1與P0~k-1相互進行XOR運算,運算過后得到IDX0~k-1,接著再與Pk~2k-1做XOR運算得到IDX'0~k-1,最后將IDX'0~k-1傳回Reader。 Reader收到Tag回傳的信息之后,便要對信息解碼,首先將收到的信息IDX'0~k-1與先前傳出的Pk~2k-1做XOR運算,解得到IDX0~k-1,然后再與P0~k-1做XOR運算,就能夠得到真正的Tag ID值ID0~k-1。 Reader部分的演算法如下: unixtime_dec is Unix Time. unixtime_hex is Unix Time encrypted by MD5. tagid_len is the length of Tag ID. first_part is the first part of unixtime_hex encoding by Encoding Table. second_part is the second part of unixtime_hex encoding by Encoding Table. xored is the value which first_part XOR second_part. data is the data which Reader send to Tag. unixtime_dec=get_unixtime(); unixtime_hex=MD5(unixtime_dec).substring(0,tagid_len*2); first_part=encoding(unixtime_hex.substring(0,tagid_len)); second_part=encoding(unixtime_hex.substring(tagid_len,tagid_len)); xored=converttoInt(first_part)XOR converttoInt(second_part); data=unixtime_hex+xored.toHex(); data.sendtoTag(); Tag針對Reader信息做驗證、并且將Tag ID加密后傳回Reader的算法如下: first_part is the first part of data sent by Reader. second_part is the second part of data sent by Reader. third_part is the third part of data sent by Reader. xored is the value which first_part XOR second_part. tagid is Tag ID. data is the data which Tag send to Reader. if encoding(first_part)XOR encoding(second_part)!=third_part then end else data=tagid XOR encoding(first_part)XOR encoding(second_part); end if data.sendtoReader(); 本文采用Matlab軟件對該算法的加密生成過程進行了仿真,實驗環(huán)境模擬單一Reader對Tag溝通的環(huán)境。為了顯示實驗過程中Reader與Tag是如何溝通的,本文假設傳輸發(fā)生的時間為2014年1月1日0時0分0秒,當時的Unix Time秒數(shù)為1293840000,經(jīng)過MD5算法編碼后的值為2289C5B863D8A731EDE6BBA454FB400A。 16進位Tag ID為0Xaf: 在這個實驗中,需要傳輸?shù)腡ag ID長度k為2,因此先隨機產(chǎn)生Cipher值為8B,Base Code值為6E48B9AC10D57F23,并建立以下編碼表: 表1 16進位Tag ID長度為2的編碼表 由于k=2,所以會取MD5加密后的Unix Time前2 k個字,也就是前4個字2289來參與接下來的編碼運算。先將2289拆開,查詢編碼表后得知22會編碼為CF,而89會編碼為9B,然后計算CF⊕9B得到54,最后Reader傳出228954給Tag。 當Tag收到Reader傳來的信息之后,會將信息平均分為3部分22、89和54做運算,查詢編碼表后得知22會編碼為CF,而89會編碼為9B,而CF⊕9B會得到54跟Reader傳來的信息互相吻合,因此此次傳輸會被Tag視為有效信息。 確認有效信息后,Tag會將自身ID與Reader傳來的第一部分信息編碼后的結(jié)果XOR,AF⊕CF得到60,然后再與第二部分編碼后的結(jié)果XOR,60⊕9B得到FB,最后回傳給Reader的值就是FB。 Reader收到FB這個信息后,便開始進行解碼計算,先將FB與傳出的第二部分信息編碼后的結(jié)果9B做XOR計算,F(xiàn)B⊕9B得到60,再與第一部分信息編碼后的結(jié)果CF做XOR運算,60⊕CF得到AF,AF這個值就是真正的Tag ID了。 在這個實驗中,計算的是經(jīng)過MD5加密過的Unix Time字節(jié)重復率,由于參與TBE算法的主要元素是MD5加密過后的Unix Time,因此得知編碼過后Unix Time的重復頻率相當重要,過高的重復頻率將會讓攻擊者能夠分析資料,進一步提高攻擊成功的幾率。第一個實驗會將Unix Time以MD5加密,并比較前2、4、6、8字節(jié)的重復率,如表2所示。 表2 取固定字節(jié)計算MD5加密后Unix Time的字節(jié)重復率 在實驗中,本文假設自2014年1月1日至2014年1月2日的86 400 s中,每1 s都有Reader與Tag之間的傳輸,并且透過經(jīng)MD5加密后不同長度的MD5字節(jié)來計算重復率??梢钥吹皆谶B續(xù)傳輸1 h之后,字數(shù)為4的Unix Time重復率大約在44%左右,但是到了6個字節(jié),重復率就下降到了0.25%,到8個字節(jié)時就不再有重復的情況發(fā)生了。當取8個字節(jié)的Unix Time做計算時,代表了RFID環(huán)境中Tag ID的長度為2個bytes,但在實務應用上Tag ID還會更長。 4結(jié)束語 本文主要是利用Reader與Tag共同存有的一份能夠產(chǎn)生編碼表的雜湊函式及將時間轉(zhuǎn)換成秒數(shù),利用時間永遠只會往前進的特性創(chuàng)造出幾乎不會重復的亂數(shù)來保證Reader與Tag之間的傳輸。透過編碼表,能夠防止攻擊者偽造Reader或是Tag來擾亂整個RFID系統(tǒng),同時也能夠?qū)⑺袀鬏數(shù)男畔⑼高^編碼表加密,增加了破解的困難,通過MD5加密過的Unix Time,能夠使每次Reader與Tag傳輸?shù)男畔⑼耆幌嗤瑳]有蹤跡,攻擊者就沒有辦法通過分析的方式得知Reader與Tag內(nèi)的編碼表,也無法利用監(jiān)聽到的封包信息做攻擊。所以該方法可以有效防止傳輸封包被竊聽、Tag被跟蹤或被偽造,極大提高了網(wǎng)絡的安全性。 參考文獻: [1]Zeydin P,Nihat I.Smart parking applications using RFID technology.RFID Eurasia,2007 1st Annual,2007:1-3. [2]李敏波,金祖旭,陳晨.射頻識別在物品跟蹤與追溯系統(tǒng)中的應用.計算機集成制造系統(tǒng),2010,16(01):202-208. [3]單承贛,單玉峰,姚磊,等.射頻識別(RFID)原理與應用.北京:電子工業(yè)出版社,2008. [4]高飛,薛艷明,王愛華.物聯(lián)網(wǎng)核心技術(shù)-RFID原理與應用.北京:人民郵電出版社,2011. [5]王鋮岑.RFID系統(tǒng)防碰撞算法.計算機技術(shù)與發(fā)展,2010,20(01):29-35. [6]顏匯.基于RFID系統(tǒng)的防碰撞算法研究.南京:南京理工大學,2013. [7]Zhu L,Yum T S P.A critical survey and analysis of RFID anti-collision mechanisms.IEEE Commun Magaz,2011,49(05):214-221. [8]高磊,盛煥燁.RFID應用系統(tǒng)中的Tag-reader安全通信協(xié)議.計算機工程,2007,33(20):128-129. [9]曹崢,楊林,謝輝.RFID安全防碰撞搜索協(xié)議的設計與分析.計算機科學,2014,41(04):116-119. [10]潘再興.面向物聯(lián)網(wǎng)的RFID系統(tǒng)防碰撞技術(shù)研究.吉林:吉林大學,2014. [責任編輯:劉守義英文編輯:劉彥哲]3.3 TBE算法
3.4 實驗與分析