【车载开发系列】UDS诊断---安全访问服务($0x27)

【车载开发系列】UDS诊断—安全访问服务($0x27)

一.概念定义

该服务提供了一种保护机制,该机制用来保护访问限制的诊断服务。
加密策略采用种子和密钥相关联的方法。采用随机产生的种子,通过安全算法得到唯一的秘钥。
若秘钥匹配正确则可以调用受到保护的诊断服务。这个服务解锁的是处在某个安全等级下的服务。

二.安全控制过程

  1. 诊断工具请求种子;
  2. ECU发送种子,并根据安全算法计算密钥;
  3. 诊断工具根据接收到的种子也进行密钥计算,并进行发送;
  4. ECU接收到密钥,与自身计算的密钥进行比较;
  5. ECU根据比较结果决定自身是否解锁,并返回响应(肯定/否定响应)信息
    在这里插入图片描述

三.报文格式

1)请求种子

以请求进入01安全等级为例(请求Seed的"Sub-function"不一定要是01,也可以是03、05,或者07-7D之间的任意奇数值,代表不同的安全等级),则此时请求种子的格式如下:
在这里插入图片描述
ECU收到请求后,应当生成随机的种子,并通过响应报文返回种子。响应报文格式如下:
其中种子及密钥均为 4 字节(32 位)的数值
在这里插入图片描述在这里插入图片描述

2)发送密钥

以请求进入01安全等级为例,在接收到前面一小节生成的种子后,诊断工具将根据车产定义的安全算法进行密钥的计算。并进行密钥的发送。此时密钥的发送格式如下:
(发送密钥时的第二个字节值不一定就是02(01+1),可以是04、06,或者08-7E间的任意偶数值,不过注意要是之前请求Seed的"Sub-function"+1,即像01对应02,03对应04,07对应08这样对应起来。)
在这里插入图片描述
ECU收到SendKey之后,肯定响应报文格式如下:
在这里插入图片描述

3)否定响应

请求Seed和SendKey他们两个在失败的时候,都返回以下格式的否定响应。在这里插入图片描述

四.否定响应码列表

如果诊断工具发送一个无效的密钥,ECU拒绝请求并发送否定响应码 35h“密钥无效(InvalidKey),安全访问失败计数加 1。该计数器的初始值为零。
当失败计数器数值达到一定回数时,ECU 需要等待10 秒方可接受下次“请求种子”(Request Seed)报文并返回 36h(请求次数超出限制)否定响应。
在这 10s 内,任何“SecurityAccess- RequestSeed”都将不被处理,且 ECU 返回 37h(延时时间未到)否定响应。
对于35/36/37这三个错误码,需要比较关注一下。这三个错误往往是成对出现的。

Hex(bit6~0)Description描述说明
0x12subFunctionNotSupported功能不支持如果子功能参数不支持,发送此否定响应码
0x13incorrectMessageLengthOrInvalidFormat报文长度错误如果报文长度错误,发送此否定响应码
0x24requestSequenceError请求序列错误在接收到“sendKey”子功能前没有先接收到“requestSeed”请求报文
0x35invalidKey密钥无效接收到预期的“sendKey”子功能但是密钥值与 ECU 内部存储或计算的密钥不相等
0x36exceededNumberOfAttempts超出密钥访问次数限制延迟定时器因为超过最大允许失败尝试的次数激活
0x37requiredTimeDelayNotExpired超时周期未到,延时时间未到在 ECU 要求的超时周期未到之前,发送了尝试获取安全访问权限的请求报文

五.参数定义

子功能关联的安全等级由整车厂定义。在这里我们只要知道0x01和0x02输入一个安全级,而0x09和0x0A输入一个安全级别,必须成对的使用。

HexDescription描述
0x01requestSeed to reach security level: Unlocked (Level 1)请求种子以进入安全级别:解锁(级别 1)
0x02sendKey to reach security level: Unlocked (Level 1)发送密钥以进入安全级别:解锁(级别 1)
0x09RequestSeed to reach security level: Unlocked (Flash,Level2)请求种子以进入安全级别:解锁(级别 2)
0x0AsendKey to reach security level: Unlocked (Flash,level2发送密钥以进入安全级别:解锁(级别 2)

在某一时间只有一个安全级别可以被激活。例如,如果与请求种子 09h 相关联的安全级别已激活,而诊断工具成功请求解锁与请求种子 01h相关联的安全级别,此时只有与请求种子01h相关联的安全级别支持的受限功能被解锁。

六.注意事项

  1. ECU上电或者Reset复位操作之后, ECU处在locked状态;
  2. 同一时刻只有1个安全等级是 active ,与这个安全等级相关的功能和诊断服务可以使用,其它安全等级相关功能和诊断服务是not active 。
  3. 1个ECU内部可以有多个安全等级,安全等级之间是否关联取决于诊断规范的定义,如果没有关联,就是例如解锁安全等级2时,无需先解锁安全等级1.
  4. 如果当收到RequestSeed时,ECU已经处在unlocked状态,应给出positive response, 其中seedValue 0x00
  5. 具体的安全加密算法由车厂自行决定的。
  6. SecurityAccess服务定义了三种状态(两个不同级别):锁
    定、解锁(级别 1)、解锁(级别 2)
  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

进击的横打

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值