任雪萍,蔡培偉,郭遠(yuǎn)凱,范 揚
(杭州電子科技大學(xué)信息工程學(xué)院,浙江 杭州 311305)
無線射頻識別(radio frequency identification,RFID)作為一種新型的自動識別技術(shù)在物流管理,工業(yè)自動化,商業(yè)自動化,交通運輸控制管理等眾多領(lǐng)域得到了廣泛的應(yīng)用,在不遠(yuǎn)的將來將進(jìn)行產(chǎn)品級大規(guī)模應(yīng)用進(jìn)入日常生活。如果說標(biāo)準(zhǔn)問題與標(biāo)簽價格是阻礙RFID 技術(shù)推廣所面臨的兩個難題,那么安全與隱私問題便是RFID 這項技術(shù)是否能夠進(jìn)行行業(yè)應(yīng)用的關(guān)鍵。由于RFID 標(biāo)簽強(qiáng)大的追蹤能力,RFID 的廣泛應(yīng)用,也勢必給消費者帶來新的隱私威脅問題[1,2]。這種環(huán)境下隱私保護(hù)問題必將越來越受到人們的重視,對RFID 安全協(xié)議進(jìn)行研究具有重要的意義。研究RFID 隱私保護(hù)協(xié)議,有利于保護(hù)系統(tǒng)的安全性、保護(hù)信息傳輸?shù)陌踩裕苿覴FID技術(shù)的普及。
目前,已經(jīng)有許多認(rèn)證技術(shù)方案被提出來用于保護(hù)RFID 系統(tǒng)用戶的安全和隱私。根據(jù)所采取的措施,可以分為物理機(jī)制方案[3]和加密機(jī)制[4]方案。
物理機(jī)制方案主要有:Kill 命令機(jī)制、靜電屏蔽、阻塞法等。
“Kill 命令機(jī)制”是在設(shè)計標(biāo)簽時使之能夠接受一個Kill 命令。帶標(biāo)簽的產(chǎn)品在賣點掃描結(jié)賬后,向標(biāo)簽發(fā)出該命令,使標(biāo)簽自動失效。
完全殺死標(biāo)簽可以完美地阻止掃描和追蹤,但對于消費者來說,犧牲了RFID 標(biāo)簽所有售后利益。在很多情況下,標(biāo)簽不能被殺死。
阻塞法依靠編入標(biāo)簽識別碼的可修改位來保護(hù)隱私性,這一位稱為隱私位,為0 表示可以公開掃描,為1表示是私有。阻塞法依賴樹遍歷反沖突協(xié)議來起作用。除此之外,由于不可靠的RFID 傳輸,可以造成阻塞的失敗。隨著閱讀器的發(fā)展,可以利用信號強(qiáng)度等特征來過濾阻塞信號。
加密機(jī)制方案根據(jù)標(biāo)簽有沒有被分成多個小組,這些方案可分為兩類:基于分組的方法和不分組的方法。
不分組傳統(tǒng)的認(rèn)證方法,通常采用位邏輯運算符,哈希函數(shù)和偽隨機(jī)數(shù)字生成器(PRNG),對稱密鑰加密,數(shù)字簽名和零知識隱私模型等技術(shù)來實現(xiàn)安全和隱私保護(hù)的目的。
在文獻(xiàn)[5]中提及Sarma 等人于2003 年設(shè)計提出了基于哈希函數(shù)的Hash-Lock認(rèn)證機(jī)制。該認(rèn)證機(jī)制將通信中的數(shù)據(jù)用哈希函數(shù)進(jìn)行隱藏。但是,該協(xié)議也有較多的安全漏洞。因此,Hash-Lock 協(xié)議并不能滿足系統(tǒng)安全性要求。
根據(jù)能不能為標(biāo)簽提供字段級的保護(hù),基于分組的方法又可以分成兩類。
部分基于分組的方法,讀寫器或者可以獲取標(biāo)簽的整體信息,或者不能獲得任何信息。Avoine 等人提出的基于分組的認(rèn)證協(xié)議在可擴(kuò)展性和隱私保護(hù)中得到了較好的權(quán)衡。但是該協(xié)議存在嚴(yán)重缺陷。Farzana等人提出一個用于大規(guī)模RFID 系統(tǒng)的基于分組的認(rèn)證協(xié)議。但是該協(xié)議標(biāo)簽信息保護(hù)沒有達(dá)到字段級,而且系統(tǒng)的可擴(kuò)展性有限。
另一類基于分組的協(xié)議,提供分類保護(hù)。分類保護(hù)協(xié)議確保合法讀寫器僅獲得標(biāo)簽的部分授權(quán)信息。為了解決這個問題,H.Ning 等人為RFID 系統(tǒng)提出了一個可擴(kuò)展的分布式密鑰組身份認(rèn)證協(xié)議(KAAP)[6]。通過分析,號稱該協(xié)議具備抵制外部和內(nèi)部攻擊的能力。但是,在KAAP協(xié)議里讀寫器的角色被事先設(shè)定,很難改變。這個特性限制了該協(xié)議的可擴(kuò)展性。
X.Ren 等人提出了一個可擴(kuò)展的分類保護(hù)RFID認(rèn)證協(xié)議(SAAP)[7]。系統(tǒng)分析表明該協(xié)議在保證良好性能和較好可擴(kuò)展性的同時,能抵制內(nèi)外部的各種攻擊。如同不分組的協(xié)議,這兩個協(xié)議的隱私模型也假設(shè)攻擊方?jīng)]有破譯標(biāo)簽的能力。
協(xié)議執(zhí)行的初始條件包括以下幾個方面。
標(biāo)簽組:在本課題里,標(biāo)簽根據(jù)類型的不同被分成N 個組,每個小組里標(biāo)簽個數(shù)不同。其中考慮到醫(yī)院同時能夠接納的產(chǎn)婦和嬰兒的個數(shù)有限。這兩種類型的在用標(biāo)簽數(shù)目固定。(出院嬰兒和產(chǎn)婦的標(biāo)簽物理銷毀)。每個標(biāo)簽組有唯一的組密碼KGi,組內(nèi)標(biāo)簽共享這個密碼。每個標(biāo)簽組共享一個標(biāo)簽標(biāo)識(ID)池SETi。
其中1≤i ≤N,s是系統(tǒng)設(shè)置的參數(shù)。任意兩個標(biāo)簽組不共享任何一個ID,也就是當(dāng)?i≠q時,SETi∩SETq=?。
標(biāo)簽:每個標(biāo)簽保存有組密碼KGi,在授權(quán)的讀寫器和標(biāo)簽之間共享的唯一密碼KTj,以及標(biāo)識符IDi,x。IDi,x從SETi集合中隨機(jī)選出一個ID。
讀寫器組:讀寫器根據(jù)功能被分成M 個組,每個組內(nèi)的個數(shù)各不相同。讀寫器組對于標(biāo)簽組有一個授權(quán)訪問密碼組KEYMN,用來指示該組讀寫器對于某個標(biāo)簽組里的標(biāo)簽有哪幾個字段的訪問權(quán)。
讀寫器:每個讀寫器對于有訪問權(quán)限的標(biāo)簽組有一個秘密信息集合σi={K Gi,{K Tj,1 ≤j ≤s} |1 ≤i ≤M},保存有該讀寫器所在的讀寫器組相關(guān)的授權(quán)訪問密碼組KEYpN,其中p表示該讀寫器所在的組別。
發(fā)行者:發(fā)行者初始化各個系統(tǒng)參數(shù)(N-標(biāo)簽組數(shù),M-讀寫器組數(shù),s-標(biāo)簽組最多標(biāo)簽的個數(shù))。給每個標(biāo)簽組分配一個組密碼KGi和一個標(biāo)識符集。初始化授權(quán)訪問密碼組KEYMN,把每個讀寫器允許訪問的標(biāo)簽組的相關(guān)信息集和授權(quán)訪問密碼組KEYpN寫入該讀寫器。其中p表示該讀寫器所在的組別。該協(xié)議描述中使用的符號及其含義如表1所示。
表1 協(xié)議中的符號及其含義
新設(shè)計的隱私保護(hù)協(xié)議認(rèn)證過程如圖1,詳情如下。
圖1 基于RFID的隱私保護(hù)協(xié)議
⑴讀寫器產(chǎn)生一個隨機(jī)數(shù)nr,利用它要訪問的標(biāo)簽組密碼KGi,采用對稱加密算法加密隨機(jī)數(shù),并把加密后的結(jié)果發(fā)給標(biāo)簽。
⑵收到信息的標(biāo)簽,用自身的組密碼KGi,解密。如果可以解密則轉(zhuǎn)⑶繼續(xù),否則不予理會,直接結(jié)束。
⑶標(biāo)簽先產(chǎn)生一個隨機(jī)數(shù)nt,接著利用KGi和對稱加密算法加密nr,nt和IDi,x這三個數(shù)連接后的值,用KTj和對稱加密算法加密nr和nt這二個數(shù)連接后的值,最后把獲得加密后的值發(fā)給讀寫器。
⑷讀寫器在秘密信息集中,查找有沒有KGi可以解密第一個數(shù)。如果沒有,就結(jié)束認(rèn)證。否則,查看解密后的第一部分是不是nr,如果不是,結(jié)束認(rèn)證,否則得到IDi,x。然后在σi中,查找跟IDi,x關(guān)聯(lián)的密碼,搜索合適的KTj,進(jìn)行解密。如果存在著這樣一個密碼KTj,則接受該標(biāo)簽轉(zhuǎn)⑸,否則拒絕。
⑸在授權(quán)訪問密碼組KEYMN中,找出合適的Kij,利用KTj和對稱加密算法加密Kij和nt的連接值,把結(jié)果發(fā)給標(biāo)簽。
⑹標(biāo)簽收到信息后,用KTj解密,獲得隨機(jī)數(shù)和授權(quán)訪問碼。如果隨機(jī)數(shù)與nt不符,則結(jié)束,否則根據(jù)授權(quán)訪問碼,允許該讀寫器訪問本標(biāo)簽相應(yīng)字段的值,把相信字段的信息加密后發(fā)給讀寫器。
⑺特殊情況,遇到嬰兒出院,需要先在讀寫器和嬰兒的標(biāo)簽之間通訊,獲得其母親的信息。讀寫器再和產(chǎn)婦的標(biāo)簽通信獲得其相關(guān)信息,一致后,讀寫器發(fā)出通過的信號,放行,同時他們的標(biāo)簽物理銷毀。
⑻讀寫器每隔5分鐘主動發(fā)出請求驗證信號時,如果嬰兒的標(biāo)簽位置無反饋或反饋數(shù)據(jù)異常時,發(fā)送警報,提醒醫(yī)護(hù)人員注意。
⑼嬰兒需要離開病房去檢查時,用特定的讀寫器去讀取嬰兒標(biāo)簽,先檢查是否有醫(yī)療檢查預(yù)約,若有則驗證抱嬰兒人的身份,若身份驗證通過則暫時關(guān)閉該標(biāo)簽報警系統(tǒng)。檢查科室有相應(yīng)的掃描讀寫器,當(dāng)該標(biāo)簽進(jìn)入時即刻反饋嬰兒位置信息。當(dāng)回到病房區(qū)域后讀寫器掃描到該標(biāo)簽時同樣自動開啟報警系統(tǒng)。估計路程時間,若超過規(guī)定時間還沒到達(dá)指定區(qū)域,發(fā)警報給醫(yī)護(hù)人員,醫(yī)護(hù)人員詢問相關(guān)聯(lián)系人,一定時間內(nèi)未聯(lián)系上則報警。
⑴防竊聽攻擊
協(xié)議中,讀寫器和標(biāo)簽之間的信道,讀寫器和后端數(shù)據(jù)之間的信道,所有真實消息均經(jīng)過對稱加密算法后傳遞,基于隨機(jī)數(shù)的堆成加密算法保證了攻擊者即使在信道中竊聽到了傳遞的消息,也無法恢復(fù)出消息的真實內(nèi)容。
⑵防篡改、假冒攻擊
協(xié)議中,如果攻擊者截獲了加密后的值,由于攻擊者只能在標(biāo)簽和讀寫器之間的無線信道中竊聽到一個加密的值,信息截獲后相應(yīng)的讀寫器或標(biāo)簽無相應(yīng)的反饋。而本協(xié)議是雙向認(rèn)證的,所以攻擊者偽造消息企圖假冒標(biāo)簽通過讀寫器的認(rèn)證是困難的,實施篡改無法通過服務(wù)器認(rèn)證。因為非法讀寫器沒有訪問后端認(rèn)證服務(wù)器的權(quán)限,因而無法獲取標(biāo)簽ID 等信息,即攻擊者假冒讀寫器沒有意義。
⑶防重放攻擊和跟蹤
協(xié)議中讀寫器產(chǎn)生的隨機(jī)數(shù)Nr 每次通信中都是不相同的,因此每次通信發(fā)送響應(yīng)的消息也不同。這樣一方面,有效防止攻擊者根據(jù)通信中固定的輸入消息對標(biāo)簽進(jìn)行跟蹤;另一方面,即使攻擊者獲取到了某一次的通信消息,在下次通信時偽裝成標(biāo)簽對讀寫器產(chǎn)生正確的應(yīng)答消息是困難的,仍然無法通過對方認(rèn)證。
在新協(xié)議中,只使用了哈希函數(shù)和簡單的異或運算,相較于分布式挑戰(zhàn)-應(yīng)答協(xié)議,新協(xié)議在標(biāo)簽中只進(jìn)行了一次哈希運算且不需要集成偽隨機(jī)數(shù)發(fā)生單元,降低了標(biāo)簽的成本,提高了效率。此外,相較于大部分RFID 認(rèn)證協(xié)議的3-5步認(rèn)證,新提出的協(xié)議需要六步實現(xiàn)認(rèn)證,雖然步驟增加,但協(xié)議在安全性上有非常大的提升。
假設(shè)數(shù)據(jù)庫中存儲了N 個標(biāo)簽的信息,那么完整地執(zhí)行一次本協(xié)議,后端數(shù)據(jù)庫最少執(zhí)行一次哈希運算和一次比較,最多執(zhí)行N次哈希運算和N次查找;標(biāo)簽執(zhí)行一次哈希運算;讀寫器只需產(chǎn)生一次偽隨機(jī)數(shù)。假設(shè)協(xié)議中選取的哈希函數(shù)輸出以及標(biāo)簽ID 的長度均為L,那么每次通信信道中傳輸?shù)臄?shù)據(jù)長度為2L,標(biāo)簽的空間復(fù)雜度為2L。執(zhí)行一次本協(xié)議最多需要在后端數(shù)據(jù)庫中進(jìn)行N 次哈希運算和N 次查找,雖然隨著系統(tǒng)中標(biāo)簽數(shù)量的增加會增加認(rèn)證服務(wù)器的負(fù)擔(dān),但這從本質(zhì)上不會對RFID 系統(tǒng)的效率造成太大影響,因為本協(xié)議可用于分布式數(shù)據(jù)庫環(huán)境,可以分散存儲和計算。
針對上述安全問題以及協(xié)議執(zhí)行所需步驟,將文中提出的協(xié)議與幾種經(jīng)典認(rèn)證協(xié)議進(jìn)行比較,如表2所示。
表2 協(xié)議比較
使用的開發(fā)工具為IntelliJ IDEA(以下簡稱IDEA),使用的數(shù)據(jù)庫為MySQL 數(shù)據(jù)庫,使用的數(shù)據(jù)庫管理軟件為Navicat for MySQL,開發(fā)環(huán)境配置為JDK1.8,使用JAVA 按照RFID 隱私保護(hù)協(xié)議進(jìn)行程序設(shè)計實現(xiàn)協(xié)議的模擬。讀寫器有非法讀寫器和合法讀寫器。而合法讀寫器又可細(xì)分為產(chǎn)房讀寫器、藥房和檢查科讀寫器。
標(biāo)簽分為產(chǎn)房標(biāo)簽和藥房標(biāo)簽。只有當(dāng)讀寫器為合法讀寫器且是相對應(yīng)的標(biāo)簽的讀寫器時才可根據(jù)自己的權(quán)限訪問數(shù)據(jù)庫從數(shù)據(jù)庫中取得權(quán)限所對應(yīng)的信息,如圖2所示;否則訪問失敗。
以產(chǎn)房讀寫器讀取產(chǎn)房標(biāo)簽為例(其他操作指令的程序設(shè)計與此相近),通過點擊下發(fā)“讀取標(biāo)簽中的數(shù)據(jù)存儲區(qū)”指令在IDEA 中的JAVA 代碼實現(xiàn),如圖3所示。
圖3 控制程序段
新建一個信息提示框,通過點擊按鈕,獲取相應(yīng)屬性的reader和tag,根據(jù)點擊后的reader和tag進(jìn)行訪問,通過標(biāo)志為1來確認(rèn)此次訪問是成功的,訪問成功后,因為每個相同類型的標(biāo)簽id 均不同,去數(shù)據(jù)庫查詢相應(yīng)條目,獲取相應(yīng)的訪問字段內(nèi)容,展示在提示框中。具體的應(yīng)用場景模擬如圖4所示。
圖4 基于RFID的隱私保護(hù)協(xié)議應(yīng)用場景模擬
本研究針對基于射頻識別的醫(yī)院嬰兒管理系統(tǒng),基于分組思想,設(shè)計了一個新的RFID 協(xié)議。該協(xié)議具有分類保護(hù)和可擴(kuò)展性。通過安全性討論證明了協(xié)議的安全性,本協(xié)議能夠抵御常見安全攻擊。通過復(fù)雜度分析,證實了本協(xié)議更適用于低性能的標(biāo)簽。分析表明,與其他相關(guān)協(xié)議相比:該協(xié)議在抵抗各種內(nèi)外部攻擊(內(nèi)部攻擊、重放攻擊、跟蹤攻擊、欺騙攻擊和DOS 攻擊)的同時,能進(jìn)行醫(yī)護(hù)正常交流,能實現(xiàn)母嬰身份驗證,能日常預(yù)防嬰兒被盜(假設(shè)暴力剪開標(biāo)簽可以確保物理毀壞,無法回復(fù)信息)。該協(xié)議將大幅度提高醫(yī)療領(lǐng)域的安全管理,可節(jié)省原本需要的人力物力成本,創(chuàng)造經(jīng)濟(jì)價值,改善社會風(fēng)氣。