「车联网安全」OBD(汽车诊断插头)与CAN报文
字数 1571 2025-08-22 12:23:13
车联网安全:OBD与CAN报文详解
1. OBD概述
1.1 什么是OBD
OBD(On-Board Diagnostics)是汽车诊断接口系统,用于监测和报告车辆运行状况。主要分为两个版本:
- OBD-I:早期诊断系统(1980-1990年代),非标准化实现,各制造商方案不同
- OBD-II:1996年后成为标准,统一了诊断接口和故障码格式,兼容所有制造商
1.2 OBD-II接口特性
- 位置:通常位于驾驶室下部(仪表板附近或脚踏板下)
- 功能:
- 读取车辆实时数据
- 诊断发动机和车辆系统问题
- 检索故障码(DTC)
- 执行特定测试
2. OBD-II接口针脚定义
| 针脚 | 对应关系 |
|---|---|
| 1 | 开电门12V(关电门0V) |
| 4/5 | 长地线 |
| 6 | CAN高通讯线 |
| 7 | 诊断K线(与变速箱/电脑板通讯,约11V) |
| 14 | CAN低通讯线 |
| 15 | L线(连接汽车电脑板,约6V) |
| 16 | 30长电源(常电) |
| 3 | 舒适CAN高 |
| 11 | 舒适CAN低 |
3. OBD安全风险
- 物理访问风险:接口位置易接触,便于攻击者连接
- 身份校验缺失:多数OBD端口无认证机制
- 安全控制不足:
- 缺乏加密措施
- 无访问控制
- 无入侵检测系统
4. OBD诊断仪使用
4.1 基本使用步骤
- 定位OBD-II接口
- 插入诊断仪(确保完全插入)
- 启动车辆引擎(部分功能需要)
- 选择功能:
- 读取实时数据(转速、车速、温度等)
- 检索故障码
- 执行测试
- 安全断开连接
4.2 高级使用(访问ECU)
- 连接CAN工具(如CANoe)到OBD接口
- CANH→6针脚
- CANL→14针脚
- 发送"请求帧"
- 接收ECU"响应帧"
- 使用DBC文件解码报文
5. CAN总线技术详解
5.1 物理层特性
- 信号表示:
- CAN高:2.5V~3.5V
- CAN低:1.5V~2.5V
- 逻辑表示:
- CAN_diff=0(高2.5V/低2.5V)→逻辑1(隐性)
- 显性状态表示逻辑0
- 抗干扰:双绞线设计,差分信号抵消共模干扰
- 终端电阻:两端120Ω防止信号反射
5.2 报文结构
标准帧格式
- SOF(Start of Frame):帧开始标志
- 标识符(Identifier):消息ID和优先级
- TRT(Transmission Request):传输请求
- IDE(Identifier Extension):标识符扩展指示
- RO(Read-Only):只读标志
- DLC(Data Length Code):数据长度(0-8字节)
- 数据域(Data Field):实际数据
- CRC(Cyclic Redundancy Check):循环冗余校验
- CRC分隔符
- ACK Field:确认字段
- EOF(End of Frame):帧结束
扩展帧格式
- SOF:帧开始
- 基本标识符
- SRR(Substitute Remote Request)
- IDE:标识符扩展标志
- 扩展标识符
- RTR(Remote Transmission Request)
- R1/R0:保留位(必须为0)
- DLC:数据长度
- 数据域
- CRC
- CRC分隔符
- ACK Field
- EOF
5.3 关键技术机制
-
冲突仲裁:
- "线与"规则:显性位(0)覆盖隐性位(1)
- 低ID优先级高
-
位填充:
- 连续5个相同位后插入相反位
- 5个1→填充0,5个0→填充1
- 收发器自动处理填充/去除
-
报文类型:
- 数据帧:携带实际数据
- 远程帧:请求数据
- 错误帧:报告错误
- 超载帧:流量控制
6. 报文示例解析
报文名称: EMS_Control
报文ID: 100
发送周期: 10ms
报文长度: 8byte
信号定义:
- EMS_RPM:
* 起始位置: 0
* 起始位: 7
* 长度: 8bit
* 系数: 30
* 偏置: 0
* 范围: 0-7650
- EMS_FAIL_F:
* 起始位置: 1
* 起始位: 0
* 长度: 1bit
* Coding:
0b: normal
1b: abnormal