3. 车载网络隔离技术基础
网络隔离,说白了就是“把不该碰面的设备隔开”。
我入行那会儿,很多车还是“一条CAN总线走天下”。车窗、刹车、娱乐系统全挂在一起。想想都后怕——一个娱乐系统的漏洞,就能直接发报文去踩刹车?这设计在今天绝对不合格。
隔离的核心原则就一句话:最小权限,按需互通。不该通信的节点,物理上就别连在一起。
3.1 隔离原则
做隔离设计,我习惯先问三个问题:
- 谁需要跟谁说话?——比如,ADAS摄像头只需要跟域控通信,不需要跟车窗电机聊天。
- 不隔离会怎样?——如果娱乐系统被攻破,能不能影响到制动系统?能,就必须隔离。
- 隔离后性能够吗?——加网关、加防火墙,延迟会增加。得算清楚。
隔离三原则:
- 原则一:关键安全功能(制动、转向、动力)必须独立成域。
- 原则二:非安全域(娱乐、T-Box)默认禁止访问安全域。
- 原则三:跨域通信必须经过授权网关,且报文内容可审计。
我曾经遇到一个项目,客户说“我们CAN总线都隔离了”。结果一查,诊断仪接口直接挂在动力CAN上。嗯,这等于把家门钥匙挂在门外。后来我们强制要求:诊断流量必须经过网关过滤,不能直连。
3.2 域隔离(Domain Isolation)
域隔离是目前最主流的做法。把整车按功能分成几个逻辑域,每个域内部通信自由,域之间必须走网关。
典型的域划分:
| 域名称 | 包含功能 | 安全等级 | 典型总线 |
|---|---|---|---|
| 动力域 | 发动机、变速箱、BMS | 最高 | CAN FD / FlexRay |
| 底盘域 | 制动、转向、ESP | 最高 | CAN FD / FlexRay |
| 车身域 | 门窗、灯光、座椅 | 中 | CAN / LIN |
| 信息娱乐域 | 中控屏、音响、导航 | 低 | 以太网 |
| ADAS域 | 摄像头、雷达、决策 | 高 | 以太网 / CAN FD |
| 远程通信域 | T-Box、V2X | 高(暴露面大) | 以太网 |
你想想看,如果娱乐域被攻破,攻击者最多能控制个音量。但如果娱乐域能直接发报文给制动域,那后果就严重了。域隔离就是防止这种“跳板攻击”。
我的经验:域隔离不是越细越好。域太多,网关压力大,延迟高。我一般建议5-7个域,兼顾安全与性能。
3.3 网关隔离
网关是域之间的“守门员”。它负责:
- 路由转发:只转发授权的报文。
- 协议转换:比如CAN转以太网。
- 防火墙:过滤非法报文。
- 入侵检测:监控异常流量。
网关隔离的典型架构:
网关隔离的关键在于访问控制列表(ACL)。我见过不少项目,ACL写得像天书,最后运维的人根本看不懂。我的建议是:ACL要按“源域→目标域→报文ID→动作”来组织,清晰明了。
避坑指南:我曾经遇到一个案例,网关ACL配置了“允许所有诊断报文通过”。结果测试时发现,攻击者通过诊断接口发送了“刷写制动ECU”的报文。后来我们改成“只允许特定诊断服务通过”,才堵住这个漏洞。
3.4 虚拟局域网(VLAN)隔离
VLAN是二层网络的隔离技术。在车载以太网里,VLAN用得越来越多。为什么?因为一根物理线缆上可以跑多个逻辑网络,互不干扰。
VLAN的核心机制:
- 802.1Q标签:在以太网帧头里加4字节的VLAN ID。
- VLAN ID范围:1-4094,每个ID代表一个逻辑子网。
- 交换机端口配置:Access口(只属于一个VLAN)或Trunk口(透传多个VLAN)。
车载VLAN的典型划分:
| VLAN ID | 用途 | 包含设备 | 优先级 |
|---|---|---|---|
| 10 | ADAS数据流 | 摄像头、雷达、域控 | 最高 |
| 20 | 动力/底盘控制 | ECU、网关 | 高 |
| 30 | 信息娱乐 | 中控屏、音响 | 低 |
| 40 | 远程通信 | T-Box、V2X模块 | 中 |
| 50 | 诊断/OTA | 诊断仪、OTA客户端 | 中 |
你想想看,如果没有VLAN,ADAS摄像头的高清视频流和娱乐系统的音频流混在一起,万一娱乐系统广播风暴,ADAS数据就丢了。VLAN隔离后,ADAS数据在VLAN 10里跑,娱乐数据在VLAN 30里跑,互不影响。
我的习惯:做VLAN规划时,我会把安全等级相同的设备放在同一个VLAN里。这样ACL配置简单,也方便后续扩展。比如,所有ADAS摄像头都放在VLAN 10,新增摄像头时不用改防火墙规则。
VLAN隔离的配置示例(交换机命令行):
! 创建VLAN
vlan 10
name ADAS
vlan 20
name Powertrain
vlan 30
name Infotainment
! 配置端口
interface GigabitEthernet0/1
switchport mode access
switchport access vlan 10
!
interface GigabitEthernet0/2
switchport mode trunk
switchport trunk allowed vlan 10,20,30
嗯,这里要注意:VLAN隔离只解决二层广播域的问题。如果攻击者能伪造VLAN标签(VLAN Hopping攻击),隔离就失效了。所以,我建议在交换机上启用“端口安全”和“VLAN ACL”,双重保险。
三种隔离技术对比:
| 隔离方式 | 隔离粒度 | 实现成本 | 适用场景 |
|---|---|---|---|
| 域隔离 | 功能域级别 | 中 | 整车架构设计 |
| 网关隔离 | 跨域通信 | 高(需专用硬件) | 安全关键域间通信 |
| VLAN隔离 | 二层网络 | 低(软件配置) | 车载以太网子网划分 |
最后说一句:隔离不是目的,安全才是。别为了隔离而隔离,搞得系统复杂到没人能维护。我见过一个项目,VLAN分了20多个,结果每次加个新设备都要改半天配置。后来我们合并成8个VLAN,安全没降级,运维效率翻倍。