UDS 0x84服务详解(SecuredDataTransmission)
84位于应用程序与应用层之间,负责加密/解密、添加/校验安全参数。:仅支持物理寻址(单 ECU 通信),不支持功能寻址。:需预置对称密钥(如 AES-128)或非对称密钥对。:具体实现(如加密算法、安全参数格式)需根据车型的。:硬件加速加密/解密操作(避免影响实时性)。:防止第三方攻击(如窃听、篡改)。:安全参数(算法标识 + 计数器))的请求/响应数据加密后,通过。:安全子层与应用层的交互接口。
学习是个漫长且痛苦的过程,道路艰辛而曲折,希望我们都在时代的长河中做一颗闪闪发光的尘埃。只有持之以恒才能有所成就 ——Tom
目录
一、核心功能与原理
1. 设计目的
-
保护数据安全:防止第三方攻击(如窃听、篡改)。
-
支持加密传输:将原始诊断服务(如
0x22 ReadDataByIdentifier)的请求/响应数据加密后,通过0x84服务传输。 -
点对点通信:仅支持物理寻址(单 ECU 通信),不支持功能寻址。
2. 安全子层(Security Sublayer)
-
角色:位于应用程序与应用层之间,负责加密/解密、添加/校验安全参数。
-
关键操作:
方向 步骤 客户端→服务器 加密原始请求 → 封装为 0x84请求 → 通过应用层发送服务器→客户端 解密 0x84请求 → 执行原始服务 → 加密响应 → 封装为0x84响应 → 返回 -
服务原语:
-
SS_SecuredMode.req/ind/resp/conf:安全子层与应用层的交互接口。
-
3. 协议限制
-
禁止使用的服务(因无法保证实时性/安全性):
-
0x86ResponseOnEvent -
0x2AReadDataByPeriodIdentifier -
0x3ETesterPresent
-
-
强制要求:所有服务必须为 已确认模式(
suppressPosRspMsgIndicationBit = FALSE)。
二、通信流程
1. 客户端发起请求

2. 关键交互
-
0x84请求/响应 仅作为 加密数据的传输载体。 -
实际执行的诊断服务(如
0x22)被完全封装在0x84的负载中。
三、报文格式与示例
1. 0x84 请求报文结构
| 字段 | 长度 | 说明 | 示例值 |
|---|---|---|---|
| 服务 ID | 1 字节 | 0x84(固定) |
0x84 |
| 安全参数 | 2-4 字节 | 加密算法标识、计数器、随机数等 | 0x01 0xA3 |
| 加密数据 | N 字节 | 原始诊断服务(如 0x22)的加密后数据 |
0x5E 0x91... |
| 认证码(MAC) | 4-8 字节 | 消息完整性校验码 | 0xC8 0x2F 0x44 0x7D |
2. 0x84 响应报文结构
| 字段 | 长度 | 说明 | 示例值 |
|---|---|---|---|
| 响应 ID | 1 字节 | 0x84 + 0x40 = 0xC4(固定) |
0xC4 |
| 安全参数 | 2-4 字节 | 与请求匹配的上下文参数 | 0x01 0xA3 |
| 加密数据 | N 字节 | 原始服务响应(如 0x62)的加密后数据 |
0x3B 0x09... |
| 认证码(MAC) | 4-8 字节 | 响应完整性校验码 | 0x9A 0x1D 0x82 0xE5 |
3. 完整报文示例
场景:通过 0x84 服务执行加密的 0x22 ReadDataByIdentifier(读取 DID 0xF190)。
原始请求:22 F1 90
原始响应:62 F1 90 12 34(数据值 0x1234)
0x84 请求报文(假设 AES-128 加密):84 01 A3 5E 91 3A C8 2F 44 7D
-
01 A3:安全参数(算法标识 + 计数器) -
5E 91 3A:加密后的22 F1 90 -
C8 2F 44 7D:MAC 校验码
0x84 响应报文:C4 01 A3 3B 09 7F 9A 1D 82 E5
-
01 A3:匹配请求的安全参数 -
3B 09 7F:加密后的62 F1 90 12 34 -
9A 1D 82 E5:MAC 校验码
四、测试用例设计
1. 正向测试用例
| 用例 ID | 测试步骤 | 预期结果 |
|---|---|---|
| TC-01 | 发送有效 0x84 请求(含正确安全参数 + 加密的 0x22 服务) |
收到 0xC4 响应,解密后得到 0x62 响应数据 |
| TC-02 | 发送连续多个 0x84 请求(验证计数器同步) |
所有响应均解密成功,计数器连续递增 |
2. 反向测试用例
| 用例 ID | 测试步骤 | 预期结果 |
|---|---|---|
| TC-11 | 修改 0x84 请求中的 MAC 码 |
服务器返回否定响应(如 7F 84 31=密钥无效) |
| TC-12 | 使用过期的安全参数(如旧计数器值) | 服务器返回 7F 84 22=条件不满足 |
| TC-13 | 在 0x84 中封装禁止的服务(如 0x3E TesterPresent) |
服务器拒绝执行,返回 7F 84 12=不支持此服务 |
| TC-14 | 发送超长负载(测试分片机制) | 响应为 7F 84 13=报文长度错误 |
五、实现要求
-
密钥管理:需预置对称密钥(如 AES-128)或非对称密钥对。
-
安全参数:
-
计数器(Counter):防止重放攻击。
-
随机数(Nonce):确保每次加密结果唯一。
-
算法标识:指定加密算法(如
0x01=AES-128)。
-
-
错误处理:
-
定义专用错误码(如
0x31=密钥过期,0x24=MAC 校验失败)。
-
-
性能优化:硬件加速加密/解密操作(避免影响实时性)。
注意:具体实现(如加密算法、安全参数格式)需根据车型的 安全规范文档 自定义
更多推荐



所有评论(0)