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



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

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


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

本期专家 :

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-

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

智能汽车电子与软件 专注于汽车电子领域的信息交融平台,涵盖汽车电子行业资讯、市场动态、技术干货、知识见解、行业趋势等资讯深度覆盖。
评论
  • 《高速PCB设计经验规则应用实践》+PCB绘制学习与验证读书首先看目录,我感兴趣的是这一节;作者在书中列举了一条经典规则,然后进行详细分析,通过公式推导图表列举说明了传统的这一规则是受到电容加工特点影响的,在使用了MLCC陶瓷电容后这一条规则已经不再实用了。图书还列举了高速PCB设计需要的专业工具和仿真软件,当然由于篇幅所限,只是介绍了一点点设计步骤;我最感兴趣的部分还是元件布局的经验规则,在这里列举如下:在这里,演示一下,我根据书本知识进行电机驱动的布局:这也算知行合一吧。对于布局书中有一句:
    wuyu2009 2024-11-30 20:30 142浏览
  • 光伏逆变器是一种高效的能量转换设备,它能够将光伏太阳能板(PV)产生的不稳定的直流电压转换成与市电频率同步的交流电。这种转换后的电能不仅可以回馈至商用输电网络,还能供独立电网系统使用。光伏逆变器在商业光伏储能电站和家庭独立储能系统等应用领域中得到了广泛的应用。光耦合器,以其高速信号传输、出色的共模抑制比以及单向信号传输和光电隔离的特性,在光伏逆变器中扮演着至关重要的角色。它确保了系统的安全隔离、干扰的有效隔离以及通信信号的精准传输。光耦合器的使用不仅提高了系统的稳定性和安全性,而且由于其低功耗的
    晶台光耦 2024-12-02 10:40 143浏览
  • 当前,智能汽车产业迎来重大变局,随着人工智能、5G、大数据等新一代信息技术的迅猛发展,智能网联汽车正呈现强劲发展势头。11月26日,在2024紫光展锐全球合作伙伴大会汽车电子生态论坛上,紫光展锐与上汽海外出行联合发布搭载紫光展锐A7870的上汽海外MG量产车型,并发布A7710系列UWB数字钥匙解决方案平台,可应用于数字钥匙、活体检测、脚踢雷达、自动泊车等多种智能汽车场景。 联合发布量产车型,推动汽车智能化出海紫光展锐与上汽海外出行达成战略合作,联合发布搭载紫光展锐A7870的量产车型
    紫光展锐 2024-12-03 11:38 126浏览
  •         温度传感器的精度受哪些因素影响,要先看所用的温度传感器输出哪种信号,不同信号输出的温度传感器影响精度的因素也不同。        现在常用的温度传感器输出信号有以下几种:电阻信号、电流信号、电压信号、数字信号等。以输出电阻信号的温度传感器为例,还细分为正温度系数温度传感器和负温度系数温度传感器,常用的铂电阻PT100/1000温度传感器就是正温度系数,就是说随着温度的升高,输出的电阻值会增大。对于输出
    锦正茂科技 2024-12-03 11:50 141浏览
  • 概述 说明(三)探讨的是比较器一般带有滞回(Hysteresis)功能,为了解决输入信号转换速率不够的问题。前文还提到,即便使能滞回(Hysteresis)功能,还是无法解决SiPM读出测试系统需要解决的问题。本文在说明(三)的基础上,继续探讨为SiPM读出测试系统寻求合适的模拟脉冲检出方案。前四代SiPM使用的高速比较器指标缺陷 由于前端模拟信号属于典型的指数脉冲,所以下降沿转换速率(Slew Rate)过慢,导致比较器检出出现不必要的问题。尽管比较器可以使能滞回(Hysteresis)模块功
    coyoo 2024-12-03 12:20 170浏览
  • RDDI-DAP错误通常与调试接口相关,特别是在使用CMSIS-DAP协议进行嵌入式系统开发时。以下是一些可能的原因和解决方法: 1. 硬件连接问题:     检查调试器(如ST-Link)与目标板之间的连接是否牢固。     确保所有必要的引脚都已正确连接,没有松动或短路。 2. 电源问题:     确保目标板和调试器都有足够的电源供应。     检查电源电压是否符合目标板的规格要求。 3. 固件问题: &n
    丙丁先生 2024-12-01 17:37 114浏览
  • TOF多区传感器: ND06   ND06是一款微型多区高集成度ToF测距传感器,其支持24个区域(6 x 4)同步测距,测距范围远达5m,具有测距范围广、精度高、测距稳定等特点。适用于投影仪的无感自动对焦和梯形校正、AIoT、手势识别、智能面板和智能灯具等多种场景。                 如果用ND06进行手势识别,只需要经过三个步骤: 第一步&
    esad0 2024-12-04 11:20 103浏览
  • 最近几年,新能源汽车愈发受到消费者的青睐,其销量也是一路走高。据中汽协公布的数据显示,2024年10月,新能源汽车产销分别完成146.3万辆和143万辆,同比分别增长48%和49.6%。而结合各家新能源车企所公布的销量数据来看,比亚迪再度夺得了销冠宝座,其10月新能源汽车销量达到了502657辆,同比增长66.53%。众所周知,比亚迪是新能源汽车领域的重要参与者,其一举一动向来为外界所关注。日前,比亚迪汽车旗下品牌方程豹汽车推出了新车方程豹豹8,该款车型一上市就迅速吸引了消费者的目光,成为SUV
    刘旷 2024-12-02 09:32 138浏览
  • 遇到部分串口工具不支持1500000波特率,这时候就需要进行修改,本文以触觉智能RK3562开发板修改系统波特率为115200为例,介绍瑞芯微方案主板Linux修改系统串口波特率教程。温馨提示:瑞芯微方案主板/开发板串口波特率只支持115200或1500000。修改Loader打印波特率查看对应芯片的MINIALL.ini确定要修改的bin文件#查看对应芯片的MINIALL.ini cat rkbin/RKBOOT/RK3562MINIALL.ini修改uart baudrate参数修改以下目
    Industio_触觉智能 2024-12-03 11:28 110浏览
  • 戴上XR眼镜去“追龙”是种什么体验?2024年11月30日,由上海自然博物馆(上海科技馆分馆)与三湘印象联合出品、三湘印象旗下观印象艺术发展有限公司(下简称“观印象”)承制的《又见恐龙》XR嘉年华在上海自然博物馆重磅开幕。该体验项目将于12月1日正式对公众开放,持续至2025年3月30日。双向奔赴,恐龙IP撞上元宇宙不久前,上海市经济和信息化委员会等部门联合印发了《上海市超高清视听产业发展行动方案》,特别提到“支持博物馆、主题乐园等场所推动超高清视听技术应用,丰富线下文旅消费体验”。作为上海自然
    电子与消费 2024-11-30 22:03 107浏览
  • 11-29学习笔记11-29学习笔记习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习笔记&记录学习习笔记&记学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&记录学习学习笔记&学习学习笔记&记录学习学习笔记&记录学习学习笔记&记
    youyeye 2024-12-02 23:58 92浏览
  • 作为优秀工程师的你,已身经百战、阅板无数!请先醒醒,新的项目来了,这是一个既要、又要、还要的产品需求,ARM核心板中一个处理器怎么能实现这么丰富的外围接口?踌躇之际,你偶阅此文。于是,“潘多拉”的魔盒打开了!没错,USB资源就是你打开新世界得钥匙,它能做哪些扩展呢?1.1  USB扩网口通用ARM处理器大多带两路网口,如果项目中有多路网路接口的需求,一般会选择在主板外部加交换机/路由器。当然,出于成本考虑,也可以将Switch芯片集成到ARM核心板或底板上,如KSZ9897、
    万象奥科 2024-12-03 10:24 96浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦