读保护_混合ASIL系统中不同安全等级模块间的边界保护

bdf9bd33c0418578b1b055d17461aded.png

01

功能安全组件的软件开发

针对ISO 26262对功能安全软件研发的要求,AUTOSAR将功能安全需求进行了具体拆分。当前的AUTOSAR规范囊括了诸多功能安全组件软件开发的需求概念。

在AUTOSAR系统设计的架构中, 从系统功能设计到ECU功能实现,每个功能特性都需要逐一抽取并分配到对应ECU(如图1所示),会出现部分功能模块需要较高安全等级的情况。按照汽车安全完整性等级的要求, 即使绝大多数的功能与安全无关,ECU的所有软件也需要根据所要求的最高ASIL等级进行开发。典型案例是仅仅一个功能模块需要ASIL D等级,但是整个ECU都需要按照ASIL D等级进行开发,这种情况称之为“ASIL提升效应”,会导致额外的研发工作量。为了避免这种情况, ISO 26262允许不同ASIL等级的软件模块共存,不过需要充分证明这些模块之间不存在不期望的交互。这种系统称之为混合ASIL系统,采用软件分区的方式来实现,同时确保不同等级模块间的“Freedom From Interference,FFI“(免于干扰)。

b2bc02b25093c4cef3ef2f678a69a8ab.png

图1: 混合ASIL系统ECU的功能模块分配

混合ASIL系统的设计中,不同模块之间的交互越少越好。系统通过将功能模块进行拆分的形式进行软件分区,在分区之间做边界保护,防止故障传递导致的相互影响,至少做到检测到故障的存在,并将其通知给ASIL软件模块,这样系统可以就此采取一些安全措施。这意味着只将功能安全相关的软件模块及边界保护部分开发成较高的安全等级即可,其他部分仍可保持较低安全等级(如QM),软件交互如图2所示。

86028c4830f0836320d4b89739a48a99.png

图2:ASIL 模块和QM模块共存时的边界保护

ISO 26262 对软件模块之间的交互进行了分析并提出了免于干扰的需求,具体落实到软件的边界保护包括:内存越界保护,运行时序保护,端对端通信保护。

02

内存越界保护及推荐配置

分区可用于抑制故障以避免模块间的故障传递。在混合ASIL系统中,不同安全等级软件模块之间的交互决定了模块间的相互影响,内存越界保护是实现软件模块之间边界保护的重要途经,主要使用微控制器的内存保护单元(Memory Protection Unit,MPU)对软件内存区域的访问进行限制。根据功能安全的要求,微控制器执行保护和模块间上下文切换的软件必须具备最高安全等级,即ASIL D等级。在此简要介绍MICROSAR解决方案通过OS为软件分区所提供的Memory Protection常见特性及使用简介。

Memory Protection Unit

在MICROSAR 解决方案中,OS  SC3/SC4(Scalability Classes )具备Memory  Protection 功能特性,可以分别为OS Application 和OS Core  配置其对内存地址及外设的访问权限。一般来讲,建议将ECU中同一安全等级的软件模块放在一个OS Application中,通过Memory Protection 的设置实现不同安全等级软件模块间的分区,并通过对不同区域设置访问权限来达到限制安全等级较低的软件模块对其他软件模块的访问。Memory Protection 的实现需要MCU具有Memory Protection System,具备MPU。通过MPU的配置,软件模块将具备对不同内存区域的不同访问权限,主要包括RAM/ROM以及外设寄存器的访问权限。例如,通过限制低安全等级软件模块对高安全等级软件模块的Flash段/RAM段访问权限,可有效防止低安全等级的软件模块故障对高安全等级模块产生级联性故障威胁。

MPU的配置是通过设置多个MPU Region来实现的,每个MPU Region的可配置选项包括:被保护区域起始/结束地址,访问权限(读/写/执行),所属MPU分类,Region Owner,以及有效ID等。一般来讲MPU分两类:System MPU和Core MPU。System MPU 主要存在于多核系统中,用于对各个Bus Master 设定内存区域的访问权限。一般System MPU在系统启动时设定好,在软件运行过程中不被重新设置,不会在软件运行过程中动态更改Bus Master 对内存的访问权限。Core MPU 是核内MPU,简称CMPU,一般每个核都具备一定数量的CMPU,可以为运行在该核上的OS Application/Task/ISR分别设定内存区域及外设寄存器的访问权限,从而实现软件模块分区。访问权限包括读/写/执行权限,可根据内存区域存储内容进行设定。在OS运行过程中,CMPU可以随着Application/Task/ISR的切换而动态变更。当各OS Application的权限被设定好后,OS会在OS Application切换时对MPU相关寄存器进行重新初始化,并设置成即将切换到的OS Application权限。当出现访问超出MPU允许权限范围时,MCU Exception会被触发并进入其相应的OS处理函数,用户可以根据情况Shutdown OS 或选择进入安全模式,从而有效阻止软件故障的发生。

推荐MPU配置

在OS SC3/SC4中,OS Application分两类:具备最高安全等级的OS Application可以设定为Trusted Application,其他不具备Trusted 属性的Application属于Non_trusted Application。OS和Trusted  Application 运行在Supervisor Mode下,Non_trusted Application 则运行在User Mode下。推荐为Trusted  Application设定除stack 区域以外的所有地址范围的读/写/执行权限,包括外设地址。为Non_trusted Application设定属于其私有的Code Flash和RAM段的访问权限,以及共享数据区域的读写权限。在软件运行过程中,OS会占用一个MPU Region来实时监控当前堆栈使用情况。当Task/ISR切换时, OS会重新初始化该MPU Region以进行堆栈溢出的监控。相对于通过堆栈末尾标志的改写情况来判断堆栈溢出的方式,使用MPU进行堆栈溢出保护更加及时。此外,OS 提供一些访问外设寄存器的API,供运行在User Mode下的OS Application调用,并使用OS的Supervisor Mode访问外设寄存器。常见应用情况为低安全等级的MCAL模块调用OS API访问外设。用户使用时需要对外设地址设定相应的Peripheral Region,其配置选项包括起始/结束地址。

用户可以根据ECU软件各模块安全等级情况,将其合理划分到多个OS Application中,依据MCU资源设定MPU,进而实现不同安全等级的软件模块协同工作,并把故障概率降到允许范围内的需求。

03

运行时序保护

进一步的检测方式可以通过监控ASIL软件模块的运行时序来实现,包括代码执行顺序和时间间隔等。实现方式为软件看门狗管理模块配合安全的硬件看门狗进行监控:当软件检测到任何不符合预期的运行时序,都将系统切换到安全状态,例如Fail Safe模式。这不能防止错误的发生,但是可以检测到错误并阻止其造成进一步的人身安全伤害。

运行时序保护采用3种形式的监控来实现:

  • Alive Supervision以心跳形式监控程序执行情况。例如监控周期处理函数是否按照期望周期运行,可以设置一个Check Point(CP),在周期函数的某个位置触发该CP以通知看门狗管理模块该函数已执行,同时适当配置监控时间参数以做到一定程度的监控。

  • Deadline Supervision监控程序中两点之间的运行时间间隔。设置两个CP并将其分别放在需要监控的程序位置,看门狗管理模块会根据二者分别到达的时间测量得到两点之间的执行时间,与配置的时间参数进行对比查看是否在期望值范围内,从而起到监控作用。

  • Program Flow 监控程序执行顺序。设置多个CP并分别插入不同的代码位置,看门狗管理模块通过各CP到达的顺序监控程序的执行顺序。

看门狗管理模块建立监控单元Supervisor Entity(SE),并通过监控其状态来判断程序运行情况,每个SE通过观测CP的到达情况判断软件执行情况。如果出现异常情况则在一定的反应时间内做出处理,将系统调整进入Fail Safe状态。开发人员通过设计一定的Fail Safe模式预防故障造成进一步的安全问题。

04

端对端通信保护

ISO26262中列举了信息交互中的相关错误格式,AUTOSAR规范则定义了通过端对端保护来检测到这些错误的算法。与程序运行时序监控一样,最终目的都是检测出故障,并在故障导致进一步安全问题之前控制局面,将系统控制在安全状态下。端对端通信保护主要使用序列号和校验和对数据进行保护,通过对二者的检测判断是否有数据丢失、错乱、重复等问题出现。此外,高安全等级的端对端保护模块(End to End,简称E2E)需要配合安全的RTE(Runtime Environment)模块进行使用。

05

ASIL D BSW 的优势

前文描述的混合ASIL系统所使用基于MPU的内存越界保护可以降低软件模块间的干扰,是非常强大的保护机制。但是不同安全等级软件模块之间的交互会导致系统重新初始化MPU硬件寄存器。这种交互越多,系统在上下文切换上消耗的运行时间就越高,从而严重影响系统性能。针对此问题的解决方案是完全采用ASIL D等级的BSW软件模块,同时开发高安全等级的应用软件,这样各个模块之间的交互就可以直接进行,不需要进行不同软件分区的MPU处理。目前MICROSAR解决方案大部分软件模块已经达到ASIL D等级,如图3所示。

1142cc08e09e81a487ec80878b3c2791.png

图3:MICROSAR解决方案各模块安全等级

06

总结

目前,根据AUTOSAR和ISO 26262,ASIL D等级的软件开发方法已经比较明确,规范内容覆盖了混合ASIL系统以及ASIL D BSW系统。用户在设计ECU软件时,不必假定每个BSW都有功能安全需求,可以根据实际情况进行设计,在确保功能安全需求实现的情况下,更好地提高系统性能。

a7ac53bbb9a6e95106712e5184b64be7.png

扫码关注我们

微信号|Vector维克多

官方网站|vector.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/527988.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android studio javah不是内部或外部命令,Android Studio 环境搭建参考,jdk10javac命令提示不是内部或外部命令...

https://blog.csdn.net/qq_33658730/article/details/78547789 win10下Android Studio和SDK下载、安装和环境变量配置http://yanmin99.com/ android-0基础从入门到精通环境变量ANDROID_HOMEE:\Program Files (x86)\Android\SdkJAVA_HOMEE:\Program Files\Java\jdk1.8.0_161TOMC…

starops 云效运维 文档_阿里云 SAE 携手云效助力「石家庄掌讯」持续交付、降本提效...

背景石家庄掌讯信息技术有限公司创立于2009年,是一家提供企业信息化咨询、创新型软件产品、电商代运营服务,标准化管理、快速发展的高新技术企业。当前公司正处于企业互联网市场突破转型重要阶段,希望将更多精力转移到业务创新,提…

android 6.0 数据库权限,Android超清晰6.0权限申请AndPermission

Android超清晰6.0权限申请AndPermission的具体实现代码,供大家参考,具体内容如下前言这是我经常使用的框架,原因:1.思路清晰2.实现方便开始准备工作导包compile com.yanzhenjie:permission:1.0.7然后就可以使用了,贼简…

setdata改数组里的值 微信小程序_今日艰难笔记redux小程序随记

redux的前身Flux https://zhuanlan.zhihu.com/p/38050036Flux的一整套抽象(action,dispatcher,store),在单向数据流的基础上可以提高应用的可维护性和代码的可预测性。然而,全局action多store的架构面对复杂的应用依然不能很好地解…

绿盟科技鸿蒙系统,华为 X 绿盟科技,打造“云原生安全新生态”

全文共914字,阅读大约需要2分钟。在数字化转型加速、政策法规密集出台、合规与刚需双轮驱动下,中国网络安全市场实现了快速增长。2020年绿盟科技(300369)实现营业收入20.1亿元,同比增长20.3%,成绩的背后,离不开基于生态…

竞赛数据清洗缺失值_Kaggle 数据清洗挑战 Day 1 - 手把手教你五步处理缺失值

前些天报名参加了 Kaggle 的 Data Cleaning 5天挑战,5天的任务如下:Day 1: Handling missing valuesDay 2: Data scaling and normalizationDay 3: Cleaning and parsing datesDay 4: Fixing encoding errors (no more messed up text fields!)Day 5: Fi…

html5中行内样式写法,react怎么写行内样式?

react怎么写行内样式?下面本篇文章给大家介绍一下react 行内样式几种写法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。react 行内样式几种写法法一这是评论列表组件1法二const title{color:"red",fontSize:3…

程序左上角的字_微信内测7.0.7新版本,小程序迎来大改动!

最近几个月来,微信就跟打了鸡血一样不断更新了多个版本上线多个新功能。此前7月末,微信安卓7.0.6带来了将收藏笔记,文件预览等页面设为浮窗的功能,目前最多支持5个文档或笔记设为浮窗。这不,距离微信7.0.6 for Android…

html 跑步比赛小游戏,疯狂趣味跑步竞赛3D

疯狂趣味跑步竞赛3D是一款跑酷类型的休闲游戏,游戏在整体画面上搭配了最新的技术,使得游戏画面看起来非常华丽,人物的建模也很可爱。玩家在游戏中可以在各种风格的跑道上进行比赛,还可以在线跟别的玩家进行匹配。喜欢这款游戏的快…

得到进程id_搞懂进程组、会话、控制终端关系,才能明白守护进程干嘛的?

守护进程概念:守护进程,也就是通常所说的Daemon进程,是Linux中的后台服务进程。周期性的执行某种任务或等待处理某些发生的事件。Linux系统有很多守护进程,大多数服务都是用守护进程实现的。比如:像我们的tftp&#xf…

gpedit msc组策略面板 win10在哪里_Win10家庭版找不到本地组策略gpedit.msc解决办法...

在Win10的各个版本中,其中家庭版默认是不提供组策略功能的,不提供不是说没有这个功能,而是系统默认对其进行了限制,需要使用该功能可以手动添加,请参考以下步骤:本地组策略编辑器是一个 Microsoft 管理控制…

在计算机管理中创建不同的用户,为什么在计算机管理员里创建密码密码总是不符合要求...

忘记管理员密码怎么办之第一招:删除sam文件对sp3以前的工作组模式windows2000,删除winntsystem32config文件夹下的sam文件(无后缀)之后,本机所有用户丢失,用administrator登录,密码空即可忘记管理员密码怎么办之第二招:O&O软件…

xsslabs靶机解题_web 攻击靶机解题过程

sql注入靶机攻击过程请参考https://pentesterlab.com/exercises/from_sqli_to_shell/coursehttp://www.sohu.com/a/126855490_472906xss靶机的攻击过程请参考https://pentesterlab.com/exercises/xss_and_mysql_file/coursenikto –h 192.168.1.129sqlmap -u "http://192.…

w7计算机的收藏夹里弄出桌面,Win7电脑桌面的便签怎么弄出来?

原标题:Win7电脑桌面的便签怎么弄出来?可能很多人都不知道,作为常用的一款电脑桌面操作系统,Windows 7上除了有Txt记事本和Office办公文档外,还有便笺小工具呢!这款便笺小工具虽然很不起眼,但是…

jenkins组权限_JENKINS针对不同项目组对用户进行权限分配-阿里云开发者社区

权限需求因JENKINS上存有de(开发)、te(测试)、re(预发布)等三个不同环境的项目,同时因为项目需求,需要对不同的开发及测试人员配置不同的jenkins权限,即以项目为单位,对不同人员进行不同权限配置,要求如下:…

native html5 区别,H5与Native优劣对比

即将启动爱奇艺商城(mall.iqiyi.com)移动端的native化。项目开始之前当然要梳理下为什么做native,究竟H5跟native比有什么劣势,而H5又为什么占比那么高并且有“Html5才是未来”的说法呢。下面简单理下对比。H5,即Html5,指第5代HTM…

centos7限制cpu使用_Centos7 - 使用cgroups限制进程资源

cgroups简介控制组(cgroups)是一个linux内核特性,它允许你指定内核应该如何给一个进程组分配特定的资源。你可以用cgroups指定在某一个组中的进程使用多少cpu时间、系统内存、网络带宽、或者这些资源的组合。(选自马哥教育的微信公众平台)cgroups使用# 下载一个可以…

html制作圆盘时钟,jquery+html5制作超酷的圆盘时钟表

自己封装的一个用HTML5jQuery写的时钟表代码:超酷数码钟表//引用的是在线jquery地址,如果不行请自行下载切换(function($){$.fn.drawClock function(options){var mainId $(this);//设置默认参数var defaultOptions {width: 300px,height: 300px,marg…

清华大学python镜像_使用清华开源镜像安装tensorflow

谷歌开源项目Chromium的源码获取与项目构建(Win7+vs10/vs13)转自:http://blog.csdn.net/kuerjinjin/article/details/23563059 从12年那会儿开始获取源码和构建chromium项目都是按照那时候的官方要求用w ...Struts2的Action中如何操作作用域对象得到作用域对象…