楊朋霖 陶利民 王海濤
(北京衛(wèi)星信息工程研究所,北京 100194)
網(wǎng)絡(luò)化是衛(wèi)星應(yīng)用的重要趨勢(shì),各種依托于天地一體化網(wǎng)絡(luò)的衛(wèi)星應(yīng)用,例如空間態(tài)勢(shì)感知、戰(zhàn)場(chǎng)一體化指揮作戰(zhàn)、天地一體化車聯(lián)網(wǎng)等,將會(huì)發(fā)揮重要的軍事、民事作用[1]。然而,與這種網(wǎng)絡(luò)化所帶來的便利和優(yōu)勢(shì)相悖的是,網(wǎng)絡(luò)的開放性、隨遇接入等特性,也給各種網(wǎng)絡(luò)終端的安全帶來了威脅。面向天地一體化網(wǎng)絡(luò)的星載操作系統(tǒng),是一種嵌入式系統(tǒng),負(fù)責(zé)星務(wù)和星上數(shù)據(jù)的處理等功能。它作為重要的網(wǎng)絡(luò)基礎(chǔ)設(shè)施,將暴露在系統(tǒng)漏洞攻擊、數(shù)據(jù)泄露、網(wǎng)絡(luò)惡意流量傳播等一系列安全威脅中[2]。例如,以震網(wǎng)病毒、Flame火焰病毒、Duqu病毒為代表的嵌入式信息安全事件,通過網(wǎng)絡(luò)進(jìn)行傳播[3]。
到目前為止,星載操作系統(tǒng)架構(gòu)有指令輪詢、RTEMS、VxWorks及Linux等。為了適應(yīng)衛(wèi)星應(yīng)用的網(wǎng)絡(luò)化趨勢(shì),需要星載操作系統(tǒng)支持相應(yīng)的網(wǎng)絡(luò)協(xié)議棧進(jìn)行網(wǎng)絡(luò)通信。因此,支持網(wǎng)絡(luò)協(xié)議是星載操作系統(tǒng)在網(wǎng)絡(luò)環(huán)境下運(yùn)行的標(biāo)志。例如,美國國防部的戰(zhàn)術(shù)衛(wèi)星(TacSat)[4]、一網(wǎng)(OneWeb)公司的低軌網(wǎng)絡(luò)星座[5]、Facebook互聯(lián)網(wǎng)衛(wèi)星等,都在或者計(jì)劃在太空網(wǎng)絡(luò)環(huán)境下運(yùn)行。星載操作系統(tǒng)處于太空環(huán)境中,導(dǎo)致網(wǎng)絡(luò)傳輸時(shí)延長、誤碼率高,其支持的網(wǎng)絡(luò)協(xié)議,如國際空間數(shù)據(jù)系統(tǒng)咨詢委員會(huì)(CCSDS)網(wǎng)絡(luò)標(biāo)準(zhǔn)、延遲容忍網(wǎng)絡(luò)(DTN),與地面網(wǎng)絡(luò)環(huán)境不同。此外,網(wǎng)絡(luò)環(huán)境下的星載操作系統(tǒng)還具備以下特點(diǎn):①應(yīng)用與系統(tǒng)低耦合,例如軟件定義衛(wèi)星概念;②應(yīng)用程序長時(shí)間運(yùn)行,程序常駐內(nèi)存,以提供不間斷的網(wǎng)絡(luò)服務(wù),例如空間網(wǎng)絡(luò)路由[6];③姿態(tài)、軌道、熱控等保障衛(wèi)星在軌生存能力的實(shí)時(shí)性需求與網(wǎng)絡(luò)應(yīng)用分層次設(shè)計(jì)[4];④運(yùn)行于遠(yuǎn)程環(huán)境,只能通過無線通信與系統(tǒng)取得聯(lián)系,無法直觀確認(rèn)系統(tǒng)是否正常運(yùn)行。
目前,航天領(lǐng)域?qū)π畔踩夹g(shù)的應(yīng)用,主要集中在通信中擴(kuò)調(diào)頻信道保密、加密通信等階段。針對(duì)星載操作系統(tǒng)網(wǎng)絡(luò)信息安全的研究,尚處于起步階段。這是因?yàn)?,現(xiàn)有天基系統(tǒng)的信息化、數(shù)字化程度還不夠高,無法充分支持網(wǎng)絡(luò)通信。隨著星載操作系統(tǒng)信息化、數(shù)字化程度越來越高,必須采取一定的安全措施,防止可能出現(xiàn)的網(wǎng)絡(luò)攻擊等事件。針對(duì)網(wǎng)絡(luò)環(huán)境下星載操作系統(tǒng)的特點(diǎn),本文采用可信計(jì)算技術(shù)和插樁技術(shù)保護(hù)網(wǎng)絡(luò)環(huán)境下的星載操作系統(tǒng),提出的星載操作系統(tǒng)進(jìn)程安全監(jiān)控設(shè)計(jì)從應(yīng)用層和內(nèi)核層對(duì)進(jìn)程進(jìn)行監(jiān)控,能夠?qū)崟r(shí)監(jiān)測(cè)惡意程序的攻擊和入侵,保證星載操作系統(tǒng)運(yùn)行時(shí)的安全。
進(jìn)程安全監(jiān)控設(shè)計(jì)需要充分考慮星載操作系統(tǒng)的安全需求和自身特點(diǎn)。網(wǎng)絡(luò)環(huán)境下,星載操作系統(tǒng)的安全威脅主要來自于有網(wǎng)絡(luò)交互功能的進(jìn)程或者應(yīng)用程序。通常情況下,網(wǎng)絡(luò)攻擊者通過這些入口對(duì)整個(gè)星載操作系統(tǒng)展開攻擊[7]。普通操作系統(tǒng)的安全防護(hù)措施,例如殺毒軟件、防火墻等,由于結(jié)構(gòu)復(fù)雜、系統(tǒng)資源消耗高,不適合部署于星載操作系統(tǒng)等嵌入式系統(tǒng)中。個(gè)人電腦級(jí)的操作系統(tǒng),由于其應(yīng)用接口眾多,應(yīng)用加載、撤銷頻繁,使用插樁技術(shù)實(shí)時(shí)監(jiān)控系統(tǒng)的安全狀況帶來的性能開銷巨大,達(dá)到30%以上。而星載操作系統(tǒng)具有長時(shí)間穩(wěn)定運(yùn)行、網(wǎng)絡(luò)應(yīng)用與系統(tǒng)低耦合的特點(diǎn),使實(shí)時(shí)監(jiān)控星載操作系統(tǒng)安全狀況付出的性能代價(jià)大幅度減小。同時(shí),可信計(jì)算技術(shù)提供以硬件芯片為基礎(chǔ)的可信度量與可信計(jì)算功能,能夠?yàn)樾禽d操作系統(tǒng)提供額外的獨(dú)立計(jì)算單元。因此,本文采用可信計(jì)算芯片提供的硬件可信根,利用該芯片對(duì)構(gòu)成數(shù)字信息摘要的散列函數(shù)(HASH,又稱為哈希)的計(jì)算能力,結(jié)合動(dòng)態(tài)插樁技術(shù),實(shí)現(xiàn)星載操作系統(tǒng)在網(wǎng)絡(luò)環(huán)境下的運(yùn)行安全。
通過監(jiān)控與網(wǎng)絡(luò)相關(guān)的進(jìn)程,實(shí)現(xiàn)星載操作系統(tǒng)運(yùn)行時(shí)的安全,是安全監(jiān)控架構(gòu)的主要設(shè)計(jì)目標(biāo)。利用在內(nèi)核層中進(jìn)程創(chuàng)建、進(jìn)程調(diào)度的相關(guān)位置進(jìn)行插樁,以內(nèi)核層角度輸出并校驗(yàn)進(jìn)程相關(guān)數(shù)據(jù),保證進(jìn)程的創(chuàng)建和撤銷安全可控。同時(shí),在應(yīng)用層的角度,實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)應(yīng)用進(jìn)程的動(dòng)態(tài)插樁,輸出并校驗(yàn)程序的控制流,保證應(yīng)用程序的安全。安全監(jiān)控架構(gòu)的具體結(jié)構(gòu)如圖1所示。可信校驗(yàn)器將校驗(yàn)來自應(yīng)用層的進(jìn)程控制流數(shù)據(jù)和來自內(nèi)核層的進(jìn)程白名單數(shù)據(jù)。星載操作系統(tǒng)中所運(yùn)行的應(yīng)用以及內(nèi)核層狀態(tài)相對(duì)固定,運(yùn)行過程中內(nèi)核層和應(yīng)用層的動(dòng)態(tài)數(shù)據(jù)具有一定的規(guī)律,本文將這種數(shù)據(jù)叫作“預(yù)定義數(shù)據(jù)”。預(yù)定義數(shù)據(jù)可以作為星載操作系統(tǒng)運(yùn)行時(shí)的校驗(yàn)依據(jù),若實(shí)時(shí)獲得的內(nèi)核層和應(yīng)用層數(shù)據(jù)與預(yù)定義數(shù)據(jù)不相符,則可以斷定星載操作系統(tǒng)的運(yùn)行出現(xiàn)了異常。預(yù)定義數(shù)據(jù)由可信計(jì)算芯片保存,保證其完整性和保密性。它主要包括進(jìn)程白名單數(shù)據(jù)和程序控制流數(shù)據(jù),具體將在第2節(jié)中闡述。
內(nèi)核層的安全監(jiān)控主要關(guān)注進(jìn)程的調(diào)度、啟停等以進(jìn)程為單位的事件,實(shí)現(xiàn)星載操作系統(tǒng)進(jìn)程級(jí)的監(jiān)控。內(nèi)核層關(guān)于進(jìn)程的插樁所輸出的數(shù)據(jù),會(huì)交給可信校驗(yàn)器進(jìn)行校驗(yàn),保證星載操作系統(tǒng)內(nèi)所有運(yùn)行的進(jìn)程都是可信、安全的,或者說包含于進(jìn)程白名單中[8]。應(yīng)用層進(jìn)程內(nèi)控制流監(jiān)控,關(guān)注進(jìn)程內(nèi)程序的執(zhí)行狀況,通過動(dòng)態(tài)插樁實(shí)現(xiàn)對(duì)進(jìn)程控制流的監(jiān)控,保證程序的運(yùn)行軌跡符合預(yù)期,實(shí)時(shí)發(fā)現(xiàn)程序執(zhí)行軌跡是否被篡改。
可信校驗(yàn)器以可信計(jì)算芯片作為硬件可信根,根據(jù)預(yù)先提供的進(jìn)程白名單和進(jìn)程調(diào)度策略,為星載操作系統(tǒng)的進(jìn)程調(diào)度提供相應(yīng)的可信根和可信校驗(yàn)。同時(shí),可信校驗(yàn)器動(dòng)態(tài)校驗(yàn)程序的控制流,與預(yù)先設(shè)定的程序控制流進(jìn)行比對(duì),實(shí)現(xiàn)程序運(yùn)行時(shí)的安全??傮w來說,可信校驗(yàn)器從內(nèi)核層和應(yīng)用層兩個(gè)層次保證星載操作系統(tǒng)運(yùn)行時(shí)的安全。
星載操作系統(tǒng)對(duì)進(jìn)程數(shù)據(jù)讀取的傳統(tǒng)接口,無法達(dá)到系統(tǒng)監(jiān)控所需要的實(shí)時(shí)性,并且該類命令是經(jīng)過一定接口函數(shù)處理后的結(jié)果,容易被惡意進(jìn)程繞過,致使進(jìn)程數(shù)據(jù)讀取失敗[9]。為了在星載操作系統(tǒng)中實(shí)現(xiàn)對(duì)進(jìn)程數(shù)據(jù)的實(shí)時(shí)、可靠讀取,根據(jù)對(duì)星載操作系統(tǒng)內(nèi)核層的分析和測(cè)試,本文采用插樁技術(shù)[10]。插樁技術(shù)是指在程序中插入“探針”,由“探針”輸出程序的相關(guān)運(yùn)行數(shù)據(jù)進(jìn)而判斷程序的狀態(tài)。為達(dá)到實(shí)時(shí)監(jiān)控進(jìn)程數(shù)據(jù)的目的,本文在內(nèi)核層中選擇進(jìn)程創(chuàng)建、進(jìn)程撤銷2個(gè)插樁點(diǎn)。進(jìn)程創(chuàng)建的最終執(zhí)行函數(shù)是do_fork(),進(jìn)程撤銷的最終執(zhí)行函數(shù)是do_exit()。任何關(guān)于進(jìn)程創(chuàng)建和撤銷的函數(shù),最終都會(huì)指向這2個(gè)函數(shù)。本文在do_fork()和do_exit()函數(shù)中的copy_porocess()和profile_task_exit()處插入插樁點(diǎn),輸出進(jìn)程創(chuàng)建、撤銷的相關(guān)信息,用于可信校驗(yàn)器判斷和比對(duì)。
根據(jù)星載操作系統(tǒng)定制化、穩(wěn)定運(yùn)行的特點(diǎn),假定只有固定數(shù)量的進(jìn)程/應(yīng)用程序運(yùn)行在其中,也就是說,假定進(jìn)程在星載操作系統(tǒng)中的進(jìn)程id(pid)是相對(duì)固定的。根據(jù)內(nèi)核層所獲得的進(jìn)程信息(即pid)查找相應(yīng)的進(jìn)程控制塊數(shù)據(jù),并由可信校驗(yàn)器與進(jìn)程白名單比較,確定進(jìn)程是否可信??尚判r?yàn)器的進(jìn)程白名單中包括如圖2所示的進(jìn)程信息。
這些進(jìn)程信息精準(zhǔn)描述了進(jìn)程的身份以及相關(guān)運(yùn)行屬性。例如:代碼長度、代碼段地址限制了進(jìn)程要執(zhí)行的代碼范圍,避免從未知或非法地址加載代碼運(yùn)行。進(jìn)程id能夠確認(rèn)進(jìn)程身份,防止非法創(chuàng)建未知進(jìn)程、惡意進(jìn)程等用于木馬攻擊。在校驗(yàn)時(shí),將可信校驗(yàn)器所保管的進(jìn)程白名單數(shù)據(jù)和進(jìn)程控制塊數(shù)據(jù)進(jìn)行比較,從內(nèi)核層的角度發(fā)現(xiàn)所運(yùn)行的進(jìn)程是否被調(diào)換、篡改。
為了防止網(wǎng)絡(luò)惡意流量通過返回導(dǎo)向編程(ROP)[11]等攻擊方式繞過插樁點(diǎn)使插樁檢測(cè)失效,本文采用基于進(jìn)程虛擬機(jī)的動(dòng)態(tài)插樁技術(shù)實(shí)現(xiàn)對(duì)應(yīng)用程序的動(dòng)態(tài)插樁和監(jiān)控。動(dòng)態(tài)插樁能夠在程序運(yùn)行時(shí)實(shí)現(xiàn)“探針”的動(dòng)態(tài)插入,相較于靜態(tài)插樁,不需要預(yù)先在程序代碼中設(shè)置插樁點(diǎn),而是采用進(jìn)程虛擬機(jī)或即時(shí)編譯等技術(shù)實(shí)現(xiàn)程序相關(guān)數(shù)據(jù)運(yùn)行時(shí)的輸出。動(dòng)態(tài)插樁具有更高的靈活性,同時(shí)也使繞過插樁點(diǎn)的行為變得更困難。圖3為進(jìn)程虛擬機(jī)結(jié)構(gòu)。程序通過將可執(zhí)行代碼放入進(jìn)程虛擬機(jī)的code cache(程序的可執(zhí)行代碼存放處)中執(zhí)行,而這一過程也會(huì)觸發(fā)動(dòng)態(tài)插樁事件的發(fā)生。動(dòng)態(tài)插樁實(shí)時(shí)采集這一過程中程序bbl(basic block)之間的跳轉(zhuǎn)指令,作為控制流校驗(yàn)的目標(biāo),實(shí)現(xiàn)對(duì)程序執(zhí)行邏輯的動(dòng)態(tài)監(jiān)控。bbl是程序在內(nèi)存中順序執(zhí)行的一段指令序列,這個(gè)指令序列只有一個(gè)程序入口和出口。程序的可執(zhí)行代碼,就是由一個(gè)個(gè)bbl組成的。程序控制流是指程序bbl之間的跳轉(zhuǎn)指令,包括跳轉(zhuǎn)(jump)、返回(return)、調(diào)用(call)等,因此程序控制流能夠準(zhǔn)確表達(dá)程序的執(zhí)行邏輯和執(zhí)行路徑。
程序控制流與進(jìn)程白名單不同,進(jìn)程白名單中的數(shù)據(jù)是靜態(tài)數(shù)據(jù),即進(jìn)程id所對(duì)應(yīng)的程序控制塊數(shù)據(jù)。由于程序控制流是動(dòng)態(tài)產(chǎn)生的,應(yīng)用程序根據(jù)輸入、執(zhí)行狀態(tài)的不同會(huì)產(chǎn)生不同的控制流輸出,無法預(yù)測(cè)程序控制的走向,因此不能采用靜態(tài)方法對(duì)動(dòng)態(tài)控制流校驗(yàn)。本文設(shè)計(jì)彈性歷程鏈(ERC)結(jié)構(gòu)來實(shí)現(xiàn)對(duì)動(dòng)態(tài)控制流的動(dòng)態(tài)表達(dá)和校驗(yàn),如圖4所示。彈性歷程鏈的節(jié)點(diǎn)(ERC node)包括5個(gè)屬性,分別是節(jié)點(diǎn)名稱(node name)、前向節(jié)點(diǎn)(last node)、控制指令個(gè)數(shù)(number of control instruction)、節(jié)點(diǎn)hash值和后向節(jié)點(diǎn)(next nodes)。每個(gè)彈性歷程鏈節(jié)點(diǎn)表示一段相對(duì)完整的程序,即routine。例如,程序的初始化階段可以看作一個(gè)routine,程序的一個(gè)循環(huán)也可以看作一個(gè)routine,等等。在圖5的程序控制流圖中,節(jié)點(diǎn)1,2.1,2.2,2.3,3,4分別代表一個(gè)routine,可由彈性歷程鏈表示。彈性歷程鏈能夠表達(dá)程序控制流圖中的循環(huán)、分支等程序控制流的邏輯,能夠動(dòng)態(tài)表達(dá)程序控制流。在程序運(yùn)行時(shí),不管控制流運(yùn)行時(shí)走向如何,彈性歷程鏈都能準(zhǔn)確表達(dá)出程序的控制流,并能和預(yù)定義的程序控制流圖進(jìn)行校驗(yàn),判斷是否有非法控制流出現(xiàn)。通過這種方法,程序的動(dòng)態(tài)控制流能夠由彈性歷程鏈動(dòng)態(tài)表示,實(shí)現(xiàn)了星上程序動(dòng)態(tài)控制流的準(zhǔn)確記錄和動(dòng)態(tài)校驗(yàn)。
可信計(jì)算技術(shù)[12]由可信計(jì)算組織(Trusted Computing Group)發(fā)展而來,將可信計(jì)算芯片作為系統(tǒng)的可信根,并在此基礎(chǔ)上進(jìn)行系統(tǒng)的度量、遠(yuǎn)程驗(yàn)證等工作??尚庞?jì)算技術(shù)能夠提供以硬件為基礎(chǔ)的加密算法、保密存儲(chǔ)、遠(yuǎn)程驗(yàn)證等功能,在遠(yuǎn)程網(wǎng)絡(luò)環(huán)境下為操作系統(tǒng)提供安全與可信的保護(hù)??尚判r?yàn)器是以可信計(jì)算芯片為基礎(chǔ)的一個(gè)系統(tǒng)守護(hù)進(jìn)程。該守護(hù)進(jìn)程鏡像由可信計(jì)算芯片進(jìn)行完整性校驗(yàn)后隨著星載操作系統(tǒng)啟動(dòng)。同時(shí),可信校驗(yàn)器保存進(jìn)程白名單數(shù)據(jù)、控制流數(shù)據(jù),這兩類數(shù)據(jù)用于對(duì)進(jìn)程運(yùn)行時(shí)的可信校驗(yàn)和監(jiān)控。進(jìn)程白名單數(shù)據(jù)是靜態(tài)數(shù)據(jù),其校驗(yàn)方法簡單,只要可信校驗(yàn)器計(jì)算進(jìn)程控制塊的hash值(hash value),再與預(yù)先存儲(chǔ)的白名單數(shù)據(jù)進(jìn)行比對(duì)即可。因此,可信校驗(yàn)器需要重點(diǎn)解決進(jìn)程控制流的可信校驗(yàn),具體校驗(yàn)方法如圖6所示。
首先,控制流數(shù)據(jù)由進(jìn)程虛擬機(jī)發(fā)送到共享內(nèi)存1中,如圖6中步驟a所示。當(dāng)控制流數(shù)據(jù)充滿共享內(nèi)存1時(shí),控制流數(shù)據(jù)將跳轉(zhuǎn)到共享內(nèi)存2繼續(xù)寫入,如圖6中步驟c所示。與此同時(shí),可信校驗(yàn)器按照彈性歷程鏈格式開始對(duì)共享內(nèi)存1中控制流進(jìn)行校驗(yàn),如步驟b所示。校驗(yàn)結(jié)束后,會(huì)清空共享內(nèi)存1中的內(nèi)容,轉(zhuǎn)向共享內(nèi)存2中進(jìn)行讀取并校驗(yàn),如步驟d所示。在步驟b到步驟d的轉(zhuǎn)換過程中,需要考慮控制流碎片的問題。彈性歷程鏈節(jié)點(diǎn)的結(jié)尾很有可能與共享內(nèi)存的末尾不對(duì)齊,不完整彈性歷程鏈和完整彈性歷程鏈的hash值不同,會(huì)導(dǎo)致校驗(yàn)失敗。解決方案是在2個(gè)共享內(nèi)存中加入ERC cache(控制流緩存處),將控制流碎片放入ERC cache中,如步驟b.2和d.2所示。當(dāng)可信校驗(yàn)器完成對(duì)共享內(nèi)存1中完整ERC node的校驗(yàn)并將控制流碎片放入ERC cache時(shí),如圖6中步驟b.1和步驟d.1所示,共享內(nèi)存1會(huì)被清空,等待控制流數(shù)據(jù)的下次寫入。可信校驗(yàn)器會(huì)將共享內(nèi)存2中控制流數(shù)據(jù)附加在ERC cache之后,進(jìn)行下一輪的校驗(yàn)。通過這種以空間換時(shí)間的思想,將共享內(nèi)存1和共享內(nèi)存2中的數(shù)據(jù)無縫對(duì)接,實(shí)現(xiàn)控制流的寫入和校驗(yàn)的并發(fā),避免控制流讀寫之間的沖突。
內(nèi)核層插樁對(duì)星載操作系統(tǒng)性能的影響較小。在星載操作系統(tǒng)中,任務(wù)的創(chuàng)建和撤銷并不頻繁。只有當(dāng)系統(tǒng)重啟或者程序進(jìn)行在軌維護(hù)更新時(shí),才會(huì)進(jìn)行任務(wù)的創(chuàng)建和撤銷等操作。因此,根據(jù)進(jìn)程信息的校驗(yàn)發(fā)生次數(shù)少這一特點(diǎn),其系統(tǒng)性能開銷在進(jìn)程常駐內(nèi)存正常運(yùn)行時(shí)可以忽略不計(jì)。
在星上程序的執(zhí)行過程中,進(jìn)程虛擬機(jī)會(huì)將程序的bbl裝入code cache中,這一過程會(huì)觸發(fā)進(jìn)程虛擬機(jī)對(duì)bbl的控制語句進(jìn)行記錄。為提高進(jìn)程虛擬機(jī)的性能,code cache中會(huì)駐留執(zhí)行頻率高的routine[13]。代碼在code cache中循環(huán)執(zhí)行的過程中,不會(huì)觸發(fā)進(jìn)程虛擬機(jī)對(duì)bbl控制語句的記錄。這一特性為進(jìn)程虛擬機(jī)的高性能執(zhí)行提供了可能:若程序穩(wěn)定運(yùn)行,將極大減少動(dòng)態(tài)插樁的開銷。在星載操作系統(tǒng)中,星上所執(zhí)行的任務(wù)多為重復(fù)性任務(wù),因此,一旦進(jìn)程虛擬機(jī)將可執(zhí)行代碼全部裝入code cache,進(jìn)程動(dòng)態(tài)插樁所產(chǎn)生的系統(tǒng)性能開銷將會(huì)顯著減少。
可信計(jì)算芯片作為一個(gè)硬件芯片,具有相應(yīng)的計(jì)算能力。本文采用可信計(jì)算芯片Infineon TPM SLB9670,其HASH計(jì)算的速度為60 byte/20 μs,也就是說,能夠在20 μs之內(nèi)完成60 byte數(shù)據(jù)的HASH計(jì)算。內(nèi)核插樁數(shù)據(jù)和進(jìn)程動(dòng)態(tài)插樁數(shù)據(jù)的產(chǎn)生速率,只要小于可信計(jì)算芯片的速率,就能保證可信校驗(yàn)的整個(gè)過程不影響星載操作系統(tǒng)的性能。
在性能測(cè)試中,本文采用DTN2.9.0 release包中的apps[14]作為測(cè)試用例,模擬星載操作系統(tǒng)中的進(jìn)程。DTN2.9.0中apps包括數(shù)據(jù)接收、發(fā)送、處理等一系列DTN協(xié)議下的應(yīng)用示例。本文將apps分別運(yùn)行于具有安全功能和不具有安全功能的系統(tǒng)中,并測(cè)量系統(tǒng)處理相同數(shù)據(jù)量所消耗的時(shí)間,得出平均值。通過圖7可以看出:當(dāng)程序運(yùn)行趨于穩(wěn)定后,系統(tǒng)數(shù)據(jù)處理延遲相對(duì)于裸機(jī)系統(tǒng)(未使用安全監(jiān)控架構(gòu))為104%。因此,對(duì)于星上任務(wù)這種長時(shí)間穩(wěn)定運(yùn)行的程序來說,其性能消耗影響為4%左右,處于較低水平。
安全性分析也是可信性分析,主要目的是確保星載操作系統(tǒng)在遠(yuǎn)程環(huán)境中的安全,或者在受到惡意攻擊后依然能保證系統(tǒng)監(jiān)控結(jié)果的可信與可靠。首先,可信計(jì)算技術(shù)保證了星載操作系統(tǒng)能夠安全啟動(dòng),保證星載操作系統(tǒng)鏡像以及關(guān)鍵數(shù)據(jù)(例如進(jìn)程白名單、預(yù)設(shè)的程序控制流)不被篡改。因此,在分析安全問題時(shí),本文首先假設(shè)初始化后的星載操作系統(tǒng)是安全可信的。如果星載操作系統(tǒng)初始情況不可信,例如星載操作系統(tǒng)超級(jí)管理員權(quán)限泄露、星載操作系統(tǒng)初始狀態(tài)載入惡意程序等情況,將導(dǎo)致進(jìn)程安全監(jiān)控機(jī)制失效。
在初始安全的情況下,星載操作系統(tǒng)的安全威脅主要來自于網(wǎng)絡(luò)(物理形式的安全問題,例如空間捕獲、抓取,不在本文討論范疇)。因此,保護(hù)與網(wǎng)絡(luò)進(jìn)行信息交換的相關(guān)應(yīng)用,以及防止星載操作系統(tǒng)內(nèi)核層木馬進(jìn)程的產(chǎn)生,是保證星載操作系統(tǒng)可信的關(guān)鍵。如圖8所示,網(wǎng)絡(luò)攻擊會(huì)經(jīng)歷路徑1(1-2-3-4)或者路徑2(1-2-5)。在路徑1中,攻擊者通過網(wǎng)絡(luò)試圖感染或者篡改應(yīng)用程序。應(yīng)用程序的真正執(zhí)行是在進(jìn)程虛擬機(jī)的code cache中,當(dāng)網(wǎng)絡(luò)攻擊試圖篡改code cache時(shí),進(jìn)程虛擬機(jī)會(huì)實(shí)時(shí)記錄code cache中應(yīng)用程序的控制流異常,進(jìn)而發(fā)現(xiàn)此次網(wǎng)絡(luò)攻擊。在路徑2中,網(wǎng)絡(luò)攻擊以code cache為跳板直接攻擊星載操作系統(tǒng)內(nèi)核層,企圖在內(nèi)核層中新建后門或者木馬進(jìn)程。此時(shí),星載操作系統(tǒng)進(jìn)程白名單機(jī)制發(fā)揮作用,發(fā)現(xiàn)異常進(jìn)程,起到保護(hù)星載操作系統(tǒng)的作用。例如,以棧溢出漏洞為攻擊入口,返回導(dǎo)向編程攻擊能夠?qū)崿F(xiàn)路徑1和路徑2的攻擊行為。但是,其攻擊行為會(huì)受到安全監(jiān)控架構(gòu)的監(jiān)控,能及時(shí)被發(fā)現(xiàn)。
事實(shí)上,在2種攻擊路徑中,任何對(duì)程序控制流的篡改都會(huì)被進(jìn)程虛擬機(jī)及時(shí)發(fā)現(xiàn)??尚判r?yàn)器以共享內(nèi)存1和共享內(nèi)存2的大小為校驗(yàn)周期,共享內(nèi)存大小以程序中最大的routine為參考單位。假設(shè)惡意代碼通過在軌維護(hù)隱藏在一個(gè)合法進(jìn)程的代碼段中,并企圖攻擊內(nèi)核層,其接管進(jìn)程安全監(jiān)控架構(gòu)的方式有2種:①通過寄生在現(xiàn)有進(jìn)程中采取攻擊行為;②通過創(chuàng)建新進(jìn)程采取攻擊行為。針對(duì)方式①,實(shí)時(shí)的控制流監(jiān)控能夠發(fā)現(xiàn)程序的異常,及時(shí)發(fā)現(xiàn)攻擊行為。針對(duì)方式②,白名單機(jī)制通過進(jìn)程id、代碼段等信息的對(duì)比,發(fā)現(xiàn)不在名單之上的陌生進(jìn)程,因此能夠發(fā)現(xiàn)攻擊行為。
本文以返回導(dǎo)向編程攻擊和木馬Linux.BackDoor.Gates.5分別模擬方式①和方式②。在模擬方式①中,返回導(dǎo)向編程通過棧溢出工具試圖劫持程序控制流,會(huì)觸發(fā)可信校驗(yàn)器,導(dǎo)致攻擊失敗。在模擬方式②中,假設(shè)木馬病毒通過在軌維護(hù)被引入系統(tǒng)(在試驗(yàn)中,通過安裝包主動(dòng)安裝),木馬會(huì)篡改寄生進(jìn)程的執(zhí)行代碼,改變宿主程序的執(zhí)行路徑,會(huì)被進(jìn)程安全監(jiān)控架構(gòu)發(fā)現(xiàn)。同時(shí),木馬病毒企圖創(chuàng)建新進(jìn)程,從而執(zhí)行其竊取信息的過程,會(huì)被白名單機(jī)制發(fā)現(xiàn)。因此,通過宿主進(jìn)程企圖攻擊星載操作系統(tǒng)的方式,會(huì)被進(jìn)程安全監(jiān)控架構(gòu)發(fā)現(xiàn)。
在網(wǎng)絡(luò)環(huán)境下,開放性、智能性、網(wǎng)絡(luò)支持性將成為衛(wèi)星信息系統(tǒng)的重要屬性,這些屬性使得各異構(gòu)衛(wèi)星能夠在天地一體化網(wǎng)絡(luò)里實(shí)現(xiàn)互聯(lián)互通,以及信息的共享和分發(fā)。也正是這種屬性,使原本處于封閉狀態(tài)的星載操作系統(tǒng)面臨基于網(wǎng)絡(luò)的干擾和攻擊。尤其是當(dāng)衛(wèi)星處于太空這種遠(yuǎn)程環(huán)境時(shí),更要保證星載操作系統(tǒng)的安全。本文應(yīng)用可信計(jì)算技術(shù)和插樁技術(shù),設(shè)計(jì)星載操作系統(tǒng)進(jìn)程安全監(jiān)控架構(gòu),以硬件可信根為基礎(chǔ),通過動(dòng)態(tài)插樁對(duì)星載操作系統(tǒng)的進(jìn)程進(jìn)行安全監(jiān)控,可實(shí)現(xiàn)星載操作系統(tǒng)的運(yùn)行安全。在性能開銷方面,可信計(jì)算芯片具有一定的計(jì)算性能,能夠使性能開銷保持在較低水平。在面向未來網(wǎng)絡(luò)的星載操作系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)中,本文設(shè)計(jì)簡潔有效,具有一定的參考性和可行性。后續(xù),將在深入評(píng)測(cè)對(duì)各種攻擊的覆蓋率方面開展進(jìn)一步的研究工作。
參考文獻(xiàn)(References)
[1] 王海濤,韓治剛,傅俊明.發(fā)展天地一體化信息技術(shù)[J].衛(wèi)星應(yīng)用,2014(1):30-34
Wang Haitao, Han Zhigang, Fu Junming. Develop space-ground integrated information technology [J]. Satellite Application, 2014(1): 30-34 (in Chinese)
[2] 戴維·克勒德馬赫.嵌入式系統(tǒng)安全:安全與可信軟件開發(fā)實(shí)戰(zhàn)方法[M].周慶國,姚琪,劉洋,等譯.北京:機(jī)械工業(yè)出版社,2015:30-31
David K. Embedded systems security: practical methods for safe and secure software and systems developments [M]. Zhou Qingguo, Yao Qi, Liu Yang, et al, translated. Beijing: China Machine Press, 2015: 30-31 (in Chinese)
[3] Langner R. Stuxnet: dissecting a cyber warfare weapon [J]. IEEE Security & Privacy, 2011, 9(3): 49-51
[4] Elmasri M H, Megahed M H, Elazeem M H A. Design and software implementation of new high performance group key management algorithm for tactical satellite [C]//Proceedings of the 33rd National Radio Science Conference (NRSC). New York:IEEE, 2016: 149-158
[5] Buchen E. Small satellite market observations [C]//Proceedings of the AIAA/USU Conference on Small Satellites, 2015. Washington D.C.: AIAA, 2015: 7-12
[6] Florio M A, Fisher S J, Mittal S, et al. Internet routing in space: prospects and challenges of the IRIS JCTD[C]//Proceedings of Military Communications Confe-rence 2007 on IEEE. New York:IEEE, 2007: 1-6
[7] Papp D, Ma Z, Buttyan L. Embedded systems security: threats, vulnerabilities, and attack taxonomy [C]//Proceedings of the 13th Annual Conference on Privacy, Security and Trust (PST). New York: IEEE, 2015: 145-152
[8] Zhao B, Zhang H, Guo H, et al. White list security management mechanism based on trusted computing technology [C]//Proceedings of International Symposium on Computers and Informatics (ISCI), 2015. New York: IEEE, 2015: 1369-1377
[9] 王全民,胡大海,許殊瑋,等.基于Linux內(nèi)核2.6的進(jìn)程攔截機(jī)制的研究和實(shí)現(xiàn)[J].科技與創(chuàng)新,2012(9):13-15
Wang Quanmin, Hu Dahai, Xu Shuwei, et al. Research and realization of process interception on Linux 2.6.32[J]. Science and Technology & Innovation,2012(9):13-15 (in Chinese)
[10] Cantrill B, Shapiro M W, Leventhal A H. Dynamic instrumentation of production systems[C]// Proceed-ings of 2004 USENIX Annual Technical Conference. Berkeley:USENIX, 2004: 15-28
[11] Lee J, Jang J, Jang Y, et al. Hacking in darkness: return-oriented programming against secure enclaves [C]//Proceedings of the 26th USENIX Security Symposium on USENIX Security. Berkeley: USENIX, 2017: 523-539
[12] Pearson S. Trusted computing platforms: TCPA technology in context [M]. Upper Saddle River, New Jersey: Prentice Hall PTR, 2003: 206-208
[13] Ragel R G, Parameswaran S. IMPRES: integrated monitoring for processor reliability and security [C]//Proceedings of the 43rd Annual Design Automation Conference, ACM/IEEE. New York: IEEE,2006: 502-505
[14] Delay-Tolerant Networking Research Group. DTN2 [EB/OL]. [2017-07-24]. https://sourceforge.net/projects/dtn/files/DTN2/2.9.0.tgz