软件安全分析:构建更强大的软件系统



关注公众号,点击公众号主页右上角“ ··· ”,设置星标,实时关注智能汽车电子与软件最新资讯

随着汽车软件的不断发展,汽车软件开发周期变得越来越短并且软件复杂性也呈几何指数上升,与此同时我们也需要关注软件问题可能导致的安全性风险,其不仅仅关乎驾驶员和乘客的安全,也关系到其他道路使用者的生命财产安全。


因此软件开发需建立在安全需求基础上,通过有效的软件功能安全需求,我们能够避免或迁移潜在的系统故障引发的事故风险,本文将围绕什么是软件功能安全需求、如何进行软件安全分析来展开介绍。

本期专家 :

Zhike(左)、Alex(右)

博世智能驾驶与控制系统事业部中国区

软件功能安全专家





软件安全需求设计

软件开发流程的需求
ISO 26262 是汽车行业广泛采用的功能安全标准,它定义了一系列的安全流程、方法和工具,用于管理汽车电子系统的功能安全。遵循这一标准,可以有效的管理软件安全开发流程和开发工作;同时这套流程也和传统V模型开发是契合一致的,因此在公司内部制定合适合规的软件质量开发流程的同时一定程度上也符合了ISO26262软件开发流程的部分要求,如下图:
为什么需要安全合规的开发流程? 本质逻辑是: 过程影响结果。不规范的开发流程是导致软件bug频发的重要原因之一;通过对开发过程进行质量流程约束,开发出来的软件质量也尽可能得到保障,这是避免系统性失效的底层框架需求。
软件安全需求
从上一章得知,整个软件安全开发V模型始于需求开发,那需求从哪来?

应用层软件ASW的安全需求一般来源于以下几个方面:

① 技术安全需求TSR (系统需求级别);


② 硬件/中间层/操作系统/基础软件等导出的安全需求 (使用假设);


③ 集成平台或外部应用层软件模块的安全限制需求 (使用假设);


④ 权衡功能可用性

(functional availability)

功能安全开发实践过程中的小思考:
我们在满足安全要求的同时,也需要思考如何保证” 功能可用性”;如何避免功能安全过设计以及避免照本宣科的把安全机制生搬硬套;这是需要每一位功能安全工程师和开发人员深入到功能算法和性能测试中,才能找出真正的安全薄弱点,真正使得功能安全贴近于软件功能开发过程,助力于软件质量和性能的提升。

那什么是软件安全需求?

软件安全需求 = 安全相关的软件功能需求 + 软件安全机制

软件安全需求一定是建立在软件功能需求(SWRS)的基础之上,换言之,先有软件功能或特性需求SWRS,才会进而基于TSR导出软件安全需求。

安全相关的软件功能需求包括但不限于:

① 使标称功能能够安全执行的功能;

  • 常见如时钟,电源等确保软件安全运行的功能;实际项目实践中也需关注安全相关的应用层功能需求,其相应的故障会直接导致safety goal的违背,这一点在ADAS安全开发中尤为重要(例如感知子系统无法采用传统E-GAS架构等安全开发方式)。


② 与性能或时间关键型操作相关的功能;

  • 例如性能优化相关的功能模块,其失效会直接导致不满足SOTIF相关的安全指标。


③ 生产,操作,服务和退役期间与机载和非机载测试有关的功能;

  • 例如车载通信、车辆诊断等相关内容。


④ 允许在生产和服务期间修改软件的功能;

  • 例如可配置参数或者标定数据等。

软件安全机制包括但不限于:

① 与基本软件或应用软件本身故障相关的自检或监控功能;

  • 例如应用层软件程序流监控,合理性校验,上电自检等。


② 与安全相关要素的故障检测,指示和缓解有关的功能;

  • 例如控制单元电源、时钟等安全要素的故障探测。


③ 使系统能够达到或保持安全状态或降级状态的功能;

  • 例如失效后的功能降级管理,系统安全状态的行为等。


④ 对软件功能和特性的要求,包括不同功能之间的独立性或免于干扰。

  • 例如独立性免扰分析中的软件分区等。

软件架构安全设计
有了初步的软件安全需求后,需要开始去对软件架构进行安全设计的迭代。

软件架构是如何基于软件安全需求进行安全设计的?

① 基于软件安全需求整理出安全关键路径,这是后面安全分析和风险评估的基础;


② 在架构层面对安全关键路径和非安全功能路径做免扰分析,保证接口/内存/时序上的独立性;


③ 在静态软件架构层面,分析接口/通讯潜在失效导致的安全风险;


④ 在动态软件架构层面,分析多并发线程下可能导致的故障是否违背安全需求;例如需要考虑:

  • 软件单元调度的优先级;

  • 软件单元的执行时间;

  • 故障降级管理的最小时间要求;

  • 多应用场景下的功能模块安全部署等等。

其中,控制流和数据流的分析也是保证软件架构安全设计的重要手段。

安全需求导向软件分析

26262对安全导向软件分析的要求
根据ISO26262-6:2018的定义,安全导向软件分析的目的是确保嵌入式软件【确实】能够满足分配的功能安全需求。强调【确实】,是因为在软件安全需求从系统需求向下分解时,一方面开发人员无法很直观地保证设计的需求能够涵盖所有工况,如复杂状态机没考虑到的跳转路径,级联失效共因失效,程序流调度,通讯错误等;另一方面软件在特定某些运行工况下可能会出现不可预知的失效,如死锁活锁,跑飞,内存溢出等。
  • 这里提一下算法性能不足导致的非预期输出,比如车速补偿,一定程度上也可以归类为性能问题,但本质上也属于系统性失效,因此安全文化保守的OEM或供应商(如博世)会将其也列入安全导向软件分析的考虑范畴。

按失效类型的不同,安全导向软件分析又可以进一步细分为独立性分析(DFA)和软件安全分析(SSA),前者考虑的是由软件在资源、时间、通讯、系统耦合方面的独立性问题带来的安全风险如共因失效和级联失效,导出独立性机制和免扰机制(Freedom From Interference i.e. FFI)。后者考虑前者以外的其他所有可能导致安全设计无法按预期工作的失效。

本文受限于篇幅,将重点先对软件安全分析SSA的实操进行举例详解。
SSA的实操
在项目实操中,SSA通常在软件开发初期开始进行(即软件安全需求有了初步分配和架构设计,分析目标颗粒度的软件模块有了一定的成熟度时),贯穿整个开发过程。
  • 做SSA分析前,应明确分析颗粒度,即分析对象最小到什么层级,这决定了SSA的输入信息来源(比如分析颗粒度是runnable,那么需要的输入为对runnable的安全需求,原则上不必须打开runnable内部设计,当成黑盒)。但值得注意的是,在项目实操中,这个颗粒度更多起到的是一种guide的作用,但应避免将其奉为死规,很多情况下(尤其对算法类设计这种上层需求很难清晰严格定义的设计),适当下探最小颗粒度对找全找对合理失效模式和影响有很大的帮助。

SSA实操过程一般会经历安全需求确认 > 架构路径确认 > 静动态架构流确认(以上都是输入信息收集) > SSA分析 >安全机制导出 > 安全需求生成和维护 > 软件实现 > 软件测试 > 迭代。

信息收集和实现验证的过程与软件传统V流程相统一,本文重点说明SSA分析和安全机制导出。
SSA分析
这一步旨在系统性地定位软件失效和安全影响,服务于后续安全机制设计。方法有很多种,基于当前L2+驾驶辅助功能对ADAS域的功能安全分配通常是ASIL B,这里以类似FMEA的inductive方法进行分析示例。博世实操中,以被分析对象的所有接口(包括通讯、诊断、配置、持久化)为切入点,结合类似HAZOP的引导词(如值域类的过大过小,时域类的过早过晚,通讯类的丢失等),生成单点失效模式,分析影响,作为后续安全机制导出的输入。
安全机制导出
这一步以SSA分析输出的失效影响属于安全相关的失效模式为输入,针对性地制定设计或流程机制进行counter。可以从下面几个方面分析:

① 软件复杂度:

软件接口数量,数据结构复杂程度,内部状态机数量,变量数量,程序流路径分支数量和交叉情况。越复杂的软件,越难理解,越容易出错,也越必要安全机制。


② 软件成熟度:

软件是否复用,Base软件市场运行情况,可以判断软件是否成熟,越不成熟的软件越需要额外安全机制。(值得注意的是,由于软件市场运行情况监控很难举证,这个方面在实操中需要谨慎,通常会将其转化为专家经验作为判断支持依据,但不作为决定性因素,在只有这个点支持时,一般保守考虑会要求增加安全机制)


③ 安全影响程度:

造成的impact对安全造成多大的影响,从功能安全角度考虑,违反安全目标的都是顶级,但实操时一般会根据伤害程度和伤害概率不同进行一些主观调节。(如顶层安全目标是超过ODD速度区间还是紧急避碰失效,二者都是安全相关,但critical程度有很大区别)

对于确定需要设计安全机制的失效模式,实操中可以考虑下面几类安全机制:

① 值域类监控:

  • Range check:如最大车速计算范围,如目标探测FOV合理范围,应注意阈值对功能可用性的合理兼容,测试log统计数据是很有效的依据。

  • Plausibility check:这种check一般case specific,比如雷达的RCS check,video的blindness check,都可以认为是plausibility check的一种,但常见的思路是用被检测对象本身物理属性(比如车速不可能跳变)、与其他物理量的关系(比如standstill信号不可能在轮速高时置位,不同来源时间戳不匹配)、瞬态故障机制(硬件锁步或软件锁步如冗余算法)。


② 时域类监控:

  • Checkpoint:基于checkpoint报出-计数机制,对进程/线程的执行时间进行超时和顺序的监控,比如alive check, deadline check, control flow check。

  • BSW特殊设计:通过BSW的一些特殊设计监控程序流运行及进入安全状态,如MCU周期性检查特定task运行完成情况,有问题即中断并重启。


③ 通讯类监控:

  • 常见如外部信号E2E,内部变量由中间件内存保护机制覆盖如MPU,ECC等。

在评估安全机制的有效性时,可以从机制与安全功能设计的异源性,failure mode的覆盖率出发考虑安全机制的检测能力。

实例

如第2章所说,硬件导出的安全需求也是软件安全需求的一个重要来源,其中需要软件安全影响分析以及导出相关硬件故障监控的软件安全需求,这里以常见的硬件瞬态故障为例,简要介绍当硬件资源存在局限性而无法覆盖足够的诊断覆盖率时,如何通过软件安全分析导出软件安全需求。

进入正文前先介绍瞬态故障,瞬态故障定义是故障发生一次后随即消失; 其中电磁干扰,宇宙射线干扰等都是造成瞬态故障的原因;故障导致的影响是硬件电路逻辑输出错误,如内存位翻转等,随之导致数据跳变或逻辑错误,可能会造成违背安全目标的系统失效表现行为。

行业内针对瞬态故障的安全措施一般有硬件锁步核、冗余执行等方式,但在有些项目实践过程,硬件可能没有相应的锁步核配置,冗余执行也带来计算资源消耗过大造成性能问题的额外影响等等。这时候需要权衡算力、硬件资源及成本的考量。

博世从应用层软件入手分析瞬态故障造成的实际安全影响,提出针对性的软件安全措施,最后验证其故障诊断覆盖率是否满足要求。
安全影响分析测试:
如下图,以车速计算这个安全相关的软件模块为例,其中轮速脉冲信号和其他信号作为输入,通过最小二乘法等预测方式计算车辆车速,分析瞬态故障的安全影响。

① 进行瞬态故障的故障注入测试,注入包括:

  • 输入数据

  • 内部数据

  • 配置参数

  • 逻辑指令


② 测试结果存在两种case:

  • Case-1: 大部分瞬态故障造成输出影响仅持续一个周期,无安全风险(within FTTI);

  • Case-2: 某些功能模块的瞬态故障造成输出影响持续一段时间,系统表现存在安全风险;如下图,由于车速计算是时间累积效应,轮速脉冲信号的单个周期瞬态故障会导致一段时间的错误车速输出,从而导致感知目标属性错误,造成最终系统故障行为表现。

制定软件安全措施:

从影响分析的结果来看,Case-2相关的功能模块即为瞬态故障下的安全薄弱点,此时可以从架构层面考虑,例如关键功能模块部署到MCU锁步核、关键逻辑冗余计算和冗余输出比较等常见软件架构安全设计。


② 这里基于车速计算模块提出了监控机制,例如对轮速脉冲信号做了以下安全机制:

  • Range check/gradient check;

  • Timestamp check;

  • Plausibility check.

如上面所说,制定安全机制时应该注意权衡功能可用性,尤其对感知算法类输出检验,如何将机制和阈值定义到足够严苛能够充分检测出潜在违反功能安全目标的异常,又足够鲁棒能够包容复杂运行工况下的合理波动,是安全机制设计的亘古难题。

以上文case为例,高频轮脉冲的丢帧和乱序对Parking类功能场景下的低速车速评估有巨大影响,因此理论上timestamp check应要求检测到任何丢帧情况都降级进入安全状态。但嵌入式软件在整车实际工况下的运行过程中,不可避免会出现偶发丢帧,如果直接降级则对功能可用性影响不可接受,因此在实操中,博世设计了一套备份算法,在检测到轮脉冲丢帧的一定时间内,由冗余算法持续输出满足功能安全等级的可信车速,仅当连续丢帧超过一定阈值后才进入安全状态,以此增加故障容忍能力,增强系统鲁棒性。
诊断覆盖率的验证
提出的安全机制对于瞬态故障的探测是否有效,需要通过诊断覆盖率来进行验证。

基于SSA分析出的关键软件模块需通过10000次data sequence的故障注入测试,test pass/fail判断依据基于系统表现行为是否违背安全目标,最后验证覆盖率结果是否满足应对应的ASIL指标。

总结

软件安全需求是功能安全开发中的难点之一,每个项目在不同的功能、算法和架构下都有不一样的答案和挑战;因此在深入理解安全和性能薄弱点的基础上,权衡安全目标和功能可用性,导出真正有助于软件安全质量提升的需求,是当前功能安全切实融入到项目软件开发的方向之一。

另外随着AI模型在汽车软件中的快速发展,由于其不可解释性和复杂性,导致和传统rule-base的软件安全分析存在较大的差异,这个新的话题后续我们也会给出更多的介绍和项目实践,敬请期待。

来源:焉知汽车


-END-

关注公众号,点击公众号主页右上角“ ··· ”,设置星标,实时关注智能汽车电子与软件最新资讯

智能汽车电子与软件 专注于汽车电子领域的信息交融平台,涵盖汽车电子行业资讯、市场动态、技术干货、知识见解、行业趋势等资讯深度覆盖。
评论
  •  在全球能源结构加速向清洁、可再生方向转型的今天,风力发电作为一种绿色能源,已成为各国新能源发展的重要组成部分。然而,风力发电系统在复杂的环境中长时间运行,对系统的安全性、稳定性和抗干扰能力提出了极高要求。光耦(光电耦合器)作为一种电气隔离与信号传输器件,凭借其优秀的隔离保护性能和信号传输能力,已成为风力发电系统中不可或缺的关键组件。 风力发电系统对隔离与控制的需求风力发电系统中,包括发电机、变流器、变压器和控制系统等多个部分,通常工作在高压、大功率的环境中。光耦在这里扮演了
    晶台光耦 2025-01-08 16:03 58浏览
  • 在智能家居领域中,Wi-Fi、蓝牙、Zigbee、Thread与Z-Wave等无线通信协议是构建短距物联局域网的关键手段,它们常在实际应用中交叉运用,以满足智能家居生态系统多样化的功能需求。然而,这些协议之间并未遵循统一的互通标准,缺乏直接的互操作性,在进行组网时需要引入额外的网关作为“翻译桥梁”,极大地增加了系统的复杂性。 同时,Apple HomeKit、SamSung SmartThings、Amazon Alexa、Google Home等主流智能家居平台为了提升市占率与消费者
    华普微HOPERF 2025-01-06 17:23 202浏览
  • 村田是目前全球量产硅电容的领先企业,其在2016年收购了法国IPDiA头部硅电容器公司,并于2023年6月宣布投资约100亿日元将硅电容产能提升两倍。以下内容主要来自村田官网信息整理,村田高密度硅电容器采用半导体MOS工艺开发,并使用3D结构来大幅增加电极表面,因此在给定的占位面积内增加了静电容量。村田的硅技术以嵌入非结晶基板的单片结构为基础(单层MIM和多层MIM—MIM是指金属 / 绝缘体/ 金属) 村田硅电容采用先进3D拓扑结构在100um内,使开发的有效静电容量面积相当于80个
    知白 2025-01-07 15:02 141浏览
  • By Toradex 秦海1). 简介嵌入式平台设备基于Yocto Linux 在开发后期量产前期,为了安全以及提高启动速度等考虑,希望将 ARM 处理器平台的 Debug Console 输出关闭,本文就基于 NXP i.MX8MP ARM 处理器平台来演示相关流程。 本文所示例的平台来自于 Toradex Verdin i.MX8MP 嵌入式平台。  2. 准备a). Verdin i.MX8MP ARM核心版配合Dahlia载板并
    hai.qin_651820742 2025-01-07 14:52 106浏览
  • 每日可见的315MHz和433MHz遥控模块,你能分清楚吗?众所周知,一套遥控设备主要由发射部分和接收部分组成,发射器可以将控制者的控制按键经过编码,调制到射频信号上面,然后经天线发射出无线信号。而接收器是将天线接收到的无线信号进行解码,从而得到与控制按键相对应的信号,然后再去控制相应的设备工作。当前,常见的遥控设备主要分为红外遥控与无线电遥控两大类,其主要区别为所采用的载波频率及其应用场景不一致。红外遥控设备所采用的射频信号频率一般为38kHz,通常应用在电视、投影仪等设备中;而无线电遥控设备
    华普微HOPERF 2025-01-06 15:29 164浏览
  • 根据环洋市场咨询(Global Info Research)项目团队最新调研,预计2030年全球无人机锂电池产值达到2457百万美元,2024-2030年期间年复合增长率CAGR为9.6%。 无人机锂电池是无人机动力系统中存储并释放能量的部分。无人机使用的动力电池,大多数是锂聚合物电池,相较其他电池,锂聚合物电池具有较高的能量密度,较长寿命,同时也具有良好的放电特性和安全性。 全球无人机锂电池核心厂商有宁德新能源科技、欣旺达、鹏辉能源、深圳格瑞普和EaglePicher等,前五大厂商占有全球
    GIRtina 2025-01-07 11:02 119浏览
  • 故障现象一辆2017款东风风神AX7车,搭载DFMA14T发动机,累计行驶里程约为13.7万km。该车冷起动后怠速运转正常,热机后怠速运转不稳,组合仪表上的发动机转速表指针上下轻微抖动。 故障诊断 用故障检测仪检测,发动机控制单元中无故障代码存储;读取发动机数据流,发现进气歧管绝对压力波动明显,有时能达到69 kPa,明显偏高,推断可能的原因有:进气系统漏气;进气歧管绝对压力传感器信号失真;发动机机械故障。首先从节气门处打烟雾,没有发现进气管周围有漏气的地方;接着拔下进气管上的两个真空
    虹科Pico汽车示波器 2025-01-08 16:51 69浏览
  • 大模型的赋能是指利用大型机器学习模型(如深度学习模型)来增强或改进各种应用和服务。这种技术在许多领域都显示出了巨大的潜力,包括但不限于以下几个方面: 1. 企业服务:大模型可以用于构建智能客服系统、知识库问答系统等,提升企业的服务质量和运营效率。 2. 教育服务:在教育领域,大模型被应用于个性化学习、智能辅导、作业批改等,帮助教师减轻工作负担,提高教学质量。 3. 工业智能化:大模型有助于解决工业领域的复杂性和不确定性问题,尽管在认知能力方面尚未完全具备专家级的复杂决策能力。 4. 消费
    丙丁先生 2025-01-07 09:25 116浏览
  • 本文介绍编译Android13 ROOT权限固件的方法,触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。关闭selinux修改此文件("+"号为修改内容)device/rockchip/common/BoardConfig.mkBOARD_BOOT_HEADER_VERSION ?= 2BOARD_MKBOOTIMG_ARGS :=BOARD_PREBUILT_DTB
    Industio_触觉智能 2025-01-08 00:06 92浏览
  • 「他明明跟我同梯进来,为什么就是升得比我快?」许多人都有这样的疑问:明明就战绩也不比隔壁同事差,升迁之路却比别人苦。其实,之间的差异就在于「领导力」。並非必须当管理者才需要「领导力」,而是散发领导力特质的人,才更容易被晓明。许多领导力和特质,都可以通过努力和学习获得,因此就算不是天生的领导者,也能成为一个具备领导魅力的人,进而被老板看见,向你伸出升迁的橘子枝。领导力是什么?领导力是一种能力或特质,甚至可以说是一种「影响力」。好的领导者通常具备影响和鼓励他人的能力,并导引他们朝着共同的目标和愿景前
    优思学院 2025-01-08 14:54 61浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦