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