点击蓝字 关注我们
日期: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帧结构

如上图所示,一个典型的CAN
帧数据结构,在这里我们只重点关注CAN ID,DLC和Data字段
。
首先CAN ID
可能是11
位或29
位长,尽管在图中只表明了11
位,该ID
用于区分不同类型的CAN
数据帧。
具有给定ID
特征的数据帧通常仅由一个ECU
产生,接收者ECU
使用该ID
在CAN
总线上传输的所有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》。

0x04 总结
可以预见的是,“电动化、智能化、网联化、共享化”为核心的汽车“新四化“是未来智能网联汽车的趋势,但随着车内ECU
数量的不断增加,车内更多的设备模块接入到网络中,汽车的安全风险也不断攀升。CAN
总线作为目前汽车广泛使用的协议,由于无法短时间内更替且安全性极低,是车联网安全的一个重要研究方向。
免责声明:本文仅供安全研究与讨论之用,严禁用于非法用途,违者后果自负。

宸极实验室隶属山东九州信泰信息科技股份有限公司,致力于网络安全对抗技术研究,是山东省发改委认定的“网络安全对抗关键技术山东省工程实验室”。团队成员专注于 Web 安全、移动安全、红蓝对抗等领域,善于利用黑客视角发现和解决网络安全问题。
团队自成立以来,圆满完成了多次国家级、省部级重要网络安全保障和攻防演习活动,并积极参加各类网络安全竞赛,屡获殊荣。
对信息安全感兴趣的小伙伴欢迎加入宸极实验室,关注公众号,回复『招聘』,获取联系方式。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论