【车载开发系列】AutoSar当中的DcmDspSecurity容器

【车载开发系列】AutoSar当中的DcmDspSecurity容器

AutoSar当中的DcmDspSecurity容器

  • 【车载开发系列】AutoSar当中的DcmDspSecurity容器
    • 一. DcmDspSecurity容器位置
    • 二. 关于对安全等级理解
    • 三. 关于安全等级的定义
      • 1)Extendedsecuritylevel
      • 2)Programmingsecuritylevel
      • 3)Immobilizersecuritylevel
      • 4)systemSupplierSpecificlevel
    • 四. DLS子模块功能
    • 五. DcmDspSecurity容器
      • 1)DcmDspSecurityBypassEnabled
      • 2)DcmDspSecurityResetAttemptCounterOnTimeout
      • 3)DcmDspSecuritySingleInstanceAttemptMonitor
      • 4)DcmDspSecuritySingleInstanceDelayTimer
    • 六. DcmDspSecurityRow的配置项目
      • 1)DcmDspSecurityAttemptCounterEnabled
      • 2)DcmDspSecurityCompareKeyFnc
      • 3)DcmDspSecurityDelayTime
      • 4DcmDspSecurityDelayTimeOnBoot
      • 5)DcmDspSecurityDelayTimeOnFailedGetAttemptCounter
      • 6)DcmDspSecurityGetAttemptCounterFnc
      • 7)DcmDspSecurityGetSeedFnc
      • 8)DcmDspSecurityKeySize
      • 9)DcmDspSecurityLevel
      • 10)DcmDspSecurityNumAttDelay
      • 11)DcmDspSecuritySeedSize
      • 12)DcmDspSecuritySetAttemptCounterFnc
      • 13)DcmDspSecurityUsePort
    • 七. 关于AttemptCounter
      • 1)Dcm_Svc27WriteAttemptCounter
      • 2)Dcm_Svc27UtiGetAttemptCntr
    • 八. 安全访问延时机制

一. DcmDspSecurity容器位置

在AUTOSAR架构中,Dcm(Diagnostic Communication Manager)模块位于通信服务层。Dcm模块是独立于具体的网络的(不依赖于具体的CAN,Lin,Eth,Flexray等网络来实现)。用于获取或者设置安全等级的管理安全等级功能,就存在于DCM当中,我们称呼它叫:DLS子模块。

二. 关于对安全等级理解

DCM模块的每个诊断服务可以配置安全访问等级,一般有无需通过安全访问、需要通过安全等级1访问、需要通过安全等级2访问三种等级。比如对于0x2E下的服务都设定为需要过安全访问等级1后,我们在请求0x2E的服务时需要通过特定的安全校验后才能通过安全访问等级1,这样才能得到0x2E服务的积极响应。

三. 关于安全等级的定义

DLS子模块应该保存当前激活的安全等级状态。DLS模块提供两个接口用来设置和获取当前安全等级:
获取当前激活的安全等级:Dcm_GetSecurityLevel()
设置新的安全等级:DslInternal_SetSecurityLevel()
SecurityLevel安全级别定义一般可以有以下这四种。

1)Extendedsecuritylevel

它是扩展安全级,使用subfunction是$01$02。它是必须要定义的。

2)Programmingsecuritylevel

它是刷新安全级。是可配置选项。用subfunction是$09$0A。

3)Immobilizersecuritylevel

它是防盗安全级,使用subfunction是$11$12。

4)systemSupplierSpecificlevel

它是供应商自定义安全级。

四. DLS子模块功能

DCM模块初始化完后,安全等级设置为0x00(DCM_SEC_LEV_LOCKED,使能安全访问功能)。
如果我们通过安全校验算法后使得安全等级不为0,当发生以下任意事件后,安全等级状态将回到初始状态0x0(DCM_SEC_LEV_LOCKED)。
1)诊断会话(session)从非缺省会话(0x0, default session)切换到非缺省会话,包括从当前非缺省会话切换到本身自己。
2)诊断会话(session)从非缺省会话(0x0, default session)切换到缺省会话。由DiagnosticSessionControl(0x10) 或 S3Server 超时启动)。一次只能激活一个安全级别。

五. DcmDspSecurity容器

该容器包含安全级别配置(DSP参数)(每个安全级别)描述该容器包括DcmDspSecurityRow的行。DcmDspSecurityRow是DcmDspSecurity的子容器。具体的配置项目如下:
在这里插入图片描述

1)DcmDspSecurityBypassEnabled

安全访问是否支持Bypass模式。

2)DcmDspSecurityResetAttemptCounterOnTimeout

延时计时器到期时Dcm是否复位安全尝试计数器。

3)DcmDspSecuritySingleInstanceAttemptMonitor

安全访问是否使用同一个尝试计数器。若位置true,所有的DcmDspSecurityRows共用一个安全尝试计数器;反之,每个DcmDspSecurityRows都单独使用一个安全尝试计数器。

4)DcmDspSecuritySingleInstanceDelayTimer

安全访问是否使用同一个计时器。

六. DcmDspSecurityRow的配置项目

在这里插入图片描述

1)DcmDspSecurityAttemptCounterEnabled

安全尝试计数是否支持外部存储。若设置true,Dcm调用读写尝试计数器的API接口(
调用Xxx_GetSecurityAttemptCounter函数获得AttemptCounter)获得每个这些DcmDspSecurityRow条目的。
反之,Dcm在初始化的时候清空这个安全访问等级的尝试计数器。

2)DcmDspSecurityCompareKeyFnc

秘钥比较函数。当DcmDspSecurityUsePort设置为USE_ASYNCH_FNC时,Dcm会调用该函数。

3)DcmDspSecurityDelayTime

安全访问延迟时间。在延迟期间,Dcm不会接收任何安全访问请求。Dcm只有在失败尝试次数达到设置次数之后才会配置该时间。

4DcmDspSecurityDelayTimeOnBoot

Dcm在上电周期内的延迟时间。在延迟期间,Dcm不会接收任何安全访问请求。若设置非0,Dcm从初始化后的这段时间会拒绝任何安全访问请求。

5)DcmDspSecurityDelayTimeOnFailedGetAttemptCounter

设置获取尝试次数失败后的延迟时间。若不设置,Dcm获取失败后直接将计数清0,接收安全访问请求。

6)DcmDspSecurityGetAttemptCounterFnc

获取尝试次数的函数名。Dcm初始化时重载尝试计数器。

7)DcmDspSecurityGetSeedFnc

获取种子函数。当DcmDspSecurityUsePort设置为USE_ASYNCH_FNC时,Dcm会调用该函数。

8)DcmDspSecurityKeySize

安全访问密钥长度。

9)DcmDspSecurityLevel

安全访问等级。

10)DcmDspSecurityNumAttDelay

安全访问尝试次数。若设置大于0,尝试失败的次数超过该值时返回NRC36;若设置等于0,不限失败尝试次数。

11)DcmDspSecuritySeedSize

安全访问种子长度。

12)DcmDspSecuritySetAttemptCounterFnc

修改安全访问尝试次数的函数。当DcmDspSecurityUsePort设置为USE_ASYNCH_FNC时,Dcm会调用该函数。

13)DcmDspSecurityUsePort

它是安全访问类型。有两个选项。USE_ASYNCH_CLIENT_SERVER:Dcm使用P-port接口(SecurityAccess_{SecurityLevel}函数)访问;
USE_ASYNCH_FNC:Dcm直接调用DcmDspSecurityGetSeedFnc和DcmDspSecurityCompareKeyFnc自定义函数访问。

七. 关于AttemptCounter

SID27服务有个特殊需求,上电或者复位前安全访问失败时,上电的10s内需要启用安全延时,回复0x37。
对应两个callout 函数:
Dcm_Svc27ReadAttemptCounter
Dcm_Svc27WriteAttemptCounter
这两个函数都在Dcm_Svc27Task中被调用。

1)Dcm_Svc27WriteAttemptCounter

Dcm_Svc27WriteAttemptCounter函数对应完成的是下电前的couter存储。
当应用层的key比较失败时,传到底层后,会调用上层的SetAttmptCounter函数,将当前的值告诉应用层,如果大于1,则存储EEPROM,供上电后读取。

2)Dcm_Svc27UtiGetAttemptCntr

Dcm_Svc27UtiGetAttemptCntr函数中,通过函数指针访问应用层callout函数,获取应用层设置的安全访问错误计数器,并启用延时机制。

八. 安全访问延时机制

在一般在默认的模式下,连续3次请求安全访问失败后,需等待10s之后才能接受下一次的安全访问请求“RequestSeed”。

  1. 当测试工具发送一个无效的秘钥,ECU将返回NRC35“InvalidKey”。同时, 安全访问错误计数器加1。该计数器必须存储在非易失性存储单元中, 初始值为0。
  2. 当安全访问错误计数器达到3 (即收到3次无效密钥),ECU将返回NRC36且需要等待10s才可以接受下一次的安全访问请求“Request Seed”。期间任何安全访问请求“Request Seed”都会被ECU反馈NRC37。

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

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

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

相关文章

软件设计不是CRUD(10):低耦合模块设计理论——业务抽象:从需求中提取业务维度

接上文《软件设计不是CRUD(9):低耦合模块设计理论——设计落地所面临的挑战》 2、什么是业务抽象 业务抽象是一种将需求落地成模块功能的设计思想,是对业务需求和技术设计进行转换、隔离的一种分析方法。经过业务抽象后的业务模块一般具有较高的业务屈服度,能更大程度满…

Envoy

一、Envoy简介 Envoy 是一款由Lyft开源的高性能服务代理软件,使用现代C语言(C11及C14)开发,提供四层和七层网络代理功能。2017年,Envoy 被捐赠给 CNCF 基金会,最终成为继Kubenetes利Prometheus 之后第3个 …

vue -- 单页面应用和多页面应用区别及优缺点

Vue单页面应用(SPA)和多页面应用(MPA)是两种常见的前端应用架构模式,它们在开发方式、性能以及用户体验方面有着不同的特点。 单页面应用(SPA): SPA 是一种基于JavaScript的应用程序…

EI级 | Matlab实现VMD-TCN-BiLSTM变分模态分解结合时间卷积双向长短期记忆神经网络多变量光伏功率时间序列预测

EI级 | Matlab实现VMD-TCN-BiLSTM变分模态分解结合时间卷积双向长短期记忆神经网络多变量光伏功率时间序列预测 目录 EI级 | Matlab实现VMD-TCN-BiLSTM变分模态分解结合时间卷积双向长短期记忆神经网络多变量光伏功率时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基…

【AUTOSAR】RTE的基础概念和ETAS ISOLAR RTA-CAR配置指南(一)RTE简介

目录 前言 RTE简介 什么是RTE 软件组件 类型 组件类型和实例

Vue3-46-Pinia-获取全局状态变量的方式

使用说明 在 Pinia 中,获取状态变量的方式非常的简单 : 就和使用对象一样。 使用思路 : 1、导入Store;2、声明Store对象;3、使用对象。 在逻辑代码中使用 但是 Option Store 和 Setup Store 两种方式定义的全局状态变量…

检测射线与球体交点数量代码实现(C#代码Unity环境下测试通过)

上代码&#xff1a; int RayCrossSphere(Ray ray, Sphere sphere) {Vector3 originT0Center sphere.center - ray.origin;float sqrtRadius sphere.radius * sphere.radius;if (originT0Center.sqrMagnitude < sqrtRadius){return 1;}else{Vector3 project Vector3.Proj…

7 认证相关

认证相关 7 认证相关今日详细1. 代码整合2.通用认证组件2.1 处理访问记录2.2 登录之后才具有评论和发布 3.随意的接口结论&#xff1a;在serializer中可以调用request4.完善详细页面 总结1. 小程序1.1 申请账号APPID1.2 搭建开发者工具1.3 目录结构1.4 组件1.5 微信API1.6 事件…

全新小白菜QQ云端机器人登录系统源码 /去除解密授权学习版源码

源码介绍&#xff1a; 全新小白菜QQ云端机器人登录系统源码&#xff0c;是一款经过全面解密的授权学习版源码。 这款源码已解除了授权版的限制&#xff0c;然而许多人可能对其用途并不了解。实际上&#xff0c;该源码主要面向群机器人爱好者设计。它是一个基于挂机宝机器人框…

RT-DETR算法优化改进:多层次特征融合(SDI)结合PConv、DualConv、GSConv,实现二次创新 | UNet v2最新论文

💡💡💡本文独家改进:多层次特征融合(SDI)高效结合DualConv、PConv、GSConv等实现二次创新 1)替代原始的Concat; RT-DETR魔术师专栏介绍: https://blog.csdn.net/m0_63774211/category_12497375.html ✨✨✨魔改创新RT-DETR 🚀🚀🚀引入前沿顶会创新(CVPR…

Linux 脚本编程题库

1.在主目录下新建一个test.sh文件&#xff0c;脚本功能为查找某文件是否存在&#xff08;某文件名以参数形式传递&#xff09;&#xff0c;如果文件存在&#xff0c;则修改文件权限为用户主可读写&#xff0c;其他用户无任何权限&#xff0c;否则返回文件不存在&#xff01; #…

Java期末复习题库(封装,继承,抽象类,接口,GUI)

包与字符串 1.创建包的基本操作 在biology包中的animal包中有human类,它具有name,height,weight的属性,还具有eat(),sleep()和work()的行为,在biology包中的plant包中有flower类,它具有name,color,smell的属性,还具有drink()和blossom()的行为. 现在在一个school包中的garde…

20240113-确定两个字符串是否接近

题目要求 如果可以使用以下操作从另一个字符串获得一个字符串&#xff0c;则认为两个字符串是接近的&#xff1a; 操作1&#xff1a;交换任意两个现有字符。 例如&#xff0c;abcde -> aecdb操作2&#xff1a;将每个出现的一个现有字符转换为另一个现有字符&#xff0c;并…

Go语言开发小技巧易错点100例(十一)

往期回顾&#xff1a; Go语言开发小技巧&易错点100例&#xff08;一&#xff09;Go语言开发小技巧&易错点100例&#xff08;二&#xff09;Go语言开发小技巧&易错点100例&#xff08;三&#xff09;Go语言开发小技巧&易错点100例&#xff08;四&#xff09;Go…

优雅处理并发:Java CompletableFuture最佳实践

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff0c;今天&#xff0c;小黑要和大家聊聊CompletableFuture&#xff0c;这个Java 8引入的强大工具。 在Java传统的Future模式里&#xff0c;咱们都知道&#xff0c;一旦开始了一个异步操作&#xff0c;就只能等它结束…

26.9K Star,漫画阅读 APP 开源了

今天推荐是一款适用于 Android 6.0 及更高版本的免费开源漫画阅读器&#xff0c;基于 Kotlin 开发的。这款 APP 完全免费、好用、无广告&#xff0c;自带上千个全球漫画源&#xff0c;在线阅读和下载都很方便&#xff0c;是漫画爱好者必备&#xff01; 它以插件的形式提供了来自…

wsl2下运行docker

安装docker服务 curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun无法启动问题 这个错误提示通常是因为系统中使用的是经过修改的 nftables&#xff0c;而 Docker 安装程序使用 iptables 进行 NAT。为了解决这个问题&#xff0c;您可以使用以下命令将系统…

【我想开发一个小程序,大概需要多少钱?】

小程序开发为什么报价差距很大&#xff1f;主要是因为小程序的实现方法和功能模型不同。 小程序的实现方法&#xff1a; 实现方法主要分为SAAS小程序、定制小程序和第三方平台小程序。不同的实现方法价格都是不一样的&#xff0c;大概的区间如下&#xff1a; SAAS小程序和第三…

Zapier/Make.com/数环通/集简云的对比

Zapier/Make.com/数环通/集简云 这四家公司都是为了自动化&#xff0c;这也是流行大趋势。我不想错过未来的大趋势&#xff0c;花了2周时间分别用四家公司的模块实现了相同的任务。 为什么会用2周时间&#xff1f;我第一次接触无代码自动化。最重要的目的是为了白嫖&#xff0…

云卷云舒:数据库2023年度盘点

一、年度总结词 云、卷 二、年度大事记 1 月 10 日&#xff0c;KaiwuDB&#xff08;原&#xff1a;开务数据库&#xff09; 发布了 KaiwuDB 1.0 时序数据库&#xff0c;其运用到实时就地运算等核心专利技术&#xff0c;专为工业物联网、数字能源、交通车联网、智慧产业等场景…