肖貴燈 張 穎
1(廣東工程職業(yè)技術(shù)學院 廣東 廣州 510520) 2(南寧學院 廣西 南寧 530200)
射頻識別技術(shù)出現(xiàn)在20世紀,但因種種因素,使得該技術(shù)并沒有在20世紀得到大規(guī)模廣泛的推廣運用[1-3]。進入21世紀后,隨著科學技術(shù)的不斷發(fā)展以及新技術(shù)的出現(xiàn),諸如云計算、大數(shù)據(jù)、區(qū)塊鏈等,伴隨著這些技術(shù)的發(fā)展以及推廣運用,射頻識別技術(shù)也再次發(fā)展和運用起來[4-6]。
因該系統(tǒng)中標簽具備體積小、易攜帶、成本低等眾多的優(yōu)點,現(xiàn)在運用前景非??捎^,比如:現(xiàn)在各個國家以及各個城市大力推廣的公交卡系統(tǒng),便是一個典型的射頻識別系統(tǒng)[7-9]。生活中,很多時候,人們會將公交卡和其他卡(比如:身份證、銀行卡等)放在一起,上車的時候,可能不小心誤將其他的卡當作是公交卡拿出來,進行刷卡乘車,但最終會刷卡失敗,或可能導致一些不懷好意的人將卡里面的錢盜走,使得運用過程中存在一定的安全隱患[10-11]。為能夠保障資金或隱私信息的安全,專家學者設(shè)計了眾多的協(xié)議來解決該問題。
文獻[12]提出一種輕量級的認證協(xié)議,對協(xié)議進行分析,但協(xié)議最后一步發(fā)送的消息未進行任何加密操作,使得攻擊者可以監(jiān)聽獲取,從而發(fā)起重放攻擊,同時截獲該消息的攻擊者也可以發(fā)起假冒攻擊,協(xié)議存在嚴重的安全不足。文獻[13]提出能夠抵抗重放攻擊及假冒攻擊等攻擊類型,但因為協(xié)議的讀寫器端沒有存放前后兩次會話的共享密鑰,使得協(xié)議無法抗攻擊者的去同步化攻擊。文獻[14]采用哈希函數(shù)設(shè)計一個輕量級的協(xié)議,但無法抗暴力破解攻擊。鑒于本文篇幅有限等因素,更多的協(xié)議可以參考文獻[15-18]。
本文在總結(jié)眾多協(xié)議基礎(chǔ)之上,結(jié)合較好的協(xié)議框架結(jié)構(gòu),給出一個改進的協(xié)議。改進的協(xié)議從發(fā)送信息的角度出發(fā),采用只發(fā)送密文而不發(fā)送明文的方式,使得攻擊者無法直接獲取任何明文信息;同時更換常見類型的加密算法,采用創(chuàng)新型的加密算法,即循環(huán)移動置換運算算法,可得知該算法使得攻擊者無法知曉的參數(shù)數(shù)量增加,從而導致攻擊者無法窮舉隱私信息,具備較好的安全性能。
張興等在2018年基于哈希函數(shù)設(shè)計一個認證協(xié)議,具體步驟可以見文獻[14]。通過分析協(xié)議通信步驟,在協(xié)議的第二步驟中,協(xié)議存在安全不足,具體分析如下。
原協(xié)議的第二步驟中,標簽將隨機數(shù)i以明文的方式傳送給讀寫器,同時在第二步驟中也會將Hm(ID,i)信息發(fā)送給讀寫器。當攻擊者監(jiān)聽該通信過程時,可以獲取上述兩個消息。此時攻擊者可以結(jié)合Hm(ID,i)、i對Hm(ID,i)進行窮舉攻擊。在Hm(ID,i)中,哈希函數(shù)加密算法對外公開,i明文傳送,也是對外公開,只有ID是攻擊者不知道的,攻擊者可以進行窮舉攻擊,窮盡所有可能的ID的取值,從而破解出標簽的隱私信息標識符ID的值。當攻擊者得到標簽標識符ID的值之后,可以更進一步分析竊聽獲取到的消息,獲取更多的隱私信息,可以發(fā)起其他類型的攻擊,比如假冒攻擊。
鑒于上述分析,張興等設(shè)計的協(xié)議存在多種安全缺陷,無法提供較高的安全性能。本文協(xié)議在其協(xié)議框架基礎(chǔ)上給出一種改進的協(xié)議。首先改進的協(xié)議將不再采用明文發(fā)送任何消息的方式,密文發(fā)送消息,攻擊者即便是可以截獲,也無法獲取有用信息;其次,改進的協(xié)議摒棄哈希函數(shù)加密的算法,采用創(chuàng)新型的循環(huán)移動置換運算算法對信息加密,該算法雖然也對外公開,算法在實現(xiàn)過程中用到加密參數(shù)的漢明重量值,該值是因加密參數(shù)的變動而變動,因此攻擊者雖可知加密算法如何實現(xiàn),但因算法中存在變動的參量值,因此攻擊者無法窮盡任何隱私信息。
循環(huán)移動置換運算用Cmp(A,B)(Cyclic Moving Permutation)表示,可以按照如下描述實現(xiàn):
第一步:A、B、A1、B1都是長度為L位的二進制序列,為便于后續(xù)計算,要求L取值為偶數(shù)。
第二步:用H(A)、H(B)分別表示A、B二進制序列的漢明重量值。
第三步:循環(huán)移動操作,循環(huán)移動的規(guī)則是:當H(A)≥H(B)時,二進制序列B向左移動H(A)位,得到二進制序列B1;當H(A) 第四步:對第三步循環(huán)移動得到的結(jié)果進行置換操作,置換操作的規(guī)則是: 當H(A)≥H(B)時,對B1進行置換,即:從左向右遍歷A,當A的第i位為0時,B1的第i位發(fā)生置換(即0變1,1變0);當A的第i位為1時,B1的第i位不變。 當H(A) 第五步:按照上述四步操作即可得到循環(huán)移動置換運算的最終結(jié)果。 通過下面兩個例子來展現(xiàn)H(A)≥H(B)和H(A) 取值L=12,A=100111001101,B=011010100001,可以得出:H(A)=7,H(B)=5,滿足H(A)≥H(B)的條件。運用上面的定義,得到:B1=000010110101,Cmp(A,B)=011010000111,具體步驟如圖1所示。 圖1 循環(huán)移動置換運算(H(A)≥H(B)) 取值L=12,A=010010100001,B=110010110110,可以得出:H(A)=4,H(B)=7,滿足H(A) 圖2 循環(huán)移動置換運算(H(A) 給出改進的協(xié)議中涉及到的符號含義。 Reader:讀寫器; Tag:標簽; ID:標簽的標識符; K:讀寫器與標簽的共享秘密值; Knew:讀寫器與標簽的本輪共享秘密值; Kold:讀寫器與標簽的上輪共享秘密值; a:讀寫器產(chǎn)生的隨機數(shù); b:標簽產(chǎn)生的隨機數(shù); ⊕:異或運算; Cmp(A,B):循環(huán)移動置換運算。 改進的協(xié)議認證流程如圖3所示。 圖3 協(xié)議流程 協(xié)議在初始化階段完成各個通信實體的賦值操作,讀寫器中存放ID、Knew、Kold,標簽中存放ID、K。具體通信過程如下: 步驟1讀寫器產(chǎn)生隨機數(shù)a,計算N1和N2,將Ask、N1、N2發(fā)送給標簽,開始協(xié)議。其中:N1=a⊕ID;N2=Cmp(a,ID)。 步驟2標簽收到消息,計算隨機數(shù)a=N1⊕ID,再將a代入計算N2′=Cmp(N1⊕ID,ID),接著對比兩者值。 不等,協(xié)議停止。相等,標簽解密隨機數(shù)a正確,然后標簽產(chǎn)生隨機數(shù)b,計算N3和N4,最后將N3、N4發(fā)給讀寫器。其中:N3=a⊕b,N4=Cmp(b,K)。 步驟3讀寫器收到消息,計算隨機數(shù)b=a⊕N3,再將b以及本輪共享秘密值Knew代入計算N4′=Cmp(a⊕N3,Knew),然后對比兩者值。 相等,可進行(1)。不等,將再次把b和上輪共享秘密值Kold代入計算N4″=Cmp(a⊕N3,Kold),然后對比兩者值。如果仍不等,標簽未能通過讀寫器驗證,協(xié)議停止;相等,可進行(1)。 (1) 讀寫器計算N5,接著開始更新信息Kold=Knew、Knew=Cmp(a,b⊕K),最后將N5發(fā)送給標簽。其中:N5=Cmp(a,b)。 步驟4標簽收到消息,結(jié)合之前步驟中計算得到的信息計算N5′=Cmp(a,b),然后對比計算所得值與接收到值是否相等。 不等,協(xié)議停止。相等,標簽一端開始更新信息K=Cmp(a,b⊕K)。 至此,通信實體之間的認證完成。 (1) 雙向認證。協(xié)議需要提供最基本的雙向認證需求,改進的協(xié)議可以保障。標簽首次通過N1和N2對信息發(fā)送方的讀寫器進行驗證;讀寫器通過N3和N4對標簽進行驗證;標簽再次通過N5對讀寫器進行驗證。通過上述的三次驗證,可以使得讀寫器與標簽之間實現(xiàn)彼此的認證。 (2) 假冒攻擊。攻擊者假裝讀寫器向標簽發(fā)消息,攻擊者不知道標簽ID,無法正確計算N1值,N2的值也無法正確計算。標簽收到錯誤的N1和N2之后,通過計算即可識別攻擊者假冒。 攻擊者假冒標簽給讀寫器發(fā)消息,攻擊者不知道讀寫器與標簽的共享秘密值K,無法正確計算N3和N4。讀寫器收到N3和N4之后,讀寫器簡單計算即可識別攻擊者假冒。 按照上述講述,攻擊者偽裝讀寫器及標簽都失敗。 (3) 定位攻擊。如果通信過程中標簽發(fā)送的消息值一致沒有變動,則攻擊者通過長時間的監(jiān)聽可以對標簽的位置發(fā)起定位攻擊。改進的協(xié)議在所有信息加密過程中混入隨機數(shù),使得每個信息每次的計算值都是不同的;同時隨機數(shù)產(chǎn)生的時候因自身具備無法預測性和不重復性,使得攻擊者無法追蹤定位標簽的位置。 (4) 窮舉攻擊。改進的協(xié)議任何一個通信消息加密過程中都至少有兩個參數(shù)的數(shù)值是攻擊者不知道的,很多時候可能還有更多的參量的值是攻擊者不知道的。以攻擊者截獲N1和N2為例子,進行窮盡攻擊分析,由N1可計算a=N1⊕ID,再將a代入計算N2′=Cmp(N1⊕ID,ID)。在N2′中,看似好像只有ID的值不知道,攻擊者以為自己可以窮盡ID的值,從而獲取標簽的隱私信息;但實則攻擊者根本無法窮盡,原因在于:根據(jù)本文循環(huán)移動置換運算Cmp的實現(xiàn)描述,可以很清楚地得出算法加密過程中用到兩個參數(shù)的漢明重量值,而對于攻擊者來說N1⊕ID和ID這兩個參數(shù)的漢明重量值都是不知道的,再加上ID的值也不知道,這樣攻擊者就至少有三個量的值不知道,因此攻擊者無法窮盡任何有用的隱私信息。 (5) 重放攻擊。在監(jiān)聽獲取一輪會話信息后,攻擊者可以重放該信息,以通過其中一方通信實體的認證,但在改進的協(xié)議中,攻擊者無法成功。原因在于:所有消息加密過程中用到隨機數(shù),每個消息都會因為每輪用到的隨機數(shù)不同,而使得每輪中用到的消息值也是不同的,從而可以保障消息的新鮮性。當攻擊者重放上一輪監(jiān)聽獲取的消息時,本輪通信過程中用到的隨機數(shù)已發(fā)生變更,相對應的消息的值也發(fā)生變化,攻擊者重放消息失敗。 (6) 異步攻擊。讀寫器一端存放有前后兩輪會話用到的讀寫器與標簽的共享秘密值,因此可以抵抗異步攻擊。首先讀寫器會用本輪的共享秘密值驗證標簽,驗證失敗的時候,讀寫器會調(diào)用上輪的共享秘密值再次對標簽進行驗證。通過前后兩次的驗證,可以恢復標簽與讀寫器之間暫時失去的一致性。 選擇標簽作為研究對象,進行不同協(xié)議之間的計算量等性能分析,具體如表1所示。 表1 協(xié)議之間的性能比對結(jié)果 表1中:Ma表示位運算(常見的位運算有異或運算、與運算等)的計算量;Mb表示循環(huán)移動置換運算的計算量;Mc表示產(chǎn)生隨機數(shù)的計算量;Md表示哈希函數(shù)的計算量;Me表示模運算的計算量。 同時設(shè)定各個參數(shù)的長度以及通信消息的長度全為L長度,則標簽一端因需要存放共享秘密值和標識符,故存儲量為2L;標簽與讀寫器之間一輪完整會話包含N1、N2、N3、N4、N5五個消息,故通信量為5L,其中步驟1中的Ask消息所在空間量極小,可忽略。 協(xié)議在步驟2中計算隨機數(shù)a用到一次位運算,計算N2′用到一次循環(huán)移動置換運算,計算消息N3時第二次用到位運算,計算消息N4時用到第二次循環(huán)移動置換運算。在步驟4中計算N5′時第三次用到循環(huán)移動置換運算,最后更新共享秘密值時第四次用到循環(huán)移動置換運算。同時標簽在步驟2中將產(chǎn)生隨機數(shù)b,故本文協(xié)議標簽一端計算量為2Ma+4Mb+1Mc。 綜上所述,本文協(xié)議在計算量角度占有一定的優(yōu)勢,能夠極大程度上減少和降低系統(tǒng)中整體計算量,在通信量及存儲量角度與其他協(xié)議相當,同時本文協(xié)議能夠彌補其他協(xié)議存在的不足之處,故協(xié)議具備一定的使用價值。 針對基于哈希函數(shù)提出的協(xié)議,本文分析張興等所提協(xié)議的不足,給出改進的協(xié)議。本文協(xié)議首先采用密文發(fā)送信息的方式,迫使攻擊者無法直接獲取任何明文信息;其次協(xié)議運用創(chuàng)新型的加密算法對信息進行加密,即循環(huán)移動置換運算加密方法,該加密方法將會在加密過程中依據(jù)加密參數(shù)自身漢明重量值的不同,而進行向左或向右不同方向的循環(huán)移動,增加攻擊者破解難度,增多攻擊者不知道的參數(shù)數(shù)量。將協(xié)議和其他協(xié)議進行安全及性能多角度的分析,得出本文協(xié)議不僅可以彌補原協(xié)議存在的安全不足問題,同時可以極大程度上降低標簽的整體計算量,適用于現(xiàn)有的系統(tǒng)中。1.3 符號含義
1.4 協(xié)議步驟
2 安全性分析
3 性能分析
4 結(jié) 語