0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

虛擬機(jī)管理程序如何解決軟件分區(qū)問題

要長高 ? 來源:embedded ? 作者:Marcus Nissemark ? 2023-11-23 16:14 ? 次閱讀

眾所周知,使用軟件分區(qū),即在單獨(dú)的環(huán)境中運(yùn)行應(yīng)用程序,有助于滿足安全和保密要求。很多時(shí)候,虛擬機(jī)管理程序被視為最佳和/或唯一的解決方案,然而,事實(shí)并非如此。虛擬機(jī)管理程序本身會(huì)帶來額外的風(fēng)險(xiǎn)和漏洞。因此,本文提供了一種不同的方法:分離內(nèi)核。

嵌入式虛擬機(jī)管理程序支持多個(gè)操作系統(tǒng)在同一硬件平臺(tái)上運(yùn)行,最大限度地提高硬件性能,同時(shí)確保獨(dú)立性。這些嵌入式虛擬化解決方案有時(shí)會(huì)帶來安全需求,而分離關(guān)注點(diǎn)對(duì)于滿足這些需求至關(guān)重要。但是,依賴虛擬機(jī)管理程序會(huì)引發(fā)信任問題,并且在涉及安全和安保標(biāo)準(zhǔn)(如ISO 26262或ISO 21434)時(shí)會(huì)帶來額外的限制。

虛擬機(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è)資源。也就是說,管理者的管理者,因此得名hypervisor。虛擬機(jī)管理程序可以是動(dòng)態(tài)的,具有靈活的CPU數(shù)量和內(nèi)存使用,也可以是靜態(tài)的,具有固定的CPU邊界和內(nèi)存分配。外圍設(shè)備驅(qū)動(dòng)程序可以是專用的,也可以在不同的操作系統(tǒng)之間共享。圖1展示了用于分離的典型虛擬機(jī)管理程序架構(gòu)。

wKgZomVfCbeAWkozAAEEMS91Reo355.png

圖1:用于分離的典型虛擬機(jī)管理程序架構(gòu)。

在軟件架構(gòu)中引入虛擬機(jī)管理程序以實(shí)現(xiàn)分離并非沒有挑戰(zhàn),因?yàn)檫@會(huì)增加復(fù)雜性。虛擬機(jī)管理程序需要進(jìn)行內(nèi)存分離和保護(hù),以及不同工作負(fù)載的調(diào)度。它還需要管理虛擬化客戶操作系統(tǒng)的特權(quán)級(jí)別,同時(shí)平衡對(duì)硬件資源的訪問。因此,管理程序成為系統(tǒng)中最有特權(quán)的軟件。

這套復(fù)雜的軟件將代碼添加到系統(tǒng)最關(guān)鍵的部分,運(yùn)行在硬件的最高特權(quán)級(jí)別。因此,虛擬機(jī)管理程序的實(shí)施需要安全可靠,否則為增強(qiáng)安全性而添加虛擬機(jī)管理程序?qū)o法實(shí)現(xiàn)。因此,將具有大量代碼庫的管理程序添加到系統(tǒng)最敏感的部分,會(huì)增加添加漏洞的風(fēng)險(xiǎn)。例如,查看一個(gè)常見的開源虛擬機(jī)管理程序Xen和在國家漏洞數(shù)據(jù)庫中找到的漏洞列表,可以發(fā)現(xiàn)數(shù)百個(gè)漏洞。當(dāng)試圖通過虛擬化來提高系統(tǒng)的安全性時(shí),這不是一個(gè)非常值得信賴的虛擬機(jī)管理程序。

軟件分離內(nèi)核:隔離單個(gè)物理系統(tǒng)上的域

約翰·拉什比在1981年的一篇論文中提出的軟件分離內(nèi)核,旨在創(chuàng)建一個(gè)類似于物理分布式系統(tǒng)的環(huán)境。它確保每個(gè)應(yīng)用程序域看起來像一個(gè)單獨(dú)的、隔離的機(jī)器,只允許信息沿著已知的外部通信線路流動(dòng)。內(nèi)核通過在單個(gè)物理系統(tǒng)上創(chuàng)建隔離的域或分區(qū)來提供高級(jí)別的安全性。它嚴(yán)格分隔這些分區(qū),防止一個(gè)分區(qū)中的軟件影響另一個(gè)分區(qū)中的軟件。這可以保護(hù)整個(gè)系統(tǒng)免受惡意軟件和未經(jīng)授權(quán)的訪問。

基于微內(nèi)核架構(gòu),分離內(nèi)核提供最少的服務(wù),并依賴單獨(dú)的服務(wù)來獲得額外的功能。這種設(shè)計(jì)減少了內(nèi)核的攻擊面,增強(qiáng)了它對(duì)危害的恢復(fù)能力。一個(gè)適當(dāng)?shù)姆蛛x內(nèi)核提供了等同于硬件隔離的隔離,使其更不容易受到攻擊。一些分離內(nèi)核,如L4微內(nèi)核,已經(jīng)過正式驗(yàn)證,以確保正確操作。也有商業(yè)上可獲得的分離內(nèi)核,例如來自Green Hills Software的INTEGRITY實(shí)時(shí)操作系統(tǒng)。在分離內(nèi)核實(shí)時(shí)操作系統(tǒng)環(huán)境中,應(yīng)用程序級(jí)分離如圖2所示。

wKgaomVfCcKAF7MjAADrpHNbkmY485.png

圖2:一個(gè)適當(dāng)?shù)姆蛛x內(nèi)核提供了等同于硬件隔離的隔離,使得它不容易受到漏洞的影響。

當(dāng)運(yùn)行訪問相同資源的多個(gè)操作系統(tǒng)時(shí),一些實(shí)現(xiàn)可能會(huì)考慮保持系統(tǒng)分離的性能問題。例如,類型1虛擬機(jī)管理程序?qū)⑿枰獌纱紊舷挛那袚Q來在接收到中斷時(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ù)或訪問共享資源。因此,分離內(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ì)特定資源的安全訪問。

代碼重用或遺留系統(tǒng):使用多個(gè)不同的操作系統(tǒng)來重用功能,而無需重新架構(gòu)或重新實(shí)現(xiàn)。

混合關(guān)鍵程度:采用多個(gè)操作系統(tǒng)來滿足要求應(yīng)用程序分離的安全或安保標(biāo)準(zhǔn)。

為了滿足這些需求,通常會(huì)考慮虛擬機(jī)管理程序解決方案。然而,分離內(nèi)核方法也可以滿足這些需求,而無需借助虛擬化。對(duì)這三個(gè)不同的用例進(jìn)行深入的分析,我們得到了以下結(jié)論。

保護(hù)對(duì)特定資源的訪問

如果底層操作系統(tǒng)的訪問控制方法足夠安全,就可以在應(yīng)用程序級(jí)別實(shí)現(xiàn)受保護(hù)的資源訪問。探索替代的分離內(nèi)核操作系統(tǒng)而不是虛擬化可以幫助避免潛在的陷阱。這種實(shí)現(xiàn)通常采用強(qiáng)制訪問控制策略來實(shí)現(xiàn)這一點(diǎn),并且可以利用操作系統(tǒng)機(jī)制來安全地共享這種資源,例如專用外圍設(shè)備訪問。

無需重新架構(gòu)或重新實(shí)施即可重用

由于超出項(xiàng)目控制的因素,如第三方庫或硬件限制,某些軟件無法變得安全可靠。在這種情況下,需要對(duì)軟件進(jìn)行分區(qū),以防止干擾系統(tǒng)其余部分的安全需求。雖然虛擬化是一種常見的解決方案,但它增加了不必要的復(fù)雜性。相反,有選擇地修改代碼并與第三方供應(yīng)商合作可能更有效,尤其是當(dāng)分離內(nèi)核提供特定的可移植性層時(shí)。這種用例很難用分離內(nè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)核被用于汽車、工業(yè)和航空電子等多個(gè)領(lǐng)域,提供多層安全保障。

虛擬化不是強(qiáng)制性的

因此,分離的所有三個(gè)用例都可以在沒有虛擬化的情況下設(shè)計(jì),重新思考軟件架構(gòu)。分離內(nèi)核解決方案能夠托管具有混合關(guān)鍵程度要求的應(yīng)用程序,而無需虛擬機(jī)管理程序。POSIX、TCP/IP套接字和標(biāo)準(zhǔn)文件系統(tǒng)交互等應(yīng)用程序兼容層是通過開放接口實(shí)現(xiàn)的。

分離內(nèi)核遵循微內(nèi)核架構(gòu),并通過隔離特性、實(shí)現(xiàn)強(qiáng)制設(shè)備訪問控制和為替代軟件架構(gòu)提供基礎(chǔ)來增強(qiáng)它。這種方法使得設(shè)計(jì)更簡單,代碼庫更小,從而更容易確保安全性和不存在錯(cuò)誤或漏洞。

此外,分離內(nèi)核允許混合臨界應(yīng)用共存。分離內(nèi)核的原則強(qiáng)制執(zhí)行靜態(tài)架構(gòu)設(shè)計(jì)階段,與安全和安保系統(tǒng)中的最佳實(shí)踐保持一致。

為了實(shí)現(xiàn)安全的系統(tǒng),軟件工程師必須采用一種專注于架構(gòu)特性的思維模式,并牢記分離。應(yīng)用程序和服務(wù)之間清晰且受保護(hù)的接口至關(guān)重要,重要的是要認(rèn)識(shí)到服務(wù)(如庫或設(shè)備驅(qū)動(dòng)程序)可以是分離內(nèi)核環(huán)境中的獨(dú)立應(yīng)用程序。這需要考慮替代的軟件架構(gòu)路徑,以實(shí)現(xiàn)適當(dāng)?shù)陌踩綦x。

總之,嵌入式虛擬機(jī)管理程序和分離內(nèi)核都可以解決安全和安保方面的分離需求。但是,完全依賴虛擬機(jī)管理程序的默認(rèn)方法應(yīng)該受到挑戰(zhàn)。從安全角度來看,考慮具有較小可信計(jì)算基礎(chǔ)的分離內(nèi)核是明智的選擇,因?yàn)閮煞N方法提供的功能是相同的。在設(shè)計(jì)中優(yōu)先考慮增強(qiáng)的安全性而不是軟件重用,這意味著用依賴于兼容層的更安全的分離內(nèi)核替換遺留的或事實(shí)上的操作系統(tǒng),從而實(shí)現(xiàn)更好的安全性和安全性設(shè)計(jì)。

審核編輯:黃飛

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 嵌入式系統(tǒng)
    +關(guān)注

    關(guān)注

    41

    文章

    3532

    瀏覽量

    128984
  • cpu
    cpu
    +關(guān)注

    關(guān)注

    68

    文章

    10772

    瀏覽量

    210441
  • 操作系統(tǒng)
    +關(guān)注

    關(guān)注

    37

    文章

    6609

    瀏覽量

    123026
  • 實(shí)時(shí)操作系統(tǒng)

    關(guān)注

    1

    文章

    194

    瀏覽量

    30720
  • 虛擬機(jī)
    +關(guān)注

    關(guān)注

    1

    文章

    897

    瀏覽量

    27965
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    管理程序選擇

    親愛的社區(qū),如果需要多個(gè)虛擬機(jī)(最多8個(gè)),每個(gè)虛擬機(jī)需要2Mb vGPU,我們希望聽到您對(duì)虛擬機(jī)管理程序選擇問題的看法。我正在對(duì)可用的虛擬機(jī)
    發(fā)表于 09-10 17:09

    VM虛擬機(jī)管理程序上的NVIDIA GRID vGPU有適當(dāng)?shù)臏y試計(jì)劃來協(xié)助測試嗎?

    你好,我搜索了這些論壇,我發(fā)現(xiàn)了一些關(guān)于在基于KVM的虛擬機(jī)管理程序(RHEL / CentOS)下使用NVIDIA GRID vGPU功能的問題。這仍在開發(fā)中嗎?如果是,是否有適當(dāng)?shù)臏y試計(jì)劃來協(xié)助
    發(fā)表于 09-18 16:14

    使用VMware給虛擬機(jī)安裝linux系統(tǒng)

    系統(tǒng)的整個(gè)安裝過程就完成了。小提示,對(duì)于VMware虛擬機(jī)管理軟件而言,有兩個(gè)快捷鍵是很常用的。Ctrl+G:作用是將輸入(主要是鍵盤和鼠標(biāo))定向到虛擬機(jī),也可以在虛擬機(jī)內(nèi)部單擊。Ct
    發(fā)表于 07-05 06:09

    深入了解AArch64虛擬

    硬件擴(kuò)展(加速虛擬機(jī)之間的切換) 以及管理程序軟件。 虛擬機(jī)監(jiān)控程序是一種允許多個(gè)操作系統(tǒng)共享單個(gè)硬件的
    發(fā)表于 08-02 12:52

    如何在 CentOS 7 RHEL 7 的 KVM 上啟用嵌套虛擬

    嵌套虛擬化意味著在虛擬機(jī)內(nèi)配置虛擬化環(huán)境。換句話說,我們可以說嵌套虛擬化是虛擬機(jī)管理程序(hyp
    發(fā)表于 02-24 09:37 ?0次下載

    容器的優(yōu)勢(shì)是什么?和虛擬機(jī)有什么不一樣?

    虛擬機(jī)是一個(gè)完整的虛擬化服務(wù)器,通過被稱為虛擬機(jī)管理程序軟件分配磁盤空間、處理器周期和I/O資源。在
    的頭像 發(fā)表于 07-01 10:05 ?1.8w次閱讀

    VMware軟件虛擬機(jī)和PLC通訊的連接方法

    現(xiàn)在虛擬機(jī)應(yīng)該說主流的用的比較多的還是使用VMware軟件虛擬機(jī),所以我就以VMware軟件虛擬機(jī)應(yīng)該如何和PLC通訊做一個(gè)簡單的說明!
    的頭像 發(fā)表于 09-30 14:29 ?2.4w次閱讀

    虛擬機(jī)和容器共存時(shí)會(huì)給混合云帶來什么影響

    但是虛擬機(jī)管理程序Hypervisor以及它們所運(yùn)行的虛擬機(jī)受到極大的歡迎,而基于kubernete的容器化幾乎沒有以任何方式侵占它們?cè)诋?dāng)今私有、公共、混合和多云環(huán)境中的足跡。
    發(fā)表于 12-31 16:36 ?1533次閱讀

    使用虛擬平臺(tái)維護(hù)安全性

    安全性是一個(gè)包含硬件和軟件的多級(jí)挑戰(zhàn)。需要一種務(wù)實(shí)的跨職能方法來實(shí)現(xiàn)嵌入式設(shè)備和系統(tǒng)的安全性。在用于安全性的方法中,虛擬機(jī)管理程序顯示出出色的初始結(jié)果。虛擬機(jī)
    的頭像 發(fā)表于 10-20 10:57 ?536次閱讀
    使用<b class='flag-5'>虛擬</b>平臺(tái)維護(hù)安全性

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

    后者是最重要的模塊,因?yàn)樗梢园踩煽康貓?zhí)行多個(gè)應(yīng)用程序虛擬機(jī)或操作系統(tǒng),將它們整合到單個(gè)硬件/軟件平臺(tái)中。它可以使用虛擬機(jī)管理程序、系統(tǒng)
    的頭像 發(fā)表于 12-02 15:02 ?1264次閱讀
    汽車開源<b class='flag-5'>虛擬</b>化:AGL <b class='flag-5'>虛擬</b>化架構(gòu)

    KVM虛擬機(jī)管理和基本使用

    KVM — 全稱是基于內(nèi)核的虛擬機(jī)(Kernel-based Virtual Machine)是一個(gè)開源軟件,基于內(nèi)核的虛擬化技術(shù),實(shí)際是嵌入系統(tǒng)的一個(gè)虛擬化模塊,通過優(yōu)化內(nèi)核來使用
    的頭像 發(fā)表于 02-07 09:20 ?1188次閱讀

    使用Ansible構(gòu)建虛擬機(jī)部署Linux的最佳實(shí)踐

    編者按:本文節(jié)選自節(jié)選自《基于Linux的企業(yè)自動(dòng)化》第五章?!暗?章,使用Ansible構(gòu)建用于部署的虛擬機(jī)模板,通過構(gòu)建虛擬機(jī)模板來探索部署Linux的最佳實(shí)踐,虛擬機(jī)模板將以實(shí)際操作的方式大規(guī)模部署在
    的頭像 發(fā)表于 05-16 15:13 ?1029次閱讀

    虛擬機(jī)linux怎么編寫程序

    虛擬機(jī)Linux上編寫程序是一項(xiàng)非常常見且有用的任務(wù)。無論是開發(fā)一個(gè)簡單的腳本、一個(gè)Web應(yīng)用程序還是一個(gè)復(fù)雜的軟件項(xiàng)目,Linux提供了強(qiáng)大的工具和環(huán)境來幫助你進(jìn)行編程。本文將詳細(xì)
    的頭像 發(fā)表于 11-17 10:08 ?1507次閱讀

    虛擬機(jī)如何運(yùn)行c程序

    虛擬機(jī)(Virtual Machine,VM)是一種模擬了物理計(jì)算機(jī)的軟件,可以在計(jì)算機(jī)上創(chuàng)建虛擬的硬件平臺(tái),使得用戶可以在其中運(yùn)行操作系統(tǒng)和應(yīng)用程序。在
    的頭像 發(fā)表于 11-17 10:14 ?4400次閱讀

    怎么安裝linux虛擬機(jī)

    在計(jì)算機(jī)領(lǐng)域,虛擬機(jī)是一種軟件程序,它允許在主操作系統(tǒng)上運(yùn)行多個(gè)虛擬操作系統(tǒng)。Linux虛擬機(jī)在開發(fā)、測試和學(xué)習(xí)等環(huán)境中得到廣泛應(yīng)用。本文將
    的頭像 發(fā)表于 11-23 10:50 ?995次閱讀