域控软件安全隔离关键技术剖析:MCU域 VS SOC域

安全隔离的需求

        功能安全开发中,软件阶段由软件V模型左边的软件安全需求SSR开始。SSR是从技术安全需求TSR中提取出软件的功能安全需求,大多数情况下具有不同的ASIL等级。

图1 功能安全软件开发V模型

        随后,软件安全需求会被分配到软件架构中的软件组件中。不同ASIL等级的软件安全需求被分配到软件组件过后,带来了级联失效的问题。若放任不同ASIL等级软件组件在一个系统中运行,可能会存在低ASIL等级软件组件失效从而引发高ASIL等级软件组件失效的风险。

        ISO26262 对软件组件之间的交互进行了分析并提出了免于干扰(Freedom from Interference)的需求,安全隔离则旨在隔离软件系统中安全相关与安全无关的软件组件,以及不同ASIL等级的软件组件。

软件内存基础

        首先让我们来了解内存的基本知识。RAM与ROM是ECU中常见的存储器类型,它们在数据存储和访问方面扮演着重要的角色。

        RAM(Random Access Memory)是一种临时存储器,用于存储计算机正在运行的程序和数据。它具有快速的读写速度和随机访问的特点。

        ROM(Read-Only Memory)是一种只读存储器,用于存储固定的程序指令和数据。ROM中的数据在计算机断电时不会丢失,因此被称为非易失性存储器。

        然而在软件视角中,软件被编译后会被分为不同的段进行存放。具体分段方式可能根据架构有细微区别在,以Tc3xx系列芯片为例,包含以下几段:

(1)已初始化的数据段

(2)未初始化的数据段

(3)只读数据段

(4)代码段

(5)task栈区

(6)启动栈区

(7)CSA区

        这些段被编译器分配到物理内存中,可能由不同的存储器来存放。每当程序需要使用某处数据或者加载某处的指令时,会根据地址来取出所需的数据或是指令进行运算,再将运算结果写入某处物理内存中。

        在这个过程中,安全隔离的目标是阻止安全无关的软件组件写入安全相关的软件组件使用的内存区域;低ASIL等级的软件组件写入高ASIL等级的软件组件所使用的内存区域。

MCU上的安全隔离模块

        MCU上的安全隔离通常借助内存分区机制和内存保护单元MPU完成。经典AUTOSAR架构中,允许对软件进行内存分区(Partition),借助内存映射(memory map)将软件组件的代码和数据划分到指定的区域内。这种方式虽然能有效地将不同ASIL等级的变量和代码分布到不同的地址范围中,但无法杜绝指针越界、数组越界导致跨区域访问的风险。

        MPU(memory protection unit)内存保护单元是一种按内存区域提供保护和隔离的硬件原件,与内存分区配合使用可以阻止不同软件分区的软件组件之间相互访问,从而达到内存隔离的效果。

        以Tc3xx系列芯片为例,MPU可以按照保护范围分为两种,一种为系统级的SMPU(System Memory Protection Unit),另一种为核心级的CMPU(Core Memory Protection Unit)。

  • 系统级的SMPU

        SMPU有时候也被称为Bus MPU,表示其工作在芯片总线上。其保护原理如图2所示,总线上所有主机对于内存的访问都会经过SMPU,当主机拥有所请求内存地址的对应访问权限(读/写)时,才能允许访问。

        Tc3xx中的Bus MPU可以维护8个地址保护区域(每个保护区域范围由两个寄存器控制),每个保护区域都记录了64个总线主机的权限。当主机访问内存区域时,首先寻找对应的区域,再根据主机TAG ID检查主机是否拥有对应的权限,检查通过后才能进行读写访问,否则会触发系统定义的故障。

        SMPU通常用于多核系统和使用DMA设备的系统,其保护范围有限,且不能覆盖所有的内存区域。

图2 SMPU保护原理

  • 核心级的CMPU

        核心级的CMPU则是每个CPU核心独有的,提供应用级别的隔离。经典AUTOSAR中,软件组件被组织成OSA(OS Application)。OSA内部存在共享资源,OSA之间则需要考虑内存隔离。

        CMPU保护原理如图3所示,CMPU隔离对象为CPU中运行的软件。CMPU也会预先划分保护区域,这通常也是内存分区的结果。对于这些内存区域,每一个在核心中运行的OSA可能都具有不同的权限。当上下文切换时,MPU的保护范围也会动态切换,以适配不同的OSA。

        同CMPU一样,只有拥有对应内存区域访问权限的OSA,才能成功完成访问,否则会触发系统定义的故障。CMPU通常拥有更多的保护区域,且能覆盖所有的内存空间。在这基础上,CMPU还支持保护集的预设,使CPU进行上下文切换时,更快地切换地址空间地MPU保护权限。一般来说,CMPU的应用更为广泛,在一些不那么复杂的系统中甚至只用CMPU就足以完成内存隔离的需求。

图3 CMPU隔离原理

SOC上的安全隔离

        相比MCU,SOC拥有更强大的性能,可以运行一些复杂操作系统(比如linux)。这种情况下,基于地址范围进行保护的MPU就显得“力不从心”了。进程是操作系统进行资源分配的基本单位,一些应用程序可能由多个进程组成,在某些场景中(比如座舱域)还需要虚拟机来运行不同的操作系统。

        因此,我们把SOC上的内存隔离场景划分为两个层级:进程级隔离、应用程序级隔离和操作系统级隔离。本文主要介绍进程级隔离。

        MMU(Memory Management Unit)是SOC中常见的硬件,用于提供进程级别的内存分配和隔离。进程在运行时,操作系统会使进程认为自己独占整个寻址空间(32位机器寻址空间为4GB),并使用连续的物理地址进行操作。但实际上,这个内存空间要么尚未分配,要么部分存在于磁盘中。并且其使用的虚拟地址会由MMU进行翻译,对应到分散的物理地址中。

        MMU的工作原理如图4所示。内存空间被划分为若干页面(Page),每个页面占用4KB内存。进程使用的连续虚拟页面被MMU翻译到具体的分散的物理页面中。

        MMU最主要的功能其实是将虚拟页翻译到物理页。那为什么MMU可以实现进程级隔离呢?

        因为MMU的翻译是基于页表进行的,页表记录了进程虚拟页到物理页的映射。操作系统为不同的进程分配的不同的页表起始地址,存储在对应寄存器中。当MMU翻译地址时,根据页表起始地址加偏移量定位到具体的页表项,进而完成地址翻译。不难看出,这种机制使得进程拥有天然隔离的零散的地址空间。

图4 MMU工作原理

安全隔离小结

        安全隔离的底层原理是避免软件对内存的不合理访问,以满足功能安全要求。硬件层面上,有MPU、MMU这样的硬件进行程序内存空间的保护和约束;软件层面上,容器化技术和虚拟化技术也能帮助用户制定更灵活的隔离策略。但并不是说实现了这些安全隔离机制就等于完全满足了安全隔离需求,还需要结合软件和系统的正确设计来共同达成目标。

        经纬恒润功能安全团队成立于2008年,系国内较早从事功能安全技术研究的团队。作为功能安全、预期功能安全国家标准委员会成员,经纬恒润的研发流程、生产流程已通过功能安全开发过程认证,功能安全开发过程达到ASIL-D,相关产品已成功服务于近百家国内外整车及零部件企业。

        经纬恒润功能安全软件团队可提供功能安全软件开发技术咨询服务,包括功能安全软件阶段流程/产品咨询、L2监控算法开发集成和L3安全机制(安全通信、隔离、监控、执行和芯片AOU)的开发集成,控制器覆盖动力域、底盘域、智驾域和车身域等。

        未来,经纬恒润将紧跟行业发展趋势和市场需求,结合自身汽车电子产品研发和国内外咨询实践,一如既往地坚持自主创新道路,为智能汽车安全保驾护航。

了解更多:请致电 010-64840808转6115或发邮件至market_dept@hirain.com(联系时请说明来自CSDN)

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

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

相关文章

AcWing-滑动窗口

单调队列模板题: 所需知识:单调队列 利用双端队列来实现单调队列; 双端队列与普通队列的不同处:双端队列删除元素时既可以删除队头又可以删掉队尾,其可以较好的维护单调队列的单调性; 双端队列的定义及…

蓝桥杯-数组切分

问题描述 已知一个长度为 N 的数组: A1,A2,A3,...AN 恰好是1~ N的一个排列。现 在要求你将 4 数组切分成若干个 (最少一个,最多 N 个)连续的子数组,并且 每个子数组中包含的整数恰好可以组成一段连续的自然数。 例如对于 4 1,3,2,4,一共有 5 种切分方法: 1324:每个单独的数显然…

卫星影像联合无人机实现农业保险全生命周期监管监测

随着科技的进步,农业保险监管系统的发展日新月异。特别是近年来,随着卫星技术与无人机技术的结合,为农业保险监管系统带来了前所未有的革新。本文将深入探讨如何利用卫星与无人机方案构建高效的农业保险监管系统,并结合实例进行说…

Dart 中 JS 互操作的历史

由于在 Dart 3.3 中达到了令人兴奋的 JavaScript 互操作里程碑,Wasm 的支持刚刚登陆当前的 Flutter 测试版。为了庆祝这一里程碑,我们回顾了 Dart 和 JavaScript 互操作性长达十年的历程。 从 Dart 诞生之初,互操作性就是一个核心重点。2011…

golangci-lint 报错

File is not gci-ed with --skip-generated -s standard,default (gci) golangci-lint 报错上面的错解决办法: 1. 文件换行需要换成"LF" 而不是"CRLF" ---->>> 我用的goland IDE,随便在这个文件删除一个空行&#xff…

20240412,引用,函数高级

老子什么时候能找到一个很爱我还和我一样喜欢看日出日落的对象 一&#xff0c;引用 给变量起别名&#xff0c;数据类型 & 别名原名&#xff1b;引用一定要初始化&#xff0c;初始化之后不能更改 #include <iostream> using namespace std; int main() {int a 10;i…

导入导出之使用EasyExcel快速进行表格导出

使用 EasyExcel 快速进行表格导入导出操作 在日常工作中&#xff0c;表格的导入和导出是常见的需求。针对这种情况&#xff0c;EasyExcel 提供了便捷的解决方案&#xff0c;可以快速地实现 Excel 表格的导入和导出操作。本文将介绍如何使用 EasyExcel 进行表格导出&#xff0c…

Linux权限的讲解

目录 1、用户的分级 2、用户的身份 3、文件的权限属性 3.1 文件类型 4、chmod 4.1 用八进制形式更改权限 5、chown与chgrp 6、umask 结语 前言&#xff1a; 在Linux下虽然一切都是文件&#xff0c;但是由于文件的权限不一样&#xff0c;导致访问或更改文件存在局限性…

Web App 入门指南:构建预测模型 App 的利器(shiny)

Web App 入门指南&#xff1a;构建预测模型 App 的利器 简介 近年来&#xff0c;随着机器学习和人工智能技术的快速发展&#xff0c;预测模型在各行各业得到了广泛应用。为了方便地部署和使用预测模型&#xff0c;将模型构建成 Web App 是一种非常好的选择。Web App 无需下载…

Bitmap OOM

老机器Bitmap预读仍然OOM&#xff0c;无奈增加一段&#xff0c;终于不崩溃了。 if (Build.VERSION.SDK_INT < 21)size 2; 完整代码&#xff1a; Bitmap bitmap; try {//Log.e(Thread.currentThread().getStackTrace()[2] "", surl);URL url new URL(surl);…

python|map

# 定义一个平方函数 def square(x): return x ** 2 # 创建一个数字列表 numbers [1, 2, 3, 4, 5] # 使用 map 函数将平方函数应用于列表中的每个元素 squares map(square, numbers) #将numbers绑定上一个函数 print(type(square)) print(square)# 将结果转换为列表…

【CSS】背景模糊,不模糊主体文字

问题 背景模糊&#xff0c;不模糊文本 效果图 t1 t2 t3 实现思路 自定义css变量存储图片地址&#xff0c;方便后期更改使用伪元素实现背景模糊达到不遮挡主体文本 transform: scale(1.5)吧图片放大1.5倍&#xff0c;避免设置背景模糊出现白边。 overflow: hidden 超出隐藏&…

上海人工智能实验室的书生·浦语大模型学习笔记(第二期第三课——下篇)

书生浦语是上海人工智能实验室和商汤科技联合研发的一款大模型&#xff0c;这次有机会参与试用&#xff0c;特记录每次学习情况。 一、基础作业 2、在 InternLM Studio 上部署茴香豆技术助手 本次选用 InternLM2-Chat-7B 作为本地基础模型&#xff0c;同时用智浦的GLM作为远…

论文分享 | FAST'23 阿里云提出的针对SMR优化的存储引擎SMRSTORE

今天分享的一篇最近阅读的论文是FAST23的SMRstore: A Storage Engine for Cloud Object Storage on HM-SMR Drives。 https://www.usenix.org/conference/fast23/presentation/zhou 这篇文章是由阿里巴巴公司完成的&#xff0c;在这篇文章中&#xff0c;团队针对SMR的特性提出了…

C++ AVL树底层实现原理

&#x1f493;博主CSDN主页:麻辣韭菜&#x1f493;   ⏩专栏分类&#xff1a;C知识分享⏪   &#x1f69a;代码仓库:C高阶&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多C知识   &#x1f51d;&#x1f51d; 目录 前言 AVL 树 1.1 AVL树的概念 1.2 AVL树…

[大模型]Qwen1.5-7B-Chat FastApi 部署调用

Qwen1.5-7B-Chat FastApi 部署调用 环境准备 在 Autodl 平台中租赁一个 3090 等 24G 显存的显卡机器&#xff0c;如下图所示镜像选择 PyTorch–>2.0.0–>3.8(ubuntu20.04)–>11.8&#xff08;11.3 版本以上的都可以&#xff09;。 接下来打开刚刚租用服务器的 Jupyt…

vivado 使用 ILA 默认仪表板

使用 ILA 默认仪表板 ILA 仪表板 &#xff08; 请参阅下图 &#xff09; 是给定 ILA 核相关的所有状态和控制信息的集中显示位置。刷新硬件器件并首次检测到 ILA 核时 &#xff0c; 将自动打开该核的默认 ILA 仪表板。如果需要手动打开或重新打开此仪表板 &#xff0c; 只…

性能优化 - 你知道CSS有哪些优化方案吗

难度级别:中高级及以上 提问概率:70% CSS是前端开发工作中必不可少的技能之一,同时也是网页开发中必不可少的重要元素之一。但很多人所开发的项目本身对性能要求并不高,再加上项目周期紧张,久而久之,也就容易养成不考虑细节的习惯,觉得C…

每日OJ题_01背包①_牛客DP41 【模板】01背包(滚动数组优化)

目录 牛客DP41 【模板】01背包 问题一解析 问题二解析 解析代码 滚动数组优化代码 牛客DP41 【模板】01背包 【模板】01背包_牛客题霸_牛客网 #include <iostream> using namespace std;int main() {int a, b;while (cin >> a >> b) { // 注意 while 处…

软件杯 深度学习人体语义分割在弹幕防遮挡上的实现 - python

文章目录 1 前言1 课题背景2 技术原理和方法2.1基本原理2.2 技术选型和方法 3 实例分割4 实现效果5 最后 1 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习人体语义分割在弹幕防遮挡上的应用 该项目较为新颖&#xff0c;适合作为竞…