2. 车载网络基础
车载入侵检测的第一道门槛,不是算法,而是“看懂车里的网络”。一辆现代汽车内部往往同时运行五类以上总线:低速车身控制用 LIN,动力与底盘用 CAN/CAN FD,线控与安全关键系统用 FlexRay,摄像头、雷达、OTA 与诊断则走车载以太网。它们速率、拓扑、帧格式、仲裁机制各不相同,攻击面与检测点也完全不同。理解这些差异,才能判断“异常”到底发生在哪一层。
一、核心原理:五类总线的定位与通信特征
CAN 是广播式多主总线,采用非破坏性逐位仲裁,ID 越小优先级越高。标准帧 11 位 ID,扩展帧 29 位 ID,数据段最多 8 字节,速率通常 125 kbit/s~1 Mbit/s。它没有源地址,只有报文 ID,因此“谁发的”无法从帧本身直接确认,这正是 CAN 入侵检测的难点。
CAN FD 在兼容仲裁段的基础上,把数据段扩展到最多 64 字节,并允许数据段切换更高比特率(BRS 位)。仲裁段仍保持 500 kbit/s,数据段可到 2~8 Mbit/s。它缓解了带宽压力,但也让基于固定周期和固定长度的传统检测规则失效。
LIN 是单线、主从、低成本总线,速率最高 20 kbit/s,一主多从,主节点发送报头,从节点应答。它常用于车窗、雨刮、座椅、空调等非安全关键场景,攻击者一旦接入,可伪造从节点响应。
FlexRay 面向线控与高可靠场景,采用时间触发 TDMA 加灵活段,双通道冗余,速率 10 Mbit/s,周期精确到微秒级。它的通信高度确定性,任何偏离调度表的帧都值得怀疑。
车载以太网以 100BASE-T1/1000BASE-T1 单对双绞线为主,支持全双工、交换式拓扑,承载 SOME/IP、DoIP、TSN 等协议。它带宽高、可路由,但也引入了 IP 层、端口、协议栈等更丰富的攻击面。
二、拓扑结构:从总线到域控再到区域架构
传统车型以“总线+网关”为主:CAN 总线挂多个 ECU,网关负责跨网段路由。LIN 作为 CAN 的子总线,通过主节点接入。FlexRay 多用于底盘与动力域,双通道冗余。车载以太网则通过中央网关或域控制器连接,形成“骨干以太网+边缘 CAN/LIN”的混合拓扑。
新一代区域架构(Zonal)按物理位置划分区域控制器,每个区域控制器汇聚本区域的 CAN、LIN、以太网,再通过以太网骨干上联中央计算平台。这种结构让跨域攻击路径更清晰:攻击者从 LIN 从节点进入,经区域控制器路由到以太网,再横向移动到其他域。
三、方法流程:如何为检测建立网络基线
- 采集各总线正常工况报文,覆盖上电、怠速、行驶、充电、诊断等场景。
- 按报文 ID 统计周期、DLC、数据场字节分布、总线负载率。
- 建立白名单:合法 ID 集合、合法发送节点、合法 DLC 范围。
- 对以太网提取五元组、SOME/IP 服务 ID、方法 ID、订阅关系。
- 将基线固化为检测规则,并标注每条规则的误报风险等级。
# 以 candump 采集 CAN 报文并统计周期
candump can0 -l -T 10000
# 解析日志,统计各 ID 平均周期与 DLC
cat can0.log | awk '{print $2, $3}' | sort | uniq -c | sort -rn
# 以太网侧抓取 SOME/IP 服务发现
tcpdump -i eth0 -nn port 30490 -w someip_sd.pcap
四、案例与场景:一次跨总线攻击链
某测试台架中,攻击者通过 OBD 接口接入 CAN,先发送诊断请求获取网关信息,再利用网关路由规则向以太网侧发送伪造 SOME/IP 服务发现报文,诱导域控制器订阅恶意服务。检测系统在 CAN 侧发现异常高频诊断 ID,在以太网侧发现非白名单服务实例,最终关联两条告警确认攻击链。
五、常见误区与复盘
| 误区 | 问题 | 正确做法 |
|---|---|---|
| 只盯 CAN ID 白名单 | 合法 ID 被重放仍会漏报 | 叠加周期、频率、数据场熵检测 |
| 忽略 CAN FD 数据段变速 | 固定长度规则失效 | 按 BRS 位区分仲裁段与数据段 |
| 把 LIN 当安全总线 | 从节点可被伪造 | 校验和与主从时序双重校验 |
| 以太网只做 IP 过滤 | 无法识别 SOME/IP 层攻击 | 解析服务 ID、方法 ID、订阅关系 |
| 基线只采一种工况 | 误报率高 | 覆盖多场景并分场景建模 |