《UDS协议从入门到精通》系列——图解0x84:安全数据传输
《UDS协议从入门到精通》系列——图解0x84:安全数据传输
- 一、简介
- 二、数据包格式
- 2.1 服务请求格式
- 2.2 服务响应格式
- 2.2.1 肯定响应
- 2.2.2 否定响应
Tip📌:本文描述中但凡涉及到其他UDS服务的,均提供专栏内文章链接跳转方式以便快速了解他们。
学习UDS基础知识以及其他相关内容?>>>>>>>>> 返回专栏总目录 《UDS协议从入门到精通(UDS速查手册)》<<<<<<<<<
一、简介
该服务的目的是传输受保护的数据,以防止第三方攻击,从而危及数据安全。安全模式意味着传输的数据通过加密方法得到保护。
为了在安全模式下执行诊断服务,需要在目标ECU和Tester应用程序中添加安全子层,如下所示:

有两种方法在客户端和服务器之间执行诊断服务数据传输:
-
非安全数据传输模式:
正如本专栏中众多服务的使用,Tester使用这些服务和目标ECU之间直接交换数据。双方应用层实现数据的“直通”。 -
安全数据传输模式:
应用程序使用诊断服务或外部服务以及安全子层的服务原语在目标ECU和Tester之间交换数据。作为中介的安全子层使用本文的SecuredDataTransmission服务进行安全数据的传输/接收。安全链接必须是点对点通信,因此只允许物理寻址,这意味着只涉及一个目标ECU。
安全子层与应用程序的接口遵循ISO/OSI模型约定,因此提供以下四个安全子层(SS_)服务原语:
- SS_SecuredMode.req:安全子层请求
- SS_SecuredMode.ind:安全子层指示
- SS_SecuredMode.resp:安全子层响应
- SS_SecuredMode.conf:安全子层确认
ISO 14229的这一部分定义了确认和非确认服务。在安全模式下,只允许suppressPosRspMsgIndicationBit = FALSE的服务请求。基于这一要求,以下服务不允许在安全模式下执行:
- ResponseOnEvent (0x86)
- ReadDataByPeriodicIdentifier (0x2A)
- TesterPresent (0x3E)
在安全模式下执行诊断服务时,安全子层的任务是对“应用程序”(Tester)提供的数据进行加密,对“应用层”(目标ECU的应用层)提供的数据进行解密,并添加、检查和移除安全特定数据元素。安全子层使用应用层的SecuredDataTransmission (0x84) 服务来传输和接收整个诊断消息或根据外部协议的消息(请求和响应),这些消息应在安全模式下交换。
安全子层为应用程序提供“SecuredServiceExecution”服务,以便安全地执行诊断服务。“SecuredServiceExecution”服务的请求和指示原语按照以下通用格式指定:

在安全模式下执行诊断服务的过程如下所示:
-
客户端(Tester):
- 客户端应用程序使用安全子层的SecuredServiceExecution服务请求,在安全模式下执行诊断服务。
- 安全子层执行必要的操作以建立与服务器(s)的链接,添加特定的安全相关参数,如果需要,应对要在安全模式下执行的诊断服务的数据做加密操作,并使用应用层的(目标ECU的应用层)SecuredDataTransmission服务请求将安全数据传输到服务器。
-
服务器(目标ECU):
- 服务器接收到应用层的SecuredDataTransmission服务指示,该指示由服务器的安全子层处理。
- 服务器的安全子层检查安全特定参数,解密加密数据,并通过安全子层的SecuredServiceExecution服务指示将要在安全模式下执行的服务数据呈现给应用程序。
- 应用程序执行服务,并使用安全子层的SecuredServiceExecution服务响应,在安全模式下响应服务。
- 服务器的安全子层添加特定的安全相关参数,如果需要,加密响应消息数据,并使用应用层的SecuredDataTransmission服务响应将响应数据传输到客户端。
-
客户端(Tester):
- 客户端接收到应用层的SecuredDataTransmission服务确认原语,该原语由客户端的安全子层处理。
- 客户端的安全子层检查安全特定参数,解密加密的响应数据,并通过安全子层的SecuredServiceExecution确认将数据呈现给应用程序。
下图展示了在安全模式下执行诊断服务时,安全子层、应用层和应用程序之间的交互。

上文也许有些晦涩… 简单来说,在安全模式下执行诊断服务时,客户端和服务器通过安全子层进行交互,确保数据的安全传输。客户端应用程序发起请求,安全子层处理并加密数据,然后通过应用层的SecuredDataTransmission服务将数据传输到服务器。服务器的安全子层解密数据并执行服务,然后将响应数据加密并通过相同的服务传输回客户端。整个过程确保了数据在传输过程中的安全性和完整性。
二、数据包格式
2.1 服务请求格式

本服务不支持sub-function。
2.2 服务响应格式
2.2.1 肯定响应

响应消息中的TimingParameterResponseRecord也正如请求消息中描述的那样,只不过这个是从目标ECU中实际读出来的时间参数。
2.2.2 否定响应

可能出现的NRC及其含义如下:
| NRC | 含义 |
|---|---|
| 0x13 | 消息长度错误 |
| 0x38 – 0x4F | 由扩展数据链路安全相关保留 |
>>>>>>>>> 返回专栏总目录 《UDS协议从入门到精通(UDS速查手册)》<<<<<<<<<
相关文章:
《UDS协议从入门到精通》系列——图解0x84:安全数据传输
《UDS协议从入门到精通》系列——图解0x84:安全数据传输 一、简介二、数据包格式2.1 服务请求格式2.2 服务响应格式2.2.1 肯定响应2.2.2 否定响应 Tip📌:本文描述中但凡涉及到其他UDS服务的,均提供专栏内文章链接跳转方式以便快速…...
AFT:Attention Free Transformer论文笔记
原文链接 2105.14103 (arxiv.org) 原文翻译 Abstract 我们介绍了 Attention Free Transformer (AFT),这是 Transformer [1] 的有效变体,它消除了点积自注意力的需要。在 AFT 层,键key和值value首先与一组学习的位置偏差position biases相结…...
Linux grep技巧 结合awk查询
目录 一. 前提1.1 数据准备1.2 数据说明 二. 查询2.1 统计每个加盟店搜索的次数 一. 前提 1.1 数据准备 ⏹file1.log 140 2024/07/08 12:35:01.547 c1server2 5485 [ERROR] SPLREQUEST seqNo11459,eventControllerPMT.payinfoforprc.test.search,oldest_data_search2 110 20…...
关于Qt模型插入最后一行数据中存在未填满的项,点击导致崩溃的解决办法
在使用Qt模型视图框架的时候,你可能会遇见这种情况:给QTableView设置设置模型的时候,网模型里面插入数据,因为数据是一行一行插入的,即要使用model的appandRow函数,但有时候最后一行数据没有填满一行&#…...
Interpretability 与 Explainability 机器学习
「AI秘籍」系列课程: 人工智能应用数学基础人工智能Python基础人工智能基础核心知识人工智能BI核心知识人工智能CV核心知识 Interpretability 模型和 Explainability 模型之间的区别以及为什么它可能不那么重要 当你第一次深入可解释机器学习领域时,你会…...
Vue3项目如何使用npm link本地测试组件库
一、组件库操作 1、在组件库项目中先运行npm run lib,其效果如下 2、在组件库项目中在运行npm link,其效果如下 会创建一个全局的软连接指向本地的组件库 二、Vue3项目使用 1、在项目中运行 npm link 组件名称(即:组件库packag…...
后端之路——阿里云OSS云存储
一、何为阿里云OSS 全名叫“阿里云对象存储OSS”,就是云存储,前端发文件到服务器,服务器不用再存到本地磁盘,可以直接传给“阿里云OSS”,存在网上。 二、怎么用 大体逻辑: 细分的话就是: 1、准…...
大模型/NLP/算法面试题总结2——transformer流程//多头//clip//对比学习//对比学习损失函数
用语言介绍一下Transformer的整体流程 1. 输入嵌入(Input Embedding) 输入序列(如句子中的单词)首先通过嵌入层转化为高维度的向量表示。嵌入层的输出是一个矩阵,每一行对应一个输入单词的嵌入向量。 2. 位置编码&…...
【atcoder】习题——位元枚举
题意:求i&M的popcount的和,i属于0……N 主要思路还是变加为乘。 举个例子N22,即10110 假设M的第3位是1,分析N中: 00110 00111 00100 00101 发现其实等价于 0010 0011 0000 0001 也就是左边第4位和第5…...
世界人工智能大会 | 江行智能大模型解决方案入选“AI赋能新型工业化创新应用优秀案例”
日前,2024世界人工智能大会暨人工智能全球治理高级别会议在上海启幕。本次大会主题为“以共商促共享,以善治促善智”,汇聚了上千位全球科技、产业界领军人物,共同探讨大模型、数据、新型工业化等人工智能深度发展时代下的热点话题…...
css浮动及清除浮动副作用的三种解决方法
css浮动及清除浮动副作用的三种解决方法 文章目录 css浮动及清除浮动副作用的三种解决方法一、浮动定义二、浮动元素设置三、清除浮动副作用方法一四、清除浮动副作用方法二五、清除浮动副作用方法三 一、浮动定义 浮动(Float)是CSS中一种布局技术&…...
图像类别生成数字标签
类别 COCO 2017数据集分类标签。coco2017数据集下载。 cls [background, person, bicycle, car, motorcycle, airplane, bus,train, truck, boat, traffic light, fire hydrant,stop sign, parking meter, bench, bird, cat, dog,horse, sheep, cow, elephant, bear, zebra,…...
【Python】已解决:SyntaxError: invalid character in identifier
文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:SyntaxError: invalid character in identifier 一、分析问题背景 在Python编程中,SyntaxError: invalid character in identifier是一个常见的编译…...
RDNet实战:使用RDNet实现图像分类任务(一)
论文提出的模型主要基于对传统DenseNet架构的改进和复兴,通过一系列创新设计,旨在提升模型性能并优化其计算效率,提出了RDNet模型。该模型的主要特点和改进点: 1. 强调并优化连接操作(Concatenation) 论文…...
Java小白入门到实战应用教程-介绍篇
writer:eleven 介绍 编程语言介绍 编程语言按照抽象层次和硬件交互的方式划分为低级编程语言和高级编程语言。 低级编程语言更接近计算机硬件层面,通常具有执行效率高的特点,但是由于注重计算机底层交互,所以编程难度相对较大。 高级编程…...
python脚本“文档”撰写——“诱骗”ai撰写“火火的动态”python“自动”脚本文档
“火火的动态”python“自动”脚本文档,又从ai学习搭子那儿“套”来,可谓良心质量👍👍。 (笔记模板由python脚本于2024年07月07日 15:15:33创建,本篇笔记适合喜欢钻研python和页面源码的coder翻阅) 【学习的细节是欢悦…...
若依 / ruoyi-ui:执行yarn dev 报错 esnext.set.difference.v2.js in ./src/utils/index.js
一、报错信息 These dependencies were not found: * core-js/modules/esnext.set.difference.v2.js in ./src/utils/index.js * core-js/modules/esnext.set.intersection.v2.js in ./src/utils/index.js * core-js/modules/esnext.set.is-disjoint-from.v2.js in ./src/utils…...
移动端Vant-list的二次封装,查询参数重置
Vant-list的二次封装 场景:在写项目需求的时候,移动端有用到vant-list组件。后续需求更新说要对列表数据页加搜索和筛选的功能。发现每次筛选完得在页面内手动重置一次查询参数。不方便,所以封了一层。 二次封装代码 <template><…...
SMU Summer 2024 Contest Round 2
[ABC357C] Sierpinski carpet - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 思路:通过因为图形的生成过程是完全一样的。可以通过递归,不断分形。函数process(x,y,k)定义为以坐标(x,y)为左上角,填充sqrt3(k)级的地毯。 int n; int c[800][800]; 默认全为…...
Qt:11.输入类控件(QLineEdit-单行文本输入控件、QTextEdit-多行文本输入控件、QComboBox-下拉列表的控件)
一、QLineEdit-单行文本输入控件: 1.1QLineEdit介绍: QLineEdit 是 Qt 库中的一个单行文本输入控件,不能换行。允许用户输入和编辑单行文本。 1.2属性介绍: inputMask 设置输入掩码,以限定输入格式。setInputMask(con…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...
Web 架构之 CDN 加速原理与落地实践
文章目录 一、思维导图二、正文内容(一)CDN 基础概念1. 定义2. 组成部分 (二)CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 (三)CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 …...
华硕a豆14 Air香氛版,美学与科技的馨香融合
在快节奏的现代生活中,我们渴望一个能激发创想、愉悦感官的工作与生活伙伴,它不仅是冰冷的科技工具,更能触动我们内心深处的细腻情感。正是在这样的期许下,华硕a豆14 Air香氛版翩然而至,它以一种前所未有的方式&#x…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
