UDS统一诊断服务【三】安全访问0X27服务

这篇具有很好参考价值的文章主要介绍了UDS统一诊断服务【三】安全访问0X27服务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

今天分享的是UDS的安全访问服务,希望能对你有所帮助


一、安全访问简介

1.1 什么是安全访问

SecurityAccess 安全访问,27服务,用来保护某些诊断服务的,提供一种保护机制。例如对于重要数据的上传或者下载过程不做任何限制,可能会对整车的安全造成极大的威胁,尤其是针对底盘域的控制器更是要在这方面做好全方位的安全防保护措施。

1.2 常用的应用场景:

  • 操控类,输入输出的控制,例程控制服务等,
  • 写入类,如烧录程序;产线写入重要的数据,如版本或标定信息,需要过27安全访问后,才进行数据的写入
  • 读取数据,在读取重要的数据时也需要过安全访问

1.3 安全访问流程

我们来看看官方文档ISO14299-1是如何介绍的
UDS统一诊断服务【三】安全访问0X27服务,汽车电子,嵌入式硬件

  • 客户端向服务端请求种子;
  • 服务端向客户端发送随机种子;
  • Client基于接收到来自Server的随机种子计算出对应的Key并发送给到Server;
  • Server接受来自Client算出来的Key并与内部算出的Key比较,如果一致则解锁成功,否则解锁不成功;

UDS统一诊断服务【三】安全访问0X27服务,汽车电子,嵌入式硬件

二、数据格式

2.1 请求种子格式

[SID] + [sub-function] + [data]
第一个字节是服务ID:0x27,第二个字节是子功能,请求种子的子功能为1,3,5等奇数。后面的securityAccessDataRecord是可选的数据,标准里给的示例是用来标识客户端的ID,实际应用中一般不会用到,可先不管。
UDS统一诊断服务【三】安全访问0X27服务,汽车电子,嵌入式硬件

2.2 发送秘钥格式

[SID] + [sub-function] + [securityKey]

这里的子功能就是2,4,6等偶数值了,而且两者Subfuntion还必须存在一个确定的定量关系:即Subfuntion(Request Seed) + 1 = SubFunction(Send Key)
UDS统一诊断服务【三】安全访问0X27服务,汽车电子,嵌入式硬件

2.3 子功能

请求种子和发送秘钥的子功能被分成了一对对的组,每一组是一个安全等级,不同的安全等级可以用来验证不同的设备,或者执行不同安全等级要求的操作,数字大小并不代表其等级的高低。

注意:同一时刻最多只能有一个安全等级是解锁的状态。因此从一个安全等级接收到另外一个等级的请求并且解锁成功后,之前的安全等级将被重新锁定,而由于切换安全等级致使先前解锁的状态被锁定后,其依赖于被锁定的等级的服务和功能也一并被关闭。
UDS统一诊断服务【三】安全访问0X27服务,汽车电子,嵌入式硬件
0X01:主机厂定义的安全级别的请求种子

0X02:主机厂定义的安全级别的发送秘钥

0X03、05、07~0X41:主机厂定义的不同安全等级的请求种子

0X04、06、08~0X42:主机厂定义的不同安全等级的发送秘钥

2.4 肯定响应

[SID + 0X40] + [sub-function] + [securitySeed]

肯定响应的SID:0x67(0x27+0x40),以及被请求的子功能。后面的种子是收到请求种子的时候,要在肯定响应里给出具体的种子,而如果收到的请求是发送密钥,则只是校验是否解锁成功,不需要后面的字节了。
UDS统一诊断服务【三】安全访问0X27服务,汽车电子,嵌入式硬件

2.5 否定响应

[0X7F] + [SID] + [NRC]

如果解锁失败,则可通过收到的NRC判断失败的原因,27服务常用的NRC如下:
UDS统一诊断服务【三】安全访问0X27服务,汽车电子,嵌入式硬件

三、举个例子

标准文档里给的例子
UDS统一诊断服务【三】安全访问0X27服务,汽车电子,嵌入式硬件
下图是实际项目中录取的CAN报文
UDS统一诊断服务【三】安全访问0X27服务,汽车电子,嵌入式硬件
UDS这东西呢,难倒是不难,就是细节太多,没啥别的技巧,就是多实践,多翻一翻官方文档,用得多了就会了,现在我还停留在翻文档的阶段,只记得常用的几个。继续学习,多实践。文章来源地址https://www.toymoban.com/news/detail-590176.html

到了这里,关于UDS统一诊断服务【三】安全访问0X27服务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • UDS统一诊断服务【一】诊断会话控制0X10服务

    最近在做诊断相关的开发工作,将自己接触到的知识点记录下来。前面的文章已经介绍过UDS的一些基础知识,和基本的一些概念,不清楚的可以查看之前的文章:UDS基础知识介绍 诊断会话控制服务 DiagnosticSessionControl ,SID是0X10,主要功能是控制服务端的会话模式切换。一般默

    2024年02月03日
    浏览(182)
  • 【车载开发系列】UDS诊断---读取数据($0x22)

    该服务的英文简称为ReadDataByIdentifier 。 根据ISO14119-1标准中所述,诊断服务22主要用于Client向Server(ECU)通过DID的方式读取相关的数据。这些数据可以输入输出的数字信号,模拟信号,内部数据以及其他的系统状态信息。作为诊断服务种的基础服务,可以简单理解为就是一个用于

    2023年04月19日
    浏览(61)
  • 【车载开发系列】UDS诊断---读取DTC信息($0x19)

    UDS可以简单理解为一套完整的通讯协议框架,其目的在于规范各种行车电脑和ECU之间的通讯。0x19服务其实是读取DTC信息的服务。 1)DTC概念 故障存储相关的0x19和0x14服务。 当系统检测到了一个错误或者是一个故障发生的时候,会将相对应的数值故障码进行存储,那么这个对应

    2024年01月15日
    浏览(57)
  • 【车载开发系列】UDS诊断---动态定义DID($0x2C)

    动态定义数据标识符 DynamicallyDefineDataIdentifier(2Ch) 此服务允许诊断工具在ECU的内部动态定义一个数据标识符,一个临时的DID,可以通过这个DID读取一段内存的数据,也可以通过改DID一次性读取多个原有DID的数据。 该数据标识符还可以被读取数据服务22h或读取数据(周期标识

    2024年02月02日
    浏览(69)
  • uds的0x14服务介绍

    0x14服务是UDS(Unified Diagnostic Services)中的诊断服务之一。具体而言,0x14服务是用于执行ClearDTC(Drive Train Controller)操作的服务。Drive Train Controller通常指的是车辆驱动控制器,包括发动机控制单元、传动控制单元、制动控制单元等。 执行ClearDTC操作后,UDS 0x14服务可以清除D

    2024年02月09日
    浏览(51)
  • uds的0x11服务介绍

    UDS(Unified Diagnostic Services)是一种汽车电子系统的诊断协议,目标是提供具有通用性、标准化和可互换性的诊断接口。在UDS中,0x11服务主要用于对ECU的存储器进行读取和写入操作,其具体介绍如下: 0x11服务被称为“安全访问(Request Upload / Request Download)”,是UDS协议的两项

    2023年04月09日
    浏览(46)
  • 【ISO14229_UDS刷写】-3-$36诊断服务TransferData理论部分

    总目录:(单击下方链接皆可跳转至专栏总目录) 《UDS/OBD诊断需求编辑工具》总目录 https://blog.csdn.net/qfmzhu/article/details/123697014 目录 1 $0x36 TransferData诊断服务描述 2 0x36服务请求消息 2.1 0x36服务请求消息定义 2.2 0x36服务请求消息子功能参数$ Level(LEV_)定义 2.3 0x36服务请求消息

    2024年02月06日
    浏览(56)
  • 【AUTOSAR】UDS协议的代码分析与解读(五)----ECU诊断服务

    8    诊断服务 8.1 总览 此章节定义了本规范中可使用的诊断服务及其执行规则 。 下表列出 了 h 事业部定义的所有 UDS 诊断服务。 ECU 最终实现与下述定义不符之处必须得到 h 事业部   的认可。服务实现内容需在零部件诊 断规范中详细说明。 表   9 诊断服务支持列表 诊 断服

    2024年02月09日
    浏览(60)
  • CANOE UDS 安全访问CAPL脚本

    本文是关于如何用CAPL脚本实现安全访问过程的。其中包括准备工作、CAPL脚本编写和调用诊断接口执行安全访问算法的步骤。以下是该文本的主要要点: 加载包含安全访问算法的dll文件 通过diagSetTarget函数设置目标ECU 使用diagSendRequest函数发送请求获取seed和发送带有key数组的请

    2024年02月06日
    浏览(50)
  • 车载诊断协议UDS——诊断刷写(Software Update)

    刷写,顾名思义就是两个动作:刷和写: 刷是擦除ECU芯片内存上原有的数据; 写是重新在ECU芯片内存上写入新的数据(Application or Calibration Data……);         在控制器量产之初,会将valid application data烧录到控制器芯片内存上。但随着时间推移,控制器中运行代码出现

    2024年02月08日
    浏览(65)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包