UDS-10.4 SecurityAccess (27) service

news2024/10/6 20:26:10

10.4 安全访问(27)服务

来自:ISO 14229-1-2020.pdf

10.4.1 服务描述

本服务的目的是提供一种访问数据和/或诊断服务的方法,这些数据和/或诊断服务由于安全、排放或安全原因而被限制访问。用于将例程或数据下载/上传到服务器以及从服务器读取特定内存位置的诊断服务是可能需要安全访问的情况。不适当的程序或数据下载到服务器可能会损坏电子设备或其他车辆部件,或危及车辆的排放、安全或安保标准。安全概念使用种子和密钥的关系。
使用这项服务的典型例子如下:

  • 客户请求“种子”,
  • 服务器发送“种子”,
  • 客户端发送“密钥”(适用于收到的种子),
  • 服务器回复“密钥”是有效的,它将自己解锁。

‘requestSeed’ SubFunction参数值应该总是一个奇数,相同安全级别对应的’ sendKey’ SubFunction参数值应该等于’requestSeed’ SubFunction参数值加1。

在任何时刻,只有一个安全级别是活动的。例如,如果与requestSeed 03相关联的安全级别是活动的,并且测试者请求成功地解锁了与requestSeed 01相关联的安全级别,那么此时只有与requestSeed 01相关联的安全级别所支持的安全功能应该被解锁。之前由与requestSeed 03关联的安全级别解锁的任何额外安全功能都将不再激活。安全级别编号是任意的,并不意味着级别之间有任何关系。

客户端通过发送服务SecurityAccess ’ requestSeed '消息请求服务器“解锁”。服务器应通过使用服务SecurityAccess ’ requestSeed '积极响应消息发送一个“种子”来响应。然后客户端将通过使用适当的服务SecurityAccess ’ sendKey '请求消息返回一个“密钥”号码给服务器进行响应。服务器将此“密钥”与内部存储/计算的“密钥”进行比较。如果两个数字匹配,那么服务器将启用(“解锁”)客户端对特定服务/数据的访问,并通过服务SecurityAccess ’ sendKey '积极响应消息指示。如果两个号码不匹配,这将被认为是一次错误的访问尝试。一个无效的密钥将要求客户端重新开始使用SecurityAccess 'requestSeed’消息,如附件I所述。关于安全访问处理细节的其他细节在附件I中规定。

如果服务器支持安全,但是当接收到SecurityAccess ’ requestSeed '消息时,请求的安全级别已经解锁,该服务器应响应SecurityAccess ’ requestSeed '积极响应消息服务,其种子值为零(0)。服务器永远不会为当前锁定的给定安全级别发送全零种子。客户端应使用此方法通过检查非零种子来确定服务器是否针对特定安全级别被锁定。

在服务器上电/重置后,以及在一定次数的错误访问尝试之后(参见下面的进一步描述),服务器可以积极响应来自客户端的服务SecurityAccess ’ requestSeed '消息之前,可能需要车辆制造商特定的时间延迟。如果支持此延迟定时器,则在达到车辆制造商指定的错误访问尝试次数之后,或者当服务器上电/重置并且之前执行的SecurityAccess服务由于一次错误访问尝试而失败时,将激活延迟。如果服务器支持此延迟定时器,则在SecurityAccess服务sendKey成功执行后,服务器应清除上电/复位时延迟定时器调用的服务器内部指示信息。如果服务器支持该延迟定时器,并且无法确定在上电/重置之前执行的SecurityAccess服务是否失败,则延迟定时器应在上电/重置后始终处于活动状态。只有当服务器在上电/重置时被锁定时才需要延迟。车辆制造商应选择是否支持延迟计时器。

试图进入安全系统不应妨碍正常的车辆通信或其他诊断通信。
如果在服务器被锁定时请求安全服务,提供安全性的服务器应该支持拒绝消息。
在特定诊断会话期间请求的某些诊断功能/服务可能需要一个成功的安全访问序列。在这种情况下,应要求下列服务顺序:

  • diagnostics sessioncontrol服务,
  • SecurityAccess服务和
  • 安全诊断服务。

服务器中启用的诊断会话(会话启动)允许使用不同的accessModes。
重要:服务器和客户端必须满足8.7中规定的请求和响应消息行为。

10.4.2 请求消息

10.4.2.1 请求消息定义

表40指定了请求消息定义- SubFunction = requestSeed。
在这里插入图片描述

  1. #1:安全访问请求服务标识符(SA),值为[27]
  2. #2:子功能=[安全访问类型=请求种子](LEV_SAT_RSD),值为[01、03、05、07到7D]
  3. #3,…,#n:安全访问数据记录[]=[参数#1,…,参数#m](SECACCDR_PARA1,…,SECACCDR_PARAm),值为[00到FF,…,00到FF]

表41指定了请求消息定义- SubFunction = sendKey。
在这里插入图片描述

  1. #1:安全访问请求服务标识符(SA),值为[27]
  2. #2:子函数=[安全访问类型= 发送密钥](LEV_SAT_SK),值为[02,04,06,08到7E]
  3. #3,…,#n:安全密钥[] = [Key #1(高字节),…,Key #m(低字节)](SECKEY_KEY1HB,…,SECKEY_KEYmLB),值为[00到FF,…,00到FF]

10.4.2.2 请求消息子函数参数$Level (LEV_)定义

SubFunction参数securityAccessType向服务器指示该服务正在进行的步骤、客户端希望访问的安全级别以及种子和密钥的格式。如果服务器支持不同级别的安全,则每个级别都由requestSeed值标识,该值与sendKey值有固定的关系:

  • " requestSeed = 01 “定义了” requestSeed = 01 “和” sendKey = 02 "之间的固定关系。
  • " requestSeed = 03 “定义了” requestSeed = 03 “和” sendKey = 04 "之间的固定关系。

requestSeed和sendKey的值在表42中定义(suppressPosRspMsgIndicationBit(位7)未显示)。
在这里插入图片描述
注:

  • 00:ISOSAEReserved(ISOSAERESRVD),此值为本文档保留。
  • 01:requestSeed(RSD),使用汽车制造商定义的安全级别RequestSeed。
  • 02:sendKey(SK),使用汽车制造商定义的安全级别的SendKey。
  • 03, 05, 07到41:requestSeed(RSD),RequestSeed与汽车制造商定义的不同安全级别。
  • 04、06、08到42:sendKey(SK),由汽车制造商定义的不同安全级别的SendKey。
  • 43到5E:ISOSAEReserved(ISOSAERESRVD),此值由本文档保留,以供将来定义。
  • 5F:ISO26021-2值(RSD),为ISO 26021-2中定义的机载烟火装置的寿命结束激活定义了不同安全级别的种子。
  • 60:ISO26021-2 sendKey值(SK),SendKey具有不同级别的安全定义,用于ISO 26021-2中定义的机载烟火装置的寿命结束激活。
  • 61到7E:systemSupplierSpecific(SSS),这个范围的值是为系统供应商特定的使用而保留的。
  • 7F:ISOSAEReserved(ISOSAERESRVD),此值由本文档保留,以供将来定义。

10.4.2.3 请求消息数据参数定义

表43指定请求消息的数据参数。
在这里插入图片描述
注:

  • securityKey(高字节和低字节):请求消息中的“Key”参数是由安全算法生成的值,对应于特定的“Seed”值。
  • securityAccessDataRecord:此参数记录是用户可选的,用于在请求种子信息时向服务器传输数据。例如,它可以包含在服务器中验证的客户机标识。

10.4.3 积极响应信息

10.4.3.1 积极响应消息定义

表44指定了积极响应消息。
在这里插入图片描述
注:

  • #1:安全访问响应服务标识符(SAPR),值为[67]
  • #2:子功能= [安全访问类型](LEV_SAT_SK),值为[00-7F]
  • #3,…,#n:安全种子[] = [种子#1(高字节),…,种子#m(低字节)](SECSEED_SEED1HB,…,SECSEED_SEEDmLB),值为[00到FF,…,00到FF]
  • C:该参数的存在取决于参数securityAccessType。如果securityAccessType参数表示客户端希望从服务器检索种子,则必须出现该参数。

10.4.3.2 正面响应消息数据参数定义

表45指定响应消息的数据参数。
在这里插入图片描述

  • securityAccessType:该参数是请求消息中SubFunction参数的第6位到第0位的回显。
  • securitySeed(高字节和低字节):seed参数是服务器发送的数据值,客户端在计算访问安全性所需的密钥时使用它。只有在发送请求消息时,SubFunction设置为请求服务器种子的值,securitySeed数据字节才会出现在响应消息中。

10.4.4 支持的消极响应码(NRC_)

本服务应实施以下否定响应代码。表46记录了每个响应代码发生的情况。如果错误场景适用于服务器,则列出的否定响应应使用。

NRC描述助记符
12SubFunctionNotSupported:如果SubFunction参数不支持,将发送此NRC。SFNS
13incorrectMessageLengthOrInvalidFormat:如果信息长度错误,则应发送此NRC。IMLOIF
22conditionsNotCorrect:如果不满足安全访问请求的标准,则该NRC将被返回。CNC
24requestSequenceError:如果sendKey子函数没有先接收到requestSeed请求消息,则发送。RSE
31requestOutOfRange:如果用户可选的securityAccessDataRecord包含无效数据,将发送此NRC。ROOR
35invalidKey:如果接收到期望的sendKey子函数值,该键的值与服务器内部存储/计算的键不匹配,并且延迟计时器不被此请求激活。IK
36exceededNumberOfAttempts:如果接收到一个期望的’ sendKey '子函数,密钥的值与服务器内部存储/计算的密钥不匹配,并且延迟计时器被这个请求激活(即由于达到了激活延迟计时器的错误访问尝试的限制)。ENOA
37requiredTimeDelayNotExpired:如果接收到requestSeed子函数,并且延迟定时器为所请求的安全级别激活,则发送。RTDNE

10.4.5 消息流举例:SecurityAccess

10.4.5.1假设

对于下面给出的消息流示例,如果服务器处于“锁定”状态,则假设以下条件可以成功解锁:

  • SubFunction请求种子:01 (requestSeed)
  • 子函数发送密钥:02 (sendKey)
  • 服务器的种子(2字节):3657
  • 服务器的密钥(2字节):C9A9(例如2的种子值的补码)

通过将suppressPosRspMsgIndicationBit (SubFunction参数的第7位)设置为"FALSE"(‘0’),客户端请求有一个响应消息。

10.4.5.2 例1 - server处于“locked”状态

10.4.5.2.1 步骤#1:请求种子

表47指定了SecurityAccess请求消息流示例#1 -步骤#1。
在这里插入图片描述
表48指定了SecurityAccess正向响应消息流示例#1 -步骤#1。
在这里插入图片描述

10.4.5.2.2 步骤#2:发送密钥

表49指定了SecurityAccess请求消息流示例#1 -步骤#2。
在这里插入图片描述
表50指定了SecurityAccess正向响应消息流示例#1 -步骤#2。
在这里插入图片描述

10.4.5.3 例2 - server处于“未锁定”状态

10.4.5.3.1 步骤#1: 请求种子

表51指定了SecurityAccess请求消息流示例#2 -步骤#1。

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

表52指定了SecurityAccess正向响应消息流示例#2 -步骤#2。
在这里插入图片描述

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

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

相关文章

spring 基础知识-- IOC 和 DI 的配置和使用。

目录 一、基本概念 二、Spring 核心概念 1、问题分析 2、IOC、IOC容器、Bean、DI 3、IOC 入门案例 4、DI 入门案例 三、IOC 详解 1、bean 基础配置 2、bean 实例化 3、bean 生命周期 四、DI 详解 1、setter 注入 2、构造器注入 3、自动配置 4、集合注入 一、基…

go调度和性能分析利器之trace

trace的使用示例 import ("fmt""log""os""runtime/trace""sync" )func main() {//runtime.GOMAXPROCS(1)// 1. 创建trace持久化的文件句柄f, err : os.Create("trace.out")if err ! nil {log.Fatalf("failed…

再次学习make

目录 1.Makefile的重要性 2.MakeFile的概念 3.Makefile的优点 4.Makefile的基本语法 5.变量 5.1 自定义变量 5.2 变量的赋值 5.3自动变量 5.4 Makefile的隐含变量 6.Makefile的函数 6.1意义: 6.2 基本语法: 6.3 部分常用函数 6.4 自定义函…

ECS-弹性容器服务 - Part 1

67-ECS-弹性容器服务 - Part 1 Hello大家好,我们今天的课时内容是ECS-AWS的弹性容器服务。 ECS-AWS的弹性容器服务 ECS是高度可扩展的、快速的容器管理和编排服务。 使用ECS,能够将您的Docker容器运行在AWS EC2或者 Fargate管理的无服务器架构上。 将容…

磨金石教育摄影技能干货分享|什么是序列摄影?它让摄影更加深刻

著名摄影师肖尔曾这样表达过自己的摄影理念。 他说:“吸引我的总是平淡无奇的瞬间”。 他与著名的纪实摄影师布列松不同,他不喜欢去游荡在生活之外,去抓拍他人的精彩瞬间。 他也不喜欢报道式的摄影,不去过多关注社会话题。 而是将…

第二证券|首批浮动费率基金三年成绩出炉 规模虽小收益可观

2019年12月18日至12月26日,6家基金公司试点建立了职业第一批逐笔比例提取成绩酬劳的起浮办理费率基金(下称“起浮费率基金”)。如今,这6只起浮费率基金运作均已满三年,到2022年12月26日,6只产品建立以来均匀…

Selenium Webdriver 实现原理详解

目录 1. Selenium 概述 2. 术语解释: 3. Selenium WebDriver 实现原理 4. 安装selenium 客户端,浏览器,驱动 4.1 安装selenium client lib 4.2 安装浏览器和浏览器驱动 4.3 例子代码 4.4 省略浏览器驱动的方法 4.5 测试代码与Webdr…

MAC控制器驱动

嵌入式Linux开发模式下,以太网硬件架构一般都是 MAC与PHY是独立的。所以以太网模块的硬件相关的驱动代码主要包括 GMAC 和 PHY,其中MAC控制器驱动由SoC厂商开发,PHY芯片驱动由PHY厂商开发,PHY 驱动一般使用通用 PHY 驱动&#xff…

无线烧录器(2)

传送门:连接 继上次完成了ESP32无线烧录器。那么有一个问题就是,一堆人都在一起想用这个来无线烧录呢,那么固件中定死的热点名称岂不是会互相的扰乱。所以需要自己编译属于自己的热点名称。 首先需要准备以下几样东西。 Ubuntu (需…

excel数据透视表:善用这些功能,提高工作效率!下篇

在上篇文章中,我们为大家分享了透视表的前5条妙用,分别是合并同类项、按条件汇总数据、统计非重复数据、排名、批量创建表格,不知道大家都还记得吗?那么今天我们书接上回,继续为大家分享关于透视表的后5条妙用。 六、…

密码学_SM4国密算法

目录 简介 两类参数 加密流程 RKi和Ki4的生成方法 Xi4的生成方法​编辑 左移的概念 简介 在商用密码体系中,SM4主要用于数据加密,其算法公开,分组长度与密钥长度均为128bit,加密算法与密钥扩展算法都采用32轮非线性迭代结构&…

2022年终总结——脚踏实地,勇敢做自己

不知不觉又来到了年尾,即便都要迈入2023年了,但是在写日期的时候还会下意识的写成2021,这可能就是感觉一年额外漫长的原因吧。其实还是不希望过年的,毕竟跨过了新年要长岁了,看着日益增长的年岁还是会有点难过的&#…

JVM- 第一章-JVM与Java体系结构

JVM-第一章-JVM与Java体系结构1.1. 前言1.2开发人员如何看待上层框架1.3架构师每天都在思考什么?1.4我们为什么要学习JVM1.5 Java VS C1.6面向人群及参考书籍1.1. 前言 作为Java工程师的你曾被伤害过吗?你是否也遇到过这些问题? ● 运行着…

尚医通-数据字典添加缓存-配置nginx(十五)

目录: (1)后台系统 数据字典-添加缓存 (2)后台系统配置nginx (1)后台系统 数据字典-添加缓存 Spring Cache Redis 缓存数据 Spring Cache 是一个非常优秀的缓存组件。自Spring 3.1起&#xff…

CSDN第19次竞赛题解与总结

2022/12/28 19:00 CSDN第19次竞赛火热进行。 本场竞赛由「电子工业出版社 & CSDN」联合主办。 《Python机器学习算法与实战》 本书基于Python语言,结合实际的数据集,介绍如何使用机器学习与深度学习算法,对数据进行实战分析,在…

MySQL 启动日志报错:Starting MySQL. ERROR! The server quit without updating PID file

一 问题描述 1.1 问题描述 1.首先通过切换到mysql数据库所属用户: hd-mysql [rootlocalhost local]# su hd-mysql 2.启动mysql,报错 [hd-mysqllocalhost data]$ service mysql start Starting MySQL. ERROR! The server quit without updating PID…

50+Vue经典面试题源码级详解,你值得收藏!(一天更新一题,持续更新!!!)

Vue经典面试题源码级详解1、Vue组件之间通信方式有哪些?分析:思路分析:回答范例:1. 组件通信常用方式有以下8种:2、根据组件之间关系讨论组件通信最为清晰有效2、v-if 和 v-for哪个优先级更高分析:思路分析…

学习C语言笔记:数据和C

C Primer Plus (第6版)中文版第3章 学习内容: 1.关键字——int、short、long、unsigned、char、float、double、_Bool、_Complex、_Imaginary; 2.运算符——sizeof(); 3.函数——scanf(); 4.整数类型和浮点数类型的区别; 5.如何书写整型和浮点…

STL简介

目录 什么是STL STL的版本 STL的六大组件 如何学习STL STL的缺陷 结束语 什么是STL STL(standard template libaray-标准模板库):是C标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架 STL的版本…

公司来了个卷王,我愿称之为王中王,让人崩溃

前几天我们公司一下子也来了几个新人,这些年前人是真能熬啊,本来我们几个老油子都是每天稍微加会班就打算走了,这几个新人一直不走,搞得我们也不好走。 2023年春招就要开始了,最近内卷严重,各种跳槽裁员&a…