『IOT』车联网安全之CAN协议浅谈

admin 2022年2月18日19:47:15评论103 views字数 2193阅读7分18秒阅读模式

点击蓝字 关注我们



日期:2021-09-27

作者:李逢天

介绍:简单学习了一下车联网的 CAN 协议。


0x00 前言

汽车不再仅仅是机械设备。

如今的智能网联汽车包含了上百个不同的电子控制单元(ECU)。这些ECU控制着汽车操作的方方面面:从发动机、刹车和转向控制到汽车的娱乐系统。

ECU在一个被现代造车厂商广泛使用的CAN(Controller Area Network)总线协议的网络中相互连接。CAN总线协议是一个古老的协议,

它最早是由德国在1983年提出的,虽然在近几年中不断完善,但它仍然是一种极其简单的协议,不存在安全防护机制:即它是在假定所有ECU都是合法的、值得信赖的,并按照其规范运行的前提下设计的。

然而,在过去的几年里,研究人员发现许多ECU容易受到攻击。由于CAN总线本身是如此“天真”,令攻击者可以轻松的伪造CAN数据包并发送给ECU,被破坏的ECU往往可以造成重大损害。

若结合当前发展迅猛的网络安全领域的研究成果,创造一个新型的更加安全的协议,替换CAN总线可能是个好主意。

但是,由于厂商投入巨大,加之老旧汽车报废需要数十年的时间,因此替换方案可行性不大。在这种情况下,研究CAN协议,想方设法在CAN总线的限制下提高汽车的安全性是一个重要的目标。

本文接下来会介绍CAN数据包的字段组成。

0x01 CAN帧结构

『IOT』车联网安全之CAN协议浅谈

如上图所示,一个典型的CAN帧数据结构,在这里我们只重点关注CAN ID,DLC和Data字段

首先CAN ID可能是11位或29位长,尽管在图中只表明了11位,该ID用于区分不同类型的CAN数据帧。

具有给定ID特征的数据帧通常仅由一个ECU产生,接收者ECU使用该IDCAN总线上传输的所有CAN消息中选择相关的数据包。

ID也用于仲裁CAN消息,该字段的值越低表示优先级越高。

所有ECU都接收所有的CAN包,并且必须决定它是否为它们准备。这是在CAN ID的帮助下完成的。

CAN ID之后,DLC表明了后面紧接着的Data数据具有几个字节,DLC字段的大小为4位,表示组成数据字段的字节数。

由于data字段的最大长度是8字节,有效的DLC值仅在0到8之间,因此9到15的值是没有用的。

最后的Data段数据字段的最大大小为64位,用于表示CAN消息的实际有效负载。

一个通用数据帧通常在同一个数据域中包含几个不同的信号,而CAN标准给汽车制造商关于信号的结构、数量和含义的完全自由。因此,如果不能访问CAN消息的正式规范,它们的数据字段只能被解释为不透明的二进制对象。

如下面是一个ID为3B1的,Data长度为8的CAN数据包

IDH: 03,     IDL: B1,     Len: 08, Data: 80 00 00 00 00 00 00 00

0x02 Data段信号分类

接下来,我们将描述数据有效负载字段的结构,该字段由一个或多个信号组成。

例如,在同一个Data当中,某几位表示的车辆速度,某一位代表的是车门的开关状态,某几位代表的是校验码。

因此我们可以将Data中的信号,分为如下五种:

Sensors:汽车传感器的信号值。
Constants:不随时间变化的值。
Multi-Values:域中只有几个常量值的值。
Counters:在特定范围内表现为循环计数器的信号。这些信号可以作为额外的语法检查,或者用于在目标ECU上订购较长的信号数据。
Checkcodes:除了每个CAN帧尾部的CRC-15字段外,有效负载还可以包含额外的校验码,通常是有效负载中的最后一个信号。

0x03 CAN帧逆向分析算法

CAN数据包中最主要的便是区分Data中的各个位或者多个位组成的域所代表的含义。

然而,由于这个定义是原始设备制造商专有的,它并不公开,即使是同一品牌的不同车型之间也可能不同,因此必须手动对每一辆目标车型的CAN信息格式进行反向工程,这一过程既耗时又繁琐,而且无法规模化。

为了减轻这个困难,在当前的研究中,采用了各种算法,来对CAN帧中的Data进行逆向分析,从而猜测到其各个二进制位或者域所代表的含义。

下图是FBCA算法的伪代码,它把Data段分为了 Constant , Multi-Value , Sensor fields,并具有较高的准确率,具体文献可以查看文献《Field Classification, Modeling and Anomaly Detection in Unknown CAN Bus Networks》。

『IOT』车联网安全之CAN协议浅谈

0x04 总结

可以预见的是,“电动化、智能化、网联化、共享化”为核心的汽车“新四化“是未来智能网联汽车的趋势,但随着车内ECU数量的不断增加,车内更多的设备模块接入到网络中,汽车的安全风险也不断攀升。CAN总线作为目前汽车广泛使用的协议,由于无法短时间内更替且安全性极低,是车联网安全的一个重要研究方向。


免责声明:本文仅供安全研究与讨论之用,严禁用于非法用途,违者后果自负。

『IOT』车联网安全之CAN协议浅谈

宸极实验室隶属山东九州信泰信息科技股份有限公司,致力于网络安全对抗技术研究,是山东省发改委认定的“网络安全对抗关键技术山东省工程实验室”。团队成员专注于 Web 安全、移动安全、红蓝对抗等领域,善于利用黑客视角发现和解决网络安全问题。

团队自成立以来,圆满完成了多次国家级、省部级重要网络安全保障和攻防演习活动,并积极参加各类网络安全竞赛,屡获殊荣。

对信息安全感兴趣的小伙伴欢迎加入宸极实验室,关注公众号,回复『招聘』,获取联系方式。

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年2月18日19:47:15
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   『IOT』车联网安全之CAN协议浅谈https://cn-sec.com/archives/557907.html

发表评论

匿名网友 填写信息