【车载开发系列】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个 …

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

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

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

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

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

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

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…

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

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

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

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

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

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

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

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

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

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

office办公技能|word中的常见通配符使用

一、删除Word中含有指定内容的整行 操作方法: 1、快捷键 CtrlH,打开Word的查找替换窗口,单击【更多】按钮,勾选“使用通配符”。 2、在查找内容处,输入“替换内容*^13”,替换为处什么都不填。 3、单击【…

Harbor离线安装

下载安装包 $ wget https://github.com/goharbor/harbor/releases/download/v2.7.4/harbor-offline-installer-v2.7.4.tgz解压 $ tar xvf harbor-offline-installer-v2.7.4.tgz -C /usr/local修改配置 $ cd /usr/local/harbor $ cp harbor.yml.tmpl harbor.yml $ vim harbo…

【文献解读】“MOBILEViT:轻量级、通用目的、移动友好的视觉变换器”。

今天阅读这篇2022年ICLR会议上发表的论文,主要是为了学习MobileViT模型,用于YOLO模型主干改造。 一、文献概述 作者:Sachin Mehta 和 Mohammad Rastegari。地点:作者所属机构是 Apple。内容简述: 提出了一种名为Mob…

手把手Docker部署Gitblit服务器

1拉取镜像 docker pull jacekkow/gitblit:v1.9.1 2.启动 docker run -d --name gitblit --restart always -p 10006:8080 -p 18443:8443 -p 19418:9418 -p 29418:29418 -v /data/gitblit/data:/opt/gitblit-data jacekkow/gitblit:v1.9.1 3.查看 默认账户/密码:admin/adm…

安卓手机变iOS!

Launcher iOS 16 - 安卓手机秒变iOS Launcher iOS 16 是一款iOS启动器,可以将安卓手机桌面变成iOS样子,还有iOS的开机动画和景深效果! 下载链接:【Launcher iOS 16】 ​

腾讯云优惠券介绍、种类、领取入口及使用教程

腾讯云作为国内领先的云服务提供商,为广大的企业和开发者提供了优质的云计算、大数据、人工智能等服务。为了更好地吸引用户,腾讯云推出了多种优惠活动,其中就包括腾讯云优惠券。本文将详细介绍腾讯云的优惠券种类、领取入口以及使用教程。 一…

第 4 章 链表

文章目录 4.1 链表(Linked List)介绍4.2 单链表的应用实例4.3 单链表面试题(新浪、百度、腾讯)4.4 双向链表应用实例4.4.1 双向链表的操作分析和实现4.4.2 课堂作业和思路提示 4.5 单向环形链表应用场景4.6 单向环形链表介绍4.7 Josephu 问题4.8 Josephu 问题的代码实现 4.1 链…

习题5-1 代码对齐(Alignment of Code, ACM/ICPC NEERC 2010, UVa1593)

输入若干行代码,要求各列单词的左边界对齐且尽量靠左。单词之间至少要空一格。每个单词不超过80个字符,每行不超过180个字符,一共最多1000行,样例输入与输出如图所示。 //代码对齐 //思路:统计每列最长的单词 不够长…

LeetCode 0083.删除排序链表中的重复元素:模拟

【LetMeFly】83.删除排序链表中的重复元素:模拟 力扣题目链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-list/ 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的…