摘要
为了解决车载安全问题,必须改变车载系统的开发流程,并且必须建立评估这些系统安全级别的系统。
点击阅读:
车载安全(二):用于保护V2V和V2I通信的安全技术点击阅读:
汽车安全技术的开发流程是怎样的?
美国汽车工程师协会 (SAE) 目前正在研究一项名为"SAE J3061:网络物理车辆系统网络安全指南"的新网络安全标准,该标准于 2016 年 1 月发布。该标准是一套指导原则,为实施复杂的系统设计提供了专业知识,以最大限度地减少汽车系统被他人滥用的可能性,同时仍然执行所需的功能。
还有一种名为"博世安全工程流程(Bosch SEP)"的汽车安全工程流程,由罗伯特·博世在美国举行ESCAR美国汽车安全大会上提出。博世SEP定义了三个阶段。简而言之,第一阶段定义产品概念和系统架构,并纳入安全目标。第二阶段包括威胁和风险分析,分析漏洞、已知攻击和威胁场景,并最终评估结果和风险。第三阶段侧重于安全需求。在此阶段,定义风险承受标准和安全需求,并基于这些安全需求创建客户需求规范。

图 1、构成博世 SEP 的三个阶段
实现缺陷会导致高达 50% 的安全问题,包括缓冲区溢出、索引/整数溢出和错误处理不当,这就是为什么安全编码如此重要。
许多导致实施缺陷的原因包括开发人员安全培训不足、规范过于复杂以及缺乏适当的标准(即同时涵盖安全性和可靠性的标准)。因此,安全可靠的编码标准至关重要。博世公司开发了 Bosch-SEP,并积极参与安全可靠统一编码的标准化工作。Bosch-SEP 还讨论了渗透测试和模糊测试等安全测试方法。我们将在后文中详细解释这些安全测试。
嵌入式安全评估
嵌入式安全评估近年来备受关注。例如,在早期开发阶段对汽车系统组件(如电子控制单元 ECU)进行广泛的安全评估,可以有效降低漏洞风险,从而防止攻击者利用这些漏洞造成重大经济损失或安全损害。本质上,安全评估可以分为两大类:理论评估和实践评估。

图 2、两种"嵌入式安全评估"类别
理论安全分析可以而且应该在车辆开发周期的所有阶段进行。理想情况下,理论安全分析应尽早开始。而实际安全测试则只能在评估系统(例如原型车)实现之后才能进行。
理论安全分析的例子包括设计分析和威胁风险分析。设计分析是一种基于车辆系统高层描述的高级分析。设计分析的目标是在开发周期的早期阶段识别系统中的系统性缺陷,例如,通过查找攻击途径,如薄弱的加密算法或标准协议之间的薄弱交互。
车载系统的文档越详细,威胁和风险分析就越深入。首先对车载系统进行全面分析,识别潜在攻击。然后根据预期所需时间、攻击者的专业水平、所需设备以及访问目标系统的方法,评估每种攻击的潜在风险。
此外,每次攻击的潜在危害程度(损失级别)均基于财务损失、运营损失和安全损失进行评估。综合考虑每次攻击的潜在危害程度和潜在损失,可以计算出每次攻击的风险值。高风险值的安全漏洞必须始终优先处理。
然而,理论安全分析无法检测实现缺陷或规范与实现之间的差异。为了降低此类实现问题的风险,有必要应用安全的软件开发过程。
四步实用安全测试
即使应用了安全开发流程的最佳实践,实现过程中仍然可能存在漏洞。实际安全测试包括发起攻击以发现这些漏洞。更深入的实际安全测试可以揭示实现中未定义的功能或与规范的不一致之处。此外,实际安全测试还可以显示对目标系统发起实际攻击的难度。

图3、实用安全测试的分类
典型的实用安全测试包含四个步骤:
第一步是功能安全测试,重点在于检验目标系统所有安全相关功能的稳健性和正确性。这一步骤可以发现实现错误、与规范不一致之处以及未定义的功能,这些都可能导致安全漏洞。
第二步称为漏洞扫描,即检查目标系统是否存在已知的常规安全漏洞,例如已知的安全漏洞利用和由于配置错误导致的已知漏洞。
第三步深入挖掘,着重于发现先前未知的安全漏洞。这一步称为模糊测试,它涉及向目标系统发送格式错误或不合规的输入,并对其进行监控,以检测是否存在任何异常。使用 CAN 模糊测试来检查目标 ECU 的运行情况相当困难,因为许多 CAN 消息不需要接收 ECU 的响应。然而,一些技术已被提出,利用监控功能来改进 CAN 模糊测试。例如,可以执行内存检查以查看关键值是否被覆盖,还可以设置跳转断点来查看代码的哪些部分被执行。
第四步侧重于通过渗透目标系统的软硬件来测试整个系统。在这一步中,测试人员会尝试模拟经验丰富的攻击者,并利用所有已知的安全漏洞。凭借多年的黑客经验,测试人员将进行逆向工程,提取敏感数据,结合软硬件方法,并执行更复杂的攻击(例如,利用硬件调试接口中的漏洞,读取内存,然后执行基于软件的攻击来提取私钥或其他敏感数据)。
然而,需要注意的是,实际的安全测试,尤其是模糊测试和渗透测试,极难涵盖所有可能的攻击。由于不可能面面俱到,因此必须决定投入测试的时间和资源,以及测试的范围。当然,这样一来,实际的安全测试可能会遗漏一些严重的系统性缺陷。实际的安全测试不能取代理论的安全分析。为了实现更全面的安全测试,理论的安全分析应该弥补这些缺陷。
如上所述,必须改进整个软件开发流程,尽早最大限度地减少攻击面,这就需要在开发周期的每个阶段都增加安全措施。
