【UDS】ISO14229之0x27服务


->返回总目录<-

前言

简称: “SecurityAccess”,安全访问
功能: 由于(保密、排放或安全的原因),安全访问服务提供一种方法以方便访问受限制的数据或诊断服务。


一、理论描述

1,例如,上传/下载程序或数据至 ECU、读取 ECU 特殊位置中内存数据等诊断服务一般需要执行安全访问,
因为下载不恰当的程序或数据 至 ECU 可能破坏电子设备,或影响汽车的排放和功能安全。
(说白了就是防止乱刷程序到ECU)

2,支持安全访问的 ECU 应该实现种子和密钥的合理算法,该算法应在特定文档中(整车厂会给出算法规范)记录,
而只有特定的少数人(软件开发人员)可以访问该文档。

3,当外部测试工具(CANoe等上位机)从 ECU 中请求安全访问类型时,安全访问过程就开始了。
当外部测试工具提供的安全密钥与ECU 计算的安全密钥匹配时,将授予对 ECU 的安全访问权。

二、使用步骤

1.总述

举例子:某整车厂针对0x27服务的需求如下:
请求Seed(种子) 27 01
发送Key(密钥) 27 02
数据长度为4Byte

Step1: 诊断工具发送 “SecurityAccess-RequestSeed” 请求种子报文(27 01 ),ECU会回复一个带Seed数据的报文
(67 01 22 33 44 55 )。注: 此时ECU已经在代码里使用Seed计算出Key了。

Step2: 诊断工具收到ECU回复的Seed(如22 33 44 55),然后根据整车厂给出的算法,计算出Key(如 AA BB CC DD )。然后
发送包含密钥的“SecurityAccess-SendKey” (27 02 AA BB CC DD)服务报文给 ECU 请求比较密钥(Step1中计算的Key)。
如果密钥一致, ECU 使能(解锁)诊断工具对特定服务的使用权限和对特定数据的访问权限,
并通过“SecurityAccess-SendKey” 肯定响应(67 02)报文指出 ECU 和诊断工具认证成功。

Step3: 如果密钥不相符,此访问被认为是一次错误的访问尝试;(ECU回复NRC35:密钥无效) 如果是无效的密钥或者其他原因被
拒绝访问要求诊断工具从头开始重新发送“SecurityAccess-RequestSeed” 请求报文;如果连续密钥无效三次,
ECU回复NRC36:超过最大尝试次数。此时需要等待10秒后才可以请求27 01服务,否则ECU回复NRC37:延时要求不满足

![在这里插入图片描述](https://img-blog.csdnimg.cn/2142e220d8af45d69668329c523edf31.png

2.请求

在这里插入图片描述
在这里插入图片描述

第一个字节就是SID,后边的一个字节 用于标识将要访问的安全访问类型。下图红色框内是请求Seed的帧格式,
绿色框 是请求对比密钥的帧格式。

在这里插入图片描述

3.响应

1)正响应
在这里插入图片描述

见CANoe报文数据图中的蓝色框。
Response ID: 67
securityAccessType=requestSeed :01
securitySeed:00 95 00 06

在这里插入图片描述
见CANoe报文数据图中的黄色框。
Response ID: 67
securityAccessType=SendKey:02

2)否定响应
支持的否定响应如下,一般工作上根据整车厂给的诊断输入文档来选择要支持的NRC码。
在这里插入图片描述

博主平日项目中,常需要支持的是NRC 0x12,0x13,0x22,0x24,0x35,0x36,0x37,0x7F。

NRC12: 子服务不支持(根本没有27 00服务,安全访问类型不支持00)
在这里插入图片描述
NRC13: 请求报文数据长度有误(请求数据27 01只有两个字节。而下图中请求的是27 01 00)
27前面的03是指发送报文的数据长度:27 01 00.
在这里插入图片描述
NRC22: 请求条件不满足
(一般整车厂会告诉你NRC22的满足条件,例如:车速>3km/h,电源过欠压时候,请求服务,ECU便回复该NRC)

NRC24: 请求顺序不正确(不按套路出牌,一上来就请求27 02去对比密钥了)
在这里插入图片描述
NRC35: 密钥对比有误(在请求27 02时候,输入错误的Key并且发送。)
在这里插入图片描述
NRC36: 超过最大解锁尝试次数(错误一次 NRC35,错误第二次NRC35,错误第三次NRC36)
在这里插入图片描述
NRC37: 延时要求不满足(回复NRC36之后,10秒延时时间内再次请求27 01)
在这里插入图片描述

NRC7F: 当前会话下服务不支持
(整车厂要求该安全访问服务,需要在Extend session会话下支持。10 01是默认会话,因此回复7F 27 7F )
在这里插入图片描述

总结

0x27服务还是比较有意思的,之前博主一直是手写代码的,现在的项目考虑到了功能安全,整车厂要求是Autosar架构的,
因此现在开发都是使用DaVinCi软件开发生成代码,很强大的软件(德国佬的确很6)。下一章0x28控制通信服务见!

->返回总目录<-

  • 10
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

&春风有信

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

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

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

打赏作者

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

抵扣说明:

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

余额充值