3. ADAS通信架构:车载网络拓扑、V2X模型与攻击面分析
好,咱们进入第三章。这一章我打算聊聊ADAS系统的通信架构。说实话,这是整个安全方案的地基。你加密算法选得再好,身份认证做得再严,如果连通信拓扑都没搞清楚,那安全方案就是空中楼阁。
我在做第一个量产ADAS项目时,就吃过这个亏。当时只顾着给CAN报文加MAC,结果忽略了以太网链路上的攻击面。嗯,后来补漏洞补得我头大。所以今天咱们把通信架构彻底捋一遍。
3.1 车载网络拓扑:CAN与以太网
现在的ADAS系统,说白了就是两个网络在打架:老牌的CAN总线和新贵的车载以太网。它们各有各的脾气,也各有各的漏洞。
3.1.1 CAN总线:老当益壮,但先天不足
CAN总线在车上跑了三十多年了。我最早接触CAN是在2008年,那时候觉得这东西真稳定。但现在回头看,它的安全设计几乎为零。
CAN总线的特点,我总结为三点:
- 广播式通信:所有节点都能听到所有报文。没有源地址,没有目的地址。
- 优先级仲裁:ID越小优先级越高。攻击者可以伪造高优先级报文抢占总线。
- 无认证机制:任何节点都可以发送任何ID的报文。说白了,谁都能说话,没人验证你是谁。
典型CAN报文结构(标准帧):
SOF | 11位ID | RTR | IDE | r0 | 4位DLC | 0-8字节数据 | 15位CRC | ACK | EOF
看到了吗?整个帧里没有源地址字段。你收到一个报文,只能知道它的ID,但不知道是谁发的。这就是问题的根源。
我在一个项目中遇到过,攻击者利用CAN总线的广播特性,伪造了一个刹车系统的报文。因为CAN本身不验证发送者身份,ECU照单全收。那次之后,我就在所有CAN节点上强制加了报文认证。
我的经验:CAN总线做安全,核心就两件事——报文认证和速率限制。认证防止伪造,速率限制防止DOS。别想得太复杂。
3.1.2 车载以太网:高速但复杂
以太网进车是必然趋势。100BASE-T1、1000BASE-T1,带宽比CAN高两个数量级。但代价是什么?攻击面也大了两个数量级。
车载以太网和普通以太网在协议栈上基本一致,只是物理层做了适配。这意味着什么?意味着TCP/IP协议栈的所有漏洞,在车上都能复现。
我参与过一个项目,用的是SOME/IP协议做服务发现。结果发现,攻击者可以伪造SOME/IP的Service Offer报文,让ECU连接到恶意服务上。你想想看,这有多危险。
| 特性 | CAN总线 | 车载以太网 |
|---|---|---|
| 带宽 | 最高1Mbps | 100Mbps-1Gbps |
| 通信方式 | 广播 | 点对点/组播 |
| 地址机制 | 无源地址 | MAC/IP地址 |
| 安全风险 | 伪造、重放 | IP欺骗、中间人、DOS |
| 加密难度 | 低(带宽限制) | 高(协议复杂) |
3.2 V2X通信模型:车与万物的对话
V2X,说白了就是车跟周围所有东西说话。V2V(车对车)、V2I(车对基础设施)、V2P(车对行人)。这个模型里,通信距离从几米到几百米不等,延迟要求极高。
V2X目前主流用的是DSRC(专用短程通信)和C-V2X(蜂窝V2X)。我个人更看好C-V2X,因为它基于LTE/5G,覆盖和带宽都有优势。
V2X的通信模型,我习惯把它分成三层:
- 应用层:BSM(基本安全消息)、CAM(协作感知消息)等。这些消息里包含位置、速度、方向等敏感信息。
- 网络层:通常是IPv6或GeoNetworking。负责路由和转发。
- 接入层:DSRC用802.11p,C-V2X用PC5接口。
注意:V2X最头疼的问题是证书管理。一个V2X设备可能需要跟成百上千个未知设备通信。怎么快速验证对方的身份?怎么撤销恶意设备的证书?这比车载网络复杂得多。
我记得在测试V2X安全方案时,发现一个致命问题:BSM消息的签名验证太慢。车辆以10Hz的频率发送BSM,如果每个消息都要做ECDSA签名验证,CPU根本扛不住。后来我们用了批验证技术,才把延迟降下来。
3.3 典型攻击面分析
好了,前面铺垫了这么多,现在咱们来点干货。攻击面分析,说白了就是找漏洞。我把它分成三个维度:
3.3.1 车内网络攻击面
- OBD-II接口:这是最经典的入口。插上设备就能访问CAN总线。我曾经见过一个案例,攻击者通过OBD接口注入恶意报文,直接控制了转向系统。
- 无线接口:蓝牙、Wi-Fi、NFC。这些接口通常跑在MCU上,安全防护较弱。我记得有个项目,蓝牙协议栈有个缓冲区溢出漏洞,攻击者可以通过配对过程远程执行代码。
- 传感器欺骗:摄像头、雷达、激光雷达。这些传感器本身不加密,攻击者可以发射干扰信号。比如用激光照射摄像头,让它"看到"不存在的障碍物。
3.3.2 V2X攻击面
- 消息伪造:攻击者发送虚假的BSM消息,比如伪造一个不存在的车辆位置。这在高速公路上可能导致连环追尾。
- 重放攻击:录制合法的V2X消息,稍后重放。比如录制一个"前方事故"的警告,在另一个地点重放,制造混乱。
- Sybil攻击:一个攻击者伪装成多个车辆。这在基于信任的V2X系统中特别危险,可以操纵集体决策。
我曾经踩过的坑:在V2X项目中,我们最初只考虑了消息加密,没考虑隐私保护。结果发现,通过分析BSM消息中的车辆ID,可以追踪一辆车的行驶轨迹。后来不得不加上假名机制,定期更换ID。
3.3.3 云端与后端攻击面
现在的ADAS系统,很多功能依赖云端。比如高精地图更新、远程诊断、OTA升级。这些链路同样有风险。
- OTA升级劫持:攻击者拦截固件包,植入恶意代码。我见过一个案例,攻击者通过伪造OTA服务器,给一批车刷了带后门的固件。
- API滥用:云端API如果没有做好认证,攻击者可以调用接口获取车辆数据。比如查询车辆位置、解锁车门等。
- 数据泄露:车辆上传的传感器数据、驾驶行为数据,如果存储不当,可能被窃取。
3.4 小结与思考
这一章我们聊了ADAS的通信架构。你可能会觉得,这么多攻击面,怎么防得住?其实不用慌。安全不是要堵住所有漏洞,而是把攻击成本提高到攻击者无法承受的程度。
我个人习惯的做法是:先画通信拓扑图,标出所有数据流。然后对每个数据流做威胁建模。最后根据威胁等级,决定哪些地方需要加密,哪些地方需要认证。
下一章,我们会深入具体的加密算法和认证协议。到时候我会拿实际代码说话。
课后思考:如果你现在要设计一个ADAS系统的安全方案,你会优先保护哪个通信链路?为什么?