謝海寶, 郝偉偉, 呂 磊
1(河南省市場監(jiān)督管理局 信息中心, 鄭州 450008)
2(河南工業(yè)大學(xué) 信息科學(xué)與工程學(xué)院, 鄭州 450008)
射頻識別技術(shù)雖出現(xiàn)在上個世紀(jì)上半時期, 但真正得到大范圍推廣卻是在本世紀(jì); 該技術(shù)是一種不需要與特定商品相接觸, 就可以讀出該特定商品中存放數(shù)據(jù)的技術(shù)[1,2]. 一個完整的射頻識別系統(tǒng)具備成本低、較容易部署、使用壽命長等優(yōu)勢, 使得射頻識別技術(shù)現(xiàn)在多個領(lǐng)域中應(yīng)用, 比如: 門禁系統(tǒng)、地鐵卡系統(tǒng)、校園卡系統(tǒng)等[3,4].
比較經(jīng)典的射頻識別系統(tǒng)一般至少包含后臺數(shù)據(jù)庫、電子標(biāo)簽、讀卡器3個實體設(shè)備[5-7]. 后臺數(shù)據(jù)庫主要用來存放系統(tǒng)應(yīng)用過程中產(chǎn)生的數(shù)據(jù), 具備強(qiáng)大的計算和搜索查找能力, 同時也具備較大的存儲空間;電子標(biāo)簽一般主要在用戶手上, 用于存放用戶的一些個人隱私信息, 比如: 用戶標(biāo)識、用戶金額等, 電子標(biāo)簽計算能力有限、存儲空間同樣也有限; 讀卡器一般主要固定在某個地方, 用于讀取電子標(biāo)簽中信息, 再將讀取的信息發(fā)送給后臺數(shù)據(jù)庫, 很多時候讀卡器并不真正的參與運(yùn)算.
在上述經(jīng)典的射頻識別系統(tǒng)中, 電子標(biāo)簽與讀卡器之間無線方式交互數(shù)據(jù), 極其容易被第三方竊聽, 導(dǎo)致用戶隱私信息泄露, 研究人員一般認(rèn)為不可靠、不安全; 讀卡器與后臺數(shù)據(jù)庫之間絕大多數(shù)基于有線方式交互信息, 第三方獲取數(shù)據(jù)并不是很容易, 一般可認(rèn)定為安全、可靠, 并可將二者看成一個系統(tǒng)或整體對待[8,9]. 文中為能夠保證電子標(biāo)簽與后臺數(shù)據(jù)庫二者間數(shù)據(jù)交互安全, 提出一個采用偽隨機(jī)函數(shù)實現(xiàn)加密的輕量級認(rèn)證協(xié)議.
文獻(xiàn)[10]中利用散列函數(shù)設(shè)計一個認(rèn)證協(xié)議, 對協(xié)議分析, 可以提供一些安全需求, 但因數(shù)據(jù)加密過程中部分?jǐn)?shù)據(jù)第三方可以獲取, 使得協(xié)議無法抵抗第三方窮舉分析.
文獻(xiàn)[11]中設(shè)計一個超輕量級的協(xié)議, 雖能夠極大程度上降低系統(tǒng)計算量, 但依據(jù)現(xiàn)有的研究結(jié)果表明, 超輕量級的協(xié)議絕大多數(shù)都是基于按位運(yùn)算實現(xiàn),而簡單的按位運(yùn)算是無法提供絕對的安全性, 因此文獻(xiàn)[11]中協(xié)議安全性級別有待商榷.
文獻(xiàn)[12]中利用經(jīng)典的哈希函數(shù)設(shè)計一個認(rèn)證協(xié)議. 協(xié)議設(shè)計過程中充分考慮到各種常見類型的攻擊,因此該協(xié)議具備良好的安全需求. 但電子標(biāo)簽一端將會多次用到哈希函數(shù)進(jìn)行運(yùn)算, 將會使得系統(tǒng)整體計算量增加, 低沉本受限制的電子標(biāo)簽無法大規(guī)模推廣.
文獻(xiàn)[13]中基于物理不可克隆技術(shù)設(shè)計一個認(rèn)證協(xié)議. 物理不可克隆技術(shù)使得協(xié)議可以抵抗假冒攻擊等, 但對協(xié)議分析, 表明協(xié)議最后一個步驟并沒有完成電子標(biāo)簽對讀卡器的驗證, 使得協(xié)議存在安全缺陷.
文獻(xiàn)[14]中結(jié)合Universal哈希函數(shù)給出一個協(xié)議. Universal哈希函數(shù)與經(jīng)典的哈希函數(shù)之間存在些許不同, 但整體工作原理相差并不大. 因具備的單向性,是第三方難以假冒或重放; 卻無法在低成本電子標(biāo)簽系統(tǒng)中推廣使用.
文獻(xiàn)[15]中采用RRAM物理不可克隆技術(shù)設(shè)計一個認(rèn)證協(xié)議. 協(xié)議設(shè)計過程中, 部分消息加密時未混入隨機(jī)數(shù), 使得部分消息前后多次認(rèn)證過程中消息計算數(shù)值相同, 給了第三方破解機(jī)會.
對近些年經(jīng)典協(xié)議進(jìn)行分析, 指出大多數(shù)協(xié)議存在或多或少缺陷不足, 文中基于偽隨機(jī)函數(shù)設(shè)計一個輕量級的認(rèn)證協(xié)議.
(1)協(xié)議中部分符號解釋
READER: 由讀卡器和后臺數(shù)據(jù)庫構(gòu)成的整體
TAG: 電子標(biāo)簽
IDT: TAG的假名身份標(biāo)識
IDT_new: TAG當(dāng)前的假名身份標(biāo)識
IDT_old: TAG上次的假名身份標(biāo)識
IDT_L: TAG真實身份標(biāo)識前面一半
IDT_R: TAG真實身份標(biāo)識后面一半
KEY: TAG與READER二者間共享秘密值
KEYnew: TAG與READER二者間當(dāng)前共享秘密值
KEYold: TAG與READER二者間上次共享秘密值
f(x,y): 偽隨機(jī)函數(shù)
x: TAG生成的隨機(jī)數(shù)
y: READER生成的隨機(jī)數(shù)
⊕: 按位異或運(yùn)算
&: 按位與運(yùn)算
(2)認(rèn)證協(xié)議步驟
可以結(jié)合圖1中的流程, 將文中協(xié)議步驟描述如下:
圖1 協(xié)議流程圖
① READER向TAG發(fā)送一個認(rèn)證請求指令, READER與TAG之間將開啟認(rèn)證.
② TAG接到消息, TAG先生成隨機(jī)數(shù), 在依次計算得到消息M1=x⊕IDT_L、M2=f(x,IDT_R), 待消息計算完畢, TAG將向READER發(fā)送M1、M2、IDT.
③ READER接到消息, 先在數(shù)據(jù)庫中查找是否有數(shù)據(jù)與接到的IDT相同.
若未找到, 則協(xié)議停止.
若找到, 則協(xié)議可繼續(xù). READER將對接到的M1進(jìn)行變形, 并將變形之后結(jié)果帶入消息M2中可得到M2′=f(x′,IDT_R)=f(M1⊕IDT_L,IDT_R), 然后對比M2、M2′值是否相等.
若不相等, 則協(xié)議停止.
若相等, 則可表明TAG通過READER驗證, 協(xié)議再次繼續(xù). READER將生成隨機(jī)數(shù), 并依次計算得到消息M3=y⊕IDT_R,M4=f(x,y), 最后將M3,M4發(fā)送給TAG.
④ TAG接到消息后, TAG會發(fā)起對READER的驗證, 具體驗證過程如下:
TAG將先對接到的消息M3進(jìn)行變形處理, 并將變形處理結(jié)果帶入消息M4中可得到M4′=f(x,y′)=f(x,M3⊕IDT_R), 接著比較M4、M4′二者是否相等.
若不相等, 協(xié)議停止.
若相等, 可表明READER通過TAG的驗證, 協(xié)議繼續(xù). TAG將計算消息M5=f(x⊕KEY,y&KEY), 并將M5發(fā)送給READER. 待TAG發(fā)送消息M5之后,TAG一端將進(jìn)行共享秘密值、TAG假名身份標(biāo)識更新操作IDT=f(y,IDT)、KEY=f(x,KEY).
⑤ READER接到消息后, 先用當(dāng)前READER與TAG間共享秘密值KEYnew來驗證TAG, 具體過程見下:
READER利用存放的KEYnew、之前計算所得x、自己生成y計算得到消息M5′=f(x⊕KEYnew,y&KEYnew),接著比較計算得到M5′與接到消息M5大小關(guān)系.
兩者關(guān)系不等, READER將再次用上次二者間共享秘密值驗證TAG, 即用KEYold替換KEYnew再次進(jìn)行計算可得到M5′′=f(x⊕KEYold,y&KEYold), 然后再次對比M5與M5′′大小. 還是不等, 協(xié)議停止; 此時等,READER驗證TAG通過, 協(xié)議繼續(xù)執(zhí)行, READER向TAG發(fā)送ACK確定消息, 同時READER端進(jìn)行信息更新IDT_old=IDT_new,IDT_new=f(y,IDT),KEYnew=f(x,KEYold).
兩者關(guān)系等, READER驗證TAG通過, 協(xié)議繼續(xù)執(zhí)行, READER向TAG發(fā)送ACK確定消息, 同時READER端進(jìn)行信息更新IDT_old=IDT_new,IDT_new=f(y,IDT),KEYold=KEYnew,KEYnew=f(x,KEYnew).
⑥ TAG接到消息, 確定接到消息為ACK, 則表明TAG與READER間雙向認(rèn)證完成, 協(xié)議可正常結(jié)束.
(1)雙向認(rèn)證
雙向認(rèn)證是協(xié)議要具備的最基本的安全需求. 文中協(xié)議具備該安全需求, 具體的分析見下:
在第③步中, READER將先通過TAG假名參數(shù)驗證TAG真實性, 接著將再次結(jié)合消息M1、M2對TAG進(jìn)行驗證, 只有兩次都驗證通過, READER才會繼續(xù)執(zhí)行協(xié)議.
在第④步中, TAG將結(jié)合消息M3、M4對READER進(jìn)行驗證, 驗證通過, TAG將才會進(jìn)行后續(xù)操作.
在第⑤步中, READER將先用KEYnew來驗證TAG真假; 驗證不通過時, READER將再次用KEYold來驗證TAG真?zhèn)? 前后兩次驗證通過, 協(xié)議才繼續(xù).
基于上述分析, 文中協(xié)議可提供雙向認(rèn)證安全需求.
(2)假冒攻擊
從理論上來講, 第三方既可以假冒成READER, 也可以假冒成TAG. 鑒于文中篇幅有限, 這里僅選取第三方假冒成READER來分析.
比如: READER假冒成合法讀卡器向合法TAG發(fā)送認(rèn)證請求指令, 開始認(rèn)證協(xié)議. 經(jīng)過一段時候后,第三方可以收到合法TAG發(fā)送來的消息M1、M2, 第三方試圖通過對接到的消息M1、M2進(jìn)行分析從而破解出隱私信息, 然后在計算正確消息M3、M4, 但第三方無法成功. 無法成功的主要原因有: 第三方不知曉TAG真實身份標(biāo)識, 使得第三方無法通過消息M1、M2破解分析出合法TAG生成的隨機(jī)數(shù)x, 第三方在不知道隨機(jī)數(shù)x的情況下, 第三方只能隨機(jī)選擇一個數(shù)冒充為隨機(jī)數(shù)x, 可想而知, 第三方就無法計算出正確的消息M3、M4. 當(dāng)合法TAG接到第三方發(fā)送來的消息M3、M4時, 只需要進(jìn)行簡單計算, 合法TAG即可識別出第三方是假冒的, 協(xié)議停止.
基于上述分析, 文中協(xié)議可提供抵抗假冒攻擊安全需求.
(3)重放攻擊
第三方可以竊聽當(dāng)前會話過程, 獲悉當(dāng)前會話過程中所有消息, 待下輪會話時, 第三方可以重放竊聽的消息, 以企圖通過合法實體驗證, 進(jìn)而獲取更多隱私信息. 但文中協(xié)議中, 第三方只能以失敗而告終, 具體原因如下: 文中協(xié)議設(shè)計過程中, 每個消息加密之時, 都引入隨機(jī)數(shù), 或引入READER生成的隨機(jī)數(shù), 或引入TAG生成的隨機(jī)數(shù), 或同時引入READER、TAG生成的隨機(jī)數(shù), 這樣操作之后, 將使得每輪消息計算值處于變動之中. 即: 第三方人員在重放上輪竊聽消息時,本輪認(rèn)證中用到的消息值早已發(fā)生變更, 第三方重放消息失敗, 協(xié)議停止, 第三方未獲取任何隱私信息.
基于上述分析, 文中協(xié)議可提供抵抗重放攻擊安全需求.
(4)異步攻擊
文中協(xié)議在READER一端將會存放READER與TAG間之前認(rèn)證過程中用到的共享秘密值, 這樣就可以抵抗第三方發(fā)起的異步攻擊. 具體原因分析如下: 當(dāng)READER用當(dāng)前共享秘密值發(fā)起對TAG驗證時, 驗證通過, 就直接進(jìn)行后續(xù)操作; 如果沒有驗證驗證, 則READER將會調(diào)出上一輪認(rèn)證過程中用到的共享秘密值, 將用上輪認(rèn)證過程中用到的共享秘密值替換當(dāng)前共享秘密值再次發(fā)起對TAG的驗證. 如果本次驗證還是失敗, 則READER將再次調(diào)出上上次認(rèn)證用到的共享秘密值, 以此方式可以實現(xiàn)抵抗第三方發(fā)起的異步攻擊.
基于上述分析, 文中協(xié)議可提供抵抗異步攻擊安全需求.
(5)窮舉攻擊
第三方可能對竊聽獲悉的消息采用窮舉的方式窮盡出所有其可能值, 進(jìn)而獲取隱私信息. 但文中協(xié)議可是第三方無法窮舉成功, 這里選擇消息M1、M2為例進(jìn)行詳細(xì)分析:
第三方可以對消息M1進(jìn)行變形處理, 并將變形處理結(jié)果帶入消息M2中可得到M2′=f(M1⊕IDT_L,IDT_R). 在變形之后所得到消息M2中, 第三方仍有兩個參量IDT_L、IDT_R不知曉, 因此第三方就無法采用窮舉方式窮盡所有可能值, 第三方只能以失敗而告終.
基于上述分析, 文中協(xié)議可提供抵抗窮舉攻擊安全需求.
(6)前向安全
第三方想通過竊聽獲悉的消息逆推出上輪認(rèn)證用到的部分隱私信息, 以此來獲悉更多用戶隱私信息. 但文中協(xié)議中, 第三方無法從竊聽獲悉的消息中分析或逆推出上輪會話中用戶隱私信息, 具體原因分析如下:文中協(xié)議設(shè)計過程中, 每個認(rèn)證消息均不是明文方式發(fā)送, 而是采用偽隨機(jī)函數(shù)加密之后再發(fā)送, 這使得第三方竊聽獲悉的數(shù)據(jù)是密文; 第三方在不知曉關(guān)鍵參數(shù)情況下, 是無法分析或逆推出之前認(rèn)證中用戶隱私信息; 同時所有消息加密過程中都有隨機(jī)數(shù)的加入, 這樣使得前后每次消息值不同, 并且隨機(jī)數(shù)具備互異性、無法預(yù)測性, 更加增加了第三方破解分析難度.
基于上述分析, 文中協(xié)議可提供前向安全需求.
從文中前面章節(jié)有關(guān)經(jīng)典射頻識別系統(tǒng)組成描述可以知曉, READER整體計算能力強(qiáng)、存儲空間大; 相反, TAG計算能力薄弱、存儲空間有限, 故本章節(jié)僅選取TAG作為性能分析對象. 將文中協(xié)議與其他近些年提出的經(jīng)典協(xié)議進(jìn)行性能方面分析, 結(jié)果見表1所示.
表1 不同協(xié)議之間性能分析對比
對表1中出現(xiàn)的符號所表示的意思解釋見下面:Ta符號代表的意思為按位運(yùn)算的計算量(此處按位運(yùn)算可包含按位異或運(yùn)算、按位與運(yùn)算等); Tb符號代表的意思為物理不可克隆函數(shù)的計算量; Tc符號代表的意思為隨機(jī)數(shù)發(fā)生器產(chǎn)生隨機(jī)數(shù)的計算量; Td符號代表的意思為哈希函數(shù)的計算量; Te符號代表的意思為偽隨機(jī)函數(shù)的計算量.
文中協(xié)議整個過程中TAG一端僅只生成一個隨機(jī)數(shù), 故會有1 Tc計算量. 在步驟(2)中, TAG在計算消息M1時第1次用到Ta計算量, 在計算消息M2時第1次用到Te計算量; 在步驟(4)中, TAG在對消息M3變形處理時會第2次用到Ta計算量, 在計算消息M4′時會第2次用到Te計算量, 在計算消息M5時會第3次用到Te計算量, 在更新TAG假名身份標(biāo)識、共享秘密值時分別第4次、第5次用到Te計算量.
基于上述分析, 文中協(xié)議在TAG一端總體計算量為2 Ta+5 Te+1 Tc.
文中協(xié)議一個完整會話包含的會話消息有M1、M2、IDT、M3、M4、M5、ACK、認(rèn)證請求指令QUERY,其中消息M1、M2、IDT、M3、M4、M5每個長度都是L位, ACK、認(rèn)證請求指令QUERY長度都是1個比特即可. 故文中協(xié)議通信量大小為6 L+2 bit.
通過本節(jié)及第3節(jié)分析, 可發(fā)現(xiàn)文中協(xié)議不僅可以彌補(bǔ)其他經(jīng)典協(xié)議中安全不足, 同時在計算量方面優(yōu)于其他協(xié)議, 具有推廣使用價值.
文中先介紹射頻識別技術(shù)在運(yùn)用過程中出現(xiàn)的安全隱患, 在分析近些年經(jīng)典的認(rèn)證協(xié)議存在的問題, 最后設(shè)計出一個輕量級的認(rèn)證協(xié)議. 文中設(shè)計協(xié)議在兼顧計算量的同時, 也考慮安全性, 故選擇輕量級的偽隨機(jī)函數(shù)作為消息加密算法; 為能夠應(yīng)對假冒、重放等攻擊, 協(xié)議在消息加密中全部混入隨機(jī)數(shù), 可保持消息新鮮性; 為能夠抵抗第三方發(fā)起的異步攻擊, 協(xié)議在READER一端存放若干輪之前認(rèn)證用到的共享秘密值. 結(jié)合安全性、計算量等角度分析文中協(xié)議及近些年其他經(jīng)典協(xié)議可發(fā)現(xiàn), 文中協(xié)議可彌補(bǔ)其他協(xié)議安全不足之處, 同時可保證計算量、門電路總個數(shù)未增加.