0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

虚拟机管理程序如何解决软件分区问题

要长高 来源:embedded 作者:Marcus Nissemark 2023-11-23 16:14 次阅读

众所周知,使用软件分区,即在单独的环境中运行应用程序,有助于满足安全和保密要求。很多时候,虚拟机管理程序被视为最佳和/或唯一的解决方案,然而,事实并非如此。虚拟机管理程序本身会带来额外的风险和漏洞。因此,本文提供了一种不同的方法:分离内核。

嵌入式虚拟机管理程序支持多个操作系统在同一硬件平台上运行,最大限度地提高硬件性能,同时确保独立性。这些嵌入式虚拟化解决方案有时会带来安全需求,而分离关注点对于满足这些需求至关重要。但是,依赖虚拟机管理程序会引发信任问题,并且在涉及安全和安保标准(如ISO 26262或ISO 21434)时会带来额外的限制。

虚拟机管理程序的替代方案是在实时操作系统中实现分离内核。这种方法允许在单个操作系统中分离关注点,保证应用程序级的分离,而不是操作系统级的分离。让我们稍微深入地研究一下这些技术。

嵌入式系统管理程序:管理者的管理者

嵌入式管理程序是一种软件,它使多个操作系统能够在资源受限的设备的单个处理器上运行,从而共享资源。虚拟机管理程序充当操作系统的操作系统,允许操作系统根据预定义的方案共享CPU、内存和外设资源。也就是说,管理者的管理者,因此得名hypervisor。虚拟机管理程序可以是动态的,具有灵活的CPU数量和内存使用,也可以是静态的,具有固定的CPU边界和内存分配。外围设备驱动程序可以是专用的,也可以在不同的操作系统之间共享。图1展示了用于分离的典型虚拟机管理程序架构。

wKgZomVfCbeAWkozAAEEMS91Reo355.png

图1:用于分离的典型虚拟机管理程序架构。

在软件架构中引入虚拟机管理程序以实现分离并非没有挑战,因为这会增加复杂性。虚拟机管理程序需要进行内存分离和保护,以及不同工作负载的调度。它还需要管理虚拟化客户操作系统的特权级别,同时平衡对硬件资源的访问。因此,管理程序成为系统中最有特权的软件。

这套复杂的软件将代码添加到系统最关键的部分,运行在硬件的最高特权级别。因此,虚拟机管理程序的实施需要安全可靠,否则为增强安全性而添加虚拟机管理程序将无法实现。因此,将具有大量代码库的管理程序添加到系统最敏感的部分,会增加添加漏洞的风险。例如,查看一个常见的开源虚拟机管理程序Xen和在国家漏洞数据库中找到的漏洞列表,可以发现数百个漏洞。当试图通过虚拟化来提高系统的安全性时,这不是一个非常值得信赖的虚拟机管理程序。

软件分离内核:隔离单个物理系统上的域

约翰·拉什比在1981年的一篇论文中提出的软件分离内核,旨在创建一个类似于物理分布式系统的环境。它确保每个应用程序域看起来像一个单独的、隔离的机器,只允许信息沿着已知的外部通信线路流动。内核通过在单个物理系统上创建隔离的域或分区来提供高级别的安全性。它严格分隔这些分区,防止一个分区中的软件影响另一个分区中的软件。这可以保护整个系统免受恶意软件和未经授权的访问。

基于微内核架构,分离内核提供最少的服务,并依赖单独的服务来获得额外的功能。这种设计减少了内核的攻击面,增强了它对危害的恢复能力。一个适当的分离内核提供了等同于硬件隔离的隔离,使其更不容易受到攻击。一些分离内核,如L4微内核,已经过正式验证,以确保正确操作。也有商业上可获得的分离内核,例如来自Green Hills Software的INTEGRITY实时操作系统。在分离内核实时操作系统环境中,应用程序级分离如图2所示。

wKgaomVfCcKAF7MjAADrpHNbkmY485.png

图2:一个适当的分离内核提供了等同于硬件隔离的隔离,使得它不容易受到漏洞的影响。

当运行访问相同资源的多个操作系统时,一些实现可能会考虑保持系统分离的性能问题。例如,类型1虚拟机管理程序将需要两次上下文切换来在接收到中断时运行关键任务。第一个中断被传递给管理程序,然后被处理并传递给客户操作系统进行任务调度。分离内核解决方案只需要一个中断就可以调度关键任务。尽管这是特定于实现的,但虚拟化在性能方面并不总是免费的,尤其是对于关键任务或访问共享资源。因此,分离内核和虚拟机管理程序性能可能是重要的设计考虑因素,需要针对嵌入式系统中的特定用例进行仔细的架构设计。

为什么需要分离?

出于几个原因,分离关注点是必要的。在此分析中,列出了三个使用案例:

安全性:隔离同一操作系统的多个实例中的特定功能,以建立对特定资源的安全访问。

代码重用或遗留系统:使用多个不同的操作系统来重用功能,而无需重新架构或重新实现。

混合关键程度:采用多个操作系统来满足要求应用程序分离的安全或安保标准。

为了满足这些需求,通常会考虑虚拟机管理程序解决方案。然而,分离内核方法也可以满足这些需求,而无需借助虚拟化。对这三个不同的用例进行深入的分析,我们得到了以下结论。

保护对特定资源的访问

如果底层操作系统的访问控制方法足够安全,就可以在应用程序级别实现受保护的资源访问。探索替代的分离内核操作系统而不是虚拟化可以帮助避免潜在的陷阱。这种实现通常采用强制访问控制策略来实现这一点,并且可以利用操作系统机制来安全地共享这种资源,例如专用外围设备访问。

无需重新架构或重新实施即可重用

由于超出项目控制的因素,如第三方库或硬件限制,某些软件无法变得安全可靠。在这种情况下,需要对软件进行分区,以防止干扰系统其余部分的安全需求。虽然虚拟化是一种常见的解决方案,但它增加了不必要的复杂性。相反,有选择地修改代码并与第三方供应商合作可能更有效,尤其是当分离内核提供特定的可移植性层时。这种用例很难用分离内核来实现,但是为了使系统安全可靠,必须做出一些改变。

安全或安保标准

安全标准通常要求隔离,以避免干扰。与其引入一个完整的虚拟化层,另一个满足安全标准目标的隔离层可能就足够了。使用较小的安全可靠基础符合功能安全要求。例如,Green Hills Software的INTEGRITY RTOS分离内核被用于汽车、工业和航空电子等多个领域,提供多层安全保障。

虚拟化不是强制性的

因此,分离的所有三个用例都可以在没有虚拟化的情况下设计,重新思考软件架构。分离内核解决方案能够托管具有混合关键程度要求的应用程序,而无需虚拟机管理程序。POSIX、TCP/IP套接字和标准文件系统交互等应用程序兼容层是通过开放接口实现的。

分离内核遵循微内核架构,并通过隔离特性、实现强制设备访问控制和为替代软件架构提供基础来增强它。这种方法使得设计更简单,代码库更小,从而更容易确保安全性和不存在错误或漏洞。

此外,分离内核允许混合临界应用共存。分离内核的原则强制执行静态架构设计阶段,与安全和安保系统中的最佳实践保持一致。

为了实现安全的系统,软件工程师必须采用一种专注于架构特性的思维模式,并牢记分离。应用程序和服务之间清晰且受保护的接口至关重要,重要的是要认识到服务(如库或设备驱动程序)可以是分离内核环境中的独立应用程序。这需要考虑替代的软件架构路径,以实现适当的安全隔离。

总之,嵌入式虚拟机管理程序和分离内核都可以解决安全和安保方面的分离需求。但是,完全依赖虚拟机管理程序的默认方法应该受到挑战。从安全角度来看,考虑具有较小可信计算基础的分离内核是明智的选择,因为两种方法提供的功能是相同的。在设计中优先考虑增强的安全性而不是软件重用,这意味着用依赖于兼容层的更安全的分离内核替换遗留的或事实上的操作系统,从而实现更好的安全性和安全性设计。

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式系统
    +关注

    关注

    40

    文章

    3430

    浏览量

    128220
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10442

    浏览量

    206560
  • 操作系统
    +关注

    关注

    37

    文章

    6284

    浏览量

    121880
  • 实时操作系统

    关注

    1

    文章

    184

    浏览量

    30516
  • 虚拟机
    +关注

    关注

    1

    文章

    855

    浏览量

    27377
收藏 人收藏

    评论

    相关推荐

    安装虚拟机软件VmwareWorkstation(最新版)

    Vmware WorkStation是一款桌面计算机虚拟软件,能够让用户在单一主机上同时运行多个不同的操作系统。每个虚拟操作系统的硬盘分区、数据配置都是独立的,同时又可以将多台
    发表于 11-06 13:58

    高效运行Linux虚拟机的六大技巧

    ,LVM允许我们在没有调用vSphere所带功能的情况下执行基于卷的快照用于备份和恢复。我的建议是,如果在工作负载你有严格的可用性策略并利用在线调整功能,就要将LVM与虚拟机分区。如果你不需要大量的正常
    发表于 11-20 14:55

    管理程序选择

    亲爱的社区,如果需要多个虚拟机(最多8个),每个虚拟机需要2Mb vGPU,我们希望听到您对虚拟机管理程序选择问题的看法。我正在对可用的虚拟机
    发表于 09-10 17:09

    VM虚拟机管理程序上的NVIDIA GRID vGPU有适当的测试计划来协助测试吗?

    你好,我搜索了这些论坛,我发现了一些关于在基于KVM的虚拟机管理程序(RHEL / CentOS)下使用NVIDIA GRID vGPU功能的问题。这仍在开发中吗?如果是,是否有适当的测试计划来协助
    发表于 09-18 16:14

    MYZR虚拟机功能演示

    MYZR虚拟机功能演示目录 1安装并配置开发环境1.1安装并运行虚拟机系统1.1.1准备虚拟机系统和软件1.1.2安装虚拟机1.1.3运行
    发表于 12-27 15:04

    使用VMware给虚拟机安装linux系统

    系统的整个安装过程就完成了。小提示,对于VMware虚拟机管理软件而言,有两个快捷键是很常用的。Ctrl+G:作用是将输入(主要是键盘和鼠标)定向到虚拟机,也可以在虚拟机内部单击。Ct
    发表于 07-05 06:09

    何解虚拟机Ubuntu无法联网的问题

    做嵌入式linux学习 需要用到虚拟机我遇到的问题是虚拟机网络找不到 网卡的设备,只剩下了一个环路 背景是 我之前用一直没有问题像这样 剩下 这个 lo: flags=73 mtu 65536我的解决办法是 挂起虚拟机(暂停播放
    发表于 12-23 08:22

    android8.1 virtualBox 虚拟机 Ubuntu 18.04是怎样修改分区表的

    android8.1 virtualBox 虚拟机 Ubuntu 18.04是怎样修改分区表的?android8.1 virtualBox 虚拟机 Ubuntu 18.04是怎样添加分区
    发表于 03-07 06:40

    Keil 在虚拟机中激活失败

    在windows虚拟机中安装了Keil软件,还有激活软件,打开方式都是用管理员权限打开的,输入激活码以后,仿真的时候仍旧出现2k大小提示的限制,请问如
    发表于 07-25 19:38

    深入了解AArch64虚拟

    硬件扩展(加速虚拟机之间的切换) 以及管理程序软件虚拟机监控程序是一种允许多个操作系统共享单个硬件的
    发表于 08-02 12:52

    容器的优势是什么?和虚拟机有什么不一样?

    虚拟机是一个完整的虚拟化服务器,通过被称为虚拟机管理程序软件分配磁盘空间、处理器周期和I/O资源。在
    的头像 发表于 07-01 10:05 1.8w次阅读

    虚拟机和容器共存时会给混合云带来什么影响

    但是虚拟机管理程序Hypervisor以及它们所运行的虚拟机受到极大的欢迎,而基于kubernete的容器化几乎没有以任何方式侵占它们在当今私有、公共、混合和多云环境中的足迹。
    发表于 12-31 16:36 1421次阅读

    使用虚拟平台维护安全性

    安全性是一个包含硬件和软件的多级挑战。需要一种务实的跨职能方法来实现嵌入式设备和系统的安全性。在用于安全性的方法中,虚拟机管理程序显示出出色的初始结果。虚拟机
    的头像 发表于 10-20 10:57 416次阅读
    使用<b class='flag-5'>虚拟</b>平台维护安全性

    汽车开源虚拟化:AGL 虚拟化架构

    后者是最重要的模块,因为它可以安全可靠地执行多个应用程序虚拟机或操作系统,将它们整合到单个硬件/软件平台中。它可以使用虚拟机管理程序、系统
    的头像 发表于 12-02 15:02 979次阅读
    汽车开源<b class='flag-5'>虚拟</b>化:AGL <b class='flag-5'>虚拟</b>化架构

    虚拟机如何运行c程序

    虚拟机(Virtual Machine,VM)是一种模拟了物理计算机的软件,可以在计算机上创建虚拟的硬件平台,使得用户可以在其中运行操作系统和应用程序。在
    的头像 发表于 11-17 10:14 2168次阅读