27服务-SecurityAccess
Posted 诊断协议那些事儿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了27服务-SecurityAccess相关的知识,希望对你有一定的参考价值。
诊断协议那些事儿
诊断协议那些事儿专栏系列文章,本文介绍诊断和通讯管理功能单元下的27服务SecurityAccess,充当诊断安全卫士。
文章目录
一、27服务-SecurityAccess
27服务提供了一套因安全、排放等被限制访问的数据或诊断服务解锁的机制,安全访问过程的本质是种子与密钥的关系:
①客户端请求“种子”
②服务器发送“种子”
③客户端发送“密钥”(适用于已接收到种子)
④服务器确认“密钥”有效,做出响应,并自行解锁。
二、请求格式
requestSeed
ISO14229的0x27服务比ISO14230的服务,请求种子中多了安全访问数据记录,比如说诊断仪的ID信息【是用户可选的】
※安全级别编号具有任意性,并不表明级别之间存在任何关系!
请求种子requestSeed子功能参数值应始终为奇数,且同一安全级别的相应发送密钥SendKey子功能参数值应等于“请求种子requestSeed”子功能参数值+1.
任何时间都仅可有一个安全级别处于活跃状态。eg:如果与requestSeed:0x03相关的安全级别处于活跃状态,此时诊断仪请求成功地解锁了与requestSeed:0x01相关的安全级别,则当前仅应解锁与requestSeed:0x01相关的安全级别所支持的受保护功能。此时与requestSeed:0x03相关的安全级别解锁的任何受保护功能应不在处于活跃状态。
SendKey
securityAccessType
请求消息子功能参数的定义,安全访问类型定义了请求种子和发送密钥的值(注:未显示SPRMIB)
三、肯定响应格式
四、否定响应格式
1.支持的否定响应码
NRC | 描述 | 助记符 |
---|---|---|
0x12 | 不支持请求服务的子功能 | SFNS |
0x13 | 请求报文的数据长度(或者格式)不符合标准 | IMLOIF |
0x22 | 条件不满足 | CNC |
0x24 | 请求序列错误(未先接收请求种子,就接收了发送密钥) | RSE |
0x31 | 请求超过范围(如果用户可选的安全访问数据记录包含无效数据) | ROOR |
0x35 | 无效密钥 | IK |
0x36 | 超过尝试次数(超过允许的错误访问尝试的最大次数而导致延时计时器处于活跃状态) | ENOA |
0x37 | 要求的延时未到时间 | RTDNE |
需注意NRC35、36、37响应有一定的顺序!
一般情况下,在NRC 35发出时,需要将安全访问错误计数器+1并存储
五、消息流示例
客户端请求“种子”的子功能:0x01
客户端发送“密钥”的子功能:0x02
服务器的种子(2个字节):0x3657
服务器的密钥(2个字节):0xC9A9
SPRMIB设置未FALSE(“0”)
服务器处于“锁定”状态
第一步请求种子
请求种子肯定响应消息
第二步发送密钥
发送密钥肯定响应消息
服务器处于“解锁”状态
请求种子
请求种子肯定响应消息
总结
以上就是今天要讲的内容,欢迎各位评论,提出宝贵意见,小编也会持续更新,以提供更好的作品。
以上是关于27服务-SecurityAccess的主要内容,如果未能解决你的问题,请参考以下文章
详解UDS CAN诊断:SecurityAccess Service(SID:0X27)