学习是个漫长且痛苦的过程,道路艰辛而曲折,希望我们都在时代的长河中做一颗闪闪发光的尘埃。只有持之以恒才能有所成就    ——Tom

目录

一、核心功能与原理

1. 设计目的

2. 安全子层(Security Sublayer)

3. 协议限制

二、通信流程

1. 客户端发起请求

2. 关键交互

三、报文格式与示例

1. 0x84 请求报文结构

2. 0x84 响应报文结构

3. 完整报文示例

四、测试用例设计

1. 正向测试用例

2. 反向测试用例

五、实现要求



一、核心功能与原理

1. 设计目的
  • 保护数据安全:防止第三方攻击(如窃听、篡改)。

  • 支持加密传输:将原始诊断服务(如 0x22 ReadDataByIdentifier)的请求/响应数据加密后,通过 0x84 服务传输。

  • 点对点通信:仅支持物理寻址(单 ECU 通信),不支持功能寻址。

2. 安全子层(Security Sublayer)
  • 角色:位于应用程序与应用层之间,负责加密/解密、添加/校验安全参数。

  • 关键操作

    方向 步骤
    客户端→服务器 加密原始请求 → 封装为 0x84 请求 → 通过应用层发送
    服务器→客户端 解密 0x84 请求 → 执行原始服务 → 加密响应 → 封装为 0x84 响应 → 返回
  • 服务原语

    • SS_SecuredMode.req/ind/resp/conf:安全子层与应用层的交互接口。

3. 协议限制
  • 禁止使用的服务(因无法保证实时性/安全性):

    • 0x86 ResponseOnEvent

    • 0x2A ReadDataByPeriodIdentifier

    • 0x3E TesterPresent

  • 强制要求:所有服务必须为 已确认模式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=报文长度错误

五、实现要求

  1. 密钥管理:需预置对称密钥(如 AES-128)或非对称密钥对。

  2. 安全参数

    • 计数器(Counter):防止重放攻击。

    • 随机数(Nonce):确保每次加密结果唯一。

    • 算法标识:指定加密算法(如 0x01=AES-128)。

  3. 错误处理

    • 定义专用错误码(如 0x31=密钥过期,0x24=MAC 校验失败)。

  4. 性能优化:硬件加速加密/解密操作(避免影响实时性)。

注意:具体实现(如加密算法、安全参数格式)需根据车型的 安全规范文档 自定义

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐