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

智能汽车电子与软件 2024-04-15 17:00



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

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


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

本期专家 :

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-

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

智能汽车电子与软件 专注于汽车电子领域的信息交融平台,涵盖汽车电子行业资讯、市场动态、技术干货、知识见解、行业趋势等资讯深度覆盖。
评论 (0)
  • 本文介绍OpenHarmony5.0 DevEco Studio开发工具安装与配置,鸿蒙北向开发入门必备!鸿蒙北向开发主要侧重于应用层的开发,如APP开发、用户界面设计等,更多地关注用户体验、应用性能优化、上层业务逻辑的实现,需要开发者具备基本的编程知识、对操作系统原理的简单理解,以及一定的UI设计感。由触觉智能Purple Pi OH鸿蒙开发板演示。搭载了瑞芯微RK3566四核处理器,支持开源鸿蒙OpenHarmony3.2至5.0系统,适合鸿蒙开发入门学习。下载与安装开发工具点下面链接下载:
    Industio_触觉智能 2025-03-28 18:16 238浏览
  • Shinco音响拆解 一年一次的面包板社区的拆解活动拉开帷幕了。板友们开始大显身手了,拆解各种闲置的宝贝。把各自的设计原理和拆解的感悟一一向电子爱好者展示。产品使用了什么方案,用了什么芯片,能否有更优的方案等等。不仅让拆解的人员了解和深入探索在其中。还可以让网友们学习电子方面的相关知识。今天我也向各位拆解一个产品--- Shinco音响(如下图)。 当产品连接上电脑的耳机孔和USB孔时,它会发出“开机,音频输入模式”的语音播报,。告诉用户它已经进入音响外放模式。3.5mm耳机扣接收电脑音频信号。
    zhusx123 2025-03-30 15:42 99浏览
  • 3月27日,长虹中玖闪光超高剂量率电子射线放射治疗系统(e-Flash)临床试验项目在四川大学华西医院正式启动,标志着该项目正式进入临床试验阶段。这不仅是我国医学技术领域的一项重大突破,更是我国在高端医疗设备研发和应用方面的重要里程碑。e-Flash放射治疗系统适用于哪些病症,治疗周期为多久?会不会产生副作用?治疗费用高不高……随着超高剂量率电子射线放射治疗系统(e-Flash)正式进入临床试验阶段,社会各界对该项目的实施情况尤为关注。对此,中国工程院院士范国滨,以及四川大学华西医院、四川省肿瘤
    华尔街科技眼 2025-03-28 20:26 335浏览
  • 本文介绍瑞芯微RK356X系列复用接口配置的方法,基于触觉智能RK3562开发板演示,搭载4核A53处理器,主频高达2.0GHz;内置独立1Tops算力NPU,可应用于物联网网关、平板电脑、智能家居、教育电子、工业显示与控制等行业。复用接口介绍由下图可知,红圈内容当前引脚可配置为SPI0或者PWM0功能。由标准系统固件以及相关系统手册可得,当前接口默认配置为SPI0功能:console:/ # ls dev/spidev0.0dev/spidev0.0再由原理图可知当前GPIO为GPIO0_C3
    Industio_触觉智能 2025-03-28 18:14 175浏览
  • 在工业控制与数据采集领域,高精度的AD采集和实时显示至关重要。今天,我们就来基于瑞芯微RK3568J + FPGA国产平台深入探讨以下,它是如何实现该功能的。适用开发环境如下:Windows开发环境:Windows 7 64bit、Windows 10 64bitLinux开发环境:Ubuntu18.04.4 64bit、VMware15.5.5U-Boot:U-Boot-2017.09Kernel:Linux-4.19.232、Linux-RT-4.19.232LinuxSDK:LinuxSD
    Tronlong 2025-03-28 10:14 197浏览
  • 真空容器的材料选择取决于其应用场景(如科研、工业、医疗)、真空等级(低真空、高真空、超高真空)以及环境条件(温度、压力、化学腐蚀等)。以下是常见材料及其优缺点分析:1. 不锈钢(如304、316L)优点:耐腐蚀性强:316L含钼,耐酸碱和高温氧化,适合高真空和腐蚀性环境。高强度:机械性能稳定,可承受高压差和外部冲击。低放气率:经电解抛光或镀镍处理后,表面放气率极低,适合超高真空系统(如粒子加速器、半导体镀膜设备)。易加工:可焊接、铸造,适合复杂结构设计。缺点:重量大:大型容器运输和安装成本高。磁
    锦正茂科技 2025-03-29 10:52 58浏览
  •        随着智能驾驶向L3级及以上迈进,系统对实时性的要求已逼近极限。例如,自动紧急制动(AEB)需在50毫秒内完成感知、决策到执行的全链路响应,多传感器数据同步误差需小于10微秒。然而,传统基于Linux-RT的方案在混合任务处理中存在天然缺陷——其最大中断延迟高达200微秒,且多任务并发时易引发优先级反转问题。据《2024年智能汽车电子架构白皮书》统计,超60%的车企因实时性不足被迫推迟舱驾一体化项目落地。为旌电子给出的破局之道,是采用R5F(实
    中科领创 2025-03-29 11:55 273浏览
  • 文/杜杰编辑/cc孙聪颖‍3月11日,美国总统特朗普,将自费8万美元购买的特斯拉Model S,开进了白宫。特朗普此举,绝非偶然随性,而是有着鲜明的主观意图,处处彰显出一种刻意托举的姿态 。特朗普也毫不讳言,希望他的购买能推动特斯拉的发展。作为全球电动车鼻祖,特斯拉曾凭借创新理念与先进技术,开辟电动汽车新时代,引领行业发展潮流。然而当下,这家行业先驱正深陷困境,面临着前所未有的挑战。就连“钢铁侠”马斯克自己都在采访时表示“非常困难”,的确是需要美国总统伸手拉一把了。马斯克踏入白宫的那一刻,特斯拉
    华尔街科技眼 2025-03-28 20:44 222浏览
  • 在智能家居领域,无线门铃正朝着高集成度、低功耗、强抗干扰的方向发展。 WTN6040F 和 WT588F02B 两款语音芯片,凭借其 内置EV1527编解码协议 和 免MCU设计 的独特优势,为无线门铃开发提供了革命性解决方案。本文将深入解析这两款芯片的技术特性、应用场景及落地价值。一、无线门铃市场痛点与芯片方案优势1.1 行业核心痛点系统复杂:传统方案需MCU+射频模块+语音芯片组合,BOM成本高功耗瓶颈:待机电流
    广州唯创电子 2025-03-31 09:06 141浏览
  • 在智能语音交互设备开发中,系统响应速度直接影响用户体验。WT588F系列语音芯片凭借其灵活的架构设计,在响应效率方面表现出色。本文将深入解析该芯片从接收指令到音频输出的全过程,并揭示不同工作模式下的时间性能差异。一、核心处理流程与时序分解1.1 典型指令执行路径指令接收 → 协议解析 → 存储寻址 → 数据读取 → 数模转换 → 音频输出1.2 关键阶段时间分布(典型值)处理阶段PWM模式耗时DAC模式耗时外挂Flash模式耗时指令解析2-3ms2-3ms3-5ms存储寻址1ms1ms5-10m
    广州唯创电子 2025-03-31 09:26 167浏览
  • 一、真空容器的定义与工作原理真空容器是一种能够创造并保持一定真空度的密闭容器。其工作原理通常涉及抽气系统,该系统能够逐渐抽出容器内部的气体分子,从而降低容器内的气压,形成真空环境。在这个过程中,容器的体积并不会因抽气而改变,但容器内的压力会随着气体的抽出而逐渐降低。二、真空容器并非恒压系统真空容器并非一个恒压系统。恒压系统指的是在外部环境变化时,系统内部压力能够保持相对稳定。然而,在真空容器中,随着气体的不断抽出,内部压力会持续降低,直至达到所需的真空度。因此,真空容器内部的压力是变化的,而非恒
    锦正茂科技 2025-03-29 10:23 161浏览
  • 真空容器内部并非wan全没有压强,而是压强极低,接近于零。真空状态下的压强与容器内外气体的分子数量、温度以及容器本身的性质有关。一、真空与压强的基本概念真空指的是一个空间内不存在物质或物质极少的状态,通常用于描述容器或系统中气体的稀薄程度。压强则是单位面积上所受正压力的大小,常用于描述气体、液体等流体对容器壁的作用力。二、真空状态下的压强特点在真空状态下,容器内部的气体分子数量极少,因此它们对容器壁的作用力也相应减小。这导致真空容器内部的压强远低于大气压强,甚至接近于零。然而,由于技术限制和物理
    锦正茂科技 2025-03-29 10:16 174浏览
我要评论
0
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦