當(dāng)前的軍事行動(dòng)需要靈活且適應(yīng)性強(qiáng)的部隊(duì),他們必須能夠在開(kāi)闊的戰(zhàn)場(chǎng)和城市場(chǎng)景中與平民機(jī)構(gòu)和組織開(kāi)展合作。為應(yīng)對(duì)這些挑戰(zhàn),作戰(zhàn)部隊(duì)需要能夠在指揮部和戰(zhàn)場(chǎng)邊緣作出明智決策的能力,同時(shí)還需要具備網(wǎng)絡(luò)化能力和敏捷指揮控制(C2)系統(tǒng)。C2系統(tǒng)應(yīng)確保從互聯(lián)設(shè)備所獲信息的及時(shí)安全分發(fā),如雷達(dá)、無(wú)人機(jī)(UAV)、傳感器、裝甲戰(zhàn)車(chē)以及可穿戴設(shè)備。這些網(wǎng)絡(luò)化傳感器和效應(yīng)器共同構(gòu)成了戰(zhàn)場(chǎng)物聯(lián)網(wǎng)(IoBT)。本文提出了一種安全網(wǎng)絡(luò)策略,通過(guò)在硬件、網(wǎng)絡(luò)和應(yīng)用程序級(jí)將應(yīng)用程序和網(wǎng)絡(luò)與多層深度防御網(wǎng)絡(luò)安全機(jī)制相耦合,在IoBT異構(gòu)環(huán)境中實(shí)現(xiàn)C2敏捷性。本文規(guī)劃的架構(gòu)將使用軟件定義網(wǎng)絡(luò)(SDN)范式,并借助來(lái)自信息中心網(wǎng)絡(luò)(ICN)和容遲網(wǎng)絡(luò)(DTN)等技術(shù)的面向語(yǔ)義的數(shù)據(jù)編排網(wǎng)絡(luò)服務(wù)。
引言
當(dāng)前戰(zhàn)場(chǎng)網(wǎng)絡(luò)(BN)必須具有靈活性才能適應(yīng)戰(zhàn)場(chǎng)環(huán)境的不斷變化,而戰(zhàn)場(chǎng)環(huán)境通常表現(xiàn)為缺乏基礎(chǔ)設(shè)施、充斥著異構(gòu)設(shè)備、拓?fù)鋭?dòng)態(tài)以及作戰(zhàn)場(chǎng)景固有的混亂狀態(tài)。由于必須確保實(shí)現(xiàn)作戰(zhàn)態(tài)勢(shì)感知以支持決策,以網(wǎng)絡(luò)為中心的指揮控制系統(tǒng)必須在士兵和指揮官之間共享實(shí)時(shí)戰(zhàn)術(shù)信息,這對(duì)于未來(lái)涉及陸、海、空、天以及網(wǎng)絡(luò)域的多域戰(zhàn)至關(guān)重要。戰(zhàn)場(chǎng)網(wǎng)絡(luò)必須在路由和QoS級(jí)解決這些挑戰(zhàn),這樣它才能為應(yīng)用層提供魯棒的數(shù)據(jù)組網(wǎng)業(yè)務(wù),以適應(yīng)戰(zhàn)場(chǎng)環(huán)境的特點(diǎn)、要求和限制。此外,網(wǎng)絡(luò)業(yè)務(wù)必須能夠針對(duì)位于網(wǎng)絡(luò)邊緣的資源豐富節(jié)點(diǎn)(如C2中心)和資源受限節(jié)點(diǎn)進(jìn)行定制。
這些邊緣節(jié)點(diǎn)包括部署戰(zhàn)場(chǎng)上的無(wú)線傳感器、可穿戴設(shè)備、裝甲車(chē)、小型無(wú)人機(jī)以及其他軍事設(shè)備,所有這些軍事設(shè)備通過(guò)彼此互聯(lián)構(gòu)成了戰(zhàn)場(chǎng)物聯(lián)網(wǎng)(IoBT)。在此網(wǎng)絡(luò)中,人與“物”彼此交互,實(shí)現(xiàn)軍事目標(biāo)。
IoBT是一種旨在獲取和/或處理可以在網(wǎng)絡(luò)中共享數(shù)據(jù)的物理設(shè)備網(wǎng)絡(luò)。其所生成信息本質(zhì)上具有多域性,這使得指揮官能夠充分利用多域戰(zhàn)優(yōu)勢(shì),快速找到各種解決方案應(yīng)對(duì)相關(guān)挑戰(zhàn)。IoBT是一種復(fù)雜的“系統(tǒng)之系統(tǒng)”,它可以利用無(wú)處不在的機(jī)器學(xué)習(xí)、處理和感知能力來(lái)增加多域戰(zhàn)的敏捷性。快速作出決策在多域戰(zhàn)中是一個(gè)關(guān)鍵要素,尤其是當(dāng)對(duì)手正在爭(zhēng)奪一個(gè)特定目標(biāo)時(shí),此時(shí)就突顯了C2敏捷性概念的價(jià)值。
北約下屬的一個(gè)工作組已經(jīng)完成了一份有關(guān)C2敏捷性概念模型的詳細(xì)報(bào)告。在該報(bào)告中,C2敏捷性定義為在軍事作戰(zhàn)行動(dòng)中選擇程序和調(diào)整C2方法的能力。該報(bào)告對(duì)C2策略進(jìn)行了如下分類(lèi):決策權(quán)如何分配,不同參與者如何互動(dòng),以及信息如何分發(fā)。因此,C2方法的范圍包括從高度集中的層級(jí)結(jié)構(gòu)到松散耦合的網(wǎng)絡(luò)。
在IoBT環(huán)境中實(shí)現(xiàn)C2敏捷性是一項(xiàng)挑戰(zhàn),因?yàn)楫?dāng)前的C2系統(tǒng)存在許多技術(shù)缺陷。有必要能夠?qū)θ齻€(gè)變量(決策權(quán)分配、交互模式和信息分發(fā))進(jìn)行動(dòng)態(tài)調(diào)整,以應(yīng)對(duì)執(zhí)行作戰(zhàn)行動(dòng)時(shí)出現(xiàn)的變化。IoBT的應(yīng)用場(chǎng)景與上個(gè)世紀(jì)常規(guī)戰(zhàn)爭(zhēng)應(yīng)用場(chǎng)景完全不同。在IoBT的應(yīng)用場(chǎng)景中,武裝部隊(duì)與民事執(zhí)法機(jī)構(gòu)在城市地區(qū)共同行動(dòng),打擊有組織犯罪或恐怖組織。這種情況需要C2系統(tǒng)作出快速反應(yīng),從而讓傳統(tǒng)(分級(jí))C2系統(tǒng)可賦予松散耦合的(邊緣)C2系統(tǒng)更多空間。
此項(xiàng)研究旨在通過(guò)經(jīng)過(guò)編排的網(wǎng)絡(luò)服務(wù)將應(yīng)用程序與網(wǎng)絡(luò)綁定,從而在IoBT實(shí)現(xiàn)安全的C2敏捷性。SDN使用不同的范式對(duì)數(shù)據(jù)流進(jìn)行編排:
●容遲網(wǎng)絡(luò)(DTN)用于支持間歇性連接,例如,只有當(dāng)無(wú)人機(jī)在無(wú)線傳感器網(wǎng)絡(luò)(WSN)通信范圍內(nèi)飛行時(shí),無(wú)人機(jī)和WSN之間才會(huì)進(jìn)行通信;
●信息中心網(wǎng)絡(luò)(ICN)用于內(nèi)容分發(fā),將有價(jià)值的戰(zhàn)術(shù)信息(例如關(guān)于威脅的信息)向所有授權(quán)節(jié)點(diǎn)分發(fā),而不管信息來(lái)源;
●當(dāng)信息源-信息目的地相關(guān)時(shí),使用IP通信,如士兵之間的語(yǔ)音通信,以及支持現(xiàn)有系統(tǒng)。
此項(xiàng)研究的主要成果包括:
●通過(guò)將戰(zhàn)術(shù)應(yīng)用與受有效網(wǎng)絡(luò)安全機(jī)制保護(hù)的網(wǎng)絡(luò)服務(wù)相結(jié)合,建立支持網(wǎng)絡(luò)中心軍事行動(dòng)的體系框架;
●開(kāi)發(fā)綜合利用DTN、ICN和SDN技術(shù)的網(wǎng)絡(luò)服務(wù),提供合適的服務(wù)質(zhì)量,調(diào)整業(yè)務(wù)流量并提高有效帶寬;
●為此框架定義多層網(wǎng)絡(luò)安全機(jī)制。
相關(guān)工作
IoBT網(wǎng)絡(luò)不同于傳統(tǒng)物聯(lián)網(wǎng)網(wǎng)絡(luò),它們必須面對(duì)戰(zhàn)場(chǎng)的特定挑戰(zhàn),例如敵對(duì)環(huán)境、缺乏固定通信基礎(chǔ)設(shè)施、設(shè)備異構(gòu)性以及容易受到信息物理攻擊。
有研究建議未來(lái)與IoBT交互的C2系統(tǒng)必須能夠在多個(gè)網(wǎng)絡(luò)上導(dǎo)航,包括藍(lán)軍(友軍)網(wǎng)絡(luò)和灰色(非戰(zhàn)斗人員)網(wǎng)絡(luò)。該研究還提出了從多個(gè)外部信息源(如盟國(guó)或有機(jī)會(huì)合作實(shí)體)集成重要的多任務(wù)傳感和信息相關(guān)能力的方法。還有研究對(duì)安全可重構(gòu)IoBT網(wǎng)絡(luò)進(jìn)行了理論分析,并建立了一個(gè)用于量化IoBT的數(shù)據(jù)分發(fā)和網(wǎng)絡(luò)參數(shù)優(yōu)化框架。該研究提出了在C2網(wǎng)絡(luò)邊緣的IoBT進(jìn)行高效數(shù)據(jù)分發(fā)的方案,并利用其能力實(shí)現(xiàn)C2敏捷性。借助DTN和ICN網(wǎng)絡(luò)范式以及SDN的編排能力實(shí)現(xiàn)了通信系統(tǒng)應(yīng)對(duì)斷連和延遲的韌性能力,從而實(shí)現(xiàn)了態(tài)勢(shì)感知能力。
DTN范式解決了IoBT面臨的一些挑戰(zhàn),如往返時(shí)間(RTT)長(zhǎng)、帶寬有限、長(zhǎng)時(shí)間間隔內(nèi)可能出現(xiàn)的鏈路中斷以及間歇性連接。DTN節(jié)點(diǎn)采用存儲(chǔ)-攜帶-轉(zhuǎn)發(fā)路由解決這些問(wèn)題。有研究提出將DTN與SDN結(jié)合起來(lái)為IoBT提供韌性。
雖然DTN有能力應(yīng)對(duì)鏈路中斷相關(guān)挑戰(zhàn),但還需要一種更為高效的信息分發(fā)機(jī)制,而此時(shí)ICN可以發(fā)揮關(guān)鍵作用。ICN將采用“發(fā)布-訂閱”互聯(lián)網(wǎng)路由范式、以?xún)?nèi)容為中心組網(wǎng)(CCN)、“移動(dòng)性?xún)?yōu)先”以及命名數(shù)據(jù)組網(wǎng)(NDN)等設(shè)計(jì)概念來(lái)實(shí)現(xiàn)。這些設(shè)計(jì)還將支持間歇性連接,可以透明方式實(shí)現(xiàn)存儲(chǔ)組網(wǎng)(storage )。
此外還有研究使用ICN和SDN來(lái)提高IoBT中的C2敏捷性。該研究使用Ryu控制器(作為SDN控制器)和建立節(jié)點(diǎn)優(yōu)先級(jí),并將ICN“孤島”連接到IP基礎(chǔ)設(shè)施。IoBT的三個(gè)關(guān)鍵性能指標(biāo)是送達(dá)率、延遲和帶寬利用——所有這些指標(biāo)都是用于衡量三種不同類(lèi)型信息的分發(fā)效能,即藍(lán)軍數(shù)據(jù)、傳感器數(shù)據(jù)和文檔數(shù)據(jù)。ICN為每一類(lèi)數(shù)據(jù)提供路由、緩存、移動(dòng)性和安全機(jī)制。
SDN能夠促進(jìn)DTN和ICN能力的發(fā)揮,其所具有的靈活性非常適合戰(zhàn)場(chǎng)網(wǎng)絡(luò),并推動(dòng)節(jié)點(diǎn)交互和協(xié)助利用邊緣計(jì)算資源處理鄰近的數(shù)據(jù)。一項(xiàng)關(guān)于SDN軍事應(yīng)用的研究對(duì)SDN應(yīng)用領(lǐng)域(聯(lián)盟、軍事、關(guān)鍵任務(wù)、戰(zhàn)術(shù)等)、作用(架構(gòu)、評(píng)估、服務(wù)、控制系統(tǒng)等)、范圍以及安全性進(jìn)行了研究。
安全性也是IoBT實(shí)現(xiàn)必須要應(yīng)對(duì)的一個(gè)問(wèn)題。由于計(jì)算系統(tǒng)功率、數(shù)據(jù)存儲(chǔ)和電池資源受限,戰(zhàn)場(chǎng)網(wǎng)絡(luò)很容易受到攻擊。此外,由于戰(zhàn)場(chǎng)網(wǎng)絡(luò)通常靠近敵人,這就為敵人破壞、濫用繳獲的資產(chǎn)或信息竊取創(chuàng)造了機(jī)會(huì),并阻礙了情報(bào)收集工作。有研究采用了一種認(rèn)證方法,它利用基于區(qū)塊鏈的物理不可克隆函數(shù)(PUF)解決上述一些問(wèn)題,并避免了單點(diǎn)故障(SPoF)。研究人員提出了通過(guò)可信執(zhí)行環(huán)境(TEE)實(shí)現(xiàn)硬件安全,使PUF更加安全。此外,該項(xiàng)研究還展示了仲裁器PUF架構(gòu)的優(yōu)勢(shì)。與多個(gè)備選方案相比,該架構(gòu)具有更高穩(wěn)定性和應(yīng)對(duì)機(jī)器學(xué)習(xí)攻擊的韌性。
本文旨在通過(guò)在IoBT中采用分層安全方法來(lái)強(qiáng)化上述研究中建立的安全機(jī)制,并利用SDN、ICN和DTN,以解決應(yīng)用面、北向通信、控制面、南向通信以及數(shù)據(jù)面中的安全漏洞。
安全指揮控制系統(tǒng)
本文提出了一種旨在優(yōu)化IoBT通信指標(biāo)(如延遲和信道帶寬)的C2系統(tǒng)架構(gòu),并將解決通信間歇和故障節(jié)點(diǎn)問(wèn)題,以及應(yīng)對(duì)拓?fù)浣Y(jié)構(gòu)變化。此外,該系統(tǒng)還為網(wǎng)絡(luò)提供了網(wǎng)絡(luò)安全機(jī)制。
該框架使用SDN進(jìn)行網(wǎng)絡(luò)編排。其可編程性用于為給定作戰(zhàn)環(huán)境定義最佳網(wǎng)絡(luò)解決方案并利用其靈活根據(jù)特定情況對(duì)其進(jìn)行修改。此概念基于三個(gè)域:應(yīng)用、網(wǎng)絡(luò)(編排)和安全性,如圖1所示。
圖1高層架構(gòu)
應(yīng)用域由支持SDN感知應(yīng)用或傳統(tǒng)應(yīng)用組成,這些應(yīng)用具有不同的QoS和安全性要求。SDN感知應(yīng)用與SDN控制器進(jìn)行通信,更改節(jié)點(diǎn)層級(jí)并建立對(duì)數(shù)據(jù)流優(yōu)先級(jí)的控制,而傳統(tǒng)應(yīng)用只是通過(guò)網(wǎng)絡(luò)發(fā)送數(shù)據(jù)。在圖1中,傳統(tǒng)應(yīng)用使用IP協(xié)議棧提供的服務(wù),而SDN感知應(yīng)用則通過(guò)控制器利用差異化SDN服務(wù)。
編排域由每輛車(chē)上安裝的開(kāi)放網(wǎng)絡(luò)操作系統(tǒng)(ONOS)控制器組成。每個(gè)SDN控制器都能夠以對(duì)等模式與其他控制器通信,但指揮車(chē)是具有全局、多網(wǎng)絡(luò)視圖的網(wǎng)絡(luò)編排器,而其他車(chē)輛上的控制器則是守護(hù)進(jìn)程(daemon)。對(duì)ONOS進(jìn)行編程,優(yōu)化數(shù)據(jù)流,并為同時(shí)傳輸?shù)腎P、NDN和DTN數(shù)據(jù)包創(chuàng)建不同的網(wǎng)絡(luò)切片。NDN和DTN服務(wù)采用由SDN控制器定義并以P4語(yǔ)言實(shí)施的路由策略。在與控制器連接斷開(kāi)的情況下,節(jié)點(diǎn)將繼續(xù)向具有最新配置的交換機(jī)發(fā)送數(shù)據(jù)。
安全域?qū)⑸疃确烙拍钬灤┢渌颉I疃确烙拍钅軌蚍乐挂粋€(gè)域內(nèi)的漏洞影響另一個(gè)域。如圖1所示,用戶(hù)通過(guò)進(jìn)行認(rèn)證實(shí)現(xiàn)對(duì)系統(tǒng)的訪問(wèn),以便與網(wǎng)絡(luò)中的遠(yuǎn)程對(duì)等節(jié)點(diǎn)同步,同時(shí)ONOS和應(yīng)用程序之間的通信被加密,作為保護(hù)應(yīng)用域的一種手段。在編排域中,所有對(duì)網(wǎng)絡(luò)的訪問(wèn)都是通過(guò)物理不可克隆函數(shù)(PUF)生成的密鑰實(shí)現(xiàn),而交換機(jī)處的流控制(由控制器管理)防止非授權(quán)請(qǐng)求被發(fā)送到接收者,這是保護(hù)編排域的一種方式。最后一種技術(shù)使用以太坊區(qū)塊鏈保護(hù)網(wǎng)絡(luò)中的組間通信,并通過(guò)預(yù)測(cè)惡意活動(dòng)破壞或威脅風(fēng)險(xiǎn)避免單點(diǎn)故障(SPoF)。
3.1
應(yīng)用域
C2應(yīng)用程序的主要作用是幫助指揮官管理其人員和可用資源,以便能夠執(zhí)行上級(jí)分派的任務(wù),包括組織、協(xié)調(diào)和指揮部隊(duì)。本文中使用的C2應(yīng)用程序的用戶(hù)接口包括兩個(gè)關(guān)鍵模塊:作戰(zhàn)規(guī)劃和作戰(zhàn)監(jiān)控。這兩個(gè)模塊都使用地理信息系統(tǒng)(GIS)引擎和興趣視圖模塊(數(shù)據(jù)驅(qū)動(dòng)服務(wù)),在網(wǎng)絡(luò)架構(gòu)頂層運(yùn)行。
3.2
編排域
C2應(yīng)用程序和SDN控制器在車(chē)輛上工作。ONOS用作SDN控制器,并通過(guò)REST API連接到C2應(yīng)用程序,如圖2所示。它為在其他節(jié)點(diǎn)中使用Stratum操作系統(tǒng)的交換機(jī)部署用P4語(yǔ)言編寫(xiě)的“流水線”(,一條流水線表示一組完整的數(shù)據(jù)處理流程)。與使用固定功能的不同,P4程序只激活資源受限節(jié)點(diǎn)中真正需要的功能。
圖2網(wǎng)絡(luò)編排服務(wù)
ONOS為DTN、NDN和IP協(xié)議棧建立了數(shù)據(jù)流規(guī)則和優(yōu)先級(jí)。即使在節(jié)點(diǎn)失去與其控制器連接的情況下,由P4實(shí)現(xiàn)的仍然繼續(xù)工作,使用最后接收的規(guī)則,維持?jǐn)?shù)據(jù)面工作。一旦重新連接,如果控制器更改了規(guī)則,它將被更新。例如,超出其控制器范圍的節(jié)點(diǎn)繼續(xù)以當(dāng)前優(yōu)先級(jí)轉(zhuǎn)發(fā)NDN數(shù)據(jù)包,直到它們進(jìn)入控制器通信范圍以接收更新優(yōu)先級(jí)。
無(wú)人機(jī)和車(chē)輛之間的通信依賴(lài)NDN進(jìn)行內(nèi)容傳輸,即分發(fā)有關(guān)威脅目標(biāo)的戰(zhàn)術(shù)信息,而無(wú)人值守地面?zhèn)鞲衅髟跓o(wú)人機(jī)在附近飛行時(shí)使用DTN進(jìn)行通信。徒步士兵和車(chē)輛之間的語(yǔ)音通信利用IP協(xié)議棧,因?yàn)檫@種情況不適合NDN或DTN,并且需要端到端節(jié)點(diǎn)實(shí)時(shí)連接。
1) 網(wǎng)絡(luò)抽象服務(wù):應(yīng)用程序數(shù)據(jù)可以通過(guò)ONOS REST API使用JSON格式進(jìn)行交換。JSON是一種對(duì)于人類(lèi)和機(jī)器都易于讀取的語(yǔ)言。API具有網(wǎng)絡(luò)設(shè)備信息和管理能力。
2) 網(wǎng)絡(luò)切片和流優(yōu)化:在此項(xiàng)研究中,ONOS將被編程,根據(jù)每個(gè)數(shù)據(jù)源的不同規(guī)則對(duì)數(shù)據(jù)流進(jìn)行分類(lèi)。NDN、DTN和IP信息流將擁有一種由P4語(yǔ)言定義的特殊。這種安裝在ONOS中,并通過(guò)部署到交換機(jī)或接入點(diǎn)(AP)。這一機(jī)制允許建立具有不同優(yōu)先級(jí)的“孤島”網(wǎng)絡(luò)。
數(shù)據(jù)流通過(guò)以JSON格式編寫(xiě)的流規(guī)則進(jìn)行優(yōu)先級(jí)排序,JSON格式是ONOS中可用的REST API之一。當(dāng)結(jié)合使用時(shí),這些規(guī)則集實(shí)現(xiàn)了不同的轉(zhuǎn)發(fā)策略,而策略的選擇則是基于對(duì)每個(gè)數(shù)據(jù)流施加的具體動(dòng)作。這可以確保數(shù)據(jù)流可以根據(jù)網(wǎng)絡(luò)情況進(jìn)行優(yōu)化,并滿(mǎn)足操作需求,從而相應(yīng)確定優(yōu)先級(jí)。
3) 多控制器管理:每輛車(chē)都配備有一個(gè)嵌入式SDN控制器,與附近車(chē)輛共享數(shù)據(jù),形成一個(gè)集群。網(wǎng)絡(luò)設(shè)備管理使用一種最優(yōu)化的復(fù)制技術(shù),輔以后臺(tái)Gossip協(xié)議,以確保ONOS提供的一致性,在不可用的情況下,ONOS還負(fù)責(zé)領(lǐng)導(dǎo)者選舉算法。當(dāng)車(chē)輛彼此接近時(shí),孤立節(jié)點(diǎn)可以形成新的集群或者加入現(xiàn)有集群。
4) 數(shù)據(jù)轉(zhuǎn)發(fā):此項(xiàng)工作使用P4語(yǔ)言對(duì)數(shù)據(jù)面進(jìn)行編程,并定義了一個(gè)處理。NDN、IP或DTN適用于每種數(shù)據(jù)類(lèi)型。這樣就可以實(shí)現(xiàn)三種不同范式在同一個(gè)基礎(chǔ)設(shè)施上協(xié)同工作。
●IP數(shù)據(jù)流:當(dāng)需要實(shí)時(shí)端到端節(jié)點(diǎn)通信時(shí)使用,如士兵之間以及車(chē)輛和士兵之間的VoIP通信,具有最高優(yōu)先級(jí)。
●DTN數(shù)據(jù)流:用于預(yù)期節(jié)點(diǎn)斷開(kāi)的情況,如車(chē)輛間同步(即其他控制器),以及當(dāng)無(wú)人機(jī)接近分布在戰(zhàn)場(chǎng)上的無(wú)線傳感器節(jié)點(diǎn)時(shí)。
●NDN數(shù)據(jù)流:用于IoBT的數(shù)據(jù)分發(fā)。來(lái)自監(jiān)視設(shè)備的無(wú)人機(jī)數(shù)據(jù),以及士兵產(chǎn)生的數(shù)據(jù),如文本、照片和視頻。
3.3
安全域
如圖1和圖3所示,在三個(gè)級(jí)別上實(shí)現(xiàn)安全性,并且以如下順序方式建立安全屏障:
圖3安全機(jī)制(網(wǎng)絡(luò)軟件級(jí))
1) 硬件級(jí):如果設(shè)備被敵方繳獲,要防止信息被竊取或篡改。安全切片將最重要數(shù)據(jù)存儲(chǔ)在由可信軟件處理的地方。創(chuàng)建了兩種不同環(huán)境:可信執(zhí)行環(huán)境(TEE),由硬件組件處理敏感資產(chǎn)并且僅可由可信軟件訪問(wèn)(私鑰存儲(chǔ)在此環(huán)境,如圖1左中/底部表示);以及通用執(zhí)行環(huán)境(REE),這是一個(gè)不可靠區(qū)域,其余的硬件組件只能被不可信軟件訪問(wèn)。對(duì)該區(qū)域的任何訪問(wèn)都可能危及可信軟件安全。
2) 網(wǎng)絡(luò)軟件級(jí):保護(hù)控制面、南向通信和數(shù)據(jù)面,以及防止對(duì)IoBT的未授權(quán)訪問(wèn)。由于其攻擊面較大,所以采用了三種技術(shù):Euclid、物理不可克隆函數(shù)(PUF)和以太坊區(qū)塊鏈。
Euclid使用定制“計(jì)數(shù)草圖”(count sketch)算法來(lái)進(jìn)行計(jì)算機(jī)密集型數(shù)學(xué)計(jì)算,以防止來(lái)自交換機(jī)的直接分布式拒絕服務(wù)攻擊(DDoS)和泛洪攻擊,防止它們破壞數(shù)據(jù)面和控制面,如圖1(中間右側(cè))所示。
利用兩種PUF架構(gòu)進(jìn)行節(jié)點(diǎn)認(rèn)證,并防止對(duì)南向通信的攻擊或?qū)W(wǎng)絡(luò)的未授權(quán)訪問(wèn):a)使用仲裁器PUF的雙向驗(yàn)證,適用于高端節(jié)點(diǎn);b)使用環(huán)形振蕩器PUF對(duì)低端設(shè)備(如無(wú)人值守地面?zhèn)鞲衅鳎┻M(jìn)行單向驗(yàn)證。
最后一種技術(shù)(如圖3所示)與前一種技術(shù)密切相關(guān),它使用以太坊區(qū)塊鏈來(lái)保護(hù)組間通信。選擇區(qū)塊鏈(尤其是以太坊)的原因包括:a)網(wǎng)絡(luò)認(rèn)證方案可以通過(guò)智能合約完成;b)權(quán)益證明(Proof-of-Stake,PoS)支持以更少資源實(shí)現(xiàn)每秒更高數(shù)量交易;c)區(qū)塊鏈所具有的不可篡改性能夠防止數(shù)據(jù)被篡改;d)區(qū)塊鏈本身所固有的去中心化有利于提高系統(tǒng)可用性,同時(shí)避免了單點(diǎn)故障問(wèn)題。由于以太坊區(qū)塊鏈?zhǔn)撬接袇^(qū)塊鏈,只有具有更大計(jì)算能力和能量資源的節(jié)點(diǎn)才是是驗(yàn)證者,所以針對(duì)PoS的攻擊并不十分奏效。
研究人員在一項(xiàng)研究中創(chuàng)建了多個(gè)網(wǎng)絡(luò)組,并通過(guò)建立可信ID(組ID)來(lái)解決此問(wèn)題,注冊(cè)信息( )通過(guò)智能合約存儲(chǔ)在區(qū)塊鏈中。在出現(xiàn)攻擊或長(zhǎng)時(shí)間通信的情況下,一個(gè)組中的節(jié)點(diǎn)可以加入其他組,只要它們?cè)趨^(qū)塊鏈數(shù)據(jù)庫(kù)中注冊(cè),這樣就可以建立組間通信。
3) 應(yīng)用軟件級(jí):訪問(wèn)應(yīng)用程序需要進(jìn)行本地認(rèn)證,而應(yīng)用程序?qū)⑼ㄟ^(guò)訪問(wèn)控制器/網(wǎng)絡(luò)(圖1-左上角)。在控制器中,流規(guī)則在交換機(jī)中實(shí)現(xiàn)(圖1中間偏右)。該安全層避免了針對(duì)應(yīng)用和北向通信(應(yīng)用和控制器之間)的攻擊。這種攻擊旨在檢測(cè)訪問(wèn)控制和應(yīng)用程序隔離中的漏洞,要么允許非授權(quán)個(gè)人訪問(wèn)信息,要么將不一致的流規(guī)則發(fā)送給控制器。通過(guò)網(wǎng)絡(luò)認(rèn)證協(xié)議進(jìn)行的認(rèn)證將生成票證(ticket),允許本地應(yīng)用程序訪問(wèn)網(wǎng)絡(luò)中的其他節(jié)點(diǎn)并與之同步。即使與服務(wù)器斷開(kāi)連接,與范圍內(nèi)其他節(jié)點(diǎn)的同步也會(huì)保持,前提是票證生效。如果票證過(guò)期,而服務(wù)器仍在范圍之外,則用戶(hù)仍以離線模式使用本地應(yīng)用程序。
北向通信攻擊的目標(biāo)是控制器和應(yīng)用程序之間的弱認(rèn)證或不存在認(rèn)證,會(huì)導(dǎo)致欺騙攻擊。為了緩解此問(wèn)題,ONOS REST API(圖1中間位置)使用HTTPS協(xié)議保護(hù)應(yīng)用程序和控制器之間的身份驗(yàn)證。此外,在交換機(jī)中實(shí)現(xiàn)的流規(guī)則防止非授權(quán)應(yīng)用向ONOS發(fā)送指令。
結(jié)語(yǔ)
本文提出了一種基于SDN、ICN和DTN的網(wǎng)絡(luò)系統(tǒng),以應(yīng)對(duì)當(dāng)前C2敏捷性所面臨的挑戰(zhàn)。具體而言,開(kāi)放網(wǎng)絡(luò)操作系統(tǒng)(ONOS)/Stratum操作系統(tǒng)的靈活性及其通過(guò)P4語(yǔ)言實(shí)現(xiàn)的可編程性提供了一種適用于IoBT的新型軍事網(wǎng)絡(luò)設(shè)計(jì)。此外,將先進(jìn)網(wǎng)絡(luò)安全機(jī)制嵌入系統(tǒng)的所有層中,從而保護(hù)網(wǎng)絡(luò)免受最常見(jiàn)的攻擊。該方案支持差異化服務(wù)(由基于SDN的C2應(yīng)用使用)。此項(xiàng)目是為計(jì)算和能量資源有限設(shè)備設(shè)計(jì)的,而這也是IoBT的一個(gè)特點(diǎn)。仿真結(jié)果比較令人滿(mǎn)意,但未來(lái)工作應(yīng)更詳細(xì)研究更重要的因素,以獲得SDN感知C2應(yīng)用并改進(jìn)對(duì)網(wǎng)絡(luò)編排服務(wù)的使用,包括每種部署的IoBT節(jié)點(diǎn)的移動(dòng)性模型,以及所有規(guī)劃的安全機(jī)制及其網(wǎng)絡(luò)指標(biāo)成本之間的權(quán)衡。
進(jìn)程切換的五部曲:用戶(hù)級(jí)和內(nèi)核級(jí)上下文切換的原理
學(xué)習(xí)了操作系統(tǒng)的基本原理和調(diào)度的相關(guān)知識(shí),開(kāi)始學(xué)習(xí)進(jìn)程的上下文切換,本章主要要了解一下內(nèi)容:
用戶(hù)級(jí)線程上下文切換
上文線程的基本概念中,我們討論了何為多線程,而線程又分用戶(hù)級(jí)線程和內(nèi)核級(jí)線程,這節(jié)我們先來(lái)討論一下何為用戶(hù)級(jí)線程以及用戶(hù)級(jí)線程的底層原理。用戶(hù)級(jí)線程的切換是由我們用戶(hù)來(lái)主動(dòng)控制的,現(xiàn)在我們假設(shè)有線程1和線程2兩個(gè)線程(圖中紅色的數(shù)字為內(nèi)存的地址)
線程1中有A()和B()兩個(gè)函數(shù),執(zhí)行流程為A()函數(shù)調(diào)用B()函數(shù),B()函數(shù)執(zhí)行完畢后返回到地址為104的語(yǔ)句繼續(xù)往下執(zhí)行
線程2中有C()和D()兩個(gè)函數(shù),執(zhí)行流程為C()函數(shù)調(diào)用D()函數(shù),D()函數(shù)執(zhí)行完畢后返回到地址為304的語(yǔ)句繼續(xù)往下執(zhí)行
那么圖中還有一個(gè)Yield()函數(shù)到底是什么東西呢,簡(jiǎn)單來(lái)說(shuō)它就是我們用戶(hù)主動(dòng)來(lái)控制線程切換的一個(gè)函數(shù),在線程1中調(diào)用Yield()函數(shù),此時(shí)會(huì)切換到線程2,在線程2中調(diào)用了Yield()函數(shù),此時(shí)又會(huì)回到線程1繼續(xù)執(zhí)行。因此,執(zhí)行流程為下圖所示。
現(xiàn)在我們更加深入地去剖析整個(gè)切換過(guò)程到底發(fā)生了什么有趣的事,按照我們傳統(tǒng)的方式:
此時(shí)根據(jù)調(diào)用關(guān)系,那么當(dāng)從D退出的時(shí)候,應(yīng)該是從404返回,而不能回到104地方執(zhí)行,出錯(cuò)的原因是因?yàn)閮蓚€(gè)線程共用了一個(gè)棧,導(dǎo)致線程間切換和內(nèi)部運(yùn)行出現(xiàn)了問(wèn)題,因此可以用兩個(gè)解決該問(wèn)題,即為每個(gè)線程分配一個(gè)獨(dú)立的棧。還是上面的例子,線程1和線程2分別有自己獨(dú)有的棧,各種的棧地址放在各自線程的TCB中,其流程如下:
更多Linux內(nèi)核視頻教程文檔資料免費(fèi)領(lǐng)取后臺(tái)私信【內(nèi)核】自行獲取。
當(dāng)線程2執(zhí)行Yield函數(shù)后,全局的棧指示變量會(huì)執(zhí)行線程1的棧,此時(shí)執(zhí)行出棧的操作,出的時(shí)線程1的棧,彈出204,轉(zhuǎn)向204的地方執(zhí)行,接著B(niǎo)調(diào)用完畢后,繼續(xù)執(zhí)行線程1的棧,此時(shí)就完美的額解決了一個(gè)棧導(dǎo)致的混亂問(wèn)題。由此可見(jiàn),用戶(hù)級(jí)線程是基于在用戶(hù)態(tài)分別創(chuàng)建一套維護(hù)的用戶(hù)棧來(lái)實(shí)現(xiàn)進(jìn)程間的切換,其特點(diǎn)如下:
但是其缺點(diǎn)也很明顯,對(duì)于多核的CPU,同一進(jìn)程中的多個(gè)線程并不能真正的并發(fā)和并行,如果進(jìn)程中的某個(gè)線程進(jìn)入內(nèi)核并阻塞,進(jìn)程中的其它的線程將無(wú)法得到執(zhí)行,例如若內(nèi)核進(jìn)程需要等待網(wǎng)卡IO,需要較長(zhǎng)時(shí)間而導(dǎo)致進(jìn)程阻塞,用戶(hù)態(tài)的多線程將沒(méi)有任何作用。
內(nèi)核級(jí)線程上下文切換
現(xiàn)在操作系統(tǒng)都是多核,為了充分發(fā)揮操作系統(tǒng)的并行能力,所以就使用一個(gè)用戶(hù)線程映射到一個(gè)內(nèi)核級(jí)線程,也就是說(shuō)一個(gè)用戶(hù)線程就要?jiǎng)?chuàng)建一個(gè)內(nèi)核級(jí)線程,隨之而導(dǎo)致的時(shí)內(nèi)核級(jí)線程的開(kāi)銷(xiāo)增大,所以系統(tǒng)中會(huì)限制線程數(shù)量,對(duì)于目前的windows/linux等操作系統(tǒng)均采用這種模型。
我們還是以實(shí)際的例子來(lái)說(shuō)明,操作系統(tǒng)是如何完成內(nèi)核級(jí)線程的上下文切換的原理,每個(gè)用戶(hù)級(jí)線程即需要一個(gè)棧,而內(nèi)核級(jí)線程需要一套棧即兩個(gè)棧:用戶(hù)棧 + 內(nèi)核棧,仍然是之前A,B,C的例子
線程1,A函數(shù)調(diào)用B,首先此時(shí)要將104的地址壓入線程1的棧,此時(shí)104進(jìn)入用戶(hù)棧,對(duì)于B函數(shù),會(huì)調(diào)用到read接口,此時(shí)再將204入棧,由于read接口是一個(gè)系統(tǒng)調(diào)用,此時(shí)要立刻用戶(hù)空間進(jìn)入到內(nèi)核態(tài)。
進(jìn)入到內(nèi)核態(tài)的時(shí)候,就需要保存此時(shí)用戶(hù)空間的狀態(tài),以便返回的用戶(hù)空間時(shí)使用,首先會(huì)將棧段寄存器SS(存放段地址,基地址)和棧指針SP(寄存器存放偏移地址),同時(shí)將此時(shí)標(biāo)志寄存器(EFLAGS)進(jìn)內(nèi)核的棧,然后將此時(shí)的用戶(hù)態(tài)用戶(hù)運(yùn)行到那里,包括此時(shí)運(yùn)行的PC和下一條指令,頁(yè)就是PC(304),CS,IP
然后就執(zhí)行就進(jìn)入內(nèi)核態(tài),啟動(dòng)磁盤(pán)讀,將自己變成阻塞狀態(tài),然后進(jìn)程切換到另外一個(gè)進(jìn)程運(yùn)行,內(nèi)核線程調(diào)度使用() ,并切換棧
對(duì)于整個(gè)過(guò)程可以理解為如下圖所示:
所以對(duì)于內(nèi)核級(jí)線程,分為用戶(hù)態(tài)和內(nèi)核態(tài),例如process 1,用戶(hù)進(jìn)程中有線程A和線程B,它們共享進(jìn)程的內(nèi)存空間,分別有自己的用戶(hù)棧,用于存放自己的調(diào)用過(guò)程,同時(shí)在內(nèi)核空間,有屬于自己的PCB,但是對(duì)于每一個(gè)進(jìn)程有一個(gè)內(nèi)核棧
進(jìn)程切換的時(shí)機(jī)
對(duì)于一個(gè)進(jìn)程由哪些部分組成呢?主要包括用戶(hù)空間和內(nèi)核空間,如下圖所示:
這個(gè)在linux進(jìn)程管理章節(jié)中已經(jīng)有詳細(xì)介紹,要想進(jìn)行進(jìn)程的切換,那么OS必須首先獲得控制權(quán),其主要在以下情況下得到控制權(quán)
進(jìn)程切換
基于內(nèi)核棧實(shí)現(xiàn)進(jìn)程切換的基本思路:
1, 當(dāng)進(jìn)程由用戶(hù)態(tài)進(jìn)入內(nèi)核態(tài)時(shí),主要是通過(guò)系統(tǒng)調(diào)用或者中斷,會(huì)引起堆棧切換,用戶(hù)信息會(huì)被壓入到內(nèi)核棧中,包括此時(shí)的用戶(hù)的棧指針,PC和程序狀態(tài)保存在內(nèi)核棧中
2, 當(dāng)進(jìn)入到內(nèi)核后,此時(shí)由于某些原因,由于該進(jìn)程需要讀取磁盤(pán)或者網(wǎng)絡(luò)等信息,變成阻塞狀態(tài),或者時(shí)間片用完,此時(shí)需要讓出CPU,重新引起調(diào)度時(shí),操作系統(tǒng)會(huì)找到一個(gè)新的進(jìn)程的PCB,并完成新進(jìn)程PCB的切換
3, 當(dāng)完成新進(jìn)程的切換時(shí),內(nèi)核也完成了內(nèi)核棧的切換,那么當(dāng)中斷返回時(shí),執(zhí)行IRET,彈出的就是新進(jìn)程的EIP,從而跳轉(zhuǎn)到新進(jìn)程的用戶(hù)指令進(jìn)行執(zhí)行。
這個(gè)切換的核心就是構(gòu)建出內(nèi)核棧的樣子,要在適當(dāng)?shù)牡胤綁喝霔#m當(dāng)?shù)牡胤椒祷氐刂罚⒏鶕?jù)內(nèi)核棧的樣子,編寫(xiě)相應(yīng)的匯編代碼,完成內(nèi)核堆棧的入棧和出站操作,以便保證順利完成進(jìn)程切換。
4.1 中斷入口
操作系統(tǒng)負(fù)責(zé)進(jìn)程的調(diào)度和切換,所以進(jìn)程的切換一定是內(nèi)核中發(fā)生,而用戶(hù)程序是運(yùn)行在內(nèi)核態(tài),所以就需要使用系統(tǒng)調(diào)用進(jìn)入到內(nèi)核態(tài)。主要的偽代碼如下:
push ds;
mov ds, 內(nèi)核段號(hào)
system_call
4.2 中斷處理
用戶(hù)態(tài)進(jìn)入內(nèi)核態(tài),要發(fā)生堆棧的切換,系統(tǒng)調(diào)用的核心指令對(duì)于X86來(lái)說(shuō)是指令int 0x80,這個(gè)系統(tǒng)調(diào)用中斷。 當(dāng)執(zhí)行int 0x80 這條語(yǔ)句時(shí)由用戶(hù)態(tài)進(jìn)入內(nèi)核態(tài)時(shí),CPU會(huì)自動(dòng)按照***SS、ESP、EFLAGS、CS、EIP***的順序,將這幾個(gè)寄存器的值壓入到內(nèi)核棧中,由于執(zhí)行int 0x80時(shí)還未進(jìn)入內(nèi)核,所以壓入內(nèi)核棧的這五個(gè)寄存器的值是用戶(hù)態(tài)時(shí)的值,其中***EIP*為int 0x80的下一條語(yǔ)句 "=a" (__res),這條語(yǔ)句的含義是將eax所代表的寄存器的值放入到_res變量中。所以當(dāng)應(yīng)用程序在內(nèi)核中返回時(shí),會(huì)繼續(xù)執(zhí)行 “=a” (__res) 這條語(yǔ)句。**這個(gè)過(guò)程完成了進(jìn)程切換中的第一步,通過(guò)在內(nèi)核棧中壓入用戶(hù)棧的ss、esp建立了用戶(hù)棧和內(nèi)核棧的聯(lián)系,形象點(diǎn)說(shuō),即在用戶(hù)棧和內(nèi)核棧之間拉了一條線,形成了一套棧。
在中執(zhí)行完相應(yīng)的系統(tǒng)調(diào)用后,又將函數(shù)的返回值eax壓棧。若引起調(diào)度,則跳轉(zhuǎn)執(zhí)行。否則則執(zhí)行。
在執(zhí)行前將壓棧,因?yàn)槭莄函數(shù),所以在c函數(shù)末尾的},相當(dāng)于ret指令,將會(huì)彈出作為返回地址,跳轉(zhuǎn)到執(zhí)行。 總之,在系統(tǒng)調(diào)用結(jié)束后,將要中斷返回前,內(nèi)核棧主要是SS:SP指向用戶(hù)棧,EFLAGS標(biāo)志寄存器,返回地址EIP,還有一些其他的other :EAX,EBX等,如下圖所示
4.3 找到當(dāng)前進(jìn)程的PCB和新進(jìn)程的PCB
當(dāng)前進(jìn)程的PCB 當(dāng)前進(jìn)程的PCB是用一個(gè)全局變量current指向的*(在sched.c中定義)* ,所以current即指向當(dāng)前進(jìn)程的PCB,pnext就指向下個(gè)進(jìn)程的PCB。 在()*函數(shù)中,當(dāng)調(diào)用函數(shù)*(pent, _LDT(next))*時(shí),會(huì)依次將返回地址**}***、參數(shù)2 ***_LDT(next)***、參數(shù)1 *pnext**壓棧。當(dāng)執(zhí)行**的返回指令ret時(shí),就回彈出()函數(shù)的}執(zhí)行*()*函數(shù)的返回指令
4.4
對(duì)于中,表示要取出表示下一個(gè)進(jìn)程的PCB參數(shù),并與當(dāng)前的current做一個(gè)比較,如果是當(dāng)前的current,則什么也不做;如果不等于當(dāng)前的curret,則開(kāi)始進(jìn)程切換,以次完成PCB的切換,內(nèi)核棧的切換等
在.c中定義struct *tss=&(.task.tss)這樣一個(gè)全局變量,即0號(hào)進(jìn)程的tss,所有進(jìn)程都共用這個(gè)tss,任務(wù)切換時(shí)不再發(fā)生變化。 雖然所有進(jìn)程共用一個(gè)tss,但不同進(jìn)程的內(nèi)核棧是不同的,所以在每次進(jìn)程切換時(shí),需要更新tss中esp0的值,讓它指向新的進(jìn)程的內(nèi)核棧,并且要指向新的進(jìn)程的內(nèi)核棧的棧底,即要保證此時(shí)的內(nèi)核棧是個(gè)空棧,幀指針和棧指針都指向內(nèi)核棧的棧底。
4.5 中斷出口
PC的切換對(duì)于被切換出去的進(jìn)程,當(dāng)再次被調(diào)度的時(shí),根據(jù)切換出去的進(jìn)程的內(nèi)核棧的樣子,的最后一句指令ret會(huì)彈出后面的指令,作為返回地址繼續(xù)執(zhí)行,將彈出作為返回地址,在中繼續(xù)進(jìn)行一些處理,最后執(zhí)行iret指令,進(jìn)行終端返回,將彈出原來(lái)用戶(hù)進(jìn)程被中斷的地方作為返回地址,繼續(xù)被中斷處執(zhí)行。
5. 總結(jié)
對(duì)于進(jìn)程切換不同于我們熟知的“模式切換”,模式切換,CPU還是在同一進(jìn)程中運(yùn)行或者中斷上下文;而進(jìn)程切換是CPU轉(zhuǎn)向另外一個(gè)進(jìn)程執(zhí)行,進(jìn)程切換改變當(dāng)前的進(jìn)程空間,其主要的工作如下:
保持當(dāng)前進(jìn)程的硬件上下文(PC/SP和通用寄存器等),對(duì)于linux系統(tǒng)而言,其硬件上下文大部分都保存在struct thread中,但通用寄存器等都保存在內(nèi)核棧中
修改當(dāng)前進(jìn)程的PCB,比如將其狀態(tài)由運(yùn)行態(tài)修改為就緒或者等待態(tài),并將該進(jìn)程PCB加入到相關(guān)隊(duì)列中
調(diào)度另外一個(gè)進(jìn)程,修改被調(diào)度進(jìn)程的PCB,并將其狀態(tài)修改為運(yùn)行
將“當(dāng)前進(jìn)程"的管理數(shù)據(jù)改為調(diào)度進(jìn)程的存儲(chǔ)數(shù)據(jù),如頁(yè)表,TLB,同時(shí)恢復(fù)新進(jìn)程的硬件上下文,讓PC執(zhí)行新進(jìn)程的代碼