车载网络基础:CAN总线协议详解、LIN总线协议、车载以太网、网络拓扑结构
各位同学,咱们今天聊聊车载网络的基础。说实话,我入行那会儿,车上能有个CAN总线就算高科技了。现在呢?一辆智能网联车上的电子控制单元(ECU)少说七八十个,网络协议也五花八门。但不管怎么变,CAN总线、LIN总线、车载以太网这老三样,你必须要吃透。为什么?因为攻击者往往就是从这些最基础的通信链路下手的。
1.1 CAN总线协议详解
CAN总线,全称Controller Area Network,是博世公司在80年代搞出来的。到现在还在用,说明它确实经典。我个人习惯把CAN总线比作一个“会议室”——所有节点都能发言,但谁先抢到话筒谁先说。
1.1.1 物理层与帧结构
CAN总线用两根差分线:CAN_H和CAN_L。平时电压都在2.5V左右,显性位时CAN_H拉到3.5V,CAN_L降到1.5V。这种设计抗干扰能力很强。我在项目里见过有人把CAN线跟电源线绑在一起走线,结果通信丢包率直接飙升——嗯,这是典型的布线坑。
CAN的帧结构,我建议你重点记住数据帧。它长这样:
SOF + 11位ID(或29位扩展ID) + RTR + IDE + r0 + DLC + 数据(0-8字节) + CRC + ACK + EOF
这里有个关键点:ID越小,优先级越高。为什么?因为总线仲裁时,显性位(0)会覆盖隐性位(1)。你想想看,如果攻击者伪造一个ID为0x000的报文,那它就能把其他所有节点都“怼”下去。这就是CAN总线最经典的攻击面之一。
1.1.2 仲裁机制与错误处理
CAN的仲裁机制很有意思。多个节点同时发送时,谁先发隐性位(1)但检测到总线是显性(0),谁就自动退出发送。说白了就是“谁狠谁上”。
错误处理方面,CAN有五种错误类型:位错误、填充错误、CRC错误、格式错误、应答错误。每个节点内部有个错误计数器。一旦错误太多,节点会进入“总线关闭”状态——这其实是个安全机制,但攻击者可以利用它来搞破坏。
1.2 LIN总线协议
LIN总线,说白了就是CAN的廉价替代方案。它只有一根线,速度也慢(最高20kbps),但胜在便宜。一般用在车窗、天窗、座椅调节这些对实时性要求不高的地方。
1.2.1 主从架构
LIN网络是典型的主从结构。一个主节点,多个从节点。所有通信都由主节点发起。主节点发一个“帧头”,从节点根据ID决定要不要回复“帧响应”。
这种架构有个致命弱点:从节点之间不能直接通信。如果攻击者控制了主节点,那整个LIN网络就任人宰割了。我记得有个项目,攻击者通过OBD接口入侵了网关,然后利用网关上的LIN主节点功能,直接把车窗控制模块给“调戏”了——一会儿开一会儿关。
1.2.2 帧格式与调度表
LIN的帧格式比CAN简单多了:
同步间隔 + 同步字节 + 标识符字节 + 数据(1-8字节) + 校验和
主节点会维护一个“调度表”,决定什么时候发哪个帧头。这个调度表是固定的。但攻击者可以篡改它,让某个从节点频繁响应,从而耗尽总线带宽。
🔑 关键点: LIN总线没有CAN那样的错误处理机制。一旦某个从节点“死掉”,主节点根本不知道。所以,对LIN总线的攻击往往更隐蔽。
1.3 车载以太网
车载以太网是近几年的新宠。为什么?因为摄像头、雷达、激光雷达这些传感器产生的数据量太大了,CAN总线那1Mbps的速度根本扛不住。车载以太网能跑到100Mbps甚至1Gbps,而且直接用TCP/IP协议栈。
1.3.1 物理层差异
车载以太网跟普通以太网不一样。它用的是单对非屏蔽双绞线,而且有专门的物理层标准(比如100BASE-T1)。为什么这么搞?为了减重、降成本。你想想看,一辆车里的线束加起来能有几十公斤,能省一点是一点。
但这也带来了新问题:信号更容易被干扰。我在测试中发现,当发动机启动时,车载以太网的误码率会明显上升。如果攻击者在此时注入恶意报文,更容易被当成正常噪声而忽略。
1.3.2 协议栈与安全挑战
车载以太网跑的是标准的TCP/IP协议栈。这意味着,你在互联网上见过的那些攻击——ARP欺骗、IP劫持、TCP SYN Flood——在车上都能用。而且,因为车载网络通常没有防火墙,攻击者一旦进入车内网,基本就是“裸奔”。
举个例子:某款高端车型的IVI(车载信息娱乐系统)通过以太网连接T-Box。攻击者先黑掉IVI(比如通过Wi-Fi漏洞),然后从IVI向T-Box发送伪造的远程控制指令。T-Box一看IP地址是合法的(IVI的IP),就乖乖执行了。这就是典型的横向移动攻击。
1.4 网络拓扑结构
最后聊聊网络拓扑。现在的车,网络结构越来越复杂。我见过最典型的几种拓扑:
| 拓扑类型 | 特点 | 安全风险 |
|---|---|---|
| 总线型 | 所有节点挂在一根总线上,简单便宜 | 单点故障,攻击者可以监听所有通信 |
| 星型 | 以网关为中心,各域独立 | 网关成为攻击焦点,一旦沦陷全车失控 |
| 混合型 | 域控制器+网关,兼顾性能与成本 | 域间通信需要严格访问控制 |
我个人比较推荐混合型拓扑。为什么?因为你可以把关键功能(比如动力、制动)放在一个独立的域里,通过网关做隔离。即使攻击者攻破了IVI域,也影响不到动力域。
但要注意:网关的防火墙规则必须足够细粒度。我见过一个案例,某车型的网关虽然做了域隔离,但允许所有诊断报文通过。结果攻击者从OBD接口发送了一个“刷写ECU”的诊断请求,网关直接放行——因为诊断报文在“允许列表”里。这就是典型的规则设计缺陷。
好了,这一章的内容就到这里。车载网络基础是后续所有攻击路径和防御策略的基石。你把这些协议和拓扑结构搞明白了,后面讲攻击手法时才能听得懂。下一章,咱们聊聊具体的攻击路径——从OBD接口到无线攻击,一步步拆解。