ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

车载测试中 SID 27 服务的测试逻辑详解

车载测试中 SID 27 服务的测试逻辑详解

1. 引言

在车载网络测试中,SID(Service Identifier,服务标识符)是 UDS(Unified Diagnostic Services,统一诊断服务)协议的核心组成部分。SID 27 服务,即安全访问服务(SecurityAccess),是车载诊断中用于解锁受保护功能的关键服务。本文将详细解析 SID 27 服务的测试逻辑,帮助测试工程师系统化地设计和执行相关测试用例。

2. SID 27 服务概述

SID 27 服务用于实现 ECU(电子控制单元)的安全访问控制。其核心机制是通过请求-应答方式完成安全校验,只有通过校验的诊断仪才能执行受保护的服务,如写入数据、标定、刷写等操作。

该服务包含两个子功能:

  • 请求种子(Request Seed):诊断仪向 ECU 发送请求,ECU 返回一个随机种子(Seed)。
  • 发送密钥(Send Key):诊断仪根据种子和特定算法计算出密钥(Key),发送给 ECU 进行验证。

3. 测试逻辑总体流程

SID 27 服务的测试逻辑主要围绕以下核心流程展开:

  1. 建立诊断会话:测试前需确保 ECU 处于支持安全访问的诊断会话(如扩展会话)。
  2. 请求种子:发送 SID 27 子功能 01(请求种子),ECU 返回种子数据。
  3. 计算密钥:根据种子和 ECU 约定的安全算法计算密钥。
  4. 发送密钥:发送 SID 27 子功能 02(发送密钥),ECU 校验密钥。
  5. 校验结果:ECU 返回正响应(0x67)或负响应(0x7F)。

4. 关键测试点与用例设计

4.1 正常流程测试

验证在正确密钥下,ECU 能成功解锁并允许后续受保护操作。测试步骤包括:

  • 发送请求种子,获取有效种子。
  • 按算法计算正确密钥并发送。
  • 验证 ECU 返回正响应,且后续受保护服务可正常执行。

4.2 异常流程测试

验证错误密钥、超时、重复尝试等异常场景下 ECU 的行为是否符合规范。关键测试点包括:

  • 错误密钥:发送错误密钥,验证 ECU 返回负响应(如 0x7F 0x27 0x35)。
  • 种子请求超时:验证 ECU 在超时后是否清除种子状态。
  • 密钥发送超时:验证 ECU 在超时后是否要求重新请求种子。
  • 重复尝试限制:验证 ECU 在连续失败后是否进入延时锁定状态。

4.3 安全机制测试

验证 ECU 的安全防护机制,包括:

  • 会话切换:验证在非扩展会话下请求安全访问是否被拒绝。
  • 种子随机性:验证多次请求种子,种子值是否具有随机性。
  • 密钥有效期:验证密钥在有效期内可用,过期后需重新请求种子。

5. 测试用例示例

用例编号测试场景测试步骤预期结果
TC-01正常解锁请求种子,计算正确密钥并发送返回 0x67,解锁成功
TC-02错误密钥请求种子,发送错误密钥返回 0x7F 0x27 0x35
TC-03重复失败锁定连续发送错误密钥 3 次ECU 进入延时锁定,拒绝后续请求
TC-04非扩展会话在默认会话下请求种子返回 0x7F 0x27 0x7F(服务不支持)

6. 测试注意事项

在实际测试中,还需关注以下事项:

  • 安全算法保密:密钥计算算法通常由 OEM 保密,测试时需使用测试专用算法或向 OEM 申请。
  • 时序要求:部分 ECU 对种子请求和密钥发送之间的时间间隔有严格要求,测试需精确控制。
  • 状态管理:测试后需确保 ECU 状态复位,避免影响后续测试用例。
  • 日志记录:完整记录请求和响应报文,便于问题定位和分析。

7. 总结

SID 27 服务的测试逻辑核心在于验证安全访问的完整流程和异常处理机制。测试工程师应围绕正常流程、异常流程和安全机制三个维度设计用例,同时关注时序、状态管理和算法保密等细节,确保 ECU 的安全访问功能符合规范要求。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进