功能安全与网络安全如何协同?汽车电子项目双流程协调实战

发布时间:2026/9/25 8:10:51
功能安全与网络安全如何协同?汽车电子项目双流程协调实战 项目标题里的“功能安全”和“网络安全”放在一起很多做汽车电子的朋友第一反应是这不是两拨人干的事吗搞安全的整天算ASIL、做FMEDA搞网络安全的拿着扫描器挖漏洞、做渗透测试两边开会都坐不到一张桌子上。但现实是新一代电子电气架构上车之后功能安全和网络安全已经没法再各玩各的了。智能驾驶、整车OTA、远程诊断、V2X这些功能一上攻击面暴涨而ISO 26262和ISO/SAE 21434这两条流程线如果不能对齐项目后期就会面临一个非常尴尬的局面功能安全评审通过了网络安全评估没过或者反过来。这篇文章就把我这些年在这两条流程之间“踩钢丝”的实操经验整理出来讲清楚它们到底怎么协调、在哪些节点必须强制对齐、以及实际项目里最容易踩的坑。1. 为什么要协调功能安全与网络安全1.1 两条流程的“并行现实”先说一个现状在大多数主机厂和Tier 1内部功能安全团队和网络安全团队是分开建的甚至可能分属不同部门一个挂在电子电气部门下面一个挂在信息安全部门下面。这个架构本身没问题问题在于产品的开发流程是共享的V模型只有一条需求链、设计链、测试链都是同一套。如果两边各自为政就会出现在同一个ECU上功能安全团队要求“诊断服务必须支持安全访问”网络安全团队要求“诊断服务必须加密认证”最后研发团队被两套要求同时夹击改了一版又一版。我接触过不少项目前期功能安全和网络安全完全没有对齐等到样件阶段做测试的时候才发现一条UDS诊断指令既要做ISO 26262要求的超时保护又要做网络安全要求的加密校验两条链路叠在一起ECU的响应时间直接超标。这就是典型的流程不协调导致的技术债务越到后期越难还。1.2 需求层面的冲突与互补功能安全的核心逻辑是“降低系统性失效和随机硬件失效导致的风险”它的出发点是故障是硬件坏了、软件写错了、电磁干扰把信号搞乱了这些都是非故意的。网络安全的核心逻辑是“降低人为恶意攻击导致的风险”出发点是威胁是有人故意发伪造报文、破解密钥、注入恶意代码。这两者听起来是两条平行线但在具体需求层面会剧烈碰撞。举几个我实际遇到过的例子安全访问机制功能安全可能要求诊断服务在特定条件下可以被快速访问以便及时刷写或标定网络安全则要求严格的访问控制和锁定策略。两个需求在一个诊断协议栈里打架。故障响应策略功能安全遇到严重故障会要求进入安全状态比如直接切断动力输出但如果这是被网络攻击伪造出来的故障信号呢ECU如果盲目进入安全状态攻击者就可以通过发送故障帧来反复触发整车降级这就是一个典型的“安全机制反被利用”的场景。日志与监控网络安全要求记录足够多的审计日志但日志本身会占用存储和带宽而功能安全对存储器的可靠性和实时性又有要求两者在资源分配上也会有冲突。这些冲突不是靠技术手段硬解就能解决的必须在流程层面建立协调机制让两个团队在需求定义阶段就坐下来谈而不是等代码写完再互相扯皮。1.3 法规与认证的外部驱动力外部压力也是推动两者协调的重要因素。ISO 26262从2011年第一版发布开始已经成为汽车功能安全的全球性基准做汽车电子研发的不管是ECU、传感器还是域控制器只要涉及到安全相关功能基本都绕不开它。而ISO/SAE 21434在2021年发布后配合UNECE R155和R156法规网络安全已经从“选做题”变成了“必答题”——不满足网络安全合规要求车型连市场准入都过不了。这里有一个容易被忽视的点UNECE R155要求车企建立CSMS网络安全管理系统并且这个体系要通过认证审核而CSMS的很多落地细节比如漏洞管理、事件响应、供应商管理跟ISO 26262里的安全管理、供应商管理、变更管理有大量重叠。如果两条体系各自独立建立文档和流程企业就等于做了两遍几乎一样的工作成本翻倍还容易在审核时被发现前后矛盾。稍微有点成本意识的团队都会选择把两套体系在流程层面对齐。1.4 什么项目最需要协调不是所有项目都需要深度协调。如果只是做一个传统的车身控制器功能安全等级是QM网络安全风险也低那两边各走各的流程问题不大。但如果是下面这几类项目协调就是刚需智能驾驶域控制器涉及ASIL D等级功能同时因为具备OTA、高精度地图、V2X通信攻击面非常大。网关与中央计算平台所有跨域通信都经过它功能安全和网络安全的交集最大。带远程诊断和刷写的ECU远程诊断服务是功能安全和网络安全直接碰撞的重灾区几乎每一个诊断服务都要同时过两套审查。如果你手里的项目落在这三类里我建议直接按这篇文章后面讲的方式把两条流程的同步机制建起来越早越好。2. 两套工程流程的核心差异与映射关系2.1 风险分析方法论对比HARA与TARA要协调两条流程首先得看懂它们各自的内核。ISO 26262的风险分析叫HARAHazard Analysis and Risk Assessment核心思路是识别整车层面的危害事件评估严重度Severity、暴露率Exposure、可控性Controllability三个参数一组合得出ASIL等级A/B/C/D或者QM然后基于ASIL等级推导出安全目标Safety Goal和安全需求Safety Requirement。ISO/SAE 21434对应的风险分析叫TARAThreat Analysis and Risk Assessment核心思路是识别资产Asset分析威胁场景Threat Scenario评估攻击路径Attack Path和影响Impact再结合攻击可行性Attack Feasibility得出风险值最后推导出网络安全目标Cybersecurity Goal和网络安全需求Cybersecurity Requirement。两套方法论的输入和输出有非常大的相似性维度ISO 26262功能安全ISO/SAE 21434网络安全分析对象危害事件Hazard威胁场景Threat Scenario风险来源系统性失效、随机硬件失效恶意攻击、人为操纵核心评估参数S、E、C → ASIL影响、攻击可行性 → 风险值输出目标安全目标Safety Goal网络安全目标Cybersecurity Goal需求层级安全需求 → 技术安全需求 → 软硬件需求网络安全需求 → 技术网络安全需求 → 软硬件需求我在项目里做协调时最喜欢用的一个方法就是把HARA和TARA的产出放到同一张需求追溯表里每个安全目标都标注“是否有对应的网络安全威胁”每个网络安全目标也标注“是否涉及安全相关功能”。这样做的好处是两条流程虽然分析的方法不一样但最终都落到同一个需求管理工具里追溯关系一目了然。2.2 V模型上的交汇点ISO 26262和ISO/SAE 21434都基于V模型但各自的V模型侧重点不同。功能安全的V模型强调从概念阶段到系统设计、软硬件设计、集成测试、验证确认的完整链条每个阶段都有对应的安全活动。网络安全的V模型虽然也遵循类似的开发周期但更强调持续性的威胁监控和漏洞管理。如果把两个V模型叠在一起看有几个关键交汇点必须对齐概念阶段HARA的输出安全目标和TARA的输出网络安全目标需要同时进入系统需求定义这一层不对齐后面全乱。系统设计阶段安全机制如看门狗、冗余、监控和网络安全机制如安全认证、加密通信、入侵检测要在系统架构里统一部署避免重复造轮子或者互相冲突。软硬件实现阶段安全相关的软件组件和网络安全相关的软件组件如密码库、安全启动经常跑在同一个MCU上资源隔离、调度优先级这些必须在设计阶段就确定。测试验证阶段功能安全的测试用例故障注入、压力测试和网络安全的测试用例模糊测试、渗透测试可以在同一套测试环境中执行共用测试台架和工具链。发布与运维阶段功能安全的变更管理跟网络安全的漏洞管理要共用一套流程一个变更可能同时触发安全影响分析和网络安全影响分析。这五个交汇点我后面每一部分都会展开讲实操细节。2.3 共性活动的复用软件组件鉴定、工具鉴定、故障注入在两条流程里有几项活动是非常适合做复用的做得好的团队能省下大量重复劳动。软件组件鉴定这个词在热搜里出现频率很高它对应ISO 26262-8里对软件组件复用时的鉴定要求。当一个现成的软件组件比如AUTOSAR基础软件、某个通信协议栈要复用到安全相关功能中但缺少完整的证据链时就需要通过鉴定来证明它在目标应用场景下满足所需的安全完整性等级。这个鉴定过程在ISO/SAE 21434里同样存在因为网络安全也要求复用组件时评估其安全可信度。两套鉴定的底层逻辑都是“基于使用场景评估证据充分性”完全可以共用一套鉴定报告模板只是在评估维度上分别加上安全指标和网络安全指标。工具鉴定也是同理。ISO 26262-8要求对影响安全相关活动的软件工具进行鉴定ISO/SAE 21434虽然没有完全对应的强制条款但在实际审核中网络安全评审方也会要求确认工具的“可信度”尤其是那些用于生成证据、执行测试的工具。如果一个工具同时用于功能安全测试和网络安全测试只需要做一次鉴定两边都认这能省下不少功夫。故障注入就更典型了。功能安全的故障注入是为了验证安全机制能在故障发生时正确响应比如注入一个信号错误、一个内存位翻转确认ECU能进入安全状态。网络安全的模糊测试和渗透测试本质上也是一种“故障注入”只不过注入的是恶意报文、畸形数据。两边的测试设备很多团队都会自研汽车电子故障注入设备和测试脚本可以共用一套基础设施只是测试用例库不同。这也是我在项目里推动的一项核心工作建一个统一的“异常注入测试平台”功能安全团队往里面加故障用例网络安全团队往里加攻击用例一个平台两拨人用。2.4 两条标准的“语言差异”如何破协调流程最大的障碍其实不是技术而是两套标准的术语体系完全不同。功能安全团队说“安全目标”“ASIL”“失效模式”网络安全团队说“资产”“威胁”“脆弱性”同样是“风险”这个词两边的定义和理解都不一样。我常用的办法是建立一个术语映射表在项目内部文件、评审会议和审核材料中统一使用避免因为歧义造成评审返工。比如ISO 26262里的“安全状态”和网络安全里的“安全状态”含义就不同前者指系统为避免危害而进入的降级或关断状态后者指系统在遭受攻击时保持完整性和机密性的状态。这种“同名不同义”的词如果不提前约定清楚评审会上能吵半天。3. 实操如何在项目里把两条流程拧在一起3.1 组织层面角色与职责怎么搭协调流程的第一步不是写文档而是搭组织。我在多个项目里的经验是必须在项目组成员里设置一个“安全协调人”Safety Security Coordinator这个人既不是纯功能安全工程师也不是纯网络安全工程师而是两个团队的“翻译官”和“粘合剂”。他的核心职责是确保功能安全计划和网络安全计划的里程碑对齐组织联合评审特别是需求变更、架构变更和风险分析结果的评审维护“安全-网络安全接口记录”Safety-Security Interface Record里面记录所有两条流程交叉的活动、责任人、输入输出在冲突发生时推动双方达成一致而不是让研发团队被两套要求同时挤压。这个人选不一定要全职但一定得有足够的技术背景和话语权。我见过最糟糕的情况是让一个刚入行的工程师去做协调结果两个团队谁都不听他的协调会开成了吵架会。最好是找那种既做过安全测试、又理解网络攻击路径的人如果团队里没有宁可先从外部请顾问带一轮把协调机制建立起来再放手。3.2 流程层面同步节点与工作产物两条流程的同步本质上是把ISO 26262的Safety Plan和ISO/SAE 21434的Cybersecurity Plan放到同一张时间表里。我在项目里通常采用“双轨并行、定期交叉评审”的模式具体来说有四个强制同步节点第一个同步节点概念阶段出入口。功能安全的HARA报告和网络安全的TARA报告要在同一轮评审中一起过。评审的目的不是审批两份独立的文档而是确认两边的风险分析结果是否互相影响。比如HARA识别出一个需要ASIL C等级的安全目标TARA里对应的资产如果遭受攻击会导致这个目标被破坏那么网络安全需求的等级就不能低于某个下限。这个关联如果没有在概念阶段建立后面补追溯关系会非常痛苦。第二个同步节点系统设计冻结前。系统架构确定之前必须开一次“安全机制联合设计评审”。功能安全提出的安全机制硬件冗余、软件自检、看门狗和网络安全提出的安防机制安全启动、Secure Debug、加密通信要在这次评审里完成冲突消解和资源分配。我特别要提醒一句安全机制本身不能成为攻击入口这是这次评审的核心议题。比如看门狗如果不加保护攻击者理论上可以通过反复触发复位来绕过安全状态所以看门狗的配置寄存器本身需要做访问保护。这种细节单靠功能安全团队或者单靠网络安全团队都很难想到必须坐在一起过。第三个同步节点测试用例评审前。功能安全测试计划和网络安全测试计划要互相审查。重点看两件事一是测试对象是否重叠能不能共用一个测试环境二是测试用例是否遗漏了“安全与安防交叉场景”——比如攻击者利用安全机制触发降级来造成整车不可用这种用例在纯功能安全测试和纯网络安全测试里都容易被遗漏。第四个同步节点发布前评审。这里要同时过Safety Case安全论证和Cybersecurity Case网络安全论证并确认所有的安全目标、网络安全目标都已完成验证。发布前还有一个容易被忽略的动作确认变更管理流程已经覆盖了网络安全事件的响应路径。也就是说如果在售后阶段发现了新的漏洞不能只走网络安全团队的应急响应流程还要同步评估这个漏洞是否影响安全目标必要时触发功能安全的变更流程。这四个节点我会在项目计划里直接画成带双色标记的里程碑红色代表功能安全活动蓝色代表网络安全活动紫色代表联合活动。项目管理上看起来繁琐但执行起来反而简单因为每个节点都是评审会所有人在同一时间做同一件事避免了“功能安全先走一半、网络安全还没开始”的错位。3.3 技术层面需求管理与测试实现流程协调最终要落到工具链和具体技术上。先说需求管理我强烈建议功能安全需求和网络安全需求放在同一个需求管理工具比如DOORS、Polarion、CodeBeamer的同一个项目中用不同的字段来标记需求类型Safety/Security/Combined。这样做的好处是追溯矩阵可以直接跨类型生成比如做影响分析时一个变更需求能同时拉出受影响的Safety Goal和Cybersecurity Goal。在实现层面有几个技术选型问题需要提前达成一致AUTOSAR基础软件的安全与防护配置。现在主流的ECU都跑AUTOSAR其中E2E保护End-to-End Protection既是功能安全常用的通信保护机制也常被网络安全方案用作数据完整性手段。两边的配置要在同一个工具链里完成E2E profile的选择、CRC算法的强度、超时窗口的设置既要满足ASIL等级要求的残余错误概率也要满足网络安全对恶意篡改的抵抗强度。这两个指标的叠加会导致CPU负载上升所以必须在设计阶段做好性能预算。诊断服务的安全访问与访问控制。UDS诊断是汽车电子开发中的一个高频词诊断服务的实现必须同时满足两条线功能安全对诊断服务的超时、会话状态、故障码清除逻辑有严格定义网络安全对诊断的会话建立、认证、权限分级、安全日志有要求。实操中我会把诊断服务的需求拆成三层基础功能层由功能定义决定、安全防护层由网络安全决定、失效保护层由功能安全决定三层独立评审、集成验证。安全启动与安全通信的资源分配。做网络安全的基本都清楚安全启动和SecOCSecure Onboard Communication这些机制会消耗计算资源、内存和通信带宽。但在项目里这些资源的分配经常只从网络安全角度考虑忽略了功能安全的实时性需求。比如SecOC认证字段的添加会增加总线负载如果总线上跑着ASIL D的安全相关报文负载率的余量就不够这会直接影响功能安全的时序分析结论。所以我要求的做法是任何网络安全机制的资源占用都要在功能安全的时序分析报告中有所体现两者同步更新。3.4 一个可落地的示例底盘域控制器的双流程协调讲一个我实际操盘过的项目片段帮助你把上面的内容串起来。某个底盘域控制器比如负责线控转向或线控制动需要满足ASIL D功能安全等级同时因为支持远程诊断和OTA刷写网络安全风险等级也不低。在概念阶段功能安全团队做HARA识别出“转向指令错误导致车辆失控”这个危害得出ASIL D安全目标是“确保转向指令在合理范围内且执行器正确响应”。网络安全团队做TARA识别出“攻击者通过CAN总线注入伪造转向指令”这个威胁场景对应的资产是转向指令报文影响评估是“完全丧失转向控制”攻击可行性是“中高物理接入或无线接入均可”于是得出一个高风险的网络安全目标“确保转向指令报文的真实性和完整性”。两个目标在联合评审时对齐安全目标关注的是“系统内部故障导致的错误指令”网络安全目标关注的是“外部攻击导致的恶意指令”但最终的缓解方案高度重合——都需要对转向指令本身做完整性和合理性校验都要求执行器对异常指令有降级响应。于是评审结论是在通信层采用SecOCE2E双重校验在应用层增加转向指令合理性检查在系统层增加降级策略进入安全状态时同时记录网络安全审计事件。到了测试阶段功能安全团队用故障注入设备做E2E校验失效、传感器超差等用例网络安全团队用同一个设备做SecOC密钥破解、报文重放、畸形报文注入等用例。测试用例共享一个管理库执行结果统一回归到需求追溯表里两边评审时都能看到完整的验证覆盖。这个项目最后无论在ISO 26262的外部审核还是ISO/SAE 21434的CSMS审核中都顺利通过而且审核员对两条流程的协调程度评价很高因为文档里能看到清晰的交叉追溯关系。4. 常见问题与排查技巧实录4.1 安全目标与网络安全目标直接冲突听谁的这是我在项目里被问得最多的问题。比如前面说的诊断服务功能安全说“故障时应该尽快允许诊断介入”网络安全说“诊断接入必须经过多重认证认证失败要锁定”。两个需求在同一场景下互斥怎么办我的处理原则是先做风险排序再决定取舍而不是直接砍掉其中一方。排序的维度是最终的整车风险。如果某个安全机制被绕过会导致不可接受的危害比如ASIL D场景那么这个安全机制不可让渡如果某个网络安全措施被放宽后攻击者利用它的代价非常高且攻击后果低于安全危害等级那么可以考虑放宽网络安全要求但必须同时加补偿措施比如增加监控告警、限制访问次数、缩短认证有效期。这个决策不能靠两个工程师私底下拍脑袋必须走正式的联合评审并且把决策理由写进接口记录。我在多个项目里发现90%的“冲突”其实是需求表述不精确造成的把需求细化到具体条件之后两边通常能找到同时满足的方案。真正不可调和的冲突很少。4.2 测试用例互相重复测试资源浪费严重功能安全要做信号级故障注入、总线级干扰测试网络安全要做模糊测试、渗透测试两边的测试用例在“异常输入”这个层面重叠度非常高。但很多团队因为工具链不互通各自建了一套测试平台硬件重复采购脚本重复开发。我的建议是做一个统一异常注入测试平台把底层的报文注入、信号篡改、总线干扰能力做成公共模块功能安全和网络安全团队各维护一份自己的用例库但测试执行和结果记录全部走同一个平台。这样做的收益非常直接底层能力建设一次投入两边的测试执行效率都能提升更重要的是测试结果集中在同一个数据库里做交叉分析时效率极高——比如发现某个异常报文的响应行为既涉及安全机制失效又暴露了网络安全漏洞这种问题在分开测试时根本发现不了。4.3 软件组件鉴定报告怎么复用最省力软件组件鉴定是功能安全审核的常规检查项很多项目在进度紧张时鉴定报告写得非常潦草审核时被打回。我的经验是鉴定报告的模板一定要按“使用场景”组织而不是按“组件”组织。同一个组件在不同项目中复用时使用场景不同鉴定证据的充分性要求也不同。如果你的报告按使用场景写换一个项目时只需要更新场景描述和差异分析核心证据不用重做。在ISO/SAE 21434的体系下网络安全团队对软件组件的“可信度”评估也依赖类似的证据。我的建议是在鉴定报告里增加一个“网络安全考量”章节记录该组件是否涉及密码学实现、是否暴露了网络接口、是否有已知漏洞等。这样一份报告两个审核方都能用避免做两份内容高度重合的文档。4.4 供应商接口和责任划分不清实际上很多ECU开发是主机厂采购Tier 1的方案Tier 1再采购芯片、软件协议栈供应链很长。功能安全和网络安全在供应链上经常遇到同一个现实问题需求往下传时丢信息。主机厂只说了要什么功能没说要什么安全等级到Tier 1就自己猜猜错了后面全盘返工。我的经验是在给供应商的SOR询价/需求说明里必须同时包含安全需求包和网络安全需求包并且明确各自的工作范围、交付物、审核节点。如果供应商在功能安全方面有ISO 26262的流程认证在网络安全方面也有对应能力采购选择会容易很多。另外一定要在项目启动时开一次“三方接口会”主机厂、Tier 1、关键软件供应商坐在一起把HARA/TARA的输入输出边界、故障注入测试的职责、漏洞应急响应的责任人一次理清。这个会开好了后面合作能少吵十次架。4.5 审核时被问懵的几个高频问题最后分享几个审核时的高频问题备好答案能省大事。“安全机制被攻击者利用怎么办”审核员很爱问这个。答案的核心是在HARA/TARA交叉分析时每一个安全机制都要做“被攻击”场景的二次分析。比如看门狗、诊断恢复机制、故障降级策略这些机制本身要当作TARA里的资产来分析。“漏洞发现后功能安全变更流程是否会被触发”这个问题的标准答案是肯定的。因为漏洞可能导致的功能异常比如被利用篡改控制指令也可能触发安全目标失效所以漏洞响应计划里必须包含“对安全目标的影响评估”这个环节这是一个标准的双流程交叉活动。“两个团队的安全计划是否互相引用”如果回答没有审核员基本就会认为两条流程没有协调。所以安全计划和网络安全计划一定要互相引用对方的里程碑、输入输出和评审节点并且要在文档中明确说明协调机制是怎么运作的。5. 最后再分享一点个人经验做完几个整车项目的双流程协调之后我最大的体会是技术层面的协调工作其实不难难的是让两个专业团队互相理解和信任。功能安全工程师习惯的是确定性思维每个失效模式都要列得清清楚楚网络安全工程师习惯的是对抗性思维永远假设对手在暗处漏洞永远存在。这两种思维的碰撞需要时间磨合。我的做法是在项目早期就组织几场“角色互换培训”让功能安全团队自己分析一个攻击场景让网络安全团队自己分析一个失效场景。半小时就够但效果出奇地好两边看问题的角度一下就打开了。另外不管流程文档写得多漂亮最终都要落到需求追溯表上——功能安全看的是目标是否被覆盖网络安全看的是威胁是否被缓解只有追溯到同一张表里协调才算真正完成。这个方向的技术更新也很快比如AI安全分析工具开始辅助TARA和HARA自动化故障注入平台也在快速发展。如果你正打算在团队里推动这两条流程的融合我建议先别急着上大而全的平台而是从“接口记录 联合评审 统一追溯表”这三个最小集开始跑通一个试点项目再逐步扩展。这套路我已经在好几个项目里验证过靠谱。