首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

嵌入式开发:Hypervisor可以解决所有软件分区问题吗?

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

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

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

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

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

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

为什么需要分离?

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

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

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

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

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

保护对特定资源的访问

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

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

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

安全或安保标准

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

虚拟化不是强制性的

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

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

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

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

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

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OHkqWXEC7gb0MXZImXqfgnMA0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券
http://www.vxiaotou.com