乐于分享
好东西不私藏

FUSA软件架构安全设计

FUSA软件架构安全设计

AUTOSAR分层架构、安全分区与错误处理策略

学习目标

  • 掌握AUTOSAR分层软件架构的安全设计原则
  • 理解不同ASIL等级软件的分区隔离方法
  • 学会设计安全监控器和看门狗机制
  • 掌握软件组件间的安全接口设计方法

6.1 AUTOSAR 分层架构安全设计

AUTOSAR(AUTomotive Open System ARchitecture)是汽车电子领域广泛采用的软件架构标准,其分层架构将软件分为应用层(ASW)、运行时环境(RTE)和基础软件(BSW)三个主要层次。在安全相关系统中,这种分层架构的优势在于:应用层专注于功能实现,基础软件提供硬件抽象和通信服务,而安全需求可以通过RTE接口在层间传递,实现安全功能的模块化设计。

AUTOSAR架构的安全设计需要考虑以下关键点:应用层软件组件(SWC)的ASIL等级分配、RTE接口的安全属性定义、BSW模块的安全需求分配以及ECU间通信的安全保护。ISO 26262-6要求软件架构设计必须进行安全分析,识别潜在的共因故障和级联故障,并通过架构措施(如分区、冗余、监控)进行缓解。AUTOSAR 4.x版本引入了E2E保护、看门狗管理器和诊断事件管理器等安全相关模块,为功能安全实现提供了标准化支持。

图6-1 AUTOSAR 分层软件架构

图6-1展示了AUTOSAR标准的分层软件架构。从上到下依次为:应用层(Application Layer)包含实现车辆功能的软件组件;运行时环境(RTE)提供组件间的接口抽象;基础软件(BSW)分为服务层(Services Layer)、ECU抽象层(ECU Abstraction Layer)和微控制器驱动层(Microcontroller Abstraction Layer),以及复杂驱动(Complex Drivers)。服务层独立于MCU和ECU硬件;ECU抽象层和复杂驱动独立于MCU但依赖于ECU硬件;微控制器驱动层直接依赖于MCU硬件。这种分层实现了软件的可移植性和硬件抽象。图片来源:Renesas。

表6-1 AUTOSAR 各层安全职责分配

层次
安全职责
典型安全机制
ASIL 分配
应用层 (ASW)
安全功能实现、错误处理
E2E保护、安全监控、状态机
ASIL A-D
运行时环境 (RTE)
安全接口隔离、数据一致性
接口检查、数据复制
QM-ASIL D
服务层 (Services)
通信安全、存储安全
E2E库、NVM冗余
QM-ASIL B
ECU抽象层
硬件故障抽象、诊断
ADC自检测、DIO回读
QM-ASIL B
微控制器驱动
硬件安全机制配置
MPU配置、ECC使能
QM-ASIL D
复杂驱动
特定硬件安全控制
看门狗、时钟监控
ASIL B-D

表6-1所示,AUTOSAR各层承担不同的安全职责。应用层直接实现安全功能,ASIL等级最高;基础软件层提供安全机制支撑,其ASIL等级取决于所服务的应用层安全需求。复杂驱动通常直接控制安全相关硬件,需要较高的ASIL等级。

6.2 软件分区与内存保护

软件分区是ISO 26262-6推荐的安全架构措施,用于隔离不同ASIL等级的软件组件,防止低ASIL软件的故障影响高ASIL软件。在汽车MCU中,内存保护单元(MPU)是实现软件分区的主要硬件机制。MPU将内存空间划分为多个区域(Region),每个区域配置独立的访问权限(读/写/执行)和缓存属性,操作系统或安全监控器在任务切换时重新配置MPU,确保当前任务只能访问授权的内存区域。

除了MPU,AUTOSAR OS还提供了时间保护(Timing Protection)机制,通过执行时间预算、阻塞时间限制和到达率控制,防止低优先级任务占用过多CPU时间,影响高ASIL任务的实时性。时间保护与内存保护共同构成了软件分区的两大支柱,确保不同ASIL等级的软件在时间和空间上均得到有效隔离。

图6-2 ARM Cortex-M MPU 内存分区保护机制

图6-2展示了ARM Cortex-M系列MPU的内存分区保护机制。OS内核(特权模式)配置MPU,将内存划分为多个区域:OS内核数据区、任务A数据区、任务B数据区和任务C数据区。MPU阻止任务A访问任务B和任务C的数据(红色禁止符号),同时阻止任务访问I/O区域(除非特别授权)。只有OS内核可以访问所有区域(通过MPU配置接口)。这种机制有效防止了任务间的非法内存访问,是软件分区隔离的核心硬件支撑。图片来源:Wadix Technologies。

图6-3 ARM Cortex-M MPU 区域寄存器配置

图6-3展示了ARM Cortex-M MPU的区域寄存器配置结构。每个MPU区域通过三个寄存器定义:MPU_RBAR(区域基地址寄存器)设置区域起始地址和区域号;MPU_RLAR(区域限制地址寄存器)设置区域结束地址和属性索引;MPU_MAIR(内存属性间接寄存器)通过属性索引指向具体的访问权限和缓存属性配置。图中展示了Region 1、Region 2和Region 3的寄存器映射关系,每个区域可以独立配置访问权限(Access permission)和内存属性(Attribute index)。图片来源:ARM Community。

表6-2 MPU 区域配置示例(ASIL D 系统)

区域号
起始地址
大小
访问权限
用途
ASIL
Region 0
0x0000_0000
1MB
只读(特权)
Flash代码
D
Region 1
0x2000_0000
256KB
读写(特权)
OS内核RAM
D
Region 2
0x2004_0000
128KB
读写(用户/特权)
ASIL D任务RAM
D
Region 3
0x2006_0000
128KB
读写(用户/特权)
ASIL B任务RAM
B
Region 4
0x2008_0000
256KB
读写(用户/特权)
QM任务RAM
QM
Region 5
0x4000_0000
64KB
读写(特权)
外设寄存器
D

表6-2所示,ASIL D系统的MPU配置将内存空间划分为多个独立区域,每个区域对应不同的ASIL等级和访问权限。特权模式(OS内核)可以访问所有区域,而用户模式(应用任务)只能访问授权的区域。这种配置有效防止了低ASIL任务对高ASIL数据的非法访问。

6.3 安全监控与看门狗机制

看门狗(Watchdog)是汽车电子系统中最基本的安全机制之一,用于检测和恢复软件故障导致的程序跑飞或死锁。看门狗定时器在系统正常运行时由软件周期性”喂狗”(刷新计数器),如果软件因故障停止喂狗,看门狗超时后将触发系统复位或安全状态转换。ISO 26262-6将看门狗列为推荐的软件安全机制,对于ASIL C/D系统,通常要求使用独立看门狗(外部WDT芯片),而非集成在MCU内部的窗口看门狗。

安全监控器(Safety Monitor)是一种更高级的安全机制,通常以独立软件组件或独立MCU的形式存在,负责监控主通道的安全相关功能。安全监控器与主通道形成异构冗余:主通道执行安全功能,监控器独立计算预期结果并比较实际输出。如果检测到不一致,监控器触发安全状态。这种架构在转向系统和制动系统中广泛应用,如主MCU计算转向角度,监控MCU独立验证转向角度的合理性。

图6-4 汽车MCU看门狗定时器安全机制

图6-4展示了汽车MCU中看门狗定时器的典型配置。左侧电路图显示12V电池通过LDO(低压差稳压器)为MCU和WDT(看门狗定时器)供电,VD(电压检测器)监控电源电压。WDT与MCU之间通过专用信号线交互,MCU周期性向WDT发送喂狗信号。右侧示意图形象化展示了WDT”监视”MCU运行的概念:WDT作为”看门狗”持续监控MCU的操作状态,一旦检测到异常(如喂狗超时),立即触发复位或安全响应。图片来源:ABLIC Inc。

表6-3 看门狗类型与适用场景对比

看门狗类型
特点
超时范围
适用 ASIL
典型应用
内部窗口看门狗
集成在MCU内部,支持窗口模式
1ms-1s
A/B
非安全任务监控
内部独立看门狗
独立时钟源,低功耗运行
10ms-10s
B/C
系统级故障检测
外部独立看门狗
独立芯片,独立电源
1ms-100s
C/D
安全关键系统
问答式看门狗
需要正确应答序列
可配置
C/D
高级安全监控
程序流监控
检查程序执行路径
周期性
B/C/D
逻辑错误检测

表6-3所示,不同类型的看门狗适用于不同的安全等级和应用场景。ASIL D系统通常要求外部独立看门狗,以确保即使MCU完全失效也能触发安全响应。问答式看门狗进一步提高了安全性,要求MCU不仅周期性喂狗,还需提供正确的应答序列。