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