打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
安全软件中的分区概念

在上一篇公众号文章《集成模块化航电系统IMA架构》中分享了集成模式化架构IMA中的一些技术特点,本篇来谈谈其中一个最重要的技术——分区。

分区是提供不同软件之间的隔离,从而防止一个软件故障对其它软件的影响,最初是通过分配不同应用功能的软件模块到不同的硬件上,现在出现了在同一个硬件平台上运行不同的软件。

在功能安全软件标准的开发要求中,如果没有考虑专门的分区技术,那么不同安全等级的软件需要按照其中最高等级的软件要求来开发。这在汽车、轨道交通、航空航天、工业领域中要求是一致的,但实际执行起来,第一,缺乏经济性,高安全等级软件的开发要求是非常严格的,不太关键的软件也按照安全软件软件的要求来走,会投入更大的资源成本,在总体人员投入有限的情况下,还会分散对于真正安全关键软件的投入;第二,非关键软件的故障会对关键软件产生影响,从而导致安全软件发生故障不能正常运行。

例如轨道交通的车载信号控制中,列车超速防护ATP功能为SIL4高安全等级软件,列车自动驾驶ATO功能为SIL2低安全等级软件,当ATO功能出现故障时,即使是输出超出速度防护曲线的车速,或者输出了不应开启的车门开门指令,都有ATP软件作为安全监督,保证整个系统的安全。如果ATP和ATO软件集成在同一平台上,除ATO软件要按照高安全等级要求过程开发外,还要对ATO软件对ATP软件的时间和空间影响做特别的安全设计。

在汽车电子领域,目前的典型应用是驾驶中控屏和车载多媒体屏的一体化,采用一芯多屏方案,中控屏用于驾驶信息的实时显示,常用QNX、Freertos等实时操作系统,多媒体屏则使用QNX、Android、WinCE等系统。

分区的出现,使不同安全等级的软件运行于同一个硬件平台成为可能,能够做到时间分区和空间分区,则达到了不同软件独立运行互不影响。

分区基本原则

软件分区的设计要求有哪些呢,有以下基本原则:

  • 一个分区的软件不能破坏其它分区的代码、I/O和数据存储空间;

  • 一个分区的软件只能在给它分配的时间内使用共享的处理器资源;

  • 一个分区的软件只能使用给它分配的共享I/O资源;

  • 一个分区的软件所基于的硬件平台故障不能影响其它分区。

如果违背了分区原则,会导致哪些问题呢,以下是较严重的影响:

  • 软件造成了对其它分区软件使用数据的篡改,这些数据可能是安全关键数据;

  • 软件占用了其它软件的处理器时间,造成安全软件的执行时间超出了规定要求;

  • 软件崩溃造成了系统死机,使得其它分区软件无法执行;

  • 软件错误地对其它分区的I/O外设进行控制,如篡改了输入数据,导致安全功能使用了错误的数据,或者独占了通信外设资源,使得其它分区的软件无法使用。

从软件设计来说,软件缺陷是客观存在的,随着软件复杂度的增加,出现以上各种问题的可能性也会增大,因此分区技术要考虑的是如何检测错误和容错,需要依赖于硬件资源、操作系统这些底层技术特性,在FAA发布的《Partitioning in Avionics Architectures: Requirements, Mechanisms, and Assurance》报告中,对航空航天领域IMA架构使用的分区技术要求、设计机制做了分析,以下内容为技术报告中关于分区技术的一部分要点。

内存管理单元(MMU)

MMU提供的硬件保护是保证空间分区的一种方法,在操作系统层与内存之间起连接桥梁的作用,使得软件无法直接访问物理地址,而是访问虚拟地址,通过MMU的一个转换表去访问物理地址。

MMU对物理地址与虚拟地址的转换

CPU支持两种操作模式“user/supervisor”,当它处于“user”模式时,所有对内存地址的访问都要通过MMU中的表格进行检查或转换。操作系统内核软件管理着MMU表,以便在每个分区中可以读写的内存位置是不相连的(除了可能用于分区间通信的某些位置)。内核也使用MMU来保护自己不被普通分区的软件修改,并且必须注意正确管理处理器的user/supervisor模式的区别,以确保MMU提供的仲裁机制不能被绕开。

一个分区的软件会访问处理器的寄存器,如累加器和索引寄存器以及内存。在分区控制中,使一个分区的软件执行一段时间,然后另一个分区被控制,以此类推;当一个分区暂停,另一个分区启动时,内核首先将所有处理器寄存器的内容保存在专门用于暂停的分区的内存位置,然后用为下一个执行的分区保存的值重新加载寄存器(包括MMU中那些决定哪些内存位置可以访问的寄存器)。分区中的软件在它离开的地方继续运行,并且无法知道它正在与其他分区共享处理器。

处理器运行必须对其所有的寄存器进行精确的规范,因为寄存器的保存和恢复或重新初始化不应忽略可见的次要寄存器,如条件代码和浮点/多媒体模式,以及隐藏的寄存器,如那些与管道和缓存相关的寄存器,重新隐藏。另外,处理器经常有设计上的缺陷或文档上的错误和遗漏,很难完美地做到。

以上机制利用处理器和MMU,和内核软件设计。看起来很简单,但不幸的是,商用的处理器、它的MMU和相关的功能,如内存缓存,一般都是为高性能和广泛的功能而设计的,不是为了安全分区而做的。处理器性能速度通常是人们所期望的,但MMU和高速缓存控制器的功能通常超过了嵌入式系统的要求;尤其是MMU,被设计成提供一个灵活的虚拟内存,并包含大型的关联查找表。

对于分区技术来说,一个简单的固定内存分配方案就足够了。后者也比传统的百万晶体管MMU更不容易受到单次事件颠覆(SEU)造成的位中断的影响。然而,由于它们通常与处理器高度集成,用更简单的MMU和高速缓存器取代MMU和高速缓存器是困难的,甚至是不可能的,在硬件选择过程中应考虑到这个问题。

软件故障隔离SFI

除了硬件支持功能,另一个可选择的技术是软件故障隔离(SFI),在每个内存访问入口上对代码增加校验检查,确认内存内目标的正确性。类似于高级编程语言中的数组边界检查,只是它适用于所有的内存引用,而不仅仅是那些索引到数组的引用。  通过检查分区中软件的机器代码,可以确定一些内存引用和跳转的目的地,从而静态地检查它们是否安全。间接通过寄存器的内存引用不能被静态检查,因此在程序中加入指令,在运行时检查寄存器的内容,就在使用之前。通过使用更详细的静态分析或程序验证技术(例如,确保索引寄存器在上次检查后没有被改变),有可能将运行时检查的数量降到最低。

与利用MMU的分区相比,SFI技术优点是它对处理器硬件依赖性降低,但需要增加软件设计的成本,和额外的软件开销,还需要用到一些软件工具进行辅助设计。

SFI也会用于计算机安全领域,将不受信任的组件隔离到单独的保护域中,并仅在域与系统的其余部分之间提供受控交互。SFI通过在内存和控制传输指令之前插入动态检查来建立逻辑保护域。与其他隔离机制相比,它具有高效率的优势,并且不依赖于特殊的硬件或操作系统支持。应用于隔离操作系统内核扩展、隔离浏览器中的插件以及隔离 Java 虚拟机中的本机库。

分区间的通信

将数据从一个分区传递到另一个分区的方法是将其从属于第一个分区的内存中的缓冲区复制到第二个分区的内存中的单独缓冲区。因为只有内核可以访问两个分区的内存,所以它需要复制数据,而且,由于是在没有内存保护的情况下运行,必须仔细检查,防止缓冲区超限。

一个更有效的方案是在内存位置使用一个单一的缓冲区,这些位置属于发送分区可以写入和接收方可以读取的位置(MMU和SFI形式的内存保护都可以做到这一点);然后数据可以由发送分区复制到共享缓冲区,而无需内核的积极参与。接收分区必须假设发送分区可以在其共享缓冲区的任何地方写入任意数据,只要它有控制权,其验证必须在这个假设下进行。如果为每个传输方向使用单独的缓冲区,似乎是最干净的,但双向缓冲区也可以接受。然而,重要的是,每一对分区都要使用单独的缓冲区(否则,分区A可能会覆盖C的单一输入缓冲区中B的数据)。

将分区间的通信限制在预定的范围内是很重要的:一个分区应该能够向另一个分区发送数据,只有当该通信在系统配置的规格中被授权时(并且接收分区必须有一个缓冲区来接收它)。定义不同分区的通信机制,按照绝对地址进行区分,导致系统架构僵化不够灵活,一般不采用,采用功能区分地址则限制了重用和重新配置的机会。

最好的方案可能是,分区使用所提供或预期的数据或服务类型作为相关端口的名称(例如,'在我的air-data-samples端口上发送这个数据',或者'给我一个air-data-samples');这些名称与分区间通道的绑定可以在系统配置时完成,也可以在运行时完成,不需要发送方和接收方了解从哪里获得,只要它们知道自己要得到什么资源。这种情况下,类似于发布-订阅的数据分发架构;这为动态重新配置提供了很好的支持,但它在安全关键系统中的应用仍在研究中。

小结

从IMA架构分区使用的几种关键技术来看,MMU、SFI、分区间通信的原理是比较简单的,这些技术先于安全关键系统的软件应用出现,MMU应用于高性能处理器的内存管理,软件故障隔离SFI使用于计算机安全领域,分区间通信可以使用的发布-订阅服务在分布式通信领域应用。集成模块化IMA架构使用了这些技术用于安全分区的保护时,基于应用软件的安全完整性要求,是要专门去分析设计。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
【学术论文】基于ARMv7-A架构的虚拟存储系统技术研究
CPU体系架构
willforce的专栏
ARMv7-A 处理器窥探
Linux 内存寻址之分段机制
软件定义汽车 (第十一集) : 硬件隔离与软件虚拟化
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服