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

    文章

    11116

    浏览量

    218301
  • 操作系统
    +关注

    关注

    37

    文章

    7190

    浏览量

    126230
  • JAVA
    +关注

    关注

    20

    文章

    2990

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

    如何VCP功能添加到UVC应用程序代码中?

    我正在尝试 VCP 功能添加到 UVC 应用程序代码中。 我的平台是CYUSB3011-BZXC UsbUart 示例代码已添加到现有的 UVC 应用程序中。 初始化和主循环
    发表于 05-16 06:41

    什么样的才叫实时工业操作系统

    实时工业操作系统的核心是在严格时间约束下保证任务执行的确定性、可靠性和安全性,通常需通过专用架构、实时调度算法和工业级认证来满足严苛的工业环境需求。选择时需根据具体场景的实时性等级(硬
    的头像 发表于 04-17 10:09 ?377次阅读
    什么样的才叫<b class='flag-5'>实时</b>工业<b class='flag-5'>操作系统</b>

    如何ENWF9408AVEF Wi-Fi模块添加到1064EVK wifi_cli SDK项目中?

    如何 松下 ENWF9408AVEF (NXP 88W8977) Wi-Fi 模块添加到 1064EVK wifi_cli SDK 项目中? 使用不同的 88W8977 定义初始化失败
    发表于 04-02 07:50

    SEGGER发布下一代安全实时操作系统embOS-Ultra-MPU

    2025年3月,SEGGER发布满足周期定时分辨率要求的下一代安全实时操作系统embOS-Ultra-MPU,该系统基于成熟的embOS-Classic-MPU和embOS-Ultra操作系统
    的头像 发表于 03-31 14:56 ?606次阅读

    实时操作系统RTOS选型指南及实例分析

    鸿道Intewell操作系统是由科东软件自主研发的新型工业操作系统,历经30多年研发积累,采用微内核架构和自主研发的Hypervisor虚拟化技术,保证系统实时性、高可靠性。鸿道In
    的头像 发表于 02-27 15:21 ?672次阅读

    鸿道Intewell操作系统的Linux实时拓展方案

    鸿道Intewell操作系统是科东软件自主研发的新型工业实时操作系统,历经30多年研发积累,采用业界领先的微内核架构,具备高实时、高安全及强扩展的特性,是目前国内唯一通过汽车、工业控制
    的头像 发表于 02-27 10:08 ?444次阅读
    鸿道Intewell<b class='flag-5'>操作系统</b>的Linux<b class='flag-5'>实时</b>拓展方案

    鸿道Intewell操作系统的Windows实时拓展方案

    鸿道Intewell操作系统的Windows实时拓展方案,即鸿道Intewell-Win构型,是一款专为工业控制领域设计的国产操作系统,支持Windows实时扩展,具备以下特点和优势:
    的头像 发表于 12-24 17:40 ?614次阅读
    鸿道Intewell<b class='flag-5'>操作系统</b>的Windows<b class='flag-5'>实时</b>拓展方案

    基于国产化鸿道Intewell操作系统的高性能实时运动控制解决方案

    目前国产化高实时运动控制达到了什么样的控制水平呢?软件+操作系统实时控制如何实现呢?下面,让我们一起看看基于国产化鸿道Intewell操作系统的高性能
    的头像 发表于 12-05 16:03 ?538次阅读

    国产实时操作系统:和RT-Linux,Zephyr的实时性对比

    RT-Thread在工业领域、高安全高可靠性领域,实时操作系统在其中发挥着重要的作用,从毫秒级,微秒级实时响应,决定着装置系统能满足何种严苛的要求。RT-ThreadSmart
    的头像 发表于 11-12 01:07 ?2757次阅读
    国产<b class='flag-5'>实时</b><b class='flag-5'>操作系统</b>:和RT-Linux,Zephyr的<b class='flag-5'>实时</b>性对比

    linux是实时系统还是分时操作系统

    大家平时玩单片机基本上对于?C/OS、FreeRTOS、ThreadX这些操作系统非常熟悉了,他们都属于实时操作系统(RTOS),在工业领域比较广泛;然而对于linux这样的基于时间片划分的非
    的头像 发表于 11-11 11:43 ?1242次阅读

    ARM开发板上的实时操作系统介绍

    在现代电子设备中,嵌入式系统扮演着越来越重要的角色。ARM处理器因其低功耗、高性能的特点,成为了许多嵌入式系统的首选平台。 一、实时操作系统(RTOS)概述
    的头像 发表于 11-05 11:34 ?1248次阅读

    鸿道Intewell实时操作系统MIPS架构生态:龙芯2K1000

    在当今快速发展的工业互联时代,实时操作系统(RTOS)扮演着至关重要的角色。实时操作系统为工业制造、能源电力、轨道交通、汽车电子等领域提供了高实时
    的头像 发表于 08-29 10:09 ?729次阅读
    鸿道Intewell<b class='flag-5'>实时</b><b class='flag-5'>操作系统</b>MIPS架构生态:龙芯2K1000

    简单认识RTOS实时操作系统

    RTOS(Real Time Operating System,实时操作系统)是一种专门设计用于在严格时间限制内处理任务的操作系统。它以其高实时性、多任务处理能力和资源管理能力在工业自
    的头像 发表于 08-20 11:20 ?5594次阅读