汽车诊断服务(UDS——0x27服务解析)

目录

1、服务概述

2、工作原理

3、常用的应用场景

4、子功能

5、请求与响应格式

5、1服务请求

5、2服务肯定响应

5、3服务否定响应

6、延时机制

1、服务概述

  • 该服务对零部件中部分加密的服务进行解密工作
  • 安全访问的概念使用“种子”和“密钥”来实现
参数描述
种子4字节数据,由ECU发送给诊断测试工具,又是钥匙计算的基础。
钥匙钥匙参数是诊断测试工具对种子参数按照特定的算法计算出的结果,长度也为4字节,由诊断测试工具发送给ECU。钥匙接收后,ECU将接收到的钥匙与内部计算的钥匙相比较,相同则解密成功。

2、工作原理

本服务的典型使用示例如下:

  1. 客户端请求“种子”
  2. 服务器发送“种子”
  3. 客户端发送“密钥”
  4. 服务器作出响应,确认“密钥”有效,并自行解锁。

3、常用的应用场景

  • 操作控制类:包括输入输出控制、例程管理服务等功能。

  • 数据写入类:例如程序刷写;生产线上关键数据(如版本号或标定信息)的写入,需通过27级安全认证后方可执行。

  • 数据读取类:在访问重要数据时,同样需要通过安全认证流程。

4、子功能

  • 子功能参数为固定1字节
  • Bit7为抑制肯定响应消息指示位(0:需要肯定响应;1:禁止肯定响应)
  • Bit6——Bit0为子功能参数值
  • 不同安全级别的请求种子和发送密钥存在固定关系,相邻的一对奇偶数对应一种安全级别,数字大小并不代表其等级的高低。其中奇数代表请求种子,偶数代表发送密钥(例:0x01 和 0x02 分别代表一个安全级别的请求种子和发送密钥)
  • 任何时间都仅有一个安全等级是解锁的状态
  • 默认会话下不支持27服务
  • 从一个安全等级接收到另外一个等级的请求并且解锁成功后,之前的安全等级将被重新锁定,而由于切换安全等级致使先前解锁的状态被锁定后,其依赖于被锁定的等级的服务和功能也一并被关闭。
  • 如果被请求的安全等级当前是已经解锁的状态,那么在响应种子时,在放种子的位置都放上0,表示已经解锁了,你不要再请求了。并且实际上种子应该是一个随机数,一般全0和全F都不允许作为普通种子放到响应里

5、请求与响应格式

5、1服务请求
  • 请求种子服务数据格式:27 + [sub-function] 

注意:

请求种子子服务必须为奇数

securityAccessDataRecord为Client发送给到Server的标识信息,可选,一般不用

  • 发送密钥服务数据格式:27 + [sub-function] + [security-Key]

注意:

发送Key子服务必须为偶数

securityKey为Client向Server发送的具体Key值

从表40与表41的解释说明对比可看出两者sub-funtion必须存在一个确定的定量关系:即sub-funtion(Request Seed) + 1 = sub-function(Send Key)。
 

5、2服务肯定响应
  • 请求种子服务正响应数据格式:67 + [sub-function] 

注意:27诊断服务的正响应由以下三个部分组成,如下

参数描述
响应SID该参数固定为SID+0x40 = 0x67
sub-function该参数为request seed(如01)或者Send Key(02)的取值
securitySeed该参数仅针对subfunction为Request Seed时才会回复该参数,其他情况下,Server仅会回复前两个字节(响应 SID + sub-function),其取值范围只能为0x00-0x7F

5、3服务否定响应
  • 请求种子服务正响应数据格式:7F + 27 + [NRC]

    注意:如果解锁失败,则可通过收到的NRC判断失败的原因,27服务常用的NRC如下:

6、延时机制

  • 车辆制造商应选择是否支持延时计时器
  • 达到车辆制造商规定的错误访问尝试次数后,应激活延时计时器。
  • 在连续X次请求安全访问失败后,需等待Ys之后才能接受下一次的安全访问请求RequestSeed。(注:X和Y由车辆制造商自行定义)
  • 当测试工具发送一个无效的秘钥, ECU将返回 NRC 0x35 InvalidKey 。 此时,全访问错误计数器加1(注:该计数器需要存储并且初始值为0)。
  • 当安全访问错误计数器达到X(即收到X次 InvalidKey ), ECU将返回NRC 0x36且需要等待Y s才能接受下一次的安全访问请求 Request Seed。 期间任何安全访问请求 Request Seed 都会被ECU反馈NRC 0x37
  • Ys等待时间结束后,安全访问错误计数器将减1(只减1次),并允许尝试安全访问请求 RequestSeed,如果此次请求失败(由于发送了一个无效的秘钥),安全访问错误计数器将加1,并再次开启Ys等待时间。
  • 任何一次ECU被成功解锁(密钥有效),失败计数器都将被重置为零。
  • ECU上电/复位后默认处于闭锁状态,需要检测安全访问错误计数器,若计数器为X,则需要启动Ys的安全访问延时时间。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值