2、车载网络通信基础:CAN总线协议、CAN FD协议、LIN总线协议、车载以太网基础

各位同学,咱们今天聊聊车载网络通信的基础。说实话,我刚入行那会儿,面对车上密密麻麻的线束和协议栈,也是一头雾水。但搞安全,不懂通信协议就是纸上谈兵。你想想看,攻击者要入侵一辆车,总得知道数据是怎么传的吧?所以这块内容,是咱们整个课程的基石。

2.1 CAN总线协议:老当益壮的骨干网

CAN总线,全称是Controller Area Network。这东西在车上用了快四十年了,至今仍是动力域和底盘域的主力。为什么这么能打?因为它设计得确实巧妙。

核心特点:

  • 多主通信:任何节点都能主动发消息,不需要主机来调度。我记得有一次调试一个刹车系统,发现某个节点一直在抢总线,差点把优先级搞乱。
  • 差分信号:CAN_H和CAN_L两根线,抗干扰能力极强。我在EMC实验室见过,哪怕旁边有大功率电机在转,CAN信号依然稳如老狗。
  • 非破坏性仲裁:这是CAN的精髓。多个节点同时发消息时,ID小的优先。说白了,就是谁的数字小谁先走,不会丢数据。

数据帧结构(标准帧):

SOF | 11位ID | RTR | IDE | r0 | DLC(4位) | 数据段(0-8字节) | CRC(15位) | ACK | EOF

这里我特别想强调一下ID。很多人以为ID就是地址,其实不是。CAN的ID代表的是消息的优先级,而不是谁发的。比如发动机转速消息的ID是0x100,车窗消息是0x500,那转速消息永远优先。这在安全上有个隐患——如果攻击者伪造一个高优先级ID的消息,就能把总线占满,导致其他节点发不出数据。嗯,这就是典型的DoS攻击。

⚠️ 避坑指南: 我曾经在项目里见过,有人把CAN的ID设成了全0,结果这个节点一启动,整个网络都瘫痪了。记住,ID越小优先级越高,千万别乱设。

2.2 CAN FD协议:升级版的“快车道”

CAN FD,全称CAN with Flexible Data-Rate。说白了,就是CAN的增强版。为什么需要它?因为现在的车功能越来越多,OTA升级、自动驾驶,动不动就要传几百KB的数据,传统CAN那8字节数据段根本不够用。

CAN FD vs 传统CAN:

对比项 传统CAN CAN FD
数据段长度 最多8字节 最多64字节
传输速率 最高1Mbps 数据段最高8Mbps
帧格式 标准/扩展帧 兼容CAN,新增FDF标志位
CRC校验 15位 17位或21位(更安全)

我个人习惯在涉及安全关键数据时,优先用CAN FD。为什么?因为它的CRC更强。传统CAN的15位CRC,说实话,在恶劣电磁环境下偶尔会有漏检。CAN FD的21位CRC,概率就低得多。

实际应用场景:

  • OTA升级:用CAN FD传固件包,速度快了好几倍。我做过一个项目,用传统CAN传一个2MB的固件要半小时,换成CAN FD后,十分钟搞定。
  • 高精度传感器数据:比如激光雷达的点云数据,用CAN FD一次能传64字节,省去了拆包组包的麻烦。
💡 小技巧: 如果你的项目同时存在CAN和CAN FD节点,记得在总线配置时把速率分开。仲裁段用500kbps,数据段用2Mbps以上。我曾经因为没注意这个,导致CAN FD节点和传统CAN节点通信时频繁报错。

2.3 LIN总线协议:低成本的小弟

LIN总线,全称Local Interconnect Network。说白了,就是CAN的廉价替代方案。车上那些对实时性要求不高的设备,比如车窗、座椅、车灯,用LIN就够了。一根线,一个主节点,多个从节点,成本低到令人发指。

LIN的特点:

  • 单主多从:只有一个主节点负责调度,从节点只能被动响应。这跟CAN的多主模式完全不同。
  • 速率低:最高20kbps。你想想看,传个车窗位置信号,20kbps绰绰有余。
  • 基于UART:硬件实现简单,很多MCU自带的UART就能跑LIN协议。

帧结构:

同步间隔段 | 同步段(0x55) | 标识符段(6位ID+2位奇偶校验) | 数据段(1-8字节) | 校验和段

这里有个安全点要注意。LIN的标识符只有6位,最多64个ID。而且它没有像CAN那样的仲裁机制,完全靠主节点调度。如果攻击者伪装成主节点,就能控制所有从节点。我在一个项目中就遇到过,有人通过OBD接口注入了假的LIN主节点消息,把车窗给锁死了。

⚠️ 安全提醒: LIN总线几乎没有安全机制。如果你在LIN总线上传输安全关键数据(比如门锁状态),一定要在应用层做加密和认证。别指望LIN协议本身能保护你。

2.4 车载以太网:未来的主干网

车载以太网,说白了就是把咱们办公室用的以太网搬到车上。但别以为直接拿个RJ45插头就能用。车上的环境太恶劣了,温度、振动、电磁干扰,普通以太网根本扛不住。

车载以太网的关键技术:

  • BroadR-Reach技术:一对双绞线就能实现100Mbps,而且传输距离可达15米。我最早接触这个技术时,觉得不可思议——一根线能跑这么快?后来实测发现,确实稳。
  • AVB/TSN协议:音视频桥接和时间敏感网络。说白了,就是保证数据按时到达。自动驾驶里,摄像头数据必须实时传输,晚一毫秒都可能出事故。
  • SOME/IP协议:面向服务的中间件。传统CAN是信号导向的,每个信号对应一个ID。以太网是服务导向的,一个服务可以包含多个方法、事件和属性。

典型应用场景:

应用 带宽需求 实时性要求 推荐协议
摄像头数据 100Mbps-1Gbps 高(<10ms) TSN + SOME/IP
诊断/OTA 10-100Mbps DoIP
娱乐系统 100Mbps-1Gbps AVB

我个人觉得,车载以太网是未来五到十年的主流。为什么?因为自动驾驶和车联网对带宽的需求是爆炸式的。一个激光雷达每秒就能产生几十MB的数据,CAN和CAN FD根本扛不住。但以太网也有它的麻烦——攻击面太大了。传统CAN是封闭网络,攻击者要物理接入才能搞破坏。以太网一上,远程攻击就成了可能。

💡 学习建议: 如果你刚开始接触车载以太网,我建议先从SOME/IP入手。它是应用层协议,跟咱们做安全的关系最密切。理解服务发现、远程过程调用这些概念,后面讲SecOC和IPSec时你会轻松很多。

小结

好了,咱们把四种协议过了一遍。CAN是老兵,可靠但慢;CAN FD是升级版,快且安全;LIN是廉价方案,适合非关键设备;以太网是未来,但安全挑战也最大。你想想看,搞车载网络安全,不懂这些协议怎么行?下一章咱们就深入聊聊,这些协议里到底有哪些安全漏洞,以及怎么防。