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

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

3天内不再提示

将实时Java添加到MILS操作系统

星星科技指导员 来源:嵌入式计算设计 作者:DR. KEVIN NILSEN 2022-11-10 16:46 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

多独立安全级别 (MILS) 操作系统支持安全部署多个应用程序,每个应用程序表示属于不同安全领域的数据。编写用于使用 MILS 操作系统部署的软件需要注意主流操作系统上不需要的细节。在 MILS 操作系统中集成 Java 虚拟机 (VM) 可简化 MILS 应用软件的开发。

通常,多独立安全级别 (MILS) 操作系统是更通用的实时操作系统的特殊配置,旨在简化支持多个独立安全级别的软件系统的开发。这种系统在军事场景中尤其常见,例如,同一计算机系统可能需要将属于一个国家政府的绝密数据与属于北约等政府联盟的机密数据隔离开来(图1)。

图1:配置为限制分区之间信息流的安全 MILS 操作系统

pYYBAGNsulKAVma5AAB5AvL0wvM782.jpg

从概念上讲,MILS 操作系统维护逻辑分区以隔离内存、CPU 时间和特定应用程序可访问的其他资源,并限制在不同逻辑分区中运行的应用程序之间的交互。为一组特定的应用程序配置 MILS 操作系统允许开发人员建立控制分区之间交互的规则。例如,规则可能声明仅允许分区 A 将消息传递到分区 C 和 D。

MILS 分区的理想是降低证明系统足够安全所需的安全审核成本。操作系统的分区实现由操作系统供应商认证为安全,此认证的费用由所有被许可方分担。鉴于操作系统可以保证在不同分区中运行的应用程序之间没有通信,因此了解和记录每个应用程序的安全敏感行为所需的工作量要少得多。将 Java 虚拟机 (VM) 添加到 MILS 操作系统可极大地简化应用程序软件到 MILS 环境的移植和开发。

案例研究:在 MILS 环境中部署软件的实用性

为了便于安全审计以确保独立分区之间没有通信,开发 MILS 操作系统的公司通常会将操作系统提供的服务集限制为在 MILS 分区内运行的应用程序。每个 MILS 环境在有效执行 Java 虚拟机方面都面临着不同的挑战。让我们看一下应军事和航空航天工业客户的要求将实时虚拟机产品移植到特定的商用现货 (COTS) MILS 操作系统时遇到的一些问题。

在此 MILS 操作系统中遇到的限制中,此 MILS 操作系统为确保系统安全而实施的一些约束包括:

无法写入程序的文本段。

系统没有提供用于设置环境变量的命令行工具。

该系统不支持本地图书馆的动态链接。

虽然不是此 COTS MILS 操作系统的一般限制,但我们客户的目标平台缺少文件系统。

鉴于这些限制(这是深度嵌入式 MILS 部署的典型限制),很明显,在大多数现成的应用程序在此环境中运行之前,需要大量的移植和集成工作。Java的可移植性提供了显著降低这种移植和集成工作成本的潜力。

Java 与 MILS 应用的相关性

Java与安全软件的开发特别相关,因为该语言比C和C++更强烈。自从早期开发专注于互联网应用程序的Java语言以来,安全性在其设计中一直至关重要。例如,Java禁止指针和非指针数据类型之间的强制,并且禁止指针算术。此外,每次访问 Java 数组都会执行数组边界检查。抛出异常,而不是允许软件应用程序超出数组有效数据的末尾。同样,Java 运行时环境会检查堆栈溢出并引发异常,而不是允许线程践踏超出线程分配堆栈末尾的内存。通常,Java 语言中内置的这些安全功能完全消除了通常在特洛伊木马和病毒软件的实现中利用的绝大多数漏洞,这些漏洞通常会感染 C 和 C++ 应用程序。

Java的一个优势与在MILS环境中实现新软件功能的挑战特别相关,因为与更传统的语言相比,Java显着减少了实现,移植和将独立开发的软件组件集成到工作应用程序中所需的工作量。代表性项目发现,开发人员在开发新功能时的效率通常是其两倍,而在使用 Java 而不是 C 或 C++ 工作时,重用软件组件的工作效率通常提高 10 倍。这是因为 Java 语言支持更高级别的抽象,更具可移植性,并且鼓励比 C 和 C++ 更紧密的封装。这些好处的价值在经验报告中得到了强调,如图 2 所示。

图2:Java与开发专用、安全的专用系统的相关性

pYYBAGNsulOAJ9T3AACEKhwMn70421.jpg

内置的跟踪垃圾回收功能(可自动回收与应用程序不再相关的动态分配对象的内存)是一项 Java 功能,它使将独立开发的 COTS Java 组件集成到 MILS 应用程序中变得特别容易。每当一个对象由一个组件分配并由其他组件使用时,C 或 C++ 工程师都需要设计和实现一个协议,用于检测对象的使用寿命结束并回收其当时的内存。使用Java,自动检测和回收死对象,并且回收的内存会自动进行碎片整理,这是大多数自动垃圾收集技术的宝贵副作用。除了减少开发和集成软件组件所需的智力工作外,此功能还消除了调试与悬空指针、内存泄漏和内存碎片相关的许多常见内存管理编程错误的需要。

因此,能够用Java语言实现MILS应用程序是非常可取的。该语言比 C 和 C++ 等传统传统语言更安全,它减少了实现定制功能所需的工作量,并且在重用和集成独立开发的软件组件期间节省了大量成本。

将 Java VM 移植到 COTS MILS 环境

要在 MILS 分区中部署 Java 软件,首先需要在 MILS 分区中安装 Java 虚拟机运行时环境。Java 虚拟机提供标准 Java 库、Java 类装入器、Java 字节码解释器和/或实时 (JIT) 编译器,以及跟踪垃圾回收器的实现。有了 Java 虚拟机,Java 编程的所有传统优势都很容易获得。

鉴于 MILS 环境提供的服务通常比同一操作系统的类似非 MILS 配置少得多,因此已配置为在传统或实时操作系统上运行的虚拟机产品可能不会在 MILS 分区中运行。最近,一位客户要求我们为特定的 COTS MILS 操作系统环境提供虚拟机支持。

由于 MILS 环境施加的 MILS 限制,有一些 Java 功能无法得到支持。但在大多数情况下,所描述的虚拟机技术的 MILS 配置支持所有标准版 Java。以下五个部分构成了 Java 配置的基本原理和可用解决方法的案例研究。

#1 – 高保证网络堆栈 (HANS)

根据其支持提高安全性的目标,客户选择的 MILS 操作系统在分发时可以选择使用高保证网络堆栈。此网络堆栈在隔离的 MILS 分区中运行,允许它以非常高的优先级运行,而不会影响为其他 MILS 分区预算的公平 CPU 时间份额。将网络堆栈放在自己的小分区中,可以将堆栈与单个应用程序中的错误隔离开来。不同分区中的应用程序可能会崩溃并重新启动,而不会影响 HANS 的完整性。此外,HANS 消耗的 CPU 时间和内存资源受到其运行分区约束的限制。这为网络堆栈实现提供了针对拒绝服务攻击的某些保护。

鉴于专用于 HANS 实现的内存量和 CPU 时间受到 MILS 操作系统的限制,只有 HANS 分区本身受到另一台计算机的网络通信请求的影响,以高于其准备处理的速率与此计算机进行交互。虽然在这种情况下,HANS 可能会丢弃数据包,但在其他 MILS 分区中运行的应用程序不会受到拒绝服务攻击的影响。

虚拟机与此 MILS 环境的集成支持 HANS 的使用,从而适应了 HANS 和标准网络堆栈 API 之间的少量差异。特别是,HANS 未枚举为特定 MILS 虚拟板配置配置的网络设备。相反,命令行选项允许系统集成商提供已配置网络设备的列表。域名服务函数 gethostname() 和 hostGetByName() 也不被 HANS 支持。Atego Perc Ultra 虚拟机技术的 MILS 集成为客户提供了在必要时使用这些服务的专有基于表的查找来实施这些服务的机会。

#2 – 不调试已编译的代码

由于 MILS 环境禁止写入文本段,因此无法在静态编译并链接到运行时映像的 Java 代码中设置断点。

但是,需要调试功能的 Java 开发人员可以使用几种方法。首先,由于Java是一种可移植的编程语言,因此通常可以在功能更全的平台上完全调试应用程序,然后将调试后的应用程序部署在MILS平台上。其次,如果在 MILS 环境中调试是绝对必要的,那么仍然可以调试以解释字节码运行的 Java 应用程序。

#3 – 没有动态加载本机库

许多 Java 应用程序由 Java 和本机代码的组合组成,通常用 C 或 C++ 编写。当本机组件是 Java 应用程序的一部分时,最常见的是在 Java System.loadLibrary 服务的指导下动态加载本机代码。此服务在实时虚拟机的 MILS 集成中不可用。相反,系统集成商可以选择静态链接本机库。

#4 – 专用虚拟文件系统

为了支持缺乏文件系统支持的 MILS 平台,我们实现了虚拟文件系统作为 MILS 端口的一部分。此虚拟文件系统允许 Java 应用程序创建、写入和读取存储在内存中的文件数据。虚拟文件系统的可用性使得测试虚拟机实现和将现成的 Java 代码移植到 MILS 平台上变得更加容易,否则这些平台将缺少文件支持。

#5 – 没有环境变量

环境变量通常用于保存关键配置数据,以方便用户。环境变量指定的配置选项不需要在每次启动应用程序时在命令行上重复。由于 MILS 环境不为用户提供设置环境变量的能力,因此这种便利性通常不可用。相反,MILS Java 应用程序通常以命令行参数的形式接收配置数据。

Java降低了成本,增加了MILS软件系统的可靠性

在 MILS 操作系统分区中启用 Java 开发非常有意义。虚拟机技术(如Atego Perc Ultra)使得在MILS上运行标准版Java成为可能,为利用多个独立安全级别的项目提供成本节约和可靠性优势。

审核编辑:郭婷

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

    关注

    68

    文章

    11365

    浏览量

    226320
  • 操作系统
    +关注

    关注

    37

    文章

    7452

    浏览量

    129703
  • JAVA
    +关注

    关注

    20

    文章

    3014

    浏览量

    116997
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    i.MX 8M Plus 上如何这些自定义分辨率添加到内核或设备树的指导?

    您好,我在i.MX 8M Plus我需要在3840x726@60hz and 3840x1080@60hz. 这些在 Weston 中不可用,所以我相信我需要修改内核。谁能提供有关如何这些自定义分辨率添加到内核或设备树的指导? 谢谢!
    发表于 05-18 08:16

    docker-ce 添加到 yocto LLDP 5.15-71 中,显示错误如何解决?

    我们正在尝试 docker-ce 添加到 yocto LLDP 5.15-71 中,但它显示以下错误: 您对ubuntu和yocto软件包冲突问题有任何解决方案吗? bitbake
    发表于 04-16 06:34

    实时·强生态:鸿道Intewell硬实时操作系统

    产业链,核心都取决于底层操作系统。 鸿道 Intewell 硬实时操作系统,以微秒级硬实时性能为根基,以全栈国产化、全行业覆盖的强生态为支撑,为工业控制、机器人、轨道交通、能源电力、医
    的头像 发表于 04-03 17:24 3071次阅读
    硬<b class='flag-5'>实时</b>·强生态:鸿道Intewell硬<b class='flag-5'>实时</b><b class='flag-5'>操作系统</b>

    国产工业操作系统选型指南:硬实时、功能安全与生态怎么选

    、能源电力等关键领域的连续运行,都离不开一款适配场景、性能过硬的工业操作系统。 当前,国产工业操作系统百花齐放,但企业选型时往往陷入“参数堆砌”的误区,忽略了硬实时性能、功能安全等级与生态兼容性三大核心诉求——这三
    的头像 发表于 03-04 09:48 1200次阅读

    操作系统体系结构

    内核。   大内核系统操作系统的主要功能模块都作为一个紧密联系的整体运行在核心态,从而为应用提供高性能的系统服务。因为各管理模块之间共享信息,能有效利用相互之间的有效特性,所以具
    发表于 01-15 08:19

    CW32L011支持哪些实时操作系统

    CW32L011支持哪些实时操作系统
    发表于 11-17 06:51

    单片机的操作系统

    单片机操作系统主要分为实时操作系统(RTOS)和嵌入式操作系统两类,以下是常见选择: 实时操作系统
    发表于 11-14 06:18

    嵌入式实时操作系统的特点

    实时嵌入式操作系统(Real-Time Embedded Operating System)是专门设计用于嵌入式系统实时操作系统。嵌入式
    发表于 11-13 06:30

    如何“同步scons 配置至项目”功能添加到编译步骤中?

    我想将rt-thread studio的“同步scons配置至项目”功能添加到编译前步骤中 但是我不知道这个功能执行了什么指令,在构建前步骤中应该输入什么指令,用”scons”命令无法实现
    发表于 09-22 07:39

    如何选择合适的实时操作系统

    选择合适的实时操作系统(RTOS,Real-Time Operating System)可能会影响你在不同行业的职业发展路径。
    的头像 发表于 09-09 14:47 1342次阅读

    鸿道Intewell:以创新国产实时操作系统助力多产业发展

    鸿道Intewell操作系统是一款面向工业场景的国产实时操作系统,采用弹性微内核架构,具备强实时性、确定性调度和混合关键系统能力。其技术架构
    的头像 发表于 07-02 15:21 752次阅读
    鸿道Intewell:以创新国产<b class='flag-5'>实时</b><b class='flag-5'>操作系统</b>助力多产业发展

    鸿道Intewell实时操作系统有哪些应用场景

    鸿道Intewell工业操作系统作为一款国产实时操作系统(RTOS),在工业领域因其高实时性、高可靠性和强定制化能力,被广泛应用于对系统响应
    的头像 发表于 06-26 10:15 948次阅读

    零延迟响应:安卓工控机如何用实时操作系统(RTOS)赋能工业控制

    在工业4.0时代,工业控制系统实时性的要求已突破毫秒级门槛,传统操作系统因任务调度延迟、中断响应不确定性等问题,难以满足精密运动控制、闭环反馈调节等场景需求。安卓工控机通过集成RTOS(实时
    的头像 发表于 06-09 15:49 1552次阅读

    开源鸿蒙星载实时操作系统标准的制定与意义

    近年来,微纳卫星凭借低成本、高灵活性成为全球航天领域的重要发展方向。然而,传统微纳卫星受限于平台规模,难以搭载常规操作系统,可靠性与实时性存在短板。
    的头像 发表于 06-05 14:37 1289次阅读

    揭秘LuatOS:实时操作系统RTOS核心库的关键技术剖析!

    电机控制、传感器采集等实时数据处理场景。 在LuatOS开发中, 用于实时操作系统(RTOS)相关功能的核心库 ——提供了定时器管理、系统控制、内存监控、路径配置等底层
    的头像 发表于 05-21 16:02 836次阅读
    揭秘LuatOS:<b class='flag-5'>实时</b><b class='flag-5'>操作系统</b>RTOS核心库的关键技术剖析!