基于視覺密碼的RFID安全協(xié)議
0 引言
射頻識別技術(shù)(Radio Frequency Identification,RFID)是一種高效而實用的識別技術(shù),它通過無線電波在讀寫器和標簽之間傳遞信息,實現(xiàn)對物體的跟蹤和識別。RFID系統(tǒng)主要由標簽、讀寫器和后端數(shù)據(jù)庫系統(tǒng)構(gòu)成。標簽可接收數(shù)據(jù),也可將數(shù)據(jù)發(fā)送給讀寫器。讀寫器負責(zé)處理并捕捉標簽的數(shù)據(jù),并將數(shù)據(jù)傳送給后端數(shù)據(jù)庫系統(tǒng)。讀寫器在標簽和后端系統(tǒng)中發(fā)揮中介作用。這種非接觸性技術(shù)在帶來便利的同時,也存在很多安全隱患,如物體的位置跟蹤及標簽信息泄露等。RFID安全保密問題日益?zhèn)涫荜P(guān)注,很多學(xué)者提出了安全認證協(xié)議,如基于密鑰矩陣的RFID安全協(xié)議、Key值更新隨機Hash鎖對RFID安全隱私的加強、基于輕量級加密技術(shù)建立物聯(lián)網(wǎng)感知層信息安全的解決方案等。這些算法在一定程度上可抵御攻擊,有一定的安全性,但也存在同步問題及運算量大、對重放攻擊不具有免疫性等缺陷。
視覺密碼VCS(Visual Cryptography Scheme)是一種新型的密碼技術(shù),具有解密簡單、計算量小、滿足無條件安全等優(yōu)勢。它由Naor和Shamir在1994年的歐洲密碼學(xué)會議上提出[1]。其基本思想是將秘密圖像編碼到n個影子圖像(分享圖像)中,并將影子圖像分別賦給n個參與者,解密時只需k(k≤n)個參與者將影子圖像疊加起來,就可通過視覺辨認出秘密信息[1-3]。文獻[4]提出了一個基于布爾操作的(2, n)門限視覺密碼方案,加密時將秘密圖像分享為n個分享圖像,解密時取任意兩個分享圖像進行異或運算即可恢復(fù)秘密圖像。文獻[5]分析了物聯(lián)網(wǎng)架構(gòu)中感知層存在的安全漏洞,提出了視覺密碼的身份認證方案。該方案雖采用了視覺密碼運算簡單的特點,但其在認證過程中只實現(xiàn)了單向認證,即對標簽的認證,而沒有實現(xiàn)對讀寫器的認證。另外,由于認證過程中認證信息始終不變,所以方案不能抵御位置跟蹤、重放等攻擊。文獻[6]利用視覺密碼實現(xiàn)了雙向身份認證,然而在認證過程中以明文傳送,算法很難抵御假冒攻擊,一旦被俘獲算法也不能保證前向性安全。鑒于現(xiàn)有認證協(xié)議的缺陷,本文利用視覺密碼構(gòu)造一種新的RFID認證協(xié)議,使用視覺密碼實現(xiàn)標簽與讀寫器間的認證,并在認證后更新標簽中的影子圖像,彌補現(xiàn)有認證協(xié)議運算量大、安全性差的不足。
1 視覺密碼
1.1 基本原理
(k,n)的視覺密碼方案將一幅秘密圖像P加密成n幅影子圖像,解密時只需將k(k≤n)個影子圖像重疊起來就能恢復(fù)秘密信息。加密基本原理是對秘密圖像P中的每個像素進行n次處理,P中每個像素在影子圖像中對應(yīng)m個黑白子像素(m稱為像素擴展度),對P中所有像素都作此處理后就得到n幅影子圖像。若為P中每個像素的加密構(gòu)建一個n*m的布爾矩陣A=(Aij)n*m,則Aij=0表示對于秘密圖像中某一個像素,它在第i個分享者的第j個子像素的顏色為白色;Aij=1表示它在第i個分享者的第j個子像素的顏色為黑色。矩陣A的第i行為秘密圖像p中一個像素在影子圖像中對應(yīng)的子像素。對A中第j列的所有元素作或運算,其值W(v)稱為該像素塊的漢明重量。
解密時將k個影子圖像重疊,計算每個像素塊的漢明重量,當W(v)≥d時,圖像中該像素點為黑色;W(v) 1.2 二值圖像的(2,2)視覺密碼分解
以一幅黑白二值圖像p分解為2幅影子圖像為例來說明視覺密碼方案的基本原理,分解時用公式(1)作加密矩陣(H0和H1分別表示秘密圖像中白色像素和黑色像素的加密矩陣),像素擴展度m=2。具體步驟如下:(1)對于P中的每一個像素pxy進行擴展,擴展方法:若pxy為白色,則從集合H0中等概率挑出一個矩陣來對該像素加密;矩陣中的一行即為像素pxy在影子圖像中對應(yīng)的像素塊。若pxy為黑色,則從集合H1中等概率挑出一個矩陣來對該像素進行加密。
(2)重復(fù)上述操作,直至P中所有像素都被加密為止。
解密步驟如下:

①選擇參數(shù)d和a;疊加2個影子圖像,計算疊加圖像中每個像素塊的漢明重量W(v);
②漢明重量W(v)≥d時,恢復(fù)圖像中該像素點為黑色;W(v) ③重復(fù)上述過程即可得恢復(fù)圖像。
2 基于視覺密碼的RFID認證協(xié)議
2.1 預(yù)置信息
在基于視覺密碼的RFID認證協(xié)議中,后臺數(shù)據(jù)庫為每個標簽存儲一條記錄(ID、S1、Rr、Pointer),ID是標簽的唯一標識符,Rr是系統(tǒng)生成的隨機數(shù),由Rr構(gòu)造一幅黑白二值圖像P;S1是對P作(2,2)視覺密碼分解所得的影子圖像。Pointer是數(shù)據(jù)記錄關(guān)聯(lián)指針,其作用是保證認證過程中的同步安全。標簽中存儲ID標識符和標簽對應(yīng)的另一個影子圖像S2。讀寫器含有隨機數(shù)發(fā)生器,并為每個標簽存儲一條記錄(Hash(ID||R)、ID),Hash(ID||R)是標簽ID與隨機數(shù)的哈希值。后端系統(tǒng)和標簽共用Hash()和Ard(),Hash()是哈希函數(shù),Ard()為貓臉變換函數(shù),用來對影子圖像進行加密與恢復(fù)。 初始化時,為每個標簽隨機生成一幅二值圖像P,使用視覺密碼將P分解為影子圖像S1和S2,將這些信息分別存入后臺系統(tǒng)和標簽中,如圖1所示。

2.2 協(xié)議認證過程
(1)讀寫器向標簽發(fā)送認證請求Query和隨機數(shù)R后,更新讀寫器中記錄的Hash(ID||R)值。
(2)標簽計算Hash(ID||R),對影子圖像S2加密,將信息Hash(ID||R)和EN(S2)發(fā)送給讀寫器。
(3)讀寫器以Hash(ID||R)為索引搜索表中的記錄,若找到則將記錄中的ID和EN(S2)轉(zhuǎn)發(fā)給后端系統(tǒng);否則,會話結(jié)束。
(4)后臺以ID為索引搜索數(shù)據(jù)庫。若找到,取出記錄中的S1與解密后的S2作視覺密碼運算得到恢復(fù)圖像P`,系統(tǒng)檢測P`中的信息與Rr是否一致,一致則對標簽通過認證。后端系統(tǒng)隨機生成新的隨機數(shù)Rrnew和對應(yīng)的二值圖像Pnew,對Pnew作視覺密碼分解得到新的影子圖像S1new、S2new,生成隨機數(shù)R,并計算Hash(ID||R),將Hash(ID||R)、R和EN(S2new)發(fā)送給讀寫器。讀寫器收到后轉(zhuǎn)發(fā)給標簽。若P`中檢測的信息與Rr的信息不一致,則會話結(jié)束。
(5)數(shù)據(jù)庫檢查當前記錄j中的Pointer值,若Pointer=0,則再添加一條新的記錄k:(ID、S1new、Rrnew、j),并將記錄j中的Pointer值改為k。若Pointer!=0,則找到第Pointer所指的記錄,將其內(nèi)容修改為(ID、S1new、Rrnew、j)。
(6)標簽收到Hash(ID||R)、R和EN(S2new)后,標簽計算Hash(ID||R),并與收到的Hash(ID||R)進行比對,比對成功則讀寫器認證通過,標簽對EN(S2new)解密后更新影子圖像S2,否則會話結(jié)束。標簽與讀寫器間的認證過程如圖2所示。

3 協(xié)議安全性分析
3.1 雙向身份驗證分析
標簽與讀寫器間的雙向身份驗證是設(shè)計安全協(xié)議時需考慮的首要問題,本文只有合法的標簽才擁有正確的影子圖像S2,S2與其對應(yīng)的S1重疊后恢復(fù)的信息才與Rr的信息吻合;若標簽是偽造的,則其恢復(fù)的信息與Rr的信息不一致。所以利用S2可實現(xiàn)讀寫器對標簽身份的認證。協(xié)議中S2以密文的方式傳送,所以即便傳送的信息泄露,攻擊者也無法得到S2的任何信息。此外,當后端系統(tǒng)通過對標簽的認證時,協(xié)議會生成新的影子圖像S2new、計算標簽ID與隨機數(shù)R的哈希值,并將Hash(ID||R)、R和EN(S2new)發(fā)送給標簽,標簽通過Hash(ID||R)的計算比較,實現(xiàn)標簽對閱讀器的認證。最后,在整個協(xié)議過程中,ID不在讀寫器和標簽間傳輸,所以攻擊者無法獲得正確的ID,除非標簽從物理上被攻破。認證時標簽要發(fā)送Hash(ID)、EN(S2),僅持有正確的Hash(ID)是毫無用處的。總體來講,協(xié)議能夠安全可靠地實現(xiàn)讀寫器與標簽間的雙向認證。
3.2 不可跟蹤性分析
射頻識別認證協(xié)議必須考慮的另一個問題是標簽的位置跟蹤。本協(xié)議含有反位置跟蹤設(shè)計。每次認證獲通過后,標簽都會更新影子圖像S2,且隨機數(shù)R的值也在更新變化,所以標簽對讀寫器的每次回答(Hash(ID||R)和EN(S2))是不同的,從而實現(xiàn)了標簽的反跟蹤。
3.3 前向性和同步性安全分析
假設(shè)某標簽被攻擊者攻破并獲得密鑰,攻擊者將得到正在使用的影子圖像S2。但由于每次驗證通過后,系統(tǒng)都會隨機產(chǎn)生二值圖像P來更新標簽中的影子圖像S2,這些影子圖像間無任何關(guān)聯(lián),所以即使當前S2被竊取,也無法從現(xiàn)有的值推算出之前的S2,不可獲得標簽的歷史活動記錄。
協(xié)議對標簽的認證獲通過后,數(shù)據(jù)庫為更新的S2new建立新記錄,同時保留舊的S2對應(yīng)的記錄。若S2new更新不成功,標簽仍能使用舊的S2實現(xiàn)與讀寫器的身份驗證,這樣就防止了S2更新時可能出現(xiàn)的異常情況。
3.4 其它性能分析
標簽中只存儲標簽ID和影子圖像S2,一次認證過程需2次哈希運算和1次加密、解密運算,降低了標簽的存儲空間、運算復(fù)雜度。因此這在低成本的標簽上較易實現(xiàn)。每次認證時后臺數(shù)據(jù)庫在2N(N為標簽的個數(shù))條記錄中搜索,進行1次哈希運算,產(chǎn)生2個隨機數(shù),作一次視覺密碼的加、解密運算,且視覺密碼的加解密運算量較小,所以本方法延時短、速度快,效率高。
3.5 與其它協(xié)議性能比較

表1為本協(xié)議與文獻[5]、[6]協(xié)議的比較。表中VCS為視覺密碼加密或解密,H表示哈希運算,R表示產(chǎn)生隨機數(shù)操作的次數(shù),EN為對稱加密算法,DE為對稱解密算法。
4 結(jié)語
本協(xié)議通過對隨機二值圖像作視覺密碼分解,把分解后的影子圖像分別存儲在標簽和后臺系統(tǒng)中,認證時對影子圖像作視覺密碼解密,然后用提取的恢復(fù)圖像信息與Rr作比較,若信息一致,則標簽的認證通過,否則會話結(jié)束。視覺密碼的加密、解密過程簡單,運算量小,標簽端存儲的數(shù)據(jù)少、運算量不大,復(fù)雜運算主要在運算能力和存儲能力較強的后臺數(shù)據(jù)庫和讀寫器中進行。該算法具有成本低,延時短,安全性高等特點,在實現(xiàn)雙向認證的基礎(chǔ)上能有效抵御位置跟蹤、竊聽、非法讀取等攻擊。