杜變霞, 秦 宇, 馮 偉, 初曉博
(中國(guó)科學(xué)院 軟件研究所 可信計(jì)算與信息保障實(shí)驗(yàn)室, 北京 100190)
當(dāng)今社會(huì), 物聯(lián)網(wǎng)(Internet of Things, 簡(jiǎn)稱IoT)的應(yīng)用很廣泛, 從簡(jiǎn)單的小規(guī)模系統(tǒng) (如智能家居等)到大規(guī)模的安全敏感環(huán)境 (如軍事系統(tǒng)、工廠自動(dòng)化、智能檢測(cè)系統(tǒng)等)都可見(jiàn)其蹤影. 然而物聯(lián)網(wǎng)中很多設(shè)備通常資源受限, 且缺少通用計(jì)算設(shè)備的安全能力或機(jī)制, 使它們很容易成為敵手攻擊的目標(biāo), 比如在智能醫(yī)療設(shè)備中, 設(shè)備被攻擊就可能威脅到人的生命. 因此,為了提高物聯(lián)網(wǎng)環(huán)境的安全性, 有必要對(duì)設(shè)備的軟硬件狀態(tài)進(jìn)行完整性驗(yàn)證, 確保集群設(shè)備的安全可信.
遠(yuǎn)程證明是一種驗(yàn)證設(shè)備軟硬件完整性狀態(tài)的有效機(jī)制.傳統(tǒng)遠(yuǎn)程證明機(jī)制主要針對(duì)單一證明者的場(chǎng)景(即“一對(duì)一”驗(yàn)證), 缺少針對(duì)大規(guī)模物聯(lián)網(wǎng)設(shè)備構(gòu)成的集群環(huán)境的全局證明機(jī)制(或者稱為集群證明). 為此, 本文提出了一種基于設(shè)備分組的高效集群證明方案.首先, 將軟硬件配置一致的同構(gòu)設(shè)備進(jìn)行分組, 組內(nèi)通過(guò)設(shè)置管理節(jié)點(diǎn)采用多數(shù)表決制的方法可以快速認(rèn)證組內(nèi)各個(gè)設(shè)備的可信狀態(tài);其次, 基于自主國(guó)密算法設(shè)計(jì)全局證明協(xié)議, 使得遠(yuǎn)程驗(yàn)證者可以高效對(duì)所有管理節(jié)點(diǎn)的可信狀態(tài)進(jìn)行驗(yàn)證. 本文主要貢獻(xiàn)總結(jié)如下:
1) 本文設(shè)計(jì)了一個(gè)高效的集群證明方案, 通過(guò)設(shè)備的軟件證明協(xié)議, 提高了集群的安全性;通過(guò)將設(shè)備分組, 提高了集群效率. 實(shí)驗(yàn)表明, 當(dāng)同構(gòu)設(shè)備越多的時(shí)候, 管理節(jié)點(diǎn)越少, 效率提高越多;
2) 在Real210[1]開發(fā)板上, 我們實(shí)現(xiàn)了集群證明方案終端設(shè)備的證明系統(tǒng), 并基于實(shí)驗(yàn)結(jié)果在CORE模擬器對(duì)集群證明網(wǎng)絡(luò)協(xié)議進(jìn)行了仿真評(píng)估, 評(píng)估結(jié)果表明了本方案的高效性, 說(shuō)明本方案可以應(yīng)用于大規(guī)模物聯(lián)網(wǎng)環(huán)境的狀態(tài)證明;
3) 本文依據(jù)集群證明的威脅模型, 對(duì)方案的安全性進(jìn)行分析, 證明了方案能夠抵抗重放攻擊、合謀攻擊等.
本文的組織如下:第1節(jié)討論了遠(yuǎn)程證明的相關(guān)性工作;第2節(jié)介紹了方案設(shè)計(jì)與實(shí)現(xiàn);第3節(jié)是方案的安全性分析;第4節(jié)是方案的實(shí)驗(yàn)評(píng)估, 主要評(píng)估了方案的性能以及和簡(jiǎn)單集群證明方案進(jìn)行了比較;第5節(jié)是比較與討論, 分別與SEDA以及”一對(duì)一”驗(yàn)證進(jìn)行了比較并將本文方案擴(kuò)展成通用模型進(jìn)行了討論與改進(jìn);第6節(jié)是結(jié)語(yǔ), 總結(jié)了本文工作并提出了未來(lái)的研究工作.
IoT設(shè)備產(chǎn)生、處理和交換大量數(shù)據(jù), 這些數(shù)據(jù)包含著很多隱私和敏感信息, 所以容易遭受各種攻擊[2–4].為了確保IoT設(shè)備的正確運(yùn)行和安全操作, 保障底層設(shè)備的完整性是至關(guān)重要的, 特別是他們的代碼和數(shù)據(jù), 可能遭受惡意程序修改[5].
遠(yuǎn)程證明允許一個(gè)遠(yuǎn)程方驗(yàn)證設(shè)備的可信狀態(tài),其對(duì)于IoT設(shè)備的完整性驗(yàn)證問(wèn)題是一種有效的解決方案.根據(jù)對(duì)遠(yuǎn)程證明相關(guān)機(jī)制的調(diào)研, 我們將其實(shí)現(xiàn)方法分為三類:
(1) 基于硬件安全模塊的遠(yuǎn)程證明[6–8]
主要借助于安全硬件, 比如TPM, 這類遠(yuǎn)程證明一般都是針對(duì)于高端設(shè)備, 比如電腦、手機(jī)等, 由于資源受限以及造價(jià)昂貴等, 不適用于中低端設(shè)備.但是基于TPM的認(rèn)證只能在啟動(dòng)時(shí)建立, 不方便且耗時(shí).所以引進(jìn)了DRTM, 可以在用戶定義的任意時(shí)刻進(jìn)行度量. 通過(guò)擴(kuò)展DRTM思路, Intel提出了SGX[8], 可以提供一個(gè)硬件加強(qiáng)的隔離執(zhí)行環(huán)境.
(2) 基于時(shí)間和內(nèi)存校驗(yàn)和的軟件證明[9–13]
基于時(shí)間和內(nèi)存校驗(yàn)和的認(rèn)證沒(méi)有安全硬件的支撐, 一般都是利用側(cè)信道信息, 比如時(shí)間.通過(guò)設(shè)定認(rèn)證代碼, 如果設(shè)備被篡改, 在計(jì)算設(shè)備內(nèi)存校驗(yàn)和時(shí)都會(huì)導(dǎo)致時(shí)間的增加. 所以雖然這類型認(rèn)證比較簡(jiǎn)單, 成本最低, 但是由于需要強(qiáng)大的安全假設(shè), 在一些場(chǎng)景中并不適用.
(3) 復(fù)合軟件證明[14–19]
為了克服基于軟件的認(rèn)證的限制, 提出了各種采用軟件/硬件協(xié)同設(shè)計(jì)的復(fù)合架構(gòu).復(fù)合架構(gòu)可以彌補(bǔ)在低端設(shè)備上無(wú)法容納專用安全硬件(如TPM)的缺憾. 他們通過(guò)構(gòu)建一個(gè)最小化信任錨點(diǎn)來(lái)實(shí)現(xiàn), 典型的架構(gòu)有 SMART[14]、TrustLite[15]、Tytan[16]等.
利用復(fù)合架構(gòu), 研究者提出了一些集群證明方案.SEDA[20]引入了對(duì)于設(shè)備集群的安全模型定義并在此之下證明了安全性 它基于兩個(gè)嵌入式設(shè)備的認(rèn)證架構(gòu)(SMART和TrustLite)設(shè)計(jì)了實(shí)現(xiàn)方案.但是SEDA并沒(méi)有考慮硬件攻擊, 并且只能提供通過(guò)證明的設(shè)備個(gè)數(shù), 并不能提供具體失敗設(shè)備的identity等額外信息.
上述遠(yuǎn)程證明方案只考慮了軟件攻擊, 敵手的能力被局限在操縱prover的軟件, 在單個(gè)prover認(rèn)證下,是有理由這么假設(shè)的, 特別是當(dāng)設(shè)備被安全保存的時(shí)候. 然而我們現(xiàn)在處于一個(gè)多設(shè)備互聯(lián)的生活場(chǎng)景下,prover可能是異構(gòu)的, 被分布在一個(gè)大的物理范圍內(nèi),所以物理攻擊是極有可能的. DARPA[21]假設(shè)如果敵手物理地攻擊了一個(gè)設(shè)備, 則這個(gè)設(shè)備會(huì)不可達(dá)一段時(shí)間, 所以將設(shè)備的缺失看做設(shè)備被捕獲的一種信號(hào), 即通過(guò)缺失探測(cè)來(lái)解決物理攻擊.
本文針對(duì)現(xiàn)有方案做了改進(jìn), 提出了一種更高效安全的集群證明方案, 可以抵御設(shè)備合謀攻擊、重放攻擊等.
在大規(guī)模設(shè)備組成的集群S中, 很多設(shè)備是同構(gòu)的, 比如醫(yī)院中存在多種智能醫(yī)療設(shè)備, 每種智能醫(yī)療設(shè)備都有很多個(gè), 它們的軟硬件配置相同, 要是按照通用的集群驗(yàn)證方法將每個(gè)設(shè)備放入集群中, 則耗時(shí)且沒(méi)必要. 如果單獨(dú)一個(gè)個(gè)驗(yàn)證的話, 則會(huì)非常繁瑣, 且容易使Verifier成為性能瓶頸. 如果將集群設(shè)備分組,同構(gòu)設(shè)備構(gòu)成一組, 每組設(shè)立一個(gè)管理節(jié)點(diǎn)(管理節(jié)點(diǎn)也是需要驗(yàn)證的設(shè)備之一), 這樣, 管理節(jié)點(diǎn)只要比較組內(nèi)設(shè)備校驗(yàn)和的不同, 即可預(yù)先知道哪個(gè)設(shè)備被篡改(在同構(gòu)設(shè)備中大部分沒(méi)有被篡改的情況下, 其他情況在第5章進(jìn)行了討論和改進(jìn)). 然后遠(yuǎn)程驗(yàn)證者只需要驗(yàn)證管理節(jié)點(diǎn)即可, 減少了遠(yuǎn)程驗(yàn)證者需要驗(yàn)證的節(jié)點(diǎn)的數(shù)量, 而且同構(gòu)設(shè)備間的驗(yàn)證可以在全局證明協(xié)議之前預(yù)先完成, 從而提高了集群認(rèn)證效率. 我們以圖1為例對(duì)集群模型進(jìn)行說(shuō)明, 示例集群中有8個(gè)管理節(jié)點(diǎn),Dij表示Di的子節(jié)點(diǎn), 即Di是Dij的管理節(jié)點(diǎn),Di管理下的節(jié)點(diǎn)Dij都是同構(gòu)設(shè)備.管理節(jié)點(diǎn)可以和子設(shè)備同構(gòu), 也可以是專門選取的要驗(yàn)證的設(shè)備.就以醫(yī)院中智能醫(yī)療設(shè)備場(chǎng)景為例,D11可能是智能血壓計(jì),D21、D22可能是智能血糖儀, 其他以此類推將其按照設(shè)備類型分組, 選取的管理設(shè)備負(fù)責(zé)驗(yàn)證組內(nèi), 當(dāng)集群驗(yàn)證的時(shí)候, 只需要驗(yàn)證管理設(shè)備即可.
IoT集群證明系統(tǒng)中, 主要的參與者有:設(shè)備操作員OP, 負(fù)責(zé)離線階段設(shè)備的認(rèn)證和部署;驗(yàn)證者VRF,負(fù)責(zé)驗(yàn)證集群設(shè)備的可信性;管理節(jié)點(diǎn)Di, 負(fù)責(zé)認(rèn)證組內(nèi)設(shè)備的可信性以及被VRF認(rèn)證;設(shè)備節(jié)點(diǎn)Dij, 由其管理節(jié)點(diǎn)Di進(jìn)行驗(yàn)證.

圖1 基于軟硬件混合證明的集群證明體系架構(gòu)
本方案要實(shí)現(xiàn)的目標(biāo)是:(1) 可以遠(yuǎn)程驗(yàn)證整個(gè)集群的完整性;(2) 比單獨(dú)驗(yàn)證每個(gè)設(shè)備以及比按相同方式統(tǒng)一驗(yàn)證所有設(shè)備更高效(在同構(gòu)設(shè)備比較多的情況下);(3) 管理節(jié)點(diǎn)不需要知道子設(shè)備的詳細(xì)配置信息;(4) 集群可以擴(kuò)展, 可以動(dòng)態(tài)加入或刪除設(shè)備;(5) 可以探測(cè)到被軟件攻擊的設(shè)備;(6) 可以探測(cè)到被物理攻擊導(dǎo)致探測(cè)不到的設(shè)備.
假設(shè)敵手A可以竊聽(tīng)、插入或修改所有設(shè)備間交互的信息. 假設(shè)敵手在認(rèn)證之前, 已經(jīng)控制設(shè)備內(nèi)存,修改平臺(tái)上的內(nèi)存區(qū)域.假設(shè)敵手可以實(shí)施重放攻擊、預(yù)先計(jì)算待遍歷的內(nèi)存、實(shí)施內(nèi)存替換攻擊等;假設(shè)敵手可以實(shí)施通過(guò)缺失探測(cè)檢測(cè)出來(lái)的物理攻擊, 但是不能物理攻擊所有的設(shè)備;假設(shè)攻擊者可以操作設(shè)備的所有軟件, 但不能偽造簽名, 也不能發(fā)動(dòng)整個(gè)網(wǎng)絡(luò)規(guī)模的DDoS攻擊, 也不考慮運(yùn)行時(shí)攻擊.
本文有如下假設(shè):(1) 敵手在認(rèn)證期間, 不能修改硬件設(shè)備等;考慮有限的DOS攻擊. (2) VRF知道每個(gè)管理節(jié)點(diǎn)的軟硬件配置. (3) 設(shè)備的時(shí)鐘是和OP以及VRF同步的, 并且敵手不能攻擊;同構(gòu)設(shè)備中大多數(shù)設(shè)備是可信的, 只有少部分設(shè)備是被篡改的(對(duì)于該假設(shè), 在第5章中進(jìn)行了討論和改進(jìn));操作者OP是可信的, 以及所有的密碼學(xué)函數(shù)是安全的;在離線階段進(jìn)行初始密鑰交換時(shí), 我們假設(shè)任何兩個(gè)節(jié)點(diǎn)之間存在安全信道. (4) 集群S中的設(shè)備可以動(dòng)態(tài)移動(dòng), 但是在認(rèn)證期間, 集群拓?fù)涫庆o態(tài)的. (5) 假設(shè)集群中每個(gè)設(shè)備都有:① 一個(gè)存儲(chǔ)代碼段(代碼和數(shù)據(jù))的靜態(tài)非易失寫保護(hù)內(nèi)存區(qū)域R;② 密鑰的安全存儲(chǔ), 只有R中的代碼執(zhí)行的時(shí)候才可以被訪問(wèn);③ R中代碼是安全的,除了最終結(jié)果外, 不會(huì)泄露任何信息, 它們構(gòu)成設(shè)備的信任根.該信任根已經(jīng)在多種架構(gòu)中實(shí)現(xiàn), 如SMART 架構(gòu)[13]、TrustLite[14]架構(gòu)、TyTan[15]等, 同時(shí)也在TrustZone[16]等中實(shí)現(xiàn). 它們都由受保護(hù)存儲(chǔ)區(qū)域和不受保護(hù)存儲(chǔ)區(qū)域組成, 具體如圖2所示.

圖2 內(nèi)存劃分

表1 協(xié)議用到的標(biāo)識(shí)符
如圖1所示, 我們將集群中的設(shè)備分為兩種, 管理節(jié)點(diǎn)Di和子節(jié)點(diǎn)Dij. 集群證明具體分為兩個(gè)階段:(1)離線階段, 完成設(shè)備的初始化與更新, 分別對(duì)應(yīng)圖1中的init、join協(xié)議;(2) 在線階段, 執(zhí)行真正的驗(yàn)證,包括圖1中的AttVerify和Subattest協(xié)議. 在線階段主要做設(shè)備的缺失探測(cè)和收集證明. 缺失探測(cè)目的在于探測(cè)因受到物理攻擊而不可達(dá)的節(jié)點(diǎn), 通過(guò)重組拓?fù)浣Y(jié)構(gòu)確保集群驗(yàn)證的穩(wěn)定性. 收集證明主要分為兩方面:一方面是管理節(jié)點(diǎn)對(duì)同構(gòu)設(shè)備子節(jié)點(diǎn)的驗(yàn)證, 我們采用的方法是管理節(jié)點(diǎn)比較子節(jié)點(diǎn)發(fā)來(lái)的校驗(yàn)和, 不同于大多數(shù)的為被篡改節(jié)點(diǎn), 否則為可信節(jié)點(diǎn);另一方面是網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)中, 管理節(jié)點(diǎn)組成的集群的全局證明.
2.5.1 離線階段
離線階段主要完成設(shè)備的初始化和更新. 在初始化的時(shí)候, OP配置設(shè)備的簽名密鑰對(duì)(被OP簽名)以及通信密鑰, 并將VRF的公鑰分發(fā)給每個(gè)設(shè)備, 同時(shí),OP將同構(gòu)設(shè)備歸于同一個(gè)管理節(jié)點(diǎn)下用以實(shí)現(xiàn)子節(jié)點(diǎn)驗(yàn)證的高效化. 除此之外, 鄰居節(jié)點(diǎn)間以及管理節(jié)點(diǎn)和子設(shè)備之間要進(jìn)行密鑰交換. 這些都由圖1中的init協(xié)議完成. 設(shè)備更新分為新設(shè)備加入和鄰居更新,由join協(xié)議完成. 當(dāng)新設(shè)備加入集群中時(shí), OP為其分配密鑰對(duì)以及VRF的公鑰. 如果為子設(shè)備節(jié)點(diǎn), 需要和相應(yīng)的管理節(jié)點(diǎn)進(jìn)行密鑰交換;如果為管理節(jié)點(diǎn), 則需要和鄰居節(jié)點(diǎn)進(jìn)行密鑰交換. 鄰居更新則是管理節(jié)點(diǎn)定時(shí)發(fā)送信息來(lái)更新該節(jié)點(diǎn)的鄰居列表以及子設(shè)備節(jié)點(diǎn)列表并通知OP.
2.5.2 在線階段
在線階段主要完成對(duì)集群的可信驗(yàn)證操作. 當(dāng)OP和VRF不是同一個(gè)設(shè)備的情況下, 驗(yàn)證者想要驗(yàn)證集群的可信狀態(tài)時(shí), 需要先經(jīng)過(guò)OP, OP先對(duì)驗(yàn)證者進(jìn)行驗(yàn)證, 以防VRF是攻擊節(jié)點(diǎn), 發(fā)起DOS攻擊, 然后OP傳達(dá)VRF的數(shù)據(jù)給集群中的設(shè)備. 因此, 我們統(tǒng)一將和集群設(shè)備交互的設(shè)備稱為VRF. 同時(shí)因?yàn)镺P在此階段只負(fù)責(zé)轉(zhuǎn)發(fā)VRF和管理節(jié)點(diǎn)的信息, 在本節(jié)將認(rèn)為VRF與管理節(jié)點(diǎn)直接通信.
(1) 缺失探測(cè)階段
缺失探測(cè)階段本文采用心跳協(xié)議[20]來(lái)進(jìn)行, 主要基于兩個(gè)目標(biāo):① 發(fā)現(xiàn)被物理攻擊節(jié)點(diǎn);② 基于返回的缺失節(jié)點(diǎn), 重新選擇初始節(jié)點(diǎn)(如果拓?fù)洳皇沁B通的, 可以選多個(gè)構(gòu)成多組, 每組之間互相連通), 這樣就避免因?yàn)橹虚g某個(gè)節(jié)點(diǎn)被攻擊而導(dǎo)致整個(gè)驗(yàn)證無(wú)法進(jìn)行. 缺失探測(cè)中, 探測(cè)設(shè)備發(fā)送心跳請(qǐng)求. 在一定時(shí)間段內(nèi), 未反饋心跳信息的設(shè)備將被認(rèn)為失去連接. 這時(shí)候需要通過(guò)重新選取初始節(jié)點(diǎn), 保證缺失設(shè)備不影響鏈路傳送.
當(dāng)要進(jìn)行心跳協(xié)議時(shí), VRF廣播心跳請(qǐng)求給集群中的所有管理節(jié)點(diǎn), 然后等待接收心跳信息, 如果收到一個(gè)管理節(jié)點(diǎn)的日志記錄, 就查看記錄中的心跳信息,找出失敗管理節(jié)點(diǎn), 然后重新設(shè)置網(wǎng)絡(luò)拓?fù)? 以免一個(gè)初始節(jié)點(diǎn)壞掉之后, 還按原來(lái)的拓?fù)溥M(jìn)行, 后面的節(jié)點(diǎn)狀態(tài)都不知道. 重設(shè)的話, 可以根據(jù)失敗管理節(jié)點(diǎn)選擇幾個(gè)初始節(jié)點(diǎn)等, 使得集群內(nèi)每個(gè)設(shè)備都不會(huì)因?yàn)槌跏脊?jié)點(diǎn)的問(wèn)題而連接不上. 而管理節(jié)點(diǎn)除了發(fā)送自身的心跳信息之外還要接受鄰居節(jié)點(diǎn)的心跳信息. 如果收到鄰居節(jié)點(diǎn)心跳信息后發(fā)現(xiàn)這個(gè)心跳信息自己沒(méi)有記錄, 則將這個(gè)信息記錄在日志中, 然后將該心跳信息再轉(zhuǎn)發(fā)給所有鄰居. 直到管理節(jié)點(diǎn)收到所有設(shè)備的心跳信息或者超時(shí), 最后將自身的日志信息發(fā)送給VRF.
(2) 收集證明階段
收集證明階段的目標(biāo)分為兩方面:一方面是管理節(jié)點(diǎn)對(duì)同構(gòu)設(shè)備子節(jié)點(diǎn)的驗(yàn)證, 如圖1中的Subatt, 管理節(jié)點(diǎn)比較子節(jié)點(diǎn)發(fā)來(lái)的校驗(yàn)和, 不同于大多數(shù)的為被篡改節(jié)點(diǎn), 否則為可信節(jié)點(diǎn);另一方面是網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)中, 對(duì)管理節(jié)點(diǎn)組成的集群的證明, 如圖1中的AttVerify.
實(shí)驗(yàn)涉及到的主要消息類型有:① req, 表示消息類型是請(qǐng)求類型. ② rep, 表示消息類型是響應(yīng)類型. ③subreq, 表示管理節(jié)點(diǎn)對(duì)子設(shè)備節(jié)點(diǎn)的請(qǐng)求信息. ④subrep, 表示子設(shè)備節(jié)點(diǎn)對(duì)管理節(jié)點(diǎn)的回復(fù)信息. 對(duì)于待發(fā)送和接收的數(shù)據(jù)包, 我們分別用MsgS(MsgF)和MsgR表示.
1) 對(duì)分組內(nèi)部同構(gòu)節(jié)點(diǎn)間的驗(yàn)證.
由于同構(gòu)節(jié)點(diǎn)的內(nèi)存內(nèi)容是相同的, 因此內(nèi)存的校驗(yàn)和也是相同的.所以可以讓大量的同構(gòu)節(jié)點(diǎn)同時(shí)進(jìn)行內(nèi)存校驗(yàn), 校驗(yàn)和不同的節(jié)點(diǎn)將被認(rèn)為是內(nèi)存被篡改節(jié)點(diǎn).具體流程見(jiàn)算法S u b a t t_M g r N o d e,Subatt_SubNode, 分別從管理節(jié)點(diǎn)和子設(shè)備節(jié)點(diǎn)的角度來(lái)描述協(xié)議Subatt.
a) 管理節(jié)點(diǎn):管理節(jié)點(diǎn)的驗(yàn)證分為四步, 如算法1.
① 發(fā)送請(qǐng)求:管理節(jié)點(diǎn)每隔一個(gè)固定的時(shí)間(這個(gè)時(shí)間小于遠(yuǎn)程驗(yàn)證間隔)就發(fā)送加密的驗(yàn)證請(qǐng)求subreq檢測(cè)子設(shè)備節(jié)點(diǎn)的狀態(tài).驗(yàn)證請(qǐng)求中包含一個(gè)隨機(jī)數(shù)據(jù)Randata和一個(gè)遞增的序列號(hào)CurSeq以及設(shè)備ID. 然后設(shè)置定時(shí)器進(jìn)入等待階段. 每次等待的時(shí)間固定為TAtt.
② 等待:管理節(jié)點(diǎn)等待子設(shè)備節(jié)點(diǎn)傳回來(lái)的驗(yàn)證信息subrep.如果收到信息時(shí)未超過(guò)定時(shí)器設(shè)置的時(shí)間則進(jìn)入記錄階段.
④ 校驗(yàn):驗(yàn)證時(shí)間超過(guò)定時(shí)器設(shè)置的時(shí)間之后進(jìn)入該階段. 管理節(jié)點(diǎn)比對(duì)所有于記錄階段記錄的子設(shè)備節(jié)點(diǎn)的校驗(yàn)和, 和大多數(shù)子設(shè)備節(jié)點(diǎn)不同的校驗(yàn)和的節(jié)點(diǎn)加入驗(yàn)證失敗子設(shè)備集合FailSubDevs中, 其余的加入驗(yàn)證成功子設(shè)備集合SucSubDevs. 剩余未發(fā)來(lái)驗(yàn)證信息的子設(shè)備節(jié)點(diǎn)加入未回復(fù)子設(shè)備集合NorepSubDevs中.

b) 子設(shè)備節(jié)點(diǎn):子設(shè)備節(jié)點(diǎn)的驗(yàn)證分為三步, 如算法2所示.
① 等待:等待管理節(jié)點(diǎn)發(fā)來(lái)的驗(yàn)證請(qǐng)求subreq. 收到請(qǐng)求則進(jìn)入驗(yàn)證階段.
② 驗(yàn)證:如果收到的消息屬于subreq類型, 檢查管理節(jié)點(diǎn)發(fā)來(lái)的驗(yàn)證請(qǐng)求的簽名并解密獲取序列號(hào)及隨機(jī)數(shù)據(jù). 再驗(yàn)證該請(qǐng)求的序列號(hào), 必須大于子設(shè)備節(jié)點(diǎn)存儲(chǔ)的上一次驗(yàn)證階段使用的序列號(hào). 通過(guò)驗(yàn)證之后, 子設(shè)備節(jié)點(diǎn)用隨機(jī)數(shù)填充空白內(nèi)存, 然后計(jì)算內(nèi)存和收到的隨機(jī)數(shù)據(jù)的校驗(yàn)和. 進(jìn)入回應(yīng)階段.
③ 回應(yīng):子設(shè)備節(jié)點(diǎn)將節(jié)點(diǎn)ID, 接收到的序列號(hào)和上一步產(chǎn)生的校驗(yàn)和打包加密以subrep類型的消息發(fā)回管理節(jié)點(diǎn)(父節(jié)點(diǎn)par). 記錄當(dāng)次校驗(yàn)的序列號(hào)并恢復(fù)內(nèi)存.

2) 對(duì)全局集群環(huán)境內(nèi)所有管理節(jié)點(diǎn)的驗(yàn)證.
對(duì)管理節(jié)點(diǎn)的驗(yàn)證比較簡(jiǎn)單, 由于VRF中已有管理節(jié)點(diǎn)的內(nèi)存信息, 并且管理節(jié)點(diǎn)不同構(gòu), 因此可以針對(duì)每個(gè)管理節(jié)點(diǎn)的內(nèi)存校驗(yàn)和進(jìn)行單獨(dú)比對(duì).具體流程見(jiàn)算法AttVerify_VRF, AttVerify_MgrNode. 分別從驗(yàn)證者VRF和管理節(jié)點(diǎn)的角度來(lái)描述協(xié)議AttVerify.
a) 驗(yàn)證者VRF:VRF的驗(yàn)證分為四步, 如算法3.
①體溫高于38.5℃;②符合中醫(yī)辨證:發(fā)熱重,惡風(fēng),有汗或少汗,頭痛,鼻塞,鼻流濁涕,噴嚏,咳嗽咳痰,痰稠色白或黃,咽紅腫痛,口干渴,舌質(zhì)紅,苔薄黃,脈浮數(shù)或指紋浮紫,兼見(jiàn)脘腹脹滿,不思飲食,嘔吐酸腐,口氣穢濁,大便酸臭[2];③監(jiān)護(hù)人知情同意,患兒能夠配合治療。
① 發(fā)送請(qǐng)求:VRF根據(jù)需求選擇一個(gè)管理節(jié)點(diǎn)InitNode向其發(fā)送加密的驗(yàn)證請(qǐng)求來(lái)檢測(cè)所有設(shè)備節(jié)點(diǎn)的狀態(tài). InitNode優(yōu)先選擇更安全的管理節(jié)點(diǎn)或者距離更近的管理節(jié)點(diǎn). 驗(yàn)證請(qǐng)求中包含InitNode要計(jì)算校驗(yàn)和的隨機(jī)數(shù)據(jù)RanData和一個(gè)遞增的序列號(hào)CurSeq. 然后設(shè)置定時(shí)器進(jìn)入等待階段. 設(shè)定接收驗(yàn)證和最長(zhǎng)需要時(shí)間TRep.
② 等待:VRF等待管理節(jié)點(diǎn)傳回來(lái)的驗(yàn)證信息rep. 如果收到信息時(shí)未超過(guò)定時(shí)器設(shè)置的時(shí)間則進(jìn)入校驗(yàn)階段.
③ 校驗(yàn):如果收到的消息屬于rep類型, VRF檢查收到的信息的簽名并解密. 如果信息中的序列號(hào)Seq跟管理節(jié)點(diǎn)發(fā)送的序列號(hào)CurSeq一致則根據(jù)收到的隨機(jī)數(shù)據(jù)RanData計(jì)算對(duì)應(yīng)管理節(jié)點(diǎn)的校驗(yàn)和并與該信息中的校驗(yàn)和比對(duì). 如果比對(duì)結(jié)果一致則將該管理節(jié)點(diǎn)歸于SucSubDevs, 并根據(jù)信息中的子設(shè)備狀態(tài)S u b S t a t e L i s t將子設(shè)備歸于S u c S u b D e v s,FailSubDevs或者NorepSubDevs. 再將信息中包含的節(jié)點(diǎn)ID放入已回復(fù)子節(jié)點(diǎn)集合RecSubNode中進(jìn)入等待階段.
④ 結(jié)束:驗(yàn)證時(shí)間超過(guò)定時(shí)器設(shè)置的時(shí)間之后進(jìn)入該階段. 失去聯(lián)絡(luò)的管理節(jié)點(diǎn)歸為NorepSubDevs.將這三組集合跟校驗(yàn)階段收集的子節(jié)點(diǎn)驗(yàn)證記錄一起輸出給用戶.

b) 管理節(jié)點(diǎn):管理節(jié)點(diǎn)的驗(yàn)證分為三步, 如算法4.
① 等待:等待本次驗(yàn)證相關(guān)信息. 如果收到VRF發(fā)來(lái)的驗(yàn)證請(qǐng)求req則進(jìn)入驗(yàn)證階段;如果收到其余管理節(jié)點(diǎn)的驗(yàn)證信息rep則進(jìn)入轉(zhuǎn)發(fā)階段.
② 驗(yàn)證:判斷接收到的信息的簽名是否正確.正確則解密信息從信息中獲得序列號(hào)Seq和隨機(jī)數(shù)據(jù)RanData. 再驗(yàn)證該請(qǐng)求信息的序列號(hào), 必須大于管理節(jié)點(diǎn)存儲(chǔ)的上一次驗(yàn)證階段使用的序列號(hào)PrevSeq. 通過(guò)驗(yàn)證之后先產(chǎn)生一個(gè)新的隨機(jī)數(shù)據(jù)NewRanData并將其與剛才獲取的序列號(hào)Seq一起加密之后以req信息的形式群發(fā)給鄰居節(jié)點(diǎn). 接著將內(nèi)存中的空白部分用隨機(jī)數(shù)進(jìn)行填充, 然后計(jì)算內(nèi)存和隨機(jī)數(shù)據(jù)RanData的校驗(yàn)和. 再將本節(jié)點(diǎn)ID, 校驗(yàn)和Checksum,序列號(hào)Seq, 隨機(jī)數(shù)據(jù)RanData連同子設(shè)備的可信狀態(tài)一起傳送給父節(jié)點(diǎn). 記錄當(dāng)次校驗(yàn)的序列號(hào)并恢復(fù)內(nèi)存, 進(jìn)入等待階段.
③ 轉(zhuǎn)發(fā):將收到的rep類型的消息轉(zhuǎn)發(fā)給父節(jié)點(diǎn).進(jìn)入等待階段.

為了保障驗(yàn)證結(jié)果的安全性, 我們依據(jù)遠(yuǎn)程證明安全威脅模型針對(duì)常見(jiàn)攻擊方法進(jìn)行如下安全分析.
(1)偽造攻擊:指在攻擊者不知道密鑰的情況下,構(gòu)造一個(gè)新的消息及其簽名值. 本系統(tǒng)采用加密簽名算法, 由于假設(shè)在離線階段的初始密鑰交換階段, 通信信道是安全的以及密碼函數(shù)是安全的, 所以當(dāng)敵手在通信信道上篡改或者偽造消息時(shí), 會(huì)導(dǎo)致簽名驗(yàn)證失敗, 從而達(dá)到防偽造效果. 而且當(dāng)管理節(jié)點(diǎn)與子設(shè)備節(jié)點(diǎn)同構(gòu)時(shí), 管理節(jié)點(diǎn)也不能利用子節(jié)點(diǎn)傳來(lái)的校驗(yàn)信息, 因?yàn)殡S機(jī)數(shù)產(chǎn)生函數(shù)存儲(chǔ)在被保護(hù)內(nèi)存區(qū)域R中,外部函數(shù)無(wú)法訪問(wèn)到它, 這樣隨機(jī)數(shù)產(chǎn)生函數(shù)只能由認(rèn)證代碼控制, 而每次產(chǎn)生的隨機(jī)數(shù)不同, 即管理節(jié)點(diǎn)計(jì)算校驗(yàn)和的隨機(jī)數(shù)和子設(shè)備節(jié)點(diǎn)不同, 所以無(wú)法偽造;而且即使管理節(jié)點(diǎn)可以給子設(shè)備節(jié)點(diǎn)傳自己的隨機(jī)數(shù)也會(huì)帶來(lái)時(shí)間的延遲, 所以基本上無(wú)法直接利用子節(jié)點(diǎn)信息進(jìn)行偽造.
(2)重放攻擊:指通過(guò)將以前認(rèn)證的數(shù)據(jù)傳送給VRF, 本系統(tǒng)通過(guò)將隨機(jī)數(shù)加入驗(yàn)證過(guò)程來(lái)防止預(yù)計(jì)算, 從而避免重放攻擊.
(3)內(nèi)存復(fù)制或內(nèi)存替換攻擊:指攻擊者將內(nèi)存復(fù)制到空白區(qū)域, 當(dāng)驗(yàn)證內(nèi)存時(shí), 通過(guò)修改程序計(jì)數(shù)器PC和數(shù)據(jù)指針DP來(lái)實(shí)現(xiàn)攻擊, 本系統(tǒng)通過(guò)給空白內(nèi)存填充隨機(jī)數(shù)使得沒(méi)有空間存儲(chǔ)攻擊代碼達(dá)到防范的目的.
(4)代理攻擊:指使用更快的遠(yuǎn)程設(shè)備代理checksum計(jì)算.但是遠(yuǎn)程設(shè)備無(wú)法獲得真正的密鑰, 所以無(wú)法正確加密和簽名, 可以防御.
(5)內(nèi)存壓縮攻擊:壓縮獲得可以利用的空閑內(nèi)存,證明時(shí)實(shí)時(shí)解壓. 本系統(tǒng)通過(guò)設(shè)定認(rèn)證時(shí)間以及在空白內(nèi)存中填充隨機(jī)數(shù)能一定程度上防范這種攻擊.
(6)合謀攻擊:指兩個(gè)設(shè)備串聯(lián)攻擊.本系統(tǒng)中當(dāng)合謀攻擊發(fā)生在子設(shè)備節(jié)點(diǎn)下的時(shí)候, 因?yàn)榘l(fā)送的都是加密簽名過(guò)的結(jié)果, 即使發(fā)送給合謀節(jié)點(diǎn), 因?yàn)楹现\節(jié)點(diǎn)沒(méi)有對(duì)應(yīng)的密鑰, 無(wú)法解密, 所以合謀攻擊無(wú)效;當(dāng)發(fā)生在管理節(jié)點(diǎn)之間的時(shí)候, 場(chǎng)景是鄰居節(jié)點(diǎn)將隨機(jī)數(shù)預(yù)先傳給下一節(jié)點(diǎn), 導(dǎo)致下一節(jié)點(diǎn)可以預(yù)先計(jì)算. 本系統(tǒng)通過(guò)將產(chǎn)生隨機(jī)數(shù)的函數(shù)放于被保護(hù)內(nèi)存區(qū)域R中, 只有認(rèn)證代碼可以調(diào)用它, 使得隨機(jī)數(shù)不能事先產(chǎn)生, 防止了合謀攻擊.
除此之外, 本系統(tǒng)采用一些方式來(lái)加強(qiáng)系統(tǒng)安全性.
(7)機(jī)密性保障:本系統(tǒng)采用信息加密的方式, 并且假設(shè)使用的密碼學(xué)函數(shù)是安全的, 所以敵手即使截獲信息, 也無(wú)法獲取消息內(nèi)容, 達(dá)到防竊聽(tīng)的目的;另一方面, 本系統(tǒng)中除了VRF, 任何兩個(gè)節(jié)點(diǎn)之間不知道對(duì)方的軟硬件配置, 一定程度上可以保護(hù)隱私, 而且當(dāng)一臺(tái)設(shè)備被攻擊的時(shí)候, 不會(huì)獲取其他設(shè)備的數(shù)據(jù), 使設(shè)備更安全.
(8)可用性保障:本系統(tǒng)通過(guò)在缺失探測(cè)節(jié)點(diǎn)之后,重新選取管理節(jié)點(diǎn), 使得缺失節(jié)點(diǎn)不影響其他節(jié)點(diǎn)的傳輸來(lái)保障協(xié)議的進(jìn)一步運(yùn)行. 除此之外, 本方案先用OP來(lái)驗(yàn)證VRF, 可以在一定程度上防范DOS攻擊. 而且, 本方案因?yàn)榭梢园l(fā)現(xiàn)偽造攻擊, 所以當(dāng)敵手偽造一個(gè)請(qǐng)求的時(shí)候, 接下來(lái)的設(shè)備要進(jìn)行身份驗(yàn)證, 驗(yàn)證沒(méi)通過(guò)時(shí)會(huì)停止轉(zhuǎn)發(fā)與計(jì)算校驗(yàn)和等, 所以只有身份驗(yàn)證這一步會(huì)產(chǎn)生DOS攻擊, 一定程度上也可以減弱.
同時(shí), 針對(duì)本文不考慮的攻擊:運(yùn)行時(shí)攻擊和無(wú)法通過(guò)缺失探測(cè)檢測(cè)的物理攻擊, 進(jìn)行一些相關(guān)討論.針對(duì)運(yùn)行時(shí)攻擊如ROP攻擊(Return-oriented Programming), 對(duì)于該攻擊, 現(xiàn)在已有一些運(yùn)行時(shí)證明方案如C-FLAT[21], ATRIUM[22]等, 可以設(shè)計(jì)方案對(duì)執(zhí)行指令以及控制流等進(jìn)行認(rèn)證;對(duì)于不能通過(guò)缺失探測(cè)檢測(cè)出的物理攻擊, 如側(cè)信道攻擊等, 需要對(duì)設(shè)備的安全架構(gòu)進(jìn)行改進(jìn), 現(xiàn)在已有相關(guān)的架構(gòu), 如文獻(xiàn)[23]中所示架構(gòu), 針對(duì)cache側(cè)信道攻擊, 利用硬件事務(wù)內(nèi)存使得敏感代碼和數(shù)據(jù)在程序執(zhí)行過(guò)程中常駐cache來(lái)防止信息泄露.
我們先在一個(gè)普通的ARMSOC開發(fā)板Real210上[24]對(duì)加密等關(guān)鍵操作進(jìn)行測(cè)試和評(píng)估, 然后針對(duì)評(píng)估結(jié)果, 用Python語(yǔ)言在Common Open Research Emulator (CORE)[25]軟件上對(duì)本文提出的高效集群證明方案進(jìn)行了模擬. CORE是一個(gè)運(yùn)行于Linux操作系統(tǒng)上的虛擬網(wǎng)絡(luò)仿真工具. 該工具利用了Linux的網(wǎng)絡(luò)堆棧從而使得該工具的仿真性能與真實(shí)網(wǎng)絡(luò)非常相似.
在本次模擬實(shí)驗(yàn)中, 我們使用了兩種集群證明方案. 第一種采用最簡(jiǎn)單的集群證明方案, VRF發(fā)一個(gè)驗(yàn)證請(qǐng)求給星型拓?fù)渲械某跏脊?jié)點(diǎn), 然后初始節(jié)點(diǎn)將驗(yàn)證請(qǐng)求轉(zhuǎn)發(fā)給鄰居節(jié)點(diǎn), 以此類推, 一層層轉(zhuǎn)發(fā). 每個(gè)節(jié)點(diǎn)計(jì)算完校驗(yàn)和后將結(jié)果經(jīng)過(guò)一層層轉(zhuǎn)發(fā), 傳給VRF. VRF收到回應(yīng)后, 一個(gè)個(gè)進(jìn)行證明. 所有新加入的節(jié)點(diǎn)都直接加入星型拓?fù)渲? 第二種則是本文提出的高效集群證明方案, VRF跟管理節(jié)點(diǎn)處于同一個(gè)星型拓?fù)渲?
兩種方案中的所有節(jié)點(diǎn)都采用802.11作為數(shù)據(jù)鏈路層的介質(zhì)訪問(wèn)控制協(xié)議. 同時(shí)采用Optimized Link State Routing (OLSR) 協(xié)議作為網(wǎng)絡(luò)層協(xié)議. 在密碼方面選擇128位的SM4進(jìn)行加解密以及采用256位的SM2進(jìn)行簽名及簽名驗(yàn)證操作. 內(nèi)存驗(yàn)證則采用SM3算法.
本文采用的實(shí)驗(yàn)機(jī)器分別是Lenovo ThinkCentre M4000t, 與Real210開發(fā)板, 它們通過(guò)USB host接口連接;Real210開發(fā)板采用ARM Cortex-A8, 頻率為1 GHz, 有 512 MB 內(nèi)存, 256 MB NAND Flash. 數(shù)據(jù)采集SM4加解密和SM2簽名驗(yàn)證分別是在Real210開發(fā)板上[24]測(cè)試出來(lái)的. 由于Verifier也要進(jìn)行節(jié)點(diǎn)內(nèi)存驗(yàn)證, 所以節(jié)點(diǎn)內(nèi)存驗(yàn)證速度是在Windows機(jī)器上模擬出來(lái)的, 具體結(jié)果如表2所示.

表2 采用的密碼操作耗時(shí)
本次模擬實(shí)驗(yàn)分成兩部分. 第一部分測(cè)試兩種集群證明方案的運(yùn)行時(shí)間. 兩種集群都有50個(gè)節(jié)點(diǎn)并且節(jié)點(diǎn)只需要驗(yàn)證1 MB的內(nèi)存. 第二部分測(cè)試高效集群證明方案的性能.
第一部分測(cè)試的結(jié)果如圖3所示.對(duì)于簡(jiǎn)單集群驗(yàn)證,x軸表示整個(gè)集群節(jié)點(diǎn)一共有50個(gè)節(jié)點(diǎn). 對(duì)于高效集群驗(yàn)證,x軸表示管理節(jié)點(diǎn)的數(shù)量, 從10個(gè)到50個(gè).由圖可知, 集群中全部都是管理節(jié)點(diǎn)時(shí), 高效集群驗(yàn)證跟簡(jiǎn)單集群驗(yàn)證效率一樣. 但是隨著同構(gòu)程度的加深, 管理節(jié)點(diǎn)開始變少, 而管理節(jié)點(diǎn)的子節(jié)點(diǎn)開始增多, 高效集群驗(yàn)證的效率越來(lái)越高. 當(dāng)只有10個(gè)管理節(jié)點(diǎn)時(shí), 高效集群驗(yàn)證使用的時(shí)間大約只有簡(jiǎn)單集群驗(yàn)證的1/4.

圖3 不同管理節(jié)點(diǎn)數(shù)量下兩種方案運(yùn)行時(shí)間
第二部分測(cè)試的結(jié)果如圖4所示. 高效集群證明所耗費(fèi)的時(shí)間隨著需要驗(yàn)證的內(nèi)存增大而增大. 這主要是因?yàn)閂RF計(jì)算管理節(jié)點(diǎn)的校驗(yàn)和的時(shí)間也隨著內(nèi)存大小的增加而增加. 同時(shí)CPU運(yùn)行時(shí)間隨著需要驗(yàn)證的內(nèi)存大小的增加而增加. 節(jié)點(diǎn)的平均傳輸數(shù)據(jù) 與節(jié)點(diǎn)數(shù)量相關(guān)性比較大, 與內(nèi)存大小相關(guān)性比較小.

圖4 高效集群證明性能測(cè)試
“一對(duì)一”驗(yàn)證指Verifier一個(gè)個(gè)驗(yàn)證設(shè)備節(jié)點(diǎn). 我們這里指Verifier同時(shí)發(fā)送n個(gè)驗(yàn)證請(qǐng)求, 然后設(shè)備節(jié)點(diǎn)進(jìn)行計(jì)算并將驗(yàn)證結(jié)果返回給Verifier, 然后Verifier一個(gè)個(gè)進(jìn)行相關(guān)計(jì)算與比對(duì)來(lái)驗(yàn)證設(shè)備的可信性.
我們與SEDA[19]以及“一對(duì)一”驗(yàn)證進(jìn)行了比較, 如表3所示. 我們假設(shè)總設(shè)備個(gè)數(shù)為n, 管理節(jié)點(diǎn)個(gè)數(shù)為m, 時(shí)間耗費(fèi)主要考慮從Verifier發(fā)送校驗(yàn)請(qǐng)求到Verifier完成整個(gè)校驗(yàn)總共花費(fèi)的計(jì)算校驗(yàn)和的時(shí)間.本文方案, 管理節(jié)點(diǎn)可以預(yù)先得知子節(jié)點(diǎn)信息, 所以Verifier只要驗(yàn)證管理節(jié)點(diǎn)信息即可, 而且管理節(jié)點(diǎn)和管理節(jié)點(diǎn)之間傳完隨機(jī)數(shù)后, 計(jì)算校驗(yàn)和以及傳輸?shù)倪^(guò)程都是并行的, 比較省時(shí). 如表3所示, 本文提出的高效集群證明機(jī)制可以識(shí)別具體損壞設(shè)備、時(shí)間消耗也比較低, 同時(shí)可以一定程度上抵御物理攻擊和DOS攻擊. 當(dāng)SEDA以及“一對(duì)一”驗(yàn)證和本文的假設(shè)條件一致時(shí), 本文抵御的軟件攻擊更多. 在可用性上,如第3節(jié)安全性分析那章所示, 因?yàn)椴捎昧巳笔綔y(cè)提前排查設(shè)備等, 提高了可用性;從通用性的角度來(lái)說(shuō),因?yàn)楸緦?shí)驗(yàn)方案在同構(gòu)設(shè)備比較多的情況下有效, 如果沒(méi)有同構(gòu)設(shè)備, 其時(shí)間性能也是O(n). 從Verifier是否容易成為性能瓶頸來(lái)說(shuō), 因?yàn)椤耙粚?duì)一”驗(yàn)證一般要收發(fā)n個(gè)包并對(duì)這n個(gè)設(shè)備進(jìn)行校驗(yàn), 比較繁瑣而且容易成為性能瓶頸, 而SEDA和本文方案可以減輕這一點(diǎn), 只需要發(fā)一個(gè)包就可以得到驗(yàn)證結(jié)果, 而且Verifier要驗(yàn)證的設(shè)備大幅度減少, 降低了Verifier的計(jì)算量, 使其相對(duì)不容易成為性能瓶頸.

表3 高效集群證明機(jī)制和SEDA[19]以及單一prover驗(yàn)證的比較
雖然本文在SEDA上進(jìn)行了改進(jìn), 但是本文因?yàn)椴捎霉芾砉?jié)點(diǎn)驗(yàn)證子節(jié)點(diǎn)的想法, 所以當(dāng)管理節(jié)點(diǎn)被驗(yàn)證失敗的時(shí)候, 其負(fù)責(zé)的子節(jié)點(diǎn)就要重新被驗(yàn)證.
將本方案擴(kuò)展成通用模型, 使其可以應(yīng)用到其他場(chǎng)景時(shí), 就有必要對(duì)本實(shí)驗(yàn)方案做進(jìn)一步討論.
(1) 本文管理節(jié)點(diǎn)驗(yàn)證子設(shè)備節(jié)點(diǎn)用的是多數(shù)表決機(jī)制, 但是如果管理節(jié)點(diǎn)和子設(shè)備節(jié)點(diǎn)采取的是同構(gòu)設(shè)備, 也可以采用一一驗(yàn)證. 因?yàn)楣芾砉?jié)點(diǎn)和子設(shè)備節(jié)點(diǎn)的內(nèi)存一樣, 但是因?yàn)樘畛鋬?nèi)存以及計(jì)算內(nèi)存校驗(yàn)和的隨機(jī)數(shù)不同, 所以管理節(jié)點(diǎn)還需要重新計(jì)算子設(shè)備節(jié)點(diǎn)的校驗(yàn)和, 增加了管理節(jié)點(diǎn)負(fù)載.
(2) 本文假設(shè)同構(gòu)設(shè)備中大多數(shù)是可信的. 但是在通用場(chǎng)景中, 存在著大多數(shù)設(shè)備被攻擊的可能性. 在這種情況下, 可以通過(guò)在管理節(jié)點(diǎn)中存儲(chǔ)同構(gòu)設(shè)備子節(jié)點(diǎn)中的一個(gè)標(biāo)準(zhǔn)值, 當(dāng)收到子設(shè)備節(jié)點(diǎn)的校驗(yàn)和時(shí), 用這個(gè)標(biāo)準(zhǔn)值和隨機(jī)數(shù)進(jìn)行計(jì)算, 然后分別和每個(gè)子設(shè)備節(jié)點(diǎn)傳來(lái)的校驗(yàn)信息進(jìn)行比較, 不同的即為被篡改設(shè)備來(lái)進(jìn)行改進(jìn). 或者也可以通過(guò)預(yù)先驗(yàn)證一輪, 使其同構(gòu)設(shè)備中大多數(shù)可信.
(3) 本文Verifier因?yàn)橐?yàn)證所有的管理節(jié)點(diǎn), 所以在設(shè)備類型比較多的情況下, 可能成為性能瓶頸, 而且網(wǎng)絡(luò)傳輸量也比較大. 可以通過(guò)讓管理節(jié)點(diǎn)之間互相驗(yàn)證, 最終由初始節(jié)點(diǎn)統(tǒng)一上傳驗(yàn)證結(jié)果, 但是這樣的話, 也會(huì)帶來(lái)問(wèn)題, 比如會(huì)增加隱私泄露, 特別是對(duì)醫(yī)療設(shè)備來(lái)說(shuō), 攻擊一個(gè)設(shè)備就可以獲取到其他設(shè)備的信息, 造成更大的破壞. 同時(shí)需要管理節(jié)點(diǎn)有足夠的內(nèi)存去存儲(chǔ)集群設(shè)備內(nèi)其他節(jié)點(diǎn)的信息, 因?yàn)槊糠N設(shè)備的配置不一致, 所以有些設(shè)備可能沒(méi)有足夠的能力去存儲(chǔ)別的設(shè)備的內(nèi)存信息. 而且管理節(jié)點(diǎn)之間要相互等待, 是串行的, 耗時(shí)也會(huì)相應(yīng)增加.
(4) 本文的實(shí)驗(yàn)場(chǎng)景是在同組內(nèi)子設(shè)備不更新或者同時(shí)更新的情況下(比如智能醫(yī)療設(shè)備), 但對(duì)于一些經(jīng)常需要更新的場(chǎng)景(比如安裝不同的軟件)則不適用. 如果管理節(jié)點(diǎn)和子設(shè)備節(jié)點(diǎn)是同構(gòu)設(shè)備的情況下,可能需要將設(shè)備操作傳輸給管理節(jié)點(diǎn), 因?yàn)槭峭瑯?gòu)設(shè)備, 所以管理節(jié)點(diǎn)可以根據(jù)收到的操作進(jìn)行相同操作,然后進(jìn)行驗(yàn)證.
本文針對(duì)物聯(lián)網(wǎng)集群設(shè)備遠(yuǎn)程證明和驗(yàn)證的問(wèn)題,提出了一種高效集群設(shè)備可信性證明安全方案, 該方案通過(guò)采取安全驗(yàn)證策略, 可以檢測(cè)設(shè)備存在的軟件攻擊. 該方案通過(guò)將設(shè)備分組, 然后基于管理節(jié)點(diǎn)再進(jìn)行驗(yàn)證, 提高了集群認(rèn)證的效率. 方案的安全性評(píng)估結(jié)果表明, 它能夠防御集群證明場(chǎng)景下的常用安全攻擊.但是該方案有些方面有待提高, 比如物聯(lián)網(wǎng)設(shè)備無(wú)法抵御運(yùn)行時(shí)攻擊如ROP攻擊以及不能抵御通過(guò)缺失探測(cè)檢測(cè)不出的物理攻擊, 如側(cè)信道攻擊等.除此之外,本方案假設(shè)密鑰交換時(shí)存在可信信道等以及擴(kuò)展到通用模型中各種場(chǎng)景下的問(wèn)題, 未來(lái)將重點(diǎn)研究這些方面的安全問(wèn)題.