27服务-安全访问状态转换
Posted 诊断协议那些事儿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了27服务-安全访问状态转换相关的知识,希望对你有一定的参考价值。
诊断协议那些事儿
诊断协议那些事儿专栏系列文章,本文将介绍安全访问状态图——作为UDS27服务的规范性附件。
可参考前两篇文章:
27服务-SecurityAccess
UDS - 深论Security Access Service
27服务的初衷就是防止无权限人员进行非法数据操作,用来确保车辆ECU的安全,如果任何持有诊断设备的人都可以通过诊断指令对车辆ECU进行操作,将存在较大的安全隐患。为了验证产线、售后的操作人员是否有权限操作,在对车辆ECU进行诊断检查时,需要验证其提供的密钥是否有效,而产生有效密钥的前提需要ECU反馈给诊断设备一个随机的种子Seed,如果Seed不具有随机性,不法分子将通过大量的重试来破解密钥,只有Seed具有随机性,才能确保每次产生的Key不同,因此诊断设备每次应发送不同的密钥来进行解锁。
文章目录
NRC判定策略
①服务通用规则NRC判断
②对于带有子功能的服务(除31服务)的NRC优先级
27服务测试用例
假设对应的Seed、Key都是4 Bytes
Step 1:Tester 发送10 03
ECU 响应50 03
Step 2:Tester 发送27 01
ECU 响应67 01 11 22 33 44
Step 3:Tester 发送27 02 22 33 44
ECU 响应7F 27 13
Step 4: Tester 发送27 01
ECU 响应67 01 12 34 56 78
Step 5:Tester 发送27 02 23 45 67 89
ECU 响应67 02(表示解锁成功)
Step 6:Tester 发送 27 02 12 21 34
ECU 响应7F 27 24
此时ECU为什么不回复长度不对(NRC 0x13)?而回复发送顺序不对(NRC 0x24)?
结合下图安全访问状态图线路7中查找具体的状态转换表,可得!
安全访问状态图
本文的目的是根据状态迁移图和状态转换条件、动作来描述ECU中的SecurityAccess服务处理。
状态转换参数概览
名称 | 说明 |
---|---|
Delay_Timer延时计时器 | 如果支持,则此值表示安全访问尝试达到最大次数后的等待时间。(部分车厂会规定在每次开机、启动时会启动延时计时器),标准用例对于延时计时器有固定值,但特殊情况下也可能具有变量值【时间的长短取决于非易失性存储器中的错误访问尝试次数】 |
Att_Cnt | 如果支持,此值表示启动延时计时器之前的错误安访问尝试的次数(每个安全级别都需要计时器) |
Static_Seed静态种子 | TRUE:表示根据表State transitions在某些条件下种子被存储并再次用于种子请求 ;FALSE:表示每次收到新的种子请求时使用一个随机种子 |
xx | 表示服务器收到的最后一个requestSeed securityAccessType |
yy | 表示服务器接收到的当前sendKey securityAccessType |
Delay_Timer延时计时器和Att_Cnt参数支持是可选项【由车辆制造商决定】,一般来说,对于较长的种子/密钥长度(如16个byte或更长),对于这些参数的支持将不再重要。
State transitions-状态转换表
说明:
总结
以上就是今天要讲的内容,欢迎各位评论,提出宝贵意见,小编也会持续更新,以提供更好的作品。
以上是关于27服务-安全访问状态转换的主要内容,如果未能解决你的问题,请参考以下文章
UDS - 深论Security Access Service