今天的汽车行业面临最大的挑战之一,就是从过去基于硬件的车辆过渡到软件定义汽车的时代。当软件成为造车行业发展的主要领域,越来越多的OEM和零部件供应商逐步转型为软件公司。汽车也从单纯的出行工具变成了移动的计算机,汽车的开发越来越像在四个轮子上去开发车载电脑。
功能安全、预期功能安全与信息安全的差异与协同
随着智能网联汽车的快速发展,新技术不断涌现,如可通过OTA技术远程进行软件更新升级或实现与个人数字设备的集成等等。这些智能网联汽车上新技术的广泛应用对整车的信息技术安全(或称网络安全)提出了额外的要求。 该领域的最新技术记录在行业标准ISO 21434中,题为“道路车辆 – 网络安全工程”。
当前大多数OEM及零部件供应商采用工程流程,以确保车辆中的电子/电气(E/E)系统的功能安全。这意味着在开发过程中考虑基于功能安全和预期功能安全(SOTIF)开发过程,分别遵循国际标准ISO 26262和ISO 21448的相关规范。
对于从业人员来说,理解当前安全和网络安全标准之间的关系至关重要,同样重要的是了解如何协调这些标准所提供的不同生命周期。例如在基于模型的开发(MBD)过程中,尤其是当我们在利用MATLAB Simulink或者TargetLink的工具链时,怎样才能实现功能安全性的同时还能满足网络安全性,并最终确保软件质量?这是我们接下来要讨论的内容。
首先,我们将回顾汽车领域当前广泛应用的核心功能安全和网络安全标准。目前有以下三项基本标准:
- ISO 26262:2028《道路车辆 – 功能安全》:该标准针对由车辆内部安全相关的E/E系统的功能失效所引发的潜在危险。它定义了一种汽车专用的基于风险的评估方法,通过使用汽车安全完整性等级(ASILs)来确定和映射风险。[ISO 26262, ISO DTS 5083]
- ISO 21448:2022《道路车辆 – 预期功能的安全》:该标准处理因预期功能的不足导致的不合理风险,提供了一个通用的论证框架和措施指南,以确保预期功能的功能安全(SOTIF)。其目标是减少已知潜在有害场景的影响,并将未知危险场景的数量降至最低。[ISO 21448, ISO DTS 5083]
- ISO/SAE 21434:2021《道路车辆 – 网络安全工程》:该标准重点关注未经授权的行为(包括主动攻击者行为)所带来的风险。此标准要求实施附加的工程活动和技术机制,这些活动和机制可能也会影响功能安全。标准描述了网络安全活动,包括确保安全开发过程的活动,特别强调风险管理。[ISO/SAE 21434, ISO DTS 5083]
整体安全
要成功应对软件定义汽车的相关挑战,仅仅单独强调上述的功能安全、SOTIF和网络安全域还远远不够。我们需要采取一个整体安全的方法。我们可以将整体安全定义为系统在安全性和网络安全属性方面提供服务或功能的能力(见图1)。然而,目前汽车行业还没有适用于整体安全的标准[1]。
功能安全 vs 网络安全
那么,功能安全和网络安全是如何相关联的呢?我们摘录了两句话来描述这种关系:
“传统上,功能安全和网络安全通常被认为是不同的知识领域,由不同的专业人士来负责。但是我们观察它们的特征并类比得出的结论是:他们实际上是相互依存的。特别是功能安全需要系统的网络安全支持。”[Ser19]
此外,事实证明“没有网络安全,就不可能实现功能安全”,更准确地说,“我们可以将网络安全视为确保安全的保障”。[Rya18]
功能安全和网络安全的关系同样在图2中有相关描述,但是是从不同的视角来进行的。如图2所示,网络安全强调保护我们的系统免受外部威胁。而功能安全强调的是防止或缓解系统内部的危险。这些危险可能由系统的预期功能或故障行为引发。
在以硬件为基础的车辆时代,网络安全并未收到太多的关注。但是,随着软件定义汽车的快速发展,网络安全问题变得日益重要,因此开发人员开始更为系统地考虑功能安全和网络安全。
功能安全和网络安全的协同工程
接下来,让我们深入了解如何在一个需要同时满足严格功能安全和网络安全要求的E/E系统中进行协同工程。为此,我们将首先了解ISO 26262标准中提出的功能安全生命周期和ISO/SAE 21448中的网络安全生命周期,来了解他们的相似之处和差异。然后,我们将讨论这些安全周期可能的整合方案。
功能安全标准ISO 26262涵盖了系统和软件层面的生命周期,如图3所示(为简化说明,同步进行的硬件开发生命周期被省略)。虚线以上描述系统层面的活动,虚线以下则描述软件层面的活动。
V模型的左侧包含了系统和软件的规范、设计和实现活动。
在系统层面,从危害分析与风险评估(HARA)开始,从功能安全的角度识别和评估系统的潜在危害及相关风险。接着,确定汽车安全完整性等级(ASIL),得出相应的安全目标,作为顶层的安全需求。
功能安全目标随后细化为一个两阶段的过程。首先转化为一系列功能安全需求,然后转化为技术安全需求。最终的结果被分别记录在功能安全和技术安全概念中。
在建立了技术安全概念后,生命周期进入软件层面。在这一层面,首先定义软件安全需求,接着进行软件架构设计、软件单元设计及软件实现。
接着,我们进入V模型的右侧流程,包括必要的集成、验证和确认(V&V)活动。
这里的基本理念是逐步集成软件和系统,并通过相应的V&V活动确保V模型左侧每个步骤的功能安全。
一旦开发完成,生命周期将继续进入生产和运营阶段。
国际标准ISO/SAE 21434引入了一个网络安全(CySec)生命周期,如图4所示。该生命周期与前面讨论的功能安全生命周期在概念上有一定相似性。
在V模型左侧,初步威胁分析与风险评估(TARA)生成了高层的网络安全目标,并在系统(项目)层面被细化为网络安全概念。这一概念为组件和子组件层面的低层设计提供了指导。
请注意,相比于功能安全生命周期,这里的细化步骤更具通用性。而由于公司结构或系统特性的不同,具体步骤可能会有所差异。
V模型的右侧包括常规的集成、验证和确认活动。一网络安全确认活动之后,即是生产和运营阶段。
网络安全生命周期具有更强的迭代性。如图4的左上部分所示,上述概念、产品开发、生产和运营阶段活动以迭代的方式进行。通过OTA更新进行软件维护成为生命周期中一个重要的组成部分,这样做的原因之一是为了确保整个产品生命周期中必要的网络安全。
到目前为止,我们考虑了两个不同的生命周期:一个针对功能安全,另一个则针对网络安全。这两个标准本身仅指出了协调安全和网络安全活动的必要性,且对于做法只提供了一些概括性的指导。
ISO 26262标准要求应在功能安全、网络安全和其他相关的领域间建立并保持有效的沟通渠道。而网络安全标准ISO 21434也提出,组织应确定与网络安全相关或交互的领域,并建立和维护这些领域之间的沟通渠道,以确定网络安全如何融入现有流程,并实现信息交流的协同效应。
然而,这两项标准都缺乏对功能安全与网络安全协同工程的流程、方法和工具的更详细描述。
因此,两个生命周期的实际对接和协调仍是一个持续研究的领域。
值得注意的是研究项目“EmbeddedSafeSec”。[2]该项目的目标是开发一个流程模型和集成方法论,以确保在开发关键嵌入式系统时的功能安全和网络安全 [EmbeddedSafeSec]。
为此,功能安全和网络安全生命周期被结构化为相关活动,使其至少可以被部分组合成活动对,并能够作为协同工程的一部分被共同处理(见图5)。
图6展示了功能安全和网络安全活动在软件开发中的较为复杂的映射关系,图7则进一步详细展示了软件单元的集成活动。
图7的上半部分描述了ISO 26262和ISO/SAE 21434中可以映射到软件单元验证活动对的不同条款。下半部分列出了该活动对的输入和输出工作产品,以及该活动对应的目标。
应用示例:建模和编码的规范检查
汽车企业在软件开发当中,尤其是应用层软件设计中,常常采用基于模型的开发(MBD)方法。为支持这些方法,Simulink和TargetLink等建模工具被广泛使用。
在MBD方法的框架下,软件单元的设计可以通过TargetLink中的可执行实现模型进行描述,而随后C代码的实现则通过代码生产工具自动完成。
ISO 26262和ISO/SAE 21434标准均要求在建模和编码时应用规范来避免建模/编码语言的某些特性对功能安全和网络安全造成潜在的不利影响。对于C语言,这些规范可以基于MISRA C或CERT C指导准则制定。
在使用MBD方法时,这些指导准则中的一大部分可以直接在模型层面进行检查和实施,即通过应用相应的建模规范检查来实现。
在功能安全与网络安全协同工程的步骤中,作为单元验证步骤的一部分,企业通常会采用一套通用的规范,以同时解决功能安全和网络安全的相关问题。
这样的规范集可能包括确保输入值的一致性(数据类型和范围),以及算术运算中数据范围一致性的检查项(见图8)。
例如,在使用TargetLink进行整数运算时,必须确保输出数据类型和中间变量的指定值范围缩放足够大,以此来避免溢出。原则上可以使用饱和限制模块来避免数据溢出。通过为输出变量选择足够位长的数据类型来实现,上述目标。这种方法通过启用整数溢出饱和选项来保存中间结果,从而避免整数运算中的饱和限制。
用于功能安全和网络安全协同工程的规范集中,还应包括检测浮点数据类型之间不必要的直接相等比较(见图9)的建模规范检查项。如图9左下角所示,这样的检查项能够标记这样的示例,并用图9右下角改进后的建模方法替代。
在Simulink模型的“chart”图标中,在定义数据类型为“double”时,是不允许将关系运算定义为相等比较的。推荐的方法是计算差值,并确保误差在容差范围之内。
为了确保软件开发过程的效率,建模和编码规范检查应当尽可能实现自动化。工程师可以借助MXAM等规范检查工具的高效支持,来实现建模的合规性,从而促进功能安全和网络安全。比如,在ISO 26262和ISO/SAE 21434中提到的建模规范,MXAM的建模规范库已实现全面覆盖。同时,功能安全建模规范和来自行业顶尖企业的最佳实践也同样被集成在MXAM中,来帮助工程师自动检查并修正他们的模型。MXAM同样能够针对给定的建模规范集生成报告,并自动修正规范违规。图10展示了MXAM进行自动化模型分析和修正的过程。
结论
没有网络安全,就无法实现功能安全。传统上,将功能安全(包括功能安全FuSa和SOTIF)与网络安全分离考虑的方式需要被一种全局性的整体安全方法取代,这种方法融合了功能安全和网络安全的协同工程。这样的协同工程方法需要全生命周期的协作和系统性考量。强大的工具支持能够帮助实现协同效应,推动功能安全与网络安全的有机结合。
-------------------------------
[1] 新制定的技术规范ISO TS 5083:2024《道路车辆——自动驾驶系统的安全性——设计、验证和确认》采用了一种更加整体化的安全方法 [ISO DTS 5083]。然而,由于其重点更专注于自动驾驶系统,该文件并不像上述讨论的标准那样是一个基础性标准。
[2] EmbeddedSafeSec 项目(2021 年 3 月 1 日至 2022 年 12 月 31 日)由柏林投资银行(IBB)研究、创新与技术促进计划(ProFIT)和欧洲地区发展基金(ERDF)资助。
参考文献
- [ISO 26262] ISO 26262 ‘Road vehicles – Functional safety’. International standard, 2nd edition, ISO 2018
- [ISO/SAE 21434] ISO/SAE 21434 ‘Road vehicles – Cybersecurity engineering’. International standard, ISO/SAE 2021
- [ISO 21448] ISO 21448 ‘Road vehicles – Safety of the intended functionality’. International standard, ISO 2022
- [ISO DTS 5083] ISO DTS 5083 ‘Road vehicles – Safety for automated driving systems – Design, verification and validation’. Technical Specification (Draft), ISO 2024
- [Ser19] Serpanos: There Is No Safety Without Security and Dependability.
IEEE Computer 52(6), June 2019, pp. 78 – 81 - [Rya18] A. Ryan: There is no safety without security. 2018 www.tessentembeddedanalytics.com/no-safety-without-security/
- [EmbeddedSafeSec] EmbeddedSafeSec Research Project. 2021-2022 https://embeddedsafesec.zesys.de/en/