許多嵌入式系統(tǒng)已經(jīng)采用系統(tǒng)虛擬化,通過使用虛擬機(VM)將虛擬和物理系統(tǒng)分離。關(guān)鍵任務(wù)嵌入式系統(tǒng)中的虛擬化可以使用類似于企業(yè)系統(tǒng)使用的技術(shù)來實現(xiàn),但嵌入式虛擬化的不同用例為與嵌入式系統(tǒng)的優(yōu)先級更緊密地一致的其他解決方案打開了大門。
自 2000 年代初以來,虛擬化已廣泛部署在企業(yè)服務(wù)器中。服務(wù)器虛擬化的最初驅(qū)動力是關(guān)于服務(wù)器整合的,它將運行不同應(yīng)用程序的多個未充分利用的服務(wù)器的服務(wù)合并到一臺計算機上。減少服務(wù)器數(shù)量節(jié)省了資本和運營成本。這種整合需要工作負載隔離,將應(yīng)用程序彼此分開,并將系統(tǒng)的其余部分分開,從而提供某種程度的安全性和應(yīng)用程序自主性。由于虛擬機 (VM) 將應(yīng)用程序與其所依賴的操作系統(tǒng)配對,因此虛擬化還允許將 VM 從一臺服務(wù)器遷移到另一臺服務(wù)器,從而在各種任務(wù)關(guān)鍵型軍事應(yīng)用程序中實現(xiàn)高可用性、負載平衡和額外的節(jié)能。
服務(wù)器虛擬化的輔助驅(qū)動器是運行為不同操作系統(tǒng) (OS) 或不同版本的操作系統(tǒng)設(shè)計的應(yīng)用程序的能力。例如,運行Linux的工程工作站通常也運行Microsoft Windows以與業(yè)務(wù)應(yīng)用程序進行交互。這對于支持遺留系統(tǒng)特別有用,例如從大型機遷移到服務(wù)器時。
嵌入式虛擬化用例
嵌入式虛擬化與企業(yè)用例有很多重疊,但具有不同的優(yōu)先級和附加要求。嵌入式虛擬化的主要用例是支持異構(gòu)操作系統(tǒng)和提高安全性。次要用例可能包括工作負載整合、軟件許可證隔離以及促進向多核處理器的遷移。支持異構(gòu)操作系統(tǒng)的常見驅(qū)動因素是需要為某些應(yīng)用程序支持通用操作系統(tǒng),例如 Linux 和 Windows,而關(guān)鍵和受信任的應(yīng)用程序在實時操作系統(tǒng) (RTOS) 上運行。在具有混合關(guān)鍵性的系統(tǒng)中,提高安全性尤為重要,以便將不太重要的應(yīng)用程序與具有更關(guān)鍵的實時、安全或安保要求的應(yīng)用程序隔離開來。
在評估安全解決方案時,一個關(guān)鍵概念是受信任計算基礎(chǔ) (TCB) 的大小,該計算基礎(chǔ)由實施安全策略的硬件、軟件和控制組成??傮w目標是最小化 TCB 的大小和接口的數(shù)量,以便更容易地進行驗證。TCB 和接口數(shù)越大,攻擊面就越大。最小化 TCB 需要將許多非關(guān)鍵服務(wù)移出 TCB,這反過來又需要能夠隔離這些服務(wù),并在受信任和不受信任的組件之間提供安全通信。請注意,最小化 TCB 不是最終目標,而只是簡化驗證的一種手段。對于需要高安全性的系統(tǒng),最終目標是根據(jù)適用的安全保證要求進行認證。
與服務(wù)器虛擬化中的虛擬機不同,嵌入式系統(tǒng)中的應(yīng)用程序通常是高度集成的,需要協(xié)作。隨后,解決方案的一部分需要包括可預(yù)測的低延遲、高帶寬通信路徑,其權(quán)限由安全 TCB 強制執(zhí)行。特別是對于嵌入式實時系統(tǒng),滿足異構(gòu)操作系統(tǒng)的虛擬化目標和提高安全性不能以犧牲系統(tǒng)的確定性或大大增加的延遲為代價。對于安全關(guān)鍵系統(tǒng)來說,情況更是如此。維護確定性對任何虛擬化解決方案來說都是一個挑戰(zhàn),因為高效的虛擬化實現(xiàn)通常使用啟發(fā)式方法來識別不同操作系統(tǒng)和給定操作系統(tǒng)的不同版本的代碼序列的變化。
虛擬化的硬件支持
眾所周知,x86 處理器的早期虛擬化性能低下,因為缺乏對虛擬化的硬件支持,包括虛擬化內(nèi)存管理單元 (MMU) 和輸入/輸出內(nèi)存管理單元 (IOMMU)?,F(xiàn)代處理器為硬件輔助虛擬化提供支持。一個例子是英特爾 VT-x 和 VT-d。
英特爾 VT-x 提供了進入和退出虛擬執(zhí)行模式的說明,在該模式下,訪客操作系統(tǒng)將自己視為以完全權(quán)限運行,而主機操作系統(tǒng)仍受到保護。內(nèi)存虛擬化實際上需要兩個級別的虛擬化。首先,來賓操作系統(tǒng)將從物理地址空間到虛擬地址空間的映射存儲在頁表中。該來賓操作系統(tǒng)無法直接訪問物理內(nèi)存,因此虛擬機監(jiān)視器 (VMM) 需要提供這些頁表的虛擬化。對于英特爾處理器,頁表虛擬化的加速稱為擴展頁表 (EPT)。
面向定向 I/O 的英特爾虛擬化技術(shù)(英特爾 VT-d)為重新映射直接內(nèi)存訪問 (DMA) 傳輸和設(shè)備生成的中斷提供了硬件輔助。IOMMU 跟蹤哪些物理內(nèi)存區(qū)域映射到哪些 I/O 設(shè)備。分配給特定 VM 的 I/O 設(shè)備不能被其他 VM 訪問,I/O 設(shè)備也無法訪問其他 VM。
即使支持 IOMMU,VMM 仍需要將數(shù)據(jù)從網(wǎng)絡(luò)接口芯片 (NIC) 復(fù)制到虛擬機,反之亦然。PCI-SIG 的單根 I/O 虛擬化 (SR-IOV) 標準將 VMM 從將數(shù)據(jù)移入和移出虛擬機的過程中移除。數(shù)據(jù)直接在 VM 之間通過 DMA 傳輸,VMM 中的軟件開關(guān)永遠不會碰它。
雖然虛擬化硬件加速的關(guān)鍵技術(shù)是在芯片級實現(xiàn)的,但板級決策也會影響系統(tǒng)性能。例如,具有最多虛擬化功能的處理器通常是消耗最多功率的處理器,因此通常需要在優(yōu)化尺寸、重量和功耗 (SWaP) 方面做出權(quán)衡決策。NIC 的選擇會影響加速哪些 I/O 虛擬化功能。電路板上的內(nèi)存量也是一個重要的考慮因素,因為虛擬化會消耗大量內(nèi)存。
嵌入式虛擬化技術(shù)
一旦底層硬件已經(jīng)建立并支持虛擬化的需求,下一個問題是使用什么軟件虛擬化技術(shù)。在企業(yè)領(lǐng)域,主要選擇是類型 1和類型 2 虛擬機管理程序,其中類型 1 在裸機上運行,類型 2 在另一個操作系統(tǒng)上運行。對于嵌入式系統(tǒng),還有第三種選擇:具有虛擬化層的微內(nèi)核。盡管將任何給定的解決方案放入這三個存儲桶之一中很方便,但現(xiàn)實情況是,類型 1 和類型 2 之間存在灰色區(qū)域,并且可以使用微內(nèi)核技術(shù)實現(xiàn)類型 1 虛擬機管理程序。即使有一定程度的重疊,查看定義特征和功能也很有用。
虛擬機管理程序(也稱為虛擬機監(jiān)視器 (VMM))始于企業(yè)系統(tǒng),幾乎沒有資源限制。因此,許多虛擬機管理程序及其虛擬機都是重量級結(jié)構(gòu),通常包括設(shè)備驅(qū)動程序等功能,有時甚至包括網(wǎng)絡(luò)堆棧和文件系統(tǒng)。所有這些功能都需要大型 TCB。網(wǎng)絡(luò)堆棧具有特別高的安全風險,如最近的“URGENT/11”漏洞所示。對于類型 1 和類型 2 虛擬機管理程序,來賓操作系統(tǒng)與應(yīng)用程序一起在虛擬機內(nèi)運行。盡管在裸機上運行的 Type 1 虛擬機管理程序通常效率更高,但如果只有一小部分應(yīng)用程序需要來賓操作系統(tǒng),則類型 2 虛擬機管理程序可能是正確的解決方案。在企業(yè)環(huán)境中,一個例子是工程環(huán)境(例如 Linux)或創(chuàng)意環(huán)境(如 macOS),它需要運行僅在 Windows 上運行的業(yè)務(wù)應(yīng)用程序。同樣,嵌入式系統(tǒng)通?;旌狭藢崟r和非實時要求。使用 Type 2 虛擬機管理程序,較大的實時應(yīng)用程序集將僅依賴于基本 RTOS,而不是 RTOS 和虛擬機管理程序,而只有非實時應(yīng)用程序才會產(chǎn)生來賓操作系統(tǒng)、虛擬機管理程序和主機操作系統(tǒng)的虛擬化開銷。
微內(nèi)核來自不同的方向,旨在通過將服務(wù)(包括虛擬化)移動到用戶模式服務(wù)器來減少內(nèi)核中執(zhí)行的代碼量。這也最大限度地減少了TCB,以提高安全性和安全性。提供來賓操作系統(tǒng)支持的虛擬化層可以在用戶空間中實現(xiàn),類似于類型 2 虛擬機管理程序,以及網(wǎng)絡(luò)堆棧和文件系統(tǒng)。請注意,隔離基礎(chǔ)是在微內(nèi)核中實現(xiàn)的,包括使用硬件虛擬化功能。
從可信計算庫中獲取虛擬化層對于安全性和安全性都是一個顯著的優(yōu)勢,因為虛擬化代碼可能很大。要使來賓操作系統(tǒng)認為它在裸機上運行,必須對系統(tǒng)的每個部分進行虛擬化。盡管硬件技術(shù)加速了內(nèi)存虛擬化,但直到最近,一些處理器才開始加速某些部分的 I/O。所需的虛擬化的一些示例包括設(shè)備仿真、總線仿真以及中斷仿真和路由。所有這些仿真的代碼都非常大,并且還會造成性能損失。從來賓操作系統(tǒng)對內(nèi)核的每個調(diào)用都需要捕獲、檢查并確定是否允許來賓操作系統(tǒng)進行該訪問。為了使虛擬機管理程序高效,它需要虛擬化指令序列而不是單個指令。這種前瞻功能只是增加虛擬機管理程序已經(jīng)很大的代碼庫以最大程度地減少虛擬化性能損失的一個例子。
一種特定類型的微內(nèi)核是分離內(nèi)核,它將其控制下的所有導(dǎo)出資源分配到分區(qū)中,并且這些分區(qū)是隔離的,除了明確允許的信息流。專為最高安全性而設(shè)計的分離內(nèi)核符合美國國家安全局 (NSA) 定義的分離內(nèi)核保護配置文件 (SKPP),該配置文件是為最惡劣的威脅環(huán)境創(chuàng)建的。
虛擬機管理程序和微內(nèi)核技術(shù)的比較
如今,虛擬機管理程序和微內(nèi)核中具有虛擬化層的廣泛功能集之間存在大量重疊。這兩種技術(shù)都利用基礎(chǔ)硬件功能(如多個特權(quán)模式/級別、MMU 和 IOMMU)來提供硬件強制隔離,并為不同的應(yīng)用程序提供單獨的地址空間。虛擬機管理程序和具有虛擬化層的微內(nèi)核都提供了在虛擬化環(huán)境中運行多個操作系統(tǒng)的能力,包括混合使用RTOS和非RTOS。即使有這些相似之處,這兩種技術(shù)在確定性和安全性方面也可能存在顯著差異。
基于微內(nèi)核的實時操作系統(tǒng)從一開始就是為低延遲和高確定性而設(shè)計的。在虛擬機管理程序上運行 RTOS 會增加必須攔截和虛擬化的每個系統(tǒng)調(diào)用的延遲。結(jié)果是延遲增加,確定性降低。為了解決這個問題,一些虛擬機管理程序聲稱允許在裸機上運行,但這確實是用詞不當。即使沒有來賓操作系統(tǒng),應(yīng)用程序仍然必須在虛擬機監(jiān)控程序上運行,虛擬機監(jiān)控程序通常比微內(nèi)核大。僅在沒有來賓操作系統(tǒng)的虛擬機管理程序上運行也意味著沒有任務(wù)服務(wù)、沒有信號量和消息傳遞。
對于安全關(guān)鍵型系統(tǒng),基于虛擬機管理程序的解決方案需要安全關(guān)鍵型操作系統(tǒng)和經(jīng)過認證為任何托管應(yīng)用程序最高級別關(guān)鍵性的虛擬機管理程序。與微內(nèi)核相比,該代碼庫的總大小會產(chǎn)生巨大的認證負擔,并帶來不必要的風險。
或者,具有虛擬化層的微內(nèi)核通過將更高延遲和降低確定性的虛擬化副作用限制為僅運行主機微內(nèi)核 RTOS 的應(yīng)用程序來實現(xiàn)更高的性能。在安全關(guān)鍵型系統(tǒng)中,非關(guān)鍵應(yīng)用程序可以在虛擬化層上運行,而不會增加認證所需的代碼庫大小。
安全性通常是考慮虛擬機監(jiān)控程序的最常被引用的原因。一個常見的誤解是,虛擬機管理程序本質(zhì)上是安全的,因為它們利用硬件來強制實施虛擬地址空間和虛擬 I/O 來隔離虛擬機。首先,其他技術(shù)(如分區(qū)操作系統(tǒng)和分離內(nèi)核)也使用相同的硬件功能來強制隔離。但是,安全性的主要考慮因素是完整解決方案的安全性僅與底層軟件一樣安全。虛擬機管理程序已被證明容易受到漏洞的影響,這些缺陷可能允許通過緩沖區(qū)溢出和其他漏洞執(zhí)行代碼。例如,2018年初披露的Spectre漏洞可以誘使虛擬機管理程序向來賓應(yīng)用程序泄露機密。由于虛擬機管理程序在來賓操作系統(tǒng)下運行,因此 VM 無法檢測到受損的虛擬機管理程序。這樣的漏洞甚至有一個吸引人的名字:超級劫持。
微內(nèi)核具有較小的TCB,而使用分離內(nèi)核技術(shù)的微內(nèi)核可以具有最高級別的安全性和隔離性。該安全級別的證明是 NSA 發(fā)布的 SKPP 認證或類似的安全標準,例如通用標準 EAL6。一些虛擬機管理程序包含一些分離內(nèi)核原則以提高安全性,但沒有虛擬機管理程序經(jīng)過 SKPP 或類似安全標準(如通用標準 EAL6)的認證。對于需要隔離但不需要虛擬化的系統(tǒng),基于微內(nèi)核的分離內(nèi)核可提供最高級別的安全性,而無需虛擬機管理程序的開銷和擴展代碼庫。
針對性能和安全性進行優(yōu)化
針對最高實時性能和最高安全性進行優(yōu)化的虛擬化解決方案的一個例子是Green Hills Software的INTEGRITY-178 tuMP RTOS,這是一個基于微內(nèi)核的分離內(nèi)核,具有完整的虛擬化服務(wù),包括無需修改即可運行多個來賓操作系統(tǒng)的能力。與基于虛擬機管理程序的虛擬化解決方案相反,實時應(yīng)用程序可以直接在此 RTOS 上運行,而不會在延遲或確定性方面造成虛擬化層損失。
作為分離內(nèi)核,RTOS完全隔離多個應(yīng)用程序/分區(qū),并控制應(yīng)用程序/分區(qū)與外部資源之間的信息流。在某種程度上,這包括保護所有資源免受未經(jīng)授權(quán)的訪問,隔離除明確允許的信息流之外的分區(qū),以及一組審計服務(wù)。結(jié)果是,分離內(nèi)核提供了高保證的分區(qū)和信息流控制,滿足 NEAT[不可繞過、可評估、始終調(diào)用和防篡改] 安全策略屬性。
INTEGRITY-178是唯一獲得NSA發(fā)布的SKPP認證以及通用標準EAL6+的商業(yè)操作系統(tǒng)或虛擬機管理程序。這種安全譜系已經(jīng)擴展到多核INTEGRITY-178 tuMP RTOS。
審核編輯:郭婷
-
嵌入式
+關(guān)注
關(guān)注
5059文章
18975瀏覽量
302085 -
服務(wù)器
+關(guān)注
關(guān)注
12文章
8963瀏覽量
85087 -
操作系統(tǒng)
+關(guān)注
關(guān)注
37文章
6689瀏覽量
123141
發(fā)布評論請先 登錄
相關(guān)推薦
評論