眾所周知,使用軟件分區(qū),即在單獨(dú)的環(huán)境中運(yùn)行應(yīng)用程序,有助于滿足安全和保密要求。很多時(shí)候,虛擬機(jī)管理程序被視為最佳和/或唯一的解決方案,然而,事實(shí)并非如此。虛擬機(jī)管理程序本身會(huì)帶來(lái)額外的風(fēng)險(xiǎn)和漏洞。因此,本文提供了一種不同的方法:分離內(nèi)核。
嵌入式虛擬機(jī)管理程序支持多個(gè)操作系統(tǒng)在同一硬件平臺(tái)上運(yùn)行,最大限度地提高硬件性能,同時(shí)確保獨(dú)立性。這些嵌入式虛擬化解決方案有時(shí)會(huì)帶來(lái)安全需求,而分離關(guān)注點(diǎn)對(duì)于滿足這些需求至關(guān)重要。但是,依賴(lài)虛擬機(jī)管理程序會(huì)引發(fā)信任問(wèn)題,并且在涉及安全和安保標(biāo)準(zhǔn)(如ISO 26262或ISO 21434)時(shí)會(huì)帶來(lái)額外的限制。
虛擬機(jī)管理程序的替代方案是在實(shí)時(shí)操作系統(tǒng)中實(shí)現(xiàn)分離內(nèi)核。這種方法允許在單個(gè)操作系統(tǒng)中分離關(guān)注點(diǎn),保證應(yīng)用程序級(jí)的分離,而不是操作系統(tǒng)級(jí)的分離。讓我們稍微深入地研究一下這些技術(shù)。
嵌入式系統(tǒng)管理程序:管理者的管理者
嵌入式管理程序是一種軟件,它使多個(gè)操作系統(tǒng)能夠在資源受限的設(shè)備的單個(gè)處理器上運(yùn)行,從而共享資源。虛擬機(jī)管理程序充當(dāng)操作系統(tǒng)的操作系統(tǒng),允許操作系統(tǒng)根據(jù)預(yù)定義的方案共享CPU、內(nèi)存和外設(shè)資源。也就是說(shuō),管理者的管理者,因此得名hypervisor。虛擬機(jī)管理程序可以是動(dòng)態(tài)的,具有靈活的CPU數(shù)量和內(nèi)存使用,也可以是靜態(tài)的,具有固定的CPU邊界和內(nèi)存分配。外圍設(shè)備驅(qū)動(dòng)程序可以是專(zhuān)用的,也可以在不同的操作系統(tǒng)之間共享。圖1展示了用于分離的典型虛擬機(jī)管理程序架構(gòu)。
圖1:用于分離的典型虛擬機(jī)管理程序架構(gòu)。
在軟件架構(gòu)中引入虛擬機(jī)管理程序以實(shí)現(xiàn)分離并非沒(méi)有挑戰(zhàn),因?yàn)檫@會(huì)增加復(fù)雜性。虛擬機(jī)管理程序需要進(jìn)行內(nèi)存分離和保護(hù),以及不同工作負(fù)載的調(diào)度。它還需要管理虛擬化客戶操作系統(tǒng)的特權(quán)級(jí)別,同時(shí)平衡對(duì)硬件資源的訪問(wèn)。因此,管理程序成為系統(tǒng)中最有特權(quán)的軟件。
這套復(fù)雜的軟件將代碼添加到系統(tǒng)最關(guān)鍵的部分,運(yùn)行在硬件的最高特權(quán)級(jí)別。因此,虛擬機(jī)管理程序的實(shí)施需要安全可靠,否則為增強(qiáng)安全性而添加虛擬機(jī)管理程序?qū)o(wú)法實(shí)現(xiàn)。因此,將具有大量代碼庫(kù)的管理程序添加到系統(tǒng)最敏感的部分,會(huì)增加添加漏洞的風(fēng)險(xiǎn)。例如,查看一個(gè)常見(jiàn)的開(kāi)源虛擬機(jī)管理程序Xen和在國(guó)家漏洞數(shù)據(jù)庫(kù)中找到的漏洞列表,可以發(fā)現(xiàn)數(shù)百個(gè)漏洞。當(dāng)試圖通過(guò)虛擬化來(lái)提高系統(tǒng)的安全性時(shí),這不是一個(gè)非常值得信賴(lài)的虛擬機(jī)管理程序。
軟件分離內(nèi)核:隔離單個(gè)物理系統(tǒng)上的域
約翰·拉什比在1981年的一篇論文中提出的軟件分離內(nèi)核,旨在創(chuàng)建一個(gè)類(lèi)似于物理分布式系統(tǒng)的環(huán)境。它確保每個(gè)應(yīng)用程序域看起來(lái)像一個(gè)單獨(dú)的、隔離的機(jī)器,只允許信息沿著已知的外部通信線路流動(dòng)。內(nèi)核通過(guò)在單個(gè)物理系統(tǒng)上創(chuàng)建隔離的域或分區(qū)來(lái)提供高級(jí)別的安全性。它嚴(yán)格分隔這些分區(qū),防止一個(gè)分區(qū)中的軟件影響另一個(gè)分區(qū)中的軟件。這可以保護(hù)整個(gè)系統(tǒng)免受惡意軟件和未經(jīng)授權(quán)的訪問(wèn)。
基于微內(nèi)核架構(gòu),分離內(nèi)核提供最少的服務(wù),并依賴(lài)單獨(dú)的服務(wù)來(lái)獲得額外的功能。這種設(shè)計(jì)減少了內(nèi)核的攻擊面,增強(qiáng)了它對(duì)危害的恢復(fù)能力。一個(gè)適當(dāng)?shù)姆蛛x內(nèi)核提供了等同于硬件隔離的隔離,使其更不容易受到攻擊。一些分離內(nèi)核,如L4微內(nèi)核,已經(jīng)過(guò)正式驗(yàn)證,以確保正確操作。也有商業(yè)上可獲得的分離內(nèi)核,例如來(lái)自Green Hills Software的INTEGRITY實(shí)時(shí)操作系統(tǒng)。在分離內(nèi)核實(shí)時(shí)操作系統(tǒng)環(huán)境中,應(yīng)用程序級(jí)分離如圖2所示。
圖2:一個(gè)適當(dāng)?shù)姆蛛x內(nèi)核提供了等同于硬件隔離的隔離,使得它不容易受到漏洞的影響。
當(dāng)運(yùn)行訪問(wèn)相同資源的多個(gè)操作系統(tǒng)時(shí),一些實(shí)現(xiàn)可能會(huì)考慮保持系統(tǒng)分離的性能問(wèn)題。例如,類(lèi)型1虛擬機(jī)管理程序?qū)⑿枰獌纱紊舷挛那袚Q來(lái)在接收到中斷時(shí)運(yùn)行關(guān)鍵任務(wù)。第一個(gè)中斷被傳遞給管理程序,然后被處理并傳遞給客戶操作系統(tǒng)進(jìn)行任務(wù)調(diào)度。分離內(nèi)核解決方案只需要一個(gè)中斷就可以調(diào)度關(guān)鍵任務(wù)。盡管這是特定于實(shí)現(xiàn)的,但虛擬化在性能方面并不總是免費(fèi)的,尤其是對(duì)于關(guān)鍵任務(wù)或訪問(wèn)共享資源。因此,分離內(nèi)核和虛擬機(jī)管理程序性能可能是重要的設(shè)計(jì)考慮因素,需要針對(duì)嵌入式系統(tǒng)中的特定用例進(jìn)行仔細(xì)的架構(gòu)設(shè)計(jì)。
為什么需要分離?
出于幾個(gè)原因,分離關(guān)注點(diǎn)是必要的。在此分析中,列出了三個(gè)使用案例:
安全性:隔離同一操作系統(tǒng)的多個(gè)實(shí)例中的特定功能,以建立對(duì)特定資源的安全訪問(wèn)。
代碼重用或遺留系統(tǒng):使用多個(gè)不同的操作系統(tǒng)來(lái)重用功能,而無(wú)需重新架構(gòu)或重新實(shí)現(xiàn)。
混合關(guān)鍵程度:采用多個(gè)操作系統(tǒng)來(lái)滿足要求應(yīng)用程序分離的安全或安保標(biāo)準(zhǔn)。
為了滿足這些需求,通常會(huì)考慮虛擬機(jī)管理程序解決方案。然而,分離內(nèi)核方法也可以滿足這些需求,而無(wú)需借助虛擬化。對(duì)這三個(gè)不同的用例進(jìn)行深入的分析,我們得到了以下結(jié)論。
保護(hù)對(duì)特定資源的訪問(wèn)
如果底層操作系統(tǒng)的訪問(wèn)控制方法足夠安全,就可以在應(yīng)用程序級(jí)別實(shí)現(xiàn)受保護(hù)的資源訪問(wèn)。探索替代的分離內(nèi)核操作系統(tǒng)而不是虛擬化可以幫助避免潛在的陷阱。這種實(shí)現(xiàn)通常采用強(qiáng)制訪問(wèn)控制策略來(lái)實(shí)現(xiàn)這一點(diǎn),并且可以利用操作系統(tǒng)機(jī)制來(lái)安全地共享這種資源,例如專(zhuān)用外圍設(shè)備訪問(wèn)。
無(wú)需重新架構(gòu)或重新實(shí)施即可重用
由于超出項(xiàng)目控制的因素,如第三方庫(kù)或硬件限制,某些軟件無(wú)法變得安全可靠。在這種情況下,需要對(duì)軟件進(jìn)行分區(qū),以防止干擾系統(tǒng)其余部分的安全需求。雖然虛擬化是一種常見(jiàn)的解決方案,但它增加了不必要的復(fù)雜性。相反,有選擇地修改代碼并與第三方供應(yīng)商合作可能更有效,尤其是當(dāng)分離內(nèi)核提供特定的可移植性層時(shí)。這種用例很難用分離內(nèi)核來(lái)實(shí)現(xiàn),但是為了使系統(tǒng)安全可靠,必須做出一些改變。
安全或安保標(biāo)準(zhǔn)
安全標(biāo)準(zhǔn)通常要求隔離,以避免干擾。與其引入一個(gè)完整的虛擬化層,另一個(gè)滿足安全標(biāo)準(zhǔn)目標(biāo)的隔離層可能就足夠了。使用較小的安全可靠基礎(chǔ)符合功能安全要求。例如,Green Hills Software的INTEGRITY RTOS分離內(nèi)核被用于汽車(chē)、工業(yè)和航空電子等多個(gè)領(lǐng)域,提供多層安全保障。
虛擬化不是強(qiáng)制性的
因此,分離的所有三個(gè)用例都可以在沒(méi)有虛擬化的情況下設(shè)計(jì),重新思考軟件架構(gòu)。分離內(nèi)核解決方案能夠托管具有混合關(guān)鍵程度要求的應(yīng)用程序,而無(wú)需虛擬機(jī)管理程序。POSIX、TCP/IP套接字和標(biāo)準(zhǔn)文件系統(tǒng)交互等應(yīng)用程序兼容層是通過(guò)開(kāi)放接口實(shí)現(xiàn)的。
分離內(nèi)核遵循微內(nèi)核架構(gòu),并通過(guò)隔離特性、實(shí)現(xiàn)強(qiáng)制設(shè)備訪問(wèn)控制和為替代軟件架構(gòu)提供基礎(chǔ)來(lái)增強(qiáng)它。這種方法使得設(shè)計(jì)更簡(jiǎn)單,代碼庫(kù)更小,從而更容易確保安全性和不存在錯(cuò)誤或漏洞。
此外,分離內(nèi)核允許混合臨界應(yīng)用共存。分離內(nèi)核的原則強(qiáng)制執(zhí)行靜態(tài)架構(gòu)設(shè)計(jì)階段,與安全和安保系統(tǒng)中的最佳實(shí)踐保持一致。
為了實(shí)現(xiàn)安全的系統(tǒng),軟件工程師必須采用一種專(zhuān)注于架構(gòu)特性的思維模式,并牢記分離。應(yīng)用程序和服務(wù)之間清晰且受保護(hù)的接口至關(guān)重要,重要的是要認(rèn)識(shí)到服務(wù)(如庫(kù)或設(shè)備驅(qū)動(dòng)程序)可以是分離內(nèi)核環(huán)境中的獨(dú)立應(yīng)用程序。這需要考慮替代的軟件架構(gòu)路徑,以實(shí)現(xiàn)適當(dāng)?shù)陌踩綦x。
總之,嵌入式虛擬機(jī)管理程序和分離內(nèi)核都可以解決安全和安保方面的分離需求。但是,完全依賴(lài)虛擬機(jī)管理程序的默認(rèn)方法應(yīng)該受到挑戰(zhàn)。從安全角度來(lái)看,考慮具有較小可信計(jì)算基礎(chǔ)的分離內(nèi)核是明智的選擇,因?yàn)閮煞N方法提供的功能是相同的。在設(shè)計(jì)中優(yōu)先考慮增強(qiáng)的安全性而不是軟件重用,這意味著用依賴(lài)于兼容層的更安全的分離內(nèi)核替換遺留的或事實(shí)上的操作系統(tǒng),從而實(shí)現(xiàn)更好的安全性和安全性設(shè)計(jì)。
審核編輯:黃飛
-
嵌入式系統(tǒng)
+關(guān)注
關(guān)注
41文章
3629瀏覽量
129791 -
cpu
+關(guān)注
關(guān)注
68文章
10911瀏覽量
213141 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6900瀏覽量
123806 -
實(shí)時(shí)操作系統(tǒng)
+關(guān)注
關(guān)注
1文章
199瀏覽量
30838 -
虛擬機(jī)
+關(guān)注
關(guān)注
1文章
949瀏覽量
28465
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論