AUTOSAR】UDS协议的代码分析与解读(八)----UDS安全访问27h和通讯控制28h

news2024/11/24 22:25:18

8.9 安全访问 Security Access (27h)

由于保密、排放或安全的原因, 安全访问服务提供一种方法以方便访问受限制的数据或诊断服务。 支持安全访问的ECU应该实现种子和密钥的合理算法,该算法应在特定文档中记录,而只有特定的少数 以访问该文档。

当外部测试工具从ECU中请求安全访问类型时,安全访问过程就开始了。当外部测试工具提供的安 全密钥ECU计算的安全密钥匹配时,将授予对ECU的安全访问权。安全访问流程参见图8

 

图8安全访问过程示例

8.9.1 请求种子

此服务求来自ECU的种子(seed)。基于这个种子,客户端能够计算并发送给ECU解锁所需的密 钥(key)。

8.9.1.1  报文格式

表 42 安全访问-请求种子服务的请求报文

Byte

Name

Cvt

Value  (Hex)

#1

RequestServiceIdentifier

M

27

#2

Sub-Function=[

SecurityAccessType=requestSeed]

M

01,03,05,

07-7D

表 43 安全访问-请求种子服务的肯定响应

Byte

Name

Cvt

Value  (Hex)

#1

PositiveResponseServiceID

M

67

#2

SecurityAccessType=requestSeed

M

01,03,05,

07-7D

#3

#6

SecuritySeed[4]=[

seed#1(highbyte)

seed#4(lowbyte)]

M

M

00-FF

00-FF

8.9.1.2    支持的否定响应码报

表 44 安全访问-请求种子服务的否定响应码

Hex

Cvt

ErrorText

12

M

功能不支持

如果子功能参数不支持,发送此否定响应码。

13

M

报文长度错

如果报文长度错误,发送此否定响应码

22

U

条件未满足

果请求安全访问服务的条件未满足,发送此否定响应码。

37

M

迟时间未到

如果延迟定时器处于激活时间内收到请求,发送此否定响应码。

8.9.2 发送密钥

此服务将客户端计算的密钥发送到ECUECU将此密钥与内部存储/计算的密钥进行比较。如果2 数值匹配, 则ECU解锁,允许客户端访问特定服务/数据。

8.9.2.1  报文格式

表 45 安全访问-发送秘钥服务的请求报文

Byte

Name

Cvt

Value  (Hex)

#1

RequestServiceIdentifier

M

27

#2

Sub-Function=[

SecurityAccessType=requestSeed]

M

02,04,06,

08-7E

#3

#6

SecurityKey[4]=[

Key#1(highbyte)

Key#4(lowbyte)]

M

M

00-FF

00-FF

表 46 安全访问-发送秘钥服务的肯定响应

Byte

Name

Cvt

Value  (Hex)

#1

PositiveResponseServiceID

M

67

#2

SecurityAccessType=RequestSeed

M

02,04,06,

08-7E

8.9.2.2    支持的否定响应码报

表 47 安全访问-发送秘钥服务的否定响应码

Hex

Cvt

ErrorText

12

M

功能不支持

如果子功能参数不支持,发送此否定响应码。

13

M

报文长度错

如果报文长度错误,发送此否定响应码

22

U

条件未满足

如果请求安全访问服务的条件未满足,发送此否定响应码。

24

M

请求序列错

果在接收到“sendKey”子功能前没有先接收到“requestSeed”请求报文, 发送此否 定响应码。

35

M

密钥无效

如果接收到预期的sendKey”子功能但是密钥值与ECU内部存储或计算的密钥不 相等,送此否定响应码。

36

M

超出访问次数限制

果延迟定时器因为超过最大允许失败尝试的次数激活,发送此否定响应码。

8.9.3 参数定义

此文档定义了几种不同的安全访问等级。不同等级的安全访问定义了不同的访问权限类型。供应 商自定义安全等级由供应商申请开通并通过h事业部同意。

种子及密钥均为4字节(32位)的数值。具体的安全加密算法由h事业部制定并由专门文件描

 48 安全访问等级

SecurityLevel安全级别

requestSeed种子

sendKey送密钥

CVT

Extendedsecuritylevel扩展安全级

01

02

M

Programmingsecuritylevel刷新安全级

09

0A

C

Immobilizersecuritylevel防盗安全

11

12

U

systemSupplierSpecificlevel供应商自定义安全级

61-6D

62-6E

U

8.9.4 执行规定

a)安全等级的激活:

在某一时间只有一个安全级别可以被激活。例如, 如果与请求种子09h相关联的安全级别已激活, 而诊断工具成功请求解锁与请求种子01h相关联的安全级别,此时只有与请求种子01h相关联的安全级别 支持的受限功能被解锁。其它任何与请求种子09h相关联的安全级别支持的解锁的安全功能服务不再激 。安全级别的数字是任意分配的, 它们之间没有优先级的区别。

b)种子(seed) 的产生

种子为一个4个字节(32位) 的数值, 由ECU随机生成。如果诊断工具连续发送请求种子 (RequestSeed) 报文, ECU应该肯定响应且回复相同的种子。种子产生的随机数不应包含下列两数值:

1) 00000000h:如果ECU已在解锁状态, 此时接收到外部诊断诊断设备的“RequestSeed”请求(同 全级),ECU应肯定响应报文并返回数值全为“0”的种子。诊断工具应通过检验种子是否为非零 方法来测ECU是否锁定。在此情况下,如果仍收到诊断工具的“SeedKey”请求,推荐ECU返回NRC24

2) FFFFFFFFh:由于存储器被擦除时,其默认值为FFFFFFFFh,所以种子不能为此值。

c) 密钥的产生:

密钥为一个4字节(32位)的数值, 由种子经过特定的安全算法计算生成。

d)安全访问流程:

8所述的种子及密钥的请求和响应流程是强制性的。但以下情况发生该流程将被重置且重新生成 随机种子:

1)任何原因导致的诊断会话模式进入到默认会话模式, ECU将进入闭锁状态;

2) ECU发送了“RequestSeed的否定应答;

3) ECU发送了“SeedKey”的否定应答

8.9.5 延时机制

a) 在连续3次请求安全访问失败后,需等待10s之后才能接受下一次的安全访问请求“RequestSeed

1) 当测试工具发送一个无效秘钥,ECU将返回NRC35“InvalidKey”。同时, 安全访问错误计数 器加1。该计器必须存储在非易失性存储单元中, 初始值为0

2) 当安全访问错误计数器达到3  (即收到3此无效密钥),ECU将返回NRC36且需要等待10s才能 接受下一次的安全访问请求Request  Seed。期间任何安全访问请求Request  Seed都会被ECUNRC37

b) 当10s等待时间结束后,安全访问错误计数器将减1并允许尝试安全访问请求“RequestSeed” 如果此次请求失败(由于发送了一个无效的秘钥),安全访问错误计数器将加1,并再次开启10s待时

1)任一次ECU被成功解锁(密钥有效),失败计数器都将被重置为零。

c) ECU上电/复位后默认处于闭锁状态,需要检测安全访问错误计数器, 若计数器为3,则需要 启动10s的安全访问延时时间。

d)全访问诊断服务的执行策略参见图9

图9安全访问延时机制

8.10 通信控制 Communication Control (28h)

此服务服务允许开启/ECU 对特定报文的发送或接收。

8.10.1 报文格式

 49 通信控制服务的请求报文

Byte

Name

Cvt

Value  (Hex)

#1

RequestServiceIdentifier

M

28

#2

Sub-Function=[ControlType

M

00-FF

#3

CommunicationType

M

00-FF

 50 通信控制服务的肯定响应

Byte

Name

Cvt

Value  (Hex)

#1

PositiveResponseServiceID

M

68

#2

Sub-Function=[ControlType]

M

00-7F

8.10.2 支持的否定响应码

51 通信控制服务的否定响应码

Hex

Cvt

ErrorText

12

M

功能不支持

如果子功能参数不支持,发送此否定响应码。

13

M

报文长度错

如果报文长度错误,发送此否定响应码

22

M

条件未满足

如果ECU处于关键运行模式所以不能使能/禁止请求的通信类型,发送此 定响应码。

31

M

请求超出范

如果通信类型参数检测出错误,发送此否定响应码。

8.10.3 参数定义

52 子功能-控制类型定义的参数

Hex

Description

Cvt

00

Enable Rx And Tx允许接收和发送

M

01

Enable Rx And Disable Tx允许接收禁止发送

U

02

Disable Rx And Enable Tx禁止接收允许发送

U

03

Disable Rx And Tx禁止接收和发送

M

表 53 通讯类型定义的参数

Hex

Description

Cvt

01

Normal Communication Messages普通应用报文

M

02

Network Management Communication Messages网络管理报文

C1

03

Network Management Communication Messages & normal Communication Messages 普通应用报文和网络管理报文

M1

C1:支持网络管理功能的ECU,需要支持此项。

M1:不支持网络管理功能的ECU ,只需要支持对普通应用报文的操作。

8.10.4 执行规定

a)执行此服务的前提条件

1)车辆静止;

2)系统不执行任何紧急操作(供应商定义);

3)当上述任何一个条件不满足, ECU应该拒绝通信控制请求报文并发送否定响应码22h

b)以下一种或多种情况会导致ECU返回默认状态(正常收发报文):

1)接收到了enableRxAndTx参数的通讯控制服务;

2) ECU上电/重启;

3)任何原因导致的诊断会话模式转换到默认会话。

c) 对于连接多个网段的ECU (如网关),此服务会影响所有网段 (不仅是接收到诊断请求的网段)。

d) 对于网关ECU,正常诊断报文的路由不受此服务影响。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/652158.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

FasterTransformer 003: CMAKELIST in gemm_test

cmake -DSM60 -DCMAKE_BUILD_TYPERelease .. -DCMAKE_BUILD_TYPE cmake编译类型通常默认为debug,但是在编译软件时,一般都需要使用release版本的,debug太慢了。设置为release版本可以在cmake文件里进行,也可以在运行cmake命令时使…

深度学习实践篇[17]:模型压缩技术、模型蒸馏算法:Patient-KD、DistilBERT、DynaBERT、TinyBERT

【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍:【深度学习入门到进阶】必看系列,含激活函数、优化策略、损失函数、模型调优、归一化…

观点碰撞燃爆会场,2023开放原子全球开源峰会区块链分论坛圆满落幕!

2023开放原子全球开源峰会区块链分论坛活动现场 6月13日,由开放原子开源基金会主办,XuperCore开源项目承办,北京百度网讯科技有限公司、招商银行、联通数字科技有限公司、杭州趣链科技有限公司等协办的2023开放原子全球开源峰会区块链分论坛在…

《低代码指南》不能“生成代码”的低代码平台,为什么推进阻力那么大?

为什么现在低代码平台推进阻力那么大? “在踏出一步之前,首先考虑能否退回去” 现在低代码平台,功能性能这些先不说,能不能提升效率,提升多少,暂不讨论。光“平台和环境锁定”这一点,就是整个行业最大的技术推广障碍。道理很简单,平台有几百个,但是如果选了一个,…

c++11 标准模板(STL)(std::basic_ios)(一)

定义于头文件 <ios>template< class CharT, class Traits std::char_traits<CharT> > class basic_ios : public std::ios_base 类 std::basic_ios 提供设施&#xff0c;以对拥有 std::basic_streambuf 接口的对象赋予接口。数个 std::basic_ios 对…

汽车IVI中控开发入门及进阶(八):视频相关的一些知识点

前言: 视频最早的渊源来源于电视。做汽车仪表/IVI中控,尤其是IVI信息娱乐部分,都要涉及到视频这个知识点,各种概念很多,首先需要明确一条主线,那就是SDTV标清电视->HDTV高清电视->UHDTV超高清电视的一个发展脉络,BT601/656是SDTV标清电视接口,BT1120则对应HDTV高…

SpringCloud:什么是SpringCloud?①

一、什么是SpringCloud 像“云朵”一样聚集起来管理服务。它的定位就是&#xff1a;服务群组间的通讯管理。 二、Spring&#xff0c;SpringBoot以及SpringCloud之间的关系。 Spring是一种引擎式的底层核心-- bean容器思想。后面均是基于它延伸的高级产品。 SpringBoot 专注单体…

为什么中国大公司不开发 Linux 桌面应用?

我们Linux平台C端的业务&#xff0c;也就是给大家提供的Linux的个人版本。目前真的是靠爱发电了&#xff0c;逃&#xff09; 更爱的是&#xff0c;我们不只是提供了X64平台&#xff0c;更是提供了Arm&#xff0c;MIPS64平台的二进制包。 估计国内在Linux平台首发新功能的桌面应…

马尔科夫模型 详解

马尔可夫性 马尔可夫性也叫做无后效性、无记忆性&#xff0c;即是过去只能影响现在&#xff0c;不能影响将来。 在数学上&#xff0c;如果为一个随机过程&#xff0c;则马科尔夫性质可以符号化成如下形式&#xff1a; 从上式可知&#xff0c;过去(s)并不影响将来(th)的状态&a…

Python数据分析讲课笔记02:Numpy基础

文章目录 零、学习目标一、NumPy概述二、多维数组对象三、创建NumPy多维数组1、利用array()函数创建NumPy数组2、创建NumPy数组的其它函数&#xff08;1&#xff09;利用zeros函数创建元素全为0的数组&#xff08;2&#xff09;利用ones函数创建元素全为1的数组&#xff08;3&a…

时间序列异常检测:统计和机器学习方法介绍

在本文中将探索各种方法来揭示时间序列数据中的异常模式和异常值。 时间序列数据是按一定时间间隔记录的一系列观测结果。它经常在金融、天气预报、股票市场分析等各个领域遇到。分析时间序列数据可以提供有价值的见解&#xff0c;并有助于做出明智的决策。 异常检测是识别数…

增加内容曝光、获得更多粉丝 - 「评论发红包」功能

目录 博客发放以及领取红包规则 1. 发布博客评论社区红包规则&#xff1a; 2. 博客评论红包领取规则 如何发红包评论&#xff1f; 发布红包评论益处 不知道大家有没有注意到&#xff0c;我们的「评论发红包」功能已经上线啦&#xff5e; 现在几乎所有的内容 -- 博客&…

管理类联考——英语——技巧篇——完型填空——经典方法论

放弃完型填空&#xff0c;意味着你的阅读部分得分至少能稳定在34分以上(满分40分&#xff0c;要得34分以上意味着至多只能错3道题)&#xff0c;且其他题型也发挥不错&#xff0c;才能确保总分是一个不错的分数。然而&#xff0c;翻译和写作考查的都是硬实力&#xff0c;新题型自…

解释器模式(二十三)

相信自己&#xff0c;请一定要相信自己 上一章简单介绍了 备忘录模式(二十二), 如果没有看过, 请观看上一章 一. 解释器模式 引用 菜鸟教程里面 解释器模式介绍: https://www.runoob.com/design-pattern/interpreter-pattern.html 解释器模式&#xff08;Interpreter Patter…

科研热点|影响因子发布时间确定,AHCIESCI将首获IF~

根据科睿唯安&#xff08;Clarivate&#xff09;官方公众号消息&#xff0c;2023年度《期刊引证报告》&#xff08;Journal Citation Reports&#xff0c;简称JCR&#xff09;即将于今年6月底正式发布&#xff01; 本年度JCR将对Web of Science核心合集收录的所有期刊赋予期刊…

C语言指针讲解(适用于初学者)

本文参考视频: https://b23.tv/xLOG6SV,相当于学习笔记&#xff0c;这样概念混淆的时候也可以看看。 一.一级指针 以下图表示的意思是&#xff1a; a的地址为0XA0&#xff0c;定义一个指针p&#xff0c;指向a的地址&#xff0c;计算机也会给p一个内存空间&p:0XB0 图中&a…

【机器学习】十大算法之一 “KNN”

作者主页&#xff1a;爱笑的男孩。的博客_CSDN博客-深度学习,活动,python领域博主爱笑的男孩。擅长深度学习,活动,python,等方面的知识,爱笑的男孩。关注算法,python,计算机视觉,图像处理,深度学习,pytorch,神经网络,opencv领域.https://blog.csdn.net/Code_and516?typeblog个…

疑似有用户安装Win11六月更新之后,无法打开Chrome浏览器

近日有网友表示&#xff0c;在安装6月更新的KB5027231之后&#xff0c;无法打开Chrome浏览器了&#xff0c;并且在任务管理器中可以看到相关**ERP系统**进程&#xff0c;但是 Chrome浏览器无法显示。 据了解&#xff0c;微软在本月的补丁星期二活动中&#xff0c;面向Win11发布…

MySQL:多表查询(全面详解)

MySQL&#xff1a;多表查询 前言附录&#xff1a;常用的 SQL 标准有哪些一、一个案例引发的多表连接1、案例说明2、笛卡尔积&#xff08;或交叉连接&#xff09;的理解3、案例分析与问题解决 二、多表查询分类讲解1、等值连接 vs 非等值连接1.1 等值连接1.2 非等值连接 2、自连…

chatgpt赋能python:使用Python生成应用的SEO

使用Python生成应用的SEO 在当今数字化时代中&#xff0c;拥有一个优化良好的应用程序对于任何企业都是至关重要的。 SEO&#xff08;搜索引擎优化&#xff09;是一个崭新且不断发展的领域&#xff0c;它对于企业非常具有建设性。在本文中&#xff0c;我们将学习如何使用Pytho…