当前位置: 首页 > news >正文

《UDS协议从入门到精通》系列——图解0x84:安全数据传输

《UDS协议从入门到精通》系列——图解0x84:安全数据传输

  • 一、简介
  • 二、数据包格式
    • 2.1 服务请求格式
    • 2.2 服务响应格式
      • 2.2.1 肯定响应
      • 2.2.2 否定响应

Tip📌:本文描述中但凡涉及到其他UDS服务的,均提供专栏内文章链接跳转方式以便快速了解他们。

学习UDS基础知识以及其他相关内容?>>>>>>>>> 返回专栏总目录 《UDS协议从入门到精通(UDS速查手册)》<<<<<<<<<

一、简介

  该服务的目的是传输受保护的数据,以防止第三方攻击,从而危及数据安全。安全模式意味着传输的数据通过加密方法得到保护。

  为了在安全模式下执行诊断服务,需要在目标ECU和Tester应用程序中添加安全子层,如下所示:
在这里插入图片描述

  有两种方法在客户端和服务器之间执行诊断服务数据传输:

  1. 非安全数据传输模式
    正如本专栏中众多服务的使用,Tester使用这些服务和目标ECU之间直接交换数据。双方应用层实现数据的“直通”。

  2. 安全数据传输模式
    应用程序使用诊断服务或外部服务以及安全子层的服务原语在目标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”服务的请求和指示原语按照以下通用格式指定:

在这里插入图片描述

在安全模式下执行诊断服务的过程如下所示:

  1. 客户端(Tester)

    • 客户端应用程序使用安全子层的SecuredServiceExecution服务请求,在安全模式下执行诊断服务。
    • 安全子层执行必要的操作以建立与服务器(s)的链接,添加特定的安全相关参数,如果需要,应对要在安全模式下执行的诊断服务的数据做加密操作,并使用应用层的(目标ECU的应用层)SecuredDataTransmission服务请求将安全数据传输到服务器。
  2. 服务器(目标ECU)

    • 服务器接收到应用层的SecuredDataTransmission服务指示,该指示由服务器的安全子层处理。
    • 服务器的安全子层检查安全特定参数,解密加密数据,并通过安全子层的SecuredServiceExecution服务指示将要在安全模式下执行的服务数据呈现给应用程序。
    • 应用程序执行服务,并使用安全子层的SecuredServiceExecution服务响应,在安全模式下响应服务。
    • 服务器的安全子层添加特定的安全相关参数,如果需要,加密响应消息数据,并使用应用层的SecuredDataTransmission服务响应将响应数据传输到客户端。
  3. 客户端(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速查手册)》<<<<<<<<<

http://www.lryc.cn/news/395952.html

相关文章:

  • AFT:Attention Free Transformer论文笔记
  • Linux grep技巧 结合awk查询
  • 关于Qt模型插入最后一行数据中存在未填满的项,点击导致崩溃的解决办法
  • Interpretability 与 Explainability 机器学习
  • Vue3项目如何使用npm link本地测试组件库
  • 后端之路——阿里云OSS云存储
  • 大模型/NLP/算法面试题总结2——transformer流程//多头//clip//对比学习//对比学习损失函数
  • 【atcoder】习题——位元枚举
  • 世界人工智能大会 | 江行智能大模型解决方案入选“AI赋能新型工业化创新应用优秀案例”
  • css浮动及清除浮动副作用的三种解决方法
  • 图像类别生成数字标签
  • 【Python】已解决:SyntaxError: invalid character in identifier
  • RDNet实战:使用RDNet实现图像分类任务(一)
  • Java小白入门到实战应用教程-介绍篇
  • python脚本“文档”撰写——“诱骗”ai撰写“火火的动态”python“自动”脚本文档
  • 若依 / ruoyi-ui:执行yarn dev 报错 esnext.set.difference.v2.js in ./src/utils/index.js
  • 移动端Vant-list的二次封装,查询参数重置
  • SMU Summer 2024 Contest Round 2
  • Qt:11.输入类控件(QLineEdit-单行文本输入控件、QTextEdit-多行文本输入控件、QComboBox-下拉列表的控件)
  • Qt 音频编程实战项目
  • C#委托事件的实现
  • Java策略模式在动态数据验证中的应用
  • 【Linux】shell基础知识点(updating)
  • Python基础练习•二
  • 智慧科技照亮水利未来:深入剖析智慧水利解决方案如何助力水利行业实现高效、精准、可持续的管理
  • Vue3学习笔记(n.0)
  • 基于Spring Boot的在线考试系统
  • Day65 代码随想录打卡|回溯算法篇---组合总和II
  • C++ 入门03:函数与作用域
  • 在Linux/Debian/Ubuntu中出现“Could not get lock /var/lib/dpkg/lock-frontend”问题的解决办法