打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
联网汽车的网络安全(五):车载网络安全的开发流程和评价方法

文:岡 健五,译:牛喀网

针对车载网络安全,传统车载系统的开发流程需要做一些变更。而且要针对该车载系统的安全等级有一个测评的机制。

车载系统网络安全开发流程

美国自动机协会(SAE)正在对网络安全相关的规程《J3061:信息物理汽车系统网络安全指南(Cybersecurity Guidebook for Cyber-Physical Vehicle Systems)》进行研究,已于2016年1月发布该指南。规程最小化限制了车载系统被恶意利用的可能性,并提供了执行需求功能的复杂系统设计方法。

另外,在美国召开的车载网络安全会议(escar USA 2015)上Robert Bosch发布了Bosch SEP(Security Engineering Process)车载网络安全工程流程。BoschSEP中定义了三个阶段。简单的说,第一阶段是在产品的概念、系统架构设计时定义网络安全目标。第二阶段是分析攻击的风险、漏洞,以及已知的攻击或威胁的场景,最后对结果和风险进行评价审查。第三阶段是以安全需求为核心,定义可接受的风险标准以及网络安全需求,并以此需求为核心作成客户需求规范。


図1「Bosch SEP」的3个阶段

目前已经知道造成网络安全问题的原因中50%以上是实施缺陷。典型的例子包括缓存溢出,索引/整数溢出、错误处理不当等。因此安全编码非常重要。

实施缺陷的原因多数是开发者安全培训不足,对复杂规范和标准(包括Safety和Security标准)的正确理解不足。因此,需要safe-secure的编码规范。Bosch-SEP还讨论了渗透测试和fuzz测试等安全测试方法。这些后面会稍作详细说明。

嵌入式安全评价

最近引起关注的是嵌入式安全评估(Embedded Security Evaluations).比如针对ECU这样的车载系统,在开发初期就做大量的安全评审,从而改善安全漏洞,防止攻击者利用这些漏洞带来经济上的损失和安全性方面的破坏。基本的安全性评价包括理论和应用两类。


図2 「嵌入式安全评价」2个分类

理论安全分析(TheoreticalSecurity Analysis)在车辆整个开发周期内都能够并应该执行。原则上,理论分析在开发阶段中越早开始越好。实际安全安全性测试(Practical Security Testing)只有在系统实施(比如试验品)之后才可以执行。

理论安全分析的实例包括设计分析、威胁和风险分析。设计分析是基于车载系统的概述进行的概要分析。设计分析的最终目的是在系统开发周期的早期确定系统级的缺陷。例如,找到脆弱的加密算法,标准协议之间的脆弱处理等易受攻击的地方。

车载系统的详细描述文档存在的话,可以对威胁和风险进行深入的分析。在系统开发最开始就能够进行彻底的分析,确定出设想的潜在攻击。每种潜在攻击的时间、攻击者的专业知识、需要的设备、目标系统的侵入方法等都可以评价。

更进一步,各个攻击可能造成的潜在损失,可以基于经济损失,使用损失,安全损失做出评价。在考虑每种攻击的潜在攻击和破坏潜力基础上,每可以计算出种攻击的风险值。高风险值的安全漏洞,必须在任何情况下优先解决。

但是理论安全分析不能发现实施缺陷,找不到规范和实施之间的差异。为了降低实施上的风险,要采用安全软件开发流程。

4步实现安全性测试

当然,即使采用了最好的开发方法,实施的时候可能也会有漏洞。通过安全性测试使进行攻击测试可以发现这些漏洞。安全性测试越深入,越能发现未定义的功能或者与规范不一致的点。安全性测试可以发现目标系统实际使用中被攻击的难度有多大。

図3 实际安全性测试的分类

典型的安全性测试由4个步骤组成。第一步是通过功能安全测试,重点验证目标系统所有的安全相关功能的稳定且正常工作。这一步可以发现和安全漏洞关联的实施错误、规范不一致、未定义功能等。

第二步叫做漏洞扫描。针对目标系统,进行已知的常规漏洞检查。例如已知的安全漏洞,不正常设置等。

第三步是深入挖掘,重点找出未知的安全漏洞。这一步也叫作fuzzing,向目标系统发送异常或者与规范不一致的输入,并对系统进行监测。然后确认是否有异常。使用CAN的fuzzing,检车目标ECU的动作非常困难。因为多数情况下发送的CAN消息不要求ECU回复。可是,其使用监测功能,提出了改良CAN的fuzzing的方法。比如通过执行内存检查确认重要的值有没有被覆盖,设置一个新的断点确认执行了代码的哪个部分。

第四步是侵入目标系统的软件和硬件,重点对系统的整体进行测试。实验者模拟优秀的攻击者,测试全部已知的安全漏洞。试验者根据多年积累的经验,采用逆向工程、重要数据抽取、软硬件结合法等进行更加复杂的攻击。比如,利用硬件调试接口的漏洞读取内存的一部分信息,再结合软件攻击获取秘钥或其他重要数据等。

但是,必须注意,安全性测试,尤其是fuzzing侵入测试,想要穷尽所有可能的攻击是非常难的。在无法覆盖全的情况下,必须决定测试时间、资源和费用花在哪些测试范围。当然,很有可能这些测试还是漏掉了重大的系统缺陷。安全性测试不能取代理论安全分析,要实现完全的安全测试,应该通过理论安全分析来覆盖。

如之前所述,有必要在早期,改善整个软件开发流程,以使攻击范围最小化。而且还要在开发周期的每一个阶段添加网络安全。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
绝对值得收藏的干货 - 德国汽车企业电子电器系统正向开发流程解析(第四篇)
网络安全和自动驾驶汽车:它们如何连接?
安全服务产品包括哪些?渗透测试实战
渗透测试
渗透测试工程师的必备知识与技能
网络安全架构的设计和制定——如何提升IIoT的网络安全完整性?
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服