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

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

圖2:一個適當的分離內核提供了等同于硬件隔離的隔離,使得它不容易受到漏洞的影響。
當運行訪問相同資源的多個操作系統時,一些實現可能會考慮保持系統分離的性能問題。例如,類型1虛擬機管理程序將需要兩次上下文切換來在接收到中斷時運行關鍵任務。第一個中斷被傳遞給管理程序,然后被處理并傳遞給客戶操作系統進行任務調度。分離內核解決方案只需要一個中斷就可以調度關鍵任務。盡管這是特定于實現的,但虛擬化在性能方面并不總是免費的,尤其是對于關鍵任務或訪問共享資源。因此,分離內核和虛擬機管理程序性能可能是重要的設計考慮因素,需要針對嵌入式系統中的特定用例進行仔細的架構設計。
為什么需要分離?
出于幾個原因,分離關注點是必要的。在此分析中,列出了三個使用案例:
安全性:隔離同一操作系統的多個實例中的特定功能,以建立對特定資源的安全訪問。
代碼重用或遺留系統:使用多個不同的操作系統來重用功能,而無需重新架構或重新實現。
混合關鍵程度:采用多個操作系統來滿足要求應用程序分離的安全或安保標準。
為了滿足這些需求,通常會考慮虛擬機管理程序解決方案。然而,分離內核方法也可以滿足這些需求,而無需借助虛擬化。對這三個不同的用例進行深入的分析,我們得到了以下結論。
保護對特定資源的訪問
如果底層操作系統的訪問控制方法足夠安全,就可以在應用程序級別實現受保護的資源訪問。探索替代的分離內核操作系統而不是虛擬化可以幫助避免潛在的陷阱。這種實現通常采用強制訪問控制策略來實現這一點,并且可以利用操作系統機制來安全地共享這種資源,例如專用外圍設備訪問。
無需重新架構或重新實施即可重用
由于超出項目控制的因素,如第三方庫或硬件限制,某些軟件無法變得安全可靠。在這種情況下,需要對軟件進行分區,以防止干擾系統其余部分的安全需求。雖然虛擬化是一種常見的解決方案,但它增加了不必要的復雜性。相反,有選擇地修改代碼并與第三方供應商合作可能更有效,尤其是當分離內核提供特定的可移植性層時。這種用例很難用分離內核來實現,但是為了使系統安全可靠,必須做出一些改變。
安全或安保標準
安全標準通常要求隔離,以避免干擾。與其引入一個完整的虛擬化層,另一個滿足安全標準目標的隔離層可能就足夠了。使用較小的安全可靠基礎符合功能安全要求。例如,Green Hills Software的INTEGRITY RTOS分離內核被用于汽車、工業和航空電子等多個領域,提供多層安全保障。
虛擬化不是強制性的
因此,分離的所有三個用例都可以在沒有虛擬化的情況下設計,重新思考軟件架構。分離內核解決方案能夠托管具有混合關鍵程度要求的應用程序,而無需虛擬機管理程序。POSIX、TCP/IP套接字和標準文件系統交互等應用程序兼容層是通過開放接口實現的。
分離內核遵循微內核架構,并通過隔離特性、實現強制設備訪問控制和為替代軟件架構提供基礎來增強它。這種方法使得設計更簡單,代碼庫更小,從而更容易確保安全性和不存在錯誤或漏洞。
此外,分離內核允許混合臨界應用共存。分離內核的原則強制執行靜態架構設計階段,與安全和安保系統中的最佳實踐保持一致。
為了實現安全的系統,軟件工程師必須采用一種專注于架構特性的思維模式,并牢記分離。應用程序和服務之間清晰且受保護的接口至關重要,重要的是要認識到服務(如庫或設備驅動程序)可以是分離內核環境中的獨立應用程序。這需要考慮替代的軟件架構路徑,以實現適當的安全隔離。
總之,嵌入式虛擬機管理程序和分離內核都可以解決安全和安保方面的分離需求。但是,完全依賴虛擬機管理程序的默認方法應該受到挑戰。從安全角度來看,考慮具有較小可信計算基礎的分離內核是明智的選擇,因為兩種方法提供的功能是相同的。在設計中優先考慮增強的安全性而不是軟件重用,這意味著用依賴于兼容層的更安全的分離內核替換遺留的或事實上的操作系統,從而實現更好的安全性和安全性設計。
審核編輯:黃飛
-
嵌入式系統
+關注
關注
41文章
3682瀏覽量
131362 -
cpu
+關注
關注
68文章
11076瀏覽量
217013 -
操作系統
+關注
關注
37文章
7144瀏覽量
125566 -
實時操作系統
+關注
關注
1文章
202瀏覽量
31331 -
虛擬機
+關注
關注
1文章
966瀏覽量
29348
發布評論請先 登錄
評論