ISO 21434 解析:汽车软件开发者的合规实践与指南
ISO 21434 是一个帮助汽车开发商、原始设备制造商及其供应商确保车辆安全的标准。随着现代车辆更加地互联,以及自动驾驶汽车的增加,确保汽车软件能够安全地设计与实施就变得格外重要。
本篇文章将告诉您什么是 ISO 21434,并为汽车嵌入式软件开发团队提供一些建议。
什么是 ISO 21434?
ISO 21434《道路车辆——汽车网络安全工程》是一项汽车行业标准。它主要关注道路车辆电子系统中的网络安全风险。
ISO 21434 涵盖了车辆生命周期的所有阶段——从开始设计到车辆报废,通过应用网络安全工程来确保车辆的安全性。这适用于车辆中的所有电子系统、零部件和软件,以及任何外部的连接。
此外,该标准为开发人员提供了一个全面的方法来实施覆盖整个供应链的安全保障措施。
为什么 ISO 21434 很重要?
随着车辆的连接性增加(例如 Wi-Fi 和蓝牙)以及自动驾驶汽车的发展,网络攻击和造成损害的风险也在增加。
建立 ISO 21434 标准的目的是提供一个结构化的流程,确保汽车产品在整个生命周期中都考虑了网络安全问题。
这个标准要求汽车制造商和供应商在实施网络安全工程时必须保持应有的审慎,并且在整个供应链中应用网络安全管理来支持此过程。它鼓励企业建立网络安全文化,并从一开始就将安全考虑纳入所有的设计中。
符合 ISO 21434 标准
ISO/SAE 21434 对软件开发有着具体的要求,包括检查潜在的弱点的分析,以及确保网络安全要求相一致、正确和完整。
网络安全应处于所有设计决策的最前沿,包括选择用于软件开发的编程语言。
选择编程语言时需要考虑几个标准,包括:
安全的设计和编码技术
明确的语法和语义定义
然而,所选的语言可能并不能完全满足这些标准。因此,有几种方法可以解决这些语言的缺陷,包括:
使用语言子集
强制执行强类型
使用防御性的实施技术
我们建议使用编码指南来弥补所选择的语言的不足。
为什么 ISO 21434 推荐使用 MISRA C:2012 修订版 1 和 CERT C 指南?
众所周知,C 和 C++等编程语言包含了一些特性,可能会导致程序在某些情况下表现出不确定或不明确的行为。在安全系统中,这是不可接受的。您可以通过限制使用某些具有风险的语言结构和语言子集,从而降低程序出现网络安全问题的可能性,使编程语言适用于网络安全要求较高的系统。
C 语言仍然是汽车软件中最常用的语言。ISO/SAE 21434 特别建议使用 C 语言的项目使用 MISRA C:2012 修订版 1 和 CERT C 指南。
创建语言子集是 MISRA C:2012 和 CERT C 指南的核心。MISRA C:2012 修订版 1 指出:“MISRA C 指南定义了 C 语言的子集”。
这两个指南都是通过限制使用某些具有风险的功能来实现这个目的。
例如,MISRA C:2012 修订版 1 中,规则 21.5 规定了禁止使用<signal.h>中的功能,规则 21.21 规定了禁止使用“系统”功能。
同样,CERT C 规则信号 11(SIG)中规定了阻止特定的信号处理程序,ENV33-C 不再调用 system()。
强类型确保对于语言数据类型的理解,防止某些类型的程序编制错误。使用具有强类型的编码准则可以确保编码的正确性和一致性。
MISRA C:2012 修订版 1 拥有基本的类型模型,专门用于强制执行强类型,而 CERT C 则在个别规则中隐蔽地解决了强类型问题,例如 INT32-C 规则可防止有符号整数溢出。
防御性实施技术(Defensive implementation techniques)使软件能够在意外情况下继续正常运行。它需要考虑“可能会发生什么”。例如,考虑可能的污染数据,以及理解算术函数的求值顺序。最重要的是,代码需要简单易懂。
所有防御性实施技术都应该从使用公认的编码准则开始。MISRA C:2012 修订版 1 和 CERT C 能实现这一点(通过识别关键和未指定的语言行为),从而使生成的代码更可靠、更不容易出错且更易于维护。
CERT C 是一个完整的语言安全标准,所以它是为了识别那些网络安全特有的漏洞而设计。而 MISRA C:2012 修订版 1 定义了一个适用于安全和防范的语言子集,并有专门针对防御性实施技术的规则,包括 switch 语句(规则 16.2 和 16.3)和资源管理(规则 22.x)。
什么是 ISO 21434 工具?
为了有效地识别漏洞和弱点,并执行推荐的编码准则(如 MISRA 和 CERT C),您应该使用行业标准化的工具,特别是静态代码分析器。
静态代码分析工具(如 Helix QAC)既可以验证是否符合编码准则,又可以提供符合标准的证据。这将提供网络安全需求的整体一致性、正确性和完整性。
在任何的车辆开发过程中,软件工具都是必不可少的组成部分,必须在考虑对产品网络安全影响的前提下进行管理。这其中也包括了验证工具,例如静态分析器。
确保开发过程中使用的工具安全是很重要的,它们不能对网络安全产生不利影响。这包括工具的管理,确保正确使用工具,并确保访问受到控制。工具的管理情况需要提供证据来显示,其中包括经过认证的结果。
正确的工具会让证明合规变得更简单,像 Helix QAC 这样的静态分析器可以帮助满足开发指南,生产安全、可靠的软件。
Helix QAC 完全符合 MISRA C:2012 和 CERT C 指南,并在此前已经通过了 TÜV-SÜD 安全关键系统认证,帮助您轻松验证软件是否存在常见的代码安全漏洞。
此外,通过使用静态代码分析器(如 Helix QAC),您可以通过以下方式加速验证合规:
实施编码标准并检测规则冲突
在开发早期检测合规性问题
加速代码审查和手动测试工作
报告不同时间、不同产品版本的合规性
龙智即将亮相 ACT 汽车电子与软件技术周,带来大规模、安全、高效的开发解决方案
正如上文所说,软件工具在任何车辆开发过程中都是不可或缺的一部分。Perforce 静态代码分析解决方案中的两款工具(Helix QAC和Klocwork)针对不同开发语言,为汽车软件开发带来了高质量、低维护、符合标准和法规的代码。
在即将举行的 ACT 汽车电子与软件技术周上,龙智带来集成了 Perforce 静态代码分析工具的汽车行业解决方案,助力大规模团队轻松协作、加速创新,并开发安全、可靠、合规的汽车软件。
诚挚地邀请您于 8 月 17-18 日(周四-五)莅临 #26 龙智展位!除了展示 Perforce 静态代码分析解决方案外,我们还带来了版本控制 Helix Core、项目管理 Jira、知识库 Confluence,以及基于 Jira Service Management 的 ITSM 等解决方案,帮助汽车企业实现敏捷与高效开发,提升产品的安全与合规性,并加强团队协作,更好、更快地交付产品。
莅临展位还能参与精彩的抽奖活动,赢取丰厚奖品。龙智 DevSecOps 专家也将在现场与您面对面交流,为您解答各种关于汽车软件开发的问题,分享我们的最佳实践和经验。
评论