周志彬 王國軍 劉 琴 賈維嘉
1(湖南師范大學信息科學與工程學院 長沙 410012) 2(中南大學信息科學與工程學院 長沙 410083) 3(廣州大學計算機科學與教育軟件學院 廣州 510006) 4(湖南大學信息科學與工程學院 長沙 410082) 5(上海交通大學計算機科學與工程系 上海 200240)
無線射頻識別(radio frequency identification, RFID)技術(shù)是物聯(lián)網(wǎng)環(huán)境下普遍采用的一種物理層無線通信技術(shù).該技術(shù)能夠?qū)⒏街蠷FID標簽(Tag)的物品通過閱讀器(Reader)將數(shù)據(jù)傳輸至后臺服務(wù)器(Server),從而實現(xiàn)物品的網(wǎng)絡(luò)互聯(lián),具有很重要的現(xiàn)實意義,被應(yīng)用到物聯(lián)網(wǎng)的各個領(lǐng)域.由于RFID主要是通過無線方式實現(xiàn)信息傳遞,而通信雙方都是性能受限的設(shè)備,隨著其應(yīng)用越來越廣泛,其安全性與隱私性成為了當前的研究熱點[1-4].在其基礎(chǔ)之上提出的RFID群證明技術(shù)是一種防偽造協(xié)議[5-6],其基本思想是利用物聯(lián)網(wǎng)中的閱讀器在某個既定的時間段內(nèi),對屬于同一個群組(group)的2個或者多個標簽信息進行收集,如果時間段設(shè)置足夠短,可以認為這些標簽同時出現(xiàn)在Reader識別范圍內(nèi),稱為同時掃描(simultaneous scan),然后生成一個群證明(grouping proof)作為同時掃描到多個標簽的證據(jù),提交給后臺的驗證服務(wù)器(Verifier)驗證,確保多標簽組成的實體的完整性.RFID群證明技術(shù)可用于藥劑核對、物流信息校驗等,因而在物聯(lián)網(wǎng)環(huán)境下的醫(yī)療衛(wèi)生[7-9]、物流管理[10-11]等領(lǐng)域有著廣泛的應(yīng)用.
根據(jù)在協(xié)議執(zhí)行中Reader與后臺的數(shù)據(jù)連接狀態(tài),群證明協(xié)議分為在線與離線2種.在線協(xié)議中,Reader與后臺的Verifier始終保持連接,群證明的驗證也是由Verifier在線完成[12-13].而離線協(xié)議不要求Reader與Verifier的連續(xù)數(shù)據(jù)連接,Reader處于離線模式下工作,從Verifier獲取群信息以后,先與群組內(nèi)標簽分別進行通信,發(fā)送隨機數(shù)NR搜集Tag的信息認證碼(message authentication code, MAC)響應(yīng),計算群證明;最后再與Verifier建立連接,提交并驗證群證明數(shù)據(jù),其系統(tǒng)模型如圖1所示:
Fig. 1 System model of off-line grouping proof protocol圖1 離線群證明協(xié)議系統(tǒng)模型
這種方式不要求Reader與Verifier的實時連接,具備更好的實用性,但也存在一定的安全問題,其中最主要的問題就是grouping-proof的正確性只能通過Verifier進行,如果在群證明過程中有無關(guān)Tag或者敵手冒充的Tag參與協(xié)議,則協(xié)議生成的proof在Reader提交給Verifier之前,都不會被發(fā)現(xiàn),因此無法適用于一些時效性要求較高的場合.但如果完全將驗證grouping-proof的權(quán)限交給Reader,在Reader不可信的情況下,又難免造成Tag信息的泄露,威脅Tag的隱私安全.
本文的主要貢獻包括4個方面:
1) 對Batina的協(xié)議[14]進行了分析,指出其在冒充攻擊以及中間人攻擊中存在一定的安全風險;
2) 構(gòu)建了一種消息封裝方式,通過會話密鑰和群組密鑰,將標簽的身份信息封裝在群證明消息中,使得群證明消息中包含群成員信息以及身份信息;
3) 基于該消息封裝方式,提出了一種支持2個標簽的RFID離線匿名雙層校驗群證明協(xié)議,該協(xié)議能夠在確保標簽隱私的前提下授權(quán)閱讀器進行群證明校驗,提高系統(tǒng)對于非法群證明的響應(yīng)效率,并在其基礎(chǔ)上將其擴充為AGPDL,支持多個標簽的雙層校驗群證明;
4) 對AGPDL協(xié)議進行了安全性分析和性能分析,指出其相對于其他群證明協(xié)議的優(yōu)勢.
群證明的思想最早由Juels[5]在2004年提出,稱為”yoking-proof”,通過Reader對標簽信息的搜集,其能夠完成對2個標簽的群證明,在后續(xù)的研究中,這一思路被不斷地擴展,其中Saito[6]對yoking-proof的一些安全問題進行了分析,并提出了相應(yīng)的改進,首次引入群組(group)的概念,支持多個標簽參與群證明,最終發(fā)展成為grouping-proof群證明協(xié)議.
就目前來說,由于在線模式的群證明協(xié)議對網(wǎng)絡(luò)連接要求較高,在許多場景中的實用性不高,當前的群證明協(xié)議的研究均是針對離線模式來進行的.
Burmester等人[15]對離線群證明協(xié)議進行了分析,指出大部分協(xié)議存在的一些問題:1)容易遭到重放攻擊,敵手可以通過對之前協(xié)議會話中的消息進行記錄與重放,欺騙標簽,從而進行群證明的偽造;2)Reader缺乏對群證明有效性進行校驗的功能.如果敵手通過某種方式偽造無效的群證明,在提交到后臺之前都無法發(fā)現(xiàn),從而降低了協(xié)議的執(zhí)行效率;3)部分協(xié)議不支持匿名,無法保護標簽的隱私信息.作者后來在文獻[16]中,針對這些問題進行了改進,提出采用數(shù)據(jù)編碼的方式對標簽信息進行校驗,提升了系統(tǒng)的安全性.
在協(xié)議的安全算法方面,考慮到RFID標簽有限的計算能力,許多的RFID群證明安全協(xié)議均采用位運算或者單向Hash函數(shù)來實現(xiàn)消息的加密[8,16-18],其中文獻[8]提出了IMRIP群證明協(xié)議,使用偽隨機數(shù)發(fā)生器與二進制位運算實現(xiàn)了智能醫(yī)療中的用藥管理,并進行了安全性分析與性能分析,能夠以較小的開銷防御冒充攻擊、重放攻擊等攻擊手段,同時也能確保閱讀器數(shù)據(jù)的安全,具有較強的實用性.這類方案具有計算開銷低、系統(tǒng)響應(yīng)快的優(yōu)點,但安全性并不高,很難應(yīng)用在安全性要求較高的場合中.許多學者開始研究如何將傳統(tǒng)加密方案應(yīng)用到RFID標簽中,但一方面由于RFID系統(tǒng)中標簽的數(shù)量十分龐大,對稱加密會帶來大量的密鑰分配開銷,不具備實際意義;另一方面,對稱加密算法的系統(tǒng)開銷過大,不適用于RFID系統(tǒng)[19].現(xiàn)有的研究均是基于公鑰加密來進行的.由于相對于RSA加密方案,ECC在安全性和性能開銷方面更加適合,成為了研究的主要方向.Batina等人在文獻[20]中提出了一種適用于ECC的RFID標簽芯片;隨后提出了基于ECC的RFID認證協(xié)議[21];基于該協(xié)議,Batina等人[22]設(shè)計了ID-transder認證協(xié)議,并于文獻[14]中,將其應(yīng)用于RFID群證明中,提出了標簽防串謀群證明協(xié)議CTP(colluding tag prevention).該協(xié)議能夠在Reader和Tag不可信的情況下確保生成有效的離線群證明;但之后Hermans等人[23]和Kang[24]的研究中指出,CTP協(xié)議存在一些安全問題.其中文獻[23]指出其容易遭受冒充攻擊與中間人攻擊;文獻[24]指出其標簽容易遭受惡意追蹤,并提出采用Reader與Tag之間的雙向認證來防止冒充與追蹤.
在本節(jié)中,我們主要介紹文獻[14]中提出的CTP協(xié)議,并對該協(xié)議進行安全性分析.
CTP協(xié)議中使用的符號標識如表1所示:
Table 1 Notation of CTP表1 CTP符號標識
CTP的協(xié)議流程如圖2所示,在協(xié)議執(zhí)行前,TagA與TagB已經(jīng)存儲了Verifier的公鑰Y.
Fig. 2 CTP protocol圖2 CTP協(xié)議
協(xié)議中“Start left”與“Start right”消息用于讓Tag確認自己在協(xié)議中的位置.TagA隨機選擇整數(shù)rA,計算TA,1,由Reader轉(zhuǎn)發(fā)到TagB.后者隨機選擇整數(shù)rB,計算TB,1,并使用自己的私鑰sB以及rB,點rSTA,1的x坐標x(rsTA,1),和rs計算TB,2.然后將{TB,1,TB,2}發(fā)送給Reader.接下來,Reader將TB,2轉(zhuǎn)發(fā)給TagA,后者使用TB,2,私鑰sA,以及rA,公鑰Y計算TA,2,最后,由Reader向Verifier提交群證明:
(TA,1,TA,2,rs,TB,1,TB,2).
(1)
Verifier收到群證明后,進行校驗:
sAP=(y-1TA,2-TA,1)x(TB,2)-1,
(2)
sBP=(y-1TB,2-TB,1)x(rsTA,1)-1.
(3)
如果校驗通過,則群證明有效,添加時間戳后存儲在服務(wù)器上.
CTP協(xié)議能夠通過橢圓曲線加密保證群證明的有效性,但仍存在一些問題.其中包括冒充攻擊、中間人攻擊[23]以及惡意追蹤[24].其中,文獻[24]通過加入Reader與Tag之間的雙向認證來解決冒充攻擊,為此要求所有Tag均必須存儲Reader的公鑰,但考慮到實際的RFID中,Reader往往會經(jīng)常發(fā)生變化,該方案在密鑰分配上將會帶來一定的困難.此外,CTP協(xié)議還容易遭受拒絕服務(wù)攻擊(deny of proof, DoP)攻擊[25].DoP攻擊的作用在于有意構(gòu)建無效的群證明,敵手于協(xié)議執(zhí)行時在合法Tag中混入非法Tag,并參與到群證明的生成.這樣一來,就能夠干擾正常的群證明計算,該攻擊方式主要針對離線模式的群證明協(xié)議,因為離線模式下,只有將群證明數(shù)據(jù)提交到Verifier驗證時才能發(fā)現(xiàn)其是否合法,敵手很容易讓Reader計算出大量無效群證明,干擾協(xié)議的執(zhí)行.
為了避免DoP攻擊,就必須在將群證明數(shù)據(jù)提交到Verifier之前,授權(quán)Reader對Tag的消息進行校驗,為此,Reader需要存儲Tag的身份信息,而考慮到RFID系統(tǒng)中,Reader并不屬于可信實體,如果敵手通過某種方式,獲取了Reader中的數(shù)據(jù),會造成Tag信息的泄露,從而給整個系統(tǒng)帶來安全威脅.
本文中RFID群證明協(xié)議一共包含3個部分:Reader,Tag,Verifier,三者的特點描述如下:
本文中,Reader被看成一個有可能被不可信第三方入侵的設(shè)備,敵手能夠通過入侵Reader獲取其中的數(shù)據(jù).
本文中考慮的Tag屬于低功耗的被動標簽,具有有限的存儲空間以及計算能力,容易被敵手控制,并獲取其數(shù)據(jù).根據(jù)需要,標簽被劃分為不同的群組(group),表示為G={G1,G2,…,Gn}.
Verifier是一個位于后臺的可信第三方,保存了所有的密鑰以及標簽的群組信息.
在協(xié)議執(zhí)行前,Verifier將群組信息發(fā)送至Reader,授權(quán)其進行群證明數(shù)據(jù)的收集和校驗.在協(xié)議執(zhí)行過程中,Reader對群組內(nèi)的標簽進行信息搜集,并計算相應(yīng)的群證明GP.經(jīng)過第1層校驗后提交到Verifier,并由Verifier進一步驗證.
在協(xié)議的執(zhí)行過程中,存在2種信道,其中Reader與Tag的通信信道被認為是不安全的,敵手能夠竊聽甚至控制該信道中的信息.而Reader與Verifier間的信道被認為是安全的,敵手無法竊聽和修改其中傳輸?shù)男畔?
在群證明協(xié)議中,敵手的目的主要有2個:1)偽造能夠通過Verifier驗證的群證明;2)獲取關(guān)于Reader與Tag的隱私數(shù)據(jù).文獻[26]給出了關(guān)于敵手能力的一般性定義:敵手能夠完全控制Reader與Tag之間的信道,包括對信道中的消息進行修改、延遲以及重放.除此之外,敵手能夠?qū)ag進行入侵甚至完全控制.
群證明協(xié)議的安全需求包含5個方面:
1) 匿名性.敵手無法通過對協(xié)議消息的竊聽獲取關(guān)于消息來源者的信息.
2) 位置隱私.敵手無法對Reader或Tag的位置進行追蹤.
3) 抵抗重放攻擊.敵手無法通過使用之前協(xié)議會話中的消息來欺騙Reader或者Tag,生成有效的群證明.
4) 抵抗DoP攻擊.敵手無法在協(xié)議執(zhí)行過程中通過非法Tag生成無效群證明,提交到Verifier,影響到系統(tǒng)對于非法群證明的響應(yīng)速度.
5) Tag隱私數(shù)據(jù)保護.在Reader被敵手侵入的情況下,敵手無法通過存儲在Reader中的數(shù)據(jù)獲取關(guān)于Tag的秘密信息.
為了解決第3節(jié)中提到的問題,我們提出采用雙層校驗的AGPDL群證明協(xié)議.為敘述方便,我們首先將群組中的標簽數(shù)量設(shè)置為2個,即TagA與TagB.之后本文將該協(xié)議擴展至多個標簽的情況.為確保2個標簽被“同時掃描”,AGPL中的協(xié)議各方通過各自的計時器來判斷協(xié)議會話是否超時,如果會話超時,則終止協(xié)議.協(xié)議中的相關(guān)符號說明如表1所示.
AGPL協(xié)議的包含3個階段:1)初始化階段;2)群證明生成階段;3)校驗階段.
后臺服務(wù)器對所有標簽進行分組,不失一般性,本文假設(shè)群組包含的標簽數(shù)量為2個的情況,協(xié)議中的符號標識名稱及描述如表2所示,其中TagA與TagB被劃分為同一個群組G.
Table 2 Notation of AGPDL表2 AGPDL符號標識
Verifier為群組G選擇隨機數(shù)kG∈,并計算KG=kGP作為群組G的公鑰,然后將私鑰kG與Reader共享,并將公鑰KG存儲在TagA,TagB中,同時存儲二者的公鑰{SA,SB}.
群證明計算階段的協(xié)議流程如圖3所示:
Fig. 3 AGPDL protocol with two tags圖3 2標簽的AGPDL協(xié)議流程
1) Reader選擇偽隨機數(shù)rs,使用當前的群組公鑰計算Hash函數(shù)C=h(rs⊕KG),并與消息“Start left”一起發(fā)送給TagA.
(4)
最后將消息{ma,ra}發(fā)送給Reader.
3) Reader將rs,mA,C以及消息“Start right”發(fā)送給TagB.
4) TagB首先使用自己的群組公鑰KG驗證C的合法性,如果驗證成功,選擇偽隨機數(shù)k2∈,計算rB,,并計算:
(5)
(6)
其中,TB用于Reader驗證TagB的group身份,mB用于Verifier對TagB的身份進行確認.并發(fā)送消息{mB,TB,rB}給Reader.
5) Reader發(fā)送TB給TA.
6) TagA計算
(7)
并發(fā)送至Reader.
最終,Reader生成grouping-proof為
GP={mA,TA,mB,TB,rA,rB,rs}.
(8)
驗證一共分為2個階段進行:1)Reader匿名驗證階段;2)Verifier認證階段.
1) Reader匿名驗證階段
(9)
(10)
2) Verifier認證階段
群證明GP第2階段的驗證由Verifier進行,主要用于確認參與群證明的Tag身份,其認證過程如下:
u1=rswmodn,
(11)
u2=rAwmodn.
(12)
最后驗證
rA=x(u1P+u2SA)
(13)
是否成立,如果成立,則驗證成功,否則驗證失敗.
之前的協(xié)議描述中,假定每個群組中的Tag數(shù)量為2個,接下來對協(xié)議進行擴展,使其能夠應(yīng)用在包含多個Tag的群組中.
首先,我們討論groupG包含3個Tag的情況,即TagA,TagB,TagC,此時群證明的計算流程如圖4所示.
Fig. 4 AGPDL protocol with three tags圖4 3標簽的AGPDL協(xié)議
圖4中,虛線表示該協(xié)議消息是經(jīng)過Reader轉(zhuǎn)發(fā)的.mA,TB,mB的計算分別如式(4)~(6)所示.其中TagC的協(xié)議消息的計算為
(14)
(15)
TC被發(fā)送到TagA.TagA計算:
(16)
最后,Reader計算的群證明可以表示為
GP3={mA,TA,mB,TB,mC,TC,rA,rB,rC,rs}.
(17)
為了進行群證明校驗,Reader匿名驗證階段的驗證式修改為
(18)
(19)
(20)
進一步考慮群組G={Tag1,Tag2,…,Tagn}(n≥3)的情況,可以得到多Tag群證明的計算鏈如圖5所示:
Fig. 5 AGPDL protocol with n tags圖5 n標簽的AGPDL協(xié)議
同理,可得消息Ti與mi的計算表達式為
(21)
相應(yīng)的群證明:
GP={m1,T1,r1,m2,T2,r2,…,mn,Tn,rn}.
(22)
Reader匿名校驗階段采用的驗證式為
(23)
Verifier按照式(11)~(13)的方式對群證明進行最終的驗證,并認證Tag的身份.
在協(xié)議執(zhí)行中,實體間傳遞的消息集合可以表示為{{mi,Ti,ri|i=1,2,…,n},rs},其中{ri|i=1,2,…,n}以及rs分別是由Tag與Reader生成的偽隨機數(shù),而其余消息均是通過這些偽隨機數(shù)計算生成.敵手無法通過這些消息確定發(fā)送方的身份,從而確保了協(xié)議各方的匿名性.
在DoP攻擊中,敵手通過使用非法Tag參與群證明,破壞協(xié)議的執(zhí)行,在AGPDL中,敵手在不知道群組密鑰的情況下,無法以大概率構(gòu)造出合法的GPi,從而無法通過驗證式,協(xié)議在Reader驗證階段就會提前終止,而不會被提交到Verifier.
在AGPDL中,為了在抵御DoP攻擊的同時,最大程度地確保Tag信息的安全性,Reader中存儲的信息為{kG,KG},其中并不包含標簽的身份信息,即使敵手通過某種方式控制了Reader,并得到了其中的數(shù)據(jù),也無法據(jù)此推斷出Tag的任何隱私信息.
敵手的冒充攻擊分為2種情況:冒充Tag或者冒充Reader.其中,冒充Tag的攻擊中,敵手希望能夠冒充一個合法的Tag,欺騙Reader通過群證明,并進一步欺騙Verifier.而冒充Reader主要是搜集Tag的秘密信息,或者在沒有掃描到Tag的情況下生成grouping-proof,欺騙Verifier.現(xiàn)分別描述如下:
1) 敵手冒充Tag
2) 敵手冒充Reader
敵手冒充Reader,能夠搜集到的信息為GPi,所有消息均采用密文傳輸,在不知道Tag密鑰的情況下,敵手無法通過這些消息反推出Tag的身份信息,也同樣無法在不同時掃描到所有Tag的情況下提交有效的群證明.
本文采用文獻[27]中使用的敵手模型,對于重放攻擊,定義能被敵手訪問的oracle包含4個:
1)Launch()→π,m.該oracle發(fā)起一個新的協(xié)議實例π,并且產(chǎn)生由Reader發(fā)出的第1條消息m.
2)SendTag(Tagi,m)→m′.該oracle將消息m和一個Tag的別名vtag作為輸入,功能是將消息m發(fā)送給vtag對應(yīng)的標簽Tagi,i∈[1,n],并返回標簽的響應(yīng)消息m′.
3)SendReader(π,m)→m′.該oracle表示在協(xié)議實例π中,將消息m發(fā)送給Reader,并返回其響應(yīng)m′.
4)Corrupt(Tagi)→α.該oracle表示對Tagi進行破解,并獲取其內(nèi)部信息α={si,P,KG}.
1) 系統(tǒng)設(shè)置階段
定義一個挑戰(zhàn)者S,完成下列工作:①使用安全參數(shù)k初始化系統(tǒng),其中k表示ECC的密鑰長度.②設(shè)置Reader,Verifier以及標簽集合.
2) 詢問階段
敵手A調(diào)用Launch,SendTag,SendReader,獲取相關(guān)信息,另外,敵手還能夠調(diào)用Corrupt(Tagi),其中Tagi≠Tagx.
3) 挑戰(zhàn)階段
A調(diào)用Launch(),發(fā)起一個新的群證明協(xié)議實例π,使用在詢問階段得到的信息參與該協(xié)議,最終返回一個待驗證的群證明p,證明協(xié)議π在Tagx沒有參與協(xié)議的情況下,同時掃描到了group中包含Tagx在內(nèi)的標簽集合{Tagi:i∈[1,n],Tagx}.如果p能夠同時被Reader和Verifier驗證通過,S輸出1,否則輸出0.
(24)
Fig. 6 The replay attack圖6 重放攻擊
具體攻擊過程如下:
1) 詢問階段
① 敵手A執(zhí)行Launch()→π,δ,發(fā)起新的群證明協(xié)議實例π,并產(chǎn)生Reader的初始化消息δ={“Start first”,rs,C}.
③ 對于i=j+1,敵手A執(zhí)行
(25)
得到返回值m′={ri,mi,Ti}.其中:
(26)
S將m′加入到τ中.
④ 對于i>j+1,敵手A執(zhí)行
SendTag(Tagi,{rs,Ti-1,C})→m′,
(27)
得到返回值m′={ri,mi,Ti}.其中:
(28)
S將m′加入到τ中.
⑤S查詢集合τ,輸出
(29)
作為待定群證明.
2) 挑戰(zhàn)階段
① 由于敵手A能夠?qū)Τ齌agx之外的所有Tag調(diào)用Corrupt(Tagi)→α,得到這些標簽的密鑰,因此協(xié)議π中的驗證表達式
(30)
在x≠i時成立.
② 對于標簽Tagx,其對應(yīng)的驗證表達式為
(31)
證畢.
協(xié)議與其他方案的安全性比較如表3所示:
Table 3 Security Comparison of Grouping-Proof Protocols表3 群證明協(xié)議安全性對比
Notes:“√” means the protocol can provide corresponding security; “×” means the protocol can't provide corresponding security.
通過比較可以看出,AGPDL基本能夠滿足RFID群證明的安全需求,對于冒充攻擊以及DoP攻擊相對于其他協(xié)議具有一定的優(yōu)勢.
在AGPDL中,主要的運算包含4種:基于橢圓曲線下的點乘(point multiplication)、模乘(modular multiplication)、取逆運算(modular inversion)以及Hash運算,分別表示為:Tecm,Tmul,Tinv,Th.文獻[30]指出這4種運算的開銷可以統(tǒng)一由模乘運算來進行等效,即Tinv≈3Tmul,Tecm≈1200Tmul,Th≈3.6Tmul.于是CTP與AGPDL的Tag端運算開銷比較如表4所示:
Table 4 Comparison of Computational Cost表4 運算開銷對比
通過比較可以看出:相對于CTP協(xié)議,本文協(xié)議在保證雙層校驗、防御DoP攻擊的同時,性能開銷有所降低.另外,考慮2標簽AGPDL與n標簽AGPDL的比較,可以看到標簽側(cè)的運算開銷一致,協(xié)議具有較好的可擴展性.
本文提出了一種采用雙層校驗的離線RFID群證明協(xié)議AGPDL,與傳統(tǒng)的將群證明的校驗完全交給Verifier不同,本文加入了Reader的匿名校驗階段,能夠在確保標簽隱私信息安全的情況下,由Reader提前對群證明數(shù)據(jù)進行檢查,防止DoP攻擊,提升系統(tǒng)的效率和實時性.同時能夠防止冒充攻擊、重放攻擊,并確保協(xié)議各方的匿名性.