眾所周知,使用軟件分區(qū),即在單獨的環(huán)境中運行應(yīng)用程序,有助于滿足安全和保密要求。很多時候,虛擬機管理程序被視為最佳和/或唯一的解決方案,然而,事實并非如此。虛擬機管理程序本身會帶來額外的風險和漏洞。因此,本文提供了一種不同的方法:分離內(nèi)核。
嵌入式虛擬機管理程序支持多個操作系統(tǒng)在同一硬件平臺上運行,最大限度地提高硬件性能,同時確保獨立性。這些嵌入式虛擬化解決方案有時會帶來安全需求,而分離關(guān)注點對于滿足這些需求至關(guān)重要。但是,依賴虛擬機管理程序會引發(fā)信任問題,并且在涉及安全和安保標準(如ISO 26262或ISO 21434)時會帶來額外的限制。
虛擬機管理程序的替代方案是在實時操作系統(tǒng)中實現(xiàn)分離內(nèi)核。這種方法允許在單個操作系統(tǒng)中分離關(guān)注點,保證應(yīng)用程序級的分離,而不是操作系統(tǒng)級的分離。讓我們稍微深入地研究一下這些技術(shù)。
嵌入式系統(tǒng)管理程序:管理者的管理者
嵌入式管理程序是一種軟件,它使多個操作系統(tǒng)能夠在資源受限的設(shè)備的單個處理器上運行,從而共享資源。虛擬機管理程序充當操作系統(tǒng)的操作系統(tǒng),允許操作系統(tǒng)根據(jù)預(yù)定義的方案共享CPU、內(nèi)存和外設(shè)資源。也就是說,管理者的管理者,因此得名hypervisor。虛擬機管理程序可以是動態(tài)的,具有靈活的CPU數(shù)量和內(nèi)存使用,也可以是靜態(tài)的,具有固定的CPU邊界和內(nèi)存分配。外圍設(shè)備驅(qū)動程序可以是專用的,也可以在不同的操作系統(tǒng)之間共享。圖1展示了用于分離的典型虛擬機管理程序架構(gòu)。

圖1:用于分離的典型虛擬機管理程序架構(gòu)。
在軟件架構(gòu)中引入虛擬機管理程序以實現(xiàn)分離并非沒有挑戰(zhàn),因為這會增加復雜性。虛擬機管理程序需要進行內(nèi)存分離和保護,以及不同工作負載的調(diào)度。它還需要管理虛擬化客戶操作系統(tǒng)的特權(quán)級別,同時平衡對硬件資源的訪問。因此,管理程序成為系統(tǒng)中最有特權(quán)的軟件。
這套復雜的軟件將代碼添加到系統(tǒng)最關(guān)鍵的部分,運行在硬件的最高特權(quán)級別。因此,虛擬機管理程序的實施需要安全可靠,否則為增強安全性而添加虛擬機管理程序?qū)o法實現(xiàn)。因此,將具有大量代碼庫的管理程序添加到系統(tǒng)最敏感的部分,會增加添加漏洞的風險。例如,查看一個常見的開源虛擬機管理程序Xen和在國家漏洞數(shù)據(jù)庫中找到的漏洞列表,可以發(fā)現(xiàn)數(shù)百個漏洞。當試圖通過虛擬化來提高系統(tǒng)的安全性時,這不是一個非常值得信賴的虛擬機管理程序。
軟件分離內(nèi)核:隔離單個物理系統(tǒng)上的域
約翰·拉什比在1981年的一篇論文中提出的軟件分離內(nèi)核,旨在創(chuàng)建一個類似于物理分布式系統(tǒng)的環(huán)境。它確保每個應(yīng)用程序域看起來像一個單獨的、隔離的機器,只允許信息沿著已知的外部通信線路流動。內(nèi)核通過在單個物理系統(tǒng)上創(chuàng)建隔離的域或分區(qū)來提供高級別的安全性。它嚴格分隔這些分區(qū),防止一個分區(qū)中的軟件影響另一個分區(qū)中的軟件。這可以保護整個系統(tǒng)免受惡意軟件和未經(jīng)授權(quán)的訪問。
基于微內(nèi)核架構(gòu),分離內(nèi)核提供最少的服務(wù),并依賴單獨的服務(wù)來獲得額外的功能。這種設(shè)計減少了內(nèi)核的攻擊面,增強了它對危害的恢復能力。一個適當?shù)姆蛛x內(nèi)核提供了等同于硬件隔離的隔離,使其更不容易受到攻擊。一些分離內(nèi)核,如L4微內(nèi)核,已經(jīng)過正式驗證,以確保正確操作。也有商業(yè)上可獲得的分離內(nèi)核,例如來自Green Hills Software的INTEGRITY實時操作系統(tǒng)。在分離內(nèi)核實時操作系統(tǒng)環(huán)境中,應(yīng)用程序級分離如圖2所示。

圖2:一個適當?shù)姆蛛x內(nèi)核提供了等同于硬件隔離的隔離,使得它不容易受到漏洞的影響。
當運行訪問相同資源的多個操作系統(tǒng)時,一些實現(xiàn)可能會考慮保持系統(tǒng)分離的性能問題。例如,類型1虛擬機管理程序?qū)⑿枰獌纱紊舷挛那袚Q來在接收到中斷時運行關(guān)鍵任務(wù)。第一個中斷被傳遞給管理程序,然后被處理并傳遞給客戶操作系統(tǒng)進行任務(wù)調(diào)度。分離內(nèi)核解決方案只需要一個中斷就可以調(diào)度關(guān)鍵任務(wù)。盡管這是特定于實現(xiàn)的,但虛擬化在性能方面并不總是免費的,尤其是對于關(guān)鍵任務(wù)或訪問共享資源。因此,分離內(nèi)核和虛擬機管理程序性能可能是重要的設(shè)計考慮因素,需要針對嵌入式系統(tǒng)中的特定用例進行仔細的架構(gòu)設(shè)計。
為什么需要分離?
出于幾個原因,分離關(guān)注點是必要的。在此分析中,列出了三個使用案例:
安全性:隔離同一操作系統(tǒng)的多個實例中的特定功能,以建立對特定資源的安全訪問。
代碼重用或遺留系統(tǒng):使用多個不同的操作系統(tǒng)來重用功能,而無需重新架構(gòu)或重新實現(xiàn)。
混合關(guān)鍵程度:采用多個操作系統(tǒng)來滿足要求應(yīng)用程序分離的安全或安保標準。
為了滿足這些需求,通常會考慮虛擬機管理程序解決方案。然而,分離內(nèi)核方法也可以滿足這些需求,而無需借助虛擬化。對這三個不同的用例進行深入的分析,我們得到了以下結(jié)論。
保護對特定資源的訪問
如果底層操作系統(tǒng)的訪問控制方法足夠安全,就可以在應(yīng)用程序級別實現(xiàn)受保護的資源訪問。探索替代的分離內(nèi)核操作系統(tǒng)而不是虛擬化可以幫助避免潛在的陷阱。這種實現(xiàn)通常采用強制訪問控制策略來實現(xiàn)這一點,并且可以利用操作系統(tǒng)機制來安全地共享這種資源,例如專用外圍設(shè)備訪問。
無需重新架構(gòu)或重新實施即可重用
由于超出項目控制的因素,如第三方庫或硬件限制,某些軟件無法變得安全可靠。在這種情況下,需要對軟件進行分區(qū),以防止干擾系統(tǒng)其余部分的安全需求。雖然虛擬化是一種常見的解決方案,但它增加了不必要的復雜性。相反,有選擇地修改代碼并與第三方供應(yīng)商合作可能更有效,尤其是當分離內(nèi)核提供特定的可移植性層時。這種用例很難用分離內(nèi)核來實現(xiàn),但是為了使系統(tǒng)安全可靠,必須做出一些改變。
安全或安保標準
安全標準通常要求隔離,以避免干擾。與其引入一個完整的虛擬化層,另一個滿足安全標準目標的隔離層可能就足夠了。使用較小的安全可靠基礎(chǔ)符合功能安全要求。例如,Green Hills Software的INTEGRITY RTOS分離內(nèi)核被用于汽車、工業(yè)和航空電子等多個領(lǐng)域,提供多層安全保障。
虛擬化不是強制性的
因此,分離的所有三個用例都可以在沒有虛擬化的情況下設(shè)計,重新思考軟件架構(gòu)。分離內(nèi)核解決方案能夠托管具有混合關(guān)鍵程度要求的應(yīng)用程序,而無需虛擬機管理程序。POSIX、TCP/IP套接字和標準文件系統(tǒng)交互等應(yīng)用程序兼容層是通過開放接口實現(xiàn)的。
分離內(nèi)核遵循微內(nèi)核架構(gòu),并通過隔離特性、實現(xiàn)強制設(shè)備訪問控制和為替代軟件架構(gòu)提供基礎(chǔ)來增強它。這種方法使得設(shè)計更簡單,代碼庫更小,從而更容易確保安全性和不存在錯誤或漏洞。
此外,分離內(nèi)核允許混合臨界應(yīng)用共存。分離內(nèi)核的原則強制執(zhí)行靜態(tài)架構(gòu)設(shè)計階段,與安全和安保系統(tǒng)中的最佳實踐保持一致。
為了實現(xiàn)安全的系統(tǒng),軟件工程師必須采用一種專注于架構(gòu)特性的思維模式,并牢記分離。應(yīng)用程序和服務(wù)之間清晰且受保護的接口至關(guān)重要,重要的是要認識到服務(wù)(如庫或設(shè)備驅(qū)動程序)可以是分離內(nèi)核環(huán)境中的獨立應(yīng)用程序。這需要考慮替代的軟件架構(gòu)路徑,以實現(xiàn)適當?shù)陌踩綦x。
總之,嵌入式虛擬機管理程序和分離內(nèi)核都可以解決安全和安保方面的分離需求。但是,完全依賴虛擬機管理程序的默認方法應(yīng)該受到挑戰(zhàn)。從安全角度來看,考慮具有較小可信計算基礎(chǔ)的分離內(nèi)核是明智的選擇,因為兩種方法提供的功能是相同的。在設(shè)計中優(yōu)先考慮增強的安全性而不是軟件重用,這意味著用依賴于兼容層的更安全的分離內(nèi)核替換遺留的或事實上的操作系統(tǒng),從而實現(xiàn)更好的安全性和安全性設(shè)計。
審核編輯:黃飛
-
嵌入式系統(tǒng)
+關(guān)注
關(guān)注
41文章
3683瀏覽量
131442 -
cpu
+關(guān)注
關(guān)注
68文章
11083瀏覽量
217179 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
7154瀏覽量
125646 -
實時操作系統(tǒng)
+關(guān)注
關(guān)注
1文章
202瀏覽量
31346 -
虛擬機
+關(guān)注
關(guān)注
1文章
966瀏覽量
29382
發(fā)布評論請先 登錄
Linux 5.15.52_2.1.0 (Yocto) 是否支持Xen虛擬機管理程序?
管理程序選擇
VM虛擬機管理程序上的NVIDIA GRID vGPU有適當?shù)臏y試計劃來協(xié)助測試嗎?
使用VMware給虛擬機安裝linux系統(tǒng)
容器的優(yōu)勢是什么?和虛擬機有什么不一樣?
VMware軟件虛擬機和PLC通訊的連接方法
虛擬機和容器共存時會給混合云帶來什么影響
使用虛擬平臺維護安全性

汽車開源虛擬化:AGL 虛擬化架構(gòu)

評論